From ed50041589974d31296cb30dc1897f7fba6336c2 Mon Sep 17 00:00:00 2001 From: B Stack Date: Wed, 20 Nov 2019 08:36:44 -0500 Subject: add upstream 10.18 --- Bugs.txt | 35 +- Changelog.txt | 18 + FreeFileSync/Build/Resources/Gtk2Styles.rc | 9 + FreeFileSync/Build/Resources/Gtk3Styles.css | 7 + FreeFileSync/Build/Resources/Icons.zip | Bin 338833 -> 338102 bytes FreeFileSync/Build/Resources/Languages.zip | Bin 0 -> 504688 bytes FreeFileSync/Build/Resources/Languages/arabic.lng | 2200 -------------------- .../Build/Resources/Languages/bulgarian.lng | 2136 ------------------- .../Build/Resources/Languages/chinese_simple.lng | 2114 ------------------- .../Resources/Languages/chinese_traditional.lng | 2120 ------------------- .../Build/Resources/Languages/croatian.lng | 2152 ------------------- FreeFileSync/Build/Resources/Languages/czech.lng | 2149 ------------------- FreeFileSync/Build/Resources/Languages/danish.lng | 2136 ------------------- FreeFileSync/Build/Resources/Languages/dutch.lng | 2136 ------------------- .../Build/Resources/Languages/english_uk.lng | 2136 ------------------- FreeFileSync/Build/Resources/Languages/french.lng | 2136 ------------------- FreeFileSync/Build/Resources/Languages/german.lng | 2139 ------------------- FreeFileSync/Build/Resources/Languages/greek.lng | 2136 ------------------- FreeFileSync/Build/Resources/Languages/hebrew.lng | 2136 ------------------- FreeFileSync/Build/Resources/Languages/hindi.lng | 2136 ------------------- .../Build/Resources/Languages/hungarian.lng | 2136 ------------------- FreeFileSync/Build/Resources/Languages/italian.lng | 2136 ------------------- .../Build/Resources/Languages/japanese.lng | 2120 ------------------- FreeFileSync/Build/Resources/Languages/korean.lng | 2120 ------------------- .../Build/Resources/Languages/lithuanian.lng | 2152 ------------------- .../Build/Resources/Languages/norwegian.lng | 2136 ------------------- FreeFileSync/Build/Resources/Languages/polish.lng | 2152 ------------------- .../Build/Resources/Languages/portuguese.lng | 2136 ------------------- .../Build/Resources/Languages/portuguese_br.lng | 2136 ------------------- .../Build/Resources/Languages/romanian.lng | 2152 ------------------- FreeFileSync/Build/Resources/Languages/russian.lng | 2152 ------------------- FreeFileSync/Build/Resources/Languages/slovak.lng | 2149 ------------------- .../Build/Resources/Languages/slovenian.lng | 2168 ------------------- FreeFileSync/Build/Resources/Languages/spanish.lng | 2136 ------------------- FreeFileSync/Build/Resources/Languages/swedish.lng | 2136 ------------------- FreeFileSync/Build/Resources/Languages/turkish.lng | 2136 ------------------- .../Build/Resources/Languages/ukrainian.lng | 2152 ------------------- FreeFileSync/Source/Makefile | 1 - FreeFileSync/Source/RealTimeSync/application.cpp | 7 +- FreeFileSync/Source/RealTimeSync/config.cpp | 2 +- FreeFileSync/Source/RealTimeSync/monitor.cpp | 26 +- FreeFileSync/Source/RealTimeSync/monitor.h | 2 +- FreeFileSync/Source/RealTimeSync/tray_menu.cpp | 10 +- FreeFileSync/Source/afs/abstract.h | 1 + FreeFileSync/Source/afs/abstract_impl.h | 2 +- FreeFileSync/Source/afs/ftp.cpp | 9 +- FreeFileSync/Source/afs/gdrive.cpp | 35 +- FreeFileSync/Source/afs/sftp.cpp | 4 +- FreeFileSync/Source/base/algorithm.cpp | 209 +- FreeFileSync/Source/base/algorithm.h | 17 +- FreeFileSync/Source/base/application.cpp | 32 +- FreeFileSync/Source/base/comparison.cpp | 66 +- FreeFileSync/Source/base/comparison.h | 4 +- FreeFileSync/Source/base/config.cpp | 92 +- FreeFileSync/Source/base/db_file.cpp | 381 ++-- FreeFileSync/Source/base/db_file.h | 16 +- FreeFileSync/Source/base/dir_exist_async.h | 7 +- FreeFileSync/Source/base/dir_lock.cpp | 8 +- FreeFileSync/Source/base/ffs_paths.cpp | 46 +- FreeFileSync/Source/base/file_hierarchy.h | 3 +- FreeFileSync/Source/base/icon_buffer.cpp | 2 +- FreeFileSync/Source/base/icon_loader.cpp | 2 +- FreeFileSync/Source/base/localization.cpp | 167 +- FreeFileSync/Source/base/localization.h | 4 +- FreeFileSync/Source/base/lock_holder.h | 4 +- FreeFileSync/Source/base/log_file.cpp | 2 +- FreeFileSync/Source/base/parse_lng.h | 8 +- FreeFileSync/Source/base/path_filter.h | 2 +- FreeFileSync/Source/base/process_callback.h | 63 +- FreeFileSync/Source/base/resolve_path.cpp | 2 +- FreeFileSync/Source/base/status_handler.cpp | 6 +- FreeFileSync/Source/base/status_handler.h | 127 +- FreeFileSync/Source/base/status_handler_impl.h | 71 +- FreeFileSync/Source/base/structures.cpp | 6 +- FreeFileSync/Source/base/structures.h | 42 +- FreeFileSync/Source/base/synchronization.cpp | 266 ++- FreeFileSync/Source/base/versioning.cpp | 26 +- FreeFileSync/Source/base/versioning.h | 2 +- FreeFileSync/Source/ui/abstract_folder_picker.cpp | 3 +- FreeFileSync/Source/ui/batch_status_handler.cpp | 64 +- FreeFileSync/Source/ui/batch_status_handler.h | 6 +- FreeFileSync/Source/ui/cfg_grid.cpp | 173 +- FreeFileSync/Source/ui/cfg_grid.h | 32 +- FreeFileSync/Source/ui/command_box.cpp | 4 +- FreeFileSync/Source/ui/file_grid.cpp | 81 +- FreeFileSync/Source/ui/file_grid_attr.h | 8 +- FreeFileSync/Source/ui/file_view.cpp | 361 +++- FreeFileSync/Source/ui/file_view.h | 103 +- FreeFileSync/Source/ui/folder_history_box.cpp | 2 + FreeFileSync/Source/ui/folder_history_box.h | 6 +- FreeFileSync/Source/ui/gui_generated.cpp | 87 +- FreeFileSync/Source/ui/gui_generated.h | 12 +- FreeFileSync/Source/ui/gui_status_handler.cpp | 137 +- FreeFileSync/Source/ui/gui_status_handler.h | 31 +- FreeFileSync/Source/ui/log_panel.cpp | 125 +- FreeFileSync/Source/ui/log_panel.h | 2 +- FreeFileSync/Source/ui/main_dlg.cpp | 758 ++++--- FreeFileSync/Source/ui/main_dlg.h | 30 +- FreeFileSync/Source/ui/progress_indicator.cpp | 110 +- FreeFileSync/Source/ui/progress_indicator.h | 6 +- FreeFileSync/Source/ui/search_grid.cpp | 2 +- FreeFileSync/Source/ui/small_dlgs.cpp | 35 +- FreeFileSync/Source/ui/small_dlgs.h | 2 +- FreeFileSync/Source/ui/sorting.h | 200 -- FreeFileSync/Source/ui/sync_cfg.cpp | 96 +- FreeFileSync/Source/ui/tree_grid.cpp | 64 +- FreeFileSync/Source/ui/tree_grid.h | 36 +- FreeFileSync/Source/ui/version_check.cpp | 1 - FreeFileSync/Source/version/version.h | 2 +- wx+/async_task.h | 2 +- wx+/context_menu.h | 5 +- wx+/dc.h | 2 +- wx+/font_size.h | 4 +- wx+/graph.cpp | 13 +- wx+/grid.cpp | 67 +- wx+/grid.h | 16 +- wx+/image_resources.cpp | 109 +- wx+/image_tools.cpp | 10 +- wx+/image_tools.h | 4 +- wx+/rtl.h | 10 + wx+/toggle_button.h | 25 +- zen/dir_watcher.cpp | 2 +- zen/dir_watcher.h | 2 +- zen/error_log.h | 1 - zen/file_error.h | 6 +- zen/format_unit.cpp | 2 +- zen/globals.h | 104 +- zen/http.cpp | 2 + zen/legacy_compiler.h | 20 +- zen/open_ssl.cpp | 2 +- zen/process_priority.cpp | 4 +- zen/scope_guard.h | 36 +- zen/stl_tools.h | 70 +- zen/string_base.h | 52 +- zen/string_tools.h | 17 +- zen/string_traits.h | 18 +- zen/sys_error.h | 5 +- zen/type_traits.h | 18 +- zenXml/zenxml/cvrt_struc.h | 18 +- 139 files changed, 2754 insertions(+), 68689 deletions(-) create mode 100755 FreeFileSync/Build/Resources/Languages.zip delete mode 100755 FreeFileSync/Build/Resources/Languages/arabic.lng delete mode 100755 FreeFileSync/Build/Resources/Languages/bulgarian.lng delete mode 100755 FreeFileSync/Build/Resources/Languages/chinese_simple.lng delete mode 100755 FreeFileSync/Build/Resources/Languages/chinese_traditional.lng delete mode 100755 FreeFileSync/Build/Resources/Languages/croatian.lng delete mode 100755 FreeFileSync/Build/Resources/Languages/czech.lng delete mode 100755 FreeFileSync/Build/Resources/Languages/danish.lng delete mode 100755 FreeFileSync/Build/Resources/Languages/dutch.lng delete mode 100755 FreeFileSync/Build/Resources/Languages/english_uk.lng delete mode 100755 FreeFileSync/Build/Resources/Languages/french.lng delete mode 100755 FreeFileSync/Build/Resources/Languages/german.lng delete mode 100755 FreeFileSync/Build/Resources/Languages/greek.lng delete mode 100755 FreeFileSync/Build/Resources/Languages/hebrew.lng delete mode 100755 FreeFileSync/Build/Resources/Languages/hindi.lng delete mode 100755 FreeFileSync/Build/Resources/Languages/hungarian.lng delete mode 100755 FreeFileSync/Build/Resources/Languages/italian.lng delete mode 100755 FreeFileSync/Build/Resources/Languages/japanese.lng delete mode 100755 FreeFileSync/Build/Resources/Languages/korean.lng delete mode 100755 FreeFileSync/Build/Resources/Languages/lithuanian.lng delete mode 100755 FreeFileSync/Build/Resources/Languages/norwegian.lng delete mode 100755 FreeFileSync/Build/Resources/Languages/polish.lng delete mode 100755 FreeFileSync/Build/Resources/Languages/portuguese.lng delete mode 100755 FreeFileSync/Build/Resources/Languages/portuguese_br.lng delete mode 100755 FreeFileSync/Build/Resources/Languages/romanian.lng delete mode 100755 FreeFileSync/Build/Resources/Languages/russian.lng delete mode 100755 FreeFileSync/Build/Resources/Languages/slovak.lng delete mode 100755 FreeFileSync/Build/Resources/Languages/slovenian.lng delete mode 100755 FreeFileSync/Build/Resources/Languages/spanish.lng delete mode 100755 FreeFileSync/Build/Resources/Languages/swedish.lng delete mode 100755 FreeFileSync/Build/Resources/Languages/turkish.lng delete mode 100755 FreeFileSync/Build/Resources/Languages/ukrainian.lng delete mode 100644 FreeFileSync/Source/ui/sorting.h diff --git a/Bugs.txt b/Bugs.txt index 8e45ce73..ad75f52f 100755 --- a/Bugs.txt +++ b/Bugs.txt @@ -4,9 +4,9 @@ that affect FreeFileSync. Therefore it is not recommended to compile against old the ones mentioned below. The remaining issues that are yet to be fixed are listed in the following: ------------------- -| libcurl 7.67.0 | ------------------- +----------------- +| libcurl 7.6.7 | +----------------- __________________________________________________________________________________________________________ /lib/ftp.c https://github.com/curl/curl/issues/1455 @@ -215,9 +215,9 @@ _libssh2_ed25519_new_private_frommemory(libssh2_ed25519_ctx** ed_ctx, __________________________________________________________________________________________________________ -------------------------------- -| wxWidgets master 2019-07-22 | -------------------------------- +------------------- +| wxWidgets 3.1.3 | +------------------- __________________________________________________________________________________________________________ /src/aui/framemanager.cpp: Fix incorrect pane height calculations: @@ -287,12 +287,13 @@ Backspace not working in filter dialog: http://www.freefilesync.org/forum/viewto void wxWindowGTK::ConnectWidget( GtkWidget *widget ) { -- static bool isSourceAttached; +- static bool isSourceAttached; - if (!isSourceAttached) - { - // attach GSource to detect new GDK events - isSourceAttached = true; -- static GSourceFuncs funcs = { +- static GSourceFuncs funcs = +- { - source_prepare, source_check, source_dispatch, - NULL, NULL, NULL - }; @@ -300,21 +301,11 @@ Backspace not working in filter dialog: http://www.freefilesync.org/forum/viewto - // priority slightly higher than GDK_PRIORITY_EVENTS - g_source_set_priority(source, GDK_PRIORITY_EVENTS - 1); - g_source_attach(source, NULL); +- g_source_unref(source); - } -+// -+// if (!isSourceAttached) -+// { -+// // attach GSource to detect new GDK events -+// isSourceAttached = true; -+// static GSourceFuncs funcs = { -+// source_prepare, source_check, source_dispatch, -+// NULL, NULL, NULL -+// }; -+// GSource* source = g_source_new(&funcs, sizeof(GSource)); -+// // priority slightly higher than GDK_PRIORITY_EVENTS -+// g_source_set_priority(source, GDK_PRIORITY_EVENTS - 1); -+// g_source_attach(source, NULL); -+// } + + g_signal_connect (widget, "key_press_event", + G_CALLBACK (gtk_window_key_press_callback), this); __________________________________________________________________________________________________________ /include/wx/window.h diff --git a/Changelog.txt b/Changelog.txt index 7da64263..14301dab 100755 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,3 +1,21 @@ +FreeFileSync 10.18 [2019-11-19] +------------------------------- +Save/load database files in parallel +Show item count for each view filter category +Group config history items via background colors +Allow grid sort by category and sync action +Reduced file accesses for faster start up +Buffer redundant database loads +Fix ibus initialization hang on Ubuntu 19.10 +Defer showing progress panel for short-lived tasks +Calculate stable scrollbar dimensions on GTK2 +Log mod time errors even when sync is cancelled +Show progress and errors when updating sync directions +Detect MLSD support despite invalid FTP FEAT response +Improved GUI responsiveness during config load +Added Vietnamese translation + + FreeFileSync 10.17 [2019-10-17] ------------------------------- Support PuTTY private key files for SFTP login diff --git a/FreeFileSync/Build/Resources/Gtk2Styles.rc b/FreeFileSync/Build/Resources/Gtk2Styles.rc index b13985a0..b3cd5a53 100755 --- a/FreeFileSync/Build/Resources/Gtk2Styles.rc +++ b/FreeFileSync/Build/Resources/Gtk2Styles.rc @@ -5,3 +5,12 @@ style "no-inner-border" } class "GtkButton" style "no-inner-border" + + +style "no-scrollbar-spacing" +{ + /* see wx+/grid.cpp: implementation assumes no spacing! */ + GtkScrolledWindow::scrollbar-spacing = 0 +} + +class "GtkScrolledWindow" style "no-scrollbar-spacing" diff --git a/FreeFileSync/Build/Resources/Gtk3Styles.css b/FreeFileSync/Build/Resources/Gtk3Styles.css index 977d45e3..4cac90ea 100755 --- a/FreeFileSync/Build/Resources/Gtk3Styles.css +++ b/FreeFileSync/Build/Resources/Gtk3Styles.css @@ -5,3 +5,10 @@ button min-width: 0; min-height: 0; } + + +* +{ + /* see wx+/grid.cpp: spacing wouldn't hurt, but let's be consistent */ + -GtkScrolledWindow-scrollbar-spacing: 0; +} diff --git a/FreeFileSync/Build/Resources/Icons.zip b/FreeFileSync/Build/Resources/Icons.zip index 3c78d303..b010e86e 100755 Binary files a/FreeFileSync/Build/Resources/Icons.zip and b/FreeFileSync/Build/Resources/Icons.zip differ diff --git a/FreeFileSync/Build/Resources/Languages.zip b/FreeFileSync/Build/Resources/Languages.zip new file mode 100755 index 00000000..ba318dd8 Binary files /dev/null and b/FreeFileSync/Build/Resources/Languages.zip differ diff --git a/FreeFileSync/Build/Resources/Languages/arabic.lng b/FreeFileSync/Build/Resources/Languages/arabic.lng deleted file mode 100755 index 05e21675..00000000 --- a/FreeFileSync/Build/Resources/Languages/arabic.lng +++ /dev/null @@ -1,2200 +0,0 @@ -
- العربية - Waleed Cordy - ar - flag_arabic.png - 6 - n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5 -
- -Cannot read file %x. -لا يمكن قراءة الملف %x. - - -Unexpected size of data stream. -Expected: %x bytes -Actual: %y bytes - - -حجم غير متوقع لتدفق البيانات. -المتوقع: ‎%x bytes -الفعلي: ‎%y bytes - - -Cannot write file %x. -لا يمكن كتابة الملف %x. - -Cannot write permissions of %x. -لا يمكن كتابة أذونات %x. - -Operation not supported between different devices. -العملية غير مدعومة بين الأجهزة المختلفة. - -Cannot delete file %x. -لا يمكن حذف الملف %x. - -Cannot delete symbolic link %x. -لا يمكن حذف الرابط الرمزي %x. - -Cannot delete directory %x. -لا يمكن حذف المسار %x. - -Cannot move file %x to %y. -لا يمكن نقل الملف %x إلى %y. - -Cannot copy symbolic link %x to %y. -لا يمكن نسخ الرابط الرمزي من %x إلى %y. - -Error Code %x -رمز الخطأ %x - -Cannot read directory %x. -لا يمكن قراءة الدليل %x. - -Cannot write modification time of %x. -لا يمكن كتابة وقت تعديل %x. - -Cannot read file attributes of %x. -لا يمكن قراءة سمات الملف %x. - -Cannot create directory %x. -لا يمكن إنشاء المسار %x. - -Cannot determine final path for %x. -تعذر تحديد المسار النهائي لـ %x. - -Operation not supported by device. -العملية غير مدعومة للجهاز. - -Cannot resolve symbolic link %x. -لا يمكن حل الارتباط الرمزي %x. - -Unable to move %x to the recycle bin. -تعذر نقل %x إلى سلة المحذوفات. - -Authentication completed. -نجحت المصادقة. - -You may close this page now and continue with FreeFileSync. -يمكنك غلق هذه الصفحة والاستمرار باستخدام FreeFileSync. - -Authentication failed. -فشلت المصادقة. - -Unable to connect to %x. -لا يمكن الاتصال بـ %x. - -Cannot find %x. -لا يمكن العثور على %x. - -The name %x is used by more than one item in the folder. -الاسم %x تم استخدامه اكثر من مرة فى نفس المجلد. - -Please authorize access to user account %x. -من فضلك امنح الاذن للمستحدم %x. - -Cannot open file %x. -تعذر فتح الملف %x. - -The name %x is already used by another item. -الأسم %x مستخدم بالفعل فى عنصر أخر. - -Cannot determine free disk space for %x. -لا يمكن تحديد مساحة القرص الحرة لـ %x. - -Unable to disconnect from %x. -غير قادر على قطع الاتصال من %x. - -Unable to access %x. -لا يمكن الوصول إلى %x. - -Failed to get information about server %x. -فشل الحصول على معلومات حول الخادم %x. - -Cannot monitor directory %x. -لا يمكن مراقبة المسار %x. - -Cannot find device %x. -لا يمكن العثور على الجهاز %x. - -Cannot open directory %x. -لا يمكن فتح المسار %x. - -Unsupported item type. -نوع العنصر غير مدعم. - -Incorrect command line: -سطر أوامر خاطئ: - -The server does not support authentication via %x. -لا يدعم الخادم المصادقة عبر %x. - -Required: -مطلوب: - - -Operation timed out after 1 second. -Operation timed out after %x seconds. - - -انقضت مهلة العملية بعد 0 ثانية. -انقضت مهلة العملية بعد 1 ثانية. -انقضت مهلة العملية بعد 2 ثانية. -انقضت مهلة العملية بعد %x ثوان. -انقضت مهلة العملية بعد %x ثانية. -انقضت مهلة العملية بعد %x ثانية. - - - -Cannot wait on more than 1 connection at a time. -Cannot wait on more than %x connections at a time. - - -لا يمكن الانتظار على أكثر 0 اتصال في وقت واحد. -لا يمكن الانتظار على أكثر 1 اتصال في وقت واحد. -لا يمكن الانتظار على أكثر 2 اتصال في وقت واحد. -لا يمكن الانتظار على أكثر %x اتصالات في وقت واحد. -لا يمكن الانتظار على أكثر من %x اتصالات في وقت واحد. -لا يمكن الانتظار على أكثر من %x اتصالات في وقت واحد. - - -Active connections: %x -الاتصال النشط: %x - -Failed to open SFTP channel number %x. -فشل فتح قناة SFTP رقم %x. - -Both sides have changed since last synchronization. -كلا الجانبين قد تغير منذ المزامنة الأخيرة. - -Cannot determine sync-direction: -لا يمكن تحديد اتجاه المزامنة: - -No change since last synchronization. -لم يطرأ أي تغيير منذ المزامنة الأخيرة. - -The database entry is not in sync considering current settings. -مدخلات قواعد البيانات غير متزامنة حسب إعدادات المزامنة الحالية. - -Setting default synchronization directions: Old files will be overwritten with newer files. -تحديد الاتجاهات الافتراضية للمزامنة: ستتم الكتابة فوق الملفات القديمة بالملفات الأحدث. - -Creating file %x -إنشاء الملف %x - -Creating folder %x -إنشاء مجلد %x - -Creating symbolic link %x -إنشاء ارتباط رمزي %x - -Moving file %x to the recycle bin -نقل الملف %x إلى سلة المهملات - -Moving folder %x to the recycle bin -نقل المجلد %x إلى سلة المهملات - -Moving symbolic link %x to the recycle bin -نقل الارتباط الرمزي %x إلى سلة المهملات - -Deleting file %x -حذف الملف %x - -Deleting folder %x -حذف المجلد %x - -Deleting symbolic link %x -حذف الارتباط الرمزي %x - -Checking recycle bin availability for folder %x... -التحقق من توافر سلة المحذوفات من أجل المجلد %x... - -The recycle bin is not supported by the following folders. Deleted or overwritten files will not be able to be restored: -سلة المهملات غير مدعومة بواسطة المجلدات التالية. لن تتمكن من استعادة الملفات المحذوفة أو التي يتم استبدالها: - -An exception occurred -حدث استثناء - -A left and a right directory path are expected after %x. -متوقع المسار لليمين واليسار بعد %x. - -Syntax error -خطأ في البنية - -Cannot find file %x. -لا يمكن العثور على المجلد %x. - -Error -خطأ - -File %x does not contain a valid configuration. -لا يحتوي الملف %x تكويناً صحيحاً. - -The config file must not contain settings at directory pair level when directories are set via command line. -يجب أن يحتوي ملف الخيارات الخيارات على مستوى أزواج المسارات عند تحديد المسارات بواسطة سطر الأوامر. - -Directories cannot be set for more than one configuration file. -لا يمكن اختيار المسارات لأكثر من ملف خيارات واحد. - -Command line -سطر الأوامر - -Syntax: -بنية: - -config files: -ملفات الخيارات: - -directory -مسار - -global config file: -ملف الخيارات العام: - -Any number of FreeFileSync "ffs_gui" and/or "ffs_batch" configuration files. -أي عدد من ملفات تكوين FreeFileSync بامتداد "ffs_gui" أو/و "ffs_batch". - -Any number of alternative directory pairs for at most one config file. -أي عدد من أزواج المسارات البديلة من أجل ملف خيارات واحد. - -Open the selected configuration for editing only, without executing it. -فتح التكوين المحدد لتعديله فقط بدون تنفيذه. - -Path to an alternate GlobalSettings.xml file. -تحديد مسار مختلف لملف GlobalSettings.xml. - -Installation files are corrupted. Please reinstall FreeFileSync. -ملفات التثبيت تالفة. الرجاء إعادة تثبيت FreeFileSync. - -Cannot find the following folders: -تعذر العثور على المجلدات التالية: - -The following folders do not yet exist: -المجلدات الأتية غير موجودة حتى الأن: - -The folders are created automatically when needed. -المجلدات سيتم انئاءها عند الحاجة. - -The following folder paths differ in case. Please use a single form in order to avoid duplicate accesses. -أسماء مسارات المجلدات الأتية مختلفة فى الشكل. من فضلك استعمل شكل موحد لتفادى حدوث دخول متكرر لنفس المجلد. - -Scanning: -الفحص: - -Comparison finished: -انتهاء المقارنة: - - -1 item found -%x items found - - -0 عنصر تم العثور عليه -1 عنصر تم العثور عليه -2 عنصران تم العثور عليهما -%x عناصر تم العثور عليها -%x عناصر تم العثور عليها -%x عناصر تم العثور عليها - - -Time elapsed: -الوقت المنقضي: - -File %x has an invalid date. -يحتوي الملف %x تاريخ غير صالح. - -Date: -التاريخ: - -Files have the same date but a different size. -الملفات لها نفس التاريخ ولكن حجم مختلف. - -Size: -الحجم: - -Content comparison was skipped for excluded files. -تم تخطي مقارنة المحتوى لملفات مستبعدة. - -Items differ in attributes only -العناصر مختلفة في السمات فقط - -Resolving symbolic link %x -جاري حل المسار الرمزي %x - -Comparing content of files %x -مقارنة محتويات الملفات %x - -Generating file list... -إنشاء قائمة الملفات... - -Fail-safe file copy -نسخ ملفات آمن من الفشل - -Enabled -ممكن - -Disabled -معطل - -Copy locked files -نسخ الملفات المقفلة - -Copy file access permissions -نسخ أذونات الوصول إلى الملف - -File time tolerance -التفاوت في وقت الملف - -Run with background priority -تشغيل مع أولوية في الخلفية - -Lock directories during sync -قفل المسارات أثناء المزامنة - -Verify copied files -التحقق من الملفات التي تم نسخها - -Using non-default global settings: -استخدام إعدادات عامة غير افتراضية: - -A folder input field is empty. -حقل إدخال خاص بمجلد فارغ. - -The corresponding folder will be considered as empty. -سيتم اعتبار المجلد الموافق كمجلد فارغ. - -Exclude: -استثناء: - -One base folder of a folder pair is contained in the other one. -يوجد مجلد أساسي لزوج من المجلدات في المجلد الآخر. - -The folder should be excluded from synchronization via filter. -يجب استبعاد المجلد من المزامنة عبر المرشح. - -Calculating sync directions... -جاري حساب اتجاهات المزامنة... - -Out of memory. -نفدت الذاكرة. - -Show in Explorer -إظهار في المستكشف - -Open with default application -فتح باستخدام التطبيق الافتراضي - -Browse directory -تصفح المسار - -Database file %x is incompatible. -ملف قاعدة البيانات %x غير متوافق. - -Initial synchronization: -المزامنة الأولية: - -Database file %x does not yet exist. -ملف قاعدة البيانات %x غير موجود حتى الآن. - -Database file is corrupted: -ملف قاعدة البيانات تالف: - -Loading file %x... -جار تحميل الملف %x... - -The database files do not yet contain information about the last synchronization. -لا تحتوي ملفات قاعدة البيانات حتى الآن على معلومات حول المزامنة الأخيرة. - -Saving file %x... -جاري حفظ الملف %x... - -Searching for folder %x... -البحث عن المجلد %x... - -Timeout while searching for folder %x. -انقضت المهلة أثناء البحث عن مجلد %x. - -Cannot get process information. -لا يمكن الحصول على معلومات العملية. - -Waiting while directory is locked: -انتظر بينما يتم إنشاء قفل للمسار: - -Lock owner: -صاحب القفل: - -Detecting abandoned lock... -اكتشاف قفل مهمل... - - -1 sec -%x sec - - -0 ثانية -1 ثانية واحدة -2 ثانيتين -%x ثواني -%x ثانية -%x ثانية - - -Item exists on left side only -العنصر موجود على الجانب الأيمن فقط - -Item exists on right side only -العنصر موجود في الجانب الأيسر فقط - -Left side is newer -الجانب الأيمن أحدث - -Right side is newer -الجانب الأيسر أحدث - -Items have different content -العناصر مختلفة بالمحتوى - -Both sides are equal -كلا الجانبين متماثلان - -Conflict/item cannot be categorized -الاختلاف\العنصر لا يمكن تصنيفه - -Copy new item to left -نسخ عنصر جديد إلى اليمين - -Copy new item to right -نسخ عنصر جديد إلى اليسار - -Delete left item -حذف العنصر الأيمن - -Delete right item -حذف العنصر الأيسر - -Move file on left -نقل ملف على اليمين - -Move file on right -نقل ملف على اليسار - -Update left item -تحديث العنصر اليميني - -Update right item -تحديث العنصر اليساري - -Do nothing -لا تفعل شيئا - -Update attributes on left -تحديث السمات على اليمين - -Update attributes on right -تحديث السمات على اليسار - -Error parsing file %x, row %y, column %z. -حدث خطأ أثناء تحليل الملف %x، الصف %y، و العمود %z. - -Services -خدمات - -Show All -اظهر الكل - -Hide Others -اخفاء الاخرين - -Hide %x -اخفاء %x - -Quit %x -الغاء %x - -Cannot set directory locks for the following folders: -لا يمكن وضع قفل المسار للمجلدات الأتية: - -Errors: -أخطاء: - -Warnings: -تحذيرات: - -Items processed: -معالجة العناصر: - -Items remaining: -العناصر المتبقية: - -Total time: -مجموع الوقت: - -Warning -تحذير - -Stopped -توقف - -Cleaning up log files: -تنظيف ملفات السجل: - - -1 thread -%x threads - - -0 بند -1 بند واحد -2 بندان -%x بنود -%x بنداً -%x بند - - -%x/sec -%x ثانية - -%x items -%x عناصر - -Completed successfully -تم بنجاح - -Completed with warnings -تم بتحذيرات - -Completed with errors -تم بأخطاء - -Cannot access the Volume Shadow Copy Service. -لا يمكن الوصول إلى خدمة "نسخ الظل لوحدة التخزين". - -Please run the 64-bit version of FreeFileSync to create shadow copies on this system. -الرجاء تشغيل نسخة 64-بت من FreeFileSync لإنشاء نسخ الظل على هذا النظام. - -Volume name %x is not part of file path %y. -اسم وحدة التخزين %x ليس جزءاُ من اسم الملف %y. - -File time and size -تاريخ الملف و حجمه - -File content -محتوى الملف - -File size -حجم الملف - -Two way -بالاتجاهين - -Mirror -انعكاس - -Update -تحديث - -Custom -مخصص - -Multiple... -متعددة... - -Cannot write file attributes of %x. -لا يمكن كتابة سمات الملف %x. - -%x and %y have different content. -%x و %y لديهما محتوى مختلف. - -Data verification error: -خطأ في التحقق من البيانات: - -Moving file %x to %y -نقل الملف %x إلى %y - -Moving folder %x to %y -نقل المجلد %x إلى %y - -Moving symbolic link %x to %y -نقل الارتباط الرمزي %x إلى %y - -Updating file %x -جاري تحديث الملف %x - -Updating symbolic link %x -جاري تحديث المسار الرمزي %x - -Verifying file %x -التحقق من الملف %x - -Updating attributes of %x -تحديث سمات %x - -Source item %x not found -العنصر المصدر %x لم يتم ايجاده - -Parent folder %x is not existing. -المجلد الأصل %x غير موجود. - -Cannot copy file %x to %y. -لا يمكن نسخ الملف %x إلى %y. - -Creating a Volume Shadow Copy for %x... -جاري إنشاء نسخة ظل وسيطة لـ %x... - -Cannot find folder %x. -تعذر العثور على المجلد %x. - -Target folder %x is already existing, but was not available during folder comparison. - - -Target folder input field must not be empty. -يجب أن لا يكون حقل إدخال المجلد الهدف فارغاً. - -Source folder %x not found. -لم يتم العثور على المجلد المصدر %x. - -Please enter a target folder for versioning. -الرجاء تحديد مجلد هدف من أجل الوسم حسب الإصدار. - -The following items have unresolved conflicts and will not be synchronized: -العناصر التالية لم تحل اختلافاتها، و لن يتم مزامنتها: - -Folder pair: -زوج المجلدات: - -The following folders are significantly different. Please check that the correct folders are selected for synchronization. -المجلدات التالية تختلف اختلافا كبيرا. يرجى التحقق من تحديد المجلدات الصحيحة لإجراء التزامن. - -Not enough free disk space available in: -المساحة الحرة المتوفرة على القرص غير كافية: - -Available: -متاح: - -Some files will be synchronized as part of multiple base folders. -ستتم مزامنة بعض الملفات كجزء من مجلدات قاعدة متعددة. - -To avoid conflicts, set up exclude filters so that each updated file is included by only one base folder. - - -Versioning folder: -مجلد الإصدار: - -Base folder: -المجلد الأساس: - -The versioning folder is contained in a base folder. -مجلد الإصدار موجود داخل مجلد أساس. - -Synchronizing folder pair: -مزامنة زوج مجلدات: - -Generating database... -إنشاء قاعدة بيانات... - -Searching for old file versions: -البحث عن اصدارات قديمة للملف: - -Removing old file versions: -ازالة اصدارات قديمة للملف: - -Unable to create time stamp for versioning: -تعذر إنشاء بصمة زمنية من أجل المفاضلة الزمنية: - -Drag && drop -سحب و إفلات - -Select a folder -تحديد مجلد - -&New -&جديد - -&Open... -&فتح... - -Save &as... -&حفظ باسم... - -E&xit -&إغلاق - -&File -&ملف - -&View help -إ&ظهار المساعدة - -&About -&حول - -&Help -&تعليمات - -Usage: -الاستخدام: - -Select folders to watch. -حدد المجلدات للمتابعة. - -Enter a command line. -إدخال سطر أوامر. - -Press 'Start'. -اضغط على 'ابدأ'. - -To get started just import a "ffs_batch" file. -للبدء قم باستيراد ملف "ffs_batch". - -Folders to watch: -المجلدات للمتابعة: - -Add folder -إضافة مجلد - -Remove folder -إزالة مجلد - -Browse -تصفح - -Idle time (in seconds): -وقت الخمول (بالثانية): - -Idle time between last detected change and execution of command -وقت الخمول بين آخر تغيير تم الكشف عنه وتنفيذ الأوامر - -Command line: -سطر الأوامر: - -&Hide console window - - - -The command is triggered if: -- files or subfolders change -- new folders arrive (e.g. USB stick insert) - - -يتم تشغيل الأمر إذا: --حدوث تغيير في الملفات أو المجلدات الفرعية --ظهور مجلدات جديدة (مثال: إدخال USB stick) - - -Start -بدء - -About -حول - -Build: %x -بناء: %x - -All files -جميع الملفات - -Automated Synchronization -مزامنة تلقائية - -The %x protocol does not support directory monitoring: -بروتوكول %x لا يدعم مراقبة المجلدات: - -Directory monitoring active -مراقبة المسارات فعالة - -Waiting until directory is available: -بإنتظار توافر المسار: - -&Configure - - -&Show error message -أ&ظهر رسائل الخطأ. - -&Quit -إ&نهاء - -&Retry -إ&عادة المحاولة - - -1 byte -%x bytes - - -‎0 byte -‎1 byte -‎2 bytes -‎%x bytes -‎%x bytes -‎%x bytes - - -%x MB -‎%x MB - -%x KB -‎%x KB - -%x GB -‎%x GB - -Loading... -تحميل... - -Scanning... -جاري الفحص... - -configuration file - - -System: Sleep -النظام: سكون - -System: Shut down -النظام: إيقاف التشغيل - -Nothing to synchronize -لا يوجد شيء للمزامنة - -Executing command: - - -You can switch to FreeFileSync's main window to resolve this issue. -بإمكانك العودة إلى نافذة FreeFileSync الرئيسية لحل هذه المشكلة. - -&Don't show this warning again -&لا تظهر هذا التنبيه مرة ثانية - -&Ignore -&تجاهل - -&Switch -&تبديل - -Switching to FreeFileSync's main window -العودة إلى نافذة FreeFileSync الرئيسية - -Automatic retry -المحاولة تلقائياً - -Ignore &all -تجاهل &الكل - -Retrying operation... -إعادة محاولة العملية... - -Serious Error -خطأ فادح - -Last session -مصدر الجلسة - -Today -اليوم - - -1 day -%x days - - -0 يوم -1 يوم واحد -2 يومان -%x أيام -%x يوماً -%x يوم - - -Name -الاسم - -Last sync -أخر مزامنة - -Log -السجل - -Folder -المجلد - -Symlink -ارتباط-رمزي - -Full path -المسار الكامل - -Relative path -المسار النسبي - -Item name -اسم العنصر - -Size -الحجم - -Date -تاريخ - -Extension -اللاحقة - -Category -الفئة - -Action -التصرف - -Local comparison settings -إعدادات المقارنة المحلية - -Local synchronization settings -إعدادات المزامنة المحلية - -Local filter -فلتر محلي - -Active -مفعل - -None -لا شيء - -Remove local settings -إزالة الإعدادات المحلية - -Clear local filter -إزالة الفلتر المحلي - -Copy -نسخ - -Paste -لصق - -The selected folder %x cannot be used with FreeFileSync. -المجلد المحدد %x لا يمكن استخدامه مع FreeFileSync. - -Please select a folder on a local file system, network or an MTP device. -الرجاء تحديد مجلد على نظام الملفات المحلي، الشبكة أو جهاز MTP. - -Defined by context of use -معرف بواسطة سياق الاستخدام - -Requires FreeFileSync Donation Edition -يتطلب FreeFileSync Donation Edition - -&Save -&حفظ - -Save as &batch job... -&حفظ كمهمة دفعية... - -Show &log -أظهر &السجل - -Start &comparison -بدأ الم&قارنة - -C&omparison settings -&مقارنة - -&Filter settings -إعدادات ال&فلتر - -S&ynchronization settings -إ&عدادات - -Start &synchronization -بدأ الم&زامنة - -&Actions -&مهام - -&Preferences -&التفضيلات - -&Language -الل&غة - -&Find... -&بحث... - -&Export file list... -&تصدير قائمة الملفات... - -&Reset layout -إعادة ال&تنسيق إلى الإفتراضي - -&Tools -أ&دوات - -&Check for updates now -&تحقق من وجود تحديثات الآن - -Check &automatically once a week -&تحقق أوتوماتيكياً بشكل أسبوعي - -Cancel -إلغاء الأمر - -Compare -قارن - -Synchronize -مزامنة - -Add folder pair -إضافة زوج مجلدات - -Remove folder pair -إزالة زوج مجلدات - -Access online storage -الوصول إلى التخزين عبر الإنترنت - -Close search bar -إغلاق شريط البحث - -Find: -بحث: - -Match case -مطابقة الحالة - -Processed: - - -Remaining: - - -New -جديد - -Open... -فتح... - -Save -حفظ - -Save as... -حفظ كـ... - -View type: -عرض النوع: - -Select view: -اختيار نمط العرض: - -Save as default -حفظ كافتراضي - -Statistics: -إحصائيات: - -Number of files and folders that will be deleted -عدد الملفات و المجلدات التي سيتم حذفها - -Number of files that will be updated -عدد الملفات التي سيتم تحديثها - -Number of files and folders that will be created -عدد الملفات و المجلدات التي سيتم إنشاؤها - -Total bytes to copy -إجمالي عدد الـ bytes التي سيتم نسخها - -Arrange folder pair -ترتيب زوج المجلدات - -Main settings: -الإعدادات الرئيسية: - -Use local settings: -استخدام الإعدادات المحلية: - -Select a variant: -اختيار بديل: - -Include &symbolic links: -تضمين &الروابط الرمزية: - -&Follow -&متابعة - -&Direct -&مباشر - -More information -المزيد من المعلومات - -&Ignore time shift [hh:mm] -&تجاهل تغيير الوقت [hh:mm] - -List of file time offsets to ignore -قائمة إزاحات وقت للملفات ليتم تجاهلها - -Example: -مثال: - -Handle daylight saving time -تعامل مع التوقيت الصيفي - -Ignore errors -تجاهل الأخطاء - -Retry count: -تعداد محاولات الإعادة: - -Delay (in seconds): -التأخير (بالثواني): - -Performance improvements: -تحسينات الأداء: - -Parallel file operations: -العمليات المتوازية للملف: - -How to get best performance? -كيفية الحصول على أفضل أداء؟ - -Local settings: -الإعدادات المحلية: - -Include: -إدخال: - -Show examples -إظهار أمثلة - -Select filter rules to exclude certain files from synchronization. Enter file paths relative to their corresponding folder pair. -اختيار قوانين فلترة لاستثناء ملفات معينة من المزامنة. أدخل مسارات الملفات منسوبة إلى زوج المجلدات المقابل. - -File size: -حجم الملف: - -Minimum: -الحد الأدنى: - -Maximum: -الحد الأقصى: - -Time span: -المجال الزمني: - -C&lear -إ&زالة - -Detect moved files -اكتشاف الملفات المنقولة - - -- Not supported by all file systems -- Requires and creates database files -- Detection not available for first sync - - -- غير مدعوم من كل أنظمة الملفات -- يتطلب وينشىء ملفات قواعد البيانات -- الاكتشاف غير متاح للمزامنة الأولى - - -Delete files: -حذف الملفات: - -&Recycle bin -&سلة المهملات - -&Permanent -&دائم - -&Versioning -ال&وسم حسب الإصدار - -Move files to a user-defined folder -نقل الملفات إلى المجلد المحدد من قبل المستخدم - -Naming convention: -اصطلاح التسمية: - -Limit file versions: -حد اصدارات الملف: - -Last x days: -اخر x أيام: - -&Override default log path: -&تجاوز المسار الافتراضى للسجل: - -Run a command: -تشغيل الأمر: - -OK -موافق - -Connection type: -نوع الاتصال: - -Connected user accounts: -المستخدمين المتصلين: - -&Add connection -&أضف اتصال - -&Disconnect -إ&قطع الاتصال - -Selected user account: -المستخدم المختار: - -Server name or IP address: -اسم الخادم أو عنوان IP: - -Port: -المنفذ: - -Encryption: -التشفير: - -&Disabled -&معطل - -&Explicit SSL/TLS -&Explicit SSL/TLS - -Authentication: -المصادقة: - -&Password -&كلمة المرو - -&Key file -&ملف المفتاح - -&SSH agent -&عميل بروتوكول SSH - -User name: -اسم المستخدم: - -Private key file: -ملف المفتاح الخاص: - -&Show password -&إظهار كلمة المرور - -Directory on server: -المسار على الخادم: - -Access timeout (in seconds): -أقصى زمن للوصول(ثانية): - -SFTP channels per connection: -قنوات SFTP لكل اتصال: - -Detect server limit -اكتشاف حد الخادم - -Select Folder -اختر مجلد - -Variant: -بديل: - -&Don't show this dialog again -&لا تظهر نافذة الحوار هذه مرة ثانية - -Bytes: - - -Items: - - -Synchronizing... -مزامنة... - -Minimize to notification area -تصغير إلى منطقة التنبيهات - -Bytes -بايت - -Items -العناصر - -When finished: -عند الانتهاء: - -Auto-close -اغلاق تلقائى - -Close -إغلاق - -&Pause -إ&يقاف مؤقت - -Stop -توقف - -Create a batch file for unattended synchronization. To start, double-click this file or schedule in a task planner: %x -إنشاء ملف دفعي من أجل عمليات المزامنة غير المحضورة. للبدأ, انقر نقراً مزدوجاً على الملف أو المهمة المجدولة في منظم المهام: %x - -Progress dialog: -شريط التقدم: - -Run minimized -تشغيل بوضع التصغير - -Show pop-up on errors or warnings -إظهار إطارات منبثقة عند حصول أخطاء أو تحذيرات - -&Cancel -&إلغاء - -Stop synchronization at first error -إحباط المزامنة عند أول خطأ - -How can I schedule a batch job? -كيف يمكنني جدولة مهمة دفعية؟ - -&Keep relative paths -&إبقاء المسارات النسبية - -&Overwrite existing files -&الكتابة فوق الملفات الموجودة - -The following settings are used for all synchronization jobs. -هذه الإعدادات مستخدمة لجميع مهمات المزامنة. - - -Copy to a temporary file (*.ffs_tmp) before overwriting target. -This guarantees a consistent state even in case of a serious error. - - -قم بالنسخ إلى ملف مؤقت (*.ffs_tmp) قبل استبدال الملف الهدف. -هذه العملية تضمن حالة مستقرة حتى في حال حدوث خطأ فادح. - - -recommended -‏منصوح به‏ - -Copy shared or locked files using the Volume Shadow Copy Service. -نسخ الملفات المشتركة مع مستخدمين آخرين أو المقفولة باستخدام خدمة نسخ الظل الوسيط. - -requires administrator rights -يتطلب صلاحيات مسؤول - -Transfer file and folder permissions. -نقل أذونات الملفات و المجلدات. - -Show all permanently hidden dialogs and warning messages again -إعادة إظهار جميع التنبهات و نوافذ الحوار التي تم إخفاؤها - -Default log path: -المسار الافتراضى للسجل: - -&Delete logs after x days: -&ازالة السجلات بعد x يوم: - -Notification sounds: - - -Synchronization finished: - - -Customize context menu: -تخصيص القائمة المحلية: - -Description -الوصف - -&Default -الا&فتراضي - -Feedback and suggestions are welcome: -ردود الفعل والاقتراحات مرحب بها: - -Home page -الصفحة الرئيسية - -FreeFileSync Forum -منتدى FreeFileSync - -Email -البريد الإلكتروني - -If you like FreeFileSync: -إذا أعجبك FreeFileSync: - -Support with a donation -دعم عبر التبرع - -The auto updater was disabled by the administrator. -تم تعطيل المحدث التلقائي بواسطة المسؤول. - -Donation details -تفاصيل التبرع - -Source code written in C++ using: -الرماز المصدري مكتوب بلغة C++‎ باستخدام: - -Published under the GNU General Public License: -نشر باستخدام رخصة جنو العمومية العامة: - -Many thanks for localization: -شكرا جزيلا للترجمة: - -Activate the FreeFileSync Donation Edition by one of the following methods: -قم بتنشيط FreeFileSync Donation Edition بإحدى الطرق التالية: - -Activate via internet now: -تنشيط عبر الإنترنت الآن: - -Activate online -التنشيط عبر الإنترنت - -Retrieve an offline activation key from the following URL: -استرداد مفتاح تنشيط دون اتصال من الرابط التالي: - -&Copy to clipboard -&نسخ من الذاكرة - -Enter activation key: -أدخل مفتاح التنشيط: - -Activate offline -تنشيط دون اتصال - -Highlight configurations that have not been run for more than the following number of days: -ميز التكوينات التى لم يتم تشغيلها لأكثر من عدد الأيام الأتية: - -FreeFileSync requires access rights to avoid "Operation not permitted" errors when synchronizing your data (e.g. Mail, Messages, Calendars). - - -Locate the FreeFileSync app - - -Open Security && Privacy - - -Click the lock to allow changes. - - -Drag FreeFileSync into the panel. - - -Synchronization Settings -إعدادات المزامنة - -Access Online Storage -الوصول الى التخزين السحابي - -Save as a Batch Job -حفظ كمهمة دفعية - -Delete Items -حذف العناصر - -Copy Items -نسخ العناصر - -Options -خيارات - -Select Time Span -اختيار المطال الزمني - -Highlight Configurations -تمييز التكوينات - -Grant Full Disk Access - - -Info -معلومات - -No log entries -لا يوجد سجلات - -Select all -اختيار الجميع - -&Options -&خيارات - -Main Bar -الشريط الرئيسي - -Folder Pairs -أزواج المجلدات - -Find -بحث - -View Settings -عرض الإعدادات - -Configuration -التكوين - -Overview -نظرة عامة - -Swap sides -مبادلة الجانبين - -Show "%x" -إظهار "%x" - -&Show details -&عرض التفاصيل - -FreeFileSync %x is available! -FreeFileSync %x متوفر! - -Local path not available for %x. -المسار المحلي غير متوفر لـ %x. - -Confirm -تأكيد - - -Do you really want to execute the command %y for one item? -Do you really want to execute the command %y for %x items? - - -هل تريد حقاً تنفيذ العملية %y من أجل عنصر 0 -هل تريد حقاً تنفيذ العملية %y من أجل عنصر وحيد 1 -هل تريد حقاً تنفيذ العملية %y من أجل عنصرين اثنين 2 -هل تريد حقاً تنفيذ العملية %y من أجل %x عناصر -هل تريد حقاً تنفيذ العملية %y من أجل %x عنصراً -هل تريد حقاً تنفيذ العملية %y من أجل %x عنصر - - -&Execute -&تنفيذ - -Set direction: -تحديد الاتجاه: - -multiple selection -تحديد متعدد - -&Include via filter: -أ&ضف باستخدام الفلتر: - -&Exclude via filter: -است&ثنى باستخدام الفلتر: - -Include temporarily -شمول مؤقتاً - -Exclude temporarily -استبعاد مؤقتاً - -&Synchronize selection -&زامن المختارات - -&Copy to... -&نسخ إلى... - -&Delete -&حذف - -Show icons: -إظهار الأيقونات: - -Small -صغيرة - -Medium -متوسطة - -Large -كبيرة - -Select time span... -حدد المجال الزمني... - -Donation Edition -نسخة التبرعات - -Folder Comparison and Synchronization -مقارنة و مزامنة المجلد - -Configuration saved -تم حفظ التكوين - -FreeFileSync batch -دفعة FreeFileSync - -Do you want to save changes to %x? -هل تريد حفظ التغييرات إلى %x؟ - -Never save &changes -&لا تقم بحفظ التغيرات - -Do&n't save -&لا تحفظ - -%x cannot be renamed. - - -New name: - - -Rename Configuration - - -Configuration name must not be empty. - - -&Rename... - - -Hide configuration -اخفاء التكوين - -Highlight... -تمييز... - -Clear filter -إزالة الفلاتر الحالية - -Show files that exist on left side only -إظهار الملفات الموجودة في الجانب الأيمن فقط - -Show files that exist on right side only -إظهار الملفات الموجودة في الجانب الأيسر فقط - -Show files that are newer on left -إظهار الملفات الأحدث في اليمين - -Show files that are newer on right -إظهار الملفات الأحدث في اليسار - -Show files that are equal -إظهار الملفات المتماثلة على الطرفين - -Show files that are different -إظهار الملفات المختلفة على الطرفين - -Show conflicts -إظهار الاختلافات - -Show files that will be created on the left side -إظهار الملفات التي سيتم إنشاؤها في الجانب الأيمن - -Show files that will be created on the right side -إظهار الملفات التي سيتم إنشاؤها في الجانب الأيسر - -Show files that will be deleted on the left side -إظهار الملفات التي سيتم حذفها من من الجانب الأيمن - -Show files that will be deleted on the right side -إظهار الملفات التي سيتم حذفها من الجانب الأيسر - -Show files that will be updated on the left side -إظهار الملفات التي سيتم تحديثها في الجانب الأيسر - -Show files that will be updated on the right side -إظهار الملفات التي سيتم تحديثها في الجانب الأيمن - -Show files that won't be copied -إظهار الملفات التي لن يتم نسخها - -Show filtered or temporarily excluded files -إظهار الملفات التي تم فلترتها أو استبعادها بشكل مؤقت - -Filter -عامل الفلترة - -All files are in sync -جميع الملفات في تزامن كامل - - -1 directory -%x directories - - -0 مسار -1 مسار واحد -2 مساران -%x مسارات -%x مساراً -%x مسار - - - -1 file -%x files - - -0 ملف -1 ملف واحد -2 ملفان -%x ملفات -%x ملفاً -%x ملف - - - -Showing %y of 1 row -Showing %y of %x rows - - -الظاهر %y من أصل سطر 0 -الظاهر %y من أصل سطر وحيد 1 -الظاهر %y من أصل سطرين اثنين 2 -الظاهر %y من أصل %x سطور -الظاهر %y من أصل %x سطراً -الظاهر %y من أصل %x سطر - - -Cannot find %x -لا يمكن العثور على %x - -Move up -تحريك لأعلى - -Move down -تحريك لأسفل - -Comma-separated values -قائمة قيم مفصولة بفواصل - -File list exported -تم تصدير قائمة الملفات - -Searching for program updates... -جاري البحث عن تحديثات للبرنامج... - -Paused -تم الإيقاف مؤقتاً - -Stop requested... -طلب الوقف... - -Initializing... -التجهيز للبدأ... - -Comparing content... -مقارنة المحتوى... - -&Continue -&مواصلة - -Progress -التقدم - -Thank you, %x, for your donation and support! -شكرا لك، %x, للتبرع والدعم. - -Connections -اتصالات - -Recommended range: -النطاق المستحسن: - -Do you really want to disconnect from user account %x? -هل تريد حقا قطع الاتصال من لبمستخدم %x ؟ - -Password: -كلمة المرور: - -Key passphrase: - - -Please enter a file path. -الرجاء إدخال مسار الملف. - - -Copy the following item to another folder? -Copy the following %x items to another folder? - - -نسخ العنصر 0 التالي إلى مجلد آخر؟ -نسخ العنصر 1 التالي إلى مجلد آخر؟ -نسخ العنصران التاليان إلى مجلد آخر؟ -نسخ الـ %x عناصر التالية إلى مجلد آخر؟ -نسخ الـ %x عنصراً التالية إلى مجلد آخر؟ -نسخ الـ %x عنصر التالية إلى مجلد آخر؟ - - -Please enter a target folder. -الرجاء إدخال المجلد الهدف. - - -Do you really want to move the following item to the recycle bin? -Do you really want to move the following %x items to the recycle bin? - - -هل تريد حقاً نقل 0 ملف إلى سلة المهملات ؟ -هل تريد حقاً نقل هذا الملف الوحيد 1 إلى سلة المهملات ؟ -هل تريد حقاً نقل هذين الملفبن 2 إلى سلة المهملات ؟ -هل تريد حقاً نقل %x ملفات إلى سلة المهملات ؟ -هل تريد حقاً نقل %x ملفاً إلى سلة المهملات ؟ -هل تريد حقاً نقل %x ملف إلى سلة المهملات ؟ - - -Move -نقل - - -Do you really want to delete the following item? -Do you really want to delete the following %x items? - - -هل تريد حقاً حذف 0 ملف التالي ؟ -هل تريد حقاً حذف الملف 1 التالي ؟ -هل تريد حقاً حذف الملفين 2 التاليين ؟ -هل تريد حقاً حذف الـ %x ملفات التالية ؟ -هل تريد حقاً حذف الـ %x ملفاً التالية ؟ -هل تريد حقاً حذف الـ %x ملف التالية ؟ - - -Start to synchronize the selection? -البدء بمزامنة المختارات ؟ - -Start synchronization now? -بدأ المزامنة الآن؟ - -Copy DACL, SACL, Owner, Group -نسخ DACL, SACL, Owner, Group - -Integrate external applications into context menu. The following macros are available: -دمج تطبيقات خارجية في قائمة السياق. تتوفر وحدات الماكرو التالية: - -Full file or folder path -المسار الكامل للملف أو المجلد - -Parent folder path -مسار المجلد الحاوي - -Temporary local copy for SFTP and MTP storage -نسخة محلية مؤقتة لتخزين SFTP و MTP - -Parameters for opposite side -معلمات الجانب المعاكس - -Show hidden dialogs again -إظهار التنبهات و نوافذ الحوار المخفية - -All dialogs shown -أظهر جميع مربعات الحوار - -Downloading update... -جار تحميل التحديث... - -Identify equal files by comparing modification time and size. -التعرف على الملفات المتساوية عن طريق مقارنة التاريخ و الحجم. - -Identify equal files by comparing the file content. -التعرف على الملفات المتساوية عن طريق مقارنة محتوى الملف. - -Identify equal files by comparing their file size. -تحديد الملفات المتساوية بمقارنة حجم الملف لها. - -Identify and propagate changes on both sides. Deletions, moves and conflicts are detected automatically using a database. -تحديد التغيرات و مواكبتها على الجانبين. عمليات الحذف, النقل و المشاكل المكتشفة باستخدام قواعد البيانات. - -Create a mirror backup of the left folder by adapting the right folder to match. -إنشاء نسخة احتياطية من الجانب الأيمن عن طريق تعديل الطرف الأيسر ليطابق الأيمن. - -Copy new and updated files to the right folder. -نسخ الملفات المحدثة إلى المجلد المناسب. - -Configure your own synchronization rules. -تحديد قواعد المزامنة الخاصة بك. - -Comparison -المقارنة - -Synchronization -المزامنة - -This week -هذا الأسبوع - -This month -هذا الشهر - -This year -هذه السنة - -Byte -Byte - -KB -KB - -MB -MB - -Retain deleted and overwritten files in the recycle bin -الاحتفاظ بالملفات المحذوفة والمستبدلة في سلة المهملات - -Delete and overwrite files permanently -حذف واستبدال الملفات نهائيا - -Replace -استبدال - -Move files and replace if existing -نقل الملفات و استبدال الموجودة بها إن وجدت - -Time stamp -البصمة الزمنية - -Move files into a time-stamped subfolder -انقل الملفات الى مجلد فرعى ذو وقت مُوقع - -File -ملف - -Append a time stamp to each file name -إلحاق ختم زمني بكل اسم ملف - -On completion: -عند الانتهاء: - -On errors: -عند حصول أخطاء: - -On success: -عند النجاح: - -Main config -التكوين الرئيسي - -empty -فارغ - -Leave as unresolved conflict -ترك كاختلافات من دون حل - -YYYY-MM-DD hhmmss -YYYY-MM-DD hhmmss - -Minimum version count must be smaller than maximum count. -العد الأدنى من الاصدار لابد وان يكون اقل من العد الأقصى. - -&Restore -&استعادة - -Files -ملفات - -Percentage -النسبة المئوية - -Failed to retrieve update information. -فشل استرداد معلومات التحديث. - -Automatic updates: -التحديثات التلقائية: - -Check for Program Updates -تفقد وجود تحديثات للبرنامج - -Auto-update now or download manually from the FreeFileSync home page? -التحديث التلقائي الآن أو تحميل يدويا من الصفحة الرئيسية لـ FreeFileSync؟ - -&Auto-update -&تحديث تلقائي - -&Home page -&الصفحة الرئيسية - -Download now? -تنزيل الآن؟ - -&Download -&تنزيل - -FreeFileSync is up to date. -FreeFileSync بأحدث إصدار بالفعل. - -Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now? -لا يمكن إيجاد رقم النسخة الحالية لـ FreeFileSync عبر الإنترنت. ربما تتوفر نسخة جديدة، هل تريد فعل ذلك يدويا؟ - -&Check -&تحقق - -Consistency check failed for %x. -فشل فحص التناسق لـ %x. - -Installation was registered on a different operating system. -تم تسجيل التثبيت على نظام تشغيل مختلف. - -Failed to activate FreeFileSync Donation Edition. -فشل تفعيل FreeFileSync Donation Edition. - -Incorrect activation key. -مفتاح التفعيل غير صحيح. - -Unable to register to receive system messages. -تعذر التسجيل لاستقبال رسائل النظام. - -The %x installation option is only available in the FreeFileSync Donation Edition. -خيار التحميل %x متوفر فقط فى نسخة التبرعات من FreeFileSync. - -Cannot find system function %x. -لا يمكن العثور على وظيفة نظام %x. - -Unable to register device notifications for %x. -تعذر تسجيل تنبيهات الجهاز لـ %x. - -The file is locked by another process: -الملف مقفول من قبل عملية أخرى: - -Failed to determine file permission support for folder %x. - - -Cannot read security context of %x. -لا يمكن قراءة سياق الأمان %x. - -Cannot write security context of %x. -لا يمكن كتابة سياق الأمان %x. - -Cannot read permissions of %x. -لا يمكن قراءة أذونات %x. - -Cannot copy permissions from %x to %y. -لا يمكن نسخ الأذونات من %x إلى %y. - -%x is not a regular directory name. -%x ليس اسم دليل اعتيادي. - -Cannot copy attributes from %x to %y. -لا يمكن نسخ السمات من %x إلى %y. - -%x TB -‎%x TB - -%x PB -‎%x PB - - -1 min -%x min - - -0 دقيقة -1 دقيقة واحدة -2 دقيقتان -%x دقائق -%x دقيقة -%x دقيقة - - - -1 hour -%x hours - - -0 ساعة -1 ساعة واحدة -2 ساعتين -%x ساعات -%x ساعة -%x ساعة - - -Cannot set privilege %x. -لا يمكن تعيين امتيازات %x. - -Unable to suspend system sleep mode. -تعذر تعليق وضع النوم للنظام. - -Cannot change process I/O priorities. -تعذر تغيير أولويات I/O للعملية. - -Checking recycle bin failed for folder %x. -فشل تصفح سلة المهملات من أجل الملف %x. - -Unable to shut down the system. -غير فادر على إيقاف تشغيل النظام. - -Prepare installation -الاستعداد للتثبيت - -Choose which components you want to install. -اختر المكونات التي تريد تنصيبها. - -Select installation type: -اختيار نوع التنصيب: - -Local -محلي - -Portable -متنقل - -Save settings in %x -احفظ الاعدادت الى %x - -Register FreeFileSync file extensions -تسجيل امتدادات الملفات لـ FreeFileSync - -Create Explorer context menu entries -إنشاء مدخلات القوائم المحلية في متصفح الملفات - -Save settings in installation directory -احفظ إعدادات التثبيت في مسار التثبيت - -Do not write to Registry -لا تسجل في ملفات الرجيستري - -Just copy the files -انسخ الملفات فقط - -Choose a directory for installation: -اختيار مسار التثبيت: - -Create shortcuts: -إنشاء اختصار: - -Desktop -سطح المكتب - -Start Menu -قائمة البدء - -Send To -ارسال الى - -Registering FreeFileSync file extensions -جار تسجيل امتدادات الملفات لـ FreeFileSync - -Unregistering FreeFileSync file extensions -جار إلغاء تسجيل امتدادات الملفات لـ FreeFileSync - -FreeFileSync Configuration -تضبيطات FreeFileSync - -FreeFileSync Batch File -الملف الدفعي الخاص بـ FreeFileSync - -FreeFileSync Synchronization Database -قاعدة بيانات المزامنة الخاصة بـ FreeFileSync - -RealTimeSync Configuration -تضبيطات RealTimeSync - -Edit with FreeFileSync -تعديل بواسطة FreeFileSync - -Instead of an ad, here's an animal. -بدلاً من الاعلانات، هذا حيوان. - -The FreeFileSync portable version cannot install into a subfolder of %x. -لا يمكن تثبيت النسخة المحمولة من FreeFileSync في مجلد فرعي داخل %x. - -Please choose the local installation type or select a different folder for installation. -الرجاء اختيار نوع التثبيت المحلي أو اختيار مجلد آخر للتثبيت. - -Get the Donation Edition with bonus features and help keep FreeFileSync ad-free. -احصل على نسخة التبرعات بالميزات الأضافية وساعد ليكون FreeFileSync خالى من الأعلانات. - diff --git a/FreeFileSync/Build/Resources/Languages/bulgarian.lng b/FreeFileSync/Build/Resources/Languages/bulgarian.lng deleted file mode 100755 index 9fd5baa6..00000000 --- a/FreeFileSync/Build/Resources/Languages/bulgarian.lng +++ /dev/null @@ -1,2136 +0,0 @@ -
- Български - ЛНВ - bg_BG - flag_bulgaria.png - 2 - n == 1 ? 0 : 1 -
- -Cannot read file %x. -Не може да прочете файл %x. - - -Unexpected size of data stream. -Expected: %x bytes -Actual: %y bytes - - -Неочакван размер на потока данни. -Очаквани: %x байта -Фактически: %y байта - - -Cannot write file %x. -Не може да запише файл %x. - -Cannot write permissions of %x. -Не може да запише правата за достъп на %x. - -Operation not supported between different devices. -Операцията не се поддържа между различни устройства. - -Cannot delete file %x. -Не може да изтрие файл %x. - -Cannot delete symbolic link %x. -Не може да изтрие символна връзка %x. - -Cannot delete directory %x. -Не може да изтрие директория %x. - -Cannot move file %x to %y. -Не може да премести файл %x в %y. - -Cannot copy symbolic link %x to %y. -Не може да копира символна връзка %x в %y. - -Error Code %x -Код на грешка %x - -Cannot read directory %x. -Не може да прочете директория %x. - -Cannot write modification time of %x. -Не може да запише времето на промяна на %x. - -Cannot read file attributes of %x. -Не може да прочете атрибутите на файл %x. - -Cannot create directory %x. -Не може да създаде директория %x. - -Cannot determine final path for %x. -Не може да определи крайния път за %x. - -Operation not supported by device. -Операцията не се поддържа от устройството. - -Cannot resolve symbolic link %x. -Не може да проследи символна връзка %x. - -Unable to move %x to the recycle bin. -Не може да премести %x в кошчето. - -Authentication completed. -Аутентификацията завърши. - -You may close this page now and continue with FreeFileSync. -Може да затворите тази страница и да продължите с FreeFileSync. - -Authentication failed. -Аутентификацията неуспешна. - -Unable to connect to %x. -Не може да се свърже със %x. - -Cannot find %x. -Не може да намери %x. - -The name %x is used by more than one item in the folder. -Името %x се използва от повече от един елемент в папката. - -Please authorize access to user account %x. -Моля, оторизирайте достъпа до потребителски акаунт %x. - -Cannot open file %x. -Не може да отвори файл %x. - -The name %x is already used by another item. -Името %x вече се използва от друг елемент. - -Cannot determine free disk space for %x. -Не може да определи свободното дисково пространство за %x. - -Unable to disconnect from %x. -Не може да прекъсне връзката от %x. - -Unable to access %x. -Няма достъп до %x. - -Failed to get information about server %x. -Не може да получи информация за сървъра %x. - -Cannot monitor directory %x. -Не може да следи директория %x. - -Cannot find device %x. -Не може да намери устройство %x. - -Cannot open directory %x. -Не може да отвори директория %x. - -Unsupported item type. -Неподдържан тип елемент. - -Incorrect command line: -Невалиден команден ред: - -The server does not support authentication via %x. -Сървърът не поддържа идентификация чрез %x. - -Required: -Необходимо: - - -Operation timed out after 1 second. -Operation timed out after %x seconds. - - -Времето на операцията изтича след 1 секунда. -Времето на операцията изтича след %x секунди. - - - -Cannot wait on more than 1 connection at a time. -Cannot wait on more than %x connections at a time. - - -Не може да чака за повече от 1 връзка едновременно. -Не може да чака за повече от %x връзки едновременно. - - -Active connections: %x -Активни връзки: %x - -Failed to open SFTP channel number %x. -Не може да отвори SFTP-канал номер %x. - -Both sides have changed since last synchronization. -Двете страни променени след последната синхронизация. - -Cannot determine sync-direction: -Не може да определи посоката на синхронизация: - -No change since last synchronization. -Няма промени след последната синхронизация. - -The database entry is not in sync considering current settings. -Записът в базата данни не е синхронизиран по текущите настройки. - -Setting default synchronization directions: Old files will be overwritten with newer files. -Задава подразбирани посоки на синхронизация: старите файлове ще се заменят с по-нови. - -Creating file %x -Създава файл %x - -Creating folder %x -Създава папка %x - -Creating symbolic link %x -Създава символна връзка %x - -Moving file %x to the recycle bin -Премества в кошчето файл %x - -Moving folder %x to the recycle bin -Премества в кошчето папка %x - -Moving symbolic link %x to the recycle bin -Премества в кошчето символна връзка %x - -Deleting file %x -Изтрива файл %x - -Deleting folder %x -Изтрива папка %x - -Deleting symbolic link %x -Изтрива символна връзка %x - -Checking recycle bin availability for folder %x... -Проверява достъпността на кошчето за папка %x... - -The recycle bin is not supported by the following folders. Deleted or overwritten files will not be able to be restored: -Кошчето не се поддържа от следните папки. Изтрити или презаписани файлове няма да могат да се възстановят: - -An exception occurred -Възникна изключение - -A left and a right directory path are expected after %x. -Очаква се път до лява и дясна директория след %x. - -Syntax error -Синтактична грешка - -Cannot find file %x. -Не е намерен файл %x. - -Error -Грешка - -File %x does not contain a valid configuration. -Файл %x не съдържа валидна конфигурация. - -The config file must not contain settings at directory pair level when directories are set via command line. -Конфигурационният файл не може да съдържа настройки на ниво двойка директории, ако директории се задават от команден ред. - -Directories cannot be set for more than one configuration file. -Не може да се задават директории за повече от един конфигурационен файл. - -Command line -Команден ред - -Syntax: -Синтаксис: - -config files: -конфигурационни файлове: - -directory -директория - -global config file: -глобален конфигурационен файл: - -Any number of FreeFileSync "ffs_gui" and/or "ffs_batch" configuration files. -Произволен брой FreeFileSync-конфигурационни-файлове "ffs_gui" и/или "ffs_batch". - -Any number of alternative directory pairs for at most one config file. -Произволен брой алтернативни двойки директории за най-много един конфигурационен файл. - -Open the selected configuration for editing only, without executing it. -Отвори избраната конфигурация само за редактиране, без да се изпълнява. - -Path to an alternate GlobalSettings.xml file. -Път до алтернативен файл GlobalSettings.xml. - -Installation files are corrupted. Please reinstall FreeFileSync. -Инсталационните файлове са повредени. Моля, преинсталирайте FreeFileSync. - -Cannot find the following folders: -Не може да намери следните папки: - -The following folders do not yet exist: -Следните папки все още не съществуват: - -The folders are created automatically when needed. -Папките се създават автоматично, когато потрябват. - -The following folder paths differ in case. Please use a single form in order to avoid duplicate accesses. -Следните пътища се различават по регистър. Моля, ползвайте еднаква форма за избягване на дублиран достъп. - -Scanning: -Търси файлове: - -Comparison finished: -Сравняването завърши: - - -1 item found -%x items found - - -1 елемент намерен -%x елемента намерени - - -Time elapsed: -Изминало време: - -File %x has an invalid date. -Файл %x има невалидна дата. - -Date: -Дата: - -Files have the same date but a different size. -Файловете имат еднаква дата, но различни размери. - -Size: -Размер: - -Content comparison was skipped for excluded files. -Сравняването на съдържание се прескача за изключените файлове. - -Items differ in attributes only -Елементите се различават само по атрибути - -Resolving symbolic link %x -Проследява символна връзка %x - -Comparing content of files %x -Сравнява съдържанието на файловете %x - -Generating file list... -Създава списък на файловете... - -Fail-safe file copy -Надеждно копиране на файлове - -Enabled -Активно - -Disabled -Неактивно - -Copy locked files -Копирай заключени файлове - -Copy file access permissions -Копирай правата за достъп на файла - -File time tolerance -Толеранс на файловото време - -Run with background priority -Изпълнявай с фонов приоритет - -Lock directories during sync -Заключи директориите по време на синхронизация - -Verify copied files -Верифицирай копираните файлове - -Using non-default global settings: -Използва нестандартни глобални настройки: - -A folder input field is empty. -Полето за въведена папка е празно. - -The corresponding folder will be considered as empty. -Съответната папка ще се счита празна. - -Exclude: -Изключи: - -One base folder of a folder pair is contained in the other one. -Една базова папка от двойка папки се съдържа в другата. - -The folder should be excluded from synchronization via filter. -Папката трябва да се изключи от синхронизация чрез филтър. - -Calculating sync directions... -Пресмята посоките на синхронизация... - -Out of memory. -Недостатъчна памет. - -Show in Explorer -Покажи в Експлорера - -Open with default application -Отвори с подразбираното приложение - -Browse directory -Преглед на директорията - -Database file %x is incompatible. -Базата данни %x е несъвместима. - -Initial synchronization: -Начална синхронизация: - -Database file %x does not yet exist. -Базата данни %x още не съществува. - -Database file is corrupted: -Базата данни е повредена: - -Loading file %x... -Зарежда файл %x... - -The database files do not yet contain information about the last synchronization. -Базите данни още не съдържат информация за последната синхронизация. - -Saving file %x... -Запазва файл %x... - -Searching for folder %x... -Търси папка %x... - -Timeout while searching for folder %x. -Изтекло време за търсене на папка %x. - -Cannot get process information. -Не може да получи информация за процеса. - -Waiting while directory is locked: -Изчаква, докато е заключена директорията: - -Lock owner: -Притежател на заключването: - -Detecting abandoned lock... -Открива изоставено заключване... - - -1 sec -%x sec - - -1 сек. -%x сек. - - -Item exists on left side only -Елементът съществува само отляво - -Item exists on right side only -Елементът съществува само отдясно - -Left side is newer -Лявата страна е по-нова - -Right side is newer -Дясната страна е по-нова - -Items have different content -Елементите имат различно съдержание - -Both sides are equal -Двете страни са еднакви - -Conflict/item cannot be categorized -Конфликт/Елементът не може да се категоризира - -Copy new item to left -Копирай новия елемент наляво - -Copy new item to right -Копирай новия елемент надясно - -Delete left item -Изтрий левия елемент - -Delete right item -Изтрий десния елемент - -Move file on left -Премести левия файл - -Move file on right -Премести десния файл - -Update left item -Актуализирай левия елемент - -Update right item -Актуализирай десния елемент - -Do nothing -Не прави нищо - -Update attributes on left -Актуализирай атрибутите на левия елемент - -Update attributes on right -Актуализирай атрибутите на десния елемент - -Error parsing file %x, row %y, column %z. -Грешка при анализ на файл %x, ред %y, колона %z. - -Services -Услуги - -Show All -Покажи всички - -Hide Others -Скрий другите - -Hide %x -Скрий %x - -Quit %x -Край на %x - -Cannot set directory locks for the following folders: -Не може да заключи директориите за следните папки: - -Errors: -Грешки: - -Warnings: -Предупреждения: - -Items processed: -Обработени елементи: - -Items remaining: -Оставащи елементи: - -Total time: -Общо време: - -Warning -Предупреждение - -Stopped -Спряно - -Cleaning up log files: -Почистване на log-файловете: - - -1 thread -%x threads - - -1 нишка -%x нишки - - -%x/sec -%x/сек. - -%x items -%x елемента - -Completed successfully -Завърши успешно - -Completed with warnings -Завърши с предупреждения - -Completed with errors -Завърши с грешки - -Cannot access the Volume Shadow Copy Service. -Не може да получи достъп до услуга Volume Shadow Copy. - -Please run the 64-bit version of FreeFileSync to create shadow copies on this system. -Моля, ползвайте 64-битова FreeFileSync-версия за създаване на shadow-копия на тази система. - -Volume name %x is not part of file path %y. -Името на тома %x не е част от пътя до файла %y. - -File time and size -Дата и размер на файла - -File content -Съдържание на файла - -File size -Размер на файла - -Two way -Двупосочно - -Mirror -Огледално - -Update -Актуализирай - -Custom -По избор - -Multiple... -Разни... - -Cannot write file attributes of %x. -Не може да запише файловите атрибути на %x. - -%x and %y have different content. -%x и %y имат различно съдържание. - -Data verification error: -Грешка при верификация на данните: - -Moving file %x to %y -Премества файл %x към %y - -Moving folder %x to %y -Премества папка %x към %y - -Moving symbolic link %x to %y -Премества символна връзка %x към %y - -Updating file %x -Актуализира файл %x - -Updating symbolic link %x -Актуализира символна връзка %x - -Verifying file %x -Верифицира файл %x - -Updating attributes of %x -Актуализира атрибутите на %x - -Source item %x not found -Изходен елемент %x не е намерен - -Parent folder %x is not existing. -Родителска папка %x не съществува. - -Cannot copy file %x to %y. -Не може да копира файл %x в %y. - -Creating a Volume Shadow Copy for %x... -Създава се Volume Shadow Copy за %x... - -Cannot find folder %x. -Не е намерена папка %x. - -Target folder %x is already existing, but was not available during folder comparison. -Целевата папка %x вече съществува, но не е била достъпна при сравняването на папки. - -Target folder input field must not be empty. -Полето за целева папка не бива да е празно. - -Source folder %x not found. -Изходната папка %x не е намерена. - -Please enter a target folder for versioning. -Моля, въведете целева папка за версии. - -The following items have unresolved conflicts and will not be synchronized: -Следните елементи имат нерешени конфликти и няма да бъдат синхронизирани: - -Folder pair: -Двойка папки: - -The following folders are significantly different. Please check that the correct folders are selected for synchronization. -Следните папки са съществено различни. Моля, проверете дали са избрани верни папки за синхронизация. - -Not enough free disk space available in: -Недостатъчно свободно дисково пространство в: - -Available: -Налично: - -Some files will be synchronized as part of multiple base folders. -Някои файлове ще бъдат синхронизирани като част от повече базови папки. - -To avoid conflicts, set up exclude filters so that each updated file is included by only one base folder. -За избягване на конфликти задайте изключващи филтри, така че всеки обновен файл да е включен само в една базова папка. - -Versioning folder: -Папка за версии: - -Base folder: -Базова папка: - -The versioning folder is contained in a base folder. -Папката за версии се съдържа в основната папка. - -Synchronizing folder pair: -Синхронизация на двойка папки: - -Generating database... -Създава база данни... - -Searching for old file versions: -Търси стари версии на файлове: - -Removing old file versions: -Премахва стари версии на файлове: - -Unable to create time stamp for versioning: -Не може да маркира времето на версиите: - -Drag && drop -Влачете и пуснете - -Select a folder -Изберете папка - -&New -&Нов - -&Open... -&Отвори... - -Save &as... -Запази &като... - -E&xit -И&зход - -&File -&Файл - -&View help -&Помощ - -&About -&Относно - -&Help -&Помощ - -Usage: -Употреба: - -Select folders to watch. -Изберете папки за следене. - -Enter a command line. -Въведете команден ред. - -Press 'Start'. -Натиснете 'Старт'. - -To get started just import a "ffs_batch" file. -За старт просто импортирайте файл "ffs_batch". - -Folders to watch: -Папки за следене: - -Add folder -Добавяне на папка - -Remove folder -Отнемане на папка - -Browse -Преглед - -Idle time (in seconds): -Време на изчакване (сек.): - -Idle time between last detected change and execution of command -Време на изчакване между последнaта открита промяна и изпълнение на командата - -Command line: -Команден ред: - -&Hide console window -&Скрий прозореца на конзолата - - -The command is triggered if: -- files or subfolders change -- new folders arrive (e.g. USB stick insert) - - -Командния ред се изпълнява, ако: -- се променят файлове или подпапки, -- се явят нови папки (напр. вкарана флашка). - - -Start -Старт - -About -Относно - -Build: %x -Версия: %x - -All files -Всички файлове - -Automated Synchronization -Автоматична синхронизация - -The %x protocol does not support directory monitoring: -Протокол %x не поддържа следене на директорията: - -Directory monitoring active -Следенето на директории е активирано - -Waiting until directory is available: -Изчаква достъп до директорията: - -&Configure -&Конфигурирай - -&Show error message -&Покажи съобщение за грешка - -&Quit -&Край - -&Retry -&Повтори - - -1 byte -%x bytes - - -1 байт -%x байта - - -%x MB -%x МБ - -%x KB -%x КБ - -%x GB -%x ГБ - -Loading... -Зареждане... - -Scanning... -Търси файлове... - -configuration file -конфигурационен файл - -System: Sleep -Система: Заспиване - -System: Shut down -Система: Изключване - -Nothing to synchronize -Нищо за синхронизиране - -Executing command: -Изпълнява команда: - -You can switch to FreeFileSync's main window to resolve this issue. -Може да идете в главния прозорец на FreeFileSync, за да решите проблема. - -&Don't show this warning again -&Не показвай вече това предупреждение - -&Ignore -&Игнорирай - -&Switch -&Превключи - -Switching to FreeFileSync's main window -Иди в главния прозорец на FreeFileSync - -Automatic retry -Автоматично повтаряне - -Ignore &all -Игнорирай &всички - -Retrying operation... -Повтаря операцията... - -Serious Error -Сериозна грешка - -Last session -Последна сесия - -Today -Днес - - -1 day -%x days - - -1 ден -%x дена - - -Name -Име - -Last sync -Последна синхронизация - -Log -Протокол - -Folder -Папка - -Symlink -Символна връзка - -Full path -Пълен път - -Relative path -Относителен път - -Item name -Име на елемент - -Size -Размер - -Date -Дата - -Extension -Разширение - -Category -Категория - -Action -Действие - -Local comparison settings -Локални настройки за сравняване - -Local synchronization settings -Локални настройки за синхронизация - -Local filter -Локален филтър - -Active -Активен - -None -Няма - -Remove local settings -Премахни локалните настройки - -Clear local filter -Изчисти локалния филтър - -Copy -Копирай - -Paste -Вмъкни - -The selected folder %x cannot be used with FreeFileSync. -Избраната папка %x не може да се ползва с FreeFileSync. - -Please select a folder on a local file system, network or an MTP device. -Моля, изберете папка от локална файлова система, мрежа или MTP-устройство. - -Defined by context of use -Определя се от контекста на употреба - -Requires FreeFileSync Donation Edition -Изисква FreeFileSync Дарителско Издание - -&Save -&Запази - -Save as &batch job... -Запази &като пакетна задача... - -Show &log -Покажи &log - -Start &comparison -Почни &сравняване - -C&omparison settings -Н&астройки на сравняване - -&Filter settings -Настройки на &филтъра - -S&ynchronization settings -Настройки на с&инхронизация - -Start &synchronization -Почни &синхронизация - -&Actions -&Действия - -&Preferences -&Предпочитания - -&Language -&Език - -&Find... -&Намери... - -&Export file list... -&Експортирай файловия списък... - -&Reset layout -&Инициализирай изгледа - -&Tools -&Инструменти - -&Check for updates now -&Провери за обновления сега - -Check &automatically once a week -Проверявай автоматично &ежеседмично - -Cancel -Отказ - -Compare -Сравни - -Synchronize -Синхронизирай - -Add folder pair -Добави двойка папки - -Remove folder pair -Отнеми двойка папки - -Access online storage -Достъп до онлайн-съхранение - -Close search bar -Затвори полето за търсене - -Find: -Търси: - -Match case -Големи/малки букви - -Processed: -Обработени: - -Remaining: -Оставащи: - -New -Нова - -Open... -Отвори... - -Save -Запази - -Save as... -Запази като... - -View type: -Тип изглед: - -Select view: -Изберете изглед: - -Save as default -Запази като подразбрано - -Statistics: -Статистика: - -Number of files and folders that will be deleted -Брой файлове и папки, които ще бъдат изтрити - -Number of files that will be updated -Брой файлове, които ще бъдат актуализирани - -Number of files and folders that will be created -Брой файлове и папки, които ще бъдат създадени - -Total bytes to copy -Общо байтове за копиране - -Arrange folder pair -Подреди двойката папки - -Main settings: -Главни настройки: - -Use local settings: -Ползвай локални настройки: - -Select a variant: -Избор на вариант: - -Include &symbolic links: -Включи &символни връзки: - -&Follow -&Следвай - -&Direct -&Директно - -More information -Още информация - -&Ignore time shift [hh:mm] -&Игнорирай времевото отместване [чч:мм] - -List of file time offsets to ignore -Списък на файлови времеви отмествания за игнориране - -Example: -Пример: - -Handle daylight saving time -Отчети лятното време - -Ignore errors -Игнорирай грешките - -Retry count: -Брой повторения: - -Delay (in seconds): -Задръжка (сек.): - -Performance improvements: -Подобряване на производителността: - -Parallel file operations: -Паралелни файлови операции: - -How to get best performance? -Как да получа най-добра производителност? - -Local settings: -Локални настройки: - -Include: -Включи: - -Show examples -Примери - -Select filter rules to exclude certain files from synchronization. Enter file paths relative to their corresponding folder pair. -Изберете филтърни правила за изключване някои файлове от синхронизация. Въведете относителни файлови пътища към съответните двойки папки. - -File size: -Размер на файла: - -Minimum: -Минимум: - -Maximum: -Максимум: - -Time span: -Интервал време: - -C&lear -И&зчисти - -Detect moved files -Открий преместени файлове - - -- Not supported by all file systems -- Requires and creates database files -- Detection not available for first sync - - -- Не се поддържа от всички файлови системи, -- Изисква и създава файлове с бази данни, -- Няма откриване при първа синхронизация. - - -Delete files: -Изтрий файлове: - -&Recycle bin -&Кошче - -&Permanent -&Необратимо - -&Versioning -&Версии - -Move files to a user-defined folder -Премести файловете в зададена потребителска папка - -Naming convention: -Конвенция за именуване: - -Limit file versions: -Ограничи файловите версии: - -Last x days: -Последните x дни: - -&Override default log path: -&Замени подразбирания log-път: - -Run a command: -Изпълни команда: - -OK -ОК - -Connection type: -Тип на връзката: - -Connected user accounts: -Свързани потребителски акаунти: - -&Add connection -&Добави връзка - -&Disconnect -&Прекъсни - -Selected user account: -Избран потребителски акаунт: - -Server name or IP address: -Име на сървъра или IP-адрес: - -Port: -Порт: - -Encryption: -Криптиране: - -&Disabled -&Неактивно - -&Explicit SSL/TLS -&Експлицитен SSL/TLS - -Authentication: -Идентификация: - -&Password -&Парола - -&Key file -&Ключов файл - -&SSH agent -&SSH агент - -User name: -Потребителско име: - -Private key file: -Личен ключов файл: - -&Show password -&Покажи паролата - -Directory on server: -Директория на сървъра: - -Access timeout (in seconds): -Време за достъп (в секунди): - -SFTP channels per connection: -SFTP-канали на връзка: - -Detect server limit -Открий лимита на сървъра - -Select Folder -Избери папка - -Variant: -Вариант: - -&Don't show this dialog again -&Не показвай повече този диалог - -Bytes: -Байтове: - -Items: -Елементи: - -Synchronizing... -Синхронизация... - -Minimize to notification area -Минимизирай в известяващото поле - -Bytes -Байтове - -Items -Елементи - -When finished: -След завършване: - -Auto-close -Затвори автоматично - -Close -Затвори - -&Pause -&Пауза - -Stop -Стоп - -Create a batch file for unattended synchronization. To start, double-click this file or schedule in a task planner: %x -Създай пакетен файл за автоматична синхронизация. За старт щракнете двукратно върху този файл или задайте планова задача: %x - -Progress dialog: -Диалог за прогреса: - -Run minimized -Изпълни минимизирано - -Show pop-up on errors or warnings -Питай при грешки или предупреждения - -&Cancel -&Отказ - -Stop synchronization at first error -Спри синхронизацията при първа грешка - -How can I schedule a batch job? -Как да планирам пакетна задача? - -&Keep relative paths -&Запази относителните пътища - -&Overwrite existing files -&Презапиши съществуващите файлове - -The following settings are used for all synchronization jobs. -Всички задачи за синхронизация ползват следните настройки. - - -Copy to a temporary file (*.ffs_tmp) before overwriting target. -This guarantees a consistent state even in case of a serious error. - - -Копирай във временен файл (*.ffs_tmp) преди презапис на целевия файл. -Това гарантира цялостност на файла дори в случай на сериозна грешка. - - -recommended -препоръчително - -Copy shared or locked files using the Volume Shadow Copy Service. -Копирай споделени или заключени файлове с услугата Volume Shadow Copy. - -requires administrator rights -изисква административни права - -Transfer file and folder permissions. -Прехвърли правата за достъп на файла и папката. - -Show all permanently hidden dialogs and warning messages again -Покажи всички постоянно скрити диалози и предупреждения отново - -Default log path: -Подразбиран log-път: - -&Delete logs after x days: -&Изтрий протоколите след x дни: - -Notification sounds: -Известяващи звуци: - -Synchronization finished: -Синхронизацията завърши: - -Customize context menu: -Настрой контекстното меню: - -Description -Описание - -&Default -&По подразбиране - -Feedback and suggestions are welcome: -Отзиви и предложения са добре дошли: - -Home page -Домашна страница - -FreeFileSync Forum -FreeFileSync-Форум - -Email -Ел.поща - -If you like FreeFileSync: -Ако харесвате FreeFileSync: - -Support with a donation -Подкрепете с дарение - -The auto updater was disabled by the administrator. -Автоматичното обновяване бе деактивирано от администратора. - -Donation details -Подробности за дарение - -Source code written in C++ using: -Изходния код е написан на C++ със: - -Published under the GNU General Public License: -Публикуван под GNU General Public License: - -Many thanks for localization: -Благодарност за локализацията: - -Activate the FreeFileSync Donation Edition by one of the following methods: -Активирайте дарителско издание на FreeFileSync по един от следните методи: - -Activate via internet now: -Активирайте по Интернет сега: - -Activate online -Активирайте онлайн - -Retrieve an offline activation key from the following URL: -Вземете активационен код за офлайн от следния адрес: - -&Copy to clipboard -&Копирайте в клипборда - -Enter activation key: -Въведете активационен код: - -Activate offline -Активирайте офлайн - -Highlight configurations that have not been run for more than the following number of days: -Маркирай конфигурациите, които не са изпълнявани в течение на повече от следния брой дни: - -FreeFileSync requires access rights to avoid "Operation not permitted" errors when synchronizing your data (e.g. Mail, Messages, Calendars). -FreeFileSync изисква права за достъп, за да избегне грешки "Операцията не е разрешена", когато синхронизира данните Ви (напр. поща, съобщения, календари). - -Locate the FreeFileSync app -Намерете приложение FreeFileSync - -Open Security && Privacy -Отворете СистемниНастройки/Сигурност - -Click the lock to allow changes. -Щракнете върху Заключване, за да разрешите промени. - -Drag FreeFileSync into the panel. -Довлечете FreeFileSync в панела. - -Synchronization Settings -Настройки на Синхронизация - -Access Online Storage -Достъп до Онлайн-Съхранение - -Save as a Batch Job -Запази като Пакетна Задача - -Delete Items -Изтрий Елементите - -Copy Items -Копирай Елементите - -Options -Опции - -Select Time Span -Избор на Интервал Време - -Highlight Configurations -Маркирай Конфигурациите - -Grant Full Disk Access -Осигурете пълен достъп до диска - -Info -Информация - -No log entries -Няма log-записи - -Select all -Маркирай всичко - -&Options -&Опции - -Main Bar -Главен панел - -Folder Pairs -Двойки папки - -Find -Намери - -View Settings -Настройки на изгледа - -Configuration -Конфигурация - -Overview -Преглед - -Swap sides -Размени страните - -Show "%x" -Покажи "%x" - -&Show details -&Покажи подробно - -FreeFileSync %x is available! -FreeFileSync %x е наличен! - -Local path not available for %x. -Няма наличен локален път за %x. - -Confirm -Потвърди - - -Do you really want to execute the command %y for one item? -Do you really want to execute the command %y for %x items? - - -Трябва ли да бъде изпълнена командата %y за един елемент? -Трябва ли да бъде изпълнена командата %y за %x елемента? - - -&Execute -&Изпълни - -Set direction: -Задай посока: - -multiple selection -групово маркиране - -&Include via filter: -&Включи чрез филтър: - -&Exclude via filter: -&Изключи чрез филтър: - -Include temporarily -Включи временно - -Exclude temporarily -Изключи временно - -&Synchronize selection -&Синхронизирай избраното - -&Copy to... -&Копирай към... - -&Delete -&Изтрий - -Show icons: -Покажи иконите: - -Small -Малки - -Medium -Средни - -Large -Големи - -Select time span... -Избор на времеви интервал... - -Donation Edition -Дарителско Издание - -Folder Comparison and Synchronization -Сравняване и синхронизация на папки - -Configuration saved -Конфигурацията е запазена - -FreeFileSync batch -FreeFileSync-пакет - -Do you want to save changes to %x? -Ще запазите ли промените на %x? - -Never save &changes -Не запазвай &промените никога - -Do&n't save -&Не запазвай - -%x cannot be renamed. -%x не може да се преименува. - -New name: -Ново име: - -Rename Configuration -Преименувай конфигурацията - -Configuration name must not be empty. -Името на конфигурацията не бива да е празно. - -&Rename... -&Преименувай... - -Hide configuration -Скрий конфигурацията - -Highlight... -Маркирай... - -Clear filter -Изчисти филтъра - -Show files that exist on left side only -Покажи файловете, съществуващи само отляво - -Show files that exist on right side only -Покажи файловете, съществуващи само отдясно - -Show files that are newer on left -Покажи файловете от двете страни; файлът отляво е по-нов - -Show files that are newer on right -Покажи файловете от двете страни; файлът отдясно е по-нов - -Show files that are equal -Покажи еднаквите файлове - -Show files that are different -Покажи нееднаквите файлове - -Show conflicts -Покажи конфликтите - -Show files that will be created on the left side -Покажи файловете, които ще бъдат създадени отляво - -Show files that will be created on the right side -Покажи файловете, които ще бъдат създадени отдясно - -Show files that will be deleted on the left side -Покажи файловете, които ще бъдат изтрити отляво - -Show files that will be deleted on the right side -Покажи файловете, които ще бъдат изтрити отдясно - -Show files that will be updated on the left side -Покажи файловете, които ще бъдат обновени отляво - -Show files that will be updated on the right side -Покажи файловете, които ще бъдат обновени отдясно - -Show files that won't be copied -Покажи файловете, които няма да бъдат копирани - -Show filtered or temporarily excluded files -Покажи филтрираните или временно изключени файлове - -Filter -Филтър - -All files are in sync -Всички файлове са синхронизирани - - -1 directory -%x directories - - -1 директория -%x директории - - - -1 file -%x files - - -1 файл -%x файла - - - -Showing %y of 1 row -Showing %y of %x rows - - -Показани: %y от 1 ред -Показани: %y от %x реда - - -Cannot find %x -Не е открит %x - -Move up -Премести нагоре - -Move down -Премести надолу - -Comma-separated values -Стойности, отделени с запетая - -File list exported -Файловия списък е експортиран - -Searching for program updates... -Търси обновления на програмата... - -Paused -Пауза - -Stop requested... -Заявка за стоп... - -Initializing... -Инициализация... - -Comparing content... -Сравнява съдържанието на файлове... - -&Continue -&Продължи - -Progress -Прогрес - -Thank you, %x, for your donation and support! -%x, благодаря за Вашето дарение и подкрепа! - -Connections -Свързвания - -Recommended range: -Препоръчителен обхват: - -Do you really want to disconnect from user account %x? -Искате ли да прекъснете връзката на потребителски акаунт %x? - -Password: -Парола: - -Key passphrase: -Фраза за достъп: - -Please enter a file path. -Моля, въведете файлов път. - - -Copy the following item to another folder? -Copy the following %x items to another folder? - - -Копирай следния елемент в друга папка? -Копирай следните %x елемента в друга папка? - - -Please enter a target folder. -Моля, въведете целева папка. - - -Do you really want to move the following item to the recycle bin? -Do you really want to move the following %x items to the recycle bin? - - -Искате ли следния елемент да бъде преместен в кошчето? -Искате ли следните %x елемента да бъдат преместени в кошчето? - - -Move -Премести - - -Do you really want to delete the following item? -Do you really want to delete the following %x items? - - -Искате ли следния елемент да бъде изтрит? -Искате ли следните %x елемента да бъдат изтрити? - - -Start to synchronize the selection? -Почни синхронизиране на избраното? - -Start synchronization now? -Почни синхронизиране сега? - -Copy DACL, SACL, Owner, Group -Копирай DACL, SACL, Притежател, Група - -Integrate external applications into context menu. The following macros are available: -Включи външни приложения в контекстното меню. Налични са следните макроси: - -Full file or folder path -Пълен път до файла или папката - -Parent folder path -Път до родителската папка - -Temporary local copy for SFTP and MTP storage -Временно локално копие за SFTP- и MTP-съхранение - -Parameters for opposite side -Параметри за срещуположната страна - -Show hidden dialogs again -Покажи скритите диалози отново - -All dialogs shown -Всички диалози са показани - -Downloading update... -Сваляне на актуализация... - -Identify equal files by comparing modification time and size. -Определяне на еднакви файлове, сравнявайки времето на промяна и размера. - -Identify equal files by comparing the file content. -Определяне на еднакви файлове, сравнявайки файловото съдържание. - -Identify equal files by comparing their file size. -Определяне на еднакви файлове, сравнявайки файловия размер. - -Identify and propagate changes on both sides. Deletions, moves and conflicts are detected automatically using a database. -Откриване и разпростиране на промените в двете страни. Изтривания, премествания и конфликти се откриват автоматично с база данни. - -Create a mirror backup of the left folder by adapting the right folder to match. -Създаване на огледално копие на лявата папка, привеждайки дясната папка в съответствие. - -Copy new and updated files to the right folder. -Копиране на нови и актуализирани файлове към дясната папка. - -Configure your own synchronization rules. -Създаване на собствени правила за синхронизация. - -Comparison -Сравняване - -Synchronization -Синхронизиране - -This week -Тази седмица - -This month -Този месец - -This year -Тази година - -Byte -Байта - -KB -КБ - -MB -МБ - -Retain deleted and overwritten files in the recycle bin -Задръж изтритите и презаписани файлове в кошчето - -Delete and overwrite files permanently -Изтрий и презапиши файловете - -Replace -Замени - -Move files and replace if existing -Премести файловете и замени съществуващите - -Time stamp -Отбележи времето - -Move files into a time-stamped subfolder -Премести файловете в маркирана по време подпапка - -File -Файл - -Append a time stamp to each file name -Добави времето към името на всеки файл - -On completion: -След завършване: - -On errors: -При грешки: - -On success: -При успех: - -Main config -Главна конфигурация - -empty -празно - -Leave as unresolved conflict -Остави като нерешен конфликт - -YYYY-MM-DD hhmmss -ГГГГ-ММ-ДД ччммсс - -Minimum version count must be smaller than maximum count. -Минималния брой версии трябва да е по-малък от максималния. - -&Restore -&Възстановяване - -Files -Файлове - -Percentage -Процент - -Failed to retrieve update information. -Не е получена информация за актуализации. - -Automatic updates: -Автоматично актуализиране: - -Check for Program Updates -Проверка за обновления на програмата - -Auto-update now or download manually from the FreeFileSync home page? -Автоматично обновяване сега или ръчно сваляне от домашната страница на FreeFileSync? - -&Auto-update -&Автоматично - -&Home page -&Домашна страница - -Download now? -Свали сега? - -&Download -&Сваляне - -FreeFileSync is up to date. -FreeFileSync вече е актуална. - -Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now? -Не открива онлайн номера на текущата FreeFileSync-версия. Изглежда има по-нова версия. Ще опитате ли ръчно? - -&Check -&Опитай - -Consistency check failed for %x. -Неуспешна проверка за съвместимост на %x. - -Installation was registered on a different operating system. -Инсталацията е регистрирана на различна операционна система. - -Failed to activate FreeFileSync Donation Edition. -Неуспешно активиране на FreeFileSync Дарителско Издание. - -Incorrect activation key. -Невалиден активиращ код. - -Unable to register to receive system messages. -Не се регистрира за получаване на системни съобщения. - -The %x installation option is only available in the FreeFileSync Donation Edition. -Опцията %x инсталиране е възможна само за FreeFileSync Дарителско Издание. - -Cannot find system function %x. -Не открива системна функция %x. - -Unable to register device notifications for %x. -Не регистрира съобщенията на устройство %x. - -The file is locked by another process: -Файлът е заключен от друг процес: - -Failed to determine file permission support for folder %x. -Не може да определи поддръжката на права за достъп за папка %x. - -Cannot read security context of %x. -Не може да прочете контекста за сигурност на %x. - -Cannot write security context of %x. -Не може да запише контекста за сигурност на %x. - -Cannot read permissions of %x. -Не може да прочете правата за достъп на %x. - -Cannot copy permissions from %x to %y. -Не може да копира правата за достъп от %x в %y. - -%x is not a regular directory name. -%x не е регулярно име на директория. - -Cannot copy attributes from %x to %y. -Не може да копира атрибутите от %x в %y. - -%x TB -%x ТБ - -%x PB -%x ПБ - - -1 min -%x min - - -1 минута -%x минути - - - -1 hour -%x hours - - -1 час -%x часа - - -Cannot set privilege %x. -Не може да зададе привилегията %x. - -Unable to suspend system sleep mode. -Не може да прекрати режима заспиване на системата. - -Cannot change process I/O priorities. -Не може да промени I/O-приоритетите на процеса. - -Checking recycle bin failed for folder %x. -Неуспешна проверка на кошчето за папка %x. - -Unable to shut down the system. -Не може да изключи системата. - -Prepare installation -Подготовка за инсталиране - -Choose which components you want to install. -Изберете желаните компоненти за инсталиране. - -Select installation type: -Изберете типа инсталация: - -Local -Локална - -Portable -Преносима - -Save settings in %x -Запази настройките в %x - -Register FreeFileSync file extensions -Регистрирай файлови разширения за FreeFileSync - -Create Explorer context menu entries -Създай полета в контекстното меню на Explorer - -Save settings in installation directory -Запази настройките в инсталационната директория - -Do not write to Registry -Не записвай нищо в Регистъра - -Just copy the files -Само копирай файловете - -Choose a directory for installation: -Изберете директория за инсталиране: - -Create shortcuts: -Създай кратки пътища: - -Desktop -На десктопа - -Start Menu -Стартово Меню - -Send To -Изпрати До - -Registering FreeFileSync file extensions -Регистриране на файлови разширения за FreeFileSync - -Unregistering FreeFileSync file extensions -Де-регистриране на файлови разширения за FreeFileSync - -FreeFileSync Configuration -Конфигурация на FreeFileSync - -FreeFileSync Batch File -Пакетен Файл на FreeFileSync - -FreeFileSync Synchronization Database -Синхронизираща База Данни на FreeFileSync - -RealTimeSync Configuration -Конфигурация на RealTimeSync - -Edit with FreeFileSync -Редактиране с FreeFileSync - -Instead of an ad, here's an animal. -Вместо реклама, ето една животинка. - -The FreeFileSync portable version cannot install into a subfolder of %x. -Преносимата версия на FreeFileSync не може да се инсталира в подпапка на %x. - -Please choose the local installation type or select a different folder for installation. -Моля, изберете локален тип инсталация или пък друга папка за инсталация. - -Get the Donation Edition with bonus features and help keep FreeFileSync ad-free. -Вземете Дарителско Издание с бонуси и помогнете FreeFileSync да остане свободна. - diff --git a/FreeFileSync/Build/Resources/Languages/chinese_simple.lng b/FreeFileSync/Build/Resources/Languages/chinese_simple.lng deleted file mode 100755 index 625d4154..00000000 --- a/FreeFileSync/Build/Resources/Languages/chinese_simple.lng +++ /dev/null @@ -1,2114 +0,0 @@ -
- 简体中文 - CyberCowBoy - zh_CN - flag_china.png - 1 - 0 -
- -Cannot read file %x. -无法读取文件 %x. - - -Unexpected size of data stream. -Expected: %x bytes -Actual: %y bytes - - -意外大小的数据流. -预期: %x 字节 -实际: %y 字节 - - -Cannot write file %x. -无法写入文件 %x. - -Cannot write permissions of %x. -无法写入 %x 的权限. - -Operation not supported between different devices. -不同设备之间不支持此操作. - -Cannot delete file %x. -无法删除文件 %x. - -Cannot delete symbolic link %x. -无法删除符号链接 %x. - -Cannot delete directory %x. -无法删除目录 %x. - -Cannot move file %x to %y. -无法移动文件 %x 到 %y. - -Cannot copy symbolic link %x to %y. -无法复制符号连接 %x 到 %y. - -Error Code %x -错误代码 %x - -Cannot read directory %x. -无法读取目录 %x. - -Cannot write modification time of %x. -无法写入 %x 的最后修改时间. - -Cannot read file attributes of %x. -无法读取 %x 的文件属性. - -Cannot create directory %x. -无法创建目录 %x. - -Cannot determine final path for %x. -无法确定 %x 的最终路径. - -Operation not supported by device. -设备不支持此操作. - -Cannot resolve symbolic link %x. -无法解决符号连接 %x. - -Unable to move %x to the recycle bin. -无法将 %x 移动到回收站. - -Authentication completed. -验证完成. - -You may close this page now and continue with FreeFileSync. -你可以现在关闭本页面并继续使用 FreeFileSync. - -Authentication failed. -验证失败. - -Unable to connect to %x. -无法连接到 %x. - -Cannot find %x. -无法找到 %x. - -The name %x is used by more than one item in the folder. -%x 此名称在文件夹中被一个以上的项目所使用. - -Please authorize access to user account %x. -请为用户账户 %x 授权访问. - -Cannot open file %x. -无法打开文件 %x. - -The name %x is already used by another item. -名称 %x 已被其他项目使用. - -Cannot determine free disk space for %x. -无法确定 %x 上的可用磁盘空间. - -Unable to disconnect from %x. -无法从 %x 断开连接. - -Unable to access %x. -无法访问 %x. - -Failed to get information about server %x. -获取关于服务器 %x 的信息时失败. - -Cannot monitor directory %x. -无法监视目录 %x. - -Cannot find device %x. -无法找到设备 %x. - -Cannot open directory %x. -无法打开目录 %x. - -Unsupported item type. -不支持的项目类型. - -Incorrect command line: -不正确的命令行: - -The server does not support authentication via %x. -此服务器并不支持通过 %x 进行认证. - -Required: -必需: - - -Operation timed out after 1 second. -Operation timed out after %x seconds. - - -%x 秒后操作超时. - - - -Cannot wait on more than 1 connection at a time. -Cannot wait on more than %x connections at a time. - - -一次无法等待多于 %x 个的连接. - - -Active connections: %x -活动的连接: %x - -Failed to open SFTP channel number %x. -打开SFTP通道号 %x 时失败. - -Both sides have changed since last synchronization. -在最后的同步之后两边均已改变. - -Cannot determine sync-direction: -不能检测同步方向: - -No change since last synchronization. -自从最后一次同步以来没有变动. - -The database entry is not in sync considering current settings. -考虑到当前设置,数据库入口不同步. - -Setting default synchronization directions: Old files will be overwritten with newer files. -设置默认的同步方向: 旧文件会被新文件覆盖. - -Creating file %x -正在创建文件 %x - -Creating folder %x -正创建文件夹 %x - -Creating symbolic link %x -正在创建符号连接 %x - -Moving file %x to the recycle bin -移动文件 %x 到回收站 - -Moving folder %x to the recycle bin -移动文件夹 %x 到回收站 - -Moving symbolic link %x to the recycle bin -移动符号连接 %x 到回收站 - -Deleting file %x -正删除文件 %x - -Deleting folder %x -正删除文件夹 %x - -Deleting symbolic link %x -正在删除符号连接 %x - -Checking recycle bin availability for folder %x... -正在为文件夹 %x 检测回收站可用性... - -The recycle bin is not supported by the following folders. Deleted or overwritten files will not be able to be restored: -如下文件夹不支持回收站, 已删除或覆盖的文件将不可恢复: - -An exception occurred -发生异常 - -A left and a right directory path are expected after %x. -在 %x 之后预期的是一个左边 和一个右边的目录路径. - -Syntax error -语法错误 - -Cannot find file %x. -无法找到文件 %x. - -Error -错误 - -File %x does not contain a valid configuration. -文件 %x 并未包含合法的配置. - -The config file must not contain settings at directory pair level when directories are set via command line. -当目录通过命令行设定时, 配置文件必须不包含目录对级别的设置. - -Directories cannot be set for more than one configuration file. -无法为多于一个配置文件设置目录. - -Command line -命令行 - -Syntax: -语法: - -config files: -配置文件: - -directory -目录 - -global config file: -全局配置文件: - -Any number of FreeFileSync "ffs_gui" and/or "ffs_batch" configuration files. -任意数目的 FreeFileSync "ffs_gui" 和/或 "ffs_batch" 配置文件. - -Any number of alternative directory pairs for at most one config file. -任意数目的替代目录对的最多一个配置文件. - -Open the selected configuration for editing only, without executing it. -打开已选定的配置文件仅进行编辑而不执行. - -Path to an alternate GlobalSettings.xml file. -指向一个替代的 GlobalSettings.xml 文件的路径. - -Installation files are corrupted. Please reinstall FreeFileSync. -安装文件已损坏, 请重新安装FreeFileSync. - -Cannot find the following folders: -无法找到如下文件夹: - -The following folders do not yet exist: -如下文件夹还未存在: - -The folders are created automatically when needed. -当有需要时, 此文件夹会自动创建. - -The following folder paths differ in case. Please use a single form in order to avoid duplicate accesses. -以下文件夹路径的大小写不同. 请使用单一的表单以避免重复访问. - -Scanning: -扫描中: - -Comparison finished: -比较已完成: - - -1 item found -%x items found - - -找到 %x 个项目 - - -Time elapsed: -已用时间: - -File %x has an invalid date. -文件 %x 的日期非法. - -Date: -日期: - -Files have the same date but a different size. -文件有相同的日期但大小不同. - -Size: -大小: - -Content comparison was skipped for excluded files. -对于已排除的文件跳过内容比较. - -Items differ in attributes only -项目仅是文件属性不同 - -Resolving symbolic link %x -正在解决符号连接 %x - -Comparing content of files %x -正在比较文件 %x 的内容 - -Generating file list... -生成文件列表... - -Fail-safe file copy -无风险的文件复制 - -Enabled -启用 - -Disabled -禁用 - -Copy locked files -复制被锁定的文件 - -Copy file access permissions -复制文件访问权限 - -File time tolerance -文件时间容差 - -Run with background priority -以后台优先级运行 - -Lock directories during sync -同步期间锁定目录 - -Verify copied files -校验已复制文件 - -Using non-default global settings: -使用非默认全局设置: - -A folder input field is empty. -有一个文件夹输入框为空. - -The corresponding folder will be considered as empty. -相应的文件夹将被视为空. - -Exclude: -排除: - -One base folder of a folder pair is contained in the other one. -文件夹对中的一个基础文件夹 被另一个所包含. - -The folder should be excluded from synchronization via filter. -此文件夹须使用过滤器从同步中排除. - -Calculating sync directions... -正在计算同步方向... - -Out of memory. -内存不足. - -Show in Explorer -在Explorer中显示 - -Open with default application -用默认应用软件打开 - -Browse directory -浏览目录 - -Database file %x is incompatible. -数据库文件 %x 不兼容. - -Initial synchronization: -初始化同步: - -Database file %x does not yet exist. -数据库文件 %x 还未存在. - -Database file is corrupted: -数据库文件已损坏: - -Loading file %x... -正在加载文件 %x... - -The database files do not yet contain information about the last synchronization. -此数据库文件并未包含 有关最后同步的信息. - -Saving file %x... -正在保存文件 %x... - -Searching for folder %x... -正在搜索文件夹 %x... - -Timeout while searching for folder %x. -搜索文件夹 %x 超时. - -Cannot get process information. -无法取得进程信息. - -Waiting while directory is locked: -正在等待因目录被锁定: - -Lock owner: -锁定的所有者: - -Detecting abandoned lock... -正在检测被遗弃的锁定... - - -1 sec -%x sec - - -%x 秒 - - -Item exists on left side only -项目仅存在于左侧 - -Item exists on right side only -项目仅存在于右侧 - -Left side is newer -左侧较新 - -Right side is newer -右侧较新 - -Items have different content -项目有不同的内容 - -Both sides are equal -两侧相等 - -Conflict/item cannot be categorized -冲突/项目未能被分类 - -Copy new item to left -复制新项目到左侧 - -Copy new item to right -复制新项目到右侧 - -Delete left item -删除左侧项目 - -Delete right item -删除右侧项目 - -Move file on left -移动左侧的文件 - -Move file on right -移动右侧的文件 - -Update left item -更新左侧项目 - -Update right item -更新右侧项目 - -Do nothing -保持不动 - -Update attributes on left -更新左侧的文件属性 - -Update attributes on right -更新右侧的文件属性 - -Error parsing file %x, row %y, column %z. -当分析文件 %x , 行 %y, 列 %z 时出错. - -Services -服务 - -Show All -显示所有 - -Hide Others -隐藏其他 - -Hide %x -隐藏 %x - -Quit %x -退出 %x - -Cannot set directory locks for the following folders: -无法为如下文件夹设置 目录锁定: - -Errors: -错误: - -Warnings: -警告: - -Items processed: -已处理的项目: - -Items remaining: -剩余的项目: - -Total time: -总共时间: - -Warning -警告 - -Stopped -已停止 - -Cleaning up log files: -正在清理日志文件: - - -1 thread -%x threads - - -%x 线程 - - -%x/sec -%x/秒 - -%x items -%x 个项目 - -Completed successfully -成功完成 - -Completed with warnings -已完成但有警告 - -Completed with errors -已完成但有错误 - -Cannot access the Volume Shadow Copy Service. -无法访问卷影复制服务. - -Please run the 64-bit version of FreeFileSync to create shadow copies on this system. -请运行 FreeFileSync 的64位版本来在此系统上创建卷影. - -Volume name %x is not part of file path %y. -卷名 %x 不是文件路径 %y 的一部分. - -File time and size -文件时间和大小 - -File content -文件内容 - -File size -文件大小 - -Two way -双向 - -Mirror -镜像 - -Update -更新 - -Custom -自定义 - -Multiple... -并联... - -Cannot write file attributes of %x. -无法写入 %x 的文件属性. - -%x and %y have different content. -%x 和 %y 有着不同的内容. - -Data verification error: -数据校验出错: - -Moving file %x to %y -正在移动文件 %x 到 %y - -Moving folder %x to %y -正在移动文件夹 %x 到 %y - -Moving symbolic link %x to %y -正在移动符号连接 %x 到 %y - -Updating file %x -正在更新文件 %x - -Updating symbolic link %x -正在更新符号连接 %x - -Verifying file %x -正在校验文件 %x - -Updating attributes of %x -正在更新 %x 的属性 - -Source item %x not found -来源项目 %x 未找到 - -Parent folder %x is not existing. -上级文件夹 %x 不存在. - -Cannot copy file %x to %y. -无法复制文件 %x 到 %y. - -Creating a Volume Shadow Copy for %x... -正在为 %x 创建一个卷影副本... - -Cannot find folder %x. -无法找到文件夹 %x. - -Target folder %x is already existing, but was not available during folder comparison. -目标文件夹 %x 已经存在, 但比较期间不可用. - -Target folder input field must not be empty. -目标文件夹输入框必须不为空. - -Source folder %x not found. -无法找到源文件夹 %x. - -Please enter a target folder for versioning. -请输入一个用于保存历史版本的目标文件夹. - -The following items have unresolved conflicts and will not be synchronized: -如下项目有无法解决的冲突并将不会被同步: - -Folder pair: -文件夹对: - -The following folders are significantly different. Please check that the correct folders are selected for synchronization. -如下的文件夹有显著不同. 请检查是否选择了正确 的文件夹来进行同步. - -Not enough free disk space available in: -没有足够的可用磁盘空间: - -Available: -可用: - -Some files will be synchronized as part of multiple base folders. -某些文件将作为多个基础文件夹 的一部分被同步. - -To avoid conflicts, set up exclude filters so that each updated file is included by only one base folder. -为避免冲突, 请设置排除过滤器, 以便每个已更新的文件只被一个基础文件夹所包含. - -Versioning folder: -历史版本文件夹: - -Base folder: -基础文件夹: - -The versioning folder is contained in a base folder. -历史版本文件夹被包含 在一个基础文件夹中. - -Synchronizing folder pair: -正在同步成对的文件夹: - -Generating database... -正在生成数据库... - -Searching for old file versions: -正在搜索旧的文件版本: - -Removing old file versions: -正在移除旧的文件版本: - -Unable to create time stamp for versioning: -无法为历史版本创建时间戳: - -Drag && drop -拖放 - -Select a folder -选择一个文件夹 - -&New -新建(&N) - -&Open... -打开(&O)... - -Save &as... -另存为(&A)... - -E&xit -退出(&X) - -&File -文件(&F) - -&View help -查看帮助(&V) - -&About -关于(&A) - -&Help -帮助(&H) - -Usage: -用法: - -Select folders to watch. -选择要监视的文件夹. - -Enter a command line. -输入一个命令行. - -Press 'Start'. -点击'开始'. - -To get started just import a "ffs_batch" file. -要开始只需导入一个 "ffs_batch"文件. - -Folders to watch: -要监视的文件夹: - -Add folder -添加文件夹 - -Remove folder -移除文件夹 - -Browse -浏览 - -Idle time (in seconds): -空闲时间(秒): - -Idle time between last detected change and execution of command -最后检测到改变和 命令执行之间的空闲时间 - -Command line: -命令行: - -&Hide console window -隐藏控制台窗口(&H) - - -The command is triggered if: -- files or subfolders change -- new folders arrive (e.g. USB stick insert) - - -命令将被触发如果: -- 文件或子文件夹改变 -- 新文件夹到达(例如U盘插入) - - -Start -开始 - -About -关于 - -Build: %x -Build: %x - -All files -所有文件 - -Automated Synchronization -自动同步 - -The %x protocol does not support directory monitoring: -协议 %x 不支持目录监视: - -Directory monitoring active -目录监视激活 - -Waiting until directory is available: -等待直到目录可用: - -&Configure -配置(&C) - -&Show error message -显示错误信息(&S) - -&Quit -退出(&Q) - -&Retry -重试(&R) - - -1 byte -%x bytes - - -%x 字节 - - -%x MB -%x MB - -%x KB -%x KB - -%x GB -%x GB - -Loading... -正在载入... - -Scanning... -正扫描... - -configuration file -配置文件 - -System: Sleep -系统: 休眠 - -System: Shut down -系统: 关机 - -Nothing to synchronize -没有什么可同步 - -Executing command: -执行命令: - -You can switch to FreeFileSync's main window to resolve this issue. -你可以切换至 FreeFileSync 的主窗口来解决这个问题. - -&Don't show this warning again -不再显示这个警告(&D) - -&Ignore -忽略(&I) - -&Switch -切换(&S) - -Switching to FreeFileSync's main window -切换至 FreeFileSync 的主窗口 - -Automatic retry -自动重试 - -Ignore &all -忽略所有(&A) - -Retrying operation... -正在重试操作... - -Serious Error -严重错误 - -Last session -最后会话 - -Today -今天 - - -1 day -%x days - - -%x 天 - - -Name -文件名 - -Last sync -最后同步 - -Log -日志 - -Folder -文件夹 - -Symlink -符号连接 - -Full path -完整路径 - -Relative path -相对路径 - -Item name -项目名称 - -Size -大小 - -Date -日期 - -Extension -扩展名 - -Category -分类 - -Action -动作 - -Local comparison settings -本地比较设置 - -Local synchronization settings -本地同步设置 - -Local filter -本地过滤器 - -Active -生效 - -None - - -Remove local settings -移除本地设置 - -Clear local filter -清除本地过滤器 - -Copy -复制 - -Paste -粘贴 - -The selected folder %x cannot be used with FreeFileSync. -所选定的文件夹 %x 不能由FreeFileSync使用. - -Please select a folder on a local file system, network or an MTP device. -请选择在本地文件系统, 网络或MTP设备上的文件夹. - -Defined by context of use -依使用环境定义 - -Requires FreeFileSync Donation Edition -需要FreeFileSync捐赠版 - -&Save -保存(&S) - -Save as &batch job... -另存为批处理作业(&B)... - -Show &log -显示日志(&L) - -Start &comparison -开始比较(&C) - -C&omparison settings -比较设置(&O) - -&Filter settings -过滤器设置(&F) - -S&ynchronization settings -同步设置(&Y) - -Start &synchronization -开始同步(&S) - -&Actions -动作(&A) - -&Preferences -首选项(&P) - -&Language -切换语言(&L) - -&Find... -查找(&F)... - -&Export file list... -导出文件列表(&E)... - -&Reset layout -重置布局(&R) - -&Tools -工具(&T) - -&Check for updates now -现在就检查是否有更新(&C) - -Check &automatically once a week -每周自动检查一次(&A) - -Cancel -取消 - -Compare -比较 - -Synchronize -同步 - -Add folder pair -添加文件夹对 - -Remove folder pair -移除文件夹对 - -Access online storage -访问在线存储空间 - -Close search bar -关闭搜索条 - -Find: -查找: - -Match case -匹配大小写 - -Processed: -已处理: - -Remaining: -剩余: - -New -新建 - -Open... -打开... - -Save -保存 - -Save as... -另存为... - -View type: -视图类型: - -Select view: -选择视图: - -Save as default -保存为默认值 - -Statistics: -统计: - -Number of files and folders that will be deleted -将被删除的文件和文件夹数 - -Number of files that will be updated -将被更新的文件数 - -Number of files and folders that will be created -将被创建的文件和文件夹数 - -Total bytes to copy -要复制的总字节数 - -Arrange folder pair -排列文件夹对 - -Main settings: -主设置: - -Use local settings: -使用本地设置: - -Select a variant: -选择一个变化: - -Include &symbolic links: -包括符号连接(&S): - -&Follow -跟随(&F) - -&Direct -直接(&D) - -More information -更多信息 - -&Ignore time shift [hh:mm] -忽略时间偏移[时:分](&I) - -List of file time offsets to ignore -要忽略的文件时间偏移列表 - -Example: -例如: - -Handle daylight saving time -处理夏令时 - -Ignore errors -忽略错误 - -Retry count: -重试计数: - -Delay (in seconds): -延时 (秒): - -Performance improvements: -性能改进: - -Parallel file operations: -并行文件操作: - -How to get best performance? -如何取得最佳性能? - -Local settings: -本地设置: - -Include: -包括: - -Show examples -显示范例 - -Select filter rules to exclude certain files from synchronization. Enter file paths relative to their corresponding folder pair. -选择过滤器规则以将某些文件 从同步中排除. 输入与相应的文件夹对相关的 文件路径. - -File size: -文件大小: - -Minimum: -最小: - -Maximum: -最大: - -Time span: -时间跨度: - -C&lear -清除(&L) - -Detect moved files -检测被移动的文件 - - -- Not supported by all file systems -- Requires and creates database files -- Detection not available for first sync - - -- 不被所有文件系统所支持 -- 需要创建数据库文件 -- 首次同步时检测不可用 - - -Delete files: -删除文件: - -&Recycle bin -回收站(&R) - -&Permanent -永久(&P) - -&Versioning -历史版本(&V) - -Move files to a user-defined folder -移动文件到一个用户定义的文件夹 - -Naming convention: -命名规则: - -Limit file versions: -限制文件历史版本数: - -Last x days: -最近 x 天: - -&Override default log path: -覆盖默认日志路径(&O): - -Run a command: -执行一个命令: - -OK -确定 - -Connection type: -连接类型: - -Connected user accounts: -已连接的用户账户: - -&Add connection -添加连接(&A) - -&Disconnect -断开连接(&D) - -Selected user account: -选定的用户账户: - -Server name or IP address: -服务器名称或IP地址: - -Port: -端口: - -Encryption: -加密: - -&Disabled -禁用(&D) - -&Explicit SSL/TLS -显式SSL/TLS(&E) - -Authentication: -认证: - -&Password -密码(&P) - -&Key file -密钥文件(&K) - -&SSH agent -SSH代理(&S) - -User name: -用户名: - -Private key file: -私钥文件: - -&Show password -显示密码(&S) - -Directory on server: -服务器上的目录: - -Access timeout (in seconds): -访问超时(秒): - -SFTP channels per connection: -每个连接的SFTP通道数: - -Detect server limit -检测服务器限制 - -Select Folder -选择文件夹 - -Variant: -变化: - -&Don't show this dialog again -不要再显示这个对话框(&D) - -Bytes: -字节: - -Items: -项目: - -Synchronizing... -同步中... - -Minimize to notification area -最小化到系统托盘 - -Bytes -字节 - -Items -项目 - -When finished: -当完成时: - -Auto-close -自动关闭 - -Close -关闭 - -&Pause -暂停(&P) - -Stop -停止 - -Create a batch file for unattended synchronization. To start, double-click this file or schedule in a task planner: %x -创建一个用于无人值守同步的批处理文件. 要开始, 双击这个文件或任务计划器中的计划调度: %x - -Progress dialog: -进度对话框: - -Run minimized -以最小化运行 - -Show pop-up on errors or warnings -在错误或警告时显示弹出对话框 - -&Cancel -取消(&C) - -Stop synchronization at first error -在遇到第一个错误时停止同步 - -How can I schedule a batch job? -我如何计划一个批处理作业? - -&Keep relative paths -保持相对路径(&K) - -&Overwrite existing files -覆盖已存在文件(&O) - -The following settings are used for all synchronization jobs. -如下的设置使用于所有同步作业. - - -Copy to a temporary file (*.ffs_tmp) before overwriting target. -This guarantees a consistent state even in case of a serious error. - -在覆盖目标之前先复制到临时文件(*.ffs_tmp). 这样即使在发生严重错误的情况下, 也可以保证有一致的状态. - -recommended -推荐 - -Copy shared or locked files using the Volume Shadow Copy Service. -使用卷影复制服务来复制已共享或已锁定的文件. - -requires administrator rights -需要管理员权限 - -Transfer file and folder permissions. -传输文件及文件夹的权限. - -Show all permanently hidden dialogs and warning messages again -重新显示所有被永久性隐藏的 对话框和警告信息 - -Default log path: -默认日志路径: - -&Delete logs after x days: -在 x 天后删除日志(&D): - -Notification sounds: -通知声音: - -Synchronization finished: -同步完成: - -Customize context menu: -自定义右键菜单: - -Description -描述 - -&Default -默认(&D) - -Feedback and suggestions are welcome: -欢迎提出反馈意见和建议: - -Home page -主页 - -FreeFileSync Forum -FreeFileSync 论坛 - -Email -邮箱 - -If you like FreeFileSync: -如果你喜欢 FreeFileSync: - -Support with a donation -通过捐款来支持我们 - -The auto updater was disabled by the administrator. -自动更新程序已由管理员禁用. - -Donation details -捐款详情 - -Source code written in C++ using: -源代码使用如下工具由C++写成: - -Published under the GNU General Public License: -根据GNU通用公共许可证发布: - -Many thanks for localization: -非常感谢以下本地化翻译者: - -Activate the FreeFileSync Donation Edition by one of the following methods: -激活 FreeFileSync 捐赠版可用如下方式之一: - -Activate via internet now: -现在就通过互联网激活: - -Activate online -在线激活 - -&Copy to clipboard -复制到剪贴板(&C) - -Enter activation key: -输入激活码: - -Activate offline -离线激活 - -Highlight configurations that have not been run for more than the following number of days: -突出显示那些超过如下天数 未运行的配置文件: - -FreeFileSync requires access rights to avoid "Operation not permitted" errors when synchronizing your data (e.g. Mail, Messages, Calendars). -FreeFileSync需要访问权限, 以避免在同步数据(例如邮件, 消息, 日历)时出现"操作不允许"错误. - -Locate the FreeFileSync app -定位到 FreeFileSync 应用程序 - -Open Security && Privacy -打开安全和隐私 - -Click the lock to allow changes. -点击锁头图标以允许更改. - -Drag FreeFileSync into the panel. -拖动FreeFileSync放到面板. - -Synchronization Settings -同步设置 - -Access Online Storage -访问在线存储 - -Save as a Batch Job -保存为批处理作业 - -Delete Items -删除项目 - -Copy Items -复制项目 - -Options -选项 - -Select Time Span -选择时间跨度 - -Highlight Configurations -突出显示配置文件 - -Grant Full Disk Access -授予全盘访问权限 - -Info -信息 - -No log entries -没有日志条目 - -Select all -选择全部 - -&Options -选项(&O) - -Main Bar -主工具栏 - -Folder Pairs -文件夹对 - -Find -查找 - -View Settings -视图设置 - -Configuration -配置 - -Overview -摘要 - -Swap sides -两侧互换 - -Show "%x" -显示 "%x" - -&Show details -显示详情(&S) - -FreeFileSync %x is available! -FreeFileSync %x 可用! - -Local path not available for %x. -本地路径不适用于 %x. - -Confirm -确认 - - -Do you really want to execute the command %y for one item? -Do you really want to execute the command %y for %x items? - - -你是否要为 %x 个项目执行 %y 命令? - - -&Execute -排除(&E) - -Set direction: -设置方向: - -multiple selection -多选 - -&Include via filter: -通过过滤器包含(&I): - -&Exclude via filter: -通过过滤器排除(&E): - -Include temporarily -暂时包括 - -Exclude temporarily -暂时排除 - -&Synchronize selection -同步选定内容(&S) - -&Copy to... -复制到(&C)... - -&Delete -删除(&D) - -Show icons: -显示图标: - -Small - - -Medium - - -Large - - -Select time span... -选择时间跨度... - -Donation Edition -捐赠版本 - -Folder Comparison and Synchronization -文件夹比较与同步 - -Configuration saved -配置已保存 - -FreeFileSync batch -FreeFileSync批处理文件 - -Do you want to save changes to %x? -是否要保存修改到 %x? - -Never save &changes -不再保存更改(&C) - -Do&n't save -不保存(&N) - -%x cannot be renamed. -%x 无法被重命名. - -New name: -新文件名: - -Rename Configuration -重命名配置 - -Configuration name must not be empty. -配置名称必须不为空. - -&Rename... -重命名(&R)... - -Hide configuration -隐藏配置文件 - -Highlight... -突出显示... - -Clear filter -清除过滤器 - -Show files that exist on left side only -显示仅存在左侧的文件 - -Show files that exist on right side only -显示仅存在右侧的文件 - -Show files that are newer on left -显示左侧较新的文件 - -Show files that are newer on right -显示右侧较新的文件 - -Show files that are equal -显示相同的文件 - -Show files that are different -显示不同的文件 - -Show conflicts -显示冲突 - -Show files that will be created on the left side -显示将在左侧被建立的文件 - -Show files that will be created on the right side -显示将在右侧被建立的文件 - -Show files that will be deleted on the left side -显示将在左侧被删除的文件 - -Show files that will be deleted on the right side -显示将在右侧被删除的文件 - -Show files that will be updated on the left side -显示左侧将会被更新的文件 - -Show files that will be updated on the right side -显示右侧将会被更新的文件 - -Show files that won't be copied -显示将不被复制的文件 - -Show filtered or temporarily excluded files -显示已被过滤或被临时排除的文件 - -Filter -过滤器 - -All files are in sync -所有文件均是同步的 - - -1 directory -%x directories - - -%x 目录 - - - -1 file -%x files - - -%x 文件 - - - -Showing %y of 1 row -Showing %y of %x rows - - -显示 %x 中的 %y 行 - - -Cannot find %x -找不到 %x - -Move up -上移 - -Move down -下移 - -Comma-separated values -逗号分割的数值(CSV) - -File list exported -文件清单已经导出 - -Searching for program updates... -正在搜索程序的更新... - -Paused -已暂停 - -Stop requested... -已请求停止... - -Initializing... -正在初始化... - -Comparing content... -正在比较文件内容... - -&Continue -继续(&C) - -Progress -进度 - -Thank you, %x, for your donation and support! -谢谢你, %x , 对我们的捐款和支持! - -Connections -连接数 - -Recommended range: -建议的范围: - -Do you really want to disconnect from user account %x? -你是否真的要从用户账户 %x 断开连接? - -Password: -密码: - -Key passphrase: -密钥口令短语: - -Please enter a file path. -请输入一个文件路径. - - -Copy the following item to another folder? -Copy the following %x items to another folder? - - -复制如下的 %x 个项目到另一个文件夹? - - -Please enter a target folder. -请输入一个目标文件夹. - - -Do you really want to move the following item to the recycle bin? -Do you really want to move the following %x items to the recycle bin? - - -你是否要将如下 %x 个项目移动到回收站? - - -Move -移动 - - -Do you really want to delete the following item? -Do you really want to delete the following %x items? - - -是否真的要删除如下 %x 个项目? - - -Start to synchronize the selection? -是否开始同步选定内容? - -Start synchronization now? -现在开始同步吗? - -Copy DACL, SACL, Owner, Group -复制DACL, SACL, 所有者, 群组 - -Integrate external applications into context menu. The following macros are available: -集成外部应用程序到右键菜单. 如下宏可用: - -Full file or folder path -完整的文件或文件夹路径 - -Parent folder path -上级文件夹路径 - -Temporary local copy for SFTP and MTP storage -SFTP和MTP存储的临时本地副本 - -Parameters for opposite side -用于对侧的参数 - -Show hidden dialogs again -重新显示被隐藏的对话框 - -All dialogs shown -所有对话框已显示 - -Downloading update... -正在下载更新... - -Identify equal files by comparing modification time and size. -以比较修改时间和文件大小来识别相同文件. - -Identify equal files by comparing the file content. -以比较文件内容来识别相同的文件. - -Identify equal files by comparing their file size. -以比较文件大小来识别相同的文件. - -Identify and propagate changes on both sides. Deletions, moves and conflicts are detected automatically using a database. -识别和传播两侧的变化. 删除, 移动和冲突会使用一个数据库来自动检测. - -Create a mirror backup of the left folder by adapting the right folder to match. -以适配右侧文件夹来匹配, 从而创建左侧文件夹的镜像备份. - -Copy new and updated files to the right folder. -复制新的和已更新的文件到右侧文件夹. - -Configure your own synchronization rules. -配置你自己的同步规则. - -Comparison -比较 - -Synchronization -同步 - -This week -本周 - -This month -本月 - -This year -今年 - -Byte -字节 - -KB -KB - -MB -MB - -Retain deleted and overwritten files in the recycle bin -保留已删除和覆盖的文件到回收站中 - -Delete and overwrite files permanently -永久性删除和覆盖文件 - -Replace -替换 - -Move files and replace if existing -移动文件, 若文件已存在则替换 - -Time stamp -时间戳 - -Move files into a time-stamped subfolder -移动文件到时间戳子文件夹 - -File -文件 - -Append a time stamp to each file name -添加一个时间戳到每个文件名 - -On completion: -在完成时: - -On errors: -在错误时: - -On success: -在成功时: - -Main config -主配置 - -empty - - -Leave as unresolved conflict -遗留为未解决的冲突 - -YYYY-MM-DD hhmmss -YYYY-MM-DD hhmmss - -Minimum version count must be smaller than maximum count. -最小版本计数必须小于最大计数. - -&Restore -恢复(&R) - -Files -文件 - -Percentage -百分比 - -Failed to retrieve update information. -无法检索更新信息. - -Automatic updates: -自动更新: - -Check for Program Updates -检查程序的更新 - -Auto-update now or download manually from the FreeFileSync home page? -现在就自动更新或者从FreeFileSync主页上手动下载? - -&Auto-update -自动更新(&A) - -&Home page -主页(&H) - -Download now? -立即下载? - -&Download -下载(&D) - -FreeFileSync is up to date. -FreeFileSync 已是最新. - -Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now? -无法在线找到当前 FreeFileSync 的版本号. 可能有新版本可用. 是否现在手动检测? - -&Check -检查(&C) - -Consistency check failed for %x. -对于 %x 的一致性检测失败. - -Installation was registered on a different operating system. -安装被注册在一个不同的操作系统上. - -Failed to activate FreeFileSync Donation Edition. -无法激活FreeFileSync捐赠版. - -Incorrect activation key. -不正确的激活码. - -Unable to register to receive system messages. -无法注册以接收系统信息. - -The %x installation option is only available in the FreeFileSync Donation Edition. -安装选项 %x 只在 FreeFileSync 捐赠版有效. - -Cannot find system function %x. -无法找到系统功能 %x. - -Unable to register device notifications for %x. -无法为 %x 注册设备通知. - -The file is locked by another process: -此文件被另一进程锁定: - -Failed to determine file permission support for folder %x. -无法确定文件夹 %x 所支持的权限. - -Cannot read security context of %x. -无法读取 %x 的安全上下文. - -Cannot write security context of %x. -无法写入 %x 的安全上下文. - -Cannot read permissions of %x. -无法读取 %x 的权限. - -Cannot copy permissions from %x to %y. -无法从 %x 复制权限到 %y. - -%x is not a regular directory name. -%x 不是一个正规的目录名. - -Cannot copy attributes from %x to %y. -无法从 %x 复制属性到 %y. - -%x TB -%x TB - -%x PB -%x PB - - -1 min -%x min - - -%x 分 - - - -1 hour -%x hours - - -%x 小时 - - -Cannot set privilege %x. -无法设置 %x 的特权. - -Unable to suspend system sleep mode. -无法中止系统休眠模式. - -Cannot change process I/O priorities. -无法更改进程的I/O优先级. - -Checking recycle bin failed for folder %x. -检查文件夹 %x 的回收站失败. - -Unable to shut down the system. -无法关闭系统. - -Prepare installation -准备安装 - -Choose which components you want to install. -选择你要安装的组件. - -Select installation type: -选择安装方式: - -Local -本地 - -Portable -便携 - -Save settings in %x -在 %x 中保存设置 - -Register FreeFileSync file extensions -注册 FreeFileSync 文件关联 - -Create Explorer context menu entries -创建浏览器右键菜单入口 - -Save settings in installation directory -保存设置到程序安装目录 - -Do not write to Registry -不写入注册表 - -Just copy the files -只复制文件 - -Choose a directory for installation: -选择要安装的目录位置: - -Create shortcuts: -创建快捷方式: - -Desktop -桌面 - -Start Menu -开始菜单 - -Send To -发送到 - -Registering FreeFileSync file extensions -注册 FreeFileSync 文件关联 - -Unregistering FreeFileSync file extensions -取消注册 FreeFileSync 文件关联 - -FreeFileSync Configuration -FreeFileSync 配置 - -FreeFileSync Batch File -FreeFileSync 批处理文件 - -FreeFileSync Synchronization Database -FreeFileSync 同步数据库 - -RealTimeSync Configuration -RealTimeSync 配置 - -Edit with FreeFileSync -使用 FreeFileSync 编辑 - -Instead of an ad, here's an animal. -这里是一只动物, 而不是广告. - -The FreeFileSync portable version cannot install into a subfolder of %x. -FreeFileSync 便携版无法安装到 %x 的一个子目录. - -Please choose the local installation type or select a different folder for installation. -请选择本地安装类型, 或选择用于安装的不同文件夹. - -Get the Donation Edition with bonus features and help keep FreeFileSync ad-free. -获取有额外功能的捐赠版本, 并帮助保持 FreeFileSync 无广告. - diff --git a/FreeFileSync/Build/Resources/Languages/chinese_traditional.lng b/FreeFileSync/Build/Resources/Languages/chinese_traditional.lng deleted file mode 100755 index 670fcfb1..00000000 --- a/FreeFileSync/Build/Resources/Languages/chinese_traditional.lng +++ /dev/null @@ -1,2120 +0,0 @@ -
- 正體中文 - Carlos Chen - Chinese (Traditional) - flag_taiwan.png - 1 - 0 -
- -Cannot read file %x. -無法讀取檔案 %x。 - - -Unexpected size of data stream. -Expected: %x bytes -Actual: %y bytes - - -非預期的資料流大小。 -預期:%x 位元組 -實際:%y 位元組 - - -Cannot write file %x. -無法寫入檔案 %x。 - -Cannot write permissions of %x. -無法寫入 %x 的權限。 - -Operation not supported between different devices. -不支援不同裝置間的操作。 - -Cannot delete file %x. -無法刪除目錄 %x。 - -Cannot delete symbolic link %x. -無法刪除符號連結 %x。 - -Cannot delete directory %x. -無法刪除目錄 %x。 - -Cannot move file %x to %y. -無法移動檔案 %x 到 %y。 - -Cannot copy symbolic link %x to %y. -無法複製符號連結 %x 到 %y。 - -Error Code %x -錯誤碼 %x - -Cannot read directory %x. -無法讀取目錄 %x。 - -Cannot write modification time of %x. -無法寫入 %x 的修改時間。 - -Cannot read file attributes of %x. -無法讀取 %x 的檔案屬性。 - -Cannot create directory %x. -無法建立目錄 %x。 - -Cannot determine final path for %x. -無法確定 %x 最後路徑。 - -Operation not supported by device. -不支援該裝置的操作。 - -Cannot resolve symbolic link %x. -無法解析符號連結 %x。 - -Unable to move %x to the recycle bin. -無法將 %x 移動到資源回收筒。 - -Authentication completed. -驗證完成。 - -You may close this page now and continue with FreeFileSync. -您可以立即關閉此頁面並繼續使用FreeFileSync。 - -Authentication failed. -驗證失敗。 - -Unable to connect to %x. -無法連接到 %x。 - -Cannot find %x. -找不到 %x。 - -The name %x is used by more than one item in the folder. -名稱 %x 已被資料夾中的多個項目使用。 - -Please authorize access to user account %x. -請授權存取使用者帳號 %x。 - -Cannot open file %x. -無法開啟檔案 %x。 - -The name %x is already used by another item. -名稱 %x 已被另一個項目使用。 - -Cannot determine free disk space for %x. -無法確定 %x 的可用磁碟空間。 - -Unable to disconnect from %x. -無法中斷 %x 的連線。 - -Unable to access %x. -無法存取 %x。 - -Failed to get information about server %x. -無法取得關於伺服器 %x 的資訊。 - -Cannot monitor directory %x. -無法監測目錄 %x。 - -Cannot find device %x. -找不到裝置 %x。 - -Cannot open directory %x. -無法開啟目錄 %x。 - -Unsupported item type. -不支援的項目類型。 - -Incorrect command line: -不正確的命令列: - -The server does not support authentication via %x. -伺服器不支援 %x 進行驗證。 - -Required: -必要: - - -Operation timed out after 1 second. -Operation timed out after %x seconds. - - -在 %x 秒後操作逾時。 - - - -Cannot wait on more than 1 connection at a time. -Cannot wait on more than %x connections at a time. - - -無法一次等待超過 %x 個連線數。 - - -Active connections: %x -活動連線數:%x - -Failed to open SFTP channel number %x. -無法開啟SFTP通道號 %x。 - -Both sides have changed since last synchronization. -自上次同步後,兩邊均已變更過。 - -Cannot determine sync-direction: -無法確定同步方向: - -No change since last synchronization. -自上次同步以來都沒有變更。 - -The database entry is not in sync considering current settings. -考慮到目前設定,資料庫項目不同步。 - -Setting default synchronization directions: Old files will be overwritten with newer files. -設定預設同步方向:舊檔案會被較新的檔案覆蓋。 - -Creating file %x -正在建立檔案 %x - -Creating folder %x -正在建立資料夾 %x - -Creating symbolic link %x -正在建立符號連結 %x - -Moving file %x to the recycle bin -正在移動檔案 %x 到資源回收筒 - -Moving folder %x to the recycle bin -正在移動資料夾 %x 到資源回收筒 - -Moving symbolic link %x to the recycle bin -正在移動符號連結 %x 到資源回收筒 - -Deleting file %x -正在刪除檔案 %x - -Deleting folder %x -正在刪除資料夾 %x - -Deleting symbolic link %x -正在刪除符號連結 %x - -Checking recycle bin availability for folder %x... -正在檢查資源回收筒的有效資料夾 %x… - -The recycle bin is not supported by the following folders. Deleted or overwritten files will not be able to be restored: -以下資料夾不支援資源回收筒。刪除或覆蓋的檔將無法還原: - -An exception occurred -發生異常 - -A left and a right directory path are expected after %x. -%x 之後應該有一個左邊和右邊目錄路徑。 - -Syntax error -語法錯誤 - -Cannot find file %x. -找不到檔案 %x。 - -Error -錯誤 - -File %x does not contain a valid configuration. -檔案 %x 不包含一個有效的配置。 - -The config file must not contain settings at directory pair level when directories are set via command line. -目錄透過命令列設定時,該設定檔不能包含配對目錄層級的設定。 - -Directories cannot be set for more than one configuration file. -目錄無法設定多個配置檔案。 - -Command line -命令列 - -Syntax: -語法: - -config files: -配置檔案: - -directory -目錄 - -global config file: -全域配置檔案: - -Any number of FreeFileSync "ffs_gui" and/or "ffs_batch" configuration files. -FreeFileSync "ffs_gui"和(或)"ffs_batch"配置檔案的任意數量。 - -Any number of alternative directory pairs for at most one config file. -任意數量的備用配對目錄為最多一個配置檔案。 - -Open the selected configuration for editing only, without executing it. -只打開選定的配置進行編輯而不執行。 - -Path to an alternate GlobalSettings.xml file. -備用的GlobalSettings.xml檔案路徑。 - -Installation files are corrupted. Please reinstall FreeFileSync. -安裝檔已損壞。請重新安裝FreeFileSync。 - -Cannot find the following folders: -找不到下列資料夾: - -The following folders do not yet exist: -下列資料夾不存在: - -The folders are created automatically when needed. -這些資料夾是在需要時自動建立的。 - -The following folder paths differ in case. Please use a single form in order to avoid duplicate accesses. -下列資料夾路徑大小寫不同。請使用單一形式,避免重複存取。 - -Scanning: -正在掃瞄: - -Comparison finished: -比對完成: - - -1 item found -%x items found - - -找到 %x 個項目。 - - -Time elapsed: -經過時間: - -File %x has an invalid date. -檔案 %x 的日期無效。 - -Date: -日期: - -Files have the same date but a different size. -檔案的日期相同但大小不同。 - -Size: -大小: - -Content comparison was skipped for excluded files. -內容比對被設定的排除檔案跳過。 - -Items differ in attributes only -只有項目的屬性不同 - -Resolving symbolic link %x -正在解析符號連結 %x - -Comparing content of files %x -正在比對檔案 %x 的内容 - -Generating file list... -正在產生檔案列表… - -Fail-safe file copy -失效安全的檔案複製 - -Enabled -啟用 - -Disabled -停用 - -Copy locked files -複製被鎖定的檔案 - -Copy file access permissions -複製檔案存取權限 - -File time tolerance -檔案時間容差範圍 - -Run with background priority -背景優先執行 - -Lock directories during sync -在同步期間鎖定目錄 - -Verify copied files -驗證複製的檔案 - -Using non-default global settings: -使用非預設全域設定: - -A folder input field is empty. -資料夾輸入欄位是空白。 - -The corresponding folder will be considered as empty. -對應的資料夾將視為空資料夾。 - -Exclude: -排除: - -One base folder of a folder pair is contained in the other one. -一個配對資料夾的一個底層資料夾包含在另一個配對資料夾中。 - -The folder should be excluded from synchronization via filter. -應該從同步篩選器中排除資料夾。 - -Calculating sync directions... -正在計算同步方向… - -Out of memory. -記憶體不足。 - -Show in Explorer -在檔案總管中顯示 - -Open with default application -使用預設的應用程式開啟 - -Browse directory -瀏覽目錄 - -Database file %x is incompatible. -資料庫檔案 %x 不相容。 - -Initial synchronization: -初始同步: - -Database file %x does not yet exist. -資料庫檔案 %x 不存在。 - -Database file is corrupted: -資料庫檔案已損壞: - -Loading file %x... -正在讀取檔案 %x… - -The database files do not yet contain information about the last synchronization. -資料庫檔案未包含上次同步資訊。 - -Saving file %x... -正在儲存檔案 %x… - -Searching for folder %x... -正在搜尋資料夾 %x… - -Timeout while searching for folder %x. -搜尋資料夾 %x 時逾時。 - -Cannot get process information. -無法取得處理訊息。 - -Waiting while directory is locked: -等待目錄被鎖定: - -Lock owner: -鎖定擁有者: - -Detecting abandoned lock... -正在檢測被遺棄的鎖定… - - -1 sec -%x sec - - -%x 秒 - - -Item exists on left side only -只存在於左邊的項目 - -Item exists on right side only -只存在於右邊的項目 - -Left side is newer -左邊較新 - -Right side is newer -右邊較新 - -Items have different content -項目具有不同內容 - -Both sides are equal -兩邊都相同 - -Conflict/item cannot be categorized -衝突(項目)不能被分類 - -Copy new item to left -複製新的項目到左邊 - -Copy new item to right -複製新的項目到右邊 - -Delete left item -刪除左邊項目 - -Delete right item -刪除右邊項目 - -Move file on left -移動左邊檔案 - -Move file on right -移動右邊檔案 - -Update left item -更新左邊項目 - -Update right item -更新右邊項目 - -Do nothing -維持原狀 - -Update attributes on left -更新左邊屬性 - -Update attributes on right -更新右邊屬性 - -Error parsing file %x, row %y, column %z. -解析 %x 檔案,第 %y 列,第 %z 行出現錯誤。 - -Services -服務 - -Show All -顯示全部 - -Hide Others -隱藏其他 - -Hide %x -隱藏 %x - -Quit %x -結束 %x - -Cannot set directory locks for the following folders: -無法為以下資料夾設定目錄鎖定: - -Errors: -錯誤: - -Warnings: -警告: - -Items processed: -已處理項目: - -Items remaining: -剩餘項目: - -Total time: -全部時間: - -Warning -警告 - -Stopped -已停止 - -Cleaning up log files: -清除紀錄檔: - - -1 thread -%x threads - - -%x 個執行緒 - - -%x/sec -%x/秒 - -%x items -%x 項目 - -Completed successfully -成功完成 - -Completed with warnings -已完成但有警告 - -Completed with errors -已完成但有錯誤 - -Cannot access the Volume Shadow Copy Service. -無法存取磁碟區陰影複製服務。 - -Please run the 64-bit version of FreeFileSync to create shadow copies on this system. -請在此系統上執行64位元版本的FreeFileSync建立陰影複製副本。 - -Volume name %x is not part of file path %y. -磁碟機名稱 %x 不是檔案路徑 %y 的一部分。 - -File time and size -檔案時間和大小 - -File content -檔案内容 - -File size -檔案大小 - -Two way -雙向 - -Mirror -鏡像 - -Update -更新 - -Custom -自訂 - -Multiple... -多個… - -Cannot write file attributes of %x. -無法寫入 %x 的檔案屬性。 - -%x and %y have different content. -%x 和 %y 具有不同的內容。 - -Data verification error: -資料驗證錯誤: - -Moving file %x to %y -正在移動檔案 %x 到 %y - -Moving folder %x to %y -正在移動資料夾 %x 到 %y - -Moving symbolic link %x to %y -正在移動符號連結 %x 到 %y - -Updating file %x -正在更新檔案 %x - -Updating symbolic link %x -正在更新符號連結 %x - -Verifying file %x -正在驗證檔案 %x - -Updating attributes of %x -正在更新 %x 的屬性 - -Source item %x not found -找不到來源項目 %x - -Parent folder %x is not existing. -上層資料夾 %x 不存在。 - -Cannot copy file %x to %y. -無法複製檔案 %x 到 %y。 - -Creating a Volume Shadow Copy for %x... -正在建立磁碟區陰影複製為 %x… - -Cannot find folder %x. -找不到資料夾 %x。 - -Target folder %x is already existing, but was not available during folder comparison. -目標資料夾 %x 已存在,在資料夾比對時不可用。 - -Target folder input field must not be empty. -目標資料夾輸入欄位不能為空白。 - -Source folder %x not found. -找不到來源資料夾 %x。 - -Please enter a target folder for versioning. -請輸入版本控制的目標資料夾。 - -The following items have unresolved conflicts and will not be synchronized: -下列項目有未解決的衝突,將不會同步: - -Folder pair: -配對資料夾: - -The following folders are significantly different. Please check that the correct folders are selected for synchronization. -下列資料夾明顯不同。請檢查同步中選定的正確資料夾。 - -Not enough free disk space available in: -沒有足夠的可用磁碟空間: - -Available: -可用: - -Some files will be synchronized as part of multiple base folders. -某些檔案將作為多個底層資料夾的一部分進行同步。 - -To avoid conflicts, set up exclude filters so that each updated file is included by only one base folder. -為了避免衝突,請設定排除篩選器,以便每個更新檔案僅包含一個底層資料夾。 - -Versioning folder: -版本控制資料夾: - -Base folder: -底層資料夾: - -The versioning folder is contained in a base folder. -版本控制資料夾包含在底層資料夾中。 - -Synchronizing folder pair: -同步配對資料夾: - -Generating database... -正在產生資料庫… - -Searching for old file versions: -正在搜尋舊檔版本: - -Removing old file versions: -正在移除舊檔版本: - -Unable to create time stamp for versioning: -無法建立時間戳記的版本控制: - -Drag && drop -拖放 - -Select a folder -選擇一個資料夾 - -&New -新增(&N) - -&Open... -開啟(&O)… - -Save &as... -另存新檔(&A)… - -E&xit -離開(&X) - -&File -檔案(&F) - -&View help -檢視說明(&V) - -&About -關於(&A) - -&Help -說明(&H) - -Usage: -使用方法: - -Select folders to watch. -選擇要監看的資料夾。 - -Enter a command line. -輸入一個命令列。 - -Press 'Start'. -按下「開始」。 - -To get started just import a "ffs_batch" file. -若要開始只要導入一個"ffs_batch"檔。 - -Folders to watch: -要監看的資料夾: - -Add folder -新增資料夾 - -Remove folder -移除資料夾 - -Browse -瀏覽 - -Idle time (in seconds): -閒置時間(以秒為單位): - -Idle time between last detected change and execution of command -最後檢測到變更和執行命令之間的閒置時間 - -Command line: -命令列: - -&Hide console window -隱藏主控台視窗(&H) - - -The command is triggered if: -- files or subfolders change -- new folders arrive (e.g. USB stick insert) - - -假如要觸發該命令: -- 檔案或子資料夾變更 -- 新資料夾到來(例如插入USB隨身碟) - - -Start -開始 - -About -關於 - -Build: %x -建立:%x - -All files -所有檔案 - -Automated Synchronization -自動化同步 - -The %x protocol does not support directory monitoring: -%x 協定不支援目錄監測: - -Directory monitoring active -目錄監測活動 - -Waiting until directory is available: -正在等待可用目錄: - -&Configure -配置(&C) - -&Show error message -顯示錯誤訊息(&S) - -&Quit -離開(&Q) - -&Retry -重試(&R) - - -1 byte -%x bytes - - -%x 位元組 - - -%x MB -%x MB - -%x KB -%x KB - -%x GB -%x GB - -Loading... -正在載入… - -Scanning... -正在掃瞄… - -configuration file -配置檔案 - -System: Sleep -系統:睡眠 - -System: Shut down -系統:關機 - -Nothing to synchronize -沒有要同步的內容 - -Executing command: -執行命令: - -You can switch to FreeFileSync's main window to resolve this issue. -您可以切換到FreeFileSync的主視窗來解決此問題。 - -&Don't show this warning again -不再顯示此警告(&D) - -&Ignore -忽略(&I) - -&Switch -切換(&S) - -Switching to FreeFileSync's main window -切換到FreeFileSync的主視窗 - -Automatic retry -自動重試 - -Ignore &all -全部忽略(&A) - -Retrying operation... -重試操作… - -Serious Error -嚴重錯誤 - -Last session -上次連線 - -Today -今日 - - -1 day -%x days - - -%x 天 - - -Name -名稱 - -Last sync -上次同步 - -Log -紀錄 - -Folder -資料夾 - -Symlink -符號連結 - -Full path -完整路徑 - -Relative path -相對路徑 - -Item name -項目名稱 - -Size -大小 - -Date -日期 - -Extension -副檔名 - -Category -分類 - -Action -動作 - -Local comparison settings -本機比對設定 - -Local synchronization settings -本機同步設定 - -Local filter -本機篩選器 - -Active -活動 - -None - - -Remove local settings -移除本機設定 - -Clear local filter -清除本機篩選器 - -Copy -複製 - -Paste -貼上 - -The selected folder %x cannot be used with FreeFileSync. -選定資料夾 %x 無法使用於FreeFileSync。 - -Please select a folder on a local file system, network or an MTP device. -請選擇一個本機檔案系統、網路或MTP裝置上的資料夾。 - -Defined by context of use -由使用環境定義 - -Requires FreeFileSync Donation Edition -需要FreeFileSync贊助版 - -&Save -儲存(&S) - -Save as &batch job... -另存為批次工作(&B)… - -Show &log -顯示紀錄(&L) - -Start &comparison -開始比對(&C) - -C&omparison settings -比對設定(&O) - -&Filter settings -篩選器設定(&F) - -S&ynchronization settings -同步設定(&Y) - -Start &synchronization -開始同步(&S) - -&Actions -動作(&A) - -&Preferences -偏好設定(&P) - -&Language -語言(&L) - -&Find... -尋找(&F)… - -&Export file list... -匯出檔案列表(&E)… - -&Reset layout -重置佈局(&R) - -&Tools -工具(&T) - -&Check for updates now -現在檢查更新(&C) - -Check &automatically once a week -每週自動檢查一次(&A) - -Cancel -取消 - -Compare -比對 - -Synchronize -同步 - -Add folder pair -新增配對資料夾 - -Remove folder pair -移除配對資料夾 - -Access online storage -存取線上儲存空間 - -Close search bar -關閉搜尋欄位 - -Find: -尋找: - -Match case -區分大小寫 - -Processed: -已處理: - -Remaining: -剩餘: - -New -新增 - -Open... -開啟… - -Save -儲存 - -Save as... -另存新檔… - -View type: -檢視類型: - -Select view: -選擇視圖: - -Save as default -儲存為預設值 - -Statistics: -統計資料: - -Number of files and folders that will be deleted -將被刪除的檔案和資料夾數量 - -Number of files that will be updated -將被更新的檔案數量 - -Number of files and folders that will be created -將被建立的檔案和資料夾數量 - -Total bytes to copy -要複製的總資料量 - -Arrange folder pair -排列配對資料夾 - -Main settings: -主要設定: - -Use local settings: -使用本機設定: - -Select a variant: -選擇一個變數: - -Include &symbolic links: -包含符號連結(&S): - -&Follow -追隨(&F) - -&Direct -直接(&D) - -More information -詳細資訊 - -&Ignore time shift [hh:mm] -忽略時間偏移(&D) - -List of file time offsets to ignore -忽略列表中的檔案時間偏移 - -Example: -範例: - -Handle daylight saving time -處理日光節約時間 - -Ignore errors -忽略錯誤 - -Retry count: -重試次數: - -Delay (in seconds): -延遲(以秒為單位): - -Performance improvements: -效能改善: - -Parallel file operations: -並列檔案操作: - -How to get best performance? -如何取得最佳效能? - -Local settings: -本機設定: - -Include: -包含: - -Show examples -顯示範例 - -Select filter rules to exclude certain files from synchronization. Enter file paths relative to their corresponding folder pair. -選擇從同步中排除某些檔案的篩選器規則。輸入相對於其對應的配對資料夾路徑。 - -File size: -檔案大小: - -Minimum: -最小: - -Maximum: -最大: - -Time span: -時間間隔: - -C&lear -清除(&L) - -Detect moved files -檢測被移動的檔案 - - -- Not supported by all file systems -- Requires and creates database files -- Detection not available for first sync - - -- 不支援所有檔案系統 -- 需要建立資料庫檔案 -- 初次同步的檢測不可用 - - -Delete files: -刪除檔案: - -&Recycle bin -資源回收筒(&R) - -&Permanent -常駐(&P) - -&Versioning -版本控制(&V) - -Move files to a user-defined folder -將檔案移動到一個使用者定義的資料夾 - -Naming convention: -命名慣例: - -Limit file versions: -限制檔案版本: - -Last x days: -最近 x 天: - -&Override default log path: -覆蓋預設紀錄路徑(&O): - -Run a command: -執行命令: - -OK -確定 - -Connection type: -連線類型: - -Connected user accounts: -已連線的使用者帳號: - -&Add connection -新增連線(&A) - -&Disconnect -中斷(&D) - -Selected user account: -選定使用者帳號: - -Server name or IP address: -伺服器名稱或IP位址: - -Port: -連接埠: - -Encryption: -加密: - -&Disabled -停用(&D) - -&Explicit SSL/TLS -外顯式SSL/TLS(&E) - -Authentication: -驗證: - -&Password -密碼(&P): - -&Key file -金鑰檔案(&K) - -&SSH agent -SSH連線(&S) - -User name: -使用者名稱: - -Private key file: -私密金鑰檔案: - -&Show password -顯示密碼(&S): - -Directory on server: -在伺服器上的目錄: - -Access timeout (in seconds): -存取逾時(以秒為單位): - -SFTP channels per connection: -每個連接SFTP通道數: - -Detect server limit -檢測伺服器限制 - -Select Folder -選擇資料夾: - -Variant: -變數: - -&Don't show this dialog again -不再顯示此對話框(&D) - -Bytes: -位元組: - -Items: -項目: - -Synchronizing... -正在同步… - -Minimize to notification area -最小化到通知區域 - -Bytes -位元組 - -Items -項目 - -When finished: -完成後: - -Auto-close -自動關閉 - -Close -關閉 - -&Pause -暫停(&P) - -Stop -停止 - -Create a batch file for unattended synchronization. To start, double-click this file or schedule in a task planner: %x -建立一個批次檔,用於無人值守同步。若要開始,在此檔案點兩下, 或安排在任務規劃中:%x - -Progress dialog: -進度對話框: - -Run minimized -最小化執行 - -Show pop-up on errors or warnings -錯誤或警告時顯示彈出視窗 - -&Cancel -取消(&C) - -Stop synchronization at first error -出現第一個錯誤時停止同步 - -How can I schedule a batch job? -如何排程批次工作? - -&Keep relative paths -保持相對路徑(&K) - -&Overwrite existing files -覆蓋現有檔案(&O) - -The following settings are used for all synchronization jobs. -下列設定用於所有同步工作。 - - -Copy to a temporary file (*.ffs_tmp) before overwriting target. -This guarantees a consistent state even in case of a serious error. - - -覆蓋目標之前先複製到一個暫存檔(*.ffs_tmp)。 -即使發生嚴重錯誤時,還能確保一致的狀態。 - - -recommended -建議 - -Copy shared or locked files using the Volume Shadow Copy Service. -共用的副本或鎖定的檔案使用磁碟區陰影複製服務。 - -requires administrator rights -需要系統管理員權限 - -Transfer file and folder permissions. -傳輸檔案和資料夾的權限。 - -Show all permanently hidden dialogs and warning messages again -再次顯示所有永久 隱藏的對話框和警告訊息 - -Default log path: -預設紀錄路徑: - -&Delete logs after x days: -在 x 天後刪除紀錄(&D): - -Notification sounds: -通知音效: - -Synchronization finished: -同步完成: - -Customize context menu: -自訂右鍵功能表: - -Description -描述 - -&Default -預設(&D) - -Feedback and suggestions are welcome: -歡迎回饋和建議: - -Home page -主頁 - -FreeFileSync Forum -FreeFileSync論壇 - -Email -信箱 - -If you like FreeFileSync: -如果您喜歡FreeFileSync: - -Support with a donation -贊助與支持 - -The auto updater was disabled by the administrator. -自動更新程式被系統管理員停用。 - -Donation details -贊助詳情 - -Source code written in C++ using: -使用C++編寫的原始碼: - -Published under the GNU General Public License: -根據GNU通用公共授權條款發佈: - -Many thanks for localization: -非常感謝在地化翻譯人員: - -Activate the FreeFileSync Donation Edition by one of the following methods: -透過以下其中一種方法來啟動FreeFileSync贊助版: - -Activate via internet now: -立即由網際網路啟動: - -Activate online -線上啟動 - -Retrieve an offline activation key from the following URL: -從下面網址擷取離線啟用金鑰: - -&Copy to clipboard -複製到剪貼簿(&C) - -Enter activation key: -輸入啟用金鑰: - -Activate offline -離線啟動 - -Highlight configurations that have not been run for more than the following number of days: -突顯未執行超過以下天數的配置: - -FreeFileSync requires access rights to avoid "Operation not permitted" errors when synchronizing your data (e.g. Mail, Messages, Calendars). -FreeFileSync要求取得存取權限,以避免在同步資料(例如郵件、訊息、日曆)時出現"不允許操作"錯誤。 - -Locate the FreeFileSync app -找到FreeFileSync app - -Open Security && Privacy -開啟安全性與隱私權 - -Click the lock to allow changes. -按鎖頭一下以允許更改。 - -Drag FreeFileSync into the panel. -將FreeFileSync拖移到面板中。 - -Synchronization Settings -同步設定 - -Access Online Storage -存取線上儲存空間 - -Save as a Batch Job -另存為批次工作 - -Delete Items -刪除項目 - -Copy Items -複製項目 - -Options -選項 - -Select Time Span -選擇時間間隔 - -Highlight Configurations -突顯配置 - -Grant Full Disk Access -完全取用磁碟 - -Info -訊息 - -No log entries -沒有紀錄 - -Select all -全選 - -&Options -選項(&O) - -Main Bar -主要欄位 - -Folder Pairs -配對資料夾 - -Find -尋找 - -View Settings -檢視設定 - -Configuration -配置 - -Overview -摘要 - -Swap sides -兩邊交換 - -Show "%x" -顯示 "%x" - -&Show details -顯示詳細資訊(&S) - -FreeFileSync %x is available! -FreeFileSync %x 可用! - -Local path not available for %x. -本機路徑不適用於 %x。 - -Confirm -確認 - - -Do you really want to execute the command %y for one item? -Do you really want to execute the command %y for %x items? - - -您真的要執行 %x 項目的命令 %y 嗎? - - -&Execute -執行(&E) - -Set direction: -設定方向: - -multiple selection -複選 - -&Include via filter: -包含篩選器(&I): - -&Exclude via filter: -排除篩選器(&E): - -Include temporarily -暫時包含 - -Exclude temporarily -暫時排除 - -&Synchronize selection -同步選擇(&S) - -&Copy to... -複製到(&C)… - -&Delete -刪除(&D) - -Show icons: -顯示圖示: - -Small - - -Medium - - -Large - - -Select time span... -選擇時間間隔… - -Donation Edition -贊助版 - -Folder Comparison and Synchronization -資料夾比對和同步 - -Configuration saved -配置已儲存 - -FreeFileSync batch -FreeFileSync批次處理 - -Do you want to save changes to %x? -是否要儲存變更到 %x? - -Never save &changes -不儲存變更(&C) - -Do&n't save -不儲存(&N) - -%x cannot be renamed. -%x 無法重新命名。 - -New name: -新名稱: - -Rename Configuration -重新命名配置名稱 - -Configuration name must not be empty. -配置名稱不能空白。 - -&Rename... -重新命名(&R)… - -Hide configuration -隱藏配置 - -Highlight... -突顯... - -Clear filter -清除篩選器 - -Show files that exist on left side only -顯示只存在於左邊的檔案 - -Show files that exist on right side only -顯示只存在於右邊的檔案 - -Show files that are newer on left -顯示左邊較新的檔案 - -Show files that are newer on right -顯示右邊較新的檔案 - -Show files that are equal -顯示相同檔案 - -Show files that are different -顯示不同檔案 - -Show conflicts -顯示衝突 - -Show files that will be created on the left side -顯示左邊將被建立的檔案 - -Show files that will be created on the right side -顯示右邊將被建立的檔案 - -Show files that will be deleted on the left side -顯示左邊將被刪除的檔案 - -Show files that will be deleted on the right side -顯示右邊將被刪除的檔案 - -Show files that will be updated on the left side -顯示左邊將被更新的檔案 - -Show files that will be updated on the right side -顯示右邊將被更新的檔案 - -Show files that won't be copied -顯示將不會被複製的檔案 - -Show filtered or temporarily excluded files -顯示已篩選或暫時排除的檔案 - -Filter -篩選器 - -All files are in sync -所有檔案都同步 - - -1 directory -%x directories - - -%x 個目錄 - - - -1 file -%x files - - -%x 個檔案 - - - -Showing %y of 1 row -Showing %y of %x rows - - -顯示第 %x 列中的第 %y 列 - - -Cannot find %x -找不到 %x - -Move up -向上移動 - -Move down -向下移動 - -Comma-separated values -以逗號分隔值 - -File list exported -檔案列表已匯出 - -Searching for program updates... -正在搜尋程式更新… - -Paused -已暫停 - -Stop requested... -停止請求... - -Initializing... -正在初始化… - -Comparing content... -正在比對内容… - -&Continue -繼續(&C) - -Progress -進度 - -Thank you, %x, for your donation and support! -%x,感謝您的贊助與支持! - -Connections -連線數 - -Recommended range: -建議範圍: - -Do you really want to disconnect from user account %x? -您真的要中斷使用者帳號 %x 的連線嗎? - -Password: -密碼: - -Key passphrase: -金鑰密碼: - -Please enter a file path. -請輸入檔案路徑。 - - -Copy the following item to another folder? -Copy the following %x items to another folder? - - -將下列 %x 項目複製到另一個資料夾? - - -Please enter a target folder. -請輸入目標資料夾。 - - -Do you really want to move the following item to the recycle bin? -Do you really want to move the following %x items to the recycle bin? - - -您真的要將下列 %x 項目移動到資源回收筒嗎? - - -Move -移動 - - -Do you really want to delete the following item? -Do you really want to delete the following %x items? - - -您真的要將下列 %x 項目刪除嗎? - - -Start to synchronize the selection? -是否開始同步所選內容? - -Start synchronization now? -現在開始同步? - -Copy DACL, SACL, Owner, Group -複製DACL、SACL、擁有者、群組 - -Integrate external applications into context menu. The following macros are available: -整合右鍵功能表中的外部應用程式。可使用下列的巨集: - -Full file or folder path -完整檔案或資料夾路徑 - -Parent folder path -上層資料夾路徑 - -Temporary local copy for SFTP and MTP storage -SFTP和MTP儲存裝置的本機暫存副本 - -Parameters for opposite side -另一邊的參數 - -Show hidden dialogs again -再次顯示隱藏對話框 - -All dialogs shown -顯示所有對話框 - -Downloading update... -正在下載更新… - -Identify equal files by comparing modification time and size. -透過檔案修改時間和大小比對 來判斷相同檔案。 - -Identify equal files by comparing the file content. -透過檔案內容比對來判斷相同檔案。 - -Identify equal files by comparing their file size. -透過檔案大小比對來判斷相同檔案。 - -Identify and propagate changes on both sides. Deletions, moves and conflicts are detected automatically using a database. -識別和傳遞兩邊的變化。 使用資料庫自動檢測刪除、移動和衝突。 - -Create a mirror backup of the left folder by adapting the right folder to match. -透過改寫於右邊的資料夾 來匹配建立在左邊鏡像備份的資料夾。 - -Copy new and updated files to the right folder. -將新的和已更新的檔案複製到右邊資料夾。 - -Configure your own synchronization rules. -配置您自己的同步規則。 - -Comparison -比對 - -Synchronization -同步 - -This week -本週 - -This month -本月 - -This year -今年 - -Byte -位元組 - -KB -KB - -MB -MB - -Retain deleted and overwritten files in the recycle bin -在資源回收筒中保留已刪除和覆蓋的檔案 - -Delete and overwrite files permanently -永久刪除和覆蓋的檔案 - -Replace -取代 - -Move files and replace if existing -如果存在,移動並取代檔案 - -Time stamp -時間戳記 - -Move files into a time-stamped subfolder -將檔案移動到時間戳記的子資料夾中 - -File -檔案 - -Append a time stamp to each file name -將時間戳記附加到每個檔案名稱上 - -On completion: -完成時: - -On errors: -錯誤時: - -On success: -成功時: - -Main config -主要配置 - -empty -空的 - -Leave as unresolved conflict -保留給未解決的衝突 - -YYYY-MM-DD hhmmss -YYYY-MM-DD hhmmss - -Minimum version count must be smaller than maximum count. -最小版本總數必須小於最大總數。 - -&Restore -還原(&R) - -Files -檔案 - -Percentage -百分比 - -Failed to retrieve update information. -無法擷取更新訊息。 - -Automatic updates: -自動更新: - -Check for Program Updates -檢查程式更新 - -Auto-update now or download manually from the FreeFileSync home page? -要現在自動更新或是從FreeFileSync主頁手動下載? - -&Auto-update -自動更新(&A) - -&Home page -主頁(&H) - -Download now? -要現在下載嗎? - -&Download -下載(&D) - -FreeFileSync is up to date. -FreeFileSync已經是最新版本。 - -Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now? -找不到線上目前FreeFileSync版號。可能有較新的版本可用。現在要手動檢查嗎? - -&Check -檢查(&C) - -Consistency check failed for %x. -對 %x 一致性檢查失敗。 - -Installation was registered on a different operating system. -已安裝註冊在不同的作業系統上。 - -Failed to activate FreeFileSync Donation Edition. -無法啟動FreeFileSync贊助版。 - -Incorrect activation key. -啟用金鑰不正確。 - -Unable to register to receive system messages. -無法註冊以接收系統訊息。 - -The %x installation option is only available in the FreeFileSync Donation Edition. -%x 安裝選項僅在FreeFileSync贊助版可用。 - -Cannot find system function %x. -找不到系統功能 %x。 - -Unable to register device notifications for %x. -無法為 %x 註冊裝置通知。 - -The file is locked by another process: -檔案被另一個處理程序鎖定: - -Failed to determine file permission support for folder %x. -無法確定資料夾 %x 的檔案權限。 - -Cannot read security context of %x. -無法讀取 %x 的安全內容。 - -Cannot write security context of %x. -無法寫入 %x 的安全內容。 - -Cannot read permissions of %x. -無法讀取 %x 的權限。 - -Cannot copy permissions from %x to %y. -無法複製從 %x 到 %y 的權限。 - -%x is not a regular directory name. -%x 不是一般目錄名稱。 - -Cannot copy attributes from %x to %y. -無法複製從 %x 到 %y 的屬性。 - -%x TB -%x TB - -%x PB -%x PB - - -1 min -%x min - - -%x 分 - - - -1 hour -%x hours - - -%x 小時 - - -Cannot set privilege %x. -無法設定 %x 的特權。 - -Unable to suspend system sleep mode. -無法中止系統睡眠模式。 - -Cannot change process I/O priorities. -無法更改I/O處理優先順序。 - -Checking recycle bin failed for folder %x. -檢查資源回收筒的資料夾 %x 失敗。 - -Unable to shut down the system. -無法關閉系統。 - -Prepare installation -準備安裝 - -Choose which components you want to install. -選擇您要安裝的元件。 - -Select installation type: -選擇安裝類型: - -Local -本機 - -Portable -可攜式 - -Save settings in %x -將設定儲存在 %x 中 - -Register FreeFileSync file extensions -註冊FreeFileSync檔案關聯 - -Create Explorer context menu entries -建立檔案總管右鍵功能表 - -Save settings in installation directory -儲存設定到安裝目錄 - -Do not write to Registry -不要寫入註冊表 - -Just copy the files -只要複製檔案 - -Choose a directory for installation: -選擇安裝目錄: - -Create shortcuts: -建立捷徑: - -Desktop -桌面 - -Start Menu -開始功能表 - -Send To -傳送到 - -Registering FreeFileSync file extensions -註冊FreeFileSync檔案關聯 - -Unregistering FreeFileSync file extensions -取消註冊FreeFileSync檔案關聯 - -FreeFileSync Configuration -FreeFileSync配置 - -FreeFileSync Batch File -FreeFileSync批次檔 - -FreeFileSync Synchronization Database -FreeFileSync同步資料庫 - -RealTimeSync Configuration -RealTimeSync配置 - -Edit with FreeFileSync -使用FreeFileSync進行編輯 - -Instead of an ad, here's an animal. -這是一隻動物,不是廣告。 - -The FreeFileSync portable version cannot install into a subfolder of %x. -FreeFileSync可攜式版本無法安裝到 %x 的子資料夾。 - -Please choose the local installation type or select a different folder for installation. -請選擇本機安裝類型或選擇不同的安裝資料夾。 - -Get the Donation Edition with bonus features and help keep FreeFileSync ad-free. -取得贊助版的獎勵功能,並協助維持FreeFileSync無廣告。 - diff --git a/FreeFileSync/Build/Resources/Languages/croatian.lng b/FreeFileSync/Build/Resources/Languages/croatian.lng deleted file mode 100755 index c1fbb9f7..00000000 --- a/FreeFileSync/Build/Resources/Languages/croatian.lng +++ /dev/null @@ -1,2152 +0,0 @@ -
- Hrvatski - Slavko Blažević - hr_HR - flag_croatia.png - 3 - n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2 -
- -Cannot read file %x. -Ne mogu čitati datoteku %x. - - -Unexpected size of data stream. -Expected: %x bytes -Actual: %y bytes - - -Neočekivana veličina podataka. -Očekivano: %x bajta -Stvarno: %y bajta - - -Cannot write file %x. -Ne mogu zapisati datoteku %x. - -Cannot write permissions of %x. -Ne mogu zapisati dopuštenja za %x. - -Operation not supported between different devices. -Zadatak nije podržan između različitih uređaja. - -Cannot delete file %x. -Ne mogu izbrisati datoteku %x. - -Cannot delete symbolic link %x. -Nije moguće brisanje simbolične poveznice %x. - -Cannot delete directory %x. -Ne mogu izbrisati mapu %x. - -Cannot move file %x to %y. -Ne mogu premjestiti datoteku %x u %y. - -Cannot copy symbolic link %x to %y. -Ne može se kopirati simbolična poveznica %x prema %y. - -Error Code %x -Kod greške %x. - -Cannot read directory %x. -Nije moguće učitati mapu %x. - -Cannot write modification time of %x. -Ne mogu zapisati vrijeme izmjene %x. - -Cannot read file attributes of %x. -Ne mogu pročitati osobine od %x. - -Cannot create directory %x. -Ne mogu izraditi mapu %x. - -Cannot determine final path for %x. -Ne mogu odrediti završnu putanju za %x. - -Operation not supported by device. -Zadatak nije podržan od uređaja. - -Cannot resolve symbolic link %x. -Ne mogu odrediti simboličnu poveznicu %x. - -Unable to move %x to the recycle bin. -Nije moguće premjestiti %x u koš za smeće. - -Authentication completed. -Provjera autentičnosti dovršena. - -You may close this page now and continue with FreeFileSync. -Sada možete zatvoriti ovu stranicu i nastaviti sa FreeFileSync. - -Authentication failed. -Provjera autentičnosti nije uspjela. - -Unable to connect to %x. -Nije moguće povezivanje na %x. - -Cannot find %x. -Nije moguće pronaći %x. - -The name %x is used by more than one item in the folder. -Naziv %x se koristi za više od jedne stavke u mapi. - -Please authorize access to user account %x. -Molimo odobrite pristup korisničkom računu %x. - -Cannot open file %x. -Ne mogu otvoriti datoteku %x. - -The name %x is already used by another item. -Naziv %x se već koristi u drugoj datoteci. - -Cannot determine free disk space for %x. -Nije moguće izračunati slobodan prostor diska za %x. - -Unable to disconnect from %x. -Nije moguće prekinuti vezu s %x. - -Unable to access %x. -Nije moguće pristupiti %x. - -Failed to get information about server %x. -Nije moguće pristupiti informacijama servera %x. - -Cannot monitor directory %x. -Ne mogu nadzirati direktorij %x. - -Cannot find device %x. -Nije moguće pronaći uređaj %x. - -Cannot open directory %x. -Ne mogu otvoriti mapu %x. - -Unsupported item type. -Nepodržan tip datoteke. - -Incorrect command line: -Netočna naredbena linija: - -The server does not support authentication via %x. -Server ne podržava provjeru autentičnosti preko %x. - -Required: -Potrebno: - - -Operation timed out after 1 second. -Operation timed out after %x seconds. - - -Vrijeme za operaciju je isteklo nakon %x sekundu. -Vrijeme za operaciju je isteklo nakon %x sekundi. -Vrijeme za operaciju je isteklo nakon %x sekundi. - - - -Cannot wait on more than 1 connection at a time. -Cannot wait on more than %x connections at a time. - - -Ne može se čekati na više od %x konekcije istovremeno. -Ne može se čekati na više od %x konekcija istovremeno. -Ne može se čekati na više od %x konekcija istovremeno. - - -Active connections: %x -Aktivne konekcije: %x - -Failed to open SFTP channel number %x. -Nije uspjelo povezivanje na SFTP kanal broj %x. - -Both sides have changed since last synchronization. -Obje strane su promjenjene nakon zadnje sinkronizacije. - -Cannot determine sync-direction: -Ne mogu odrediti smjer sinkronizacije: - -No change since last synchronization. -Nema promjena od zadnje sinkronizacije. - -The database entry is not in sync considering current settings. -Unos baze podataka nije u sinkronizaciji s obzirom na trenutne postavke. - -Setting default synchronization directions: Old files will be overwritten with newer files. -Postavljam zadani sinkronizacijski smjer: Stare datoteke će biti prepisane novim datotekama. - -Creating file %x -Izrađujem datoteku %x - -Creating folder %x -Kreiranje mape %x - -Creating symbolic link %x -Izrađujem simboličnu poveznicu %x - -Moving file %x to the recycle bin -Premještnje datoteke %x u koš za smeće - -Moving folder %x to the recycle bin -Premještnje mape %x u koš za smeće - -Moving symbolic link %x to the recycle bin -Premještnje simobličnog linka %x u koš za smeće - -Deleting file %x -Brisanje datoteke %x - -Deleting folder %x -Brisanje mape %x - -Deleting symbolic link %x -Brisanje simboličnog linka %x - -Checking recycle bin availability for folder %x... -Provjeravanje dosupnosti kante za smeće za mapu %x... - -The recycle bin is not supported by the following folders. Deleted or overwritten files will not be able to be restored: -Koš za smeće nije podržan od slijedećih mapa. Izbrisane ili prepisane datoteke neće biti moguće povratiti: - -An exception occurred -Dogodilo se izuzeće - -A left and a right directory path are expected after %x. -Lijeva i desna putanja do mapa je očekivana nakon %x. - -Syntax error -Greška sintakse - -Cannot find file %x. -Nije moguće pronaći datoteku %x. - -Error -Greška - -File %x does not contain a valid configuration. -Datoteka %x ne sadrži valjane postavke. - -The config file must not contain settings at directory pair level when directories are set via command line. -Konfiguracijska datoteka ne smije sadržavati postavke na razini para direktorija kada su direktoriji postavljeni putem naredbene linije. - -Directories cannot be set for more than one configuration file. -Direktoriji ne mogu biti postavljeni za više od jedne konfigracijske datoteke. - -Command line -Naredbena linija - -Syntax: -Sintaksa: - -config files: -config datoteke: - -directory -direktorij - -global config file: -globalna config datoteka: - -Any number of FreeFileSync "ffs_gui" and/or "ffs_batch" configuration files. -Bilo koji broj FreeFileSync "ffs_gui" i/ili "ffs_batch" konfiguracijskih datoteka. - -Any number of alternative directory pairs for at most one config file. -Bilo koji broj alternativnih parova mapa za najmanje jednu config datoteku. - -Open the selected configuration for editing only, without executing it. -Otvorite odabrane postavke za izmjenu bez da ih izvršite. - -Path to an alternate GlobalSettings.xml file. -Putanja do alternativne GlobalSettings.xml datoteke. - -Installation files are corrupted. Please reinstall FreeFileSync. -Instalacijske datoteke su oštećene. Molimo ponovno instalirajte FreeFileSync. - -Cannot find the following folders: -Ne mogu pronaći slijedeće mape: - -The following folders do not yet exist: -Navedene mape još ne postoje: - -The folders are created automatically when needed. -Mape se izrađuju automatski kada su potrebne. - -The following folder paths differ in case. Please use a single form in order to avoid duplicate accesses. -Navedene mape se samo razlikuju u velikim i malim slovima. Molimo koristite jednoličan naziv mapa kako bi izbjegli duplikate. - -Scanning: -Pretražujem: - -Comparison finished: -Usporedba dovršena: - - -1 item found -%x items found - - -%x stavka pronađena -%x stavki pronađeno -%x stavki pronađeno - - -Time elapsed: -Proteklo vremena: - -File %x has an invalid date. -Datoteka %x ima nevažeći datum. - -Date: -Datum: - -Files have the same date but a different size. -Datoteke imaju isti datum ali različitu veličinu. - -Size: -Veličina: - -Content comparison was skipped for excluded files. -Usporedba sadržaja je preskočena za izdvojene datoteke. - -Items differ in attributes only -Stavke se razlikuju samo u atributima - -Resolving symbolic link %x -Rješavam simboličku vezu %x - -Comparing content of files %x -Uspoređivanje sadržaja datoteka %x - -Generating file list... -Generiranje popisa datoteka... - -Fail-safe file copy -Kopiranje zaštićeno od grešaka - -Enabled -Uključeno - -Disabled -Isključeno - -Copy locked files -Kopiraj zaključane datoteke - -Copy file access permissions -Kopiraj datotečna dopuštenja - -File time tolerance -Tolerancija vremena datoteke - -Run with background priority -Pokreni s pozadinskim prioritetom - -Lock directories during sync -Zaključaj direktorije prilikom sinkronizacije - -Verify copied files -Potvrdi kopirane datoteke - -Using non-default global settings: -Korištenje ne-standardnih global postavki: - -A folder input field is empty. -Polje za odabir mape je prazno. - -The corresponding folder will be considered as empty. -Odgovarajuća mapa će se smatrati praznom. - -Exclude: -Isključi: - -One base folder of a folder pair is contained in the other one. -Jedna bazna mapa od para mapa se nalazi u drugoj mapi. - -The folder should be excluded from synchronization via filter. -Mapa bi trebala biti izdvojena od sinkronizacije pomoću filtera. - -Calculating sync directions... -Izračunavanje smjerova sinkronizacije... - -Out of memory. -Nedostatak memorije. - -Show in Explorer -Prikaži u Exploreru - -Open with default application -Otvori s zadanom aplikacijom - -Browse directory -Odaberi direktorij - -Database file %x is incompatible. -Datoteka baze %x je nekompatibilna. - -Initial synchronization: -Početna sinkronizacija: - -Database file %x does not yet exist. -Datoteka baze %x još ne postoji. - -Database file is corrupted: -Datoteka baze je oštećena: - -Loading file %x... -Učitavam datoteku %x... - -The database files do not yet contain information about the last synchronization. -Datoteke baze još uvijek ne sadrže informacije o zadnjoj sinkronizaciji. - -Saving file %x... -Spremanje datoteke %x... - -Searching for folder %x... -Tražim mapu %x... - -Timeout while searching for folder %x. -Isteklo vrijeme traženja mape %x. - -Cannot get process information. -Ne mogu dobit informacije o procesu. - -Waiting while directory is locked: -Čekam dok se mapa zaključa: - -Lock owner: -Vlasnik ključa: - -Detecting abandoned lock... -Pronalazim napušteni ključ... - - -1 sec -%x sec - - -%x sek -%x sek -%x sek - - -Item exists on left side only -Stavka postoji samo na lijevoj strani - -Item exists on right side only -Stavka postoji samo na desnoj strani - -Left side is newer -Lijeva strana je novija - -Right side is newer -Desna strana je novija - -Items have different content -Stavke imaju različit sadržaj - -Both sides are equal -Obje strane su jednake - -Conflict/item cannot be categorized -Konflikt/stavka ne može biti razvrstana - -Copy new item to left -Kopiraj novu stavku lijevo - -Copy new item to right -Kopiraj novu stavku desno - -Delete left item -Obriši lijevu stavku - -Delete right item -Obriši desnu stavku - -Move file on left -Premjesti datoteku lijevo - -Move file on right -Premjest datoteku desno - -Update left item -Ažuriraj lijevu stavku - -Update right item -Ažuriraj desnu stavku - -Do nothing -Ne radi ništa - -Update attributes on left -Osvježi atribute lijevo - -Update attributes on right -Osvježi atribute desno - -Error parsing file %x, row %y, column %z. -Greška u analizi datoteke %x, red %y, stupac %z. - -Services -Servisi - -Show All -Prikaži sve - -Hide Others -Sakrij ostale - -Hide %x -Sakrij %x - -Quit %x -Napusti %x - -Cannot set directory locks for the following folders: -Nije moguće zaključavanje slijedećih foldera: - -Errors: -Pogreške: - -Warnings: -Upozorenja: - -Items processed: -Obrađene stavke: - -Items remaining: -Preostale stavke: - -Total time: -Ukupno vrijeme: - -Warning -Upozorenje - -Stopped -Zaustavljeno - -Cleaning up log files: -Brisanje log datoteka: - - -1 thread -%x threads - - -%x nit -%x niti -%x niti - - -%x/sec -%x/sek - -%x items -%x stavki - -Completed successfully -Dovršeno uspješno - -Completed with warnings -Dovršeno s upozorenjima - -Completed with errors -Dovršeno s pogreškama - -Cannot access the Volume Shadow Copy Service. -Ne mogu pristupiti Voulme Shadow Copy servisu. - -Please run the 64-bit version of FreeFileSync to create shadow copies on this system. -Molimo pokrenite 64-bitnu verziju FreeFileSync-a da bi izradili shadow kopije na ovom sustavu. - -Volume name %x is not part of file path %y. -Naziv spremnika %x nije dio putanje datotke %y. - -File time and size -Vrijeme i veličina datoteke - -File content -Sadržaj datoteke - -File size -Veličina datoteke - -Two way -Dvosmjerno - -Mirror -Zrcalno - -Update -Ažuriraj - -Custom -Prilagođeno - -Multiple... -Mnogostruko... - -Cannot write file attributes of %x. -Ne mogu zapisati svojstva od %x. - -%x and %y have different content. -%x. i %y imaju različit sadržaj. - -Data verification error: -Pogreška verificiranja podataka: - -Moving file %x to %y -Premještanje datoteke %x u %y - -Moving folder %x to %y -Premještanje mape %x u %y - -Moving symbolic link %x to %y -Premještanje simboličnog linka %x u %y - -Updating file %x -Ažuriram datoteku %x - -Updating symbolic link %x -Ažuriram simboličnu poveznicu %x - -Verifying file %x -Provjeravanje datoteke %x - -Updating attributes of %x -Obnavljam atribute od %x - -Source item %x not found -Izvorna datoteka %x nije pronađena - -Parent folder %x is not existing. -Glavna mapa %x ne postoji. - -Cannot copy file %x to %y. -Ne mogu kopirati datoteku %x na %y. - -Creating a Volume Shadow Copy for %x... -Kreiranje Volume Shadow Copy za %x... - -Cannot find folder %x. -Ne mogu pronaći mapu %x. - -Target folder %x is already existing, but was not available during folder comparison. -Ciljna mapa %x već postoji, ali nije bila dostupna prilikom usporedbe mapa. - -Target folder input field must not be empty. -Odredišna mapa ne može biti prazna. - -Source folder %x not found. -Izvorna mapa %x nije pronađena. - -Please enter a target folder for versioning. -Molimo odaberite odredišnu mapu za označavanje. - -The following items have unresolved conflicts and will not be synchronized: -Slijedeće stavke imaju nerješene konflikte i zato neće biti sinkronizirane: - -Folder pair: -Par mapa: - -The following folders are significantly different. Please check that the correct folders are selected for synchronization. -Slijedeće mape su značajno različite. Molimo provjerite da su mape za sinkronizaciju ispravno odabrane. - -Not enough free disk space available in: -Nedovoljno prostora na disku: - -Available: -Dostupno: - -Some files will be synchronized as part of multiple base folders. -Neke datoteke će biti sinkronizirane kao dio više baznih mapa. - -To avoid conflicts, set up exclude filters so that each updated file is included by only one base folder. -Da biste izbjegli sukobe, postavite filtere za izuzeće tako da svaka ažurirana datoteka bude sadržana u samo jednoj baznoj mapi. - -Versioning folder: -Verzija mape: - -Base folder: -Bazna mapa: - -The versioning folder is contained in a base folder. -Usporedni folder se nalazi u baznom folderu. - -Synchronizing folder pair: -Mape sinkronizacije:: - -Generating database... -Izrađivanje baze podataka... - -Searching for old file versions: -Pretraživanje starih verzija datoteka: - -Removing old file versions: -Uklanjanje starih verzija datoteka: - -Unable to create time stamp for versioning: -Nije moguća izrada vremenske oznake za označavanje: - -Drag && drop -Povuci && ispusti - -Select a folder -Odaberite mapu - -&New -&Novo - -&Open... -&Otvori... - -Save &as... -Spremiti &kao... - -E&xit -I&zlaz - -&File -&Datoteka - -&View help -&Pogledaj pomoć - -&About -&O programu - -&Help -&Pomoć - -Usage: -Uporaba: - -Select folders to watch. -Odaberite mape za nadziranje. - -Enter a command line. -Unesite naredbu. - -Press 'Start'. -Pretisnite 'Start'. - -To get started just import a "ffs_batch" file. -Da biste započeli jednostavno uvezite "ffs_batch" datoteku. - -Folders to watch: -Mape za nadziranje: - -Add folder -Dodaj mapu - -Remove folder -Ukloni mapu - -Browse -Odaberi - -Idle time (in seconds): -Vrijeme pripravnosti (u sekundama): - -Idle time between last detected change and execution of command -Vrijeme čekanja između zadnje prepoznate promjene i izvršenja naredbe - -Command line: -Naredbena linija: - -&Hide console window -&Sakrij upravljački prozor - - -The command is triggered if: -- files or subfolders change -- new folders arrive (e.g. USB stick insert) - - -Naredba će biti pokrenuta ako se: -- datoteke ili podmape promijene -- pojave nove mape (npr. umetanje USB stika) - - -Start -Započni - -About -O programu - -Build: %x -Inačnica: %x - -All files -Sve datoteke - -Automated Synchronization -Automatska Sinkronizacija - -The %x protocol does not support directory monitoring: -%x protokol ne podržava nadziranje mapa: - -Directory monitoring active -Nadzor direktorija je aktivan - -Waiting until directory is available: -Čekanje dok mapa bude dostupna: - -&Configure -&Postavke - -&Show error message -&Pokaži poruke o greškama - -&Quit -&Izlaz - -&Retry -&Ponovi - - -1 byte -%x bytes - - -%x bajt -%x bajta -%x bajtova - - -%x MB -%x MB - -%x KB -%x KB - -%x GB -%x GB - -Loading... -Učitavam... - -Scanning... -Tražim... - -configuration file -datoteka postavki - -System: Sleep -Sistem: Spavanje - -System: Shut down -Sistem: Isključivanje - -Nothing to synchronize -Ništa za sinkronizirati - -Executing command: -Naredba za izuzeće: - -You can switch to FreeFileSync's main window to resolve this issue. -Možete prijeći na glavni prozor FreeFileSynca da bi rješili ovaj problem. - -&Don't show this warning again -&Ne prikazuj više ovo upozorenje. - -&Ignore -&Ignoriraj - -&Switch -&Prebaci - -Switching to FreeFileSync's main window -Prebacivanje na glavni prozor FreeFileSync - -Automatic retry -Automatski pokušaj - -Ignore &all -Ignoriraj &sve - -Retrying operation... -Ponavljam operaciju... - -Serious Error -Ozbiljna Pogreška - -Last session -Zadnja sesija - -Today -Danas - - -1 day -%x days - - -%x dan -%x dana -%x dana - - -Name -Naziv - -Last sync -Zadnja sinkr - -Log -Izvješće - -Folder -Mapa - -Symlink -Poveznica simbola - -Full path -Puna putanja - -Relative path -Relativna putanja - -Item name -Naziv stavke - -Size -Veličina - -Date -Datum - -Extension -Ekstenzija - -Category -Kategorija - -Action -Radnja - -Local comparison settings -Lokalne postavke usporedbe - -Local synchronization settings -Lokalne postavke sinkronizacije - -Local filter -Lokalni filter - -Active -Aktivno - -None -Ništa - -Remove local settings -Ukloni lokalne postavke - -Clear local filter -Očisti lokalni filter - -Copy -Kopiraj - -Paste -Zalijepi - -The selected folder %x cannot be used with FreeFileSync. -Odabrana mapa %x ne može biti korištena u FreeFileSync-u. - -Please select a folder on a local file system, network or an MTP device. -Molimo odaberite mapu na lokalnom disku, mreži ili MTP uređaju. - -Defined by context of use -Određeno kontekstom uporabe - -Requires FreeFileSync Donation Edition -Zahtjeva FreeFileSync Donatorsku Verziju - -&Save -&Spremi - -Save as &batch job... -Spremi kao &Slijedni zadatak... - -Show &log -Prikaži &zapisnik - -Start &comparison -Započni &usporedbu - -C&omparison settings -P&ostavke usporedbe - -&Filter settings -&Postavke filtera - -S&ynchronization settings -P&ostavke sinkronizacije - -Start &synchronization -Započni &sinkronizaciju - -&Actions -&Akcije - -&Preferences -&Perfomanse - -&Language -&Jezik - -&Find... -&Pronađi... - -&Export file list... -&Izvoz popisa datoteka... - -&Reset layout -&Resetiraj prikaz - -&Tools -&Alati - -&Check for updates now -&Provjeri nadogradnju sada - -Check &automatically once a week -Provjeri &automatski jednom tjedno - -Cancel -Odustani - -Compare -Usporedi - -Synchronize -Sinkroniziraj - -Add folder pair -Dodaj više mapa - -Remove folder pair -Ukloni ovu mapu - -Access online storage -Pristupi online pohrani - -Close search bar -Zatvori traku pretraživanja - -Find: -Pronađi: - -Match case -Identičan naziv - -Processed: -Odrađeno: - -Remaining: -Preostalo: - -New -Novo - -Open... -Otvori... - -Save -Spremi - -Save as... -Spremi kao... - -View type: -Vrsta prikaza: - -Select view: -Odaberite prikaz: - -Save as default -Spremi kao standardno - -Statistics: -Statistika: - -Number of files and folders that will be deleted -Broj datoteka i mapa koje će biti obrisane - -Number of files that will be updated -Broj datoteka koje će biti ažurirane - -Number of files and folders that will be created -Broj datoteka i foldera koje će biti izrađene - -Total bytes to copy -Ukupno bajta za kopirati - -Arrange folder pair -Rasporedi par mapa - -Main settings: -Glavne postavke: - -Use local settings: -Koristi lokalne postavke: - -Select a variant: -Odaberi opciju: - -Include &symbolic links: -Koristi &simbolične poveznice: - -&Follow -&Prati - -&Direct -&Direktno - -More information -Više informacija - -&Ignore time shift [hh:mm] -&Zanemari vremenski pomak [hh:mm] - -List of file time offsets to ignore -Popis u vremenskim razlikama datoteka za ignorirati - -Example: -Primjer: - -Handle daylight saving time -Upravljaj ljetnim računanjem vremena - -Ignore errors -Zanemariti pogreške - -Retry count: -Broj pokušaja: - -Delay (in seconds): -Odgoda (u sekundama): - -Performance improvements: -Poboljšanje perfomansi: - -Parallel file operations: -Paralelne operacije datotekama: - -How to get best performance? -Kako dobiti najbolje perfomanse? - -Local settings: -Lokalne postavke: - -Include: -Obuhvati: - -Show examples -Prikaži primjere - -Select filter rules to exclude certain files from synchronization. Enter file paths relative to their corresponding folder pair. -Odaberite filter pravila da biste isključili određene datoteke iz sinkronizacije. Unesite relativnu putanju datoteka prema njihovim odgovarajućim parovima mapa. - -File size: -Veličina datoteke: - -Minimum: -Minimum: - -Maximum: -Maksimum: - -Time span: -Vremenski raspon: - -C&lear -O&čisti - -Detect moved files -Otkrij premještene datoteke - - -- Not supported by all file systems -- Requires and creates database files -- Detection not available for first sync - - -- Nije podržano kod svih datotečnih sustava -- Zahtjeva i stvara bazu podataka -- Otkrivanje nije dostupno za prvu sinkronizaciju - - -Delete files: -Izbriši datoteke: - -&Recycle bin -&Koš za smeće - -&Permanent -&Trajno - -&Versioning -&Odabir - -Move files to a user-defined folder -Premjesti datoteke u mapu određenu od korsnika - -Naming convention: -Naziv pravila: - -Limit file versions: -Limitiranje verzija datoteka: - -Last x days: -Zadnjih nekoliko dana: - -&Override default log path: -&Prepiši zadanu putanju zapisnika: - -Run a command: -Izvrši naredbu: - -OK -U redu - -Connection type: -Tip konekcije: - -Connected user accounts: -Povezani korisnički računi: - -&Add connection -&Dodaj račun - -&Disconnect -&Odspojiti - -Selected user account: -Odabrani korisnički račun: - -Server name or IP address: -Naziv servera ili IP adresa: - -Port: -Port: - -Encryption: -Enkripcija: - -&Disabled -&Isključeno - -&Explicit SSL/TLS -&Isključivo SSL/TLS - -Authentication: -Provjera korisnika: - -&Password -&Lozinka - -&Key file -&Ključ - -&SSH agent -&SSH upravitelj - -User name: -Korisničko ime: - -Private key file: -Privatni ključ: - -&Show password -&Prikaži lozinku - -Directory on server: -Mapa na serveru: - -Access timeout (in seconds): -Prekid pristupa nakon (u sekundama): - -SFTP channels per connection: -SFTP kanala po konekciji: - -Detect server limit -Detektiranje limita servera - -Select Folder -Odaberi mapu - -Variant: -Opcija: - -&Don't show this dialog again -&Nemoj više prikazivati ovaj dijaloški prozor - -Bytes: -Bajta: - -Items: -Stavki: - -Synchronizing... -Sinkroniziranje... - -Minimize to notification area -Minimiziraj u područje obavjesti - -Bytes -Bajta - -Items -Stavke - -When finished: -Nakon završetka: - -Auto-close -Auto-zatvaranje - -Close -Zatvori - -&Pause -&Pauziraj - -Stop -Zaustavi - -Create a batch file for unattended synchronization. To start, double-click this file or schedule in a task planner: %x -Stvaranje slijednih datoteka za sinkronizaciju bez nadzora. Da započnete, dvostruko-kliknite na ovu datoteku ili planirajte u planeru zadataka: %x - -Progress dialog: -Prozor napretka: - -Run minimized -Pokreni minimizirano - -Show pop-up on errors or warnings -Prikaži skočni prozor pri greškama i upozorenjima - -&Cancel -&Odustani - -Stop synchronization at first error -Zaustavi sinkronizaciju pri prvoj pogrešci - -How can I schedule a batch job? -Kako zakazati slijedni zadatak? - -&Keep relative paths -&Zadrži relativne putanje - -&Overwrite existing files -&Prepiši postojeće datoteke - -The following settings are used for all synchronization jobs. -Ove postavke se koriste za sve sinkronizacijske zadatke. - - -Copy to a temporary file (*.ffs_tmp) before overwriting target. -This guarantees a consistent state even in case of a serious error. - - -Kopiraj u privremenu datoteku (*.ffs_tmp) prije prepisivanja ciljne datoteke -Ovo garantira stabilno stanje čak u slučaju ozbiljne greške. - - -recommended -preporučljivo - -Copy shared or locked files using the Volume Shadow Copy Service. -Kopiraj djeljene ili zaključane datoteke pomoću Volume Shadow Copy servisa. - -requires administrator rights -zahtjeva administratorska prava - -Transfer file and folder permissions. -Prenesi dopuštenja za datoteke i mape. - -Show all permanently hidden dialogs and warning messages again -Prikaži sve trajno skrivene prozore i poruke upozorenja ponovno - -Default log path: -Zadana putanja zapisnika: - -&Delete logs after x days: -&Izbrisati zapisnike nakon x dana: - -Notification sounds: -Zvukovi upozorenja: - -Synchronization finished: -Sinkronizacija dovršena: - -Customize context menu: -Prilagodite kontekstni izbornik: - -Description -Opis - -&Default -&Zadano - -Feedback and suggestions are welcome: -Povratne informacije i prijedlozi su dobrodošli: - -Home page -Web stranica - -FreeFileSync Forum -FreeFileSync Forum - -Email -Email - -If you like FreeFileSync: -Ako volite FreeFileSync: - -Support with a donation -Podržite nas donacijom - -The auto updater was disabled by the administrator. -Auto updater je onemogućen od strane administratora. - -Donation details -Detalji donacije - -Source code written in C++ using: -Izvorni kod napisan u C++ uz korištenje: - -Published under the GNU General Public License: -Objavljeno pod GNU General Public Licencom: - -Many thanks for localization: -Velike zahvale idu: - -Activate the FreeFileSync Donation Edition by one of the following methods: -Aktivirajte FreeFileSync Donatorsku Verziju pomoću sljedećih načina: - -Activate via internet now: -Aktivacija preko interneta: - -Activate online -Aktiviraj online - -Retrieve an offline activation key from the following URL: -Preuzeti offline aktivacijski ključ sa sljedeće URL adrese: - -&Copy to clipboard -&Kopirati u međuspremnik - -Enter activation key: -Unesite aktivacijski ključ: - -Activate offline -Aktivacija offline - -Highlight configurations that have not been run for more than the following number of days: -Istakni postavke koje nisu pokrenute više od broja dana: - -FreeFileSync requires access rights to avoid "Operation not permitted" errors when synchronizing your data (e.g. Mail, Messages, Calendars). -FreeFileSync zahtjeva prava pristupa kako bi izbjegli pogrešku "Naredba nije dopuštena" prilikom sinkronizacije vaših datoteka (npr. Mail, Poruke, Kalendar). - -Locate the FreeFileSync app -Lociranje FreeFileSync aplikacije - -Open Security && Privacy -Otvoriti Sigurnost i privatnost - -Click the lock to allow changes. -Kliknite na lokot kako bi odobrili promjene. - -Drag FreeFileSync into the panel. -Povući FreeFileSync u prozor. - -Synchronization Settings -Postavke Sinkronizacije - -Access Online Storage -Pristupi online pohrani - -Save as a Batch Job -Spremi kao slijedni zadatak - -Delete Items -Izbriši stavke - -Copy Items -Kopiraj stavke - -Options -Opcije - -Select Time Span -Odaberite vremenski raspon - -Highlight Configurations -Istakni postavke - -Grant Full Disk Access -Dopustiti puni pristup disku - -Info -Info - -No log entries -Nema izvještaja - -Select all -Odaberi sve - -&Options -&Opcije - -Main Bar -Glavna traka - -Folder Pairs -Parovi mapa - -Find -Pronađi - -View Settings -Postavke prikaza - -Configuration -Postavke - -Overview -Pregled - -Swap sides -Zamjeni strane - -Show "%x" -Prikaži "%x" - -&Show details -&Prikaži detalje - -FreeFileSync %x is available! -FreeFileSync %x je dostupan! - -Local path not available for %x. -Nije dostupna lokalna putanja za %x. - -Confirm -Potvrdi - - -Do you really want to execute the command %y for one item? -Do you really want to execute the command %y for %x items? - - -Da li doista želite izvršiti naredbu %y za %x stavke? -Da li doista želite izvršiti naredbu %y za %x stavki? -Da li doista želite izvršiti naredbu %y za %x stavki? - - -&Execute -&Izvrši - -Set direction: -Odaberi smjer: - -multiple selection -višestruki odabir - -&Include via filter: -&Uključi pomoću filtera: - -&Exclude via filter: -&Izdvoji pomoću filtera: - -Include temporarily -Trenutno uključi - -Exclude temporarily -Izuzmi privremeno - -&Synchronize selection -&Sinkroniziraj odabrano - -&Copy to... -&Kopiraj na... - -&Delete -&Izbriši - -Show icons: -Prikaži ikone: - -Small -Male - -Medium -Srednje - -Large -Velike - -Select time span... -Odaberite vremenski raspon... - -Donation Edition -Donatorska Verzija - -Folder Comparison and Synchronization -Usporedba i sinkronizacija mapa - -Configuration saved -Postavke spremljene - -FreeFileSync batch -FreeFileSync slijedni zadatak - -Do you want to save changes to %x? -Da li želite spremiti izmjene za %x? - -Never save &changes -Nikad ne spremaj &promjene - -Do&n't save -&Nemoj spremiti - -%x cannot be renamed. -%x nije moguće preimenovati. - -New name: -Novi naziv: - -Rename Configuration -Postavke preimenovanja - -Configuration name must not be empty. -Naziv postavki ne može biti prazan. - -&Rename... -&Preimenovanje... - -Hide configuration -Sakrij postavke - -Highlight... -Istakni.... - -Clear filter -Očisti filter - -Show files that exist on left side only -Prikaži datoteke koje postoje samo na lijevoj strani - -Show files that exist on right side only -Prikaži datoteke koje postoje samo na desnoj strani - -Show files that are newer on left -Prikaži datoteke koje su novije lijevo - -Show files that are newer on right -Prikaži datoteke koje su novije desno - -Show files that are equal -Prikaži jednake datoteke - -Show files that are different -Prikaži datoteke koje su različite - -Show conflicts -Prikaži sukobe - -Show files that will be created on the left side -Prikaži datoteke koje će biti kreirane na lijevoj strani - -Show files that will be created on the right side -Prikaži datoteke koje će biti kreirane na desnoj strani - -Show files that will be deleted on the left side -Prikaži datoteke koje će biti izbrisane na lijevoj strani - -Show files that will be deleted on the right side -Prikaži datoteke koje će biti izbrisane na desnoj strani - -Show files that will be updated on the left side -Prikaži datoteke koje će biti ažurirane na lijevoj strani - -Show files that will be updated on the right side -Prikaži datoteke koje će biti ažurirane na desnoj strani - -Show files that won't be copied -Prikaži datoteke koje neće biti kopirane - -Show filtered or temporarily excluded files -Prikaži filtrirane ili privremeno odvojene datoteke - -Filter -Filtriranje - -All files are in sync -Sve datoteke su u sinkronizaciji - - -1 directory -%x directories - - -%x direktorij -%x direktorija -%x direktorija - - - -1 file -%x files - - -%x datoteka -%x datoteke -%x datoteka - - - -Showing %y of 1 row -Showing %y of %x rows - - -Prikazano %y od %x reda -Prikazano %y od %x redova -Prikazano %y od %x redova - - -Cannot find %x -Ne mogu pronaći %x - -Move up -Premjesti gore - -Move down -Premjesti dolje - -Comma-separated values -Zarezom odvojene vrijednosti - -File list exported -Popis datoteka je izvezen - -Searching for program updates... -Tražim nadogradnju programa... - -Paused -Pauzirano - -Stop requested... -Zatražen prekid... - -Initializing... -Započinjem... - -Comparing content... -Uspoređujem sadržaj... - -&Continue -&Nastavi - -Progress -Napredak - -Thank you, %x, for your donation and support! -Hvala Vam, %x, na vašoj donaciji i podršci! - -Connections -Konekcije - -Recommended range: -Predloženi raspon: - -Do you really want to disconnect from user account %x? -Da li se zaista želite odspojiti od korisničkog računa %x? - -Password: -Lozinka: - -Key passphrase: -Lozinka: - -Please enter a file path. -Molimo unesite putanju datoteke. - - -Copy the following item to another folder? -Copy the following %x items to another folder? - - -Kopirati navedenu %x stavku u drugu mapu? -Kopirati slijedeće %x stavke u drugu mapu? -Kopirati slijedećih %x stavki u drugu mapu? - - -Please enter a target folder. -Molim unesite odredišnu mapu. - - -Do you really want to move the following item to the recycle bin? -Do you really want to move the following %x items to the recycle bin? - - -Da li zaista želite premjestiti sljedeću %x stavku u koš za smeće? -Da li zaista želite premjestiti sljedeće %x stavke u koš za smeće? -Da li zaista želite premjestiti sljedećih %x stavki u koš za smeće? - - -Move -Premjesti - - -Do you really want to delete the following item? -Do you really want to delete the following %x items? - - -Da li zaista želite obrisati sljedeću %x stavku? -Da li zaista želite obristi sljedeće %x stavke? -Da li zaista želite obristi sljedećih %x stavki? - - -Start to synchronize the selection? -Započeti sinkronizaciju odabranog? - -Start synchronization now? -Započeti sinkronizaciju sada? - -Copy DACL, SACL, Owner, Group -Kopiraj DACL, SACL, Vlasnika, Grupu - -Integrate external applications into context menu. The following macros are available: -Integriraj vanjske aplikacije u kontekstni meni. Sljedeći makroi su dostupni: - -Full file or folder path -Puna putanja datoteke ili mape - -Parent folder path -Putanja bazne mape - -Temporary local copy for SFTP and MTP storage -Privremena lokalna kopija za SFTP i MTP pohranu - -Parameters for opposite side -Parametri za suprotnu stranu - -Show hidden dialogs again -Prikaži skrivene prozore ponovno - -All dialogs shown -Svi prozori prikazani - -Downloading update... -Preuzimanje ažuriranja... - -Identify equal files by comparing modification time and size. -Ustanovi jednake datoteke uspoređujući vrijeme izmjene i veličinu. - -Identify equal files by comparing the file content. -Ustanovi jednake datoteke uspoređujući sadržaj datoteke. - -Identify equal files by comparing their file size. -Prepoznaj jednake datoteke uspoređujući njihovu veličinu. - -Identify and propagate changes on both sides. Deletions, moves and conflicts are detected automatically using a database. -Pronađi i izvrši izmjene na obje strane. Izbrisano, premješteno te sukobi se otkriju automatski pomoću baze podataka. - -Create a mirror backup of the left folder by adapting the right folder to match. -Izradi zrcalnu pričuvu lijeve mape prilagođavajući desnu mapu da bude jednaka. - -Copy new and updated files to the right folder. -Kopiraj nove i ažurirane datoteke u desnu mapu. - -Configure your own synchronization rules. -Postavite vaša vlastita pravila za sinkronizaciju. - -Comparison -Usporedba - -Synchronization -Sinkronizacija - -This week -Ovaj tjedan - -This month -Ovaj mjesec - -This year -Ove godine - -Byte -Bajt - -KB -KB - -MB -MB - -Retain deleted and overwritten files in the recycle bin -Zadržati izbrisane i prepisane datoteke u košu za smeće - -Delete and overwrite files permanently -Izbrisati i prepisat datoteke trajno - -Replace -Zamjeni - -Move files and replace if existing -Premjesti datoteke i zamjeni ako već postoje - -Time stamp -Vremenska oznaka - -Move files into a time-stamped subfolder -Premjesti datoteke u vremenski označen podfolder - -File -Datoteka - -Append a time stamp to each file name -Dodijeli vremensku oznaku za svaki naziv datoteke - -On completion: -Pri dovršetku: - -On errors: -Uslijed grešaka: - -On success: -Pri uspješnom dovršetku: - -Main config -Glavne postavke - -empty -prazno - -Leave as unresolved conflict -Ostavi kao neriješeni konflikt - -YYYY-MM-DD hhmmss -GGGG-MM-DD hhmmss - -Minimum version count must be smaller than maximum count. -Broj minimalnih verzija treba biti manji od maksimalnog broja. - -&Restore -&Vrati - -Files -Datoteke - -Percentage -Postotak - -Failed to retrieve update information. -Preuzimanje informacija za ažuriranje nije bilo uspješno. - -Automatic updates: -Automatsko ažuriranje: - -Check for Program Updates -Provjeri za nadogradnje programa - -Auto-update now or download manually from the FreeFileSync home page? -Automatski ažurirati sada ili preuzeti manualno sa FreeFileSync stranice? - -&Auto-update -&Automatsko ažuriranje - -&Home page -&Web stranica - -Download now? -Preuzeti sada? - -&Download -&Preuzmi - -FreeFileSync is up to date. -FreeFileSync je ažuran. - -Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now? -Nije moguće pronaći trenutnu FreeFileSync verziju online. Vjerojatno je dostupna novija verzija. Provjeriti ručno sada? - -&Check -&Provjeri - -Consistency check failed for %x. -Provjera dosljednosti nije uspjela za %x. - -Installation was registered on a different operating system. -Instalacija je registrirana na drugom operacijskom sustavu. - -Failed to activate FreeFileSync Donation Edition. -Aktivacija Donatorske Verzije FreeFileSync nije bila uspješna. - -Incorrect activation key. -Neispravan aktivacijski ključ. - -Unable to register to receive system messages. -Nije moguće registriranje za primanje sistemskih poruka. - -The %x installation option is only available in the FreeFileSync Donation Edition. -%x opcija instalacije je dostupna samo u FreeFileSync Donatorskoj verziji. - -Cannot find system function %x. -Ne mogu pronaći sistemsku funkciju %x. - -Unable to register device notifications for %x. -Nije moguće registrirati prijavu uređaja za %x. - -The file is locked by another process: -Datoteku koristi drugi proces: - -Failed to determine file permission support for folder %x. -Neuspješno otkrivanje dopuštenja pristupa za mapu %x. - -Cannot read security context of %x. -Ne mogu čitati zaštićeni sadržaj %x. - -Cannot write security context of %x. -Ne mogu zapisati zaštićeni sadržaj %x. - -Cannot read permissions of %x. -Ne mogu čitati dopuštenja od %x. - -Cannot copy permissions from %x to %y. -Nije moguće kopiranje dozvola za %x prema %y. - -%x is not a regular directory name. -%x nije ispravan naziv mape. - -Cannot copy attributes from %x to %y. -Nije moguće kopiranje atributa od %x prema %y. - -%x TB -%x TB - -%x PB -%x PB - - -1 min -%x min - - -%x min -%x min -%x min - - - -1 hour -%x hours - - -%x sat -%x sata -%x sati - - -Cannot set privilege %x. -Ne mogu postaviti prava za %x. - -Unable to suspend system sleep mode. -Nije moguće obustaviti sistemsko stanje pripravnosti. - -Cannot change process I/O priorities. -Ne može se promjeniti proces I/O prioriteta. - -Checking recycle bin failed for folder %x. -Provjeravanje koša za smeće neuspješno za mapu %x. - -Unable to shut down the system. -Nije moguće isključiti računalo. - -Prepare installation -Pripremam instalaciju - -Choose which components you want to install. -Odaberite komponente koje želite instalirati. - -Select installation type: -Odaberite vrstu instalacije: - -Local -Lokalno - -Portable -Prenosivo - -Save settings in %x -Spremanje postavki u %x - -Register FreeFileSync file extensions -Registriraj FreeFileSync ekstenziju - -Create Explorer context menu entries -Izradi stavke u Explorer kontekstnom izborniku - -Save settings in installation directory -Spremi postavke u instalacijsku mapu - -Do not write to Registry -Ne upisuj u Registry - -Just copy the files -Samo kopiraj datoteke - -Choose a directory for installation: -Odaberi mapu za instalaciju: - -Create shortcuts: -Izradi prečac: - -Desktop -Radna površina - -Start Menu -Start izbornik - -Send To -Pošalji na - -Registering FreeFileSync file extensions -Registriram FreeFileSync ekstenziju - -Unregistering FreeFileSync file extensions -Uklanjam FreeFileSync ekstenziju - -FreeFileSync Configuration -FreeFileSync Postavke - -FreeFileSync Batch File -FreeFileSync slijedna datoteka - -FreeFileSync Synchronization Database -FreeFileSync sinkronizacijska baza podataka - -RealTimeSync Configuration -RealTimeSync postavke - -Edit with FreeFileSync -Uredi pomoću FreeFileSynca - -Instead of an ad, here's an animal. -Umjesto reklama, prikazujemo vam životinje. - -The FreeFileSync portable version cannot install into a subfolder of %x. -FreeFileSync prijenosna verzija se ne može instalirati u podfolder od %x. - -Please choose the local installation type or select a different folder for installation. -Molimo odaberite lokalnu instalaciju ili odaberite drugu mapu za instalaciju. - -Get the Donation Edition with bonus features and help keep FreeFileSync ad-free. -Preuzmite donatorsku verziju sa bonus opcijama i pomognite da FreeFileSync ostane bez reklama. - diff --git a/FreeFileSync/Build/Resources/Languages/czech.lng b/FreeFileSync/Build/Resources/Languages/czech.lng deleted file mode 100755 index 2594f3aa..00000000 --- a/FreeFileSync/Build/Resources/Languages/czech.lng +++ /dev/null @@ -1,2149 +0,0 @@ -
- Čeština - ViCi - cs_CZ - flag_czech_republic.png - 3 - n==1 ? 0 : n>=2 && n<=4 ? 1 : 2 -
- -Cannot read file %x. -Nelze číst soubor %x. - - -Unexpected size of data stream. -Expected: %x bytes -Actual: %y bytes - - -+Neočekávaná velikost dat. -Očekáváno: %x b -Aktuálně: %y b - - -Cannot write file %x. -Nelze zapsat soubor %x. - -Cannot write permissions of %x. -Nelze zapsat oprávnění pro %x. - -Operation not supported between different devices. -Operace není podporována mezi různými zařízeními. - -Cannot delete file %x. -Nelze smazat soubor %x. - -Cannot delete symbolic link %x. -Nelze smazat symbolický odkaz %x. - -Cannot delete directory %x. -Nelze smazat adresář %x. - -Cannot move file %x to %y. -Nelze přesunout soubor %x do %y. - -Cannot copy symbolic link %x to %y. -Nelze kopírovat symbolický odkaz %x do %y. - -Error Code %x -Chybový kód %x - -Cannot read directory %x. -Nelze číst adresář %x. - -Cannot write modification time of %x. -Nelze nastavit čas změny ve vlastnostech %x. - -Cannot read file attributes of %x. -Nelze číst vlastnosti souboru %x. - -Cannot create directory %x. -Nelze vytvořit adresář %x. - -Cannot determine final path for %x. -Nelze určit výslednou cestu pro %x. - -Operation not supported by device. -Operace není zařízením podporována. - -Cannot resolve symbolic link %x. -Nelze najít odkaz zástupce %x. - -Unable to move %x to the recycle bin. -Není možné přesunout %x do Koše. - -Authentication completed. -Přístup povolen. - -You may close this page now and continue with FreeFileSync. -Nyní můžete tuto stránku zavřít a pokračovat s FreeFileSync. - -Authentication failed. -Přístup odmítnut. - -Unable to connect to %x. -Nepodařilo se připojit k %x. - -Cannot find %x. -Nelze najít %x. - -The name %x is used by more than one item in the folder. -Název %x je použit více jak jednou položkou ve složce. - -Please authorize access to user account %x. -Prosím autorizujte přístup k uživatelskému účtu %x. - -Cannot open file %x. -Nelze otevřít soubor %x. - -The name %x is already used by another item. -Název %x je již používán jinou položkou. - -Cannot determine free disk space for %x. -Nelze zjistit volné místo na disku %x. - -Unable to disconnect from %x. -Nelze se odpojit od %x. - -Unable to access %x. -Nepodařil se přístup k %x. - -Failed to get information about server %x. -Nelze získat informace o serveru %x. - -Cannot monitor directory %x. -Nelze nastavit monitorování adresáře %x. - -Cannot find device %x. -Nelze nalézt zařízení %x. - -Cannot open directory %x. -Nelze otevřít adresář %x. - -Unsupported item type. -Nepodporovaný typ položky. - -Incorrect command line: -Neplatný příkaz: - -The server does not support authentication via %x. -Server nepodporuje ověření pomocí %x. - -Required: -Požadováno: - - -Operation timed out after 1 second. -Operation timed out after %x seconds. - - -Vypršel čas 1 sekundy pro dokončení operace. -Vypršel čas %x sekund pro dokončení operace. -Vypršel čas %x sekund pro dokončení operace. - - - -Cannot wait on more than 1 connection at a time. -Cannot wait on more than %x connections at a time. - - -Nelze čekat na více jak 1 spojení najednou. -Nelze čekat na více jak %x spojení najednou. -Nelze čekat na více jak %x spojení najednou. - - -Active connections: %x -Aktivní spojení: %x - -Failed to open SFTP channel number %x. -Nelze otevřít SFTP kanál %x. - -Both sides have changed since last synchronization. -Došlo ke změně obou stran od poslední synchronizace. - -Cannot determine sync-direction: -Nelze určit směr synchronizace: - -No change since last synchronization. -Žádné změny od poslední synchronizace. - -The database entry is not in sync considering current settings. -Databázové položky nejsou podle aktuální konfigurace synchronní. - -Setting default synchronization directions: Old files will be overwritten with newer files. -Nastaven výchozí způsob synchronizace: Staré soubory budou nahrazeny novými. - -Creating file %x -Vytváření souboru %x - -Creating folder %x -Vytváření adresáře %x - -Creating symbolic link %x -Vytváření symbolického odkazu %x - -Moving file %x to the recycle bin -Přesouvání souboru %x do Koše - -Moving folder %x to the recycle bin -Přesouvání adresáře %x do Koše - -Moving symbolic link %x to the recycle bin -Přesouvání symbolického odkazu %x do Koše - -Deleting file %x -Mazání souboru %x - -Deleting folder %x -Mazání adresáře %x - -Deleting symbolic link %x -Mazání symbolického odkazu %x - -Checking recycle bin availability for folder %x... -Kontrola Koše na složku %x... - -The recycle bin is not supported by the following folders. Deleted or overwritten files will not be able to be restored: -Pro některé složky nelze použít Koš a proto následující soubory budou odstraněny trvale, bez možnosti obnovy: - -An exception occurred -Vyskytla se chyba - -A left and a right directory path are expected after %x. -Je očekávané zadání parametru levého a pravého adresáře po %x. - -Syntax error -Chyba syntaxe - -Cannot find file %x. -Nelze najít soubor %x. - -Error -Chyba - -File %x does not contain a valid configuration. -Soubor %x neobsahuje platnou konfiguraci. - -The config file must not contain settings at directory pair level when directories are set via command line. -Konfigurační soubor nesmí obsahovat nastavení na úrovni adresářových párů pokud je zadán přes příkazovou řádku. - -Directories cannot be set for more than one configuration file. -Adresáře nemohou obsahovat více než jeden konfigurační soubor. - -Command line -Příkazová řádka - -Syntax: -Syntaxe: - -config files: -konfigurační soubory: - -directory -adresář - -global config file: -konfigurační soubory: - -Any number of FreeFileSync "ffs_gui" and/or "ffs_batch" configuration files. -Libovolný počet konfiguračních souborů FreeFileSync typu "ffs_gui" a/nebo "ffs_batch". - -Any number of alternative directory pairs for at most one config file. -Libovolný počet alternativních párů adresářů na alespoň jednu konfiguraci. - -Open the selected configuration for editing only, without executing it. -Otevřít konfiguraci pouze pro editaci aniž by byla spuštěna. - -Path to an alternate GlobalSettings.xml file. -Cesta k alternativnímu souboru GlobalSettings.xml. - -Installation files are corrupted. Please reinstall FreeFileSync. -Instalace programu je poškozena. Prosím nainstalujte znovu FreeFileSync. - -Cannot find the following folders: -Nelze najít následující složky: - -The following folders do not yet exist: -Následující složky zatím neexistují: - -The folders are created automatically when needed. -Složky budou v případě potřeby automaticky vytvořeny. - -The following folder paths differ in case. Please use a single form in order to avoid duplicate accesses. -Následující složky se v názvu liší velikostí písma. Prosím použijte stejný zápis, aby nedošlo k duplicitnímu přístupu. - -Scanning: -Zpracováváno: - -Comparison finished: -Porovnání dokončeno: - - -1 item found -%x items found - - -1 položka nalezena -%x položky nalezeny -%x položek nalezeno - - -Time elapsed: -Uplynulý čas: - -File %x has an invalid date. -Soubor %x má chybné datum. - -Date: -Čas: - -Files have the same date but a different size. -Soubory mají stejné datum a čas ale rozdílnou velikost. - -Size: -Velikost: - -Content comparison was skipped for excluded files. -Porovnání obsahu bylo vynecháno pro vybrané soubory. - -Items differ in attributes only -Položky se liší pouze ve vlastnostech - -Resolving symbolic link %x -Hledání odkazu symbolického zástupce %x - -Comparing content of files %x -Porovnávání obsahu souborů %x - -Generating file list... -Vytváření seznamu souborů... - -Fail-safe file copy -Bezpečné kopírování souborů - -Enabled -Zapnuto - -Disabled -Vypnuto - -Copy locked files -Kopírování zamčených souborů - -Copy file access permissions -Kopírování přístupových oprávnění k souborům - -File time tolerance -Časová tolerance - -Run with background priority -Spuštění s prioritou na pozadí - -Lock directories during sync -Zamčení adresářů během synchronizace - -Verify copied files -Potvrzení zkopírovaných souborů - -Using non-default global settings: -Použití zvláštního nastavení: - -A folder input field is empty. -Není zadána vstupní složka. - -The corresponding folder will be considered as empty. -Odpovídající složka bude považována za prázdnou. - -Exclude: -Vynechat: - -One base folder of a folder pair is contained in the other one. -Jedena ze základních párů složek je vnořená v jiném páru. - -The folder should be excluded from synchronization via filter. -Složka by měla být vynechána ze synchronizace pomocí filtru. - -Calculating sync directions... -Příprava adresářů synchronizace... - -Out of memory. -Nedostatek pracovní paměti. - -Show in Explorer -Zobrazit v Průzkumníkovi - -Open with default application -Otevřít výchozí aplikací - -Browse directory -Procházet adresář - -Database file %x is incompatible. -Chybný formát databáze %x. - -Initial synchronization: -Prvotní synchronizace: - -Database file %x does not yet exist. -Databázový soubor %x neexistuje. - -Database file is corrupted: -Databáze je poškozená: - -Loading file %x... -Načítání souboru %x... - -The database files do not yet contain information about the last synchronization. -Databázový soubor ještě neobsahuje informace o poslední synchronizaci. - -Saving file %x... -Ukládání souboru %x... - -Searching for folder %x... -Otevírání složky %x... - -Timeout while searching for folder %x. -Vypršel časový limit pro nalezení adresáře %x. - -Cannot get process information. -Nelze získat informace procesu. - -Waiting while directory is locked: -Čekání na uzamčení adresáře: - -Lock owner: -Používá: - -Detecting abandoned lock... -Prověřování uzamčení... - - -1 sec -%x sec - - -1 sekunda -%x sekundy -%x sekund - - -Item exists on left side only -Položky existující pouze vlevo - -Item exists on right side only -Položky existující pouze vpravo - -Left side is newer -Vlevo je novější - -Right side is newer -Vpravo je novější - -Items have different content -Obsah položek je rozdílný - -Both sides are equal -Obě strany jsou shodné - -Conflict/item cannot be categorized -Konflikty/položky které nelze zařadit - -Copy new item to left -Kopírovat novou položku doleva - -Copy new item to right -Kopírovat novou položku doprava - -Delete left item -Smazat položku zleva - -Delete right item -Smazat položku zprava - -Move file on left -Přesunout soubor nalevo - -Move file on right -Přesunout soubor napravo - -Update left item -Aktualizovat levou položku - -Update right item -Aktualizovat pravou položku - -Do nothing -Nic nedělat - -Update attributes on left -Nastavit vlastnosti vlevo - -Update attributes on right -Nastavit vlastnosti vpravo - -Error parsing file %x, row %y, column %z. -Chyba zpracování souboru %x: na řádku %y ve sloupci %z. - -Services -Služby - -Show All -Zobrazit vše - -Hide Others -Skrýt ostatní - -Hide %x -Skrýt %x - -Quit %x -Ukončit %x - -Cannot set directory locks for the following folders: -Nelze uzamčít následující adresáře: - -Errors: -Chyb: - -Warnings: -Varování: - -Items processed: -Zpracováno položek: - -Items remaining: -Zbývá položek: - -Total time: -Celkový čas: - -Warning -Varování - -Stopped -Zastaveno - -Cleaning up log files: -Vyčištění žurnálů: - - -1 thread -%x threads - - -1 proces -%x procesy -%x procesů - - -%x/sec -%x/s - -%x items -%x položek - -Completed successfully -Úspěšně dokončeno - -Completed with warnings -Dokončeno s varováním - -Completed with errors -Dokončeno s chybou - -Cannot access the Volume Shadow Copy Service. -Nepodařil se přístup ke službě Stínové kopie. - -Please run the 64-bit version of FreeFileSync to create shadow copies on this system. -Prosím použijte 64-bitovou verzi FreeFileSync pro použití služby Stínové kopie. - -Volume name %x is not part of file path %y. -Název disku %x není součástí cesty souboru %y. - -File time and size -Podle velikosti a data souboru - -File content -Podle obsahu souboru - -File size -Podle velikosti souboru - -Two way -Databáze - -Mirror -Zrcadlení - -Update -Aktualizace - -Custom -Vlastní - -Multiple... -Různé... - -Cannot write file attributes of %x. -Nelze zapsat vlastnosti souboru %x. - -%x and %y have different content. -%x a %y mají odlišný obsah. - -Data verification error: -Chyba verifikace dat: - -Moving file %x to %y -Přesouvání souboru %x do %y - -Moving folder %x to %y -Přesouvání adresáře %x do %y - -Moving symbolic link %x to %y -Přesouvání symbolického odkazu %x do %y - -Updating file %x -Aktualizace souboru %x - -Updating symbolic link %x -Aktualizace symbolického odkazu %x - -Verifying file %x -Kontrola souboru %x - -Updating attributes of %x -Aktualizace vlastností souboru %x - -Source item %x not found -Zdrojová položka %x nenalezena. - -Parent folder %x is not existing. -Nadřazená složka %x neexistuje. - -Cannot copy file %x to %y. -Nelze kopírovat soubor %x do %y. - -Creating a Volume Shadow Copy for %x... -Vytváření Stínové kopie pro %x... - -Cannot find folder %x. -Nelze najít složku %x. - -Target folder %x is already existing, but was not available during folder comparison. -Cílová složka %x již existuje, ale při porovnávání nebyla k dispozici. - -Target folder input field must not be empty. -Cílová složka nesmí být prázdná. - -Source folder %x not found. -Zdrojovou složku %x nelze najít. - -Please enter a target folder for versioning. -Prosím zadejte cílovou složku pro verzování. - -The following items have unresolved conflicts and will not be synchronized: -Následující položky jsou nevyřešené konflikty a nebudou synchronizovány: - -Folder pair: -Dvojice složek: - -The following folders are significantly different. Please check that the correct folders are selected for synchronization. -Následující složky se významně liší. Zkontrolujte zda máte vybránu správnou dvojici složek pro synchronizaci. - -Not enough free disk space available in: -Nedostatek místa na disku: - -Available: -K dispozici: - -Some files will be synchronized as part of multiple base folders. -Některé soubory budou synchronizovány jako součást vícezdrojových složek. - -To avoid conflicts, set up exclude filters so that each updated file is included by only one base folder. -K předejití konfliktů je potřeba nastavit filtr tak, aby každý soubor měl pouze jednu základní nadřazenou složku. - -Versioning folder: -Verzovací složka: - -Base folder: -Základní složka: - -The versioning folder is contained in a base folder. -Verzovaná složka je vnořena v základní nadřazené složce. - -Synchronizing folder pair: -Zpracovávání páru složek: - -Generating database... -Vytváření databáze... - -Searching for old file versions: -Hledání starších verzí: - -Removing old file versions: -Odstraňování starších verzí: - -Unable to create time stamp for versioning: -Nelze vytvořit časové značky verzování: - -Drag && drop -Přetáhni sem && pusť - -Select a folder -Vyberte adresář - -&New -&Nový - -&Open... -&Otevřít... - -Save &as... -Uložit &jako... - -E&xit -U&končit - -&File -&Soubor - -&View help -&Nápověda (pouze anglicky) - -&About -O &Programu - -&Help -&Pomoc - -Usage: -Použití: - -Select folders to watch. -Vyberte složku ke sledování. - -Enter a command line. -Zadejte příkazovou řádku. - -Press 'Start'. -Zmáčkněte 'Start'. - -To get started just import a "ffs_batch" file. -Můžete načíst také konfigurační soubor "ffs_batch". - -Folders to watch: -Sledovaná složka: - -Add folder -Přidat adresář - -Remove folder -Odstranit adresář - -Browse -Procházet - -Idle time (in seconds): -Prodleva (v sekundách): - -Idle time between last detected change and execution of command -Prodleva mezi zjištěním poslední změny a spuštěním příkazu - -Command line: -Příkazová řádka: - -&Hide console window -&Skrýt příkazové okno - - -The command is triggered if: -- files or subfolders change -- new folders arrive (e.g. USB stick insert) - - -Příkaz je spuštěn když: -- dojde ke změně v souboru nebo ve složce -- je zjištěna nová složka (např. vložením USB disku) - - -Start -Start - -About -O programu - -Build: %x -Verze: %x - -All files -Všechny soubory - -Automated Synchronization -Automatická synchronizace - -The %x protocol does not support directory monitoring: -Protokol %x nepodporuje sledování adresářů: - -Directory monitoring active -Sledování adresářů je aktivní - -Waiting until directory is available: -Čekání na dostupnost adresáře: - -&Configure -&Nastavit - -&Show error message -Zobrazit chybové &hlášení - -&Quit -U&končit - -&Retry -&Opakovat - - -1 byte -%x bytes - - -%x B -%x B -%x B - - -%x MB -%x MB - -%x KB -%x KB - -%x GB -%x GB - -Loading... -Načítání... - -Scanning... -Zpracovávání... - -configuration file -soubor nastavení - -System: Sleep -Režim spánku počítače - -System: Shut down -Vypnutí počítače - -Nothing to synchronize -Není co synchronizovat - -Executing command: -Spuštění příkazu: - -You can switch to FreeFileSync's main window to resolve this issue. -K odstranění tohoto problému se přepněte do hlavního okna FreeFileSync. - -&Don't show this warning again -&Nezobrazovat již příště toto varování - -&Ignore -&Pokračovat - -&Switch -&Přepnout - -Switching to FreeFileSync's main window -Přepínání do hlavního okna FreeFileSync - -Automatic retry -Automatické opakování - -Ignore &all -Přeskočit &vše - -Retrying operation... -Opakovaní operace... - -Serious Error -Závažná chyba - -Last session -Poslední sezení - -Today -Dnes - - -1 day -%x days - - -1 den -%x dny -%x dnů - - -Name -Název - -Last sync -Naposledy - -Log -Žurnál zpracování - -Folder -Složka - -Symlink -Symlink - -Full path -Plná cesta - -Relative path -Relativní cesta - -Item name -Název - -Size -Velikost - -Date -Čas - -Extension -Přípona - -Category -Kategorie - -Action -Akce - -Local comparison settings -Nastavení porovnání - -Local synchronization settings -Nastavení synchronizace - -Local filter -Místní filtr - -Active -Zapnutý - -None -Žádný - -Remove local settings -Zrušit nastavení - -Clear local filter -Vymazat nastavení filtru - -Copy -Kopírovat - -Paste -Vložit - -The selected folder %x cannot be used with FreeFileSync. -Vybranou složku %x nelze použít pro FreeFileSync. - -Please select a folder on a local file system, network or an MTP device. -Prosím vyberte složku na místním souborovém systému, síti nebo multimediální zařízení. - -Defined by context of use -počet určen použitím - -Requires FreeFileSync Donation Edition -Je vyžadována předplacená verze FreeFileSync Donation Edition - -&Save -&Uložit - -Save as &batch job... -Uložit jako &dávku... - -Show &log -&Zobrazit žurnál - -Start &comparison -Začít &porovnání - -C&omparison settings -Nastavení p&orovnání - -&Filter settings -Nastavení &filtru - -S&ynchronization settings -Nastavení s&ynchronizace - -Start &synchronization -Začít &synchronizaci - -&Actions -&Akce - -&Preferences -&Předvolby... - -&Language -&Jazyk - -&Find... -&Najít... - -&Export file list... -&Exportovat seznam souborů... - -&Reset layout -&Obnovit rozložení - -&Tools -&Nastavení - -&Check for updates now -&Zkontrolovat aktualizace nyní - -Check &automatically once a week -Kontrolovat &automaticky jednou týdně - -Cancel -Zrušit - -Compare -Porovnání - -Synchronize -Synchronizace - -Add folder pair -Přidat adresář pro porovnání - -Remove folder pair -Odstranit dvojici adresářů - -Access online storage -Přístup k uložišti - -Close search bar -Zavřít hledání - -Find: -Najít: - -Match case -Rozlišovat malá a velká písmena - -Processed: -Zpracováno: - -Remaining: -Zbývá: - -New -Nový - -Open... -Otevřít... - -Save -Uložit - -Save as... -Uložit jako... - -View type: -Typ zobrazení: - -Select view: -Výběr zobrazení: - -Save as default -Uložit jako výchozí - -Statistics: -Statistika: - -Number of files and folders that will be deleted -Počet souborů a složek ke smazání - -Number of files that will be updated -Počet souborů k aktualizaci - -Number of files and folders that will be created -Počet souborů a složek k vytvoření - -Total bytes to copy -Celkový objem dat - -Arrange folder pair -Uspořádat složky - -Main settings: -Hlavní nastavení: - -Use local settings: -Použít nastavení: - -Select a variant: -Výběr varianty: - -Include &symbolic links: -&Symbolické odkazy: - -&Follow -&Použít cíl - -&Direct -&Zachovat - -More information -Více informací - -&Ignore time shift [hh:mm] -&Ignorovat časový posun [hh:mm] - -List of file time offsets to ignore -Seznam ignorovaných časových posunů souborů - -Example: -Příklad: - -Handle daylight saving time -Používat letní čas - -Ignore errors -Přeskočit chyby - -Retry count: -Počet opakování: - -Delay (in seconds): -Prodleva (v sekundách): - -Performance improvements: -Vylepšení rychlosti: - -Parallel file operations: -Paralelní operace se soubory: - -How to get best performance? -Jak získat nejlepší rychlost? - -Local settings: -Nastavení: - -Include: -Zahrnout: - -Show examples -Ukázat příklady - -Select filter rules to exclude certain files from synchronization. Enter file paths relative to their corresponding folder pair. -Nastavte pravidla filtru pro vynechání některých souborů ze synchronizace. Zadávejte cesty relativně k odpovídající složce. - -File size: -Velikost soubor: - -Minimum: -Od verze: - -Maximum: -Do verze: - -Time span: -Časové rozmezí: - -C&lear -Vy&mazat - -Detect moved files -Detekce přesunutých souborů - - -- Not supported by all file systems -- Requires and creates database files -- Detection not available for first sync - - -- Není podporováno všemi souborovými systémy -- Vyžaduje vytvoření databázového souboru -- Detekce rozdílů až po první synchronizaci - - -Delete files: -Mazání souborů: - -&Recycle bin -&Koš - -&Permanent -&Trvale - -&Versioning -&Verzování - -Move files to a user-defined folder -Přesunout soubory do uživatelského adresáře - -Naming convention: -Pojmenování: - -Limit file versions: -Omezení verze souboru: - -Last x days: -Posledních dní: - -&Override default log path: -&Nahradit výchozí cestu žurnálu: - -Run a command: -Spustit příkaz: - -OK -OK - -Connection type: -Typ spojení: - -Connected user accounts: -Připojené uživatelské účty: - -&Add connection -&Přidat spojení - -&Disconnect -&Odpojit - -Selected user account: -Vybraný uživatelský účet: - -Server name or IP address: -Jméno serveru nebo jeho IP adresa: - -Port: -Port: - -Encryption: -Šifrování: - -&Disabled -&Vypnuto - -&Explicit SSL/TLS -&Explicitní SSL/TLS - -Authentication: -Zabezpečení: - -&Password -&Heslo - -&Key file -&Klíč - -&SSH agent -&SSH agent - -User name: -Uživatelské jméno: - -Private key file: -Soubor se soukromým klíčem: - -&Show password -&Zobraz - -Directory on server: -Adresář na serveru: - -Access timeout (in seconds): -Časový limit přístupu (v sekundách): - -SFTP channels per connection: -SFTP kanálů na spojení: - -Detect server limit -Zjistit omezení serveru - -Select Folder -Výběr složky - -Variant: -Varianta: - -&Don't show this dialog again -Tento dialog již &nezobrazovat - -Bytes: -Dat: - -Items: -Položek: - -Synchronizing... -Synchronizuji... - -Minimize to notification area -Minimalizovat do oznamovací oblasti - -Bytes -Bajtů - -Items -Položek - -When finished: -Po dokončení: - -Auto-close -Automatické zavření - -Close -Zavřít - -&Pause -&Pauza - -Stop -Ukončit aplikaci - -Create a batch file for unattended synchronization. To start, double-click this file or schedule in a task planner: %x -Vytvoří dávkový souboru pro automatickou synchronizaci. Ke spuštění dávky jednoduše poklikejte na vytvořený soubor nebo využijte plánovač úloh vašeho systému: %x - -Progress dialog: -Zobrazení průběhu: - -Run minimized -Minimalizovat - -Show pop-up on errors or warnings -Zobrazit hlášení při chybě nebo varování - -&Cancel -&Zrušit - -Stop synchronization at first error -Ukončit synchronizaci při první chybě - -How can I schedule a batch job? -Jak nastavit spouštění dávky? - -&Keep relative paths -&Zachovat relativní cesty - -&Overwrite existing files -&Přepsat existující soubory - -The following settings are used for all synchronization jobs. -Toto nastavení je platné pro všechny synchronizační úlohy. - - -Copy to a temporary file (*.ffs_tmp) before overwriting target. -This guarantees a consistent state even in case of a serious error. - -Kopírovat nejprve do pomocného souboru (*.ffs_tmp) před přepisem cíle. Tento postup zajišťuje bezpečné chování i v případě závažné chyby. - -recommended -doporučeno - -Copy shared or locked files using the Volume Shadow Copy Service. -Kopírovat sdílené nebo zamčené soubory pomocí služby Stínové kopie. - -requires administrator rights -vyžaduje administrátorská oprávnění - -Transfer file and folder permissions. -Přenést přístupová oprávnění souborů a složek. - -Show all permanently hidden dialogs and warning messages again -Zobrazit znovu všechny trvale skryté dialogy a varovná hlášení - -Default log path: -Výchozí cesta žurnálu: - -&Delete logs after x days: -&Smazat žurnály po (dnech): - -Notification sounds: -Zvuky upozornění: - -Synchronization finished: -Dokončení synchronizace: - -Customize context menu: -Přizpůsobit kontextovou nabídku: - -Description -Popis - -&Default -&Předdefinované - -Feedback and suggestions are welcome: -Komentáře a náměty jsou vždy vítány: - -Home page -Navštivte - -FreeFileSync Forum -Diskuzní fórum FreeFileSync - -Email -Napište - -If you like FreeFileSync: -Pokud se Vám FreeFileSync líbí: - -Support with a donation -Podpořit darem - -The auto updater was disabled by the administrator. -Automatická aktualizace byla správcem zakázána. - -Donation details -Podrobnosti - -Source code written in C++ using: -Zdrojový kód byl napsán kompletně v C++ pomocí: - -Published under the GNU General Public License: -Vydáno pod GNU General Public License (GPL): - -Many thanks for localization: -Poděkování za překlad FreeFileSync: - -Activate the FreeFileSync Donation Edition by one of the following methods: -Aktivovat placenou verzi FreeFileSync Donation Edition pomocí: - -Activate via internet now: -Aktivovat přes internet: - -Activate online -Aktivace on-line - -Retrieve an offline activation key from the following URL: -Získat aktivační klíč z následující adresy: - -&Copy to clipboard -&Kopírovat do schránky - -Enter activation key: -Vložit aktivační klíč: - -Activate offline -Aktivace off-line - -Highlight configurations that have not been run for more than the following number of days: -Zvýraznit položky, které nebyly spuštěny za poslední počet dní: - -FreeFileSync requires access rights to avoid "Operation not permitted" errors when synchronizing your data (e.g. Mail, Messages, Calendars). -FreeFileSync potřebuje povolit přístupová práva, aby při synchronizaci dat (např. pošty, zpráv, kalendáře) nedošlo k odepření přístupu a k chybě zálohování. - -Locate the FreeFileSync app -Najděte umístění aplikace FreeFileSync - -Open Security && Privacy -Jděte do Zabezpečení a soukromí - -Click the lock to allow changes. -Odemčete zámek pro povolení změn. - -Drag FreeFileSync into the panel. -Přetáhněte FreeFileSync do pravého okna. - -Synchronization Settings -Nastavení synchronizace - -Access Online Storage -Online uložiště - -Save as a Batch Job -Uložit jako dávku - -Delete Items -Smazané položky - -Copy Items -Kopírované položky - -Options -Nastavení programu - -Select Time Span -Časové rozmezí - -Highlight Configurations -Zvýraznění položek - -Grant Full Disk Access -Povolení plný přístup k disku - -Info -Info - -No log entries -Žádné záznamy - -Select all -Vybrat vše - -&Options -Nastavení &programu - -Main Bar -Hlavní lišta - -Folder Pairs -Adresářové páry - -Find -Najít - -View Settings -Nastavení zobrazení - -Configuration -Konfigurace - -Overview -Přehled - -Swap sides -Změna stran - -Show "%x" -Zobrazit "%x" - -&Show details -&Zobrazit podrobnosti - -FreeFileSync %x is available! -Je k dostupná verze FreeFileSync %x! - -Local path not available for %x. -Místní cesta není k dispozici pro %x. - -Confirm -Potvrdit - - -Do you really want to execute the command %y for one item? -Do you really want to execute the command %y for %x items? - - -Opravdu chcete provést příkaz %y pro 1 položku? -Opravdu chcete provést příkaz %y pro %x položky? -Opravdu chcete provést příkaz %y pro %x položek? - - -&Execute -&Spustit - -Set direction: -Nastavit adresář: - -multiple selection -vícenásobný výběr - -&Include via filter: -&Zahrnout pomocí filtru: - -&Exclude via filter: -&Vynechat pomocí filtru: - -Include temporarily -Přidat dočasně - -Exclude temporarily -Vynechat dočasně - -&Synchronize selection -&Synchronizovat výběr - -&Copy to... -&Kopírovat do... - -&Delete -&Smazat - -Show icons: -Ikony: - -Small -Malé - -Medium -Střední - -Large -Velké - -Select time span... -Zadejte časové rozmezí... - -Donation Edition -Předplacená verze - -Folder Comparison and Synchronization -porovnání a synchronizace složek - -Configuration saved -Konfigurace uložena - -FreeFileSync batch -FreeFileSync dávka - -Do you want to save changes to %x? -Uložit změny do %x? - -Never save &changes -Nikdy &neukládat změny - -Do&n't save -&Neukládat - -%x cannot be renamed. -%x nelze prejmenovat. - -New name: -Nové jméno: - -Rename Configuration -Přejmenovat konfiguraci - -Configuration name must not be empty. -Název konfigurace nesmí být prázdný. - -&Rename... -&Přejmenovat... - -Hide configuration -Skrýt položky - -Highlight... -Zvýraznit... - -Clear filter -Vymazat filtr - -Show files that exist on left side only -Zobrazit soubory existující pouze vlevo - -Show files that exist on right side only -Zobrazit soubory existující pouze vpravo - -Show files that are newer on left -Zobrazit soubory novější vlevo - -Show files that are newer on right -Zobrazit soubory novější vpravo - -Show files that are equal -Zobrazit shodné soubory - -Show files that are different -Zobrazit rozdílené soubory - -Show conflicts -Zobrazit konflikty - -Show files that will be created on the left side -Zobrazit soubory, které budou vlevo vytvořeny - -Show files that will be created on the right side -Zobrazit soubory, které budou vpravo vytvořeny - -Show files that will be deleted on the left side -Zobrazit soubory, které budou vlevo smazány - -Show files that will be deleted on the right side -Zobrazit soubory, které budou vpravo smazány - -Show files that will be updated on the left side -Zobrazit soubory, které budou vlevo aktualizovány - -Show files that will be updated on the right side -Zobrazit soubory, které budou vpravo aktualizovány - -Show files that won't be copied -Zobrazit soubory, které nebudou kopírovány - -Show filtered or temporarily excluded files -Zobrazit filtrované nebo dočasně vynechané soubory - -Filter -Filtr - -All files are in sync -Všechny soubory jsou synchronizovány - - -1 directory -%x directories - - -1 adresář -%x adresáře -%x adresářů - - - -1 file -%x files - - -1 soubor -%x soubory -%x souborů - - - -Showing %y of 1 row -Showing %y of %x rows - - -Zobrazení %y z 1 řádku -Zobrazení %y z %x řádků -Zobrazení %y z %x řádků - - -Cannot find %x -Nelze najít %x - -Move up -Nahoru - -Move down -Dolů - -Comma-separated values -Text oddělený čárkami - -File list exported -Seznam souborů exportován - -Searching for program updates... -Hledání aktualizací programu... - -Paused -Pauza - -Stop requested... -Zastavování... - -Initializing... -Inicializace... - -Comparing content... -Porovnávání obsahu... - -&Continue -&Pokračovat - -Progress -Průběh - -Thank you, %x, for your donation and support! -Děkuji, %x, za příspěvek a podporu! - -Connections -Připojení - -Recommended range: -Doporučený rozsah: - -Do you really want to disconnect from user account %x? -Opravdu chcete odpojit od uživatelského účtu %x? - -Password: -Heslo: - -Key passphrase: -Klíč: - -Please enter a file path. -Prosím zadejte cestu k souboru. - - -Copy the following item to another folder? -Copy the following %x items to another folder? - - -Kopírovat následující položku do jiné složy? -Kopírovat následující %x položky do jiné složkyr? -Kopírovat následujících %x položek do jiné složkyr? - - -Please enter a target folder. -Prosím zadejte cílovou složku. - - -Do you really want to move the following item to the recycle bin? -Do you really want to move the following %x items to the recycle bin? - - -Opravdu chcete přesunout následující položku do Koše? -Opravdu chcete přesunout následující %x položky do Koše? -Opravdu chcete přesunout následujících %x položek do Koše? - - -Move -Přesunout - - -Do you really want to delete the following item? -Do you really want to delete the following %x items? - - -Opravdu chcete smazat následující položku? -Opravdu chcete smazat následující %x položky? -Opravdu chcete smazat následujících %x položek? - - -Start to synchronize the selection? -Začít synchronizovat výběr? - -Start synchronization now? -Začít synchronizovat nyní? - -Copy DACL, SACL, Owner, Group -Kopírovat DACL, SACL, Owner, Group - -Integrate external applications into context menu. The following macros are available: -Integrace externí aplikace do kontextového menu. K dispozici jsou následující makra: - -Full file or folder path -Plná cesta souboru nebo složky - -Parent folder path -Nadřazená složka - -Temporary local copy for SFTP and MTP storage -Dočasná místní kopie pro SFTP a MTP - -Parameters for opposite side -Parametry protistrany - -Show hidden dialogs again -Znovu zobrazit skryté dialogy - -All dialogs shown -Vše zobrazováno - -Downloading update... -Stahování aktualizace... - -Identify equal files by comparing modification time and size. -Rozpoznat shodné soubory porovnáním jejich data změny a velikosti. - -Identify equal files by comparing the file content. -Rozpoznat shodné soubory porovnáním jejich obsahu. - -Identify equal files by comparing their file size. -Rozpoznat stejné soubory porovnáním jejich velikosti. - -Identify and propagate changes on both sides. Deletions, moves and conflicts are detected automatically using a database. -Rozpoznat a provést změny na obou stranách. Odstraněné, přesunuté nebo přejmenované soubory a konflikty budou detekovány automaticky pomocí databáze. - -Create a mirror backup of the left folder by adapting the right folder to match. -Vytvořit zrcadlovou kopii levé složky tak, aby po synchronizaci pravá složka přesně odpovídala levé. - -Copy new and updated files to the right folder. -Kopírovat nové a aktualizované soubory do pravé složky. - -Configure your own synchronization rules. -Nastavení vlastních pravidel synchronizace. - -Comparison -Porovnání - -Synchronization -Synchronizace - -This week -Tento týden - -This month -Tento měsíc - -This year -Tento rok - -Byte -Byte - -KB -KB - -MB -MB - -Retain deleted and overwritten files in the recycle bin -Použít Koš pro mazání nebo přepis souborů - -Delete and overwrite files permanently -Odstranit a přepsat soubory trvale - -Replace -Nahradit - -Move files and replace if existing -Přesunout a nahradit pokud soubory existují - -Time stamp -Časová značka - -Move files into a time-stamped subfolder -Přesunout soubory do časově označené podsložky - -File -Soubor - -Append a time stamp to each file name -Přidat časovou značku ke jménu souboru - -On completion: -Po dokončení: - -On errors: -Při chybě: - -On success: -Při dokončení: - -Main config -Hlavní nastavení - -empty -nezadáno - -Leave as unresolved conflict -Ponechat jako nevyřešený konflikt - -YYYY-MM-DD hhmmss -RRRR-MM-DD hhmmss - -Minimum version count must be smaller than maximum count. -Minimální verze musí být menší než maximum. - -&Restore -&Obnovit - -Files -Soubory - -Percentage -Procentní podíl - -Failed to retrieve update information. -Nepodařilo se získat informace o aktualizaci. - -Automatic updates: -Automatická aktualizace: - -Check for Program Updates -Hledání aktualizací programu - -Auto-update now or download manually from the FreeFileSync home page? -Provést automatickou aktualizaci nyní nebo stáhnout ručně z domovské stránky FreeFileSync? - -&Auto-update -&Automatická aktualizace - -&Home page -&Domovská stránka - -Download now? -Stáhnout nyní? - -&Download -&Stahování - -FreeFileSync is up to date. -FreeFileSync je aktuální. - -Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now? -Současná verze FreeFileSync nebyla nalezena on-line! Pravděpodobně existuje novější verze. Chcete verzi zkontrolovat ručně? - -&Check -&Kontrola - -Consistency check failed for %x. -Nepodařila se kontrola konzistence pro %x. - -Installation was registered on a different operating system. -Instalace byla registrována na jiném operačním systému. - -Failed to activate FreeFileSync Donation Edition. -Nepodařilo se aktivovat FreeFileSync Donation Edition. - -Incorrect activation key. -Špatný aktivační klíč. - -Unable to register to receive system messages. -Nepodařilo se zaregistrovat k odběru systémových zpráv. - -The %x installation option is only available in the FreeFileSync Donation Edition. -%x instalace je k dispozici pouze v předplacené verzi FreeFileSync Donation Edition. - -Cannot find system function %x. -Nelze najít systémovou funkci %x. - -Unable to register device notifications for %x. -Nepodařilo se zaregistrovat zprávy zařízení %x. - -The file is locked by another process: -Soubor je uzamčen jiným procesem: - -Failed to determine file permission support for folder %x. -Nepodařilo se zjistit možnosti oprávnění pro složku %x. - -Cannot read security context of %x. -Nelze číst přístupová práva pro %x. - -Cannot write security context of %x. -Nelze zapsat přístupová práva pro %x. - -Cannot read permissions of %x. -Nelze číst oprávnění pro %x. - -Cannot copy permissions from %x to %y. -Nelze kopírovat oprávnění z %x do %y. - -%x is not a regular directory name. -%x není platným názvem adresáře. - -Cannot copy attributes from %x to %y. -Nelze kopírovat vlastnosti z %x do %y. - -%x TB -%x TB - -%x PB -%x PB - - -1 min -%x min - - -1 minuta -%x minuty -%x minut - - - -1 hour -%x hours - - -1 hodina -%x hodiny -%x hodin - - -Cannot set privilege %x. -Nelze nastavit práva pro %x. - -Unable to suspend system sleep mode. -Nelze pozastavit Režim spánku. - -Cannot change process I/O priorities. -Nelze nastavit priority procesu. - -Checking recycle bin failed for folder %x. -Selhala kontrola Koše pro složku %x. - -Unable to shut down the system. -Nepodařilo se vypnout systém. - -Prepare installation -Příprava instalace - -Choose which components you want to install. -Vyberte komponenty k instalaci. - -Select installation type: -Vyberte typ instalace: - -Local -Lokální - -Portable -Přenosná - -Save settings in %x -uloží nastavení do %x - -Register FreeFileSync file extensions -zaregistruje přípony souborů FreeFileSync - -Create Explorer context menu entries -vytvoří položky v kontextovém menu Průzkumníka - -Save settings in installation directory -uloží nastavení do složky určené pro instalaci - -Do not write to Registry -nemění ani nezapisuje do Registrů - -Just copy the files -zkopíruje pouze soubory - -Choose a directory for installation: -Vyberte složku pro instalaci: - -Create shortcuts: -Vytvořit zástupce: - -Desktop -Plocha - -Start Menu -Nabídka Start - -Send To -Odeslat - -Registering FreeFileSync file extensions -Zaregistrovat příponu souborů FreeFileSync - -Unregistering FreeFileSync file extensions -Odregistrovat příponu souborů FreeFileSync - -FreeFileSync Configuration -Nastavení FreeFileSync - -FreeFileSync Batch File -Dávka FreeFileSync - -FreeFileSync Synchronization Database -Synchronizační databáze FreeFileSync - -RealTimeSync Configuration -Nastavení RealTimeSync - -Edit with FreeFileSync -Upravit v FreeFileSync - -Instead of an ad, here's an animal. -Místo reklamy zvířátko. - -The FreeFileSync portable version cannot install into a subfolder of %x. -Přenosná verze FreeFileSync nemůže být instalována do složky %x. - -Please choose the local installation type or select a different folder for installation. -Prosím zvolte lokální typ instalace nebo vyberte jinou složku. - -Get the Donation Edition with bonus features and help keep FreeFileSync ad-free. -Získat předplacenou verzi s funikcemi navíc a pomoci tím udržet FreeFileSync bez reklam. - diff --git a/FreeFileSync/Build/Resources/Languages/danish.lng b/FreeFileSync/Build/Resources/Languages/danish.lng deleted file mode 100755 index 1e5c9952..00000000 --- a/FreeFileSync/Build/Resources/Languages/danish.lng +++ /dev/null @@ -1,2136 +0,0 @@ -
- Dansk - Regmos - da_DK - flag_denmark.png - 2 - n == 1 ? 0 : 1 -
- -Cannot read file %x. -Kan ikke læse filen %x. - - -Unexpected size of data stream. -Expected: %x bytes -Actual: %y bytes - - -Uventet datastørrelse. -Forventet: %x byte -Aktuel: %y byte - - -Cannot write file %x. -Kan ikke oprette filen %x. - -Cannot write permissions of %x. -Kan ikke skrive tilladelserne til %x. - -Operation not supported between different devices. -Handlingen støttes ikke mellem forskellige enheder. - -Cannot delete file %x. -Kan ikke slette filen %x. - -Cannot delete symbolic link %x. -Kan ikke slette det symbolske link %x. - -Cannot delete directory %x. -Kan ikke slette mappen %x. - -Cannot move file %x to %y. -Kan ikke flytte filen %x til %y. - -Cannot copy symbolic link %x to %y. -Kan ikke kopiere symlink fra %x til %y. - -Error Code %x -Fejlkode %x - -Cannot read directory %x. -Kan ikke læse mappen %x. - -Cannot write modification time of %x. -Kan ikke opdatere tidsændring på %x. - -Cannot read file attributes of %x. -Kan ikke læse filattributterne på %x. - -Cannot create directory %x. -Kan ikke oprette mappen %x. - -Cannot determine final path for %x. -Kan ikke bestemme endelig sti for %x. - -Operation not supported by device. -Handlingen understøttes ikke af enheden. - -Cannot resolve symbolic link %x. -Kan ikke følge symlinket %x. - -Unable to move %x to the recycle bin. -Kunne ikke flytte %x til papirkurv. - -Authentication completed. -Godkendelse gennemført. - -You may close this page now and continue with FreeFileSync. -Du kan lukke siden og returnere til FreeFileSync. - -Authentication failed. -Godkendelse fejlede. - -Unable to connect to %x. -Kan ikke kontakte %x. - -Cannot find %x. -Kan ikke finde %x. - -The name %x is used by more than one item in the folder. -Navnet %x bruges af flere emner i mappen. - -Please authorize access to user account %x. -Godkend adgang til %x. - -Cannot open file %x. -Filen %x kan ikke åbnes. - -The name %x is already used by another item. -Navnet %x findes allerede. - -Cannot determine free disk space for %x. -Kan ikke definere ledig plads på %x. - -Unable to disconnect from %x. -Forbindelsen til %x kan ikke afbrydes. - -Unable to access %x. -Kan ikke tilgå %x. - -Failed to get information about server %x. -Kunne ikke hente oplysninger om serveren %x. - -Cannot monitor directory %x. -Kan ikke overvåge mappen %x. - -Cannot find device %x. -Kan ikke finde enheden %x. - -Cannot open directory %x. -Kan ikke åbne mappen %x. - -Unsupported item type. -Emnetype ikke understøttet. - -Incorrect command line: -Ugyldig kommando: - -The server does not support authentication via %x. -Serveren støtter ikke godkendelse via %x. - -Required: -Krævet: - - -Operation timed out after 1 second. -Operation timed out after %x seconds. - - -Tiden udløb efter 1 sekund. -Tiden udløb efter %x sekunder. - - - -Cannot wait on more than 1 connection at a time. -Cannot wait on more than %x connections at a time. - - -Kan ikke vente på mere end 1 forbindelse af gangen. -Kan ikke vente på mere end %x forbindelser af gangen. - - -Active connections: %x -Aktive forbindelser: %x - -Failed to open SFTP channel number %x. -Fejl ved åbning af SFTP kanal nr. %x. - -Both sides have changed since last synchronization. -Begge sider ændret siden sidste synkronisering. - -Cannot determine sync-direction: -Kan ikke bestemme retning: - -No change since last synchronization. -Ingen ændringer siden sidste synkronisering. - -The database entry is not in sync considering current settings. -Databaseemnet er ikke i synk med de aktuelle indstillinger. - -Setting default synchronization directions: Old files will be overwritten with newer files. -Sætter standardretning: Gamle filer overskrives med nyere. - -Creating file %x -Opretter filen %x - -Creating folder %x -Opretter mappen %x - -Creating symbolic link %x -Opretter symlinket %x - -Moving file %x to the recycle bin -Flytter filen %x til papirkurv - -Moving folder %x to the recycle bin -Flytter mappen %x til papirkurv - -Moving symbolic link %x to the recycle bin -Flytter symbolsk link %x til papirkurv - -Deleting file %x -Sletter filen %x - -Deleting folder %x -Sletter mappen %x - -Deleting symbolic link %x -Sletter symlink %x - -Checking recycle bin availability for folder %x... -Tjekker papirkurvs tilgængelighed for mappen %x... - -The recycle bin is not supported by the following folders. Deleted or overwritten files will not be able to be restored: -Papirkurven understøttere ikke følgende mapper. Slettede eller overskrevne filer kan ikke gendannes: - -An exception occurred -Undtagelse opstod - -A left and a right directory path are expected after %x. -Venstre og højre mappesti forventes efter %x. - -Syntax error -Syntaksfejl - -Cannot find file %x. -Kan ikke finde filen %x. - -Error -Fejl - -File %x does not contain a valid configuration. -Filen %x indeholder ikke gyldige indstillinger. - -The config file must not contain settings at directory pair level when directories are set via command line. -Indstillingsfilen må ikke indeholde indstillinger på mappepar niveau når mapper er sat via kommando. - -Directories cannot be set for more than one configuration file. -Mapper kan ikke sættes til mere end en indstillingsfil. - -Command line -Kommando - -Syntax: -Syntaks: - -config files: -indstillingsfiler: - -directory -mappe - -global config file: -global indstillingsfil: - -Any number of FreeFileSync "ffs_gui" and/or "ffs_batch" configuration files. -Vilkårligt antal FreeFileSync "ffs_gui" og/eller "ffs_batch" indstillingsfiler. - -Any number of alternative directory pairs for at most one config file. -Vilkårligt antal alternative mappepar til højst en indstillingsfil. - -Open the selected configuration for editing only, without executing it. -Åben valgte indstilling for at redigere den. - -Path to an alternate GlobalSettings.xml file. -Sti til alternativ GlobalSettings.xml fil. - -Installation files are corrupted. Please reinstall FreeFileSync. -Ødelagte installationsfiler. Geninstaller FreeFileSync. - -Cannot find the following folders: -Kan ikke finde følgende mapper: - -The following folders do not yet exist: -Følgende mapper findes endnu ikke: - -The folders are created automatically when needed. -De oprettes automatisk efter behov. - -The following folder paths differ in case. Please use a single form in order to avoid duplicate accesses. -I følgende mappestier afviger store/små bogstaver. Ret dem for at undgå duplikater. - -Scanning: -Skanner: - -Comparison finished: -Sammenligning gennemført: - - -1 item found -%x items found - - -1 emne fundet -%x emner fundet - - -Time elapsed: -Brugt tid: - -File %x has an invalid date. -Filen %x har en ugyldig dato. - -Date: -Dato: - -Files have the same date but a different size. -Filer har samme dato men forskellig størrelse. - -Size: -Størrelse: - -Content comparison was skipped for excluded files. -Indholdssammenligning sprunget over for ekskluderede filer. - -Items differ in attributes only -Enhederne har kun attributter til forskel - -Resolving symbolic link %x -Løser symbolsk link %x - -Comparing content of files %x -Sammenligner indhold af filer %x - -Generating file list... -Opretter filliste... - -Fail-safe file copy -Sikker filkopiering - -Enabled -Aktiveret - -Disabled -Deaktiveret - -Copy locked files -Kopier låste filer - -Copy file access permissions -Kopier adgangstilladelser - -File time tolerance -Tidstolerance - -Run with background priority -Kør med baggrundsprioritet - -Lock directories during sync -Lås mapper under synk - -Verify copied files -Kontroller kopierede filer - -Using non-default global settings: -Brug tilpassede overordnede indstillinger: - -A folder input field is empty. -Der er ikke valgt nogen mapper. - -The corresponding folder will be considered as empty. -Den tilsvarende mappe betragtes som tom. - -Exclude: -Ekskludér: - -One base folder of a folder pair is contained in the other one. -Et mappepars overordnede mappe indeholdes i den anden. - -The folder should be excluded from synchronization via filter. -Mappen bør ekskluderes med et filter. - -Calculating sync directions... -Forbereder synkronisering... - -Out of memory. -Ikke nok hukommelse. - -Show in Explorer -Åben filplacering - -Open with default application -Åben med standardprogram - -Browse directory -Gennemse mappe - -Database file %x is incompatible. -Databasefilen %x er inkompatibel. - -Initial synchronization: -Forbereder synkronisering: - -Database file %x does not yet exist. -Databasefilen %x findes ikke. - -Database file is corrupted: -Databasefil i stykker: - -Loading file %x... -Indlæser filen %x... - -The database files do not yet contain information about the last synchronization. -Databasefilen indeholder endnu ikke oplysninger om sidste synkronisering. - -Saving file %x... -Gemmer filen %x... - -Searching for folder %x... -Søger efter mappen %x... - -Timeout while searching for folder %x. -Timeout ved søgning efter mappen %x. - -Cannot get process information. -Kan ikke hente procesinformation. - -Waiting while directory is locked: -Venter mens mappe låses: - -Lock owner: -Låsens ejer: - -Detecting abandoned lock... -Finder efterladt lås... - - -1 sec -%x sec - - -1 sek -%x sek - - -Item exists on left side only -Emnet findes kun på venstre side - -Item exists on right side only -Emnet findes kun på højre side - -Left side is newer -Venstre er nyest - -Right side is newer -Højre er nyest - -Items have different content -Emnerne har forskelligt indhold - -Both sides are equal -Begge sider er ens - -Conflict/item cannot be categorized -Konflikt/ukendt emne - -Copy new item to left -Kopier nyt emne mod venstre - -Copy new item to right -Kopier nyt emne mod højre - -Delete left item -Slet emne til venstre - -Delete right item -Slet emne til højre - -Move file on left -Flyt filen til venstre - -Move file on right -Flyt filen til højre - -Update left item -Opdater venstre emne - -Update right item -Opdater højre emne - -Do nothing -Gør intet - -Update attributes on left -Opdater attributter mod venstre - -Update attributes on right -Opdater attributter mod højre - -Error parsing file %x, row %y, column %z. -Behandlingsfejl i filen %x, række %y, kolonne %z. - -Services -Tjenester - -Show All -Vis alle - -Hide Others -Skjul andre - -Hide %x -Skjul %x - -Quit %x -Luk %x - -Cannot set directory locks for the following folders: -Kan ikke sætte mappelåse for følgende mapper: - -Errors: -Fejl: - -Warnings: -Advarsler: - -Items processed: -Emner behandlet: - -Items remaining: -Emner tilbage: - -Total time: -Samlet tid: - -Warning -Advarsel - -Stopped -Afbrudt - -Cleaning up log files: -Rydder logfiler: - - -1 thread -%x threads - - -1 tråd -%x tråde - - -%x/sec -%x/sek - -%x items -%x emner - -Completed successfully -Gennemført - -Completed with warnings -Gennemført med advarsler - -Completed with errors -Gennemført med fejl - -Cannot access the Volume Shadow Copy Service. -VSS tjenesten er ikke tilgængelig. - -Please run the 64-bit version of FreeFileSync to create shadow copies on this system. -Brug FreeFileSync 64 bit, for at oprette VSS kopier på dette system. - -Volume name %x is not part of file path %y. -Volumennavnet %x er ikke del af filstien %y. - -File time and size -Størrelse og tid - -File content -Indhold - -File size -Størrelse - -Two way -Tovejs - -Mirror -Spejling - -Update -Opdater - -Custom -Tilpasset - -Multiple... -Flere... - -Cannot write file attributes of %x. -Kan ikke skrive filattributter til %x. - -%x and %y have different content. -%x og %y har forskelligt indhold. - -Data verification error: -Verifikationsfejl: - -Moving file %x to %y -Flytter filen %x til %y - -Moving folder %x to %y -Flytter mappen %x til %y - -Moving symbolic link %x to %y -Flytter symlinket %x til %y - -Updating file %x -Opdaterer filen %x - -Updating symbolic link %x -Opdaterer symbolsk link %x - -Verifying file %x -Verificerer filen %x - -Updating attributes of %x -Opdaterer attributter for %x - -Source item %x not found -Kildeemne %x ikke fundet - -Parent folder %x is not existing. -Overordnet mappe %x findes ikke. - -Cannot copy file %x to %y. -Kan ikke kopiere filen %x til %y. - -Creating a Volume Shadow Copy for %x... -Opretter VSS kopi for %x... - -Cannot find folder %x. -Kan ikke finde mappen %x. - -Target folder %x is already existing, but was not available during folder comparison. -Destinationsmappen %x findes allerede, men var utilgængelig under analysen. - -Target folder input field must not be empty. -Destinationsmappen skal angives. - -Source folder %x not found. -Kildemappen %x blev ikke fundet. - -Please enter a target folder for versioning. -Angiv mappe til versionering. - -The following items have unresolved conflicts and will not be synchronized: -Følgende emner har uløste konflikter og synkroniseres ikke: - -Folder pair: -Mappepar: - -The following folders are significantly different. Please check that the correct folders are selected for synchronization. -Følgende mapper er markant forskellige. Kontroller at du har valgt de rigtige mapper. - -Not enough free disk space available in: -Ikke nok ledig diskplads på: - -Available: -Tilgængeligt: - -Some files will be synchronized as part of multiple base folders. -Nogle filer synkroniseres som del af flere basismapper. - -To avoid conflicts, set up exclude filters so that each updated file is included by only one base folder. -For at undgå konflikter, bør ekskluderede filer kun findes i en kildemappe. - -Versioning folder: -Versioneringsmappe: - -Base folder: -Basismappe: - -The versioning folder is contained in a base folder. -Versioneringsmappen ligger i hovedmappen. - -Synchronizing folder pair: -Synkroniserer mappepar: - -Generating database... -Opretter database... - -Searching for old file versions: -Søger efter gamle filversioner: - -Removing old file versions: -Fjerner gamle filversioner: - -Unable to create time stamp for versioning: -Kan ikke oprette tidsstempel til versionering: - -Drag && drop -Træk emner hertil - -Select a folder -Vælg en mappe - -&New -&Ny - -&Open... -&Åben... - -Save &as... -Gem &som... - -E&xit -L&uk - -&File -&Fil - -&View help -&Åben hjælp - -&About -&Om - -&Help -&Hjælp - -Usage: -Gør sådan: - -Select folders to watch. -Vælg mapper til jobbet. - -Enter a command line. -Angiv en kommando. - -Press 'Start'. -Klik 'Start'. - -To get started just import a "ffs_batch" file. -Importer en "ffs_batch"fil (Fil > Åben...) for at komme igang. - -Folders to watch: -Jobbets mapper: - -Add folder -Tilføj mappe - -Remove folder -Fjern mappe - -Browse -Gennemse - -Idle time (in seconds): -Efter PC tomgang (sek): - -Idle time between last detected change and execution of command -Tid mellem sidst fundne ændring og udførsel - -Command line: -Kommando: - -&Hide console window -&Skjul vindue - - -The command is triggered if: -- files or subfolders change -- new folders arrive (e.g. USB stick insert) - - -Kommandoen udføres hvis: -- filer eller undermapper ændres -- nye mapper findes (f.eks. USB nøgle) - - -Start -Start - -About -Om - -Build: %x -Udgivet: %x - -All files -Alle filer - -Automated Synchronization -Automatisk synkronisering - -The %x protocol does not support directory monitoring: -Protokollen %x understøttere ikke mappeovervågning: - -Directory monitoring active -Mappeovervågning aktiv - -Waiting until directory is available: -Venter til mappe er tilgængelig: - -&Configure -&Indstil - -&Show error message -V&is fejlbesked - -&Quit -&Afslut - -&Retry -&Prøv igen - - -1 byte -%x bytes - - -1 byte -%x byte - - -%x MB -%x MB - -%x KB -%x KB - -%x GB -%x GB - -Loading... -Indlæser... - -Scanning... -Skanner... - -configuration file -Indstillingsfil - -System: Sleep -System: Slumre - -System: Shut down -System: Luk - -Nothing to synchronize -Alt er synkroniseret - -Executing command: -Udfører kommando: - -You can switch to FreeFileSync's main window to resolve this issue. -Skift til FreeFileSyncs hovedvindue for at løse problemet. - -&Don't show this warning again -&Vis ikke igen - -&Ignore -&Ignorer - -&Switch -&Skift - -Switching to FreeFileSync's main window -Åbner FreeFileSyncs hovedvindue - -Automatic retry -Forsøg automatisk igen - -Ignore &all -Ignorer &alle - -Retrying operation... -Prøver igen... - -Serious Error -Kritisk fejl - -Last session -Sidste opgave - -Today -Idag - - -1 day -%x days - - -1 dag -%x dage - - -Name -Navn - -Last sync -Sidste synk - -Log -Log - -Folder -Mappe - -Symlink -Symlink - -Full path -Fuld sti - -Relative path -Relativ sti - -Item name -Emnenavn - -Size -Størrelse - -Date -Dato - -Extension -Filtype - -Category -Status - -Action -Handling - -Local comparison settings -Lokale analyseindstillinger - -Local synchronization settings -Lokale synkindstillinger - -Local filter -Lokalt filter - -Active -Aktiv - -None -Ingen - -Remove local settings -Fjern lokale indstillinger - -Clear local filter -Ryd lokale filtre - -Copy -Kopiér - -Paste -Indsæt - -The selected folder %x cannot be used with FreeFileSync. -Mappen %x kan ikke bruges med FreeFileSync. - -Please select a folder on a local file system, network or an MTP device. -Vælg lokal mappe, netværksmappe eller mappe på MTP enhed. - -Defined by context of use -Defineres af aktuelle betingelser - -Requires FreeFileSync Donation Edition -Kræver FreeFileSync donationsudgave - -&Save -&Gem - -Save as &batch job... -Gem som &batchfil... - -Show &log -Vis &log - -Start &comparison -Start &analyse - -C&omparison settings -A&nalyseindstillinger - -&Filter settings -&Filterindstillinger - -S&ynchronization settings -S&ynkroniseringsindstillinger - -Start &synchronization -Start &synkronisering - -&Actions -&Handlinger - -&Preferences -&Indstillinger - -&Language -&Sprog - -&Find... -S&øg... - -&Export file list... -&Eksporter filliste... - -&Reset layout -N&ulstil layout - -&Tools -&Værktøj - -&Check for updates now -S&øg efter opdatering - -Check &automatically once a week -Søg &automatisk en gang om ugen - -Cancel -Annuller - -Compare -Analysér - -Synchronize -Synkronisér - -Add folder pair -Tilføj mappepar - -Remove folder pair -Fjern mappepar - -Access online storage -Åben onlinelager - -Close search bar -Luk søgelinie - -Find: -Søg: - -Match case -Versalfølsom (a/A) - -Processed: -Behandlet: - -Remaining: -Resterende: - -New -Ny - -Open... -Åben... - -Save -Gem - -Save as... -Gem som... - -View type: -Visning: - -Select view: -Vælg visning: - -Save as default -Gem som standard - -Statistics: -Statistik: - -Number of files and folders that will be deleted -Antal filer og mapper der slettes - -Number of files that will be updated -Antal filer der opdateres - -Number of files and folders that will be created -Antal filer og mapper der oprettes - -Total bytes to copy -Antal bytes der kopieres - -Arrange folder pair -Arrangér mappepar - -Main settings: -Overordnede indstillinger: - -Use local settings: -Brug lokale indstillinger: - -Select a variant: -Vælg metode: - -Include &symbolic links: -Medtag &symbolske link: - -&Follow -&Følg - -&Direct -&Henvis - -More information -Mere information - -&Ignore time shift [hh:mm] -&Ignorer tidsændring [tt:mm] - -List of file time offsets to ignore -Tidsændringer der ignoreres - -Example: -Eksempel: - -Handle daylight saving time -Tag hensyn til sommertid - -Ignore errors -Ignorér fejl - -Retry count: -Antal forsøg: - -Delay (in seconds): -Forsinkelse (sek): - -Performance improvements: -Ydelsesforbedring: - -Parallel file operations: -Parallelle filhandlinger: - -How to get best performance? -Hvordan får du bedste ydelse? - -Local settings: -Lokale indstillinger: - -Include: -Inkludér: - -Show examples -Vis eksempler - -Select filter rules to exclude certain files from synchronization. Enter file paths relative to their corresponding folder pair. -Angiv filterregler der udelukker bestemte filer fra synkroniseringen. Filstier skal relatere til kildemapperne. - -File size: -Filstørrelse: - -Minimum: -Minimum: - -Maximum: -Maksimum: - -Time span: -Interval: - -C&lear -R&yd - -Detect moved files -Genkend flyttede filer - - -- Not supported by all file systems -- Requires and creates database files -- Detection not available for first sync - - -- Understøtter ikke alle filsystemer -- Opretter nødvendige databasefiler -- Genkender ikke ved første synk - - -Delete files: -Filsletning: - -&Recycle bin -&Papirkurv - -&Permanent -&Permanent - -&Versioning -&Versionering - -Move files to a user-defined folder -Flyt filer til brugerdefineret mappe - -Naming convention: -Navneregler: - -Limit file versions: -Begræns filversioner: - -Last x days: -Sidste x dage: - -&Override default log path: -&Tilpas logplacering: - -Run a command: -Kør kommando: - -OK -OK - -Connection type: -Forbindelsestype: - -Connected user accounts: -Forbundne konti: - -&Add connection -&Tilføj - -&Disconnect -&Afbryd - -Selected user account: -Valgt konto: - -Server name or IP address: -Servernavn eller IP adresse: - -Port: -Port: - -Encryption: -Kryptering: - -&Disabled -&Deaktiveret - -&Explicit SSL/TLS -&Eksplicit SSL/TLS - -Authentication: -Godkendelse: - -&Password -K&odeord - -&Key file -&Nøglefil - -&SSH agent -&SSH agent - -User name: -Brugernavn: - -Private key file: -Privat nøglefil: - -&Show password -Vis &kodeord - -Directory on server: -Servermappe: - -Access timeout (in seconds): -Timeout (sekunder): - -SFTP channels per connection: -SFTP kanaler pr. forbindelse: - -Detect server limit -Genkend servergrænse - -Select Folder -Vælg mappe - -Variant: -Jobtype: - -&Don't show this dialog again -&Vis ikke igen - -Bytes: -Bytes: - -Items: -Emner: - -Synchronizing... -Synkroniserer... - -Minimize to notification area -Minimér til uret - -Bytes -Bytes - -Items -Emner - -When finished: -Når gennemført: - -Auto-close -Autoluk - -Close -Luk - -&Pause -&Pause - -Stop -Stop - -Create a batch file for unattended synchronization. To start, double-click this file or schedule in a task planner: %x -Opret batchfil til automatisk synkronisering. Start med dobbeltklik på filen eller planlæg via opgavestyring: %x - -Progress dialog: -Fremskridt: - -Run minimized -Kør minimeret - -Show pop-up on errors or warnings -Vis fejlbeskeder og advarsler - -&Cancel -&Annuller - -Stop synchronization at first error -Stop synkronisering ved første fejl - -How can I schedule a batch job? -Hvordan oprettes en batchfil? - -&Keep relative paths -&Bevar relative stier - -&Overwrite existing files -&Overskriv eksisterende filer - -The following settings are used for all synchronization jobs. -Disse indstillinger gælder alle synkroniseringer. - - -Copy to a temporary file (*.ffs_tmp) before overwriting target. -This guarantees a consistent state even in case of a serious error. - - -Kopiér til midlertidig fil (*.ffs_tmp) før overskrivning. -Sikrer processen ved alvorlige fejl. - - -recommended -anbefales - -Copy shared or locked files using the Volume Shadow Copy Service. -Kopiér delte eller låste filer med VSS kopiering. - -requires administrator rights -kræver administratorrettigheder - -Transfer file and folder permissions. -Overfør fil og mappetilladelser. - -Show all permanently hidden dialogs and warning messages again -Vis skjulte advarsler og beskeder igen - -Default log path: -Logplacering: - -&Delete logs after x days: -&Slet logs efter x dage: - -Notification sounds: -Beskedlyde: - -Synchronization finished: -Synkronisering gennemført: - -Customize context menu: -Tilpas kontekstmenu: - -Description -Beskrivelse - -&Default -S&tandard - -Feedback and suggestions are welcome: -Kritik og foreslag er meget velkomne: - -Home page -Hjemmeside - -FreeFileSync Forum -FreeFileSync forum - -Email -Email - -If you like FreeFileSync: -Er du glad for FreeFileSync: - -Support with a donation -Donér for at støtte - -The auto updater was disabled by the administrator. -Autoopdatering deaktiveret af administrator. - -Donation details -Donationsdetaljer - -Source code written in C++ using: -Kildekoden er skrevet i C++ med hjælp fra: - -Published under the GNU General Public License: -Udgivet under GNU General Public License: - -Many thanks for localization: -Tak for oversættelse til: - -Activate the FreeFileSync Donation Edition by one of the following methods: -Aktivér FreeFileSync donationsudgave på en af følgende måder: - -Activate via internet now: -Aktivér via internet nu: - -Activate online -Aktivér online - -Retrieve an offline activation key from the following URL: -Hent offline aktiveringsnøgle fra følgende adresse: - -&Copy to clipboard -&Kopiér - -Enter activation key: -Indsæt aktiveringsnøgle: - -Activate offline -Aktivér offline - -Highlight configurations that have not been run for more than the following number of days: -Fremhæv indstillinger der ikke er kørt i det følgende antal dage: - -FreeFileSync requires access rights to avoid "Operation not permitted" errors when synchronizing your data (e.g. Mail, Messages, Calendars). -FreeFileSync kræver adgangsrettighedeer for at undgå "Handling ikke tilladt" fejl, ved synkronisering af data (mail, beskeder, kalender...etc.). - -Locate the FreeFileSync app -Find FreeFileSync - -Open Security && Privacy -Åben Sikkerhed && anonymitet - -Click the lock to allow changes. -Klik på låsen tillader ændringer. - -Drag FreeFileSync into the panel. -Træk FreeFileSync ind i panelet. - -Synchronization Settings -Synkroniseringsindstillinger - -Access Online Storage -Tilgå online lager - -Save as a Batch Job -Gem som batchfil - -Delete Items -Slet emner - -Copy Items -Kopiér emner - -Options -Indstillinger - -Select Time Span -Vælg tidsinterval - -Highlight Configurations -Fremhæv indstillinger - -Grant Full Disk Access -Tillad fuld adgang til disk - -Info -Info - -No log entries -Ingen logemner - -Select all -Vælg alt - -&Options -&Indstillinger - -Main Bar -Hovedlinie - -Folder Pairs -Mappepar - -Find -Søg - -View Settings -Visninger - -Configuration -Indstilling - -Overview -Oversigt - -Swap sides -Byt side - -Show "%x" -Vis "%x" - -&Show details -&Vis detaljer - -FreeFileSync %x is available! -FreeFileSync %x er udkommet! - -Local path not available for %x. -Placeringen er ikke tilgængelig for %x. - -Confirm -Bekræft - - -Do you really want to execute the command %y for one item? -Do you really want to execute the command %y for %x items? - - -Vil du køre kommandoen %y for 1 emne? -Vil du køre kommandoen %y for %x emner? - - -&Execute -&Udfør - -Set direction: -Retning: - -multiple selection -vælg flere - -&Include via filter: -&Inkludér m. filter: - -&Exclude via filter: -&Ekskludér m. filter: - -Include temporarily -Inkluder midlertidigt - -Exclude temporarily -Ekskluder midlertidigt - -&Synchronize selection -&Synkronisér valgte - -&Copy to... -&Kopier til... - -&Delete -&Slet - -Show icons: -Vis ikoner: - -Small -Små - -Medium -Medium - -Large -Store - -Select time span... -Vælg tidsinterval... - -Donation Edition -Donationsudgave - -Folder Comparison and Synchronization -Mappeanalyse og synkronisering - -Configuration saved -Indstillinger gemt - -FreeFileSync batch -FreeFileSync batchfil - -Do you want to save changes to %x? -Vil du gemme ændringer i %x? - -Never save &changes -Gem &aldrig ændringer - -Do&n't save -&Gem ikke - -%x cannot be renamed. -%x kan ikke omdøbes. - -New name: -Nyt navn: - -Rename Configuration -Indstillinger - -Configuration name must not be empty. -Indstillingsnavn skal udfyldes. - -&Rename... -&Omdøb... - -Hide configuration -Skjul indstillinger - -Highlight... -Fremhæv... - -Clear filter -Ryd filter - -Show files that exist on left side only -Vis filer der kun findes på venstre side - -Show files that exist on right side only -Vis filer der kun findes på højre side - -Show files that are newer on left -Vis nyere filer på venstre side - -Show files that are newer on right -Vis nyere filer på højre side - -Show files that are equal -Vis ens filer - -Show files that are different -Vis uens filer - -Show conflicts -Vis konflikter - -Show files that will be created on the left side -Vis filer der oprettes på venstre side - -Show files that will be created on the right side -Vis filer der oprettes på højre side - -Show files that will be deleted on the left side -Vis filer der slettes på venstre side - -Show files that will be deleted on the right side -Vis filer der slettes på højre side - -Show files that will be updated on the left side -Vis filer der opdateres på venstre side - -Show files that will be updated on the right side -Vis filer der opdateres på højre side - -Show files that won't be copied -Vis filer der ikke kopieres - -Show filtered or temporarily excluded files -Vis filtrerede eller midlertidigt ekskluderede filer - -Filter -Filter - -All files are in sync -Alt er synkroniseret - - -1 directory -%x directories - - -1 mappe -%x mapper - - - -1 file -%x files - - -1 fil -%x filer - - - -Showing %y of 1 row -Showing %y of %x rows - - -Viser %y af 1 række -Viser %y af %x rækker - - -Cannot find %x -Kan ikke finde %x - -Move up -Flyt op - -Move down -Flyt ned - -Comma-separated values -Kommaopdelte værdier - -File list exported -Fillisten blev eksporteret - -Searching for program updates... -Søger efter opdatering... - -Paused -Pauset - -Stop requested... -Stop anmodning... - -Initializing... -Forbereder... - -Comparing content... -Analyserer indhold... - -&Continue -&Fortsæt - -Progress -Fremskridt - -Thank you, %x, for your donation and support! -Tak %x for donationen og støtten! - -Connections -Forbindelser - -Recommended range: -Anbefalet interval: - -Do you really want to disconnect from user account %x? -Vil du afbryde forbindelsen til %x? - -Password: -Kodeord: - -Key passphrase: -Nøglesætning: - -Please enter a file path. -Angiv placering. - - -Copy the following item to another folder? -Copy the following %x items to another folder? - - -Vil du kopiere emnet til en anden mappe? -Vil du kopiere %x emner til en anden mappe? - - -Please enter a target folder. -Angiv destinationsmappe. - - -Do you really want to move the following item to the recycle bin? -Do you really want to move the following %x items to the recycle bin? - - -Vil du flytte følgende emne til papirkurven? -Vil du flytte følgende %x emner til papirkurven? - - -Move -Flyt - - -Do you really want to delete the following item? -Do you really want to delete the following %x items? - - -Vil du slette følgende emne? -Vil du slette følgende %x emner? - - -Start to synchronize the selection? -Start synkronisering af valgte? - -Start synchronization now? -Synkroniser nu? - -Copy DACL, SACL, Owner, Group -Kopiér DACL, SACL, ejer, gruppe - -Integrate external applications into context menu. The following macros are available: -Integrer eksterne programmer i kontekstmenu. Brug følgende macroer: - -Full file or folder path -Fuld fil-/mappesti - -Parent folder path -Forældremappes placering - -Temporary local copy for SFTP and MTP storage -Midlertidig kopi for SFTP og MTP opbevaring - -Parameters for opposite side -Modsatte sides parametre - -Show hidden dialogs again -Gendan skjulte beskeder - -All dialogs shown -Alle dialoger vises - -Downloading update... -Henter opdatering... - -Identify equal files by comparing modification time and size. -Genkend ens filer efter filtid og størrelse. - -Identify equal files by comparing the file content. -Genkend ens filer efter indhold. - -Identify equal files by comparing their file size. -Genkend ens filer ved at sammenligne filstørrelsen. - -Identify and propagate changes on both sides. Deletions, moves and conflicts are detected automatically using a database. -Find og udbred ændringer på begge sider. Sletninger, omdøbninger og konflikter findes automatisk i en database. - -Create a mirror backup of the left folder by adapting the right folder to match. -Opret spejling af venstre mappe ved at tilpasse den højre mappe. - -Copy new and updated files to the right folder. -Kopier nye og opdaterede filer til højre mappe. - -Configure your own synchronization rules. -Opret dine egne synkroniseringsregler. - -Comparison -Analyse - -Synchronization -Synkronisering - -This week -Denne uge - -This month -Denne måned - -This year -Dette år - -Byte -Byte - -KB -KB - -MB -MB - -Retain deleted and overwritten files in the recycle bin -Flyt slettede og overskrevne filer til papirkurv - -Delete and overwrite files permanently -Slet og overskriv permanent - -Replace -Erstat - -Move files and replace if existing -Flyt fil og erstat eventuelt eksisterende - -Time stamp -Tidsstempel - -Move files into a time-stamped subfolder -Flyt filer til tidsmærket undermappe - -File -Fil - -Append a time stamp to each file name -Føj tidsstempel til hvert filnavn - -On completion: -Ved gennemført: - -On errors: -Ved fejl: - -On success: -Ved gennemført: - -Main config -Hovedindstilling - -empty -tom - -Leave as unresolved conflict -Efterlad som uløst konflikt - -YYYY-MM-DD hhmmss -YYYY-MM-DD hhmmss - -Minimum version count must be smaller than maximum count. -Mindste antal versioner skal være mindre end det maksimale. - -&Restore -&Vis vindue - -Files -Filer - -Percentage -Procent - -Failed to retrieve update information. -Opdateringssøgning fejlede. - -Automatic updates: -Automatiske opdateringer: - -Check for Program Updates -Søg efter opdatering - -Auto-update now or download manually from the FreeFileSync home page? -Opdater automatisk nu, eller download fra FreeFileSync hjemmeside? - -&Auto-update -&Autoopdatering - -&Home page -&Hjemmeside - -Download now? -Download nu? - -&Download -&Download - -FreeFileSync is up to date. -FreeFileSync er opdateret. - -Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now? -Kunne ikke konstatere den aktuelle FreeFileSync version online. Der findes sandsynligvis en nyere udgave. Søg manuelt nu? - -&Check -&Kontroller - -Consistency check failed for %x. -Kontrolfejl for %x. - -Installation was registered on a different operating system. -Installationen var registreret på et andet styresystem. - -Failed to activate FreeFileSync Donation Edition. -Aktivering af FreeFileSync donationsudgave mislykkedes. - -Incorrect activation key. -Forkert licens. - -Unable to register to receive system messages. -Kunne ikke registrere modtagelse af systembeskeder. - -The %x installation option is only available in the FreeFileSync Donation Edition. -Installationsmuligheden %x er kun mulig i FreeFileSync Donation Edition. - -Cannot find system function %x. -Kan ikke finde systemfunktionen %x. - -Unable to register device notifications for %x. -Kan ikke registrere beskeder for %x. - -The file is locked by another process: -Filen er låst af en anden process: - -Failed to determine file permission support for folder %x. -Filtilladelser for mappen %x kunne ikke bestemmes. - -Cannot read security context of %x. -Kan ikke læse sikkerhedsindstillinger på %x. - -Cannot write security context of %x. -Kan ikke skrive sikkerhedsindstillinger til %x. - -Cannot read permissions of %x. -Kan ikke læse tilladelserne på %x. - -Cannot copy permissions from %x to %y. -Kan ikke kopiere tilladelser fra %x til %y. - -%x is not a regular directory name. -%x er ikke et gyldigt mappenavn. - -Cannot copy attributes from %x to %y. -Kan ikke kopiere attributter fra %x til %y. - -%x TB -%x TB - -%x PB -%x PB - - -1 min -%x min - - -1 min -%x min - - - -1 hour -%x hours - - -1 time -%x timer - - -Cannot set privilege %x. -Kan ikke sætte %x privilegier. - -Unable to suspend system sleep mode. -Kunne ikke ophæve standby. - -Cannot change process I/O priorities. -Kan ikke ændre I/O prioriteter. - -Checking recycle bin failed for folder %x. -Check papirkurv fejlede for mappen %x. - -Unable to shut down the system. -Kunne ikke lukke computeren. - -Prepare installation -Forbereder installering - -Choose which components you want to install. -Vælg hvordan FreeFileSync skal installeres. - -Select installation type: -Vælg installeringstype: - -Local -Standard - -Portable -Portable - -Save settings in %x -Gem indstillinger i %x - -Register FreeFileSync file extensions -Registrér FreeFileSync filtyper - -Create Explorer context menu entries -Vises i Stifinders højrekliksmenu - -Save settings in installation directory -Gemmer indstillinger i programmets mappe - -Do not write to Registry -Skriver ikke til registreringsdatabasen - -Just copy the files -Udpakker filer til valgt mappe - -Choose a directory for installation: -Vælg installeringsmappe: - -Create shortcuts: -Opret genveje: - -Desktop -På skrivebord - -Start Menu -Startmenu - -Send To -Send til - -Registering FreeFileSync file extensions -Registrerer FreeFileSync filtyper - -Unregistering FreeFileSync file extensions -Fjerner FreeFileSync filtyperegistrering - -FreeFileSync Configuration -FreeFileSync indstillinger - -FreeFileSync Batch File -FreeFileSync batchfil - -FreeFileSync Synchronization Database -FreeFileSync synkroniseringsdatabase - -RealTimeSync Configuration -RealTimeSync indstillinger - -Edit with FreeFileSync -Rediger med FreeFileSync - -Instead of an ad, here's an animal. -Her er et dyr, i stedet for annoncer. - -The FreeFileSync portable version cannot install into a subfolder of %x. -FreeFileSync portable kan ikke installeres i en undermappe til %x. - -Please choose the local installation type or select a different folder for installation. -Installer normalt, eller vælg en anden mappe. - -Get the Donation Edition with bonus features and help keep FreeFileSync ad-free. -Hent donationsudgave med flere funktioner, og hold FreeFileSync fri for annoncer. - diff --git a/FreeFileSync/Build/Resources/Languages/dutch.lng b/FreeFileSync/Build/Resources/Languages/dutch.lng deleted file mode 100755 index 6a7dd34c..00000000 --- a/FreeFileSync/Build/Resources/Languages/dutch.lng +++ /dev/null @@ -1,2136 +0,0 @@ -
- Nederlands - Leo49 - nl_NL - flag_holland.png - 2 - n == 1 ? 0 : 1 -
- -Cannot read file %x. -Kan het bestand %x niet lezen. - - -Unexpected size of data stream. -Expected: %x bytes -Actual: %y bytes - - -Onverwachte grootte van de gegevensstroom. -Verwacht: %x bytes -Werkelijk: %y bytes - - -Cannot write file %x. -Kan bestand %x niet schrijven. - -Cannot write permissions of %x. -Kan de aangegeven machtigingen van %x niet schrijven. - -Operation not supported between different devices. -Bewerking wordt niet ondersteund tussen verschillende apparaten. - -Cannot delete file %x. -Kan bestand %x niet verwijderen. - -Cannot delete symbolic link %x. -Kan de symbolische koppeling %x niet verwijderen. - -Cannot delete directory %x. -De map %x kan niet verwijderd worden. - -Cannot move file %x to %y. -Het bestand %x kan niet naar %y verplaatst worden. - -Cannot copy symbolic link %x to %y. -Kan de symbolische koppeling %x niet kopiëren naar %y. - -Error Code %x -Foutcode %x - -Cannot read directory %x. -Kan de map %x niet lezen. - -Cannot write modification time of %x. -De modificatie-tijd van %x kan niet geschreven worden. - -Cannot read file attributes of %x. -Kan de bestandskenmerken van %x niet lezen. - -Cannot create directory %x. -Kan de map %x niet maken. - -Cannot determine final path for %x. -Kan het uiteindelijke pad voor %x niet bepalen. - -Operation not supported by device. -Bewerking wordt niet ondersteund door het apparaat. - -Cannot resolve symbolic link %x. -Kan de symbolische koppeling %x niet oplossen. - -Unable to move %x to the recycle bin. -Niet in staat om %x naar de prullenbak te verplaatsen. - -Authentication completed. -Authenticatie voltooid. - -You may close this page now and continue with FreeFileSync. -U kunt deze pagina nu sluiten en doorgaan met FreeFileSync. - -Authentication failed. -Verificatie mislukt. - -Unable to connect to %x. -Kan geen verbinding maken met %x. - -Cannot find %x. -Kan %x niet vinden. - -The name %x is used by more than one item in the folder. -De naam %x wordt gebruikt door meer dan één item in de map. - -Please authorize access to user account %x. -Gelieve toestemming te geven om toegang tot het gebruikersaccount %x. - -Cannot open file %x. -Het bestand %x kan niet geopend worden. - -The name %x is already used by another item. -De naam %x wordt al door een ander item gebruikt. - -Cannot determine free disk space for %x. -Kan de vrije schijfruimte voor %x niet bepalen. - -Unable to disconnect from %x. -Kan verbinding van %x niet verbreken. - -Unable to access %x. -Geen toegang tot %x. - -Failed to get information about server %x. -Fout bij het ophalen van informatie over server %x. - -Cannot monitor directory %x. -Kan map %x niet bewaken. - -Cannot find device %x. -Kan apparaat %x niet vinden. - -Cannot open directory %x. -Kan de map %x niet openen. - -Unsupported item type. -Niet-ondersteund item type. - -Incorrect command line: -Onjuiste opdrachtregel: - -The server does not support authentication via %x. -De server ondersteunt geen verificatie via %x. - -Required: -Vereist: - - -Operation timed out after 1 second. -Operation timed out after %x seconds. - - -Bewerking na 1 seconde verlopen. -Bewerking na %x seconden verlopen. - - - -Cannot wait on more than 1 connection at a time. -Cannot wait on more than %x connections at a time. - - -Kan niet meer dan op 1 verbinding tegelijk wachten. -Kan niet meer dan op %x verbindingen tegelijk wachten. - - -Active connections: %x -Actieve verbindingen: %x - -Failed to open SFTP channel number %x. -Fout bij het openen van SFTP kanaalnummer %x. - -Both sides have changed since last synchronization. -Beide zijden zijn gewijzigd sinds de laatste synchronisatie. - -Cannot determine sync-direction: -De synchronisatierichting kan niet worden bepaald: - -No change since last synchronization. -Geen veranderingen sinds de laatste synchronisatie. - -The database entry is not in sync considering current settings. -De databasevermelding is niet gesynchroniseerd volgens de huidige instellingen. - -Setting default synchronization directions: Old files will be overwritten with newer files. -Standaardwaarden instellen voor synchronisatierichtingen: oude bestanden worden overschreven door nieuwere. - -Creating file %x -Bestand %x maken - -Creating folder %x -Map %x maken - -Creating symbolic link %x -Symbolische link %x maken - -Moving file %x to the recycle bin -Verplaatsen van bestand %x naar de prullenbak - -Moving folder %x to the recycle bin -Map %x naar de prullenbak verplaatsen - -Moving symbolic link %x to the recycle bin -Verplaatsen symbolische koppeling %x naar de prullenbak - -Deleting file %x -Bestand %x verwijderen - -Deleting folder %x -Map %x verwijderen - -Deleting symbolic link %x -Symbolische koppeling %x verwijderen - -Checking recycle bin availability for folder %x... -Beschikbaarheid van prullenbak controleren voor map %x... - -The recycle bin is not supported by the following folders. Deleted or overwritten files will not be able to be restored: -De prullenbak wordt niet ondersteund door de volgende mappen. Verwijderde of overschreven bestanden kunnen niet worden hersteld: - -An exception occurred -Er is een uitzondering opgetreden - -A left and a right directory path are expected after %x. -Een linker en een rechter mappad worden verwacht na %x. - -Syntax error -Syntaxis fout - -Cannot find file %x. -Kan bestand %x niet vinden. - -Error -Fout - -File %x does not contain a valid configuration. -Het bestand %x bevat geen geldige configuratie. - -The config file must not contain settings at directory pair level when directories are set via command line. -Het configuratiebestand mag geen instellingen op mappaarniveau bevatten, als de mappen via de opdrachtregel zijn ingesteld. - -Directories cannot be set for more than one configuration file. -Mappen kunnen niet worden gebruikt voor meer dan één configuratiebestand. - -Command line -Opdrachtregel - -Syntax: -Syntax: - -config files: -configuratiebestanden: - -directory -directory - -global config file: -globaal configuratiebestand: - -Any number of FreeFileSync "ffs_gui" and/or "ffs_batch" configuration files. -Een willekeurig aantal FreeFileSync "ffs_gui" en/of "ffs_batch" configuratiebestanden. - -Any number of alternative directory pairs for at most one config file. -Een willekeurig aantal alternatieve mapparen voor maximaal een configuratiebestand. - -Open the selected configuration for editing only, without executing it. -Open de geselecteerde configuratie om deze alleen te bewerken zonder deze uit te voeren. - -Path to an alternate GlobalSettings.xml file. -Bestandspad naar plaatsvervangend GlobalSettings.xml bestand. - -Installation files are corrupted. Please reinstall FreeFileSync. -Installatiebestanden zijn beschadigd. Installeer FreeFileSync opnieuw. - -Cannot find the following folders: -De volgende mappen konden niet worden gevonden: - -The following folders do not yet exist: -De volgende mappen bestaan nog niet: - -The folders are created automatically when needed. -De mappen worden automatisch gemaakt indien dit nodig is. - -The following folder paths differ in case. Please use a single form in order to avoid duplicate accesses. -De volgende mappaden zijn hoofdlettergevoelig. Gebruik een uniforme vorm om dubbele toegang te voorkomen. - -Scanning: -Scannen: - -Comparison finished: -Vergelijking voltooid: - - -1 item found -%x items found - - -1 item gevonden -%x items gevonden - - -Time elapsed: -Verstreken tijd: - -File %x has an invalid date. -Het bestand %x heeft een ongeldige datum. - -Date: -Datum: - -Files have the same date but a different size. -Bestanden hebben dezelfde datum maar verschillende groottes. - -Size: -Grootte: - -Content comparison was skipped for excluded files. -De inhoud vergelijking voor uitgesloten bestanden werd overgeslagen. - -Items differ in attributes only -De items verschillen alleen in de kenmerken - -Resolving symbolic link %x -Symbolische link %x oplossen - -Comparing content of files %x -Vergelijkt de inhoud van bestanden %x - -Generating file list... -Maak bestandslijst... - -Fail-safe file copy -Fail-safe bestand kopiëren - -Enabled -Ingeschakeld - -Disabled -Uitgeschakeld - -Copy locked files -Vergrendelde bestanden kopiëren - -Copy file access permissions -Toegangsmachtigingen om bestanden te kopiëren - -File time tolerance -Tolerantie bestandstijd - -Run with background priority -Uitvoeren met achtergrond prioriteit - -Lock directories during sync -Mappen vergrendelen tijdens de synchronisatie - -Verify copied files -Controleer de gekopieerde bestanden - -Using non-default global settings: -Het gebruik van niet-standaard algemene instellingen: - -A folder input field is empty. -Invoerveld van een map is leeg. - -The corresponding folder will be considered as empty. -De betreffende map wordt als leeg beschouwd. - -Exclude: -Uitgesloten: - -One base folder of a folder pair is contained in the other one. -Een basismap van een mappaar is opgenomen in de andere. - -The folder should be excluded from synchronization via filter. -De map moet worden uitgesloten van synchronisatie via filter. - -Calculating sync directions... -Berekenen sync richtingen... - -Out of memory. -Onvoldoende werkgeheugen. - -Show in Explorer -In Explorer weergeven - -Open with default application -Openen met standaardtoepassing - -Browse directory -Blader in map - -Database file %x is incompatible. -Databasebestand %x is niet compatibel. - -Initial synchronization: -Initiële synchronisatie: - -Database file %x does not yet exist. -Databasebestand %x bestaat nog niet. - -Database file is corrupted: -Databasebestand is beschadigd: - -Loading file %x... -Laden van bestand %x... - -The database files do not yet contain information about the last synchronization. -De databasebestanden bevatten nog geen informatie over de laatste synchronisatie. - -Saving file %x... -Opslaan van bestand %x... - -Searching for folder %x... -Zoeken naar map %x... - -Timeout while searching for folder %x. -Time-out tijdens het zoeken naar de map %x. - -Cannot get process information. -Kan geen procesinformatie krijgen. - -Waiting while directory is locked: -Wachten terwijl de map is vergrendeld: - -Lock owner: -Vergrendel eigenaar: - -Detecting abandoned lock... -Opsporen van verlaten vergrendeling... - - -1 sec -%x sec - - -1 sec -%x sec - - -Item exists on left side only -Item bestaat alleen aan de linkerzijde - -Item exists on right side only -Item bestaat alleen aan de rechterzijde - -Left side is newer -Linkerzijde is nieuwer - -Right side is newer -Rechterzijde is nieuwer - -Items have different content -Items hebben verschillende inhoud - -Both sides are equal -Beide zijden zijn gelijk - -Conflict/item cannot be categorized -Conflict/item kan niet worden gecategoriseerd - -Copy new item to left -Kopieer nieuw item naar links - -Copy new item to right -Kopieer nieuw item naar rechts - -Delete left item -Verwijder linker item - -Delete right item -Verwijder rechter item - -Move file on left -Verplaats linker bestand - -Move file on right -Verplaats rechter bestand - -Update left item -Update linker item - -Update right item -Update rechter item - -Do nothing -Niets doen - -Update attributes on left -Update kenmerken aan de linkerzijde - -Update attributes on right -Update kenmerken aan de rechterzijde - -Error parsing file %x, row %y, column %z. -Fout bij het analyseren van bestand %x, rij %y, kolom %z. - -Services -Diensten - -Show All -Toon alles - -Hide Others -Verberg anderen - -Hide %x -Verberg %x - -Quit %x -Sluit %x - -Cannot set directory locks for the following folders: -Kan map vergrendelingen niet instellen voor de volgende mappen: - -Errors: -Fouten: - -Warnings: -Waarschuwingen: - -Items processed: -Items verwerkt: - -Items remaining: -Overgebleven items: - -Total time: -Totale tijd: - -Warning -Waarschuwing - -Stopped -Gestopt - -Cleaning up log files: -Logbestanden opschonen: - - -1 thread -%x threads - - -1 thread -%x threads - - -%x/sec -%x/sec - -%x items -%x items - -Completed successfully -Succesvol voltooid - -Completed with warnings -Voltooid met waarschuwingen - -Completed with errors -Voltooid met fouten - -Cannot access the Volume Shadow Copy Service. -Kan geen toegang krijgen tot de Volume Shadow Copy Service. - -Please run the 64-bit version of FreeFileSync to create shadow copies on this system. -Gelieve de 64-bits versie van FreeFileSync te gebruiken om schaduwkopiën te maken op dit systeem. - -Volume name %x is not part of file path %y. -Volumenaam %x behoort niet tot bestandspad %y. - -File time and size -Datum en grootte bestand - -File content -Bestandsinhoud - -File size -Bestandsgrootte - -Two way -Twee richtingen - -Mirror -Spiegelen - -Update -Bijwerken - -Custom -Aangepast - -Multiple... -Meerdere... - -Cannot write file attributes of %x. -De bestandskenmerken voor %x kunnen niet geschreven worden. - -%x and %y have different content. -%x en %y hebben verschillende inhoud. - -Data verification error: -Gegevens verificatiefout: - -Moving file %x to %y -Bestand %x verplaatsen naar %y - -Moving folder %x to %y -Map %x verplaatsen naar %y - -Moving symbolic link %x to %y -Symbolische link %x verplaatsen naar %y - -Updating file %x -Bestand %x bijwerken - -Updating symbolic link %x -Symbolische link %x bijwerken - -Verifying file %x -Controleren van bestand %x - -Updating attributes of %x -Kenmerken van %x bijwerken - -Source item %x not found -Bronitem %x niet gevonden - -Parent folder %x is not existing. -Bovenliggende map %x bestaat niet. - -Cannot copy file %x to %y. -Kan bestand %x niet kopiëren naar %y. - -Creating a Volume Shadow Copy for %x... -Maken van een volume schaduwkopie voor %x... - -Cannot find folder %x. -Kan de map %x niet vinden. - -Target folder %x is already existing, but was not available during folder comparison. -Doelmap %x bestaat al, maar was niet beschikbaar tijdens het vergelijken van de mappen. - -Target folder input field must not be empty. -Het invoerveld van de doelmap moet niet leeg zijn. - -Source folder %x not found. -Bronmap %x niet gevonden. - -Please enter a target folder for versioning. -Voer een doelmap in voor versiebeheer. - -The following items have unresolved conflicts and will not be synchronized: -De volgende items hebben onopgeloste conflicten en zullen niet worden gesynchroniseerd: - -Folder pair: -Map-paar: - -The following folders are significantly different. Please check that the correct folders are selected for synchronization. -De volgende mappen zijn significant verschillend. Controleer of de juiste mappen zijn geselecteerd voor synchronisatie. - -Not enough free disk space available in: -Er is onvoldoende vrije schijfruimte beschikbaar in: - -Available: -Beschikbaar: - -Some files will be synchronized as part of multiple base folders. -Sommige bestanden worden gesynchroniseerd als onderdeel van meerdere basis mappen. - -To avoid conflicts, set up exclude filters so that each updated file is included by only one base folder. -Om conflicten te voorkomen, stelt u de uitsluitingsfilters zo in dat elk bijgewerkt bestand slechts door één basismap wordt opgenomen. - -Versioning folder: -Map versiebeheer: - -Base folder: -Basismap: - -The versioning folder is contained in a base folder. -De map versiebeheer bevindt zich in een basismap. - -Synchronizing folder pair: -Synchroniseren van map-paar: - -Generating database... -Genereren database... - -Searching for old file versions: -Naar oude bestandsversies zoeken: - -Removing old file versions: -Oude bestandsversies verwijderen: - -Unable to create time stamp for versioning: -Kan geen tijdstempel maken voor versiebeheer: - -Drag && drop -Slepen && neerzetten - -Select a folder -Selecteer een map - -&New -&Nieuw - -&Open... -&Openen... - -Save &as... -Opslaan &als... - -E&xit -A&fsluiten - -&File -&Bestand - -&View help -&Help weergeven - -&About -&Over - -&Help -&Help - -Usage: -Gebruik: - -Select folders to watch. -Selecteer mappen om te bekijken. - -Enter a command line. -Een opdrachtregel invoeren. - -Press 'Start'. -Druk op 'Start'. - -To get started just import a "ffs_batch" file. -Om te beginnen gewoon een "ffs_batch"-bestand importeren. - -Folders to watch: -Mappen om te bekijken: - -Add folder -Map toevoegen - -Remove folder -Map verwijderen - -Browse -Bladeren - -Idle time (in seconds): -Inactieve tijd (in seconden): - -Idle time between last detected change and execution of command -Inactieve tijd tussen laatste gedetecteerde wijziging en uitvoering van de opdracht - -Command line: -Opdrachtregel: - -&Hide console window -&Verberg bedieningspaneel - - -The command is triggered if: -- files or subfolders change -- new folders arrive (e.g. USB stick insert) - - -De opdracht wordt geactiveerd als: -- bestanden of submappen wijzigen -- nieuwe mappen verschijnen (b.v. USB-stick wordt geplaatst) - - -Start -Start - -About -Over - -Build: %x -Ontwikkeld: %x - -All files -Alle bestanden - -Automated Synchronization -Automatische synchronisatie - -The %x protocol does not support directory monitoring: -Het %x protocol ondersteunt geen mapcontrole: - -Directory monitoring active -Mapcontrole actief - -Waiting until directory is available: -Wachten tot de map beschikbaar is: - -&Configure -&Configureer - -&Show error message -&Toon foutmelding - -&Quit -&Stoppen - -&Retry -&Probeer opnieuw - - -1 byte -%x bytes - - -1 byte -%x bytes - - -%x MB -%x MB - -%x KB -%x KB - -%x GB -%x GB - -Loading... -Laden... - -Scanning... -Scannen... - -configuration file -configuratiebestand - -System: Sleep -Systeem: Slaapstand - -System: Shut down -Systeem: Uitschakelen - -Nothing to synchronize -Niets om te synchroniseren - -Executing command: -Opdracht uitvoeren: - -You can switch to FreeFileSync's main window to resolve this issue. -U kunt overschakelen naar het hoofdvenster van FreeFileSync om dit probleem op te lossen. - -&Don't show this warning again -&Deze waarschuwing niet opnieuw weergeven - -&Ignore -&Negeren - -&Switch -&Wisselen - -Switching to FreeFileSync's main window -Overschakelen naar het hoofdvenster van FreeFileSyncs - -Automatic retry -Automatisch opnieuw proberen - -Ignore &all -Negeer &alles - -Retrying operation... -Bewerking opnieuw proberen... - -Serious Error -Ernstige fout - -Last session -Laatste sessie - -Today -Vandaag - - -1 day -%x days - - -1 dag -%x dagen - - -Name -Naam - -Last sync -Laatste synchronisatie - -Log -Logboek - -Folder -Map - -Symlink -Symbolische link - -Full path -Volledig pad - -Relative path -Relatief pad - -Item name -Itemnaam - -Size -Grootte - -Date -Datum - -Extension -Uitbreiding - -Category -Categorie - -Action -Actie - -Local comparison settings -Lokale vergelijking instellingen - -Local synchronization settings -Lokale synchronisatie instellingen - -Local filter -Lokaal filter - -Active -Actief - -None -Geen - -Remove local settings -Lokale instellingen verwijderen - -Clear local filter -Verwijder lokaal filter - -Copy -Kopieer - -Paste -Plakken - -The selected folder %x cannot be used with FreeFileSync. -De geselecteerde map %x kan niet worden gebruikt met FreeFileSync. - -Please select a folder on a local file system, network or an MTP device. -Selecteer een map op een lokaal bestandssysteem, netwerk of een MTP-apparaat. - -Defined by context of use -Gedefinieerd door de samenhang van het gebruik - -Requires FreeFileSync Donation Edition -Vereist FreeFileSync Donatie Editie - -&Save -&Opslaan - -Save as &batch job... -Opslaan als &batchverwerking... - -Show &log -Bekijk &logbestand - -Start &comparison -Start &vergelijking - -C&omparison settings -V&ergelijkings instellingen - -&Filter settings -&Filter instellingen - -S&ynchronization settings -S&ynchronisatie instellingen - -Start &synchronization -Start &synchronisatie - -&Actions -&Acties - -&Preferences -&Voorkeuren - -&Language -&Taal - -&Find... -&Zoeken... - -&Export file list... -&Exporteren bestandslijst... - -&Reset layout -&Reset lay-out - -&Tools -&Gereedschap - -&Check for updates now -&Controleren op updates - -Check &automatically once a week -Controleer eens per week &automatisch - -Cancel -Annuleren - -Compare -Vergelijken - -Synchronize -Synchroniseren - -Add folder pair -Map-paar toevoegen - -Remove folder pair -Verwijder map-paar - -Access online storage -Toegang tot online opslag - -Close search bar -Sluit de zoekbalk - -Find: -Zoeken: - -Match case -Hoofdlettergevoelig - -Processed: -Verwerkt: - -Remaining: -Resterend: - -New -Nieuw - -Open... -Openen... - -Save -Opslaan - -Save as... -Opslaan als... - -View type: -Type bekijken: - -Select view: -Selecteer weergave: - -Save as default -Opslaan als standaard - -Statistics: -Statistieken: - -Number of files and folders that will be deleted -Aantal bestanden en mappen die worden verwijderd - -Number of files that will be updated -Aantal bestanden die bijgewerkt zullen worden - -Number of files and folders that will be created -Aantal bestanden en mappen die worden gemaakt - -Total bytes to copy -Totaal aantal te kopiëren bytes - -Arrange folder pair -Rangschik folder-paar - -Main settings: -Belangrijkste instellingen: - -Use local settings: -Gebruik lokale instellingen: - -Select a variant: -Selecteer een variant: - -Include &symbolic links: -Inclusief &symbolische links: - -&Follow -&Volgen - -&Direct -&Direct - -More information -Meer informatie - -&Ignore time shift [hh:mm] -&Negeer tijdsverschuiving [hh:mm] - -List of file time offsets to ignore -Lijst van bestandstijdverschuivingen om te negeren - -Example: -Voorbeeld: - -Handle daylight saving time -Zomertijd gebruiken - -Ignore errors -Negeer fouten - -Retry count: -Probeer opnieuw te tellen: - -Delay (in seconds): -Vertraging (in seconden): - -Performance improvements: -Prestatieverbeteringen: - -Parallel file operations: -Parallelle bestandsbewerkingen: - -How to get best performance? -Hoe kom je aan de beste prestaties? - -Local settings: -Lokale instellingen: - -Include: -Inclusief: - -Show examples -Toon voorbeelden - -Select filter rules to exclude certain files from synchronization. Enter file paths relative to their corresponding folder pair. -Selecteer filterregels om bepaalde bestanden uit te sluiten van synchronisatie. Voer bestandspaden in ten opzichte van hun bijbehorend map-paar. - -File size: -Bestandsgrootte: - -Minimum: -Minimum: - -Maximum: -Maximum: - -Time span: -Tijdsduur: - -C&lear -&Wissen - -Detect moved files -Detecteren van verplaatste bestanden - - -- Not supported by all file systems -- Requires and creates database files -- Detection not available for first sync - - -- Niet ondersteund door alle bestandssystemen -- Vereist en maakt database bestanden -- Detectie niet beschikbaar voor de eerste synchronisatie - - -Delete files: -Bestanden verwijderen: - -&Recycle bin -&Prullenbak - -&Permanent -&Permanent - -&Versioning -&Versiebeheer - -Move files to a user-defined folder -Verplaats bestanden naar een door de gebruiker gedefinieerde map - -Naming convention: -Naamgevingsconventie: - -Limit file versions: -Beperk bestandsversies: - -Last x days: -Laatste x dagen: - -&Override default log path: -&Overschrijf standaard logboekpad: - -Run a command: -Voer een opdracht uit: - -OK -OK - -Connection type: -Verbindingstype: - -Connected user accounts: -Verbonden gebruikersaccounts: - -&Add connection -&Verbinding toevoegen - -&Disconnect -&Verbreken - -Selected user account: -Geselecteerde gebruikersaccount: - -Server name or IP address: -Servernaam of IP-adres: - -Port: -Poort: - -Encryption: -Codering: - -&Disabled -&Uitgeschakeld - -&Explicit SSL/TLS -&Expliciete SSL/TLS - -Authentication: -Verificatie: - -&Password -&Wachtwoord - -&Key file -&Sleutelbestand - -&SSH agent -&SSH-agent(Putty) - -User name: -Gebruikersnaam: - -Private key file: -Prive sleutelbestand: - -&Show password -&Toon wachtwoord - -Directory on server: -Map op de server: - -Access timeout (in seconds): -Toegang timeout (in seconden): - -SFTP channels per connection: -SFTP kanalen per verbinding: - -Detect server limit -Gedetecteerd server limiet - -Select Folder -Selecteer map - -Variant: -Variant: - -&Don't show this dialog again -&Dit dialoogvenster niet opnieuw weergeven - -Bytes: -Bytes: - -Items: -Objecten: - -Synchronizing... -Synchroniseren... - -Minimize to notification area -Minimaliseren naar systeemvak - -Bytes -Bytes - -Items -Objecten - -When finished: -Indien gereed: - -Auto-close -Automatisch sluiten - -Close -Sluiten - -&Pause -&Pauze - -Stop -Stop - -Create a batch file for unattended synchronization. To start, double-click this file or schedule in a task planner: %x -Maak een batch-bestand om zonder toezicht te synchroniseren. Om te starten, dubbelklik op het bestand of maak een opdracht in de taakplanner: %x - -Progress dialog: -Voortgangsdialoog: - -Run minimized -Geminimaliseerd uitvoeren - -Show pop-up on errors or warnings -Toon pop-up bij fouten of waarschuwingen - -&Cancel -&Annuleer - -Stop synchronization at first error -Synchronisatie bij eerste fout stoppen - -How can I schedule a batch job? -Hoe kan ik een batchverwerking plannen? - -&Keep relative paths -&Houd relatieve paden - -&Overwrite existing files -&Overschrijf bestaande bestanden - -The following settings are used for all synchronization jobs. -De volgende instellingen worden gebruikt voor alle synchronisatie opdrachten. - - -Copy to a temporary file (*.ffs_tmp) before overwriting target. -This guarantees a consistent state even in case of a serious error. - - -Kopiëren naar een tijdelijk bestand (*.ffs_tmp) voordat het doel wordt overschreven. -Dit garandeert een consistente status zelfs in het geval van een ernstige fout. - - -recommended -aanbevolen - -Copy shared or locked files using the Volume Shadow Copy Service. -Gedeelde of vergrendelde bestanden met behulp van de Volume Schaduw copy-Service kopiëren. - -requires administrator rights -vereist beheerdersrechten - -Transfer file and folder permissions. -Overdracht van bestands- en mapmachtigingen. - -Show all permanently hidden dialogs and warning messages again -Alle permanent verborgen dialogen en waarschuwingsberichten opnieuw weergeven - -Default log path: -Standaard logboek pad: - -&Delete logs after x days: -&Verwijder logboeken na x dagen: - -Notification sounds: -Meldingsgeluiden: - -Synchronization finished: -De synchronisatie is voltooid: - -Customize context menu: -Contextmenu aanpassen: - -Description -Beschrijving - -&Default -&Standaard - -Feedback and suggestions are welcome: -Terugkoppeling en suggesties zijn welkom: - -Home page -Startpagina - -FreeFileSync Forum -FreeFileSync Forum - -Email -Email - -If you like FreeFileSync: -Als FreeFileSync je bevalt: - -Support with a donation -Steunen met een donatie - -The auto updater was disabled by the administrator. -De automatische updater werd uitgeschakeld door de beheerder. - -Donation details -Donatie details - -Source code written in C++ using: -Broncode werd in C++ geschreven met: - -Published under the GNU General Public License: -Gepubliceerd onder de GNU General Public License: - -Many thanks for localization: -Hartelijk dank voor de lokalisatie: - -Activate the FreeFileSync Donation Edition by one of the following methods: -Activeer de FreeFileSync Donatie Editie door één van de volgende manieren: - -Activate via internet now: -Activeer nu via internet: - -Activate online -Online activeren - -Retrieve an offline activation key from the following URL: -Een offline activatie sleutel ophalen van de volgende URL: - -&Copy to clipboard -&Naar klembord kopiëren - -Enter activation key: -Voer activeringscode in: - -Activate offline -Activeer offline - -Highlight configurations that have not been run for more than the following number of days: -Markeer configuraties die niet meer dan het volgende aantal dagen zijn uitgevoerd: - -FreeFileSync requires access rights to avoid "Operation not permitted" errors when synchronizing your data (e.g. Mail, Messages, Calendars). -FreeFileSync heeft toegangsrechten nodig om te voorkomen dat "Bediening niet toegestaan" foutmeldingen bij het synchroniseren van uw gegevens (bijv. Mail, Berichten, Kalenders) ontstaan. - -Locate the FreeFileSync app -Zoek de FreeFileSync-app op - -Open Security && Privacy -Open Beveiliging en privacy - -Click the lock to allow changes. -Klik op het slot om wijzigingen toe te staan. - -Drag FreeFileSync into the panel. -Sleep FreeFileSync naar het paneel. - -Synchronization Settings -Synchronisatie instellingen - -Access Online Storage -Toegang Online Opslag - -Save as a Batch Job -Opslaan als een batchverwerking - -Delete Items -Items verwijderen - -Copy Items -Items kopiëren - -Options -Opties - -Select Time Span -Selecteer tijdsduur - -Highlight Configurations -Markeer Configuraties - -Grant Full Disk Access -Volledige schijftoegang verlenen - -Info -Info - -No log entries -Geen vermeldingen in het logboek - -Select all -Alles selecteren - -&Options -&Opties - -Main Bar -Hoofdbalk - -Folder Pairs -Map-paren - -Find -Zoeken - -View Settings -Instellingen bekijken - -Configuration -Configuratie - -Overview -Overzicht - -Swap sides -Verwisselen van zijden - -Show "%x" -Toon "%x" - -&Show details -&Toon details - -FreeFileSync %x is available! -FreeFileSync %x is beschikbaar! - -Local path not available for %x. -Lokaal pad niet beschikbaar voor %x. - -Confirm -Bevestigen - - -Do you really want to execute the command %y for one item? -Do you really want to execute the command %y for %x items? - - -Wilt u echt het commando %y voor één item uitvoeren? -Wilt u echt het commando %y voor %x items uitvoeren? - - -&Execute -&Uitvoeren - -Set direction: -Richting instellen: - -multiple selection -meervoudige selectie - -&Include via filter: -Via filter &Toevoegen: - -&Exclude via filter: -Via filter &Uitsluiten: - -Include temporarily -Tijdelijk opnemen - -Exclude temporarily -Tijdelijk uitsluiten - -&Synchronize selection -Selectie &synchroniseren - -&Copy to... -&Kopiëren naar... - -&Delete -&Verwijderen - -Show icons: -Pictogrammen weergeven: - -Small -Klein - -Medium -Medium - -Large -Groot - -Select time span... -Selecteer tijdsduur... - -Donation Edition -Donatie Editie - -Folder Comparison and Synchronization -Map vergelijken en synchroniseren - -Configuration saved -Configuratie opgeslagen - -FreeFileSync batch -FreeFileSync batch - -Do you want to save changes to %x? -Wilt u de wijzigingen in %x opslaan? - -Never save &changes -&Wijzigingen nooit opslaan - -Do&n't save -&Niet opslaan - -%x cannot be renamed. -%x kan niet worden hernoemd. - -New name: -Nieuwe naam: - -Rename Configuration -Hernoem configuratie - -Configuration name must not be empty. -De configuratienaam mag niet leeg zijn. - -&Rename... -&Hernoem.... - -Hide configuration -Verberg configuratie - -Highlight... -Markeer... - -Clear filter -Filter wissen - -Show files that exist on left side only -Toon bestanden die bestaan alleen aan de linkerzijde - -Show files that exist on right side only -Toon bestanden die bestaan alleen aan de rechterzijde - -Show files that are newer on left -Bestanden die nieuwer zijn aan de linkerzijde weergeven - -Show files that are newer on right -Bestanden die nieuwer zijn aan de rechterzijde weergeven - -Show files that are equal -Bestanden die gelijk zijn weergeven - -Show files that are different -Bestanden die verschillend zijn weergeven - -Show conflicts -Conflicten weergeven - -Show files that will be created on the left side -Bestanden die gemaakt worden aan de linkerzijde weergeven - -Show files that will be created on the right side -Bestanden die gemaakt worden aan de rechterzijde weergeven - -Show files that will be deleted on the left side -Bestanden die worden verwijderd aan de linkerzijde weergeven - -Show files that will be deleted on the right side -Bestanden die worden verwijderd aan de rechterzijde weergeven - -Show files that will be updated on the left side -Toon bestanden die worden bijgewerkt aan de linkerzijde - -Show files that will be updated on the right side -Toon bestanden die worden bijgewerkt aan de rechterzijde - -Show files that won't be copied -Bestanden weergeven die niet gekopiërd worden - -Show filtered or temporarily excluded files -Toon gefilterde of tijdelijk uitgesloten bestanden - -Filter -Filter - -All files are in sync -Alle bestanden zijn in synchronisatie - - -1 directory -%x directories - - -1 map -%x mappen - - - -1 file -%x files - - -1 bestand -%x bestanden - - - -Showing %y of 1 row -Showing %y of %x rows - - -%y van 1 rij weergeven -%y van %x rijen weergeven - - -Cannot find %x -Kan %x niet vinden. - -Move up -Omhoog - -Move down -Omlaag - -Comma-separated values -Door komma gescheiden waarden - -File list exported -Bestandenlijst geëxporteerd - -Searching for program updates... -Zoeken naar programma-updates... - -Paused -Onderbroken - -Stop requested... -Stop gevraagd... - -Initializing... -Initialiseren... - -Comparing content... -Inhoud vergelijken... - -&Continue -&Doorgaan - -Progress -Voortgang - -Thank you, %x, for your donation and support! -Dank u, %x, voor uw donatie en ondersteuning! - -Connections -Verbindingen - -Recommended range: -Aanbevolen bereik: - -Do you really want to disconnect from user account %x? -Wilt u echt de verbinding verbreken met gebruikersaccount %x? - -Password: -Wachtwoord: - -Key passphrase: -Wachtwoordzin: - -Please enter a file path. -Voer een bestandspad in. - - -Copy the following item to another folder? -Copy the following %x items to another folder? - - -Kopieer het volgende item naar een andere map? -Kopieer de volgende %x items naar een andere map? - - -Please enter a target folder. -Selecteer een doelmap. - - -Do you really want to move the following item to the recycle bin? -Do you really want to move the following %x items to the recycle bin? - - -Wilt u het volgende item echt naar de prullenbak verplaatsen? -Wilt u de volgende %x items echt naar de prullenbak verplaatsen? - - -Move -Verplaatsen - - -Do you really want to delete the following item? -Do you really want to delete the following %x items? - - -Wilt u het volgende item echt verwijderen? -Wilt u de volgende %x items echt verwijderen? - - -Start to synchronize the selection? -De selectie nu synchroniseren? - -Start synchronization now? -Synchronisatie nu starten? - -Copy DACL, SACL, Owner, Group -Kopiëren DACL, SACL, Eigenaar, Groep - -Integrate external applications into context menu. The following macros are available: -Externe applicaties integreren in het contextmenu. De volgende macro's zijn beschikbaar: - -Full file or folder path -Volledig bestand of mappad - -Parent folder path -Bovenliggend mappad - -Temporary local copy for SFTP and MTP storage -Tijdelijke lokale kopie voor SFTP en MTP-opslag - -Parameters for opposite side -Parameters voor de andere kant - -Show hidden dialogs again -Verborgen dialoogvensters weergeven - -All dialogs shown -Alle dialoogvensters worden getoond - -Downloading update... -Downloaden van update... - -Identify equal files by comparing modification time and size. -Identificeer gelijke bestanden door het vergelijken van wijzigingen in tijd en grootte. - -Identify equal files by comparing the file content. -Identificeer gelijke bestanden door het vergelijken van de bestandsinhoud. - -Identify equal files by comparing their file size. -Identificeer gelijke bestanden door de bestandsgrootte te vergelijken. - -Identify and propagate changes on both sides. Deletions, moves and conflicts are detected automatically using a database. -Identificeren en doorgeven van veranderingen aan beide kanten. Verwijderingen, verplaatsingen en conflicten worden automatisch gedetecteerd met behulp van een database. - -Create a mirror backup of the left folder by adapting the right folder to match. -Maak een spiegel-backup van de linkermap, door de rechtermap aan te aanpassen. - -Copy new and updated files to the right folder. -Nieuwe en bijgewerkte bestanden naar de rechter map kopiëren. - -Configure your own synchronization rules. -Configureer uw eigen synchronisatie regels. - -Comparison -Vergelijking - -Synchronization -Synchronisatie - -This week -Deze week - -This month -Deze maand - -This year -Dit jaar - -Byte -Byte - -KB -KB - -MB -MB - -Retain deleted and overwritten files in the recycle bin -Bewaar verwijderde en overschreven bestanden in de prullenbak - -Delete and overwrite files permanently -Verwijder en overschrijf bestanden permanent - -Replace -Vervangen - -Move files and replace if existing -Verplaats bestanden en vervang bestaande - -Time stamp -Tijdstempel - -Move files into a time-stamped subfolder -Verplaats bestanden naar een submap met tijdstempel - -File -Bestand - -Append a time stamp to each file name -Aan elke bestandsnaam een tijdstempel toevoegen - -On completion: -Na voltooiing: - -On errors: -Op fouten: - -On success: -Op succes: - -Main config -Hoofd configuratie - -empty -leeg - -Leave as unresolved conflict -Laten als onopgelost conflict - -YYYY-MM-DD hhmmss -JJJJ-MM-DD hhmmss - -Minimum version count must be smaller than maximum count. -Het minimum aantal versies moet kleiner zijn dan het maximale aantal. - -&Restore -&Herstellen - -Files -Bestanden - -Percentage -Percentage - -Failed to retrieve update information. -Het ophalen van de update informatie is mislukt. - -Automatic updates: -Automatische updates: - -Check for Program Updates -Controleer voor programma-updates - -Auto-update now or download manually from the FreeFileSync home page? -Auto-update nu of handmatig downloaden vanaf de startpagina FreeFileSync? - -&Auto-update -&Auto-update - -&Home page -&Startpagina - -Download now? -Nu downloaden? - -&Download -&Downloaden - -FreeFileSync is up to date. -FreeFileSync is actueel. - -Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now? -Kan het actuele FreeFileSync versienummer online niet vinden. Een nieuwere versie is waarschijnlijk beschikbaar. Nu handmatig controleren? - -&Check -&Controleren - -Consistency check failed for %x. -Consistentiecontrole mislukt voor %x. - -Installation was registered on a different operating system. -Installatie was geregistreerd op een ander besturingssysteem. - -Failed to activate FreeFileSync Donation Edition. -Kan de FreeFileSync Donatie Editie niet activeren. - -Incorrect activation key. -Onjuiste activeringssleutel. - -Unable to register to receive system messages. -Niet in staat om de ontvangen systeemberichten te registreren. - -The %x installation option is only available in the FreeFileSync Donation Edition. -De %x installatieoptie is alleen beschikbaar in de FreeFileSync Donatie Editie. - -Cannot find system function %x. -Kan de systeemfunctie %x niet vinden. - -Unable to register device notifications for %x. -Niet in staat om apparaat meldingen te registreren voor %x. - -The file is locked by another process: -Het bestand is vergrendeld door een ander proces: - -Failed to determine file permission support for folder %x. -Kan ondersteuning voor bestandsrechten voor map %x niet bepalen. - -Cannot read security context of %x. -Kan de beveiligingscontext van %x niet lezen. - -Cannot write security context of %x. -Kan de beveiligingscontext van %x niet schrijven. - -Cannot read permissions of %x. -Kan de aangegeven machtigingen van %x niet lezen. - -Cannot copy permissions from %x to %y. -Kan de toegangsrechten van %x niet kopiëren naar %y. - -%x is not a regular directory name. -%x is niet een normale mapnaam. - -Cannot copy attributes from %x to %y. -Kan de attributen van %x niet kopiëren naar %y. - -%x TB -%x TB - -%x PB -%x PB - - -1 min -%x min - - -1 min. -%x min. - - - -1 hour -%x hours - - -1 uur -%x uren - - -Cannot set privilege %x. -Kan geen privileges %x instellen. - -Unable to suspend system sleep mode. -Niet in staat om de systeem slaapstand op te schorten. - -Cannot change process I/O priorities. -De input/output prioriteiten kunnen niet gewijzigd worden. - -Checking recycle bin failed for folder %x. -Controle van de prullenbak voor map %x is mislukt. - -Unable to shut down the system. -Kan het systeem niet afsluiten. - -Prepare installation -Installatie voorbereiden - -Choose which components you want to install. -Kies welke onderdelen u wilt installeren. - -Select installation type: -Selecteer type installatie: - -Local -Lokaal - -Portable -Mobiele - -Save settings in %x -Instellingen opslaan in %x - -Register FreeFileSync file extensions -Registreer FreeFileSync bestands-extensies - -Create Explorer context menu entries -Maak Explorer context menu-items - -Save settings in installation directory -Sla instellingen op in de installatiemap - -Do not write to Registry -Schrijf niet naar het register - -Just copy the files -Kopieer de bestanden - -Choose a directory for installation: -Kies een map voor de installatie: - -Create shortcuts: -Maak snelkoppelingen: - -Desktop -Bureaublad - -Start Menu -Startmenu - -Send To -Verzenden Naar - -Registering FreeFileSync file extensions -Registeren van de FreeFileSync bestands-extensies - -Unregistering FreeFileSync file extensions -De-installeren van de FreeFileSync bestands-extensies - -FreeFileSync Configuration -FreeFileSync configuratie - -FreeFileSync Batch File -FreeFileSync batch bestand - -FreeFileSync Synchronization Database -FreeFileSync synchronisatie database - -RealTimeSync Configuration -RealTimeSync configuratie - -Edit with FreeFileSync -Bewerken met FreeFileSync - -Instead of an ad, here's an animal. -In plaats van een advertentie is hier een dier. - -The FreeFileSync portable version cannot install into a subfolder of %x. -De mobiele versie van FreeFileSync kan niet worden geïnstalleerd in een submap van %x. - -Please choose the local installation type or select a different folder for installation. -Kies voor een lokale installatie of selecteer een andere map voor de installatie. - -Get the Donation Edition with bonus features and help keep FreeFileSync ad-free. -Ontvang de Donatie Editie met bonuseigenschappen en help FreeFileSync advertentie-vrij te houden. - diff --git a/FreeFileSync/Build/Resources/Languages/english_uk.lng b/FreeFileSync/Build/Resources/Languages/english_uk.lng deleted file mode 100755 index 64605033..00000000 --- a/FreeFileSync/Build/Resources/Languages/english_uk.lng +++ /dev/null @@ -1,2136 +0,0 @@ -
- English (UK)‎ - Robert Readman - English (U.K.) - flag_england.png - 2 - n == 1 ? 0 : 1 -
- -Cannot read file %x. -Cannot read file %x. - - -Unexpected size of data stream. -Expected: %x bytes -Actual: %y bytes - - -Unexpected size of data stream. -Expected: %x bytes -Actual: %y bytes - - -Cannot write file %x. -Cannot write file %x. - -Cannot write permissions of %x. -Cannot write permissions of %x. - -Operation not supported between different devices. -Operation not supported between different devices. - -Cannot delete file %x. -Cannot delete file %x. - -Cannot delete symbolic link %x. -Cannot delete symbolic link %x. - -Cannot delete directory %x. -Cannot delete directory %x. - -Cannot move file %x to %y. -Cannot move file %x to %y. - -Cannot copy symbolic link %x to %y. -Cannot copy symbolic link %x to %y. - -Error Code %x -Error Code %x - -Cannot read directory %x. -Cannot read directory %x. - -Cannot write modification time of %x. -Cannot write modification time of %x. - -Cannot read file attributes of %x. -Cannot read file attributes of %x. - -Cannot create directory %x. -Cannot create directory %x. - -Cannot determine final path for %x. -Cannot determine final path for %x. - -Operation not supported by device. -Operation not supported by device. - -Cannot resolve symbolic link %x. -Cannot resolve symbolic link %x. - -Unable to move %x to the recycle bin. -Unable to move %x to the recycle bin. - -Authentication completed. -Authentication completed. - -You may close this page now and continue with FreeFileSync. -You may close this page now and continue with FreeFileSync. - -Authentication failed. -Authentication failed. - -Unable to connect to %x. -Unable to connect to %x. - -Cannot find %x. -Cannot find %x. - -The name %x is used by more than one item in the folder. -The name %x is used by more than one item in the folder. - -Please authorize access to user account %x. -Please authorise access to user account %x. - -Cannot open file %x. -Cannot open file %x. - -The name %x is already used by another item. -The name %x is already used by another item. - -Cannot determine free disk space for %x. -Cannot determine free disk space for %x. - -Unable to disconnect from %x. -Unable to disconnect from %x. - -Unable to access %x. -Unable to access %x. - -Failed to get information about server %x. -Failed to get information about server %x. - -Cannot monitor directory %x. -Cannot monitor directory %x. - -Cannot find device %x. -Cannot find device %x. - -Cannot open directory %x. -Cannot open directory %x. - -Unsupported item type. -Unsupported item type. - -Incorrect command line: -Incorrect command line: - -The server does not support authentication via %x. -The server does not support authentication via %x. - -Required: -Required: - - -Operation timed out after 1 second. -Operation timed out after %x seconds. - - -Operation timed out after 1 second. -Operation timed out after %x seconds. - - - -Cannot wait on more than 1 connection at a time. -Cannot wait on more than %x connections at a time. - - -Cannot wait on more than 1 connection at a time. -Cannot wait on more than %x connections at a time. - - -Active connections: %x -Active connections: %x - -Failed to open SFTP channel number %x. -Failed to open SFTP channel number %x. - -Both sides have changed since last synchronization. -Both sides have changed since last synchronisation. - -Cannot determine sync-direction: -Cannot determine sync-direction: - -No change since last synchronization. -No change since last synchronisation. - -The database entry is not in sync considering current settings. -The database entry is not in sync considering current settings. - -Setting default synchronization directions: Old files will be overwritten with newer files. -Setting default synchronisation directions: Old files will be overwritten with newer files. - -Creating file %x -Creating file %x - -Creating folder %x -Creating folder %x - -Creating symbolic link %x -Creating symbolic link %x - -Moving file %x to the recycle bin -Moving file %x to the recycle bin - -Moving folder %x to the recycle bin -Moving folder %x to the recycle bin - -Moving symbolic link %x to the recycle bin -Moving symbolic link %x to the recycle bin - -Deleting file %x -Deleting file %x - -Deleting folder %x -Deleting folder %x - -Deleting symbolic link %x -Deleting symbolic link %x - -Checking recycle bin availability for folder %x... -Checking recycle bin availability for folder %x... - -The recycle bin is not supported by the following folders. Deleted or overwritten files will not be able to be restored: -The recycle bin is not supported by the following folders. Deleted or overwritten files will not be able to be restored: - -An exception occurred -An exception occurred - -A left and a right directory path are expected after %x. -A left and a right directory path are expected after %x. - -Syntax error -Syntax error - -Cannot find file %x. -Cannot find file %x. - -Error -Error - -File %x does not contain a valid configuration. -File %x does not contain a valid configuration. - -The config file must not contain settings at directory pair level when directories are set via command line. -The config file must not contain settings at directory pair level when directories are set via command line. - -Directories cannot be set for more than one configuration file. -Directories cannot be set for more than one configuration file. - -Command line -Command line - -Syntax: -Syntax: - -config files: -config files: - -directory -directory - -global config file: -global config file: - -Any number of FreeFileSync "ffs_gui" and/or "ffs_batch" configuration files. -Any number of FreeFileSync "ffs_gui" and/or "ffs_batch" configuration files. - -Any number of alternative directory pairs for at most one config file. -Any number of alternative directory pairs for at most one config file. - -Open the selected configuration for editing only, without executing it. -Open the selected configuration for editing only, without executing it. - -Path to an alternate GlobalSettings.xml file. -Path to an alternate GlobalSettings.xml file. - -Installation files are corrupted. Please reinstall FreeFileSync. -Installation files are corrupted. Please reinstall FreeFileSync. - -Cannot find the following folders: -Cannot find the following folders: - -The following folders do not yet exist: -The following folders do not yet exist: - -The folders are created automatically when needed. -The folders are created automatically when needed. - -The following folder paths differ in case. Please use a single form in order to avoid duplicate accesses. -The following folder paths differ in case. Please use a single form in order to avoid duplicate accesses. - -Scanning: -Scanning: - -Comparison finished: -Comparison finished: - - -1 item found -%x items found - - -1 item found -%x items found - - -Time elapsed: -Time elapsed: - -File %x has an invalid date. -File %x has an invalid date. - -Date: -Date: - -Files have the same date but a different size. -Files have the same date but a different size. - -Size: -Size: - -Content comparison was skipped for excluded files. -Content comparison was skipped for excluded files. - -Items differ in attributes only -Items differ in attributes only - -Resolving symbolic link %x -Resolving symbolic link %x - -Comparing content of files %x -Comparing content of files %x - -Generating file list... -Generating file list... - -Fail-safe file copy -Fail-safe file copy - -Enabled -Enabled - -Disabled -Disabled - -Copy locked files -Copy locked files - -Copy file access permissions -Copy file access permissions - -File time tolerance -File time tolerance - -Run with background priority -Run with background priority - -Lock directories during sync -Lock directories during sync - -Verify copied files -Verify copied files - -Using non-default global settings: -Using non-default global settings: - -A folder input field is empty. -A folder input field is empty. - -The corresponding folder will be considered as empty. -The corresponding folder will be considered as empty. - -Exclude: -Exclude: - -One base folder of a folder pair is contained in the other one. -One base folder of a folder pair is contained in the other one. - -The folder should be excluded from synchronization via filter. -The folder should be excluded from synchronisation via filter. - -Calculating sync directions... -Calculating sync directions... - -Out of memory. -Out of memory. - -Show in Explorer -Show in Explorer - -Open with default application -Open with default application - -Browse directory -Browse directory - -Database file %x is incompatible. -Database file %x is incompatible. - -Initial synchronization: -Initial synchronisation: - -Database file %x does not yet exist. -Database file %x does not yet exist. - -Database file is corrupted: -Database file is corrupted: - -Loading file %x... -Loading file %x... - -The database files do not yet contain information about the last synchronization. -The database files do not yet contain information about the last synchronisation. - -Saving file %x... -Saving file %x... - -Searching for folder %x... -Searching for folder %x... - -Timeout while searching for folder %x. -Time out while searching for folder %x. - -Cannot get process information. -Cannot get process information. - -Waiting while directory is locked: -Waiting while directory is locked: - -Lock owner: -Lock owner: - -Detecting abandoned lock... -Detecting abandoned lock... - - -1 sec -%x sec - - -1 sec -%x sec - - -Item exists on left side only -Item exists on left side only - -Item exists on right side only -Item exists on right side only - -Left side is newer -Left side is newer - -Right side is newer -Right side is newer - -Items have different content -Items have different content - -Both sides are equal -Both sides are equal - -Conflict/item cannot be categorized -Conflict/item cannot be categorised - -Copy new item to left -Copy new item to left - -Copy new item to right -Copy new item to right - -Delete left item -Delete left item - -Delete right item -Delete right item - -Move file on left -Move file on left - -Move file on right -Move file on right - -Update left item -Update left item - -Update right item -Update right item - -Do nothing -Do nothing - -Update attributes on left -Update attributes on left - -Update attributes on right -Update attributes on right - -Error parsing file %x, row %y, column %z. -Error parsing file %x, row %y, column %z. - -Services -Services - -Show All -Show All - -Hide Others -Hide Others - -Hide %x -Hide %x - -Quit %x -Quit %x - -Cannot set directory locks for the following folders: -Cannot set directory locks for the following folders: - -Errors: -Errors: - -Warnings: -Warnings: - -Items processed: -Elements processed: - -Items remaining: -Elements remaining: - -Total time: -Total time: - -Warning -Warning - -Stopped -Stopped - -Cleaning up log files: -Cleaning up log files: - - -1 thread -%x threads - - -1 thread -%x threads - - -%x/sec -%x/sec - -%x items -%x items - -Completed successfully -Completed successfully - -Completed with warnings -Completed with warnings - -Completed with errors -Completed with errors - -Cannot access the Volume Shadow Copy Service. -Cannot access the Volume Shadow Copy Service. - -Please run the 64-bit version of FreeFileSync to create shadow copies on this system. -Please run the 64-bit version of FreeFileSync to create shadow copies on this system. - -Volume name %x is not part of file path %y. -Volume name %x is not part of file path %y. - -File time and size -File time and size - -File content -File content - -File size -File size - -Two way -Two way - -Mirror -Mirror - -Update -Update - -Custom -Custom - -Multiple... -Multiple... - -Cannot write file attributes of %x. -Cannot write file attributes of %x. - -%x and %y have different content. -%x and %y have different content. - -Data verification error: -Data verification error: - -Moving file %x to %y -Moving file %x to %y - -Moving folder %x to %y -Moving folder %x to %y - -Moving symbolic link %x to %y -Moving symbolic link %x to %y - -Updating file %x -Updating file %x - -Updating symbolic link %x -Updating symbolic link %x - -Verifying file %x -Verifying file %x - -Updating attributes of %x -Updating attributes of %x - -Source item %x not found -Source item %x not found - -Parent folder %x is not existing. -Parent folder %x is not existing. - -Cannot copy file %x to %y. -Cannot copy file %x to %y. - -Creating a Volume Shadow Copy for %x... -Creating a Volume Shadow Copy for %x... - -Cannot find folder %x. -Cannot find folder %x. - -Target folder %x is already existing, but was not available during folder comparison. -Target folder %x is already existing, but was not available during folder comparison. - -Target folder input field must not be empty. -Target folder input field must not be empty. - -Source folder %x not found. -Source folder %x not found. - -Please enter a target folder for versioning. -Please enter a target folder for versioning. - -The following items have unresolved conflicts and will not be synchronized: -The following items have unresolved conflicts and will not be synchronised: - -Folder pair: -Folder pair: - -The following folders are significantly different. Please check that the correct folders are selected for synchronization. -The following folders are significantly different. Please check that the correct folders are selected for synchronisation. - -Not enough free disk space available in: -Not enough free disk space available in: - -Available: -Available: - -Some files will be synchronized as part of multiple base folders. -Some files will be synchronised as part of multiple base folders. - -To avoid conflicts, set up exclude filters so that each updated file is included by only one base folder. -To avoid conflicts, set up exclude filters so that each updated file is included by only one base folder. - -Versioning folder: -Versioning folder: - -Base folder: -Base folder: - -The versioning folder is contained in a base folder. -The versioning folder is contained in a base folder. - -Synchronizing folder pair: -Synchronising folder pair: - -Generating database... -Generating database... - -Searching for old file versions: -Searching for old file versions: - -Removing old file versions: -Removing old file versions: - -Unable to create time stamp for versioning: -Unable to create time stamp for versioning: - -Drag && drop -Drag && drop - -Select a folder -Select a folder - -&New -&New - -&Open... -&Open... - -Save &as... -Save &as... - -E&xit -E&xit - -&File -&File - -&View help -&View help - -&About -&About - -&Help -&Help - -Usage: -Usage: - -Select folders to watch. -Select folders to watch. - -Enter a command line. -Enter a command line. - -Press 'Start'. -Press 'Start'. - -To get started just import a "ffs_batch" file. -To get started just import a "ffs_batch" file. - -Folders to watch: -Folders to watch: - -Add folder -Add folder - -Remove folder -Remove folder - -Browse -Browse - -Idle time (in seconds): -Idle time (in seconds): - -Idle time between last detected change and execution of command -Idle time between last detected change and execution of command - -Command line: -Command line: - -&Hide console window -&Hide console window - - -The command is triggered if: -- files or subfolders change -- new folders arrive (e.g. USB stick insert) - - -The command is triggered if: -- files or subfolders change -- new folders arrive (e.g. USB stick insert) - - -Start -Start - -About -About - -Build: %x -Build: %x - -All files -All files - -Automated Synchronization -Automated Synchronisation - -The %x protocol does not support directory monitoring: -The %x protocol does not support directory monitoring: - -Directory monitoring active -Directory monitoring active - -Waiting until directory is available: -Waiting until directory is available: - -&Configure -&Configure - -&Show error message -&Show error message - -&Quit -&Quit - -&Retry -&Retry - - -1 byte -%x bytes - - -1 byte -%x bytes - - -%x MB -%x MB - -%x KB -%x KB - -%x GB -%x GB - -Loading... -Loading... - -Scanning... -Scanning... - -configuration file -configuration file - -System: Sleep -System: Sleep - -System: Shut down -System: Shut down - -Nothing to synchronize -Nothing to synchronise - -Executing command: -Executing command: - -You can switch to FreeFileSync's main window to resolve this issue. -You can switch to FreeFileSync's main window to resolve this issue. - -&Don't show this warning again -&Don't show this warning again - -&Ignore -&Ignore - -&Switch -&Switch - -Switching to FreeFileSync's main window -Switching to FreeFileSync's main window - -Automatic retry -Automatic retry - -Ignore &all -Ignore &all - -Retrying operation... -Retrying operation... - -Serious Error -Serious Error - -Last session -Last session - -Today -Today - - -1 day -%x days - - -1 day -%x days - - -Name -Name - -Last sync -Last sync - -Log -Log - -Folder -Folder - -Symlink -Symlink - -Full path -Full path - -Relative path -Relative path - -Item name -Item name - -Size -Size - -Date -Date - -Extension -Extension - -Category -Category - -Action -Action - -Local comparison settings -Local comparison settings - -Local synchronization settings -Local synchronisation settings - -Local filter -Local filter - -Active -Active - -None -None - -Remove local settings -Remove local settings - -Clear local filter -Clear local filter - -Copy -Copy - -Paste -Paste - -The selected folder %x cannot be used with FreeFileSync. -The selected folder %x cannot be used with FreeFileSync. - -Please select a folder on a local file system, network or an MTP device. -Please select a folder on a local file system, network or an MTP device. - -Defined by context of use -Defined by context of use - -Requires FreeFileSync Donation Edition -Requires FreeFileSync Donation Edition - -&Save -&Save - -Save as &batch job... -Save as &batch job... - -Show &log -Show &log - -Start &comparison -Start &comparison - -C&omparison settings -C&omparison settings - -&Filter settings -&Filter settings - -S&ynchronization settings -S&ynchronization settings - -Start &synchronization -Start &synchronisation - -&Actions -&Actions - -&Preferences -&Preferences - -&Language -&Language - -&Find... -&Find... - -&Export file list... -&Export file list... - -&Reset layout -&Reset layout - -&Tools -&Tools - -&Check for updates now -&Check for updates now - -Check &automatically once a week -Check &automatically once a week - -Cancel -Cancel - -Compare -Compare - -Synchronize -Synchronise - -Add folder pair -Add folder pair - -Remove folder pair -Remove folder pair - -Access online storage -Access online storage - -Close search bar -Close search bar - -Find: -Find: - -Match case -Match case - -Processed: -Processed: - -Remaining: -Remaining: - -New -New - -Open... -Open... - -Save -Save - -Save as... -Save as... - -View type: -View type: - -Select view: -Select view: - -Save as default -Save as default - -Statistics: -Statistics: - -Number of files and folders that will be deleted -Number of files and folders that will be deleted - -Number of files that will be updated -Number of files that will be updated - -Number of files and folders that will be created -Number of files and folders that will be created - -Total bytes to copy -Total bytes to copy - -Arrange folder pair -Arrange folder pair - -Main settings: -Main settings: - -Use local settings: -Use local settings: - -Select a variant: -Select a variant: - -Include &symbolic links: -Include &symbolic links: - -&Follow -&Follow - -&Direct -&Direct - -More information -More information - -&Ignore time shift [hh:mm] -&Ignore time shift [hh:mm] - -List of file time offsets to ignore -List of file time offsets to ignore - -Example: -Example: - -Handle daylight saving time -Handle daylight saving time - -Ignore errors -Ignore errors - -Retry count: -Retry count: - -Delay (in seconds): -Delay (in seconds): - -Performance improvements: -Performance improvements: - -Parallel file operations: -Parallel file operations: - -How to get best performance? -How to get best performance? - -Local settings: -Local settings: - -Include: -Include: - -Show examples -Show examples - -Select filter rules to exclude certain files from synchronization. Enter file paths relative to their corresponding folder pair. -Select filter rules to exclude certain files from synchronisation. Enter file paths relative to their corresponding folder pair. - -File size: -File size: - -Minimum: -Minimum: - -Maximum: -Maximum: - -Time span: -Time span: - -C&lear -C&lear - -Detect moved files -Detect moved files - - -- Not supported by all file systems -- Requires and creates database files -- Detection not available for first sync - - -- Not supported by all file systems -- Requires and creates database files -- Detection not available for first sync - - -Delete files: -Delete files: - -&Recycle bin -&Recycle bin - -&Permanent -&Permanent - -&Versioning -&Versioning - -Move files to a user-defined folder -Move files to a user-defined folder - -Naming convention: -Naming convention: - -Limit file versions: -Limit file versions: - -Last x days: -Last x days: - -&Override default log path: -&Override default log path: - -Run a command: -Run a command: - -OK -OK - -Connection type: -Connection type: - -Connected user accounts: -Connected user accounts: - -&Add connection -&Add connection - -&Disconnect -&Disconnect - -Selected user account: -Selected user account: - -Server name or IP address: -Server name or IP address: - -Port: -Port: - -Encryption: -Encryption: - -&Disabled -&Disabled - -&Explicit SSL/TLS -&Explicit SSL/TLS - -Authentication: -Authentication: - -&Password -&Password - -&Key file -&Key file - -&SSH agent -&SSH agent - -User name: -User name: - -Private key file: -Private key file: - -&Show password -&Show password - -Directory on server: -Directory on server: - -Access timeout (in seconds): -Access timeout (in seconds): - -SFTP channels per connection: -SFTP channels per connection: - -Detect server limit -Detect server limit - -Select Folder -Select Folder - -Variant: -Variant: - -&Don't show this dialog again -&Don't show this dialogue again - -Bytes: -Bytes: - -Items: -Items: - -Synchronizing... -Synchronising... - -Minimize to notification area -Minimise to notification area - -Bytes -Bytes - -Items -Items - -When finished: -When finished: - -Auto-close -Auto-close - -Close -Close - -&Pause -&Pause - -Stop -Stop - -Create a batch file for unattended synchronization. To start, double-click this file or schedule in a task planner: %x -Create a batch file for unattended synchronisation. To start, double-click this file or schedule in a task planner: %x - -Progress dialog: -Progress dialog: - -Run minimized -Run minimised - -Show pop-up on errors or warnings -Show pop-up on errors or warnings - -&Cancel -&Cancel - -Stop synchronization at first error -Stop synchronisation at first error - -How can I schedule a batch job? -How can I schedule a batch job? - -&Keep relative paths -&Keep relative paths - -&Overwrite existing files -&Overwrite existing files - -The following settings are used for all synchronization jobs. -The following settings are used for all synchronisation jobs. - - -Copy to a temporary file (*.ffs_tmp) before overwriting target. -This guarantees a consistent state even in case of a serious error. - - -Copy to a temporary file (*.ffs_tmp) before overwriting target. -This guarantees a consistent state even in case of a serious error. - - -recommended -recommended - -Copy shared or locked files using the Volume Shadow Copy Service. -Copy shared or locked files using the Volume Shadow Copy Service. - -requires administrator rights -requires administrator rights - -Transfer file and folder permissions. -Transfer file and folder permissions. - -Show all permanently hidden dialogs and warning messages again -Show all permanently hidden dialogues and warning messages again - -Default log path: -Default log path: - -&Delete logs after x days: -&Delete logs after x days: - -Notification sounds: -Notification sounds: - -Synchronization finished: -Synchronisation finished: - -Customize context menu: -Customise context menu: - -Description -Description - -&Default -&Default - -Feedback and suggestions are welcome: -Feedback and suggestions are welcome: - -Home page -Home page - -FreeFileSync Forum -FreeFileSync Forum - -Email -E-mail - -If you like FreeFileSync: -If you like FreeFileSync: - -Support with a donation -Support with a donation - -The auto updater was disabled by the administrator. -The auto updater was disabled by the administrator. - -Donation details -Donation details - -Source code written in C++ using: -Source code written in C++ using: - -Published under the GNU General Public License: -Published under the GNU General Public License: - -Many thanks for localization: -Many thanks for localisation: - -Activate the FreeFileSync Donation Edition by one of the following methods: -Activate the FreeFileSync Donation Edition by one of the following methods: - -Activate via internet now: -Activate via internet now: - -Activate online -Activate online - -Retrieve an offline activation key from the following URL: -Retrieve an offline activation key from the following URL: - -&Copy to clipboard -&Copy to clipboard - -Enter activation key: -Enter activation key: - -Activate offline -Activate offline - -Highlight configurations that have not been run for more than the following number of days: -Highlight configurations that have not been run for more than the following number of days: - -FreeFileSync requires access rights to avoid "Operation not permitted" errors when synchronizing your data (e.g. Mail, Messages, Calendars). -FreeFileSync requires access rights to avoid "Operation not permitted" errors when synchronizing your data (e.g. Mail, Messages, Calendars). - -Locate the FreeFileSync app -Locate the FreeFileSync app - -Open Security && Privacy -Open Security && Privacy - -Click the lock to allow changes. -Click the lock to allow changes. - -Drag FreeFileSync into the panel. -Drag FreeFileSync into the panel. - -Synchronization Settings -Synchronisation Settings - -Access Online Storage -Access Online Storage - -Save as a Batch Job -Save as a Batch Job - -Delete Items -Delete Items - -Copy Items -Copy Items - -Options -Options - -Select Time Span -Select Time Span - -Highlight Configurations -Highlight Configurations - -Grant Full Disk Access -Grant Full Disk Access - -Info -Info - -No log entries -No log entries - -Select all -Select all - -&Options -&Options - -Main Bar -Main Bar - -Folder Pairs -Folder Pairs - -Find -Find - -View Settings -View Settings - -Configuration -Configuration - -Overview -Overview - -Swap sides -Swap sides - -Show "%x" -Show "%x" - -&Show details -&Show details - -FreeFileSync %x is available! -FreeFileSync %x is available! - -Local path not available for %x. -Local path not available for %x. - -Confirm -Confirm - - -Do you really want to execute the command %y for one item? -Do you really want to execute the command %y for %x items? - - -Do you really want to execute the command %y for one item? -Do you really want to execute the command %y for %x items? - - -&Execute -&Execute - -Set direction: -Set direction: - -multiple selection -multiple selection - -&Include via filter: -&Include via filter: - -&Exclude via filter: -&Exclude via filter: - -Include temporarily -Include temporarily - -Exclude temporarily -Exclude temporarily - -&Synchronize selection -&Synchronise selection - -&Copy to... -&Copy to... - -&Delete -&Delete - -Show icons: -Show icons: - -Small -Small - -Medium -Medium - -Large -Large - -Select time span... -Select time span... - -Donation Edition -Donation Edition - -Folder Comparison and Synchronization -Folder Comparison and Synchronisation - -Configuration saved -Configuration saved - -FreeFileSync batch -FreeFileSync batch - -Do you want to save changes to %x? -Do you want to save changes to %x? - -Never save &changes -Never save &changes - -Do&n't save -Do&n't save - -%x cannot be renamed. -%x cannot be renamed. - -New name: -New name: - -Rename Configuration -Rename Configuration - -Configuration name must not be empty. -Configuration name must not be empty. - -&Rename... -&Rename... - -Hide configuration -Hide configuration - -Highlight... -Highlight... - -Clear filter -Clear filter - -Show files that exist on left side only -Show files that exist on left side only - -Show files that exist on right side only -Show files that exist on right side only - -Show files that are newer on left -Show files that are newer on left - -Show files that are newer on right -Show files that are newer on right - -Show files that are equal -Show files that are equal - -Show files that are different -Show files that are different - -Show conflicts -Show conflicts - -Show files that will be created on the left side -Show files that will be created on the left side - -Show files that will be created on the right side -Show files that will be created on the right side - -Show files that will be deleted on the left side -Show files that will be deleted on the left side - -Show files that will be deleted on the right side -Show files that will be deleted on the right side - -Show files that will be updated on the left side -Show files that will be updated on the left side - -Show files that will be updated on the right side -Show files that will be updated on the right side - -Show files that won't be copied -Show files that won't be copied - -Show filtered or temporarily excluded files -Show filtered or temporarily excluded files - -Filter -Filter - -All files are in sync -All files are in sync - - -1 directory -%x directories - - -1 directory -%x directories - - - -1 file -%x files - - -1 file -%x files - - - -Showing %y of 1 row -Showing %y of %x rows - - -Showing %y of 1 row -Showing %y of %x rows - - -Cannot find %x -Cannot find %x - -Move up -Move up - -Move down -Move down - -Comma-separated values -Comma-separated values - -File list exported -File list exported - -Searching for program updates... -Searching for program updates... - -Paused -Paused - -Stop requested... -Stop requested... - -Initializing... -Initialising... - -Comparing content... -Comparing content... - -&Continue -&Continue - -Progress -Progress - -Thank you, %x, for your donation and support! -Thank you, %x, for your donation and support! - -Connections -Connections - -Recommended range: -Recommended range: - -Do you really want to disconnect from user account %x? -Do you really want to disconnect from user account %x? - -Password: -Password: - -Key passphrase: -Key passphrase: - -Please enter a file path. -Please enter a file path. - - -Copy the following item to another folder? -Copy the following %x items to another folder? - - -Copy the following item to another folder? -Copy the following %x items to another folder? - - -Please enter a target folder. -Please enter a target folder. - - -Do you really want to move the following item to the recycle bin? -Do you really want to move the following %x items to the recycle bin? - - -Do you really want to move the following item to the recycle bin? -Do you really want to move the following %x items to the recycle bin? - - -Move -Move - - -Do you really want to delete the following item? -Do you really want to delete the following %x items? - - -Do you really want to delete the following item? -Do you really want to delete the following %x items? - - -Start to synchronize the selection? -Start to synchronise the selection? - -Start synchronization now? -Start synchronisation now? - -Copy DACL, SACL, Owner, Group -Copy DACL, SACL, Owner, Group - -Integrate external applications into context menu. The following macros are available: -Integrate external applications into context menu. The following macros are available: - -Full file or folder path -Full file or folder path - -Parent folder path -Parent folder path - -Temporary local copy for SFTP and MTP storage -Temporary local copy for SFTP and MTP storage - -Parameters for opposite side -Parameters for opposite side - -Show hidden dialogs again -Show hidden dialogues again - -All dialogs shown -All dialogues shown - -Downloading update... -Downloading update... - -Identify equal files by comparing modification time and size. -Identify equal files by comparing modification time and size. - -Identify equal files by comparing the file content. -Identify equal files by comparing the file content. - -Identify equal files by comparing their file size. -Identify equal files by comparing their file size. - -Identify and propagate changes on both sides. Deletions, moves and conflicts are detected automatically using a database. -Identify and propagate changes on both sides. Deletions, moves and conflicts are detected automatically using a database. - -Create a mirror backup of the left folder by adapting the right folder to match. -Create a mirror backup of the left folder by adapting the right folder to match. - -Copy new and updated files to the right folder. -Copy new and updated files to the right folder. - -Configure your own synchronization rules. -Configure your own synchronisation rules. - -Comparison -Comparison - -Synchronization -Synchronisation - -This week -This week - -This month -This month - -This year -This year - -Byte -Byte - -KB -KB - -MB -MB - -Retain deleted and overwritten files in the recycle bin -Retain deleted and overwritten files in the recycle bin - -Delete and overwrite files permanently -Delete and overwrite files permanently - -Replace -Replace - -Move files and replace if existing -Move files and replace if existing - -Time stamp -Time stamp - -Move files into a time-stamped subfolder -Move files into a time-stamped subfolder - -File -File - -Append a time stamp to each file name -Append a time stamp to each file name - -On completion: -On completion: - -On errors: -On errors: - -On success: -On success: - -Main config -Main config - -empty -empty - -Leave as unresolved conflict -Leave as unresolved conflict - -YYYY-MM-DD hhmmss -YYYY-MM-DD hhmmss - -Minimum version count must be smaller than maximum count. -Minimum version count must be smaller than maximum count. - -&Restore -&Restore - -Files -Files - -Percentage -Percentage - -Failed to retrieve update information. -Failed to retrieve update information. - -Automatic updates: -Automatic updates: - -Check for Program Updates -Check for Program Updates - -Auto-update now or download manually from the FreeFileSync home page? -Auto-update now or download manually from the FreeFileSync home page? - -&Auto-update -&Auto-update - -&Home page -&Home page - -Download now? -Download now? - -&Download -&Download - -FreeFileSync is up to date. -FreeFileSync is up to date. - -Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now? -Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now? - -&Check -&Check - -Consistency check failed for %x. -Consistency check failed for %x. - -Installation was registered on a different operating system. -Installation was registered on a different operating system. - -Failed to activate FreeFileSync Donation Edition. -Failed to activate FreeFileSync Donation Edition. - -Incorrect activation key. -Incorrect activation key. - -Unable to register to receive system messages. -Unable to register to receive system messages. - -The %x installation option is only available in the FreeFileSync Donation Edition. -The %x installation option is only available in the FreeFileSync Donation Edition. - -Cannot find system function %x. -Cannot find system function %x. - -Unable to register device notifications for %x. -Unable to register device notifications for %x. - -The file is locked by another process: -The file is locked by another process: - -Failed to determine file permission support for folder %x. -Failed to determine file permission support for folder %x. - -Cannot read security context of %x. -Cannot read security context of %x. - -Cannot write security context of %x. -Cannot write security context of %x. - -Cannot read permissions of %x. -Cannot read permissions of %x. - -Cannot copy permissions from %x to %y. -Cannot copy permissions from %x to %y. - -%x is not a regular directory name. -%x is not a regular directory name. - -Cannot copy attributes from %x to %y. -Cannot copy attributes from %x to %y. - -%x TB -%x TB - -%x PB -%x PB - - -1 min -%x min - - -1 min -%x min - - - -1 hour -%x hours - - -1 hour -%x hours - - -Cannot set privilege %x. -Cannot set privilege %x. - -Unable to suspend system sleep mode. -Unable to suspend system sleep mode. - -Cannot change process I/O priorities. -Cannot change process I/O priorities. - -Checking recycle bin failed for folder %x. -Checking recycle bin failed for folder %x. - -Unable to shut down the system. -Unable to shut down the system. - -Prepare installation -Prepare installation - -Choose which components you want to install. -Choose which components you want to install. - -Select installation type: -Select installation type: - -Local -Local - -Portable -Portable - -Save settings in %x -Save settings in %x - -Register FreeFileSync file extensions -Register FreeFileSync file extensions - -Create Explorer context menu entries -Create Explorer context menu entries - -Save settings in installation directory -Save settings in installation directory - -Do not write to Registry -Do not write to Registry - -Just copy the files -Just copy the files - -Choose a directory for installation: -Choose a directory for installation: - -Create shortcuts: -Create shortcuts: - -Desktop -Desktop - -Start Menu -Start Menu - -Send To -Send To - -Registering FreeFileSync file extensions -Registering FreeFileSync file extensions - -Unregistering FreeFileSync file extensions -Unregistering FreeFileSync file extensions - -FreeFileSync Configuration -FreeFileSync Configuration - -FreeFileSync Batch File -FreeFileSync Batch File - -FreeFileSync Synchronization Database -FreeFileSync Synchronisation Database - -RealTimeSync Configuration -RealTimeSync Configuration - -Edit with FreeFileSync -Edit with FreeFileSync - -Instead of an ad, here's an animal. -Instead of an ad, here's an animal. - -The FreeFileSync portable version cannot install into a subfolder of %x. -The FreeFileSync portable version cannot install into a subfolder of %x. - -Please choose the local installation type or select a different folder for installation. -Please choose the local installation type or select a different folder for installation. - -Get the Donation Edition with bonus features and help keep FreeFileSync ad-free. -Get the Donation Edition with bonus features and help keep FreeFileSync ad-free. - diff --git a/FreeFileSync/Build/Resources/Languages/french.lng b/FreeFileSync/Build/Resources/Languages/french.lng deleted file mode 100755 index 2e47d567..00000000 --- a/FreeFileSync/Build/Resources/Languages/french.lng +++ /dev/null @@ -1,2136 +0,0 @@ -
- Français - Jean-François Hartmann - fr_FR - flag_france.png - 2 - n <= 1 ? 0 : 1 -
- -Cannot read file %x. -Impossible de lire le fichier %x. - - -Unexpected size of data stream. -Expected: %x bytes -Actual: %y bytes - - -Le flux de données a une taille inattendue : -Attendu : %x octets -Trouvé : %y octets - - -Cannot write file %x. -Impossible d'écrire le fichier %x. - -Cannot write permissions of %x. -Impossible d'écrire les permissions de %x. - -Operation not supported between different devices. -Opération non prise en charge entre appareils différents. - -Cannot delete file %x. -Impossible de supprimer le fichier %x. - -Cannot delete symbolic link %x. -Impossible de supprimer le lien symbolique %x. - -Cannot delete directory %x. -Impossible de supprimer le répertoire %x. - -Cannot move file %x to %y. -Impossible de déplacer le fichier %x vers %y. - -Cannot copy symbolic link %x to %y. -Impossible de copier le lien symbolique %x vers %y. - -Error Code %x -Code Erreur %x - -Cannot read directory %x. -Impossible de lire le répertoire %x. - -Cannot write modification time of %x. -Impossible d'écrire la date de modification de %x. - -Cannot read file attributes of %x. -Impossible de lire les attributs du fichier %x. - -Cannot create directory %x. -Impossible de créer le répertoire %x. - -Cannot determine final path for %x. -Impossible de déterminer le chemin pour %x. - -Operation not supported by device. -Opération non prise en charge par cet appareil. - -Cannot resolve symbolic link %x. -Impossible de résoudre le lien symbolique %x. - -Unable to move %x to the recycle bin. -Impossible de déplacer %x dans la Corbeille. - -Authentication completed. -Identification terminée. - -You may close this page now and continue with FreeFileSync. -Vous pouvez fermer cette page maintenant et poursuivre avec FreeFileSync. - -Authentication failed. -Echec de l'identification. - -Unable to connect to %x. -Impossible de se connecter à %x. - -Cannot find %x. -Impossible de trouver %x. - -The name %x is used by more than one item in the folder. -Le nom %x est utilisé par plusieurs éléments du dossier. - -Please authorize access to user account %x. -Veuillez autoriser l'accès au compte d'utilisateur %x. - -Cannot open file %x. -Impossible d'ouvrir le fichier %x. - -The name %x is already used by another item. -Le nom %x est déjà utilisé par un autre élément. - -Cannot determine free disk space for %x. -Impossible de calculer l'espace libre du disque %x. - -Unable to disconnect from %x. -Impossible de se déconnecter de %x. - -Unable to access %x. -Impossible d'accéder à %x. - -Failed to get information about server %x. -Impossible de trouver le serveur %x. - -Cannot monitor directory %x. -Impossible de gérer le répertoire %x. - -Cannot find device %x. -Impossible de trouver le périphérique %x. - -Cannot open directory %x. -Impossible d'ouvrir le répertoire %x. - -Unsupported item type. -Type d'élément non pris en charge. - -Incorrect command line: -Ligne de commande incorrecte : - -The server does not support authentication via %x. -Le serveur refuse l'authentification par %x. - -Required: -Requis : - - -Operation timed out after 1 second. -Operation timed out after %x seconds. - - -L'opération a expiré après %x seconde. -L'opération a expiré après %x secondes. - - - -Cannot wait on more than 1 connection at a time. -Cannot wait on more than %x connections at a time. - - -Impossible d'attendre plus de %x connexion à la fois. -Impossible d'attendre plus de %x connexions à la fois. - - -Active connections: %x -Connexions actives : %x - -Failed to open SFTP channel number %x. -Impossible d'ouvrir le port SFTP %x. - -Both sides have changed since last synchronization. -Les deux côtés ont changé depuis la dernière synchronisation. - -Cannot determine sync-direction: -Impossible de déterminer le sens de la synchronisation : - -No change since last synchronization. -Aucun changement depuis la dernière synchronisation. - -The database entry is not in sync considering current settings. -L'entrée de la base de données n'est pas en phase compte tenu des paramètres actuels. - -Setting default synchronization directions: Old files will be overwritten with newer files. -Directions de la synchronisation par défaut : les anciens fichiers seront remplacés par les nouveaux. - -Creating file %x -Création du fichier %x - -Creating folder %x -Création du dossier %x - -Creating symbolic link %x -Création du lien symbolique %x - -Moving file %x to the recycle bin -Déplacement du fichier %x vers la Corbeille< - -Moving folder %x to the recycle bin -Déplacement du dossier %x vers la Corbeille< - -Moving symbolic link %x to the recycle bin -Déplacement du lien symbolique %x vers la Corbeille - -Deleting file %x -Suppression du fichier %x - -Deleting folder %x -Suppression du dossier %x - -Deleting symbolic link %x -Suppression du lien symbolique %x - -Checking recycle bin availability for folder %x... -Contrôle de la disponibilité de la Corbeille pour le dossier %x ... - -The recycle bin is not supported by the following folders. Deleted or overwritten files will not be able to be restored: -La corbeille n'est pas supportée par les dossiers suivants. Les fichiers supprimés ou modifiés ne pourront pas être restaurés : - -An exception occurred -Une erreur s'est produite - -A left and a right directory path are expected after %x. -Un répertoire gauche et un répertoire droit sont requis après %x. - -Syntax error -Erreur de syntaxe - -Cannot find file %x. -Impossible de trouver le fichier %x. - -Error -Erreur - -File %x does not contain a valid configuration. -Le fichier %x ne contient pas une configuration valide. - -The config file must not contain settings at directory pair level when directories are set via command line. -Le fichier de configuration ne peut pas contenir de paramètres au niveau de paires de répertoires quand ceux-ci sont définis par une ligne de commande. - -Directories cannot be set for more than one configuration file. -Les répertoires ne peuvent pas être définis pour plus d'un fichier de configuration. - -Command line -Ligne de commande - -Syntax: -Syntaxe : - -config files: -fichier de configuration : - -directory -répertoire - -global config file: -fichier de configuration globale : - -Any number of FreeFileSync "ffs_gui" and/or "ffs_batch" configuration files. -N'importe quel nombre de fichiers FreeFileSync "ffs_gui" et/ou "ffs_batch". - -Any number of alternative directory pairs for at most one config file. -N'importe quel nombre de paires de répertoires distincts pour au plus un fichier de configuration. - -Open the selected configuration for editing only, without executing it. -L'ouverture de la configuration choisie pour être modifiée ne permet pas de l'exécuter. - -Path to an alternate GlobalSettings.xml file. -Chemin d'un fichier GlobalSettings.xml distinct. - -Installation files are corrupted. Please reinstall FreeFileSync. -Un ou plusieurs fichiers installés sont abîmés. Veuillez réinstaller FreeFileSync. - -Cannot find the following folders: -Impossible de trouver les dossiers suivants : - -The following folders do not yet exist: -Les dossiers suivants n'existent plus : - -The folders are created automatically when needed. -Les dossiers sont créés automatiquement quand cela est nécessaire. - -The following folder paths differ in case. Please use a single form in order to avoid duplicate accesses. -Les chemins de dossier suivants diffèrent selon les cas. Veuillez utiliser un seul formulaire afin d'éviter les accès en double. - -Scanning: -Lecture en cours : - -Comparison finished: -Comparaison terminée : - - -1 item found -%x items found - - -%x élément trouvé -%x éléments trouvés - - -Time elapsed: -Temps écoulé : - -File %x has an invalid date. -Le fichier %x a une date invalide. - -Date: -Date : - -Files have the same date but a different size. -Les fichiers ont la même date mais une taille différente. - -Size: -Taille : - -Content comparison was skipped for excluded files. -La comparaison des contenus est sautée pour les fichiers exclus. - -Items differ in attributes only -Seuls les attributs des éléments diffèrent - -Resolving symbolic link %x -Résolution du lien symbolique %x - -Comparing content of files %x -Comparaison du contenu des fichiers %x - -Generating file list... -Génération de la liste des fichiers ... - -Fail-safe file copy -Copie de fichiers sécurisée - -Enabled -Activé - -Disabled -Désactivé - -Copy locked files -Copie des fichiers verrouillés - -Copy file access permissions -Copie des droits d'accès aux fichiers - -File time tolerance -Tolérance horaire - -Run with background priority -Exécution avec la priorité de tâche de fond. - -Lock directories during sync -Verrouillage des répertoires pendant la synchronisation - -Verify copied files -Vérification de la copie des fichiers - -Using non-default global settings: -Utilisation des paramètres globaux particuliers : - -A folder input field is empty. -Un champ dossier est vide. - -The corresponding folder will be considered as empty. -Le dossier correspondant sera considéré comme vide. - -Exclude: -Exclure : - -One base folder of a folder pair is contained in the other one. -Un dossier défini dans la paire des dossiers est contenu dans l'autre. - -The folder should be excluded from synchronization via filter. -Le dossier sera exclu de la synchronisation par le filtre. - -Calculating sync directions... -Evaluation du sens des synchronisations ... - -Out of memory. -Mémoire insuffisante. - -Show in Explorer -Montrer dans l'explorateur - -Open with default application -Ouvrir avec l'application par défaut - -Browse directory -Parcourir le répertoire - -Database file %x is incompatible. -La base de données %x n'est pas compatible. - -Initial synchronization: -Première synchronisation : - -Database file %x does not yet exist. -La base de données %x n'existe plus. - -Database file is corrupted: -La base de données est abîmée : - -Loading file %x... -Chargement du fichier %x ... - -The database files do not yet contain information about the last synchronization. -La base de données ne contient plus aujourd'hui d'informations sur la dernière synchronisation. - -Saving file %x... -Enregistrement du fichier %x ... - -Searching for folder %x... -Recherche du dossier %x ... - -Timeout while searching for folder %x. -La recherche du dossier %x a expirée. - -Cannot get process information. -Impossible d'obtenir les informations du traitement. - -Waiting while directory is locked: -En attente tant que le répertoire est verrouillé : - -Lock owner: -Propriétaire du verrou : - -Detecting abandoned lock... -Détection de verrouillage abandonné ... - - -1 sec -%x sec - - -%x sec -%x sec - - -Item exists on left side only -Cet élément existe seulement à gauche - -Item exists on right side only -Cet élément existe seulement à droite - -Left side is newer -L'élément de gauche est plus récent - -Right side is newer -L'élément de droite est plus récent - -Items have different content -Les élement ont un contenu différent - -Both sides are equal -Les deux cotés sont identiques - -Conflict/item cannot be categorized -Conflit/élément impossible à classer - -Copy new item to left -Copie du nouvel élément à gauche - -Copy new item to right -Copie du nouvel élément à droite - -Delete left item -Suppression de l'élément de gauche - -Delete right item -Suppression de l'élément de droite - -Move file on left -Déplacer les fichiers à gauche - -Move file on right -Déplacer les fichiers à droite - -Update left item -Mettre à jour l'élément de gauche - -Update right item -Mettre à jour l'élément de droite - -Do nothing -Ne rien faire - -Update attributes on left -Mise à jour des attributs à gauche - -Update attributes on right -Mise à jour des attributs à droite - -Error parsing file %x, row %y, column %z. -Erreur lors de l'analyse du fichier %x, ligne %y, colonne %z. - -Services -Services - -Show All -Tout afficher - -Hide Others -Masquer les autres - -Hide %x -Masquer %x - -Quit %x -Quitter %x - -Cannot set directory locks for the following folders: -Impossible de verrouiller les répertoires des dossiers suivants : - -Errors: -Erreurs : - -Warnings: -Avertissements : - -Items processed: -Élements traités : - -Items remaining: -Élements restants : - -Total time: -Durée totale : - -Warning -Attention - -Stopped -Arrêté - -Cleaning up log files: -Nettoyage des journaux : - - -1 thread -%x threads - - -%x tâche -%x tâches - - -%x/sec -%x/sec - -%x items -%x éléments - -Completed successfully -Terminé avec succès - -Completed with warnings -Terminé avec observations - -Completed with errors -Terminé avec erreurs - -Cannot access the Volume Shadow Copy Service. -Impossible d'accéder au service Volume Shadow Copy. - -Please run the 64-bit version of FreeFileSync to create shadow copies on this system. -Veuillez exécuter de préférence la version 64 bits de FreeFileSync pour utiliser le service Shadow Copy. - -Volume name %x is not part of file path %y. -Le nom de volume %x ne fait pas partie du chemin %y. - -File time and size -Date et taille du fichier - -File content -Contenu du fichier - -File size -Taille du fichier - -Two way -Deux sens - -Mirror -Miroir - -Update -Mise à Jour - -Custom -Personnaliser - -Multiple... -Multiple ... - -Cannot write file attributes of %x. -Impossible d'écrire les attributs de fichier de %x. - -%x and %y have different content. -%x et %y ont des contenus différents. - -Data verification error: -Erreur de contrôle des données : - -Moving file %x to %y -Déplacement du fichier %x vers %y - -Moving folder %x to %y -Déplacement du dossier %x vers %y - -Moving symbolic link %x to %y -Déplacement du lien symbolique %x vers %y - -Updating file %x -Mise à jour du fichier %x - -Updating symbolic link %x -Mise à jour du lien symbolique %x - -Verifying file %x -Contrôle du fichier %x - -Updating attributes of %x -Mise à jour des attributs de %x - -Source item %x not found -L'élément source %x n'a pas été trouvé - -Parent folder %x is not existing. -Le dossier parent %x n'existe pas. - -Cannot copy file %x to %y. -Impossible de copier le fichier %x vers %y. - -Creating a Volume Shadow Copy for %x... -Création d'un Volume Shadow Copy pour %x ... - -Cannot find folder %x. -Dossier %x introuvable. - -Target folder %x is already existing, but was not available during folder comparison. -Le dossier cible %x existe déjà, mais n'est pas disponible pendant la comparaison des dossiers. - -Target folder input field must not be empty. -Le champ dossier de destination ne doit pas être vide. - -Source folder %x not found. -Dossier source %x non trouvé. - -Please enter a target folder for versioning. -Veuillez entrer le dossier destinataire pour la gestion des versions. - -The following items have unresolved conflicts and will not be synchronized: -Les éléments suivants sont en conflits non résolus et ne seront pas synchronisés : - -Folder pair: -Paire de dossiers : - -The following folders are significantly different. Please check that the correct folders are selected for synchronization. -Les dossiers suivants sont assez différents. Veuillez contrôler que ce sont les bons dossiers qui sont sélectionnés pour la synchronisation. - -Not enough free disk space available in: -Espace disque insuffisant sur : - -Available: -Disponible : - -Some files will be synchronized as part of multiple base folders. -Certains fichiers seront synchronisés comme éléments de plusieurs dossiers de base. - -To avoid conflicts, set up exclude filters so that each updated file is included by only one base folder. -Pour éviter les conflits, veuillez configurer les filtres d'exclusion afin que chaque fichier mis à jour soit inclus par un seul dossier de base. - -Versioning folder: -Dossier de gestion des versions : - -Base folder: -Dossier de base : - -The versioning folder is contained in a base folder. -Le dossier de version est situé dans le dossier de base. - -Synchronizing folder pair: -Synchronisation de la paire de dossiers : - -Generating database... -Génération de la base de données ... - -Searching for old file versions: -Recherche d'anciennes versions : - -Removing old file versions: -Suppression d'anciennes versions : - -Unable to create time stamp for versioning: -Impossible de générer l'horodatage pour la gestion des versions : - -Drag && drop -Glisser && Déposer - -Select a folder -Choisissez un dossier - -&New -&Nouveau - -&Open... -&Ouvrir ... - -Save &as... -S&auvegarder sous ... - -E&xit -&Quitter - -&File -&Fichiers - -&View help -&Afficher l'aide - -&About -&A propos de - -&Help -&Aide - -Usage: -Utilisation : - -Select folders to watch. -Choisir les dossiers à examiner. - -Enter a command line. -Entrez une ligne de commande. - -Press 'Start'. -Cliquez sur 'Démarrer'. - -To get started just import a "ffs_batch" file. -Pour démarrer, il faut importer un fichier "ffs_batch". - -Folders to watch: -Dossiers à surveiller : - -Add folder -Ajout d'un dossier - -Remove folder -Suppression d'un dossier - -Browse -Parcourir - -Idle time (in seconds): -Durée d'inactivité (en secondes) : - -Idle time between last detected change and execution of command -Délai entre le dernier changement détecté et la dernière exécution de la commande - -Command line: -Ligne de commande : - -&Hide console window -&Masquer la fenêtre de console - - -The command is triggered if: -- files or subfolders change -- new folders arrive (e.g. USB stick insert) - - -La commande est déclenchée si : -- un fichier ou un dossier est modifié -- un nouveau dossier apparait (par exemple : insertion d'une clé USB) - - -Start -Démarrer - -About -A propos de - -Build: %x -Généré : %x - -All files -Tous les fichiers - -Automated Synchronization -Synchronisation Automatique - -The %x protocol does not support directory monitoring: -Le protocole %x ne supporte pas le contrôle d'anuaire : - -Directory monitoring active -Gestion des répertoires active - -Waiting until directory is available: -En attente de la disponibilité du répertoire : - -&Configure -&Configurer - -&Show error message -&Afficher les messages d'erreur - -&Quit -&Quitter - -&Retry -&Réessayer - - -1 byte -%x bytes - - -%x octet -%x octets - - -%x MB -%x Mo - -%x KB -%x Ko - -%x GB -%x Go - -Loading... -Chargement ... - -Scanning... -Lecture en cours ... - -configuration file -Fichier de configuration - -System: Sleep -Système : Mise en veille - -System: Shut down -Système : Arrêt - -Nothing to synchronize -Rien à synchroniser - -Executing command: -Exécution de la commande : - -You can switch to FreeFileSync's main window to resolve this issue. -Vous pouvez basculer vers la fenêtre principale de FreeFileSync pour résoudre ce problème. - -&Don't show this warning again -&Ne plus afficher cet avertissement - -&Ignore -&Ignorer - -&Switch -&Changer - -Switching to FreeFileSync's main window -Basculer vers la fenêtre principale de FreeFileSync - -Automatic retry -Réessayer automatiquement - -Ignore &all -&Tout ignorer - -Retrying operation... -Opération retentée ... - -Serious Error -Erreur Grave - -Last session -Dernière session - -Today -Aujourd'hui - - -1 day -%x days - - -%x jour -%x jours - - -Name -Nom - -Last sync -Dernière synchro - -Log -Log - -Folder -Dossier - -Symlink -Lien symbolique - -Full path -Chemin complet - -Relative path -Chemin relatif - -Item name -Nom de l'élément - -Size -Taille - -Date -Date - -Extension -Extension - -Category -Catégorie - -Action -Action - -Local comparison settings -Paramètres de comparaison locaux - -Local synchronization settings -Paramètres de synchronisation locaux - -Local filter -Filtre local - -Active -Actif - -None -Aucun - -Remove local settings -supprimer les paramètres locaux - -Clear local filter -Effacer le filtre local - -Copy -Copier - -Paste -Coller - -The selected folder %x cannot be used with FreeFileSync. -Le dossier sélectionné %x ne peut être utilisé avec FreeFileSync. - -Please select a folder on a local file system, network or an MTP device. -Veuillez choisir un dossier local, en réseau ou un périphérique MTP. - -Defined by context of use -Défini par le contexte de l'utilisation - -Requires FreeFileSync Donation Edition -Nécessite FreeFileSync Donation Edition - -&Save -&Sauvegarder - -Save as &batch job... -Enregistrer en tant que fichier de &commandes ... - -Show &log -Afficher &journal - -Start &comparison -Démarrer la &comparaison - -C&omparison settings -Paramètres de C&omparaison - -&Filter settings -Paramètres de &Filtrage - -S&ynchronization settings -Paramètres de S&ynchronisation - -Start &synchronization -Démarrer la &synchronisation - -&Actions -&Actions - -&Preferences -&Préférences - -&Language -&Langue - -&Find... -&Rechercher ... - -&Export file list... -&Exportation de la liste des fichiers ... - -&Reset layout -&Réinitialiser la disposition - -&Tools -Ou&tils - -&Check for updates now -&Rechercher une mise à jour - -Check &automatically once a week -Contrôler &automatiquement une fois par semaine - -Cancel -Annuler - -Compare -Comparer - -Synchronize -Synchroniser - -Add folder pair -Ajout d'un couple de dossiers - -Remove folder pair -Supprimer le couple de dossiers - -Access online storage -Accès au stockage en ligne - -Close search bar -Fermer la barre de recherche - -Find: -Rechercher : - -Match case -Respect de la casse - -Processed: -Traité : - -Remaining: -Restant : - -New -Nouveau - -Open... -Ouvrir ... - -Save -Sauvegarder - -Save as... -Sauvegarder sous ... - -View type: -Type de vue : - -Select view: -Choisir la vue : - -Save as default -Sauvegarde par défaut - -Statistics: -Statistiques : - -Number of files and folders that will be deleted -Nombre de fichiers et de dossiers qui seront supprimés - -Number of files that will be updated -Nombre de fichiers à mettre à jour - -Number of files and folders that will be created -Nombre de fichiers et de dossiers qui seront créés - -Total bytes to copy -Nombre total d'octets à copier - -Arrange folder pair -Coordonne la paire de dossiers - -Main settings: -Paramètres principaux : - -Use local settings: -Utiliser les paramètres locaux : - -Select a variant: -Choisir une variante : - -Include &symbolic links: -Inclure les liens &symboliques : - -&Follow -&Poursuivre - -&Direct -&Direct - -More information -Plus d'informations - -&Ignore time shift [hh:mm] -&Ignorer le décalage horaire [hh:mm] - -List of file time offsets to ignore -Liste des décalages de temps UTC à ignorer - -Example: -Exemple : - -Handle daylight saving time -Gérer l'heure d'été - -Ignore errors -Ignorer les erreurs - -Retry count: -Nombre de tentatives : - -Delay (in seconds): -Délai (en secondes) : - -Performance improvements: -Amélioration des performances : - -Parallel file operations: -Opérations sur les fichiers parallèles : - -How to get best performance? -Comment améliorer les performances ? - -Local settings: -Paramètres locaux : - -Include: -Inclure : - -Show examples -Afficher les exemples - -Select filter rules to exclude certain files from synchronization. Enter file paths relative to their corresponding folder pair. -Choisissez les règles de filtrage pour exclure certains fichiers de la synchronisation. Entrez les chemins des fichiers par rapport à leur paire de dossiers. - -File size: -Taille du fichier : - -Minimum: -Minimum : - -Maximum: -Maximum : - -Time span: -Intervalle de temps : - -C&lear -&Effacer - -Detect moved files -Détection des fichiers déplacés - - -- Not supported by all file systems -- Requires and creates database files -- Detection not available for first sync - - -- Non pris en charge par tous les systèmes de fichiers -- Nécessite et crée la base de données -- Détection impossible lors de la première synchronisation - - -Delete files: -Supprimer les fichiers : - -&Recycle bin -&Corbeille - -&Permanent -&Permanent - -&Versioning -Gestion des &Versions - -Move files to a user-defined folder -Déplacer les fichiers vers un dossier utilisateur - -Naming convention: -Convention de nommage : - -Limit file versions: -Limiter les versions de fichiers : - -Last x days: -Derniers x jours : - -&Override default log path: -&Remplacer le chemin par défaut du journal : - -Run a command: -Éxecuter une commande : - -OK -OK - -Connection type: -Type de connexion : - -Connected user accounts: -Comptes utilisateur connectés : - -&Add connection -&Ajouter une connexion - -&Disconnect -&Se déconnecter - -Selected user account: -Choisir un compte utilisateur : - -Server name or IP address: -Nom du serveur ou adresse IP : - -Port: -Port : - -Encryption: -Cryptage : - -&Disabled -&Désactivé - -&Explicit SSL/TLS -&Explicite SSL/TLS - -Authentication: -Authentication : - -&Password -Mot de &Passe - -&Key file -&Fichier clé - -&SSH agent -Agent &SSH - -User name: -Nom de l'utilisateur : - -Private key file: -Fichier clé personnel : - -&Show password -&Afficher le mot de passe - -Directory on server: -Répertoire sur le serveur : - -Access timeout (in seconds): -Délai d'accès (en secondes) : - -SFTP channels per connection: -Ports SFTP par connexion : - -Detect server limit -Détection des limites du serveur - -Select Folder -Choisir un Dossier - -Variant: -Variante : - -&Don't show this dialog again -&Ne plus afficher cette boîte de dialogue - -Bytes: -Octets : - -Items: -Elément : - -Synchronizing... -Synchronisation en cours ... - -Minimize to notification area -Réduction à la zone de notification - -Bytes -Octets - -Items -Eléments - -When finished: -A la fin : - -Auto-close -Fermeture automatique - -Close -Fermer - -&Pause -&Pause - -Stop -Arrêt - -Create a batch file for unattended synchronization. To start, double-click this file or schedule in a task planner: %x -Créer un fichier batch pour une synchronisation non assitée. Pour démarrer, double-cliquez sur ce fichier ou planifiez-le dans le gestionnaire des tâches : %x - -Progress dialog: -Fenêtre de progression: - -Run minimized -Exécution fenêtre réduite - -Show pop-up on errors or warnings -Montrer les avertissements et les messages d'erreur - -&Cancel -&Annuler - -Stop synchronization at first error -Arrêter la synchronisation à la première erreur - -How can I schedule a batch job? -Comment planifier un fichier de commandes ? - -&Keep relative paths -&Conserver les chemins relatifs - -&Overwrite existing files -&Remplacer les fichiers existants - -The following settings are used for all synchronization jobs. -Les paramètres suivants sont utilisés lors de toutes les synchronisations. - - -Copy to a temporary file (*.ffs_tmp) before overwriting target. -This guarantees a consistent state even in case of a serious error. - - -Copie vers un fichier temporaire (*.ffs_tmp) avant le remplacement de la cible. -Cela garantit la cohérence du système de fichiers en cas d'erreur grave. - - -recommended -recommandée - -Copy shared or locked files using the Volume Shadow Copy Service. -Copie les fichiers partagés ou verrouillés à l'aide du Service Volume Shadow Copy. - -requires administrator rights -nécessite les droits d'administrateur - -Transfer file and folder permissions. -Transfert des autorisations des fichiers et dossiers. - -Show all permanently hidden dialogs and warning messages again -Réafficher en permanence les boîtes de dialogue et les avertissements - -Default log path: -Chemin du journal par défaut : - -&Delete logs after x days: -&Supprimer les journaux après x jours : - -Notification sounds: -Son de la notification : - -Synchronization finished: -Synchronisation terminée : - -Customize context menu: -Personnaliser le menu contextuel : - -Description -Description - -&Default -&Défaut - -Feedback and suggestions are welcome: -Commentaires et suggestions sont les bienvenus : - -Home page -Page d'accueil - -FreeFileSync Forum -Forum FreeFileSync - -Email -Email - -If you like FreeFileSync: -Si vous aimez FreeFileSync : - -Support with a donation -Soutenir avec un don - -The auto updater was disabled by the administrator. -La mise à jour automatique a été désactivée par l'administrateur. - -Donation details -Détails pour les donations - -Source code written in C++ using: -Code source écrit en C++ utilisant : - -Published under the GNU General Public License: -Publié sous licence publique générale GNU : - -Many thanks for localization: -Un grand merci pour la traduction à : - -Activate the FreeFileSync Donation Edition by one of the following methods: -Activez la FreeFileSync Donation Edition par l'une des méthodes suivantes : - -Activate via internet now: -Activez par internet maintenant : - -Activate online -Activez en ligne - -Retrieve an offline activation key from the following URL: -Récupérer une clé d'activation hors ligne à partir de l'URL suivante : - -&Copy to clipboard -& Copie dans le presse-papiers - -Enter activation key: -Entrez la clé d'activation : - -Activate offline -Activez hors ligne - -Highlight configurations that have not been run for more than the following number of days: -Signaler les configurations non exécutées depuis le nombre de jours suivant : - -FreeFileSync requires access rights to avoid "Operation not permitted" errors when synchronizing your data (e.g. Mail, Messages, Calendars). -FreeFileSync requiert les droits d'accès pour éviter les erreurs "Opération non autorisée" lors de la synchronisation de vos données (Courrier, Messages, Calendriers, par exemple). - -Locate the FreeFileSync app -Trouver l'application FreeFileSync - -Open Security && Privacy -Ouvrir Sécurité et confidentialité - -Click the lock to allow changes. -Cliquez sur le verrou pour autoriser les modifications. - -Drag FreeFileSync into the panel. -Déplacer FreeFileSync vers le panneau. - -Synchronization Settings -Configuration de la Synchronisation - -Access Online Storage -Accéder au stockage en ligne - -Save as a Batch Job -Enregistrer en tant que Fichier de Commandes - -Delete Items -Supprimer les Éléments - -Copy Items -Copier les Éléménts - -Options -Options - -Select Time Span -Choix de l'Intervalle de Temps - -Highlight Configurations -Signaler les configurations - -Grant Full Disk Access -Accordez l'accès complet au disque - -Info -Info - -No log entries -Aucune entrée journal - -Select all -Tout sélectionner - -&Options -&Options - -Main Bar -Barre Principale - -Folder Pairs -Paires de Dossiers - -Find -Rechercher - -View Settings -Configuration de la vue - -Configuration -Configuration - -Overview -Aperçu - -Swap sides -Permuter les côtés - -Show "%x" -Afficher "%x" - -&Show details -&Afficher les détails - -FreeFileSync %x is available! -FreeFileSync %x est disponible ! - -Local path not available for %x. -Chemin local invalide pour %x. - -Confirm -Confirmer - - -Do you really want to execute the command %y for one item? -Do you really want to execute the command %y for %x items? - - -Êtes-vous sûr de vouloir exécuter la commande %y pour %x élément ? -Êtes-vous sûr de vouloir exécuter la commande %y pour %x éléments ? - - -&Execute -&Exécuter - -Set direction: -Choix de la direction : - -multiple selection -sélection multiple - -&Include via filter: -&Inclure via le filtre : - -&Exclude via filter: -&Exclure via le filtre : - -Include temporarily -Inclure temporairement - -Exclude temporarily -Exclure temporairement - -&Synchronize selection -&Choix de la synchronisation - -&Copy to... -&Copier vers ... - -&Delete -&Supprimer - -Show icons: -Afficher les icônes : - -Small -Petit - -Medium -Moyen - -Large -Grand - -Select time span... -Choisir un intervalle de temps ... - -Donation Edition -Edition Donation - -Folder Comparison and Synchronization -Comparaison de dossiers et Synchronisation - -Configuration saved -Configuration enregistrée - -FreeFileSync batch -FreeFileSync batch - -Do you want to save changes to %x? -Voulez-vous enregistrer les modifications dans %x ? - -Never save &changes -Ne jamais sauvegarder les &modifications - -Do&n't save -&Ne pas Sauvegarder - -%x cannot be renamed. -%x ne peut être renommé. - -New name: -Nouveau Nom : - -Rename Configuration -Renommer la configuration - -Configuration name must not be empty. -Le nom de configuration ne doit pas être vide. - -&Rename... -&Renommer... - -Hide configuration -Masquer la configuration - -Highlight... -Signaler ... - -Clear filter -Effacer les filtres - -Show files that exist on left side only -Afficher les fichiers existant seulement à gauche - -Show files that exist on right side only -Afficher les fichiers existant seulement à droite - -Show files that are newer on left -Afficher les fichiers de gauche plus récents que ceux de droite - -Show files that are newer on right -Afficher les fichiers de droite plus récents que ceux de gauche - -Show files that are equal -Afficher les fichiers identiques - -Show files that are different -Afficher les fichiers différents - -Show conflicts -Afficher les conflits - -Show files that will be created on the left side -Afficher les fichiers qui seront créés à gauche - -Show files that will be created on the right side -Afficher les fichiers qui seront créés à droite - -Show files that will be deleted on the left side -Afficher les fichiers qui seront supprimés à gauche - -Show files that will be deleted on the right side -Afficher les fichiers qui seront supprimés à droite - -Show files that will be updated on the left side -Affiche les fichiers à mettre à jour côté gauche - -Show files that will be updated on the right side -Affiche les fichiers à mettre à jour côté droit - -Show files that won't be copied -Afficher les fichiers qui ne seront pas copiés - -Show filtered or temporarily excluded files -Afficher les fichiers filtrés ou temporairement exclus - -Filter -Filtre - -All files are in sync -Tous les fichiers sont synchronisés - - -1 directory -%x directories - - -%x répertoire -%x répertoires - - - -1 file -%x files - - -%x fichier -%x fichiers - - - -Showing %y of 1 row -Showing %y of %x rows - - -Affiche %y sur %x ligne -Affiche %y sur %x lignes - - -Cannot find %x -Impossible de trouver %x - -Move up -Monter - -Move down -Descendre - -Comma-separated values -Valeurs séparées par une virgule - -File list exported -Liste des fichiers exportée - -Searching for program updates... -Recherche de mises à jour ... - -Paused -En pause - -Stop requested... -Arrêt demandé ... - -Initializing... -Initialisation ... - -Comparing content... -Comparaison du contenu ... - -&Continue -&Continuer - -Progress -Progression - -Thank you, %x, for your donation and support! -Merci %x pour votre don et votre aide ! - -Connections -Connexions - -Recommended range: -Plage recommandée : - -Do you really want to disconnect from user account %x? -Voulez-vous vraiment vous déconnecter du compte utilisateur %x ? - -Password: -Mot de passe : - -Key passphrase: -Phrase secrète : - -Please enter a file path. -Veuillez entrer un chemin d'accès. - - -Copy the following item to another folder? -Copy the following %x items to another folder? - - -Copier %x élément dans un autre dossier ? -Copier les %x éléments suivants dans un autre dossier ? - - -Please enter a target folder. -Veuillez indiquer le dossier destination. - - -Do you really want to move the following item to the recycle bin? -Do you really want to move the following %x items to the recycle bin? - - -Etes-vous sûr de vouloir mettre à la Corbeille %x élément suivant ? -Etes-vous sûr de vouloir mettre à la Corbeille les %x éléments suivants ? - - -Move -Déplacer - - -Do you really want to delete the following item? -Do you really want to delete the following %x items? - - -Voulez-vous vraiment supprimer %x élément ? -Voulez-vous vraiment supprimer ces %x éléments ? - - -Start to synchronize the selection? -Commencer à synchroniser la sélection ? - -Start synchronization now? -Démarrer la synchronisation maintenant ? - -Copy DACL, SACL, Owner, Group -Copie DACL, SACL, propriétaire et groupe - -Integrate external applications into context menu. The following macros are available: -Inclure les applications externes dans le menu contextuel. Les macros suivantes sont disponibles : - -Full file or folder path -Chemin complet du fichier ou du dossier - -Parent folder path -Chemin parent du dossier - -Temporary local copy for SFTP and MTP storage -Copie temporaire en local pour les stockages en SFTP et MTP. - -Parameters for opposite side -Paramètres du côté opposé. - -Show hidden dialogs again -Réafficher les boîtes de dialogue masquées - -All dialogs shown -Afficher toutes les boîtes de dialogue - -Downloading update... -Téléchargement de la mise à jour ... - -Identify equal files by comparing modification time and size. -Reconnaître les fichiers identiques à l'aide de leur taille et de leur date. - -Identify equal files by comparing the file content. -Reconnaître les fichiers identiques à l'aide de leur contenu. - -Identify equal files by comparing their file size. -Identifier les fichiers identiques en comparant leur taille. - -Identify and propagate changes on both sides. Deletions, moves and conflicts are detected automatically using a database. -Identifier et propager les modifications des deux côtés. Suppressions, déplacements et conflits sont détectés automatiquement en utilisant une base de données. - -Create a mirror backup of the left folder by adapting the right folder to match. -Créer une sauvegarde miroir du dossier de gauche de telle sorte que le dossier de droite lui corresponde exactement. - -Copy new and updated files to the right folder. -Copier les fichiers nouveaux ou mis à jour dans le dossier de droite. - -Configure your own synchronization rules. -Paramétrage de vos règles de synchronisation. - -Comparison -Comparaison - -Synchronization -Synchronisation - -This week -Cette semaine - -This month -Ce mois - -This year -Cette année - -Byte -Octet - -KB -Ko - -MB -Mo - -Retain deleted and overwritten files in the recycle bin -Conserver les fichiers détruits ou remplacés dans la corbeille - -Delete and overwrite files permanently -Supprimer et remplacer les fichiers de façon permanente - -Replace -Remplacer - -Move files and replace if existing -Déplacer les fichiers et remplacer ceux existant - -Time stamp -Horodatage - -Move files into a time-stamped subfolder -Déplacer les fichiers dans un sous-dossier horodaté - -File -Fichier - -Append a time stamp to each file name -Ajouter un horodatage à chaque nom de fichier - -On completion: -A la fin : - -On errors: -En cas d'erreur : - -On success: -En cas de succès : - -Main config -Configuration principale - -empty -vide - -Leave as unresolved conflict -Abandonner en tant que conflit non résolu - -YYYY-MM-DD hhmmss -AAAA-MM-JJ hhmmss - -Minimum version count must be smaller than maximum count. -Le compteur de versions minimum doit être plus petit que le compteur maximum. - -&Restore -&Restaurer - -Files -Fichiers - -Percentage -Pourcentage - -Failed to retrieve update information. -Impossible de retrouver les informations de mise à jour. - -Automatic updates: -Mise à jour automatique : - -Check for Program Updates -Recherche des Mises à Jour - -Auto-update now or download manually from the FreeFileSync home page? -Mise à jour automatique maintenant ou téléchargement manuel à partir du site de FreeFileSync ? - -&Auto-update -Mise à jour &automatique - -&Home page -&Téléchargement - -Download now? -Télécharger maintenant ? - -&Download -&Télécharger - -FreeFileSync is up to date. -FreeFileSync est à jour. - -Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now? -Le numéro de la version courante de FreeFileSync est introuvable sur internet. Une nouvelle version est probablement disponible. Voulez-vous vérifier maintenant ? - -&Check -&Contrôle - -Consistency check failed for %x. -Contrôle de cohérence incorrect pour %x. - -Installation was registered on a different operating system. -L'installation a été enregistré avec un système d'exploitation différent. - -Failed to activate FreeFileSync Donation Edition. -Impossible d'activer FreeFileSync Donation Edition. - -Incorrect activation key. -Clé d'activation incorrecte. - -Unable to register to receive system messages. -Impossible d'enregistrer la réception des messages système. - -The %x installation option is only available in the FreeFileSync Donation Edition. -L'option d'installation %x n'est disponible que dans FreeFileSync Donation Edition. - -Cannot find system function %x. -Impossible de trouver la fonction système %x. - -Unable to register device notifications for %x. -Impossible d'enregistrer les notifications de périphérique pour %x. - -The file is locked by another process: -Le fichier est verrouillé par un autre process : - -Failed to determine file permission support for folder %x. -Impossible de déterminer les autorisations de fichier du dossier %x. - -Cannot read security context of %x. -Impossible de lire les paramètres de sécurité de %x. - -Cannot write security context of %x. -Impossible d'écrire les paramètres de sécurité de %x. - -Cannot read permissions of %x. -Impossible de lire les permissions de %x. - -Cannot copy permissions from %x to %y. -Impossible de copier les permissions de %x à %y. - -%x is not a regular directory name. -%x n'est pas un nom de répertoire valide. - -Cannot copy attributes from %x to %y. -Impossible de copier les attributs de %x à %y. - -%x TB -%x To - -%x PB -%x Po - - -1 min -%x min - - -%x min -%x min - - - -1 hour -%x hours - - -%x heure -%x heures - - -Cannot set privilege %x. -Impossible de fixer le privilège %x. - -Unable to suspend system sleep mode. -Impossible de suspendre le mode veille du système. - -Cannot change process I/O priorities. -Impossible de modifier les priorités E/S des tâches. - -Checking recycle bin failed for folder %x. -Échec de la vérification de la Corbeille pour le dossier %x. - -Unable to shut down the system. -Impossible d'arrêter le système. - -Prepare installation -Préparation de l'installation - -Choose which components you want to install. -Sélectionnez les composants que vous voulez installer. - -Select installation type: -Choisir le type d'installation : - -Local -Locale - -Portable -Portable - -Save settings in %x -Sauvegarder les paramètres dans %x - -Register FreeFileSync file extensions -Enregistrez les extensions de fichier FreeFileSync - -Create Explorer context menu entries -Créer les entrées du menu contextuel de l'Explorateur - -Save settings in installation directory -Sauvegarder la configuration dans le répertoire d'installation - -Do not write to Registry -Ne pas modifier la base des registres - -Just copy the files -Copier seulement les fichiers - -Choose a directory for installation: -Choisir le répertoire d'installation : - -Create shortcuts: -Création de raccourcis sur : - -Desktop -le Bureau - -Start Menu -Menu de démarrage - -Send To -Envoyer vers - -Registering FreeFileSync file extensions -Enregistrement des extensions de fichier FreeFileSync - -Unregistering FreeFileSync file extensions -Désenregistrement des extensions de fichier FreeFileSync - -FreeFileSync Configuration -Configuration de FreeFileSync - -FreeFileSync Batch File -Fichiers batch de FreeFileSync - -FreeFileSync Synchronization Database -Base de données de synchronisation de FreeFileSync - -RealTimeSync Configuration -Configuration de RealTimeSync - -Edit with FreeFileSync -Modification avec FreeFileSync - -Instead of an ad, here's an animal. -A la place d'une publicité, voici un animal. - -The FreeFileSync portable version cannot install into a subfolder of %x. -La version portable de FreeFileSync ne peut pas être intallée dans le sous-dossier de %x. - -Please choose the local installation type or select a different folder for installation. -Veuillez choisir le type d'installation locale ou sélectionner un autre dossier pour cette installation. - -Get the Donation Edition with bonus features and help keep FreeFileSync ad-free. -Obtenez l'Édition Don avec des fonctionnalités bonus et aidez FreeFileSync à rester sans publicité. - diff --git a/FreeFileSync/Build/Resources/Languages/german.lng b/FreeFileSync/Build/Resources/Languages/german.lng deleted file mode 100755 index f505735a..00000000 --- a/FreeFileSync/Build/Resources/Languages/german.lng +++ /dev/null @@ -1,2139 +0,0 @@ -
- Deutsch - Zenju - de_DE - flag_germany.png - 2 - n == 1 ? 0 : 1 -
- -Cannot read file %x. -Die Datei %x kann nicht gelesen werden. - - -Unexpected size of data stream. -Expected: %x bytes -Actual: %y bytes - - -Unerwartete Größe des Datenstroms. -Erwartet: %x bytes -Tatsächlich: %y bytes - - -Cannot write file %x. -Die Datei %x kann nicht geschrieben werden. - -Cannot write permissions of %x. -Die Berechtigungen von %x können nicht geschrieben werden. - -Operation not supported between different devices. -Der Vorgang wird zwischen unterschiedlichen Geräten nicht unterstützt. - -Temporary access error: -Vorübergehender Zugriffsfehler: - -Cannot delete file %x. -Die Datei %x kann nicht gelöscht werden. - -Cannot delete symbolic link %x. -Die symbolischen Verknüpfung %x kann nicht gelöscht werden. - -Cannot delete directory %x. -Das Verzeichnis %x kann nicht gelöscht werden. - -Cannot move file %x to %y. -Die Datei %x kann nicht nach %y verschoben werden. - -Cannot copy symbolic link %x to %y. -Die symbolische Verknüpfung %x kann nicht nach %y kopiert werden. - -Error Code %x -Fehlercode %x - -Cannot read directory %x. -Das Verzeichnis %x kann nicht gelesen werden. - -Cannot write modification time of %x. -Die Änderungszeit von %x kann nicht geschrieben werden. - -Cannot read file attributes of %x. -Die Dateiattribute von %x können nicht gelesen werden. - -Cannot create directory %x. -Das Verzeichnis %x kann nicht erstellt werden. - -Cannot determine final path for %x. -Der endgültige Pfad für %x kann nicht ermittelt werden. - -Operation not supported by device. -Der Vorgang wird vom Gerät nicht unterstützt. - -Cannot resolve symbolic link %x. -Die symbolische Verknüpfung %x kann nicht aufgelöst werden. - -Unable to move %x to the recycle bin. -%x kann nicht in den Papierkorb verschoben werden. - -Authentication completed. -Authentifizierung abgeschlossen. - -You may close this page now and continue with FreeFileSync. -Sie können diese Seite nun schließen und mit FreeFileSync fortfahren. - -Authentication failed. -Authentifizierung fehlgeschlagen. - -Unable to connect to %x. -Es kann keine Verbindung zu %x aufgebaut werden. - -Cannot find %x. -%x wurde nicht gefunden. - -The name %x is used by more than one item in the folder. -Der Name %x wird von mehr als einem Element im Ordner verwendet. - -Please authorize access to user account %x. -Bitte autorisieren Sie den Zugriff auf das Nutzerkonto %x. - -Cannot open file %x. -Die Datei %x kann nicht geöffnet werden. - -The name %x is already used by another item. -Der Name %x wird bereits von einem anderen Element verwendet. - -Cannot determine free disk space for %x. -Der freie Speicherplatz für %x konnte nicht ermittelt werden. - -Unable to disconnect from %x. -Die Verbindung zu %x kann nicht getrennt werden. - -Unable to access %x. -Auf %x kann nicht zugegriffen werden. - -Failed to get information about server %x. -Informationen über den Server %x konnten nicht abgerufen werden. - -Cannot monitor directory %x. -Das Verzeichnis %x kann nicht überwacht werden. - -Cannot find device %x. -Das Gerät %x wurde nicht gefunden. - -Cannot open directory %x. -Das Verzeichnis %x kann nicht geöffnet werden. - -Unsupported item type. -Der Elementstyp wird nicht unterstützt. - -Incorrect command line: -Ungültige Befehlszeile: - -The server does not support authentication via %x. -Der Server unterstützt keine Authentifizierung über %x. - -Required: -Benötigt: - - -Operation timed out after 1 second. -Operation timed out after %x seconds. - - -Der Vorgang hat das Zeitlimit von 1 Sekunde überschritten. -Der Vorgang hat das Zeitlimit von %x Sekunden überschritten. - - - -Cannot wait on more than 1 connection at a time. -Cannot wait on more than %x connections at a time. - - -Auf mehr als 1 Verbindung kann nicht gleichzeitig gewartet werden. -Auf mehr als %x Verbindungen kann nicht gleichzeitig gewartet werden. - - -Active connections: %x -Aktive Verbindungen: %x - -Failed to open SFTP channel number %x. -Der SFTP Kanal Nummer %x konnte nicht geöffnet werden. - -Both sides have changed since last synchronization. -Beide Seiten wurden seit der letzten Synchronisation verändert. - -Cannot determine sync-direction: -Die Synchronisationsrichtung kann nicht bestimmt werden: - -No change since last synchronization. -Keine Änderungen seit der letzten Synchronisation. - -The database entry is not in sync considering current settings. -Der Datenbankeintrag ist nicht synchron gemäß den aktuellen Einstellungen. - -Setting default synchronization directions: Old files will be overwritten with newer files. -Setze Standardwerte für Synchronisationsrichtungen: Alte Dateien werden durch neuere überschrieben. - -Creating file %x -Erstelle Datei %x - -Creating folder %x -Erstelle Ordner %x - -Creating symbolic link %x -Erstelle symbolische Verknüpfung %x - -Moving file %x to the recycle bin -Verschiebe Datei %x in den Papierkorb - -Moving folder %x to the recycle bin -Verschiebe Ordner %x in den Papierkorb - -Moving symbolic link %x to the recycle bin -Verschiebe symbolische Verknüpfung %x in den Papierkorb - -Deleting file %x -Lösche Datei %x - -Deleting folder %x -Lösche Ordner %x - -Deleting symbolic link %x -Lösche symbolische Verknüpfung %x - -Checking recycle bin availability for folder %x... -Prüfe Verfügbarkeit des Papierkorbs für Ordner %x... - -The recycle bin is not supported by the following folders. Deleted or overwritten files will not be able to be restored: -Der Papierkorb wird von den folgenden Ordnern nicht unterstützt. Gelöschte oder überschriebene Dateien werden nicht wiederhergestellt werden können: - -An exception occurred -Eine Ausnahme ist aufgetreten - -A left and a right directory path are expected after %x. -Ein linker und rechter Verzeichnispfad werden nach %x erwartet. - -Syntax error -Syntaxfehler - -Cannot find file %x. -Die Datei %x wurde nicht gefunden. - -Error -Fehler - -File %x does not contain a valid configuration. -Die Datei %x enthält keine gültige Konfiguration. - -The config file must not contain settings at directory pair level when directories are set via command line. -Die Konfigurationsdatei darf keine Einstellungen auf Verzeichnispaarebene enthalten, wenn Verzeichnisse über die Befehlszeile gesetzt werden. - -Directories cannot be set for more than one configuration file. -Verzeichnisse können nicht für mehr als eine Konfigurationsdatei gesetzt werden. - -Command line -Kommandozeile - -Syntax: -Syntax: - -config files: -Konfigurationsdateien: - -directory -Verzeichnis - -global config file: -Globale Konfigurationsdatei: - -Any number of FreeFileSync "ffs_gui" and/or "ffs_batch" configuration files. -Beliebige Anzahl von FreeFileSync "ffs_gui" und/oder "ffs_batch" Konfigurationsdateien. - -Any number of alternative directory pairs for at most one config file. -Beliebige Anzahl von alternativen Verzeichnispaaren für maximal eine Konfigurationsdatei. - -Open the selected configuration for editing only, without executing it. -Ausgewählte Konfiguration nur zum Editieren öffnen ohne sie auszuführen. - -Path to an alternate GlobalSettings.xml file. -Pfad zu alternativer GlobalSettings.xml Datei. - -Installation files are corrupted. Please reinstall FreeFileSync. -Die Installationsdateien sind beschädigt. Bitte installieren Sie FreeFileSync neu. - -Cannot find the following folders: -Die folgenden Ordner wurden nicht gefunden: - -The following folders do not yet exist: -Die folgenden Ordner existieren noch nicht: - -The folders are created automatically when needed. -Die Ordner werden bei Bedarf automatisch erstellt. - -The following folder paths differ in case. Please use a single form in order to avoid duplicate accesses. -Die folgenden Ordnerpfade unterscheiden sich in der Groß-/Kleinschreibung. Bitte verwenden Sie eine einheitliche Form um doppelte Zugriffe zu vermeiden. - -Scanning: -Suche Dateien: - -Comparison finished: -Vergleich abgeschlossen: - - -1 item found -%x items found - - -1 Element gefunden -%x Elemente gefunden - - -Time elapsed: -Vergangene Zeit: - -File %x has an invalid date. -Die Datei %x hat ein ungültiges Datum. - -Date: -Datum: - -Files have the same date but a different size. -Die Dateien haben dasselbe Datum, aber unterschiedliche Größen. - -Size: -Größe: - -Content comparison was skipped for excluded files. -Der Vergleich nach Dateiinhalt wurde für die ausgeschlossenen Dateien übersprungen. - -Items differ in attributes only -Die Elemente unterscheiden sich nur in Attributen - -Resolving symbolic link %x -Folge der symbolischen Verknüpfung %x - -Comparing content of files %x -Vergleiche Inhalt der Dateien %x - -Generating file list... -Erzeuge Dateiliste... - -Fail-safe file copy -Dateien ausfallsicher kopieren - -Enabled -Aktiviert - -Disabled -Deaktiviert - -Copy locked files -Gesperrte Dateien kopieren - -Copy file access permissions -Dateizugriffsberechtigungen kopieren - -File time tolerance -Dateizeittoleranz - -Run with background priority -Mit Hintergrundpriorität ausführen - -Lock directories during sync -Verzeichnisse während Synchronisation sperren - -Verify copied files -Kopierte Dateien verifizieren - -Using non-default global settings: -Nicht dem Standard entsprechende globale Einstellungen: - -A folder input field is empty. -Ein Ordnereingabefeld ist leer. - -The corresponding folder will be considered as empty. -Der entsprechende Ordner wird als leer angesehen. - -Exclude: -Ausschließen: - -One base folder of a folder pair is contained in the other one. -Ein Basisordner eines Ordnerpaares ist im anderen enthalten. - -The folder should be excluded from synchronization via filter. -Der Ordner sollte von der Synchronisation über den Filter ausgeschlossen werden. - -Calculating sync directions... -Berechne Synchronisationsrichtungen... - -Out of memory. -Nicht genügend Arbeitsspeicher. - -Show in Explorer -Im Explorer anzeigen - -Open with default application -Mit Standardanwendung öffnen - -Browse directory -Verzeichnis öffnen - -Database file %x is incompatible. -Die Datenbankdatei %x ist nicht kompatibel. - -Initial synchronization: -Erstmalige Synchronisation: - -Database file %x does not yet exist. -Die Datenbankdatei %x existiert noch nicht. - -Database file is corrupted: -Die Datenbankdatei ist beschädigt: - -Loading file %x... -Lade Datei %x... - -The database files do not yet contain information about the last synchronization. -Die Datenbankdateien beinhalten noch keine Informationen zur letzten Synchronisation. - -Saving file %x... -Speichere Datei %x... - -Searching for folder %x... -Suche Ordner %x... - -Timeout while searching for folder %x. -Das Zeitlimit für die Suche nach Ordner %x wurde überschritten. - -Cannot get process information. -Prozessinformationen können nicht gelesen werden. - -Waiting while directory is locked: -Warte während das Verzeichnis gesperrt ist: - -Lock owner: -Sperreigentümer: - -Detecting abandoned lock... -Ermittle aufgegebene Sperre... - - -1 sec -%x sec - - -1 Sek. -%x Sek. - - -Item exists on left side only -Element existiert nur links - -Item exists on right side only -Element existiert nur rechts - -Left side is newer -Linke Seite ist neuer - -Right side is newer -Rechte Seite ist neuer - -Items have different content -Elemente haben unterschiedlichen Inhalt - -Both sides are equal -Beide Seiten sind gleich - -Conflict/item cannot be categorized -Konflikt/Element, das nicht eingeordnet werden kann - -Copy new item to left -Kopiere neues Element nach links - -Copy new item to right -Kopiere neues Element nach rechts - -Delete left item -Lösche linkes Element - -Delete right item -Lösche rechtes Element - -Move file on left -Verschiebe linke Datei - -Move file on right -Verschiebe rechte Datei - -Update left item -Aktualisiere linkes Element - -Update right item -Aktualisiere rechtes Element - -Do nothing -Nichts tun - -Update attributes on left -Aktualisiere Attribute des linken Elements - -Update attributes on right -Aktualisiere Attribute des rechten Elements - -Error parsing file %x, row %y, column %z. -Fehler beim Auswerten der Datei %x, Zeile %y, Spalte %z. - -Services -Dienste - -Show All -Alle einblenden - -Hide Others -Andere ausblenden - -Hide %x -%x ausblenden - -Quit %x -%x beenden - -Cannot set directory locks for the following folders: -Die Verzeichnissperren können für die folgenden Ordner nicht gesetzt werden: - -Errors: -Fehler: - -Warnings: -Warnungen: - -Items processed: -Verarbeitete Elemente: - -Items remaining: -Verbleibende Elemente: - -Total time: -Gesamtzeit: - -Warning -Warnung - -Stopped -Gestoppt - -Cleaning up log files: -Bereinige Protokolldateien: - - -1 thread -%x threads - - -1 Thread -%x Threads - - -%x/sec -%x/sek - -%x items -%x Elemente - -Completed successfully -Erfolgreich abgeschlossen - -Completed with warnings -Mit Warnungen abgeschlossen - -Completed with errors -Mit Fehlern abgeschlossen - -Cannot access the Volume Shadow Copy Service. -Auf den Volumenschattenkopiedienst kann nicht zugegriffen werden. - -Please run the 64-bit version of FreeFileSync to create shadow copies on this system. -Bitte starten Sie die FreeFileSync 64-Bit Version, um Schattenkopien auf diesem System zu erstellen. - -Volume name %x is not part of file path %y. -Laufwerksname %x ist kein Teil des Dateipfades %y. - -File time and size -Datum und Größe - -File content -Dateiinhalt - -File size -Dateigröße - -Two way -Zwei Wege - -Mirror -Spiegeln - -Update -Aktualisieren - -Custom -Eigene - -Multiple... -Verschiedene... - -Cannot write file attributes of %x. -Die Dateiattribute von %x können nicht geschrieben werden. - -%x and %y have different content. -%x und %y haben unterschiedlichen Inhalt. - -Data verification error: -Verifizierungsfehler: - -Moving file %x to %y -Verschiebe Datei %x nach %y - -Moving folder %x to %y -Verschiebe Ordner %x nach %y - -Moving symbolic link %x to %y -Verschiebe symbolische Verknüpfung %x nach %y - -Updating file %x -Aktualisiere Datei %x - -Updating symbolic link %x -Aktualisiere symbolische Verknüpfung %x - -Verifying file %x -Verifiziere Datei %x - -Updating attributes of %x -Aktualisiere Attribute von %x - -Source item %x not found -Das Quellelement %x wurde nicht gefunden. - -Parent folder %x is not existing. -Der übergeordnete Ordner %x existiert nicht. - -Cannot copy file %x to %y. -Die Datei %x kann nicht nach %y kopiert werden. - -Creating a Volume Shadow Copy for %x... -Erstelle eine Volumenschattenkopie für %x... - -Cannot find folder %x. -Der Ordner %x wurde nicht gefunden. - -Target folder %x is already existing, but was not available during folder comparison. -Der Zielordner %x existiert bereits, war allerdings während des Ordnervergleichs nicht verfügbar. - -Target folder input field must not be empty. -Das Eingabefeld für den Zielordner darf nicht leer sein. - -Source folder %x not found. -Der Quellordner %x wurde nicht gefunden. - -Please enter a target folder for versioning. -Bitte geben Sie einen Zielorder für die Versionierung ein. - -The following items have unresolved conflicts and will not be synchronized: -Die folgenden Elemente haben ungelöste Konflikte und werden nicht synchronisiert werden: - -Folder pair: -Ordnerpaar: - -The following folders are significantly different. Please check that the correct folders are selected for synchronization. -Die folgenden Ordner unterscheiden sich erheblich. Überprüfen Sie, ob die richtigen Ordner für die Synchronisation ausgewählt wurden. - -Not enough free disk space available in: -Nicht genügend freier Speicher verfügbar für: - -Available: -Verfügbar: - -Some files will be synchronized as part of multiple base folders. -Einige Dateien werden als Teil mehrerer Basisordner synchronisiert werden. - -To avoid conflicts, set up exclude filters so that each updated file is included by only one base folder. -Um Konflikte zu vermeiden sollten Ausschlussfilter erstellt werden, so dass jede aktualisierte Datei nur einem Basisordner zugeordnet wird. - -Versioning folder: -Versionierungsordner: - -Base folder: -Basisordner: - -The versioning folder is contained in a base folder. -Der Versionierungsordner ist in einem Basisordner enthalten. - -Synchronizing folder pair: -Synchronisiere Ordnerpaar: - -Generating database... -Erzeuge Synchronisationsdatenbank... - -Searching for old file versions: -Suche alte Dateiversionen: - -Removing old file versions: -Entferne alte Dateiversionen: - -Unable to create time stamp for versioning: -Der Zeitstempel für die Versionierung kann nicht erstellt werden: - -Drag && drop -Drag && Drop - -Select a folder -Ordner auswählen - -&New -&Neu - -&Open... -Ö&ffnen... - -Save &as... -Speichern &unter... - -E&xit -&Beenden - -&File -&Datei - -&View help -&Hilfe anzeigen - -&About -&Über - -&Help -&Hilfe - -Usage: -Verwendung: - -Select folders to watch. -Zu überwachende Ordner wählen. - -Enter a command line. -Eine Befehlszeile angeben. - -Press 'Start'. -'Start' drücken. - -To get started just import a "ffs_batch" file. -Zum Schnelleinstieg einfach eine "ffs_batch" Datei importieren. - -Folders to watch: -Zu überwachende Ordner: - -Add folder -Ordner hinzufügen - -Remove folder -Ordner entfernen - -Browse -Auswählen - -Idle time (in seconds): -Ruhezeit (in Sekunden): - -Idle time between last detected change and execution of command -Ruhezeit zwischen der letzten erkannten Änderung und dem Aufruf der Befehlszeile - -Command line: -Befehlszeile: - -&Hide console window -&Konsolenfenster verbergen - - -The command is triggered if: -- files or subfolders change -- new folders arrive (e.g. USB stick insert) - - -Die Befehlszeile wird ausgelöst, wenn: -- Dateien oder Unterordner sich ändern -- neue Ordner erscheinen (z.B. Anschluss eines USB Sticks) - - -Start -Start - -About -Über - -Build: %x -Build: %x - -All files -Alle Dateien - -Automated Synchronization -Automatisierte Synchronisation - -The %x protocol does not support directory monitoring: -Das %x Protokoll unterstützt keine Verzeichnisüberwachung: - -Directory monitoring active -Verzeichnisüberwachung ist aktiv - -Waiting until directory is available: -Warte bis Verzeichnis verfügbar ist: - -&Configure -&Konfigurieren - -&Show error message -&Fehlermeldung zeigen - -&Quit -&Beenden - -&Retry -&Wiederholen - - -1 byte -%x bytes - - -1 Byte -%x Bytes - - -%x MB -%x MB - -%x KB -%x KB - -%x GB -%x GB - -Loading... -Lade... - -Scanning... -Suche Dateien... - -configuration file -Konfigurationsdatei - -System: Sleep -System: Energie sparen - -System: Shut down -System: Herunterfahren - -Nothing to synchronize -Es gibt nichts zu synchronisieren - -Executing command: -Führe Befehl aus: - -You can switch to FreeFileSync's main window to resolve this issue. -Sie können auf FreeFileSyncs Hauptfenster wechseln, um das Problem zu beheben. - -&Don't show this warning again -&Diese Warnung nicht mehr anzeigen - -&Ignore -&Ignorieren - -&Switch -&Wechseln - -Switching to FreeFileSync's main window -Wechsle auf FreeFileSyncs Hauptfenster - -Automatic retry -Automatische Wiederholung - -Ignore &all -&Alle ignorieren - -Retrying operation... -Wiederhole Vorgang... - -Serious Error -Schwerer Fehler - -Last session -Letzte Sitzung - -Today -Heute - - -1 day -%x days - - -1 Tag -%x Tage - - -Name -Name - -Last sync -Letzte Synchronisation - -Log -Protokoll - -Folder -Ordner - -Symlink -Symlink - -Full path -Absoluter Pfad - -Relative path -Relativer Pfad - -Item name -Elementname - -Size -Größe - -Date -Datum - -Extension -Erweiterung - -Category -Kategorie - -Action -Aktion - -Local comparison settings -Lokale Vergleichseinstellungen - -Local synchronization settings -Lokale Synchronisationseinstellungen - -Local filter -Lokaler Filter - -Active -Aktiv - -None -Ohne - -Remove local settings -Lokale Einstellungen entfernen - -Clear local filter -Lokalen Filter löschen - -Copy -Kopieren - -Paste -Einfügen - -The selected folder %x cannot be used with FreeFileSync. -Der ausgewählte Ordner %x kann nicht mit FreeFileSync verwendet werden. - -Please select a folder on a local file system, network or an MTP device. -Bitte wählen Sie einen Ordner auf einem lokalen Dateisystem, Netzwerk oder MTP Gerät. - -Defined by context of use -Durch Nutzungskontext festgelegt - -Requires FreeFileSync Donation Edition -Benötigt FreeFileSync Spendenversion - -&Save -&Speichern - -Save as &batch job... -Speichern als Batch&auftrag... - -Show &log -&Protokoll zeigen - -Start &comparison -&Vergleich starten - -C&omparison settings -V&ergleichseinstellungen - -&Filter settings -&Filtereinstellungen - -S&ynchronization settings -S&ynchronisationseinstellungen - -Start &synchronization -&Synchronisation starten - -&Actions -&Aktionen - -&Preferences -&Einstellungen - -&Language -&Sprache - -&Find... -S&uchen... - -&Export file list... -Dateiliste e&xportieren... - -&Reset layout -Oberfläche &zurücksetzen - -&Tools -E&xtras - -&Check for updates now -&Jetzt auf Aktualisierung prüfen - -Check &automatically once a week -&Automatisch wöchentlich prüfen - -Cancel -Abbrechen - -Compare -Vergleichen - -Synchronize -Synchronisieren - -Add folder pair -Ordnerpaar hinzufügen - -Remove folder pair -Ordnerpaar entfernen - -Access online storage -Auf Onlinespeicher zugreifen - -Close search bar -Suchleiste schließen - -Find: -Suchen: - -Match case -Groß-/Kleinschreibung - -Processed: -Verarbeitet: - -Remaining: -Verbleibend: - -New -Neu - -Open... -Öffnen... - -Save -Speichern - -Save as... -Speichern unter... - -View type: -Ansichtstyp: - -Select view: -Ansicht wählen: - -Save as default -Als Standard speichern - -Statistics: -Statistiken: - -Number of files and folders that will be deleted -Anzahl der zu löschenden Dateien und Ordner - -Number of files that will be updated -Anzahl der zu aktualisierenden Dateien - -Number of files and folders that will be created -Anzahl der zu erstellenden Dateien und Ordner - -Total bytes to copy -Gesamtmenge der zu kopierenden Daten - -Arrange folder pair -Ordnerpaar anordnen - -Main settings: -Haupteinstellungen: - -Use local settings: -Verwende lokale Einstellungen: - -Select a variant: -Variante wählen: - -Include &symbolic links: -Symbolische &Verknüpfungen einschließen: - -&Follow -&Folgen - -&Direct -&Direkt - -More information -Mehr Information - -&Ignore time shift [hh:mm] -&Zeitversatz ignorieren [hh:mm] - -List of file time offsets to ignore -Liste von Zeitverschiebungen die ignoriert werden sollen - -Example: -Beispiel: - -Handle daylight saving time -Sommerzeit berücksichtigen - -Ignore errors -Fehler ignorieren - -Retry count: -Wiederholungen: - -Delay (in seconds): -Verzögerung (in Sekunden): - -Performance improvements: -Leistungsverbesserungen: - -Parallel file operations: -Parallele Dateioperationen: - -How to get best performance? -Wie erhält man die beste Leistung? - -Local settings: -Lokale Einstellungen: - -Include: -Einschließen: - -Show examples -Beispiele zeigen - -Select filter rules to exclude certain files from synchronization. Enter file paths relative to their corresponding folder pair. -Wählen Sie Filterregeln aus, um einzelne Dateien von der Synchronisation auszuschließen. Geben Sie Dateipfade relativ zum zugehörigen Ordnerpaar an. - -File size: -Dateigröße: - -Minimum: -Minimum: - -Maximum: -Maximum: - -Time span: -Zeitspanne: - -C&lear -&Löschen - -Detect moved files -Verschobene Dateien erkennen - - -- Not supported by all file systems -- Requires and creates database files -- Detection not available for first sync - - -- Wird nicht von allen Dateisystemen unterstützt. -- Benötigt und erstellt Datenbankdateien. -- Erkennung bei erster Synchronisation nicht verfügbar. - - -Delete files: -Dateien löschen: - -&Recycle bin -Papier&korb - -&Permanent -&Permanent - -&Versioning -&Versionierung - -Move files to a user-defined folder -Dateien in einen benutzerdefinierten Ordner verschieben - -Naming convention: -Namenskonvention: - -Limit file versions: -Begrenze Dateiversionen: - -Last x days: -Letzte x Tage: - -&Override default log path: -&Standardprotokollpfad überschreiben: - -Run a command: -Befehl ausführen: - -OK -OK - -Connection type: -Verbindungstyp: - -Connected user accounts: -Verbundene Nutzerkonten: - -&Add connection -&Verbindung hinzufügen - -&Disconnect -&Trennen - -Selected user account: -Ausgewähltes Nutzerkonto: - -Server name or IP address: -Servername oder IP-Adresse: - -Port: -Port: - -Encryption: -Verschlüsselung: - -&Disabled -&Deaktiviert - -&Explicit SSL/TLS -&Explizites SSL/TLS - -Authentication: -Authentifizierung: - -&Password -&Passwort - -&Key file -&Schlüsseldatei - -&SSH agent -&SSH Agent - -User name: -Benutzername: - -Private key file: -Private Schlüsseldatei: - -&Show password -&Passwort zeigen - -Directory on server: -Verzeichnis auf Server: - -Access timeout (in seconds): -Zeitlimit für Zugriff(in Sekunden): - -SFTP channels per connection: -SFTP Kanäle je Verbindung: - -Detect server limit -Ermittle Serverlimit - -Select Folder -Ordner auswählen - -Variant: -Variante: - -&Don't show this dialog again -&Diesen Dialog nicht mehr anzeigen - -Bytes: -Bytes: - -Items: -Elemente: - -Synchronizing... -Synchronisiere... - -Minimize to notification area -In das Benachrichtigungsfeld minimieren - -Bytes -Bytes - -Items -Elemente - -When finished: -Wenn fertig: - -Auto-close -Automatisch schließen - -Close -Schließen - -&Pause -&Pause - -Stop -Stop - -Create a batch file for unattended synchronization. To start, double-click this file or schedule in a task planner: %x -Erstellt eine Batchdatei für die unbeaufsichtigte Synchronisation. Zum Starten die Datei doppelklicken oder in einen Taskplaner eintragen: %x - -Progress dialog: -Fortschrittsdialog: - -Run minimized -Minimiert ausführen - -Show pop-up on errors or warnings -Ein Auswahlfenster bei Fehlern oder Warnungen anzeigen - -&Cancel -&Abbrechen - -Stop synchronization at first error -Synchronisation beim ersten Fehler stoppen - -How can I schedule a batch job? -Wie können Batchaufträge in den Taskplaner eingetragen werden? - -&Keep relative paths -&Relative Pfade beibehalten - -&Overwrite existing files -&Existierende Dateien überschreiben - -The following settings are used for all synchronization jobs. -Die folgenden Einstellungen werden für alle Synchronisationsaufgaben verwendet. - - -Copy to a temporary file (*.ffs_tmp) before overwriting target. -This guarantees a consistent state even in case of a serious error. - - -Kopiere in eine temporäre Datei (*.ffs_tmp) bevor das Ziel überschrieben wird. -Dadurch wird ein konsistenter Datenstand auch bei schweren Fehlern garantiert. - - -recommended -empfohlen - -Copy shared or locked files using the Volume Shadow Copy Service. -Kopiere gesperrte Dateien mit Hilfe des Volumenschattenkopie-Dienstes. - -requires administrator rights -Benötigt Administratorrechte - -Transfer file and folder permissions. -Übertrage Datei- und Ordnerberechtigungen. - -Show all permanently hidden dialogs and warning messages again -Alle dauerhaft versteckten Fenster und Warnmeldungen wieder anzeigen - -Default log path: -Standardprotokollpfad: - -&Delete logs after x days: -&Protokolldateien nach x Tagen löschen: - -Notification sounds: -Benachrichtigungstöne: - -Synchronization finished: -Synchronisation abgeschlossen: - -Customize context menu: -Kontextmenü anpassen: - -Description -Beschreibung - -&Default -&Standard - -Feedback and suggestions are welcome: -Hinweise und Vorschläge sind willkommen: - -Home page -Homepage - -FreeFileSync Forum -FreeFileSync Forum - -Email -Email - -If you like FreeFileSync: -Wenn Sie FreeFileSync mögen: - -Support with a donation -Mit einer Spende unterstützen - -The auto updater was disabled by the administrator. -Die automatische Aktualisierung wurde vom Administrator deaktiviert. - -Donation details -Spendendetails - -Source code written in C++ using: -Der Quellcode wurde in C++ geschrieben mit: - -Published under the GNU General Public License: -Veröffentlicht unter der Allgemeinen Öffentlichen GNU-Lizenz: - -Many thanks for localization: -Vielen Dank für die Lokalisation: - -Activate the FreeFileSync Donation Edition by one of the following methods: -Aktivieren Sie die FreeFileSync Spendenversion durch eine der folgenden Methoden: - -Activate via internet now: -Jetzt über das Internet aktivieren: - -Activate online -Online aktivieren - -Retrieve an offline activation key from the following URL: -Einen Offline-Aktivierungsschlüssel von folgender URL abrufen: - -&Copy to clipboard -In &Zwischenablage kopieren - -Enter activation key: -Aktivierungsschlüssel eingeben: - -Activate offline -Offline aktivieren - -Highlight configurations that have not been run for more than the following number of days: -Konfigurationen hervorheben, die seit mehr als die folgende Anzahl an Tagen nicht mehr ausgeführt wurden: - -FreeFileSync requires access rights to avoid "Operation not permitted" errors when synchronizing your data (e.g. Mail, Messages, Calendars). -FreeFileSync benötigt Zugriffsrechte, um "Operation nicht erlaubt" Fehler bei der Synchronisation deiner Daten (z.B. E-Mail, Nachrichten, Kalender) zu vermeiden. - -Locate the FreeFileSync app -Die FreeFileSync App finden - -Open Security && Privacy -Systemeinstellungen/Sicherheit öffnen - -Click the lock to allow changes. -Das Schloss anklicken und Änderungen erlauben. - -Drag FreeFileSync into the panel. -FreeFileSync in das Fenster ziehen. - -Synchronization Settings -Synchronisationseinstellungen - -Access Online Storage -Auf Onlinespeicher zugreifen - -Save as a Batch Job -Als Batchauftrag speichern - -Delete Items -Elemente löschen - -Copy Items -Elemente kopieren - -Options -Optionen - -Select Time Span -Zeitspanne auswählen - -Highlight Configurations -Konfigurationen hervorheben - -Grant Full Disk Access -Festplattenvollzugriff gewähren - -Info -Info - -No log entries -Keine Protokolleinträge - -Select all -Alle auswählen - -&Options -&Optionen - -Main Bar -Hauptleiste - -Folder Pairs -Ordnerpaare - -Find -Suchen - -View Settings -Ansichtseinstellungen - -Configuration -Konfiguration - -Overview -Übersicht - -Swap sides -Seiten vertauschen - -Show "%x" -Zeige "%x" - -&Show details -&Zeige Details - -FreeFileSync %x is available! -FreeFileSync %x ist verfügbar! - -Local path not available for %x. -Lokaler Pfad ist nicht verfügbar für %x. - -Confirm -Bestätigen - - -Do you really want to execute the command %y for one item? -Do you really want to execute the command %y for %x items? - - -Soll der Befehl %y wirklich für ein Element ausgeführt werden? -Soll der Befehl %y wirklich für %x Elemente ausgeführt werden? - - -&Execute -&Ausführen - -Set direction: -Setze Richtung: - -multiple selection -Mehrfachauswahl - -&Include via filter: -Über Filter &einschließen: - -&Exclude via filter: -Über Filter &ausschließen: - -Include temporarily -Temporär einschließen - -Exclude temporarily -Temporär ausschließen - -&Synchronize selection -Auswahl &synchronisieren - -&Copy to... -&Kopieren nach... - -&Delete -&Löschen - -Show icons: -Symbole anzeigen: - -Small -Klein - -Medium -Mittel - -Large -Groß - -Select time span... -Zeitspanne auswählen... - -Donation Edition -Spendenversion - -Folder Comparison and Synchronization -Ordnervergleich und Synchronisation - -Configuration saved -Konfiguration gespeichert - -FreeFileSync batch -FreeFileSync Batch - -Do you want to save changes to %x? -Möchten Sie die Änderungen an %x speichern? - -Never save &changes -Änderungen nie &speichern - -Do&n't save -&Nicht speichern - -%x cannot be renamed. -%x kann nicht umbenannt werden. - -New name: -Neuer name: - -Rename Configuration -Konfiguration umbenennen - -Configuration name must not be empty. -Der Konfigurationsname darf nicht leer sein. - -&Rename... -&Umbenennen... - -Hide configuration -Konfiguration ausblenden - -Highlight... -Hervorheben... - -Clear filter -Filter löschen - -Show files that exist on left side only -Nur links existierende Dateien anzeigen - -Show files that exist on right side only -Nur rechts existierende Dateien anzeigen - -Show files that are newer on left -Auf beiden Seiten existierende Dateien anzeigen; linke Datei ist neuer - -Show files that are newer on right -Auf beiden Seiten existierende Dateien anzeigen; rechte Datei ist neuer - -Show files that are equal -Gleiche Dateien anzeigen - -Show files that are different -Ungleiche Dateien anzeigen - -Show conflicts -Konflikte zeigen - -Show files that will be created on the left side -Dateien zeigen, die links erstellt werden - -Show files that will be created on the right side -Dateien zeigen, die rechts erstellt werden - -Show files that will be deleted on the left side -Dateien zeigen, die links gelöscht werden - -Show files that will be deleted on the right side -Dateien zeigen, die rechts gelöscht werden - -Show files that will be updated on the left side -Dateien zeigen, die links aktualisiert werden - -Show files that will be updated on the right side -Dateien zeigen, die rechts aktualisiert werden - -Show files that won't be copied -Dateien zeigen, die nicht kopiert werden - -Show filtered or temporarily excluded files -Gefilterte oder temporär ausgeschlossene Dateien zeigen - -Filter -Filter - -All files are in sync -Alle Dateien sind synchron - - -1 directory -%x directories - - -1 Verzeichnis -%x Verzeichnisse - - - -1 file -%x files - - -1 Datei -%x Dateien - - - -Showing %y of 1 row -Showing %y of %x rows - - -Zeige %y von 1 Zeile -Zeige %y von %x Zeilen - - -Cannot find %x -%x wurde nicht gefunden. - -Move up -Nach oben - -Move down -Nach unten - -Comma-separated values -Kommagetrennte Werte - -File list exported -Dateiliste exportiert - -Searching for program updates... -Suche nach aktualisierten Programmversionen... - -Paused -Angehalten - -Stop requested... -Wird gestoppt... - -Initializing... -Initialisiere... - -Comparing content... -Vergleiche Dateiinhalt... - -&Continue -&Fortfahren - -Progress -Fortschritt - -Thank you, %x, for your donation and support! -Danke %x für die Spende und Unterstützung! - -Connections -Verbindungen - -Recommended range: -Empfohlener Bereich: - -Do you really want to disconnect from user account %x? -Soll die Verbindung zum Nutzerkonto %x wirklich getrennt werden? - -Password: -Passwort: - -Key passphrase: -Passphrase für Schlüssel: - -Please enter a file path. -Bitte geben Sie einen Dateipfad ein. - - -Copy the following item to another folder? -Copy the following %x items to another folder? - - -Soll das folgende Element in einen anderen Ordner kopiert werden? -Sollen die folgenden %x Elemente in einen anderen Ordner kopiert werden? - - -Please enter a target folder. -Bitte geben Sie einen Zielorder ein. - - -Do you really want to move the following item to the recycle bin? -Do you really want to move the following %x items to the recycle bin? - - -Soll das folgende Element wirklich in den Papierkorb verschoben werden? -Sollen die folgenden %x Elemente wirklich in den Papierkorb verschoben werden? - - -Move -Verschieben - - -Do you really want to delete the following item? -Do you really want to delete the following %x items? - - -Soll das folgende Element wirklich gelöscht werden? -Sollen die folgenden %x Elemente wirklich gelöscht werden? - - -Start to synchronize the selection? -Auswahl jetzt synchronisieren? - -Start synchronization now? -Synchronisation jetzt starten? - -Copy DACL, SACL, Owner, Group -DACL, SACL, Besitzer und Gruppe kopieren - -Integrate external applications into context menu. The following macros are available: -Integriert externe Anwendungen in das Kontextmenü. Die folgenden Makros stehen zur Verfügung: - -Full file or folder path -Kompletter Datei oder Ordnerpfad - -Parent folder path -Übergeordneter Ordnerpfad - -Temporary local copy for SFTP and MTP storage -Temporäre lokale Kopie für SFTP und MTP Speicher - -Parameters for opposite side -Parameter für gegenüberliegende Seite - -Show hidden dialogs again -Versteckte Fenster wieder zeigen - -All dialogs shown -Alle Fenster sind sichtbar - -Downloading update... -Lade Aktualisierung... - -Identify equal files by comparing modification time and size. -Erkenne gleiche Dateien anhand der Änderungszeit und Größe. - -Identify equal files by comparing the file content. -Erkenne gleiche Dateien durch Vergleich des Dateiinhaltes. - -Identify equal files by comparing their file size. -Erkenne gleiche Dateien anhand der Dateigröße. - -Identify and propagate changes on both sides. Deletions, moves and conflicts are detected automatically using a database. -Identifiziere und propagiere Änderungen auf beiden Seiten. Löschungen, Verschiebungen und Konflikte werden automatisch mit Hilfe einer Datenbank erkannt. - -Create a mirror backup of the left folder by adapting the right folder to match. -Eine Spiegelkopie des linken Ordners erstellen, indem der rechte Ordner angeglichen wird. - -Copy new and updated files to the right folder. -Neue und aktualisierte Dateien in den rechten Ordner kopieren. - -Configure your own synchronization rules. -Eigene Synchronisationsregeln definieren. - -Comparison -Vergleich - -Synchronization -Synchronisation - -This week -Diese Woche - -This month -Dieser Monat - -This year -Dieses Jahr - -Byte -Byte - -KB -KB - -MB -MB - -Retain deleted and overwritten files in the recycle bin -Gelöschte und überschriebene Dateien im Papierkorb aufbewahren - -Delete and overwrite files permanently -Dateien endgültig löschen und überschreiben - -Replace -Ersetzen - -Move files and replace if existing -Dateien verschieben und vorhandene ersetzen - -Time stamp -Zeitstempel - -Move files into a time-stamped subfolder -Dateien in einen Unterordner mit Zeitstempel verschieben - -File -Datei - -Append a time stamp to each file name -Einen Zeitstempel an jeden Dateinamen anhängen - -On completion: -Nach Abschluss: - -On errors: -Bei Fehlern: - -On success: -Bei Erfolg: - -Main config -Hauptkonfiguration - -empty -leer - -Leave as unresolved conflict -Als unbehandelten Konflikt belassen - -YYYY-MM-DD hhmmss -JJJJ-MM-TT hhmmss - -Minimum version count must be smaller than maximum count. -Die minimale Anzahl der Versionen muss kleiner als die maximale sein. - -&Restore -&Wiederherstellen - -Files -Dateien - -Percentage -Prozent - -Failed to retrieve update information. -Aktualisierungsinformationen konnten nicht abgerufen werden. - -Automatic updates: -Automatische Aktualisierung: - -Check for Program Updates -Suche nach neuer Programmversion - -Auto-update now or download manually from the FreeFileSync home page? -Jetzt automatisch aktualisieren oder manuell von der FreeFileSync Homepage herunterladen? - -&Auto-update -&Automatisch - -&Home page -&Homepage - -Download now? -Jetzt herunterladen? - -&Download -Zum &Download - -FreeFileSync is up to date. -FreeFileSync ist auf dem neuesten Stand. - -Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now? -Die aktuelle FreeFileSync Versionsnummer wurde online nicht gefunden. Wahrscheinlich ist eine neuere Version verfügbar. Jetzt manuell prüfen? - -&Check -&Prüfen - -Consistency check failed for %x. -Die Gültigkeitsprüfung für %x ist fehlgeschlagen. - -Installation was registered on a different operating system. -Die Installation wurde auf einem anderen Betriebssystem registriert. - -Failed to activate FreeFileSync Donation Edition. -Die Aktivierung der FreeFileSync Spendenversion ist fehlgeschlagen. - -Incorrect activation key. -Falscher Aktivierungsschlüssel. - -Unable to register to receive system messages. -Die Registrierung zum Empfang von Systemmeldungen ist fehlgeschlagen. - -The %x installation option is only available in the FreeFileSync Donation Edition. -Die %x Installationsoption ist nur in der FreeFileSync Spendenversion verfügbar. - -Cannot find system function %x. -Die Systemfunktion %x wurde nicht gefunden. - -Unable to register device notifications for %x. -Die Registrierung für Gerätemeldungen ist für %x fehlgeschlagen. - -The file is locked by another process: -Die Datei wird von einem anderen Prozess gesperrt: - -Failed to determine file permission support for folder %x. -Die Prüfung auf Unterstützung von Dateiberechtigungen für Ordner %x ist fehlgeschlagen. - -Cannot read security context of %x. -Der Sicherheitskontext von %x kann nicht gelesen werden. - -Cannot write security context of %x. -Der Sicherheitskontext von %x kann nicht geschrieben werden. - -Cannot read permissions of %x. -Die Berechtigungen von %x können nicht gelesen werden. - -Cannot copy permissions from %x to %y. -Die Berechtigungen können nicht von %x nach %y kopiert werden. - -%x is not a regular directory name. -%x ist kein regulärer Verzeichnisname. - -Cannot copy attributes from %x to %y. -Die Attribute können nicht von %x nach %y kopiert werden. - -%x TB -%x TB - -%x PB -%x PB - - -1 min -%x min - - -1 Min. -%x Min. - - - -1 hour -%x hours - - -1 Stunde -%x Stunden - - -Cannot set privilege %x. -Das Privileg %x kann nicht gesetzt werden. - -Unable to suspend system sleep mode. -Der Schlafmodus des Betriebssystems kann nicht ausgesetzt werden. - -Cannot change process I/O priorities. -Die Eingabe/Ausgabe Prioritäten für den Prozess können nicht geändert werden. - -Checking recycle bin failed for folder %x. -Die Prüfung des Papierkorbs für Ordner %x ist fehlgeschlagen. - -Unable to shut down the system. -Das System kann nicht heruntergefahren werden. - -Prepare installation -Installation vorbereiten - -Choose which components you want to install. -Wählen Sie die zu installierenden Komponenten. - -Select installation type: -Installationstyp wählen: - -Local -Lokal - -Portable -Portabel - -Save settings in %x -Einstellungen in %x sichern - -Register FreeFileSync file extensions -FreeFileSync Dateiendungen registrieren - -Create Explorer context menu entries -Einträge im Explorer Kontextmenü erstellen - -Save settings in installation directory -Einstellungen im Installationsverzeichnis sichern - -Do not write to Registry -Kein Eintrag in Windows Registrierung - -Just copy the files -Nur die Dateien kopieren - -Choose a directory for installation: -Wählen Sie ein Verzeichnis für die Installation: - -Create shortcuts: -Verknüpfungen erstellen: - -Desktop -Desktop - -Start Menu -Startmenü - -Send To -Senden an - -Registering FreeFileSync file extensions -Registriere FreeFileSync Dateiendungen - -Unregistering FreeFileSync file extensions -Deregistriere FreeFileSync Dateiendungen - -FreeFileSync Configuration -FreeFileSync Konfiguration - -FreeFileSync Batch File -FreeFileSync Batchdatei - -FreeFileSync Synchronization Database -FreeFileSync Synchronisationsdatenbank - -RealTimeSync Configuration -RealTimeSync Konfiguration - -Edit with FreeFileSync -Mit FreeFileSync editieren - -Instead of an ad, here's an animal. -Hier ein Tierbild statt Werbung. - -The FreeFileSync portable version cannot install into a subfolder of %x. -Die portable Version von FreeFileSync kann nicht in einen Unterordner von %x installiert werden. - -Please choose the local installation type or select a different folder for installation. -Bitte wählen Sie den lokalen Installationstyp oder einen anderen Ordner für die Installation. - -Get the Donation Edition with bonus features and help keep FreeFileSync ad-free. -Jetzt die Spendenversion mit Bonusfunktionen holen und mithelfen, FreeFileSync werbefrei zu halten. - diff --git a/FreeFileSync/Build/Resources/Languages/greek.lng b/FreeFileSync/Build/Resources/Languages/greek.lng deleted file mode 100755 index 3cb3c1a8..00000000 --- a/FreeFileSync/Build/Resources/Languages/greek.lng +++ /dev/null @@ -1,2136 +0,0 @@ -
- Eλληνικά - Γιώργος Δ. Γιαγλής - el_GR - flag_greece.png - 2 - n == 1 ? 0 : 1 -
- -Cannot read file %x. -Δεν μπορεί να γίνει ανάγνωση του αρχείου %x. - - -Unexpected size of data stream. -Expected: %x bytes -Actual: %y bytes - - -Μη αναμενόμενο μέγεθος της ροής δεδομένων. -Αναμενόμενο: %x bytes -Βρέθηκε: %y bytes - - -Cannot write file %x. -Δεν μπορεί να γίνει εγγραφή του αρχείου %x. - -Cannot write permissions of %x. -Δεν μπορεί να γίνει εγγραφή των δικαιωμάτων πρόσβασης του %x. - -Operation not supported between different devices. -Η λειτουργία δεν υποστηρίζεται μεταξύ διαφορετικών χώρων αποθήκευσης. - -Cannot delete file %x. -Δεν μπορεί να διαγραφεί το αρχείο %x. - -Cannot delete symbolic link %x. -Δεν μπορεί να διαγραφεί ο συμβολικός σύνδεσμος %x. - -Cannot delete directory %x. -Δεν μπορεί να διαγραφεί ο υποκατάλογος %x. - -Cannot move file %x to %y. -Δεν μπορεί το αρχείο %x να μεταφερθεί στο %y. - -Cannot copy symbolic link %x to %y. -Αδυναμία αντιγραφής του συμβολικού συνδέσμου %x στο %y. - -Error Code %x -Κωδικός Σφάλματος %x - -Cannot read directory %x. -Δεν μπορεί να γίνει ανάγνωση του καταλόγου %x. - -Cannot write modification time of %x. -Δεν μπορεί να γίνει εγγραφή της ώρας τροποποίησης του %x. - -Cannot read file attributes of %x. -Δεν μπορεί να γίνει ανάγνωση των χαρακτηριστικών του αρχείου %x. - -Cannot create directory %x. -Δεν μπορεί να δημιουργηθεί ο υποκατάλογος %x. - -Cannot determine final path for %x. -Δεν μπορεί να προσδιοριστεί η τελική διαδρομή για το %x. - -Operation not supported by device. -Η λειτουργία δεν υποστηρίζεται από το χώρο αποθήκευσης. - -Cannot resolve symbolic link %x. -Ο συμβολικός σύνδεσμος %x δεν μπορεί να επιλυθεί. - -Unable to move %x to the recycle bin. -Δεν ήταν δυνατή η μεταφορά του %x στον κάδο ανακύκλωσης. - -Authentication completed. -Ολοκληρώθηκε η επαλήθευση ταυτότητας. - -You may close this page now and continue with FreeFileSync. -Τώρα μπορείτε να κλείσετε αυτή τη σελίδα και να συνεχίσετε το FreeFileSync. - -Authentication failed. -Η επαλήθευση ταυτότητας απέτυχε. - -Unable to connect to %x. -Δεν μπορεί να πραγματοποιηθεί σύνδεση με το %x. - -Cannot find %x. -Το %x δεν μπορεί να βρεθεί. - -The name %x is used by more than one item in the folder. -Το όνομα %x χρησιμοποιείται για περισσότερα από ένα αρχεία στον φάκελο. - -Please authorize access to user account %x. -Παρακαλούμε εξουσιοδοτείστε την πρόσβαση στο λογαριασμό χρήστη %x. - -Cannot open file %x. -Δεν είναι δυνατό το άνοιγμα του αρχείου %x. - -The name %x is already used by another item. -Το όνομα %x χρησιμοποιείται ήδη από άλλο στοιχείο. - -Cannot determine free disk space for %x. -Δεν μπορεί να υπολογιστεί ο ελεύθερος χώρος του δίσκου %x. - -Unable to disconnect from %x. -Αδυναία αποσύνδεσης από το %x. - -Unable to access %x. -Δεν είναι δυνατή η πρόσβαση στο %x. - -Failed to get information about server %x. -Αποτυχία λήψης πληροφοριών από τον διακομιστή %x. - -Cannot monitor directory %x. -Δεν είναι δυνατή η παρακολύθηση του υποκαταλόγου %x. - -Cannot find device %x. -Ο χώρος αποθήκευσης %x δεν μπορεί να βρεθεί. - -Cannot open directory %x. -Δεν είναι δυνατό το άνοιγμα του υποκαταλόγου %x. - -Unsupported item type. -Μη υποστηριζόμενος τύπος στοιχείου. - -Incorrect command line: -Εσφαλμένη γραμμή εντολών: - -The server does not support authentication via %x. -Ο εξυπηρετητής δεν υποστηρίζει επαλήθευση ταυτότητας μέσω %x. - -Required: -Απαιτείται: - - -Operation timed out after 1 second. -Operation timed out after %x seconds. - - -Το χρονικό όριο της λειτουργίας έληξε μετά από 1 δευτερόλεπτο. -Το χρονικό όριο της λειτουργίας έληξε μετά από %x δευτερόλεπτα. - - - -Cannot wait on more than 1 connection at a time. -Cannot wait on more than %x connections at a time. - - -Δεν είναι δυνατή η αναμονή περισσότερων από 1 σύνδεσης τη φορά. -Δεν είναι δυνατή η αναμονή περισσότερων από %x συνδέσεων τη φορά. - - -Active connections: %x -Ενεργές συνδέσεις: %x - -Failed to open SFTP channel number %x. -Αποτυχία ανοίγματος του SFTP καναλιού με αριθμό %x. - -Both sides have changed since last synchronization. -Και οι δυο πλευρές έχουν αλλάξει από τον τελευταίο συγχρονισμό. - -Cannot determine sync-direction: -Δεν μπορεί να προσδιοριστεί η κατεύθυνση συγχρονισμού: - -No change since last synchronization. -Καμία αλλαγή από τον προηγούμενο συγχρονισμό. - -The database entry is not in sync considering current settings. -Με βάση τις τρέχουσες ρυθμίσεις η βάση δεδομένων δεν είναι συγχρονισμένη. - -Setting default synchronization directions: Old files will be overwritten with newer files. -Ρύθμιση προεπιλεγμένης κατεύθυνσης συγχρονισμού: Τα νεότερα αρχεία θα αντικαταστήσουν τα παλιότερα. - -Creating file %x -Δημιουργία του αρχείου %x - -Creating folder %x -Δημιουργία του φακέλου %x - -Creating symbolic link %x -Δημιουργία των συμβολικών συνδέσμων %x - -Moving file %x to the recycle bin -Μεταφορά του αρχείου %x στον κάδο ανακύκλωσης - -Moving folder %x to the recycle bin -Μεταφορά του φακέλου %x στον κάδο ανακύκλωσης - -Moving symbolic link %x to the recycle bin -Μεταφορά του συμβολικού συνδέσμου %x στον κάδο ανακύκλωσης - -Deleting file %x -Διαγραφή του αρχείου %x - -Deleting folder %x -Διαγραφή του φακέλου %x - -Deleting symbolic link %x -Διαγραφή της συμβολικής σύνδεσης %x - -Checking recycle bin availability for folder %x... -Έλεγχος της διαθεσιμότητας του κάδου ανακύκλωσης για το φάκελο %x... - -The recycle bin is not supported by the following folders. Deleted or overwritten files will not be able to be restored: -Ο Κάδος Ανακύκλωσης δεν υποστηρίζεται στους ακόλουθους φακέλους. Αρχεία που διαγράφησαν ή αντικαταστάθηκαν δεν θα μπορούν να επαναφερθούν: - -An exception occurred -Παρουσιάστηκε μια εξαίρεση - -A left and a right directory path are expected after %x. -Μετά το %x αναμένονται μια διαδρομή υποκαταλόγου αριστερά και μια δεξιά. - -Syntax error -Σφάλμα σύνταξης - -Cannot find file %x. -Το αρχείο %x δεν μπορεί να βρεθεί. - -Error -Σφάλμα - -File %x does not contain a valid configuration. -Το αρχείο %x δεν περιέχει έγκυρες παραμέτρους. - -The config file must not contain settings at directory pair level when directories are set via command line. -Το αρχείο διάταξης δεν πρέπει να περιλαμβάνει ρυθμίσεις στο επίπεδο του ζεύγους των υποκαταλόγων, όταν οι φάκελοι ορίζονται μέσω της γραμμής εργασιών. - -Directories cannot be set for more than one configuration file. -Δεν μπορούν να οριστούν φάκελοι για περισσότερα από ένα αρχεία παραμέτρων. - -Command line -Γραμμή εντολών - -Syntax: -Σύνταξη: - -config files: -αρχεία ρυθμίσεων: - -directory -υποκατάλογος - -global config file: -αρχείο γενικών ρυθμίσεων: - -Any number of FreeFileSync "ffs_gui" and/or "ffs_batch" configuration files. -Οποιοσδήποτε αριθμός από αρχεία παραμέτρων "ffs_gui" ή/και "ffs_batch" του FreeFileSync. - -Any number of alternative directory pairs for at most one config file. -Οποιοσδήποτε αριθμός από εναλλακτικά ζεύγη υποκαταλόγων για το πολύ ένα αρχείο ρυθμίσεων. - -Open the selected configuration for editing only, without executing it. -Άνοιγμα του επιλεγμένου αρχείου παραμέτρων μόνο για διόρθωση, χωρίς να εκτελεστεί. - -Path to an alternate GlobalSettings.xml file. -Διαδρομή σε ένα εναλλακτικό αρχείο GlobalSettings.xml. - -Installation files are corrupted. Please reinstall FreeFileSync. -Τα αρχεία εγκατάστασης είναι κατεστραμμένα. Παρακαλούμε επανεγκαταστείστε το FreeFileSync. - -Cannot find the following folders: -Οι ακόλουθοι φάκελοι δεν ήταν δυνατό να βρεθούν: - -The following folders do not yet exist: -Οι ακόλουθοι φάκελοι δεν υπάρχουν προς το παρόν: - -The folders are created automatically when needed. -Οι φάκελοι θα δημιουργηθούν αυτόματα όταν χρειαστούν. - -The following folder paths differ in case. Please use a single form in order to avoid duplicate accesses. -Οι ακόλουθες διαδρομές υποκαταλόγων διαφέρουν ως προς τα κεφαλαία/πεζά τους. Παρακαλούμε χρησιμοποιείστε την ίδια μορφή, ώστε να αποφευχθούν οι διπλές προσβάσεις. - -Scanning: -Ανίχνευση: - -Comparison finished: -Ολοκλήρωση σύγκρισης: - - -1 item found -%x items found - - -βρέθηκε 1 στοιχείο -βρέθηκαν %x στοιχεία - - -Time elapsed: -Πέρασε χρόνος: - -File %x has an invalid date. -Το αρχείο %x δεν έχει έγκυρη ημερομηνία. - -Date: -Ημερομηνία: - -Files have the same date but a different size. -Τα αρχεία έχουν την ίδια ημερομηνία αλλά διαφορετικό μέγεθος. - -Size: -Μέγεθος: - -Content comparison was skipped for excluded files. -Η σύγκριση των περιεχομένων έχει παραληφθεί για τα εξαιρεθέντα αρχεία. - -Items differ in attributes only -Τα στοιχεία διαφέρουν μόνο ως προς τα χαρακτηριστικά τους - -Resolving symbolic link %x -Επίλυση του συμβολικού συνδέσμου %x - -Comparing content of files %x -Σύγκριση του περιεχομένου των αρχείων %x - -Generating file list... -Δημιουργία καταλόγου αρχείων... - -Fail-safe file copy -Ασφαλής αντιγραφή αρχείων - -Enabled -Ενεργοποιημένο - -Disabled -Απενεργοποιημένο - -Copy locked files -Αντιγραφή κλειδωμένων αρχείων - -Copy file access permissions -Αντιγραφή των δικαιωμάτων πρόσβασης των αρχείων - -File time tolerance -Ανοχή στην ημερομηνία αρχείου - -Run with background priority -Εκτέλεση με προτεραιότητα παρασκηνίου - -Lock directories during sync -Κλείδωμα των υποκαταλόγων κατά τη διάρκεια του συγχρονισμού - -Verify copied files -Επαλήθευση των αντιγραμμένων αρχείων - -Using non-default global settings: -Χρήση μη-προεπιλεγμένων γενικών ρυθμίσεων: - -A folder input field is empty. -Ένα πεδίο εισαγωγής φακέλων είναι άδειο. - -The corresponding folder will be considered as empty. -Ο αντίστοιχος φάκελος θα θεωρηθεί κενός. - -Exclude: -Εξαίρεση: - -One base folder of a folder pair is contained in the other one. -Ο ένας βασικός φάκελος ενός ζεύγους φακέλων βρίσκεται μέσα στον άλλον. - -The folder should be excluded from synchronization via filter. -Ο φάκελος θα έπρεπε να εξαιρεθεί από το συγχρονισμό μέσω φίλτρου. - -Calculating sync directions... -Υπολογισμός των κατευθύνσεων συγχρονισμού... - -Out of memory. -Ανεπαρκής μνήμη. - -Show in Explorer -Εμφάνιση στην Εξερεύνηση - -Open with default application -Άνοιγμα με την προεπιλεγμένη εφαρμογή - -Browse directory -Αναζήτηση υποκαταλόγου - -Database file %x is incompatible. -Το αρχείο βάσης δεδομένων %x δεν είναι συμβατό. - -Initial synchronization: -Αρχικός συγχρονισμός: - -Database file %x does not yet exist. -Το αρχείο βάσης δεδομένων %x δεν έχει ακόμα δημιουργηθεί. - -Database file is corrupted: -Το αρχείο βάσης δεδομένων είναι κατεστραμμένο: - -Loading file %x... -Λήψη του αρχείου %x... - -The database files do not yet contain information about the last synchronization. -Τα αρχεία βάσης δεδομένων δεν περιέχουν ακόμα πληροφορίες για τον τελευταίο συγχρονισμό. - -Saving file %x... -Αποθήκευση του αρχείου %x... - -Searching for folder %x... -Αναζήτηση του φακέλου %x... - -Timeout while searching for folder %x. -Λήξη χρονικού ορίου αναζήτησης του φακέλου %x. - -Cannot get process information. -Δεν μπορούν να ληφθούν πληροφορίες για τις τρέχουσες διαδικασίες. - -Waiting while directory is locked: -Αναμονή μέχρι να κλειδωθεί ο υποκατάλογος: - -Lock owner: -Ιδιοκτήτης κλειδώματος: - -Detecting abandoned lock... -Ανίχνευση κλειδώματος που εγκαταλείφθηκε... - - -1 sec -%x sec - - -1 δ/λεπτο -%x δ/λεπτα - - -Item exists on left side only -Το στοιχείο υπάρχει μόνο στην αριστερή πλευρά - -Item exists on right side only -Το στοιχείο υπάρχει μόνο στη δεξιά πλευρά - -Left side is newer -Το στοιχείο στην αριστερή πλευρά είναι πιο πρόσφατο - -Right side is newer -Το στοιχείο στη δεξιά πλευρά είναι πιο πρόσφατο - -Items have different content -Τα στοιχεία έχουν διαφορετικό περιεχόμενο - -Both sides are equal -Οι δυο πλευρές είναι ίδιες - -Conflict/item cannot be categorized -Διένεξη/το στοιχείο δεν μπορεί να κατηγοριοποιηθεί - -Copy new item to left -Αντιγραφή του νέου στοιχείου στα αριστερά - -Copy new item to right -Αντιγραφή του νέου στοιχείου στα δεξιά - -Delete left item -Διαγραφή του στοιχείου στα αριστερά - -Delete right item -Διαγραφή του στοιχείου στα δεξιά - -Move file on left -Μεταφορά του αρχείου που βρίσκεται αριστερά - -Move file on right -Μεταφορά του αρχείου που βρίσκεται δεξιά - -Update left item -Ενημέρωση του στοιχείου που βρίσκεται αριστερά - -Update right item -Ενημέρωση του στοιχείου που βρίσκεται δεξιά - -Do nothing -Καμία ενέργεια - -Update attributes on left -Ενημέρωση των χαρακτηριστικών στα αριστερά - -Update attributes on right -Ενημέρωση των χαρακτηριστικών στα δεξιά - -Error parsing file %x, row %y, column %z. -Σφάλμα κατά την ανάλυση του αρχείου %x, γραμμή %y, στήλη %z. - -Services -Υπηρεσίες - -Show All -Εμφάνιση Όλων - -Hide Others -Απόκρυψη Άλλων - -Hide %x -Απόκρυψη %x - -Quit %x -Έξοδος από %x - -Cannot set directory locks for the following folders: -Δεν μπορούν να κλειδωθούν οι ακόλουθοι υποκατάλογοι: - -Errors: -Σφάλματα: - -Warnings: -Προειδοποιήσεις: - -Items processed: -Επεξεργάστηκαν στοιχεία: - -Items remaining: -Περισσεύουν στοιχεία: - -Total time: -Συνολική διάρκεια: - -Warning -Προειδοποίηση - -Stopped -Διακοπή - -Cleaning up log files: -Καθάρισμα αρχείων καταγραφής: - - -1 thread -%x threads - - -1 νήμα -%x νήματα - - -%x/sec -%x/δευτερόλεπτο - -%x items -%x στοιχεία - -Completed successfully -Ολοκληρώθηκε επιτυχώς - -Completed with warnings -Ολοκληρώθηκε με προειδοποιήσεις - -Completed with errors -Ολοκληρώθηκε με σφάλματα - -Cannot access the Volume Shadow Copy Service. -Δεν είναι δυνατή η πρόσβαση στην Υπηρεσία Σκιώδους Αντίγραφου Τόμου. - -Please run the 64-bit version of FreeFileSync to create shadow copies on this system. -Παρακαλούμε εκτελέστε την 64-bit έκδοση του FreeFileSync, για να δημιουργήσετε σκιώδη αντίγραφα σε αυτό το σύστημα. - -Volume name %x is not part of file path %y. -Το όνομα τόμου %x δεν είναι μέρος της διαδρομής %y. - -File time and size -Ημερομηνία και μέγεθος αρχείων - -File content -Περιεχόμενο αρχείων - -File size -Μέγεθος αρχείων - -Two way -Διπλής κατεύθυνσης - -Mirror -Κατοπτρισμός - -Update -Ενημέρωση - -Custom -Προσαρμογή - -Multiple... -Πολλαπλές ρυθμίσεις... - -Cannot write file attributes of %x. -Δεν μπορεί να γίνει εγγραφή των χαρακτηριστικών αρχείου του %x. - -%x and %y have different content. -Τα %x και %y έχουν διαφορετικό περιεχόμενο. - -Data verification error: -Σφάλμα επαλήθευσης δεδομένων: - -Moving file %x to %y -Μεταφορά του αρχείου %x στο %y - -Moving folder %x to %y -Μεταφορά του φακέλου %x στο %y - -Moving symbolic link %x to %y -Μεταφορά του συμβολικού σύνδεσμου %x στο %y - -Updating file %x -Ενημέρωση του αρχείου %x - -Updating symbolic link %x -Ενημέρωση του συμβολικού σύνδεσμου %x - -Verifying file %x -Επαλήθευση του αρχείου %x - -Updating attributes of %x -Ενημέρωση των χαρακτηριστικών αρχείου του %x - -Source item %x not found -Το στοιχείο προέλευσης %x δεν βρέθηκε - -Parent folder %x is not existing. -Ο γονικός φάκελος %x δεν υπάρχει. - -Cannot copy file %x to %y. -Δεν μπορεί να αντιγραφεί το αρχείο %x στο %y. - -Creating a Volume Shadow Copy for %x... -Δημιουργία Σκιώδους Αντίγραφου Τόμου για το %x... - -Cannot find folder %x. -Ο φάκελος %x δεν μπορεί να βρεθεί. - -Target folder %x is already existing, but was not available during folder comparison. -Ο φάκελος-στόχος %x υπάρχει ήδη, αλλά δεν ήταν διαθέσιμος κατά τη σύγκριση φακέλων. - -Target folder input field must not be empty. -Το πεδίο εισαγωγής του φακέλου-στόχου πρέπει να μην είναι κενό. - -Source folder %x not found. -Ο φάκελος %x δε βρέθηκε. - -Please enter a target folder for versioning. -Παρακαλούμε εισάγετε ένα φάκελο για αποθήκευση παλιών εκδόσεων. - -The following items have unresolved conflicts and will not be synchronized: -Τα ακόλουθα στοιχεία έχουν ανεπίλυτες διενέξεις και δε θα συγχρονιστούν: - -Folder pair: -Ζεύγος φακέλων: - -The following folders are significantly different. Please check that the correct folders are selected for synchronization. -Οι ακόλουθοι φάκελοι είναι σημαντικά διαφορετικοί. Παρακαλούμε ελέγξτε εάν έχουν επιλεχθεί για συγχρονισμό οι σωστοί φάκελοι. - -Not enough free disk space available in: -Δεν υπάρχει αρκετός διαθέσιμος χώρος στο δίσκο: - -Available: -Διαθέσιμος: - -Some files will be synchronized as part of multiple base folders. -Μερικά αρχεία θα συγχρονιστούν ως μέρη πολλαπλών βασικών φακέλων. - -To avoid conflicts, set up exclude filters so that each updated file is included by only one base folder. -Για να αποφευχθούν οι διενέξεις, χρειάζεται να δημιουργηθούν φίλτρα, έτσι ώστε κάθε αρχείο να συγχρονίζεται μόνο από έναν βασικό φάκελο. - -Versioning folder: -Διατήρηση παλιών εκδόσεων του φακέλου: - -Base folder: -Βασικός φάκελος: - -The versioning folder is contained in a base folder. -Ο φάκελος διατήρησης παλιών εκδόσεων βρίσκεται μέσα σε κάποιον βασικό φάκελο. - -Synchronizing folder pair: -Συγχρονίζεται το ζευγάρι φακέλων: - -Generating database... -Δημιουργία βάσης δεδομένων... - -Searching for old file versions: -Αναζήτηση παλιών εκδόσεων των αρχείων: - -Removing old file versions: -Διαγραφή παλιών εκδόσεων των αρχείων: - -Unable to create time stamp for versioning: -Δεν ήταν δυνατή η δημιουργία χρονικής σήμανσης για τη διατήρηση παλιών εκδόσεων: - -Drag && drop -Μεταφορά && Απόθεση - -Select a folder -Επιλογή φακέλου - -&New -&Δημιουργία - -&Open... -Ά&νοιγμα... - -Save &as... -Αποθήκευση &ως... - -E&xit -Έ&ξοδος - -&File -&Αρχείο - -&View help -&Προβολή βοήθειας - -&About -&Σχετικά - -&Help -&Βοήθεια - -Usage: -Χρήση: - -Select folders to watch. -Επιλέξτε τους φακέλους που θα παρακολουθούνται. - -Enter a command line. -Εισάγετε μια γραμμή εντολών. - -Press 'Start'. -Πατήστε το 'Έναρξη'. - -To get started just import a "ffs_batch" file. -Για να ξεκινήσετε μπορείτε απλά να εισάγετε ένα αρχείο "ffs_batch". - -Folders to watch: -Φάκελοι για παρακολούθηση: - -Add folder -Προσθήκη φακέλου - -Remove folder -Διαγραφή του φακέλου - -Browse -Αναζήτηση - -Idle time (in seconds): -Χρόνος αδράνειας (σε δευτερόλεπτα): - -Idle time between last detected change and execution of command -Χρόνος αδράνειας μεταξύ τελευταίας αλλαγής που ανιχνεύθηκε και εκτέλεσης της εντολής - -Command line: -Γραμμή εντολών: - -&Hide console window -&Απόκρυψη της κονσόλας - - -The command is triggered if: -- files or subfolders change -- new folders arrive (e.g. USB stick insert) - - -Αυτή η εντολή πραγματοποιείται εάν: --αρχεία ή υποφάκελοι αλλάξουν --παρουσιαστούν νέοι φάκελοι (π.χ. εισαχθεί ένα φλασάκι USB) - - -Start -Έναρξη - -About -Σχετικά με το... - -Build: %x -Δημιουργήθηκε: %x - -All files -Όλα τα αρχεία - -Automated Synchronization -Αυτοματοποιημένος Συγχρονισμός - -The %x protocol does not support directory monitoring: -Το πρωτόκολο %x δεν υποστηρίζει παρακολούθηση καταλόγων: - -Directory monitoring active -Η παρακολούθηση των υποκαταλόγων είναι ενεργή - -Waiting until directory is available: -Αναμονή μέχρι ο φάκελος να γίνει διαθέσιμος: - -&Configure -&Ρυθμίσεις - -&Show error message -&Εμφάνιση μηνύματος σφαλμάτων - -&Quit -Έ&ξοδος - -&Retry -&Επανάληψη - - -1 byte -%x bytes - - -1 byte -%x bytes - - -%x MB -%x MB - -%x KB -%x KB - -%x GB -%x GB - -Loading... -Φόρτωση... - -Scanning... -Ανίχνευση... - -configuration file -αρχείο παραμέτρων - -System: Sleep -Σύστημα: Αναστολή λειτουργίας - -System: Shut down -Σύστημα: Τερματισμός λειτουργίας - -Nothing to synchronize -Δεν υπάρχει τίποτα προς συγχρονισμό - -Executing command: -Εκτέλεση εντολής: - -You can switch to FreeFileSync's main window to resolve this issue. -Μπορείτε να επιστρέψετε στο κύριο παράθυρο του FreeFileSync για να επιλύσετε αυτό το θέμα. - -&Don't show this warning again -&Να μην εμφανιστεί ξανά αυτή η προειδοποίηση - -&Ignore -&Παράβλεψη - -&Switch -&Εναλλαγή - -Switching to FreeFileSync's main window -Επιστροφή στο κύριο παράθυρο του FreeFileSync - -Automatic retry -Αυτόματη επανάληψη - -Ignore &all -Παράβλεψη ό&λων - -Retrying operation... -Επανάληψη της προσπάθειας... - -Serious Error -Σοβαρό Σφάλμα - -Last session -Τελευταία χρήση - -Today -Σήμερα - - -1 day -%x days - - -1 μέρα -%x μέρες - - -Name -Όνομα - -Last sync -Τελ. συγχρ. - -Log -Καταγραφή - -Folder -Φάκελος - -Symlink -Συμβολικός σύνδεσμος - -Full path -Πλήρης διαδρομή - -Relative path -Σχετική διαδρομή - -Item name -Όνομα στοιχείου - -Size -Μέγεθος - -Date -Ημερομηνία - -Extension -Επέκταση - -Category -Κατηγορία - -Action -Ενέργεια - -Local comparison settings -Τοπικές ρυθμίσεις σύγκρισης - -Local synchronization settings -Τοπικές ρυθμίσεις συγχρονισμού - -Local filter -Τοπικό φίλτρο - -Active -Ενεργό - -None -Καθόλου - -Remove local settings -Αφαίρεση τοπικών ρυθμίσεων - -Clear local filter -Καθαρισμός τοπικού φίλτρου - -Copy -Αντιγραφή - -Paste -Επικόλληση - -The selected folder %x cannot be used with FreeFileSync. -Ο επιλεγμένος φάκελος %x δεν μπορεί να χρησιμοποιηθεί από το FreeFileSync. - -Please select a folder on a local file system, network or an MTP device. -Παρακαλούμε επιλέξτε ένα φάκελο σε ένα τοπικό σύστημα αρχείων, σε ένα δίκτυο ή σε μια συσκευή MTP. - -Defined by context of use -Εξαρτάται από τον τρόπο χρήσης - -Requires FreeFileSync Donation Edition -Απαιτεί την Έκδοση Δωρητή του FreeFileSync - -&Save -&Αποθήκευση - -Save as &batch job... -Αποθήκευση ως δέσ&μη ενεργειών... - -Show &log -Εμφάνιση αρχείου &καταγραφής - -Start &comparison -Έ&ναρξη σύγκρισης - -C&omparison settings -Ρυθμίσεις &σύγκρισης - -&Filter settings -Ρυθμίσεις &φίλτρων - -S&ynchronization settings -Ρυθμίσεις σ&υγχρονισμού - -Start &synchronization -Έναρ&ξη συγχρονισμού - -&Actions -Ε&νέργειες - -&Preferences -&Προτιμήσεις - -&Language -&Γλώσσα - -&Find... -Εύ&ρεση... - -&Export file list... -Ε&ξαγωγή καταλόγου αρχείων... - -&Reset layout -&Αρχικοποίηση εμφάνισης - -&Tools -&Εργαλεία - -&Check for updates now -Έλεγχος για ενημερώσεις &τώρα - -Check &automatically once a week -&Aυτόματος έλεγχος μια φορά την εβδομάδα - -Cancel -Άκυρο - -Compare -Σύγκριση - -Synchronize -Συγχρονισμός - -Add folder pair -Προσθήκη ζεύγους φακέλων - -Remove folder pair -Διαγραφή του ζεύγους φακέλων - -Access online storage -Πρόσβαση σε online χώρο αποθήκευσης - -Close search bar -Κλείσιμο γραμμής αναζήτησης - -Find: -Εύρεση: - -Match case -Ταίριασμα κεφαλαίων/πεζών - -Processed: -Ολοκληρώθηκαν: - -Remaining: -Απομένουν: - -New -Δημιουργία - -Open... -Άνοιγμα... - -Save -Αποθήκευση - -Save as... -Αποθήκευση ως... - -View type: -Τύπος εμφάνισης: - -Select view: -Επιλογή εμφάνισης: - -Save as default -Αποθήκευση ως προεπιλογής - -Statistics: -Στατιστικά: - -Number of files and folders that will be deleted -Αριθμός αρχείων και φακέλων που θα διαγραφούν - -Number of files that will be updated -Αριθμός αρχείων που θα ενημερωθούν - -Number of files and folders that will be created -Αριθμός αρχείων και φακέλων που θα δημιουργηθούν - -Total bytes to copy -Συνολικός αριθμός bytes προς αντιγραφή - -Arrange folder pair -Οργάνωση του ζεύγους φακέλων: - -Main settings: -Βασικές ρυθμίσεις: - -Use local settings: -Χρήση τοπικών ρυθμίσεων: - -Select a variant: -Επιλογή μεθόδου: - -Include &symbolic links: -Συμπερίληψη των &συμβολικών συνδέσμων: - -&Follow -Α&κολούθηση - -&Direct -Άμε&ση αξιολόγηση - -More information -Περισσότερες πληροφορίες - -&Ignore time shift [hh:mm] -&Αγνόηση χρονικής μετατόπισης [ωω:λλ] - -List of file time offsets to ignore -Λίστα των χρονικών μετατοπίσεων που θα αγνοηθούν - -Example: -Παράδειγμα: - -Handle daylight saving time -Διαχείριση θερινής ώρας - -Ignore errors -Αγνόηση σφαλμάτων - -Retry count: -Αριθμός προσπαθειών: - -Delay (in seconds): -Καθυστέρηση (σε δευτερόλεπτα): - -Performance improvements: -Βελτιώσεις της απόδοσης: - -Parallel file operations: -Παράλληλες λειτουργίες αρχείων: - -How to get best performance? -Πώς να έχετε την καλύτερη απόδοση - -Local settings: -Τοπικές ρυθμίσεις: - -Include: -Συμπερίληψη: - -Show examples -Εμφάνιση παραδειγμάτων - -Select filter rules to exclude certain files from synchronization. Enter file paths relative to their corresponding folder pair. -Επιλογή κανόνων φιλτραρίσματος, ώστε να εξαιρεθούν ορισμένα αρχεία από το συγχρονισμό. Εισάγετε τις διαδρομές των αρχείων σχετικά με το αντίστοιχο ζεύγος φακέλων. - -File size: -Μέγεθος αρχείου: - -Minimum: -Ελάχιστο: - -Maximum: -Μέγιστο: - -Time span: -Χρονικό εύρος: - -C&lear -&Καθαρισμός - -Detect moved files -Ανίχνευση των αρχείων που μεταφέρθηκαν - - -- Not supported by all file systems -- Requires and creates database files -- Detection not available for first sync - - -- Δεν υποστηρίζεται από όλα τα συστήματα αρχείων -- Απαιτεί και δημιουργεί αρχεία βάσης δεδομένων -- Η ανίχνευση δεν είναι διαθέσιμη κατά τον πρώτο συγχρονισμό - - -Delete files: -Διαγραφή αρχείων: - -&Recycle bin -&Κάδος ανακύκλωσης - -&Permanent -&Μόνιμη - -&Versioning -&Διατήρηση παλιών εκδόσεων - -Move files to a user-defined folder -Μεταφορά αρχείων σε έναν υποκατάλογο που ορίζεται από το χρήστη - -Naming convention: -Κανόνας ονοματοθεσίας: - -Limit file versions: -Περιορισμός αριθμού παλιών εκδόσεων: - -Last x days: -Τις τελευταίες x μέρες: - -&Override default log path: -&Παράκαμψη προεπιλεγμένης διαδρομής για το αρχείο καταγραφής: - -Run a command: -Εκτέλεση της εντολής: - -OK -OK - -Connection type: -Τύπος σύνδεσης: - -Connected user accounts: -Συνδεδεμένοι λογαριασμοί χρήστη: - -&Add connection -&Προσθήκη σύνδεσης - -&Disconnect -&Αποσύνδεση - -Selected user account: -Επιλεγμένος λογαριασμός χρήστη: - -Server name or IP address: -Όνομα του διακομιστή ή διεύθυνση IP: - -Port: -Θύρα: - -Encryption: -Κρυπτογράφηση: - -&Disabled -&Απενεργοποίηση - -&Explicit SSL/TLS -&Ρητά SSL/TLS - -Authentication: -Επαλήθευση ταυτότητας: - -&Password -&Κωδικός πρόσβασης - -&Key file -&Αρχείο κλειδιού - -&SSH agent -Παράγοντας &SSH - -User name: -Όνομα χρήστη: - -Private key file: -Ιδιωτικό αρχείο κλειδιού: - -&Show password -&Εμφάνιση συνθηματικού - -Directory on server: -Υποκατάλογος στον διακομιστή: - -Access timeout (in seconds): -Χρονικό όριο σύνδεσης (σε δευτερόλεπτα): - -SFTP channels per connection: -Αριθμός καναλιών SFTP ανά σύνδεση: - -Detect server limit -Ανίχνευση ορίου του εξυπηρετητή - -Select Folder -Επιλογή Φακέλου - -Variant: -Μέθοδος: - -&Don't show this dialog again -&Να μην εμφανιστεί ξανά αυτό το μήνυμα - -Bytes: -Bytes: - -Items: -Στοιχεία: - -Synchronizing... -Γίνεται συγχρονισμός... - -Minimize to notification area -Ελαχιστοποίηση στην περιοχή ειδοποιήσεων - -Bytes -Bytes - -Items -Στοιχεία - -When finished: -Μετά την ολοκλήρωση: - -Auto-close -Αυτόματο κλείσιμο - -Close -Κλείσιμο - -&Pause -&Παύση - -Stop -Διακοπή - -Create a batch file for unattended synchronization. To start, double-click this file or schedule in a task planner: %x -Δημιουργία ενός αρχείου δέσμης για αυτόματο συγχρονισμό. Για να ξεκινήσετε, κάντε διπλό κλικ σε αυτό το αρχείο ή ενσωματώστε το σε ένα χρονοδιάγραμμα εργασιών: %x - -Progress dialog: -Εμφάνιση προόδου: - -Run minimized -Εκκίνηση σε ελαχιστοποιημένο παράθυρο - -Show pop-up on errors or warnings -Εμφάνιση αναδυόμενου παράθυρου σε σφάλματα ή προειδοποιήσεις - -&Cancel -Α&κύρωση - -Stop synchronization at first error -Διακοπή του συγχρονισμού με το πρώτο σφάλμα - -How can I schedule a batch job? -Πώς μπορώ να προγραμματίσω μια εργασία με δέσμη ενεργειών; - -&Keep relative paths -&Διατήρηση των σχετικών διαδρομών - -&Overwrite existing files -&Αντικατάσταση των υπαρχόντων αρχείων - -The following settings are used for all synchronization jobs. -Οι ακόλουθες ρυθμίσεις χρησιμοποιούνται για όλες τις εργασίες συγχρονισμού. - - -Copy to a temporary file (*.ffs_tmp) before overwriting target. -This guarantees a consistent state even in case of a serious error. - - -Αντιγραφή σε ένα προσωρινό αρχείο (*.ffs_tmp) πριν την αντικατάσταση του προορισμού. -Αυτό εγγυάται μια συνεπή κατάσταση ακόμα και στην περίπτωση σοβαρού σφάλματος. - - -recommended -συνιστώμενη - -Copy shared or locked files using the Volume Shadow Copy Service. -Αντιγραφή των κοινών ή κλειδωμένων αρχείων με τη χρήση της Υπηρεσίας Σκιωδών Αντιγράφων Τόμου. - -requires administrator rights -απαιτεί δικαιώματα διαχειριστή - -Transfer file and folder permissions. -Μεταφορά των δικαιωμάτων πρόσβασης αρχείων και φακέλων. - -Show all permanently hidden dialogs and warning messages again -Επανεμφάνιση όλων των μόνιμα κρυμμένων ειδοποιήσεων και προειδοποιητικών μηνυμάτων - -Default log path: -Προεπιλεγμένη διαδρομή για το αρχείο καταγραφής: - -&Delete logs after x days: -&Διαγραφή των αρχείων καταγραφής μετά από x ημέρες: - -Notification sounds: -Ήχοι ειδοποίησης: - -Synchronization finished: -Ολοκλήρωση συγχρονισμού: - -Customize context menu: -Προσαρμογή μενού περιβάλλοντος: - -Description -Περιγραφή - -&Default -&Προεπιλογή - -Feedback and suggestions are welcome: -Σχόλια και προτάσεις είναι ευπρόσδεκτα: - -Home page -Αρχική σελίδα - -FreeFileSync Forum -FreeFileSync Forum - -Email -Email - -If you like FreeFileSync: -Αν σας αρέσει το FreeFileSync: - -Support with a donation -Υποστηρίξτε με μια δωρεά - -The auto updater was disabled by the administrator. -Η αυτόματη ενημέρωση απενεργοποιήθηκε από το διαχειριστή. - -Donation details -Λεπτομέρειες δωρεάς - -Source code written in C++ using: -Ο πηγαίος κώδικας γράφτηκε σε C++ χρησιμοποιώντας τα: - -Published under the GNU General Public License: -Δημοσιευμένο υπό την Γενική Άδεια Δημόσιας Χρήσης GNU: - -Many thanks for localization: -Πολλές ευχαριστίες για τις μεταφράσεις: - -Activate the FreeFileSync Donation Edition by one of the following methods: -Ενεργοποίηση της Έκδοσης Δωρητή του FreeFileSync μέσω μιας από τις παρακάτω μεθόδους: - -Activate via internet now: -Ενεργοποίηση μέσω internet τώρα: - -Activate online -Απευθείας ενεργοποίηση - -Retrieve an offline activation key from the following URL: -Ανάκτηση ενός κλειδιού ενεργοποίησης χωρίς σύνδεση από το ακόλουθο URL: - -&Copy to clipboard -&Αντιγραφή στο πρόχειρο - -Enter activation key: -Εισαγωγή κλειδιού ενεργοποίησης: - -Activate offline -Ενεργοποίηση χωρίς σύνδεση - -Highlight configurations that have not been run for more than the following number of days: -Επισήμανση παραμέτρων συγχρονισμού που δεν έχουν εκτελεστεί για μεγαλύτερο από τον ακόλουθο αριθμό ημερών: - -FreeFileSync requires access rights to avoid "Operation not permitted" errors when synchronizing your data (e.g. Mail, Messages, Calendars). -Το FreeFileSync χρειάζεται δικαιώματα πρόσβασης για να αποφύγει λάθη του τύπου "Η λειτουργία δεν επιτρέπεται" όταν συγχρονίζει τα δεδομένα σας (π.χ. στο Mail, στα Μηνύματα, στα Ημερολόγια). - -Locate the FreeFileSync app -Εντοπίστε την εφαρμογή FreeFileSync - -Open Security && Privacy -Ανοίξτε την Ασφάλεια και απόρρητο - -Click the lock to allow changes. -Κάντε κλικ στην κλειδαριά για να επιτρέπονται οι αλλαγές. - -Drag FreeFileSync into the panel. -Σύρετε το FreeFileSync μέσα στο παράθυρο. - -Synchronization Settings -Ρυθμίσεις συγχρονισμού - -Access Online Storage -Πρόσβαση στο χώρο αποθήκευσης online - -Save as a Batch Job -Αποθήκευση ως Δέσμη Ενεργειών - -Delete Items -Διαγραφή Στοιχείων - -Copy Items -Αντιγραφή Στοιχείων - -Options -Επιλογές - -Select Time Span -Επιλογή Χρονικού Εύρους - -Highlight Configurations -Επισήμανση Παραμέτρων - -Grant Full Disk Access -Παραχώρηση πλήρους πρόσβασης στο δίσκο - -Info -Πληροφορίες - -No log entries -Καμία καταγραφή - -Select all -Επιλογή όλων - -&Options -&Επιλογές - -Main Bar -Κύρια Γραμμή - -Folder Pairs -Ζεύγη Φακέλων - -Find -Εύρεση - -View Settings -Προβολή Ρυθμίσεων - -Configuration -Παράμετροι - -Overview -Σύνοψη - -Swap sides -Ανταλλαγή πλευρών - -Show "%x" -Εμφάνιση της γραμμής "%x" - -&Show details -&Προβολή λεπτομερειών - -FreeFileSync %x is available! -Το FreeFileSync %x είναι διαθέσιμο! - -Local path not available for %x. -Η τοπική διαδρομή δεν είναι διαθέσιμη για το %x. - -Confirm -Επιβεβαίωση - - -Do you really want to execute the command %y for one item? -Do you really want to execute the command %y for %x items? - - -Είστε σίγουροι ότι θέλετε να εκτελέσετε την εντολή %y σε ένα στοιχείο; -Είστε σίγουροι ότι θέλετε να εκτελέσετε την εντολή %y σε %x στοιχεία; - - -&Execute -&Εκτέλεση - -Set direction: -Επιλογή κατεύθυνσης: - -multiple selection -πολλαπλή επιλογή - -&Include via filter: -&Συμπερίληψη μέσω φίλτρου: - -&Exclude via filter: -&Εξαίρεση μέσω φίλτρου: - -Include temporarily -Προσωρινή συμπερίληψη - -Exclude temporarily -Προσωρινή εξαίρεση - -&Synchronize selection -&Συγχρονισμός επιλογής - -&Copy to... -&Αντιγραφή σε... - -&Delete -&Διαγραφή - -Show icons: -Εμφάνιση εικονιδίων: - -Small -Μικρό - -Medium -Μεσαίο - -Large -Μεγάλο - -Select time span... -Επιλέξτε το χρονικό εύρος... - -Donation Edition -Έκδοση Δωρητή - -Folder Comparison and Synchronization -Σύγκριση Φακέλων και Συγχρονισμός - -Configuration saved -Οι παράμετροι αποθηκεύτηκαν - -FreeFileSync batch -Δέσμη ενεργειών του FreeFileSync - -Do you want to save changes to %x? -Θέλετε να αποθηκεύσετε τις αλλαγές στο %x; - -Never save &changes -Να μην αποθηκεύονται &ποτέ οι αλλαγές - -Do&n't save -Να &μην αποθηκευθούν - -%x cannot be renamed. -Το %x δεν μπορεί να μετονομαστεί. - -New name: -Νέο όνομα: - -Rename Configuration -Μετονομασία αρχείου παραμέτρων - -Configuration name must not be empty. -Το όνομα του αρχείου παραμέτρων δεν μπορεί να είναι κενό. - -&Rename... -&Μετονομασία... - -Hide configuration -Απόκρυψη παραμέτρων συγχρονισμού - -Highlight... -Επισήμανση... - -Clear filter -Καθαρισμός φίλτρου - -Show files that exist on left side only -Εμφάνιση των αρχείων που υπάρχουν μόνο στα αριστερά - -Show files that exist on right side only -Εμφάνιση των αρχείων που υπάρχουν μόνο στα δεξιά - -Show files that are newer on left -Εμφάνιση των αρχείων που είναι πιο πρόσφατα στα αριστερά - -Show files that are newer on right -Εμφάνιση των αρχείων που είναι πιο πρόσφατα στα δεξιά - -Show files that are equal -Εμφάνιση των αρχείων που είναι ταυτόσημα - -Show files that are different -Εμφάνιση των αρχείων που είναι διαφορετικά - -Show conflicts -Εμφάνιση διενέξεων - -Show files that will be created on the left side -Εμφάνιση των αρχείων που θα δημιουργηθούν στα αριστερά - -Show files that will be created on the right side -Εμφάνιση των αρχείων που θα δημιουργηθούν στα δεξιά - -Show files that will be deleted on the left side -Εμφάνιση των αρχείων που θα διαγραφούν στα αριστερά - -Show files that will be deleted on the right side -Εμφάνιση των αρχείων που θα διαγραφούν στα δεξιά - -Show files that will be updated on the left side -Εμφάνιση των αρχείων που θα ενημερωθούν στα αριστερά - -Show files that will be updated on the right side -Εμφάνιση των αρχείων που θα ενημερωθούν στα δεξιά - -Show files that won't be copied -Εμφάνιση των αρχείων που δε θα αντιγραφούν - -Show filtered or temporarily excluded files -Εμφάνιση φιλτραρισμένων ή προσωρινά εξαιρεθέντων αρχείων - -Filter -Φίλτρο - -All files are in sync -Όλα τα αρχεία είναι συγχρονισμένα - - -1 directory -%x directories - - -1 φάκελος -%x φάκελοι - - - -1 file -%x files - - -1 αρχείο -%x αρχεία - - - -Showing %y of 1 row -Showing %y of %x rows - - -Εμφανίζεται %y από 1 γραμμή -Εμφανίζονται %y από %x γραμμές - - -Cannot find %x -Δεν μπορεί να βρεθεί το %x - -Move up -Μετακίνηση προς τα πάνω - -Move down -Μετακίνηση προς τα κάτω - -Comma-separated values -Αρχείο διαχωρισμένο με κόμματα - -File list exported -Ο κατάλογος των αρχείων έχει εξαχθεί - -Searching for program updates... -Αναζήτηση καινούριας έκδοσης... - -Paused -Σε παύση - -Stop requested... -Αίτημα για διακοπή... - -Initializing... -Αρχικοποίηση... - -Comparing content... -Σύγκριση του περιεχομένου... - -&Continue -&Συνέχεια - -Progress -Πρόοδος - -Thank you, %x, for your donation and support! -Σας ευχαριστούμε, %x, για τη δωρεά και την υποστήριξή σας! - -Connections -Συνδέσεις - -Recommended range: -Προτεινόμενο εύρος: - -Do you really want to disconnect from user account %x? -Θέλετε σίγουρα να αποσυνδεθείτε από το λογαριασμό χρήστη %x; - -Password: -Συνθηματικό: - -Key passphrase: -Φάση πρόσβασης κλειδιού: - -Please enter a file path. -Παρακαλούμε εισάγετε μια διαδρομή αρχείου. - - -Copy the following item to another folder? -Copy the following %x items to another folder? - - -Αντιγραφή του ακόλουθου στοιχείου σε άλλο φάκελο; -Αντιγραφή του ακόλουθων %x στοιχείων σε άλλο φάκελο; - - -Please enter a target folder. -Παρακαλούμε επιλέξτε έναν φάκελο-στόχο. - - -Do you really want to move the following item to the recycle bin? -Do you really want to move the following %x items to the recycle bin? - - -Είστε σίγουροι ότι θέλετε να μετακινήσετε το ακόλουθο στοιχείο στον κάδο ανακύκλωσης; -Είστε σίγουροι ότι θέλετε να μετακινήσετε τα ακόλουθα %x στοιχεία στον κάδο ανακύκλωσης; - - -Move -Μεταφορά - - -Do you really want to delete the following item? -Do you really want to delete the following %x items? - - -Είστε σίγουροι ότι θέλετε να διαγραφεί το ακόλουθο στοιχείο; -Είστε σίγουροι ότι θέλετε να διαγραφούν τα ακόλουθα %x στοιχεία; - - -Start to synchronize the selection? -Έναρξη συγχρονισμού της επιλογής; - -Start synchronization now? -Να ξεκινήσει ο συγχρονισμός τώρα; - -Copy DACL, SACL, Owner, Group -Αντιγραφή των DACL, SACL, Κατόχου, Ομάδας - -Integrate external applications into context menu. The following macros are available: -Ένταξη εξωτερικών εφαρμογών στο μενού περιβάλλοντος. Οι ακόλουθες μακροεντολές είναι διαθέσιμες: - -Full file or folder path -Πλήρης διαδρομή αρχείου ή φακέλου - -Parent folder path -Διαδρομή γονικού φακέλου - -Temporary local copy for SFTP and MTP storage -Προσωρινό τοπικό αντίγραφο για αποθήκευση σε SFTP και MTP - -Parameters for opposite side -Παράμετροι για την απέναντι πλευρά - -Show hidden dialogs again -Επανεμφάνιση των κρυμμένων ειδοποιήσεων - -All dialogs shown -Φαίνονται όλες οι ειδοποιήσεις - -Downloading update... -Λήψη ενημέρωσης... - -Identify equal files by comparing modification time and size. -Αναγνώριση των ταυτόσημων αρχείων με σύγκριση του χρόνου τροποποίησης και του μεγέθους. - -Identify equal files by comparing the file content. -Αναγνώριση των ταυτόσημων αρχείων με σύγκριση του περιεχομένου τους. - -Identify equal files by comparing their file size. -Αναγνώριση των ταυτόσημων αρχείων με σύγκριση του μεγέθους τους. - -Identify and propagate changes on both sides. Deletions, moves and conflicts are detected automatically using a database. -Αναγνώριση και εφαρμογή αλλαγών και στις δυο πλευρές. Οι διαγραφές, οι μεταφορές και οι διενέξεις αναγνωρίζονται αυτόματα με τη βοήθεια μιας βάσης δεδομένων. - -Create a mirror backup of the left folder by adapting the right folder to match. -Τροποποίηση του φακέλου δεξιά, ώστε να γίνει ακριβές αντίγραφο του φακέλου αριστερά. - -Copy new and updated files to the right folder. -Αντιγραφή των νέων και των τροποποιημένων αρχείων στον υποκατάλογο δεξιά. - -Configure your own synchronization rules. -Ορίστε τους δικούς σας κανόνες συγχρονισμού. - -Comparison -Σύγκριση - -Synchronization -Συγχρονισμός - -This week -Αυτήν την εβδομάδα - -This month -Αυτόν το μήνα - -This year -Αυτό το έτος - -Byte -Byte - -KB -KB - -MB -MB - -Retain deleted and overwritten files in the recycle bin -Διατήρηση διαγραμμένων και αντικατεστημένων αρχείων στον κάδο ανακύκλωσης - -Delete and overwrite files permanently -Μόνιμη διαγραφή και αντικατάσταση αρχείων - -Replace -Αντικατάσταση προηγούμενης - -Move files and replace if existing -Μετακίνηση αρχείων και αντικατάσταση - -Time stamp -Χρονική σήμανση - -Move files into a time-stamped subfolder -Μεταφορά αρχείων σε έναν χρονικά σημασμένο υποφάκελο - -File -Αρχείο - -Append a time stamp to each file name -Προσάρτηση χρονικής σήμανσης στο όνομα κάθε αρχείου - -On completion: -Μετά την ολοκλήρωση: - -On errors: -Μετά από σφάλμα: - -On success: -Μετά από επιτυχία: - -Main config -Κύρια διάταξη - -empty -κενό - -Leave as unresolved conflict -Παράβλεψη ως ανεπίλυτη διένεξη - -YYYY-MM-DD hhmmss -ΕΕΕΕ-ΜΜ-ΗΗ ωωλλδδ - -Minimum version count must be smaller than maximum count. -Ο ελάχιστος αριθμός παλιών εκδόσεων πρέπει να είναι μικρότερος από τον μέγιστο αριθμό. - -&Restore -&Επαναφορά - -Files -Αρχεία - -Percentage -Ποσοστό - -Failed to retrieve update information. -Αποτυχία ανάκτησης πληροφοριών ενημέρωσης. - -Automatic updates: -Αυτόματες ενημερώσεις: - -Check for Program Updates -Έλεγχος για ενημερώσεις του προγράμματος - -Auto-update now or download manually from the FreeFileSync home page? -Αυτόματη ενημέρωση τώρα ή χειροκίνητη λήψη από την ιστοσελίδα του FreeFileSync; - -&Auto-update -&Αυτόματη ενημέρωση - -&Home page -&Ιστοσελίδα - -Download now? -Λήψη τώρα; - -&Download -&Λήψη - -FreeFileSync is up to date. -Το FreeFileSync είναι ενημερωμένο. - -Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now? -Δεν μπορεί να βρεθεί η τρέχουσα έκδοση του FreeFileSync στο δίκτυο. Πιθανότατα είναι διαθέσιμη μια νεότερη έκδοση. Θέλετε να μεταφερθείτε στην ιστοσελίδα τώρα; - -&Check -Έλε&γχος - -Consistency check failed for %x. -Ο έλεγχος συνέπειας απέτυχε για το %x. - -Installation was registered on a different operating system. -Η εγκατάσταση καταχωρήθηκε σε διαφορετικό λειτουργικό σύστημα. - -Failed to activate FreeFileSync Donation Edition. -Αποτυχία ενεργοποίησης της Έκδοσης Δωρητή του FreeFileSync. - -Incorrect activation key. -Εσφαλμένο κλειδί ενεργοποίησης. - -Unable to register to receive system messages. -Δεν μπορεί να καταχωρηθεί η λήψη μηνυμάτων συστήματος. - -The %x installation option is only available in the FreeFileSync Donation Edition. -Η επιλογή εγκατάστασης %x είναι διαθέσιμη μόνο στην Έκδοση Δωρητή του FreeFileSync. - -Cannot find system function %x. -Δεν μπορεί να βρεθεί η λειτουργία συστήματος %x. - -Unable to register device notifications for %x. -Δεν μπορούν να καταχωρηθεί η ειδοποίηση για το χώρο αποθήκευσης %x. - -The file is locked by another process: -Το αρχείο είναι κλειδωμένο από μια άλλη διαδικασία: - -Failed to determine file permission support for folder %x. -Αποτυχία προσδιορισμού εάν ο φάκελος %x υποστηρίζει δικαιώματα πρόσβασης. - -Cannot read security context of %x. -Δεν μπορεί να αναγνωσθεί το περιβάλλον ασφαλείας του %x. - -Cannot write security context of %x. -Δεν μπορεί να γίνει εγγραφή του περιβάλλοντος ασφαλείας του %x. - -Cannot read permissions of %x. -Δεν μπορούν να αναγνωσθούν τα δικαιώματα ανάγνωσης του %x. - -Cannot copy permissions from %x to %y. -Δεν μπορούν να αντιγραφούν τα δικαιώματα αντιγραφής του %x στο %y. - -%x is not a regular directory name. -Το %x δεν είναι ένα κανονικό όνομα υποκαταλόγου. - -Cannot copy attributes from %x to %y. -Δεν μπορούν να αντιγραφούν τα χαρακτηριστικά του %x στο %y. - -%x TB -%x TB - -%x PB -%x PB - - -1 min -%x min - - -1 λεπτό -%x λεπτά - - - -1 hour -%x hours - - -1 ώρα -%x ώρες - - -Cannot set privilege %x. -Τα δικαιώματα %x δεν μπορούν να οριστούν. - -Unable to suspend system sleep mode. -Δεν μπορεί να διακοπεί η αναμονή του συστήματος. - -Cannot change process I/O priorities. -Δεν μπορούν να αλλάξουν οι προτεραιότητες I/O της διεργασίας. - -Checking recycle bin failed for folder %x. -Ο έλεγχος του κάδου ανακύκλωσης απέτυχε για τον υποκατάλογο %x. - -Unable to shut down the system. -Αδυναμία τερματισμού λειτουργίας του συστήματος. - -Prepare installation -Προετοιμασία εγκατάστασης - -Choose which components you want to install. -Επιλέξτε ποια στοιχεία θέλετε να εγκαταστήσετε. - -Select installation type: -Επιλογή τύπου εγκατάστασης: - -Local -Τοπική - -Portable -Φορητή - -Save settings in %x -Αποθήκευση των ρυθμίσεων στο %x - -Register FreeFileSync file extensions -Καταχώρηση των επεκτάσεων των αρχείων του FreeFileSync - -Create Explorer context menu entries -Δημιουργία καταχωρήσεων στο μενού περιβάλλοντος του Explorer - -Save settings in installation directory -Αποθήκευση των ρυθμίσεων στον υποκατάλογο εγκατάστασης - -Do not write to Registry -Χωρίς εγγραφές στο Μητρώο - -Just copy the files -Απλή αντιγραφή των αρχείων - -Choose a directory for installation: -Επιλέξτε έναν υποκατάλογο για εγκατάσταση: - -Create shortcuts: -Δημιουργία συντομεύσεων: - -Desktop -Επιφάνεια εργασίας - -Start Menu -Μενού "Έναρξη" - -Send To -Αποστολή Προς - -Registering FreeFileSync file extensions -Καταχώρηση των επεκτάσεων των αρχείων του FreeFileSync - -Unregistering FreeFileSync file extensions -Αναίρεση της καταχώρησης των επεκτάσεων των αρχείων του FreeFileSync - -FreeFileSync Configuration -Ρυθμίσεις του FreeFileSync - -FreeFileSync Batch File -Δέσμη Ενεργειών του FreeFileSync - -FreeFileSync Synchronization Database -Βάση Δεδομένων Συγχρονισμού του FreeFileSync - -RealTimeSync Configuration -Ρυθμίσεις του RealTimeSync - -Edit with FreeFileSync -Επεξεργασία με FreeFileSync - -Instead of an ad, here's an animal. -Αντί για διαφήμιση, δείτε ένα ζωάκι. - -The FreeFileSync portable version cannot install into a subfolder of %x. -Η φορητή έκδοση του FreeFileSync δεν μπορεί να εγκατασταθεί σε υποφάκελο του %x. - -Please choose the local installation type or select a different folder for installation. -Παρακαλούμε επιλέξτε την τοπική εγκατάσταση ή επιλέξτε έναν διαφορετικό φάκελο για εγκατάσταση. - -Get the Donation Edition with bonus features and help keep FreeFileSync ad-free. -Αγοράστε την Έκδοση Δωρητή με περισσότερες δυνατότητες και βοηθήστε να μείνει το FreeFileSync χωρίς διαφημίσεις. - diff --git a/FreeFileSync/Build/Resources/Languages/hebrew.lng b/FreeFileSync/Build/Resources/Languages/hebrew.lng deleted file mode 100755 index 7e7678a6..00000000 --- a/FreeFileSync/Build/Resources/Languages/hebrew.lng +++ /dev/null @@ -1,2136 +0,0 @@ -
- עברית - nitnit - he_IL - flag_israel.png - 2 - n == 1 ? 0 : 1 -
- -Cannot read file %x. -לא יכול לקרוא קובץ %x. - - -Unexpected size of data stream. -Expected: %x bytes -Actual: %y bytes - - -גודל בלתי צפוי של זרם נתונים. -צפוי: %x בתים -בפועל: %y בתים - - -Cannot write file %x. -לא יכול לכתוב קובץ %x. - -Cannot write permissions of %x. -לא יכול לכתוב הרשאות של %x. - -Operation not supported between different devices. -הפעולה אינה נתמכת בין התקנים שונים. - -Cannot delete file %x. -לא יכול למחוק קובץ %x. - -Cannot delete symbolic link %x. -לא ניתן למחוק קישור סימבולי %x. - -Cannot delete directory %x. -לא יכול למחוק מחיצה %x. - -Cannot move file %x to %y. -לא יכול להעביר קובץ %x אל %y. - -Cannot copy symbolic link %x to %y. -לא יכול להעתיק קישור סימבולי %x אל %y. - -Error Code %x -קוד שגיאה %x - -Cannot read directory %x. -לא ניתן לקרוא מחיצה %x. - -Cannot write modification time of %x. -לא יכול לרשום זמן שינוי של %x. - -Cannot read file attributes of %x. -לא יכול לקרוא תכונות של קובץ %x. - -Cannot create directory %x. -לא יכול ליצור מחיצה %x. - -Cannot determine final path for %x. -לא יכול לקבוע את המסלול הסופי ל %x. - -Operation not supported by device. -הפעולה אינה נתמכת על ידי ההתקן. - -Cannot resolve symbolic link %x. -לא יכול לפענח את הקישור הסימבולי %x. - -Unable to move %x to the recycle bin. -לא יכול להעביר את %x לסל המחזור. - -Authentication completed. -האימות הושלם. - -You may close this page now and continue with FreeFileSync. -אתה יכול לסגור דף זה עכשיו ולהמשיך עם FreeFileSync. - -Authentication failed. -האימות נכשל. - -Unable to connect to %x. -לא יכול להתחבר אל %x. - -Cannot find %x. -לא מוצא %x. - -The name %x is used by more than one item in the folder. -בשם %x נעשה שימוש יותר מפעם אחת בתיקייה. - -Please authorize access to user account %x. -בבקשה הרשה גישה לחשבון משתמש %x. - -Cannot open file %x. -לא יכול לפתוח קובץ %x. - -The name %x is already used by another item. -השם %x כבר בשימוש על ידי פריט אחר. - -Cannot determine free disk space for %x. -לא ניתן לקבוע שטח דיסק פנוי עבור %x. - -Unable to disconnect from %x. -לא ניתן להתנתק מ %x. - -Unable to access %x. -לא ניתן לגשת אל %x. - -Failed to get information about server %x. -נכשלה קבלת מידע על שרת %x. - -Cannot monitor directory %x. -לא יכול לנטר מחיצה %x. - -Cannot find device %x. -לא מוצא התקן %x. - -Cannot open directory %x. -לא יכול לפתוח מחיצה %x. - -Unsupported item type. -סוג פריט לא נתמך. - -Incorrect command line: -שורת פקודה לא תקינה: - -The server does not support authentication via %x. -השרת אינו תומך באימות באמצעות %x. - -Required: -נדרש: - - -Operation timed out after 1 second. -Operation timed out after %x seconds. - - -זמן הפעולה פקע לאחר שניה 1. -זמן הםעולה פקע לאחר %x שניות. - - - -Cannot wait on more than 1 connection at a time. -Cannot wait on more than %x connections at a time. - - -לא ניתן להמתין ליותר מחיבור 1 בכל פעם. -לא ניתן להמתין ליותר מ %x חיבורים בכל פעם. - - -Active connections: %x -חיבורים פעילים: %x - -Failed to open SFTP channel number %x. -נכשלה פתיחת ערוץ SFTP מספר %x. - -Both sides have changed since last synchronization. -שני הצדדים שונו מאז הסנכרון האחרון. - -Cannot determine sync-direction: -לא מזהה כוון סנכרון: - -No change since last synchronization. -אין שינוי מאז הסנכרון האחרון. - -The database entry is not in sync considering current settings. -בסיס הנתונים אינו מסונכרן בהתאם להגדרות הנוכחיות. - -Setting default synchronization directions: Old files will be overwritten with newer files. -בחר ברירת מחדל של סנכרון: קבצים ישנים ידרסו ע"י קבצים חדשים יותר. - -Creating file %x -יוצר קובץ %x - -Creating folder %x -יוצר תיקייה %x - -Creating symbolic link %x -יוצר קישור סימבולי %x - -Moving file %x to the recycle bin -מעביר קובץ %x לסל המיחזור - -Moving folder %x to the recycle bin -מעביר תיקייה %x לסל המיחזור - -Moving symbolic link %x to the recycle bin -מעביר קישור סימבולי %x לסל המיחזור - -Deleting file %x -מוחק קובץ %x - -Deleting folder %x -מוחק תיקייה %x - -Deleting symbolic link %x -מוחק קישור סימבולי %x - -Checking recycle bin availability for folder %x... -בודק זמינות סל מחזור עבור תיקייה %x... - -The recycle bin is not supported by the following folders. Deleted or overwritten files will not be able to be restored: -תא המחזור אינו נתמך על ידי התיקיות הבאות. קבצים שנמחקו או הוחלפו לא יהיו ניתנים לשחזור: - -An exception occurred -אירוע חריג - -A left and a right directory path are expected after %x. -נתיב מחיצה שמאלי וימני נדרשים לאחר %x. - -Syntax error -שגיאת תחביר - -Cannot find file %x. -לא מוצא קובץ %x. - -Error -שגיאה - -File %x does not contain a valid configuration. -קובץ %x אינו כולל תצורה תקינה. - -The config file must not contain settings at directory pair level when directories are set via command line. -קבצי הקונפיגורציה אינם יכולים לכלול הגדרות של זוגות מחיצות כאשר מחיצות מוגדרות באמצעות שורת הפקודה. - -Directories cannot be set for more than one configuration file. -מחיצות אינו יכולות להיות מוגדרות עבור יותר מקובץ קונפיגורציה אחד. - -Command line -שורת פקודות - -Syntax: -תחביר: - -config files: -קבצי תצורה: - -directory -מחיצה - -global config file: -קבצי תצורה גלובליים: - -Any number of FreeFileSync "ffs_gui" and/or "ffs_batch" configuration files. -כל כמות של קבצי FreeFileSync "ffs_gui" ו\או קבצי קונפיגורציה "ffs_batch". - -Any number of alternative directory pairs for at most one config file. -כל כמות של זוגות מחיצות אלטרנטיביות עבור קובץ תצורה אחד לפחות. - -Open the selected configuration for editing only, without executing it. -פתח את התצורה הבאה לעריכה בלבד מבלי להפעיל אותה. - -Path to an alternate GlobalSettings.xml file. -נתיב אל קובץ GlobalSettings.xml אלטרנטיבי. - -Installation files are corrupted. Please reinstall FreeFileSync. -קבצי ההתקנה פגומים. בבקשה התקן מחדש את FreeFileSync. - -Cannot find the following folders: -לא יכול למצוא את התיקיות הבאות: - -The following folders do not yet exist: -התיקיות הבאות אינן קיימות עדיין: - -The folders are created automatically when needed. -התיקיות נוצרות באופן אוטמטי כאשר נדרש. - -The following folder paths differ in case. Please use a single form in order to avoid duplicate accesses. -נתיביי התיקיות הבאים שונים. בבקשה עשה שימוש בתצורה אחידה כדי להימנע מריבוי גישה. - -Scanning: -סורק: - -Comparison finished: -ההשוואה הסתיימה: - - -1 item found -%x items found - - -פריט 1 נמצא -%x פריטים נמצאו - - -Time elapsed: -זמן שעבר: - -File %x has an invalid date. -קובץ %x מכיל תאריך שגוי. - -Date: -תאריך: - -Files have the same date but a different size. -לקבצים יש תאריך זהה אבל גודל שונה. - -Size: -גודל: - -Content comparison was skipped for excluded files. -השוואת תוכן לא בוצעה עבור קבצים שלא נכללו. - -Items differ in attributes only -פריטים שונים בתכונות בלבד - -Resolving symbolic link %x -פותר קישור סימבולי %x - -Comparing content of files %x -השווה תכולה של קבצים %x - -Generating file list... -מייצר רשימת קבצים... - -Fail-safe file copy -כשלון באבטחת העתקת קובץ - -Enabled -זמין - -Disabled -לא זמין - -Copy locked files -העתק קבצים נעולים - -Copy file access permissions -העתק הרשאות גישה של הקובץ - -File time tolerance -אפיצות זמן קובץ - -Run with background priority -בצע עם עדיפות רקע - -Lock directories during sync -נעל מחיצות בזמן סינכרון - -Verify copied files -אמת קבצים מועתקים - -Using non-default global settings: -משתמש בהגדרות כלליות שאינן ברירת מחדל: - -A folder input field is empty. -שדה קלט תיקייה ריק. - -The corresponding folder will be considered as empty. -התקייה המתאימה תחשב כריקה. - -Exclude: -לא לכלול: - -One base folder of a folder pair is contained in the other one. -תיקיית בסיס של צמד תיקיות מוכלת בתיקייה אחרת. - -The folder should be excluded from synchronization via filter. -יש להחריג את התיקייה מסנכרון באמצעות מסנן. - -Calculating sync directions... -מחשב כיווני סנכרון... - -Out of memory. -תם הזכרון. - -Show in Explorer -הראה בסייר הקבצים - -Open with default application -פתח באמצאות האפליקציה המתאימה - -Browse directory -עיין במחיצה - -Database file %x is incompatible. -קובץ מסד נתונים %x אינו במבנה מתאים. - -Initial synchronization: -סנכרון ראשוני: - -Database file %x does not yet exist. -קובץ מסד נתונים %x אינו קיים עדיין. - -Database file is corrupted: -קובץ בסיס נתונים פגום: - -Loading file %x... -טוען קובץ %x... - -The database files do not yet contain information about the last synchronization. -קבצי בסיס הנתונים אינם כוללים עדיין מידע על סינכרון אחרון. - -Saving file %x... -שומר קובץ %x... - -Searching for folder %x... -מחפש את תיקייה %x... - -Timeout while searching for folder %x. -פקע הזמן עבור חיפוש של תיקייה %x. - -Cannot get process information. -לא יכול לקבל את נתוני התהליך. - -Waiting while directory is locked: -ממתין בזמן שהמחיצה נעולה: - -Lock owner: -בעלים נעול: - -Detecting abandoned lock... -מגלה נעילה נטושה... - - -1 sec -%x sec - - -1 שנייה -%x שניות - - -Item exists on left side only -הפריט קיים בצד ימין בלבד - -Item exists on right side only -הפריט קיים בצד שמאל בלבד - -Left side is newer -צד ימין חדש יותר - -Right side is newer -צד שמאל חדש יותר - -Items have different content -הפריטים הם בעלי תוכן שונה - -Both sides are equal -שני הצדדים שווים - -Conflict/item cannot be categorized -סתירה/פריט אינו ניתן לסיווג - -Copy new item to left -העתק פריט חדש לצד ימין - -Copy new item to right -העתק פריט חדש לצד שמאל - -Delete left item -מחק פריט בצד ימין - -Delete right item -מחק פריט בצד שמאל - -Move file on left -העבר קובץ בצד ימין - -Move file on right -העבר קובץ בצד שמאל - -Update left item -עדכן פריט בצד שמאל - -Update right item -עדכן פריט בצד ימין - -Do nothing -אל תעשה כלום - -Update attributes on left -עדכן תכונות בצד ימין - -Update attributes on right -עדכן תכונות בצד שמאל - -Error parsing file %x, row %y, column %z. -שגיאה בפענוח קובץ %x, שורה %y, טור %z. - -Services -שרותים - -Show All -הראה הכל - -Hide Others -מסתיר אחרים - -Hide %x -מסתיר %x - -Quit %x -יוצא %x - -Cannot set directory locks for the following folders: -אין אפשרות להגדיר נעילות מחיצה עבור התיקיות הבאות: - -Errors: -שגיאות: - -Warnings: -אזהרות: - -Items processed: -אלמנטים עובדו: - -Items remaining: -אלמנתים נותרו: - -Total time: -זמן כולל: - -Warning -אזהרה - -Stopped -נעצר - -Cleaning up log files: -מנקה קבצי יומן: - - -1 thread -%x threads - - -תהליך 1 -%x תהליכים - - -%x/sec -%x /שניות - -%x items -%x פריטים - -Completed successfully -הסתיים בהצלחה - -Completed with warnings -הסתיים עם אזהרות - -Completed with errors -הסתיים עם שגיאות - -Cannot access the Volume Shadow Copy Service. -לא ניתן לגשת אל שרות Volume Shadow Copy. - -Please run the 64-bit version of FreeFileSync to create shadow copies on this system. -בבקשה הרץ את גירסת 64 סיביות של FreeFileSync כדי ליצור עותקי צל של מערכת זו. - -Volume name %x is not part of file path %y. -כרך בשם %x אינו חלק של נתיב קובץ %y. - -File time and size -זמן וגודל קובץ - -File content -תכולת הקובץ - -File size -גודל קובץ - -Two way -דו כווני - -Mirror -מראה - -Update -שדרג - -Custom -מותאם - -Multiple... -הכפל... - -Cannot write file attributes of %x. -לא יכול לכתוב תכונות קובץ של %x. - -%x and %y have different content. -%x ו- %y הם בעלי צוכן שונה. - -Data verification error: -שגיאת בדיקת מידע: - -Moving file %x to %y -מעביר קובץ %x אל %y - -Moving folder %x to %y -מעביר תיקייה %x אל %y - -Moving symbolic link %x to %y -מעביר קישור סימבולי %x אל %y - -Updating file %x -מעדכן קובץ %x - -Updating symbolic link %x -מעדכן קישור סימבולי %x - -Verifying file %x -מאמת קובץ %x - -Updating attributes of %x -מעדכן תכונות של %x - -Source item %x not found -פריט מקור %x לא נמצא - -Parent folder %x is not existing. -תיקיית אב %x לא קיימת. - -Cannot copy file %x to %y. -לא יכול להעתיק קובץ %x אל %y. - -Creating a Volume Shadow Copy for %x... -מייצר Volume Shadow Copy עבור %x... - -Cannot find folder %x. -לא מוצא תיקייה %x. - -Target folder %x is already existing, but was not available during folder comparison. -תיקיית יעד %x קיימת, אך לא הייתה זמינהבזמן השוואת התיקיות. - -Target folder input field must not be empty. -קלט תיקיית מטרה אינה יכול להיות ריק. - -Source folder %x not found. -תיקיית מקור %x לא נמצאת. - -Please enter a target folder for versioning. -בבקשה הזן תיקיית יעד עבור גרסאות. - -The following items have unresolved conflicts and will not be synchronized: -לפריטים הבאים יש קונפליקטים בלתי פתורים והם לא יסונכרנו: - -Folder pair: -זוג תיקיות: - -The following folders are significantly different. Please check that the correct folders are selected for synchronization. -התיקיות הבאות שונות באופן מהותי. בבקשה בדוק כי נבחרו התיקיות הנכונות לסחנכרון. - -Not enough free disk space available in: -אין מספיק מקום דיסק פנוי ב: - -Available: -זמין: - -Some files will be synchronized as part of multiple base folders. -קבצים מסויימים יסונכרנו כחלק מתיקיות בסיס מרובות. - -To avoid conflicts, set up exclude filters so that each updated file is included by only one base folder. -כדי למנוע התנגשויות, הגדר מסנני אי הכללה כך שכל עידכון קובץ יכלל על ידי תיקיית בסיס אחת. - -Versioning folder: -תיקיית גרסאות: - -Base folder: -תיקיית בסיס: - -The versioning folder is contained in a base folder. -תיקיית ניהול הגירסאות נמצאת בתיקיית בסיס. - -Synchronizing folder pair: -מסנכרן זוג תיקיות: - -Generating database... -מייצר מסד נתונים... - -Searching for old file versions: -מחפש גרסאות קובץ ישנות: - -Removing old file versions: -מסיר גרסאות קובץ ישנות: - -Unable to create time stamp for versioning: -לא ניתן ליצור תג זמן לגרסאות: - -Drag && drop -גרור ושחרר - -Select a folder -בחר תיקייה - -&New -&חדש - -&Open... -&פתח... - -Save &as... -שמור &בשם... - -E&xit -י&ציאה - -&File -&קובץ - -&View help -&הראה עזרה - -&About -&אודות - -&Help -&עזרה - -Usage: -שימוש: - -Select folders to watch. -בחר תיקיות לצפייה. - -Enter a command line. -הקש שורת פקודות. - -Press 'Start'. -לחץ 'הפעל'. - -To get started just import a "ffs_batch" file. -בכדי להתחיל יבא קובץ "ffs_batch". - -Folders to watch: -תיקיות לצפייה: - -Add folder -הוסף תיקייה - -Remove folder -הסר תיקייה - -Browse -עיין - -Idle time (in seconds): -זמן המתנה (בשניות): - -Idle time between last detected change and execution of command -זמן המתנה בין שינויי מאובחן אחרון לבין ביצוע של פקודה - -Command line: -שורת פקודה: - -&Hide console window -&הסתר חלון מסוף - - -The command is triggered if: -- files or subfolders change -- new folders arrive (e.g. USB stick insert) - - -הפקודה מופעלת כאשר: -- קבצים או תת-תיקיות משתנים -- תיקיות חדשות מופיעות (לדוגמה התקן USB מוכנס) - - -Start -התחל - -About -אודות - -Build: %x -מבנה: %x - -All files -כל הקבצים - -Automated Synchronization -סנכרון אוטומטי - -The %x protocol does not support directory monitoring: -הפרוטוקול %x אינו תומך בניטור מחיצה: - -Directory monitoring active -ניטור מחיצות פעיל - -Waiting until directory is available: -מחכה עד שהמחיצה זמינה: - -&Configure -&הגדר - -&Show error message -&הצג הודעת שגיאה - -&Quit -&יציאה - -&Retry -&נסה שנית - - -1 byte -%x bytes - - -בית 1 -%x בתים - - -%x MB -%x מגה בייט - -%x KB -%x קילו בייט - -%x GB -%x גיגה בייט - -Loading... -טוען... - -Scanning... -סורק... - -configuration file -קובץ תצורה - -System: Sleep -מערכת: שינה - -System: Shut down -מערכת: כיבוי - -Nothing to synchronize -אין מה לסנכרן - -Executing command: -מבצע פקודה: - -You can switch to FreeFileSync's main window to resolve this issue. -ניתן לעבור לחלון הראשי של FreeFileSync כדי לפתור את הסוגיה הזו. - -&Don't show this warning again -&לא להראות אזהרה זו שוב - -&Ignore -&התעלם - -&Switch -&החלפה - -Switching to FreeFileSync's main window -מעבר אל החלון הראשי של FreeFileSync - -Automatic retry -נסיון חוזר באופן אוטומטי - -Ignore &all -התעלם &מהכל - -Retrying operation... -מנסה שוב פעולה... - -Serious Error -שגיאה חמורה - -Last session -פעילות אחרונה - -Today -היום - - -1 day -%x days - - -1 יום -%x ימים - - -Name -שם - -Last sync -סינכרון אחרון - -Log -יומן - -Folder -תיקייה - -Symlink -קשור סימבולי - -Full path -נתיב מלא - -Relative path -נתיב יחסי - -Item name -שם פריט - -Size -גודל - -Date -תארין - -Extension -סיומת - -Category -קטגוריה - -Action -פעולה - -Local comparison settings -הגדרות השוואה מקומיות - -Local synchronization settings -הגדרות סינכרון מקומיות - -Local filter -מסנן מקומי - -Active -פעיל - -None -אין - -Remove local settings -הסר הגדרות מקומיות - -Clear local filter -נקה מסנן מקומי - -Copy -העתק - -Paste -הדבק - -The selected folder %x cannot be used with FreeFileSync. -התיקייה הנבחרת %x אינה יכולה להיות בשימוש עם FreeFileSync. - -Please select a folder on a local file system, network or an MTP device. -אנא בחר תיקייה במערכת הקבצים המקומית, ברשת או בהתקן MTP. - -Defined by context of use -מוגדר בהקשר של השימוש - -Requires FreeFileSync Donation Edition -נדרשת מהדורת התרומות של FreeFileSync - -&Save -&שמור - -Save as &batch job... -שמור כעבודת &אצווה... - -Show &log -הצג &יומנים: - -Start &comparison -התחל &והשווה - -C&omparison settings -הגדרות ה&שוואה - -&Filter settings -הגדרות ס&ינון - -S&ynchronization settings -הגדרות סינכ&רון - -Start &synchronization -התחל &וסנכרן - -&Actions -&פעולות - -&Preferences -&העדפות - -&Language -&שפה - -&Find... -&מצא... - -&Export file list... -&יצא רשימת קבצים... - -&Reset layout -&אפס פריסה - -&Tools -&כלים - -&Check for updates now -&בדוק האם יש עדכונים עכשיו - -Check &automatically once a week -בדוק &אוטומטית אחת לשבוע - -Cancel -בטל - -Compare -השוואה - -Synchronize -סנכרן - -Add folder pair -הוסף זוג תיקיות - -Remove folder pair -הסר זוג תיקיות - -Access online storage -גש לאחסון מכוון - -Close search bar -סגור סרגל חיפוש - -Find: -מצא: - -Match case -התאם רישיות - -Processed: -עבר עיבוד: - -Remaining: -משנה שם: - -New -חדש - -Open... -פתח... - -Save -שמור - -Save as... -שמור כ... - -View type: -הצג סוג: - -Select view: -בחר תצוגה: - -Save as default -שמור כברירת מחדל - -Statistics: -סטטיסטיקה: - -Number of files and folders that will be deleted -מספר הקבצים והתיקיות שימחקו - -Number of files that will be updated -מספר הקבצים העומדים להתעדכן - -Number of files and folders that will be created -מספר הקבצים והתיקיות שייוצרו - -Total bytes to copy -סה"כ בתים להעתיק - -Arrange folder pair -סדר זוג תיקיות - -Main settings: -הגדרות ראשיות: - -Use local settings: -השתמש בהגדרות מקומיות: - -Select a variant: -בחר גירסה: - -Include &symbolic links: -כלול &קישורים סימבוליים: - -&Follow -&עקוב - -&Direct -&כוון - -More information -מידע נוסף - -&Ignore time shift [hh:mm] -&התעלם מהזזת זמן [hh:mm] - -List of file time offsets to ignore -רשימת סטיות זמני קבצים להתעלם - -Example: -דוגמה: - -Handle daylight saving time -התמודד עם שעון קיץ - -Ignore errors -התעלם משגיאות - -Retry count: -מונה נסיונות חוזרים: - -Delay (in seconds): -השהייה (בשניות): - -Performance improvements: -שיפורים בביצועים: - -Parallel file operations: -פעולות קובץ מקבילות: - -How to get best performance? -כיצד לקבל את הביצועים הטובים ביותר? - -Local settings: -הגדרות מקומיות: - -Include: -כלול: - -Show examples -הראה דוגמאות - -Select filter rules to exclude certain files from synchronization. Enter file paths relative to their corresponding folder pair. -בחר כללי סינון כדי לא לכלול קבצים מסוימים בסנכרון. הזן את נתיבי הקבצים ביחס לזוג התיקיות בהתאמה. - -File size: -גודל קובץ: - -Minimum: -מינימום: - -Maximum: -מקסימום: - -Time span: -טווח זמן: - -C&lear -א&פס - -Detect moved files -גלה קבצים מועברים - - -- Not supported by all file systems -- Requires and creates database files -- Detection not available for first sync - - -- לא נתמך ע"י כל מערכת קבצים -- דורש ומייצר קבצי בסיס נתונים -- גילוי לא זמין עבור סינכרון ראשוני - - -Delete files: -מחק קבצים: - -&Recycle bin -&סל מחזור - -&Permanent -&קבוע - -&Versioning -&גרסאות - -Move files to a user-defined folder -העבר קבצים לתיקייה המוגדרת ע"י המפעיל - -Naming convention: -מוסכמות לקביעת שמות: - -Limit file versions: -הגבל גירסאות קובץ: - -Last x days: -x ימים אחרונים: - -&Override default log path: -&דרוס נתיב ברירת מחדל של יומן: - -Run a command: -הפעל פקודה: - -OK -אשר - -Connection type: -סוג חיבור: - -Connected user accounts: -חשבונות משתמש מחוברים: - -&Add connection -&הוסף חיבור - -&Disconnect -&להתנתק - -Selected user account: -בחר חשבון משתמש: - -Server name or IP address: -שם שרת או כתובת IP: - -Port: -יציאה: - -Encryption: -הצפנה: - -&Disabled -&לא מאופשר - -&Explicit SSL/TLS -&SSL/TLS מפורש - -Authentication: -אימות: - -&Password -&סיסמה - -&Key file -&קטבץ מפתח - -&SSH agent -סוכן &SSH - -User name: -שם משתמש: - -Private key file: -קובץ מפתח פרטי: - -&Show password -&הצג סיסמה - -Directory on server: -מחיצה על שרת: - -Access timeout (in seconds): -זמן קצוב לתפוגה (בשניות): - -SFTP channels per connection: -ערוצי SFTP לחיבור: - -Detect server limit -גלה את גבול השרת - -Select Folder -בחר מחיצה - -Variant: -גרסה אחרת: - -&Don't show this dialog again -&אל תראה דושיח זה שנית - -Bytes: -בתים: - -Items: -פריטים: - -Synchronizing... -מסנכרן... - -Minimize to notification area -הקטן לאיזור ההתרעות - -Bytes -בתים - -Items -פריטים - -When finished: -לאחר הסיום: - -Auto-close -סגירה באופן אוטומטי - -Close -סגור - -&Pause -&עצור - -Stop -עצור - -Create a batch file for unattended synchronization. To start, double-click this file or schedule in a task planner: %x -צור קובץ אצווה לסינכרון ללא התערבות מפעיל. כדי להפעיל, הקלק הקלקה כפולה על הקובץ או תזמן במתכנן המשימות: %x - -Progress dialog: -דושיח התקדמות: - -Run minimized -הרץ ממוזער - -Show pop-up on errors or warnings -הראה חלונות מוקפצים עבור שגיאות או אזהרות - -&Cancel -&ביטול - -Stop synchronization at first error -עצור סנכרון עם הופעת שגיאה ראשונה - -How can I schedule a batch job? -כיצד לתזמן משימת אצווה? - -&Keep relative paths -&שמור נתיבים יחסיים - -&Overwrite existing files -&דרוס קבצים קיימים - -The following settings are used for all synchronization jobs. -ההגדרות הבאות משמשות לכל משימות הסנכרון. - - -Copy to a temporary file (*.ffs_tmp) before overwriting target. -This guarantees a consistent state even in case of a serious error. - - -העתק לקובץ זמני (*.ffs_tmp) לפני כתיבה מחדש על היעד. -זה מבטיח מצב עקבי גם במקרה של שגיאה חמורה. - - -recommended -מומלץ - -Copy shared or locked files using the Volume Shadow Copy Service. -העתק קבצים בשיתוף או בנעילה באמצעות שרות Volume Shadow Copy. - -requires administrator rights -נדרשות זכויות מנהל מערכת - -Transfer file and folder permissions. -הרשאות העברת קובץ ותיקייה. - -Show all permanently hidden dialogs and warning messages again -הראה שוב את כל הדיאלוגים והודאות האזהרה המוסתרים באופן קבוע - -Default log path: -נתיב יומן ברירת מחדל: - -&Delete logs after x days: -&מחק יומנים לאחר x ימים: - -Notification sounds: -צלילי הודעה: - -Synchronization finished: -סינכרון הסתים: - -Customize context menu: -התאמה אישית של תפריט הקשר: - -Description -תאור - -&Default -&ברירת מחדל - -Feedback and suggestions are welcome: -משוב והצעות יתקבלו בברכה: - -Home page -דף הבית - -FreeFileSync Forum -פורום FreeFileSync - -Email -דוא"ל - -If you like FreeFileSync: -במידה ו-FreeFileSync מוצאת חן בעינכם: - -Support with a donation -תמיכה באמצאות תרומה - -The auto updater was disabled by the administrator. -עידכון אוטומטי הושבת על ידי מנהל מערכת. - -Donation details -פרטי תרומה: - -Source code written in C++ using: -קוד מקור נכתב ב- C++‎ באמצעות: - -Published under the GNU General Public License: -פורסם תחת הרישיון הציבורי הכללי של GNU: - -Many thanks for localization: -תודות עבור תרגום שפות: - -Activate the FreeFileSync Donation Edition by one of the following methods: -הפעל את מהדורת התרומות של FreeFileSync באחת מהשיטות הבאות: - -Activate via internet now: -הפעל באמצעות האינטרנט עכשיו: - -Activate online -הפעלה מקוונת - -Retrieve an offline activation key from the following URL: -קבל מפתח הפעלה למערכת לא מקוונת מן הלינק הבא: - -&Copy to clipboard -&העתק ללוח - -Enter activation key: -הכנס מפתח הפעלה: - -Activate offline -הפעלה בלתי מקוונת - -Highlight configurations that have not been run for more than the following number of days: -הדגש תצורות שלא הופעלו למשך יותר ממספר הימים הבא: - -FreeFileSync requires access rights to avoid "Operation not permitted" errors when synchronizing your data (e.g. Mail, Messages, Calendars). -FreeFileSync דורש זכויות גישה כדי להימנע משגיאות "פעולה אסורה" בעת סנכרון הנתונים שלך (למשל דואר, הודעות, לוחות שנה). - -Locate the FreeFileSync app -אתר את אפליקצית FreeFileSync - -Open Security && Privacy -פתח את אבטחה ופרטיות - -Click the lock to allow changes. -הקלק בכדי לאפשר שינויים. - -Drag FreeFileSync into the panel. -גרור את FreeFileSync אל הלוח. - -Synchronization Settings -הגדרות סנכרון - -Access Online Storage -גישה לאחסון מקוון - -Save as a Batch Job -שמור כמשימת אצווה - -Delete Items -מחק פריטים - -Copy Items -העתק פריטים - -Options -אפשרויות - -Select Time Span -בחר טווח זמן - -Highlight Configurations -הדגש תצורות - -Grant Full Disk Access -הענק גישה מלאה לדיסק - -Info -מידע - -No log entries -אין רשומות יומן - -Select all -בחר הכל - -&Options -&אפשרויות - -Main Bar -סרגל ראשי - -Folder Pairs -זוגות תיקיות - -Find -חפש - -View Settings -הגדרות תצוגה - -Configuration -תצורה - -Overview -מבט כללי - -Swap sides -החלף צדדים - -Show "%x" -הראה "%x" - -&Show details -&הראה פרטים - -FreeFileSync %x is available! -FreeFileSync %x זמין! - -Local path not available for %x. -נתיב מקומי לא זמין עבור %x. - -Confirm -אשר - - -Do you really want to execute the command %y for one item? -Do you really want to execute the command %y for %x items? - - -האם ברצונך לבצע את הפקודה %y עבור פריט אחד? -האם ברצונל לבצע את הפקודה %y עבור %x פריטים? - - -&Execute -&בצע - -Set direction: -בחר כוון: - -multiple selection -בחירה מרובה - -&Include via filter: -&כלול באמצעות מסנן: - -&Exclude via filter: -&אל תכלול באמצעות מסנן: - -Include temporarily -כלול זמנית - -Exclude temporarily -אל תכלול זמנית - -&Synchronize selection -&סנכרן את הבחירה - -&Copy to... -&העתק אל... - -&Delete -&מחק - -Show icons: -הצג סמלים: - -Small -קטן - -Medium -בינוני - -Large -גדול - -Select time span... -בחר תחום זמן... - -Donation Edition -מהדורת התרומות - -Folder Comparison and Synchronization -סנכרון קבצים ותיקיות - -Configuration saved -תצורה נשמרה - -FreeFileSync batch -אצוות FreeFileSync - -Do you want to save changes to %x? -האם לשמור שינויים אל %x? - -Never save &changes -לא לשמור שינויים ל&עולם - -Do&n't save -אל &תשמור - -%x cannot be renamed. -%x לא ניתן לשנות את שמו. - -New name: -שם חדש: - -Rename Configuration -שנה שם תצורה - -Configuration name must not be empty. -אסור ששם התצורה יהיה ריק. - -&Rename... -&שנה שם... - -Hide configuration -הסתר תצורה - -Highlight... -הדגש... - -Clear filter -נקה מסנן - -Show files that exist on left side only -הראה קבצים הנמצאים אך ורק בצד ימין - -Show files that exist on right side only -הראה קבצים הנמצאים אך ורק בצד שמאל - -Show files that are newer on left -הראה קבצים חדשים יותר בצד ימין - -Show files that are newer on right -הראה קבצים חדשים יותר בצד שמאל - -Show files that are equal -הראה קבצים שווים - -Show files that are different -הראה קבצים שונים - -Show conflicts -הראה קונפליקטים - -Show files that will be created on the left side -הראה קבצים שיווצרו בצד ימין - -Show files that will be created on the right side -הראה קבצים שיווצרו בצד שמאל - -Show files that will be deleted on the left side -הראה קבצים שימחקו בצד ימין - -Show files that will be deleted on the right side -הראה קבצים שימחקו בצד שמאל - -Show files that will be updated on the left side -הראה קבצים שיעטדכנו בצד שמאל - -Show files that will be updated on the right side -הראה קבצים שיעודכנו בצד ימין - -Show files that won't be copied -הראה קבצים שלא יועתקו - -Show filtered or temporarily excluded files -הראה קבצים שסוננו או לא נכללו זמנית - -Filter -מסנן - -All files are in sync -כל הקבצים מסונכרנים - - -1 directory -%x directories - - -1 מחיצה -%x מחיצות - - - -1 file -%x files - - -1 קובץ -%x קבצים - - - -Showing %y of 1 row -Showing %y of %x rows - - -מראה %y מתוך שורה 1 -מראה %y מתוך %x שורות - - -Cannot find %x -לא מוצא %x - -Move up -העבר למעלה - -Move down -העבר למטה - -Comma-separated values -ערכים מופרדים באמצעות פסיק - -File list exported -רשימת קבצים יוצאה - -Searching for program updates... -מחפש עידכוני תוכנה... - -Paused -עצור - -Stop requested... -עצור בקשה... - -Initializing... -מאתחל... - -Comparing content... -משווה תכולה... - -&Continue -&המשך - -Progress -התקדמות - -Thank you, %x, for your donation and support! -תודה לך %x, עבור תרומתך ותמיכתך! - -Connections -קשרים - -Recommended range: -טווח מומלץ: - -Do you really want to disconnect from user account %x? -האם אתה באמת רוצה לנתק את חשבון המשתמש %x? - -Password: -סיסמה: - -Key passphrase: -סיסמת מפתח: - -Please enter a file path. -בבקשה הכנס נתיב קובץ. - - -Copy the following item to another folder? -Copy the following %x items to another folder? - - -העתק את הפריט לתיקייה אחרת? -העתק את הפריט %x לתיקייה אחרת? - - -Please enter a target folder. -אנא הזן תיקיית יעד. - - -Do you really want to move the following item to the recycle bin? -Do you really want to move the following %x items to the recycle bin? - - -האם באמת ברצונך להעביר את הפריט הבא לסל המחזור? -האם באמת ברצונך להעביר את הפריטים הבאים %x לסל המחזור? - - -Move -העבר - - -Do you really want to delete the following item? -Do you really want to delete the following %x items? - - -האם ברצונך למחוק את הפריט הבא? -האם ברצונך למחוק את הפריטים %x הבאים? - - -Start to synchronize the selection? -התחל לסנכרן את הבחירה? - -Start synchronization now? -האם להתחיל סנכרון עכשיו? - -Copy DACL, SACL, Owner, Group -העתק DACL, SACL, Owner, Group - -Integrate external applications into context menu. The following macros are available: -הטמע תוכנות חיצוניות. תפריטי המקרו הבאים זמינים: - -Full file or folder path -שם מלא של קובץ או נתיב תיקייה - -Parent folder path -נתיב תיקיית אב - -Temporary local copy for SFTP and MTP storage -העתק מקומי זמני עבור SFTP ואחסון MTP - -Parameters for opposite side -פרמטרים עבור צד נגדי - -Show hidden dialogs again -הראה שוב דיאלוגים נסתרים - -All dialogs shown -כל תיבות הדו שיח מוצגות - -Downloading update... -מוריד עדכון... - -Identify equal files by comparing modification time and size. -זהה קבצים זהים באמצעות השוואת תג הזמן והגודל. - -Identify equal files by comparing the file content. -זהה קבצים זהים באמצעות השוואת תוכן. - -Identify equal files by comparing their file size. -זהה קבצים זהים באמצעות השוואת גודל קובץ. - -Identify and propagate changes on both sides. Deletions, moves and conflicts are detected automatically using a database. -זהה והפץ שינויים בשני הצדדים. מחיקות העברות וסתירות מתגלים באופן אוטומטי באמצעות מסד נתונים. - -Create a mirror backup of the left folder by adapting the right folder to match. -צור גיבוי מראה של התיקיה משמאל באמצעות התאמת התיקיה מימין להתאמה. - -Copy new and updated files to the right folder. -העתק קבצים חדשים ומעודכנים לתיקייה הימנית. - -Configure your own synchronization rules. -סדר את כללי הסנכרון שלך. - -Comparison -השוואה - -Synchronization -סינכרון - -This week -בשבוע הנוכחי - -This month -בחודש הנוכחי - -This year -בשנה הנוכחית - -Byte -בייט - -KB -קילו-בייט - -MB -מגה-בייט - -Retain deleted and overwritten files in the recycle bin -שמר קבצים שנמחקו והוחלפו בתא המיחזור - -Delete and overwrite files permanently -מחק והחלף קבצים לצמיתות - -Replace -החלף - -Move files and replace if existing -העבר קבצים והחלף במדה וקיימים - -Time stamp -תג זמן - -Move files into a time-stamped subfolder -העבר קבצים של תת תיקיה עם חתימת זמן - -File -קובץ - -Append a time stamp to each file name -הוסף חתימת זמן לכל שם קובץ - -On completion: -עם הסיום: - -On errors: -במקרה שגיאה: - -On success: -במקרה הצלחה: - -Main config -תצורה ראשית - -empty -empty - -Leave as unresolved conflict -השאר כקונפליקט לא מטופל - -YYYY-MM-DD hhmmss -YYYY-MM-DD hhmmss - -Minimum version count must be smaller than maximum count. -מונה גירסה מינימלי חייב להיות קטן ממונה גירסה מקסימלי. - -&Restore -&טען מחדש - -Files -קבצים - -Percentage -אחוז - -Failed to retrieve update information. -קבלת נתוני עדכון נכשלה. - -Automatic updates: -עדכונים אוטומטיים: - -Check for Program Updates -בדוק קיום עדכוני תוכנה - -Auto-update now or download manually from the FreeFileSync home page? -האם לעדכן באופן אוטומטי עכשיו או באמצעות הורדנ ידנית מדף הבית של FreeFileSync? - -&Auto-update -&עדכון אוטומטי - -&Home page -&דף הבית - -Download now? -הורד עכשיו? - -&Download -&הורד - -FreeFileSync is up to date. -FreeFileSync מעודכן לגירסה האחרונה. - -Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now? -לא יכול למצוא מספר גירסה נוכחית של FreeFileSync באופן מקוון. כנראה שגירסה מעודכנת קיימת. האם לבדוק עכשיו? - -&Check -&בדוק - -Consistency check failed for %x. -בדיקת עקביות נכשלה עבור %x. - -Installation was registered on a different operating system. -ההתקנה נרשמה במערכת הפעלה אחרת. - -Failed to activate FreeFileSync Donation Edition. -הפעלת מהדורת תרומות של FreeFileSync נכשלה/. - -Incorrect activation key. -מפתח הפעלה לא מתאים. - -Unable to register to receive system messages. -לא ניתן להרשם לקבלת הודעות מערכת. - -The %x installation option is only available in the FreeFileSync Donation Edition. -אפשרת התקנה %x זמינה רק במהדורת תרומות של FreeFileSync. - -Cannot find system function %x. -לא יכול למצוא פונקצית מערכת %x. - -Unable to register device notifications for %x. -לא יכול לרשום הודעות עבור התקן %x. - -The file is locked by another process: -הקובץ נעול ע"י תהליך: - -Failed to determine file permission support for folder %x. -נכשל בקביעת תמיכה להרשאות קובץ עבור תיקיה %x. - -Cannot read security context of %x. -לא יכול לקרוא הקשר בטיחות של %x. - -Cannot write security context of %x. -לא יכול לכתוב הקשר בטיחות של %x. - -Cannot read permissions of %x. -לא יכול לקרוא הרשאות של %x. - -Cannot copy permissions from %x to %y. -לא יכול להעתיק הרשאות מ- %x אל %y. - -%x is not a regular directory name. -%x אינו שם של מחיצה רגילה. - -Cannot copy attributes from %x to %y. -לא יכול להעתיק תכונות מ- %x אל %y. - -%x TB -%x טרה בייט - -%x PB -%x פטה בייט - - -1 min -%x min - - -1 דקה -%x דקות - - - -1 hour -%x hours - - -1 שעה -%x שעות - - -Cannot set privilege %x. -לא יכול להגדיר זבות %x. - -Unable to suspend system sleep mode. -לא ניתן להשעות מצב שינה של המערכת. - -Cannot change process I/O priorities. -לא יכול לשנות קדימויות של תהליך קלט פלט. - -Checking recycle bin failed for folder %x. -בודק כשלון בתא מחזור עבור תיקייה %x. - -Unable to shut down the system. -לא מסוגל לכבות את המערכת. - -Prepare installation -מכין התקנה - -Choose which components you want to install. -בחר אילו מרכיבים ברצונך להתקין. - -Select installation type: -בחר סוג התקנה: - -Local -מקומי - -Portable -נייד - -Save settings in %x -שמור הגדרות ב%x - -Register FreeFileSync file extensions -רשום את סיומות הקבצים של FreeFileSync. - -Create Explorer context menu entries -צור תפריט הקשר בסייר הקבצים - -Save settings in installation directory -שמור נתוני תוכנית בתיקית התקנה - -Do not write to Registry -אל תרשום לקבצי רגיסטרי - -Just copy the files -העתק קבצים בלבד - -Choose a directory for installation: -בחר תיקיה להתקנה: - -Create shortcuts: -צור קיצורי דרך: - -Desktop -שולחן עבודה - -Start Menu -תפריט התחל - -Send To -שלח אל - -Registering FreeFileSync file extensions -רושם את סיומות הקבצים של FreeFileSync. - -Unregistering FreeFileSync file extensions -מבטל רישום של סיומות הקבצים של FreeFileSync. - -FreeFileSync Configuration -תצורת FreeFileSync - -FreeFileSync Batch File -קובץ אצווה של FreeFileSync - -FreeFileSync Synchronization Database -בסיס נתוני סינכרון של FreeFileSync - -RealTimeSync Configuration -תצורת RealTimeSync - -Edit with FreeFileSync -ערוך עם FreeFileSync - -Instead of an ad, here's an animal. -במקום פרסומת, להלן חיה. - -The FreeFileSync portable version cannot install into a subfolder of %x. -הגירסה הניידת של FreeFileSync אינה ניתנת להתקנה בתת תיקייה של %x. - -Please choose the local installation type or select a different folder for installation. -בבקשה בחר התקנה מקומית או בחר תיקייה אחרת להתקנה. - -Get the Donation Edition with bonus features and help keep FreeFileSync ad-free. -קבל את מהדורת התרומות עם תכונות נוספות ועזור לשמר את FreeFileSync נטול-פרסומות. - diff --git a/FreeFileSync/Build/Resources/Languages/hindi.lng b/FreeFileSync/Build/Resources/Languages/hindi.lng deleted file mode 100755 index 57917e9d..00000000 --- a/FreeFileSync/Build/Resources/Languages/hindi.lng +++ /dev/null @@ -1,2136 +0,0 @@ -
- हिन्दी - अमोल खिस्ते - hi_IN - flag_india.png - 2 - n == 1 ? 0 : 1 -
- -Cannot read file %x. -फ़ाइल %x पढ़ने में असमर्थ। - - -Unexpected size of data stream. -Expected: %x bytes -Actual: %y bytes - - -डेटा स्ट्रीम का आकार अनपेक्षित। -अपेक्षित: %x बाइट्स -वास्तविक: %y बाइट्स - - -Cannot write file %x. -फ़ाइल %x लिखने में असमर्थ। - -Cannot write permissions of %x. -%x की अनुमतियां लिख नहीं सकते। - -Operation not supported between different devices. -विभिन्न उपकरणों के बीच कार्यवाई असमर्थित। - -Cannot delete file %x. -फ़ाइल %x हटा नहीं सकते। - -Cannot delete symbolic link %x. -प्रतीकात्मक कड़ी %x हटाया नहीं जा सकता। - -Cannot delete directory %x. -निर्देशिका %x हटा नहीं सकते। - -Cannot move file %x to %y. -फ़ाइल %x से %y ले जा नाहीं सकते। - -Cannot copy symbolic link %x to %y. -सिंबॉलिक लिंक %x से %y प्रतिलिपित नहीं कर सकते। - -Error Code %x -त्रुटि कोड %x - -Cannot read directory %x. -निर्देशिका %x को पढ़ा नहीं जा सकता। - -Cannot write modification time of %x. -%x का संशोधन समय लिख नहीं सकते। - -Cannot read file attributes of %x. -%x के फ़ाइल गुण पढ़ने में असमर्थ। - -Cannot create directory %x. -%x निर्देशिका बना नहीं सकते। - -Cannot determine final path for %x. -%x का अंतिम पथ निर्धारित नहीं कर सकते। - -Operation not supported by device. -कार्यवाई उपकरण द्वारा असमर्थित। - -Cannot resolve symbolic link %x. -सिंबॉलिक लिंक %x को हल नहीं कर सकते। - -Unable to move %x to the recycle bin. -%x को रीसायकल बिन ले जाने में असमर्थ। - -Authentication completed. -प्रमाणन पूर्ण। - -You may close this page now and continue with FreeFileSync. -आप अब इस पृष्ठ को बंद कर FreeFileSync जारी रख सकते हैं। - -Authentication failed. -प्रमाणन विफल। - -Unable to connect to %x. -%x से कनेक्ट करने में असमर्थ। - -Cannot find %x. -%x नहीं मिला। - -The name %x is used by more than one item in the folder. -%x नाम का उपयोग फ़ोल्डर में एक से अधिक आइटम द्वारा किया गया है। - -Please authorize access to user account %x. -कृपया उपयोगकर्ता खाता %x से पहुँच अधिकृत करें। - -Cannot open file %x. -%x फ़ाइल को खोलने में असमर्थ। - -The name %x is already used by another item. -%x इस नाम का उपयोग पहले से ही किसी अन्य आइटम द्वारा किया गया है। - -Cannot determine free disk space for %x. -%x के लिए खाली डिस्क जगह निर्धारित नहीं कर सकते। - -Unable to disconnect from %x. -%x से सम्पर्क काटने में असमर्थ। - -Unable to access %x. -%x तक पहुँचने में असमर्थ। - -Failed to get information about server %x. -सर्वर %x की जानकारी प्राप्त करने में विफल। - -Cannot monitor directory %x. -निर्देशिका %x की निगरानी कर नहीं सकते। - -Cannot find device %x. -उपकरण %x नहीं मिला। - -Cannot open directory %x. -निर्देशिका %x खोल नहीं सकते। - -Unsupported item type. -असमर्थित आइटम प्रकार। - -Incorrect command line: -अनुचित आदेश-पंक्ति: - -The server does not support authentication via %x. -सर्वर पर %x द्वारा प्रमाणन समर्थित नहीं है। - -Required: -आवश्यक: - - -Operation timed out after 1 second. -Operation timed out after %x seconds. - - -1 सेकंड के बाद कार्यवाई का काल समाप्त हुआ। -%x सेकंड्स के बाद कार्यवाई का काल समाप्त हुआ। - - - -Cannot wait on more than 1 connection at a time. -Cannot wait on more than %x connections at a time. - - -एक समय में 1 कनेक्शन से अधिक पर प्रतीक्षा नहीं कर सकते। -एक समय में %x कनेक्शन्स से अधिक पर प्रतीक्षा नहीं कर सकते। - - -Active connections: %x -सक्रिय कनेक्शन्स: %x - -Failed to open SFTP channel number %x. -SFTP चैनल संख्या %x को खोलने में विफल। - -Both sides have changed since last synchronization. -पिछ्ले सिंक्रनाइज़ेशन के बाद से दोनो तरफ बदलाव है। - -Cannot determine sync-direction: -सिंक्रनाइज़ेशन-दिशा का निर्धारण नहीं किया जा सकता: - -No change since last synchronization. -पिछ्ले सिंक्रनाइज़ेशन के बाद से कोई बदलाव नहीं है। - -The database entry is not in sync considering current settings. -वर्तमान सेटिंग्स के अनुसार डेटाबेस प्रविष्टि सिंक्रनाइज़्ड नहीं है। - -Setting default synchronization directions: Old files will be overwritten with newer files. -डिफ़ॉल्ट सिंक्रनाइज़ेशन दिशाएँ सेट हो रही हैं: पुराने फ़ाइल्स नए फ़ाइल्स से अधिलेखित होंगे। - -Creating file %x -फ़ाइल %x बनाई जा रही है - -Creating folder %x -निर्देशिका %x बनायी जा रही है - -Creating symbolic link %x -प्रतीकात्मक कड़ी %x बनाया जा रहा है - -Moving file %x to the recycle bin -%x फ़ाइल को रीसायकल बिन में ले जाया जा रहा है - -Moving folder %x to the recycle bin -%x निर्देशिका को रीसायकल बिन में ले जाया जा रहा है - -Moving symbolic link %x to the recycle bin -%x प्रतीकात्मक कड़ी को रीसायकल बिन में ले जाया जा रहा है - -Deleting file %x -%x फ़ाइल हटाया जा रहा है - -Deleting folder %x -%x निर्देशिका हटाया जा रहा है - -Deleting symbolic link %x -%x प्रतीकात्मक कड़ी हटाया जा रहा है - -Checking recycle bin availability for folder %x... -%x निर्देशिका के लिए रीसायकल बिन की उपलब्धता की जाँच हो रही है... - -The recycle bin is not supported by the following folders. Deleted or overwritten files will not be able to be restored: -रीसायकल बिन निम्न फ़ोलडर्स द्वारा समर्थित नहीं है। हटायी गई या अधिलेखित फ़ाइल्स पुनर्स्थापित नहीं होगी: - -An exception occurred -कोई अपवाद हुआ - -A left and a right directory path are expected after %x. -%x के बाद कोई दाया और कोई बाया निर्देशिका पथ अपेक्षित है। - -Syntax error -वाक्य-विन्यास त्रुटि - -Cannot find file %x. -फ़ाइल %x नहीं मिली। - -Error -त्रुटि - -File %x does not contain a valid configuration. -%x फ़ाइल में वैध कॉन्फ़िगरेशन नहीं है। - -The config file must not contain settings at directory pair level when directories are set via command line. -कॉन्फ़िग फ़ाइल में निर्देशिका जोडी स्तर पर सेटिंग्स नहीं होने चाहिए जब निर्देशिकाएँ आदेश-पंक्ति से सेट हुई हों। - -Directories cannot be set for more than one configuration file. -एक से अधिक कॉन्फ़िगरेशन फ़ाइल के लिए निर्देशिकाएँ सेट नहीं हो सकती। - -Command line -आदेश-पंक्ति - -Syntax: -वाक्य-विन्यास: - -config files: -कॉन्फ़िग फ़ाइल्स: - -directory -निर्देशिका - -global config file: -वैश्विक कॉन्फ़िग फ़ाइल: - -Any number of FreeFileSync "ffs_gui" and/or "ffs_batch" configuration files. -कितने भी FreeFileSync "ffs_gui" और/या "ffs_batch" कॉन्फ़िगरेशन फ़ाइल्स। - -Any number of alternative directory pairs for at most one config file. -कितने भी वैकलपिक निर्देशिका जोडे अधिक से अधिक एक कॉन्फ़िग फ़ाइल के लिए। - -Open the selected configuration for editing only, without executing it. -चयनित कॉन्फ़िगरेशन को बिना निष्पादित किए केवल संपादन के लिए खोलें। - -Path to an alternate GlobalSettings.xml file. -वैकल्पिक GlobalSettings.xml फ़ाइल का पथ। - -Installation files are corrupted. Please reinstall FreeFileSync. -स्थापना फ़ाइलें दूषित हैं। FreeFileSync पुनर्स्थापित करें। - -Cannot find the following folders: -निम्न फ़ोलडर्स नहीं मिले: - -The following folders do not yet exist: -निम्न फ़ोल्डर्स अभी तक मौजूद नहीं हैं: - -The folders are created automatically when needed. -आवश्यक होने पर फ़ोल्डर्स स्वचालित रूप से बनाए जाते हैं। - -The following folder paths differ in case. Please use a single form in order to avoid duplicate accesses. -निम्न निर्देशिका पथ अक्षरों के केस में भिन्न हैं। प्रतिरूप अभिगम टालने के लिए कृपया कोई एक शैली का प्रयोग करें। - -Scanning: -स्कैनिंग: - -Comparison finished: -तुलना पूर्ण हुई: - - -1 item found -%x items found - - -1 आइटम मिला -%x आइटम्स मिले - - -Time elapsed: -बीता समय: - -File %x has an invalid date. -%x फ़ाइल का दिनांक अवैध है। - -Date: -दिनांक: - -Files have the same date but a different size. -फाइल्स का दिनांक समान है परंतु आकार भिन्न है। - -Size: -आकार: - -Content comparison was skipped for excluded files. -अपवर्जित फ़ाइल्स के लिए सामग्री तुलना को छोड़ा गया। - -Items differ in attributes only -आइटम्स के केवल गुण ही भिन्न हैं। - -Resolving symbolic link %x -%x प्रतीकात्मक कड़ी को हल किया जा रहा है - -Comparing content of files %x -%x फ़ाइल्स की सामग्री तुलना हो रही है - -Generating file list... -फ़ाइल सूची बनाई जा रही है... - -Fail-safe file copy -सुरक्षित फ़ाइल प्रतिलिपि - -Enabled -सक्षम - -Disabled -अक्षम - -Copy locked files -अवरोधित फ़ाइल्स प्रतिलिपित करें - -Copy file access permissions -फ़ाइल पहुँच अनुमतियाँ प्रतिलिपित करें - -File time tolerance -फ़ाइल समय टॉलरेंस (छूट) - -Run with background priority -पृष्ठभूमि प्राथमिकता के साथ चलाएँ - -Lock directories during sync -सिंक्रनाइज़ेशन दौरान फ़ोल्डेर्स अवरोधित करें - -Verify copied files -प्रतिलिपित फ़ाइल्स सत्यापित करें - -Using non-default global settings: -गैर-डिफ़ॉल्ट वैश्विक सेटिंग्स प्रयोग करें: - -A folder input field is empty. -कोई निर्देशिका इनपुट प्रविष्टि खाली है। - -The corresponding folder will be considered as empty. -तद्नुरूप निर्देशिका को खाली माना जाएगा। - -Exclude: -वर्जित करें: - -One base folder of a folder pair is contained in the other one. -निर्देशिका जोड़ी में से एक आधार निर्देशिका दूसरे में निहित है। - -The folder should be excluded from synchronization via filter. -निर्देशिका को सिंक्रनाइज़ेशन से फ़िल्टर द्वारा अपवर्जित किया जाना चाहिए। - -Calculating sync directions... -सिंक्रनाइज़ेशन दिशा का परिकलन हो रहा है... - -Out of memory. -स्मृति से बाहर। - -Show in Explorer -एक्सप्लोरर में दिखाएं - -Open with default application -डिफ़ॉल्ट अ‍ॅप्लिकेशन के साथ खोलें - -Browse directory -निर्देशिका ब्राउज़ करें - -Database file %x is incompatible. -डेटाबेस फ़ाइल %x विसंगत है। - -Initial synchronization: -प्रारंभिक सिंक्रनाइज़ेशन: - -Database file %x does not yet exist. -डेटाबेस फ़ाइल %x अभी तक मौजूद नहीं है। - -Database file is corrupted: -डेटाबेस फ़ाइल दूषित है: - -Loading file %x... -फ़ाइल %x को लोड किया जा रहा है... - -The database files do not yet contain information about the last synchronization. -डेटाबेस फ़ाइल्स में अभी तक पिछले सिंक्रनाइज़ेशन की जानकारी नहीं है। - -Saving file %x... -फ़ाइल %x सहेजी जा रही है... - -Searching for folder %x... -निर्देशिका %x की खोज हो रही है... - -Timeout while searching for folder %x. -निर्देशिका %x की खोज करते हुए काल समाप्त हआ। - -Cannot get process information. -प्रक्रिया जानकारी प्राप्त करने में असमर्थ। - -Waiting while directory is locked: -प्रतीक्षारत जब कि निर्देशिका अवरोधित है: - -Lock owner: -स्वामी अवरोध करें: - -Detecting abandoned lock... -अपसर्जित अवरोध पता लगाया जा रहा है... - - -1 sec -%x sec - - -1 सेकंड -%x सेकंड्स - - -Item exists on left side only -आइटम केवल बाईं तरफ मौजूद है। - -Item exists on right side only -आइटम केवल दाईं तरफ मौजूद है। - -Left side is newer -बायां पक्ष अधिक नया है - -Right side is newer -दायां पक्ष अधिक नया है - -Items have different content -आइटम्स की सामग्री भिन्न है। - -Both sides are equal -दोनों पक्ष समान हैं। - -Conflict/item cannot be categorized -विरोध/आइटम को वर्गीकृत नहीं किया जा सकता - -Copy new item to left -नए आइटम की बाईं तरफ प्रतिलिपि बनाएं - -Copy new item to right -नए आइटम की दाईं तरफ प्रतिलिपि बनाएं - -Delete left item -बायां आइटम हटाएं - -Delete right item -दायां आइटम हटाएं - -Move file on left -फ़ाइल को बाईं तरफ खिसकाएं - -Move file on right -फ़ाइल को दाईं तरफ खिसकाएं - -Update left item -बायां आइटम अद्यतन करें - -Update right item -दायां आइटम अद्यतन करें - -Do nothing -कुछ ना करें - -Update attributes on left -बाईं तरफ के गुण अद्यतन करें - -Update attributes on right -दाईं तरफ के गुण अद्यतन करें - -Error parsing file %x, row %y, column %z. -फ़ाइल %x, पंक्ति %y, स्तंभ %z पदच्छेदन में त्रुटि। - -Services -सेवाएँ - -Show All -सब दिखाओ - -Hide Others -अन्य छुपाएं - -Hide %x -%x छुपाएं - -Quit %x -%x छोड़ें - -Cannot set directory locks for the following folders: -निम्न निर्देशिकाओं के लिए निर्देशिका अवरोध सेट नहीं कर सकते: - -Errors: -त्रुटियाँ: - -Warnings: -चेतावनियाँ: - -Items processed: -संसाधित आइटम्स: - -Items remaining: -शेष आइटम्स: - -Total time: -कुल समय: - -Warning -चेतावनी - -Stopped -रुका - -Cleaning up log files: -लॉग फाइलों की सफ़ाई जारी: - - -1 thread -%x threads - - -1 थ्रेड -%x थ्रेड्स - - -%x/sec -%x/सेकंड - -%x items -%x आइटम्स - -Completed successfully -सफलतापूर्वक पूर्ण हुआ - -Completed with warnings -चेतावनियों सहित पूर्ण हुआ - -Completed with errors -त्रुटियों सहित पूर्ण हुआ - -Cannot access the Volume Shadow Copy Service. -वॉल्यूम शॅडो प्रतिलिपि सर्व्हिस पहुँच प्राप्त नहीं है। - -Please run the 64-bit version of FreeFileSync to create shadow copies on this system. -इस सिस्टम में शॅडो प्रतिलिपियाँ बनाने के लिए कृपया FreeFileSync का 64-बिट संस्करण चलाएँ। - -Volume name %x is not part of file path %y. -%x वॉल्यूम नाम %y फ़ाइल पथ का हिस्सा नहीं है। - -File time and size -फ़ाइल समय और आकार - -File content -फ़ाइल सामग्री - -File size -फ़ाइल आकार - -Two way -दुतरफा - -Mirror -प्रतिबिंबित करें - -Update -अद्यतन करें - -Custom -अनुकूल - -Multiple... -एकाधिक... - -Cannot write file attributes of %x. -%x के फ़ाइल गुण लिख नहीं सकते। - -%x and %y have different content. -%x और %y की सामग्री भिन्न है। - -Data verification error: -डेटा सत्यापन त्रुटि: - -Moving file %x to %y -फ़ाइल %x को %y यहाँ ले जाया जा रहा है - -Moving folder %x to %y -निर्देशिका %x को %y यहाँ ले जाया जा रहा है - -Moving symbolic link %x to %y -प्रतीकात्मक कड़ी %x को %y यहाँ ले जाया जा रहा है - -Updating file %x -फ़ाइल %x अद्यतित हो रही है - -Updating symbolic link %x -प्रतीकात्मक कड़ी %x अद्यतित हो रही है - -Verifying file %x -फ़ाइल %x सत्यापित हो रही है - -Updating attributes of %x -%x के गुण अद्यतित हो रहे हैं - -Source item %x not found -स्रोत आइटम %x नहीं मिला - -Parent folder %x is not existing. -अभिभावक निर्देशिका %x विद्यमान नहीं है। - -Cannot copy file %x to %y. -फ़ाइल %x से %y प्रतिलिपित नहीं कर सकते। - -Creating a Volume Shadow Copy for %x... -%x के लिए वॉल्यूम शॅडो प्रतिलिपि बनाई जा रही है... - -Cannot find folder %x. -निर्देशिका %x नहीं मिला। - -Target folder %x is already existing, but was not available during folder comparison. -गंतव्य निर्देशिका %x पहले से विद्यमान है, परंतु वह निर्देशिका तुलना के समय उपलब्ध नहीं थी। - -Target folder input field must not be empty. -गंतव्य निर्देशिका प्रविष्टि खाली नहीं हो सकती। - -Source folder %x not found. -स्रोत निर्देशिका %x नहीं मिला। - -Please enter a target folder for versioning. -कृपया संस्करण करने के लिए गंतव्य निर्देशिका प्रविष्ट करें। - -The following items have unresolved conflicts and will not be synchronized: -निम्न आइटम्स में हल नहीं किये गए विरोध हैं और वे सिंक्रनाइज़ नहीं होंगे: - -Folder pair: -निर्देशिका जोडा: - -The following folders are significantly different. Please check that the correct folders are selected for synchronization. -निम्न निर्देशिकाएँ उल्लेखनीय रूप से भिन्न हैं। कृपया सुनिश्चित करें की सिंक्रनाइज़ेशन के लिए चुनी निर्देशिकाएँ उचित हैं। - -Not enough free disk space available in: -यहाँ पर्याप्त खाली डिस्क जगह उपलब्ध नहीं: - -Available: -उपलब्ध: - -Some files will be synchronized as part of multiple base folders. -कुछ फ़ाइल्स को एकाधिक आधार निर्देशिकाओं के भाग के रूप में सिंक्रनाइज़ किया जाएगा। - -To avoid conflicts, set up exclude filters so that each updated file is included by only one base folder. -विरोध टालने के लिए वर्जित फ़िल्टर स्थापित करें ताकि प्रत्येक अद्यतित फ़ाइल केवल एक आधार निर्देशिका द्वारा सम्मिलित हो। - -Versioning folder: -संस्करण निर्देशिका: - -Base folder: -आधार निर्देशिका: - -The versioning folder is contained in a base folder. -संस्करण निर्देशिका आधार निर्देशिका में निहित है। - -Synchronizing folder pair: -यह निर्देशिका जोडा सिंक्रनाइज़ हो रहा है: - -Generating database... -डेटाबेस बनाया जा रहा है... - -Searching for old file versions: -पुराने फ़ाइल संस्करणों की खोज हो रही है: - -Removing old file versions: -पुराने फ़ाइल संस्करणों को हटाया जा रहा है: - -Unable to create time stamp for versioning: -संस्करण के लिए समय मोहर बनाने में असमर्थ: - -Drag && drop -ड्रॅग एण्ड ड्रॉप - -Select a folder -निर्देशिका चुनें - -&New -नया (&N) - -&Open... -खोलें (&O)... - -Save &as... -इस रूप में सहेजें (&a)... - -E&xit -बाहर निकलें (&x) - -&File -फ़ाइल (&F) - -&View help -मदद देखें (&V) - -&About -बारे में (&A) - -&Help -मदद (&H) - -Usage: -प्रयोग: - -Select folders to watch. -निगरानी के लिए फ़ोलडर्स चुनिए। - -Enter a command line. -आदेश-पंक्ति प्रविष्ट करें। - -Press 'Start'. -'प्रारंभ' दबाएं। - -To get started just import a "ffs_batch" file. -प्रारंभ करने के लिए केवल कोई "ffs_batch" फ़ाइल आयात करें। - -Folders to watch: -इन फ़ोलडर्स की निगरानी होगी: - -Add folder -निर्देशिका जोडें - -Remove folder -निर्देशिका निकालें - -Browse -ब्राउज़ - -Idle time (in seconds): -निष्क्रिय समय (सेकंड में): - -Idle time between last detected change and execution of command -पिछ्ला पता लगाया हुआ परिवर्तन और आदेश के निष्पादन के बीच का निष्क्रिय समय - -Command line: -आदेश-पंक्ति: - -&Hide console window -कंसोल विंडो छिपाएँ (&H) - - -The command is triggered if: -- files or subfolders change -- new folders arrive (e.g. USB stick insert) - - -यह आदेश सक्रिय होता है यदि: -- फ़ाइल्स या उप-फ़ोलडर्स बदले -- नए फ़ोलडर्स आए (उदा. USB स्टिक डालने पर) - - -Start -प्रारंभ - -About -बारे में - -Build: %x -बिल्ड: %x - -All files -सारी फ़ाइल्स - -Automated Synchronization -स्वचालित सिंक्रनाइज़ेशन - -The %x protocol does not support directory monitoring: -%x प्रोटोकॉल निर्देशिका निगरानी का समर्थन नहीं करता: - -Directory monitoring active -निर्देशिका निगरानी सक्रिय - -Waiting until directory is available: -प्रतीक्षारत जब कि निर्देशिका उपलब्ध हो: - -&Configure -कॉन्फ़िगर (&C) - -&Show error message -त्रुटि संदेश दिखाएं (&S) - -&Quit -बाहर निकलें (&Q) - -&Retry -पुनः प्रयास (&R) - - -1 byte -%x bytes - - -1 बाइट -%x बाइट्स - - -%x MB -%x MB - -%x KB -%x KB - -%x GB -%x GB - -Loading... -लोड हो रहा है... - -Scanning... -स्कैनिंग... - -configuration file -कॉन्फ़िगरेशन फ़ाइल - -System: Sleep -सिस्टम: स्लीप - -System: Shut down -सिस्टम: बंद करें - -Nothing to synchronize -सिंक्रनाइज़ करने के लिए कुछ नहीं - -Executing command: -निष्पादित आदेश: - -You can switch to FreeFileSync's main window to resolve this issue. -इस समस्या को हल करने के लिए आप FreeFileSync के मुख्य विंडो में जा सकते हैं। - -&Don't show this warning again -इस चेतावनी को दोबारा न दिखाएं (&D) - -&Ignore -अनदेखा करें (&I) - -&Switch -अदला-बदली करें (स्विच) (&S) - -Switching to FreeFileSync's main window -FreeFileSync के मुख्य विंडो में जाएं - -Automatic retry -स्वचालित पुनःप्रयास - -Ignore &all -सभी अनदेखा करें (&a) - -Retrying operation... -कार्यवाई का पुनःप्रयास हो रहा है... - -Serious Error -गंभीर त्रुटि - -Last session -पिछला सत्र - -Today -आज - - -1 day -%x days - - -1 दिन -%x दिन - - -Name -नाम - -Last sync -पिछला सिंक - -Log -लॉग - -Folder -निर्देशिका - -Symlink -सिमलिंक - -Full path -पूरा पथ - -Relative path -सापेक्ष पथ - -Item name -आइटम नाम - -Size -आकार - -Date -दिनांक - -Extension -विस्तार - -Category -वर्ग - -Action -क्रिया - -Local comparison settings -स्थानीय तुलना सेटिंग्स - -Local synchronization settings -स्थानीय सिंक्रनाइज़ेशन सेटिंग्स - -Local filter -स्थानीय फ़िल्टर - -Active -सक्रिय - -None -कुछ नहीं - -Remove local settings -स्थानीय सेटिंग्स निकालें - -Clear local filter -स्थानीय फ़िल्टर हटाएं - -Copy -प्रतिलिपि - -Paste -चिपकाएं - -The selected folder %x cannot be used with FreeFileSync. -चुनी निर्देशिका %x FreeFileSync के साथ उपयोग नहीं की जा सकती। - -Please select a folder on a local file system, network or an MTP device. -कृपया स्थानीय फ़ाइल सिस्टम, नेटवर्क या MTP उपकरण पर कोई निर्देशिका चुनें। - -Defined by context of use -उपयोग के संदर्भ से परिभाषित - -Requires FreeFileSync Donation Edition -FreeFileSync दान संस्‍करण आवश्यक - -&Save -सहेजें (&S) - -Save as &batch job... -बॅच जॉब के रूप में सहेजें (&b)... - -Show &log -लॉग दिखाएं (&l) - -Start &comparison -तुलना शुरू करें (&c) - -C&omparison settings -तुलना सेटिंग्स (&o) - -&Filter settings -फ़िल्टर सेटिंग्स (&F) - -S&ynchronization settings -सिंक्रनाइज़ेशन सेटिंग्स (&y) - -Start &synchronization -सिंक्रनाइज़ेशन शुरू करें (&s) - -&Actions -क्रियाएँ (&A) - -&Preferences -प्राथमिकताएँ (&P) - -&Language -भाषा (&L) - -&Find... -ढूंढें (&F)... - -&Export file list... -फ़ाइल सूचि निर्यात करें (&E)... - -&Reset layout -अभिन्यास रीसेट करें (&R) - -&Tools -उपकरण (&T) - -&Check for updates now -अद्यतन के लिए अभी जाँचें (&C) - -Check &automatically once a week -सप्ताह में एक बार स्वचालित रूप से जांचें (&a) - -Cancel -रद्द करें - -Compare -तुलना करें - -Synchronize -सिंक्रनाइज़ - -Add folder pair -निर्देशिका जोडा जोडें - -Remove folder pair -निर्देशिका जोडा निकालें - -Access online storage -ऑनलाइन संग्रहण पहुँच प्राप्त करें - -Close search bar -खोज पट्टी बंद करें - -Find: -ढूंढें: - -Match case -केस मिलाएं - -Processed: -संसाधित: - -Remaining: -शेष: - -New -नया - -Open... -खोलें... - -Save -सहेजें - -Save as... -इस रूप से सहेजें... - -View type: -दृश्य प्रकार: - -Select view: -दृश्य चुनें: - -Save as default -डिफ़ॉल्ट के रूप में सहेजें - -Statistics: -आंकड़े: - -Number of files and folders that will be deleted -जिन फ़ाइल्स और फ़ोलडर्स को हटाया जाएगा उनकी संख्या - -Number of files that will be updated -जिन फ़ाइल्स का अद्यतन होगा उनकी संख्या - -Number of files and folders that will be created -जिन फ़ाइल्स और फ़ोलडर्स को बनया जाएगा उनकी संख्या - -Total bytes to copy -कॉपी करने के लिए कुल बाइट्स - -Arrange folder pair -निर्देशिका जोडा व्यवस्थित करें - -Main settings: -मुख्य सेटिंग्स: - -Use local settings: -स्थानीय सेटिंग्स का उपयोग करें: - -Select a variant: -प्रकार चुने: - -Include &symbolic links: -प्रतीकात्मक कड़ीयाँ समावेश करें (&s): - -&Follow -अनुसरण करें (&F) - -&Direct -प्रत्यक्ष (&D) - -More information -अधिक जानकारी - -&Ignore time shift [hh:mm] -समय शिफ़्ट अनदेखा करें [hh:mm] (&I) - -List of file time offsets to ignore -उपेक्षित फ़ाइल समय ऑफ़्सेट्स की सूची - -Example: -उदाहरण: - -Handle daylight saving time -दिवालोक बचत समय (डेलाईट सेविंग टाइम) प्रहस्तन करें - -Ignore errors -त्रुटियों को अनदेखा करें - -Retry count: -पुनः प्रयास गणनांक: - -Delay (in seconds): -विलंब (सेकंड में): - -Performance improvements: -प्रदर्शन सुधार: - -Parallel file operations: -समांतर फ़ाइल कार्रवाई: - -How to get best performance? -सर्वश्रेष्ठ प्रदर्शन कैसे पाएं? - -Local settings: -स्थानीय सेटिंग्स: - -Include: -समावेश करें: - -Show examples -उदाहरण दिखाएं - -Select filter rules to exclude certain files from synchronization. Enter file paths relative to their corresponding folder pair. -सिंक्रनाइज़ेशन से कुछ फ़ाइल्स को वर्जित करने के लिए फ़िल्टर नियमों का चयन करें। फ़ाइल पथों को उनके तद्नुरूप निर्देशिका जोडों के सापेक्ष प्रविष्ट करें। - -File size: -फ़ाइल आकार: - -Minimum: -न्यूनतम: - -Maximum: -अधिकतम: - -Time span: -समय अवधि: - -C&lear -हटाएं (&l) - -Detect moved files -ले जाई गई फ़ाइल्स का पता लगाएं - - -- Not supported by all file systems -- Requires and creates database files -- Detection not available for first sync - - -- सभी फ़ाइल सिस्टम्स द्वारा समर्थित नहीं -- डेटाबेस फ़ाइल्स आवश्यक हैं और बनाता है -- पहले सिंक्रनाइज़ेशन के लिए खोज उपलब्ध नहीं - - -Delete files: -फ़ाइल्स हटाएं: - -&Recycle bin -रीसायकल बिन (&R) - -&Permanent -स्थायी (&P) - -&Versioning -संस्करण (&V) - -Move files to a user-defined folder -फ़ाइल्स उपयोगकर्ता-परिभाषित निर्देशिका में ले जाएं - -Naming convention: -नामकरण नीति: - -Limit file versions: -फ़ाइल संस्करण सीमित करें: - -Last x days: -पिछले x दिन: - -&Override default log path: -डिफ़ॉल्ट लॉग पथ अधिभूत करें (&O): - -Run a command: -आदेश चलाएँ: - -OK -ठीक - -Connection type: -सम्पर्क प्रकार: - -Connected user accounts: -जुड़े हुए उपयोगकर्ता खाते: - -&Add connection -सम्पर्क जोड़ें (&A) - -&Disconnect -सम्पर्क काटें (&D) - -Selected user account: -चयनित उपयोगकर्ता खाता: - -Server name or IP address: -सर्वर नाम या IP पता: - -Port: -पोर्ट: - -Encryption: -एन्क्रिप्शन: - -&Disabled -अक्षम (&D) - -&Explicit SSL/TLS -सुस्पष्ट SSL/TLS (&E) - -Authentication: -प्रमाणन: - -&Password -पासवर्ड (&P) - -&Key file -कुंजी फ़ाइल (&K) - -&SSH agent -&SSH एजेंट - -User name: -उपयोगकर्ता नाम: - -Private key file: -निजी कुंजी फ़ाइल: - -&Show password -पासवर्ड दिखाएं (&S) - -Directory on server: -सर्वर पर निर्देशिका: - -Access timeout (in seconds): -पहुँच समय बाह्य (सेकंड्स में): - -SFTP channels per connection: -SFTP चैनल्स प्रति कनेक्शन: - -Detect server limit -सर्वर सीमा का पता लगाएँ - -Select Folder -निर्देशिका चुनें - -Variant: -प्रकार: - -&Don't show this dialog again -यह संवाद बॉक्स दोबारा न दिखाएं (&D) - -Bytes: -बाइट्स: - -Items: -आइटम्स: - -Synchronizing... -सिंक्रनाइज़ हो रहा है... - -Minimize to notification area -सूचना क्षेत्र में मिनिमाइज़ करें - -Bytes -बाइट्स - -Items -आइटम्स - -When finished: -समाप्त होने पर: - -Auto-close -स्वचालित-बंद - -Close -बंद करें - -&Pause -ठहरें (&P) - -Stop -रोकें - -Create a batch file for unattended synchronization. To start, double-click this file or schedule in a task planner: %x -उपस्थिति निरपेक्ष सिंक्रनाइज़ेशन के लिए बॅच फ़ाइल बनाएं। शुरू करने के लिए, किसी कार्य योजनाकार में यह फ़ाइल या अनुसूची डबल क्लिक करें: %x - -Progress dialog: -प्रगति संवाद बॉक्स: - -Run minimized -छोटा (मिनिमाइज़) कर के चलाएँ - -Show pop-up on errors or warnings -त्रुटियों या चेतावनियों पर पॉप-अप दिखाएं - -&Cancel -रद्द करें (&C) - -Stop synchronization at first error -पहली त्रुटि पर सिंक्रनाइज़ेशन रोकें - -How can I schedule a batch job? -मैं कोई बॅच कार्य कैसे अनुसूचित करूँ? - -&Keep relative paths -सापेक्ष पथों को बनाए रखें (&K) - -&Overwrite existing files -मौजूद फ़ाइल्स अधिलेखित करें (&O) - -The following settings are used for all synchronization jobs. -सभी सिंक्रनाइज़ेशन कार्यों के लिए निम्न सेटिंग्स का उपयोग किया जाता है। - - -Copy to a temporary file (*.ffs_tmp) before overwriting target. -This guarantees a consistent state even in case of a serious error. - - -गंतव्य अधिलेखित करने से पहले किसी अस्थायी फ़ाइल (*.ffs_tmp) में प्रतिलिपित करें। -यह गंभीर त्रुटि की दशा में भी सुसंगत स्थिती सुनिश्चित करता है। - - -recommended -अनुशंसित - -Copy shared or locked files using the Volume Shadow Copy Service. -साझा या अवरोधित फ़ाइल्स वॉल्यूम शॅडो प्रतिलिपि सर्व्हिस के उपयोग से प्रतिलिपित करें। - -requires administrator rights -व्यवस्थापक विशेषाधिकार आवश्यक - -Transfer file and folder permissions. -फ़ाइल और निर्देशिका अनुमतियाँ स्थानांतर करें। - -Show all permanently hidden dialogs and warning messages again -स्थायी रूप से छिपाये संवाद बॉक्सेस और चेतावनी संदेश फिर से दिखाएं - -Default log path: -डिफ़ॉल्ट लॉग पथ: - -&Delete logs after x days: -x दिनों के बाद लॉग हटाएं (&D): - -Notification sounds: -अधिसूचना ध्वनि: - -Synchronization finished: -सिंक्रनाइज़ेशन समाप्त: - -Customize context menu: -प्रासंगिक मेनू अनुकूलित करें: - -Description -विवरण - -&Default -डिफ़ॉल्ट (&D) - -Feedback and suggestions are welcome: -प्रतिक्रिया और सुझाव का स्वागत है: - -Home page -मुख पृष्ठ - -FreeFileSync Forum -FreeFileSync फ़ोरम - -Email -ई-मेल - -If you like FreeFileSync: -यदि आपको FreeFileSync पसंद है: - -Support with a donation -दान के साथ समर्थन करें - -The auto updater was disabled by the administrator. -स्वचालित अद्यतन व्यवस्थापक द्वारा अक्षम किया गया है। - -Donation details -दान विवरण - -Source code written in C++ using: -स्रोत कोड C++ में लिखा गया इनके प्रयोग से: - -Published under the GNU General Public License: -जीएनयू जनरल पब्लिक लाइसेंस (GNU General Public License) के तहत प्रकाशित: - -Many thanks for localization: -स्थानीयकरण के लिए अनेक आभार: - -Activate the FreeFileSync Donation Edition by one of the following methods: -FreeFileSync दान संस्‍करण को निम्न विधियों में से एक के द्वारा सक्रिय करें: - -Activate via internet now: -इंटरनेट द्वारा अभी सक्रिय करें: - -Activate online -ऑनलाइन सक्रिय करें - -Retrieve an offline activation key from the following URL: -ऑफ़लाइन सक्रियण कुंजी निम्न URL से प्राप्त करें: - -&Copy to clipboard -क्लिपबोर्ड पर प्रतिलिपि बनाएँ (&C) - -Enter activation key: -सक्रियण कुंजी प्रविष्ट करें: - -Activate offline -ऑफ़लाइन सक्रिय करें - -Highlight configurations that have not been run for more than the following number of days: -निम्न दिनों से अधिक समय तक ना चलाए गए कॉन्फ़िगरेशन्स को हाइलाइट करें: - -FreeFileSync requires access rights to avoid "Operation not permitted" errors when synchronizing your data (e.g. Mail, Messages, Calendars). -FreeFileSync को आपके डेटा को सिंक्रनाइज़ करते समय "कार्रवाई की अनुमति नहीं" त्रुटियों से बचने के लिए पहुँच अधिकारों की आवश्यकता होती है (जैसे मेल, संदेश, कैलेंडर)। - -Locate the FreeFileSync app -FreeFileSync ऐप की स्थिति जानें - -Open Security && Privacy -सुरक्षा और गोपनीयता - -Click the lock to allow changes. -परिवर्तनों को अनुमति देने के लिए लॉक पर क्लिक करें। - -Drag FreeFileSync into the panel. -पैनल में FreeFileSync खींचें। - -Synchronization Settings -सिंक्रनाइज़ेशन सेटिंग्स - -Access Online Storage -ऑनलाइन संग्रहण पहुँच प्राप्त करें - -Save as a Batch Job -बॅच जॉब के रूप में सहेजें - -Delete Items -आइटम हटाएं - -Copy Items -आइटम्स प्रतिलिपित करें - -Options -विकल्प - -Select Time Span -समय अवधि चुनें - -Highlight Configurations -कॉन्फ़िगरेशन्स हाइलाइट करें - -Grant Full Disk Access -पूर्ण डिस्क ऐक्सेस प्रदान करें - -Info -जानकारी - -No log entries -कोई लॉग प्रविष्टियां नहीं - -Select all -सभी चुने - -&Options -विकल्प (&O) - -Main Bar -मुख्य पट्टी - -Folder Pairs -निर्देशिका जोडें - -Find -ढूंढें - -View Settings -दृश्य सेटिंग्स - -Configuration -कॉन्फ़िगरेशन - -Overview -अवलोकन - -Swap sides -पक्ष गमागम करें - -Show "%x" -"%x" दिखाएं - -&Show details -विवरण दिखाएँ (&S) - -FreeFileSync %x is available! -FreeFileSync %x उपलब्ध है! - -Local path not available for %x. -%x के लिए स्थानीय पथ उपलब्ध नहीं है। - -Confirm -पुष्टि करें - - -Do you really want to execute the command %y for one item? -Do you really want to execute the command %y for %x items? - - -क्या आप वास्तव में एक आइटम के लिए %y आदेश निष्पादित करना चाहते हैं? -क्या आप वास्तव में %x आइटम्स के लिए %y आदेश निष्पादित करना चाहते हैं? - - -&Execute -निष्पादित करें (&E) - -Set direction: -दिशा सेट करें: - -multiple selection -एकाधिक चयन - -&Include via filter: -फ़िल्टर के द्वारा समावेश करें (&I): - -&Exclude via filter: -फ़िल्टर के द्वारा अपवर्जित करें (&E): - -Include temporarily -अस्थायी रूप से समावेश करें - -Exclude temporarily -अस्थायी रूप से अपवर्जित करें - -&Synchronize selection -चयन सिंक्रनाइज़ करें (&S) - -&Copy to... -यहाँ प्रतिलिपित करें (&C)... - -&Delete -हटाएं (&D) - -Show icons: -चिन्ह दिखाएं: - -Small -छोटा - -Medium -मध्यम - -Large -बड़ा - -Select time span... -समय अवधि चुनें... - -Donation Edition -दान संस्करण - -Folder Comparison and Synchronization -निर्देशिका तुलना और सिंक्रनाइज़ेशन - -Configuration saved -सहेजा कॉन्फ़िगरेशन - -FreeFileSync batch -FreeFileSync बॅच - -Do you want to save changes to %x? -क्या आप %x के परिवर्तन सहेजना चाहते हैं? - -Never save &changes -परिवर्तनों को कभी भी न सहेजें (&c) - -Do&n't save -नहीं सहेजें (&n) - -%x cannot be renamed. -%x का नाम नहीं बदला जा सकता है। - -New name: -नया नाम: - -Rename Configuration -कॉन्फ़िगरेशन का नाम बदलें - -Configuration name must not be empty. -कॉन्फ़िगरेशन का नाम रिक्त नहीं होना चाहिए। - -&Rename... -नाम बदलें (&R)... - -Hide configuration -कॉन्फ़िगरेशन छुपाएं - -Highlight... -हाइलाइट... - -Clear filter -फ़िल्टर हटाएं - -Show files that exist on left side only -केवल बाईं तरफ़ मौजूद फ़ाइल्स दिखाएं - -Show files that exist on right side only -केवल दाईं तरफ़ मौजूद फ़ाइल्स दिखाएं - -Show files that are newer on left -नवीन फ़ाइल्स को बाईं तरफ़ दिखाएं - -Show files that are newer on right -नवीन फ़ाइल्स को दाईं तरफ़ दिखाएं - -Show files that are equal -समान फ़ाइल्स दिखाएं - -Show files that are different -असमान फ़ाइल्स दिखाएं - -Show conflicts -विरोध दिखाएं - -Show files that will be created on the left side -जो फ़ाइल्स बनाई जाएंगी वो बाईं तरफ़ दिखाएं - -Show files that will be created on the right side -जो फ़ाइल्स बनाई जाएंगी वो दाईं तरफ़ दिखाएं - -Show files that will be deleted on the left side -जो फ़ाइल्स हटाई जाएंगी वो बाईं तरफ़ दिखाएं - -Show files that will be deleted on the right side -जो फ़ाइल्स हटाई जाएंगी वो दाईं तरफ़ दिखाएं - -Show files that will be updated on the left side -जिन फ़ाइल्स का अद्यतन होगा वो बाईं तरफ़ दिखाएं - -Show files that will be updated on the right side -जिन फ़ाइल्स का अद्यतन होगा वो दाईं तरफ़ दिखाएं - -Show files that won't be copied -जिन फ़ाइल्स की प्रतिलिपि नहीं बनेगी वो दिखाएं - -Show filtered or temporarily excluded files -फ़िल्टर किए या अस्थायी रूप से अपवर्जित फ़ाइल्स दिखाएं - -Filter -फ़िल्टर - -All files are in sync -सभी फ़ाइल्स सिंक में हैं - - -1 directory -%x directories - - -1 निर्देशिका -%x निर्देशिकाएँ - - - -1 file -%x files - - -1 फ़ाइल -%x फ़ाइल्स - - - -Showing %y of 1 row -Showing %y of %x rows - - -1 पंक्ति में से %y प्रदर्शित -%x पंक्तियों में से %y प्रदर्शित - - -Cannot find %x -%x ढूंढने में असमर्थ - -Move up -उपर ले जाएं - -Move down -नीचे ले जाएं - -Comma-separated values -कॉमा-सेपरेटेड वैल्यूज़ - -File list exported -फ़ाइल सूची निर्यात की गई - -Searching for program updates... -प्रोग्राम अद्यतनों की खोज हो रही है... - -Paused -ठहरा - -Stop requested... -अनुरोधित को रोकें... - -Initializing... -प्रारंभ हो रहा है... - -Comparing content... -सामग्री की तुलना हो रही है... - -&Continue -जारी रखें (&C) - -Progress -प्रगति - -Thank you, %x, for your donation and support! -धन्यवाद, %x, आपके दान और समर्थन के लिए! - -Connections -कनेक्शन्स - -Recommended range: -अनुशंसित श्रेणी: - -Do you really want to disconnect from user account %x? -क्या आप वास्तव में उपयोगकर्ता खाता %x से सम्पर्क काटना चाहते हैं? - -Password: -पासवर्ड: - -Key passphrase: -कुंजी पासफ्रेज़: - -Please enter a file path. -कृपया कोई फ़ाइल पथ प्रविष्ट करें। - - -Copy the following item to another folder? -Copy the following %x items to another folder? - - -निम्न आइटम अन्य निर्देशिका में प्र्तिलिपित करें? -निम्न %x आइटम्स अन्य निर्देशिका में प्र्तिलिपित करें? - - -Please enter a target folder. -कृपया कोई गंतव्य निर्देशिका प्रविष्ट करें। - - -Do you really want to move the following item to the recycle bin? -Do you really want to move the following %x items to the recycle bin? - - -क्या आप वास्तव में निम्न आइटम रीसायकल बिन में ले जाना चाहते हैं? -क्या आप वास्तव में निम्न %x आइटम्स रीसायकल बिन में ले जाना चाहते हैं? - - -Move -ले जाएं - - -Do you really want to delete the following item? -Do you really want to delete the following %x items? - - -क्या आप वास्तव में निम्न आइटम हटाना चाहते हैं? -क्या आप वास्तव में निम्न %x आइटम्स हटाना चाहते हैं? - - -Start to synchronize the selection? -चयन को सिंक्रनाइज़ करने के लिए प्रारंभ करें? - -Start synchronization now? -अब सिंक्रनाइज़ेशन प्रारंभ करें? - -Copy DACL, SACL, Owner, Group -DACL, SACL, स्वामी, समूह प्रतिलिपित करें - -Integrate external applications into context menu. The following macros are available: -बाह्य अनुप्रयोगों को प्रसंग मेनू में एकीकृत करें। निम्न मैक्रोज़ उपलब्ध हैं: - -Full file or folder path -पूर्ण फाइल या निर्देशिका पथ - -Parent folder path -अभिभावक निर्देशिका पथ - -Temporary local copy for SFTP and MTP storage -SFTP और MTP संग्रहण के लिए अस्थायी स्थानीय प्रतिलिपि - -Parameters for opposite side -दूसरी तरफ़ के पैरामीटर्स - -Show hidden dialogs again -छिपाये संवाद बक्से फिर से देखाएं - -All dialogs shown -सभी संवाद बक्से प्रदर्शित - -Downloading update... -अद्यतन डाउनलोड हो रहा है... - -Identify equal files by comparing modification time and size. -समान फ़ाइल्स पहचानने के लिए संशोधन समय और आकार की तुलना करें। - -Identify equal files by comparing the file content. -समान फ़ाइल्स पहचानने के लिए फ़ाइल सामग्री की तुलना करें। - -Identify equal files by comparing their file size. -समान फ़ाइल्स पहचानने के लिए फ़ाइल आकार की तुलना करें। - -Identify and propagate changes on both sides. Deletions, moves and conflicts are detected automatically using a database. -दोनों तरफ़ के परिवर्तन पहचानें और प्रसारित करें। हटाए गए, ले जाए गए और विरोधों का स्वचालित रूप से डेटाबेस के उपयोग से पता लगाया जाता है। - -Create a mirror backup of the left folder by adapting the right folder to match. -मिलाए जाने वाले दाए निर्देशिका के अनुकूल बाए निर्देशिका का प्रतिबिंबित बैकअप बनाएं। - -Copy new and updated files to the right folder. -नए और अद्यतित फ़ाइल्स दाए निर्देशिका में प्रतिलिपित करें। - -Configure your own synchronization rules. -अपने खुद के सिंक्रनाइज़ेशन नियम कॉन्फ़िगर करें। - -Comparison -तुलना - -Synchronization -सिंक्रनाइज़ेशन - -This week -इस सप्ताह - -This month -इस महीने - -This year -इस साल - -Byte -बाइट - -KB -KB - -MB -MB - -Retain deleted and overwritten files in the recycle bin -हटा दी गईं और अधिलेखित फ़ाइल्स को रीसायकल बिन में बनाए रखें - -Delete and overwrite files permanently -फ़ाइल्स को स्थाई रूप से हटाया और आधिलेखित करें - -Replace -बदलें - -Move files and replace if existing -फ़ाइल्स ले जाएं और मौजूद हों तो अधिलेखित करें - -Time stamp -समय मोहर - -Move files into a time-stamped subfolder -फ़ाइलों को कोई समय-मुद्रित सबफ़ोल्डर में ले जाएं - -File -फ़ाइल - -Append a time stamp to each file name -प्रत्येक फ़ाइल नाम को समय मोहर जोडें - -On completion: -समापन उपरांत: - -On errors: -त्रुटी पर: - -On success: -सफलता पर: - -Main config -मुख्य कॉन्फ़िग - -empty -रीता - -Leave as unresolved conflict -हल नहीं किये गए विरोध के रूप में छोड़ दें - -YYYY-MM-DD hhmmss -YYYY-MM-DD hhmmss - -Minimum version count must be smaller than maximum count. -न्यूनतम संस्करण गणना अधिकतम गणना से छोटी होनी चाहिए। - -&Restore -पुनर्स्थापित करें (&R) - -Files -फ़ाइल्स - -Percentage -प्रतिशत - -Failed to retrieve update information. -अद्यतन जानकारी प्राप्त करने में विफल। - -Automatic updates: -स्वचालित अद्यतन: - -Check for Program Updates -प्रोग्राम अद्यतनों के लिए जाँच करें - -Auto-update now or download manually from the FreeFileSync home page? -स्वत: अद्यतन करें या मैन्युअल रूप से FreeFileSync मुख पृष्ठ से डाउनलोड करें? - -&Auto-update -स्वत: अद्यतन करें (&A) - -&Home page -मुख पृष्ठ (&H)) - -Download now? -अभी डाउनलोड करें? - -&Download -डाउनलोड (&D) - -FreeFileSync is up to date. -FreeFileSync नवीनतम है। - -Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now? -वर्तमान FreeFileSync संस्करण संख्या ऑनलाइन नहीं मिल सकती. नया संस्करण उपलब्ध होने की संभावना है। मैन्युअल रूप से अभी जाँच करें? - -&Check -जाँच करें (&C) - -Consistency check failed for %x. -%x की संगतता जाँच विफल। - -Installation was registered on a different operating system. -स्थापना किसी अन्य ऑपरेटिंग सिस्टम पर पंजीकृत है। - -Failed to activate FreeFileSync Donation Edition. -FreeFileSync दान संस्‍करण सक्रिय करने में विफल। - -Incorrect activation key. -अनुचित सक्रियण कुंजी। - -Unable to register to receive system messages. -सिस्टम संदेशों को प्राप्त करने के लिए पंजीकृत करने में असमर्थ। - -The %x installation option is only available in the FreeFileSync Donation Edition. -%x स्थापना विकल्प केवल FreeFileSync दान संस्‍करण में ही उपलब्ध है। - -Cannot find system function %x. -सिस्टम फ़ंकशन %x ढूंढ नहीं सकते। - -Unable to register device notifications for %x. -%x के लिए उपकरण सूचनाएँ पंजिकृत करने में असमर्थ। - -The file is locked by another process: -फ़ाइल किसी अन्य प्रक्रिया द्वारा अवरोधित है: - -Failed to determine file permission support for folder %x. -%x फ़ोल्डर के लिए फ़ाइल अनुमति समर्थन निर्धारित करने में विफल। - -Cannot read security context of %x. -%x का सुरक्षा संदर्भ पढ़ नहीं सकते। - -Cannot write security context of %x. -%x का सुरक्षा संदर्भ लिख नहीं सकते। - -Cannot read permissions of %x. -%x की अनुमतियां पढ़ नहीं सकते। - -Cannot copy permissions from %x to %y. -%x से %y अनुमतियां प्रतिलिपित नहीं कर सकते। - -%x is not a regular directory name. -%x कोई नियमित निर्देशिका नाम नहीं है। - -Cannot copy attributes from %x to %y. -%x से %y गुण प्रतिलिपित नहीं कर सकते। - -%x TB -%x TB - -%x PB -%x PB - - -1 min -%x min - - -1 मिनट -%x मिनट - - - -1 hour -%x hours - - -1 घंटा -%x घंटे - - -Cannot set privilege %x. -विशेषाधिकार %x सेट नहीं कर सकते। - -Unable to suspend system sleep mode. -सिस्टम स्लीप मोड को स्थगित करने में असमर्थ। - -Cannot change process I/O priorities. -प्रक्रिया I/O प्राथमिकताओं को बदल नहीं सकते। - -Checking recycle bin failed for folder %x. -निर्देशिका %x के लिए रीसायकल बिन की जाँच विफल। - -Unable to shut down the system. -सिस्टम को बंद करने में असमर्थ। - -Prepare installation -स्थापना तैयारी - -Choose which components you want to install. -जिन घटकों को आप स्थापित करना चाहते हैं उन्हें चुनें। - -Select installation type: -स्थापना प्रकार चुनें: - -Local -स्थानीय - -Portable -पोर्टेबल - -Save settings in %x -सेटिंग्ज़ को %x में सहेजें - -Register FreeFileSync file extensions -FreeFileSync फ़ाइल ऐक्सटेंशंस पंजिकृत करें - -Create Explorer context menu entries -एक्सप्लोरर प्रसंग मेनू प्रविष्टियां बनाएं - -Save settings in installation directory -स्थापना निर्देशिका में सेटिंग्ज़ सहेजें - -Do not write to Registry -रजिस्ट्री में ना लिखें - -Just copy the files -फ़ाइल्स केवल प्रतिलिपित करें - -Choose a directory for installation: -स्थापना के लिए निर्देशिका चुनें: - -Create shortcuts: -शॉर्टकट्‍स बनाएं: - -Desktop -डेस्कटॉप - -Start Menu -प्रारंभ मेनू - -Send To -इन्हें भेजें - -Registering FreeFileSync file extensions -FreeFileSync फ़ाइल एक्सटेंशंस पंजिकृत हो रहे हैं - -Unregistering FreeFileSync file extensions -FreeFileSync फ़ाइल एक्सटेंशंस अपंजिकृत हो रहे हैं - -FreeFileSync Configuration -FreeFileSync कॉन्फ़िगरेशन - -FreeFileSync Batch File -FreeFileSync बॅच फ़ाइल - -FreeFileSync Synchronization Database -FreeFileSync सिंक्रनाइज़ेशन डेटाबेस - -RealTimeSync Configuration -RealTimeSync कॉन्फ़िगरेशन - -Edit with FreeFileSync -FreeFileSync के साथ संपादित करें - -Instead of an ad, here's an animal. -कोई विज्ञापन के बजाय, यहाँ एक पशु है। - -The FreeFileSync portable version cannot install into a subfolder of %x. -FreeFileSync पोर्टेबल संस्करण %x के उप-निर्देशिका में स्थापित नहीं किया जा सकता। - -Please choose the local installation type or select a different folder for installation. -स्थापना के लिए कृपया स्थानीय स्थापना प्रकार चयन करें या कोई और निर्देशिका चुनें। - -Get the Donation Edition with bonus features and help keep FreeFileSync ad-free. -दान संस्‍करण बोनस सुविधाओं के साथ प्राप्त करें और FreeFileSync विज्ञापन-रहित रखने में मदद करें। - diff --git a/FreeFileSync/Build/Resources/Languages/hungarian.lng b/FreeFileSync/Build/Resources/Languages/hungarian.lng deleted file mode 100755 index a280724a..00000000 --- a/FreeFileSync/Build/Resources/Languages/hungarian.lng +++ /dev/null @@ -1,2136 +0,0 @@ -
- Magyar - szittner - hu_HU - flag_hungary.png - 2 - n == 1 ? 0 : 1 -
- -Cannot read file %x. -%x állomány nem olvasható. - - -Unexpected size of data stream. -Expected: %x bytes -Actual: %y bytes - - -Az adatfolyam mérete eltér a várttól -Várt: %x bájt -Tényleges: %y bájt - - -Cannot write file %x. -%x állomány írása sikertelen. - -Cannot write permissions of %x. -%x jogosultságait nem lehet felírni. - -Operation not supported between different devices. -A művelet nem támogatott különböző eszközök között. - -Cannot delete file %x. -%x állomány nem törölhető. - -Cannot delete symbolic link %x. -%x szimbolikus hivatkozás nem törölhető. - -Cannot delete directory %x. -%x könyvtár nem törölhető. - -Cannot move file %x to %y. -%x állomány nem mozgatható %y-ba. - -Cannot copy symbolic link %x to %y. -%x szimbolikus hivatkozás nem másolható %y-ba. - -Error Code %x -Hibakód %x - -Cannot read directory %x. -%x könyvtár nem olvasható. - -Cannot write modification time of %x. -%x módosításának időpontja nem rögzíthető. - -Cannot read file attributes of %x. -%x állomány attribútumai nem olvashatók. - -Cannot create directory %x. -%x könyvtár nem hozható létre. - -Cannot determine final path for %x. -%x számára a végső útvonal nem határozható meg. - -Operation not supported by device. -Az eszköz nem támogatja a műveletet. - -Cannot resolve symbolic link %x. -%x szimbolikus hivatkozás nem oldható fel. - -Unable to move %x to the recycle bin. -%x nem helyezhető Lomtárba. - -Authentication completed. -Hitelesítés befejezve. - -You may close this page now and continue with FreeFileSync. -Most bezárhatja ezt az oldalt és folytathatja a FreeFileSync-et. - -Authentication failed. -Hitelesítés sikertelen. - -Unable to connect to %x. -Nem képes %x-hez kapcsolódni. - -Cannot find %x. -%x nem található. - -The name %x is used by more than one item in the folder. -A(z) %x nevet nem csak egy elem viseli a könyvtárban. - -Please authorize access to user account %x. -Engedélyezze a hozzáférést a(z) %x felhasználói azonosítóhoz. - -Cannot open file %x. -%x állomány nem nyitható meg. - -The name %x is already used by another item. -%x nevet már más elem használja. - -Cannot determine free disk space for %x. -%x-nek nem határozható meg szabad tárterület. - -Unable to disconnect from %x. -Nem sikerült leválasztani %x-től. - -Unable to access %x. -%x nem elérhető. - -Failed to get information about server %x. -%x szerverről nem sikerült információt kapni. - -Cannot monitor directory %x. -%x könyvtárat nem sikerült monitorozni. - -Cannot find device %x. -%x eszköz nem található. - -Cannot open directory %x. -%x könyvtár nem nyitható meg. - -Unsupported item type. -Nem támogatott elemtípus. - -Incorrect command line: -Hibás parancssor: - -The server does not support authentication via %x. -A szerver nem támogatja a(z) %x általi autentikációt. - -Required: -Szükséges: - - -Operation timed out after 1 second. -Operation timed out after %x seconds. - - -A művelet 1 másodperc után időtúllépés miatt leállt. -A művelet %x másodperc után időtúllépés miatt leállt. - - - -Cannot wait on more than 1 connection at a time. -Cannot wait on more than %x connections at a time. - - -Nem tud 1-nél több kapcsolatra várni egyidejűleg. -Nem tud több mint %x kapcsolatra várni egyidejűleg. - - -Active connections: %x -Aktív kapcsolatok száma: %x - -Failed to open SFTP channel number %x. -Hiba a(z) %x számú SFTP csatorna megnyitása során. - -Both sides have changed since last synchronization. -Mindkét oldal megváltozott az utolsó szinkronizálás óta. - -Cannot determine sync-direction: -Nem meghatározható a szinkronizálás iránya: - -No change since last synchronization. -Az utolsó szinkronizálás óta nem történt változás. - -The database entry is not in sync considering current settings. -Az adatbázis-bejegyzés nincs összhangban, figyelembe véve a jelenlegi beállításokat. - -Setting default synchronization directions: Old files will be overwritten with newer files. -Alapértelmezett szinkronizálási irányok beállítása: a régebbi állományokat írja felül az újabbakkal. - -Creating file %x -%x állomány létrehozása - -Creating folder %x -%x könyvtár létrehozása - -Creating symbolic link %x -%x szimbolikus hivatkozás létrehozása - -Moving file %x to the recycle bin -%x állományt a Lomtárba helyezi - -Moving folder %x to the recycle bin -%x könyvtárat a Lomtárba helyezi - -Moving symbolic link %x to the recycle bin -%x szimbolikus hivatkozást a Lomtárba helyezi - -Deleting file %x -%x állomány törlése - -Deleting folder %x -%x könyvtár törlése - -Deleting symbolic link %x -%x szimbolikus hivatkozás törlése - -Checking recycle bin availability for folder %x... -A Lomtár elérhetőségének ellenőrzése %x könyvtár vonatkozásában... - -The recycle bin is not supported by the following folders. Deleted or overwritten files will not be able to be restored: -A lomtár nem támogatott a következő könyvtáraknál. A törölt vagy felülírt állományokat nem lehet majd helyreállítani: - -An exception occurred -Kivétel lépett fel - -A left and a right directory path are expected after %x. -Egy bal és egy jobb oldali könyvtár-útvonalra van szükség %x után. - -Syntax error -Szintaktikai hiba - -Cannot find file %x. -Nem található a(z) %x állomány. - -Error -Hiba - -File %x does not contain a valid configuration. -%x állomány nem tartalmaz érvényes beállításokat. - -The config file must not contain settings at directory pair level when directories are set via command line. -A konfigurációs állomány nem tartalmazhat beállításokat könyvár-pár szinten, ha a könyvtárakat parancssorban állítjuk be. - -Directories cannot be set for more than one configuration file. -A könyvtárakat nem lehet egynél több konfigurációs állományhoz beállítani. - -Command line -Parancssor - -Syntax: -Szintaxis: - -config files: -konfigurációs állományok: - -directory -könyvtár - -global config file: -globális konfigurációs állomány: - -Any number of FreeFileSync "ffs_gui" and/or "ffs_batch" configuration files. -Tetszőleges számú "ffs_gui" és/vagy "ffs_batch" konfigurációs állomány készíthető a FreeFileSync-hez. - -Any number of alternative directory pairs for at most one config file. -Tetszőleges számú alternatív könyvtár-pár legfeljebb egy konfigurációs állományban. - -Open the selected configuration for editing only, without executing it. -A kiválasztott konfigurációt csak szerkesztésre nyissa meg végrehajtás nélkül. - -Path to an alternate GlobalSettings.xml file. -Útvonal egy alternatív GlobalSettings.xml állományhoz. - -Installation files are corrupted. Please reinstall FreeFileSync. -A telepítő állományok sérültek. Installálja újra a FreeFileSync-et. - -Cannot find the following folders: -A következő könyvtárak nem találhatóak: - -The following folders do not yet exist: -A következő könyvtárak jelenleg nem léteznek: - -The folders are created automatically when needed. -A könyvárakat automatikusan létrehozza, amikor az szükséges. - -The following folder paths differ in case. Please use a single form in order to avoid duplicate accesses. -A következő útvonalak kis- és nagybetű használatában különböznek. Használjon egységes formát az ismételt hozzáférés elkerülése érdekében. - -Scanning: -Vizsgálat: - -Comparison finished: -Az összehasonlítás befejeződött: - - -1 item found -%x items found - - -1 tételt találtam -%x tételt találtam - - -Time elapsed: -Eltelt idő: - -File %x has an invalid date. -%x állomány dátuma érvénytelen. - -Date: -Dátum: - -Files have the same date but a different size. -Az állományok azonos dátumúak, de eltérő méretűek. - -Size: -Méret: - -Content comparison was skipped for excluded files. -A kizárt állományok tartalmának összehasonlítása kihagyva. - -Items differ in attributes only -Az elemek csak attribútumaikban különböznek - -Resolving symbolic link %x -%x szimbolikus hivatkozás feloldása - -Comparing content of files %x -%x állomány tartalmának összehasonlítása - -Generating file list... -Állomány-lista generálása... - -Fail-safe file copy -Hibamentes állomány-másolás - -Enabled -Engedélyezett - -Disabled -Letiltott - -Copy locked files -Zárolt állományok másolása - -Copy file access permissions -Az állomány-hozzáférési jogosultságok másolása - -File time tolerance -Állományok időkülönbségének tűréshatára - -Run with background priority -Futtatás háttér prioritással - -Lock directories during sync -Könyvtárak zárolása szinkronizálás idejére - -Verify copied files -Másolt állományok ellenőrzése - -Using non-default global settings: -Nem az alapértelmezett általános beállítások használata: - -A folder input field is empty. -A könyvtár beviteli mező üres. - -The corresponding folder will be considered as empty. -A megfelelő könyvtárat üresként kezeli. - -Exclude: -Zárja ki: - -One base folder of a folder pair is contained in the other one. -A könyvtár-pár egyik eleme be van ágyazva a másikba. - -The folder should be excluded from synchronization via filter. -A könyvtárat szűrő használatával lehet a szinkronizálásából kizárni. - -Calculating sync directions... -Szinkronizálási irányok számítása... - -Out of memory. -Memória túlcsordulás. - -Show in Explorer -Mutassa az Intézőben - -Open with default application -Nyissa meg az alapértelmezett alkalmazással - -Browse directory -Tallózza a könyvtárat - -Database file %x is incompatible. -%x adatbázis-állomány nem kompatibilis. - -Initial synchronization: -Kezdeti szinkronizálás: - -Database file %x does not yet exist. -%x adatbázis-állomány még nem létezik. - -Database file is corrupted: -A következő adatbázis állomány sérült: - -Loading file %x... -%x állomány betöltése... - -The database files do not yet contain information about the last synchronization. -Az adatbázis állományok nem tartalmaznak információt a legutóbbi szinkronizálásról. - -Saving file %x... -%x állomány mentése... - -Searching for folder %x... -%x könyvtár keresése... - -Timeout while searching for folder %x. -Időtúllépés a(z) %x könyvtár keresése folyamán. - -Cannot get process information. -Nem sikerült lekérdezni a processz-információkat. - -Waiting while directory is locked: -Várakozás amíg a könyvtár zárolt: - -Lock owner: -Zárolás gazdája: - -Detecting abandoned lock... -Elhagyott zárolást érzékel... - - -1 sec -%x sec - - -1 mp -%x mp - - -Item exists on left side only -Az elem csak a bal oldalon létezik - -Item exists on right side only -Az elem csak a jobb oldalon létezik - -Left side is newer -A bal oldal újabb - -Right side is newer -A jobb oldal újabb - -Items have different content -Az elemek tartalma különböző - -Both sides are equal -Mindkét oldal azonos - -Conflict/item cannot be categorized -Az ütközés/elem nem kategorizálható - -Copy new item to left -Új elem másolása a bal oldalra - -Copy new item to right -Új elem másolása a jobb oldalra - -Delete left item -Bal oldali elem törlése - -Delete right item -Jobb oldali elem törlése - -Move file on left -Bal oldali állomány mozgatása - -Move file on right -Jobb oldali állomány mozgatása - -Update left item -Bal oldali elem frissítése - -Update right item -Jobb oldali elem frissítése - -Do nothing -Nincs mit végrehajtani - -Update attributes on left -Attribútumok frissítése a bal oldalon - -Update attributes on right -Attribútumok frissítése a jobb oldalon - -Error parsing file %x, row %y, column %z. -Hiba történt a feldolgozás közben: %x állomány, %y sor, %z oszlop. - -Services -Szervizek - -Show All -Összest Mutassa - -Hide Others -Rejtse a többit - -Hide %x -Rejt %x - -Quit %x -Leállít %x - -Cannot set directory locks for the following folders: -Nem lehet beállítani a könyvtárak lockolását a következő könyvtárakhoz: - -Errors: -Hiba: - -Warnings: -Figyelmeztetés: - -Items processed: -Feldolgozott elemek száma: - -Items remaining: -Hátralévő elemek száma: - -Total time: -Összes időszükséglet: - -Warning -Figyelmeztetés - -Stopped -Leállítva - -Cleaning up log files: -A log állományok törlése: - - -1 thread -%x threads - - -1 szál -%x szál - - -%x/sec -%x/sec - -%x items -%x elem - -Completed successfully -Sikeresen végrehajtva - -Completed with warnings -Figyelmeztetéssel végrehajtva - -Completed with errors -Hibák mellett végrehajtva - -Cannot access the Volume Shadow Copy Service. -Nem elérhető a Kötet Árnyék-másolat szolgáltatás. - -Please run the 64-bit version of FreeFileSync to create shadow copies on this system. -Ezen a rendszeren árnyék másolatok készítéséhez futtassa a FreeFileSync 64 bites verzióját. - -Volume name %x is not part of file path %y. -%x kötet-név nem része a(z) %y állomány elérési útvonalának. - -File time and size -Állomány dátuma és mérete - -File content -Állomány tartalma - -File size -Állomány mérete - -Two way -Kétirányú - -Mirror -Tükröz - -Update -Frissít - -Custom -Egyedi - -Multiple... -Sokszoroz... - -Cannot write file attributes of %x. -%x állomány attribútumainak írása nem sikerült. - -%x and %y have different content. -%x és %y tartalma különböző. - -Data verification error: -Adat ellenőrzési hiba: - -Moving file %x to %y -%x állomány mozgatása ide: %y - -Moving folder %x to %y -%x könyvtár mozgatása ide: %y - -Moving symbolic link %x to %y -%x szimbolikus hivatkozás mozgatása ide: %y - -Updating file %x -%x állomány frissítése - -Updating symbolic link %x -%x szimbolikus hivatkozás frissítése - -Verifying file %x -%x állomány ellenőrzése - -Updating attributes of %x -%x attribútumainak frissítése - -Source item %x not found -%x forrás állományt nem találom - -Parent folder %x is not existing. -%x szülő könyvtár nem létezik. - -Cannot copy file %x to %y. -%x állomány nem másolható %y-ba. - -Creating a Volume Shadow Copy for %x... -%x számára árnyékmásolat-kötetet készítése... - -Cannot find folder %x. -%x könyvtárat nem találom. - -Target folder %x is already existing, but was not available during folder comparison. -%x célkönyvtár már létezik, de nem volt hozzáférhető a könyvtár-összehasonlítás során. - -Target folder input field must not be empty. -A célkönyvtár beviteli mezője nem lehet üres. - -Source folder %x not found. -%x forráskönyvtár nem található. - -Please enter a target folder for versioning. -Adja meg a célkönyvtárat a verziókövetéshez. - -The following items have unresolved conflicts and will not be synchronized: -A következő elemek feloldatlan ütközést tartalmaznak, így nem lesznek szinkronizálva: - -Folder pair: -Könyvtár-pár: - -The following folders are significantly different. Please check that the correct folders are selected for synchronization. -Az érintett könyvtárak lényegileg különböznek. Kérem ellenőrizze, a megfelelő könyvtárakat választotta-e ki szinkronizálásra. - -Not enough free disk space available in: -Nincs elég szabad lemezterület: - -Available: -Hozzáférhető: - -Some files will be synchronized as part of multiple base folders. -Egyes állományokat több alapkönyvár részeként is szinkronizálni fog. - -To avoid conflicts, set up exclude filters so that each updated file is included by only one base folder. -Az ütközések elkerülése érdekében állítsa be úgy a kizáró szűrőket, hogy minden felülírt állomány csak egy eredeti könyvtárban forduljon elő. - -Versioning folder: -Verzióképző könyvtár: - -Base folder: -Alapkönyvtár: - -The versioning folder is contained in a base folder. -A verzióképző könyvtárat az alapkönyvtár tartalmazza. - -Synchronizing folder pair: -A szinkronizálódó könyvtár-pár: - -Generating database... -Adatbázis generálása... - -Searching for old file versions: -Régi állomány-változatok keresése: - -Removing old file versions: -Régi állomány-változatok törlése: - -Unable to create time stamp for versioning: -Nem képes időbélyegzés létrehozására a verzióképzéshez: - -Drag && drop -Húzd && Ejtsd - -Select a folder -Könyvtárat kiválaszt - -&New -&Új - -&Open... -&Megnyitás... - -Save &as... -Mentés m&ásként... - -E&xit -&Kilép - -&File -&Állomány - -&View help -&Lásd a súgót - -&About -&A programról - -&Help -&Súgó - -Usage: -Használat: - -Select folders to watch. -Válaszd ki a figyelendő könyvtárat. - -Enter a command line. -Add meg a parancssort. - -Press 'Start'. -Nyomd meg a Start gombot. - -To get started just import a "ffs_batch" file. -Az induláshoz importáljon egy "ffs_batch" állományt. - -Folders to watch: -Figyelendő könyvtárak: - -Add folder -Könyvtárat hozzáad - -Remove folder -Könyvtárat eltávolít - -Browse -Tallóz - -Idle time (in seconds): -Üresjárat időtartama (másodpercben): - -Idle time between last detected change and execution of command -Üresjárat időtartama az utolsó változás észlelése és a parancs végrehajtása között - -Command line: -Parancssor: - -&Hide console window -&Rejtse a konzol ablakot - - -The command is triggered if: -- files or subfolders change -- new folders arrive (e.g. USB stick insert) - - -A parancs végrehajtódik, ha: -- állományok vagy alkönyvtárak megváltoznak -- új könyvtárak jelennek meg (pl. USB-kulcs csatlakoztatása) - - -Start -Indítás - -About -A programról - -Build: %x -Build: %x - -All files -Összes állomány - -Automated Synchronization -Automatizált szinkronizálás - -The %x protocol does not support directory monitoring: -%x protokoll nem támogatja a könyvtár-figyelést: - -Directory monitoring active -A könyvtár figyelés aktív - -Waiting until directory is available: -Várakozás, amíg a könyvtár elérhető lesz: - -&Configure -&Konfigurál - -&Show error message -&Mutassa a hibaüzenetet - -&Quit -&Kilépés - -&Retry -&Ismét - - -1 byte -%x bytes - - -1 bájt -%x bájt - - -%x MB -%x MB - -%x KB -%x kB - -%x GB -%x GB - -Loading... -Tölti... - -Scanning... -Vizsgálat folyamatban... - -configuration file -Konfigurációs állomány - -System: Sleep -Rendszer: alvási állapotban - -System: Shut down -Rendszer: Leállítva - -Nothing to synchronize -Nincs mit szinkronizálni - -Executing command: -Végrehajtott parancs: - -You can switch to FreeFileSync's main window to resolve this issue. -E jelenség megoldásához kapcsoljon át a FreeFileSync fő ablakába. - -&Don't show this warning again -&Ne mutassa ismételten ezt a figyelmeztetést - -&Ignore -&Kihagy - -&Switch -&Váltás - -Switching to FreeFileSync's main window -Átkapcsolás a FreeFileSync fő ablakába - -Automatic retry -Automatikusan újrapróbálja - -Ignore &all -&Mindent kihagy - -Retrying operation... -Újra próbálja a műveletet... - -Serious Error -Komoly hiba - -Last session -Utolsó munkamenet - -Today -Mai - - -1 day -%x days - - -1 nap -%x nap - - -Name -Név - -Last sync -Legutóbbi szinkronizálás - -Log -Napló - -Folder -Könyvtár - -Symlink -Szimbolikus link - -Full path -Teljes elérési útvonal - -Relative path -Relatív elérési útvonal - -Item name -Elem neve - -Size -Méret - -Date -Dátum - -Extension -Kiterjesztés - -Category -Kategória - -Action -Művelet - -Local comparison settings -Helyi összehasonlítási beállítások - -Local synchronization settings -Helyi szinkronizálási beállítások - -Local filter -Helyi szűrő - -Active -Aktív - -None -Egyik sem - -Remove local settings -Törli a helyi beállításokat - -Clear local filter -Törli a helyi szűrőt - -Copy -Másol - -Paste -Beilleszt - -The selected folder %x cannot be used with FreeFileSync. -A kiválasztott %x könyvtárat nem lehet a FreeFileSync-kel használni. - -Please select a folder on a local file system, network or an MTP device. -Kérem válasszon egy könyvtárat a helyi fájlrendszerben, a hálózaton vagy egy MTP eszközön. - -Defined by context of use -A használati környezet által meghatározott - -Requires FreeFileSync Donation Edition -A FreeFileSync támogatói kiadása szükséges - -&Save -&Ment - -Save as &batch job... -Mentse &kötegelt feladatként... - -Show &log -Mutassa a &logokat - -Start &comparison -Kezdje az &összehasonlítást - -C&omparison settings -Öss&zehasonlítási beállítások - -&Filter settings -&Szűrési beállítások - -S&ynchronization settings -Sz&inkronizálási beállítások - -Start &synchronization -Kezdje a &szinkronizálást - -&Actions -&Műveletek - -&Preferences -&Preferenciák - -&Language -&Nyelv - -&Find... -Ke&res... - -&Export file list... -&Exportálja az állománylistát... - -&Reset layout -&Alapállapotba állítja a megjelenést - -&Tools -Es&zközök - -&Check for updates now -&Új változat keresése most - -Check &automatically once a week -&Automatikus ellenőrzés hetente - -Cancel -Mégsem - -Compare -Összehasonlít - -Synchronize -Szinkronizál - -Add folder pair -Adjon hozzá könyvtár-párt - -Remove folder pair -Távolítsa el a könyvtár-párt - -Access online storage -Online tároló elérése - -Close search bar -Zárja be a keresési sávot - -Find: -Keres: - -Match case -Kis-/nagybetű megkülönböztetése - -Processed: -Feldolgozott: - -Remaining: -Hátralevő: - -New -Új - -Open... -Megnyit... - -Save -Ment - -Save as... -Mentse mint... - -View type: -Nézet típusa: - -Select view: -Válasszon nézetet: - -Save as default -Mentse mint alapértelmezést - -Statistics: -Statisztika: - -Number of files and folders that will be deleted -A törlendő állományok és könyvtárak száma - -Number of files that will be updated -Frissítendő állományok száma - -Number of files and folders that will be created -A létrehozandó állományok és könyvtárak száma - -Total bytes to copy -Összesen másolandó bájtok - -Arrange folder pair -Kezelje a könyvtár-párt - -Main settings: -Fő beállítások: - -Use local settings: -Használja a helyi beállításokat: - -Select a variant: -Válasszon egy változatot: - -Include &symbolic links: -Tartalmazza a &szimbolikus hivatkozásokat: - -&Follow -&Folytat - -&Direct -&Direkt - -More information -További információ - -&Ignore time shift [hh:mm] -Hagyja figyelmen kívül az &időeltolódást [óó:pp] - -List of file time offsets to ignore -A figyelmen kívül hagyandó állomány-időpont eltolások listája - -Example: -Példa: - -Handle daylight saving time -Kezelje a nyári időszámítás különbségét - -Ignore errors -Hagyja figyelmen kívül a hibákat - -Retry count: -Visszatérések száma: - -Delay (in seconds): -Késés (másodpercben): - -Performance improvements: -Teljesítmény növelése: - -Parallel file operations: -Párhuzamos állomány-műveletek: - -How to get best performance? -Hogyan lehet elérni a legjobb teljesítményt? - -Local settings: -Helyi beállítások: - -Include: -Bevonva: - -Show examples -Mutasson példákat - -Select filter rules to exclude certain files from synchronization. Enter file paths relative to their corresponding folder pair. -Meghatározott állományok szinkronizálásból történő kizárásához válasszon szűrőt. Az útvonalakat a megfelelő könyvtár-párjaikhoz viszonyítva adja meg. - -File size: -Állomány mérete: - -Minimum: -Minimum: - -Maximum: -Maximum: - -Time span: -Idősáv (időtartam): - -C&lear -&Töröl - -Detect moved files -Érzékelje a mozgatott állományokat - - -- Not supported by all file systems -- Requires and creates database files -- Detection not available for first sync - - -- Nem minden állományrendszer támogatja -- Adatbázis állományokat igényel és készít -- Az érzékelés az első szinkronizálásnál nem biztosított - - -Delete files: -Törölje a következő állományokat: - -&Recycle bin -Lomtá&r - -&Permanent -&Állandó - -&Versioning -&Verziókezelés - -Move files to a user-defined folder -Mozgassa az állományokat egy a felhasználó által meghatározott könyvtárba - -Naming convention: -Elnevezési megállapodás: - -Limit file versions: -Korlátozza az állomány-verziók számát: - -Last x days: -legutóbbi x nap: - -&Override default log path: -&Felülírja az alapértelmezett log útvonalat: - -Run a command: -Futtasson egy parancsot: - -OK -OK - -Connection type: -Kapcsolat típusa: - -Connected user accounts: -Kapcsolt felhasználói azonosítók: - -&Add connection -&Adja hozzá a kapcsolatot - -&Disconnect -&Leválaszt - -Selected user account: -Kiválasztott felhasználói azonosító: - -Server name or IP address: -Szerver neve vagy IP címe: - -Port: -Port: - -Encryption: -Titkosítás: - -&Disabled -&Lekapcsolva - -&Explicit SSL/TLS -&Explicit TLS/SSL felett - -Authentication: -Azonosítás: - -&Password -&Jelszó - -&Key file -&Kulcs állomány - -&SSH agent -&SSH ügynök - -User name: -Felhasználó név: - -Private key file: -Magánkulcs állomány: - -&Show password -Muta&ssa a jelszót - -Directory on server: -Könyvtár az alábbi szerveren: - -Access timeout (in seconds): -Hozzáférési várakozási idő (másodpercben): - -SFTP channels per connection: -SFTP csatornák száma kapcsolatonként: - -Detect server limit -Szerver korlátainak észlelése - -Select Folder -Könyvtár kiválasztása - -Variant: -Variáns: - -&Don't show this dialog again -&Ne mutassa ismételten ezt a párbeszédablakot - -Bytes: -Bájt: - -Items: -Tétel: - -Synchronizing... -Szinkronizálás folyamatban... - -Minimize to notification area -Minimalizálja a figyelmeztetési területre - -Bytes -Bájt - -Items -Elem - -When finished: -Ha befejezte: - -Auto-close -Automatikusan bezár - -Close -Bezár - -&Pause -&Várakozás - -Stop -Leállít - -Create a batch file for unattended synchronization. To start, double-click this file or schedule in a task planner: %x -Készítsen egy parancsállományt a felügyelet nélküli szinkronizáláshoz. Az indításhoz kattintson kétszer erre az állományra vagy ütemezze a feladat-tervezőben: %x - -Progress dialog: -Előrehaladási üzenet: - -Run minimized -Minimalizálva fusson - -Show pop-up on errors or warnings -Hiba vagy figyelmeztetés esetén mutasson párbeszédablakot - -&Cancel -&Elvet - -Stop synchronization at first error -Állítsa le a szinkronizálást az első hibánál - -How can I schedule a batch job? -Hogyan tudok kötegelt feldolgozást ütemezni? - -&Keep relative paths -&Tartsa meg a relatív útvonalat - -&Overwrite existing files -&Felülírja a létező állományokat - -The following settings are used for all synchronization jobs. -A következő beállítások minden szinkronizálási feladatnál használja. - - -Copy to a temporary file (*.ffs_tmp) before overwriting target. -This guarantees a consistent state even in case of a serious error. - - -Másolja először egy ideiglenes (*.ffs_tmp) állományba, mielőtt felülírja a célállományt. -Ez garantálja a konzisztens állapotot egy komoly hiba esetén is. - - -recommended -ajánlott - -Copy shared or locked files using the Volume Shadow Copy Service. -Megosztott vagy zárolt állományok másolása a Kötet-árnyékmásolat szolgáltatás használatával. - -requires administrator rights -rendszergazdai jogosultság szükséges - -Transfer file and folder permissions. -Vigye át az állomány- és könyvtár-jogosultságokat. - -Show all permanently hidden dialogs and warning messages again -Mutassa újra az összes ideiglenesen rejtett párbeszédablakot és figyelmeztetést - -Default log path: -Alapértelmezett logolási útvonal: - -&Delete logs after x days: -&Törölje a logokat x nap után: - -Notification sounds: -Figyelmeztető hangjelzések: - -Synchronization finished: -Szinkronizálás befejeződött: - -Customize context menu: -Környezeti menü testreszabása: - -Description -Leírás - -&Default -&Alapértelmezett - -Feedback and suggestions are welcome: -Visszajelzést és javalatokat szívesen látjuk: - -Home page -Honlap - -FreeFileSync Forum -FreeFileSync Fórum - -Email -E-mail - -If you like FreeFileSync: -Ha szereted a FreeFileSync-et: - -Support with a donation -Támogasd adománnyal - -The auto updater was disabled by the administrator. -Az automatikus frissítést a rendszergazda kapcsolta ki. - -Donation details -Támogatás részletei - -Source code written in C++ using: -A programot C++-ban fejlesztették a következők felhasználásával: - -Published under the GNU General Public License: -Közzétéve GNU GPL alatt: - -Many thanks for localization: -Köszönet a lokalizációért: - -Activate the FreeFileSync Donation Edition by one of the following methods: -Aktiválja a FreeFileSync Támogatói kiadását a következő módok egyikével: - -Activate via internet now: -Aktiválja most interneten keresztül: - -Activate online -Aktiválja online - -Retrieve an offline activation key from the following URL: -Igényeljen egy offline aktiváló kulcsot a következő URL-ről: - -&Copy to clipboard -&Másolja a vágólapra - -Enter activation key: -Adja meg az aktiváló kulcsot: - -Activate offline -Aktiváljon online módon - -Highlight configurations that have not been run for more than the following number of days: -Jelölje ki azokat a beállításokat, amelyek nem futottak legalább a következő számú napja: - -FreeFileSync requires access rights to avoid "Operation not permitted" errors when synchronizing your data (e.g. Mail, Messages, Calendars). -A FreeFileSync-nek hozzáférési jogokra van szüksége, hogy elkerüljük a "Nem megengedett művelet" hibákat az adatok (pl. levelek, üzenetek, naptárak) szinkronizálásakor. - -Locate the FreeFileSync app -Keresse meg a FreeFileSync app-ot - -Open Security && Privacy -Nyissa meg a "Biztonság és adatvédelem" fület - -Click the lock to allow changes. -Kattintson a lakatra a változások engedélyezéséhez. - -Drag FreeFileSync into the panel. -Húzza a FreeFileSync-et a panelre. - -Synchronization Settings -Szinkronizálási beállítások - -Access Online Storage -Érje el a online tárolót - -Save as a Batch Job -Mentse mint egy kötegelt (batch) feladatot - -Delete Items -Törölje az elemeket - -Copy Items -Másolja az elemeket - -Options -Beállítások - -Select Time Span -Válassza ki az idősávot (időtartamot) - -Highlight Configurations -Jelölje ki a beállításokat - -Grant Full Disk Access -Biztosítson teljes hozzáférést a lemezhez - -Info -Információ - -No log entries -Nincs log bejegyzés - -Select all -Összeset kiválasztja - -&Options -&Beállítások - -Main Bar -Fő sáv - -Folder Pairs -Könyvtár-párok - -Find -Keres - -View Settings -Mutassa a beállításokat - -Configuration -Beállítás - -Overview -Áttekintés - -Swap sides -Cserélje fel az oldalakat - -Show "%x" -"%x" mutatása - -&Show details -Muta&ssa a részleteket - -FreeFileSync %x is available! -FreeFileSync %x elérhető! - -Local path not available for %x. -%x-hez a helyi útvonal nem érhető el. - -Confirm -Jóváhagy - - -Do you really want to execute the command %y for one item? -Do you really want to execute the command %y for %x items? - - -Tényleg a végre akarja hajtani a(z) %y parancsot a következő elemen? -Tényleg a végre akarja hajtani a(z) %y parancsot a következő %x elemen? - - -&Execute -Vé&grehajt - -Set direction: -Állítsa be az irányt: - -multiple selection -többszörös kijelölés - -&Include via filter: -&Bevonja a szűrő alapján: - -&Exclude via filter: -&Kizárja a szűrő alapján: - -Include temporarily -Csatolja ideiglenesen - -Exclude temporarily -Zárja ki ideiglenesen - -&Synchronize selection -&Szinkronizálja a kiválasztottakat - -&Copy to... -&Másolja oda... - -&Delete -&Törölje - -Show icons: -Mutassa az ikonokat: - -Small -Kicsi - -Medium -Közepes - -Large -Nagy - -Select time span... -Időintervallum kiválasztása... - -Donation Edition -Támogatói kiadás - -Folder Comparison and Synchronization -Könyvtár összehasonlítás és szinkronizálás - -Configuration saved -Beállítások elmentve - -FreeFileSync batch -FreeFileSync kötegelt állomány - -Do you want to save changes to %x? -Akarod menteni a(z) %x változtatásait? - -Never save &changes -N&e mentse a változásokat - -Do&n't save -&ne mentse - -%x cannot be renamed. -%x nem átnevezhető. - -New name: -Új név: - -Rename Configuration -Konfiguráció Átnevezése - -Configuration name must not be empty. -A konfiguráció neve nem lehet üres. - -&Rename... -Á&tnevezés... - -Hide configuration -Rejtse el a beállítást - -Highlight... -Emelje ki... - -Clear filter -Törölje a szűrőt - -Show files that exist on left side only -Mutassa a csak a bal oldalon létező állományokat - -Show files that exist on right side only -Mutassa a csak a jobb oldalon létező állományokat - -Show files that are newer on left -Mutassa az állományokat, amelyek a bal oldalon frissebbek - -Show files that are newer on right -Mutassa az állományokat, amelyek a jobb oldalon frissebbek - -Show files that are equal -Mutassa az egyező állományokat - -Show files that are different -Mutassa az eltérő állományokat - -Show conflicts -Mutassa az ütközéseket - -Show files that will be created on the left side -Mutassa a bal oldalon létrehozandó állományokat - -Show files that will be created on the right side -Mutassa a jobb oldalon létrehozandó állományokat - -Show files that will be deleted on the left side -Mutassa a bal oldalon törlendő állományokat - -Show files that will be deleted on the right side -Mutassa a jobb oldalon törlendő állományokat - -Show files that will be updated on the left side -Mutassa a bal oldalon a frissítendő állományokat - -Show files that will be updated on the right side -Mutassa a jobb oldalon a frissítendő állományokat - -Show files that won't be copied -Mutassa az állományokat, amelyek nem kerülnek másolásra - -Show filtered or temporarily excluded files -Mutassa a szűrt vagy ideiglenesen kizárt állományokat - -Filter -Szűrő - -All files are in sync -Az összes állomány szinkronizált - - -1 directory -%x directories - - -1 könyvtárat -%x könyvtárat - - - -1 file -%x files - - -1 állományt -%x állományt - - - -Showing %y of 1 row -Showing %y of %x rows - - -%y sort mutat az 1-ből -%y sort mutat az %x közül - - -Cannot find %x -Nem található: %x - -Move up -Mozgassa felfelé - -Move down -Mozgassa lefelé - -Comma-separated values -Vesszővel elválasztott értékek (CSV) - -File list exported -Az állománylista exportálása befejeződött - -Searching for program updates... -Programfrissítés keresése... - -Paused -Megállítva - -Stop requested... -Leállítás szükséges... - -Initializing... -Inicializálás... - -Comparing content... -Tartalom összehasonlítása... - -&Continue -&Folytat - -Progress -Haladás - -Thank you, %x, for your donation and support! -%x, köszönöm Önnek adományát és támogatását! - -Connections -Kapcsolatok - -Recommended range: -A javasolt tartomány: - -Do you really want to disconnect from user account %x? -Tényleg bontani akarja a kapcsolatot a(z) %x felhasználói azonosítóval? - -Password: -Jelszó: - -Key passphrase: -Kulcs jelszó: - -Please enter a file path. -Kérem, adjon meg egy állomány-útvonalat. - - -Copy the following item to another folder? -Copy the following %x items to another folder? - - -Másolja a következő elemet egy másik könyvtárba? -Másolja a következő %x elemet egy másik könyvtárba? - - -Please enter a target folder. -Adja meg a célkönyvárat. - - -Do you really want to move the following item to the recycle bin? -Do you really want to move the following %x items to the recycle bin? - - -Tényleg a Lomtárba akarja áthelyezni a következő elemet? -Tényleg a Lomtárba akarja áthelyezni a következő %x elemet? - - -Move -Mozgat - - -Do you really want to delete the following item? -Do you really want to delete the following %x items? - - -Valóban törölni akarod a következő elemet? -Valóban törölni akarod a következő %x elemet? - - -Start to synchronize the selection? -Megkezdje a kiválasztottak szinkronizálását? - -Start synchronization now? -Megkezdje a szinkronizálást? - -Copy DACL, SACL, Owner, Group -Másolja át DACL-t, SACL-t, tulajdonost és csoportot - -Integrate external applications into context menu. The following macros are available: -Integráljon a helyi menübe külső alkalmazásokat. A következő makrók érhetők el: - -Full file or folder path -Teljes állomány vagy könyvtár elérési útvonal - -Parent folder path -Szülő könyvtár elérési útvonala - -Temporary local copy for SFTP and MTP storage -Ideiglenes helyi másolat SFTP és MTP tárolóhoz - -Parameters for opposite side -Paraméterek az ellenkező oldalhoz - -Show hidden dialogs again -Mutassa ismét a rejtett párbeszédablakokat? - -All dialogs shown -Az összes párbeszédablakot mutatja - -Downloading update... -Frissítés letöltése... - -Identify equal files by comparing modification time and size. -Módosítási idő és méret összehasonlítása alapján azonosítsa az azonos állományokat. - -Identify equal files by comparing the file content. -Tartalom összehasonlítása alapján azonosítsa az azonos állományokat. - -Identify equal files by comparing their file size. -Az állományméret összehasonlítása alapján azonosítsa az azonos állományokat. - -Identify and propagate changes on both sides. Deletions, moves and conflicts are detected automatically using a database. -Változások keresése és bemutatása mindkét oldalon. A törléseket, mozgatásokat és ütközéseket automatikusan ismeri fel egy adatbázis segítségével. - -Create a mirror backup of the left folder by adapting the right folder to match. -A baloldali könyvtár tükörmásolatát készíti el úgy, hogy a jobb oldali könyvtár egyezzen meg. - -Copy new and updated files to the right folder. -Másolja az új és módosult állományokat a jobb oldali könyvtárba. - -Configure your own synchronization rules. -Állítsa be a saját szinkronizálási szabályait. - -Comparison -Összehasonlítás - -Synchronization -Szinkronizálás - -This week -E heti - -This month -E havi - -This year -Ez évi - -Byte -Bájt - -KB -kB - -MB -MB - -Retain deleted and overwritten files in the recycle bin -A felülírt vagy törölt állományok megőrzése a lomtárban - -Delete and overwrite files permanently -Véglegesen törli és felülírja az állományokat - -Replace -Felülír - -Move files and replace if existing -Mozgassa és írja felül az állományokat ha léteznek - -Time stamp -Időbélyeg - -Move files into a time-stamped subfolder -Mozgassa az állománokat egy időbélyeggel ellátott alkönyvtárba - -File -Állomány - -Append a time stamp to each file name -Minden állománynévhez adjon egy-egy időbélyeget - -On completion: -Végrehajtás alatt: - -On errors: -Hiba esetén: - -On success: -Ha sikeres volt: - -Main config -Alapbeállítások - -empty -üres - -Leave as unresolved conflict -Hagyja feloldatlan ütközésként - -YYYY-MM-DD hhmmss -ÉÉÉÉ-HH-NN óóppmm - -Minimum version count must be smaller than maximum count. -A minimum verziószám kisebb kell legyen a maximális verziószámnál. - -&Restore -&Visszaállít - -Files -Állományok - -Percentage -Százalék - -Failed to retrieve update information. -Nem sikerült kinyerni a frissítési információt. - -Automatic updates: -Automatikus frissítések: - -Check for Program Updates -Program-frissítések ellenőrzése - -Auto-update now or download manually from the FreeFileSync home page? -Frissítse automatikusan most, vagy letölti külön a FreeFileSync honlapjáról? - -&Auto-update -&Automatikus frissítés - -&Home page -&Honlap - -Download now? -Letöltsem most? - -&Download -&Letölt - -FreeFileSync is up to date. -A FreeFileSync naprakész. - -Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now? -Nem elérhető online a FreeFileSync jelenlegi verziószáma. Egy újabb verzió valószínűleg elérhető. Ellenőrizzem most manuálisan? - -&Check -&Ellenőriz - -Consistency check failed for %x. -%x konzisztencia ellenőrzése sikertelen. - -Installation was registered on a different operating system. -A telepítés más operációs rendszeren volt regisztrálva. - -Failed to activate FreeFileSync Donation Edition. -Nem sikerült aktiválni a FreeFileSync Támogatói kiadását. - -Incorrect activation key. -Nem megfelelő aktiváló kulcs. - -Unable to register to receive system messages. -Nem tud regisztrálni, hogy megkapja a rendszerüzeneteket. - -The %x installation option is only available in the FreeFileSync Donation Edition. -%x telepítési opció csak a FreeFileSync Támogatói Kiadásában érhető el. - -Cannot find system function %x. -%x rendszerfunkció nem elérhető. - -Unable to register device notifications for %x. -%x-hez nem lehet eszköz-értesítéseket regisztrálni. - -The file is locked by another process: -Az állományt egy másik folyamat zárolta: - -Failed to determine file permission support for folder %x. -%x könyvtár állomány jogosultságkezelés-támogatását nem sikerült megállapítani. - -Cannot read security context of %x. -%x biztonsági környezete nem olvasható. - -Cannot write security context of %x. -%x biztonsági környezetét nem sikerült felírni. - -Cannot read permissions of %x. -%x jogosultságai nem olvashatók. - -Cannot copy permissions from %x to %y. -A jogosultságok nem másolhatók %x-ből %y-ba. - -%x is not a regular directory name. -%x nem megfelelő könyvtárnév. - -Cannot copy attributes from %x to %y. -Az attribútumok nem másolhatók %x-ből %y-ba. - -%x TB -%x TB - -%x PB -%x PB - - -1 min -%x min - - -1 perc -%x perc - - - -1 hour -%x hours - - -1 óra -%x óra - - -Cannot set privilege %x. -%x privilégium nem állítható be. - -Unable to suspend system sleep mode. -Nem sikerült felfüggeszteni a rendszer alvó üzemmódját. - -Cannot change process I/O priorities. -Nem sikerült a folyamatok I/O prioritását megváltoztatni. - -Checking recycle bin failed for folder %x. -%x könyvtár vonatkozásában a lomtár ellenőrzése meghiúsult. - -Unable to shut down the system. -Nem képes leállítani a rendszert. - -Prepare installation -Telepítés előkészítése - -Choose which components you want to install. -Válassza ki, mely komponenseket akarja telepíteni. - -Select installation type: -Válassza ki a telepítési módot: - -Local -Lokális - -Portable -Hordozható - -Save settings in %x -%x állománybs mentse a beállításokat - -Register FreeFileSync file extensions -A FreeFileSync állomány-kiterjesztéseinek regisztrálása - -Create Explorer context menu entries -Készítsen környezetfüggő menüsorokat az Explorerbe - -Save settings in installation directory -Beállítások mentése a telepítési mappába - -Do not write to Registry -Ne írjon a rendszerleíró adatbázisba - -Just copy the files -Csak másolja az állományokat - -Choose a directory for installation: -Válassza ki a telepítési mappát: - -Create shortcuts: -Hivatkozások létrehozása: - -Desktop -Asztalon - -Start Menu -Nyitó menü - -Send To -Címzett - -Registering FreeFileSync file extensions -A FreeFileSync állomány-kiterjesztéseinek regisztrálása - -Unregistering FreeFileSync file extensions -A FreeFileSync állomány-kiterjesztések regisztrációjának törlése - -FreeFileSync Configuration -FreeFileSync konfigurálása - -FreeFileSync Batch File -FreeFileSync kötegelt állomány - -FreeFileSync Synchronization Database -FreeFileSync szinkronizációs adatbázis - -RealTimeSync Configuration -RealTimeSync konfigurálása - -Edit with FreeFileSync -Szerkesztés FreeFileSync-kel - -Instead of an ad, here's an animal. -A reklám helyett itt egy állat. - -The FreeFileSync portable version cannot install into a subfolder of %x. -A FreeFileSync hordozható változatát nem lehet telepíteni %x egyik alkönyvtárába. - -Please choose the local installation type or select a different folder for installation. -Válassza a helyi telepítési módot vagy válasszon másik könytárat a telepítéshez. - -Get the Donation Edition with bonus features and help keep FreeFileSync ad-free. -Használd a Támogatói Kiadást bónusz szolgáltatásokkal és segits reklám-mentesen tartani a FreeFileSync-et. - diff --git a/FreeFileSync/Build/Resources/Languages/italian.lng b/FreeFileSync/Build/Resources/Languages/italian.lng deleted file mode 100755 index 12fe93a5..00000000 --- a/FreeFileSync/Build/Resources/Languages/italian.lng +++ /dev/null @@ -1,2136 +0,0 @@ -
- Italiano - Luciano Paravella - it_IT - flag_italy.png - 2 - n == 1 ? 0 : 1 -
- -Cannot read file %x. -Impossibile leggere il file %x. - - -Unexpected size of data stream. -Expected: %x bytes -Actual: %y bytes - - -Dimensioni impreviste del flusso di dati. -Previsto: %x byte -Attuale: %y byte - - -Cannot write file %x. -Impossibile scrivere il file %x. - -Cannot write permissions of %x. -Impossibile scrivere i permessi di %x. - -Operation not supported between different devices. -Operazione non supportata tra diversi dispositivi. - -Cannot delete file %x. -Impossibile eliminare il file %x. - -Cannot delete symbolic link %x. -Impossibile eliminare collegamento %x. - -Cannot delete directory %x. -Impossibile eliminare la directory %x. - -Cannot move file %x to %y. -Impossibile spostare il file %x in %y. - -Cannot copy symbolic link %x to %y. -Impossibile copiare collegamento %x per %y. - -Error Code %x -Codice di errore %x - -Cannot read directory %x. -Impossibile leggere la directory %x. - -Cannot write modification time of %x. -Impossibile scrivere data e ora di modifica di %x. - -Cannot read file attributes of %x. -Impossibile leggere gli attributi del file %x. - -Cannot create directory %x. -Impossibile creare la cartella %x. - -Cannot determine final path for %x. -Impossibile determinare il percorso finale per %x. - -Operation not supported by device. -Operazione non supportata dal dispositivo. - -Cannot resolve symbolic link %x. -Impossibile risolvere collegamento %x. - -Unable to move %x to the recycle bin. -Impossibile spostare %x nel cestino. - -Authentication completed. -Autenticazione completata. - -You may close this page now and continue with FreeFileSync. -Puoi chiudere questa pagina ora e continuare con FreeFileSync. - -Authentication failed. -Autenticazione fallita. - -Unable to connect to %x. -Impossibile connettersi a %x. - -Cannot find %x. -Impossibile trovare %x. - -The name %x is used by more than one item in the folder. -Il nome %x è utilizzato da più di un elemento nella cartella. - -Please authorize access to user account %x. -Autorizza l'accesso all'account utente %x. - -Cannot open file %x. -Impossibile aprire il file %x. - -The name %x is already used by another item. -Il nome %x è già utilizzato da un altro elemento. - -Cannot determine free disk space for %x. -Impossibile determinare lo spazio libero su disco per %x. - -Unable to disconnect from %x. -Impossibile disconnettersi da %x. - -Unable to access %x. -Impossibile accedere %x. - -Failed to get information about server %x. -Impossibile ottenere informazioni sul server %x. - -Cannot monitor directory %x. -Impossibile monitorare la directory %x. - -Cannot find device %x. -Impossibile trovare dispositivo %x. - -Cannot open directory %x. -Impossibile aprire la cartella %x. - -Unsupported item type. -Tipo di articolo non supportato. - -Incorrect command line: -Linea di comando non corretta: - -The server does not support authentication via %x. -Il server non supporta l'autenticazione tramite %x. - -Required: -Richiesto: - - -Operation timed out after 1 second. -Operation timed out after %x seconds. - - -Funzionamento dopo 1 secondo. -Funzionamento dopo %x secondi. - - - -Cannot wait on more than 1 connection at a time. -Cannot wait on more than %x connections at a time. - - -Aspettare per non più di 1 connessione alla volta. -Aspettare per non più di %x connessioni alla volta. - - -Active connections: %x -Connessioni attive: %x - -Failed to open SFTP channel number %x. -Impossibile aprire canale SFTP numero %x. - -Both sides have changed since last synchronization. -Entrambi i lati sono cambiati dall'ultima sincronizzazione. - -Cannot determine sync-direction: -Impossibile determinare direzione di sincronia: - -No change since last synchronization. -Nessun cambiamento dall'ultima sincronizzazione. - -The database entry is not in sync considering current settings. -La voce di database non è in sincronia con le impostazioni correnti. - -Setting default synchronization directions: Old files will be overwritten with newer files. -Imposta le direzioni di sincronizzazione predefinite: i vecchi file saranno sovrascritti dai nuovi. - -Creating file %x -Creazione file %x - -Creating folder %x -Creazione cartella %x - -Creating symbolic link %x -Creazione collegamento %x - -Moving file %x to the recycle bin -Spostamento file %x nel cestino - -Moving folder %x to the recycle bin -Spostamento delle cartelle %x nel cestino - -Moving symbolic link %x to the recycle bin -Spostamento collegamento %x nel cestino - -Deleting file %x -Eliminazione file %x - -Deleting folder %x -Eliminazione cartella %x - -Deleting symbolic link %x -Eliminazione collegamento %x - -Checking recycle bin availability for folder %x... -Controllo di disponibilità Cestino per la cartella %x... - -The recycle bin is not supported by the following folders. Deleted or overwritten files will not be able to be restored: -Il cestino non è supportato dalle seguenti cartelle. I file cancellati o sovrascritti non potranno essere ripristinati: - -An exception occurred -Si è verificata una eccezione - -A left and a right directory path are expected after %x. -Sono previsti un percorso di directory sinistro e destro dopo %x. - -Syntax error -Errore di sintassi - -Cannot find file %x. -Impossibile trovare il file %x. - -Error -Errore - -File %x does not contain a valid configuration. -Il file %x non contiene una configurazione valida. - -The config file must not contain settings at directory pair level when directories are set via command line. -Il file di configurazione non deve contenere le impostazioni a livello di coppia di directory quando le directory sono impostate tramite linea di comando. - -Directories cannot be set for more than one configuration file. -Le directory non possono essere impostate per più di un file di configurazione. - -Command line -Linea di comando - -Syntax: -Sintassi: - -config files: -file di configurazione: - -directory -directory - -global config file: -file di configurazione globale: - -Any number of FreeFileSync "ffs_gui" and/or "ffs_batch" configuration files. -Qualsiasi numero di FreeFileSync"ffs_gui" e/o File di configurazione "ffs_batch". - -Any number of alternative directory pairs for at most one config file. -Qualsiasi numero di coppie di directory alternative per al massimo un file di configurazione. - -Open the selected configuration for editing only, without executing it. -Apri la configurazione selezionata solo per la modifica senza eseguirla. - -Path to an alternate GlobalSettings.xml file. -Percorso di un file GlobalSettings.xml alternativo. - -Installation files are corrupted. Please reinstall FreeFileSync. -I file di installazione sono danneggiati. Si prega di reinstallare FreeFileSync. - -Cannot find the following folders: -Impossibile trovare le seguenti cartelle: - -The following folders do not yet exist: -Le seguenti cartelle non esistono ancora: - -The folders are created automatically when needed. -Le cartelle vengono create automaticamente quando necessario. - -The following folder paths differ in case. Please use a single form in order to avoid duplicate accesses. -I seguenti percorsi di cartelle differiscono nel caso. Si prega di utilizzare un unico modulo per evitare accessi duplicati. - -Scanning: -Scansione di: - -Comparison finished: -Confronto terminato: - - -1 item found -%x items found - - -1 oggetto trovato -%x elementi trovati - - -Time elapsed: -Tempo trascorso: - -File %x has an invalid date. -Il file %x ha una data non valida. - -Date: -Data: - -Files have the same date but a different size. -I file hanno la stessa data, ma una dimensione diversa. - -Size: -Dimensione: - -Content comparison was skipped for excluded files. -Il confronto del contenuto è stato saltato per i file esclusi. - -Items differ in attributes only -Gli oggetti differiscono solo negli attributi - -Resolving symbolic link %x -Risoluzione collegamento %x - -Comparing content of files %x -Confronto contenuto del file %x - -Generating file list... -Generazione elenco file... - -Fail-safe file copy -Copia file a prova di errore - -Enabled -Abilitato - -Disabled -Disabilitato - -Copy locked files -Copia file bloccati - -Copy file access permissions -Copia permessi di accesso file - -File time tolerance -File tolleranza temporale - -Run with background priority -Eseguire con priorità in background - -Lock directories during sync -Blocco delle directory durante la sincronizzazione - -Verify copied files -Verificare i file copiati - -Using non-default global settings: -Utilizzo delle impostazioni globali non predefinite: - -A folder input field is empty. -Un campo di input cartella è vuoto. - -The corresponding folder will be considered as empty. -La cartella corrispondente sarà considerata come vuota. - -Exclude: -Escludi: - -One base folder of a folder pair is contained in the other one. -Una cartella di base di una coppia di cartelle è contenuta nell'altra. - -The folder should be excluded from synchronization via filter. -La cartella deve essere esclusa dalla sincronizzazione tramite filtro. - -Calculating sync directions... -Calcolo della direzione di sincronizzazione... - -Out of memory. -Memoria insufficiente. - -Show in Explorer -Mostra in Esplora Risorse - -Open with default application -Apri con applicazione predefinita - -Browse directory -Sfoglia cartelle - -Database file %x is incompatible. -Il file del database %x non è compatibile. - -Initial synchronization: -Prima sincronizzazione: - -Database file %x does not yet exist. -Il file del database %x non è ancora stato creato. - -Database file is corrupted: -Il file del database è danneggiato: - -Loading file %x... -Caricamento file %x... - -The database files do not yet contain information about the last synchronization. -I file del database non contengono ancora informazioni sull'ultima sincronizzazione. - -Saving file %x... -Salvare il file %x... - -Searching for folder %x... -Ricerca della cartella %x... - -Timeout while searching for folder %x. -Pausa durante la ricerca per la cartella %x. - -Cannot get process information. -Impossibile ottenere informazioni sul processo. - -Waiting while directory is locked: -In attesa mentre la cartella è bloccata: - -Lock owner: -Bloccare il proprietario: - -Detecting abandoned lock... -Rilevamento blocco abbandonato... - - -1 sec -%x sec - - -1 sec -%x sec - - -Item exists on left side only -L'oggetto esiste solo sul lato sinistro - -Item exists on right side only -L'oggetto esiste solo sul lato destro - -Left side is newer -Il più recente è sul lato sinistro - -Right side is newer -Il più recente è sul lato destro - -Items have different content -Gli oggetti hanno contenuto differente - -Both sides are equal -Entrambi i lati sono uguali - -Conflict/item cannot be categorized -Conflitto/oggetto non categorizzabile - -Copy new item to left -Copia nuovo oggetto a sinistra - -Copy new item to right -Copia nuovo oggetto a destra - -Delete left item -Elimina oggetto di sinistra - -Delete right item -Elimina oggetto di destra - -Move file on left -Sposta il file a sinistra - -Move file on right -Sposta il file a destra - -Update left item -Aggiornamento voce sinistra - -Update right item -Aggiornamento voce destra - -Do nothing -Non fare nulla - -Update attributes on left -Aggiorna attributi a sinistra - -Update attributes on right -Aggiorna attributi a destra - -Error parsing file %x, row %y, column %z. -Errore nel parsing del file %x, riga %y, colonna %z. - -Services -Servizi - -Show All -Mostra tutto - -Hide Others -Nascondi gli altri - -Hide %x -Nascondi %x - -Quit %x -Esci da %x - -Cannot set directory locks for the following folders: -Impossibile impostare i blocchi di directory per le seguenti cartelle: - -Errors: -Errori: - -Warnings: -Avvertenze: - -Items processed: -Oggetti processati: - -Items remaining: -Oggetti rimanenti: - -Total time: -Tempo totale: - -Warning -Attenzione - -Stopped -Arrestato - -Cleaning up log files: -Pulizia dei file di registro: - - -1 thread -%x threads - - -1 thread -%x thread - - -%x/sec -%x/ sec - -%x items -%x articoli - -Completed successfully -Completato con successo - -Completed with warnings -Completato con avvisi - -Completed with errors -Completato con errori - -Cannot access the Volume Shadow Copy Service. -Impossibile accedere al Volume Shadow Copy Service. - -Please run the 64-bit version of FreeFileSync to create shadow copies on this system. -Si prega di eseguire la versione a 64 bit di FreeFileSync per creare copie shadow su questo sistema. - -Volume name %x is not part of file path %y. -Nome volume %x non fa parte del percorso del file %y. - -File time and size -Ora e dimensione file - -File content -Contenuto del file - -File size -Dimensione del file - -Two way -Due vie - -Mirror -Specchio - -Update -Aggiorna - -Custom -Personalizza - -Multiple... -Multiplo... - -Cannot write file attributes of %x. -Impossibile scrivere gli attributi del file %x. - -%x and %y have different content. -%x e %y hanno un contenuto diverso. - -Data verification error: -Errore di verifica dei dati: - -Moving file %x to %y -Spostamento file %x in %y - -Moving folder %x to %y -Spostamento cartella %x in %y - -Moving symbolic link %x to %y -Spostamento collegamento %x in %y - -Updating file %x -Aggiornamento file %x - -Updating symbolic link %x -Aggiornamento collegamento %x - -Verifying file %x -Verifica file %x - -Updating attributes of %x -Aggiornamento attributi di %x - -Source item %x not found -Elemento di origine %x non trovato - -Parent folder %x is not existing. -La cartella principale %x non esiste. - -Cannot copy file %x to %y. -Impossibile copiare il file %x in %y. - -Creating a Volume Shadow Copy for %x... -Creazione di un Volume Shadow Copy per %x... - -Cannot find folder %x. -Impossibile trovare la cartella %x. - -Target folder %x is already existing, but was not available during folder comparison. -La cartella di destinazione %x è già esistente, ma non era disponibile durante il confronto delle cartelle. - -Target folder input field must not be empty. -Il campo per la cartella di destinazione non può essere vuoto. - -Source folder %x not found. -Cartella sorgente %x non trovata. - -Please enter a target folder for versioning. -Inserisci una cartella di destinazione per il controllo delle versioni. - -The following items have unresolved conflicts and will not be synchronized: -I seguenti oggetti hanno conflitti irrisolti e non saranno sincronizzati: - -Folder pair: -Coppia di cartelle: - -The following folders are significantly different. Please check that the correct folders are selected for synchronization. -Le seguenti cartelle sono significativamente differenti. Si prega di controllare che sono selezionate le cartelle corrette per la sincronizzazione. - -Not enough free disk space available in: -Spazio libero su disco insufficiente in: - -Available: -Disponibile: - -Some files will be synchronized as part of multiple base folders. -Alcuni file saranno sincronizzati come parte di più cartelle base. - -To avoid conflicts, set up exclude filters so that each updated file is included by only one base folder. -Per evitare conflitti, impostare i filtri di esclusione in modo che ogni file aggiornato sia incluso in una sola cartella di base. - -Versioning folder: -Cartella versione: - -Base folder: -Cartella base: - -The versioning folder is contained in a base folder. -La cartella delle versioni è contenuta in una cartella di base. - -Synchronizing folder pair: -Sincronizzazione della coppia di cartelle: - -Generating database... -Generazione database... - -Searching for old file versions: -Ricerca di vecchie versioni di file: - -Removing old file versions: -Rimozione delle versioni precedenti dei file: - -Unable to create time stamp for versioning: -Impossibile creare l'impronta per il controllo delle versioni: - -Drag && drop -Trascina e rilascia - -Select a folder -Seleziona una cartella - -&New -&Nuovo - -&Open... -&Apri... - -Save &as... -Salva &come... - -E&xit -U&scita - -&File -&File - -&View help -&Vedere aiuto - -&About -&Informazioni - -&Help -&Aiuto - -Usage: -Uso: - -Select folders to watch. -Seleziona cartelle da controllare. - -Enter a command line. -Inserisci linea di comando. - -Press 'Start'. -Premi 'Avvio'. - -To get started just import a "ffs_batch" file. -Per iniziare è sufficiente importare un file con estensione "ffs_batch". - -Folders to watch: -Cartelle da guardare: - -Add folder -Aggiungi cartella - -Remove folder -Rimuovi cartella - -Browse -Sfoglia - -Idle time (in seconds): -Tempo di inattività (in secondi): - -Idle time between last detected change and execution of command -Tempo di attesa tra ultimo cambiamento rilevato e l'esecuzione del comando - -Command line: -Riga di comando: - -&Hide console window -&Nascondi la finestra della console - - -The command is triggered if: -- files or subfolders change -- new folders arrive (e.g. USB stick insert) - - -Il comando è attivato se: -- file o sottocartelle cambiano -- nuove cartelle vengono aggiunte (es. inserimento di memoria USB) - - -Start -Avviare - -About -Info su - -Build: %x -Versione: %x - -All files -Tutti i file - -Automated Synchronization -Sincronizzazione automatizzata - -The %x protocol does not support directory monitoring: -Il protocollo %x non supporta il monitoraggio della directory: - -Directory monitoring active -Monitoraggio Cartella attivo - -Waiting until directory is available: -In attesa che la directory sia disponibile: - -&Configure -&Configurazione - -&Show error message -&Mostra messaggio di errore - -&Quit -&Esci - -&Retry -&Riprova - - -1 byte -%x bytes - - -1 byte -%x byte - - -%x MB -%x MB - -%x KB -%x KB - -%x GB -%x GB - -Loading... -Caricamento... - -Scanning... -Scansione... - -configuration file -file di configurazione - -System: Sleep -Sistema: In Sonno - -System: Shut down -Sistema: Spento - -Nothing to synchronize -Non c'è nulla da sincronizzare - -Executing command: -Comando di esecuzione: - -You can switch to FreeFileSync's main window to resolve this issue. -È possibile passare alla finestra principale di FreeFileSync per risolvere questo problema. - -&Don't show this warning again -&Non mostrare più questo avviso - -&Ignore -&Ignora - -&Switch -&Passa a - -Switching to FreeFileSync's main window -Passaggio alla finestra principale di FreeFileSync - -Automatic retry -Riprova automaticamente - -Ignore &all -Ignora &tutto - -Retrying operation... -Riprovare l'Operazione... - -Serious Error -Errore Grave - -Last session -Ultima sessione - -Today -Oggi - - -1 day -%x days - - -1 giorno -%x giorni - - -Name -Nome - -Last sync -Ultima sincronizzazione - -Log -Log - -Folder -Cartella - -Symlink -Symlink - -Full path -Percorso completo - -Relative path -Percorso relativo - -Item name -Nome dell'elemento - -Size -Dimensione - -Date -Data - -Extension -Estensione - -Category -Categoria - -Action -Azione - -Local comparison settings -Impostazioni di confronto locali - -Local synchronization settings -Impostazioni di sincronizzazione locale - -Local filter -Filtro Locale - -Active -Attivo - -None -Nessuno - -Remove local settings -Rimuovere le impostazioni locali - -Clear local filter -Cancella Filtro locale - -Copy -Copia - -Paste -Incolla - -The selected folder %x cannot be used with FreeFileSync. -La cartella selezionata %x non può essere utilizzata con FreeFileSync. - -Please select a folder on a local file system, network or an MTP device. -Si prega di selezionare una cartella su un file system locale, di rete o un dispositivo MTP. - -Defined by context of use -Definito dal contesto di utilizzo - -Requires FreeFileSync Donation Edition -Richiede FreeFileSync Donation Edition - -&Save -&Salva - -Save as &batch job... -Salva come &processo batch... - -Show &log -Mostrare &log - -Start &comparison -Avvio &confronto - -C&omparison settings -Impostazioni C&onfronto - -&Filter settings -Impostazioni &Filtro - -S&ynchronization settings -Impostazioni S&incronizzazione - -Start &synchronization -Avvio &sincronizzazione - -&Actions -&Azioni - -&Preferences -&Preferenze - -&Language -&Lingua - -&Find... -&Trova... - -&Export file list... -&Esporta l'elenco dei file... - -&Reset layout -&Ripristina layout - -&Tools -&Strumenti - -&Check for updates now -&Controlla aggiornamenti ora - -Check &automatically once a week -Controlla &automaticamente una volta a settimana - -Cancel -Annulla - -Compare -Compara - -Synchronize -Sincronizza - -Add folder pair -Aggiungi una coppia di cartelle - -Remove folder pair -Elimina la coppia di cartelle - -Access online storage -Accesso all'archiviazione online - -Close search bar -Chiudi barra di ricerca - -Find: -Trova: - -Match case -Corrispondenza - -Processed: -Elaborato: - -Remaining: -Residuo: - -New -Nuovo - -Open... -Apri... - -Save -Salva - -Save as... -Salva come... - -View type: -Visualizza tipo: - -Select view: -Seleziona vista: - -Save as default -Salva come predefinito - -Statistics: -Statistiche: - -Number of files and folders that will be deleted -Numero di file e cartelle che verranno eliminati - -Number of files that will be updated -Numero di file che verranno aggiornati - -Number of files and folders that will be created -Numero di file e cartelle che verranno creati - -Total bytes to copy -Bytes totali da copiare - -Arrange folder pair -Disporre coppia di cartelle - -Main settings: -Impostazioni principali: - -Use local settings: -Utilizza impostazioni locali: - -Select a variant: -Scegli una variante: - -Include &symbolic links: -Includere collegamenti &simbolici: - -&Follow -&Esegui - -&Direct -&Diretta - -More information -Maggiori informazioni - -&Ignore time shift [hh:mm] -&Ignora tempo spostamento [hh:mm] - -List of file time offsets to ignore -Elenco delle compensazioni del tempo file da ignorare - -Example: -Esempio: - -Handle daylight saving time -Maneggiare l'ora legale - -Ignore errors -Ignora errori - -Retry count: -Riprova conteggio: - -Delay (in seconds): -Ritardo (in secondi): - -Performance improvements: -Miglioramenti delle prestazioni: - -Parallel file operations: -Operazioni parallele sul file: - -How to get best performance? -Come ottenere le migliori prestazioni? - -Local settings: -Impostazioni Locali: - -Include: -Includi: - -Show examples -Mostra esempi - -Select filter rules to exclude certain files from synchronization. Enter file paths relative to their corresponding folder pair. -Selezionare le regole del filtro per escludere alcuni file dalla sincronizzazione. Immettere i percorsi dei file relativi alla loro corrispondente coppia di cartelle. - -File size: -Dimensione del file: - -Minimum: -Minimo: - -Maximum: -Massimo: - -Time span: -Intervallo di tempo: - -C&lear -Cance&lla - -Detect moved files -Rileva file spostati - - -- Not supported by all file systems -- Requires and creates database files -- Detection not available for first sync - - -- Non supportato da tutti i file system -- Richiede e crea file di database -- Rilevazione non disponibile per prima sincronizzazione - - -Delete files: -Eliminare i file: - -&Recycle bin -&Cestino - -&Permanent -&Permanente - -&Versioning -&Versione - -Move files to a user-defined folder -Spostare i file in una cartella definita dall'utente - -Naming convention: -Modalità di rinomina: - -Limit file versions: -Limitare le versioni dei file: - -Last x days: -Ultimi x giorni: - -&Override default log path: -&Sostituisci il percorso di registrazione predefinito: - -Run a command: -Esegui un comando: - -OK -OK - -Connection type: -Tipo di connessione: - -Connected user accounts: -Account utente connessi: - -&Add connection -&Aggiungi connessione - -&Disconnect -&Disconnetti - -Selected user account: -Account utente selezionato: - -Server name or IP address: -Nome server o indirizzo IP: - -Port: -Porta: - -Encryption: -Crittografia: - -&Disabled -&Disabilitato - -&Explicit SSL/TLS -&Explicito SSL/TLS - -Authentication: -Autenticazione: - -&Password -&Parola d'ordine - -&Key file -File di &chiave - -&SSH agent -Agente &SSH - -User name: -Nome utente: - -Private key file: -File della chiave privata: - -&Show password -&Mostra password - -Directory on server: -Directory su server: - -Access timeout (in seconds): -Timeout di accesso (in secondi): - -SFTP channels per connection: -Canali SFTP per il collegamento: - -Detect server limit -Rilevare limite del server - -Select Folder -Seleziona cartella - -Variant: -Variante: - -&Don't show this dialog again -&Non mostrare più questo avviso - -Bytes: -Byte: - -Items: -Articoli: - -Synchronizing... -Sincronizzazione... - -Minimize to notification area -Ridurre al minimo l'area di notifica - -Bytes -Byte - -Items -Elementi - -When finished: -Al termine: - -Auto-close -Chiusura automatica - -Close -Chiudi - -&Pause -&Pausa - -Stop -Arresto - -Create a batch file for unattended synchronization. To start, double-click this file or schedule in a task planner: %x -Creare un file batch per la sincronizzazione automatica. Per iniziare, fare doppio clic su questo file o programmarlo in un pianificatore di compiti: %x - -Progress dialog: -Finestra di avanzamento: - -Run minimized -Esegui minimizzato - -Show pop-up on errors or warnings -Mostra pop-up di errore o avviso - -&Cancel -&Cancella - -Stop synchronization at first error -Interrompere la sincronizzazione al primo errore - -How can I schedule a batch job? -Come posso programmare un lavoro batch? - -&Keep relative paths -&Mantenere percorsi relativi - -&Overwrite existing files -&Sovrascrivere i file esistenti - -The following settings are used for all synchronization jobs. -Le seguenti impostazioni vengono utilizzate per tutti i processi di sincronizzazione. - - -Copy to a temporary file (*.ffs_tmp) before overwriting target. -This guarantees a consistent state even in case of a serious error. - - -Copiare in un file temporaneo (*.ffs_tmp) prima di sovrascrivere il bersaglio. -Questo garantisce uno stato consistente anche in caso di errore grave. - - -recommended -raccommandata - -Copy shared or locked files using the Volume Shadow Copy Service. -Copiare file condivisi o bloccati con il Volume Shadow Copy Service. - -requires administrator rights -richiede i diritti di amministratore - -Transfer file and folder permissions. -Trasferimento autorizzazioni di file e cartelle. - -Show all permanently hidden dialogs and warning messages again -Mostra di nuovo tutti i dialoghi nascosti in modo permanente e i messaggi di allarme - -Default log path: -Percorso di log predefinito: - -&Delete logs after x days: -&Elimina i log dopo x giorni: - -Notification sounds: -Suoni di notifica: - -Synchronization finished: -Sincronizzazione terminata: - -Customize context menu: -Personalizzare menu contestuale: - -Description -Descrizione - -&Default -&Predefinito - -Feedback and suggestions are welcome: -Feedback e suggerimenti sono benvenuti: - -Home page -Pagina Iniziale - -FreeFileSync Forum -Forum di FreeFileSync - -Email -Email - -If you like FreeFileSync: -Se ti piace FreeFileSync: - -Support with a donation -Supporto con una donazione - -The auto updater was disabled by the administrator. -L'aggiornamento automatico è stato disabilitato dall'amministratore. - -Donation details -dettagli Donazione - -Source code written in C++ using: -Codice sorgente scritto in C++ utilizzando: - -Published under the GNU General Public License: -Pubblicato sotto la GNU General Public License: - -Many thanks for localization: -Ringraziamenti per la traduzione: - -Activate the FreeFileSync Donation Edition by one of the following methods: -Attivare la FreeFileSync Donazione con uno dei seguenti metodi: - -Activate via internet now: -Attivare via internet ora: - -Activate online -Attivazione on-line - -Retrieve an offline activation key from the following URL: -Recuperare una chiave di attivazione non in linea dal seguente URL: - -&Copy to clipboard -&Copia negli appunti - -Enter activation key: -Inserisci chiave di attivazione: - -Activate offline -Attiva offline - -Highlight configurations that have not been run for more than the following number of days: -Evidenzia le configurazioni che non sono state eseguite per più del seguente numero di giorni: - -FreeFileSync requires access rights to avoid "Operation not permitted" errors when synchronizing your data (e.g. Mail, Messages, Calendars). -FreeFileSync richiede i diritti di accesso per evitare errori di 'Operazione non consentita' durante la sincronizzazione dei dati (ad esempio Mail, Messaggi, Calendari). - -Locate the FreeFileSync app -Individuare l'app FreeFileSync - -Open Security && Privacy -Apri Sicurezza e Privacy - -Click the lock to allow changes. -Fare clic sul blocco per consentire le modifiche. - -Drag FreeFileSync into the panel. -Trascinare FreeFileSync nel pannello. - -Synchronization Settings -Impostazioni di Sincronizzazione - -Access Online Storage -Accedi all'archiviazione online - -Save as a Batch Job -Salva come Lavoro Batch - -Delete Items -Elimina Elementi - -Copy Items -Copia articoli - -Options -Opzioni - -Select Time Span -Selezionare Intervallo di Tempo - -Highlight Configurations -Evidenzia le configurazioni - -Grant Full Disk Access -Concedere l'accesso completo al disco - -Info -Info - -No log entries -Nessuna voce di registro - -Select all -Seleziona tutto - -&Options -&Opzioni - -Main Bar -Barra Principale - -Folder Pairs -Coppie di Cartelle - -Find -Trova - -View Settings -Impostazioni Visualizzazione - -Configuration -Configurazione - -Overview -Anteprima - -Swap sides -Inverti i lati - -Show "%x" -Mostra "%x" - -&Show details -&Mostra dettagli - -FreeFileSync %x is available! -FreeFileSync %x è disponibile! - -Local path not available for %x. -Percorso locale non disponibile per %x. - -Confirm -Confermare - - -Do you really want to execute the command %y for one item? -Do you really want to execute the command %y for %x items? - - -Vuoi veramente eseguire il comando %y per un elemento? -Vuoi veramente eseguire il comando %y per %x elementi? - - -&Execute -&Esecuzione - -Set direction: -Imposta direzione: - -multiple selection -selezione multipla - -&Include via filter: -&Include tramite filtro: - -&Exclude via filter: -&Escludi tramite filtro: - -Include temporarily -Includi temporaneamente - -Exclude temporarily -Escludi temporaneamente - -&Synchronize selection -&Sincronizza selezione - -&Copy to... -&Copia in... - -&Delete -&Cancellare - -Show icons: -Mostra icone: - -Small -Piccole - -Medium -Medie - -Large -Grandi - -Select time span... -Seleziona intervallo di tempo... - -Donation Edition -Edizione di donazione - -Folder Comparison and Synchronization -Comparazione delle Cartelle e Sincronizzazione - -Configuration saved -Configurazione salvata - -FreeFileSync batch -FreeFileSync batch - -Do you want to save changes to %x? -Vuoi salvare le modifiche a %x? - -Never save &changes -Non salvare mai &modifiche - -Do&n't save -No&n salvare - -%x cannot be renamed. -%x non può essere rinominato. - -New name: -Nuovo nome: - -Rename Configuration -Rinomina configurazione - -Configuration name must not be empty. -Il nome della configurazione non deve essere vuoto. - -&Rename... -&Ridenominazione... - -Hide configuration -Nascondi configurazione - -Highlight... -Evidenziare... - -Clear filter -Eliminare filtro - -Show files that exist on left side only -Mostra file esistenti solo a sinistra - -Show files that exist on right side only -Mostra file esistenti solo a destra - -Show files that are newer on left -Mostra i file che sono più recenti sulla sinistra - -Show files that are newer on right -Mostra i file che sono più recenti sulla destra - -Show files that are equal -Mostra i file identici - -Show files that are different -Mostra i file differenti - -Show conflicts -Mostra conflitti - -Show files that will be created on the left side -Mostra i file che verranno creati sul lato sinistro - -Show files that will be created on the right side -Mostra i file che verranno creati sul lato destro - -Show files that will be deleted on the left side -Mostra i file che verranno cancellati sul lato sinistro - -Show files that will be deleted on the right side -Mostra i file che verranno cancellati sul lato destro - -Show files that will be updated on the left side -Mostra i file che verranno aggiornati sul lato sinistro - -Show files that will be updated on the right side -Mostra i file che verranno aggiornati sul lato destro - -Show files that won't be copied -Mostra i file che non saranno copiati - -Show filtered or temporarily excluded files -Mostra file filtrati o temporaneamente esclusi - -Filter -Filtro - -All files are in sync -Tutti i file sono in sincronia - - -1 directory -%x directories - - -1 directory -%x directory - - - -1 file -%x files - - -1 file -%x file - - - -Showing %y of 1 row -Showing %y of %x rows - - -Risultati %y di 1 riga -Risultati %y di %x righe - - -Cannot find %x -Impossibile trovare %x - -Move up -Sposta su - -Move down -Sposta giù - -Comma-separated values -Valori separati da virgole - -File list exported -Elenco file esportato - -Searching for program updates... -Ricerca di aggiornamenti al programma... - -Paused -In pausa - -Stop requested... -Stop richiesto... - -Initializing... -Inizializzazione... - -Comparing content... -Comparazione del contenuto... - -&Continue -&Continuare - -Progress -Avanzamento - -Thank you, %x, for your donation and support! -Grazie, %x, per la vostra donazione e il supporto! - -Connections -Connessioni - -Recommended range: -Intervallo consigliato: - -Do you really want to disconnect from user account %x? -Vuoi davvero disconnetterti dall'account utente %x? - -Password: -Password: - -Key passphrase: -Passphrase chiave: - -Please enter a file path. -Si prega di inserire un percorso di file. - - -Copy the following item to another folder? -Copy the following %x items to another folder? - - -Copiare il seguente elemento in un'altra cartella? -Copiare i seguenti elementi %x in un'altra cartella? - - -Please enter a target folder. -Si prega di inserire una cartella di destinazione. - - -Do you really want to move the following item to the recycle bin? -Do you really want to move the following %x items to the recycle bin? - - -Vuoi davvero spostare il seguente oggetto nel cestino? -Vuoi davvero spostare i seguenti %x oggetti nel cestino? - - -Move -Spostare - - -Do you really want to delete the following item? -Do you really want to delete the following %x items? - - -Vuoi davvero eliminare il seguente oggetto? -Vuoi davvero eliminare i seguenti %x oggetti? - - -Start to synchronize the selection? -Inizia a sincronizzare la selezione? - -Start synchronization now? -Avviare la sincronizzazione ora? - -Copy DACL, SACL, Owner, Group -Copia DACL, SACL, Proprietario, Gruppo - -Integrate external applications into context menu. The following macros are available: -Integra applicazioni esterne nel menu contestuale. Sono disponibili le seguenti macro: - -Full file or folder path -File o percorso della cartella completo> - -Parent folder path -Percorso cartella genitore - -Temporary local copy for SFTP and MTP storage -Copia locale temporanea per memorizzazione SFTP e MTP - -Parameters for opposite side -Parametri per lato opposto - -Show hidden dialogs again -Mostra di nuovo le finestre di dialogo nascoste - -All dialogs shown -Tutte le finestre di dialogo mostrate - -Downloading update... -Download aggiornamento... - -Identify equal files by comparing modification time and size. -Identificare i file uguali confrontando data di modifica e dimensione. - -Identify equal files by comparing the file content. -Identificare i file uguali confrontando il contenuto del file. - -Identify equal files by comparing their file size. -Identificare i file uguali confrontando le dimensioni del file. - -Identify and propagate changes on both sides. Deletions, moves and conflicts are detected automatically using a database. -Identifica e propaga cambiamenti su entrambi i lati. Cancellazioni, spostamenti e conflitti sono identificati automaticamente usando un database. - -Create a mirror backup of the left folder by adapting the right folder to match. -Creare un backup specchio della cartella di sinistra aggiornando la cartella destra. - -Copy new and updated files to the right folder. -Copiare i file nuovi e aggiornati nella cartella destra. - -Configure your own synchronization rules. -Configura le tue regole di sincronizzazione. - -Comparison -Confronto - -Synchronization -Sincronizzazione - -This week -Questa settimana - -This month -Questo mese - -This year -Quest'anno - -Byte -Byte - -KB -KB - -MB -MB - -Retain deleted and overwritten files in the recycle bin -Conservare i file cancellati e sovrascritti nel cestino - -Delete and overwrite files permanently -Elimina e sovrascrivi i file in modo permanente - -Replace -Sostituisci - -Move files and replace if existing -Sposta i file e sostituisci se esistenti - -Time stamp -Data e ora - -Move files into a time-stamped subfolder -Sposta i file in una sottocartella temporanea di stampa - -File -File - -Append a time stamp to each file name -Aggiunge un'impronta per ogni nome di file - -On completion: -Al termine: - -On errors: -In caso di errori: - -On success: -In caso di successo: - -Main config -Config principale - -empty -vuoto - -Leave as unresolved conflict -Lascia come conflitti irrisolti - -YYYY-MM-DD hhmmss -AAAA-MM-GG hhmmss - -Minimum version count must be smaller than maximum count. -Il numero minimo della versione deve essere inferiore al conteggio massimo. - -&Restore -&Ripristina - -Files -File - -Percentage -Percentuale - -Failed to retrieve update information. -Impossibile recuperare le informazioni di aggiornamento. - -Automatic updates: -Aggiornamenti automatici: - -Check for Program Updates -Controlla Aggiornamenti del Programma - -Auto-update now or download manually from the FreeFileSync home page? -Aggiornamento automatico ora o scaricare manualmente dalla home page FreeFileSync? - -&Auto-update -&Aggiornamento automatico - -&Home page -&Home page - -Download now? -Scaricarla ora? - -&Download -&Scaricare - -FreeFileSync is up to date. -FreeFileSync è aggiornato. - -Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now? -Impossibile trovare il numero della versione corrente di FreeFileSync on-line. Una versione più recente è probabilmente disponibile. Controllare manualmente ora? - -&Check -&Controllare - -Consistency check failed for %x. -Verifica della coerenza non riuscita per %x. - -Installation was registered on a different operating system. -L'installazione è stata registrata su un sistema operativo diverso. - -Failed to activate FreeFileSync Donation Edition. -Impossibile attivare FreeFileSync Donation Edition. - -Incorrect activation key. -Chiave di attivazione non corretta. - -Unable to register to receive system messages. -Impossibile registrarsi per ricevere i messaggi di sistema. - -The %x installation option is only available in the FreeFileSync Donation Edition. -L'opzione di installazione %x è disponibile solo nell'edizione di donazione FreeFileSync. - -Cannot find system function %x. -Impossibile trovare la funzione di sistema %x. - -Unable to register device notifications for %x. -Impossibile registrare le notifiche di dispositivo per %x. - -The file is locked by another process: -Il file è bloccato da un altro processo: - -Failed to determine file permission support for folder %x. -Impossibile determinare il supporto delle autorizzazioni per i file per la cartella %x. - -Cannot read security context of %x. -Impossibile leggere il contesto di protezione di %x. - -Cannot write security context of %x. -Impossibile scrivere il contesto di protezione di %x. - -Cannot read permissions of %x. -Impossibile leggere i permessi di %x. - -Cannot copy permissions from %x to %y. -Non è possibile copiare i permessi da %x per %y. - -%x is not a regular directory name. -%x non è un nome di directory normale. - -Cannot copy attributes from %x to %y. -Non è possibile copiare gli attributi da %x per %y. - -%x TB -%x TB - -%x PB -%x PB - - -1 min -%x min - - -1 min -%x min - - - -1 hour -%x hours - - -1 ora -%x ore - - -Cannot set privilege %x. -Impossibile impostare privilegi %x. - -Unable to suspend system sleep mode. -Impossibile interrompere la modalità di sospensione del sistema. - -Cannot change process I/O priorities. -Impossibile modificare le priorità I/O del processo. - -Checking recycle bin failed for folder %x. -Controllo cestino non riuscito per la cartella %x. - -Unable to shut down the system. -Impossibile chiudere il sistema. - -Prepare installation -Preparare l'installazione - -Choose which components you want to install. -Scegliere i componenti che si desidera installare. - -Select installation type: -Selezionare il tipo di installazione: - -Local -Locale - -Portable -Portatile - -Save settings in %x -Salva le impostazioni in %x - -Register FreeFileSync file extensions -Registra estensioni file di FreeFileSync - -Create Explorer context menu entries -Creare voci del menu contestuale di Explorer - -Save settings in installation directory -Salva impostazioni nella cartella di installazione - -Do not write to Registry -Non scrive nel Registro di Windows - -Just copy the files -Basta copiare i file - -Choose a directory for installation: -Seleziona cartella di installazione: - -Create shortcuts: -Crea collegamenti: - -Desktop -Desktop - -Start Menu -Menu iniziale - -Send To -Inviare a - -Registering FreeFileSync file extensions -Registra estensioni file FreeFileSync - -Unregistering FreeFileSync file extensions -Rimuovi registrazione estensioni file di FreeFileSync - -FreeFileSync Configuration -Configurazione FreeFileSync - -FreeFileSync Batch File -File Batch FreeFileSync - -FreeFileSync Synchronization Database -Database sincronizzazione FreeFileSync - -RealTimeSync Configuration -Configurazione RealTimeSync - -Edit with FreeFileSync -Modifica con FreeFileSync - -Instead of an ad, here's an animal. -Invece di un annuncio, ecco un animale. - -The FreeFileSync portable version cannot install into a subfolder of %x. -La versione portatile FreeFileSync non può essere installata in una sottocartella di %x. - -Please choose the local installation type or select a different folder for installation. -Scegliere il tipo di installazione locale o selezionare una cartella diversa per l'installazione. - -Get the Donation Edition with bonus features and help keep FreeFileSync ad-free. -Ottieni l'Edizione Donazione con funzioni bonus e aiuto per mantenere FreeFileSync senza pubblicità. - diff --git a/FreeFileSync/Build/Resources/Languages/japanese.lng b/FreeFileSync/Build/Resources/Languages/japanese.lng deleted file mode 100755 index 20de640b..00000000 --- a/FreeFileSync/Build/Resources/Languages/japanese.lng +++ /dev/null @@ -1,2120 +0,0 @@ -
- 日本語 - Tilt - ja_JP - flag_japan.png - 1 - 0 -
- -Cannot read file %x. -ファイル %x を読み込めません. - - -Unexpected size of data stream. -Expected: %x bytes -Actual: %y bytes - - -予期しないデータストリームのサイズ. -予測された値: %x バイト -実際の値: %y バイト - - -Cannot write file %x. -ファイル %x に書き込めません. - -Cannot write permissions of %x. -%x のパーミッションを書き込めません. - -Operation not supported between different devices. -異なるデバイス間での操作には対応していません. - -Cannot delete file %x. -ファイル %x を削除出来ません. - -Cannot delete symbolic link %x. -シンボリック リンク %x を削除できません. - -Cannot delete directory %x. -ディレクトリ %x を削除できません. - -Cannot move file %x to %y. -ファイル %x を %y に移動できません. - -Cannot copy symbolic link %x to %y. -シンボリックリンク %x を %y にコピーできません. - -Error Code %x -エラーコード %x. - -Cannot read directory %x. -ディレクトリ %x を読み取れません. - -Cannot write modification time of %x. -%x の更新時刻を書き込めませんでした. - -Cannot read file attributes of %x. -%x のファイル属性を読み込めません. - -Cannot create directory %x. -ディレクトリ %x を作成できません. - -Cannot determine final path for %x. -%x の最終的なパスを決定できません. - -Operation not supported by device. -デバイスで対応していない操作です. - -Cannot resolve symbolic link %x. -シンボリックリンク %x を解決できません. - -Unable to move %x to the recycle bin. -%x をゴミ箱に移動できません. - -Authentication completed. -認証が完了しました. - -You may close this page now and continue with FreeFileSync. -このページを閉じて FreeFileSync. を続行することができます. - -Authentication failed. -認証に失敗しました. - -Unable to connect to %x. -%x に接続できません. - -Cannot find %x. -%x がみつかりません. - -The name %x is used by more than one item in the folder. -名前 %x は、フォルダ内複数の項目で使用されています. - -Please authorize access to user account %x. -アカウント %x へのアクセスを承認してください. - -Cannot open file %x. -ファイル %x を開けません. - -The name %x is already used by another item. -%x という名前は既に別項目で利用されています. - -Cannot determine free disk space for %x. -%x の空きディスク領域を検出できません. - -Unable to disconnect from %x. -%x からの接続を切断できません. - -Unable to access %x. -%x にアクセスできません. - -Failed to get information about server %x. -%x サーバからの情報取得に失敗しました. - -Cannot monitor directory %x. -ディレクトリ %x を監視できません. - -Cannot find device %x. -デバイス %x がみつかりません. - -Cannot open directory %x. -ディレクトリ %x を開けません. - -Unsupported item type. -対応していない項目形式. - -Incorrect command line: -不正なコマンドライン: - -The server does not support authentication via %x. -このサーバは %x による認証に対応していません. - -Required: -必須: - - -Operation timed out after 1 second. -Operation timed out after %x seconds. - - -%x 秒経過で操作をタイムアウト. - - - -Cannot wait on more than 1 connection at a time. -Cannot wait on more than %x connections at a time. - - -一度に %x 以上の接続を行うことはできません. - - -Active connections: %x -アクティブな接続: %x - -Failed to open SFTP channel number %x. -SFTP チャンネル %x を開けません. - -Both sides have changed since last synchronization. -前回最後の同期処理以降、両側とも変更があります. - -Cannot determine sync-direction: -同期方向が決定されていません: - -No change since last synchronization. -前回の同期以降、変更はありません. - -The database entry is not in sync considering current settings. -現在の設定により、このデータベースエントリの同期は行われていません. - -Setting default synchronization directions: Old files will be overwritten with newer files. -同期方向のデフォルト設定: 古いファイルに新しいファイルを上書き. - -Creating file %x -ファイル %x を作成中 - -Creating folder %x -フォルダ %x を作成中 - -Creating symbolic link %x -シンボリックリンク %x を作成中 - -Moving file %x to the recycle bin -ファイル %x をゴミ箱に移動中 - -Moving folder %x to the recycle bin -フォルダ %x をゴミ箱に移動中 - -Moving symbolic link %x to the recycle bin -シンボリックリンク %x をゴミ箱に移動中 - -Deleting file %x -ファイル %x を削除中 - -Deleting folder %x -フォルダ %x を削除中 - -Deleting symbolic link %x -シンボリックリンク %x を削除中 - -Checking recycle bin availability for folder %x... -フォルダ %x をゴミ箱として使用できるかを確認中... - -The recycle bin is not supported by the following folders. Deleted or overwritten files will not be able to be restored: -次のフォルダではゴミ箱に対応していないため、ファイルの削除、または上書き操作された場合、元に戻せません: - -An exception occurred -例外が発生しました - -A left and a right directory path are expected after %x. -%x の後に左右のディレクトリ パスが必要です. - -Syntax error -構文エラー - -Cannot find file %x. -ファイル %x がみつかりません. - -Error -エラー - -File %x does not contain a valid configuration. -ファイル %x には有効な構成が含まれていません. - -The config file must not contain settings at directory pair level when directories are set via command line. -コマンドライン経由でディレクトリが設定されている時は、構成設定にペア・レベルのディレクトリは含められません. - -Directories cannot be set for more than one configuration file. -構成設定ファイルにひとつ以上のディレクトリは設定できません. - -Command line -コマンドライン - -Syntax: -構文: - -config files: -構成ファイル: - -directory -ディレクトリ - -global config file: -グローバル構成ファイル: - -Any number of FreeFileSync "ffs_gui" and/or "ffs_batch" configuration files. -任意の数の FreeFileSync 構成設定ファイル("ffs_gui" および/または "ffs_batch"). - -Any number of alternative directory pairs for at most one config file. -任意の数の代替ディレクトリペア(ひとつの構成ファイル). - -Open the selected configuration for editing only, without executing it. -選択された構成を実行しないで編集用に開きます. - -Path to an alternate GlobalSettings.xml file. -代替 GlobalSettings.xml ファイルへのパス. - -Installation files are corrupted. Please reinstall FreeFileSync. -インストール ファイルが破損しています、FreeFileSync を再インストールしてください. - -Cannot find the following folders: -次のフォルダがみつかりません: - -The following folders do not yet exist: -次のフォルダは存在しません: - -The folders are created automatically when needed. -フォルダは必要に応じて自動的に生成されます. - -The following folder paths differ in case. Please use a single form in order to avoid duplicate accesses. -次のフォルダパスは大文字小文字が異なります。アクセスの重複回避のため同じフォームにしてください. - -Scanning: -スキャン: - -Comparison finished: -比較が完了: - - -1 item found -%x items found - - -%x 項目を検出 - - -Time elapsed: -経過時間: - -File %x has an invalid date. -ファイル %x の日付は無効なものです. - -Date: -日時: - -Files have the same date but a different size. -日時は同じでサイズが異なるファイル. - -Size: -サイズ: - -Content comparison was skipped for excluded files. -除外ファイルにより比較をスキップされた内容. - -Items differ in attributes only -属性のみ異なる項目 - -Resolving symbolic link %x -シンボリックリンク %x を解決中 - -Comparing content of files %x -ファイル %x の内容を比較中 - -Generating file list... -ファイル一覧を作成中... - -Fail-safe file copy -安全なファイルコピーを実施 - -Enabled -有効 - -Disabled -無効 - -Copy locked files -ロックされたファイルをコピーする - -Copy file access permissions -ファイルのアクセスパーミッションをコピーする - -File time tolerance -ファイル時間の許容範囲 - -Run with background priority -優先度バックグラウンドで実行 - -Lock directories during sync -同期処理中はディレクトリをロック - -Verify copied files -コピーしたファイルを検証 - -Using non-default global settings: -非デフォルトのグローバル設定を使用: - -A folder input field is empty. -フォルダ入力欄が空白です. - -The corresponding folder will be considered as empty. -対応するフォルダは空であるとみなされます. - -Exclude: -除外: - -One base folder of a folder pair is contained in the other one. -フォルダ ペアの一方の基準フォルダがもう一方に含まれています. - -The folder should be excluded from synchronization via filter. -このフォルダはフィルターで同期から除外する必要があります. - -Calculating sync directions... -同期方向を計算しています... - -Out of memory. -メモリが足りません. - -Show in Explorer -エクスプローラで表示 - -Open with default application -既定アプリケーションで開く - -Browse directory -ディレクトリを参照 - -Database file %x is incompatible. -データベース %x とは互換性がありません. - -Initial synchronization: -同期処理の初期化: - -Database file %x does not yet exist. -データベース %x は存在しません. - -Database file is corrupted: -データベースが破損しています: - -Loading file %x... -ファイル %x を読み込み中... - -The database files do not yet contain information about the last synchronization. -このデータベース ファイルには前回の同期に関する情報がまだ含まれていません. - -Saving file %x... -ファイル %x を保存中... - -Searching for folder %x... -フォルダ %x を検索中... - -Timeout while searching for folder %x. -フォルダ %x 検索中にタイムアウト. - -Cannot get process information. -プロセス情報を取得できません. - -Waiting while directory is locked: -ディレクトリのロックを待機中: - -Lock owner: -ロック所有者: - -Detecting abandoned lock... -放棄されたロックを検出中... - - -1 sec -%x sec - - -%x 秒 - - -Item exists on left side only -左側のみに存在する項目 - -Item exists on right side only -右側のみに存在する項目 - -Left side is newer -左側がより新しい - -Right side is newer -右側がより新しい - -Items have different content -内容が異なる項目 - -Both sides are equal -両側とも等しい - -Conflict/item cannot be categorized -競合/分類化できない項目 - -Copy new item to left -新しい項目を左にコピー - -Copy new item to right -新しい項目を右にコピー - -Delete left item -左の項目を削除 - -Delete right item -右の項目を削除 - -Move file on left -左のファイルを移動 - -Move file on right -右のファイルを移動 - -Update left item -左の項目を更新 - -Update right item -右の項目を更新 - -Do nothing -何もしない - -Update attributes on left -左の属性を更新 - -Update attributes on right -右の属性を更新 - -Error parsing file %x, row %y, column %z. -ファイル %x の構文解析エラー, 行 %y, 列 %z. - -Services -サービス - -Show All -すべて表示 - -Hide Others -他を非表示 - -Hide %x -%x を非表示 - -Quit %x -%x を終了 - -Cannot set directory locks for the following folders: -次のフォルダにあるディレクトリはロックできません: - -Errors: -エラー: - -Warnings: -警告: - -Items processed: -処理された要素: - -Items remaining: -残りの要素: - -Total time: -合計時間: - -Warning -警告 - -Stopped -停止 - -Cleaning up log files: -ログファイルのクリーン: - - -1 thread -%x threads - - -%x スレッド - - -%x/sec -%x/秒 - -%x items -%x 項目 - -Completed successfully -正常に完了しました - -Completed with warnings -警告で終了 - -Completed with errors -エラーで終了 - -Cannot access the Volume Shadow Copy Service. -ボリュームシャドウコピーサービスにアクセス出来ません. - -Please run the 64-bit version of FreeFileSync to create shadow copies on this system. -現システムでシャドゥ コピーを作成するには 64-bit 版の FreeFileSync を使用してください. - -Volume name %x is not part of file path %y. -ボリューム名 %x は、ファイルパス %y の一部ではありません. - -File time and size -ファイル時刻とサイズ - -File content -ファイルの内容 - -File size -ファイルサイズ - -Two way -両方向 - -Mirror -ミラー - -Update -更新 - -Custom -カスタム - -Multiple... -複数処理... - -Cannot write file attributes of %x. -%x のファイル属性を書き込めません. - -%x and %y have different content. -%x と %y の内容は異なります. - -Data verification error: -データ検証エラー: - -Moving file %x to %y -ファイル %x を %y に移動中 - -Moving folder %x to %y -フォルダ %x を %y に移動中 - -Moving symbolic link %x to %y -シンボリックリンク %x を %y に移動中 - -Updating file %x -ファイル %x を更新中 - -Updating symbolic link %x -シンボリックリンク %x を更新中 - -Verifying file %x -ファイル %x の検証中 - -Updating attributes of %x -%x の属性を更新 - -Source item %x not found -ソース項目 %x が見つかりません - -Parent folder %x is not existing. -親フォルダ %x は存在しません. - -Cannot copy file %x to %y. -%x から %y にコピーできません. - -Creating a Volume Shadow Copy for %x... -ボリュームシャドウコピーを作成中 %x... - -Cannot find folder %x. -%x フォルダがみつかりません. - -Target folder %x is already existing, but was not available during folder comparison. -対象フォルダ %x は既に存在しますが、フォルダ比較中は使用できませんでした. - -Target folder input field must not be empty. -対象フォルダ入力欄が空白になっています. - -Source folder %x not found. -ソース フォルダ %x がみつかりません. - -Please enter a target folder for versioning. -バージョン付けをする対象フォルダを入力. - -The following items have unresolved conflicts and will not be synchronized: -以下の項目は、未解決の競合が存在するため同期処理を実行できませんでした: - -Folder pair: -フォルダ ペア: - -The following folders are significantly different. Please check that the correct folders are selected for synchronization. -以下ののフォルダは内容が大幅に異なっています。同期フォルダの設定に誤りがないかどうかをご確認ください. - -Not enough free disk space available in: -利用可能なディスク空き容量が足りません: - -Available: -利用可能: - -Some files will be synchronized as part of multiple base folders. -いくつかのファイルは複数の基準フォルダの一部として同期されます. - -To avoid conflicts, set up exclude filters so that each updated file is included by only one base folder. -競合回避のために、更新された各ファイルがひとつの基本フォルダのみに含まれるように除外設定をします. - -Versioning folder: -バージョン管理フォルダ: - -Base folder: -基準フォルダ: - -The versioning folder is contained in a base folder. -バージョン管理フォルダは、基準フォルダ内に含まれています. - -Synchronizing folder pair: -フォルダペアを同期処理: - -Generating database... -データベースを作成中... - -Searching for old file versions: -古いファイルバージョンの検索: - -Removing old file versions: -古いファイルバージョンの削除: - -Unable to create time stamp for versioning: -バージョン管理のタイムスタンプを作成できません: - -Drag && drop -ドラッグ && ドロップ - -Select a folder -フォルダを選択 - -&New -新規(&N) - -&Open... -開く(&O)... - -Save &as... -別名保存(&A)... - -E&xit -終了(&X) - -&File -ファイル(&F) - -&View help -ヘルプを表示(&V) - -&About -情報(&A) - -&Help -ヘルプ(&H) - -Usage: -使用方法: - -Select folders to watch. -監視するフォルダを選択. - -Enter a command line. -コマンドラインを入力. - -Press 'Start'. -'スタート'をクリック. - -To get started just import a "ffs_batch" file. -"ffs_batch" をインポート後、すぐに開始. - -Folders to watch: -監視するフォルダ: - -Add folder -フォルダを追加 - -Remove folder -フォルダ除去 - -Browse -参照 - -Idle time (in seconds): -待機時間(秒で指定): - -Idle time between last detected change and execution of command -最後にコマンドを実行してから、次に変更を検出するまでの待機時間 - -Command line: -コマンドライン: - -&Hide console window -コンソール画面を隠す(&H) - - -The command is triggered if: -- files or subfolders change -- new folders arrive (e.g. USB stick insert) - - -このコマンドのトリガ条件: -- ファイルまたはサブフォルダの変更 -- 新規フォルダの追加 (例. USB の挿入) - - -Start -開始 - -About -情報 - -Build: %x -ビルド: %x - -All files -すべてのファイル - -Automated Synchronization -自動同期 - -The %x protocol does not support directory monitoring: -%x プロトコルはディレクトリの監視に対応していません: - -Directory monitoring active -ディレクトリの監視アクティブ - -Waiting until directory is available: -ディレクトリが利用可能になるまで待機: - -&Configure -構成設定(&C) - -&Show error message -エラーメッセージを表示(&S) - -&Quit -終了(&Q) - -&Retry -再試行(&R) - - -1 byte -%x bytes - - -%x バイト - - -%x MB -%x MB - -%x KB -%x KB - -%x GB -%x GB - -Loading... -読み込み中... - -Scanning... -スキャン中... - -configuration file -構成設定ファイル - -System: Sleep -システム: スリープ - -System: Shut down -システム: シャットダウン - -Nothing to synchronize -同期対象がありません - -Executing command: -実行中のコマンド: - -You can switch to FreeFileSync's main window to resolve this issue. -FreeFileSync のメインウィンドウを切り替えることでこの問題を解決. - -&Don't show this warning again -次回からこの警告を表示しない(&D) - -&Ignore -無視(&I) - -&Switch -切り替え(&S) - -Switching to FreeFileSync's main window -FreeFileSync メインウィンドウの切り替え - -Automatic retry -自動的に再試行 - -Ignore &all -すべて無視(&A) - -Retrying operation... -処理を再試行中... - -Serious Error -重大なエラー - -Last session -最後のセッション - -Today -今日 - - -1 day -%x days - - -%x 日 - - -Name -名前 - -Last sync -前回の同期 - -Log -ログ - -Folder -フォルダ - -Symlink -Symリンク - -Full path -フルパス - -Relative path -相対パス - -Item name -項目名 - -Size -サイズ - -Date -日付 - -Extension -拡張子 - -Category -カテゴリ - -Action -操作 - -Local comparison settings -ローカルの比較設定 - -Local synchronization settings -ローカルの同期設定 - -Local filter -ローカル フィルター - -Active -アクティブ - -None -なし - -Remove local settings -ローカルの設定を除去 - -Clear local filter -ローカルフィルタをクリア - -Copy -コピー - -Paste -貼り付け - -The selected folder %x cannot be used with FreeFileSync. -選択したフォルダ %x は FreeFileSync で使用できません。 - -Please select a folder on a local file system, network or an MTP device. -ローカルファイルシステム、ネットワークまたは MTP デバイス上のフォルダを選択. - -Defined by context of use -使用状況による定義 - -Requires FreeFileSync Donation Edition -FreeFileSync 寄付版が必要です - -&Save -保存(&S) - -Save as &batch job... -一括ジョブで保存(&B)... - -Show &log -ログを表示(&L) - -Start &comparison -比較を開始(&C) - -C&omparison settings -比較の設定(&O) - -&Filter settings -フィルター設定(&F) - -S&ynchronization settings -同期の設定(&Y) - -Start &synchronization -同期を開始(&S) - -&Actions -動作(&A) - -&Preferences -環境設定(&P) - -&Language -使用言語(&L) - -&Find... -検索(&F)... - -&Export file list... -ファイル一覧をエクスポート(&E)... - -&Reset layout -レイアウトをリセット(&R) - -&Tools -ツール(&T) - -&Check for updates now -今すぐ更新を確認(&C) - -Check &automatically once a week -週に一回、自動的に確認する(&A) - -Cancel -キャンセル - -Compare -比較 - -Synchronize -同期処理 - -Add folder pair -フォルダのペアを追加 - -Remove folder pair -フォルダペアを除去 - -Access online storage -オンライン ストレージにアクセス - -Close search bar -検索バーを閉じる - -Find: -検索: - -Match case -文字種を区別 - -Processed: -処理しています: - -Remaining: -残り: - -New -新規 - -Open... -開く... - -Save -保存 - -Save as... -別名保存... - -View type: -表示形式: - -Select view: -選択表示: - -Save as default -既定として保存 - -Statistics: -統計情報: - -Number of files and folders that will be deleted -削除されたファイル、およびフォルダの数 - -Number of files that will be updated -更新されたファイルの数 - -Number of files and folders that will be created -作成されたファイル、およびフォルダの数 - -Total bytes to copy -コピーの合計バイト - -Arrange folder pair -フォルダ ペアの配置 - -Main settings: -メイン設定: - -Use local settings: -ローカル設定を使用: - -Select a variant: -方法を選択: - -Include &symbolic links: -Symリンクを含める(&S): - -&Follow -フォロー(&F) - -&Direct -ダイレクト(&D) - -More information -更に詳細な情報 - -&Ignore time shift [hh:mm] -タイムシフトを無視(&I) [hh:mm] - -List of file time offsets to ignore -無視するファイル時間オフセットのリスト - -Example: -使用例: - -Handle daylight saving time -夏時間の取り扱い - -Ignore errors -エラーを無視 - -Retry count: -再試行回数: - -Delay (in seconds): -遅延 (秒で指定): - -Performance improvements: -パフォーマンス向上: - -Parallel file operations: -並列ファイル操作: - -How to get best performance? -最適なパフォーマンスとは? - -Local settings: -ローカル設定: - -Include: -含める: - -Show examples -入力例を表示 - -Select filter rules to exclude certain files from synchronization. Enter file paths relative to their corresponding folder pair. -同期処理から特定のファイルを除外するためのフィルター規則を選択、 対応するそれらフォルダ ペアを基準にしたファイルパスを入力します. - -File size: -ファイルサイズ: - -Minimum: -最小: - -Maximum: -最大: - -Time span: -タイムスパン: - -C&lear -クリア(&L) - -Detect moved files -移動済みのファイルを検出する - - -- Not supported by all file systems -- Requires and creates database files -- Detection not available for first sync - - -- すべてのファイルシステムで対応していません -- 必要、データベースファイルを作成 -- 最初の同期では検知できません - - -Delete files: -ファイルの削除: - -&Recycle bin -ゴミ箱(&R) - -&Permanent -完全消去(&P) - -&Versioning -バージョン管理(&V) - -Move files to a user-defined folder -ユーザ定義のフォルダにファイルを移動 - -Naming convention: -命名規則: - -Limit file versions: -ファイルバージョン制限: - -Last x days: -x 日以降: - -&Override default log path: -既定のログ保存パスに上書き(&Q): - -Run a command: -コマンドを実行: - -OK -OK - -Connection type: -接続の種類: - -Connected user accounts: -接続ユーザ アカウント: - -&Add connection -接続を追加(&A) - -&Disconnect -接続の切断(&D) - -Selected user account: -選択ユーザ アカウント: - -Server name or IP address: -サーバ名、または IP アドレス: - -Port: -ポート: - -Encryption: -暗号化: - -&Disabled -無効化(&D) - -&Explicit SSL/TLS -明示的な SSL/TLS(&E) - -Authentication: -認証方式: - -&Password -パスワード(&P) - -&Key file -キーファイル(&K) - -&SSH agent -&SSH エージェント - -User name: -ユーザ名: - -Private key file: -秘密キーファイル: - -&Show password -パスワードを表示(&S) - -Directory on server: -サーバ上のディレクトリ: - -Access timeout (in seconds): -アクセスのタイムアウト(秒): - -SFTP channels per connection: -接続当たりの SFTP チャンネル数: - -Detect server limit -サーバ制限の検出 - -Select Folder -フォルダ選択 - -Variant: -メソッド: - -&Don't show this dialog again -次回以降から表示しない(&D) - -Bytes: -バイト: - -Items: -項目: - -Synchronizing... -同期処理中... - -Minimize to notification area -通知領域に最小化 - -Bytes -バイト - -Items -項目 - -When finished: -完了後: - -Auto-close -自動的に閉じる - -Close -閉じる - -&Pause -一時停止(&P) - -Stop -停止 - -Create a batch file for unattended synchronization. To start, double-click this file or schedule in a task planner: %x -無人で同期を行う為のバッチファイルを作成 - このファイルか、タスクプランナーからスケジュールをダブルクリックすることで開始: %x - -Progress dialog: -進捗ダイアログ: - -Run minimized -最小化で起動 - -Show pop-up on errors or warnings -エラーと警告をポップアップで表示 - -&Cancel -キャンセル(&C) - -Stop synchronization at first error -最初のエラーで同期処理を停止 - -How can I schedule a batch job? -一括ジョブ スケジュールの作成方法 - -&Keep relative paths -相対パスを保持(&K) - -&Overwrite existing files -既存のファイルに上書き(&O) - -The following settings are used for all synchronization jobs. -以下の設定は、すべての同期ジョブで使用されます. - - -Copy to a temporary file (*.ffs_tmp) before overwriting target. -This guarantees a consistent state even in case of a serious error. - - -対象を上書きする前に一時ファイル (*.ffs_tmp) にコピーします. -これにより、エラーが発生した場合も一貫性ある状態が保証されます. - - -recommended -推奨 - -Copy shared or locked files using the Volume Shadow Copy Service. -共有、ロックされたファイルをボリュームシャドウコピーサービスを使用してコピー. - -requires administrator rights -管理者権限が必要 - -Transfer file and folder permissions. -ファイルとフォルダのパーミッションを転送します. - -Show all permanently hidden dialogs and warning messages again -非表示にしたすべてのダイアログと警告メッセージを再表示 - -Default log path: -既定のログ保存パス: - -&Delete logs after x days: -x 日経過後にログを削除(&D): - -Notification sounds: -通知音: - -Synchronization finished: -同期処理の完了: - -Customize context menu: -コンテキストメニューのカスタマイズ: - -Description -説明 - -&Default -デフォルト(&D) - -Feedback and suggestions are welcome: -フィードバック、提案はいつでも歓迎します: - -Home page -ホーム ページ - -FreeFileSync Forum -FreeFileSync フォーラム - -Email -E-メール - -If you like FreeFileSync: -FreeFileSync を気に入ってくれた方へ: - -Support with a donation -寄付によるサポート - -The auto updater was disabled by the administrator. -自動アップデートは管理者によって無効にされています. - -Donation details -寄付の詳細 - -Source code written in C++ using: -ソースコードは C++ で書かれています: - -Published under the GNU General Public License: -GNU 一般公衆ライセンスの下で公開されています: - -Many thanks for localization: -ローカライズのご協力に感謝します: - -Activate the FreeFileSync Donation Edition by one of the following methods: -FreeFileSync 寄付版のアクティベートは次のいずれかの方法で行います: - -Activate via internet now: -ネット経由でアクティベート: - -Activate online -オンライン アクティベート - -Retrieve an offline activation key from the following URL: -次のURLからオフライン アクティベーションキーを取得: - -&Copy to clipboard -クリップボードにコピー(&C) - -Enter activation key: -アクティベーションキーの入力: - -Activate offline -オフライン アクティベート - -Highlight configurations that have not been run for more than the following number of days: -指定した日数を超えて実行されていない構成を強調表示する: - -FreeFileSync requires access rights to avoid "Operation not permitted" errors when synchronizing your data (e.g. Mail, Messages, Calendars). -FreeFileSync では同期時の "許可されていない操作" エラーを回避するためにアクセス権を必要とします (例. メール, メッセージ, カレンダー). - -Locate the FreeFileSync app -FreeFileSync app の場所 - -Open Security && Privacy -セキュリティ と プライバシーを開く - -Click the lock to allow changes. -鍵をクリックで変更を許可. - -Drag FreeFileSync into the panel. -パネルに FreeFileSync をドラッグ. - -Synchronization Settings -同期の設定 - -Access Online Storage -オンラインストレージにアクセス - -Save as a Batch Job -一括ジョブを保存 - -Delete Items -項目の削除 - -Copy Items -項目のコピー - -Options -設定 - -Select Time Span -タイムスパンを選択 - -Highlight Configurations -構成の強調表示 - -Grant Full Disk Access -フルディスクアクセス - -Info -情報 - -No log entries -ログ エントリなし - -Select all -すべて選択 - -&Options -設定(&O) - -Main Bar -メインバー - -Folder Pairs -フォルダ ペア - -Find -検索 - -View Settings -表示設定 - -Configuration -構成設定 - -Overview -概要 - -Swap sides -パネルを入れ替え - -Show "%x" -"%x" で表示 - -&Show details -詳細表示(&S) - -FreeFileSync %x is available! -FreeFileSync %x が利用できます! - -Local path not available for %x. -利用できないローカスパス %x. - -Confirm -確認 - - -Do you really want to execute the command %y for one item? -Do you really want to execute the command %y for %x items? - - -本当にコマンド %y を項目 %x に対して実行しますか? - - -&Execute -実行(&E) - -Set direction: -方向の設定: - -multiple selection -複数選択 - -&Include via filter: -フィルタ経由で含める(&I): - -&Exclude via filter: -フィルタ経由で除外(&E): - -Include temporarily -一時的に含める - -Exclude temporarily -一時的に除外 - -&Synchronize selection -選択項目を同期(&S) - -&Copy to... -コピー先(&C)... - -&Delete -削除(&D) - -Show icons: -アイコン表示: - -Small - - -Medium - - -Large - - -Select time span... -タイムスパンを選択... - -Donation Edition -寄付版 - -Folder Comparison and Synchronization -フォルダの比較と同期 - -Configuration saved -構成設定は保存されました - -FreeFileSync batch -FreeFileSync 一括 - -Do you want to save changes to %x? -本当に %x の変更を保存しますか? - -Never save &changes -変更の保存をしない(&C) - -Do&n't save -保存しない(&N) - -%x cannot be renamed. -%x の名前は変更できません. - -New name: -新たな名前: - -Rename Configuration -構成設定のリネーム - -Configuration name must not be empty. -構成設定名に空白は使用できません. - -&Rename... -リネーム(&R)... - -Hide configuration -構成を隠す - -Highlight... -強調表示... - -Clear filter -フィルタをクリア - -Show files that exist on left side only -左側のみに存在するファイルを表示 - -Show files that exist on right side only -右側のみに存在するファイルを表示 - -Show files that are newer on left -左側の新しいファイルを表示 - -Show files that are newer on right -右側の新しいファイルを表示 - -Show files that are equal -同じ内容のファイルを表示 - -Show files that are different -差異のあるファイルを表示 - -Show conflicts -不一致を表示 - -Show files that will be created on the left side -左側で作成されたファイルを表示 - -Show files that will be created on the right side -右側で作成されたファイルを表示 - -Show files that will be deleted on the left side -左側で削除されたファイルを表示 - -Show files that will be deleted on the right side -右側で削除されたファイルを表示 - -Show files that will be updated on the left side -左側で更新されたファイルを表示 - -Show files that will be updated on the right side -右側で更新されたファイルを表示 - -Show files that won't be copied -コピーされなかったファイルを表示 - -Show filtered or temporarily excluded files -フィルター済、または一時除外ファイルを表示 - -Filter -フィルター - -All files are in sync -すべてのファイルを同期 - - -1 directory -%x directories - - -%x ディレクトリ - - - -1 file -%x files - - -%x 個のファイル - - - -Showing %y of 1 row -Showing %y of %x rows - - -%x 行の内 %y 行を表示 - - -Cannot find %x -%x は見つかりません - -Move up -上に移動 - -Move down -下に移動 - -Comma-separated values -カンマ区切りの値 - -File list exported -ファイル一覧のエクスポートが完了 - -Searching for program updates... -アップデートを検索しています... - -Paused -一時停止中 - -Stop requested... -リクエストの中止... - -Initializing... -初期化中... - -Comparing content... -内容を比較中... - -&Continue -続行(&C) - -Progress -進行状況 - -Thank you, %x, for your donation and support! -ありがとう %x, あなたの寄付と支援に感謝します!! - -Connections -接続 - -Recommended range: -推奨される範囲: - -Do you really want to disconnect from user account %x? -本当にユーザ アカウント %x の接続を切断しますか? - -Password: -パスワード: - -Key passphrase: -キーパスフレーズ: - -Please enter a file path. -ファイルパスを入力. - - -Copy the following item to another folder? -Copy the following %x items to another folder? - - -以下 %x 個の項目を別のフォルダにコピーしますか? - - -Please enter a target folder. -対象フォルダを入力. - - -Do you really want to move the following item to the recycle bin? -Do you really want to move the following %x items to the recycle bin? - - -本当に以下 %x 個の項目をゴミ箱に移動しますか? - - -Move -移動 - - -Do you really want to delete the following item? -Do you really want to delete the following %x items? - - -本当に以下の %x 個の項目を削除しますか? - - -Start to synchronize the selection? -選択した項目の同期を開始しますか? - -Start synchronization now? -今すぐ同期を開始しますか? - -Copy DACL, SACL, Owner, Group -DACL, SACL, 所有者, グループをコピー - -Integrate external applications into context menu. The following macros are available: -外部のアプリケーションをコンテキストメニューに統合、以下のマクロが利用できます: - -Full file or folder path -ファイルまたはフォルダの完全パス - -Parent folder path -親フォルダのパス - -Temporary local copy for SFTP and MTP storage -SFTP、MTPストレージ用の一時ローカルコピー - -Parameters for opposite side -反対側のパラメータ - -Show hidden dialogs again -非表示のダイアログを再表示 - -All dialogs shown -すべてのダイアログを表示 - -Downloading update... -アップデートをダウンロード中... - -Identify equal files by comparing modification time and size. -更新時刻とサイズの比較を行い 同一ファイルを識別します. - -Identify equal files by comparing the file content. -ファイル内容の比較を行い 同一ファイルを識別します. - -Identify equal files by comparing their file size. -ファイルサイズの比較を行い 同一ファイルを識別します. - -Identify and propagate changes on both sides. Deletions, moves and conflicts are detected automatically using a database. -変更箇所を識別して両側に変更を反映します。 データベースを使用することで、削除や移動 競合等は自動的に検出されます. - -Create a mirror backup of the left folder by adapting the right folder to match. -右側フォルダを一致することにより 左側フォルダのミラーリング バックアップを作成します. - -Copy new and updated files to the right folder. -更新されたファイルを右側フォルダにコピー. - -Configure your own synchronization rules. -あなたが使用する同期規則を設定します. - -Comparison -比較 - -Synchronization -同期 - -This week -今週 - -This month -今月 - -This year -今年 - -Byte -バイト - -KB -KB - -MB -MB - -Retain deleted and overwritten files in the recycle bin -削除、上書きされたファイルをゴミ箱内に保持する - -Delete and overwrite files permanently -ファイルを完全に削除、または上書きする - -Replace -置換 - -Move files and replace if existing -ファイルを移動、存在する場合は上書き - -Time stamp -タイムスタンプ - -Move files into a time-stamped subfolder -ファイルをタイムスタンプ付きサブフォルダに移動 - -File -ファイル - -Append a time stamp to each file name -各ファイル名にタイムスタンプを付加 - -On completion: -完了時の動作: - -On errors: -処理の失敗時: - -On success: -処理の成功時: - -Main config -メイン構成 - -empty - - -Leave as unresolved conflict -未解決の競合はそのまま残す - -YYYY-MM-DD hhmmss -YYYY-MM-DD hhmmss - -Minimum version count must be smaller than maximum count. -最小バージョン数は最大値より小さくする必要があります. - -&Restore -修復(&R) - -Files -ファイル - -Percentage -パーセント - -Failed to retrieve update information. -更新情報の取得に失敗. - -Automatic updates: -自動アップデート: - -Check for Program Updates -プログラムのアップデートを確認 - -Auto-update now or download manually from the FreeFileSync home page? -今すぐ自動更新、または FreeFileSync 公式サイトから手動でダウンロードしますか? - -&Auto-update -自動更新(&A) - -&Home page -ホームページ(&H) - -Download now? -ダウンロードしますか? - -&Download -ダウンロード(&D) - -FreeFileSync is up to date. -FreeFileSync は最新です. - -Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now? -FreeFileSync のバージョン確認はできませんでしたが、おそらく利用可能な更新があります、今手動で確認しますか? - -&Check -チェック(&C) - -Consistency check failed for %x. -%x の整合性チェックに失敗. - -Installation was registered on a different operating system. -インストールは別の OS に登録されています. - -Failed to activate FreeFileSync Donation Edition. -FreeFileSync 寄付版のアクティベートに失敗. - -Incorrect activation key. -キーに誤りがあります. - -Unable to register to receive system messages. -システム受信メッセージに登録できません. - -The %x installation option is only available in the FreeFileSync Donation Edition. -インストール オプション %x は、FreeFileSync 寄付版でのみ利用可能です. - -Cannot find system function %x. -システム関数 %x がみつかりません. - -Unable to register device notifications for %x. -%x のデバイス通知を登録できません. - -The file is locked by another process: -次のファイルは別のプロセスで使用中です: - -Failed to determine file permission support for folder %x. -フォルダ %x のファイルアクセス許可の設定に失敗しました. - -Cannot read security context of %x. -%x のセキュリティコンテキストを読み込めません. - -Cannot write security context of %x. ->%x のセキュリティコンテキストを書き込めません. - -Cannot read permissions of %x. ->%x のパーミッションを読み込めません. - -Cannot copy permissions from %x to %y. -パーミッション を %x から %y にコピーできません. - -%x is not a regular directory name. -%x は通常のディレクトリ名ではありません。 - -Cannot copy attributes from %x to %y. -属性 を %x から %y にコピーできません. - -%x TB -%x TB - -%x PB -%x PB - - -1 min -%x min - - -%x 分 - - - -1 hour -%x hours - - -%x 時間 - - -Cannot set privilege %x. -%x の特権をセットできません. - -Unable to suspend system sleep mode. -システム スリープモードを中断できません. - -Cannot change process I/O priorities. -プロセスの I/O 優先度を変更できません. - -Checking recycle bin failed for folder %x. -フォルダ %x のゴミ箱のチェックに失敗. - -Unable to shut down the system. -システムをシャットダウンできません. - -Prepare installation -インストールの準備 - -Choose which components you want to install. -インストールするコンポーネントを選択. - -Select installation type: -インストールの種類を選択: - -Local -ローカル - -Portable -ポータブル - -Save settings in %x -設定を %x に保存 - -Register FreeFileSync file extensions -FreeFileSync 拡張子の関連付け - -Create Explorer context menu entries -エクスプローラのメニュー項目に統合 - -Save settings in installation directory -設定をインストールディレクトリに保存 - -Do not write to Registry -レジストリを使用しない - -Just copy the files -ファイルのコピーのみ - -Choose a directory for installation: -インストールするディレクトリを選択: - -Create shortcuts: -ショートカットの作成: - -Desktop -デスクトップ - -Start Menu -スタートメニュー - -Send To -送る - -Registering FreeFileSync file extensions -FreeFileSync ファイル拡張子を登録中 - -Unregistering FreeFileSync file extensions -FreeFileSync ファイル拡張子の登録解除中 - -FreeFileSync Configuration -FreeFileSync 構成設定 - -FreeFileSync Batch File -FreeFileSync 一括ファイル - -FreeFileSync Synchronization Database -FreeFileSync 同期データベース - -RealTimeSync Configuration -RealTimeSync 構成設定 - -Edit with FreeFileSync -FreeFileSync で編集 - -Instead of an ad, here's an animal. -これは広告の代わりです. - -The FreeFileSync portable version cannot install into a subfolder of %x. -FreeFileSync ポータブル版は %x のサブフォルダにはインストールできません. - -Please choose the local installation type or select a different folder for installation. -ローカル インストールを選択するか、別のインストール先を選択してください. - -Get the Donation Edition with bonus features and help keep FreeFileSync ad-free. -寄付をすることで広告が一切無く、ボーナス機能が付いた FreeFileSync を使用できます. - diff --git a/FreeFileSync/Build/Resources/Languages/korean.lng b/FreeFileSync/Build/Resources/Languages/korean.lng deleted file mode 100755 index 7ea2002d..00000000 --- a/FreeFileSync/Build/Resources/Languages/korean.lng +++ /dev/null @@ -1,2120 +0,0 @@ -
- 한국어 - Simon Park - ko_KR - flag_south_korea.png - 1 - 0 -
- -Cannot read file %x. -파일 %x을(를) 읽을 수 없습니다. - - -Unexpected size of data stream. -Expected: %x bytes -Actual: %y bytes - - -예상치 못한 데이터 스트림 크기 -예상 크기: %x 바이트 -실제 크기: %y 바이트 - - -Cannot write file %x. -파일 %x을(를) 쓸 수 없습니다. - -Cannot write permissions of %x. -%x의 권한을 쓸 수 없습니다. - -Operation not supported between different devices. -다른 장치 간에는 지원되지 않는 작업입니다. - -Cannot delete file %x. -파일 %x을(를) 삭제할 수 없습니다. - -Cannot delete symbolic link %x. -심볼릭 링크 %x을(를) 삭제할 수 없습니다. - -Cannot delete directory %x. -디렉터리 %x을(를) 삭제할 수 없습니다. - -Cannot move file %x to %y. -파일 %x을(를) %y(으)로 이동할 수 없습니다. - -Cannot copy symbolic link %x to %y. -심볼릭 링크 %x을(를) %y(으)로 복사할 수 없습니다. - -Error Code %x -오류 코드 %x - -Cannot read directory %x. -디렉터리 %x을(를) 읽을 수 없습니다. - -Cannot write modification time of %x. -%x의 수정 시간을 쓸 수 없습니다. - -Cannot read file attributes of %x. -%x의 파일 속성을 읽을 수 없습니다. - -Cannot create directory %x. -디렉터리 %x을(를) 생성할 수 없습니다. - -Cannot determine final path for %x. -%x에 대한 최종 경로를 결정할 수 없습니다. - -Operation not supported by device. -장치에서는 지원되지 않는 작업입니다. - -Cannot resolve symbolic link %x. -심볼릭 링크 %x을(를) 해결할 수 없습니다. - -Unable to move %x to the recycle bin. -휴지통으로 %x을(를) 이동할 수 없습니다. - -Authentication completed. -인증 완료. - -You may close this page now and continue with FreeFileSync. -지금 이 페이지를 닫고 FreeFileSync를 계속 진행할 수 있습니다. - -Authentication failed. -인증 실패. - -Unable to connect to %x. -%x에 연결할 수 없습니다. - -Cannot find %x. -%x을(를) 찾을 수 없습니다. - -The name %x is used by more than one item in the folder. -이름 %x이(가) 같은 폴더 내 한 개 이상의 항목에서 사용되고 있습니다. - -Please authorize access to user account %x. -사용자 계정 %x에 대한 접근 권한을 부여하십시오. - -Cannot open file %x. -파일 %x을(를) 열 수 없습니다. - -The name %x is already used by another item. -이름 %x은(는) 이미 다른 항목에서 사용되고 있습니다. - -Cannot determine free disk space for %x. -%x에 대한 사용 가능한 디스크 공간을 확인할 수 없습니다. - -Unable to disconnect from %x. -%x에서 연결 해제가 안 됩니다. - -Unable to access %x. -%x에 접근할 수 없습니다. - -Failed to get information about server %x. -서버 %x에 대한 정보를 가져 오는데 실패했습니다. - -Cannot monitor directory %x. -디렉터리 %x을(를) 모니터링 할 수 없습니다. - -Cannot find device %x. -장치 %x을(를) 찾을 수 없습니다. - -Cannot open directory %x. -디렉터리 %x을(를) 열 수 없습니다. - -Unsupported item type. -지원되지 않는 항목 형식. - -Incorrect command line: -부정확한 명령줄: - -The server does not support authentication via %x. -서버가 %x을(를) 통한 인증을 지원하지 않습니다. - -Required: -필요 공간(크기): - - -Operation timed out after 1 second. -Operation timed out after %x seconds. - - -%x초 이후 작업시간 초과됨. - - - -Cannot wait on more than 1 connection at a time. -Cannot wait on more than %x connections at a time. - - -한꺼번에 %x개 이상의 연결에 대기할 수 없습니다. - - -Active connections: %x -활성화된 연결: %x - -Failed to open SFTP channel number %x. -SFTP 채널번호 %x을(를) 열지 못 했습니다. - -Both sides have changed since last synchronization. -마지막 동기화 작업 이후, 양측 모두 변경 되었습니다. - -Cannot determine sync-direction: -동기화 방향을 결정할 수 없습니다: - -No change since last synchronization. -마지막 동기화 이후 변경사항 없음. - -The database entry is not in sync considering current settings. -데이터베이스 항목이 현재 설정을 고려하여 동기화 되지 않았습니다. - -Setting default synchronization directions: Old files will be overwritten with newer files. -기본값 동기화 방향 설정: 이전 파일들은 보다 최신 파일들로 덮어 쓰여집니다. - -Creating file %x -파일 %x 생성 중 - -Creating folder %x -폴더 %x 생성 중 - -Creating symbolic link %x -심볼릭 링크 %x 생성 중 - -Moving file %x to the recycle bin -파일 %x을(를) 휴지통으로 이동 중 - -Moving folder %x to the recycle bin -폴더 %x을(를) 휴지통으로 이동 중 - -Moving symbolic link %x to the recycle bin -심볼릭 링크 %x을(를) 휴지통으로 이동 중 - -Deleting file %x -파일 %x 삭제 중 - -Deleting folder %x -폴더 %x 삭제 중 - -Deleting symbolic link %x -심볼릭 링크 %x 삭제 중 - -Checking recycle bin availability for folder %x... -폴더 %x을(를) 위한 휴지통 가용성 여부 확인 중... - -The recycle bin is not supported by the following folders. Deleted or overwritten files will not be able to be restored: -다음 폴더에서는 휴지통이 지원되지 않습니다. 삭제되거나 덮어 씌어진 파일은 복원할 수 없습니다: - -An exception occurred -예외 발생 - -A left and a right directory path are expected after %x. -%x 다음에 좌측 및 우측 디렉토리 경로가 필요합니다. - -Syntax error -구문 오류 - -Cannot find file %x. -파일 %x을(를) 찾을 수 없습니다. - -Error -오류 - -File %x does not contain a valid configuration. -파일 %x 의 구성이 유효하지 않습니다. - -The config file must not contain settings at directory pair level when directories are set via command line. -명령줄을 통해 설정된 디렉터리의 경우, 설정 파일은 디렉터리 페어 상의 설정을 포함할 수 없습니다. - -Directories cannot be set for more than one configuration file. -디렉터리는 하나 이상의 설정 파일을 위해 설정될 수 없습니다. - -Command line -명령줄(커맨드라인) - -Syntax: -구문(Syntax): - -config files: -설정 파일: - -directory -디렉터리 - -global config file: -전체 설정 파일: - -Any number of FreeFileSync "ffs_gui" and/or "ffs_batch" configuration files. -FreeFileSync "ffs_gui" 또는 "ffs_batch" 설정 파일 개수. - -Any number of alternative directory pairs for at most one config file. -최대 1개 설정파일에 대한 대체 디렉터리 페어 개수. - -Open the selected configuration for editing only, without executing it. -선택한 구성을 실행하지 않고 편집을 위해서만 열기. - -Path to an alternate GlobalSettings.xml file. -GlobalSettings.xml 대체 파일에 대한 경로. - -Installation files are corrupted. Please reinstall FreeFileSync. -설치 파일이 손상되었습니다. FreeFileSync를 다시 설치하십시오. - -Cannot find the following folders: -다음 폴더를 찾을 수 없습니다: - -The following folders do not yet exist: -다음 폴더는 아직 존재하지 않습니다: - -The folders are created automatically when needed. -폴더는 필요 시 자동으로 생성됩니다. - -The following folder paths differ in case. Please use a single form in order to avoid duplicate accesses. -다음 폴더 경로는 경우에 따라 다릅니다. 중복 접근을 피하기 위해 단일 양식을 사용하십시오. - -Scanning: -스캔 중: - -Comparison finished: -비교 완료: - - -1 item found -%x items found - - -%x개 항목 발견 - - -Time elapsed: -경과 시간: - -File %x has an invalid date. -파일 %x의 날짜가 유효하지 않습니다. - -Date: -날짜: - -Files have the same date but a different size. -파일의 날짜는 같으나, 크기가 다릅니다. - -Size: -크기: - -Content comparison was skipped for excluded files. -제외된 파일에 대한 내용 비교는 건너 뛰었습니다. - -Items differ in attributes only -항목들이 속성에서만 차이가 있습니다. - -Resolving symbolic link %x -심볼릭 링크 %x 해결 - -Comparing content of files %x -파일 %x 내용 별 비교 중 - -Generating file list... -파일 리스트 생성 중... - -Fail-safe file copy -실패 - 안전 파일 복사 - -Enabled -활성화 - -Disabled -비활성화 - -Copy locked files -락 걸린 파일 복사 - -Copy file access permissions -파일 접근 권한 복사 - -File time tolerance -파일 시간 허용 - -Run with background priority -배경 우선 순위로 실행 - -Lock directories during sync -동기화 중 디렉터리 잠금 - -Verify copied files -복사된 파일 확인 - -Using non-default global settings: -기본이 아닌 전역설정 사용: - -A folder input field is empty. -폴더 입력 필드 하나가 비어 있습니다. - -The corresponding folder will be considered as empty. -해당 폴더를 비어 있는 상태로 간주합니다. - -Exclude: -제외: - -One base folder of a folder pair is contained in the other one. -폴더 페어 중 하나의 기본 폴더가 다른 폴더에 포함돼 있습니다. - -The folder should be excluded from synchronization via filter. -해당 폴더는 필터를 통한 동기화에서 제외시켜야 합니다. - -Calculating sync directions... -동기화 방향을 계산 중... - -Out of memory. -메모리 부족. - -Show in Explorer -탐색기에 표시 - -Open with default application -기본값 응용 프로그램으로 열기 - -Browse directory -디렉터리 찾아보기 - -Database file %x is incompatible. -데이터베이스 파일 %x 은(는) 호환 불가능합니다. - -Initial synchronization: -초기 동기화: - -Database file %x does not yet exist. -데이터베이스 파일 %x 은(는) 아직 존재하지 않습니다. - -Database file is corrupted: -데이터베이스 파일 손상: - -Loading file %x... -파일 %x 로딩 중... - -The database files do not yet contain information about the last synchronization. -데이터베이스 파일에 아직 마지막 동기화에 대한 정보가 없습니다. - -Saving file %x... -파일 %x 저장 중... - -Searching for folder %x... -폴더 %x 검색 중... - -Timeout while searching for folder %x. -폴더 %x을(를) 검색하는 동안 타임아웃 됨. - -Cannot get process information. -프로세스 정보를 얻을 수 없습니다. - -Waiting while directory is locked: -디렉터리 잠금 대기 중: - -Lock owner: -잠금 권한자: - -Detecting abandoned lock... -방치된 잠금 탐색 중... - - -1 sec -%x sec - - -%x초 - - -Item exists on left side only -항목이 좌측에만 존재합니다. - -Item exists on right side only -항목이 우측에만 존재합니다. - -Left side is newer -좌측이 최신입니다. - -Right side is newer -우측이 최신입니다. - -Items have different content -항목 내용이 서로 다릅니다. - -Both sides are equal -양측이 같음 - -Conflict/item cannot be categorized -충돌 / 항목을 분류할 수 없음 - -Copy new item to left -좌측에 새 항목 복사 - -Copy new item to right -우측에 새 항목 복사 - -Delete left item -좌측 항목 삭제 - -Delete right item -우측 항목 삭제 - -Move file on left -좌측 파일 이동 - -Move file on right -우측 파일 이동 - -Update left item -좌측 항목 업데이트 - -Update right item -우측 항목 업데이트 - -Do nothing -아무 것도 하지 않음 - -Update attributes on left -좌측 속성 업데이트 - -Update attributes on right -우측 속성 업데이트 - -Error parsing file %x, row %y, column %z. -분석 오류 - 파일: %x; 행: %y; 열: %z. - -Services -서비스 - -Show All -모두 보이기 - -Hide Others -기타 다른 항목 숨기기 - -Hide %x -%x 숨기기 - -Quit %x -%x 끝내기 - -Cannot set directory locks for the following folders: -다음 폴더의 디렉터리 잠금을 설정할 수 없습니다: - -Errors: -오류: - -Warnings: -경고: - -Items processed: -처리된 항목: - -Items remaining: -남은 항목: - -Total time: -전체 시간: - -Warning -경고 - -Stopped -중단 - -Cleaning up log files: -로그 파일 정리 중: - - -1 thread -%x threads - - -%x 스레드 - - -%x/sec -%x/초 - -%x items -%x 항목 - -Completed successfully -성공적으로 완료됨 - -Completed with warnings -경고와 함께 완료됨 - -Completed with errors -오류와 함께 완료됨 - -Cannot access the Volume Shadow Copy Service. -볼륨 섀도 복사본 서비스에 접근할 수 없습니다. - -Please run the 64-bit version of FreeFileSync to create shadow copies on this system. -본 운영체제에서의 Shadow Copy 생성은 FreeFileSync 64-비트 버전을 사용하시기 바랍니다. - -Volume name %x is not part of file path %y. -볼륨 이름 %x은(는) 파일 경로 %y의 일부가 아닙니다. - -File time and size -파일 시간 및 크기 - -File content -파일 내용 - -File size -파일 크기 - -Two way -양방향 - -Mirror -미러 - -Update -업데이트 - -Custom -개인 설정 - -Multiple... -다중처리 (멀티플) 작업... - -Cannot write file attributes of %x. -%x의 파일 속성을 쓸 수 없습니다. - -%x and %y have different content. -%x와(과) %y의 콘텐츠가 다릅니다. - -Data verification error: -데이터 확인 오류: - -Moving file %x to %y -파일 %x을(를) %y(으)로 이동 중 - -Moving folder %x to %y -폴더 %x을(를) %y(으)로 이동 중 - -Moving symbolic link %x to %y -심볼릭 링크 %x을(를) %y(으)로 이동 중 - -Updating file %x -파일 %x 업데이트 중 - -Updating symbolic link %x -심볼릭 링크 %x 업데이트 중 - -Verifying file %x -파일 %x 확인 중 - -Updating attributes of %x -%x 속성 업데이트 중 - -Source item %x not found -원본 항목 %x을(를) 찾을 수 없음 - -Parent folder %x is not existing. -상위 폴더 %x이(가) 존재하지 않습니다. - -Cannot copy file %x to %y. -파일 %x을(를) %y(으)로 복사할 수 없습니다. - -Creating a Volume Shadow Copy for %x... -%x을(를) 위한 Volume Shadow Copy 생성 중... - -Cannot find folder %x. -%x 폴더를 찾을 수 없습니다. - -Target folder %x is already existing, but was not available during folder comparison. -대상 폴더 %x이(가) 이미 존재하지만, 폴더 비교시 사용할 수 없었습니다. - -Target folder input field must not be empty. -대상 폴더 입력 필드가 비어 있어서는 안 됩니다. - -Source folder %x not found. -소스 폴더 %x을(를) 찾을 수 없음. - -Please enter a target folder for versioning. -버저닝을 위한 대상 폴더를 입력하세요. - -The following items have unresolved conflicts and will not be synchronized: -아래의 항목들은 해결치 못 한 충돌로 인해 동기화할 수 없습니다: - -Folder pair: -폴더 페어: - -The following folders are significantly different. Please check that the correct folders are selected for synchronization. -다음 폴더들은 서로 간의 차이가 상당합니다. 동기화를 위해 올바른 폴더들이 매치되었는지 확인해 보십시오. - -Not enough free disk space available in: -사용 가능한 디스크 여유 공간이 부족합니다: - -Available: -여유 공간(크기): - -Some files will be synchronized as part of multiple base folders. -일부 파일들은 여러 기본 폴더의 일부로써 동기화됩니다. - -To avoid conflicts, set up exclude filters so that each updated file is included by only one base folder. -충돌을 피하려면 업데이트 된 각 파일이 하나의 기본 폴더에만 포함되도록 제외 필터를 설정하시기 바랍니다. - -Versioning folder: -버전 관리 폴더: - -Base folder: -기본 폴더: - -The versioning folder is contained in a base folder. -버전 관리 폴더는 기본 폴더에 포함돼 있습니다. - -Synchronizing folder pair: -폴더 페어 동기화 진행 중: - -Generating database... -데이터베이스 생성 중... - -Searching for old file versions: -이전 파일 버전 검색 중: - -Removing old file versions: -이전 파일 버전 제거 중: - -Unable to create time stamp for versioning: -버전 관리를 위한 타임 스탬프 생성 불가: - -Drag && drop -끌어서 놓기(&&) [드래그-앤-드랍] - -Select a folder -폴더 선택 - -&New -새로 만들기(&N) - -&Open... -열기(&O)... - -Save &as... -다른 이름으로 저장(&a)... - -E&xit -나가기(&x) - -&File -파일(&F) - -&View help -도움말 보기(&V) - -&About -상세 정보(&A) - -&Help -도움말(&H) - -Usage: -사용: - -Select folders to watch. -감시할 폴더를 선택하세요. - -Enter a command line. -명령줄을 입력하세요. - -Press 'Start'. -'시작'을 누르세요. - -To get started just import a "ffs_batch" file. -시작하려면 "ffs_batch" file을 가져 오십시오. - -Folders to watch: -감시할 폴더: - -Add folder -폴더 추가 - -Remove folder -폴더 제거 - -Browse -찾아보기 - -Idle time (in seconds): -유휴 시간 (초 단위): - -Idle time between last detected change and execution of command -마지막으로 감지된 변화와 명령 실행 간의 유휴 시간 - -Command line: -명령줄(커맨드라인): - -&Hide console window -콘솔 창 숨기기(&H) - - -The command is triggered if: -- files or subfolders change -- new folders arrive (e.g. USB stick insert) - - -명령은 다음과 같은 경우에 실행됩니다: -- 파일이나 하위 폴더 변경 시 -- 새 폴더가 생겼을 시 (예: USB 스틱 삽입) - - -Start -시작 - -About -상세 정보 - -Build: %x -빌드: %x - -All files -모든 파일 - -Automated Synchronization -자동 동기화 - -The %x protocol does not support directory monitoring: -%x 프로토콜은 디렉터리 모니터링을 지원하지 않습니다: - -Directory monitoring active -디렉터리 모니터링 활성화 - -Waiting until directory is available: -디렉토리를 사용할 수 있을 때까지 대기 중: - -&Configure -구성(&C) - -&Show error message -오류 메세지 표시(&S) - -&Quit -종료(&Q) - -&Retry -다시 시도(&R) - - -1 byte -%x bytes - - -%x 바이트 - - -%x MB -%x MB - -%x KB -%x KB - -%x GB -%x GB - -Loading... -로드 중... - -Scanning... -스캔 중... - -configuration file -구성 파일 - -System: Sleep -시스템: 절전 - -System: Shut down -시스템: 종료 - -Nothing to synchronize -동기화 할 항목이 없습니다 - -Executing command: -명령 실행 중: - -You can switch to FreeFileSync's main window to resolve this issue. -이 문제는 FreeFileSync 기본 창으로 전환해서 해결 가능합니다. - -&Don't show this warning again -이 경고를 다시 표시하지 않음(&D) - -&Ignore -무시(&I) - -&Switch -전환(&S) - -Switching to FreeFileSync's main window -FreeFileSync 기본 창으로 전환 중 - -Automatic retry -자동 재시도 - -Ignore &all -전체 무시(&a) - -Retrying operation... -작업 재시도 중... - -Serious Error -심각한 오류 - -Last session -마지막 세션 - -Today -오늘 - - -1 day -%x days - - -%x일 - - -Name -이름 - -Last sync -마지막 동기화 - -Log -로그 - -Folder -폴더 - -Symlink -심링크 - -Full path -전체 경로 - -Relative path -대상 경로 - -Item name -항목 이름 - -Size -크기 - -Date -날짜 - -Extension -확장자 - -Category -카테고리 - -Action -실행 - -Local comparison settings -로컬 비교 설정 - -Local synchronization settings -로컬 동기화 설정 - -Local filter -로컬 필터 - -Active -활성화 - -None -아무것도 안 함 - -Remove local settings -로컬 설정 제거 - -Clear local filter -로컬 필터 제거 - -Copy -복사 - -Paste -붙여넣기 - -The selected folder %x cannot be used with FreeFileSync. -선택된 폴더 %x은(는) FreeFileSync와 함께 사용할 수 없습니다. - -Please select a folder on a local file system, network or an MTP device. -로컬 파일 시스템, 네트워크 또는 MTP 장치에서의 폴더 하나를 선택하십시오. - -Defined by context of use -사용 환경에 따라 정의 됨 - -Requires FreeFileSync Donation Edition -FreeFileSync 기부자 에디션이 필요합니다. - -&Save -저장(&S) - -Save as &batch job... -일괄 작업으로 저장(&b)... - -Show &log -로그 표시(&l) - -Start &comparison -비교 시작(&C) - -C&omparison settings -비교 설정(&o) - -&Filter settings -필터 설정(&F) - -S&ynchronization settings -동기화 설정(&y) - -Start &synchronization -동기화 시작(&S) - -&Actions -실행(&A) - -&Preferences -환경설정(&P) - -&Language -언어 선택(&L) - -&Find... -찾기(&F)... - -&Export file list... -파일 리스트 내보내기(&E)... - -&Reset layout -레이아웃 다시 설정(&R) - -&Tools -도구(&T) - -&Check for updates now -업데이트 바로 확인(&C) - -Check &automatically once a week -일주일에 한 번 자동 확인(&a) - -Cancel -취소 - -Compare -비 교 - -Synchronize -동 기 화 - -Add folder pair -폴더 페어 추가 - -Remove folder pair -폴더 페어 제거 - -Access online storage -온라인 저장소 접속 - -Close search bar -검색 창 닫기 - -Find: -찾기: - -Match case -대문자/소문자 구분 - -Processed: -처리됨: - -Remaining: -남음: - -New -새로 만들기 - -Open... -열기... - -Save -저장 - -Save as... -다른 이름으로 저장... - -View type: -유형 보기: - -Select view: -보기 선택: - -Save as default -기본 값으로 저장 - -Statistics: -통계: - -Number of files and folders that will be deleted -삭제될 파일 및 폴더 개수 - -Number of files that will be updated -업데이트 될 파일 개수 - -Number of files and folders that will be created -생성될 파일 및 폴더 개수 - -Total bytes to copy -복사할 전체 바이트 크기 - -Arrange folder pair -폴더 페어 정렬 - -Main settings: -주요 설정: - -Use local settings: -로컬 설정 사용: - -Select a variant: -베어리언트 선택: - -Include &symbolic links: -심볼릭 링크 포함(&s): - -&Follow -팔로우(&F) - -&Direct -다이렉트(&D) - -More information -상세 정보 - -&Ignore time shift [hh:mm] -타임 쉬프트 무시(&I) [hh:mm] - -List of file time offsets to ignore -무시할 파일 시간 오프셋 목록 - -Example: -예시: - -Handle daylight saving time -서머타임 설정 - -Ignore errors -오류 무시 - -Retry count: -재시도 횟수: - -Delay (in seconds): -지연 (초 단위): - -Performance improvements: -성능 향상: - -Parallel file operations: -병렬 파일 작업: - -How to get best performance? -최상의 성능을 얻는 방법은? - -Local settings: -로컬 설정: - -Include: -포함: - -Show examples -예시 보이기 - -Select filter rules to exclude certain files from synchronization. Enter file paths relative to their corresponding folder pair. -동기화에서 특정 파일을 제외시키는 필터 규칙을 선택합니다. 해당 폴더 페어에 대한 상대 파일 경로를 입력하세요. - -File size: -파일 크기: - -Minimum: -최소: - -Maximum: -최대: - -Time span: -시간 범위: - -C&lear -제거(&l) - -Detect moved files -이동 파일 탐지 - - -- Not supported by all file systems -- Requires and creates database files -- Detection not available for first sync - - -- 모든 파일 시스템에서 지원되지는 않음 -- 데이터베이스 파일 요청 및 생성 -- 첫 번째 동기화를 위한 탐지기능 사용불가 - - -Delete files: -파일 삭제: - -&Recycle bin -휴지통(&R) - -&Permanent -영구(&P) - -&Versioning -버전 관리(&V) - -Move files to a user-defined folder -사용자 정의 폴더로 파일 이동 - -Naming convention: -이름 지정: - -Limit file versions: -파일 버전 제한: - -Last x days: -최근 x일: - -&Override default log path: -기본 로그 경로 다시 정의(&O): - -Run a command: -명령 실행: - -OK -확인 - -Connection type: -연결 유형: - -Connected user accounts: -연결된 사용자 계정: - -&Add connection -연결 추가(&A) - -&Disconnect -연결 해제(&D) - -Selected user account: -선택된 사용자 계정: - -Server name or IP address: -서버 이름 또는 IP 주소: - -Port: -포트: - -Encryption: -암호화: - -&Disabled -비활성화(&D) - -&Explicit SSL/TLS -명확한 SSL/TLS(&E) - -Authentication: -인증: - -&Password -비밀번호(&P) - -&Key file -키 파일(&K) - -&SSH agent -SSH 에이전트(&S) - -User name: -사용자 이름: - -Private key file: -개인 키 파일: - -&Show password -비밀번호 표시(&S) - -Directory on server: -서버 디렉터리: - -Access timeout (in seconds): -접근 제한 시간(초): - -SFTP channels per connection: -연결 당 SFTP 채널 수: - -Detect server limit -서버 한계 감지 - -Select Folder -폴더 선택 - -Variant: -베어리언트: - -&Don't show this dialog again -이 대화 상자를 다시 표시 안 함(&D) - -Bytes: -바이트: - -Items: -항목: - -Synchronizing... -동기화 작업 중... - -Minimize to notification area -알림 영역으로 최소화 - -Bytes -바이트 - -Items -항목 - -When finished: -완료 시: - -Auto-close -자동 닫기 - -Close -닫기 - -&Pause -일시정지(&P) - -Stop -중지 - -Create a batch file for unattended synchronization. To start, double-click this file or schedule in a task planner: %x -직접 지켜보지 않는 자동 동기화의 경우, 배치 파일을 만듭니다. 시작하려면 파일을 더블 클릭하거나 작업 플래너에서 일정을 만드십시오: %x - -Progress dialog: -진행률 대화 상자: - -Run minimized -최소화 실행 - -Show pop-up on errors or warnings -오류 또는 경고에 대한 팝업 보이기 - -&Cancel -취소(&C) - -Stop synchronization at first error -첫 오류 발생 시 동기화 중지 - -How can I schedule a batch job? -일괄 작업 예약 방법은? - -&Keep relative paths -상대 경로 유지(&K) - -&Overwrite existing files -기존 파일 덮어쓰기(&O) - -The following settings are used for all synchronization jobs. -다음 설정은 모든 동기화 작업에 사용됩니다. - - -Copy to a temporary file (*.ffs_tmp) before overwriting target. -This guarantees a consistent state even in case of a serious error. - - -대상을 덮어쓰기 전에 임시파일(*.ffs_tmp)로 복사. -이는 심각한 오류 발생시에도 일관된 상태 유지를 보장합니다. - - -recommended -추천(맞춤) - -Copy shared or locked files using the Volume Shadow Copy Service. -볼륨 섀도 복사본 서비스를 사용하여 공유 또는 잠긴 파일 복사. - -requires administrator rights -관리자 권한 필요 - -Transfer file and folder permissions. -파일 및 폴더 권한 전송. - -Show all permanently hidden dialogs and warning messages again -영구적으로 숨겨진 모든 대화 상자 및 경고 메세지 다시 보이기 - -Default log path: -기본 로그 경로: - -&Delete logs after x days: -x일 후에 로그 삭제(&D): - -Notification sounds: -알림 소리: - -Synchronization finished: -동기화 완료: - -Customize context menu: -컨텍스트 메뉴 커스터마이즈 (사용자 정의): - -Description -설명 - -&Default -기본 설정/값(&D) - -Feedback and suggestions are welcome: -모든 의견 및 제안을 환영합니다: - -Home page -홈페이지 - -FreeFileSync Forum -FreeFileSync 포럼 - -Email -이메일 - -If you like FreeFileSync: -FreeFileSync를 위한 기부: - -Support with a donation -기부금 지원 - -The auto updater was disabled by the administrator. -관리자가 자동 업데이터를 비활성화했습니다. - -Donation details -기부 관련 세부정보 - -Source code written in C++ using: -소스코드는 C++ 언어로 아래 툴을 사용하여 작성되었습니다: - -Published under the GNU General Public License: -GNU 일반 공용 라이센스에 의한 출시: - -Many thanks for localization: -현지화 작업에 깊은 감사 드립니다: - -Activate the FreeFileSync Donation Edition by one of the following methods: -다음 중 한 방법을 사용하여 FreeFileSync 기부자 에디션을 활성화하세요: - -Activate via internet now: -인터넷을 통해 지금 바로 활성화: - -Activate online -온라인 활성화 - -Retrieve an offline activation key from the following URL: -다음 URL에서 오프라인 활성화 키를 검색: - -&Copy to clipboard -클립보드에 복사(&C) - -Enter activation key: -활성화 키 입력: - -Activate offline -오프라인 활성화 - -Highlight configurations that have not been run for more than the following number of days: -다음 일 수보다 오래 실행되지 않은 구성을 강조 표시: - -FreeFileSync requires access rights to avoid "Operation not permitted" errors when synchronizing your data (e.g. Mail, Messages, Calendars). -데이터 동기화 시 (예: 메일, 메시지, 캘린더), "허용되지 않은 작업" 오류를 피하기 위해 FreeFileSync는 접근 권한이 필요합니다. - -Locate the FreeFileSync app -FreeFileSync 앱 찾기 - -Open Security && Privacy -보안 및 개인 정보 보호 - -Click the lock to allow changes. -변경 허용을 하려면 잠금을 클릭하세요. - -Drag FreeFileSync into the panel. -FreeFileSync를 패널 안으로 끌어 오세요. - -Synchronization Settings -동기화 설정 - -Access Online Storage -온라인 저장소 접속 - -Save as a Batch Job -일괄 작업으로 저장 - -Delete Items -항목 삭제 - -Copy Items -항목 복사 - -Options -옵션 - -Select Time Span -시간 범위 선택 - -Highlight Configurations -강조 표시 구성 - -Grant Full Disk Access -전체 디스크 접근 권한 부여 - -Info -정보 - -No log entries -로그 항목 없음 - -Select all -모두 선택 - -&Options -옵션(&O) - -Main Bar -메인 바 - -Folder Pairs -폴더 페어 - -Find -검색 - -View Settings -설정 보기 - -Configuration -구성 설정 - -Overview -개요 - -Swap sides -양측 위치 바꾸기 - -Show "%x" -"%x" 표시 - -&Show details -세부정보 표시(&S) - -FreeFileSync %x is available! -FreeFileSync %x 버전 출시! - -Local path not available for %x. -%x에서 로컬 경로를 사용할 수 없습니다. - -Confirm -확인 - - -Do you really want to execute the command %y for one item? -Do you really want to execute the command %y for %x items? - - -정말로 %x 항목을 위해 %y 명령을 실행하기를 원하십니까? - - -&Execute -실행(&E) - -Set direction: -방향 설정: - -multiple selection -복수 선택 - -&Include via filter: -필터를 통해 다음을 포함(&I): - -&Exclude via filter: -필터를 통해 다음을 제외(&E): - -Include temporarily -임시 포함 - -Exclude temporarily -임시 제외 - -&Synchronize selection -동기화 선택(&S) - -&Copy to... -다른 경로로 복사(&C)... - -&Delete -삭제(&D) - -Show icons: -아이콘 표시: - -Small -작게 - -Medium -중간 - -Large -크게 - -Select time span... -시간 범위 선택... - -Donation Edition -기부자 에디션 - -Folder Comparison and Synchronization -폴더 비교 및 동기화 - -Configuration saved -설정 저장 완료 - -FreeFileSync batch -FreeFileSync 배치(일괄) 처리 - -Do you want to save changes to %x? -%x의 변경사항을 저장하시겠습니까? - -Never save &changes -변경사항 저장 안 함(&c) - -Do&n't save -저장 안 함(&n) - -%x cannot be renamed. -%x의 이름을 바꿀 수 없습니다. - -New name: -새 이름: - -Rename Configuration -구성 이름 바꾸기 - -Configuration name must not be empty. -구성 이름은 비워 둘 수 없습니다. - -&Rename... -이름 바꾸기(&R)... - -Hide configuration -구성 숨기기 - -Highlight... -강조 표시... - -Clear filter -필터 제거 - -Show files that exist on left side only -좌측에만 존재하는 파일 표시 - -Show files that exist on right side only -우측에만 존재하는 파일 표시 - -Show files that are newer on left -좌측이 보다 최신인 파일 표시 - -Show files that are newer on right -우측이 보다 최신인 파일 표시 - -Show files that are equal -내용이 같은 파일 표시 - -Show files that are different -내용이 다른 파일 표시 - -Show conflicts -충돌 표시 - -Show files that will be created on the left side -좌측에 생성될 파일 표시 - -Show files that will be created on the right side -우측에 생성될 파일 표시 - -Show files that will be deleted on the left side -좌측에서 삭제될 파일 표시 - -Show files that will be deleted on the right side -우측에서 삭제될 파일 표시 - -Show files that will be updated on the left side -좌측에 업데이트 될 파일 표시 - -Show files that will be updated on the right side -우측에 업데이트 될 파일 표시 - -Show files that won't be copied -복사되지 않을 파일 표시 - -Show filtered or temporarily excluded files -필터링 또는 일시적으로 제외된 파일 보이기 - -Filter -필터 - -All files are in sync -모든 파일이 동기화 되었음. - - -1 directory -%x directories - - -%x개 디렉터리 - - - -1 file -%x files - - -%x개 파일 - - - -Showing %y of 1 row -Showing %y of %x rows - - -%x 행의 %y 표시 - - -Cannot find %x -%x을(를) 찾을 수 없습니다. - -Move up -위로 이동 - -Move down -아래로 이동 - -Comma-separated values -쉼표로 구분된 값 - -File list exported -파일 리스트 내보내기 완료 - -Searching for program updates... -프로그램 업데이트 검색 중... - -Paused -일시정지 중 - -Stop requested... -중단 요청... - -Initializing... -초기화 작업 중... - -Comparing content... -내용 비교 중... - -&Continue -계속(&C) - -Progress -진행 - -Thank you, %x, for your donation and support! -%x님의 기부와 지원에 감사드립니다! - -Connections -연결 - -Recommended range: -권장 범위: - -Do you really want to disconnect from user account %x? -정말로 사용자 계정 %x에서 연결을 해제하시겠습니까? - -Password: -비밀번호: - -Key passphrase: -키 암호: - -Please enter a file path. -파일 경로를 입력하세요. - - -Copy the following item to another folder? -Copy the following %x items to another folder? - - -다음 %x 항목을 다른 폴더로 복사하시겠습니까? - - -Please enter a target folder. -대상 폴더를 입력하십시오. - - -Do you really want to move the following item to the recycle bin? -Do you really want to move the following %x items to the recycle bin? - - -다음 %x 항목을 정말로 휴지통으로 이동하시겠습니까? - - -Move -이동 - - -Do you really want to delete the following item? -Do you really want to delete the following %x items? - - -정말로 다음 %x 항목을 삭제하시겠습니까? - - -Start to synchronize the selection? -선택한 항목에 대한 동기화를 시작하시겠습니까? - -Start synchronization now? -지금 동기화를 시작하시겠습니까? - -Copy DACL, SACL, Owner, Group -DACL, SACL, 소유자, 그룹 복사 - -Integrate external applications into context menu. The following macros are available: -외부 응용 프로그램을 Context Menu에 통합. 다음 매크로가 사용 가능합니다: - -Full file or folder path -전체 파일 또는 폴더 경로 - -Parent folder path -상위 폴더 경로 - -Temporary local copy for SFTP and MTP storage -SFTP 및 MTP 저장을 위한 임시 로컬 복사 - -Parameters for opposite side -반대 측에 대한 매개 변수 - -Show hidden dialogs again -숨겨진 대화 상자 다시 보이기 - -All dialogs shown -모든 대화 상자 표시 - -Downloading update... -업데이트 다운로드 중... - -Identify equal files by comparing modification time and size. -수정 시간 및 크기를 비교하여 동일한 파일을 식별합니다. - -Identify equal files by comparing the file content. -파일 내용을 비교하여 동일한 파일을 식별합니다. - -Identify equal files by comparing their file size. -파일 크기를 비교하여 동일한 파일을 식별합니다. - -Identify and propagate changes on both sides. Deletions, moves and conflicts are detected automatically using a database. -양측 변경사항을 확인하고 전달. 삭제, 이동 및 충돌은 데이터베이스를 통해 자동으로 감지됩니다. - -Create a mirror backup of the left folder by adapting the right folder to match. -좌측 폴더의 미러 백업을 만듭니다. 우측 폴더는 좌측 폴더와 완전히 일치하게 됩니다. - -Copy new and updated files to the right folder. -신규 또는 업데이트 된 파일을 우측 폴더로 복사합니다. - -Configure your own synchronization rules. -개인 동기화 규칙을 설정합니다. - -Comparison -비 교 - -Synchronization -동 기 화 - -This week -이번 주 - -This month -이번 달 - -This year -올해 - -Byte -바이트 - -KB -KB - -MB -MB - -Retain deleted and overwritten files in the recycle bin -삭제 되거나 덮어 쓴 파일을 휴지통에 보관 - -Delete and overwrite files permanently -영구적으로 파일 삭제 및 덮어 쓰기 - -Replace -대체 - -Move files and replace if existing -파일 이동 및 기존 파일 존재 시에는 대체 - -Time stamp -타임 스탬프 - -Move files into a time-stamped subfolder -파일을 타임 스탬프가 지정된 하위 폴더로 이동 - -File -파일 - -Append a time stamp to each file name -각 파일 이름마다 타임 스탬프 추가 - -On completion: -완료 시: - -On errors: -오류 발생 시: - -On success: -성공 시: - -Main config -주요 설정 - -empty -빈 폴더 - -Leave as unresolved conflict -미해결 충돌로 놔두기 - -YYYY-MM-DD hhmmss -YYYY-MM-DD hhmmss - -Minimum version count must be smaller than maximum count. -최소 버전 카운트는 최대 카운트보다 더 작아야 합니다. - -&Restore -복원(&R) - -Files -파일 - -Percentage -퍼센티지(%) - -Failed to retrieve update information. -업데이트 정보 검색에 실패했습니다. - -Automatic updates: -자동 업데이트: - -Check for Program Updates -프로그램 업데이트 확인 - -Auto-update now or download manually from the FreeFileSync home page? -지금 자동 업데이트 또는 FreeFileSync 홈페이지에서 수동으로 다운로드 하시겠습니까? - -&Auto-update -자동 업데이트(&A) - -&Home page -홈페이지(&H) - -Download now? -지금 다운로드 하시겠습니까? - -&Download -다운로드(&D) - -FreeFileSync is up to date. -현재 FreeFileSync는 최신 버전입니다. - -Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now? -현재 사용 중인 FreeFileSync 버전 번호를 온라인에서 찾을 수 없습니다. 새로운 버전이 있을 수 있으니 수동으로 확인해 보시겠습니까? - -&Check -체크(&C) - -Consistency check failed for %x. -%x에 대한 일관성 검사 실패. - -Installation was registered on a different operating system. -설치가 다른 운영체제에 등록되었습니다. - -Failed to activate FreeFileSync Donation Edition. -FreeFileSync 기부자 에디션 활성화에 실패했습니다. - -Incorrect activation key. -잘못된 활성화 키. - -Unable to register to receive system messages. -시스템 메시지 수신을 위한 등록을 할 수 없습니다. - -The %x installation option is only available in the FreeFileSync Donation Edition. -%x 설치 옵션은 FreeFileSync 기부자 에디션에서만 사용 가능합니다. - -Cannot find system function %x. -시스템 함수 %x을(를) 찾을 수 없습니다. - -Unable to register device notifications for %x. -%x에 대한 장치 알림 등록을 할 수 없습니다. - -The file is locked by another process: -파일이 다른 프로세스에 의해 잠겨 있습니다: - -Failed to determine file permission support for folder %x. -%x 폴더에 대한 파일 권한 지원 정의에 실패하였습니다. - -Cannot read security context of %x. -%x의 보안 컨텍스트를 읽을 수 없습니다. - -Cannot write security context of %x. -%x의 보안 컨텍스트를 쓸 수 없습니다. - -Cannot read permissions of %x. -%x의 권한을 읽을 수 없습니다. - -Cannot copy permissions from %x to %y. -%x에서 %y(으)로의 권한을 복사할 수 없습니다. - -%x is not a regular directory name. -%x(은)는 일반 디렉터리 이름이 아닙니다. - -Cannot copy attributes from %x to %y. -%x에서 %y(으)로의 속성을 복사할 수 없습니다. - -%x TB -%x TB - -%x PB -%x PB - - -1 min -%x min - - -%x분 - - - -1 hour -%x hours - - -%x시간 - - -Cannot set privilege %x. -권한 %x을(를) 설정할 수 없습니다. - -Unable to suspend system sleep mode. -시스템 절전모드 중지를 할 수 없습니다. - -Cannot change process I/O priorities. -프로세스 I/O 우선순위 변경을 할 수 없습니다. - -Checking recycle bin failed for folder %x. -폴더 %x에 관한 휴지통 실패 확인 중. - -Unable to shut down the system. -시스템을 종료할 수 없습니다. - -Prepare installation -설치 준비 - -Choose which components you want to install. -설치할 구성 요소를 선택하세요. - -Select installation type: -설치 유형 선택: - -Local -로컬 - -Portable -포터블 - -Save settings in %x -%x에 설정 저장 - -Register FreeFileSync file extensions -FreeFileSync 파일 확장자 등록 - -Create Explorer context menu entries -익스플로러 컨텍스트 메뉴 항목 생성 - -Save settings in installation directory -설치 디렉터리에 설정 저장 - -Do not write to Registry -레지스트리에 기록 안 함 - -Just copy the files -파일만 복사 - -Choose a directory for installation: -설치할 디렉터리를 선택하세요: - -Create shortcuts: -바로가기 생성: - -Desktop -바탕화면 - -Start Menu -시작 메뉴 - -Send To -보내기 - -Registering FreeFileSync file extensions -FreeFileSync 파일 확장자 등록 중 - -Unregistering FreeFileSync file extensions -FreeFileSync 파일 확장자 등록 해제 중 - -FreeFileSync Configuration -FreeFileSync 환경설정 - -FreeFileSync Batch File -FreeFileSync 배치(일괄) 파일 - -FreeFileSync Synchronization Database -FreeFileSync 동기화 데이터베이스 - -RealTimeSync Configuration -RealTimeSync 환경설정 - -Edit with FreeFileSync -FreeFileSync로 편집 - -Instead of an ad, here's an animal. -광고 대신에 여기 동물 한마리가 있어요. - -The FreeFileSync portable version cannot install into a subfolder of %x. -FreeFileSync 휴대용 버전은 %x의 하위 폴더에 설치할 수 없습니다. - -Please choose the local installation type or select a different folder for installation. -로컬 설치 유형을 선택하거나 설치할 다른 폴더를 선택하십시오. - -Get the Donation Edition with bonus features and help keep FreeFileSync ad-free. -보너스 기능이 있는 기부자 에디션을 사용하시어 광고없는 FreeFileSync가 유지되도록 도와주세요. - diff --git a/FreeFileSync/Build/Resources/Languages/lithuanian.lng b/FreeFileSync/Build/Resources/Languages/lithuanian.lng deleted file mode 100755 index 649cc05e..00000000 --- a/FreeFileSync/Build/Resources/Languages/lithuanian.lng +++ /dev/null @@ -1,2152 +0,0 @@ -
- Lietuvių - Eligijus Staniulis - lt_LT - flag_lithuania.png - 3 - n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2 -
- -Cannot read file %x. -Nepavyksta nuskaityti failo %x. - - -Unexpected size of data stream. -Expected: %x bytes -Actual: %y bytes - - -Nenumatytas duomenų srautas. -Numatytas: %x baitai -Esamas: %y baitai - - -Cannot write file %x. -Nepavyksta įrašyti failo %x. - -Cannot write permissions of %x. -Nepavyksta įrašyti leidimų %x. - -Operation not supported between different devices. -Veiksmas yra nesuderinamas tarp atskitų įrenginių. - -Cannot delete file %x. -Nepavyksta ištrinti failo %x. - -Cannot delete symbolic link %x. -Negalima ištrinti virtualios nuorodos %x. - -Cannot delete directory %x. -Nepavyksta ištrinti katalogo %x. - -Cannot move file %x to %y. -Nepavyksta perkelti failo %x į %y. - -Cannot copy symbolic link %x to %y. -Nepavyko nukopijuoti simbolinės nuorodos %x į %y. - -Error Code %x -Klaidos kodas %x - -Cannot read directory %x. -Negalima nuskaityti katalogo %x. - -Cannot write modification time of %x. -Nepavyksta šrašyti pakeitimo datos %x. - -Cannot read file attributes of %x. -Nepavyko perskaityti failo %x atributų. - -Cannot create directory %x. -Nepavyksta sukurti katalogo %x. - -Cannot determine final path for %x. -Galutinio %x kelio rasti nepavyko. - -Operation not supported by device. -Šis įrenginys nepalaiko šio veiksmo. - -Cannot resolve symbolic link %x. -Nepavyko rasti simbolinės nuorodos %x reikšmės. - -Unable to move %x to the recycle bin. -%x į šiukšliadėžę perkelti nepavyko. - -Authentication completed. -Autentifikavimas baigtas. - -You may close this page now and continue with FreeFileSync. -Jūs dabar galite uždaryti šį langą ir testi FreeFileSync. - -Authentication failed. -Nepavyko autentifikuoti. - -Unable to connect to %x. -Nepavyko prisijungti prie %x. - -Cannot find %x. -Negalima surasti %x. - -The name %x is used by more than one item in the folder. -Šis pavadinimas %x yra naudojamas daugiau nei vieną kartą. - -Please authorize access to user account %x. -Prašome suteikti prieigą šiam vartotojui %x. - -Cannot open file %x. -%x failo nepavyko atidaryti. - -The name %x is already used by another item. -Šis %x vardas jau yra naudoamas. - -Cannot determine free disk space for %x. -Negalima nustatyti laisvos disko dalies %x. - -Unable to disconnect from %x. -Nepavyko atsijungti nuo %x. - -Unable to access %x. -Nepavyko prisijungti %x. - -Failed to get information about server %x. -Nepavyko gauti informaciją apie serverį %x. - -Cannot monitor directory %x. -Nepavyko stebėti katalogo %x. - -Cannot find device %x. -Negalima surasti įrenginio %x. - -Cannot open directory %x. -Nepavyksta atversti direktorijos %x. - -Unsupported item type. -Nepalaikomas elemento tipas. - -Incorrect command line: -Netaisyklinga Komandinė eilutė: - -The server does not support authentication via %x. -Serveris nepalaiko %x autentifikavimo. - -Required: -Reikia: - - -Operation timed out after 1 second. -Operation timed out after %x seconds. - - -Operacijai skirtas laikas baigsis po %x sekundės. -Operacijai skirtas laikas baigsis po %x sekundės. -Operacijai skirtas laikas baigsis po %x sekundžių. - - - -Cannot wait on more than 1 connection at a time. -Cannot wait on more than %x connections at a time. - - -Vienu metu negalima laukti daugiau nei %x prisijungimas. -Vienu metu negalima laukti daugiau nei %x prisijungimai. -Vienu metu negalima laukti daugiau nei %x prisijungimų. - - -Active connections: %x -Aktyvūs susijungimai: %x - -Failed to open SFTP channel number %x. -Nepavyko atidaryti SFTP kanalo %x. - -Both sides have changed since last synchronization. -Abi pusės buvo pakeistos nuo paskutinio suvienodinimo. - -Cannot determine sync-direction: -Nepavyksta nustatyti suvienodinimo krypties: - -No change since last synchronization. -Nėra pakitimo nuo pakutinio suvienodinimo. - -The database entry is not in sync considering current settings. -Duomenų bazės įrašas nesuvienodintas remiantis šiais nustatymais. - -Setting default synchronization directions: Old files will be overwritten with newer files. -Nustatomos numatytos suvienodinimo kryptys: Seni failai bus perrašyti naujesniais failais. - -Creating file %x -Kuriamas failas %x - -Creating folder %x -Kuriamas aplankas %x - -Creating symbolic link %x -Kuriama simbolinė nuoroda %x - -Moving file %x to the recycle bin -%x failas perkeliamas į šiukšliadėžę - -Moving folder %x to the recycle bin -%x katalogas perkeliamas į šiukšliadėžę - -Moving symbolic link %x to the recycle bin -Simbolinė nuoroda %x perkeliama į šiukšliadėžę - -Deleting file %x -Trinamas failas %x - -Deleting folder %x -Trinamas aplankas %x - -Deleting symbolic link %x -Trinama simbolinė nuoroda %x - -Checking recycle bin availability for folder %x... -Tikrinamas šiukšliadėžės prieinamumas aplankui %x... - -The recycle bin is not supported by the following folders. Deleted or overwritten files will not be able to be restored: -Šiukšlinė šių aplankų nepalaiko. Bus neįmanoma atkurti ištrintų arba perrašytų failų: - -An exception occurred -Atsirado išimtis - -A left and a right directory path are expected after %x. -Keliai į kairį ir dešinį katalogus turėtų buti po %x. - -Syntax error -Sintaksės klaida - -Cannot find file %x. -Negalima surasti failo %x. - -Error -Klaida - -File %x does not contain a valid configuration. -Failas %x neturi tinkamų nustatymų. - -The config file must not contain settings at directory pair level when directories are set via command line. -Config failas negali turėti katalogų poros lygio nustatymų kai katalogai nustatomi per komandinę eilutę. - -Directories cannot be set for more than one configuration file. -Katalogai negali būti nustatyti daugiau nei viename konfigūracijos faile. - -Command line -Komandinė eilutė - -Syntax: -Sintaksė: - -config files: -konfigūracinis failas: - -directory -katalogas - -global config file: -bendrinis konfigūracinis failas: - -Any number of FreeFileSync "ffs_gui" and/or "ffs_batch" configuration files. -Neribotas kiekis FreeFileSync "ffs_gui" ir/arba "ffs_batch" konfigūracinių failų. - -Any number of alternative directory pairs for at most one config file. -Bet koks skaičius alternatyvių katalogų grupuojams tik su vienu konfigūraciniu failu. - -Open the selected configuration for editing only, without executing it. -Nepaleidžiant atidaryti pasirinktą konfiguraciją tiktai redagavimui. - -Path to an alternate GlobalSettings.xml file. -Kelias iki alternatyvaus GlobalSettings.xml failo. - -Installation files are corrupted. Please reinstall FreeFileSync. -Įdiegimo failai yra pažeisti. Prašome įdiegti iš naujo FreeFileSync. - -Cannot find the following folders: -Nepavyksta rasti šių aplankų: - -The following folders do not yet exist: -Šis aplankas dar neegzistuoja: - -The folders are created automatically when needed. -Kai reikia, šie aplankai automatiškai sukuriami. - -The following folder paths differ in case. Please use a single form in order to avoid duplicate accesses. -Sekančio aplanko vieta nesutampa. Prašome naudoti tokį patį kelią, kad išvengtumėte dvigubos priegos. - -Scanning: -Nuskaitoma: - -Comparison finished: -Palyginimas pabaigtas: - - -1 item found -%x items found - - -Surastas %x elementas -%x elementai surasti -%x elementų surasta - - -Time elapsed: -Praėjęs laikas: - -File %x has an invalid date. -Failas %x turi netinkamą datą. - -Date: -Data: - -Files have the same date but a different size. -Failai turintys tą pačią datą, bet yra skirtingų dydžių. - -Size: -Dydis: - -Content comparison was skipped for excluded files. -Turinio palyginimas praleido išskirtus failus. - -Items differ in attributes only -Elementai skiriasi tik atributais - -Resolving symbolic link %x -Ieškoma simbolinės nuorodos %x - -Comparing content of files %x -Palyginamas failų turinys %x - -Generating file list... -Sukuriamas failų sąrašas... - -Fail-safe file copy -Apsauginė failo kopija - -Enabled -Įjungta - -Disabled -Išjungta - -Copy locked files -Kopijuoti užrakintus failus - -Copy file access permissions -Kopijuoti failo leidimus - -File time tolerance -Failo laiko nuokrypis - -Run with background priority -Vykdyti kaip aukštesnio prioriteto poprograme - -Lock directories during sync -Suvienodinimo metu užrakinti aplankus - -Verify copied files -Patikrinti nukopijuotus failus - -Using non-default global settings: -Naudoti nepradinius globalius parametrus: - -A folder input field is empty. -Aplanko įvesties laukas yra tuščias. - -The corresponding folder will be considered as empty. -Atitinkamas aplankas bus laikomas tuščiu. - -Exclude: -Išskirti: - -One base folder of a folder pair is contained in the other one. -Pagrindinis aplankas yra kitame, aplankų poros, aplanke. - -The folder should be excluded from synchronization via filter. -Aplankas turėtų būti išskirtas nuo suvienodinimo filtre. - -Calculating sync directions... -Apskaičiuojamos suvienodinimo kryptys... - -Out of memory. -Trūksta atminties. - -Show in Explorer -Rodyti naršyklėje - -Open with default application -Atversti su numatyta programa - -Browse directory -Naršyti katalogą - -Database file %x is incompatible. -Duomenų bazė %x yra netinkama. - -Initial synchronization: -Pirminis suvienodinimas: - -Database file %x does not yet exist. -Duomenų bazės failo %x dar nėra. - -Database file is corrupted: -Duomenų bazės failas yra sugadintas: - -Loading file %x... -Įkraunamas failas %x... - -The database files do not yet contain information about the last synchronization. -Duomenų bazės failas dar neturi informacijos apie paskutinį suvienodinimą. - -Saving file %x... -Išsaugomas failas %x... - -Searching for folder %x... -Ieškoma aplanko %x... - -Timeout while searching for folder %x. -Laikas baigėsi ieškant %x aplanko. - -Cannot get process information. -Nepavyksta gauti eigos informacijos. - -Waiting while directory is locked: -Laukiama kol katalogas yra užrakintas: - -Lock owner: -Užrakto savininkas: - -Detecting abandoned lock... -Aptiktas paliktas užraktas... - - -1 sec -%x sec - - -%x sekundė -%x sekundės -%x sekundžių - - -Item exists on left side only -Elementas egzistuoja tik kairėje pusėje - -Item exists on right side only -Elementas egzistuoja tik dešinėje pusėje - -Left side is newer -Kairė pusė yra naujesnė - -Right side is newer -Dešinė pusė yra naujesnė - -Items have different content -Elementai turi skirtingą turinį - -Both sides are equal -Abi pusės yra lygios - -Conflict/item cannot be categorized -Konfliktas/elementas negali būti kategorizuojamas - -Copy new item to left -Kopijuoti naują elementą į kairę - -Copy new item to right -Kopijuoti naują elementą į dešinę - -Delete left item -Ištrinti kairįjį elementą - -Delete right item -Ištrinti dešinįjį elementą - -Move file on left -Perkelti failą į kairę - -Move file on right -Perkelti failą į dešinę - -Update left item -Atnaujinti kairėje esantį elementą - -Update right item -Atnaujinti dešinėje esantį elementą - -Do nothing -Nieko nedaryti - -Update attributes on left -Atnaujinti atributus kairėje - -Update attributes on right -Atnaujinti atributus dešinėje - -Error parsing file %x, row %y, column %z. -Klaida trinant failą %x, eilė %y, stulpelis %z. - -Services -Paslaugos - -Show All -Rodyti Visus - -Hide Others -Slėpti Kitus - -Hide %x -Slėpti %x - -Quit %x -Išeiti %x - -Cannot set directory locks for the following folders: -Negalima užrakinti šiuos aplankus kataloge: - -Errors: -Klaidos: - -Warnings: -Įspėimai: - -Items processed: -Elementų apdorota: - -Items remaining: -Likę elementai: - -Total time: -Visas laikas: - -Warning -Perspėjimas - -Stopped -Sustabdyta - -Cleaning up log files: -Žurnalinių failų valymas: - - -1 thread -%x threads - - -%x srautas -%x srautai -%x srautų - - -%x/sec -%x/sek - -%x items -%x elementų - -Completed successfully -Sėkmingai užbaigtas - -Completed with warnings -Užbaigtas su perspėjimais - -Completed with errors -Užbaigtas su klaidomis - -Cannot access the Volume Shadow Copy Service. -Duomenų Šešėlinės Kopijos Paslauga nepasiekiama. - -Please run the 64-bit version of FreeFileSync to create shadow copies on this system. -Norėdami sukurti sistemos šešėlinę kopiją, prašome baudoti 64-bitų FreeFileSync versiją. - -Volume name %x is not part of file path %y. -Vietos vardas %x nėra failo kelio %y dalis. - -File time and size -Failo laiką ir dydį - -File content -Failo turinį - -File size -Failo dydis - -Two way -Dvipusis - -Mirror -Identiškas - -Update -Atnaujinti - -Custom -Savitas - -Multiple... -Keletas... - -Cannot write file attributes of %x. -Nepavyksta įrašyti atributų failui %x. - -%x and %y have different content. -%x ir %y turi skirtingą turinį. - -Data verification error: -Duomenų tikrinimo klaida: - -Moving file %x to %y -Perkeliamas failas %x į %y - -Moving folder %x to %y -Perkeliamas aplankas %x į %y - -Moving symbolic link %x to %y -Perkeliama simbolinė nuoroda %x į %y - -Updating file %x -Atnaujinamas failas %x - -Updating symbolic link %x -Atnaujinama virtuali nuoroda %x - -Verifying file %x -Tikrinamas failas %x - -Updating attributes of %x -Atnaujinami atributai %x - -Source item %x not found -Šaltinio elementas %x nerastas: - -Parent folder %x is not existing. -Pirminis aplankas %x neegzistuoa. - -Cannot copy file %x to %y. -Nepavyksta nukopijuoti failų %x į %y. - -Creating a Volume Shadow Copy for %x... -%x kuriamas Duomenų Šešėlinė Kopija... - -Cannot find folder %x. -Negalima rasti aplanko %x. - -Target folder %x is already existing, but was not available during folder comparison. -Jau egzistoja tikslinis aplankas %x, nors neegzistavo palyginimo metu. - -Target folder input field must not be empty. -Tikslo aplanko įvesties laukas negali būti tuščias. - -Source folder %x not found. -Šaltinio aplankas %x nerastas. - -Please enter a target folder for versioning. -Prašome nurodyti aplanką kitoms versijoms. - -The following items have unresolved conflicts and will not be synchronized: -Šie elementai turi neišspręstų konfliktų ir nebus suvienodinti: - -Folder pair: -Aplanko pora: - -The following folders are significantly different. Please check that the correct folders are selected for synchronization. -Sekantys aplankai turi ryškius skirtumus. Prašome patikrinti, ar tikrai teisingi aplankai yra pasirinkti suvienodinimui. - -Not enough free disk space available in: -Nepakanka laisvos disko vietos: - -Available: -Pasiekiama: - -Some files will be synchronized as part of multiple base folders. -Kai kurie failai bus suvienodinti, keliuse pagrindiniuose aplankuose. - -To avoid conflicts, set up exclude filters so that each updated file is included by only one base folder. -Norint išvengti konfliktų, nustatykite išskyrimo filtrus, taip, kad kiekvienas atnaujintas failas būtų tik viename pagrindiniame aplanke. - -Versioning folder: -Versijų valdymo aplankas: - -Base folder: -Pagrindinis aplankas: - -The versioning folder is contained in a base folder. -Versijų aplankas yra pagrindiniame aplanke. - -Synchronizing folder pair: -Suvienodinama aplankų pora: - -Generating database... -Sukuriama duomenų bazė... - -Searching for old file versions: -Ieškoma senų failo versijų: - -Removing old file versions: -Pašalinamos senos failo versijos: - -Unable to create time stamp for versioning: -Nepavyko sukurti versijos laiko žymą: - -Drag && drop -Vilkti && Numesti - -Select a folder -Pažymėti aplanką - -&New -&Naujas - -&Open... -&Atversti... - -Save &as... -Išsaugoti &kaip... - -E&xit -I&šeiti - -&File -&Failas - -&View help -&Rodyti pagalbą - -&About -&Apie - -&Help -&Pagalba - -Usage: -Naudojimas: - -Select folders to watch. -Pasirinkite stebimus aplankus. - -Enter a command line. -Įvesti komandinę eilutę. - -Press 'Start'. -Spauskite „Pradėti“'. - -To get started just import a "ffs_batch" file. -Kad pradėti tiesiog importuokite "ffs_batch" failą. - -Folders to watch: -Stebimi aplankai: - -Add folder -Pridėti aplanką - -Remove folder -Pašalinti aplanką - -Browse -Naršyti - -Idle time (in seconds): -Nenaudojamas laikas (sekundėmis): - -Idle time between last detected change and execution of command -Neveiklus laikas tarp paskutinio aptikto pokyčio ir komandos įvykdymo - -Command line: -Komandinė eilutė: - -&Hide console window -&Paslėpti konsolės langą - - -The command is triggered if: -- files or subfolders change -- new folders arrive (e.g. USB stick insert) - - -Komanda inicijuojama jei: -- failai arba poaplankiai keičiasi -- atsiranda nauji aplankai (pvz.: įkišamas USB raktas) - - -Start -Pradėti - -About -Apie - -Build: %x -Versija: %x - -All files -Visi failai - -Automated Synchronization -Automatinis Suvienodinimas - -The %x protocol does not support directory monitoring: -%x protokolas nepalaiko katalogo stebėjimo: - -Directory monitoring active -Katalogų stebėjimas yra aktyvus - -Waiting until directory is available: -Laukiama kol katalogas bus prieinamas: - -&Configure -&Konfiguruoti - -&Show error message -&Rodyti kaidą - -&Quit -&Išeiti - -&Retry -&Bandyti vėl - - -1 byte -%x bytes - - -%x baitas -%x baitai -%x baitų - - -%x MB -%x MB - -%x KB -%x KB - -%x GB -%x GB - -Loading... -Įkraunama... - -Scanning... -Tikrinama... - -configuration file -nustatymų failas - -System: Sleep -Sistema: Miegoti - -System: Shut down -Sistema: Išjungti - -Nothing to synchronize -Nėra ko suvienodinti - -Executing command: -Vykdoma komanda: - -You can switch to FreeFileSync's main window to resolve this issue. -Sprendžiant šią problemą, galite persijungti i FreeFileSync pagrindinį langą. - -&Don't show this warning again -& Nerodyti daugiau šio perspėjimo - -&Ignore -&Ignoruoti - -&Switch -&Perjungti - -Switching to FreeFileSync's main window -Perjungti į FreeFileSync pagrindinį langą - -Automatic retry -Automatinis paleidimas iš naujo - -Ignore &all -Ignoruoti &visus - -Retrying operation... -Paleisti veiksmą iš naujo... - -Serious Error -Rimta klaida - -Last session -Paskutinė sesija - -Today -Šiandien - - -1 day -%x days - - -%x diena -%x dienos -%x dienų - - -Name -Pavadinimas - -Last sync -Vėliausias - -Log -Žurnalas - -Folder -Aplankas - -Symlink -Simbolinė nuoroda - -Full path -Pilnas kelias - -Relative path -Santykinis kelias - -Item name -Elemento pavadinimas - -Size -Dydis - -Date -Data - -Extension -Plėtinys - -Category -Kategorija - -Action -Veiksmas - -Local comparison settings -Vietiniai palyginimo parametrai - -Local synchronization settings -Vietiniai suvienodinimo parametrai - -Local filter -Vietinis filtras - -Active -Aktyvus - -None -Tusčia - -Remove local settings -Pašalinti vietinius parametrus - -Clear local filter -Ištrinti vietos filtrą - -Copy -Kopijuoti - -Paste -Įklijuoti - -The selected folder %x cannot be used with FreeFileSync. -FreeFileSync negali naudoti pažymėto %x aplanko. - -Please select a folder on a local file system, network or an MTP device. -Prašome pasirinkti aplanką vietinėje failų sistemoje, tinkle arba MTP įrenginyje. - -Defined by context of use -Apibūdintas pagal naudojamą kontekstą - -Requires FreeFileSync Donation Edition -Reikalinga FreeFileSync Donoro Versija - -&Save -&Išsaugoti - -Save as &batch job... -Išsaugoti kaip &užduočių paketą... - -Show &log -Rodyti &žurnalą - -Start &comparison -Pradėti &palyginimą - -C&omparison settings -P&alyginimo parametrai - -&Filter settings -&Filtro parametrai - -S&ynchronization settings -S&uvienodinimo parametrai - -Start &synchronization -Pradėti &suvienodinimą - -&Actions -&Veiksmai - -&Preferences -&Pirmenybės - -&Language -&Kalba - -&Find... -&Ieškoti... - -&Export file list... -&Eksportuoti failų sąrašą... - -&Reset layout -&Išnaujo nustatyti išdėstymą - -&Tools -&Įrankiai - -&Check for updates now -&Dabar patikrinti atnaujinimus - -Check &automatically once a week -Tikrinti &automatiškai kartą per savaitę - -Cancel -Atšaukti - -Compare -Palyginti - -Synchronize -Suvienodinti - -Add folder pair -Pridėti aplankų porą - -Remove folder pair -Pašalinti aplankų porą - -Access online storage -Internetinės saugyklos prieiga - -Close search bar -Uždaryti paieškos įrankinę - -Find: -Paieška: - -Match case -Atitikti atveją - -Processed: -Atlikta: - -Remaining: -Likę: - -New -Naujas - -Open... -Atversti... - -Save -Išsaugoti - -Save as... -Išsaugoti kaip... - -View type: -Rodymo būdai: - -Select view: -Pasirinkti rodymo būdą: - -Save as default -Išsaugoti kaip pagrindinį - -Statistics: -Statistika: - -Number of files and folders that will be deleted -Failų ir aplankų, kurie bus ištrinti, skaičius - -Number of files that will be updated -Atnaujinamų failų kiekis - -Number of files and folders that will be created -Failų ir aplankų, kurie bus sukurti, skaičius - -Total bytes to copy -Viso baitų kopijuoti - -Arrange folder pair -Sulygiuoti pagal aplanko porą - -Main settings: -Pagrindiniai parametrai: - -Use local settings: -Naudoti vietinius nustatymus: - -Select a variant: -Pasirinkti variantą: - -Include &symbolic links: -Pridėti &simbolines nuorodas: - -&Follow -&Sekti - -&Direct -&Tiesiogiai - -More information -Daugiau informacijos - -&Ignore time shift [hh:mm] -&Ignoruoti laiko nuokrypį [hh:mm] - -List of file time offsets to ignore -Parinkti failo ignoruojamo laiko nuokrypį - -Example: -Pavyzdys: - -Handle daylight saving time -Naudoti vasaros laiką - -Ignore errors -Ignoruoti klaidas - -Retry count: -Skaičiuoti is naujo: - -Delay (in seconds): -Uždelsimas (sekundėmis): - -Performance improvements: -Veiklos gerinimai: - -Parallel file operations: -Lygiagrečios failų operacijos: - -How to get best performance? -Kaip gauti geriausius rezultatus? - -Local settings: -Vietiniai nustatymai: - -Include: -Įtraukti: - -Show examples -Rodyti pavyzdžius - -Select filter rules to exclude certain files from synchronization. Enter file paths relative to their corresponding folder pair. -Pasirinkti filtro taisykles norint išskirti pasirinktus failus iš Suvienodinimo. Įveskite failo kelią, kuris atitinka aplanką. - -File size: -Failo dydis: - -Minimum: -Mažiausias: - -Maximum: -Didžiausias: - -Time span: -Laiko atkarpa: - -C&lear -&Išvalyti - -Detect moved files -Rasti perkeltus failus - - -- Not supported by all file systems -- Requires and creates database files -- Detection not available for first sync - - -- Nesuderinama su visomis failų sistemomis -- Būtini ir sukuriami duomenų bazės failai -- Pirmame suderinime aptikimas negalimas - - -Delete files: -Ištrinti failus: - -&Recycle bin -&Šiukšliadėžė - -&Permanent -&Pastovus - -&Versioning -&Atsarginės versijos kūrimas - -Move files to a user-defined folder -Perkelti failus į vartotojo nustatytą katalogą - -Naming convention: -Pavadinimų taisyklės: - -Limit file versions: -Failų versijos riba: - -Last x days: -Paskutinių x dienų: - -&Override default log path: -&Pakeisti pradinę žurnalo nuorodą: - -Run a command: -Vykdyti komandą: - -OK -Gerai - -Connection type: -Prisijungimo būdas: - -Connected user accounts: -Prisijungta prie vartotojų: - -&Add connection -&Pridėti prisijungimus - -&Disconnect -&Atsijungti - -Selected user account: -Pasirinkti vartotoją: - -Server name or IP address: -Serverio vardas arba IP adresas: - -Port: -Jungtis: - -Encryption: -Kodavimas: - -&Disabled -&Išjungta - -&Explicit SSL/TLS -&Aiškiai apibrėžtą initializacijos vektorius SSL/TLS - -Authentication: -Autentifikavimas: - -&Password -&Slaptažodis - -&Key file -&Rakto failas - -&SSH agent -&SSH-agent'as - -User name: -Vartotojo vardas: - -Private key file: -Privataus rakto files: - -&Show password -&Rodyti slaptažodį - -Directory on server: -Katalogas serveryje: - -Access timeout (in seconds): -Prieigos laikas pasibaigs (sekundės): - -SFTP channels per connection: -SFTP kanalai per jungtį: - -Detect server limit -Aptikti serverio ribas - -Select Folder -Pažymėti Aplanką - -Variant: -Variantai: - -&Don't show this dialog again -&Nerodyti pakartotinai šio dialogo lango - -Bytes: -Baitai: - -Items: -Elementai: - -Synchronizing... -Suvienodinama... - -Minimize to notification area -Nuleisti į apačią dešinėje - -Bytes -Baitai - -Items -Elementai - -When finished: -Kai pabaigta: - -Auto-close -Automatiškai uždaryti - -Close -Uždaryti - -&Pause -&Pauzė - -Stop -Stabdyti - -Create a batch file for unattended synchronization. To start, double-click this file or schedule in a task planner: %x -Sukurti paleidimo failą suvienodinimui be priežiūros. Norint jį paleisti reikia paspausti and failo du kartus pele arba nustatyti su užduočių planuotoju: %x - -Progress dialog: -Eiga: - -Run minimized -Vykdyti sumažinus - -Show pop-up on errors or warnings -Rodyti pranešimą esant klaidoms ar perspėjimams - -&Cancel -&Uždaryti - -Stop synchronization at first error -Stabdyti suvienodinimą, pirmai klaidai įvykus - -How can I schedule a batch job? -Kaip aš galiu užduočių paketą įtraukti į tvarkaraštį? - -&Keep relative paths -&Laikyti panašias kelius - -&Overwrite existing files -&Pakeisti esamus failus - -The following settings are used for all synchronization jobs. -Sekantys parametrai yra naudojami visiems suvienodinimo darbams. - - -Copy to a temporary file (*.ffs_tmp) before overwriting target. -This guarantees a consistent state even in case of a serious error. - - -Kopijuoti į laikiną failą (*.ffs_tmp) prieš pakeičiant parinktis. -Tai garantuos pastovią buseną, netgi įvykus rimtai klaidai. - - -recommended -rekomenduojama - -Copy shared or locked files using the Volume Shadow Copy Service. -Kopijuoti bendrintus arba užrakintus failus naudojant duomenų šešėlinės kopijos paslaugą. - -requires administrator rights -reikalingos administratoriaus teisės - -Transfer file and folder permissions. -Failų ir aplankų perkėlimo leidimai. - -Show all permanently hidden dialogs and warning messages again -Vėl rodyti visus paslėptus dialogo langus ir įspėjamuosius pranešimus - -Default log path: -Pradinė žurnalo nuoroda: - -&Delete logs after x days: -&Ištrinti žurnalo įrašus po x dienų: - -Notification sounds: -Pranešimo garsas: - -Synchronization finished: -Suvienodinimas pabaigtas: - -Customize context menu: -Pagrindinio meniu pasirinkimai: - -Description -Apibūdinimas - -&Default -&Numatyta - -Feedback and suggestions are welcome: -Nuomonės ir pasiūlymai yra laukiami: - -Home page -Pagrindinis puslapis - -FreeFileSync Forum -FreeFileSync Diskusijos - -Email -El. paštas - -If you like FreeFileSync: -Jei Jums patinka FreeFileSync: - -Support with a donation -Pailaikymas su paaukojimu - -The auto updater was disabled by the administrator. -Automatinis atnaujinimas yra išjungtas administratoriaus. - -Donation details -Išsamiau apie aukojimą - -Source code written in C++ using: -Šaltinio kodas parašytas su C++ naudojant: - -Published under the GNU General Public License: -Publikuota naudojant GNU General Public License: - -Many thanks for localization: -Labai dėkojame už vertimą: - -Activate the FreeFileSync Donation Edition by one of the following methods: -Aktyvuoti FreeFileSync Donoro Versiją, naudojant vieną iš sekančių metodų: - -Activate via internet now: -Aktyvuoti dabar per internetą: - -Activate online -Actyvuoti per internetą - -Retrieve an offline activation key from the following URL: -Gauti aktyvavimo raktą, kuris veikia neprisijungus, iš šio URL: - -&Copy to clipboard -&Kopijuoti į mainų sritį - -Enter activation key: -Įvesti aktyvavimo raktą: - -Activate offline -Aktyvuoti neprisijungus - -Highlight configurations that have not been run for more than the following number of days: -Paryškinti parametrus kurie nebuvo vykdomi daugiau nei dienų: - -FreeFileSync requires access rights to avoid "Operation not permitted" errors when synchronizing your data (e.g. Mail, Messages, Calendars). -Kai suvienodina jūsų duomenis, FreeFileSync reikia priegos teisių, (pvz.: paštas, žinutės, kalendorius), kad išvengtų klaidos "Operacija neleidžiama". - -Locate the FreeFileSync app -Surasti FreeFileSync programą - -Open Security && Privacy -Atversti Apsuaga && Privatumas - -Click the lock to allow changes. -Įgalinti pakeitimus spausti užraktą. - -Drag FreeFileSync into the panel. -Tempti FreeFileSync į panelę. - -Synchronization Settings -Suvienodinimo parametrai - -Access Online Storage -Pasiekti Suagyklą Internete - -Save as a Batch Job -Išsuagoti kaip paketinį failą - -Delete Items -Pašalinti elementai - -Copy Items -Kopijuoti Elementus - -Options -Parinktys - -Select Time Span -Pasirinkti laiko atkarpą - -Highlight Configurations -Pažymėti Nustatymus - -Grant Full Disk Access -Sutekti Pilną Disko Prieigą - -Info -Informacija - -No log entries -Nėra žurnalo įrašų - -Select all -Pažymėti visus - -&Options -&Parinktys - -Main Bar -Pagrindinė įrankinė - -Folder Pairs -Sugretinti aplankai - -Find -Rasti - -View Settings -Rodymo parametrai - -Configuration -Nustatymai - -Overview -Apžvalga - -Swap sides -Sukeisti puses - -Show "%x" -Rodyti "%x" - -&Show details -&Rodyti išsamiai - -FreeFileSync %x is available! -FreeFileSync %x yra pasiekiamas! - -Local path not available for %x. -Nerastas %x vietinis kelias. - -Confirm -Patvirtinti - - -Do you really want to execute the command %y for one item? -Do you really want to execute the command %y for %x items? - - -Ar iš tikrųjų norite vykdyti komandą %y iš %x elemento? -Ar iš tikrųjų norite vykdyti komandą %y iš %x elementų? -Ar iš tikrųjų norite vykdyti komandą %y iš %x elementų? - - -&Execute -&Vykdyti - -Set direction: -Nustatyti kryptį: - -multiple selection -keletos pažymėjimas - -&Include via filter: -&Pridėti su filtro pagalba: - -&Exclude via filter: -&Išskirti su filtro pagalba: - -Include temporarily -Įtraukti laikinai - -Exclude temporarily -Neįtraukti laikinai - -&Synchronize selection -&Suvienodinti pasirinkimus - -&Copy to... -&Kopijuoti į... - -&Delete -&Ištrinti - -Show icons: -Rodyti ženkliukus: - -Small -Maži - -Medium -Vidutiniai - -Large -Dideli - -Select time span... -Pasirinkti laiko tarpą... - -Donation Edition -Donoro Versija - -Folder Comparison and Synchronization -Aplankų Palyginimas ir Suvienodinimas - -Configuration saved -Nustatymai išsaugoti - -FreeFileSync batch -FreeFileSync paketinė užduotis - -Do you want to save changes to %x? -Ar norite išsaugoti %x pakeitimus? - -Never save &changes -Niekada neišsaugoti &pakeitimų - -Do&n't save -&Nesaugoti - -%x cannot be renamed. -%x negali būti pervardintas. - -New name: -Naujas pavadinimas: - -Rename Configuration -Pervardinti Pasirinkimą - -Configuration name must not be empty. -Pasirinkimo pavadinimas negali būti tuščias. - -&Rename... -&Pervardinti... - -Hide configuration -Paslėpti nustatymus - -Highlight... -Pažymėti... - -Clear filter -Panaikinti filtrą - -Show files that exist on left side only -Rodyti failus, kurie egzistuoja tik kairėje pusėje - -Show files that exist on right side only -Rodyti failus, kurie egzistuoja tik dešinėje pusėje - -Show files that are newer on left -Rodyti failus, kurie yra naujesni kairėje - -Show files that are newer on right -Rodyti failus, kurie yra naujesni dešinėje - -Show files that are equal -Rodyti failus, kurie yra lygūs - -Show files that are different -Rodyti failus, kurie yra skirtingi - -Show conflicts -Rodyti konfliktus - -Show files that will be created on the left side -Rodyti failus, kurie bus sukurti kairėje pusėje - -Show files that will be created on the right side -Rodyti failus, kurie bus sukurti dešinėje pusėje - -Show files that will be deleted on the left side -Rodyti failus, kurie bus ištrinti kairėje pusėje - -Show files that will be deleted on the right side -Rodyti failus, kurie bus ištrinti dešinėje pusėje - -Show files that will be updated on the left side -Rodyti failus, kurie bus atnaujinti kairėje pusėje - -Show files that will be updated on the right side -Rodyti failus, kurie bus atnaujinti dešinėje pusėje - -Show files that won't be copied -Rodyti failus, kurie ne bus kopijuojami - -Show filtered or temporarily excluded files -Rodyti išfiltruotus ar laikinai išskirtus failus - -Filter -Filtras - -All files are in sync -Visi failai suvienodinti - - -1 directory -%x directories - - -%x katalogas -%x katalogai -%x katalogų - - - -1 file -%x files - - -%x failas -%x failai -%x failų - - - -Showing %y of 1 row -Showing %y of %x rows - - -Rodoma %y iš %x eilutės -Rodoma %y iš %x eilučių -Rodoma %y iš %x eilučių - - -Cannot find %x -Nepavyksta rasti %x - -Move up -Perkelti į viršų - -Move down -Perkelti į apačią - -Comma-separated values -Kableliu atskirtos reikšmės - -File list exported -Failų sąrašas eksportuotas - -Searching for program updates... -Ieškoma programos atnaujinimų... - -Paused -Pristabdyta - -Stop requested... -Stabdomas užklausimas... - -Initializing... -Pradedama... - -Comparing content... -Palyginimo turinys... - -&Continue -&Tęsti - -Progress -Pokytis - -Thank you, %x, for your donation and support! -Ačiū, %x, už jūsų auką, bei parėmimą! - -Connections -Prisijungimai - -Recommended range: -Rekomenduojamas intervalas: - -Do you really want to disconnect from user account %x? -Ar jūs tikrai norite atsijungti nuo vartotojo %x? - -Password: -Slaptažodis: - -Key passphrase: -Rakto slaptafrazė: - -Please enter a file path. -Prašome įvesti failo kelią. - - -Copy the following item to another folder? -Copy the following %x items to another folder? - - -Ar kopijuoti šį %x elementą į kitą aplanką? -Ar kopijuoti šiuos %x elementus į kitą aplanką? -Ar kopijuoti šiuos %x elementų į kitą aplanką? - - -Please enter a target folder. -Prašome įvesti tikslinį aplanko vardą. - - -Do you really want to move the following item to the recycle bin? -Do you really want to move the following %x items to the recycle bin? - - -Ar tikrai norite perkelti %x poziciją į šiukšliadėžę? -Ar tikrai norite perkelti šias %x pozicijas į šiukšliadėžę? -Ar tikrai norite perkelti šias %x pozicijų į šiukšliadėžę? - - -Move -Perkelti - - -Do you really want to delete the following item? -Do you really want to delete the following %x items? - - -Ar tikrai norite ištrinti %x elementą? -Ar tikrai norite ištrinti šiuos %x elementus? -Ar tikrai norite ištrinti šiuos %x elementų? - - -Start to synchronize the selection? -Pradėti pasirinkimų suvienodinimą? - -Start synchronization now? -Dabar pradėti suvienodinimą? - -Copy DACL, SACL, Owner, Group -Kopijuoti DACL, SACL, Owner, Group - -Integrate external applications into context menu. The following macros are available: -Integruoti išorines programas į kontekstinį meniu. Sekantys makro galimi: - -Full file or folder path -Pilnas failų ir aplankų kelias - -Parent folder path -Pirminio aplanko kelias - -Temporary local copy for SFTP and MTP storage -Laikina kopija saugoti SFTP ir MTP - -Parameters for opposite side -Parametrai priešingai pusei - -Show hidden dialogs again -Vėl rodyti paslėptus dialogo langus - -All dialogs shown -Rodomi visi dialogai - -Downloading update... -Siunčiamas atanujinimas... - -Identify equal files by comparing modification time and size. -Sutapatinti vienodus failus lyginant failų modifikavimo laiką ir dydį. - -Identify equal files by comparing the file content. -Sutapatinti vienodus failus lyginant failų turinį. - -Identify equal files by comparing their file size. -Identifikuoti vienodus failus, palyginant jų dydį. - -Identify and propagate changes on both sides. Deletions, moves and conflicts are detected automatically using a database. -Nustatyti ir vykdyti pokyčius abiejose pusėse. Trynimai, perkėlimai ir konfliktai yra aptinkami automatiškai naudojant duomenų bazę. - -Create a mirror backup of the left folder by adapting the right folder to match. -Sukurti tikslią kairiojo aplanko atsarginę kopiją tinkinant su dešiniu aplanku. - -Copy new and updated files to the right folder. -Kopijuoti naujus ir atnaujintus failus į dešinį aplanką. - -Configure your own synchronization rules. -Nustatyti Jūsų pačių suvienodinimo taisykles. - -Comparison -Palyginimas - -Synchronization -Suvienodinimas - -This week -Ši savaitė - -This month -Šis mėnuo - -This year -Šie metai - -Byte -Baitai - -KB -KB - -MB -MB - -Retain deleted and overwritten files in the recycle bin -Išlaikyti ištruntus ir perrašytus failus šiukšlinėje - -Delete and overwrite files permanently -Ištrinti ir perrašyti failus negrįžtamai - -Replace -Pakeisti - -Move files and replace if existing -Perkelti failus ir pakeisti jei egzistuoja - -Time stamp -Laiko žymė - -Move files into a time-stamped subfolder -Perkelti failus į poaplankį su laiko žyme - -File -Failas - -Append a time stamp to each file name -Pridėti laiko žymę prie kiekvieno failo pavadinimo - -On completion: -Pasibaigus: - -On errors: -Klaidos atvelu: - -On success: -Teisingai atlikus: - -Main config -Pagrindiniia parametrai - -empty -tuščias - -Leave as unresolved conflict -Palikti kaip neišpręstą konfliktą - -YYYY-MM-DD hhmmss -YYYY-MM-DD hhmmss - -Minimum version count must be smaller than maximum count. -Minimalus versijų skaičius turi būti mažesnis, nei maksimalus skaičius. - -&Restore -&Atstatyti - -Files -Failai - -Percentage -Procentai - -Failed to retrieve update information. -Nepavyko gauti atnaujimo informacijos. - -Automatic updates: -Automatiniai atnaujinimai: - -Check for Program Updates -Tikrinti programos atnaujinimus - -Auto-update now or download manually from the FreeFileSync home page? -Dabar automatiškai atnaujinti arba atnaujinimą atsisiųsti iš FreeFileSync pagrindinio puslapio? - -&Auto-update -&Automatinis atnaujinimas - -&Home page -&Pagrindinis puslapis - -Download now? -Atsiųsti dabar? - -&Download -&Atsisiųsti - -FreeFileSync is up to date. -FreeFileSync yra naujausia. - -Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now? -Negalima surasti dabartinės FreeFileSync versijos internete. Galgūt yra nauja versija. Ar patikrinti dabar rankiniu būdu? - -&Check -&Tikrinti - -Consistency check failed for %x. -Nuoseklumo patikrinimas neįvyko %x. - -Installation was registered on a different operating system. -Įdiegimas buvo registruotas kitoje operacinėje sistemoje. - -Failed to activate FreeFileSync Donation Edition. -Nepavyko aktyvuoti FreeFileSync Donoro Versijos. - -Incorrect activation key. -Neteisingas aktyvavimo raktas. - -Unable to register to receive system messages. -Nepavyko aktyvuoti sisteminių žinučių gavimo funkciją. - -The %x installation option is only available in the FreeFileSync Donation Edition. -%x įdiegiamoji parinktis yra tiktai FreeFileSync Donoro Versijoje. - -Cannot find system function %x. -Nepavyksta rasti sisteminės funkcijos %x. - -Unable to register device notifications for %x. -Nepavyko priregistruoti %x įrenginio pranešimų. - -The file is locked by another process: -Failas yra užrakintas kito procceso: - -Failed to determine file permission support for folder %x. -Nepavyko nustatyti aplanko %x, kuriame yra failas, leidimų palaikymą. - -Cannot read security context of %x. -Nepavyksta perskaityti %x saugumo konteksto. - -Cannot write security context of %x. -Nepavyksta įrašyti %x saugumo konteksto. - -Cannot read permissions of %x. -Nepavyksta perskaityti %x leidimų. - -Cannot copy permissions from %x to %y. -Nepavyko nukopijuoti leidimų iš %x į %y. - -%x is not a regular directory name. -%x nėra reguliarus katalogo vardas. - -Cannot copy attributes from %x to %y. -Nepavyko nukopijuoti atributų iš %x į %y. - -%x TB -%x TB - -%x PB -%x PB - - -1 min -%x min - - -%x minutė -%x minutės -%x minučių - - - -1 hour -%x hours - - -%x valanda -%x valandos -%x valandų - - -Cannot set privilege %x. -Nepavyksta nustatyti privilegijos %x. - -Unable to suspend system sleep mode. -Nepavyko laikinai sustabdyti sistemos budėjimo rėžimo. - -Cannot change process I/O priorities. -Nepavyksta pakeisti proceso I/O prioritetų. - -Checking recycle bin failed for folder %x. -Tikrinama šiukšliadėžė. Failas %x nerastas. - -Unable to shut down the system. -Nepavyko išjungti sistemos. - -Prepare installation -Ruošiamasi įdiegimui - -Choose which components you want to install. -Pasirinkite kuriuos komponentus norėtumėte įdiegti. - -Select installation type: -Pasirinkti įdiegimo būdą: - -Local -Vietoje - -Portable -Nešiojamas - -Save settings in %x -Išsaugoti parametrus %x - -Register FreeFileSync file extensions -Įrašyti FreeFileSync failų plėtinius - -Create Explorer context menu entries -Sukurti failų naršyklės turinio įrašus - -Save settings in installation directory -Išsaugoti parametrus įdiegimo kataloge - -Do not write to Registry -Nerašyti į registrų skiltį - -Just copy the files -Tiesiog kopijuoti failus - -Choose a directory for installation: -Pasirinkite aplanką į kurį norėtumėte įdiegti: - -Create shortcuts: -Sukurti nuorodas: - -Desktop -Darbalaukis - -Start Menu -Pradžios Meniu - -Send To -Siųsti Į - -Registering FreeFileSync file extensions -Registruojami FreeFileSync failų plėtiniai - -Unregistering FreeFileSync file extensions -Išregistruojami FreeFileSync failų plėtiniai - -FreeFileSync Configuration -FreeFileSync Konfigūracijos - -FreeFileSync Batch File -FreeFileSync Failų Paketas - -FreeFileSync Synchronization Database -FreeFileSync Suvienodinimo duomenų bazė - -RealTimeSync Configuration -RealTimeSync Nustatymai - -Edit with FreeFileSync -Koreguoti su FreeFileSync - -Instead of an ad, here's an animal. -Vietoje reklamos, štai čia yra gyvūnas. - -The FreeFileSync portable version cannot install into a subfolder of %x. -FreeFileSync kilnojama versija negali būti įdiegta į poaplankį %x. - -Please choose the local installation type or select a different folder for installation. -Prašome pasirinkti vietinio įdiegimo metodą arba pakeiskite aplaką. - -Get the Donation Edition with bonus features and help keep FreeFileSync ad-free. -Pasirinkti Parėmimo Versiją su papildomomis funkcijomis ir padėkite išlaikyti FreeFileSync be reklamų. - diff --git a/FreeFileSync/Build/Resources/Languages/norwegian.lng b/FreeFileSync/Build/Resources/Languages/norwegian.lng deleted file mode 100755 index 3c2df217..00000000 --- a/FreeFileSync/Build/Resources/Languages/norwegian.lng +++ /dev/null @@ -1,2136 +0,0 @@ -
- Norsk - Karl Gudmund Helland - nb_NO - flag_norway.png - 2 - n == 1 ? 0 : 1 -
- -Cannot read file %x. -Kan ikke lese filen %x. - - -Unexpected size of data stream. -Expected: %x bytes -Actual: %y bytes - - -Uventet størrelse på datastrømmen. -Forventet: %x bytes -Faktisk: %y bytes - - -Cannot write file %x. -Kan ikke opprette filen %x. - -Cannot write permissions of %x. -Kan ikke skrive tillatelsene til %x. - -Operation not supported between different devices. -Operasjonen støttes ikke mellom ulike enheter. - -Cannot delete file %x. -Kan ikke slette filen %x. - -Cannot delete symbolic link %x. -Kan ikke slette symbolsk lenke %x. - -Cannot delete directory %x. -Kan ikke slette katalog %x. - -Cannot move file %x to %y. -Kan ikke flytte filen %x til %y. - -Cannot copy symbolic link %x to %y. -Kan ikke kopiere symbolsk forbindelse %x til %y. - -Error Code %x -Feilkode %x - -Cannot read directory %x. -Kan ikke lese katalogen %x. - -Cannot write modification time of %x. -Kan ikke oppdatere tidsendring på %x. - -Cannot read file attributes of %x. -Kan ikke lese filattributterne på %x. - -Cannot create directory %x. -Kan ikke lage katalog %x. - -Cannot determine final path for %x. -Kan ikke bestemme endelig sti for %x. - -Operation not supported by device. -Operasjonen støttes ikke av enheten. - -Cannot resolve symbolic link %x. -Kan ikke løse den symbolske forbindelsen %x. - -Unable to move %x to the recycle bin. -Kunne ikke flytte %x til papirkurven. - -Authentication completed. -Autentisering er ferdig. - -You may close this page now and continue with FreeFileSync. -Du kan lukke denne siden nå og fortsette med FreeFileSync. - -Authentication failed. -Autentisering mislyktes. - -Unable to connect to %x. -Kan ikke koble til %x. - -Cannot find %x. -Kan ikke finne %x. - -The name %x is used by more than one item in the folder. -Navnet %x brukes av mer enn ett element i mappen. - -Please authorize access to user account %x. -Vennligst godta tilgang til brukerkonto %x. - -Cannot open file %x. -Kan ikke åpne filen %x. - -The name %x is already used by another item. -Navnet %x brukes allerede av et annet element. - -Cannot determine free disk space for %x. -Kan ikke fastslå ledig diskplass for %x. - -Unable to disconnect from %x. -Kan ikke koble fra %x. - -Unable to access %x. -Får ikke tilgang til %x. - -Failed to get information about server %x. -Kunne ikke få informasjon om server %x. - -Cannot monitor directory %x. -Kan ikke overvåke katalog %x. - -Cannot find device %x. -Kan ikke finne enhet %x. - -Cannot open directory %x. -Kan ikke åpne katalog %x. - -Unsupported item type. -Ikke-støttet varetype. - -Incorrect command line: -Ugyldig kommando: - -The server does not support authentication via %x. -Tjeneren støtter ikke autentisering via %x. - -Required: -Krav: - - -Operation timed out after 1 second. -Operation timed out after %x seconds. - - -Operasjonen timet ut etter 1 sekund. -Operasjonen timet ut etter %x sekunder. - - - -Cannot wait on more than 1 connection at a time. -Cannot wait on more than %x connections at a time. - - -Kan ikke vente på mer enn 1 tilkobling om gangen. -Kan ikke vente på mer enn %x tilkoblinger på en gang. - - -Active connections: %x -Aktive tilkoblinger: %x - -Failed to open SFTP channel number %x. -Kunne ikke åpne SFTP kanalnummer %x. - -Both sides have changed since last synchronization. -Begge sider er endret siden siste synkronisering. - -Cannot determine sync-direction: -Kan ikke bestemme synkroniserings-retning: - -No change since last synchronization. -Ingen endringer siden siste synkronisering. - -The database entry is not in sync considering current settings. -Databaseinngangen er ikke synkront med de aktuelle innstillinger. - -Setting default synchronization directions: Old files will be overwritten with newer files. -Setter standard synkroniserings-retning: Gamle filer vil bli overskrevet med nyere filer. - -Creating file %x -Lager filen %x - -Creating folder %x -Lager mappen %x - -Creating symbolic link %x -Oppretter den symbolske forbindelsen %x - -Moving file %x to the recycle bin -Flytter filen %x til papirkurven - -Moving folder %x to the recycle bin -Flytter mappen %x til papirkurven - -Moving symbolic link %x to the recycle bin -Flytter symbolsk link %x til papirkurv - -Deleting file %x -Sletter filen %x - -Deleting folder %x -Sletter mappen %x - -Deleting symbolic link %x -Sletter symbolsk forbindelse %x - -Checking recycle bin availability for folder %x... -Sjekker papirkurvens tilgjengelighet for mappen %x... - -The recycle bin is not supported by the following folders. Deleted or overwritten files will not be able to be restored: -Papirkurven støttes ikke av følgende mapper. Slettede eller overskrevne filer kan ikke gjenopprettes: - -An exception occurred -Et unntak oppstod - -A left and a right directory path are expected after %x. -En venstre og en høyre katalogbane forventes etter %x. - -Syntax error -Syntaksfeil - -Cannot find file %x. -Kan ikke finne filen %x. - -Error -Feil - -File %x does not contain a valid configuration. -Filen %x inneholder ikke gyldige innstillinger. - -The config file must not contain settings at directory pair level when directories are set via command line. -Innstillingsfilen må ikke inneholde innstillinger på katalog-nivå når mapper er satt via en kommandolinje. - -Directories cannot be set for more than one configuration file. -Mapper kan ikke settes til mere enn en innstillingsfil. - -Command line -Kommandolinje - -Syntax: -Syntaks: - -config files: -konfigurer filer: - -directory -katalog - -global config file: -global innstillingsfil: - -Any number of FreeFileSync "ffs_gui" and/or "ffs_batch" configuration files. -Vilkårlig antall FreeFileSync "ffs_gui" og/eller "ffs_batch" innstillingsfiler. - -Any number of alternative directory pairs for at most one config file. -Et ubegrenset antall alternative kataloger for maksimalt én konfigurasjonsfil. - -Open the selected configuration for editing only, without executing it. -Åpne den valgte konfigurasjonen bare for redigering uten å utføre den. - -Path to an alternate GlobalSettings.xml file. -Sti til en alternativ GlobalSettings.xml fil. - -Installation files are corrupted. Please reinstall FreeFileSync. -Installasjonsfilene er ødelagte. Installer FreeFileSync på nytt. - -Cannot find the following folders: -Kan ikke finne følgende mapper: - -The following folders do not yet exist: -Følgende mapper eksisterer ikke: - -The folders are created automatically when needed. -Mappene blir opprettet automatisk når det trengs. - -The following folder paths differ in case. Please use a single form in order to avoid duplicate accesses. -Følgende mappebaner er forskjellige i tilfelle. Vennligst bruk et enkelt skjema for å unngå dupliserte tilganger. - -Scanning: -Skanner: - -Comparison finished: -Sammenligning ferdig: - - -1 item found -%x items found - - -1 punkt funnet -%x punkter funnet - - -Time elapsed: -Brukt tid: - -File %x has an invalid date. -Filen %x har en ugyldig dato. - -Date: -Dato: - -Files have the same date but a different size. -Filene har samme dato, men en annen størrelse. - -Size: -Størrelse: - -Content comparison was skipped for excluded files. -Innholdssammenligningen ble hoppet over for ekskluderte filer. - -Items differ in attributes only -Elementene har kun forskjellige attributter - -Resolving symbolic link %x -Løser symbolsk forbindelse %x - -Comparing content of files %x -Sammenligner innhold i filer %x - -Generating file list... -Oppretter fil-liste... - -Fail-safe file copy -Sikker filkopiering - -Enabled -Aktivert - -Disabled -Deaktivert - -Copy locked files -Kopiér låste filer - -Copy file access permissions -Kopiér adgangs-tillatelser - -File time tolerance -Filtid toleranse - -Run with background priority -Kjør med bakgrunns-prioritet - -Lock directories during sync -Lås kataloger under synkronisering - -Verify copied files -Kontrollér kopierte filer - -Using non-default global settings: -Bruk av ikke-standard globale innstillinger: - -A folder input field is empty. -Der er ikke skrevet inn noe mappenavn. - -The corresponding folder will be considered as empty. -Den samsvarende mappen betraktes som tom. - -Exclude: -Ekskludér: - -One base folder of a folder pair is contained in the other one. -En basismappe til et mappepar finnes i den andre. - -The folder should be excluded from synchronization via filter. -Mappen bør utelukkes fra synkronisering via filter. - -Calculating sync directions... -Beregner synkroniserings-retninger... - -Out of memory. -Ikke nok minne. - -Show in Explorer -Vis i Explorer - -Open with default application -Åpne med standardprogrammet - -Browse directory -Bla i katalogen - -Database file %x is incompatible. -Databasefilen %x er inkompatibel. - -Initial synchronization: -Første synkronisering: - -Database file %x does not yet exist. -Databasefilen %x finnes ikke ennå. - -Database file is corrupted: -Databasefilen er skadet: - -Loading file %x... -Laster fil %x... - -The database files do not yet contain information about the last synchronization. -Databasefilene inneholder ennå ikke informasjon om siste synkronisering. - -Saving file %x... -Lagrer filen %x... - -Searching for folder %x... -Søker etter mappen %x... - -Timeout while searching for folder %x. -Timeout mens du søker etter mappe %x. - -Cannot get process information. -Kan ikke hente bearbeidings-informasjon. - -Waiting while directory is locked: -Venter mens katalogen låses: - -Lock owner: -Lås eier: - -Detecting abandoned lock... -Finner etterlatt lås... - - -1 sec -%x sec - - -1 sek -%x sek - - -Item exists on left side only -Elementet finnes kun på venstre side - -Item exists on right side only -Elementet finnes kun på høyre side - -Left side is newer -Venstre side er nyest - -Right side is newer -Høyre side er nyest - -Items have different content -Elementene har forskjellig innhold - -Both sides are equal -Begge sider er like - -Conflict/item cannot be categorized -Konflikt/ukjent element - -Copy new item to left -Kopier nytt element mot venstre - -Copy new item to right -Kopier nytt element mot høyre - -Delete left item -Slett venstre element - -Delete right item -Slett høyre element - -Move file on left -Flytt filen til venstre - -Move file on right -Flytt filen til høyre - -Update left item -Oppdater venstre element - -Update right item -Oppdater høyre element - -Do nothing -Ikke gjør noe - -Update attributes on left -Oppdater attributter til venstre - -Update attributes on right -Oppdater attributter til høyre - -Error parsing file %x, row %y, column %z. -Behandlingsfeil i filen %x, rad %y, kolonne %z. - -Services -Tjenester - -Show All -Vis alt - -Hide Others -Skjul andre - -Hide %x -Skjul %x - -Quit %x -Avslutt %x - -Cannot set directory locks for the following folders: -Kan ikke angi kataloglås for følgende mapper: - -Errors: -Feil: - -Warnings: -Advarsler: - -Items processed: -Elementer behandlet: - -Items remaining: -Gjenstående elementer: - -Total time: -Samlet tid: - -Warning -Advarsel - -Stopped -Stoppet - -Cleaning up log files: -Sletter loggfiler: - - -1 thread -%x threads - - -1 tråd -%x tråder - - -%x/sec -%x/sek - -%x items -%x elementer - -Completed successfully -Fullførte feilfritt - -Completed with warnings -Avsluttet med advarsler - -Completed with errors -Avsluttet med feil - -Cannot access the Volume Shadow Copy Service. -Volume Shadow Copy-tjenesten er ikke tilgjengelig. - -Please run the 64-bit version of FreeFileSync to create shadow copies on this system. -Kjør 64-bits versjonen av FreeFileSync for å lage skyggekopier på dette systemet. - -Volume name %x is not part of file path %y. -Volumnavnet %x er ikke en del av filstien %y. - -File time and size -Størrelse og tid - -File content -Fil-innhold - -File size -Filstørrelse - -Two way -Toveis - -Mirror -Speiling - -Update -Oppdater - -Custom -Tilpasset - -Multiple... -Flere... - -Cannot write file attributes of %x. -Kan ikke skrive filattributter til %x. - -%x and %y have different content. -%x og %y har forskjellig innhold. - -Data verification error: -Data verifikasjons-feil: - -Moving file %x to %y -Flytter filen %x til %y - -Moving folder %x to %y -Flytter mappen %x til %y - -Moving symbolic link %x to %y -Flytter symbolsk forbindelsen %x til %y - -Updating file %x -Oppdaterer fil %x - -Updating symbolic link %x -Oppdaterer symbolsk forbindelse %x - -Verifying file %x -Verifiserer filen %x - -Updating attributes of %x -Oppdaterer attributter for %x - -Source item %x not found -Kildeelementet %x ikke funnet - -Parent folder %x is not existing. -Overordnet mappe %x finnes ikke. - -Cannot copy file %x to %y. -Kan ikke kopiere filen %x til %y. - -Creating a Volume Shadow Copy for %x... -Oppretter en Volume Shadow-kopi for %x... - -Cannot find folder %x. -Finner ikke mappen %x. - -Target folder %x is already existing, but was not available during folder comparison. -Målmappe %x er allerede eksisterende, men var ikke tilgjengelig under mappesammenligning. - -Target folder input field must not be empty. -Målmappens datafelt må ikke være tomt. - -Source folder %x not found. -Kildemappen %x ble ikke funnet. - -Please enter a target folder for versioning. -Angi en målmappe til versjonen. - -The following items have unresolved conflicts and will not be synchronized: -Følgende elementer har uløste konflikter og vil ikke bli synkroniserete: - -Folder pair: -Mappepar: - -The following folders are significantly different. Please check that the correct folders are selected for synchronization. -Følgende mapper er vesentlig forskjellige. Kontroller at de riktige mappene er valgt for synkronisering. - -Not enough free disk space available in: -Ikke nok ledig diskplass på: - -Available: -Tilgjengelig: - -Some files will be synchronized as part of multiple base folders. -Noen filer vil bli synkronisert som en del av flere basemapper. - -To avoid conflicts, set up exclude filters so that each updated file is included by only one base folder. -For å unngå konflikter, sett opp ekskluder filtre slik at hver oppdaterte fil bare er inkludert i en basemappe. - -Versioning folder: -Versjonsmappe: - -Base folder: -Basemappe: - -The versioning folder is contained in a base folder. -Versjonsmappen er plassert i en basismappe. - -Synchronizing folder pair: -Synkroniserer mappepar: - -Generating database... -Lager database... - -Searching for old file versions: -Leter etter gamle filversjoner: - -Removing old file versions: -Fjerner gamle filversjoner: - -Unable to create time stamp for versioning: -Kan ikke opprette tidsstempel til versjonen: - -Drag && drop -Dra && slipp - -Select a folder -Velg en mappe - -&New -&Ny - -&Open... -&Åpne... - -Save &as... -Lagre &som... - -E&xit -A&vslutt - -&File -&Fil - -&View help -&Vis hjelp - -&About -&Om - -&Help -&Hjelp - -Usage: -Bruk: - -Select folders to watch. -Velg mapper å se på. - -Enter a command line. -Skriv inn en kommando. - -Press 'Start'. -Klikk 'Start'. - -To get started just import a "ffs_batch" file. -Importer en "ffs_batch"fil for å komme igang. - -Folders to watch: -Mapper å se på: - -Add folder -Legg til mappe - -Remove folder -Fjern mappe - -Browse -Søk - -Idle time (in seconds): -Inaktiv tid (i sekunder): - -Idle time between last detected change and execution of command -Inaktiv tid mellom sist funnet endring og kommando-utførelsen - -Command line: -Kommandolinje: - -&Hide console window -&Skjul konsollvindu - - -The command is triggered if: -- files or subfolders change -- new folders arrive (e.g. USB stick insert) - - -Kommandoen utføres hvis: -- filer eller undermapper endres -- nye mapper dukker opp (f.eks USB-penn settes inn) - - -Start -Start - -About -Om - -Build: %x -Utgitt: %x - -All files -Alle filer - -Automated Synchronization -Automatisk synkronisering - -The %x protocol does not support directory monitoring: -%x-protokollen støtter ikke katalogovervåking: - -Directory monitoring active -Katalog-overvåkning er aktiv - -Waiting until directory is available: -Venter til katalogen er tilgjengelig: - -&Configure -&Konfigurer - -&Show error message -&Vis feilmelding - -&Quit -&Avslutt - -&Retry -&Prøv igjen - - -1 byte -%x bytes - - -1 byte -%x byte - - -%x MB -%x MB - -%x KB -%x KB - -%x GB -%x GB - -Loading... -Laster... - -Scanning... -Skanner... - -configuration file -konfigurasjonsfil - -System: Sleep -System: Sov - -System: Shut down -System: Avslutt - -Nothing to synchronize -Alt er synkronisert - -Executing command: -Utfører kommando: - -You can switch to FreeFileSync's main window to resolve this issue. -Du kan skifte til FreeFileSync's hovedvindu for at løse dette problemet. - -&Don't show this warning again -&Ikke vis denne advarselen igjen - -&Ignore -&Ignorér - -&Switch -&Skift - -Switching to FreeFileSync's main window -Skifter til FreeFileSync's hovedvindu - -Automatic retry -Prøv igjen automatisk - -Ignore &all -Ignorer &alt - -Retrying operation... -Prøver igjen... - -Serious Error -Kritisk feil - -Last session -Siste oppgave - -Today -I dag - - -1 day -%x days - - -1 dag -%x dager - - -Name -Navn - -Last sync -Sist synkronisert - -Log -Logg - -Folder -Mappe - -Symlink -Symbolsk forbindelse - -Full path -Full sti - -Relative path -Tilknyttet sti - -Item name -Elementnavn - -Size -Størrelse - -Date -Dato - -Extension -Filtype - -Category -Kategori - -Action -Handling - -Local comparison settings -Lokale sammenlignings-innstillinger - -Local synchronization settings -Lokale synkroniserings-innstillinger - -Local filter -Lokalt filter - -Active -Aktiv - -None -Ingen - -Remove local settings -Fjern lokale innstillinger - -Clear local filter -Slett lokalt filter - -Copy -Kopiér - -Paste -Lim inn - -The selected folder %x cannot be used with FreeFileSync. -Den valgte mappa %x kan ikke brukes i FreeFileSync. - -Please select a folder on a local file system, network or an MTP device. -Velg en mappe på lokalt filsystem, nettverk eller på en MTP-enhet. - -Defined by context of use -Definert etter brukskontekst - -Requires FreeFileSync Donation Edition -Behøver FreeFileSync Donation Edition - -&Save -&Lagre - -Save as &batch job... -Lagre som &batchfil... - -Show &log -Vis &logg - -Start &comparison -Start &sammenligning - -C&omparison settings -S&ammenlignings-innstillinger - -&Filter settings -&Filter-innstillinger - -S&ynchronization settings -S&ynkroniserings-innstillinger - -Start &synchronization -Start &synkronisering - -&Actions -&Handlinger - -&Preferences -&Preferanser - -&Language -&Språk - -&Find... -&Finn... - -&Export file list... -&Eksporter filliste... - -&Reset layout -&Tilbakestill oppsettet - -&Tools -&Verktøy - -&Check for updates now -&Sjekk etter oppdateringer nå - -Check &automatically once a week -Søk &automatisk en gang i uken - -Cancel -Avbryt - -Compare -Sammenlign - -Synchronize -Synkronisér - -Add folder pair -Legg til mappe-par - -Remove folder pair -Fjern mappe-par - -Access online storage -Få tilgang til nettlagring - -Close search bar -Lukk søkelinja - -Find: -Finn: - -Match case -Treff-følsomhet (a/A) - -Processed: -Bearbeidet: - -Remaining: -Gjenstående: - -New -Ny - -Open... -Åpne... - -Save -Lagre - -Save as... -Lagre som... - -View type: -Visning: - -Select view: -Velg visning: - -Save as default -Lagre som standard - -Statistics: -Statistikk: - -Number of files and folders that will be deleted -Antall filer og mapper som vil bli slettet - -Number of files that will be updated -Antall filer som vil bli oppdatert - -Number of files and folders that will be created -Antall filer og mapper som vil bli opprettet - -Total bytes to copy -Antall bytes som kopieres - -Arrange folder pair -Ordne mappepar - -Main settings: -Hovedinnstillingene: - -Use local settings: -Bruk lokale innstillinger: - -Select a variant: -Velg en metode: - -Include &symbolic links: -Inkludér &symbolske forbindelser: - -&Follow -&Følg - -&Direct -&Direkte - -More information -Mer informasjon - -&Ignore time shift [hh:mm] -&Se bort fra tidsforskyving [hh:mm] - -List of file time offsets to ignore -Oversikt over tidsforskyvinger å se bort fra - -Example: -Eksempel: - -Handle daylight saving time -Behandle sommertid - -Ignore errors -Ignorér feil - -Retry count: -Antall forsøk: - -Delay (in seconds): -Forsinkelse (i sekunder): - -Performance improvements: -Ytelsesforbedringer: - -Parallel file operations: -Parallelle fil-operasjoner: - -How to get best performance? -Hvordan få best mulig ytelse? - -Local settings: -Lokale innstillinger: - -Include: -Inkludér: - -Show examples -Vis eksempler - -Select filter rules to exclude certain files from synchronization. Enter file paths relative to their corresponding folder pair. -Velg filter-regler for å utelate bestemte filer fra synkroniseringen. Skriv inn filstier tilknyttet de tilhørende mappeparene. - -File size: -Filstørrelse: - -Minimum: -Minimum: - -Maximum: -Maksimum: - -Time span: -Intervall: - -C&lear -F&jern - -Detect moved files -Gjenkjenn flyttede filer - - -- Not supported by all file systems -- Requires and creates database files -- Detection not available for first sync - - -- Ikke støttet av alle filsystemer -- Krever og lager databasefiler -- Påvisning ikke tilgjengelig i første synkronisering - - -Delete files: -Slett filer: - -&Recycle bin -&Papirkurv - -&Permanent -&Permanent - -&Versioning -&Versjons - -Move files to a user-defined folder -Flytt filer til en brukerdefinert mappe - -Naming convention: -Navne-regler: - -Limit file versions: -Begrens filversjoner: - -Last x days: -Siste x dager: - -&Override default log path: -&Velg en annen loggbane: - -Run a command: -Kjør en kommando: - -OK -OK - -Connection type: -Tilkoblingstype: - -Connected user accounts: -Tilkoblede brukerkontoer: - -&Add connection -&Legg til tilkobling - -&Disconnect -&Koble fra - -Selected user account: -Valgt brukerkonto: - -Server name or IP address: -Servernavn eller IP-adresse: - -Port: -Post: - -Encryption: -Kryptering: - -&Disabled -&Utkoplet - -&Explicit SSL/TLS -&Eksplisitt SSL/TLS - -Authentication: -Autentisering: - -&Password -&Passord - -&Key file -&Nøkkelfil - -&SSH agent -&SSH agent - -User name: -Brukernavn: - -Private key file: -Privat nøkkelfil: - -&Show password -&Vis passord - -Directory on server: -Katalog på server: - -Access timeout (in seconds): -Få tilgang til tidsavbrudd (i sekunder): - -SFTP channels per connection: -SFTP kanaler per tilkobling: - -Detect server limit -Oppdag server grensa - -Select Folder -Velg mappe - -Variant: -Jobbtype: - -&Don't show this dialog again -&Ikke vis denne dialogen igjen - -Bytes: -Bytes: - -Items: -Elementer: - -Synchronizing... -Synkroniserer... - -Minimize to notification area -Minimér til status-feltet - -Bytes -Bytes - -Items -Elementer - -When finished: -Når ferdig: - -Auto-close -Auto-lukk - -Close -Lukk - -&Pause -&Pause - -Stop -Stopp - -Create a batch file for unattended synchronization. To start, double-click this file or schedule in a task planner: %x -Lag en batchfil til automatisk synkronisering. Start ved å dobbeltklikke på filen eller planlegg via oppgaveplanlegger: %x - -Progress dialog: -Fremdriftsdialog: - -Run minimized -Kjør minimert - -Show pop-up on errors or warnings -Vis feilmeldinger og advarsler - -&Cancel -&Avbryt - -Stop synchronization at first error -Stopp synkronisering ved første feil - -How can I schedule a batch job? -Hvordan kan jeg lage en batchfil? - -&Keep relative paths -&Behold tilknyttede stier - -&Overwrite existing files -&Skriv over eksisterende filer - -The following settings are used for all synchronization jobs. -Disse innstillinger gjelder alle synkroniseringer. - - -Copy to a temporary file (*.ffs_tmp) before overwriting target. -This guarantees a consistent state even in case of a serious error. - - -Kopiér til en midlertidig fil (*.ffs_tmp) før overskriving. -Sikrer prosessen ved alvorlige feil. - - -recommended -anbefalt - -Copy shared or locked files using the Volume Shadow Copy Service. -Kopiér delte eller låste filer ved å bruke Volume Shadow kopiering. - -requires administrator rights -krever administratorrettigheter - -Transfer file and folder permissions. -Overfør fil- og mappe-tillatelser. - -Show all permanently hidden dialogs and warning messages again -Vis alle skjulte vinduer og advarsler igjen - -Default log path: -Standard loggbane: - -&Delete logs after x days: -&Slett logger etter x dager: - -Notification sounds: -Varslingslyder: - -Synchronization finished: -Synkroniseringen er ferdig: - -Customize context menu: -Tilpass kontekst-meny: - -Description -Beskrivelse - -&Default -&Standard - -Feedback and suggestions are welcome: -Tilbakemelding og forslag er velkomne: - -Home page -Hjemmeside - -FreeFileSync Forum -FreeFileSync sitt forum - -Email -Epost - -If you like FreeFileSync: -Hvis du liker FreeFileSync: - -Support with a donation -Støtte med en donasjon - -The auto updater was disabled by the administrator. -Den automatiske oppdateringen ble deaktivert av administratoren. - -Donation details -Donasjon detaljer - -Source code written in C++ using: -Kildekoden er skrevet i C++ med hjelp fra: - -Published under the GNU General Public License: -Publisert under GNU General Public License: - -Many thanks for localization: -Takk for oversettelse: - -Activate the FreeFileSync Donation Edition by one of the following methods: -Aktivér FreeFileSync Donation Versjon med en av følgende metoder: - -Activate via internet now: -Aktivér via internett nå: - -Activate online -Aktivér på nett - -Retrieve an offline activation key from the following URL: -Hent en aktiveringsnøkkel fra følgende URL: - -&Copy to clipboard -&Kopiér til utklippstavla - -Enter activation key: -Skriv inn en aktiveringsnøkkel: - -Activate offline -Aktivér frakoplet - -Highlight configurations that have not been run for more than the following number of days: -Uthev konfigurasjoner som ikke har blitt kjørt for mer enn følgende antall dager: - -FreeFileSync requires access rights to avoid "Operation not permitted" errors when synchronizing your data (e.g. Mail, Messages, Calendars). -FreeFileSync krever tilgangsrettigheter for å unngå feil "Operasjon ikke tillatt" når du synkroniserer dataene dine (f.eks. E-post, Meldinger, Kalendere). - -Locate the FreeFileSync app -Finn FreeFileSync-appen - -Open Security && Privacy -Åpne sikkerhet og personvern - -Click the lock to allow changes. -Klikk på låsen for å tillate endringer. - -Drag FreeFileSync into the panel. -Dra FreeFileSync inn i panelet. - -Synchronization Settings -Synkroniserings-innstillinger - -Access Online Storage -Få tilgang til nettverkslagring - -Save as a Batch Job -Lagre som en batchjobb - -Delete Items -Slett elementene - -Copy Items -Kopiér elementer - -Options -Valg - -Select Time Span -Velg tids-intervall - -Highlight Configurations -Uthev konfigurasjoner - -Grant Full Disk Access -Gi full disktilgang - -Info -Info - -No log entries -Ingen loggfiler - -Select all -Velg alt - -&Options -&Valg - -Main Bar -Hovedlinje - -Folder Pairs -Mappepar - -Find -Finn - -View Settings -Vis innstillinger - -Configuration -Konfigurasjon - -Overview -Oversikt - -Swap sides -Bytt sider - -Show "%x" -Vis "%x" - -&Show details -&Vis detaljer - -FreeFileSync %x is available! -FreeFileSync %x er tilgjengelig! - -Local path not available for %x. -Lokal sti er ikke tilgjengelig for %x. - -Confirm -Bekreft - - -Do you really want to execute the command %y for one item? -Do you really want to execute the command %y for %x items? - - -Vil du kjøre kommandoen %y for 1 element? -Vil du kjøre kommandoen %y for %x elementer? - - -&Execute -&Utfør - -Set direction: -Sett retning: - -multiple selection -velg flere - -&Include via filter: -&Inkluder via filter: - -&Exclude via filter: -&Ekskluder via filter: - -Include temporarily -Inkludér midlertidig - -Exclude temporarily -Ekskludér midlertidig - -&Synchronize selection -&Synkroniser utvalg - -&Copy to... -&Kopier til... - -&Delete -&Slett - -Show icons: -Vis ikoner: - -Small -Liten - -Medium -Medium - -Large -Stor - -Select time span... -Velg tidsinterval... - -Donation Edition -Donasjon-utgave - -Folder Comparison and Synchronization -Mappe-sammenligning og synkronisering - -Configuration saved -Innstillingen er lagret - -FreeFileSync batch -FreeFileSync batchfil - -Do you want to save changes to %x? -Vil du lagre endringer i %x? - -Never save &changes -Aldri lagre &endringer - -Do&n't save -&Ikke lagre - -%x cannot be renamed. -%x kan ikke gi nytt navn. - -New name: -Nytt navn: - -Rename Configuration -Gi nytt navn til konfigurasjonen - -Configuration name must not be empty. -Konfigurasjonsnavnet må ikke være tomt. - -&Rename... -&Gi nytt navn... - -Hide configuration -Skjul konfigurasjoner - -Highlight... -Uthev... - -Clear filter -Slett filter - -Show files that exist on left side only -Vis filer som kun finnes på venstre side - -Show files that exist on right side only -Vis filer som kun finnes på høyre side - -Show files that are newer on left -Vis nyere filer på venstre side - -Show files that are newer on right -Vis nyere filer på høyre side - -Show files that are equal -Vis like filer - -Show files that are different -Vis ulike filer - -Show conflicts -Vis konflikter - -Show files that will be created on the left side -Vis filer som vil bli opprettet på venstre side - -Show files that will be created on the right side -Vis filer som vil bli opprettet på høyre side - -Show files that will be deleted on the left side -Vis filer som vil bli slettet på venstre side - -Show files that will be deleted on the right side -Vis filer som vil bli slettet på høyre side - -Show files that will be updated on the left side -Vis filer som vil bli oppdatert på venstre side - -Show files that will be updated on the right side -Vis filer som vil bli oppdatert på høyre side - -Show files that won't be copied -Vis filer som ikke vil bli kopierte - -Show filtered or temporarily excluded files -Vis filtrerte eller midlertidig ekskluderte filer - -Filter -Filter - -All files are in sync -Alle filer er synkroniserte - - -1 directory -%x directories - - -1 katalog -%x kataloger - - - -1 file -%x files - - -1 fil -%x filer - - - -Showing %y of 1 row -Showing %y of %x rows - - -Viser %y av 1 rad -Viser %y av %x rader - - -Cannot find %x -Kan ikke finne %x - -Move up -Flytt opp - -Move down -Flytt ned - -Comma-separated values -Komma-oppdelte verdier - -File list exported -Fillisten ble eksportert - -Searching for program updates... -Søker etter program-oppdateringer... - -Paused -Pauset - -Stop requested... -Stopp forespurt... - -Initializing... -Forbereder... - -Comparing content... -Sammenligner innhold... - -&Continue -&Fortsett - -Progress -Fremskritt - -Thank you, %x, for your donation and support! -Takk, %x, for ditt bidrag og støtte! - -Connections -Tilkoblinger - -Recommended range: -Anbefalt område: - -Do you really want to disconnect from user account %x? -Vil du virkelig koble fra brukerkonto %x? - -Password: -Passord: - -Key passphrase: -Nøkkelord: - -Please enter a file path. -Vennligst skriv inn en filbane. - - -Copy the following item to another folder? -Copy the following %x items to another folder? - - -Kopier følgende element til en annen mappe? -Kopier følgende %x elementer til en annen mappe? - - -Please enter a target folder. -Velg en målmappe. - - -Do you really want to move the following item to the recycle bin? -Do you really want to move the following %x items to the recycle bin? - - -Vil du virkelig flytte følgende element til papirkurven? -Vil du virkelig flytte følgende %x elementer til papirkurven? - - -Move -Flytt - - -Do you really want to delete the following item? -Do you really want to delete the following %x items? - - -Vil du virkelig slette følgende element? -Vil du virkelig slette følgende %x element? - - -Start to synchronize the selection? -Begynn å synkronisere utvalget? - -Start synchronization now? -Synkroniser nå? - -Copy DACL, SACL, Owner, Group -Kopiér DACL, SACL, Eier, Gruppe - -Integrate external applications into context menu. The following macros are available: -Integrer eksterne programmer i kontekstmeny. Bruk følgende makroer: - -Full file or folder path -Komplett fil- eller mappesti - -Parent folder path -Moder mappesti - -Temporary local copy for SFTP and MTP storage -Midlertidig lokal kopi for SFTP og FTP lagring - -Parameters for opposite side -Parametere for motsatt side - -Show hidden dialogs again -Vis skjulte vinduer igjen - -All dialogs shown -Alle dialoger vises - -Downloading update... -Laster ned oppdatering... - -Identify equal files by comparing modification time and size. -Gjennkjenn like filer ved å sammenligne filtid og størrelse. - -Identify equal files by comparing the file content. -Gjennkjenn like filer ved å sammenligne innhold. - -Identify equal files by comparing their file size. -Finn like filer ved å sammenligne filstørrelsen. - -Identify and propagate changes on both sides. Deletions, moves and conflicts are detected automatically using a database. -Gjenkjenn og fordel endringer på begge sider. Slettede filer, flyttinger og konflikter finnes automatisk i en database. - -Create a mirror backup of the left folder by adapting the right folder to match. -Opprett speiling av venstre mappe ved å tilpasse den høyre mappe. - -Copy new and updated files to the right folder. -Kopier nye og oppdaterte filer til høyre mappe. - -Configure your own synchronization rules. -Opprett dine egne synkroniseringsregler. - -Comparison -Sammenligning - -Synchronization -Synkronisering - -This week -Denne uke - -This month -Denne måned - -This year -Dette år - -Byte -Byte - -KB -KB - -MB -MB - -Retain deleted and overwritten files in the recycle bin -Behold slettede og overskrevne filer i papirkurven - -Delete and overwrite files permanently -Slett og overskriv filer permanent - -Replace -Erstatt - -Move files and replace if existing -Flytt filer og erstatt eventuelt eksisterende - -Time stamp -Tidsstempel - -Move files into a time-stamped subfolder -Flytt filer til en tidsstemplet undermappe - -File -Fil - -Append a time stamp to each file name -Legg til tidsstempel til hvert filnavn - -On completion: -Når gjennomført: - -On errors: -Ved feil: - -On success: -Ved suksess: - -Main config -Hovedinnstilling - -empty -tom - -Leave as unresolved conflict -Etterlat som uløst konflikt - -YYYY-MM-DD hhmmss -ÅÅÅÅ-MM-DD ttmmss - -Minimum version count must be smaller than maximum count. -Minimumversjons-tellingen må være mindre enn maksimumstellingen. - -&Restore -&Gjenopprett - -Files -Filer - -Percentage -Prosent - -Failed to retrieve update information. -Kunne ikke hente oppdateringsinformasjon. - -Automatic updates: -Automatiske oppdateringer: - -Check for Program Updates -Søk etter program-oppdateringer - -Auto-update now or download manually from the FreeFileSync home page? -Auto-oppdatér nå, eller laste ned manuelt fra FreeFileSyncs hjemmeside? - -&Auto-update -&Auto-oppdatér - -&Home page -&Hjemmeside - -Download now? -Last ned nå? - -&Download -&Last ned - -FreeFileSync is up to date. -FreeFileSync er oppdatert. - -Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now? -Kan ikke finne aktuell FreeFileSync sitt versjonsnummer på nettet. En ny versjon er snart tilgjengelig. Sjekk nå? - -&Check -&Kontrollér - -Consistency check failed for %x. -Innholdssjekken gikk galt for %x. - -Installation was registered on a different operating system. -Installasjon ble registrert på et annet operativsystem. - -Failed to activate FreeFileSync Donation Edition. -Kunne ikke aktivere FreeFileSync Donation Edition. - -Incorrect activation key. -Feil aktiveringsnøkkel. - -Unable to register to receive system messages. -Kunne ikke registrere for å motta systembeskjeder. - -The %x installation option is only available in the FreeFileSync Donation Edition. -Installasjonsalternativet %x er bare tilgjengelig i FreeFileSync Donation Edition. - -Cannot find system function %x. -Kan ikke finne systemfunksjonen %x. - -Unable to register device notifications for %x. -Kunne ikke registere enhets-varsler for %x. - -The file is locked by another process: -Filen er låst av en annen prosess: - -Failed to determine file permission support for folder %x. -Kunne ikke bestemme støtte for filtillatelse for mappe %x. - -Cannot read security context of %x. -Kan ikke lese sikkerhetsinnstillinger på %x. - -Cannot write security context of %x. -Kan ikke skrive sikkerhetsinnstillinger til %x. - -Cannot read permissions of %x. -Kan ikke lese tillatelsene på %x. - -Cannot copy permissions from %x to %y. -Kan ikke kopiere tillatelsene fra %x til %y. - -%x is not a regular directory name. -%x er ikke et vanlig katalognavn. - -Cannot copy attributes from %x to %y. -Kan ikke kopiere attributtene fra %x til %y. - -%x TB -%x TB - -%x PB -%x PB - - -1 min -%x min - - -1 min -%x min - - - -1 hour -%x hours - - -1 time -%x timer - - -Cannot set privilege %x. -Kan ikke sette privilegier %x. - -Unable to suspend system sleep mode. -Kunne ikke oppheve hvile-modus. - -Cannot change process I/O priorities. -Kan ikke endre I/O prioriteter. - -Checking recycle bin failed for folder %x. -Det å sjekke papirkurven gikk galt for mappen %x. - -Unable to shut down the system. -Kan ikke slå av systemet. - -Prepare installation -Forbered installering - -Choose which components you want to install. -Velg hva du vil installere. - -Select installation type: -Velg installasjonstype: - -Local -Lokal - -Portable -Portabel - -Save settings in %x -Lagre innstillinger i %x - -Register FreeFileSync file extensions -Registrér FreeFileSync's filendelser - -Create Explorer context menu entries -Lag Explorer kontekst meny-oppføringer - -Save settings in installation directory -Lagre innstillinger i installasjons-katalog - -Do not write to Registry -Ikke skriv til registeret - -Just copy the files -Bare kopier filene - -Choose a directory for installation: -Velg en katalog for installasjon: - -Create shortcuts: -Opprett snarveier: - -Desktop -Skrivebord - -Start Menu -Start-meny - -Send To -Send til - -Registering FreeFileSync file extensions -Registrerer FreeFileSync's filendelser - -Unregistering FreeFileSync file extensions -Avregistrerer FreeFileSync's filendelser - -FreeFileSync Configuration -FreeFileSync konfigurering - -FreeFileSync Batch File -FreeFileSync batchfil - -FreeFileSync Synchronization Database -FreeFileSync synkronisering database - -RealTimeSync Configuration -RealTimeSync konfigurering - -Edit with FreeFileSync -Rediger med FreeFileSync - -Instead of an ad, here's an animal. -I stedet for en annonse er her et dyr. - -The FreeFileSync portable version cannot install into a subfolder of %x. -Den bærbare versjonen av FreeFileSync kan ikke installeres i en undermappe av %x. - -Please choose the local installation type or select a different folder for installation. -Velg den lokale installasjonstype eller velge en annen mappe for installasjon. - -Get the Donation Edition with bonus features and help keep FreeFileSync ad-free. -Få Donation Edition med bonus-tillegg og hjelp til med å holde FreeFileSync annonsefri. - diff --git a/FreeFileSync/Build/Resources/Languages/polish.lng b/FreeFileSync/Build/Resources/Languages/polish.lng deleted file mode 100755 index 9f71bd6f..00000000 --- a/FreeFileSync/Build/Resources/Languages/polish.lng +++ /dev/null @@ -1,2152 +0,0 @@ -
- Polski - Józef Łuszczek - pl_PL - flag_poland.png - 3 - n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2 -
- -Cannot read file %x. -Nie można odczytać pliku %x. - - -Unexpected size of data stream. -Expected: %x bytes -Actual: %y bytes - - -Niespodziewany rozmiar strumienia danych. -Oczekiwany: %x bajtów -Przesłany: %y bajtów - - -Cannot write file %x. -Nie można zapisać pliku %x. - -Cannot write permissions of %x. -Nie można zapisać uprawnień %x. - -Operation not supported between different devices. -Operacja nie jest obsługiwana między różnymi urządzeniami. - -Cannot delete file %x. -Nie można usunąć pliku %x. - -Cannot delete symbolic link %x. -Nie można usunąć dowiązania symbolicznego %x. - -Cannot delete directory %x. -Nie można usunąć katalogu %x. - -Cannot move file %x to %y. -Nie można przenieść pliku %x do %y. - -Cannot copy symbolic link %x to %y. -Nie można skopiować linku symbolicznego %x do %y. - -Error Code %x -Kod błędu %x - -Cannot read directory %x. -Nie można odczytać katalogu %x. - -Cannot write modification time of %x. -Nie można zapisać czasu modyfikacji %x. - -Cannot read file attributes of %x. -Nie można odczytać atrybutów pliku %x. - -Cannot create directory %x. -Nie można utworzyć katalogu %x. - -Cannot determine final path for %x. -Nie można określić ostatecznej ścieżki dla %x. - -Operation not supported by device. -Operacja nie jest obsługiwana przez urządzenie. - -Cannot resolve symbolic link %x. -Nie można określić położenia dowiązania symbolicznego %x. - -Unable to move %x to the recycle bin. -Nie można przenieść %x do kosza. - -Authentication completed. -Uwierzytelnianie zakończone. - -You may close this page now and continue with FreeFileSync. -Możesz teraz zamknąć tę stronę i kontynuować FreeFileSync. - -Authentication failed. -Uwierzytelnianie nie powiodło się. - -Unable to connect to %x. -Błąd połączenia do %x. - -Cannot find %x. -Nie można odnaleźć %x. - -The name %x is used by more than one item in the folder. -Nazwa %x jest używana przez więcej niż jeden element w folderze. - -Please authorize access to user account %x. -Proszę autoryzować dostęp do konta użytkownika %x. - -Cannot open file %x. -Nie można otworzyć pliku %x. - -The name %x is already used by another item. -Nazwa %x jest już używana przez inny element. - -Cannot determine free disk space for %x. -Nie można określić wolnego miejsca na %x. - -Unable to disconnect from %x. -Nie można odłączyć od %x. - -Unable to access %x. -Brak dostępu do %x. - -Failed to get information about server %x. -Nie można uzyskać informacji o serwerze %x. - -Cannot monitor directory %x. -Nie można monitorować katalogu %x. - -Cannot find device %x. -Nie można odnaleźć urządzenia %x. - -Cannot open directory %x. -Nie można otworzyć katalogu %x. - -Unsupported item type. -Nieobsługiwany typ elementu. - -Incorrect command line: -Niepoprawne polecenie: - -The server does not support authentication via %x. -Serwer nie wspiera uwierzytelniania przez %x. - -Required: -Wymagane: - - -Operation timed out after 1 second. -Operation timed out after %x seconds. - - -Przekroczono czas oczekiwania 1 sekundy dla zadania. -Przekroczono czas oczekiwania %x sekund dla zadania. -Przekroczono czas oczekiwania %x sekund dla zadania. - - - -Cannot wait on more than 1 connection at a time. -Cannot wait on more than %x connections at a time. - - -Nie można oczekiwać na więcej niż 1 zadanie na raz. -Nie można oczekiwać na więcej niż %x zadania na raz. -Nie można oczekiwać na więcej niż %x zadań na raz. - - -Active connections: %x -Aktywne połączenia: %x - -Failed to open SFTP channel number %x. -Nie można otworzyć kanału SFTP numer %x. - -Both sides have changed since last synchronization. -Obie strony uległy zmianie od ostatniej synchronizacji. - -Cannot determine sync-direction: -Nie można określić kierunku synchronizacji: - -No change since last synchronization. -Brak zmian od ostatniej synchronizacji. - -The database entry is not in sync considering current settings. -Baza danych nie jest spójna z aktualnymi ustawieniami. - -Setting default synchronization directions: Old files will be overwritten with newer files. -Ustawianie domyślnego kierunku synchronizacji: Stare pliki zostaną nadpisane nowszymi. - -Creating file %x -Tworzenie pliku %x - -Creating folder %x -Tworzenie katalogu %x - -Creating symbolic link %x -Tworzenie dowiązania symbolicznego %x - -Moving file %x to the recycle bin -Przenoszenie pliku %x do kosza - -Moving folder %x to the recycle bin -Przenoszenie katalogu %x do kosza - -Moving symbolic link %x to the recycle bin -Przenoszenie dowiązania symbolicznego %x do kosza - -Deleting file %x -Usuwanie pliku %x - -Deleting folder %x -Usuwanie katalogu %x - -Deleting symbolic link %x -Usuwanie dowiązania symbolicznego %x - -Checking recycle bin availability for folder %x... -Sprawdzanie dostępności kosza dla katalogu %x... - -The recycle bin is not supported by the following folders. Deleted or overwritten files will not be able to be restored: -Kosz systemowy nie jest wspierany przez poniższe foldery. Usunięte i nadpisane pliki nie będą mogły być przywrócone: - -An exception occurred -Wystąpił wyjątek - -A left and a right directory path are expected after %x. -Po %x należy określić lewy i prawy katalog. - -Syntax error -Błąd składni - -Cannot find file %x. -Nie można odnaleźć pliku %x. - -Error -Błąd - -File %x does not contain a valid configuration. -Plik %x nie zawiera prawidłowej konfiguracji. - -The config file must not contain settings at directory pair level when directories are set via command line. -Plik konfiguracyjny nie może zawierać informacji o synchronizowanych katalogach, gdy nazwy ścieżek przekazywane są w linii poleceń. - -Directories cannot be set for more than one configuration file. -Nie można ustawić wielu katalogów dla więcej niż jednego pliku konfiguracyjnego. - -Command line -Linia komend - -Syntax: -Składnia: - -config files: -pliki konfiguracyjne: - -directory -katalog - -global config file: -globalny plik konfiguracyjny: - -Any number of FreeFileSync "ffs_gui" and/or "ffs_batch" configuration files. -Dowolna ilość plików konfiguracyjnych FreeFileSync "ffs_gui"/"ffs_batch". - -Any number of alternative directory pairs for at most one config file. -Dowolna liczba alternatywnych par katalogów dla najwyżej jednego pliku konfiguracyjnego. - -Open the selected configuration for editing only, without executing it. -Otwórz wybraną konfigurację tylko do edycji (bez uruchomienia). - -Path to an alternate GlobalSettings.xml file. -Alternatywna ścieżka do pliku GlobalSettings.xml. - -Installation files are corrupted. Please reinstall FreeFileSync. -Pliki instalacyjne są uszkodzone. Przeinstaluj program FreeFileSync. - -Cannot find the following folders: -Nie można znaleźć następujących katalogów: - -The following folders do not yet exist: -Następujące katalogi jeszcze nie istnieją: - -The folders are created automatically when needed. -Katalogi są tworzone automatycznie w razie potrzeby. - -The following folder paths differ in case. Please use a single form in order to avoid duplicate accesses. -Poniższe ścieżki do katalogów różnią się wielkością liter. Użyj pojedynczego formularza, aby uniknąć duplikowania dostępu. - -Scanning: -Skanowanie: - -Comparison finished: -Porównywanie zakończone: - - -1 item found -%x items found - - -Znaleziono 1 element -Znaleziono %x elementy -Znaleziono %x elementów - - -Time elapsed: -Upłynęło: - -File %x has an invalid date. -Plik %x ma nieprawidłową datę. - -Date: -Data: - -Files have the same date but a different size. -Pliki mają tą samą datę ale różny rozmiar. - -Size: -Rozmiar: - -Content comparison was skipped for excluded files. -Dla wykluczonych plików porównywanie zawartości nie zostało wykonane. - -Items differ in attributes only -Elementy różnią się wyłącznie atrybutami - -Resolving symbolic link %x -Rozwiązywanie dowiązania symbolicznego %x - -Comparing content of files %x -Porównywanie zawartości plików %x - -Generating file list... -Generowanie listy plików... - -Fail-safe file copy -Bezpieczne kopiowanie - -Enabled -Włącz - -Disabled -Wyłącz - -Copy locked files -Kopiuj zablokowane pliki - -Copy file access permissions -Kopiuj uprawnienia plików - -File time tolerance -Tolerancja czasu dla pliku - -Run with background priority -Uruchom w tle z priorytetem - -Lock directories during sync -Zablokuj katalogi podczas synchronizacji - -Verify copied files -Weryfikuj przekopiowane pliki - -Using non-default global settings: -Wykorzystane niestandardowe ustawienia globalne: - -A folder input field is empty. -Pole katalog źródłowy jest puste. - -The corresponding folder will be considered as empty. -Katalog będzie oznaczony jako pusty. - -Exclude: -Wyklucz: - -One base folder of a folder pair is contained in the other one. -Jeden z katalogów jest zawarty w drugim. - -The folder should be excluded from synchronization via filter. -Katalog powinien zostać wykluczony przy wykorzystaniu filtrów. - -Calculating sync directions... -Obliczanie kierunków synchronizacji... - -Out of memory. -Brak wolnej pamięci. - -Show in Explorer -Wyświetl w Eksploratorze - -Open with default application -Otwórz za pomocą domyślnej aplikacji - -Browse directory -Przeglądaj katalog - -Database file %x is incompatible. -Plik bazy danych %x nie jest kompatybilny. - -Initial synchronization: -Wstępna synchronizacja: - -Database file %x does not yet exist. -Plik bazy danych %x nie istnieje. - -Database file is corrupted: -Plik bazy danych jest uszkodzony: - -Loading file %x... -Wczytywanie pliku %x... - -The database files do not yet contain information about the last synchronization. -Pliki bazy danych nie posiadają żadnych informacji o ostatniej synchronizacji. - -Saving file %x... -Zapisywanie pliku %x... - -Searching for folder %x... -Wyszukiwanie katalogu %x... - -Timeout while searching for folder %x. -Przekroczono czas oczekiwania podczas szukania katalogu %x. - -Cannot get process information. -Nie można uzyskać informacji dla procesu. - -Waiting while directory is locked: -Oczekiwanie przez blokadę katalogu: - -Lock owner: -Właściciel blokady: - -Detecting abandoned lock... -Wykrywanie nieaktywnej blokady... - - -1 sec -%x sec - - -1 sekunda -%x sekundy -%x sekund - - -Item exists on left side only -Element istnieje tylko po lewej stronie - -Item exists on right side only -Element istnieje tylko po prawej stronie - -Left side is newer -Lewa strona jest nowsza - -Right side is newer -Prawa strona jest nowsza - -Items have different content -Elementy różnią się zawartością - -Both sides are equal -Obie strony są równe - -Conflict/item cannot be categorized -Konflikt/element nie może zostać skategoryzowany - -Copy new item to left -Kopiuj nowy element na lewą stronę - -Copy new item to right -Kopiuj nowy element na prawą stronę - -Delete left item -Usuń lewy element - -Delete right item -Usuń prawy element - -Move file on left -Przenieś plik na lewą stronę - -Move file on right -Przenieś plik na prawą stronę - -Update left item -Aktualizuj lewy element - -Update right item -Aktualizuj prawy element - -Do nothing -Nie rób nic - -Update attributes on left -Aktualizuj atrybuty po lewej stronie - -Update attributes on right -Aktualizuj atrybuty po prawej stronie - -Error parsing file %x, row %y, column %z. -Błąd podczas parsowania pliku %x, rząd %y, kolumna %z. - -Services -Usługi - -Show All -Pokaż Wszystko - -Hide Others -Ukryj Inne - -Hide %x -Ukryj %x - -Quit %x -Zamknij %x - -Cannot set directory locks for the following folders: -Nie można zablokować katalogów dla poniższych folderów: - -Errors: -Błędy: - -Warnings: -Ostrzeżenia: - -Items processed: -Przetworzone elementy: - -Items remaining: -Pozostałe elementy: - -Total time: -Całkowity czas: - -Warning -Ostrzeżenie - -Stopped -Zatrzymana - -Cleaning up log files: -Czyszczenie plików logów: - - -1 thread -%x threads - - -1 wątek -%x wątki -%x wątków - - -%x/sec -%x/sek - -%x items -%x elementów - -Completed successfully -Zakończono bez błędów - -Completed with warnings -Zakończono z ostrzeżeniami - -Completed with errors -Zakończono z błędami - -Cannot access the Volume Shadow Copy Service. -Nie można uzyskać dostępu do usługi Volume Shadow Copy. - -Please run the 64-bit version of FreeFileSync to create shadow copies on this system. -Uruchom 64-bitową wersję FreeFileSync aby utworzyć Shadow Copies w tym systemie. - -Volume name %x is not part of file path %y. -Nazwa wolumenu %x nie jest częścią ścieżki %y. - -File time and size -Czas modyfikacji i rozmiar - -File content -Zawartość pliku - -File size -Rozmiar pliku - -Two way -Obustronna - -Mirror -Lustrzana - -Update -Uaktualnij - -Custom -Własne - -Multiple... -Wiele... - -Cannot write file attributes of %x. -Nie można zapisać atrybutów %x. - -%x and %y have different content. -%x i %y mają różną zawartość. - -Data verification error: -Błąd weryfikacji danych: - -Moving file %x to %y -Przenoszenie pliku %x do %y - -Moving folder %x to %y -Przenoszenie katalogu %x do %y - -Moving symbolic link %x to %y -Przenoszenie dowiązania symbolicznego %x do %y - -Updating file %x -Aktualizowanie pliku %x - -Updating symbolic link %x -Aktualizowanie dowiązania symbolicznego %x - -Verifying file %x -Weryfikowanie pliku %x - -Updating attributes of %x -Aktualizowanie atrybutów %x - -Source item %x not found -Nie znaleziono elementu źródłowego %x - -Parent folder %x is not existing. -Nadrzędny folder %x nie istnieje. - -Cannot copy file %x to %y. -Nie można skopiować pliku %x do %y. - -Creating a Volume Shadow Copy for %x... -Tworzenie Volume Shadow Copy dla %x... - -Cannot find folder %x. -Nie można znaleźć katalogu %x. - -Target folder %x is already existing, but was not available during folder comparison. -Folder docelowy %x już istnieje, ale nie był dostępny podczas porównywania folderów. - -Target folder input field must not be empty. -Pole katalogu docelowego nie może być puste. - -Source folder %x not found. -Nie znaleziono katalogu źródłowego %x. - -Please enter a target folder for versioning. -Określ katalog docelowy do wersjonowania. - -The following items have unresolved conflicts and will not be synchronized: -Te elementy znajdują się w konflikcie, którego nie można rozwiązać. Pliki nie zostaną zsynchronizowane: - -Folder pair: -Para folderów: - -The following folders are significantly different. Please check that the correct folders are selected for synchronization. -Poniższe katalogi znacząco się różnią. Zweryfikuj czy do synchronizacji zostały określone prawidłowe katalogi. - -Not enough free disk space available in: -Brak wystarczającej przestrzeni dyskowej na: - -Available: -Dostępne: - -Some files will be synchronized as part of multiple base folders. -Niektóre pliki będą zsynchronizowane jako część kilku katalogów źródłowych. - -To avoid conflicts, set up exclude filters so that each updated file is included by only one base folder. -Aby uniknąć konfliktów, skonfiguruj filtry wykluczania tak, aby każdy zaktualizowany plik był zawarty tylko w jednym folderze bazowym. - -Versioning folder: -Wersjonowanie katalogów: - -Base folder: -Katalog źródłowy: - -The versioning folder is contained in a base folder. -Katalog wersjonowania znajduje się w katalogu bazowym. - -Synchronizing folder pair: -Synchronizacja katalogów parami: - -Generating database... -Generowanie bazy danych... - -Searching for old file versions: -Wyszukiwanie starych wersji plików: - -Removing old file versions: -Usuwanie starych wersji plików: - -Unable to create time stamp for versioning: -Nie można utworzyć znacznika czasu dla wersjonowania: - -Drag && drop -Drag && Drop - -Select a folder -Wybierz katalog - -&New -&Nowy - -&Open... -&Otwórz... - -Save &as... -&Zapisz jako... - -E&xit -&Wyjście - -&File -&Plik - -&View help -&Pomoc - -&About -O Program&ie - -&Help -Pomo&c - -Usage: -Użycie: - -Select folders to watch. -Określ obserwowane katalogi. - -Enter a command line. -Wprowadź komendę. - -Press 'Start'. -Wciśnij 'Start'. - -To get started just import a "ffs_batch" file. -Aby rozpocząć, zaimportuj plik "ffs_batch". - -Folders to watch: -Katalogi do obserwowania: - -Add folder -Dodaj katalog - -Remove folder -Usuń katalog - -Browse -Przeglądaj - -Idle time (in seconds): -Czas bezczynności (w sekundach): - -Idle time between last detected change and execution of command -Czas pomiędzy ostatnią wykrytą zmianą a uruchomieniem komendy - -Command line: -Polecenie: - -&Hide console window -&Ukryj okno konsoli - - -The command is triggered if: -- files or subfolders change -- new folders arrive (e.g. USB stick insert) - - -Komenda jest wykonywana gdy: -- pliki lub podkatalogi ulegną zmianie -- zostaną utworzone nowe katalogi (np. włożenie pamięci USB) - - -Start -Start - -About -O Programie - -Build: %x -Zbudowano: %x - -All files -Wszystkie pliki - -Automated Synchronization -Automatyczna synchronizacja - -The %x protocol does not support directory monitoring: -Protokół %x nie wspiera monitorowania katalogów: - -Directory monitoring active -Monitorowanie katalogów aktywne - -Waiting until directory is available: -Oczekiwanie, aż katalog będzie dostępny: - -&Configure -&Konfiguruj - -&Show error message -&Pokaż komunikat o błędzie - -&Quit -Zam&knij - -&Retry -&Powtórz - - -1 byte -%x bytes - - -1 bajt -%x bajty -%x bajtów - - -%x MB -%x MB - -%x KB -%x KB - -%x GB -%x GB - -Loading... -Wczytywanie... - -Scanning... -Skanowanie... - -configuration file -plik konfiguracyjny - -System: Sleep -System: Uśpienie - -System: Shut down -System: Wyłączenie - -Nothing to synchronize -Brak plików do synchronizacji - -Executing command: -Wykonanie polecenia: - -You can switch to FreeFileSync's main window to resolve this issue. -Możesz przejść do głównego okna FreeFileSync abe rozwiązać ten problem. - -&Don't show this warning again -&Nie pokazuj ponownie tego ostrzeżenia - -&Ignore -&Ignoruj - -&Switch -&Zamień - -Switching to FreeFileSync's main window -Przejdź do głównego okna FreeFileSync. - -Automatic retry -Automatyczne ponowienie - -Ignore &all -Ignoruj &wszystkie - -Retrying operation... -Ponawianie operacji... - -Serious Error -Poważny błąd - -Last session -Ostatnia sesja - -Today -Dzisiaj - - -1 day -%x days - - -1 dzień -%x dni -%x dni - - -Name -Nazwa - -Last sync -Ostatnia synchronizacja - -Log -Log - -Folder -Katalog - -Symlink -Dowiązanie symboliczne - -Full path -Pełna ścieżka - -Relative path -Ścieżka względna - -Item name -Nazwa elementu - -Size -Rozmiar - -Date -Data - -Extension -Rozszerzenie - -Category -Kategoria - -Action -Akcja - -Local comparison settings -Lokalne ustawienia porównywania - -Local synchronization settings -Lokalne ustawienia synchronizacji - -Local filter -Filtr lokalny - -Active -Aktywny - -None -Żaden - -Remove local settings -Usuń lokalne ustawienia - -Clear local filter -Wyczyść lokalny filtr - -Copy -Kopiuj - -Paste -Wklej - -The selected folder %x cannot be used with FreeFileSync. -Katalog %x nie może być użyty w FreeFileSync. - -Please select a folder on a local file system, network or an MTP device. -Okreś katalog lokalny, sieciowy bądź urządzenie MTP. - -Defined by context of use -Zdefiniowany przez kontekst użycia - -Requires FreeFileSync Donation Edition -Wymaga FreeFileSync Donation Edition - -&Save -&Zapisz - -Save as &batch job... -Zapisz w trybie &wsadowym... - -Show &log -Pokaż &log - -Start &comparison -Rozpo&cznij porównywanie - -C&omparison settings -Ustawienia &porównywania - -&Filter settings -Ustawienia &filtra - -S&ynchronization settings -U&stawienia synchronizacji - -Start &synchronization -Rozpocznij &synchronizację - -&Actions -&Akcje - -&Preferences -&Ustawienia - -&Language -&Język - -&Find... -&Szukaj... - -&Export file list... -&Eksportuj listę plików... - -&Reset layout -&Resetuj układ okien - -&Tools -&Narzędzia - -&Check for updates now -&Sprawdź aktualizacje - -Check &automatically once a week -Sprawdzaj &automatycznie raz w tygodniu - -Cancel -Anuluj - -Compare -Porównaj - -Synchronize -Synchronizuj - -Add folder pair -Dodaj katalogi do porównania - -Remove folder pair -Usuń katalogi - -Access online storage -Dostęp do zasobu zdalnego - -Close search bar -Zamknij pasek wyszukiwania - -Find: -Szukaj: - -Match case -Uwzględnij wielkość liter - -Processed: -Przetworzone: - -Remaining: -Pozostało: - -New -Nowy - -Open... -Otwórz... - -Save -Zapisz - -Save as... -Zapisz jako... - -View type: -Typ widoku: - -Select view: -Widok: - -Save as default -Zapisz jako domyślne - -Statistics: -Statystyki: - -Number of files and folders that will be deleted -Liczba plików i katalogów, które zostaną usunięte - -Number of files that will be updated -Liczba plików, która będą zaktualizowane - -Number of files and folders that will be created -Liczba plików i katalogów, które zostaną utworzone - -Total bytes to copy -Całkowity rozmiar do skopiowania - -Arrange folder pair -Uporządkuj parę katalogów - -Main settings: -Główne ustawienia: - -Use local settings: -Korzystaj z ustawień lokalnych: - -Select a variant: -Określ wariant: - -Include &symbolic links: -Uwzględniaj dowiązania &symboliczne: - -&Follow -&Podążaj - -&Direct -&Bezpośrednio - -More information -Więcej informacji - -&Ignore time shift [hh:mm] -&Ignoruj przesunięcie czasu [hh:mm] - -List of file time offsets to ignore -Lista różnic czasu do zignorowania dla pliku - -Example: -Przykład: - -Handle daylight saving time -Uwzględniaj przesunięcie czasu - -Ignore errors -Ignoruj błędy - -Retry count: -Liczba prób: - -Delay (in seconds): -Opóźnienie (w sekundach): - -Performance improvements: -Polepszenie wydajności: - -Parallel file operations: -Równoległe operacje plikowe: - -How to get best performance? -Jak uzyskać lepszą wydajność? - -Local settings: -Ustawienia lokalne: - -Include: -Dołącz: - -Show examples -Pokaż przykłady - -Select filter rules to exclude certain files from synchronization. Enter file paths relative to their corresponding folder pair. -Określ reguły filtrowania w celu wykluczenia niektórych plików z synchronizacji. Ścieżki plików muszą być relatywne do podanych par katalogów. - -File size: -Rozmiar pliku: - -Minimum: -Minimalny: - -Maximum: -Maksymalny: - -Time span: -Przedział czasu: - -C&lear -&Wyczyść - -Detect moved files -Wykryj przeniesione pliki - - -- Not supported by all file systems -- Requires and creates database files -- Detection not available for first sync - - -- Nie wspierane przez wszystkie systemy plików -- Wymaga pliku bazy danych -- Wykrywanie niedostępne podczas pierwszej synchronizacji - - -Delete files: -Usuwanie plików: - -&Recycle bin -&Kosz systemowy - -&Permanent -&Permanentne - -&Versioning -&Wersjonowanie - -Move files to a user-defined folder -Przenieś pliki do katalogu zdefiniowanego przez użytkownika - -Naming convention: -Konwencja nazewnictwa: - -Limit file versions: -Ogranicz wersje plików: - -Last x days: -Ostatnie x dni: - -&Override default log path: -&Zastąp domyślną ścieżkę logu: - -Run a command: -Uruchom polecenie: - -OK -OK - -Connection type: -Typ połączenia: - -Connected user accounts: -Połączone konta użytkowników: - -&Add connection -&Dodaj połączenie - -&Disconnect -&Rozłącz się - -Selected user account: -Wybrane konto użytkownika: - -Server name or IP address: -Nazwa serwera lub adres IP: - -Port: -Port: - -Encryption: -Szyfrowanie: - -&Disabled -&Wyłączony: - -&Explicit SSL/TLS -&SSL/TLS - -Authentication: -Uwierzytelnianie: - -&Password -&Hasło: - -&Key file -Plik &klucza - -&SSH agent -Agent &SSH - -User name: -Nazwa użytkownika: - -Private key file: -Plik klucza prywatnego: - -&Show password -&Pokaż hasło - -Directory on server: -Katalog na serwerze: - -Access timeout (in seconds): -Czas oczekiwania na dostęp (w sekundach): - -SFTP channels per connection: -Liczba kanałów dla połączenia SFTP: - -Detect server limit -Wykryj limity serwera - -Select Folder -Określ katalog - -Variant: -Wariant: - -&Don't show this dialog again -&Nie pokazuj więcej tego okna - -Bytes: -Bajty: - -Items: -Elementy: - -Synchronizing... -Synchronizuję... - -Minimize to notification area -Minimalizuj do obszaru powiadomień - -Bytes -Bajty - -Items -Elementy - -When finished: -Gdy zakończono: - -Auto-close -Auto-zamykanie - -Close -Zamknij - -&Pause -&Pauza - -Stop -Przerwij - -Create a batch file for unattended synchronization. To start, double-click this file or schedule in a task planner: %x -Utwórz plik wsadowy do zautomatyzowania procesu synchronizacji. Aby rozpocząć, kliknij dwa razy plik lub zaplanuj zadanie w harmonogramie zadań: %x - -Progress dialog: -Okno postępu: - -Run minimized -Uruchom zminimalizowane - -Show pop-up on errors or warnings -Pokazuj okna pop-up dla błędów i ostrzeżeń - -&Cancel -&Anuluj - -Stop synchronization at first error -Przerwij synchronizację przy pierwszym błędzie - -How can I schedule a batch job? -Jak zaplanować zadanie w trybie wsadowym? - -&Keep relative paths -&Zachowaj relatywne ścieżki - -&Overwrite existing files -&Nadpisz istniejące pliki - -The following settings are used for all synchronization jobs. -Następujące ustawienia stosowane są do wszystkich zadań synchronizacji. - - -Copy to a temporary file (*.ffs_tmp) before overwriting target. -This guarantees a consistent state even in case of a serious error. - - -Aby zagwarantować spójność synchronizacji nawet podczas błędu, -program kopiuje zawartość do pliku tymczasowego (*.ffs_tmp), a następnie nadpisuje plik docelowy. - - -recommended -rekomendowana - -Copy shared or locked files using the Volume Shadow Copy Service. -Kopiuj pliki współdzielone lub zablokowane używając usługi Volume Shadow Copy. - -requires administrator rights -wymaga uprawnień administratora - -Transfer file and folder permissions. -Kopiuj uprawnienia plików i katalogów. - -Show all permanently hidden dialogs and warning messages again -Przywróć wszystkie, stale ukryte dialogi i powiadomienia - -Default log path: -Domyślna ścieżka logu: - -&Delete logs after x days: -&Skasuj logi po x dniach: - -Notification sounds: -Dźwięki powiadomień: - -Synchronization finished: -Synchronizacja zakończona: - -Customize context menu: -Dostosuj menu kontekstowe: - -Description -Opis - -&Default -&Domyślne - -Feedback and suggestions are welcome: -Opinie i sugestie mile widziane: - -Home page -Strona domowa - -FreeFileSync Forum -Forum FreeFileSync - -Email -Poczta - -If you like FreeFileSync: -Jeżeli lubisz FreeFileSync: - -Support with a donation -Wesprzyj dotacją - -The auto updater was disabled by the administrator. -Auto aktualizacja została wyłączona przez administratora. - -Donation details -Szczegóły dotacji - -Source code written in C++ using: -Kod stworzony w C++ z wykorzystaniem: - -Published under the GNU General Public License: -Opublikowano na licencji GNU General Public Licence: - -Many thanks for localization: -Podziękowania za tłumaczenia: - -Activate the FreeFileSync Donation Edition by one of the following methods: -Aktywuj FreeFileSync Donation Edition jedną z poniższych metod: - -Activate via internet now: -Aktywuj przez internet: - -Activate online -Aktywuj online - -Retrieve an offline activation key from the following URL: -Pobierz offline'owy klucz aktywacyjny z poniższego adresu: - -&Copy to clipboard -&Kopiuj do schowka - -Enter activation key: -Wprowadź klucz aktywacyjny: - -Activate offline -Aktywuj offline - -Highlight configurations that have not been run for more than the following number of days: -Pokaż konfiguracje, które nie były uruchamiane więcej niż następująca liczba dni: - -FreeFileSync requires access rights to avoid "Operation not permitted" errors when synchronizing your data (e.g. Mail, Messages, Calendars). -FreeFileSync wymaga uprawnień, aby uniknąć błędów „Operacja niedozwolona” podczas synchronizacji danych (np. Poczta, Wiadomości, Kalendarze). - -Locate the FreeFileSync app -Znajdź aplikację FreeFileSync - -Open Security && Privacy -Otwórz Ochrona i prywatność - -Click the lock to allow changes. -Kliknij blokadę, aby zezwolić na zmiany. - -Drag FreeFileSync into the panel. -Przeciągnij FreeFileSync do panelu. - -Synchronization Settings -Ustawienia synchronizacji - -Access Online Storage -Dostęp do Online Storage - -Save as a Batch Job -Zapisz jako plik wsadowy. - -Delete Items -Usuń elementy - -Copy Items -Kopiowanie elementów - -Options -Opcje - -Select Time Span -Określ przedział czasu - -Highlight Configurations -Pokaż konfiguracje - -Grant Full Disk Access -Udziel pełnego dostępu do dysku - -Info -Info - -No log entries -Brak wpisów w dzienniku - -Select all -Zaznacz wszystko - -&Options -&Opcje - -Main Bar -Główny pasek - -Folder Pairs -Pary katalogów - -Find -Znajdź - -View Settings -Ustawienia widoku - -Configuration -Konfiguracja - -Overview -Przegląd - -Swap sides -Zamień stronami - -Show "%x" -Pokaż "%x" - -&Show details -&Pokaż szczegóły - -FreeFileSync %x is available! -FreeFileSync %x jest już dostępny! - -Local path not available for %x. -Lokalna ścieżka nie jest dostępna dla %x. - -Confirm -Potwierdź - - -Do you really want to execute the command %y for one item? -Do you really want to execute the command %y for %x items? - - -Czy na pewno wykonać polecenie %y dla jednego elementu? -Czy na pewno wykonać polecenie %y dla jednego %x elementów? -Czy na pewno wykonać polecenie %y dla jednego %x elementów? - - -&Execute -&Wykonaj - -Set direction: -Kierunek synchronizacji: - -multiple selection -zaznaczone elementy - -&Include via filter: -&Dołącz przez filtr: - -&Exclude via filter: -&Wyklucz przez filtr: - -Include temporarily -Dołącz tymczasowo - -Exclude temporarily -Wyklucz tymczasowo - -&Synchronize selection -&Synchronizuj wybór - -&Copy to... -&Kopiuj do... - -&Delete -&Usuń - -Show icons: -Pokaż ikony: - -Small -Mały - -Medium -Średni - -Large -Duży - -Select time span... -Określ przedział czasowy... - -Donation Edition -Donation Edition - -Folder Comparison and Synchronization -Porównywanie i Synchronizacja folderów - -Configuration saved -Konfiguracja zapisana - -FreeFileSync batch -Plik wsadowy FreeFileSync - -Do you want to save changes to %x? -Czy chcesz zapisać zmiany w %x? - -Never save &changes -Nigdy nie zapisuj &zmian - -Do&n't save -&Nie zapisuj - -%x cannot be renamed. -%x nie można zmienić nazwy. - -New name: -Nowa nazwa: - -Rename Configuration -Zmień nazwę Konfiguracji - -Configuration name must not be empty. -Nazwa konfiguracji nie może być pusta. - -&Rename... -&Zmień nazwę... - -Hide configuration -Ukryj konfiguracje - -Highlight... -Pokaż... - -Clear filter -Wyczyść filtr - -Show files that exist on left side only -Pokaż pliki istniejące tylko po lewej stronie - -Show files that exist on right side only -Pokaż pliki istniejące tylko po prawej stronie - -Show files that are newer on left -Pokaż pliki nowsze po lewej stronie - -Show files that are newer on right -Pokaż pliki nowsze po prawej stronie - -Show files that are equal -Pokaż pliki, które są równe - -Show files that are different -Pokaż pliki, które się różnią - -Show conflicts -Pokaż konflikty - -Show files that will be created on the left side -Pokaż pliki, które będą utworzone po lewej stronie - -Show files that will be created on the right side -Pokaż pliki, które będą utworzone po prawej stronie - -Show files that will be deleted on the left side -Pokaż pliki, które będą usunięte po lewej stronie - -Show files that will be deleted on the right side -Pokaż pliki, które będą usunięte po prawej stronie - -Show files that will be updated on the left side -Pokaż pliki, które będą zaktualizowane po lewej stronie - -Show files that will be updated on the right side -Pokaż pliki, które będą zaktualizowane po prawej stronie - -Show files that won't be copied -Pokaż pliki, które nie będą kopiowane - -Show filtered or temporarily excluded files -Pokaż pliki wyfiltrowane lub wykluczone tymczasowo - -Filter -Filtr - -All files are in sync -Pliki zsynchronizowane - - -1 directory -%x directories - - -1 katalog -%x katalogi -%x katalogów - - - -1 file -%x files - - -1 plik -%x pliki -%x plików - - - -Showing %y of 1 row -Showing %y of %x rows - - -Widok %y z 1 wiersza -Widok %y z %x wierszy -Widok %y z %x wierszy - - -Cannot find %x -Nie można znaleźć %x - -Move up -Przesuń w górę - -Move down -Przesuń w dół - -Comma-separated values -Wartości rozdzielone przecinkiem - -File list exported -Lista plików wyeksportowana - -Searching for program updates... -Wyszukiwanie aktualizacji... - -Paused -Pauza - -Stop requested... -Zatrzymaj... - -Initializing... -Inicjalizacja... - -Comparing content... -Porównywanie zawartości... - -&Continue -&Kontynuuj - -Progress -Postęp - -Thank you, %x, for your donation and support! -Dziękujemy %x za Twoje wsparcie! - -Connections -Połączenia - -Recommended range: -Rekomendowany zakres: - -Do you really want to disconnect from user account %x? -Czy na pewno chcesz się odłączyć od konta użytkownika %x? - -Password: -Hasło: - -Key passphrase: -Hasło kluczowe: - -Please enter a file path. -Wprowadź ścieżkę do pliku. - - -Copy the following item to another folder? -Copy the following %x items to another folder? - - -Skopiować element do innego katalogu? -Skopiować %x elementy do innego katalogu? -Skopiować %x elementów do innego katalogu? - - -Please enter a target folder. -Wprowadź katalog docelowy. - - -Do you really want to move the following item to the recycle bin? -Do you really want to move the following %x items to the recycle bin? - - -Czy na pewno chcesz przenieść ten element do kosza? -Czy na pewno chcesz przenieść te %x elementy do kosza? -Czy na pewno chcesz przenieść te %x elementów do kosza? - - -Move -Przenieś - - -Do you really want to delete the following item? -Do you really want to delete the following %x items? - - -Czy na pewno chcesz usunąć następujący element? -Czy na pewno chcesz usunąć %x następujące elementy? -Czy na pewno chcesz usunąć %x następujących elementów? - - -Start to synchronize the selection? -Zacznij synchronizować wybór? - -Start synchronization now? -Rozpocząć teraz synchronizację? - -Copy DACL, SACL, Owner, Group -Kopiuj DACL, SACL, Użytkownik, Grupa - -Integrate external applications into context menu. The following macros are available: -Dołącz zewnętrzną aplikację do menu kontekstowego. Dostępne makra: - -Full file or folder path -Pełna ścieżka do pliku lub katalogu - -Parent folder path -Nadrzędna ścieżka - -Temporary local copy for SFTP and MTP storage -Tymczasowa kopia lokalna dla SFTP i MTP - -Parameters for opposite side -Parametry dla strony przeciwnej - -Show hidden dialogs again -Przywróć ukryte dialogi - -All dialogs shown -Wszystkie wyświetlone okna dialogowe - -Downloading update... -Pobieranie aktualizacji... - -Identify equal files by comparing modification time and size. -Określ różnice w plikach na podstawie czasu modyfikacji i rozmiaru. - -Identify equal files by comparing the file content. -Określ różnice w plikach na podstawie ich zawartości. - -Identify equal files by comparing their file size. -Traktuj pliki jako jednakowe, jeżeli mają ten sam rozmiar. - -Identify and propagate changes on both sides. Deletions, moves and conflicts are detected automatically using a database. -Wyszukaj oraz zastosuj zmiany po obu stronach. Wszystkie operacje na plikach takie jak usunięcia, zmiany oraz konflikty wykrywane są automatycznie przy użyciu bazy danych. - -Create a mirror backup of the left folder by adapting the right folder to match. -Utwórz lustrzaną kopię lewego katalogu. Cała zawartość prawego katalogu będzie usunięta bądź nadpisana zawartością lewego katalogu. - -Copy new and updated files to the right folder. -Kopiuj nowe i zmodyfikowane pliki do prawego katalogu. - -Configure your own synchronization rules. -Skonfiguruj swoje własne reguły synchronizacji. - -Comparison -Porównanie - -Synchronization -Synchronizacja - -This week -W tym tygodniu - -This month -W tym miesiącu - -This year -W tym roku - -Byte -Bajtów - -KB -KB - -MB -MB - -Retain deleted and overwritten files in the recycle bin -Zachowaj pliki usunięte i nadpisane w koszu systemowym - -Delete and overwrite files permanently -Usuwaj i nadpisuj pliki permanentnie - -Replace -Zamień - -Move files and replace if existing -Przenieś pliki i nadpisz, jeżeli już istnieją - -Time stamp -Znacznik czasu - -Move files into a time-stamped subfolder -Przenieś pliki do podkatalogu z oznaczeniem czasu - -File -Plik - -Append a time stamp to each file name -Dołącz datę do nazwy każdego pliku - -On completion: -Po zakończeniu: - -On errors: -Przy błędach: - -On success: -Przy sukcesie: - -Main config -Główna konfiguracja - -empty -Pusty - -Leave as unresolved conflict -Zostaw jako nierozwiązany konflikt - -YYYY-MM-DD hhmmss -YYYY-MM-DD hhmmss - -Minimum version count must be smaller than maximum count. -Minimalna liczba wersji musi być mniejsza od maksymalnej. - -&Restore -&Przywróć - -Files -Pliki - -Percentage -Procentowo - -Failed to retrieve update information. -Nie można pobrać informacji o aktualizacji. - -Automatic updates: -Automatyczne aktualizacje: - -Check for Program Updates -Sprawdź dostępne aktualizacje - -Auto-update now or download manually from the FreeFileSync home page? -Automatycznie zaktualizować teraz czy ręcznie pobrać ze strony FreeFileSync - -&Auto-update -&Auto-aktualizacja - -&Home page -Strona &domowa - -Download now? -Pobrać teraz? - -&Download -&Pobierz - -FreeFileSync is up to date. -Posiadasz aktualną wersję FreeFileSync. - -Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now? -Nie można znaleźć aktualnej wersji programu FreeFileSync w sieci. Nowsza wersja może być dostępna. Czy chcesz sprawdzić ręcznie? - -&Check -S&prawdź - -Consistency check failed for %x. -Plik %x jest niespójny. - -Installation was registered on a different operating system. -Instalacja została zarejestrowana na innym systemie operacyjnym. - -Failed to activate FreeFileSync Donation Edition. -Błąd aktywacji FreeFileSync Donation Edition. - -Incorrect activation key. -Niepoprawny klucz aktywacyjny. - -Unable to register to receive system messages. -Błąd podczas rejestrowania do odbioru komunikatów systemowych. - -The %x installation option is only available in the FreeFileSync Donation Edition. -Opcja instalacyjna %x jest dostępna wyłącznie w wersji FreeFileSync Donation Edition. - -Cannot find system function %x. -Nie można odnaleźć funkcji systemowej %x. - -Unable to register device notifications for %x. -Nie można zarejestrować powiadomień urządzenia dla %x. - -The file is locked by another process: -Plik jest zablokowany przez inny proces: - -Failed to determine file permission support for folder %x. -Nie można określić uprawnień do plików dla folderu %x. - -Cannot read security context of %x. -Nie można odczytać ustawień bezpieczeństwa %x. - -Cannot write security context of %x. -Nie można zapisać ustawień bezpieczeństwa %x. - -Cannot read permissions of %x. -Nie można odczytać uprawnień %x. - -Cannot copy permissions from %x to %y. -Nie można skopiować uprawnień z %x do %y. - -%x is not a regular directory name. -%x nie jest zwykłą nazwą katalogu. - -Cannot copy attributes from %x to %y. -Nie można skopiować atrybutów z %x do %y. - -%x TB -%x TB - -%x PB -%x PB - - -1 min -%x min - - -1 minuta -%x minuty -%x minut - - - -1 hour -%x hours - - -1 godzina -%x godziny -%x godzin - - -Cannot set privilege %x. -Nie można ustawić uprawnień %x. - -Unable to suspend system sleep mode. -Nie można przerwać trybu uśpienia. - -Cannot change process I/O priorities. -Nie można zmienić priorytetu I/O procesu. - -Checking recycle bin failed for folder %x. -Sprawdzanie kosza systemowego dla katalogu %x zakończone niepowodzeniem. - -Unable to shut down the system. -Nie można wyłączyć systemu. - -Prepare installation -Przygotuj instalację - -Choose which components you want to install. -Określ komponenty do instalacji. - -Select installation type: -Wybierz typ instalacji: - -Local -Lokalna - -Portable -Przenośna - -Save settings in %x -Zapisz ustawienia w %x - -Register FreeFileSync file extensions -Tworzy powiązania plików z programem FreeFileSync - -Create Explorer context menu entries -Integracja z menu kontekstowym Windows Explorer - -Save settings in installation directory -Zapisz ustawienia w katalogu instalacyjnym - -Do not write to Registry -Nie tworzy wpisów w rejestrze - -Just copy the files -Kopiuje tylko pliki - -Choose a directory for installation: -Wybierz katalog docelowy: - -Create shortcuts: -Utwórz skróty: - -Desktop -Na Pulpicie - -Start Menu -Start Menu - -Send To -Wyślij Do - -Registering FreeFileSync file extensions -Rejestrowanie rozszerzeń plików FreeFileSync - -Unregistering FreeFileSync file extensions -Usuwanie rozszerzeń plików FreeFileSync - -FreeFileSync Configuration -Konfiguracja FreeFileSync - -FreeFileSync Batch File -Plik wsadowy FreeFileSync - -FreeFileSync Synchronization Database -Baza danych FreeFileSync - -RealTimeSync Configuration -Konfiguracja RealTimeSync - -Edit with FreeFileSync -Edytuj przy użyciu FreeFileSync - -Instead of an ad, here's an animal. -Zamiast reklamy, oto jest zwierzę. - -The FreeFileSync portable version cannot install into a subfolder of %x. -Przenośna wersja FreeFileSync nie może być zainstalowana w podkatalogu w %x. - -Please choose the local installation type or select a different folder for installation. -Wybierz lokalny typ instalacji lub określ inny katalog. - -Get the Donation Edition with bonus features and help keep FreeFileSync ad-free. -Pobierz Donation Edition z funkcjami dodatkowymi i pomóż utrzymać FreeFileSync bez reklam. - diff --git a/FreeFileSync/Build/Resources/Languages/portuguese.lng b/FreeFileSync/Build/Resources/Languages/portuguese.lng deleted file mode 100755 index 48919fec..00000000 --- a/FreeFileSync/Build/Resources/Languages/portuguese.lng +++ /dev/null @@ -1,2136 +0,0 @@ -
- Português - igorruckert - pt_PT - flag_portugal.png - 2 - n == 1 ? 0 : 1 -
- -Cannot read file %x. -Não é possível ler o ficheiro %x. - - -Unexpected size of data stream. -Expected: %x bytes -Actual: %y bytes - - -Tamanho inesperado do fluxo de dados. -Esperado: %x bytes -Actual: %y bytes - - -Cannot write file %x. -Não é possível escrever o ficheiro %x. - -Cannot write permissions of %x. -Não é possível escrever as permissões de %x. - -Operation not supported between different devices. -Operação não suportada entre dispositivos diferentes. - -Cannot delete file %x. -Não é possível eliminar o ficheiro %x. - -Cannot delete symbolic link %x. -Não é possível remover o link simbólico %x. - -Cannot delete directory %x. -Não é possível eliminar o directório %x. - -Cannot move file %x to %y. -Não é possível mover o ficheiro %x para %y. - -Cannot copy symbolic link %x to %y. -Não é possível criar o link simbólico de %x para %y. - -Error Code %x -Código de Erro %x - -Cannot read directory %x. -Não é possível ler o directório %x. - -Cannot write modification time of %x. -Não é possível alterar a data de modificação a %x. - -Cannot read file attributes of %x. -Não é possível ler os atributos do ficheiro %x. - -Cannot create directory %x. -Não é possível criar o directório %x. - -Cannot determine final path for %x. -Não é possível determinar o caminho final de %x. - -Operation not supported by device. -Operação não suportada pelo dispositivo. - -Cannot resolve symbolic link %x. -Não é possível resolver o link simbólico %x. - -Unable to move %x to the recycle bin. -Não é possível mover %x para a reciclagem. - -Authentication completed. -Autenticação completada. - -You may close this page now and continue with FreeFileSync. -Você pode cerrar esta página agora e continuar com o FreeFileSync. - -Authentication failed. -Falha na autenticação. - -Unable to connect to %x. -Não é possível conectar-se em %x. - -Cannot find %x. -Não é possível encontrar %x. - -The name %x is used by more than one item in the folder. -O nome %x é usado por mais de um item na pasta. - -Please authorize access to user account %x. -Por favor, autorize o acesso à conta de usuário %x. - -Cannot open file %x. -Não é possível abrir o ficheiro %x. - -The name %x is already used by another item. -O nome %x já está em uso por outro item. - -Cannot determine free disk space for %x. -Não é possível determinar o espaço livre no disco %x. - -Unable to disconnect from %x. -Incapaz de se desconectar de %x. - -Unable to access %x. -Incapaz de aceder %x. - -Failed to get information about server %x. -Falha ao obter informações do servidor %x. - -Cannot monitor directory %x. -Não é possível monitorizar o directório %x. - -Cannot find device %x. -Não é possível encontrar o dispositivo %x. - -Cannot open directory %x. -Não é possível abrir o directório %x. - -Unsupported item type. -Tipo de item não suportado. - -Incorrect command line: -Linha de comandos incorrecta: - -The server does not support authentication via %x. -O servidor não suporta autenticação via %x. - -Required: -Requirido: - - -Operation timed out after 1 second. -Operation timed out after %x seconds. - - -O tempo limite da operação esgotou após 1 segundo. -O tempo limite da operação esgotou após %x segundos. - - - -Cannot wait on more than 1 connection at a time. -Cannot wait on more than %x connections at a time. - - -Não é possível aguardar em mais do que 1 conexão ao mesmo tempo. -Não é possível aguardar em mais do que %x conexões ao mesmo tempo. - - -Active connections: %x -Conexões activas: %x - -Failed to open SFTP channel number %x. -Falha ao abrir canal SFTP número %x. - -Both sides have changed since last synchronization. -Ambos os lados tiveram alterações desde a última sincronização. - -Cannot determine sync-direction: -Não é possível saber a direcção de sincronização: - -No change since last synchronization. -Não há alterações desde a última sincronização. - -The database entry is not in sync considering current settings. -A base de dados não está sincronizada com as definições correntes. - -Setting default synchronization directions: Old files will be overwritten with newer files. -Escolher a direcção de sincronização por defeito: Os ficheiros antigos serão substituídos pelos novos. - -Creating file %x -Criar ficheiro %x - -Creating folder %x -Criar pasta %x - -Creating symbolic link %x -Criar link simbólico %x - -Moving file %x to the recycle bin -Mover ficheiro %x para a reciclagem - -Moving folder %x to the recycle bin -Mover pasta %x para a reciclagem - -Moving symbolic link %x to the recycle bin -Mover link simbólico %x para a reciclagem - -Deleting file %x -Eliminar ficheiro %x - -Deleting folder %x -Eliminar pasta %x - -Deleting symbolic link %x -Eliminar link simbólico %x - -Checking recycle bin availability for folder %x... -A verificar a disponibilidade da reciclagem para a pasta %x... - -The recycle bin is not supported by the following folders. Deleted or overwritten files will not be able to be restored: -A reciclagem não é suportada pelas seguintes pastas. Ficheiros eliminados ou sobrescritos não podem ser restaurados: - -An exception occurred -Ocorreu uma excepção - -A left and a right directory path are expected after %x. -É esperado um caminho de directório esquerdo e direito após %x. - -Syntax error -Erro de sintaxe - -Cannot find file %x. -Não é possível encontrar o ficheiro %x. - -Error -Erro - -File %x does not contain a valid configuration. -Ficheiro %x não tem uma configuração válida. - -The config file must not contain settings at directory pair level when directories are set via command line. -O ficheiro de configuração não deve conter configurações ao nível de par-directório quando os directórios são definidos pela linha de comandos. - -Directories cannot be set for more than one configuration file. -Os directórios não podem ser definidos em mais do que um ficheiro de configuração. - -Command line -Linha de comandos - -Syntax: -Sintaxe: - -config files: -ficheiros de configuração: - -directory -directório - -global config file: -ficheiro de configuração global: - -Any number of FreeFileSync "ffs_gui" and/or "ffs_batch" configuration files. -Qualquer número de ficheiros de configuração "ffs_gui" e/ou "ffs_batch" do FreeFileSync. - -Any number of alternative directory pairs for at most one config file. -Qualquer número de pares de directórios alternativos para apenas um ficheiro de configuração. - -Open the selected configuration for editing only, without executing it. -Abre a configuração seleccionada para somente editar sem executá-la. - -Path to an alternate GlobalSettings.xml file. -Caminho para o ficheiro GlobalSettings.xml alternativo. - -Installation files are corrupted. Please reinstall FreeFileSync. -Os ficheiros de instalação estão corrompidos. Por favor, reinstale o FreeFileSync. - -Cannot find the following folders: -Não é possível encontrar as seguintes pastas: - -The following folders do not yet exist: -As seguintes pastas não existem ainda: - -The folders are created automatically when needed. -As pastas são criadas automaticamente se necessário. - -The following folder paths differ in case. Please use a single form in order to avoid duplicate accesses. -Os seguintes caminhos de pastas diferem no caso. Por favor, use um único formulário para evitar acessos duplicados. - -Scanning: -A pesquisar: - -Comparison finished: -Comparação terminada: - - -1 item found -%x items found - - -1 item encontrado -%x itens encontrados - - -Time elapsed: -Tempo decorrido: - -File %x has an invalid date. -Ficheiro %x tem data inválida. - -Date: -Data: - -Files have the same date but a different size. -Os ficheiros possuem a mesma data mas tem tamanho diferente. - -Size: -Tamanho: - -Content comparison was skipped for excluded files. -A comparação de conteúdo foi ignorada para arquivos excluídos. - -Items differ in attributes only -Itens diferem apenas nos atributos - -Resolving symbolic link %x -Resolver link simbólico %x - -Comparing content of files %x -A comparar o conteúdo do ficheiro %x - -Generating file list... -A gerar lista ficheiros... - -Fail-safe file copy -Cópia à prova de falhas - -Enabled -Activado - -Disabled -Desactivado - -Copy locked files -Copiar ficheiros bloqueados - -Copy file access permissions -Copiar permissões de acesso do ficheiro - -File time tolerance -Tolerância de tempo de ficheiro - -Run with background priority -Correr com prioridade de fundo - -Lock directories during sync -Bloquear directórios durante sincronia - -Verify copied files -Verificar ficheiros copiados - -Using non-default global settings: -Usando definições globais não predefinidas: - -A folder input field is empty. -Um dos campos de directório para comparar está vazio. - -The corresponding folder will be considered as empty. -A pasta correspondente será considerada como vazia. - -Exclude: -Excluir: - -One base folder of a folder pair is contained in the other one. -Uma pasta base de um par de pastas está contida na outra. - -The folder should be excluded from synchronization via filter. -A pasta deve ser excluída da sincronização via filtro. - -Calculating sync directions... -A calcular a direcção de sincronização... - -Out of memory. -Sem memória disponível. - -Show in Explorer -Mostrar no Explorer - -Open with default application -Abrir com a aplicação associada - -Browse directory -Procurar directório - -Database file %x is incompatible. -Base de dados %x não é compatível. - -Initial synchronization: -Sincronização inicial: - -Database file %x does not yet exist. -Base de dados %x não existe. - -Database file is corrupted: -O ficheiro da base de dados está corrompido: - -Loading file %x... -A carregar arquivo %x... - -The database files do not yet contain information about the last synchronization. -Os ficheiros da base de dados ainda não contém informações sobre a última sincronização. - -Saving file %x... -A guardar ficheiro %x... - -Searching for folder %x... -À procura da pasta %x... - -Timeout while searching for folder %x. -Tempo limite na procura da pasta %x. - -Cannot get process information. -Não é possível obter informação sobre o processo. - -Waiting while directory is locked: -À espera do bloqueio do directório: - -Lock owner: -Dono do bloqueio: - -Detecting abandoned lock... -Detectado bloqueio abandonado... - - -1 sec -%x sec - - -1 seg -%x segs - - -Item exists on left side only -Item existe apenas à esquerda - -Item exists on right side only -Item existe apenas à direita - -Left side is newer -Esquerda é mais recente - -Right side is newer -Direita é mais recente - -Items have different content -Itens tem conteúdo diferente - -Both sides are equal -Ambos os lados iguais - -Conflict/item cannot be categorized -Conflito/item não pode ser categorizado - -Copy new item to left -Copiar novo item para a esquerda - -Copy new item to right -Copiar novo item para a direita - -Delete left item -Apagar item esquerdo - -Delete right item -Apagar item direito - -Move file on left -Mover ficheiro à esquerda - -Move file on right -Mover ficheiro à direita - -Update left item -Actualizar item esquerdo - -Update right item -Actualizar item direito - -Do nothing -Não fazer nada - -Update attributes on left -Actualizar atributos à esquerda - -Update attributes on right -Actualizar atributos à direita - -Error parsing file %x, row %y, column %z. -Erro ao analisar ficheiro %x, linha %y, coluna %z. - -Services -Serviços - -Show All -Mostrar Todos - -Hide Others -Ocultar Outros - -Hide %x -Ocultar %x - -Quit %x -Cerrar o %x - -Cannot set directory locks for the following folders: -Incapaz de definir bloqueios de directórios para as seguintes pastas: - -Errors: -Erros: - -Warnings: -Avisos: - -Items processed: -Elementos processados: - -Items remaining: -Elementos restantes: - -Total time: -Tempo total: - -Warning -Atenção - -Stopped -Parado - -Cleaning up log files: -A limpar ficheiros de registo: - - -1 thread -%x threads - - -1 thread -%x threads - - -%x/sec -%x/seg. - -%x items -%x itens - -Completed successfully -Concluído com sucesso - -Completed with warnings -Concluído com avisos - -Completed with errors -Concluído com erros - -Cannot access the Volume Shadow Copy Service. -Não é possível aceder ao serviço Volume Shadow Copy. - -Please run the 64-bit version of FreeFileSync to create shadow copies on this system. -Por favor, executar a versão do FreeFileSync de 64 bits para criar cópias de sombra neste sistema. - -Volume name %x is not part of file path %y. -Nome de volume %x não faz parte do caminho do ficheiro %y. - -File time and size -Data e tamanho do ficheiro - -File content -Conteúdo do ficheiro - -File size -Tamanho do ficheiro - -Two way -Duas vias - -Mirror -Espelhar - -Update -Actualizar - -Custom -Personalizado - -Multiple... -Múltiplo... - -Cannot write file attributes of %x. -Não é possível escrever os atributos de %x. - -%x and %y have different content. -%x e %y tem conteúdos distintos. - -Data verification error: -Erro de verificação dos dados: - -Moving file %x to %y -A mover ficheiro %x para %y - -Moving folder %x to %y -A mover pasta %x para %y - -Moving symbolic link %x to %y -A mover link simbólico %x para %y - -Updating file %x -A actualizar ficheiro %x - -Updating symbolic link %x -A actualizar link simbólico %x - -Verifying file %x -A verificar ficheiro %x - -Updating attributes of %x -A actualizar atributos de %x - -Source item %x not found -Item de origem %x não encontrado - -Parent folder %x is not existing. -A pasta pai %x não existe. - -Cannot copy file %x to %y. -Não é possível copiar o ficheiro %x para %y. - -Creating a Volume Shadow Copy for %x... -A criar Volume Shadow Copy para %x... - -Cannot find folder %x. -Não é possível encontrar a pasta %x. - -Target folder %x is already existing, but was not available during folder comparison. -A pasta %x já existe, mas não está disponível durante a comparação de pastas. - -Target folder input field must not be empty. -Campo de directório de destino não deve estar vazio. - -Source folder %x not found. -Directório %x não encontrado. - -Please enter a target folder for versioning. -Introduza uma pasta de destino para o controlo de versões. - -The following items have unresolved conflicts and will not be synchronized: -Os seguintes itens têm conflitos não resolvidos, e não serão sincronizados: - -Folder pair: -Par da pasta: - -The following folders are significantly different. Please check that the correct folders are selected for synchronization. -As seguintes pastas são significativamente diferentes. Por favor, verifique se as pastas corretas estão seleccionadas para a sincronização. - -Not enough free disk space available in: -Não há espaço livre suficiente em: - -Available: -Disponível: - -Some files will be synchronized as part of multiple base folders. -Alguns ficheiros serão sincronizados como parte de múltiplas pastas base. - -To avoid conflicts, set up exclude filters so that each updated file is included by only one base folder. -Para evitar conflitos, defina os filtros de exclusão para que cada ficheiro actualizado seja incluído por somente uma pasta base. - -Versioning folder: -Pasta de versão: - -Base folder: -Pasta base: - -The versioning folder is contained in a base folder. -A pasta de versão está contida em uma pasta base. - -Synchronizing folder pair: -A sincronizar o par de pastas: - -Generating database... -A gerar base de dados... - -Searching for old file versions: -A pesquisar por versões antigas do ficheiro: - -Removing old file versions: -A remover versões antigas do ficheiro: - -Unable to create time stamp for versioning: -Não é possível criar data/hora para controlo de versões: - -Drag && drop -Arrastar && Largar - -Select a folder -Seleccione uma pasta - -&New -&Novo - -&Open... -&Abrir... - -Save &as... -Guardar &como... - -E&xit -S&air - -&File -&Ficheiro - -&View help -&Ver ajuda - -&About -So&bre - -&Help -A&juda - -Usage: -Uso: - -Select folders to watch. -Seleccionar pastas para observar. - -Enter a command line. -Inserir a linha de comando. - -Press 'Start'. -Pressionar 'Iniciar'. - -To get started just import a "ffs_batch" file. -Para começar basta importar um ficheiro "ffs_batch". - -Folders to watch: -Pastas a verificar: - -Add folder -Adicionar pasta - -Remove folder -Remover pasta(s) - -Browse -Procurar - -Idle time (in seconds): -Tempo de espera (em segundos): - -Idle time between last detected change and execution of command -Tempo de espera entre a última alteração detectada e a execução do comando - -Command line: -Linha de comandos: - -&Hide console window -&Ocultar janela de console - - -The command is triggered if: -- files or subfolders change -- new folders arrive (e.g. USB stick insert) - - -O comando é executado se: -- ficheiros ou subpastas forem alterados -- forem detectadas novas pastas (p.e. pen USB) - - -Start -Início - -About -Sobre - -Build: %x -Build: %x - -All files -Todos os ficheiros - -Automated Synchronization -Sincronização Automática - -The %x protocol does not support directory monitoring: -O protocolo %x não suporta a monitorização de directórios: - -Directory monitoring active -Monitorização de directório activa - -Waiting until directory is available: -A aguardar até o directório ficar disponível: - -&Configure -&Configurar - -&Show error message -Mo&strar mensagens de erro - -&Quit -&Sair - -&Retry -&Tentar de Novo - - -1 byte -%x bytes - - -1 byte -%x bytes - - -%x MB -%x MB - -%x KB -%x KB - -%x GB -%x GB - -Loading... -A carregar... - -Scanning... -A pesquisar... - -configuration file -arquivo de configurações - -System: Sleep -Suspender - -System: Shut down -Desligar - -Nothing to synchronize -Nada a sincronizar - -Executing command: -A executar comando: - -You can switch to FreeFileSync's main window to resolve this issue. -Pode mudar para a janela principal do FreeFileSync para resolver este problema. - -&Don't show this warning again -&Não mostrar este aviso novamente - -&Ignore -&Ignorar - -&Switch -&Trocar - -Switching to FreeFileSync's main window -A mudar para a janela principal do FreeFileSync - -Automatic retry -Repetir automático - -Ignore &all -Ignorar &todos - -Retrying operation... -A repetir a operação... - -Serious Error -Erro Grave - -Last session -Última Sessão - -Today -Hoje - - -1 day -%x days - - -1 dia -%x dias - - -Name -Nome - -Last sync -Última sincronia - -Log -Log - -Folder -Pasta - -Symlink -Link Simbólico - -Full path -Caminho completo - -Relative path -Caminho relativo - -Item name -Nome do item - -Size -Tamanho - -Date -Data - -Extension -Extensão - -Category -Categoria - -Action -Acção - -Local comparison settings -Opções locais de comparação - -Local synchronization settings -Opções locais de sincronização - -Local filter -Filtro local - -Active -Activo - -None -Nenhum - -Remove local settings -Apagar opções locais - -Clear local filter -Limpar filtro local - -Copy -Copiar - -Paste -Colar - -The selected folder %x cannot be used with FreeFileSync. -A pasta seleccionada %x não pode ser usada pelo FreeFileSync. - -Please select a folder on a local file system, network or an MTP device. -Seleccione a pasta no sistema de ficheiros local, rede ou dispositivo MTP. - -Defined by context of use -Definido pelo contexto de uso - -Requires FreeFileSync Donation Edition -Requer o FreeFileSync Donation Edition - -&Save -G&uardar - -Save as &batch job... -Guardar como &batch... - -Show &log -Mostrar ®isto - -Start &comparison -Iniciar &comparação - -C&omparison settings -Opções de c&omparação - -&Filter settings -Opções de &filtros - -S&ynchronization settings -Opções de s&incronização - -Start &synchronization -Iniciar &sincronização - -&Actions -&Acções - -&Preferences -&Preferências - -&Language -&Idioma - -&Find... -&Procurar... - -&Export file list... -&Exportar lista de ficheiros... - -&Reset layout -&Restaurar esquema - -&Tools -&Ferramentas - -&Check for updates now -&Procurar por actualizações agora - -Check &automatically once a week -Procurar &automaticamente uma vez por semana - -Cancel -Cancelar - -Compare -Comparar - -Synchronize -Sincronizar - -Add folder pair -Adicionar um par de pastas - -Remove folder pair -Remover o par de pastas - -Access online storage -Aceder armazenagem local - -Close search bar -Fechar barra de pesquisa - -Find: -Procurar: - -Match case -Correspondência - -Processed: -Processado: - -Remaining: -Restando: - -New -Novo - -Open... -Abrir... - -Save -Guardar - -Save as... -Guardar como... - -View type: -Tipo de vista: - -Select view: -Seleccionar vista: - -Save as default -Guardar como padrão - -Statistics: -Estatísticas: - -Number of files and folders that will be deleted -Número de ficheiros e pastas a ser eliminados - -Number of files that will be updated -Número de ficheiros a ser actualizados - -Number of files and folders that will be created -Número de ficheiros e pastas a ser criados - -Total bytes to copy -Total em bytes a copiar - -Arrange folder pair -Organizar par da pasta - -Main settings: -Definições principais: - -Use local settings: -Usar opções locais: - -Select a variant: -Seleccionar uma variante: - -Include &symbolic links: -Incluir links &simbólicos: - -&Follow -&Seguir - -&Direct -&Directo - -More information -Mais informação - -&Ignore time shift [hh:mm] -&Ignorar mudança de horário [hh:mm] - -List of file time offsets to ignore -Lista de intervalos de tempo de ficheiro a ignorar - -Example: -Exemplo: - -Handle daylight saving time -Lidar com horário de verão - -Ignore errors -Ignorar erros - -Retry count: -Nº de tentativas: - -Delay (in seconds): -Atraso (em segundos): - -Performance improvements: -Melhorias de desempenho: - -Parallel file operations: -Operações de arquivos paralelos: - -How to get best performance? -Como obter um melhor desempenho? - -Local settings: -Opções locais: - -Include: -Incluir: - -Show examples -Mostrar exemplos - -Select filter rules to exclude certain files from synchronization. Enter file paths relative to their corresponding folder pair. -Seleccionar regras de filtro para excluir certos ficheiros da sincronização. Insira os caminhos relativos ao par de directórios correspondente. - -File size: -Tamanho ficheiro: - -Minimum: -Mínimo: - -Maximum: -Máximo: - -Time span: -Intervalo de tempo: - -C&lear -&Limpar - -Detect moved files -Detectar ficheiros movidos - - -- Not supported by all file systems -- Requires and creates database files -- Detection not available for first sync - - -- Não suportado em todos os sistemas -- Requer e cria ficheiros de base de dados -- A detecção não está disponível para a primeira sincronização - - -Delete files: -Eliminar ficheiros: - -&Recycle bin -&Reciclagem - -&Permanent -&Permanente - -&Versioning -Controlo &Versões - -Move files to a user-defined folder -Mover ficheiros para uma pasta definida pelo utilizador - -Naming convention: -Convenção de nomes: - -Limit file versions: -Limitar versões de ficheiro: - -Last x days: -Últimos x dias: - -&Override default log path: -&Substituir caminho padrão do registo: - -Run a command: -Executar um comando: - -OK -OK - -Connection type: -Tipo de conexão: - -Connected user accounts: -Contas de usuário conectadas: - -&Add connection -&Adicionar conexão - -&Disconnect -&Desconectar - -Selected user account: -Conta de usuário seleccionada: - -Server name or IP address: -Nome do servidor ou endereço IP: - -Port: -Porta: - -Encryption: -Criptografia: - -&Disabled -&Desabilitada - -&Explicit SSL/TLS -SSL/TLS &Explícito - -Authentication: -Autenticação: - -&Password -&Palavra passe - -&Key file -Ficheiro de &chave - -&SSH agent -Agente &SSH - -User name: -Utilizador: - -Private key file: -Ficheiro de chave privada: - -&Show password -&Mostrar palavra passe - -Directory on server: -Directório no servidor: - -Access timeout (in seconds): -Tempo limite de acesso (em segundos): - -SFTP channels per connection: -Canais SFTP por conexão: - -Detect server limit -Detectar limite do servidor - -Select Folder -Seleccionar Pasta - -Variant: -Variante: - -&Don't show this dialog again -&Não mostrar este diálogo novamente - -Bytes: -Bytes: - -Items: -Itens: - -Synchronizing... -A sincronizar... - -Minimize to notification area -Minimizar para a área de notificação - -Bytes -Bytes - -Items -Itens - -When finished: -Quando concluído: - -Auto-close -Fechar quando feito - -Close -Fechar - -&Pause -&Pausa - -Stop -Parar - -Create a batch file for unattended synchronization. To start, double-click this file or schedule in a task planner: %x -Criar ficheiro batch para sincronização automática. Para iniciar, fazer duplo clique no ficheiro ou acrescentar ao planeador de tarefas: %x - -Progress dialog: -Diálogo de progresso: - -Run minimized -Correr minimizado - -Show pop-up on errors or warnings -Mostrar popup em caso de erros ou avisos - -&Cancel -&Cancelar - -Stop synchronization at first error -Para sincronização ao primeiro erro - -How can I schedule a batch job? -Como posso agendar um trabalho batch? - -&Keep relative paths -&Manter caminhos relativos - -&Overwrite existing files -&Substituir ficheiros existentes - -The following settings are used for all synchronization jobs. -As seguintes definições são usadas para todas as sincronizações. - - -Copy to a temporary file (*.ffs_tmp) before overwriting target. -This guarantees a consistent state even in case of a serious error. - - -Copiar para um ficheiro temporário (*.ffs_tmp) antes de substituir. -Isto garante um estado consistente mesmo em caso de falha grave. - - -recommended -recomendada - -Copy shared or locked files using the Volume Shadow Copy Service. -Copiar ficheiros partilhados ou bloqueados usando o serviço Volume Shadow Copy. - -requires administrator rights -requer direitos de administrador - -Transfer file and folder permissions. -Transferir permissões de pasta e ficheiro. - -Show all permanently hidden dialogs and warning messages again -Mostrar todos os diálogos escondidos permanentemente e mensagens de aviso novamente - -Default log path: -Caminho padrão do registo: - -&Delete logs after x days: -&Eliminar registos após X dias: - -Notification sounds: -Sons de notificação: - -Synchronization finished: -Sincronização concluída: - -Customize context menu: -Personalizar menu de contexto: - -Description -Descrição - -&Default -&Config. Iniciais - -Feedback and suggestions are welcome: -Comentários e sugestões são bem-vindos: - -Home page -Sítio da web - -FreeFileSync Forum -Fórum do FreeFileSync - -Email -Email - -If you like FreeFileSync: -Se gosta do FreeFileSync: - -Support with a donation -Apoiar com uma doação - -The auto updater was disabled by the administrator. -A actualização automática foi desactivada pelo administrador. - -Donation details -Detalhes da doação - -Source code written in C++ using: -Código fonte escrito em C++ utilizando: - -Published under the GNU General Public License: -Publicado sob a Licença Pública Geral GNU: - -Many thanks for localization: -Muito obrigado pela localização: - -Activate the FreeFileSync Donation Edition by one of the following methods: -Active o FreeFileSync Donation Edition por um dos seguintes métodos: - -Activate via internet now: -Active via Internet agora: - -Activate online -Activar online - -Retrieve an offline activation key from the following URL: -Obter uma chave de activação offline a partir da seguinte URL: - -&Copy to clipboard -&Copiar da clipboard - -Enter activation key: -Entre a chave de activação: - -Activate offline -Activar offline - -Highlight configurations that have not been run for more than the following number of days: -Realce configurações que não foram executadas pelo seguinte número de dias: - -FreeFileSync requires access rights to avoid "Operation not permitted" errors when synchronizing your data (e.g. Mail, Messages, Calendars). -O FreeFileSync necessita de direitos de acesso para evitar erros de "Operação não permitida" ao sincronizar seus dados (ex.: Mail, Mensagens, Calendários). - -Locate the FreeFileSync app -Localizar aplicativo FreeFileSync - -Open Security && Privacy -Abrir Segurança e Privacidade - -Click the lock to allow changes. -Clique no cadeado para permitir as alterações. - -Drag FreeFileSync into the panel. -Arraste o FreeFileSync para o painel. - -Synchronization Settings -Definições de Sincronização - -Access Online Storage -Aceder Armazenamento Online - -Save as a Batch Job -Salvar como Tarefa em Lote - -Delete Items -Eliminar Itens - -Copy Items -Copiar Itens - -Options -Opções - -Select Time Span -Seleccionar Intervalo de Tempo - -Highlight Configurations -Realçar Configurações - -Grant Full Disk Access -Garantir Acesso completo ao disco - -Info -Info - -No log entries -Nenhuma entrada no registo - -Select all -Seleccionar tudo - -&Options -&Opções - -Main Bar -Barra principal - -Folder Pairs -Par de Pastas - -Find -Procurar - -View Settings -Ver Opções - -Configuration -Configuração - -Overview -Vista - -Swap sides -Trocar lados - -Show "%x" -Mostrar "%x" - -&Show details -&Mostras detalhes - -FreeFileSync %x is available! -O FreeFileSync %x está disponível! - -Local path not available for %x. -Caminho local não disponível para %x. - -Confirm -Confirmar - - -Do you really want to execute the command %y for one item? -Do you really want to execute the command %y for %x items? - - -Deseja mesmo executar o comando %y para um item? -Deseja mesmo executar o comando %y para %x itens? - - -&Execute -&Executar - -Set direction: -Escolher direcção: - -multiple selection -selecção múltipla - -&Include via filter: -&Incluir via filtro: - -&Exclude via filter: -&Excluir via filtro: - -Include temporarily -Incluir temporariamente - -Exclude temporarily -Excluir temporariamente - -&Synchronize selection -&Sincronizar selecção - -&Copy to... -&Copiar para... - -&Delete -&Apagar - -Show icons: -Mostrar ícones: - -Small -Pequeno - -Medium -Médio - -Large -Grande - -Select time span... -Seleccione o intervalo de tempo... - -Donation Edition -Donation Edition - -Folder Comparison and Synchronization -Comparação e Sincronização de Pastas - -Configuration saved -Configuração guardada - -FreeFileSync batch -FreeFileSync batch - -Do you want to save changes to %x? -Deseja guardar as alterações a %x? - -Never save &changes -Nunca guardar &alterações - -Do&n't save -Não g&uardar - -%x cannot be renamed. -%x não pode ser renomeado. - -New name: -Novo nome: - -Rename Configuration -Renomear Configuração - -Configuration name must not be empty. -O nome da configuração não pode estar vazio. - -&Rename... -&Renomear... - -Hide configuration -Ocultar configuração - -Highlight... -Realçar... - -Clear filter -Limpar filtro - -Show files that exist on left side only -Mostrar ficheiros existentes somente da esquerda - -Show files that exist on right side only -Mostrar ficheiros existentes somente da direita - -Show files that are newer on left -Mostrar ficheiros mais recentes da esquerda - -Show files that are newer on right -Mostrar ficheiros mais recentes da direita - -Show files that are equal -Mostrar ficheiros iguais - -Show files that are different -Mostrar ficheiros diferentes - -Show conflicts -Mostrar conflitos - -Show files that will be created on the left side -Mostrar ficheiros a ser criados na esquerda - -Show files that will be created on the right side -Mostrar ficheiros a ser criados na direita - -Show files that will be deleted on the left side -Mostrar ficheiros a ser apagados na esquerda - -Show files that will be deleted on the right side -Mostrar ficheiros a ser apagados na direita - -Show files that will be updated on the left side -Mostrar ficheiros a ser actualizados na esquerda - -Show files that will be updated on the right side -Mostrar ficheiros a ser actualizados na direita - -Show files that won't be copied -Mostrar ficheiros que não serão copiados - -Show filtered or temporarily excluded files -Mostrar ficheiros filtrados ou temporariamente excluídos - -Filter -Filtro - -All files are in sync -Todos os ficheiros estão sincronizados - - -1 directory -%x directories - - -1 directório -%x directórios - - - -1 file -%x files - - -1 ficheiro -%x ficheiros - - - -Showing %y of 1 row -Showing %y of %x rows - - -A mostrar %y de 1 linha -A mostrar %y de %x linhas - - -Cannot find %x -Não é possível descobrir %x - -Move up -Mover acima - -Move down -Mover abaixo - -Comma-separated values -Valores separados por virgula - -File list exported -Lista dos ficheiros exportada - -Searching for program updates... -A procurar actualizações do programa... - -Paused -Em pausa - -Stop requested... -Parar pedido... - -Initializing... -A iniciar... - -Comparing content... -A comparar... - -&Continue -&Continuar - -Progress -Progresso - -Thank you, %x, for your donation and support! -Obrigado, %x, pela sua doação e suporte! - -Connections -Conexões - -Recommended range: -Gama recomendada: - -Do you really want to disconnect from user account %x? -Desejas realmente desconectar da conta de usuário %x? - -Password: -Palavra passe: - -Key passphrase: -Frase de acesso da chave: - -Please enter a file path. -Por favor, entre o caminho do ficheiro. - - -Copy the following item to another folder? -Copy the following %x items to another folder? - - -Copiar o seguinte elemento para outro directório? -Copiar os seguintes %x elementos para outro directório? - - -Please enter a target folder. -Entre o directório de destino. - - -Do you really want to move the following item to the recycle bin? -Do you really want to move the following %x items to the recycle bin? - - -Deseja mesmo mover o seguinte item para a reciclagem? -Deseja mesmo mover os seguintes %x itens para a reciclagem? - - -Move -Mover - - -Do you really want to delete the following item? -Do you really want to delete the following %x items? - - -Deseja mesmo eliminar o seguinte item? -Deseja mesmo eliminar os seguintes %x itens? - - -Start to synchronize the selection? -Iniciar a sincronizar a selecção? - -Start synchronization now? -Iniciar sincronização agora? - -Copy DACL, SACL, Owner, Group -Copiar DACL, SACL, Proprietário, Grupo - -Integrate external applications into context menu. The following macros are available: -Integrar aplicações externas no menu de contexto. As seguintes macros estão disponíveis: - -Full file or folder path -Caminho completo do ficheiro ou pasta - -Parent folder path -Caminho da pasta pai - -Temporary local copy for SFTP and MTP storage -Cópia local temporária para armazenamento SFTP e FTP - -Parameters for opposite side -Parâmetros do lado oposto - -Show hidden dialogs again -Mostrar diálogos ocultos novamente - -All dialogs shown -Todos os diálogos mostrados - -Downloading update... -A descarregar actualização... - -Identify equal files by comparing modification time and size. -Identificar ficheiros iguais ao comparar hora de modificação e tamanho. - -Identify equal files by comparing the file content. -Identificar ficheiros iguais ao comparar o conteúdo. - -Identify equal files by comparing their file size. -Identificar ficheiros iguais, comparando o tamanho do ficheiro. - -Identify and propagate changes on both sides. Deletions, moves and conflicts are detected automatically using a database. -Identificar e propagar mudanças nos dois lados. Eliminações, cópias e conflitos são detectados automaticamente usando base de dados. - -Create a mirror backup of the left folder by adapting the right folder to match. -Criar uma cópia exacta da pasta à esquerda, adaptando a da direita para coincidir. - -Copy new and updated files to the right folder. -Copiar ficheiros novos e actualizados para a pasta à direita. - -Configure your own synchronization rules. -Configure as suas regras de sincronização. - -Comparison -Comparação - -Synchronization -Sincronização - -This week -Esta semana - -This month -Este mês - -This year -Este ano - -Byte -Byte - -KB -KB - -MB -MB - -Retain deleted and overwritten files in the recycle bin -Reter ficheiros eliminados e substituídos na reciclagem - -Delete and overwrite files permanently -Apagar e substituir ficheiros permanentemente - -Replace -Substituir - -Move files and replace if existing -Mover ficheiros e substituir se existirem - -Time stamp -Selo temporal - -Move files into a time-stamped subfolder -Mover ficheiros para uma subpasta com marca de tempo - -File -Ficheiro - -Append a time stamp to each file name -Adicione data/hora ao nome de cada ficheiro - -On completion: -Ao completar: - -On errors: -Em erros: - -On success: -No sucesso: - -Main config -Configuração principal - -empty -vazia - -Leave as unresolved conflict -Deixar como conflito - -YYYY-MM-DD hhmmss -AAAA-MM-DD hhmmss - -Minimum version count must be smaller than maximum count. -A contagem da versão mínima deve ser menor que a contagem máxima. - -&Restore -&Restaurar - -Files -Ficheiros - -Percentage -Percentagem - -Failed to retrieve update information. -Falha ao obter informação da actualização. - -Automatic updates: -Actualizações automáticas: - -Check for Program Updates -Procurar actualizações do programa - -Auto-update now or download manually from the FreeFileSync home page? -Actualizar agora ou descarregar manualmente do sítio do FreeFileSync? - -&Auto-update -&Actualização automática - -&Home page -&Sítio da web - -Download now? -Descarregar agora? - -&Download -&Descarregar - -FreeFileSync is up to date. -O FreeFileSync está actualizado. - -Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now? -Não é possível encontrar o número da versão online do FreeFileSync. Uma nova versão deve estar disponível. Verificar manualmente agora? - -&Check -&Verificar - -Consistency check failed for %x. -Falha na verificação de consistência para %x. - -Installation was registered on a different operating system. -A instalação foi registrada em um sistema operativo diferente. - -Failed to activate FreeFileSync Donation Edition. -Falha ao activar o FreeFileSync Donation Edition. - -Incorrect activation key. -Chave de activação incorrecta. - -Unable to register to receive system messages. -Não foi possível registar para receber mensagens do sistema. - -The %x installation option is only available in the FreeFileSync Donation Edition. -A opção de instalação %x está disponível somente no FreeFileSync Donation Edition. - -Cannot find system function %x. -Não é possível encontrar a função do sistema %x. - -Unable to register device notifications for %x. -Não é possível registrar as notificações do dispositivo para %x. - -The file is locked by another process: -O ficheiro está bloqueado por outro processo: - -Failed to determine file permission support for folder %x. -Falha ao determinar suporte de permissão de ficheiro para a pasta %x. - -Cannot read security context of %x. -Não é possível ler o contexto de segurança %x. - -Cannot write security context of %x. -Não é possível escrever o contexto de segurança %x. - -Cannot read permissions of %x. -Não é possível ler as permissões de %x. - -Cannot copy permissions from %x to %y. -Não é possível copiar as permissões de %x para %y. - -%x is not a regular directory name. -%x não é um nome regular de directório. - -Cannot copy attributes from %x to %y. -Não é possível copiar os atributos de %x para %y. - -%x TB -%x TB - -%x PB -%x PB - - -1 min -%x min - - -1 min -%x mins - - - -1 hour -%x hours - - -1 hora -%x horas - - -Cannot set privilege %x. -Não é possível definir o privilégio %x. - -Unable to suspend system sleep mode. -Não é possível retornar do modo de suspensão do sistema. - -Cannot change process I/O priorities. -Não é possível alterar as prioridades de E / S do processo. - -Checking recycle bin failed for folder %x. -Verificar a reciclagem falhou no directório %x. - -Unable to shut down the system. -Incapaz de desligar o sistema. - -Prepare installation -A preparar a instalação - -Choose which components you want to install. -Escolha os componentes a instalar. - -Select installation type: -Seleccionar tipo de instalação: - -Local -Local - -Portable -Portátil - -Save settings in %x -Salvar definições em %x - -Register FreeFileSync file extensions -Registar as extensões do FreeFileSync - -Create Explorer context menu entries -Criar entradas de menu de contexto no Explorer - -Save settings in installation directory -Guardar as definições no directório da instalação - -Do not write to Registry -Não escrever no Registo - -Just copy the files -Copiar apenas os ficheiros - -Choose a directory for installation: -Escolha um directório para a instalação: - -Create shortcuts: -Criar atalhos: - -Desktop -Área de trabalho - -Start Menu -Menu Iniciar - -Send To -Enviar para - -Registering FreeFileSync file extensions -A registar as extensões do FreeFileSync - -Unregistering FreeFileSync file extensions -A apagar o registo das extensões do FreeFileSync - -FreeFileSync Configuration -Configuração do FreeFileSync - -FreeFileSync Batch File -Ficheiro Batch FreeFileSync - -FreeFileSync Synchronization Database -Base de Dados de Sincronização FreeFileSync - -RealTimeSync Configuration -Configuração do RealTimeSync - -Edit with FreeFileSync -Editar com FreeFileSync - -Instead of an ad, here's an animal. -Em vez de um anúncio, aqui está um animal. - -The FreeFileSync portable version cannot install into a subfolder of %x. -A versão portátil do FreeFileSync não pode ser instalada em uma sub-pasta de %x. - -Please choose the local installation type or select a different folder for installation. -Por favor, escolha o tipo do local de instalação ou seleccione uma pasta diferente para instalar. - -Get the Donation Edition with bonus features and help keep FreeFileSync ad-free. -Obtenha a Donation Edition com recursos bônus e ajude a manter o FreeFileSync sem anúncios. - diff --git a/FreeFileSync/Build/Resources/Languages/portuguese_br.lng b/FreeFileSync/Build/Resources/Languages/portuguese_br.lng deleted file mode 100755 index 4054b167..00000000 --- a/FreeFileSync/Build/Resources/Languages/portuguese_br.lng +++ /dev/null @@ -1,2136 +0,0 @@ -
- Português (BR)‎ - Edison Aranha - pt_BR - flag_brazil.png - 2 - n == 1 ? 0 : 1 -
- -Cannot read file %x. -Não é possível ler o arquivo %x. - - -Unexpected size of data stream. -Expected: %x bytes -Actual: %y bytes - - -Tamanho inesperado do fluxo de dados. -Esperado: %x bytes -Atual: %y bytes - - -Cannot write file %x. -Não é possível escrever o arquivo %x. - -Cannot write permissions of %x. -Não é possível escrever as permissões de %x. - -Operation not supported between different devices. -Operação não suportada entre dispositivos diferentes. - -Cannot delete file %x. -Não é possível excluir o arquivo %x. - -Cannot delete symbolic link %x. -Não é possível excluir o link simbólico %x. - -Cannot delete directory %x. -Não é possível excluir o diretório %x. - -Cannot move file %x to %y. -Não é possível mover o arquivo %x para %y. - -Cannot copy symbolic link %x to %y. -Não é possível copiar o link simbólico %x para %y. - -Error Code %x -Código do Erro %x. - -Cannot read directory %x. -Não é possível ler o diretório %x. - -Cannot write modification time of %x. -Não é possível escrever a data de modificação de %x. - -Cannot read file attributes of %x. -Não é possível ler os atributos do arquivo %x. - -Cannot create directory %x. -Não é possível criar o diretório %x. - -Cannot determine final path for %x. -Não é possível determinar o caminho final para %x. - -Operation not supported by device. -Operação não suportada pelo dispositivo. - -Cannot resolve symbolic link %x. -Não é possível resolver o link simbólico %x. - -Unable to move %x to the recycle bin. -Não é possível mover %x para a Lixeira. - -Authentication completed. -Autenticação concluída. - -You may close this page now and continue with FreeFileSync. -Você pode fechar esta página agora e continuar com o FreeFileSync. - -Authentication failed. -Autenticação falhou. - -Unable to connect to %x. -Não foi possível conectar a %x. - -Cannot find %x. -Não é possível encontrar %x. - -The name %x is used by more than one item in the folder. -O nome %x é usado por mais de um item na pasta. - -Please authorize access to user account %x. -Por favor, autorize o acesso para a conta de usuário %x. - -Cannot open file %x. -Não é possível abrir o arquivo %x. - -The name %x is already used by another item. -O nome %x já é usado por outro item. - -Cannot determine free disk space for %x. -Não é possível determinar o espaço livre em disco para %x. - -Unable to disconnect from %x. -Não foi possível desconectar de %x. - -Unable to access %x. -Não foi possível acessar %x. - -Failed to get information about server %x. -Falha na obteção da informação sobre o servidor %x. - -Cannot monitor directory %x. -Não é possível monitorar o diretório %x. - -Cannot find device %x. -Não é possível encontrar o dispositivo %x. - -Cannot open directory %x. -Não é possível abrir o diretório %x. - -Unsupported item type. -Tipo de item não suportado. - -Incorrect command line: -Linha de comando incorreta: - -The server does not support authentication via %x. -O servidor não suporta autenticação via %x. - -Required: -Necessário: - - -Operation timed out after 1 second. -Operation timed out after %x seconds. - - -A operação expirou após 1 segundo. -A operação expirou após %x segundos. - - - -Cannot wait on more than 1 connection at a time. -Cannot wait on more than %x connections at a time. - - -Não é possível esperar mais do que 1 conexão por vez. -Não é possível esperar mais do que %x conexões por vez. - - -Active connections: %x -Conexões ativas: %x - -Failed to open SFTP channel number %x. -Falha ao abrir o canal SFTP número %x. - -Both sides have changed since last synchronization. -Ambos os lados foram alterados desde a última sincronização. - -Cannot determine sync-direction: -Não é possível determinar a direção de sincronização: - -No change since last synchronization. -Nenhuma alteração desde a última sincronização. - -The database entry is not in sync considering current settings. -A entrada do banco de dados não está em sincronia considerando as configurações atuais. - -Setting default synchronization directions: Old files will be overwritten with newer files. -Configurando direções padrões de sincronização: Arquivos antigos serão substituídos por arquivos mais recentes. - -Creating file %x -Criando arquivo %x - -Creating folder %x -Criando pasta %x - -Creating symbolic link %x -Criando link simbólico %x - -Moving file %x to the recycle bin -Movendo arquivo %x para a Lixeira - -Moving folder %x to the recycle bin -Movendo pasta %x para a Lixeira - -Moving symbolic link %x to the recycle bin -Movendo link simbólico %x para a Lixeira - -Deleting file %x -Excluindo arquivo %x - -Deleting folder %x -Excluindo pasta %x - -Deleting symbolic link %x -Excluindo link simbólico %x - -Checking recycle bin availability for folder %x... -Verificando a disponibilidade da Lixeira para a pasta %x... - -The recycle bin is not supported by the following folders. Deleted or overwritten files will not be able to be restored: -A Lixeira não é suportada pelas seguintes pastas. Arquivos excluídos ou substituídos não poderão ser restaurados: - -An exception occurred -Ocorreu uma exceção - -A left and a right directory path are expected after %x. -Um caminho de diretório esquerdo e um direito são esperados após %x. - -Syntax error -Erro de sintaxe - -Cannot find file %x. -Não é possível encontrar o arquivo %x. - -Error -Erro - -File %x does not contain a valid configuration. -O arquivo %x não contém uma configuração válida. - -The config file must not contain settings at directory pair level when directories are set via command line. -O arquivo de configuração não deve conter configurações de diretórios quando os diretórios são definidos via linha de comando. - -Directories cannot be set for more than one configuration file. -Os diretórios não podem ser definidos para mais de um arquivo de configuração. - -Command line -Linha de comando - -Syntax: -Sintaxe: - -config files: -arquivos de configuração: - -directory -diretório - -global config file: -arquivo de configuração global: - -Any number of FreeFileSync "ffs_gui" and/or "ffs_batch" configuration files. -Qualquer número de arquivos FreeFileSync "ffs_gui" e/ou de tarefa em lotes "ffs_batch". - -Any number of alternative directory pairs for at most one config file. -Qualquer número de pares alternativos de diretórios para no máximo um arquivo de configuração. - -Open the selected configuration for editing only, without executing it. -Abrir a configuração selecionada para edição apenas, sem executá-la. - -Path to an alternate GlobalSettings.xml file. -Caminho para um arquivo GlobalSettings.xml alternativo. - -Installation files are corrupted. Please reinstall FreeFileSync. -Os arquivos de instalação estão corrompidos. Por favor, reinstale o FreeFileSync. - -Cannot find the following folders: -Não é possível localizar as seguintes pastas: - -The following folders do not yet exist: -As seguintes pastas ainda não existem: - -The folders are created automatically when needed. -As pastas são criadas automaticamente quando necessárias. - -The following folder paths differ in case. Please use a single form in order to avoid duplicate accesses. -Os seguintes caminhos da pasta diferem em letras maiúsculas e minúsculas. Por favor, use apenas uma forma para evitar acessos duplicados. - -Scanning: -Pesquisando: - -Comparison finished: -Comparação concluída: - - -1 item found -%x items found - - -1 item encontrado -%x itens encontrados - - -Time elapsed: -Tempo decorrido: - -File %x has an invalid date. -O arquivo %x tem uma data inválida. - -Date: -Data: - -Files have the same date but a different size. -Os arquivos têm a mesma data mas tamanho diferente. - -Size: -Tamanho: - -Content comparison was skipped for excluded files. -A comparação de conteúdo foi ignorada para os arquivos excluídos. - -Items differ in attributes only -Os itens diferem apenas nos atributos - -Resolving symbolic link %x -Resolvendo link simbólico %x - -Comparing content of files %x -Comparando conteúdo do arquivo %x - -Generating file list... -Gerando lista de arquivos... - -Fail-safe file copy -Cópia de arquivos a prova de falhas - -Enabled -Habilitado - -Disabled -Desabilitado - -Copy locked files -Copiar arquivos bloqueados (em uso) - -Copy file access permissions -Copiar permissões de acesso aos arquivos - -File time tolerance -Tolerância de tempo do arquivo - -Run with background priority -Executar com prioridade de segundo plano - -Lock directories during sync -Bloquear diretórios durante sincronização - -Verify copied files -Verificar arquivos copiados - -Using non-default global settings: -Usando configurações globais não predefinidas: - -A folder input field is empty. -Um campo de entrada de pasta está vazio. - -The corresponding folder will be considered as empty. -A pasta correspondente será considerada como vazia. - -Exclude: -Excluir: - -One base folder of a folder pair is contained in the other one. -Uma pasta base de um par de pastas está contida na outra. - -The folder should be excluded from synchronization via filter. -A pasta deve ser excluída da sincronização via filtro. - -Calculating sync directions... -Calculando as direções de sincronização... - -Out of memory. -Memória insuficiente. - -Show in Explorer -Mostrar no Explorer - -Open with default application -Abrir com aplicativo padrão - -Browse directory -Procurar diretório - -Database file %x is incompatible. -Arquivo de banco de dados %x incompatível. - -Initial synchronization: -Sincronização inicial: - -Database file %x does not yet exist. -O arquivo de banco de dados %x ainda não existe. - -Database file is corrupted: -O arquivo de banco de dados está corrompido: - -Loading file %x... -Carregando arquivo %x... - -The database files do not yet contain information about the last synchronization. -Os arquivos de banco de dados ainda não contêm informação sobre a última sincronização. - -Saving file %x... -Salvando arquivo %x... - -Searching for folder %x... -Localizando pasta %x... - -Timeout while searching for folder %x. -Tempo esgotado na localização da pasta %x. - -Cannot get process information. -Não é possível obter as informações do processo. - -Waiting while directory is locked: -Aguardando enquanto o diretório é bloqueado: - -Lock owner: -Proprietário de bloqueio: - -Detecting abandoned lock... -Detectando bloqueamento abandonado... - - -1 sec -%x sec - - -1 s -%x s - - -Item exists on left side only -Item existe apenas no lado esquerdo - -Item exists on right side only -Item existe apenas no lado direito - -Left side is newer -Lado esquerdo é mais recente - -Right side is newer -Lado direito é mais recente - -Items have different content -Itens têm conteúdos diferentes - -Both sides are equal -Ambos os lados são iguais - -Conflict/item cannot be categorized -Conflito/item não pode ser categorizado - -Copy new item to left -Copiar novo item para a esquerda - -Copy new item to right -Copiar novo item para a direita - -Delete left item -Excluir item à esquerda - -Delete right item -Excluir item à direita - -Move file on left -Mover arquivo à esquerda - -Move file on right -Mover arquivo à direita - -Update left item -Atualizar item da esquerda - -Update right item -Atualizar item da direita - -Do nothing -Não fazer nada - -Update attributes on left -Atualizar atributos à esquerda - -Update attributes on right -Atualizar atributos à direita - -Error parsing file %x, row %y, column %z. -Erro analisando o arquivo %x, linha %y, coluna %z. - -Services -Serviços - -Show All -Mostrar Todos - -Hide Others -Ocultar Outros - -Hide %x -Ocultar %x - -Quit %x -Sair %x - -Cannot set directory locks for the following folders: -Não é possível definir bloqueios de diretório para as seguintes pastas: - -Errors: -Erros: - -Warnings: -Avisos: - -Items processed: -Elementos processados: - -Items remaining: -Elementos restantes: - -Total time: -Tempo total: - -Warning -Aviso - -Stopped -Parado - -Cleaning up log files: -Limpando arquivos de log: - - -1 thread -%x threads - - -1 thread -%x threads - - -%x/sec -%x/s - -%x items -%x itens - -Completed successfully -Concluído com sucesso - -Completed with warnings -Concluído com avisos - -Completed with errors -Concluído com erros - -Cannot access the Volume Shadow Copy Service. -Não é possível acessar o Serviço de Cópias de Sombra de Volume. - -Please run the 64-bit version of FreeFileSync to create shadow copies on this system. -Execute a versão 64 bits do FreeFileSync para criar cópias de sombra neste sistema. - -Volume name %x is not part of file path %y. -O nome do volume %x não faz parte do caminho do arquivo %y. - -File time and size -Data e tamanho do arquivo - -File content -Conteúdo do arquivo - -File size -Tamanho do arquivo - -Two way -Dois sentidos - -Mirror -Espelhar - -Update -Atualizar - -Custom -Personalizado - -Multiple... -Múltiplo... - -Cannot write file attributes of %x. -Não é possível escrever os atributos de arquivo de %x. - -%x and %y have different content. -%x e %y têm conteúdos diferentes. - -Data verification error: -Erro na verificação dos dados: - -Moving file %x to %y -Movendo arquivo %x para %y - -Moving folder %x to %y -Movendo pasta %x para %y - -Moving symbolic link %x to %y -Movendo link simbólico %x para %y - -Updating file %x -Atualizando arquivo %x... - -Updating symbolic link %x -Atualizando link simbólico %x - -Verifying file %x -Verificando arquivo %x - -Updating attributes of %x -Atualizando atributos de %x - -Source item %x not found -Item de origem %x não encontrado - -Parent folder %x is not existing. -Pasta pai %x não existe. - -Cannot copy file %x to %y. -Não é possível copiar o arquivo %x para %y. - -Creating a Volume Shadow Copy for %x... -Criando uma Cópia de Sombra de Volume para %x... - -Cannot find folder %x. -Não é possível encontrar a pasta %x. - -Target folder %x is already existing, but was not available during folder comparison. -A pasta de destino %x já existe, mas não estava disponível durante a comparação de pastas. - -Target folder input field must not be empty. -Campo de entrada da pasta de destino não pode ficar vazio. - -Source folder %x not found. -Pasta de origem %x não encontrada. - -Please enter a target folder for versioning. -Insira uma pasta de destino para controle de versão. - -The following items have unresolved conflicts and will not be synchronized: -Os seguintes itens possuem conflitos não resolvidos e não serão sincronizados: - -Folder pair: -Par de pastas: - -The following folders are significantly different. Please check that the correct folders are selected for synchronization. -As seguintes pastas são muito diferentes. Verifique se as pastas corretas estão selecionadas. - -Not enough free disk space available in: -Espaço em disco insuficiente em: - -Available: -Disponível: - -Some files will be synchronized as part of multiple base folders. -Alguns arquivos serão sincronizados como parte de várias pastas base. - -To avoid conflicts, set up exclude filters so that each updated file is included by only one base folder. -Para evitar conflitos, configure filtros de exclusão para que cada arquivo atualizado seja incluído por apenas uma pasta base. - -Versioning folder: -Pasta de controle de versão: - -Base folder: -Pasta base: - -The versioning folder is contained in a base folder. -A pasta de controle de versão está dentro de uma pasta base. - -Synchronizing folder pair: -Sincronizando par de pastas: - -Generating database... -Gerando banco de dados... - -Searching for old file versions: -Procurando por versões antigas de arquivos: - -Removing old file versions: -Removendo versões antigas de arquivos: - -Unable to create time stamp for versioning: -Não é possível criar a estampa de tempo para o controle de versões: - -Drag && drop -Arrastar && Soltar - -Select a folder -Selecionar uma pasta - -&New -&Novo - -&Open... -&Abrir... - -Save &as... -Salvar &como... - -E&xit -Sai&r - -&File -&Arquivo - -&View help -Ver &ajuda - -&About -&Sobre - -&Help -A&juda - -Usage: -Uso: - -Select folders to watch. -Selecionar as pastas para monitorar. - -Enter a command line. -Inserir uma linha de comando. - -Press 'Start'. -Pressionar 'Iniciar'. - -To get started just import a "ffs_batch" file. -Para iniciar importe um arquivo "ffs_batch". - -Folders to watch: -Pastas para monitorar: - -Add folder -Adicionar pasta - -Remove folder -Remover pasta - -Browse -Procurar - -Idle time (in seconds): -Tempo de espera (em segundos): - -Idle time between last detected change and execution of command -Tempo de espera entre última alteração detectada e execução do comando - -Command line: -Linha de comando: - -&Hide console window -&Ocultar janela de console - - -The command is triggered if: -- files or subfolders change -- new folders arrive (e.g. USB stick insert) - - -O comando é disparado se: -- arquivos ou subpastas são alterados -- novas pastas aparecem (ex. Pendrive inserido) - - -Start -Iniciar - -About -Sobre - -Build: %x -Versão: %x - -All files -Todos os arquivos - -Automated Synchronization -Sincronização Automatizada - -The %x protocol does not support directory monitoring: -O protocolo %x não suporta monitoramento de diretório: - -Directory monitoring active -Monitoramento de diretórios ativado - -Waiting until directory is available: -Aguardando até o diretório ficar disponível: - -&Configure -&Configurar - -&Show error message -&Mostrar mensagem de erro - -&Quit -&Encerrar - -&Retry -&Tentar Novamente - - -1 byte -%x bytes - - -1 byte -%x bytes - - -%x MB -%x MB - -%x KB -%x kB - -%x GB -%x GB - -Loading... -Carregando... - -Scanning... -Examinando... - -configuration file -arquivo de configuração - -System: Sleep -Sistema: Suspender - -System: Shut down -Sistema: Desligar - -Nothing to synchronize -Nada para sincronizar - -Executing command: -Executando comando: - -You can switch to FreeFileSync's main window to resolve this issue. -Você pode alternar para a janela principal do FreeFileSync para resolver este problema. - -&Don't show this warning again -&Não mostrar mais este aviso - -&Ignore -&Ignorar - -&Switch -&Alterar - -Switching to FreeFileSync's main window -Alternando para a janela principal do FreeFileSync - -Automatic retry -Nova tentativa automática - -Ignore &all -Ignorar &todos - -Retrying operation... -Tentando novamente a operação... - -Serious Error -Erro Grave - -Last session -Última sessão - -Today -Hoje - - -1 day -%x days - - -1 dia -%x dias - - -Name -Nome - -Last sync -Últ. Sinc. - -Log -Log - -Folder -Pasta - -Symlink -Link Simbólico - -Full path -Caminho completo - -Relative path -Caminho relativo - -Item name -Nome do item - -Size -Tamanho - -Date -Data - -Extension -Extensão - -Category -Categoria - -Action -Ação - -Local comparison settings -Configurações de comparação local - -Local synchronization settings -Configurações de sincronização local - -Local filter -Filtro local - -Active -Ativo - -None -Nenhum - -Remove local settings -Remover configurações locais - -Clear local filter -Limpar filtro local - -Copy -Copiar - -Paste -Colar - -The selected folder %x cannot be used with FreeFileSync. -A pasta selecionada %x não pode ser usada com o FreeFileSync. - -Please select a folder on a local file system, network or an MTP device. -Selecione uma pasta em um sistema de arquivos local, de rede ou de um dispositivo MTP. - -Defined by context of use -Definido pelo contexto de uso - -Requires FreeFileSync Donation Edition -Requer FreeFileSync Edição do Doador - -&Save -&Salvar - -Save as &batch job... -Salvar como &tarefa em lotes... - -Show &log -Mostrar &log - -Start &comparison -Iniciar &Comparação - -C&omparison settings -C&onfigurações de Comparação - -&Filter settings -Configurações de &Filtro - -S&ynchronization settings -Configurações de S&incronização - -Start &synchronization -Iniciar &Sincronização - -&Actions -A&ções - -&Preferences -&Preferências - -&Language -&Idioma - -&Find... -&Localizar... - -&Export file list... -&Exportar lista de arquivos... - -&Reset layout -&Redefinir layout - -&Tools -&Ferramentas - -&Check for updates now -&Verificar atualizações agora - -Check &automatically once a week -V&erificar automaticamente uma vez por semana - -Cancel -Cancelar - -Compare -Comparar - -Synchronize -Sincronizar - -Add folder pair -Adicionar par de pastas - -Remove folder pair -Remover par de pastas - -Access online storage -Acessar armazenamento online - -Close search bar -Fechar barra de localização - -Find: -Localizar: - -Match case -Diferenciar maiúsculas e minúsculas - -Processed: -Processado: - -Remaining: -Restante: - -New -Novo - -Open... -Abrir... - -Save -Salvar - -Save as... -Salvar como... - -View type: -Tipo de visualização: - -Select view: -Selecionar visualização: - -Save as default -Salvar como padrão - -Statistics: -Estatísticas: - -Number of files and folders that will be deleted -Número de arquivos e pastas que serão excluídos - -Number of files that will be updated -Número de arquivos que serão atualizados - -Number of files and folders that will be created -Número de arquivos e pastas que serão criados - -Total bytes to copy -Bytes totais a serem copiados - -Arrange folder pair -Organizar par de pastas - -Main settings: -Configurações principais: - -Use local settings: -Usar configurações locais: - -Select a variant: -Selecionar uma variante: - -Include &symbolic links: -Incluir &links simbólicos: - -&Follow -&Seguir - -&Direct -&Direto - -More information -Mais informações - -&Ignore time shift [hh:mm] -&Ignorar mudança de tempo [hh:mm] - -List of file time offsets to ignore -Lista de diferença de tempo nos arquivos para ignorar - -Example: -Exemplo: - -Handle daylight saving time -Como lidar com horário de verão - -Ignore errors -Ignorar erros - -Retry count: -Número de tentativas: - -Delay (in seconds): -Atraso (em segundos): - -Performance improvements: -Melhorias de desempenho: - -Parallel file operations: -Operações de arquivos em paralelo: - -How to get best performance? -Como obter o melhor desempenho? - -Local settings: -Configurações locais: - -Include: -Incluir: - -Show examples -Mostrar exemplos - -Select filter rules to exclude certain files from synchronization. Enter file paths relative to their corresponding folder pair. -Selecione regras de filtro para excluir certos arquivos da sincronização. Insira os caminhos relativos dos pares de pastas correspondentes. - -File size: -Tamanho do arquivo: - -Minimum: -Mínimo: - -Maximum: -Máximo: - -Time span: -Período de tempo: - -C&lear -&Limpar - -Detect moved files -Detectar arquivos movidos - - -- Not supported by all file systems -- Requires and creates database files -- Detection not available for first sync - - -- Não suportado por todos os tipos de sistemas de arquivo -- Requer e cria arquivo de banco de dados -- Detecção não disponível para a primeira sincronização - - -Delete files: -Excluir arquivos: - -&Recycle bin -&Lixeira - -&Permanent -&Permanente - -&Versioning -Controle de &versão - -Move files to a user-defined folder -Mover os arquivos para uma pasta definida pelo usuário - -Naming convention: -Convenção de nomenclatura: - -Limit file versions: -Limitar versões de arquivos: - -Last x days: -Últimos x dias: - -&Override default log path: -&Substituir caminho de log padrão: - -Run a command: -Executar um comando: - -OK -OK - -Connection type: -Tipo de conexão: - -Connected user accounts: -Contas de usuário conectadas: - -&Add connection -&Adicionar conexão - -&Disconnect -&Desconectar - -Selected user account: -Conta de usuário selecionada: - -Server name or IP address: -Nome do servidor ou endereço IP: - -Port: -Porta: - -Encryption: -Criptografia: - -&Disabled -&Desabilitado - -&Explicit SSL/TLS -SSL/TLS &Explícito - -Authentication: -Autenticação: - -&Password -&Senha - -&Key file -&Arquivo de chave - -&SSH agent -&SSH-agent - -User name: -Nome de usuário: - -Private key file: -Arquivo de chave particular: - -&Show password -&Mostrar senha - -Directory on server: -Diretório no servidor: - -Access timeout (in seconds): -Tempo limite de acesso (em segundos): - -SFTP channels per connection: -Canais SFTP por conexão: - -Detect server limit -Detectar limite do servidor - -Select Folder -Selecionar Pasta - -Variant: -Variante: - -&Don't show this dialog again -&Não mostrar esta caixa de diálogo novamente - -Bytes: -Bytes: - -Items: -Itens: - -Synchronizing... -Sincronizando... - -Minimize to notification area -Minimizar para a área de notificação - -Bytes -Bytes - -Items -Itens - -When finished: -Quando concluído: - -Auto-close -Fechamento automático - -Close -Fechar - -&Pause -&Pausar - -Stop -Interromper - -Create a batch file for unattended synchronization. To start, double-click this file or schedule in a task planner: %x -Cria um arquivo em lotes para sincronização desatendida. Para iniciar, dê um clique duplo neste arquivo ou insira no agendador de tarefas: %x - -Progress dialog: -Caixa de diálogo de progresso: - -Run minimized -Executar minimizado - -Show pop-up on errors or warnings -Mostrar pop-up em caso de erros ou avisos - -&Cancel -&Cancelar - -Stop synchronization at first error -Interromper a sincronização ao primeiro erro - -How can I schedule a batch job? -Como posso agendar uma tarefa em lotes? - -&Keep relative paths -&Manter caminhos relativos - -&Overwrite existing files -&Substituir arquivos existentes - -The following settings are used for all synchronization jobs. -As seguintes configurações são utilizadas para todas as tarefas de sincronização. - - -Copy to a temporary file (*.ffs_tmp) before overwriting target. -This guarantees a consistent state even in case of a serious error. - - -Copiar para um arquivo temporário (*.ffs_tmp) antes de substituir o destino. -Isto garante um estado consistente mesmo em caso de erro grave. - - -recommended -recomendado - -Copy shared or locked files using the Volume Shadow Copy Service. -Copiar arquivos compartilhados ou bloqueados usando o Serviço de Cópias de Sombra de Volume. - -requires administrator rights -requer direitos de administrador - -Transfer file and folder permissions. -Transferir permissões de arquivos e pastas. - -Show all permanently hidden dialogs and warning messages again -Mostrar todas as caixas de diálogo e as mensagens de aviso permanentemente ocultas - -Default log path: -Caminho de log padrão: - -&Delete logs after x days: -&Excluir logs após x days: - -Notification sounds: -Sons de notificação: - -Synchronization finished: -Sincronização concluída: - -Customize context menu: -Personalizar menu de contexto: - -Description -Descrição - -&Default -&Config. Padrão - -Feedback and suggestions are welcome: -Comentários e sugestões são bem-vindos: - -Home page -Página web - -FreeFileSync Forum -Fórum do FreeFileSync - -Email -E-mail - -If you like FreeFileSync: -Se você gosta do FreeFileSync: - -Support with a donation -Apoie com uma doação - -The auto updater was disabled by the administrator. -A atualização automática foi desabilitada pelo administrador. - -Donation details -Detalhes da doação - -Source code written in C++ using: -Código-fonte escrito em C++ utilizando: - -Published under the GNU General Public License: -Publicado sob a Licença Pública Geral GNU: - -Many thanks for localization: -Pela tradução, um agradecimento a: - -Activate the FreeFileSync Donation Edition by one of the following methods: -Ative o FreeFileSync Edição do Doador por algum dos seguintes métodos: - -Activate via internet now: -Ativar pela internet agora: - -Activate online -Ativar online - -Retrieve an offline activation key from the following URL: -Recuperar uma chave de ativação offline a partir da seguinte URL: - -&Copy to clipboard -&Copiar para área de transferência - -Enter activation key: -Entrar com chave de ativação: - -Activate offline -Ativar offline - -Highlight configurations that have not been run for more than the following number of days: -Realçar configurações que não foram executadas a mais do seguinte número de dias: - -FreeFileSync requires access rights to avoid "Operation not permitted" errors when synchronizing your data (e.g. Mail, Messages, Calendars). -FreeFileSync requer direitos de acesso para evitar erros de "Operação não permitida" quando sincronizando seus dados (ex.: Mail, Mensagens, Calendário). - -Locate the FreeFileSync app -Localize o app FreeFileSync - -Open Security && Privacy -Abra Segurança e Privacidade - -Click the lock to allow changes. -Clique no cadeado para permitir alterações. - -Drag FreeFileSync into the panel. -Arraste FreeFileSync para o painel. - -Synchronization Settings -Configurações de Sincronização - -Access Online Storage -Acessar Armazenamento Online - -Save as a Batch Job -Salvar como um Trabalho em Lotes - -Delete Items -Excluir Itens - -Copy Items -Copiar Itens - -Options -Opções - -Select Time Span -Selecionar Período de Tempo - -Highlight Configurations -Realçar Configurações - -Grant Full Disk Access -Conceder Acesso Total ao Disco - -Info -Informações - -No log entries -Nenhuma entrada de log - -Select all -Selecionar todos - -&Options -&Opções - -Main Bar -Barra Principal - -Folder Pairs -Pares de Pasta - -Find -Localizar - -View Settings -Ver Configurações - -Configuration -Configuração - -Overview -Parâmetros - -Swap sides -Trocar lados - -Show "%x" -Mostrar "%x" - -&Show details -&Mostrar detalhes - -FreeFileSync %x is available! -FreeFileSync %x está disponível! - -Local path not available for %x. -Caminho local não disponível para %x. - -Confirm -Confirmar - - -Do you really want to execute the command %y for one item? -Do you really want to execute the command %y for %x items? - - -Você realmente deseja executar o comando %y para um item? -Você realmente deseja executar o comando %y para %x itens? - - -&Execute -&Executar - -Set direction: -Configurar direção: - -multiple selection -seleção múltipla - -&Include via filter: -&Incluir via filtro: - -&Exclude via filter: -&Excluir via filtro: - -Include temporarily -Incluir temporariamente - -Exclude temporarily -Excluir temporariamente - -&Synchronize selection -&Sincronizar seleção - -&Copy to... -&Copiar para... - -&Delete -&Apagar - -Show icons: -Mostrar ícones: - -Small -Pequeno - -Medium -Médio - -Large -Grande - -Select time span... -Selecionar período de tempo... - -Donation Edition -Edição do Doador - -Folder Comparison and Synchronization -Comparação e Sincronização de Pastas - -Configuration saved -Configuração salva - -FreeFileSync batch -Tarefa em lotes do FreeFileSync - -Do you want to save changes to %x? -Deseja salvar as alterações para %x? - -Never save &changes -Nunca salvar as &alterações - -Do&n't save -&Não salvar - -%x cannot be renamed. -%x não pode ser renomeado. - -New name: -Novo nome: - -Rename Configuration -Renomear Configuração - -Configuration name must not be empty. -Nome da configuração não pode ser vazio. - -&Rename... -&Renomear... - -Hide configuration -Ocultar configuração - -Highlight... -Realçar... - -Clear filter -Limpar filtro - -Show files that exist on left side only -Mostrar arquivos que existem somente à esquerda - -Show files that exist on right side only -Mostrar arquivos que existem somente à direita - -Show files that are newer on left -Mostrar arquivos que são mais recentes à esquerda - -Show files that are newer on right -Mostrar arquivos que são mais recentes à direita - -Show files that are equal -Mostrar arquivos que são iguais - -Show files that are different -Mostrar arquivos que são diferentes - -Show conflicts -Mostrar conflitos - -Show files that will be created on the left side -Mostrar arquivos que serão criados no lado esquerdo - -Show files that will be created on the right side -Mostrar arquivos que serão criados no lado direito - -Show files that will be deleted on the left side -Mostrar arquivos que serão excluidos no lado esquerdo - -Show files that will be deleted on the right side -Mostrar arquivos que serão excluidos no lado direito - -Show files that will be updated on the left side -Mostrar arquivos que serão atualizados no lado esquerdo - -Show files that will be updated on the right side -Mostrar arquivos que serão atualizados no lado direito - -Show files that won't be copied -Mostrar arquivos que não serão copiados - -Show filtered or temporarily excluded files -Mostrar arquivos que foram filtrados ou excluídos temporariamente - -Filter -Filtro - -All files are in sync -Todos os arquivos estão sincronizados - - -1 directory -%x directories - - -1 diretório -%x diretórios - - - -1 file -%x files - - -1 arquivo -%x arquivos - - - -Showing %y of 1 row -Showing %y of %x rows - - -Mostrando %y de 1 coluna -Mostrando %y de %x colunas - - -Cannot find %x -Não é possível localizar %x - -Move up -Mover para cima - -Move down -Mover para baixo - -Comma-separated values -Valores separados por vírgula - -File list exported -Lista de arquivos exportada - -Searching for program updates... -Procurando atualizações do programa... - -Paused -Pausado - -Stop requested... -Parada solicitada... - -Initializing... -Inicializando... - -Comparing content... -Comparando conteúdo... - -&Continue -&Continuar - -Progress -Progresso - -Thank you, %x, for your donation and support! -Obrigado, %x, pela sua doação e suporte! - -Connections -Conexões - -Recommended range: -Intervalo recomendado: - -Do you really want to disconnect from user account %x? -Você realmente quer desconectar da conta de usuário %x? - -Password: -Senha: - -Key passphrase: -Frase-senha da chave: - -Please enter a file path. -Por favor, insira um caminho de arquivo. - - -Copy the following item to another folder? -Copy the following %x items to another folder? - - -Copiar o seguinte item para outra pasta? -Copiar os seguintes %x itens para outra pasta? - - -Please enter a target folder. -Por favor, insira uma pasta de destino. - - -Do you really want to move the following item to the recycle bin? -Do you really want to move the following %x items to the recycle bin? - - -Você realmente deseja mover o seguinte item para a lixeira? -Você realmente deseja mover os seguintes %x itens para a lixeira? - - -Move -Mover - - -Do you really want to delete the following item? -Do you really want to delete the following %x items? - - -Você realmente deseja excluir o seguinte item? -Você realmente deseja excluir os seguintes %x itens? - - -Start to synchronize the selection? -Começar a sincronizar a seleção? - -Start synchronization now? -Iniciar sincronização agora? - -Copy DACL, SACL, Owner, Group -Copiar DACL, SACL, Proprietário, Grupo - -Integrate external applications into context menu. The following macros are available: -Integrar aplicações externas no menu de contexto. As seguintes macros estão disponíveis: - -Full file or folder path -Arquivo completo ou caminho da pasta - -Parent folder path -Caminho da pasta principal - -Temporary local copy for SFTP and MTP storage -Cópia local temporária para armazenamento SFTP e MTP - -Parameters for opposite side -Parâmetros para o lado oposto - -Show hidden dialogs again -Mostrar caixas de diálogo ocultadas - -All dialogs shown -Todas caixas de diálogo visíveis - -Downloading update... -Baixando atualização... - -Identify equal files by comparing modification time and size. -Identifica arquivos iguais comparando modificações na data e no tamanho. - -Identify equal files by comparing the file content. -Identifica arquivos iguais comparando o conteúdo do arquivo. - -Identify equal files by comparing their file size. -Identifica arquivos iguais comparando os seus tamanhos. - -Identify and propagate changes on both sides. Deletions, moves and conflicts are detected automatically using a database. -Identifica e propaga as alterações em ambos os lados. Arquivos e pastas excluídos e/ou movidos e conflitos são detectados automaticamente usando um banco de dados. - -Create a mirror backup of the left folder by adapting the right folder to match. -Cria uma cópia espelho da pasta da esquerda adaptando a pasta da direita para corresponder. - -Copy new and updated files to the right folder. -Copia arquivos novos ou atualizados para a pasta da direita. - -Configure your own synchronization rules. -Configure as suas próprias regras de sincronização. - -Comparison -Comparação - -Synchronization -Sincronização - -This week -Esta semana - -This month -Este mês - -This year -Este ano - -Byte -Byte - -KB -kB - -MB -MB - -Retain deleted and overwritten files in the recycle bin -Manter arquivos excluídos e substituídos na lixeira - -Delete and overwrite files permanently -Excluir e substituir arquivos permanentemente - -Replace -Substituir - -Move files and replace if existing -Mover arquivos e substituir se existente - -Time stamp -Carimbo de data/hora - -Move files into a time-stamped subfolder -Mover arquivos para uma subpasta com carimbo de data/hora - -File -Arquivo - -Append a time stamp to each file name -Colocar um carimbo de data/hora para cada nome de arquivo - -On completion: -Ao finalizar: - -On errors: -Em caso de erro: - -On success: -Em caso de êxito: - -Main config -Config. principal - -empty -vazio - -Leave as unresolved conflict -Deixar como conflito não resolvido - -YYYY-MM-DD hhmmss -AAAA-MM-DD hhmmss - -Minimum version count must be smaller than maximum count. -A contagem mínima de versões deve ser menor do que a contagem máxima. - -&Restore -&Restaurar - -Files -Arquivos - -Percentage -Percentual - -Failed to retrieve update information. -Falha na obteção de informação sobre atualização. - -Automatic updates: -Atualizações automáticas: - -Check for Program Updates -Verificar se existem atualizações - -Auto-update now or download manually from the FreeFileSync home page? -Atualizar automaticamente agora ou baixar manualmente pela página web do FreeFileSync? - -&Auto-update -&Atualização automática - -&Home page -&Página web - -Download now? -Baixar agora? - -&Download -&Baixar - -FreeFileSync is up to date. -O FreeFileSync está atualizado. - -Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now? -Não é possível encontrar a versão do FreeFileSync online. É provável que exista uma nova versão. Verificar manualmente? - -&Check -&Verificar - -Consistency check failed for %x. -Verificação de consistência falhou para %x. - -Installation was registered on a different operating system. -A instalação foi registrada em um sistema operacional diferente. - -Failed to activate FreeFileSync Donation Edition. -Falha na ativação do FreeFileSync Edição do Doador. - -Incorrect activation key. -Chave de ativação incorreta. - -Unable to register to receive system messages. -Não é possível registrar para receber mensagens do sistema. - -The %x installation option is only available in the FreeFileSync Donation Edition. -A opção de instalação %x está disponível apenas na Edição do Doador do FreeFileSync. - -Cannot find system function %x. -Não é possível localizar a função de sistema %x. - -Unable to register device notifications for %x. -Não foi possível registrar notificações para %x. - -The file is locked by another process: -O arquivo está bloqueado por outro processo: - -Failed to determine file permission support for folder %x. -Falha ao determinar o suporte de permissão de arquivo para a pasta %x. - -Cannot read security context of %x. -Não é possível ler o contexto de segurança de %x. - -Cannot write security context of %x. -Não é possível escrever o contexto de segurança de %x. - -Cannot read permissions of %x. -Não é possível ler as permissões de %x. - -Cannot copy permissions from %x to %y. -Não é possível copiar as permissões de %x para %y. - -%x is not a regular directory name. -%x não é um nome de diretório regular. - -Cannot copy attributes from %x to %y. -Não é possível copiar os atributos de %x para %y. - -%x TB -%x TB - -%x PB -%x PB - - -1 min -%x min - - -1 min -%x min - - - -1 hour -%x hours - - -1 hora -%x horas - - -Cannot set privilege %x. -Não é possível estabelecer o privilégio %x. - -Unable to suspend system sleep mode. -Não foi possível suspender o modo de espera do sistema. - -Cannot change process I/O priorities. -Não é possível alterar a prioridade de E/S do processo. - -Checking recycle bin failed for folder %x. -Verificando falha na Lixeira para pasta %x. - -Unable to shut down the system. -Não foi possível desligar o sistema. - -Prepare installation -Preparando a instalação - -Choose which components you want to install. -Escolha os componentes a serem instalados. - -Select installation type: -Selecionar o tipo de instalação: - -Local -Local - -Portable -Portátil - -Save settings in %x -Salvar configurações em %x - -Register FreeFileSync file extensions -Registrar as extensões de arquivos do FreeFileSync - -Create Explorer context menu entries -Criar entrada no menu de contexto do Explorer - -Save settings in installation directory -Salvar as configurações no diretório de instalação - -Do not write to Registry -Não escrever no Registro - -Just copy the files -Apenas copiar os arquivos - -Choose a directory for installation: -Escolher um diretório para a instalação: - -Create shortcuts: -Criar atalhos: - -Desktop -Área de trabalho - -Start Menu -Menu Iniciar - -Send To -Enviar para - -Registering FreeFileSync file extensions -Registrando as extensões de arquivos do FreeFileSync - -Unregistering FreeFileSync file extensions -Desfazendo registro das extensões de arquivos do FreeFileSync - -FreeFileSync Configuration -Configuração do FreeFileSync - -FreeFileSync Batch File -Arquivo em Lotes do FreeFileSync - -FreeFileSync Synchronization Database -Banco de Dados de Sincronização do FreeFileSync - -RealTimeSync Configuration -Configuração do RealTimeSync - -Edit with FreeFileSync -Editar com FreeFileSync - -Instead of an ad, here's an animal. -Ao invés de um anúncio, veja um animal. - -The FreeFileSync portable version cannot install into a subfolder of %x. -A versão portátil do FreeFileSync não pode ser instalada em uma subpasta de %x. - -Please choose the local installation type or select a different folder for installation. -Escolha o tipo de instalação local ou selecione uma pasta diferente para instalação. - -Get the Donation Edition with bonus features and help keep FreeFileSync ad-free. -Obtenha a Edição do Doador com recursos adicionais e ajude a manter o FreeFileSync livre de anúncios. - diff --git a/FreeFileSync/Build/Resources/Languages/romanian.lng b/FreeFileSync/Build/Resources/Languages/romanian.lng deleted file mode 100755 index 9d6bddfd..00000000 --- a/FreeFileSync/Build/Resources/Languages/romanian.lng +++ /dev/null @@ -1,2152 +0,0 @@ -
- Română - Alexandru Bogdan Munteanu - ro_RO - flag_romania.png - 3 - n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2 -
- -Cannot read file %x. -Nu pot citi fila %x. - - -Unexpected size of data stream. -Expected: %x bytes -Actual: %y bytes - - -Mărime neașteptată a fluxului de date. -Așteptată: %x baiți -Actuală: %y baiți - - -Cannot write file %x. -Nu pot scrie fila %x. - -Cannot write permissions of %x. -Nu pot scrie permisiunile lui %x. - -Operation not supported between different devices. -Operația nu-i suportată între dispozitive de stocare diferite. - -Cannot delete file %x. -Nu pot șterge fila %x. - -Cannot delete symbolic link %x. -Nu pot șterge legătura simbolică %x. - -Cannot delete directory %x. -Nu pot șterge dosarul %x. - -Cannot move file %x to %y. -Nu pot muta fila %x în %y. - -Cannot copy symbolic link %x to %y. -Nu pot copia legătura simbolică %x în %y. - -Error Code %x -Cod de Eroare %x. - -Cannot read directory %x. -Nu pot citi dosarul %x. - -Cannot write modification time of %x. -Nu pot scrie modificarea timpului pentru %x. - -Cannot read file attributes of %x. -Nu pot citi atributele filei %x. - -Cannot create directory %x. -Nu pot crea dosarul %x. - -Cannot determine final path for %x. -Nu pot determina calea finală pentru %x. - -Operation not supported by device. -Operația nu-i suportată de dispozitivul de stocare. - -Cannot resolve symbolic link %x. -Nu pot rezolva legătura simbolică %x. - -Unable to move %x to the recycle bin. -Nu pot muta %x în Reciclator. - -Authentication completed. -Autentificare realizată. - -You may close this page now and continue with FreeFileSync. -Poți închide pagina asta acum și continua cu FreeFileSync. - -Authentication failed. -Autentificare eșuată. - -Unable to connect to %x. -Nu mă pot conecta la %x. - -Cannot find %x. -Nu pot găsi %x. - -The name %x is used by more than one item in the folder. -Numele %x e folosit de mai multe elemente din dosar. - -Please authorize access to user account %x. -Autorizează accesul la contul de utilizator %x. - -Cannot open file %x. -Nu pot deschide fila %x. - -The name %x is already used by another item. -Numele %x este deja utilizat de alt element. - -Cannot determine free disk space for %x. -Nu pot determina spațiul liber de stocare pentru %x. - -Unable to disconnect from %x. -Nu pot face deconectarea de la %x. - -Unable to access %x. -Nu pot accesa %x. - -Failed to get information about server %x. -N-am putut obține informații despre serverul %x. - -Cannot monitor directory %x. -Nu pot monitoriza dosarul %x. - -Cannot find device %x. -Nu pot găsi dispozitivul %x. - -Cannot open directory %x. -Nu pot deschide dosarul %x. - -Unsupported item type. -Tip de element nesuportat. - -Incorrect command line: -Linie de comandă incorectă: - -The server does not support authentication via %x. -Serverul nu suportă autentificarea prin %x. - -Required: -Necesar: - - -Operation timed out after 1 second. -Operation timed out after %x seconds. - - -Operație expirată după 1 secundă. -Operație expirată după %x secunde. -Operație expirată după %x de secunde. - - - -Cannot wait on more than 1 connection at a time. -Cannot wait on more than %x connections at a time. - - -Nu pot aștepta după mai mult de 1 conexiune simultan. -Nu pot aștepta după mai mult de %x conexiuni simultan. -Nu pot aștepta după mai mult de %x de conexiuni simultan. - - -Active connections: %x -Conexiuni Active: %x - -Failed to open SFTP channel number %x. -N-am putut deschide canalul SFTP cu numărul %x. - -Both sides have changed since last synchronization. -Ambele părți s-au modificat de la ultima sincronizare. - -Cannot determine sync-direction: -Nu pot determina direcția de sincronizare: - -No change since last synchronization. -Nu sînt schimbări de la ultima sincronizare. - -The database entry is not in sync considering current settings. -Intrarea în baza de date nu e sincronizată, ținînd cont de setările curente. - -Setting default synchronization directions: Old files will be overwritten with newer files. -Baza de date existentă va fi făcută compatibilă cu versiunea softului și apoi va fi setată direcția implicită de sincronizare: Filele vechi vor fi suprascrise de cele noi. - -Creating file %x -Creez fila %x - -Creating folder %x -Creez dosarul %x - -Creating symbolic link %x -Creez legătura simbolică %x - -Moving file %x to the recycle bin -Mut fila %x în Reciclator - -Moving folder %x to the recycle bin -Mut dosarul %x în Reciclator - -Moving symbolic link %x to the recycle bin -Mut legătura simbolică %x în Reciclator - -Deleting file %x -Șterg fila %x - -Deleting folder %x -Șterg dosarul %x - -Deleting symbolic link %x -Șterg legătura simbolică %x - -Checking recycle bin availability for folder %x... -Verific dacă Reciclatorul e disponibil pentru dosarul %x... - -The recycle bin is not supported by the following folders. Deleted or overwritten files will not be able to be restored: -Reciclatorul nu este suportat de dosarele următoare. Filele de acolo șterse sau suprascrise nu vor putea fi restaurate: - -An exception occurred -A apărut o excepție - -A left and a right directory path are expected after %x. -O cale pentru dosarul stîng și cel drept e așteptată după %x. - -Syntax error -Eroare de sintaxă - -Cannot find file %x. -Nu pot găsi fila %x. - -Error -Eroare - -File %x does not contain a valid configuration. -Fila %x nu conține o configurație validă. - -The config file must not contain settings at directory pair level when directories are set via command line. -Fila de configurare nu trebuie să conțină setări la nivelul perechii de dosare, cînd dosarele sînt setate prin linia de comandă. - -Directories cannot be set for more than one configuration file. -Dosarele nu pot fi setate pentru mai mult de o singură filă de configurare. - -Command line -Linie de comandă - -Syntax: -Sintaxă: - -config files: -file de configurare: - -directory -dosar - -global config file: -filă de configurare globală: - -Any number of FreeFileSync "ffs_gui" and/or "ffs_batch" configuration files. -Orice număr de file de configurare pentru FreeFileSync, de tipul "ffs_gui" sau/și "ffs_batch". - -Any number of alternative directory pairs for at most one config file. -Orice număr de perechi alternative de dosare pentru cel mult o filă de configurare. - -Open the selected configuration for editing only, without executing it. -Deschide configurația selectată doar pentru editare, fără a o executa. - -Path to an alternate GlobalSettings.xml file. -Calea către o filă GlobalSettings.xml alternativă. - -Installation files are corrupted. Please reinstall FreeFileSync. -Filele de instalare sînt stricate (corupte). Reinstalează FreeFileSync. - -Cannot find the following folders: -Nu pot găsi dosarele următoare: - -The following folders do not yet exist: -Dosarele următoare nu există încă: - -The folders are created automatically when needed. -Dosarele sînt create automat la nevoie. - -The following folder paths differ in case. Please use a single form in order to avoid duplicate accesses. -La căile următoare diferă caseta literelor (majuscule/minuscule). Folosește o singură formă de casetă pt. a evita duplicarea acceselor. - -Scanning: -Scanez: - -Comparison finished: -Comparare terminată: - - -1 item found -%x items found - - -1 element găsit -%x elemente găsite -%x de elemente găsite - - -Time elapsed: -Timp Scurs: - -File %x has an invalid date. -Fila %x are o dată nevalidă. - -Date: -Dată: - -Files have the same date but a different size. -Filele au aceeași dată, dar mărime diferită. - -Size: -Mărime: - -Content comparison was skipped for excluded files. -Compararea conținutului a fost sărită pentru filele excluse. - -Items differ in attributes only -Elementele diferă doar prin atributele lor - -Resolving symbolic link %x -Rezolv legătura simbolică %x - -Comparing content of files %x -Compar conținutul filelor %x - -Generating file list... -Generez lista de file... - -Fail-safe file copy -Copiază filele în modul protejat la eșec [fail-safe] - -Enabled -Activat - -Disabled -Dezactivat - -Copy locked files -Copiază filele partajate [shared] sau zăvorîte [locked] - -Copy file access permissions -Copiază permisiunile de acces ale filelor - -File time tolerance -Toleranța timpului filei - -Run with background priority -Rulează cu prioritate de fundal [background] - -Lock directories during sync -Zăvorăște [lock] dosarele în timpul sincronizării - -Verify copied files -Verifică filele copiate - -Using non-default global settings: -Folosirea de setări globale non-implicite: - -A folder input field is empty. -Un cîmp de introducere a dosarului este gol. - -The corresponding folder will be considered as empty. -Dosarul corespondent va fi considerat ca fiind gol. - -Exclude: -Excluse: - -One base folder of a folder pair is contained in the other one. -Un dosar de bază din perechea de dosare e conținut în celălalt. - -The folder should be excluded from synchronization via filter. -Dosarul trebuie exclus din sincronizare prin filtru. - -Calculating sync directions... -Calculez acțiunile de sincronizare... - -Out of memory. -Memorie epuizată. - -Show in Explorer -Arată în Exploratorul de File - -Open with default application -Deschide cu Aplicația Implicită - -Browse directory -Explorează Dosarul - -Database file %x is incompatible. -Fila cu baza de date %x este incompatibilă. - -Initial synchronization: -Sincronizare inițială: - -Database file %x does not yet exist. -Fila cu baza de date %x nu există încă. - -Database file is corrupted: -Fila bazei de date este stricată (coruptă): - -Loading file %x... -Deschid fila %x... - -The database files do not yet contain information about the last synchronization. -Filele cu baze de date nu conțin încă informații despre ultima sincornizare. - -Saving file %x... -Salvez fila %x... - -Searching for folder %x... -Caut dosarul %x... - -Timeout while searching for folder %x. -Timp expirat la căutarea dosarului %x. - -Cannot get process information. -Nu pot obține informații despre proces. - -Waiting while directory is locked: -Aștept ca dosarul să fie zăvorît [locked]: - -Lock owner: -Zăvorăște proprietarul: - -Detecting abandoned lock... -Detectez zăvorîrea [lock] abandonată... - - -1 sec -%x sec - - -1 sec -%x sec -%x de sec - - -Item exists on left side only -Elementul există doar în partea stîngă - -Item exists on right side only -Elementul există doar în partea dreaptă - -Left side is newer -Elementul din partea stîngă e mai nou - -Right side is newer -Elementul din partea dreaptă e mai nou - -Items have different content -Elementele au conținut diferit - -Both sides are equal -Ambele părți sînt identice - -Conflict/item cannot be categorized -Conflictul/elementul nu poate fi inclus într-o anumită categorie - -Copy new item to left -Copiază elementul nou în stînga - -Copy new item to right -Copiază elementul nou în dreapta - -Delete left item -Șterge elementul stîng - -Delete right item -Șterge elementul drept - -Move file on left -Mută fila în stînga - -Move file on right -Mută fila în dreapta - -Update left item -Actualizează elementul stîng - -Update right item -Actualizează elementul drept - -Do nothing -Nici o acțiune - -Update attributes on left -Actualizează atributele în partea stîngă - -Update attributes on right -Actualizează atributele în partea dreaptă - -Error parsing file %x, row %y, column %z. -Eroare la parsarea filei %x, rîndul %y, coloana %z. - -Services -Servicii - -Show All -Arată Tot - -Hide Others -Ascunde Restul - -Hide %x -Ascunde %x - -Quit %x -Închide %x - -Cannot set directory locks for the following folders: -Nu pot seta zăvorîrea [lock] pentru dosarele următoare: - -Errors: -Erori: - -Warnings: -Avertizări: - -Items processed: -Elemente Procesate: - -Items remaining: -Elemente Rămase: - -Total time: -Timp Total: - -Warning -Atenție - -Stopped -Oprită - -Cleaning up log files: -Curăț filele de jurnalizare: - - -1 thread -%x threads - - -1 fir -%x fire -%x de fire - - -%x/sec -%x/sec - -%x items -%x elemente - -Completed successfully -Realizată cu succes - -Completed with warnings -Realizată cu atenționări - -Completed with errors -Realizată cu erori - -Cannot access the Volume Shadow Copy Service. -Nu pot accesa Serviciul de Conservare a Volumelor [Volume Shadow Copy]. - -Please run the 64-bit version of FreeFileSync to create shadow copies on this system. -Folosește versiunea pe 64-biți a FreeFileSync pentru a crea conservări (copii de rezervă) pe acest sistem. - -Volume name %x is not part of file path %y. -Numele volumului %x nu face parte din calea filei %y. - -File time and size -Timpul și Mărimea Filelor - -File content -Conținutul Filelor - -File size -Mărimea Filelor - -Two way -Ambele Direcții - -Mirror -Clonare - -Update -Actualizare - -Custom -Personalizat - -Multiple... -Multiplu... - -Cannot write file attributes of %x. -Nu pot scrie atributele de filă ale lui %x. - -%x and %y have different content. -%x și %y au conținut diferit. - -Data verification error: -Eroare de verificare a datei: - -Moving file %x to %y -Mut fila %x în %y - -Moving folder %x to %y -Mut dosarul %x în %y - -Moving symbolic link %x to %y -Mut legătura simbolică %x în %y - -Updating file %x -Actualizez fila %x - -Updating symbolic link %x -Actualizez legătura simbolică %x - -Verifying file %x -Verific fila %x - -Updating attributes of %x -Actualizez atributele lui %x - -Source item %x not found -Elementul sursă %x n-a fost găsit - -Parent folder %x is not existing. -Dosarul părinte %x nu există. - -Cannot copy file %x to %y. -Nu pot copia fila %x în %y. - -Creating a Volume Shadow Copy for %x... -Creez o Conservare a Volumului [Volume Shadow Copy] pentru %x... - -Cannot find folder %x. -Nu pot găsi dosarul %x. - -Target folder %x is already existing, but was not available during folder comparison. -Dosarul țintă %x există deja, dar n-a fost disponibil în timpul comparării dosarelor. - -Target folder input field must not be empty. -Cîmpul de introducere a dosarului țintă nu trebuie să fie gol. - -Source folder %x not found. -Dosarul sursă %x nu a fost găsit. - -Please enter a target folder for versioning. -Introdu dosarul țintă pentru versionare. - -The following items have unresolved conflicts and will not be synchronized: -Există conflicte nerezolvate la elementele listate mai jos, deci ele nu vor fi sincronizate: - -Folder pair: -Perechea de Dosare: - -The following folders are significantly different. Please check that the correct folders are selected for synchronization. -Dosarele următoare au diferențe semnificative. Asigură-te că ai selectat dosarele corecte pentru sincronizare. - -Not enough free disk space available in: -Spațiu de stocare insuficient pe: - -Available: -Disponibil: - -Some files will be synchronized as part of multiple base folders. -Anumite file vor fi sincronizate ca parte din dosare de bază multiple. - -To avoid conflicts, set up exclude filters so that each updated file is included by only one base folder. -Pentru a evita conflictele, setează filtrele de excludere astfel ca fiecare filă actualizată să fie inclusă doar într-un singur dosar de bază. - -Versioning folder: -Dosar de Versionare: - -Base folder: -Dosar de Bază: - -The versioning folder is contained in a base folder. -Dosarul de versionare este conținut într-un dosar de bază. - -Synchronizing folder pair: -Sincronizez perechea de dosare: - -Generating database... -Generez baza de date... - -Searching for old file versions: -Caut versiuni mai vechi ale filelor: - -Removing old file versions: -Înlătur versiunile vechi ale filelor: - -Unable to create time stamp for versioning: -Nu pot crea marcajul de timp pentru versionare: - -Drag && drop -Trage și pune un dosar mai jos sau explorează către el - -Select a folder -Selectează un Dosar - -&New -Configurație &Nouă - -&Open... -&Deschide... - -Save &as... -Salvează c&a... - -E&xit -&Ieși - -&File -&Filă - -&View help -&Cuprins - -&About -&Despre - -&Help -&Ajutor - -Usage: -Utilizare: - -Select folders to watch. -Selectează dosarele de monitorizat. - -Enter a command line. -Scrie calea. - -Press 'Start'. -Apasă pe 'Pornește'. - -To get started just import a "ffs_batch" file. -Pentru a începe, importă o filă de tipul "ffs_batch". - -Folders to watch: -Dosare de Monitorizat: - -Add folder -Adaugă Dosar - -Remove folder -Înlătură Dosarul - -Browse -Explorează - -Idle time (in seconds): -Timp de inactivitate (în secunde): - -Idle time between last detected change and execution of command -Timpul de inactivitate între ultima schimbare detectată și executarea comenzii - -Command line: -Linie de comandă: - -&Hide console window -Ascun&de fereastra consolei - - -The command is triggered if: -- files or subfolders change -- new folders arrive (e.g. USB stick insert) - - -Comanda este declanșată dacă: -- sînt modificate filele sau subdosarele -- apar dosare noi (de ex. prin atașarea unui dispozitiv USB) - - -Start -Pornește - -About -Despre - -Build: %x -Compilația: %x - -All files -Toate Filele - -Automated Synchronization -Sincronizare Automată - -The %x protocol does not support directory monitoring: -Protocolul %x nu suportă monitorizarea dosarelor: - -Directory monitoring active -Monitorizarea dosarelor este activă - -Waiting until directory is available: -Aștept pînă cînd dosarul va fi disponibil: - -&Configure -&Configurează - -&Show error message -A&rată mesajele de eroare - -&Quit -&Ieși - -&Retry -&Reîncearcă - - -1 byte -%x bytes - - -1 bait -%x baiți -%x de baiți - - -%x MB -%x MB - -%x KB -%x KB - -%x GB -%x GB - -Loading... -Deschid... - -Scanning... -Scanez... - -configuration file -filă de configurare - -System: Sleep -Sistem: Pune în Repaus [Sleep] - -System: Shut down -Sistem: Închide PC-ul [Shut down] - -Nothing to synchronize -Nu e nimic de sincronizat - -Executing command: -Execut comanda: - -You can switch to FreeFileSync's main window to resolve this issue. -Poți comuta la fereastra principală FreeFileSync pentru a rezolva această problemă. - -&Don't show this warning again -&Nu arăta din nou această atenționare - -&Ignore -&Ignoră - -&Switch -&Comută - -Switching to FreeFileSync's main window -Comut la fereastra principală FreeFileSync - -Automatic retry -Reîncearcă Automat - -Ignore &all -Ignoră &Tot - -Retrying operation... -Reîncerc operația... - -Serious Error -Eroare Serioasă - -Last session -Ultima Sesiune - -Today -Azi - - -1 day -%x days - - -1 zi -%x zile -%x de zile - - -Name -Nume - -Last sync -Ultima Sincr. - -Log -Jurnal - -Folder -Dosar - -Symlink -Simlegătură - -Full path -Cale Completă - -Relative path -Cale Relativă - -Item name -Numele Elementului - -Size -Mărime - -Date -Dată - -Extension -Extensie - -Category -Categorie - -Action -Acțiune - -Local comparison settings -Setările locale de comparare - -Local synchronization settings -Setările locale de sincronizare - -Local filter -Filtru Local - -Active -Activă - -None -Nimic - -Remove local settings -Înlătură setările locale - -Clear local filter -Curăță filtrul local - -Copy -Copiază - -Paste -Lipește - -The selected folder %x cannot be used with FreeFileSync. -Dosarul selectat %x nu poate fi folosit cu FreeFileSync. - -Please select a folder on a local file system, network or an MTP device. -Selectează un dosar de pe un sistem de file local, din rețea sau de pe un dispozitiv MTP (dispozitiv media portabil). - -Defined by context of use -Definit de contextul utilizării - -Requires FreeFileSync Donation Edition -Necesită FreeFileSync Ediția pentru Donatori - -&Save -&Salvează - -Save as &batch job... -Salvea&ză ca Sarcină Set... - -Show &log -Arată &Jurnalul - -Start &comparison -Pornește &Compararea - -C&omparison settings -Setările C&omparării - -&Filter settings -Setările &Filtrării - -S&ynchronization settings -Setările Sincroni&zării - -Start &synchronization -Pornește &Sincronizarea - -&Actions -&Acțiuni - -&Preferences -&Preferințe - -&Language -&Limbă - -&Find... -&Găsește... - -&Export file list... -&Exportă Lista de File... - -&Reset layout -&Resetează Aspectul Grafic - -&Tools -&Unelte - -&Check for updates now -&Caută Actualizări Acum - -Check &automatically once a week -Caută Actualizări &Automat Săptămînal - -Cancel -Anulează - -Compare -Compară - -Synchronize -Sincronizează - -Add folder pair -Adaugă Pereche Nouă de Dosare - -Remove folder pair -Înlătură Perechea de Dosare - -Access online storage -Accesează stocarea de pe internet [online] - -Close search bar -Închide bara de căutare - -Find: -Găsește: - -Match case -Potrivește cu caseta literelor (MAJ/min) - -Processed: -Procesat: - -Remaining: -Rămas: - -New -Nouă - -Open... -Deschide... - -Save -Salvează - -Save as... -Salvează ca... - -View type: -Tipul Vederii: - -Select view: -Selectează Vederea: - -Save as default -Salvează ca implicit - -Statistics: -Statistici: - -Number of files and folders that will be deleted -Numărul de file și dosare care vor fi șterse - -Number of files that will be updated -Numărul filelor care vor fi actualizate - -Number of files and folders that will be created -Numărul de file și dosare care vor fi create - -Total bytes to copy -Numărul total de baiți copiați - -Arrange folder pair -Aranjează perechea de dosare - -Main settings: -Setările Principale: - -Use local settings: -Folosește setările locale: - -Select a variant: -Selectează o variantă: - -Include &symbolic links: -Include legăturile &simbolice: - -&Follow -&Prin urmărirea lor - -&Direct -&Direct - -More information -Mai multe informații - -&Ignore time shift [hh:mm] -&Ignoră decalajul temporal [hh:mm] - -List of file time offsets to ignore -Lista decalajelor temporale de ignorat - -Example: -Exemplu: - -Handle daylight saving time -Gestionarea timpului de vară (DST) - -Ignore errors -Ignoră erorile - -Retry count: -Numărul reîncercărilor: - -Delay (in seconds): -Întîrziere (în secunde): - -Performance improvements: -Îmbunătățiri de Performanță: - -Parallel file operations: -Operațiuni paralele cu file: - -How to get best performance? -Cum obții cea mai bună performanță? - -Local settings: -Setări Locale: - -Include: -Incluse: - -Show examples -Arată exemple - -Select filter rules to exclude certain files from synchronization. Enter file paths relative to their corresponding folder pair. -Selectează regulile filtrului pentru a exclude anumite file de la sincronizare. Introdu căile filelor relative la perechea lor de dosare corespondentă. - -File size: -Mărimea Filei: - -Minimum: -Minim: - -Maximum: -Maxim: - -Time span: -Intervalul de Timp: - -C&lear -C&urăță - -Detect moved files -Detectează filele mutate - - -- Not supported by all file systems -- Requires and creates database files -- Detection not available for first sync - - -- Nesuportat de toate sistemele de file -- Necesită și creează file cu bază de date -- Detectarea nu-i disponibilă la prima sincronizare - - -Delete files: -Ștergerea Filelor: - -&Recycle bin -&Reciclator - -&Permanent -&Definitivă - -&Versioning -&Versionare - -Move files to a user-defined folder -Mută filele într-un dosar stabilit de utilizator - -Naming convention: -Convenție de numire: - -Limit file versions: -Limitează versiunile filelor: - -Last x days: -Ultimele x zile: - -&Override default log path: -Ign&oră calea implicită a jurnalului: - -Run a command: -Rulează o comandă: - -OK -OK - -Connection type: -Tip de Conexiune: - -Connected user accounts: -Conturi de utilizator conectate: - -&Add connection -&Adaugă Conexiune - -&Disconnect -&Deconectează - -Selected user account: -Contul de utilizator selectat: - -Server name or IP address: -Numele Serverului sau Adresa IP: - -Port: -Port: - -Encryption: -Criptare: - -&Disabled -&Dezactivat - -&Explicit SSL/TLS -SSL/TLS &Explicit - -Authentication: -Autentificare: - -&Password -&Parolă - -&Key file -Filă C&heie - -&SSH agent -Agent &SSH - -User name: -Utilizator: - -Private key file: -Fila cu Cheia Privată: - -&Show password -&Arată parola - -Directory on server: -Dosarul de pe server: - -Access timeout (in seconds): -Timp de expirare a accesului (în sec.): - -SFTP channels per connection: -Canale SFTP per conexiune: - -Detect server limit -Detectează limita serverului - -Select Folder -Selectează Dosarul - -Variant: -Variantă: - -&Don't show this dialog again -Nu arăta acest &dialog din nou - -Bytes: -Baiți: - -Items: -Elemente: - -Synchronizing... -Sincronizare Aflată în Curs... - -Minimize to notification area -Minimizează în aria de notificare (sertar) - -Bytes -Baiți - -Items -Elemente - -When finished: -La terminare: - -Auto-close -Închide Automat - -Close -Închide - -&Pause -&Pauzează - -Stop -Oprește - -Create a batch file for unattended synchronization. To start, double-click this file or schedule in a task planner: %x -Creează o filă set [batch file] pentru sincronizarea neasistată. Pentru efectuarea sincronizării, dublu-clichează această filă sau programează rularea ei folosind un Planificator de Sarcini [Task Scheduler]: %x - -Progress dialog: -Dialogul Progresului: - -Run minimized -Rulează minimizat - -Show pop-up on errors or warnings -În caz de erori sau avertizări este arătată o fereastră popîc [popup] - -&Cancel -&Anulează - -Stop synchronization at first error -Oprește sincronizarea la prima eroare întîlnită - -How can I schedule a batch job? -Cum pot planifica o sarcină set? - -&Keep relative paths -&Păstrează căile relative - -&Overwrite existing files -&Suprascrie filele existente - -The following settings are used for all synchronization jobs. -Setările următoare sînt folosite pentru toate sarcinile de sincronizare. - - -Copy to a temporary file (*.ffs_tmp) before overwriting target. -This guarantees a consistent state even in case of a serious error. - - -Copiază într-o filă temporară (*.ffs_tmp) înainte de suprascrierea filei țintă. -Aceasta garantează consecvența stării filelor chiar și în cazul apariției de erori serioase. - - -recommended -recomandată - -Copy shared or locked files using the Volume Shadow Copy Service. -Filele partajate sau zăvorîte sînt copiate folosind Serviciul de Conservare a Volumelor din Windows [Volume Shadow Copy]. - -requires administrator rights -necesită drepturi de administrator - -Transfer file and folder permissions. -Sînt transferate și permisiunile de accesare NTFS ale filelor și dosarelor (Atenție: doar pentru utilizatorii avansați!). - -Show all permanently hidden dialogs and warning messages again -Sînt arătate din nou dialogurile și mesajele de eroare care au fost ascunse permanent - -Default log path: -Calea implicită a jurnalului: - -&Delete logs after x days: -Șter&ge jurnalul după x zile: - -Notification sounds: -Sunete de notificare: - -Synchronization finished: -Sincronizare terminată: - -Customize context menu: -Personalizează meniul contextual: - -Description -Descriere - -&Default -Coloanele &Implicite - -Feedback and suggestions are welcome: -Părerile și sugestiile sînt binevenite: - -Home page -Pagina Sitului - -FreeFileSync Forum -Forumul FreeFileSync - -Email -Adresa Autorului - -If you like FreeFileSync: -Donează pentru FreeFileSync: - -Support with a donation -Sprijină cu o donație - -The auto updater was disabled by the administrator. -Actualizatorul automat a fost dezactivat de administrator. - -Donation details -Detaliile Donăriii - -Source code written in C++ using: -Cod sursă scris în C++ folosind: - -Published under the GNU General Public License: -Publicat sub Licența Publică Generală GNU: - -Many thanks for localization: -Multe mulțumiri pentru localizare: - -Activate the FreeFileSync Donation Edition by one of the following methods: -Activează FreeFileSync Ediția pentru Donatori prin una din următoarele metode: - -Activate via internet now: -Activatează prin internet acum: - -Activate online -Activatează prin internet [online] - -Retrieve an offline activation key from the following URL: -Preia o cheie de activare neconectată [offline] de la adresa următoare: - -&Copy to clipboard -&Copiază în cliplanșetă [clipboard] - -Enter activation key: -Introdu cheia de activare: - -Activate offline -Activează neconectat [offline] - -Highlight configurations that have not been run for more than the following number of days: -Evidențiază configurațiile care n-au fost rulate de mai multă vreme decît numărul de zile următor: - -FreeFileSync requires access rights to avoid "Operation not permitted" errors when synchronizing your data (e.g. Mail, Messages, Calendars). -FreeFileSync necesită drepturi de acces pentru a evita erorile de tip "Operație nepermisă" la sincronizarea datelor (de ex. la Mail, Mesaje, Calendare). - -Locate the FreeFileSync app -Localizează aplicația FreeFileSync - -Open Security && Privacy -Deschide Securitate și intimitate - -Click the lock to allow changes. -Clichează pe lacăt pentru a permite schimbările. - -Drag FreeFileSync into the panel. -Trage FreeFileSync în panou. - -Synchronization Settings -Setările Sincronizării - -Access Online Storage -Accesează Stocarea pe Internet - -Save as a Batch Job -Salvează ca Sarcină Set - -Delete Items -Șterge Elementele - -Copy Items -Copiază Elementele - -Options -Opțiuni - -Select Time Span -Selectează Intervalul de Timp - -Highlight Configurations -Evidențiază Configurațiile - -Grant Full Disk Access -Permite Acces complet la disc - -Info -Informații - -No log entries -Nu există intrări în jurnal - -Select all -Selectează Tot - -&Options -&Opțiuni - -Main Bar -Bara Principală - -Folder Pairs -Perechi de Dosare - -Find -Găsește - -View Settings -Setări de Vedere - -Configuration -Configurație - -Overview -Panoramă - -Swap sides -Schimbă compartimentele stîng și drept între ele - -Show "%x" -Arată "%x" - -&Show details -&Arată Detalii - -FreeFileSync %x is available! -FreeFileSync %x este disponibil! - -Local path not available for %x. -Calea locală nu este disponibilă pentru %x. - -Confirm -Confirmă - - -Do you really want to execute the command %y for one item? -Do you really want to execute the command %y for %x items? - - -Sigur vrei să execuți comanda %y pentru un element? -Sigur vrei să execuți comanda %y pentru %x elemente? -Sigur vrei să execuți comanda %y pentru %x de elemente? - - -&Execute -&Execută - -Set direction: -Setează Acțiunea ca în Icoana Alăturată: - -multiple selection -selectare multiplă - -&Include via filter: -&Include prin filtru: - -&Exclude via filter: -&Exclude prin filtru: - -Include temporarily -Include Temporar - -Exclude temporarily -Exclude Temporar - -&Synchronize selection -&Sincronizează Selecția - -&Copy to... -&Copiază în... - -&Delete -Șter&ge - -Show icons: -Arată Icoane: - -Small -Mici - -Medium -Medii - -Large -Mari - -Select time span... -Selectează Intervalul de Timp... - -Donation Edition -Ediția pentru Donatori - -Folder Comparison and Synchronization -Comparare și Sincronizare de Dosare - -Configuration saved -Configurație salvată - -FreeFileSync batch -Set FreeFileSync - -Do you want to save changes to %x? -Vrei să salvezi modificările făcute la %x? - -Never save &changes -Nu salva ni&ciodată modificările - -Do&n't save -&Nu salva - -%x cannot be renamed. -%x nu poate fi renumit. - -New name: -Nume nou: - -Rename Configuration -Renumește Configurația - -Configuration name must not be empty. -Numele configurației nu poate lipsi. - -&Rename... -&Renumește... - -Hide configuration -Ascunde Configurația - -Highlight... -Evidențiază... - -Clear filter -Curăță Filtrul - -Show files that exist on left side only -Arată filele care există doar în stînga - -Show files that exist on right side only -Arată filele care există doar în dreapta - -Show files that are newer on left -Arată filele din stînga mai noi decît cele din dreapta - -Show files that are newer on right -Arată filele din dreapta mai noi decît cele din stînga - -Show files that are equal -Arată elementele (file/dosare) identice - -Show files that are different -Arată elementele (file/dosare) diferite - -Show conflicts -Arată conflictele - -Show files that will be created on the left side -Arată elementele (file/dosare) care vor fi create în stînga - -Show files that will be created on the right side -Arată elementele (file/dosare) care vor fi create în dreapta - -Show files that will be deleted on the left side -Arată elementele (file/dosare) care vor fi șterse în stînga - -Show files that will be deleted on the right side -Arată elementele (file/dosare) care vor fi șterse în dreapta - -Show files that will be updated on the left side -Arată elementele (file/dosare) care vor fi actualizate în partea stîngă - -Show files that will be updated on the right side -Arată elementele (file/dosare) care vor fi actualizate în partea dreaptă - -Show files that won't be copied -Arată elementele (file/dosare) care nu vor fi copiate - -Show filtered or temporarily excluded files -Arată filele filtrate sau excluse temporar - -Filter -Filtrare - -All files are in sync -Toate filele sînt sincronizate - - -1 directory -%x directories - - -1 dosar -%x dosare -%x de dosare - - - -1 file -%x files - - -1 filă -%x file -%x de file - - - -Showing %y of 1 row -Showing %y of %x rows - - -Afișate: %y din 1 rînd -Afișate: %y din %x rînduri -Afișate: %y din %x de rînduri - - -Cannot find %x -Nu pot găsi %x - -Move up -Mută în Sus - -Move down -Mută în Jos - -Comma-separated values -Valori separate prin virgulă - -File list exported -Lista de file a fost exportată - -Searching for program updates... -Caut actualizări ale programului... - -Paused -Sincronizare Pauzată - -Stop requested... -Oprire cerută... - -Initializing... -Inițializez... - -Comparing content... -Compar conținutul... - -&Continue -&Continuă - -Progress -Progres - -Thank you, %x, for your donation and support! -Mulțumesc %x, pentru donație și sprijin! - -Connections -Conexiuni - -Recommended range: -Interval recomandat: - -Do you really want to disconnect from user account %x? -Sigur vrei să te deconectezi de la contul de utilizator %x? - -Password: -Parolă: - -Key passphrase: -Parola cheii: - -Please enter a file path. -Introdu calea filei. - - -Copy the following item to another folder? -Copy the following %x items to another folder? - - -Copiezi următorul element într-un alt dosar? -Copiezi următoarele %x elemente într-un alt dosar? -Copiezi următoarele %x de elemente într-un alt dosar? - - -Please enter a target folder. -Introdu un dosar țintă. - - -Do you really want to move the following item to the recycle bin? -Do you really want to move the following %x items to the recycle bin? - - -Sigur vrei să muți în Reciclator elementul următor? -Sigur vrei să muți în Reciclator următoarele %x elemente? -Sigur vrei să muți în Reciclator următoarele %x de elemente? - - -Move -Mută - - -Do you really want to delete the following item? -Do you really want to delete the following %x items? - - -Sigur vrei să ștergi definitiv elementul următor? -Sigur vrei să ștergi definitiv următoarele %x elemente? -Sigur vrei să ștergi definitiv următoarele %x de elemente? - - -Start to synchronize the selection? -Pornești sinconizarea selecției? - -Start synchronization now? -Pornesc sincronizarea acum? - -Copy DACL, SACL, Owner, Group -Copiază permisiunile DACL, SACL, Proprietar, Grup - -Integrate external applications into context menu. The following macros are available: -Comenzi pentru aplicații externe incluse în meniul contextual al softului. Sînt disponibile următoarele macrocomenzi: - -Full file or folder path -Calea completă a filei sau dosarului - -Parent folder path -Calea dosarului părinte - -Temporary local copy for SFTP and MTP storage -Copie locală temporară pentru stocarea SFTP sau MTP - -Parameters for opposite side -Parametrii pentru partea opusă - -Show hidden dialogs again -Arată din nou dialogurile ascunse - -All dialogs shown -Toate dialogurile arătate - -Downloading update... -Descarc actualizarea... - -Identify equal files by comparing modification time and size. -Filele identice sînt descoperite prin compararea timpului modificării și a mărimii lor. - -Identify equal files by comparing the file content. -Filele identice sînt descoperite prin compararea conținutului lor. - -Identify equal files by comparing their file size. -Filele identice sînt descoperite prin compararea mărimii lor. - -Identify and propagate changes on both sides. Deletions, moves and conflicts are detected automatically using a database. -Identifică și propagă modificările din ambele părți. Ștergerile, renumirile și conflictele sînt detectate automat, folosind o bază de date. - -Create a mirror backup of the left folder by adapting the right folder to match. -Creează o conservare [backup] în oglindă a dosarului stîng prin adaptarea dosarului drept pînă la potrivirea exactă cu cel stîng. - -Copy new and updated files to the right folder. -Copiază filele noi și cele actualizate în dosarul drept. - -Configure your own synchronization rules. -Reguli de sincronizare definite de utilizator pentru fiecare situație. - -Comparison -Comparare - -Synchronization -Sincronizare - -This week -Săptămîna asta - -This month -Luna asta - -This year -Anul ăsta - -Byte -Baiți - -KB -KB - -MB -MB - -Retain deleted and overwritten files in the recycle bin -Păstrează în Reciclator filele șterse sau suprascrise - -Delete and overwrite files permanently -Șterge și suprascrie filele în mod definitiv - -Replace -Înlocuiește - -Move files and replace if existing -Mută filele și înlocuiește-le pe cele existente - -Time stamp -Marcaj Temporal - -Move files into a time-stamped subfolder -Mută filele într-un dosar cu marcaj temporal - -File -Filă - -Append a time stamp to each file name -Adaugă un marcaj temporal la numele fiecărei file - -On completion: -La terminare: - -On errors: -La erori: - -On success: -La succes: - -Main config -Configurația Principală - -empty -gol - -Leave as unresolved conflict -Lasă ca conflict nerezolvat - -YYYY-MM-DD hhmmss -AAAA-LL-ZZ hhmmss - -Minimum version count must be smaller than maximum count. -Numărul minim al versiunii trebuie să fie mai mic decît numărul maxim. - -&Restore -&Restaurează - -Files -File - -Percentage -Procent - -Failed to retrieve update information. -N-am putut prelua informațiile despre actualizare. - -Automatic updates: -Actualizări Automate: - -Check for Program Updates -Caută Actualizări ale Programului - -Auto-update now or download manually from the FreeFileSync home page? -Actualizez automat acum sau descarci manual de pe situl softului FreeFileSync? - -&Auto-update -&Actualizează Automat - -&Home page -&Situl Softului - -Download now? -Vrei s-o descarci acum? - -&Download -&Descarcă - -FreeFileSync is up to date. -Ai deja ultima versiune de FreeFileSync. - -Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now? -Nu pot găsi pe internet numărul versiunii curente de FreeFileSync. O versiune mai nouă e probabil disponibilă. Vrei să verifici manual acum? - -&Check -&Verifică - -Consistency check failed for %x. -Verificarea consecvenței datelor a eșuat pentru %x. - -Installation was registered on a different operating system. -Instalarea a fost înregistrată pe un sistem de operare diferit. - -Failed to activate FreeFileSync Donation Edition. -N-am putut activa FreeFileSync Ediția pentru Donatori. - -Incorrect activation key. -Cheie de activare incorectă. - -Unable to register to receive system messages. -Nu pot înregistra softul pentru a primi mesaje de la sistemul de operare. - -The %x installation option is only available in the FreeFileSync Donation Edition. -Opțiunea de instalare %x e disponibilă doar pentru FreeFileSync Ediția pentru Donatori. - -Cannot find system function %x. -Nu pot găsi funcția de sistem %x. - -Unable to register device notifications for %x. -Nu pot înregistra notificările dispozitivului pentru %x. - -The file is locked by another process: -Fila este zăvorîtă [locked] de alt proces: - -Failed to determine file permission support for folder %x. -Eșec al determinării existenței suportului pentru permisiuni la dosarul %x. - -Cannot read security context of %x. -Nu pot citi contextul de securitate pentru %x. - -Cannot write security context of %x. -Nu pot scrie contextul de securitate pentru %x. - -Cannot read permissions of %x. -Nu pot citi permisiunile lui %x. - -Cannot copy permissions from %x to %y. -Nu pot copia permisiunile de pe %x pe %y. - -%x is not a regular directory name. -%x nu este un nume regulamentar de dosar. - -Cannot copy attributes from %x to %y. -Nu pot copia atributele de pe %x pe %y. - -%x TB -%x TB - -%x PB -%x PB - - -1 min -%x min - - -1 min -%x min -%x de min - - - -1 hour -%x hours - - -1 oră -%x ore -%x de ore - - -Cannot set privilege %x. -Nu pot seta privilegiul %x. - -Unable to suspend system sleep mode. -Nu pot suspenda modul de intrare în repaus [sleep] al sistemului. - -Cannot change process I/O priorities. -Nu pot schimba prioritățile I/O ale procesului. - -Checking recycle bin failed for folder %x. -Verificarea disponibilității Reciclatorului a eșuat pentru dosarul %x. - -Unable to shut down the system. -Nu pot închide sistemul. - -Prepare installation -Pregătirea Instalării - -Choose which components you want to install. -Alege ce componente vrei să instalezi. - -Select installation type: -Selectează tipul de instalare: - -Local -Locală - -Portable -Portabilă - -Save settings in %x -Salvează setările în %x - -Register FreeFileSync file extensions -Înregistrează extensiile de file FreeFileSync - -Create Explorer context menu entries -Creează intrări în meniul contextual al Exploratorului de File - -Save settings in installation directory -Salvează setările în dosarul de instalare - -Do not write to Registry -Nu scrie în Registru - -Just copy the files -Copiază doar filele - -Choose a directory for installation: -Alege un dosar pentru instalare: - -Create shortcuts: -Creează scurtături: - -Desktop -Birou [Desktop] - -Start Menu -Meniu de Start [Start Menu] - -Send To -Trimite La [Send To] - -Registering FreeFileSync file extensions -Înregistrez extensiile de file FreeFileSync - -Unregistering FreeFileSync file extensions -Dezînregistrez extensiile de file FreeFileSync - -FreeFileSync Configuration -Configurație FreeFileSync - -FreeFileSync Batch File -Filă Set [Batch] FreeFileSync - -FreeFileSync Synchronization Database -Bază de Date pentru Sincronizare FreeFileSync - -RealTimeSync Configuration -Configurație RealTimeSync - -Edit with FreeFileSync -Editează cu FreeFileSync - -Instead of an ad, here's an animal. -În loc de o publicitate, uite un animal. - -The FreeFileSync portable version cannot install into a subfolder of %x. -Versiunea portabilă de FreeFileSync nu poate fi instalată într-un subdosar al %x. - -Please choose the local installation type or select a different folder for installation. -Alege instalarea locală sau selectează un dosar diferit pentru instalare. - -Get the Donation Edition with bonus features and help keep FreeFileSync ad-free. -Obține Ediția pentru Donatori cu funcții suplimentare și ajută la menținerea FreeFileSync fără publicitate. - diff --git a/FreeFileSync/Build/Resources/Languages/russian.lng b/FreeFileSync/Build/Resources/Languages/russian.lng deleted file mode 100755 index 6c1836e4..00000000 --- a/FreeFileSync/Build/Resources/Languages/russian.lng +++ /dev/null @@ -1,2152 +0,0 @@ -
- Pусский - Fayzullin T.N. aka Svobodniy - ru_RU - flag_russia.png - 3 - n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<11 || n%100>14) ? 1 : 2 -
- -Cannot read file %x. -Невозможно прочитать файл %x. - - -Unexpected size of data stream. -Expected: %x bytes -Actual: %y bytes - - -Неожиданный размер потока данных. -Ожидаемый: %x байт -Фактический: %y байт - - -Cannot write file %x. -Невозможно записать файл %x. - -Cannot write permissions of %x. -Невозможно записать права доступа %x. - -Operation not supported between different devices. -Операция не поддерживается между различными устройствами. - -Cannot delete file %x. -Невозможно удалить файл %x. - -Cannot delete symbolic link %x. -Невозможно удалить символьную ссылку %x. - -Cannot delete directory %x. -Невозможно удалить папку %x. - -Cannot move file %x to %y. -Невозможно перенести файл %x в %y. - -Cannot copy symbolic link %x to %y. -Невозможно скопировать символьную ссылку %x в %y. - -Error Code %x -Код ошибки %x - -Cannot read directory %x. -Невозможно прочитать папку %x. - -Cannot write modification time of %x. -Невозможно записать время изменения файла %x. - -Cannot read file attributes of %x. -Невозможно прочитать атрибуты файла %x. - -Cannot create directory %x. -Невозможно создать папку %x. - -Cannot determine final path for %x. -Невозможно определить конечный путь для %x. - -Operation not supported by device. -Операция не поддерживается устройством. - -Cannot resolve symbolic link %x. -Невозможно разрешить символьную ссылку %x. - -Unable to move %x to the recycle bin. -Невозможно переместить %x в "Корзину". - -Authentication completed. -Аутентификация завершена. - -You may close this page now and continue with FreeFileSync. -Вы можете закрыть эту страницу сейчас и продолжить с FreeFileSync. - -Authentication failed. -Ошибка аутентификации. - -Unable to connect to %x. -Невозможно соединиться с %x. - -Cannot find %x. -Невозможно найти %x. - -The name %x is used by more than one item in the folder. -Имя %x используется более чем одним элементом в папке. - -Please authorize access to user account %x. -Пожалуйста, авторизуйте доступ к учетной записи пользователя %x. - -Cannot open file %x. -Невозможно открыть файл %x. - -The name %x is already used by another item. -Имя %x уже используется другим элементом. - -Cannot determine free disk space for %x. -Невозможно определить свободное место на диске для %x. - -Unable to disconnect from %x. -Невозможно отключиться от %x. - -Unable to access %x. -Невозможно получить доступ к %x. - -Failed to get information about server %x. -Не удалось получить информацию о сервере %x. - -Cannot monitor directory %x. -Невозможно отследить папку %x. - -Cannot find device %x. -Невозможно найти устройство %x. - -Cannot open directory %x. -Невозможно открыть папку %x. - -Unsupported item type. -Неподдерживаемый тип элемента. - -Incorrect command line: -Неверная командная строка: - -The server does not support authentication via %x. -Сервер не поддерживает аутентификацию с помощью %x. - -Required: -Требуется: - - -Operation timed out after 1 second. -Operation timed out after %x seconds. - - -Время ожидания соединения истекает через %x сукунду. -Время ожидания соединения истекает через %x сукунды. -Время ожидания соединения истекает через %x сукунд. - - - -Cannot wait on more than 1 connection at a time. -Cannot wait on more than %x connections at a time. - - -Невозможно обработать более %x соединения за раз. -Невозможно обработать более %x соединений за раз. -Невозможно обработать более %x соединений за раз. - - -Active connections: %x -Активные соединения: %x - -Failed to open SFTP channel number %x. -Не удалось открыть SFTP канал номер %x. - -Both sides have changed since last synchronization. -Со времени последней синхронизации с обеих сторон произошли изменения. - -Cannot determine sync-direction: -Невозможно определить направление синхронизации: - -No change since last synchronization. -Никаких изменений с последней синхронизации. - -The database entry is not in sync considering current settings. -Запись в базе данных не находится в состоянии синхронизации, учитывая текущие настройки. - -Setting default synchronization directions: Old files will be overwritten with newer files. -Настройка направления синхронизации по умолчанию: Старые файлы будут перезаписаны более новыми файлами. - -Creating file %x -Создание файла %x - -Creating folder %x -Создание папки %x - -Creating symbolic link %x -Создание символьной ссылки %x - -Moving file %x to the recycle bin -Перемещение файла %x в "Корзину" - -Moving folder %x to the recycle bin -Перемещение папки %x в "Корзину" - -Moving symbolic link %x to the recycle bin -Перемещение символьной ссылки %x в "Корзину" - -Deleting file %x -Удаление файла %x - -Deleting folder %x -Удаление папки %x - -Deleting symbolic link %x -Удаление символьной ссылки %x - -Checking recycle bin availability for folder %x... -Проверка доступности "Корзины" для папки %x... - -The recycle bin is not supported by the following folders. Deleted or overwritten files will not be able to be restored: -"Корзина" не поддерживает следующие папки. Удаленные или перезаписанные файлы будет невозможно восстановить: - -An exception occurred -Исключение произошло - -A left and a right directory path are expected after %x. -Левый и правый пути папок ожидаются после %x. - -Syntax error -Синтаксическая ошибка - -Cannot find file %x. -Невозможно найти файл %x. - -Error -Ошибка - -File %x does not contain a valid configuration. -Файл %x не содержит действительной конфигурации. - -The config file must not contain settings at directory pair level when directories are set via command line. -Конфигурационный файл не должен содержать настройки на уровне пар папок, когда папки задаются с помощью командной строки. - -Directories cannot be set for more than one configuration file. -Папки не могут быть установлены более чем в одном конфигурационном файле. - -Command line -Командная строка - -Syntax: -Синтаксис: - -config files: -конфигурационный файл: - -directory -папка - -global config file: -глобальный конфигурационный файл: - -Any number of FreeFileSync "ffs_gui" and/or "ffs_batch" configuration files. -Любое количество FreeFileSync "ffs_gui" и/или "ffs_batch" конфигурационных файлов. - -Any number of alternative directory pairs for at most one config file. -Любое количество альтернативных пар папок для не более одного конфигурационного файла. - -Open the selected configuration for editing only, without executing it. -Открыть выбранную конфигурацию только для редактирования, не выполняя ее. - -Path to an alternate GlobalSettings.xml file. -Путь к альтернативному файлу GlobalSettings.xml. - -Installation files are corrupted. Please reinstall FreeFileSync. -Установочные файлы повреждены. Переустановите FreeFileSync. - -Cannot find the following folders: -Невозможно найти следующие папки: - -The following folders do not yet exist: -Следующих папок еще не существует: - -The folders are created automatically when needed. -Папки создаются автоматически, когда это необходимо. - -The following folder paths differ in case. Please use a single form in order to avoid duplicate accesses. -У следующих путей папок различаются регистры. Пожалуйста, используйте одинаковый вид, чтобы избежать дублирования. - -Scanning: -Сканирую: - -Comparison finished: -Сравнение окончено: - - -1 item found -%x items found - - -%x элемент найден -%x элемента найдено -%x элементов найдено - - -Time elapsed: -Времени прошло: - -File %x has an invalid date. -Файл %x имеет недействительную дату. - -Date: -Дата: - -Files have the same date but a different size. -Файлы имеют одинаковую дату, но различаются по размеру. - -Size: -Размер: - -Content comparison was skipped for excluded files. -Сравнение содержания было пропущено для исключенных файлов. - -Items differ in attributes only -Элементы различаются только атрибутами - -Resolving symbolic link %x -Разрешение символьной ссылки %x - -Comparing content of files %x -Сравнение содержания файлов %x - -Generating file list... -Создание списка файлов... - -Fail-safe file copy -Отказоустойчивое копирование файла - -Enabled -Разрешено - -Disabled -Запрещено - -Copy locked files -Копирование заблокированных файлов - -Copy file access permissions -Копирование прав доступа к файлам - -File time tolerance -Допускаемая разница во времени изменения файла - -Run with background priority -Запустить с фоновым приоритетом - -Lock directories during sync -Блокировать папки во время синхронизации - -Verify copied files -Проверить скопированные файлы - -Using non-default global settings: -Использование нестандартных глобальных настроек: - -A folder input field is empty. -Поле ввода папки пустое. - -The corresponding folder will be considered as empty. -Соответствующая папка будет считаться пустой. - -Exclude: -Исключить: - -One base folder of a folder pair is contained in the other one. -Одна базовая папка из пары папок содержится в другой папке. - -The folder should be excluded from synchronization via filter. -Папка должна быть исключена из синхронизации с помощью фильтра. - -Calculating sync directions... -Расчет направлений синхронизации... - -Out of memory. -Недостаточно памяти. - -Show in Explorer -Показать в Проводнике - -Open with default application -Открыть с помощью приложения по умолчанию - -Browse directory -Обзор папок - -Database file %x is incompatible. -Файл базы данных %x несовместим. - -Initial synchronization: -Первоначальная синхронизация: - -Database file %x does not yet exist. -Файл базы данных %x еще не существует. - -Database file is corrupted: -Файл базы данных поврежден: - -Loading file %x... -Загрузка файла %x... - -The database files do not yet contain information about the last synchronization. -Файлы базы данных еще не содержат информацию о последней синхронизации. - -Saving file %x... -Сохранение файла %x... - -Searching for folder %x... -Поиск папки %x... - -Timeout while searching for folder %x. -Тайм-аут при поиске папки %x. - -Cannot get process information. -Невозможно получить информацию о процессе. - -Waiting while directory is locked: -Ожидание снятия блокировки с папки: - -Lock owner: -Источник блокировки: - -Detecting abandoned lock... -Обнаружение заброшенной блокировки... - - -1 sec -%x sec - - -%x секунда -%x секунды -%x секунд - - -Item exists on left side only -Элемент существует только на левой стороне - -Item exists on right side only -Элемент существует только на правой стороне - -Left side is newer -На левой стороне новее - -Right side is newer -На правой стороне новее - -Items have different content -Элемент имеют различное содержание - -Both sides are equal -Обе стороны равны - -Conflict/item cannot be categorized -Конфликт/элемент невозможно отнести к какой-либо категории - -Copy new item to left -Копировать новый элемент налево - -Copy new item to right -Копировать новый элемент направо - -Delete left item -Удалить элемент слева - -Delete right item -Удалить элемент справа - -Move file on left -Переместить файл налево - -Move file on right -Переместить файл направо - -Update left item -Обновить элемент слева - -Update right item -Обновить элемент справа - -Do nothing -Ничего не делать - -Update attributes on left -Обновление атрибутов слева - -Update attributes on right -Обновление атрибутов справа - -Error parsing file %x, row %y, column %z. -Ошибка при разборе файла %x, строка %y, колонка %z. - -Services -Службы - -Show All -Показать все - -Hide Others -Скрыть остальные - -Hide %x -Скрыть %x - -Quit %x -Выйти из %x - -Cannot set directory locks for the following folders: -Невозможно установить блокировки для следующих папок: - -Errors: -Ошибки: - -Warnings: -Предупеждения: - -Items processed: -Элементов обработано: - -Items remaining: -Элементов осталось: - -Total time: -Общее время: - -Warning -Внимание - -Stopped -Остановлено - -Cleaning up log files: -Очистка файлов журнала: - - -1 thread -%x threads - - -%x поток -%x потока -%x потоков - - -%x/sec -%x/с - -%x items -%x элемент(ов) - -Completed successfully -Выполнено успешно - -Completed with warnings -Выполнено с предупреждениями - -Completed with errors -Выполнено с ошибками - -Cannot access the Volume Shadow Copy Service. -Невозможно получить доступ к службе Теневого Копирования Тома. - -Please run the 64-bit version of FreeFileSync to create shadow copies on this system. -Пожалуйста, запустите 64-битную версию FreeFileSync, чтобы создать теневые копии на этой системе. - -Volume name %x is not part of file path %y. -Имя тома %x не является частью имени файла %y. - -File time and size -Дата и размер файла - -File content -Содержимое файла - -File size -Размер файла - -Two way -В обе стороны - -Mirror -Зеркало - -Update -Обновить - -Custom -Выборочно - -Multiple... -Различные варианты синхронизации... - -Cannot write file attributes of %x. -Невозможно записать атрибуты файла %x. - -%x and %y have different content. -%x и %y имеют разное содержание. - -Data verification error: -Ошибка верификации данных: - -Moving file %x to %y -Перемещение файла %x в %y - -Moving folder %x to %y -Перемещение папки %x в %y - -Moving symbolic link %x to %y -Перемещение символьной ссылки %x в %y - -Updating file %x -Обновление файла %x - -Updating symbolic link %x -Обновление символьной ссылки %x - -Verifying file %x -Проверка файла %x - -Updating attributes of %x -Обновление атрибутов %x - -Source item %x not found -Исходный элемент %x не найден - -Parent folder %x is not existing. -Родительская папка %x не существует. - -Cannot copy file %x to %y. -Невозможно скопировать файл %x в %y. - -Creating a Volume Shadow Copy for %x... -Создание Тома Теневого Копирования для %x... - -Cannot find folder %x. -Невозможно найти папку %x. - -Target folder %x is already existing, but was not available during folder comparison. -Целевая папка %x уже существует, но не была доступна во время сравнения папок. - -Target folder input field must not be empty. -Поле ввода целевой папки не должно быть пустым. - -Source folder %x not found. -Исходная папка %x не найдена. - -Please enter a target folder for versioning. -Пожалуйста, введите целевую папку для архивирования файлов. - -The following items have unresolved conflicts and will not be synchronized: -Следующие элементы имеют неурегулированные конфликты и не будут синхронизированы: - -Folder pair: -Пара папок: - -The following folders are significantly different. Please check that the correct folders are selected for synchronization. -Следующие папки значительно отличаются. Пожалуйста, проверьте, что выбраны правильные папки для синхронизации. - -Not enough free disk space available in: -Не достаточно свободного места в: - -Available: -Доступно: - -Some files will be synchronized as part of multiple base folders. -Некоторые файлы будут синхронизированы как часть нескольких базовых папок. - -To avoid conflicts, set up exclude filters so that each updated file is included by only one base folder. -Чтобы избежать конфликтов, настройте фильтры исключения, чтобы каждый обновленный файл включался только в одну базовую папку. - -Versioning folder: -Папка для архивирования файлов: - -Base folder: -Базовая папка: - -The versioning folder is contained in a base folder. -Папка для архивирования файлов находится в базовой папке. - -Synchronizing folder pair: -Синхронизация пары папок: - -Generating database... -Создание базы данных... - -Searching for old file versions: -Поиск старых версий файлов: - -Removing old file versions: -Удаление старых версий файлов: - -Unable to create time stamp for versioning: -Невозможно создать метку времени для архивирования файлов: - -Drag && drop -Drag && drop - -Select a folder -Выбрать папку - -&New -&Новая - -&Open... -&Открыть... - -Save &as... -Сохранить &как... - -E&xit -&Выход - -&File -&Файл - -&View help -&Справка - -&About -О &программе - -&Help -&Помощь - -Usage: -Инструкция: - -Select folders to watch. -Выберите папки для наблюдения. - -Enter a command line. -Введите командную строку. - -Press 'Start'. -Нажмите 'Старт'. - -To get started just import a "ffs_batch" file. -Для запуска просто импортируйте файл "ffs_batch". - -Folders to watch: -Папки для наблюдения: - -Add folder -Добавить папку - -Remove folder -Удалить папку - -Browse -Обзор - -Idle time (in seconds): -Время ожидания (в секундах): - -Idle time between last detected change and execution of command -Время ожидания между последним обнаруженным изменением и выполнением командной строки в секундах - -Command line: -Командная строка: - -&Hide console window -&Скрыть окно консоли - - -The command is triggered if: -- files or subfolders change -- new folders arrive (e.g. USB stick insert) - - -Команда выполняется, если: -- файлы или подпапки изменены -- появились новые папки (например, подключение переносного носителя) - - -Start -Старт - -About -О программе - -Build: %x -сборка %x - -All files -Все файлы - -Automated Synchronization -Автоматическая синхронизация - -The %x protocol does not support directory monitoring: -Протокол %x не поддерживает мониторинг папки: - -Directory monitoring active -Слежение за папками активировано - -Waiting until directory is available: -Ожидание доступа к папке: - -&Configure -&Настроить - -&Show error message -&Показать сообщение об ошибке - -&Quit -&Выход - -&Retry -&Повторить - - -1 byte -%x bytes - - -%x байт -%x байта -%x байт - - -%x MB -%x МБ - -%x KB -%x КБ - -%x GB -%x ГБ - -Loading... -Загрузка... - -Scanning... -Сканирование... - -configuration file -конфигурационный файл - -System: Sleep -Система: Спящий режим - -System: Shut down -Система: Завершение работы - -Nothing to synchronize -Ничего нет для синхронизации - -Executing command: -Выполнение команды: - -You can switch to FreeFileSync's main window to resolve this issue. -Вы можете переключиться на главное окно FreeFileSync для решения этой проблемы. - -&Don't show this warning again -Больше &не показывать это предупреждение - -&Ignore -&Игнорировать - -&Switch -&Переключить - -Switching to FreeFileSync's main window -Переключение на главное окно FreeFileSync - -Automatic retry -Автоматический повтор - -Ignore &all -Игнорировать &все - -Retrying operation... -Повторение операции... - -Serious Error -Серьезная ошибка - -Last session -Последняя сессия - -Today -сегодня - - -1 day -%x days - - -%x день -%x дня -%x дней - - -Name -Имя - -Last sync -Последняя синхронизация - -Log -Журнал - -Folder -Папка - -Symlink -Символьная ссылка - -Full path -Полный путь - -Relative path -Относительный путь - -Item name -Название элемента - -Size -Размер - -Date -Дата - -Extension -Расширение - -Category -Категория - -Action -Действие - -Local comparison settings -Локальные настройки сравнения - -Local synchronization settings -Локальные настройки синхронизации - -Local filter -Локальный фильтр - -Active -активный - -None -неактивный - -Remove local settings -Удалить локальные настройки - -Clear local filter -Очистить локальный фильтр - -Copy -Копировать - -Paste -Вставить - -The selected folder %x cannot be used with FreeFileSync. -Выделенная папка %x не может быть использована с FreeFileSync. - -Please select a folder on a local file system, network or an MTP device. -Пожалуйста, выберите папку в локальной файловой системе, сети или MTP устройстве. - -Defined by context of use -Определеяется контекстом использования - -Requires FreeFileSync Donation Edition -Требуется платная версия FreeFileSync - -&Save -&Сохранить - -Save as &batch job... -Сохранить как пакетное &задание... - -Show &log -Показать &журнал - -Start &comparison -Начать с&равнение - -C&omparison settings -Настройки сра&внения - -&Filter settings -Настройки &фильтра - -S&ynchronization settings -Настройки син&хронизации - -Start &synchronization -Начать с&инхронизацию - -&Actions -&Действия - -&Preferences -&Предпочтения - -&Language -&Язык - -&Find... -Н&айти... - -&Export file list... -&Экспортировать список файлов... - -&Reset layout -&Сбросить расположение - -&Tools -&Инструменты - -&Check for updates now -Проверить наличие &обновлений сейчас - -Check &automatically once a week -Проверять &автоматически раз в неделю - -Cancel -Отмена - -Compare -Сравнить - -Synchronize -Синхронизировать - -Add folder pair -Добавить пару папок - -Remove folder pair -Удалить пару папок - -Access online storage -Доступ к онлайн-хранилищу - -Close search bar -Закрыть строку поиска - -Find: -Найти: - -Match case -Учитывать регистр - -Processed: -Обработано: - -Remaining: -Осталось: - -New -Новая - -Open... -Открыть... - -Save -Сохранить - -Save as... -Сохранить как... - -View type: -Тип просмотра: - -Select view: -Выберите отображение: - -Save as default -Сохранить по умолчанию - -Statistics: -Статистика: - -Number of files and folders that will be deleted -Количество файлов и папок, которые будут удалены - -Number of files that will be updated -Количество файлов, которые будут обновлены - -Number of files and folders that will be created -Количество файлов и папок, которые будут созданы - -Total bytes to copy -Всего байт для копирования - -Arrange folder pair -Упорядочить пару папок - -Main settings: -Основные настройки: - -Use local settings: -Использовать локальные настройки: - -Select a variant: -Выберите вариант: - -Include &symbolic links: -Включая &символьные ссылки: - -&Follow -Пос&ледовательные - -&Direct -&Прямые - -More information -Больше информации - -&Ignore time shift [hh:mm] -&Игнорировать временной сдвиг [чч:мм] - -List of file time offsets to ignore -Список временных сдвигов файлов для игнорирования - -Example: -Пример: - -Handle daylight saving time -Ручной переход на летнее время - -Ignore errors -Игнорировать ошибки - -Retry count: -Число повторений: - -Delay (in seconds): -Задержка (в секундах): - -Performance improvements: -Повышение производительности: - -Parallel file operations: -Параллельные операции с файлами: - -How to get best performance? -Как получить лучшую производительность? - -Local settings: -Локальные настройки: - -Include: -Включить: - -Show examples -Показать примеры - -Select filter rules to exclude certain files from synchronization. Enter file paths relative to their corresponding folder pair. -Выберите правила фильтрации для исключения определенных файлов из синхронизации. Введите пути файлов относящиеся к соответствующим парам папок. - -File size: -Размер файла: - -Minimum: -Минимум: - -Maximum: -Максимум: - -Time span: -Промежуток времени: - -C&lear -&Очистить - -Detect moved files -Обнаруживать перемещенные файлы - - -- Not supported by all file systems -- Requires and creates database files -- Detection not available for first sync - - -- Не поддерживается всеми файловыми системами -- Требует и создает файлы баз данных -- Обнаружение не доступно для первой синхронизации - - -Delete files: -Удаление файлов: - -&Recycle bin -В "&Корзину" - -&Permanent -&Удалять безвозвратно - -&Versioning -&Архивировать - -Move files to a user-defined folder -Перемещать файлы в пользовательскую папку - -Naming convention: -Условие переименования: - -Limit file versions: -Ограничить версию файла: - -Last x days: -Последние x дней: - -&Override default log path: -&Изменить путь журнала по умолчанию: - -Run a command: -Выполнить команду: - -OK -OK - -Connection type: -Тип соединения: - -Connected user accounts: -Подключенные учетные записи пользователей: - -&Add connection -&Добавить соединение - -&Disconnect -&Отключить - -Selected user account: -Выбранная учетная запись пользователя: - -Server name or IP address: -Имя сервера или IP адрес: - -Port: -Порт: - -Encryption: -Шифрование: - -&Disabled -&Запрещено - -&Explicit SSL/TLS -&Явный SSL/TLS - -Authentication: -Аутентификация: - -&Password -&Пароль - -&Key file -&Файл ключа - -&SSH agent -SSH &агент - -User name: -Имя пользователя: - -Private key file: -Файл закрытого ключа: - -&Show password -П&оказать пароль - -Directory on server: -Папка на сервере: - -Access timeout (in seconds): -Тайм-аут доступа (в секундах): - -SFTP channels per connection: -Количество SFTP каналов на одно соединение: - -Detect server limit -Выявить лимит сервера - -Select Folder -Выберите папку - -Variant: -Вариант: - -&Don't show this dialog again -Больше &не показывать это окно - -Bytes: -Байт: - -Items: -Элементов: - -Synchronizing... -Синхронизация... - -Minimize to notification area -Свернуть в область уведомлений - -Bytes -Байт - -Items -Элементов - -When finished: -По завершении: - -Auto-close -Автоматически закрыть - -Close -Закрыть - -&Pause -&Пауза - -Stop -Остановить - -Create a batch file for unattended synchronization. To start, double-click this file or schedule in a task planner: %x -Создать файл пакетного задания для автоматической синхронизации. Для запуска дважды кликните этот файл или запланируйте в планировщике задач: %x - -Progress dialog: -Окно прогресса: - -Run minimized -Запустить свернутым - -Show pop-up on errors or warnings -Показывать всплывающие окна при ошибках и предупреждениях - -&Cancel -&Остановить - -Stop synchronization at first error -Остановить синхронизацию при первой ошибке - -How can I schedule a batch job? -Как запланировать пакетное задание? - -&Keep relative paths -&Сохранить относительные пути - -&Overwrite existing files -&Перезаписать существующие файлы - -The following settings are used for all synchronization jobs. -Следующие настройки используются для всех заданий синхронизации. - - -Copy to a temporary file (*.ffs_tmp) before overwriting target. -This guarantees a consistent state even in case of a serious error. - - -Копирование во временный файл (*.ffs_tmp) перед перезаписью целевого файла. -Это гарантирует целостность заменяемых файлов даже в случае возникновения серьезной ошибки. - - -recommended -рекомендуется - -Copy shared or locked files using the Volume Shadow Copy Service. -Копирование общих или заблокированных файлов с использованием службы Теневого Копирования Тома. - -requires administrator rights -требуются права администратора - -Transfer file and folder permissions. -Передача прав доступа к файлам/папкам. - -Show all permanently hidden dialogs and warning messages again -Показать все скрытые окна и сообщения с предупреждениями снова - -Default log path: -Путь журнала по умолчанию: - -&Delete logs after x days: -&Удаление журналов через x дней: - -Notification sounds: -Звуки уведомлений: - -Synchronization finished: -Синхронизация окончена: - -Customize context menu: -Кастомизация контекстного меню: - -Description -Описание - -&Default -&По умолчанию - -Feedback and suggestions are welcome: -Обратная связь и предложения приветствуются: - -Home page -Домашняя страница - -FreeFileSync Forum -Форум FreeFileSync - -Email -Почта - -If you like FreeFileSync: -Если Вам понравился FreeFileSync: - -Support with a donation -Помочь пожертвованием - -The auto updater was disabled by the administrator. -Автоматическое обновление было отключено администратором. - -Donation details -Детали оплаты - -Source code written in C++ using: -Исходный код написан на C++ с использованием: - -Published under the GNU General Public License: -Опубликовано в соответствии с GNU General Public License: - -Many thanks for localization: -Большое спасибо за перевод: - -Activate the FreeFileSync Donation Edition by one of the following methods: -Активировать платную версию FreeFileSync одним из следующих способов: - -Activate via internet now: -Активировать через интернет сейчас: - -Activate online -Активировать онлайн - -Retrieve an offline activation key from the following URL: -Получить автономный ключ активации со следующего URL-адреса: - -&Copy to clipboard -&Копировать в буфер обмена - -Enter activation key: -Введите ключ активации: - -Activate offline -Активировать в офлайн режиме - -Highlight configurations that have not been run for more than the following number of days: -Выделить конфигурации, которые не запускались больше указанного количества дней: - -FreeFileSync requires access rights to avoid "Operation not permitted" errors when synchronizing your data (e.g. Mail, Messages, Calendars). -FreeFileSync требует права доступа, чтобы избежать ошибки "Операция не разрешена" при синхронизации ваших данных (например, Почты, Сообщений, Календарей). - -Locate the FreeFileSync app -Найдите приложение FreeFileSync - -Open Security && Privacy -Откройте Защита и безопасность - -Click the lock to allow changes. -Нажмите на замок, чтобы разрешить изменения. - -Drag FreeFileSync into the panel. -Перетащите FreeFileSync на панель. - -Synchronization Settings -Настройки синхронизации - -Access Online Storage -Доступ к онлайн-хранилищу - -Save as a Batch Job -Сохранение пакетного задания - -Delete Items -Удаление элементов - -Copy Items -Копирование элементов - -Options -Настройки - -Select Time Span -Выбор промежутка времени - -Highlight Configurations -Выделение конфигураций - -Grant Full Disk Access -Предоставить Доступ к диску - -Info -Информация - -No log entries -Нет записей в журнале - -Select all -Выделить все - -&Options -&Настройки - -Main Bar -Главная панель - -Folder Pairs -Пары папок для синхронизации - -Find -Поиск - -View Settings -Настройки просмотра - -Configuration -Конфигурация - -Overview -Главная - -Swap sides -Поменять направление - -Show "%x" -Показать "%x" - -&Show details -&Показать детали - -FreeFileSync %x is available! -FreeFileSync %x доступен! - -Local path not available for %x. -Локальный путь не доступен для %x. - -Confirm -Подтвердить - - -Do you really want to execute the command %y for one item? -Do you really want to execute the command %y for %x items? - - -Вы действительно хотите выполнить команду %y для %x элемента? -Вы действительно хотите выполнить команду %y для %x элементов? -Вы действительно хотите выполнить команду %y для %x элементов? - - -&Execute -&Выполнить - -Set direction: -Выберите направление: - -multiple selection -групповое выделение - -&Include via filter: -&Включить через фильтр: - -&Exclude via filter: -&Исключить через фильтр: - -Include temporarily -Временно включить - -Exclude temporarily -Временно исключить - -&Synchronize selection -&Синхронизировать выделенное - -&Copy to... -&Копировать в... - -&Delete -&Удалить... - -Show icons: -Отображать иконки: - -Small -- маленькие - -Medium -- средние - -Large -- большие - -Select time span... -Выберите промежуток времени... - -Donation Edition -Платная версия - -Folder Comparison and Synchronization -Сравнение и синхронизация - -Configuration saved -Конфигурация сохранена - -FreeFileSync batch -Пакетное задание FreeFileSync - -Do you want to save changes to %x? -Вы хотите сохранить изменения в %x? - -Never save &changes -Никогда не сохранять &изменения - -Do&n't save -&Не сохранять - -%x cannot be renamed. -%x не может быть переименована. - -New name: -Новое имя: - -Rename Configuration -Переименовать конфигурацию - -Configuration name must not be empty. -Имя конфигурации не должно быть пустым. - -&Rename... -&Переименовать... - -Hide configuration -Удалить конфигурацию из списка - -Highlight... -Выделить... - -Clear filter -Очистить фильтр - -Show files that exist on left side only -Показать файлы, существующие только слева - -Show files that exist on right side only -Показать файлы, существующие только справа - -Show files that are newer on left -Показать файлы, которые новее слева - -Show files that are newer on right -Показать файлы, которые новее справа - -Show files that are equal -Показать одинаковые файлы - -Show files that are different -Показать различающиеся файлы - -Show conflicts -Показать конфликтующие файлы - -Show files that will be created on the left side -Показать файлы, которые будут созданы на левой стороне - -Show files that will be created on the right side -Показать файлы, которые будут созданы на правой стороне - -Show files that will be deleted on the left side -Показать файлы, которые будут удалены на левой стороне - -Show files that will be deleted on the right side -Показать файлы, которые будут удалены на правой стороне - -Show files that will be updated on the left side -Показать файлы, которые будут обновлены на левой стороне - -Show files that will be updated on the right side -Показать файлы, которые будут обновлены на правой стороне - -Show files that won't be copied -Показать файлы, которые не будут скопированы - -Show filtered or temporarily excluded files -Показать отфильтрованные или временно исключенные файлы - -Filter -Фильтр - -All files are in sync -Все файлы синхронизированы - - -1 directory -%x directories - - -%x папка -%x папки -%x папок - - - -1 file -%x files - - -%x файл -%x файла -%x файлов - - - -Showing %y of 1 row -Showing %y of %x rows - - -Показано %y из %x строки -Показано %y из %x строк -Показано %y из %x строк - - -Cannot find %x -Невозможно найти %x - -Move up -Переместить вверх - -Move down -Переместить вниз - -Comma-separated values -Значения, разделенные запятыми - -File list exported -Список файлов экспортирован - -Searching for program updates... -Проверка обновлений программы... - -Paused -Пауза - -Stop requested... -Запрошена остановка... - -Initializing... -Инициализация... - -Comparing content... -Сравнение содержания... - -&Continue -&Продолжить - -Progress -Прогресс - -Thank you, %x, for your donation and support! -Благодарим вас, %x, за пожертвование и поддержку! - -Connections -Соединения - -Recommended range: -Рекомендуемый диапазон: - -Do you really want to disconnect from user account %x? -Вы действительно хотите отключиться от учетной записи пользователя %x? - -Password: -Пароль: - -Key passphrase: -Ключ парольной фразы: - -Please enter a file path. -Пожалуйста, укажите путь к файлу. - - -Copy the following item to another folder? -Copy the following %x items to another folder? - - -Копировать следующий %x элемент в другую папку? -Копировать следующие %x элемента в другую папку? -Копировать следующие %x элементов в другую папку? - - -Please enter a target folder. -Пожалуйста, укажите папку назначения. - - -Do you really want to move the following item to the recycle bin? -Do you really want to move the following %x items to the recycle bin? - - -Вы точно хотите переместить следующий %x элемент в "Корзину"? -Вы точно хотите переместить следующие %x элемента в "Корзину"? -Вы точно хотите переместить следующие %x элементов в "Корзину"? - - -Move -Переместить - - -Do you really want to delete the following item? -Do you really want to delete the following %x items? - - -Вы точно хотите удалить следующий %x элемент? -Вы точно хотите удалить следующие %x элемента? -Вы точно хотите удалить следующие %x элементов? - - -Start to synchronize the selection? -Начать синхронизацию выделенного? - -Start synchronization now? -Начать синхронизацию сейчас? - -Copy DACL, SACL, Owner, Group -Копировать DACL, SACL, владелец, группа - -Integrate external applications into context menu. The following macros are available: -Интегрируйте внешние приложения в контекстное меню. Доступны следующие команды: - -Full file or folder path -Полный путь файла или папки - -Parent folder path -Путь родительской папки - -Temporary local copy for SFTP and MTP storage -Временная локальная копия для SFTP и MTP хранилища - -Parameters for opposite side -Параметры для противоположной стороны - -Show hidden dialogs again -Показать скрытые окна снова - -All dialogs shown -Все окна отображаются - -Downloading update... -Загрузка обновления... - -Identify equal files by comparing modification time and size. -Определять одинаковые файлы путем сравнения времени изменения и размера. - -Identify equal files by comparing the file content. -Определять одинаковые файлы путем сравнения содержания файла. - -Identify equal files by comparing their file size. -Определять одинаковые файлы путем сравнения размера файла. - -Identify and propagate changes on both sides. Deletions, moves and conflicts are detected automatically using a database. -Выявять и распространять изменения на обе стороны. Удаленные, перемещенные и конфликтующие файлы определяются автоматически с использованием базы данных. - -Create a mirror backup of the left folder by adapting the right folder to match. -Создавать зеркальную копию левой части, приводя правую часть в полное соответствие. - -Copy new and updated files to the right folder. -Копировать новые или обновленные файлы на правую сторону. - -Configure your own synchronization rules. -Настроить свои собственные правила синхронизации. - -Comparison -Сравнение - -Synchronization -Синхронизация - -This week -на этой неделе - -This month -последний месяц - -This year -последний год - -Byte -Байт - -KB -КБ - -MB -МБ - -Retain deleted and overwritten files in the recycle bin -Сохранять удаленные и перезаписанные файлы в "Корзине" - -Delete and overwrite files permanently -Удалять или перезаписывать файлы безвозвратно - -Replace -Без переименования - -Move files and replace if existing -Переместить файлы и заменить, если существуют - -Time stamp -Добавить метку времени - -Move files into a time-stamped subfolder -Переместить файлы в подпапку с меткой времени - -File -Файл - -Append a time stamp to each file name -Добавить метку времени для каждого имени файла - -On completion: -По завершению: - -On errors: -При ошибке: - -On success: -При успехе: - -Main config -Главная конфигурация - -empty -(папки не выбраны) - -Leave as unresolved conflict -Оставить как нерешенный конфликт - -YYYY-MM-DD hhmmss -ГГГГ-ММ-ДД ччммсс - -Minimum version count must be smaller than maximum count. -Минимальное количество версий должно быть меньше максимального количества версий. - -&Restore -&Восстановить - -Files -Файлы - -Percentage -Проценты - -Failed to retrieve update information. -Не удалось получить информацию об обновлении. - -Automatic updates: -Автоматические обновления: - -Check for Program Updates -Проверка обновления программы - -Auto-update now or download manually from the FreeFileSync home page? -Обновить автоматически сейчас или загрузить вручную с домашней страницы FreeFileSync? - -&Auto-update -&Автоматическое обновление - -&Home page -&Домашняя страница - -Download now? -Загрузить сейчас? - -&Download -&Загрузить - -FreeFileSync is up to date. -У Вас самая последняя версия FreeFileSync. - -Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now? -Невозможно найти номер текущей версии FreeFileSync в Интернете. Скорее всего имеется более новая версия. Проверить вручную сейчас? - -&Check -&Проверить - -Consistency check failed for %x. -Последовательная проверка не удалась для %x. - -Installation was registered on a different operating system. -Установка была зарегистрирована в другой операционной системе. - -Failed to activate FreeFileSync Donation Edition. -Не удалось активировать платную версию FreeFileSync. - -Incorrect activation key. -Недействительный ключ активации. - -Unable to register to receive system messages. -Невозможно зарегистрироваться для получения системных сообщений. - -The %x installation option is only available in the FreeFileSync Donation Edition. -%x опция установки доступна только в платной версии FreeFileSync. - -Cannot find system function %x. -Невозможно найти системную функцию %x. - -Unable to register device notifications for %x. -Не удалось зарегистрировать уведомления устройств для %x. - -The file is locked by another process: -Файл заблокирован другим процессом: - -Failed to determine file permission support for folder %x. -Не удалось определить поддержку разрешения файла для папки %x. - -Cannot read security context of %x. -Невозможно прочитать контекст безопасности %x. - -Cannot write security context of %x. -Невозможно записать контекст безопасности %x. - -Cannot read permissions of %x. -Невозможно прочитать права доступа %x. - -Cannot copy permissions from %x to %y. -Невозможно скопировать разрешения от %x к %y. - -%x is not a regular directory name. -%x не является обычным именем папки. - -Cannot copy attributes from %x to %y. -Невозможно скопировать атрибуты от %x к %y. - -%x TB -%x ТБ - -%x PB -%x ПБ - - -1 min -%x min - - -%x минута -%x минуты -%x минут - - - -1 hour -%x hours - - -%x час -%x часа -%x часов - - -Cannot set privilege %x. -Невозможно установить привилегии %x. - -Unable to suspend system sleep mode. -Невозможно приостановить режим сна системы. - -Cannot change process I/O priorities. -Невозможно изменить приоритет процесса. - -Checking recycle bin failed for folder %x. -Проверка "Корзины" не удалась для папки %x. - -Unable to shut down the system. -Невозможно завершить работу системы. - -Prepare installation -Подготовка установки - -Choose which components you want to install. -Выберите, какие компоненты вы хотите установить. - -Select installation type: -Выберите тип установки: - -Local -Локальная - -Portable -Портативная - -Save settings in %x -Сохранять настройки в %x - -Register FreeFileSync file extensions -Регистрирует расширения файлов FreeFileSync - -Create Explorer context menu entries -Создать пункты контекстного меню в Проводнике - -Save settings in installation directory -Сохраняет настройки в папке установки - -Do not write to Registry -Ничего не пишет в Реестр - -Just copy the files -Только копирует файлы - -Choose a directory for installation: -Выберите папку для установки: - -Create shortcuts: -Создать ярлыки: - -Desktop -на рабочем столе - -Start Menu -Начальное меню - -Send To -Отправить - -Registering FreeFileSync file extensions -Регистрация расширений файлов FreeFileSync - -Unregistering FreeFileSync file extensions -Удаление регистрации расширений файлов FreeFileSync - -FreeFileSync Configuration -Конфигурация FreeFileSync - -FreeFileSync Batch File -Файл пакетного задания FreeFileSync - -FreeFileSync Synchronization Database -База данных синхронизации FreeFileSync - -RealTimeSync Configuration -Конфигурация RealTimeSync - -Edit with FreeFileSync -Редактировать с помощью FreeFileSync - -Instead of an ad, here's an animal. -Вот вам картинка животного, вместо рекламы. - -The FreeFileSync portable version cannot install into a subfolder of %x. -Портативная версия FreeFileSync не может быть установлена в подпапку %x. - -Please choose the local installation type or select a different folder for installation. -Пожалуйста, выберите локальный тип установки или выберите другую папку для установки. - -Get the Donation Edition with bonus features and help keep FreeFileSync ad-free. -Приобретите платную версию FreeFileSync с бонусными функциями и помогите сохранить FreeFileSync свободным от рекламы. - diff --git a/FreeFileSync/Build/Resources/Languages/slovak.lng b/FreeFileSync/Build/Resources/Languages/slovak.lng deleted file mode 100755 index 8d24625e..00000000 --- a/FreeFileSync/Build/Resources/Languages/slovak.lng +++ /dev/null @@ -1,2149 +0,0 @@ -
- Slovenčina - LubosL - sk_SK - flag_slovakia.png - 3 - n==1 ? 0 : n>=2 && n<=4 ? 1 : 2 -
- -Cannot read file %x. -Nie je možné načítať súbor %x. - - -Unexpected size of data stream. -Expected: %x bytes -Actual: %y bytes - - -Neočakávana veľkosť dátového streamu. -Očakávané: %x b -Aktuálne: %y b - - -Cannot write file %x. -Nie je možné zapísať súbor %x. - -Cannot write permissions of %x. -Nie je možné zapísať oprávnenie pre %x. - -Operation not supported between different devices. -Operácia nie je podporovaná medzi rôznymi zariadeniami. - -Cannot delete file %x. -Nie je možné zmazať súbor %x. - -Cannot delete symbolic link %x. -Nie je možné zmazať symbolický odkaz %x. - -Cannot delete directory %x. -Nie je možné zmazať adresár %x. - -Cannot move file %x to %y. -Nie je možné presunúť súbor %x do %y. - -Cannot copy symbolic link %x to %y. -Nie je možné kopírovať symbolický odkaz %x do %y. - -Error Code %x -Chybový kód %x - -Cannot read directory %x. -Nie je možné načítať adresár %x. - -Cannot write modification time of %x. -Nie je možné zmeniť atribút času zmeny pre %x. - -Cannot read file attributes of %x. -Nie je možné načítať atribúty súboru %x. - -Cannot create directory %x. -Nie je možné vytvoriť adresár %x. - -Cannot determine final path for %x. -Nie je možné určiť konečnú cestu pre %x. - -Operation not supported by device. -Operácia nie je podporovaná zariadením. - -Cannot resolve symbolic link %x. -Nie je možné nájsť odkaz zástupcu %x. - -Unable to move %x to the recycle bin. -Nie je možné presunúť %x do Koša. - -Authentication completed. -Overenie dokončené. - -You may close this page now and continue with FreeFileSync. -Teraz môžete zavrieť túto stránku a pokračovať s FreeFileSync. - -Authentication failed. -Overenie neúspešné. - -Unable to connect to %x. -Nie je možné vytvoriť pripojenie k %x. - -Cannot find %x. -Nie je možné nájsť %x. - -The name %x is used by more than one item in the folder. -Názov %x sa používa pre viacero položiek priečinka. - -Please authorize access to user account %x. -Prosím autorizujte prístup pre užívateľský účet %x. - -Cannot open file %x. -Nie je možné otvoriť súbor %x. - -The name %x is already used by another item. -Názov %x sa už používa pre inú položku. - -Cannot determine free disk space for %x. -Nie je možné zistiť voľné miesto na disku %x. - -Unable to disconnect from %x. -Nepodarilo sa odpojiť z %x. - -Unable to access %x. -Nie je možný prístup k %x. - -Failed to get information about server %x. -Získanie informácií o servere %x bolo neúspešné. - -Cannot monitor directory %x. -Nie je možné nastaviť monitorovanie adresára %x. - -Cannot find device %x. -Nie je možné nájsť zariadenie %x. - -Cannot open directory %x. -Nie je možné otvoriť adresár %x. - -Unsupported item type. -Nepodporovaný typ. - -Incorrect command line: -Neplatný príkaz: - -The server does not support authentication via %x. -Server nepodporuje overenie pomocou %x. - -Required: -Požadované: - - -Operation timed out after 1 second. -Operation timed out after %x seconds. - - -Vypršal čas 1 sekunda pre dokončenie operácie. -Vypršal čas %x sekundy pre dokončenie operácie. -Vypršal čas %x sekúnd pre dokončenie operácie. - - - -Cannot wait on more than 1 connection at a time. -Cannot wait on more than %x connections at a time. - - -Nie je možné čakať na viac ako 1 pripojenie naraz. -Nie je možné čakať na viac ako %x pripojenia naraz. -Nie je možné čakať na viac ako %x pripojení naraz. - - -Active connections: %x -Aktívne pripojenie: %x. - -Failed to open SFTP channel number %x. -Nie je možné otvoriť SFTP kanál číslo %x. - -Both sides have changed since last synchronization. -Od poslednej synchronizácie došlo ku zmene obidvoch strán. - -Cannot determine sync-direction: -Nie je možné určit smer synchronizácie: - -No change since last synchronization. -Žiadne zmeny od poslednej synchronizácie. - -The database entry is not in sync considering current settings. -Databázové položky nie sú podľa aktuálnej konfigurácie synchronné. - -Setting default synchronization directions: Old files will be overwritten with newer files. -Je nastavený predvolený spôsob synchronizácie: Staré súbory budú nahradené novými. - -Creating file %x -Vytváranie súboru %x - -Creating folder %x -Vytváranie priečinka %x - -Creating symbolic link %x -Vytváranie symbolického odkazu %x - -Moving file %x to the recycle bin -Presúvanie súboru %x do Koša - -Moving folder %x to the recycle bin -Presúvanie priečinka %x do Koša - -Moving symbolic link %x to the recycle bin -Presúvanie symbolického odkazu %x do Koša - -Deleting file %x -Zmazanie súboru %x - -Deleting folder %x -Zmazanie priečinka %x - -Deleting symbolic link %x -Zmazanie symbolického odkazu %x - -Checking recycle bin availability for folder %x... -Kontrola Koša pre priečinok %x... - -The recycle bin is not supported by the following folders. Deleted or overwritten files will not be able to be restored: -Premiestnenie do Koša nie je možné pri nasledujúcich priečinkoch. Zmazané alebo prepísané súbory nebude možné obnoviť: - -An exception occurred -Vyskytla sa chyba - -A left and a right directory path are expected after %x. -Bude očakávaná pravá a ľavá adresárová cesta po %x. - -Syntax error -Chyba syntaxu - -Cannot find file %x. -Nie je možné nájsť súbor %x. - -Error -Chyba - -File %x does not contain a valid configuration. -Súbor %x neobsahuje platnú konfiguráciu. - -The config file must not contain settings at directory pair level when directories are set via command line. -Konfiguračný súbor nesmie obsahovať nastavenia na úrovni adresárových párov pokiaľ je zadány cez príkazový riadok. - -Directories cannot be set for more than one configuration file. -Adresáre nemôžu obsahovať viac ako jeden konfiguračný súbor. - -Command line -Príkazový riadok - -Syntax: -Syntax: - -config files: -konfiguračné súbory: - -directory -adresár - -global config file: -globálny konfiguračný súbor: - -Any number of FreeFileSync "ffs_gui" and/or "ffs_batch" configuration files. -Ľubovolný počet konfiguračných súborov FreeFileSync typu "ffs_gui" a/alebo "ffs_batch". - -Any number of alternative directory pairs for at most one config file. -Ľubovolný počet alternatívnych dvojíc adresárov na aspoň jednu konfiguráciu. - -Open the selected configuration for editing only, without executing it. -Otvoriť vybranú konfiguráciu na úpravu bez jej spustenia. - -Path to an alternate GlobalSettings.xml file. -Cesta k alternatívnemu súboru GlobalSettings.xml. - -Installation files are corrupted. Please reinstall FreeFileSync. -Inštalačný súbor je poškodený. Prosím preinštalujte FreeFileSync. - -Cannot find the following folders: -Nie je možné nájsť následujúce priečinky: - -The following folders do not yet exist: -Nasledujúce priečinky ešte neexistujú: - -The folders are created automatically when needed. -V prípade potrewby sa priečinky vytvoria automaticky. - -The following folder paths differ in case. Please use a single form in order to avoid duplicate accesses. -Nasledujúce cesty priečinkov sa líšia. Prosím použite jeden formulár, aby ste sa vyhli duplicitnému prístupu. - -Scanning: -Vyhľadávanie: - -Comparison finished: -Dokončilo sa porovnávanie: - - -1 item found -%x items found - - -Nájdená 1 položka -Nájdené %x položky -Nájdených %x položiek - - -Time elapsed: -Uplynulý čas: - -File %x has an invalid date. -Súbor %x má chybný dátum. - -Date: -Dátum: - -Files have the same date but a different size. -Súbory majú rovnaký dátum, ale rozdielnú veľkosť. - -Size: -Veľkosť: - -Content comparison was skipped for excluded files. -Porovnanie obsahu bolo vynechané pre vybrané súbory. - -Items differ in attributes only -Položky se lišia iba v atribútoch - -Resolving symbolic link %x -Nasledovať odkaz symbolického zástupcu %x - -Comparing content of files %x -Porovnávanie obsahu súborov %x - -Generating file list... -Vytváranie zoznamu súborov... - -Fail-safe file copy -Bezpečné kopírovanie súborov - -Enabled -Povolené - -Disabled -Zakázané - -Copy locked files -Kopírovať zamknuté súbory - -Copy file access permissions -Kopírovať prístupové oprávnenie súborov - -File time tolerance -Časová tolerancia súboru - -Run with background priority -Vykonať s prioritou na pozadí - -Lock directories during sync -Uzamknúť priečinky počas synchronizácie - -Verify copied files -Overiť skopírované súbory - -Using non-default global settings: -Použiť ne-predvolené globálne nastavenia: - -A folder input field is empty. -Nie je zadaná vstupný priečinok. - -The corresponding folder will be considered as empty. -Odpovedajúci priečinok bude považovaný za prázdny. - -Exclude: -Vynechať: - -One base folder of a folder pair is contained in the other one. -Jeden zo základných párov priečinkov je v obsahu druhej. - -The folder should be excluded from synchronization via filter. -Priečinok by mal byť vynechaný zo synchronizácie pomocou filtra. - -Calculating sync directions... -Príprava adresárov synchronizácie... - -Out of memory. -Nedostatok pracovnej pamäti. - -Show in Explorer -Zobraziť v Prieskumníkovi - -Open with default application -Otvoriť predvolenou aplikáciou - -Browse directory -Prechádzať adresár - -Database file %x is incompatible. -Databázy súbor %x je nekompatibilný. - -Initial synchronization: -Prvá synchronizácia: - -Database file %x does not yet exist. -Databázový súbor %x neexistuje. - -Database file is corrupted: -Databázový súbor je poškodený: - -Loading file %x... -Načítavanie súboru %x... - -The database files do not yet contain information about the last synchronization. -Databázový súbor ešte neobsahuje informácie o poslednej synchronizácií. - -Saving file %x... -Ukládanie súboru %x... - -Searching for folder %x... -Vyhľadávanie priečinka %x... - -Timeout while searching for folder %x. -Vypršal časový limit pre nájdenie priečinka %x. - -Cannot get process information. -Nie je možné získať informácie procesu. - -Waiting while directory is locked: -Čakanie na uzamknutie adresára: - -Lock owner: -Vlastník uzamknutia: - -Detecting abandoned lock... -Preverovanie uzamknutia... - - -1 sec -%x sec - - -1 sekunda -%x sekundy -%x sekúnd - - -Item exists on left side only -Položky existujúce iba vľavo - -Item exists on right side only -Položky existujúce iba vpravo - -Left side is newer -Ľavá strana je novšia - -Right side is newer -Pravá strana je novšia - -Items have different content -Obsah položiek je rozdielny - -Both sides are equal -Obe strany sú zhodné - -Conflict/item cannot be categorized -Konflikty/položky ktoré nemožno zaradiť - -Copy new item to left -Kopírovať novú položku doľava - -Copy new item to right -Kopírovať novou položku doprava - -Delete left item -Zmazať položku naľavo - -Delete right item -Zmazať položku napravo - -Move file on left -Presunúť súbor naľavo - -Move file on right -Presunúť súbor napravo - -Update left item -Aktualizovať ľavú položku - -Update right item -Aktualizovať pravú položku - -Do nothing -Nerobiť nič - -Update attributes on left -Aktualizovať atribúty naľavo - -Update attributes on right -Aktualizovať atribúty napravo - -Error parsing file %x, row %y, column %z. -Chyba spracovania súboru %x: na riadku %y v stĺpci %z. - -Services -Služby - -Show All -Zobraziť Všetko - -Hide Others -Skryť Ostatné - -Hide %x -Skryť %x - -Quit %x -Ukončiť %x - -Cannot set directory locks for the following folders: -Nie je možné nastaviť uzamknutie adresárov pre nasledujúce priečinky: - -Errors: -Chyby: - -Warnings: -Varovania: - -Items processed: -Spracovaných položiek: - -Items remaining: -Ostáva položiek: - -Total time: -Celkový čas: - -Warning -Varovanie - -Stopped -Zastavené - -Cleaning up log files: -Odstránenie log súborov: - - -1 thread -%x threads - - -1 proces -%x procesy -%x procesov - - -%x/sec -%x/sek - -%x items -%x položka - -Completed successfully -Dokončenie bolo úspešné - -Completed with warnings -Ukončené s varovaniami - -Completed with errors -Ukončené s chybami - -Cannot access the Volume Shadow Copy Service. -Nie je prístup k službe Tieňové kópie. - -Please run the 64-bit version of FreeFileSync to create shadow copies on this system. -Prosím spustite 64-bitovú verziu FreeFileSync, pre vytvorenie Tieň. kópie v tomto systéme. - -Volume name %x is not part of file path %y. -Názov disku %x nie je súčásťou cesty súboru %y. - -File time and size -Podľa času a veľkosti súboru - -File content -Podľa obsahu súboru - -File size -Podľa veľkosti súboru - -Two way -Obidve strany - -Mirror -Zrkadlenie - -Update -Aktualizácia - -Custom -Vlastné - -Multiple... -Rôzne... - -Cannot write file attributes of %x. -Nie je možné zapísať atribúty súboru %x. - -%x and %y have different content. -%x a %y majú odlišný obsah. - -Data verification error: -Chyba verifikácie údajov: - -Moving file %x to %y -Presúvanie súboru %x do %y - -Moving folder %x to %y -Presúvanie priečinka %x do %y - -Moving symbolic link %x to %y -Presúvanie symbolického odkazu %x do %y - -Updating file %x -Aktualizácia súboru %x - -Updating symbolic link %x -Aktualizácia symbolického odkazu %x - -Verifying file %x -Verifikácia súboru %x - -Updating attributes of %x -Aktualizácia atribútov súboru %x - -Source item %x not found -Zdrojová položka %x sa nenašla - -Parent folder %x is not existing. -Nadradený priečinok %x neexistuje. - -Cannot copy file %x to %y. -Nie je možné kopírovať súbor %x do %y. - -Creating a Volume Shadow Copy for %x... -Vytváranie Tieňovej kópie zväzkov pre %x... - -Cannot find folder %x. -Nie je možné nájsť priečinok %x. - -Target folder %x is already existing, but was not available during folder comparison. -Cielová zložka %x už existuje, ale nebola dostupná počas porovnávania súborov. - -Target folder input field must not be empty. -Cieľový priečinok nesmie byť prázdny. - -Source folder %x not found. -Zdrojový priečinok %x nie je možné nájsť. - -Please enter a target folder for versioning. -Prosím zadajte cieľový priečinok pre verzovanie. - -The following items have unresolved conflicts and will not be synchronized: -Následujúce položky majú nevyriešené konflikty a nebudú synchronizované: - -Folder pair: -Dvojica priečinkov: - -The following folders are significantly different. Please check that the correct folders are selected for synchronization. -Nasledujúce priečinky sa signifikantne líšia. Prosím overte, či sú vybrané správne priečinky pre synchronizáciu. - -Not enough free disk space available in: -Nedostatok miesta na disku: - -Available: -K dispozícií: - -Some files will be synchronized as part of multiple base folders. -Niektoré súbory budú synchronizované ako súčasť viacerých základných priečinkov. - -To avoid conflicts, set up exclude filters so that each updated file is included by only one base folder. -Pre zabránenie konfliktu, nastavte filter vylúčenia tak, aby bol každý súbor zahrnutý iba v jednom základnom priečinku. - -Versioning folder: -Priečinok verzovania: - -Base folder: -Základný priečinok: - -The versioning folder is contained in a base folder. -Priečinok pre verzovanie je obsiahnutý v základnom priečinku. - -Synchronizing folder pair: -Synchronizácia dvojice priečinkov: - -Generating database... -Vytváranie databázy... - -Searching for old file versions: -Vyhľadávanie starých verzií súborov: - -Removing old file versions: -Odstraňovanie starých verzií súborov: - -Unable to create time stamp for versioning: -Nie je možné vytvoriť časovú značku verzovania: - -Drag && drop -Pretiahni sem && pusť - -Select a folder -Vyberte priečinok - -&New -&Nový - -&Open... -&Otvoriť... - -Save &as... -Uložiť &ako... - -E&xit -U&končiť - -&File -&Súbor - -&View help -&Nápoveda (iba anglicky) - -&About -O &programe - -&Help -&Pomoc - -Usage: -Použitie: - -Select folders to watch. -Vyberte priečinok k sledovaniu. - -Enter a command line. -Zadajte príkazový riadok. - -Press 'Start'. -Stlačte 'Štart'. - -To get started just import a "ffs_batch" file. -Môžete načítať tiež konfiguračný súbor "ffs_batch". - -Folders to watch: -Sledované priečinka: - -Add folder -Pridať priečinok - -Remove folder -Odstrániť priečinok - -Browse -Prechádzať - -Idle time (in seconds): -Doba nečinnosti (v sekundách): - -Idle time between last detected change and execution of command -Doba nečinnosti medzi zistením poslednej zmeny a spustením príkazu - -Command line: -Príkazový riadok: - -&Hide console window -&Skryť okno konzoly - - -The command is triggered if: -- files or subfolders change -- new folders arrive (e.g. USB stick insert) - - -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) - - -Start -Štart - -About -O programe - -Build: %x -Verzia: %x - -All files -Všetky súbory - -Automated Synchronization -Automatická synchronizácia - -The %x protocol does not support directory monitoring: -Protokol %x nepodporuje monitorovanie adresárov: - -Directory monitoring active -Sledovanie adresárov je aktivne - -Waiting until directory is available: -Čaká sa, kým nie je k dispozícii adresár: - -&Configure -&Konfigurovať - -&Show error message -&Zobraziť chybové hlásenie - -&Quit -U&končiť - -&Retry -&Opakovať - - -1 byte -%x bytes - - -%x B -%x B -%x B - - -%x MB -%x MB - -%x KB -%x KB - -%x GB -%x GB - -Loading... -Načítanie... - -Scanning... -Vyhľadávanie... - -configuration file -konfiguračný súbor - -System: Sleep -Systém: Uspať - -System: Shut down -Systém: Vypnúť - -Nothing to synchronize -Nie je čo synchronizovať - -Executing command: -Vykonávaný príkaz: - -You can switch to FreeFileSync's main window to resolve this issue. -K odstráneniu tohoto problému sa môžete prepnúť do hlavného okna FreeFileSync. - -&Don't show this warning again -&Nezobrazovať znova toto varovanie - -&Ignore -&Ignorovať - -&Switch -&Prepnúť - -Switching to FreeFileSync's main window -Prepínanie do hlavného okna FreeFileSync - -Automatic retry -Automatické opakovanie - -Ignore &all -Ignorovať &všetky - -Retrying operation... -Opakovanie operácie... - -Serious Error -Závažná chyba - -Last session -Posledné sedenie - -Today -Dnes - - -1 day -%x days - - -1 deň -%x dni -%x dní - - -Name -Názov - -Last sync -Posledná synchronizácia - -Log -Záznam spracovania - -Folder -Priečinok - -Symlink -Symlink - -Full path -Plná cesta - -Relative path -Relatívna cesta - -Item name -Názov položky - -Size -Veľkosť - -Date -Dátum - -Extension -Prípona - -Category -Kategórie - -Action -Akcia - -Local comparison settings -Lokálne nastavenie porovnánia - -Local synchronization settings -Lokálne nastavenie synchronizácie - -Local filter -Lokálny filter - -Active -Zapnutý - -None -Žiadna - -Remove local settings -Zrušiť lokálne nastavenie - -Clear local filter -Vymazať lokálne nastavenie filtra - -Copy -Kopírovať - -Paste -Vložiť - -The selected folder %x cannot be used with FreeFileSync. -Vybraný priečinok %x nie je možné použíť s FreeFileSync. - -Please select a folder on a local file system, network or an MTP device. -Prosím vyberte priečinok v lokálnom súborovom systéme, sieti alebo multimediálnom zariadení. - -Defined by context of use -Definované podľa kontextu používania - -Requires FreeFileSync Donation Edition -Je potrebná FreeFileSync Donation Edition - -&Save -&Uložiť - -Save as &batch job... -Uložiť ako &dávku... - -Show &log -Zobraziť &log - -Start &comparison -Spustiť &porovnanie - -C&omparison settings -Nastavenia p&orovnania - -&Filter settings -Nastavenia &filtra - -S&ynchronization settings -Nastavenia s&ynchronizácie - -Start &synchronization -Spustiť &synchronizáciu - -&Actions -&Akcie - -&Preferences -&Predvoľby... - -&Language -&Jazyk - -&Find... -&Hľadať... - -&Export file list... -&Exportovať zoznam súborov... - -&Reset layout -&Obnoviť rozloženie - -&Tools -&Nastavenie - -&Check for updates now -&Skontrolovať aktualizácie teraz - -Check &automatically once a week -Kontrolovať &automaticky raz týždenne - -Cancel -Zrušiť - -Compare -Porovnanie - -Synchronize -Synchronizácia - -Add folder pair -Pridať priečinok pre porovnanie - -Remove folder pair -Odstrániť dvojicu priečinkov - -Access online storage -Prístup k online úložisku - -Close search bar -Zavrieť hľadanie - -Find: -Hľadať: - -Match case -Rozlišovať malé a veľké písmená - -Processed: -Spracované: - -Remaining: -Zostáva: - -New -Nový - -Open... -Otvoriť... - -Save -Uložiť - -Save as... -Uložiť ako... - -View type: -Typ zobrazenia: - -Select view: -Výber zobrazenia: - -Save as default -Uložiť ako predvolené - -Statistics: -Štatistika: - -Number of files and folders that will be deleted -Počet súborov a priečinkov k zmazaniu - -Number of files that will be updated -Počet súborov k aktualizácií - -Number of files and folders that will be created -Počet súborov a priečinkov k vytvoreniu - -Total bytes to copy -Celkový objem kopírovaných údajov - -Arrange folder pair -Usporiadať dvojicu priečinkov - -Main settings: -Hlavné nastavenia: - -Use local settings: -Použiť lokálne nastavenie: - -Select a variant: -Výber varianty: - -Include &symbolic links: -Aj &symbolické odkazy: - -&Follow -&Nasledovať - -&Direct -&Direktne - -More information -Viac informácií - -&Ignore time shift [hh:mm] -&Ignorovať časový posun [hh:mm] - -List of file time offsets to ignore -Zoznam ignorovaných časových posunov súborov - -Example: -Príklad: - -Handle daylight saving time -Používať letný čas - -Ignore errors -Ignorovať chyby - -Retry count: -Počet opakovaní: - -Delay (in seconds): -Oneskorenie (v sekundách): - -Performance improvements: -Zlepšenie výkonu: - -Parallel file operations: -Paralélne operácie súborov: - -How to get best performance? -Ako získať najlepší výkon: - -Local settings: -Lokálne Nastavenia: - -Include: -Zahrnúť: - -Show examples -Ukázať príklady - -Select filter rules to exclude certain files from synchronization. Enter file paths relative to their corresponding folder pair. -Nastavte pravidlá filtra pre vynechanie niekterých súborov zo synchronizácie. Zadávajte cesty súborov relativne k odpovedajúcej dvojici priečinkov. - -File size: -Veľkosť súboru: - -Minimum: -Od: - -Maximum: -Do: - -Time span: -Časová doba: - -C&lear -Vy&mazať - -Detect moved files -Detekcia presunutých súborov - - -- Not supported by all file systems -- Requires and creates database files -- Detection not available for first sync - - -- 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í - - -Delete files: -Zmazanie súborov: - -&Recycle bin -&Kôš - -&Permanent -&Trvale - -&Versioning -&Verzovanie - -Move files to a user-defined folder -Presunúť súbory do uživateľom zadaného priečinka - -Naming convention: -Pomenovanie: - -Limit file versions: -Limit súborových verzií: - -Last x days: -Posledných x dní: - -&Override default log path: -&Prepísať predvolenú cestu logu: - -Run a command: -Spustiť príkaz: - -OK -OK - -Connection type: -typ pripojenia: - -Connected user accounts: -Pripojené užívateľské účty: - -&Add connection -&Pridať pripojenie - -&Disconnect -&Odpojiť - -Selected user account: -Zvolený užívateľský účet: - -Server name or IP address: -Meno servera alebo jeho IP adresa: - -Port: -Port: - -Encryption: -Šifrovanie: - -&Disabled -&Zakázané - -&Explicit SSL/TLS -&Explicitné SSl/TLS - -Authentication: -Overenie: - -&Password -&Heslo - -&Key file -&Súbor kľúča - -&SSH agent -&SSH agent - -User name: -Uživateľské meno: - -Private key file: -Súbor súkromného kľúča: - -&Show password -&Zobraziť heslo - -Directory on server: -Adresár na servery: - -Access timeout (in seconds): -Čas prístupu (v sekundách): - -SFTP channels per connection: -SFTP kanály na pripojenie: - -Detect server limit -Zistiť limit serveru - -Select Folder -Výber priečinka - -Variant: -Varianta: - -&Don't show this dialog again -Tento dialog už &nezobrazovať - -Bytes: -Bajtov: - -Items: -Položky: - -Synchronizing... -Synchronizujem... - -Minimize to notification area -Minimalizovať do oznamovacej oblasti - -Bytes -Bytov - -Items -Položky - -When finished: -Po dokončení: - -Auto-close -Automaticky zavrieť - -Close -Zavrieť - -&Pause -&Pauza - -Stop -Zastaviť - -Create a batch file for unattended synchronization. To start, double-click this file or schedule in a task planner: %x -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 - -Progress dialog: -Dialóg procesu: - -Run minimized -Spustiť minimalizované - -Show pop-up on errors or warnings -Zobraziť hlásenie pri chybe alebo varovaní - -&Cancel -&Zrušiť - -Stop synchronization at first error -Ukončiť synchronizáciu pri prvej chybe - -How can I schedule a batch job? -Ako nastaviť spustenie dávky v Plánovači? - -&Keep relative paths -&Zachovať relatívnu cesty - -&Overwrite existing files -&Prepísať existujúce súbory - -The following settings are used for all synchronization jobs. -Toto nastavenie je platné pre všetky synchronizačné úlohy. - - -Copy to a temporary file (*.ffs_tmp) before overwriting target. -This guarantees a consistent state even in case of a serious error. - -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. - -recommended -doporučené - -Copy shared or locked files using the Volume Shadow Copy Service. -Kopírovať zdielané alebo zamknuté súbory pomocou služby Tieňové kópie zväzkov. - -requires administrator rights -vyžadujú sa práva správcu - -Transfer file and folder permissions. -Preniesť prístupové oprávnenie súborov a priečinkov. - -Show all permanently hidden dialogs and warning messages again -Zobraziť znovu všetky trvale skryté dialógy a varovné hlásenia - -Default log path: -Predvolená cesta logu: - -&Delete logs after x days: -&Zmazať log po x dňoch: - -Notification sounds: -Zvuk oznámenia: - -Synchronization finished: -Synchronizácia dokončená: - -Customize context menu: -Prispôsobiť kontextovú ponuku: - -Description -Popis - -&Default -&Predvolené - -Feedback and suggestions are welcome: -Spätná väzba a návrhy sú vítané: - -Home page -Domovská stránka - -FreeFileSync Forum -FreeFileSync fórum - -Email -Email - -If you like FreeFileSync: -Pokiaľ sa Vám FreeFileSync páči: - -Support with a donation -Podporiť darom - -The auto updater was disabled by the administrator. -Automatická aktualizácia bola zakázaná správcom. - -Donation details -Detajly darovania - -Source code written in C++ using: -Zdrojový kód bol napísaný kompletne v C++ pomocou: - -Published under the GNU General Public License: -Publikované pod GNU General Public License: - -Many thanks for localization: -Poďakovanie za preklad FreeFileSync: - -Activate the FreeFileSync Donation Edition by one of the following methods: -aktivovať FreeFileSync Donation Edition pomocou jednej z nasledujúcich metód: - -Activate via internet now: -Aktivovať teraz cez internet: - -Activate online -Aktivovať online - -Retrieve an offline activation key from the following URL: -Získať offline aktivačný kľúč z URL adresy: - -&Copy to clipboard -&Skopírovať do schránky - -Enter activation key: -Zadať aktivačný kľúč: - -Activate offline -Aktivovať offline - -Highlight configurations that have not been run for more than the following number of days: -Zvýrazniť konfigurácie, ktoré neboli vykonané viac ako nasledujúci počet dní: - -FreeFileSync requires access rights to avoid "Operation not permitted" errors when synchronizing your data (e.g. Mail, Messages, Calendars). -FreeFileSync potrebuje povolenie pre prístup aby predišlo "Operácia nie je povolená" chybám počas synchronizácie dát (napr. Email, Správy, Kalendár). - -Locate the FreeFileSync app -Lokalizovať FreeFileSync aplikáciou - -Open Security && Privacy -Otvoriť Bezpečnosť a súkromie - -Click the lock to allow changes. -Pre povolenie zmien klikni na zámok. - -Drag FreeFileSync into the panel. -Potiahni FreeFileSync na panel. - -Synchronization Settings -Nastavenia synchronizácie - -Access Online Storage -Prístup k Online Storage - -Save as a Batch Job -Uložiť ako Batch Job - -Delete Items -Zmazať položky - -Copy Items -Kopírovať položky - -Options -Nastavenie programu - -Select Time Span -Zadať časové rozmedzie - -Highlight Configurations -Zvýrazniť konfigurácie - -Grant Full Disk Access -Povoliť plný prístup k disku - -Info -Info - -No log entries -Žiadne logy - -Select all -Vybrať všetko - -&Options -Nastavenie &programu - -Main Bar -Hlavná lišta - -Folder Pairs -Priečinkové dvojice - -Find -Hľadať - -View Settings -Nastavenie zobrazenia - -Configuration -Konfigurácia - -Overview -Prehľad - -Swap sides -Zámena strán - -Show "%x" -Zobraziť "%x" - -&Show details -&Zobraziť podrobnosti - -FreeFileSync %x is available! -Je dostupná FreeFileSync verzia %x! - -Local path not available for %x. -Lokálna cesta pre %x nie je k dispozícií. - -Confirm -Potvrdiť - - -Do you really want to execute the command %y for one item? -Do you really want to execute the command %y for %x items? - - -Naozaj chcete vykonať príkaz %y pre 1 položku? -Naozaj chcete vykonať príkaz %y pre %x položky? -Naozaj chcete vykonať príkaz %y pro %x položiek? - - -&Execute -&Spustiť - -Set direction: -Zadať smer: - -multiple selection -viacnásobný výber - -&Include via filter: -&Zahrnúť podľa filtru: - -&Exclude via filter: -&Vylúčiť podľa filtru: - -Include temporarily -Pridať dočasne - -Exclude temporarily -Vynechať dočasne - -&Synchronize selection -&Synchronizovať vybrané - -&Copy to... -&Kopírovať do... - -&Delete -&Zmazať - -Show icons: -Zobraziť ikony: - -Small -Malé - -Medium -Stredné - -Large -Veľké - -Select time span... -Zadajte časové rozmedzie... - -Donation Edition -Donation Edition - -Folder Comparison and Synchronization -Porovnanie a synchronizácia priečinkov - -Configuration saved -Konfigurácia uložená - -FreeFileSync batch -FreeFileSync dávka - -Do you want to save changes to %x? -Uložiť zmeny do %x? - -Never save &changes -Nikdy &neukladať zmeny - -Do&n't save -&Neukladať - -%x cannot be renamed. -%x nemôže byť premenované. - -New name: -Nový názov: - -Rename Configuration -Premenovať Konfiguráciu - -Configuration name must not be empty. -Názov konfigurácie nemôže zostať prázdny. - -&Rename... -&Premenovať... - -Hide configuration -Skryť konfiguráciu - -Highlight... -Zvýrazniť... - -Clear filter -Vymazať filter - -Show files that exist on left side only -Zobraziť súbory existujúce iba vľavo - -Show files that exist on right side only -Zobraziť súbory existujúce iba vpravo - -Show files that are newer on left -Zobraziť novšie súbory vľavo - -Show files that are newer on right -Zobraziť novšie súbory vpravo - -Show files that are equal -Zobraziť rovnaké súbory - -Show files that are different -Zobraziť rozdielne súbory - -Show conflicts -Zobraziť konflikty - -Show files that will be created on the left side -Zobraziť súbory, ktoré budú vľavo vytvorené - -Show files that will be created on the right side -Zobraziť súbory, ktoré budú vpravo vytvorené - -Show files that will be deleted on the left side -Zobraziť súbory, ktoré budú vľavo zmazané - -Show files that will be deleted on the right side -Zobraziť súbory, ktoré budú vpravo zmazané - -Show files that will be updated on the left side -Zobraziť súbory, ktoré budú vľavo aktualizované - -Show files that will be updated on the right side -Zobraziť súbory, ktoré budú vpravo aktualizované - -Show files that won't be copied -Zobraziť súbory, ktoré nebudú kopírované - -Show filtered or temporarily excluded files -Zobraziť filtrované alebo dočasne vynechané súbory - -Filter -Filter - -All files are in sync -Všetky súbory sú synchronizované - - -1 directory -%x directories - - -1 adresár -%x adresáre -%x adresárov - - - -1 file -%x files - - -1 súbor -%x súbory -%x súborov - - - -Showing %y of 1 row -Showing %y of %x rows - - -Zobrazenie %y z 1 riadku -Zobrazenie %y z %x riadky -Zobrazenie %y z %x riadkov - - -Cannot find %x -Nie je možné nájsť %x - -Move up -Dohora - -Move down -Dodola - -Comma-separated values -Hodnoty oddelené čiarkami - -File list exported -Zoznam súborov bol exportovaný - -Searching for program updates... -Hľadanie aktualizácií programu... - -Paused -Pauza - -Stop requested... -Zastavenie požiadavky... - -Initializing... -Inicializácia... - -Comparing content... -Porovnávanie obsahu... - -&Continue -&Pokračovať - -Progress -Priebeh - -Thank you, %x, for your donation and support! -Ďakujem, %x, za dar a podporu! - -Connections -Pripojenia - -Recommended range: -Odporúčaný rozsah: - -Do you really want to disconnect from user account %x? -Skutočne sa chcete odpojiť z užívateľského účtu %x? - -Password: -Heslo: - -Key passphrase: -Prístupová fráza: - -Please enter a file path. -Prosím zadajte cestu k súboru. - - -Copy the following item to another folder? -Copy the following %x items to another folder? - - -Kopírovať následujúcu položku do iného priečinka? -Kopírovať následujúce %x položky do iného priečinka? -Kopírovať následujúcich %x položiek do iného priečinka? - - -Please enter a target folder. -Prosím zadajte cieľový priečinok. - - -Do you really want to move the following item to the recycle bin? -Do you really want to move the following %x items to the recycle bin? - - -Naozaj chcete presunúť následujúcu položku do Koša? -Naozaj chcete presunúť následujúce %x položky do Koša? -Naozaj chcete presunúť následujúcich %x položiek do Koša? - - -Move -Presunúť - - -Do you really want to delete the following item? -Do you really want to delete the following %x items? - - -Naozaj chcete zmazať následujúcu položku? -Naozaj chcete zmazať následujúce %x položky? -Naozaj chcete zmazať následujúcich %x položiek? - - -Start to synchronize the selection? -Spustiť synchronyzáciu vybraných? - -Start synchronization now? -Spustiť synchronizáciu teraz? - -Copy DACL, SACL, Owner, Group -Kopírovať DACL, SACL, Owner, Group - -Integrate external applications into context menu. The following macros are available: -Integrácia externej aplikácie do kontextovéj ponuky. K dispozici jsou následující makrá: - -Full file or folder path -Úplná cesta k súboru alebo priečinku - -Parent folder path -Cesta k nadriadenému priečinku - -Temporary local copy for SFTP and MTP storage -Dočasná lokálna kópia pre SFTP a MTP úložisko - -Parameters for opposite side -Parametre pre protiľahlú stranu - -Show hidden dialogs again -Znovu zobraziť skryté dialógy - -All dialogs shown -Zobrazenie všetkých dialógov - -Downloading update... -Sťahovanie aktualizácie... - -Identify equal files by comparing modification time and size. -Rozpoznať rovnaké súbory porovnaním ich času úpravy a veľkosti. - -Identify equal files by comparing the file content. -Rozpoznať rovnaké súbory porovnaním ich obsahu. - -Identify equal files by comparing their file size. -Rozpoznať rovnaké súbory porovnaním ich veľkosti. - -Identify and propagate changes on both sides. Deletions, moves and conflicts are detected automatically using a database. -Rozpoznať a vykonať zmeny na oboch stranách. Odstránené, presunuté alebo premenované súbory a konflikty budú detekované automaticky pomocou databázy. - -Create a mirror backup of the left folder by adapting the right folder to match. -Vytvoriť zrkadlovú kópiu ľavého priečinka tak, aby po synchronizácií pravého priečinka presne odpovedal ľavému. - -Copy new and updated files to the right folder. -Kopírovať nové a aktualizované súbory do pravého priečinka. - -Configure your own synchronization rules. -Nastavenie vlastných pravidiel synchronizácie. - -Comparison -Porovnanie - -Synchronization -Synchronizácia - -This week -Tento týždeň - -This month -Tento mesiac - -This year -Tento rok - -Byte -Byte - -KB -KB - -MB -MB - -Retain deleted and overwritten files in the recycle bin -Ponechať zmazané a prepísané sobory v Koši - -Delete and overwrite files permanently -Zmazať a prepísať súbory natrvalo - -Replace -Nahradiť - -Move files and replace if existing -Presunúť a nahradiť súbory pokiaľ už existujú - -Time stamp -Časová značka - -Move files into a time-stamped subfolder -Presunúť súbory do podpriečinka s časovou značkou - -File -Súbor - -Append a time stamp to each file name -Pridať časovú značku ku každému názvu súboru - -On completion: -Po dokončení: - -On errors: -Pri chybách: - -On success: -Pri úspechu: - -Main config -Hlavná konfigurácia - -empty -prázdne - -Leave as unresolved conflict -Ponechať ako nevyriešený konflikt - -YYYY-MM-DD hhmmss -RRRR-MM-DD hhmmss - -Minimum version count must be smaller than maximum count. -Minimálny počet verzií musí byť menší ako maximálny počet. - -&Restore -&Obnoviť - -Files -Súbory - -Percentage -Percentný podiel - -Failed to retrieve update information. -Získanie informácie o aktualizácií bolo neúspešné. - -Automatic updates: -Automatická aktualizácia: - -Check for Program Updates -Hľadanie aktualizácií programu - -Auto-update now or download manually from the FreeFileSync home page? -Automaticky aktualizovať teraz alebo ručne z domovskej stránky FreeFileSync? - -&Auto-update -&Automatická aktualizácia - -&Home page -&Domovská stránka - -Download now? -Stiahúť teraz? - -&Download -&Sťahovannie - -FreeFileSync is up to date. -FreeFileSync je aktuálny. - -Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now? -Nie je možné nájsť online číslo verzie FreeFileSync. pravdepodobne je k dispozícií novšia verzia. Overiť teraz manuálne? - -&Check -&Kontrola - -Consistency check failed for %x. -Overenie konzistencie pre %x zlyhalo. - -Installation was registered on a different operating system. -Inštalácia bola registrovaná na inom operačnom systéme. - -Failed to activate FreeFileSync Donation Edition. -aktivácia FreeFileSync Donation Edition bola neúspešná. - -Incorrect activation key. -Neplatný aktivačný kľúč. - -Unable to register to receive system messages. -Nepodarilo sa registrovať k odberu systémových správ. - -The %x installation option is only available in the FreeFileSync Donation Edition. -Inštalačná možnosť %x je dostupná iba pri FreeFileSync Donation Edition. - -Cannot find system function %x. -Nie je možné nájsť systémovú funkciu %x. - -Unable to register device notifications for %x. -Nepodarilo sa registrovať správy zaiadenia %x. - -The file is locked by another process: -Súbor je uzamknutý iným procesom: - -Failed to determine file permission support for folder %x. -Nepodarilo sa načítať oprávnenia pre zložku %x. - -Cannot read security context of %x. -Nie je možné načítať prístupové práva pre %x. - -Cannot write security context of %x. -Nie je možné zapísať prístupové práva pre %x. - -Cannot read permissions of %x. -Nie je možné načítať oprávnenie pre %x. - -Cannot copy permissions from %x to %y. -Nie je možné kopírovať oprávnenie z %x do %y. - -%x is not a regular directory name. -%x nie je platným názvom adresára. - -Cannot copy attributes from %x to %y. -Nie je možné kopírovať atribúty z %x do %y. - -%x TB -%x TB - -%x PB -%x PB - - -1 min -%x min - - -1 minúta -%x minúty -%x minút - - - -1 hour -%x hours - - -1 hodina -%x hodiny -%x hodín - - -Cannot set privilege %x. -Nie je možné nastaviť práva pre %x. - -Unable to suspend system sleep mode. -Nie je možné pozastaviť Režím spánku. - -Cannot change process I/O priorities. -Nie je možné nastaviť I/O priority procesu. - -Checking recycle bin failed for folder %x. -Zlyhala kontrola Koša pre priečinok %x. - -Unable to shut down the system. -Systém sa nedá vypnúť. - -Prepare installation -Príprava inštalácie - -Choose which components you want to install. -Vyberte komponenty k inštalácií. - -Select installation type: -Vyberte typ inštalácie: - -Local -Lokálne - -Portable -Prenosná - -Save settings in %x -Uložiť nastavenia do %x - -Register FreeFileSync file extensions -Zaregistruje prípony súborov FreeFileSync - -Create Explorer context menu entries -Vytvoriť položky v kontextovej pnuke Prieskumníka - -Save settings in installation directory -Uložiť nastavenia do zložky inštalácie - -Do not write to Registry -Nezapisovať do Registrov - -Just copy the files -Skopíruje iba súbory - -Choose a directory for installation: -Vyberte zložku pre inštaláciu: - -Create shortcuts: -Vytvoriť zástupcu: - -Desktop -Plocha - -Start Menu -Ponuka Štart - -Send To -Odoslať kam - -Registering FreeFileSync file extensions -Zaregistrovať príponu súborov FreeFileSync - -Unregistering FreeFileSync file extensions -Odregistrovať príponu súborov FreeFileSync - -FreeFileSync Configuration -FreeFileSync konfigurácia - -FreeFileSync Batch File -Dávkový súbor FreeFileSync - -FreeFileSync Synchronization Database -Synchronizačná databáza FreeFileSync - -RealTimeSync Configuration -Konfigurácia RealTimeSync - -Edit with FreeFileSync -Upraviť vo FreeFileSync - -Instead of an ad, here's an animal. -Namiesto reklamy je tu obrázok zvieraťa. - -The FreeFileSync portable version cannot install into a subfolder of %x. -Prenosnú verziu FreeFileSync nie je možné inštalovať do podpriečinka %x. - -Please choose the local installation type or select a different folder for installation. -Prosím zvoľte lokálny typ inštalácie alebo vyberte iný priečinok pre inštaláciu. - -Get the Donation Edition with bonus features and help keep FreeFileSync ad-free. -Získajte Donation Edition s bonusovými funkciami a pomôžte udržať FreeFileSync bez reklám. - diff --git a/FreeFileSync/Build/Resources/Languages/slovenian.lng b/FreeFileSync/Build/Resources/Languages/slovenian.lng deleted file mode 100755 index 6e81849b..00000000 --- a/FreeFileSync/Build/Resources/Languages/slovenian.lng +++ /dev/null @@ -1,2168 +0,0 @@ -
- Slovenščina - dr.Vinko Kastelic - sl_SI - flag_slovenia.png - 4 - n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3 -
- -Cannot read file %x. -Ne morem prebrati datoteke %x. - - -Unexpected size of data stream. -Expected: %x bytes -Actual: %y bytes - - -Nepričakovana velikost toka podatkov. -Pričakovano: %x bajtov -Dejansko: %y bajtov - - -Cannot write file %x. -Ne morem zapisati datoteke %x. - -Cannot write permissions of %x. -Ne morem zapisati dovoljenj za %x. - -Operation not supported between different devices. -Operacija med različnimi napravami ni podprta. - -Cannot delete file %x. -Ne morem izbrisati datoteke %x. - -Cannot delete symbolic link %x. -Ne morem izbrisati simbolične povezave %x. - -Cannot delete directory %x. -Ne morem izbrisati imenika %x. - -Cannot move file %x to %y. -Ne morem premakniti datoteko %x v %y. - -Cannot copy symbolic link %x to %y. -Ne morem kopirati simbolične povezave %x v %y. - -Error Code %x -Napačna koda %x. - -Cannot read directory %x. -Ne morem prebrati direktorija %x. - -Cannot write modification time of %x. -Ne morem zapisati časa spremembe od %x. - -Cannot read file attributes of %x. -Ne morem brati datotečnih atributov od %x. - -Cannot create directory %x. -Ne morem ustvariti imenika %x. - -Cannot determine final path for %x. -Ne morem določiti končne poti za %x. - -Operation not supported by device. -Operacija z napravo ni podprta. - -Cannot resolve symbolic link %x. -Ne morem razrešiti simbolične povezave %x. - -Unable to move %x to the recycle bin. -Ne morem premakniti %x v koš. - -Authentication completed. -Preverjanje pristnosti končano. - -You may close this page now and continue with FreeFileSync. -To stran lahko zdaj zaprete in nadaljujete z FreeFileSync. - -Authentication failed. -Preverjanje pristnosti ni uspelo. - -Unable to connect to %x. -Ne morem povezati na %x. - -Cannot find %x. -Ne najdem %x. - -The name %x is used by more than one item in the folder. -Ime %x uporablja več kot ena postavka v mapi. - -Please authorize access to user account %x. -Odobrite dostop do uporabniškega računa %x. - -Cannot open file %x. -Ne morem odpreti datoteke %x. - -The name %x is already used by another item. -Ime %x že uporablja druga postavka. - -Cannot determine free disk space for %x. -Ne morem določiti prostega prostora na disku za %x. - -Unable to disconnect from %x. -Povezave z %x ni mogoče prekiniti. - -Unable to access %x. -Ne morem dostopati do %x. - -Failed to get information about server %x. -Ne morem pridobiti informacije o strežniku %x. - -Cannot monitor directory %x. -Ne morem nadzirati imenika %x. - -Cannot find device %x. -Ne najdem naprave %x. - -Cannot open directory %x. -Ne morem odpreti imenika %x. - -Unsupported item type. -Nepodprta vrsta postavke. - -Incorrect command line: -Napačna ukazna vrstica: - -The server does not support authentication via %x. -Strežnik ne podpira preverjanja pristnosti preko %x. - -Required: -Zahtevano: - - -Operation timed out after 1 second. -Operation timed out after %x seconds. - - -Operacija je potekla po %x sekundi. -Operacija je potekla po %x sekundah. -Operacija je potekla po %x sekundah. -Operacija je potekla po %x sekundah. - - - -Cannot wait on more than 1 connection at a time. -Cannot wait on more than %x connections at a time. - - -Ne morem čakati na več kot %x povezavo naenkrat. -Ne morem čakati na več kot %x povezavi naenkrat. -Ne morem čakati na več kot %x povezave naenkrat. -Ne morem čakati na več kot %x povezav naenkrat. - - -Active connections: %x -Aktivne povezave: %x - -Failed to open SFTP channel number %x. -Ne morem odpreti SFTP kanala številka %x. - -Both sides have changed since last synchronization. -Obe strani sta spremenjeni po zadnji sinhronizaciji. - -Cannot determine sync-direction: -Ne morem določiti sinhronizacijske smeri: - -No change since last synchronization. -Ni sprememb po zadnji sinhronizaciji. - -The database entry is not in sync considering current settings. -Vnos podatkovne zbirke ni sinhroniziran ob upoštevanju trenutnih nastavitev. - -Setting default synchronization directions: Old files will be overwritten with newer files. -Nastavitve privzetih smeri sinhronizacije: Stare datoteke bodo prepisane z novimi datotekami. - -Creating file %x -Ustvarjam datoteko %x - -Creating folder %x -Ustvarjam mapo %x - -Creating symbolic link %x -Ustvarjam simbolično povezavo %x - -Moving file %x to the recycle bin -Premikam datoteko %x v koš - -Moving folder %x to the recycle bin -Premikam mapo %x v koš - -Moving symbolic link %x to the recycle bin -Premikam simbolično povezavo %x v koš - -Deleting file %x -Brisanje datoteke %x - -Deleting folder %x -Brisanje mape %x - -Deleting symbolic link %x -Brisanje simbolične povezave %x - -Checking recycle bin availability for folder %x... -Preverjam razpoložljivost koša za mapo %x... - -The recycle bin is not supported by the following folders. Deleted or overwritten files will not be able to be restored: -Koš ne podpira sledečih map. Izbrisane ali prepisane datoteke ne bo mogoče obnoviti: - -An exception occurred -Prišlo je do izjeme - -A left and a right directory path are expected after %x. -Levo in desno pot imenika se pričakuje po %x. - -Syntax error -Sintaktična napaka - -Cannot find file %x. -Ne najdem datoteke %x. - -Error -Napaka - -File %x does not contain a valid configuration. -Datoteka %x ne vsebuje veljavnih nastavitev. - -The config file must not contain settings at directory pair level when directories are set via command line. -Konfiguracijska datoteka ne sme vsebovati nastavitev na ravni imeniških parov, ko so imeniki nastavljeni preko ukazne vrstice. - -Directories cannot be set for more than one configuration file. -Imenikov ni mogoče nastaviti za več kot eno nastavitveno datoteko. - -Command line -Ukazna vrstica - -Syntax: -Sintaksa: - -config files: -konfiguracijske datoteke: - -directory -imenik - -global config file: -datoteka z globalnimi konfiguracijami: - -Any number of FreeFileSync "ffs_gui" and/or "ffs_batch" configuration files. -Poljubno število FreeFileSync "ffs_gui" in/ali "ffs_batch" nastavitvenih datotek. - -Any number of alternative directory pairs for at most one config file. -Poljubno število alternativnih parov imenikov za največ eno nastavitveno datoteko. - -Open the selected configuration for editing only, without executing it. -Odprite izbrano nastavitev samo za urejanje, ne da bi jo izvedli. - -Path to an alternate GlobalSettings.xml file. -Pot do alternativne datoteke GlobalSettings.xml. - -Installation files are corrupted. Please reinstall FreeFileSync. -Namestitvena datoteka je poškodovana. Prosim ponovno naložite FreeFileSync. - -Cannot find the following folders: -Ne najdem naslednjih map: - -The following folders do not yet exist: -Naslednje mape še ne obstajajo: - -The folders are created automatically when needed. -Mape se samodejno ustvarijo po potrebi. - -The following folder paths differ in case. Please use a single form in order to avoid duplicate accesses. -Naslednje poti map se razlikujejo. Uporabite en obrazec, da se izognete podvojenim dostopom. - -Scanning: -Skeniranje: - -Comparison finished: -Primerjava je končana: - - -1 item found -%x items found - - -%x najdena postavka -%x najdeni postavki -%x najdene postavke -%x najdenih postavk - - -Time elapsed: -Pretečeni čas: - -File %x has an invalid date. -Datoteka %x ima neveljaven datum. - -Date: -Datum: - -Files have the same date but a different size. -Datoteke imajo isti datum toda različno velikost. - -Size: -Velikost: - -Content comparison was skipped for excluded files. -Primerjava vsebine je bila preskočena zaradi izključenih datotek. - -Items differ in attributes only -Postavke se razlikujejo samo po atributih - -Resolving symbolic link %x -Razrešujem simbolično povezavo %x - -Comparing content of files %x -Primerjam vsebino datotek %x - -Generating file list... -Ustvarjam seznam datotek... - -Fail-safe file copy -Pred napako varno kopiranje datotek - -Enabled -Omogočeno - -Disabled -Onemogočeno - -Copy locked files -Kopiraj zaklenjene datoteke - -Copy file access permissions -Kopiraj dovoljenja za dostop do datotek - -File time tolerance -Časovna toleranca datoteke - -Run with background priority -Zaženi s prioriteto v ozadju - -Lock directories during sync -Zakleni imenike med sinhronizacijo - -Verify copied files -Preveri kopirane datoteke - -Using non-default global settings: -Uporabljam neprivzete globalne nastavitve: - -A folder input field is empty. -Polje za vnos mape je prazno. - -The corresponding folder will be considered as empty. -Ustrezna mapa bo smatrana kot prazna. - -Exclude: -Izključi: - -One base folder of a folder pair is contained in the other one. -Osnovna mapa iz para map je vsebovana že v drugi mapi. - -The folder should be excluded from synchronization via filter. -Mapa mora biti izvzeta iz sinhronizacije z uporabo filtra. - -Calculating sync directions... -Izračunavam smeri sinhronizacije... - -Out of memory. -Ni dovolj pomnilnika. - -Show in Explorer -Prikaži v Raziskovalcu - -Open with default application -Odpri s privzeto aplikacijo - -Browse directory -Brskaj po imeniku - -Database file %x is incompatible. -Datoteka podatkovne baze %x je nekompatibilna. - -Initial synchronization: -Začetna sinhronizacija: - -Database file %x does not yet exist. -Datoteka podatkovne baze %x še ne obstaja. - -Database file is corrupted: -Datoteka v bazi podatkov je poškodovana: - -Loading file %x... -Nalagam datoteko %x... - -The database files do not yet contain information about the last synchronization. -Datoteke v bazi podatkov še ne vsebujejo informacije o zadnji sinhronizaciji. - -Saving file %x... -Shranjevanje datoteke %x... - -Searching for folder %x... -Iskanje mape %x... - -Timeout while searching for folder %x. -Čas je potekel med iskanjem datoteke %x. - -Cannot get process information. -Ne morem pridobiti informacij o procesu. - -Waiting while directory is locked: -Čakam dokler je imenik zaklenjen: - -Lock owner: -Lastnik zaklepa: - -Detecting abandoned lock... -Zaznavanje opuščenega zaklepa... - - -1 sec -%x sec - - -%x sek -%x sek -%x sek -%x sek - - -Item exists on left side only -Postavka obstaja samo na levi strani - -Item exists on right side only -Postavka obstaja samo na desni strani - -Left side is newer -Leva stran je novejša - -Right side is newer -Desna stran je novejša - -Items have different content -Postavke imajo različno vsebino - -Both sides are equal -Obe strani sta enaki - -Conflict/item cannot be categorized -Konflikt/postavka ni mogoče kategorizirati - -Copy new item to left -Kopiraj novo postavko na levo - -Copy new item to right -Kopiraj novo postavko na desno - -Delete left item -Izbriši postavko na levi strani - -Delete right item -Izbriši postavko na desni strani - -Move file on left -Premakni datoteko na levo stran - -Move file on right -Premakni datoteko na desno stran - -Update left item -Posodobi postavko na levi strani - -Update right item -Posodobi postavko na desni strani - -Do nothing -Ne naredi ničesar - -Update attributes on left -Posodobi atribute na levi strani - -Update attributes on right -Posodobi atribute na desni strani - -Error parsing file %x, row %y, column %z. -Napaka pri razčlenjevanju datoteke %x, vrstica %y, stolpec %z. - -Services -Storitve - -Show All -Pokaži vse - -Hide Others -Skrij druge - -Hide %x -Skrij %x - -Quit %x -Nehaj %x - -Cannot set directory locks for the following folders: -Ne morem nastaviti zaklepanje imenika za naslednje mape: - -Errors: -Napake: - -Warnings: -Opozorila: - -Items processed: -Obdelanih postavk: - -Items remaining: -Preostalih postavk: - -Total time: -Celoten čas: - -Warning -Opozorilo - -Stopped -Ustavljeno - -Cleaning up log files: -Čiščenje datotek dnevnika: - - -1 thread -%x threads - - -%x nit -%x niti -%x niti -%x niti - - -%x/sec -%x/sek - -%x items -%x postavk - -Completed successfully -Uspešno končano - -Completed with warnings -Dokončano z opozorili - -Completed with errors -Dokončano z napakami - -Cannot access the Volume Shadow Copy Service. -Ne morem dostopati do Volume Shadov Copy storitve. - -Please run the 64-bit version of FreeFileSync to create shadow copies on this system. -Prosimo, zaženite 64-bitno različico FreeFileSync za ustvarjanje senčnih kopij v tem sistemu. - -Volume name %x is not part of file path %y. -Ime nosilca %x ni del poti datoteke %y. - -File time and size -Čas in velikost datoteke - -File content -Vsebina datoteke - -File size -Velikost datoteke - -Two way -Dvosmerno - -Mirror -Zrcalno - -Update -Posodobi - -Custom -Po meri - -Multiple... -Večkratno... - -Cannot write file attributes of %x. -Ne morem zapisati datotečnih atributov od %x. - -%x and %y have different content. -%x in %y imata različno vsebino. - -Data verification error: -Napaka pri preverjanju podatkov: - -Moving file %x to %y -Premikam datoteko %x v %y - -Moving folder %x to %y -Premikam mapo %x v %y - -Moving symbolic link %x to %y -Premikam simbolično povezavo %x v %y - -Updating file %x -Posodabljanje datoteke %x - -Updating symbolic link %x -Posodabljanje simbolične povezave %x - -Verifying file %x -Preverjam datoteko %x - -Updating attributes of %x -Posodabljam atribute od %x - -Source item %x not found -Izvorna postavka %x ni bila najdena - -Parent folder %x is not existing. -Nadrejena mapa %x ne obstaja. - -Cannot copy file %x to %y. -Ne morem kopirati datoteke %x v %y. - -Creating a Volume Shadow Copy for %x... -Ustvarjam Volume Shadow Copy za %x... - -Cannot find folder %x. -Ne najdem mape %x. - -Target folder %x is already existing, but was not available during folder comparison. -Ciljna mapa %x že obstaja, toda med primerjanjem map ni bila na voljo. - -Target folder input field must not be empty. -Vnosno polje ciljnë mape ne sme biti prazno. - -Source folder %x not found. -Izvorne mape %x ni moč najti. - -Please enter a target folder for versioning. -Prosim vnesite ciljno mapo za označitev. - -The following items have unresolved conflicts and will not be synchronized: -Naslednje postavke imajo nerešene konflikte in ne bodo sinhronizirane: - -Folder pair: -Par map: - -The following folders are significantly different. Please check that the correct folders are selected for synchronization. -Naslednje mape so bistveno različne. Prosimo preverite, ali so izbrane pravilne mape za sinhroniziranje. - -Not enough free disk space available in: -Na voljo ni dovolj prostega prostora na disku v: - -Available: -Na voljo: - -Some files will be synchronized as part of multiple base folders. -Nekatere datoteke bodo sinhronizirane kot del večih osnovnih map. - -To avoid conflicts, set up exclude filters so that each updated file is included by only one base folder. -V izogib konfliktom, nastavite izključitev filtrov, tako da je vsaka posodobljena datoteka povezana samo z eno osnovno mapo. - -Versioning folder: -Označitev mape: - -Base folder: -Osnovna mapa: - -The versioning folder is contained in a base folder. -Mapa različic je vsebovana v osnovni mapi. - -Synchronizing folder pair: -Sinhroniziram parne mape: - -Generating database... -Ustvarjam podatkovno bazo... - -Searching for old file versions: -Iskanje starih različic datotek: - -Removing old file versions: -Odstranjevanje starejših različic datotek: - -Unable to create time stamp for versioning: -Časovnega žiga za oznčitev ni bilo mogoče ustvariti: - -Drag && drop -Povleci && spusti - -Select a folder -Izberite imenik - -&New -&Nova - -&Open... -&Odpri... - -Save &as... -Shr&ani kot... - -E&xit -I&zhod - -&File -&Datoteka - -&View help -&Prikaži pomoč - -&About -&Vizitka - -&Help -&Pomoč - -Usage: -Uporaba: - -Select folders to watch. -Izberite mape za opazovanje. - -Enter a command line. -Vnesite ukazno vrstico. - -Press 'Start'. -Pritisnite 'Začni'. - -To get started just import a "ffs_batch" file. -Če želite začeti, uvozite datoteko "ffs_batch". - -Folders to watch: -Mape za pregled: - -Add folder -Dodaj mapo - -Remove folder -Odstrani mapo - -Browse -Brskaj - -Idle time (in seconds): -Čas mirovanja (v sekundah): - -Idle time between last detected change and execution of command -Čas mirovanja med zadnjo zaznano spremembo in izvedbo ukaza - -Command line: -Ukazna vrstica: - -&Hide console window -&Skrij okno konzole - - -The command is triggered if: -- files or subfolders change -- new folders arrive (e.g. USB stick insert) - - -Ukaz se sproži če: -- se spremenijo datoteke ali podmape -- pojavijo nove mape (npr. ob vstavitvi USB ključka) - - -Start -Začni - -About -Vizitka - -Build: %x -Gradnja: %x - -All files -Vse datoteke - -Automated Synchronization -Samodejna sinhronizacija - -The %x protocol does not support directory monitoring: -Protokol %x ne podpira nadzora imenikov: - -Directory monitoring active -Nadzor imenikov je aktiven - -Waiting until directory is available: -Čakanje, da je imenik na voljo: - -&Configure -&Konfiguriraj - -&Show error message -&Prikaži sporočilo o napaki - -&Quit -&Zapri - -&Retry -&Ponovi - - -1 byte -%x bytes - - -%x bajt -%x bajta -%x bajti -%x bajtov - - -%x MB -%x MB - -%x KB -%x KB - -%x GB -%x GB - -Loading... -Nalagam... - -Scanning... -Skeniram... - -configuration file -konfiguracijska datoteka - -System: Sleep -Sistem: Spanje - -System: Shut down -Sistem: Izključi računalnik - -Nothing to synchronize -Nič za sinhroniziranje - -Executing command: -Izvedi ukaz: - -You can switch to FreeFileSync's main window to resolve this issue. -Če želite odpraviti to težavo, lahko preklopite na glavno okno FreeFileSync. - -&Don't show this warning again -&Ne prikazuj več tega opozorila - -&Ignore -&Prezri - -&Switch -&Preklopi - -Switching to FreeFileSync's main window -Preklop na glavno okno FreeFileSync - -Automatic retry -Samodejno poskusi znova - -Ignore &all -Prezri &vse - -Retrying operation... -Ponovni poizkus operacije... - -Serious Error -Resna napaka - -Last session -Zadnja seja - -Today -Danes - - -1 day -%x days - - -%x dan -%x dneva -%x dnevi -%x dni - - -Name -Ime - -Last sync -Zadnja sinhronizacija - -Log -Dnevnik - -Folder -Mapa - -Symlink -Simbolična povezava - -Full path -Celotna pot - -Relative path -Relativna pot - -Item name -Ime postavke - -Size -Velikost - -Date -Datum - -Extension -Pripona - -Category -Kategorija - -Action -Ukrep - -Local comparison settings -Lokalne nastavitve primerjave - -Local synchronization settings -Lokalne nastavitve sinhnorizacije - -Local filter -Lokalni filter - -Active -Aktivno - -None -Nič - -Remove local settings -Odstrani lokalne nastavitve - -Clear local filter -Počisti lokalni filter - -Copy -Kopiraj - -Paste -Prilepi - -The selected folder %x cannot be used with FreeFileSync. -Izbrana mapa %x ne more biti uprabljena s FreeFileSync. - -Please select a folder on a local file system, network or an MTP device. -Prosim izberite mapo na lokalnem datotečnem sistemu, mreži ali na MTP napravi. - -Defined by context of use -Določeno s kontekstom uporabe - -Requires FreeFileSync Donation Edition -Zahteva FreeFileSync Donation Edition - -&Save -&Shrani - -Save as &batch job... -Shrani kot paketno op&ravilo... - -Show &log -Pokaži &dnevnik - -Start &comparison -Začni &primerjavo - -C&omparison settings -N&astavitve primerjave - -&Filter settings -Nastavitve &filtra - -S&ynchronization settings -Nastavitve s&inhronizacije - -Start &synchronization -Začni &sinhnorizacijo - -&Actions -&Dejanje - -&Preferences -&Nastavitve - -&Language -&Jezik - -&Find... -&Išči... - -&Export file list... -&Izvozi seznam datotek... - -&Reset layout -&Ponastavi postavitev - -&Tools -&Orodja - -&Check for updates now -&Preveri, ali so zdaj na voljo posodobitve - -Check &automatically once a week -S&amodejno preveri enkrat tedensko - -Cancel -Prekliči - -Compare -Primerjaj - -Synchronize -Sinhroniziraj - -Add folder pair -Dodaj pare imenikov - -Remove folder pair -Odstrani pare imenikov - -Access online storage -Dostop do spletnega prostora za shranjevanje - -Close search bar -Zapri iskalno vrstico - -Find: -Išči: - -Match case -Ujemanje primera - -Processed: -Obdelano: - -Remaining: -Preostalo: - -New -Nova - -Open... -Odpri... - -Save -Shrani - -Save as... -Shrani kot... - -View type: -Vrsta prikaza: - -Select view: -Izberi prikaz: - -Save as default -Shrani kot privzeto - -Statistics: -Statistika: - -Number of files and folders that will be deleted -Število datotek in map, ki bodo izbrisane - -Number of files that will be updated -Število datotek, ki bodo posodobljene - -Number of files and folders that will be created -Število datotek in map, ki bodo ustvarjene - -Total bytes to copy -Skupno bajtov za kopiranje - -Arrange folder pair -Uredi pare map - -Main settings: -Glavne nastavitve: - -Use local settings: -Uporabi lokalne nastavitve: - -Select a variant: -Izberi varianto: - -Include &symbolic links: -Vključi &simbolične povezave: - -&Follow -&Sledi - -&Direct -&Neposredno - -More information -Več informacij - -&Ignore time shift [hh:mm] -&Prezri časovni zamik [hh:mm] - -List of file time offsets to ignore -Seznam časovnih zamikov datotek, ki jih je treba prezreti - -Example: -Primer: - -Handle daylight saving time -Upoštevaj poletni in zimski čas - -Ignore errors -Prezri napake - -Retry count: -Število poskusov: - -Delay (in seconds): -Zakasnitev (v sekundah): - -Performance improvements: -Izboljšave zmogljivosti: - -Parallel file operations: -Vzporedne operacije datoteke: - -How to get best performance? -Kako doseči najboljšo učinkovitost? - -Local settings: -Lokalne nastavitve: - -Include: -Vključi: - -Show examples -Pokaži primere - -Select filter rules to exclude certain files from synchronization. Enter file paths relative to their corresponding folder pair. -Izberi filtrirna pravila za izključitev določenih datotek iz sinhnorizacije. Vpiši pot datotek relativno na imenik v obdelavi. - -File size: -Velikost datoteke: - -Minimum: -Minimum: - -Maximum: -Maksimum: - -Time span: -Časovno obdobje: - -C&lear -&Počisti - -Detect moved files -Zaznaj premaknjene datoteke - - -- Not supported by all file systems -- Requires and creates database files -- Detection not available for first sync - - -- Ni podprto z vsemi datotečnimi sistemi -- Zahteva in ustvari datoteke v bazi podatkov -- Zaznavanje ni na voljo pri prvem sinhroniziranju - - -Delete files: -Izbriši datoteke: - -&Recycle bin -&Koš - -&Permanent -&Trajno - -&Versioning -&Označitev - -Move files to a user-defined folder -Premakni datoteke v uporabniško določeno mapo - -Naming convention: -Imenovanje konvencije: - -Limit file versions: -Omejitve različic datotek: - -Last x days: -Zadnji x dnevi: - -&Override default log path: -&Preglasi privzeto pot dnevnika: - -Run a command: -Zaženi ukaz: - -OK -V redu - -Connection type: -Vrsta povezave: - -Connected user accounts: -Povezani uporabniški računi: - -&Add connection -&Dodaj povezavo - -&Disconnect -&Prekini - -Selected user account: -Izbrani uporabniški račun: - -Server name or IP address: -Ime strežnika ali naslov IP: - -Port: -Vrata: - -Encryption: -Šifriranje: - -&Disabled -&Onemogočeno - -&Explicit SSL/TLS -&Izrecno SSL/TLS - -Authentication: -Preverjanje pristnosti: - -&Password -&Geslo - -&Key file -&Datoteka ključa - -&SSH agent -&SSH agent - -User name: -Uporabniško ime: - -Private key file: -Zasebna datoteka ključa: - -&Show password -&Prikaži geslo - -Directory on server: -Imenik na strežniku: - -Access timeout (in seconds): -Časovna omejitev dostopa (v sekundah): - -SFTP channels per connection: -SFTP kanali za povezavo: - -Detect server limit -Zaznaj omejitve strežnika - -Select Folder -Izberite mapo - -Variant: -Varianta: - -&Don't show this dialog again -&Tega pogovornega okna ne prikazuj znova - -Bytes: -Bajti: - -Items: -Postavke: - -Synchronizing... -Sinhroniziram... - -Minimize to notification area -Pomanjšaj v območje obvestil - -Bytes -Bitov - -Items -Postavk - -When finished: -Po zaključku: - -Auto-close -Samodejno zapri - -Close -Zapri - -&Pause -&Premor - -Stop -Ustavi - -Create a batch file for unattended synchronization. To start, double-click this file or schedule in a task planner: %x -Ustvari paketno datoteko za nenadzorovano sinhronizacijo. Za začetek dvokliknite to datoteko ali določite v načrtovalniku nalog: %x - -Progress dialog: -Okno napredka: - -Run minimized -Zaženi minimirano - -Show pop-up on errors or warnings -Pokaži pojavna okna napak ali opozoril - -&Cancel -&Prekliči - -Stop synchronization at first error -Ustavi sinhronizacijo ob prvi napaki - -How can I schedule a batch job? -Kako lahko načrtujem opravilo v paketu? - -&Keep relative paths -&Ohrani relativne poti - -&Overwrite existing files -&Prepiši obstoječe datoteke - -The following settings are used for all synchronization jobs. -Naslednje nastavitve se uporabljajo pri vseh sinhronizacijskih opravilih. - - -Copy to a temporary file (*.ffs_tmp) before overwriting target. -This guarantees a consistent state even in case of a serious error. - - -Kopiraj v začasno datoteko (*.ffs_tmp) preden prepišeš cilj. -To zagotavlja dosledno stanje tudi v primeru resne napake. - - -recommended -priporočeno - -Copy shared or locked files using the Volume Shadow Copy Service. -Kopiraj skupne ali zaklenjene datoteke s storitvijo Volume Shadow Copy Service. - -requires administrator rights -zahteva skrbniške pravice - -Transfer file and folder permissions. -Prenesi dovoljenja za datoteke in mape. - -Show all permanently hidden dialogs and warning messages again -Prikaži vsa trajno skrita pogovorna okna in opozorilna sporočila - -Default log path: -Privzeta pot dnevnika: - -&Delete logs after x days: -&Izbriši dnevnike po x dneh: - -Notification sounds: -Zvok obvestila: - -Synchronization finished: -Sinhronizacija je zaključena: - -Customize context menu: -Prilagodi kontekstni meni: - -Description -Opis - -&Default -&Privzeto - -Feedback and suggestions are welcome: -Povratne informacije in predlogi so dobrodošli: - -Home page -Domača stran - -FreeFileSync Forum -FreeFileSync Forum - -Email -Elektronska pošta - -If you like FreeFileSync: -Če vam je FreeFileSync všeč: - -Support with a donation -Podpora z donacijo - -The auto updater was disabled by the administrator. -Skrbnik je onemogočil samodejno posodabljanje. - -Donation details -Podrobnosti o donaciji - -Source code written in C++ using: -Izvorna koda napisana v C++ z uporabo: - -Published under the GNU General Public License: -Objavljeno pod licenco GNU General Public: - -Many thanks for localization: -Zahvala prevajalcem za lokalizacijo: - -Activate the FreeFileSync Donation Edition by one of the following methods: -Aktivirajte FreeFileSync Donation Edition na en od naslednjih načinov: - -Activate via internet now: -Aktivirajte preko interneta zdaj: - -Activate online -Aktivirajte po spletu - -Retrieve an offline activation key from the following URL: -Pridobite aktivacijski ključ brez povezave na naslednjem URL: - -&Copy to clipboard -&Kopirajte v odložišče - -Enter activation key: -Vnesite aktivacijski ključ: - -Activate offline -Aktivirajte brez povezave - -Highlight configurations that have not been run for more than the following number of days: -Označite konfiguracije, ki se ne izvajajo več kot naslednje število dni: - -FreeFileSync requires access rights to avoid "Operation not permitted" errors when synchronizing your data (e.g. Mail, Messages, Calendars). -FreeFileSync zahteva pravice dostopa, da se izognete napakam "Operacija ni dovoljena" pri sinhronizaciji vaših podatkov (npr. Pošta, Sporočila, Koledarji). - -Locate the FreeFileSync app -Poiščite aplikacijo FreeFileSync - -Open Security && Privacy -Odprite Varnost in Zasebnost - -Click the lock to allow changes. -Kliknite ključavnico, da omogočite spremembe. - -Drag FreeFileSync into the panel. -Povlecite FreeFileSync na panel. - -Synchronization Settings -Nastavitve sinhnorizacije - -Access Online Storage -Dostop do spletne shrambe - -Save as a Batch Job -Shrani kot paketno opravilo - -Delete Items -Izbriši postavke - -Copy Items -Kopiraj postavke - -Options -Možnosti - -Select Time Span -Izberi časovno obdobje - -Highlight Configurations -Označite konfiguracije - -Grant Full Disk Access -Dovolite popoln dostop do diska - -Info -Info - -No log entries -Ni zapisov v dnevniku - -Select all -Izberi vse - -&Options -&Možnosti - -Main Bar -Glavna vrstica - -Folder Pairs -Pari imenikov - -Find -Najdi - -View Settings -Nastavitve pogleda - -Configuration -Konfiguracija - -Overview -Predogled - -Swap sides -Zamenjaj strani - -Show "%x" -Prikaži "%x" - -&Show details -&Pokaži podrobnosti - -FreeFileSync %x is available! -FreeFileSync %x je na voljo - -Local path not available for %x. -Lokalna pot ni na voljo za %x. - -Confirm -Potrdi - - -Do you really want to execute the command %y for one item? -Do you really want to execute the command %y for %x items? - - -Ali res želite izvesti ukaz %y za %x postavko? -Ali res želite izvesti ukaz %y za %x postavki? -Ali res želite izvesti ukaz %y za %x postavke? -Ali res želite izvesti ukaz %y za %x postavk? - - -&Execute -&Izvedi - -Set direction: -Nastavi smer: - -multiple selection -večkratni izbor - -&Include via filter: -&Vključi preko filtra: - -&Exclude via filter: -&Izključi preko filtra: - -Include temporarily -Vključi začasno - -Exclude temporarily -Izključi začasno - -&Synchronize selection -&Sinhroniziraj izbiro - -&Copy to... -&Kopiraj v... - -&Delete -&Izbriši - -Show icons: -Prikaži ikone: - -Small -Majhna - -Medium -Srednja - -Large -Velika - -Select time span... -Izberite časovni razpon... - -Donation Edition -Donacijska izdaja - -Folder Comparison and Synchronization -Primerjava in sinhronizacija mape - -Configuration saved -Konfiguracija shranjena - -FreeFileSync batch -FreeFileSync paket - -Do you want to save changes to %x? -Ali želite shraniti spremembe v %x? - -Never save &changes -Nikoli ne shrani &sprememb - -Do&n't save -Ne shra&ni - -%x cannot be renamed. -%x ni mogoče preimenovati. - -New name: -Novo ime: - -Rename Configuration -Preimenovanje konfiguracije - -Configuration name must not be empty. -Ime konfiguracije ne sme biti prazno. - -&Rename... -&Preimenovanje... - -Hide configuration -Skrij konfiguracijo - -Highlight... -Označi... - -Clear filter -Počisti filter - -Show files that exist on left side only -Prikaži datoteke, ki obstajajo samo na levi strani - -Show files that exist on right side only -Prikaži datoteke, ki obstajajo samo na desni strani - -Show files that are newer on left -Prikaži novejše datoteke, ki so na levi strani - -Show files that are newer on right -Prikaži novejše datoteke, ki so na desni strani - -Show files that are equal -Prikaži datoteke, ki so identične - -Show files that are different -Prikaži datoteke, ki so različne - -Show conflicts -Prikaži konflikte - -Show files that will be created on the left side -Prikaži datoteke, ki bodo ustvarjene na levi strani - -Show files that will be created on the right side -Prikaži datoteke, ki bodo ustvarjene na desni strani - -Show files that will be deleted on the left side -Prikaži datoteke, ki bodo izbrisane na levi strani - -Show files that will be deleted on the right side -Prikaži datoteke, ki bodo izbrisane na desni strani - -Show files that will be updated on the left side -Pokaži datoteke, ki bodo posodobljene na levi strani - -Show files that will be updated on the right side -Pokaži datoteke, ki bodo posodobljene na desni strani - -Show files that won't be copied -Prikaži datoteke, ki ne bodo kopirane - -Show filtered or temporarily excluded files -Pokaži filtrirane ali začasno izključene datoteke - -Filter -Filter - -All files are in sync -Vse datoteke so sinhronizirane - - -1 directory -%x directories - - -%x imenik -%x imenika -%x imeniki -%x imenikov - - - -1 file -%x files - - -%x datoteka -%x datoteki -%x datoteke -%x datotek - - - -Showing %y of 1 row -Showing %y of %x rows - - -Prikazano %y od %x vrstice -Prikazano %y od %x vrstic -Prikazano %y od %x vrstic -Prikazano %y od %x vrstic - - -Cannot find %x -Ne najdem %x - -Move up -Premakni navzgor - -Move down -Premakni navzdol - -Comma-separated values -Vrednosti ločene z vejico - -File list exported -Seznam datotek je bil izvožen - -Searching for program updates... -Iščem posodobitve programa... - -Paused -Začasno ustavljeno - -Stop requested... -Ustavi zahtevano... - -Initializing... -Inicializiram... - -Comparing content... -Primerjam vsebino... - -&Continue -&Nadaljuj - -Progress -Napredek - -Thank you, %x, for your donation and support! -Najlepša hvala, %x, za vašo donacijo in podporo! - -Connections -Povezave - -Recommended range: -Priporočeni obseg: - -Do you really want to disconnect from user account %x? -Ali res želite prekiniti povezavo z uporabniškim računom %x? - -Password: -Geslo: - -Key passphrase: -Geslo za ključ: - -Please enter a file path. -Vnesite pot do datoteke. - - -Copy the following item to another folder? -Copy the following %x items to another folder? - - -Kopiraj sledečo %x postavko v drugo mapo? -Kopiraj sledeči %x postavki v drugo mapo? -Kopiraj sledeče %x postavke v drugo mapo? -Kopiraj sledečih %x postavk v drugo mapo? - - -Please enter a target folder. -Vnesite ciljno mapo. - - -Do you really want to move the following item to the recycle bin? -Do you really want to move the following %x items to the recycle bin? - - -Ali res želite premakniti sledečo %x postavko v koš? -Ali res želite premakniti sledeči %x postavki v koš? -Ali res želite premakniti sledeče %x postavke v koš? -Ali res želite premakniti sledečih %x postavk v koš? - - -Move -Premakni - - -Do you really want to delete the following item? -Do you really want to delete the following %x items? - - -Ali res želite izbrisati sledečo %x postavko? -Ali res želite izbrisati sledeči %x postavki? -Ali res želite izbrisati sledeče %x postavke? -Ali res želite izbrisati sledečih %x postavk? - - -Start to synchronize the selection? -Začnem sinhronizirati izbiro? - -Start synchronization now? -Začnem sinhronizacijo zdaj? - -Copy DACL, SACL, Owner, Group -Kopiraj DACL, SACL, lastnik, skupina - -Integrate external applications into context menu. The following macros are available: -Integriraj zunanje aplikacije v kontekstni meni. Na voljo so naslednji makroji: - -Full file or folder path -Celotna pot do datoteke ali mape - -Parent folder path -Pot do nadrejene mape - -Temporary local copy for SFTP and MTP storage -Začasna lokalna kopija za SFTP in MTP prostor za shranjevanje - -Parameters for opposite side -Parametri za nasprotno stran - -Show hidden dialogs again -Ponovno prikaži skrita pogovorna okna - -All dialogs shown -Prikaži vsa pogovorna okna - -Downloading update... -Prenašam posodobitve... - -Identify equal files by comparing modification time and size. -Ugotovi enake datoteke s primerjanjem časa spremembe in velikosti. - -Identify equal files by comparing the file content. -Ugotovi enake datoteke s primerjanjem vsebine. - -Identify equal files by comparing their file size. -Ugotovi enake datoteke s primerjanjem njihove velikosti. - -Identify and propagate changes on both sides. Deletions, moves and conflicts are detected automatically using a database. -Ugotovi in izvrši spremembe na obeh straneh. Izbrisi, premiki in spori so samodejno zaznani z uporabo podatkovne baze. - -Create a mirror backup of the left folder by adapting the right folder to match. -Ustvari zrcalno varnostno kopijo leve mape tako, da prilagodite desno mapo, ki se bo ujemala. - -Copy new and updated files to the right folder. -Kopiraj nove in posodobljene datoteke v desni imenik. - -Configure your own synchronization rules. -Konfigurirajte vaša lastna sinhronizacijska pravila. - -Comparison -Primerjava - -Synchronization -Sinhnorizacija - -This week -Ta teden - -This month -Ta mesec - -This year -To leto - -Byte -Bajt - -KB -KB - -MB -MB - -Retain deleted and overwritten files in the recycle bin -Zadrži izbrisane in prepisane datoteke v košu - -Delete and overwrite files permanently -Trajni izbris in prepis datotek - -Replace -Zamenjaj - -Move files and replace if existing -Premakni datoteke in jih zamenjaj, če že obstajajo - -Time stamp -Časovna oznaka - -Move files into a time-stamped subfolder -Datoteke premakni v podmape s časovno oznako - -File -Datoteka - -Append a time stamp to each file name -Imenu vsake datoteke pripni časovno oznako - -On completion: -Ob zaključku: - -On errors: -Ob napakah: - -On success: -Ob uspehu: - -Main config -Glavna konfiguracija - -empty -prazno - -Leave as unresolved conflict -Pusti kot nerešeni konflikt - -YYYY-MM-DD hhmmss -LLLL-MM-DD hhmmss - -Minimum version count must be smaller than maximum count. -Najmanjše število različic mora biti manjše od največjega števila. - -&Restore -&Obnovi - -Files -Datoteke - -Percentage -Odstotek - -Failed to retrieve update information. -Ne morem pridobiti informacije o posodobitvi. - -Automatic updates: -Samodejne posodobitve: - -Check for Program Updates -Preveri obstoj posodobitve programa - -Auto-update now or download manually from the FreeFileSync home page? -Samodejna posodobitev zdaj, ali prenos z domače strani FreeFileSync? - -&Auto-update -&Samodejna posodobitev - -&Home page -&Domača stran - -Download now? -Prenesem zdaj? - -&Download -&Prenesi - -FreeFileSync is up to date. -FreeFileSync je posodobljen. - -Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now? -Na spletu ni mogoče najti trenutne številke različice FreeFileSync. Verjetno je na voljo nova različica. Želite preveriti zdaj? - -&Check -&Preveri - -Consistency check failed for %x. -Preverjanje doslednosti ni uspelo za %x. - -Installation was registered on a different operating system. -Namestitev je bila registrirana v drugem operacijskem sistemu. - -Failed to activate FreeFileSync Donation Edition. -Programa FreeFileSync Donation Edition ni bilo mogoče aktivirati. - -Incorrect activation key. -Nepravilni ključ za aktiviranje. - -Unable to register to receive system messages. -Sistemskih sporočil ni mogoče registrirati. - -The %x installation option is only available in the FreeFileSync Donation Edition. -Možnost namestitve %x je na voljo samo v FreeFileSync Donation Edition. - -Cannot find system function %x. -Sistemske funkcije ni mogoče najti %x. - -Unable to register device notifications for %x. -Ne morem registrirati obvestil naprave za %x. - -The file is locked by another process: -Datoteko je zaklenil drug proces: - -Failed to determine file permission support for folder %x. -Preverjanje podpore za dovoljenje datoteke za mapo %x ni uspelo. - -Cannot read security context of %x. -Ne morem prebrati varnostni kontekst od %x. - -Cannot write security context of %x. -Ne morem zapisati varnostni kontekst od %x. - -Cannot read permissions of %x. -Ne morem prebrati dovoljenja od %x. - -Cannot copy permissions from %x to %y. -Ne morem kopirati dovoljenj iz %x v %y. - -%x is not a regular directory name. -%x ni pravilno ime imenika. - -Cannot copy attributes from %x to %y. -Ne morem kopirati atributov iz %x v %y. - -%x TB -%x TB - -%x PB -%x PB - - -1 min -%x min - - -%x min -%x min -%x min -%x min - - - -1 hour -%x hours - - -%x ura -%x uri -%x ure -%x ur - - -Cannot set privilege %x. -Ne morem nastaviti privilegija %x. - -Unable to suspend system sleep mode. -Ne morem preprečiti način mirovanja sistema. - -Cannot change process I/O priorities. -Ne morem spremeniti prioritet procesa I/O. - -Checking recycle bin failed for folder %x. -Preverjanje koša za mapo %x ni uspelo. - -Unable to shut down the system. -Sistema ni mogoče zapustiti. - -Prepare installation -Pripravljam namestitev - -Choose which components you want to install. -Izberite komponente, ki jih želite namestiti. - -Select installation type: -Izberite vrsto namestitve: - -Local -Lokalna - -Portable -Prenosna - -Save settings in %x -Shrani nastavitve v %x - -Register FreeFileSync file extensions -Registriraj FreeFileSync datoteče pripone - -Create Explorer context menu entries -Ustvari vnose v Explorer-jev kontekstni meni - -Save settings in installation directory -Shrani nastavitve v namestitveni imenik - -Do not write to Registry -Ne zapisuj v register - -Just copy the files -Samo kopiraj datoteke - -Choose a directory for installation: -Izberite imenik za namestitev: - -Create shortcuts: -Ustvari bližnjice: - -Desktop -Namizje - -Start Menu -Meni Start - -Send To -Pošlji - -Registering FreeFileSync file extensions -Registracija FreeFileSync datotečnih pripon - -Unregistering FreeFileSync file extensions -Odstranjevanje registracije FreeFileSync datotečnih pripon - -FreeFileSync Configuration -Nastavitve FreeFileSync - -FreeFileSync Batch File -FreeFileSync paketna datoteka - -FreeFileSync Synchronization Database -FreeFileSync sinhronizacijska baza podatkov - -RealTimeSync Configuration -RealTimeSync nastavitve - -Edit with FreeFileSync -Uredi z FreeFileSync - -Instead of an ad, here's an animal. -Namesto oglasa je tukaj žival. - -The FreeFileSync portable version cannot install into a subfolder of %x. -Prenosne različice FreeFileSync ni mogoče namestiti v podmapo %x. - -Please choose the local installation type or select a different folder for installation. -Prosimo izberite vrsto lokalne namestitve ali pa izberite drugo mapo za namestitev. - -Get the Donation Edition with bonus features and help keep FreeFileSync ad-free. -Pridobite donacijsko izdajo s bonusnimi funkcijami in pomagajte ohraniti FreeFileSync brez oglasov. - diff --git a/FreeFileSync/Build/Resources/Languages/spanish.lng b/FreeFileSync/Build/Resources/Languages/spanish.lng deleted file mode 100755 index 94f2eb41..00000000 --- a/FreeFileSync/Build/Resources/Languages/spanish.lng +++ /dev/null @@ -1,2136 +0,0 @@ -
- Español - I.R.Maturana (irmlab.com)‎ - es_ES - flag_spain.png - 2 - n == 1 ? 0 : 1 -
- -Cannot read file %x. -No se puede leer el archivo %x. - - -Unexpected size of data stream. -Expected: %x bytes -Actual: %y bytes - - -Tamaño no esperado del flujo de datos. -Esperados: %x bytes -Reales: %y bytes - - -Cannot write file %x. -No se puede escribir el archivo %x. - -Cannot write permissions of %x. -No se pueden escribir los permisos de %x. - -Operation not supported between different devices. -No se admite esta operación entre dispositivos diferentes. - -Cannot delete file %x. -No se puede eliminar el archivo %x. - -Cannot delete symbolic link %x. -No se puede eliminar el vínculo simbólico %x. - -Cannot delete directory %x. -No se puede eliminar el directorio %x. - -Cannot move file %x to %y. -No se puede mover el archivo %x a %y. - -Cannot copy symbolic link %x to %y. -No se puede copiar el vínculo simbólico %x a %y. - -Error Code %x -Código de error %x - -Cannot read directory %x. -No se puede leer el directorio %x. - -Cannot write modification time of %x. -No se puede escribir el tiempo de modificación de %x. - -Cannot read file attributes of %x. -No se puede leer archivo de atributos de %x. - -Cannot create directory %x. -No se puede crear el directorio %x. - -Cannot determine final path for %x. -No se puede determinar la ruta final de %x. - -Operation not supported by device. -El dispositivo no admite esta operación. - -Cannot resolve symbolic link %x. -No se puede resolver el vínculo simbólico %x. - -Unable to move %x to the recycle bin. -No es posible mover %x a la papelera de reciclaje. - -Authentication completed. -Autenticación completada. - -You may close this page now and continue with FreeFileSync. -Puede cerrar esta página y continuar con FreeFileSync. - -Authentication failed. -Fallo de autenticación. - -Unable to connect to %x. -No se puede conectar a %x. - -Cannot find %x. -No se encuentra %x. - -The name %x is used by more than one item in the folder. -El nombre %x es utilizado por más de un elemento en la carpeta. - -Please authorize access to user account %x. -Autorice el acceso a la cuenta de usuario %x. - -Cannot open file %x. -No se puede abrir el archivo %x. - -The name %x is already used by another item. -El nombre %x es utilizado por otro elemento. - -Cannot determine free disk space for %x. -No se puede determinar el espacio libre en disco para %x. - -Unable to disconnect from %x. -No se puede desconectar de %x. - -Unable to access %x. -No se puede acceder a %x. - -Failed to get information about server %x. -Fallo al obtener información del servidor %x. - -Cannot monitor directory %x. -No se puede monitorizar el directorio %x. - -Cannot find device %x. -No se encuentra el dispositivo %x. - -Cannot open directory %x. -No se puede abrir el directorio %x. - -Unsupported item type. -Tipo de elemento no admitido. - -Incorrect command line: -Línea de comandos incorrecta: - -The server does not support authentication via %x. -El servidor no admite autenticación via %x. - -Required: -Requerido: - - -Operation timed out after 1 second. -Operation timed out after %x seconds. - - -La operación superó el tiempo de espera tras 1 segundo. -La operación superó el tiempo de espera tras %x segundos. - - - -Cannot wait on more than 1 connection at a time. -Cannot wait on more than %x connections at a time. - - -No se puede esperar más de 1 conexión a la vez. -No se pueden esperar más de %x conexiones a la vez. - - -Active connections: %x -Conexiones activas: %x - -Failed to open SFTP channel number %x. -Fallo de apertura del canal SFTP número %x. - -Both sides have changed since last synchronization. -Ambos lados han cambiado desde la última sincronización. - -Cannot determine sync-direction: -No se puede determinar la dirección de sincronización: - -No change since last synchronization. -Ningún cambio desde la última sincronización. - -The database entry is not in sync considering current settings. -La entrada de la base de datos no está sincronizada, de acuerdo con la configuración actual. - -Setting default synchronization directions: Old files will be overwritten with newer files. -Fijando direcciones de sincronización predeterminadas: los archivos nuevos reemplazarán los archivos antiguos. - -Creating file %x -Creando archivo %x - -Creating folder %x -Creando carpeta %x - -Creating symbolic link %x -Creando vínculo simbólico %x - -Moving file %x to the recycle bin -Mover archivo %x a la papelera de reciclaje - -Moving folder %x to the recycle bin -Mover carpeta %x a la papelera de reciclaje - -Moving symbolic link %x to the recycle bin -Mover vínculo simbólico %x a la papelera de reciclaje - -Deleting file %x -Borrar archivo %x - -Deleting folder %x -Borrar carpeta %x - -Deleting symbolic link %x -Borrando vínculo simbólico %x - -Checking recycle bin availability for folder %x... -Comprobando disponibilidad de la papelera de reciclaje para la carpeta %x... - -The recycle bin is not supported by the following folders. Deleted or overwritten files will not be able to be restored: -La papelera de reciclaje no está disponible para las carpetas siguientes. Los archivos borrados o reemplazados no se podrán restaurar: - -An exception occurred -Ha ocurrido una excepción - -A left and a right directory path are expected after %x. -Se esperan dos rutas de directorio izquierdo y derecho después de %x. - -Syntax error -Error de sintaxis - -Cannot find file %x. -No se encuentra el archivo %x. - -Error -Error - -File %x does not contain a valid configuration. -El archivo %x no contiene una configuración válida. - -The config file must not contain settings at directory pair level when directories are set via command line. -El archivo de configuración no debe incluir parámetros al nivel de un par de directorios cuando éstos se especifican desde la línea de comandos. - -Directories cannot be set for more than one configuration file. -No se pueden definir directorios para más de un archivo de configuración. - -Command line -Línea de comandos - -Syntax: -Sintaxis: - -config files: -archivos de configuración: - -directory -directorio - -global config file: -archivo de config. global: - -Any number of FreeFileSync "ffs_gui" and/or "ffs_batch" configuration files. -Cualquier número de archivos de configuración "ffs_gui" y/o "ffs_batch" de FreeFileSync. - -Any number of alternative directory pairs for at most one config file. -Cualquier número de pares de directorios alternativos para un archivo de configuración como máximo. - -Open the selected configuration for editing only, without executing it. -Abrir la configuración seleccionada sólo para modificación, sin ejecutarla. - -Path to an alternate GlobalSettings.xml file. -Ruta a un archivo alternativo GlobalSettings.xml. - -Installation files are corrupted. Please reinstall FreeFileSync. -Los archivos de instalación están dañados. Reinstale FreeFileSync. - -Cannot find the following folders: -No se pudieron encontrar las siguiente carpetas: - -The following folders do not yet exist: -Las carpetas siguientes aún no existen: - -The folders are created automatically when needed. -Las carpetas son creadas automáticamente si es necesario. - -The following folder paths differ in case. Please use a single form in order to avoid duplicate accesses. -Las rutas de carpeta difieren por mayúsculas y minúsculas. Utilice un mismo formato para evitar accesos duplicados. - -Scanning: -Escanear: - -Comparison finished: -Comparación finalizada: - - -1 item found -%x items found - - -1 elemento encontrado -%x elementos encontrados - - -Time elapsed: -Tiempo transcurrido: - -File %x has an invalid date. -El archivo %x tiene una fecha inválida. - -Date: -Fecha: - -Files have the same date but a different size. -Los archivos tienen misma fecha pero tamaño diferente. - -Size: -Tamaño: - -Content comparison was skipped for excluded files. -No se compararon por contenido los archivos excluidos. - -Items differ in attributes only -Los elementos sólo se diferencian en los atributos - -Resolving symbolic link %x -Resolviendo vínculo simbólico %x - -Comparing content of files %x -Comparación del contenido de los archivos %x - -Generating file list... -Generando lista de archivos... - -Fail-safe file copy -Copia de archivo a prueba de fallos - -Enabled -Activo - -Disabled -Inactivo - -Copy locked files -Copiar archivos bloqueados - -Copy file access permissions -Copiar permisos de acceso al archivo - -File time tolerance -Tolerancia en hora de archivo - -Run with background priority -Ejecutar con prioridad en segundo plano - -Lock directories during sync -Bloquear directorios durante sincronización - -Verify copied files -Comprobar archivos copiados - -Using non-default global settings: -Uso de configuración global no predeterminada: - -A folder input field is empty. -Un campo de entrada de la carpeta está vacío. - -The corresponding folder will be considered as empty. -La carpeta correspondiente se considerará vacía. - -Exclude: -Excluir: - -One base folder of a folder pair is contained in the other one. -Una carpeta base de las carpetas emparejadas es común a la otra. - -The folder should be excluded from synchronization via filter. -Conviene excluir la carpeta de la sincronización mediante un filtro. - -Calculating sync directions... -Calculando direcciones de sincronización... - -Out of memory. -Sin memoria. - -Show in Explorer -Mostrar en el Explorador - -Open with default application -Abrir con la aplicación predeterminada - -Browse directory -Examinar directorio - -Database file %x is incompatible. -El archivo de base de datos %x es incompatible. - -Initial synchronization: -Sincronización inicial: - -Database file %x does not yet exist. -El archivo de base de datos %x aún no existe. - -Database file is corrupted: -El archivo de base de datos está dañado: - -Loading file %x... -Cargando el archivo %x... - -The database files do not yet contain information about the last synchronization. -Los archivos de datos aún no contienen información acerca de una sincronización anterior. - -Saving file %x... -Guardando archivo %x... - -Searching for folder %x... -Buscando carpeta %x... - -Timeout while searching for folder %x. -Tiempo de espera agotado al buscar por la carpeta %x. - -Cannot get process information. -No se puede obtener información del proceso. - -Waiting while directory is locked: -Esperando mientras el directorio está bloqueado: - -Lock owner: -Bloquear propietario: - -Detecting abandoned lock... -Detección de bloqueo abandonado... - - -1 sec -%x sec - - -1 seg. -%x seg. - - -Item exists on left side only -El elemento existe sólo en el lado izquierdo - -Item exists on right side only -El elemento existe sólo en el lado derecho - -Left side is newer -El lado izquierdo es más reciente - -Right side is newer -El lado derecho es más reciente - -Items have different content -Los elementos tienen contenido distinto - -Both sides are equal -Ambos lados son iguales - -Conflict/item cannot be categorized -No se puede categorizar el conflicto o elemento - -Copy new item to left -Copiar nuevo elemento a la izquierda - -Copy new item to right -Copiar nuevo elemento a la derecha - -Delete left item -Eliminar elemento izquierdo - -Delete right item -Eliminar elemento derecho - -Move file on left -Mover archivo a la izquierda - -Move file on right -Mover archivo a la derecha - -Update left item -Actualizar elemento izquierdo - -Update right item -Actualizar elemento derecho - -Do nothing -No hacer nada - -Update attributes on left -Actualizar atributos en la izquierda - -Update attributes on right -Actualizar atributos en la derecha - -Error parsing file %x, row %y, column %z. -Error analizando archivo %x, fila %y, columna %z. - -Services -Servicios - -Show All -Mostrar todo - -Hide Others -Ocultar otros - -Hide %x -Ocultar %x - -Quit %x -Salir de %x - -Cannot set directory locks for the following folders: -No se pudieron bloquear directorios para las carpetas siguientes: - -Errors: -Errores: - -Warnings: -Advertencias: - -Items processed: -Elementos procesados: - -Items remaining: -Elementos restantes: - -Total time: -Tiempo total: - -Warning -Atención - -Stopped -Detenido - -Cleaning up log files: -Limpiando archivos de registro: - - -1 thread -%x threads - - -1 subproceso -%x subprocesos - - -%x/sec -%x/seg - -%x items -%x elementos - -Completed successfully -Completado con éxito - -Completed with warnings -Completado con avisos - -Completed with errors -Completado con errores - -Cannot access the Volume Shadow Copy Service. -No se puede acceder al servicio de Instantánea de volumen. - -Please run the 64-bit version of FreeFileSync to create shadow copies on this system. -Por favor, use la versión de 64 bits de FreeFileSync para instantáneas en el sistema. - -Volume name %x is not part of file path %y. -El nombre de volumen %x no es parte de la ruta de archivo %y. - -File time and size -Fecha y tamaño del archivo - -File content -Contenido del archivo - -File size -Tamaño de archivo - -Two way -Bidireccional - -Mirror -Espejo - -Update -Actualizar - -Custom -Personalizado - -Multiple... -Múltiple... - -Cannot write file attributes of %x. -No se pueden escribir los atributos de archivo de %x. - -%x and %y have different content. -%x y %y tienen contenidos diferentes. - -Data verification error: -Error de verificación de datos: - -Moving file %x to %y -Mover archivo de %x a %y - -Moving folder %x to %y -Mover carpeta de %x a %y - -Moving symbolic link %x to %y -Mover vínculo simbólico de %x a %y - -Updating file %x -Actualizando archivo %x - -Updating symbolic link %x -Actualizando vínculo simbólico %x - -Verifying file %x -Verificación del archivo %x - -Updating attributes of %x -Actualizar atributos de %x - -Source item %x not found -No se encontró el archivo de origen %x - -Parent folder %x is not existing. -La carpeta principal %x no existe. - -Cannot copy file %x to %y. -No se puede copiar el archivo %x a %y. - -Creating a Volume Shadow Copy for %x... -Creando una Instantánea de volumen para %x... - -Cannot find folder %x. -No se puede encontrar la carpeta %x. - -Target folder %x is already existing, but was not available during folder comparison. -La carpeta de destino %x ya existe, pero no estaba disponible durante la comparación de carpetas. - -Target folder input field must not be empty. -El campo de entrada de la carpeta de destino no debe estar vacío. - -Source folder %x not found. -No se encontró la carpeta de origen %x. - -Please enter a target folder for versioning. -Indique una carpeta de destino para la versión. - -The following items have unresolved conflicts and will not be synchronized: -Los siguientes elementos tienen conflictos sin resolver y no serán sincronizados: - -Folder pair: -Par de carpetas: - -The following folders are significantly different. Please check that the correct folders are selected for synchronization. -Las carpetas siguientes presentan diferencias significativas. Asegúrese de seleccionar las carpetas correctas para su sincronización. - -Not enough free disk space available in: -Espacio en disco insuficiente en: - -Available: -Disponible: - -Some files will be synchronized as part of multiple base folders. -Se van a sincronizar algunos archivos como partes de varias carpetas base. - -To avoid conflicts, set up exclude filters so that each updated file is included by only one base folder. -Para evitar conflictos, defina filtros de exclusión de forma que cada archivo actualizado aparezca solo en una única carpeta base. - -Versioning folder: -Carpeta de versionado: - -Base folder: -Carpeta base: - -The versioning folder is contained in a base folder. -La carpeta de versionado está incluida en una carpeta base. - -Synchronizing folder pair: -Sincronizando par de carpetas: - -Generating database... -Generando base de datos... - -Searching for old file versions: -Buscando versiones antiguas de archivos: - -Removing old file versions: -Eliminando versiones antiguas de archivos: - -Unable to create time stamp for versioning: -No es posible crear la fecha y hora para el versionado: - -Drag && drop -Arrastrar y soltar - -Select a folder -Seleccione una carpeta - -&New -&Nuevo - -&Open... -&Abrir... - -Save &as... -Guardar &como... - -E&xit -Sal&ir - -&File -&Archivo - -&View help -&Ver ayuda - -&About -&Acerca de - -&Help -A&yuda - -Usage: -Uso: - -Select folders to watch. -Seleccionar carpetas para mostrar. - -Enter a command line. -Introduzca una línea de comandos. - -Press 'Start'. -Haga clic en 'Inicio'. - -To get started just import a "ffs_batch" file. -Para comenzar, importe un archivo "ffs_batch". - -Folders to watch: -Carpetas para examinar: - -Add folder -Añadir carpeta - -Remove folder -Eliminar carpeta - -Browse -Examinar - -Idle time (in seconds): -Tiempo de inactividad (en segundos): - -Idle time between last detected change and execution of command -Tiempo ocioso entre el último cambio detectado y la ejecución del comando - -Command line: -Línea de comandos: - -&Hide console window -&Ocultar la consola de comandos - - -The command is triggered if: -- files or subfolders change -- new folders arrive (e.g. USB stick insert) - - -El comando es disparado si: -- hay cambios en los archivos o subcarpetas -- aparecen nuevas carpetas (en una memoria USB, por ejemplo) - - -Start -Iniciar - -About -Acerca de - -Build: %x -Completado: %x - -All files -Todos los archivos - -Automated Synchronization -Sincronización Automática - -The %x protocol does not support directory monitoring: -El protocolo %x no es compatible con la supervisión de directorios: - -Directory monitoring active -Supervisión de directorios activada - -Waiting until directory is available: -Esperando que el directorio esté disponible: - -&Configure -&Configura - -&Show error message -Mo&strar mensaje de error - -&Quit -&Salir - -&Retry -&Reintentar - - -1 byte -%x bytes - - -1 byte -%x bytes - - -%x MB -%x MB - -%x KB -%x KB - -%x GB -%x Gb - -Loading... -Cargando... - -Scanning... -Escaneando... - -configuration file -archivo de configuración - -System: Sleep -Sistema: suspender - -System: Shut down -Sistema: apagar - -Nothing to synchronize -Nada que sincronizar - -Executing command: -Ejecución del comando: - -You can switch to FreeFileSync's main window to resolve this issue. -Puede cambiar a la ventana principal de FreeFileSync para resolver este problema. - -&Don't show this warning again -&No volver a mostrar este aviso - -&Ignore -&Ignorar - -&Switch -&Cambiar - -Switching to FreeFileSync's main window -Cambiar a la ventana principal de FreeFileSync - -Automatic retry -Reintento automático - -Ignore &all -Ignorar &todo - -Retrying operation... -Reintentando la operación... - -Serious Error -Error grave - -Last session -Última sesión - -Today -Hoy - - -1 day -%x days - - -1 día -%x días - - -Name -Nombre - -Last sync -Última sincronización - -Log -Registro - -Folder -Carpeta - -Symlink -Enlace simbólico - -Full path -Ruta completa - -Relative path -Ruta relativa - -Item name -Nombre de elemento - -Size -Tamaño - -Date -Fecha - -Extension -Extensión - -Category -Categoría - -Action -Acción - -Local comparison settings -Opciones de comparación local - -Local synchronization settings -Opciones de sincronización local - -Local filter -Filtro local - -Active -Activa - -None -Ninguna - -Remove local settings -Eliminar opciones locales - -Clear local filter -Borrar el filtro local - -Copy -Copiar - -Paste -Pegar - -The selected folder %x cannot be used with FreeFileSync. -La carpeta %x seleccionada no puede usarse con FreeFileSync. - -Please select a folder on a local file system, network or an MTP device. -Seleccione otra carpeta del systema de archivos local, en red o en un dispositivo MTP. - -Defined by context of use -Definido por contexto de utilización - -Requires FreeFileSync Donation Edition -Requiere FreeFileSync Donation Edition - -&Save -&Guardar - -Save as &batch job... -Guardar como tarea por &lotes... - -Show &log -Mostrar re&gistro - -Start &comparison -Iniciar la &comparación - -C&omparison settings -Opciones de c&omparación - -&Filter settings -Opciones de &filtro - -S&ynchronization settings -Opciones de s&incronización - -Start &synchronization -Iniciar la &sincronización - -&Actions -&Acciones - -&Preferences -&Preferencias - -&Language -&Idioma - -&Find... -&Buscar... - -&Export file list... -&Exportar lista de archivos... - -&Reset layout -&Restablecer diseño - -&Tools -Herramien&tas - -&Check for updates now -&Comprobar actualizaciones ahora - -Check &automatically once a week -Comprobar &automáticamente una vez por semana - -Cancel -Cancelar - -Compare -Comparar - -Synchronize -Sincronizar - -Add folder pair -Añadir un par de carpetas - -Remove folder pair -Eliminar un par de carpetas - -Access online storage -Acceder a almacenamiento en línea - -Close search bar -Cerrar la barra de búsqueda - -Find: -Buscar: - -Match case -Coincidir mayúsculas y minúsculas - -Processed: -Procesado(s): - -Remaining: -Restantes: - -New -Nuevo - -Open... -Abrir... - -Save -Guardar - -Save as... -Guardar como... - -View type: -Ver tipo: - -Select view: -Seleccionar vista: - -Save as default -Guardar como predeterminado - -Statistics: -Estadísticas: - -Number of files and folders that will be deleted -Número de archivos y carpetas que serán eliminados - -Number of files that will be updated -Número de archivos que serán actualizados - -Number of files and folders that will be created -Número de archivos y carpetas que serán creados - -Total bytes to copy -Total de bytes a copiar - -Arrange folder pair -Reorganizar pares de carpetas - -Main settings: -Configuración principal: - -Use local settings: -Usar Opciones locales: - -Select a variant: -Seleccione una variante: - -Include &symbolic links: -Incluir vínculos &simbólicos: - -&Follow -&Seguir - -&Direct -&Directo - -More information -Más información - -&Ignore time shift [hh:mm] -&Ignorar desfases temporales [hh:mm] - -List of file time offsets to ignore -Listado de desfases temporales ignorados en archivos - -Example: -Ejemplo: - -Handle daylight saving time -Reflejar el horario de verano - -Ignore errors -Ignorar errores - -Retry count: -Cuenta de reintentos: - -Delay (in seconds): -Retardo (en segundos): - -Performance improvements: -Mejoras en el rendimiento: - -Parallel file operations: -Operaciones paralelas sobre archivos: - -How to get best performance? -¿Cómo obtener el mejor rendimiento? - -Local settings: -Opciones locales: - -Include: -Incluir: - -Show examples -Mostrar ejemplos - -Select filter rules to exclude certain files from synchronization. Enter file paths relative to their corresponding folder pair. -Elija reglas de filtrado para excluir archivos de la sincronización. Indique rutas relativas correspondientes a la carpeta emparejada. - -File size: -Tamaño de archivo: - -Minimum: -Mínimo: - -Maximum: -Máximo: - -Time span: -Espacio de tiempo: - -C&lear -B&orrar - -Detect moved files -Detectar archivos movidos - - -- Not supported by all file systems -- Requires and creates database files -- Detection not available for first sync - - -- No compatible con todos los sistemas de archivos -- Requiere y crea archivos de bases de datos -- Detección no disponible en primera sincronización - - -Delete files: -Eliminar archivos: - -&Recycle bin -Papelera de &reciclaje - -&Permanent -&Permanente - -&Versioning -&Versionado - -Move files to a user-defined folder -Mover los archivos a una carpeta del usuario - -Naming convention: -Convención de nombres: - -Limit file versions: -Limitar las versiones de archivos: - -Last x days: -Últimos x días: - -&Override default log path: -&Reemplazar la ruta predeterminada del registro: - -Run a command: -Ejecutar un comando: - -OK -OK - -Connection type: -Tipo de conexión: - -Connected user accounts: -Cuentas de usuarion conectadas: - -&Add connection -&Agregar conexión - -&Disconnect -&Desconectar - -Selected user account: -Cuenta de usuario seleccionada: - -Server name or IP address: -Nombre o dirección IP del servidor: - -Port: -Puerto: - -Encryption: -Cifrado: - -&Disabled -&Inactivo - -&Explicit SSL/TLS -&SSL/TLS explícito - -Authentication: -Autenticación: - -&Password -&Contraseña - -&Key file -Archivo de &clave - -&SSH agent -Agente &SSH - -User name: -Usuario: - -Private key file: -Archivo de clave privada: - -&Show password -Mo&strar constraseña - -Directory on server: -Directorio en el servidor: - -Access timeout (in seconds): -Tiempo de espera en acceso (segundos): - -SFTP channels per connection: -Canales SFTP por conexión: - -Detect server limit -Detectar el límite del servidor - -Select Folder -Seleccionar carpeta - -Variant: -Variante: - -&Don't show this dialog again -&No volver a mostrar este diálogo - -Bytes: -Bytes: - -Items: -Elementos: - -Synchronizing... -Sincronizando... - -Minimize to notification area -Minimizar en el área de notificación - -Bytes -Bytes - -Items -Elementos - -When finished: -Tras finalizar: - -Auto-close -Cierre automático - -Close -Cerrar - -&Pause -&Pausa - -Stop -Detener - -Create a batch file for unattended synchronization. To start, double-click this file or schedule in a task planner: %x -Crear tarea por lotes para sincronización desatendida. Para iniciar, haga doble clic en este archivo o prográmelo en el planificador de tareas: %x - -Progress dialog: -Diálogo de progreso: - -Run minimized -Ejecutar minimizado - -Show pop-up on errors or warnings -Mostrar ventana emergente de errores o avisos - -&Cancel -&Cancelar - -Stop synchronization at first error -Detener la sincronización con el primer error - -How can I schedule a batch job? -¿Cómo puedo programar una tarea por lotes? - -&Keep relative paths -Conservar &rutas relativas - -&Overwrite existing files -S&obrescribir archivos existentes - -The following settings are used for all synchronization jobs. -Las opciones siguientes son comunes a todas las tareas de sincronización. - - -Copy to a temporary file (*.ffs_tmp) before overwriting target. -This guarantees a consistent state even in case of a serious error. - - -Copiar a archivo temporal (*.ffs_tmp) antes de sobrescribir en destino. -Esto garantiza un estado coherente incluso en caso de error grave. - - -recommended -recomendado - -Copy shared or locked files using the Volume Shadow Copy Service. -Copiar archivos compartidos o bloqueados usando el servicio de Instantánea de volumen. - -requires administrator rights -requiere derechos de administrador - -Transfer file and folder permissions. -Transferir permisos de archivos y carpetas. - -Show all permanently hidden dialogs and warning messages again -Volver a mostrar todos los diálogos y mensajes de advertencia que fueron permanentemente ocultados - -Default log path: -Ruta predeterminada del registro: - -&Delete logs after x days: -&Eliminar los registros tras x días: - -Notification sounds: -Notificaciones sonoras: - -Synchronization finished: -Synchronización finalizada: - -Customize context menu: -Personalizar menú contextual: - -Description -Descripción - -&Default -&Configuración predeterminada - -Feedback and suggestions are welcome: -Comentarios y sugerencias son bienvenidos: - -Home page -Página de inicio - -FreeFileSync Forum -Foro de FreeFileSync - -Email -Correo electrónico - -If you like FreeFileSync: -Si te resulta útil FreeFileSync: - -Support with a donation -¡Contribuye con una donación! - -The auto updater was disabled by the administrator. -La actualización automática ha sido desactivada por el administrador. - -Donation details -Detalles para donación - -Source code written in C++ using: -Código fuente C++ con soporte de: - -Published under the GNU General Public License: -Publicado con licencia pública general GNU: - -Many thanks for localization: -Agradecimientos a los traductores: - -Activate the FreeFileSync Donation Edition by one of the following methods: -Active FreeFileSync Donation Edition por uno de los métodos siguientes: - -Activate via internet now: -Activar por internet ahora: - -Activate online -Activar en línea - -Retrieve an offline activation key from the following URL: -Recuperar una clave de activación sin conexión desde la dirección URL siguiente: - -&Copy to clipboard -&Copiar al portapapeles - -Enter activation key: -Introduzca la clave de activación: - -Activate offline -Activar sin conexión - -Highlight configurations that have not been run for more than the following number of days: -Resaltar las configuraciones no utilizadas desde hace más del número de días: - -FreeFileSync requires access rights to avoid "Operation not permitted" errors when synchronizing your data (e.g. Mail, Messages, Calendars). -FreeFileSync requiere derechos de acceso para evitar errores por "Operaciones no permitidas" al sincronizar sus datos (por ej. Mail, Messages, Calendars). - -Locate the FreeFileSync app -Localice la app FreeFileSync - -Open Security && Privacy -Abra Seguridad y privacidad - -Click the lock to allow changes. -Haga clic en el candado para permitir los cambios. - -Drag FreeFileSync into the panel. -Arrastre FreeFileSync dentro del panel. - -Synchronization Settings -Opciones de sincronización - -Access Online Storage -Acceder a almacenamiento en línea - -Save as a Batch Job -Guardar como una tarea por lotes - -Delete Items -Eliminar elementos - -Copy Items -Copiar elementos - -Options -Opciones - -Select Time Span -Seleccionar duración - -Highlight Configurations -Resaltar configuraciones - -Grant Full Disk Access -Dar acceso a total al disco - -Info -Info - -No log entries -No hay entradas de registro - -Select all -Seleccionar todo - -&Options -&Opciones - -Main Bar -Barra principal - -Folder Pairs -Pares de carpetas - -Find -Buscar - -View Settings -Ver opciones - -Configuration -Configuración - -Overview -Vista general - -Swap sides -Intercambiar lados - -Show "%x" -Mostrar "%x" - -&Show details -Mo&strar detalles - -FreeFileSync %x is available! -¡Ya está disponible FreeFileSync %x! - -Local path not available for %x. -Ruta local no disponible para %x. - -Confirm -Confirmar - - -Do you really want to execute the command %y for one item? -Do you really want to execute the command %y for %x items? - - -¿Realmente desea ejecutar el comando %y para un elemento? -¿Realmente desea ejecutar el comando %y para %x elementos? - - -&Execute -&Ejecutar - -Set direction: -Usar dirección: - -multiple selection -selección múltiple - -&Include via filter: -&Incluir a través del filtro: - -&Exclude via filter: -&Excluir a través del filtro: - -Include temporarily -Incluir temporalmente - -Exclude temporarily -Excluir temporalmente - -&Synchronize selection -&Sincronizar la selección - -&Copy to... -&Copiar hacia... - -&Delete -&Eliminar - -Show icons: -Mostrar iconos: - -Small -Pequeño - -Medium -Medio - -Large -Grande - -Select time span... -Seleccionar duración... - -Donation Edition -Donation Edition - -Folder Comparison and Synchronization -Comparación y sincronización de carpetas - -Configuration saved -Configuración guardada - -FreeFileSync batch -Tarea por lotes de FreeFileSync - -Do you want to save changes to %x? -¿Quiere guardar los cambios de %x? - -Never save &changes -Nunca guardar &cambios - -Do&n't save -&No guardar - -%x cannot be renamed. -%x no se puede renombrar. - -New name: -Nuevo nombre: - -Rename Configuration -Renombrar la configuración - -Configuration name must not be empty. -El nombre de configuración no debe estar vacío. - -&Rename... -&Renombrar... - -Hide configuration -Ocultar configuración - -Highlight... -Resaltar... - -Clear filter -Borrar filtro - -Show files that exist on left side only -Mostrar sólo archivos existentes en la izquierda - -Show files that exist on right side only -Mostrar sólo archivos existentes en la derecha - -Show files that are newer on left -Mostrar archivos más recientes a la izquierda - -Show files that are newer on right -Mostrar archivos más recientes a la derecha - -Show files that are equal -Mostrar archivos iguales - -Show files that are different -Mostrar archivos diferentes - -Show conflicts -Mostrar conflictos - -Show files that will be created on the left side -Mostrar archivos que serán creados en el lado izquierdo - -Show files that will be created on the right side -Mostrar archivos que serán creados en el lado derecho - -Show files that will be deleted on the left side -Mostrar archivos que serán eliminados en el lado izquierdo - -Show files that will be deleted on the right side -Mostrar archivos que serán eliminados en el lado derecho - -Show files that will be updated on the left side -Mostrar archivos que serán actualizados en el lado izquierdo - -Show files that will be updated on the right side -Mostrar archivos que serán actualizados en el lado derecho - -Show files that won't be copied -Mostrar archivos que no serán copiados - -Show filtered or temporarily excluded files -Mostrar archivos excluidos temporalmente o filtrados - -Filter -Filtro - -All files are in sync -Todos los archivos están sincronizados - - -1 directory -%x directories - - -1 directorio -%x directorios - - - -1 file -%x files - - -1 archivo -%x archivos - - - -Showing %y of 1 row -Showing %y of %x rows - - -Mostrando %y de 1 línea -Mostrando %y de %x líneas - - -Cannot find %x -No se puede encontrar %x - -Move up -Subir - -Move down -Bajar - -Comma-separated values -Valores separados por comas - -File list exported -Lista de archivos exportada - -Searching for program updates... -Buscando actualizaciones del programa... - -Paused -Pausado - -Stop requested... -Detención solicitada... - -Initializing... -Inicializando... - -Comparing content... -Comparando contenido... - -&Continue -&Continuar - -Progress -Progreso - -Thank you, %x, for your donation and support! -¡Muchas gracias, %x, por su contribución y ayuda! - -Connections -Conexiones - -Recommended range: -Rango recomendado: - -Do you really want to disconnect from user account %x? -¿Realmente desea desconectar de la cuenta de usuario %x? - -Password: -Contraseña: - -Key passphrase: -Frase de contraseña: - -Please enter a file path. -Indique la ruta de un archivo. - - -Copy the following item to another folder? -Copy the following %x items to another folder? - - -¿Desea copiar este elemento hacia otra carpeta? -¿Desea copiar estos %x elementos hacia otra carpeta? - - -Please enter a target folder. -Indique una carpeta de destino. - - -Do you really want to move the following item to the recycle bin? -Do you really want to move the following %x items to the recycle bin? - - -¿Realmente desea mover este elemento a la papelera de reciclaje? -¿Realmente desea mover estos %x elementos a la papelera de reciclaje? - - -Move -Mover - - -Do you really want to delete the following item? -Do you really want to delete the following %x items? - - -¿Realmente desea eliminar este elemento? -¿Realmente desea eliminar estos %x elementos? - - -Start to synchronize the selection? -¿Iniciar la sincronización de la selección? - -Start synchronization now? -¿Iniciar la sincronización ahora? - -Copy DACL, SACL, Owner, Group -Copiar permisos DACL, SACL, Owner, Group - -Integrate external applications into context menu. The following macros are available: -Integrar aplicaciones externas en el menú de contexto. Las macros siguientes están disponibles: - -Full file or folder path -Ruta completa de archivo o carpeta - -Parent folder path -Ruta de carpeta principal - -Temporary local copy for SFTP and MTP storage -Copia local temporal para almacenamiento SFTP y MTP - -Parameters for opposite side -Parámetros del lado opuesto - -Show hidden dialogs again -Volver a mostrar los diálogos ocultos - -All dialogs shown -Todos los diálogos mostrados - -Downloading update... -Descargando actualización... - -Identify equal files by comparing modification time and size. -Identificar archivos iguales por la hora de modificación y por tamaño. - -Identify equal files by comparing the file content. -Identificar archivos iguales por su contenido. - -Identify equal files by comparing their file size. -Identificar archivos iguales por su tamaño. - -Identify and propagate changes on both sides. Deletions, moves and conflicts are detected automatically using a database. -Identificar y propagar cambios en ambos lados. Archivos eliminados, movidos y conflictos se detectan automáticamente usando una base de datos. - -Create a mirror backup of the left folder by adapting the right folder to match. -Crear una copia de respaldo espejo de la carpeta izquierda, adaptando y haciendo coincidir la carpeta derecha. - -Copy new and updated files to the right folder. -Copiar archivos nuevos y actualizados a la carpeta de la derecha. - -Configure your own synchronization rules. -Configurar reglas de sincronización personalizadas. - -Comparison -Comparación - -Synchronization -Sincronización - -This week -Esta semana - -This month -Este mes - -This year -Este año - -Byte -Byte - -KB -KB - -MB -MB - -Retain deleted and overwritten files in the recycle bin -Conservar en la papelera de reciclaje los archivos eliminados y reemplazados - -Delete and overwrite files permanently -Borrar y reemplazar los archivos permanentemente - -Replace -Reemplazar - -Move files and replace if existing -Mover archivos y reemplazar si ya existen - -Time stamp -Marca horaria - -Move files into a time-stamped subfolder -Mover archivos a una subcarpeta con marca horaria - -File -Archivo - -Append a time stamp to each file name -Incluir marca horaria en cada nombre de archivo - -On completion: -Al completar: - -On errors: -Con errores: - -On success: -Con éxito: - -Main config -Configuración principal - -empty -vacío - -Leave as unresolved conflict -Dejar como conflicto sin resolver - -YYYY-MM-DD hhmmss -YYYY-MM-DD hhmmss - -Minimum version count must be smaller than maximum count. -El contador mínimo de versión debe ser inferior al contador máximo. - -&Restore -&Restaurar - -Files -Archivos - -Percentage -Porcentaje - -Failed to retrieve update information. -Fallo al recuperar información de actualización. - -Automatic updates: -Actualizaciones automáticas: - -Check for Program Updates -Buscar actualizaciones del programa - -Auto-update now or download manually from the FreeFileSync home page? -¿Desea actualizar automáticamente o descargar manualmente desde la página de FreeFileSync ahora? - -&Auto-update -&Actualizar autmáticamente - -&Home page -&Página de inicio - -Download now? -¿Descargar ahora? - -&Download -&Descargar - -FreeFileSync is up to date. -FreeFileSync está actualizado. - -Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now? -No se encuentra el número de versión actual de FreeFileSync en línea. Una nueva versión puede estar disponible. ¿Desea comprobarla manualmente? - -&Check -&Comprobar - -Consistency check failed for %x. -Fallo en la comprobación de coherencia para %x. - -Installation was registered on a different operating system. -La instalación quedó registrada par un sistema operativo distinto. - -Failed to activate FreeFileSync Donation Edition. -Fallo al activar FreeFileSync Donation Edition. - -Incorrect activation key. -Clave de activación incorrecta. - -Unable to register to receive system messages. -No es posible registrar la recepción de mensajes sistema. - -The %x installation option is only available in the FreeFileSync Donation Edition. -La opción %x de instalación sólo está disponible para la versión FreeFileSync Donation Edition. - -Cannot find system function %x. -No se puede encontrar la función del sistema %x. - -Unable to register device notifications for %x. -No es posible registrar las notificaciones de dispositivo para %x. - -The file is locked by another process: -El archivo está bloqueado por otro proceso: - -Failed to determine file permission support for folder %x. -No se puede determinar el soporte para permisos de archivos en la carpeta %x. - -Cannot read security context of %x. -No se puede leer el contexto de seguridad de %x. - -Cannot write security context of %x. -No se puede escribir el contexto de seguridad de %x. - -Cannot read permissions of %x. -No se pueden leer los permisos de %x. - -Cannot copy permissions from %x to %y. -No se puedem copiar los permisos desde %x hacia %y. - -%x is not a regular directory name. -%x no es una nombre de directorio autorizado. - -Cannot copy attributes from %x to %y. -No se puedem copiar los atributos desde %x hacia %y. - -%x TB -%x TB - -%x PB -%x PB - - -1 min -%x min - - -1 minuto -%x minutos - - - -1 hour -%x hours - - -1 hora -%x horas - - -Cannot set privilege %x. -No se puede asignar el privilegio %x. - -Unable to suspend system sleep mode. -No es posible suspender el sistema. - -Cannot change process I/O priorities. -No se pudieron cambiar las prioridades de E/S del proceso. - -Checking recycle bin failed for folder %x. -Fallo al comprobar la papelera de reciclaje para la carpeta %x. - -Unable to shut down the system. -No es posible apagar el sistema. - -Prepare installation -Preparar la instalación - -Choose which components you want to install. -Elija los components que desea instalar. - -Select installation type: -Elija el tipo de instalación: - -Local -Local - -Portable -Portable - -Save settings in %x -Guardar parámetros en %x - -Register FreeFileSync file extensions -Registrar las extensiones de archivos de FreeFileSync - -Create Explorer context menu entries -Crear entradas en el menú contextual del Explorador - -Save settings in installation directory -Guardar preferencias en el directorio de instalación - -Do not write to Registry -No escribir en el registro - -Just copy the files -Copiar archivos - -Choose a directory for installation: -Elegir directorio para la instalación: - -Create shortcuts: -Crear acceso directo: - -Desktop -Escritorio - -Start Menu -Menú Inicio - -Send To -Enviar a - -Registering FreeFileSync file extensions -Registrando las extensiones de archivo de FreeFileSync - -Unregistering FreeFileSync file extensions -Borrando las extensiones de archivo de FreeFileSync - -FreeFileSync Configuration -Configuración de FreeFileSync - -FreeFileSync Batch File -Archivo por lotes de FreeFileSync - -FreeFileSync Synchronization Database -Base de datos de sincronización de FreeFileSync - -RealTimeSync Configuration -Configuración de RealTimeSync - -Edit with FreeFileSync -Modificar con FreeFileSync - -Instead of an ad, here's an animal. -En lugar de un anuncio, verá una imagen como ésta. - -The FreeFileSync portable version cannot install into a subfolder of %x. -No se puede instalar la versión portátil de FreeFileSync en una subcarpeta de %x. - -Please choose the local installation type or select a different folder for installation. -Elija el tipo de instalación local o seleccione otra carpeta de instalación. - -Get the Donation Edition with bonus features and help keep FreeFileSync ad-free. -Obtenga la FreeFileSync Donation Edition con sus características extra y ayude a mantener FreeFileSync libre de anuncios. - diff --git a/FreeFileSync/Build/Resources/Languages/swedish.lng b/FreeFileSync/Build/Resources/Languages/swedish.lng deleted file mode 100755 index 9e844a73..00000000 --- a/FreeFileSync/Build/Resources/Languages/swedish.lng +++ /dev/null @@ -1,2136 +0,0 @@ -
- Svenska - Åke Engelbrektson - sv_SE - flag_sweden.png - 2 - n == 1 ? 0 : 1 -
- -Cannot read file %x. -Filen %x kan inte läsas in. - - -Unexpected size of data stream. -Expected: %x bytes -Actual: %y bytes - - -Oväntad storlek på dataström. -Förväntad: %x byte -Aktuell: %y byte - - -Cannot write file %x. -Filen %x kan inte skrivas. - -Cannot write permissions of %x. -Kan inte skriva behörigheter för %x. - -Operation not supported between different devices. -Åtgärden stöds inte mellan olika enheter. - -Cannot delete file %x. -Filen %x kan inte tas bort. - -Cannot delete symbolic link %x. -Kan inte ta bort den symboliska länken %x. - -Cannot delete directory %x. -Kan inte ta bort mappen %x. - -Cannot move file %x to %y. -Kan inte flytta filen %x till %y. - -Cannot copy symbolic link %x to %y. -Kan inte kopiera den symboliska länken %x till %y. - -Error Code %x -Felkod %x - -Cannot read directory %x. -Kan inte läsa mappen %x. - -Cannot write modification time of %x. -Kan inte ändra tidsangivelsen för %x. - -Cannot read file attributes of %x. -Kan inte läsa filattribut för %x. - -Cannot create directory %x. -Kan inte skapa mappen %x. - -Cannot determine final path for %x. -Kan inte utläsa slutlig sökväg för %x. - -Operation not supported by device. -Åtgärden stöds inte av enheten. - -Cannot resolve symbolic link %x. -Den symboliska länken %x kan inte matchas. - -Unable to move %x to the recycle bin. -Kan inte att flytta %x till papperskorgen. - -Authentication completed. -Autentisering slutförd. - -You may close this page now and continue with FreeFileSync. -Du kan nu stänga denna sida och fortsätta med FreeFileSync. - -Authentication failed. -Autentisering misslyckades. - -Unable to connect to %x. -Kan inte ansluta till %x. - -Cannot find %x. -Kan inte hitta %x. - -The name %x is used by more than one item in the folder. -Namnet %x, används av mer än ett objekt, i mappen. - -Please authorize access to user account %x. -Autentisera åtkomst till användarkonto %x. - -Cannot open file %x. -Kan inte öppna %x. - -The name %x is already used by another item. -Namnet %x, används redan av ett annat objekt. - -Cannot determine free disk space for %x. -Kan inte avgöra ledigt utrymme på %x. - -Unable to disconnect from %x. -Kan inte koppla ifrån %x. - -Unable to access %x. -Kan inte komma åt %x. - -Failed to get information about server %x. -Kunde inte hämta information om server %x. - -Cannot monitor directory %x. -Mappen %x kan inte övervakas. - -Cannot find device %x. -Kan inte hitta enheten %x. - -Cannot open directory %x. -Kan inte öppna %x. - -Unsupported item type. -Objekttypen stöds inte. - -Incorrect command line: -Felaktig kommandorad: - -The server does not support authentication via %x. -Servern stödjer inte autentisering via %x. - -Required: -Utrymmeskrav: - - -Operation timed out after 1 second. -Operation timed out after %x seconds. - - -Åtgärdens tidsgräns överskreds efter 1 sekund. -Åtgärdens tidsgräns överskreds efter %x sekunder. - - - -Cannot wait on more than 1 connection at a time. -Cannot wait on more than %x connections at a time. - - -Kan inte vänta på fler än 1 anslutning åt gången. -Kan inte vänta på fler än %x anslutningar åt gången. - - -Active connections: %x -Aktiva anslutningar: %x - -Failed to open SFTP channel number %x. -Kunde inte öppna SFTP-kanal nummer %x. - -Both sides have changed since last synchronization. -Bägge sidor har ändrats sedan senaste synkroniseringen. - -Cannot determine sync-direction: -Kan inte bestämma synkroniseringsriktning: - -No change since last synchronization. -Inga ändringar sedan senaste synkronisering. - -The database entry is not in sync considering current settings. -Databasposten är inte synkroniserad, i förhållande till aktuella inställningar. - -Setting default synchronization directions: Old files will be overwritten with newer files. -Standardsynkronisering: Gamla filer kommer att skrivas över av nyare versioner. - -Creating file %x -Skapar fil %x - -Creating folder %x -Skapar mappen %x - -Creating symbolic link %x -Skapar den symboliska länken %x - -Moving file %x to the recycle bin -Flyttar %x till papperskorgen - -Moving folder %x to the recycle bin -Flyttar mappen %x till papperskorgen - -Moving symbolic link %x to the recycle bin -Flyttar den symboliska länken %x till papperskorgen - -Deleting file %x -Tar bort filen %x - -Deleting folder %x -Tar bort mappen %x - -Deleting symbolic link %x -Tar bort den symboliska länken %x - -Checking recycle bin availability for folder %x... -Kontrollerar papperskorgens tillgänglighet för %x... - -The recycle bin is not supported by the following folders. Deleted or overwritten files will not be able to be restored: -Papperskorgen stöds inte av följande mappar. Borttagna eller överskrivna filer kommer inte att kunna återställas: - -An exception occurred -Ett undantag inträffade - -A left and a right directory path are expected after %x. -En vänster och en höger mappsökväg förväntas efter %x. - -Syntax error -Syntaxfel - -Cannot find file %x. -Kan inte hitta filen %x. - -Error -Fel - -File %x does not contain a valid configuration. -Filen %x innehåller ingen giltig konfiguration. - -The config file must not contain settings at directory pair level when directories are set via command line. -Konfigurationsfilen kan inte innehålla inställningar på katalogparnivå när mappar anges via kommandorad. - -Directories cannot be set for more than one configuration file. -Mappar kan inte anges för mer än en konfigurationsfil. - -Command line -Kommandofält - -Syntax: -Syntax: - -config files: -configurationsfiler: - -directory -mapp - -global config file: -övergripande konfigurationsfil: - -Any number of FreeFileSync "ffs_gui" and/or "ffs_batch" configuration files. -Valfritt antal FreeFileSync "ffs_gui" och/eller "ffs_batch" konfigurationsfiler. - -Any number of alternative directory pairs for at most one config file. -Valfritt antal alternativa katalogpar för som mest, en konfigurationsfil. - -Open the selected configuration for editing only, without executing it. -Öppna den valda konfigurationen endast för redigering, utan att köra den. - -Path to an alternate GlobalSettings.xml file. -Sökväg till en alternativ GlobalSettings.xml-fil. - -Installation files are corrupted. Please reinstall FreeFileSync. -Installationsfilerna är skadade. Installera om FreeFileSync. - -Cannot find the following folders: -Kan inte hitta följande mappar: - -The following folders do not yet exist: -Följande mappar finns ännu inte: - -The folders are created automatically when needed. -Mapparna skapas automatiskt när de behövs. - -The following folder paths differ in case. Please use a single form in order to avoid duplicate accesses. -Följande mappsökvägar skiljer sig åt i skiftläge. Använd en enda form för att undvika dubbla åtkomster. - -Scanning: -Skannar: - -Comparison finished: -Jämförelse slutförd: - - -1 item found -%x items found - - -1 objekt hittat -%x objekt hittade - - -Time elapsed: -Förfluten tid: - -File %x has an invalid date. -Filen %x har ett ogiltigt datum. - -Date: -Datum: - -Files have the same date but a different size. -Filerna har samma datum men olika storlek. - -Size: -Storlek: - -Content comparison was skipped for excluded files. -Innehållet jämfördes inte för undantagna filer. - -Items differ in attributes only -Endast attribut skiljer objekten åt - -Resolving symbolic link %x -Översätter den symboliska länken %x - -Comparing content of files %x -Jämför filinnehåll för %x - -Generating file list... -Skapar fillista... - -Fail-safe file copy -Felsäker filkopiering - -Enabled -Aktiverad - -Disabled -Inaktiverad - -Copy locked files -Kopiera låsta filer - -Copy file access permissions -Kopiera filåtkomstbehörigheter - -File time tolerance -Tidsstämpeltolerans - -Run with background priority -Kör med bakgrundsprioritet - -Lock directories during sync -Lås mappar under synkronisering - -Verify copied files -Verifiera kopierade filer - -Using non-default global settings: -Använder icke-standard globala inställningar: - -A folder input field is empty. -Ett inmatningsfält är tomt. - -The corresponding folder will be considered as empty. -Motsvarande mapp kommer att betraktas som tom. - -Exclude: -Undanta: - -One base folder of a folder pair is contained in the other one. -En basmapp i ett katalogpar, ligger i en annan basmapp. - -The folder should be excluded from synchronization via filter. -Mappen bör undantas från synkronisering, via filtrering. - -Calculating sync directions... -Beräknar synkroniseringsmappar... - -Out of memory. -Minnesbrist. - -Show in Explorer -Visa i Utforskaren - -Open with default application -Öppna med standardprogram - -Browse directory -Sök upp mapp - -Database file %x is incompatible. -Databasfilen %x är inkompatibel. - -Initial synchronization: -Initial synkronisering: - -Database file %x does not yet exist. -Databasfilen %x finns ännu inte. - -Database file is corrupted: -Databasfilen är skadad: - -Loading file %x... -Läser in filen %x... - -The database files do not yet contain information about the last synchronization. -Datapasfilen innehåller ännu ingen information om senaste synkronisering. - -Saving file %x... -Sparar %x... - -Searching for folder %x... -Söker efter mappen %x... - -Timeout while searching for folder %x. -Timeout vid sökning efter mappen %x. - -Cannot get process information. -Processinformation kan inte inhämtas. - -Waiting while directory is locked: -Väntar medan mappen låses: - -Lock owner: -Låsägare: - -Detecting abandoned lock... -Söker övergivna lås... - - -1 sec -%x sec - - -1 sek -%x sek - - -Item exists on left side only -Objektet finns bara på vänster sida - -Item exists on right side only -Objektet finns bara på höger sida - -Left side is newer -Vänster sida är nyare - -Right side is newer -Höger sida är nyare - -Items have different content -Objekten har olika innehåll - -Both sides are equal -Bägge sidor är lika - -Conflict/item cannot be categorized -Konflikten/Objektet kan inte kategoriseras - -Copy new item to left -Kopiera nytt objekt åt vänster - -Copy new item to right -Kopiera nytt objekt åt höger - -Delete left item -Ta bort vänster objekt - -Delete right item -Ta bort höger objekt - -Move file on left -Flytta fil på vänster sida - -Move file on right -Flytta fil på höger sida - -Update left item -Uppdatera objekt på vänster sida - -Update right item -Uppdatera objekt på höger sida - -Do nothing -Gör ingenting - -Update attributes on left -Uppdatera attribut på vänster sida - -Update attributes on right -Uppdatera attribut på höger sida - -Error parsing file %x, row %y, column %z. -Tolkningsfel på filen %x, rad %y, kolumn %z. - -Services -Tjänster - -Show All -Visa all - -Hide Others -Dölj andra - -Hide %x -Dölj %x - -Quit %x -Avsluta %x - -Cannot set directory locks for the following folders: -Kan inte ange mapplås för följanda mappar: - -Errors: -Fel: - -Warnings: -Varningar: - -Items processed: -Processade poster: - -Items remaining: -Återstående poster: - -Total time: -Total tid: - -Warning -Varning - -Stopped -Stoppad - -Cleaning up log files: -Städar upp loggfiler: - - -1 thread -%x threads - - -1 tråd -%x trådar - - -%x/sec -%x/sek - -%x items -%x objekt - -Completed successfully -Korrekt slutförd - -Completed with warnings -Slutförd med varningar - -Completed with errors -Slutförd med fel - -Cannot access the Volume Shadow Copy Service. -Kan inte komma åt tjänsten 'Volume Shadow Copy'. - -Please run the 64-bit version of FreeFileSync to create shadow copies on this system. -Använd 64-bitarsversionen av FreeFileSync för att skapa skuggkopior på detta system. - -Volume name %x is not part of file path %y. -Volymnamnet %x är inte en del av sökvägen %y. - -File time and size -Tidsstämpling och storlek - -File content -Filinnehåll - -File size -Filstorlek - -Two way -Tvåvägs - -Mirror -Spegla - -Update -Uppdatera - -Custom -Anpassat - -Multiple... -Flera... - -Cannot write file attributes of %x. -Kan inte skriva filattribut för %x. - -%x and %y have different content. -%x och %y har olika innehåll. - -Data verification error: -Dataverifieringsfel: - -Moving file %x to %y -Flyttar filen %x till %y - -Moving folder %x to %y -Flyttar mappen %x till %y - -Moving symbolic link %x to %y -Flyttar den symboliska länken %x till %y - -Updating file %x -Uppdaterar %x - -Updating symbolic link %x -Uppdaterar symbolisk länk för %x - -Verifying file %x -Verifierar %x - -Updating attributes of %x -Uppdaterar attribut för %x - -Source item %x not found -Källobjektet %x hittades inte - -Parent folder %x is not existing. -Överordnad mapp %x, finns inte. - -Cannot copy file %x to %y. -Kan inte kopiera %x till %y. - -Creating a Volume Shadow Copy for %x... -Skapar en 'Volume Shadow Copy' för %x... - -Cannot find folder %x. -Kan inte hitta mappen %x. - -Target folder %x is already existing, but was not available during folder comparison. -Målmappen %x finns redan, men var inte tillgänglig vid mappjämförelsen. - -Target folder input field must not be empty. -Indatafältet för målmapp får inte vara tomt. - -Source folder %x not found. -Källmappen %x kan inte hittas. - -Please enter a target folder for versioning. -Ange en målmapp för versionshantering. - -The following items have unresolved conflicts and will not be synchronized: -Följande objekt har olösta konflikter, och kommer inte att synkroniseras: - -Folder pair: -Katalogpar: - -The following folders are significantly different. Please check that the correct folders are selected for synchronization. -Följande mappar är påtagligt olika. Tillse att rätt mappar är valda för synkronisering. - -Not enough free disk space available in: -Ej tillräckligt ledigt diskutrymme på: - -Available: -Tillgängligt: - -Some files will be synchronized as part of multiple base folders. -Vissa filer kommer att synkroniseras som en del av flera basmappar. - -To avoid conflicts, set up exclude filters so that each updated file is included by only one base folder. -Konfigurera undantagsfilter så att varje uppdaterad fil inkluderas av endast en basmapp, för att undvika konflikter. - -Versioning folder: -Versionshanteringsmapp: - -Base folder: -Basmapp: - -The versioning folder is contained in a base folder. -Versionshanteringsmappen lagras i en basmapp. - -Synchronizing folder pair: -Synkroniserar katalogpar: - -Generating database... -Skapar databas... - -Searching for old file versions: -Söker efter gamla filversioner: - -Removing old file versions: -Tar bort gamla filversioner: - -Unable to create time stamp for versioning: -Kunde inte skapa tidsstämpel för versionshantering: - -Drag && drop -Dra && släpp - -Select a folder -Välj en mapp - -&New -&Nytt - -&Open... -&Öppna... - -Save &as... -S¶ som... - -E&xit -A&vsluta - -&File -&Arkiv - -&View help -&Visa hjälpen - -&About -&Om - -&Help -&Hjälp - -Usage: -Användning: - -Select folders to watch. -Välj mapp att bevaka. - -Enter a command line. -Mata in ett kommando. - -Press 'Start'. -Tryck 'Start'. - -To get started just import a "ffs_batch" file. -Importera en "ffs_batch"-fil för att komma igång. - -Folders to watch: -Mappar att övervaka: - -Add folder -Lägg till mapp - -Remove folder -Ta bort mapp - -Browse -Bläddra - -Idle time (in seconds): -Vilotid (i sekunder): - -Idle time between last detected change and execution of command -Väntetid mellan senast upptäckta förändring och kommandoexekvering - -Command line: -Kommandorad: - -&Hide console window -&Dölj konsollfönster - - -The command is triggered if: -- files or subfolders change -- new folders arrive (e.g. USB stick insert) - - -Kommandot triggas om: -- filer eller undermappar förändras -- nya mappar upptäcks (ex. USB-minne ansluts) - - -Start -Starta - -About -Om - -Build: %x -Bygge: %x - -All files -Alla filer - -Automated Synchronization -Automatiserad synkronisering - -The %x protocol does not support directory monitoring: -%x-protokollet stödjer inte mappövervakning: - -Directory monitoring active -Mappövervakning aktiv - -Waiting until directory is available: -Väntar på att mappen skall bli tillgänglig: - -&Configure -&Konfigurera - -&Show error message -&Visa felmeddelande - -&Quit -&Avsluta - -&Retry -&Försök igen - - -1 byte -%x bytes - - -1 byte -%x byte - - -%x MB -%x MB - -%x KB -%x KB - -%x GB -%x GB - -Loading... -Läser in... - -Scanning... -Skannar... - -configuration file -konfigurationsfil - -System: Sleep -System: Viloläge - -System: Shut down -System: Stäng av - -Nothing to synchronize -Det finns inget att synkronisera - -Executing command: -Kör kommando: - -You can switch to FreeFileSync's main window to resolve this issue. -Du kan växla till FreeFileSyncs programfönster för att lösa problemet. - -&Don't show this warning again -&Visa inte den här varningen igen - -&Ignore -&Ignorera - -&Switch -&Växla - -Switching to FreeFileSync's main window -Växla till FreeFileSyncs programfönster - -Automatic retry -Automatiskt återförsök - -Ignore &all -Ignorera &fel - -Retrying operation... -Upprepar åtgärden... - -Serious Error -Allvarligt fel - -Last session -Senaste session - -Today -Idag - - -1 day -%x days - - -1 dag -%x dagar - - -Name -Namn - -Last sync -Senaste synkronisering - -Log -Logg - -Folder -Mapp - -Symlink -Symboliska länkar - -Full path -Fullständig sökväg - -Relative path -Relativ sökväg - -Item name -Objektnamn - -Size -Storlek - -Date -Datum - -Extension -Filformat - -Category -Kategori - -Action -Aktivitet - -Local comparison settings -Lokala jämförelseinställningar - -Local synchronization settings -Lokala synkroniseringsinställningar - -Local filter -Lokalt filter - -Active -Aktiv - -None -Inget - -Remove local settings -Ta bort lokala inställningar - -Clear local filter -Rensa lokalt filter - -Copy -Kopiera - -Paste -Klistra in - -The selected folder %x cannot be used with FreeFileSync. -Den valda mappen %x kan inte användas med FreeFileSync. - -Please select a folder on a local file system, network or an MTP device. -Välj en mapp på i ett lokalt filsystem, nätverk eller en MTP-enhet. - -Defined by context of use -Definierad av användningsförhållande - -Requires FreeFileSync Donation Edition -Kräver FreeFileSync Donation Edition - -&Save -&Spara - -Save as &batch job... -Spara som &batch-fil... - -Show &log -Visa &logg - -Start &comparison -&Jämför - -C&omparison settings -I&nställningar för jämförelse - -&Filter settings -&Filterinställningar - -S&ynchronization settings -&Inställningar för synkronisering - -Start &synchronization -&Synkronisera - -&Actions -&Åtgärder - -&Preferences -&Inställningar - -&Language -&Språk - -&Find... -&Sök... - -&Export file list... -&Exportera fillista... - -&Reset layout -&Återställ layout - -&Tools -&Verktyg - -&Check for updates now -&Sök efter uppdateringar nu - -Check &automatically once a week -Sök &automatiskt en gång per vecka - -Cancel -Avbryt - -Compare -Jämför - -Synchronize -Synkronisera - -Add folder pair -Lägg till katalogpar - -Remove folder pair -Ta bort katalogpar - -Access online storage -Anslut fjärrlagring - -Close search bar -Stäng sökfältet - -Find: -Sök: - -Match case -Matcha gemener/VERSALER - -Processed: -Bearbetat: - -Remaining: -Återstår: - -New -Nytt - -Open... -Öppna... - -Save -Spara - -Save as... -Spara som... - -View type: -Visningstyp: - -Select view: -Välj vy: - -Save as default -Spara som standard - -Statistics: -Statistik: - -Number of files and folders that will be deleted -Antal filer och mappar som kommer att tas bort - -Number of files that will be updated -Antal filer som kommer att uppdateras - -Number of files and folders that will be created -Antal filer och mappar som kommer att skapas - -Total bytes to copy -Byte att kopiera - -Arrange folder pair -Arrangera katalogpar - -Main settings: -Huvudinställningar: - -Use local settings: -Använd lokala inställningar: - -Select a variant: -Välj ett alternativ: - -Include &symbolic links: -Inkludera &symboliska länkar: - -&Follow -&Följ - -&Direct -&Direkt - -More information -Mer information - -&Ignore time shift [hh:mm] -&Ignorera tidsändring [hh:mm] - -List of file time offsets to ignore -Lista över filtidsförskjutningar att ignorera - -Example: -Exempel: - -Handle daylight saving time -Hantera sommartid - -Ignore errors -Ignorera fel - -Retry count: -Antal försök: - -Delay (in seconds): -Fördröjning (i sekunder): - -Performance improvements: -Prestandaförbättringar: - -Parallel file operations: -Parallella filoperationer: - -How to get best performance? -Hur får man ut bästa prestanda? - -Local settings: -Lokala inställningar: - -Include: -Inkludera: - -Show examples -Visa exempel - -Select filter rules to exclude certain files from synchronization. Enter file paths relative to their corresponding folder pair. -Skapa filtreringsregler för att undanta vissa filer från synkronisering. Sökvägar relateras till motsvarande katalogpar. - -File size: -Filstorlek: - -Minimum: -Min: - -Maximum: -Max: - -Time span: -Tidsrymd: - -C&lear -&Rensa - -Detect moved files -Hitta flyttade filer - - -- Not supported by all file systems -- Requires and creates database files -- Detection not available for first sync - - -- Stöds inte av alla filsystem -- Kräver och skapar databasfiler -- Identifiering ej tillgänglig för första synkronisering - - -Delete files: -Ta bort filer: - -&Recycle bin -&Papperskorgen - -&Permanent -&Permanent - -&Versioning -&Versionshantering - -Move files to a user-defined folder -Flytta filer till en fördefinierad mapp - -Naming convention: -Regler för namngivning: - -Limit file versions: -Begränsa filversioner: - -Last x days: -Senaste x dagarna: - -&Override default log path: -&Åsidosätt standard loggsökväg: - -Run a command: -Kör ett kommando: - -OK -OK - -Connection type: -Anslutningstyp: - -Connected user accounts: -Anslutna användarkonton: - -&Add connection -&Lägg till anslutning - -&Disconnect -&Koppla ifrån - -Selected user account: -Valt användarkonto: - -Server name or IP address: -Servernamn eller IP-adress: - -Port: -Port: - -Encryption: -Kryptering: - -&Disabled -&Inaktiverad - -&Explicit SSL/TLS -&Explicit SSL/TLS - -Authentication: -Autentisering: - -&Password -&Lösenord - -&Key file -&Nyckel - -&SSH agent -&SSH-agent - -User name: -Användarnamn: - -Private key file: -Privat nyckelfil: - -&Show password -&Visa lösenordet - -Directory on server: -Målmapp på servern: - -Access timeout (in seconds): -Åtkomsttidsgräns (i sekunder): - -SFTP channels per connection: -SFTP-kanaler per anslutning: - -Detect server limit -Identifiera serverbegränsning - -Select Folder -Välj mapp - -Variant: -Alternativ: - -&Don't show this dialog again -&Visa inte den här dialogen igen - -Bytes: -Byte: - -Items: -Objekt: - -Synchronizing... -Synkroniserar... - -Minimize to notification area -Minimera till meddelandefältet - -Bytes -Byte - -Items -Objekt - -When finished: -Vid slutfört: - -Auto-close -Stäng automatiskt - -Close -Stäng - -&Pause -&Paus - -Stop -Stoppa - -Create a batch file for unattended synchronization. To start, double-click this file or schedule in a task planner: %x -Skapa en batch-fil för obevakad synkronisering. Dubbelklicka på filen för att starta den, eller schemalägg i en åtgärdshanterare: %x - -Progress dialog: -Förloppsdialog: - -Run minimized -Kör minimerad - -Show pop-up on errors or warnings -Visa popup vid fel och varningar - -&Cancel -&Avbryt - -Stop synchronization at first error -Stoppa synkroniseringen vid första fel som uppstår - -How can I schedule a batch job? -Hur schemalägger jag en batch-fil? - -&Keep relative paths -&Bevara relativa sökvägar - -&Overwrite existing files -&Skriv över befintliga filer - -The following settings are used for all synchronization jobs. -Följande inställningar används för all synkronisering. - - -Copy to a temporary file (*.ffs_tmp) before overwriting target. -This guarantees a consistent state even in case of a serious error. - - -Kopierar till en temporär fil (*.ffs_tmp), före överskrivning av målet. -Detta garanterar ett konsekvent tillstånd även vid allvarliga fel. - - -recommended -rekommenderas - -Copy shared or locked files using the Volume Shadow Copy Service. -Kopierar delade eller låsta filer med hjälp av tjänsten 'Volume Shadow Copy'. - -requires administrator rights -kräver administratörsrättigheter - -Transfer file and folder permissions. -Överför behörighetsinställningar. - -Show all permanently hidden dialogs and warning messages again -Visa alla permanent dolda dialoger och varningsmeddelanden igen - -Default log path: -Standard loggsökväg: - -&Delete logs after x days: -&Ta bort loggar efter x dagar: - -Notification sounds: -Aviseringsljud: - -Synchronization finished: -Synkronisering slutförd: - -Customize context menu: -Anpassad kontextmeny: - -Description -Beskrivning - -&Default -&Standard - -Feedback and suggestions are welcome: -Återkoppling och förslag välkomnas: - -Home page -Hemsida - -FreeFileSync Forum -FreeFileSync Forum - -Email -E-post - -If you like FreeFileSync: -Om du gillar FreeFileSync: - -Support with a donation -Stöd oss med en donation - -The auto updater was disabled by the administrator. -Automatisk uppdatering inaktiverades av administratören. - -Donation details -Donationsuppgifter - -Source code written in C++ using: -Källkod skriven i C++ med hjälp av: - -Published under the GNU General Public License: -Publicerat under GNU General Public License: - -Many thanks for localization: -Tack för översättning: - -Activate the FreeFileSync Donation Edition by one of the following methods: -Aktivera FreeFileSync Donation Edition med en av följande metoder: - -Activate via internet now: -Aktivera via internet nu: - -Activate online -Ativera online - -Retrieve an offline activation key from the following URL: -Hämta en offline-aktivering från följande URL: - -&Copy to clipboard -&Kopiera till urklipp - -Enter activation key: -Ange aktiveringsnyckel: - -Activate offline -Aktivera offline - -Highlight configurations that have not been run for more than the following number of days: -Färgmarkera konfigurationer som inte har körts på mer än följande antal dagar: - -FreeFileSync requires access rights to avoid "Operation not permitted" errors when synchronizing your data (e.g. Mail, Messages, Calendars). -FreeFileSync kräver åtkomsträttigheter för att undvika "Åtgärden tillåts inte", vid synkronisering av din data (t.ex. Mail, Meddelanden och Kalender). - -Locate the FreeFileSync app -Lokalisera programmet FreeFileSync - -Open Security && Privacy -Öppna Säkerhet och integritet - -Click the lock to allow changes. -Klicka på låset för att tillåta ändringar. - -Drag FreeFileSync into the panel. -Dra och släpp FreeFileSync på panelen. - -Synchronization Settings -Synkroniseringsinställningar - -Access Online Storage -Anslut online-lagring - -Save as a Batch Job -Spara som batch-fil - -Delete Items -Ta bort objekt - -Copy Items -Kopiera objekt - -Options -Alternativ - -Select Time Span -Välj tidsrymd - -Highlight Configurations -Färgmarkera konfigurationer - -Grant Full Disk Access -Tilldela full skivtillgång - -Info -Info - -No log entries -Inga loggposter - -Select all -Markera alla - -&Options -&Alternativ - -Main Bar -Primärt verktygsfält - -Folder Pairs -Katalogpar - -Find -Sök - -View Settings -Visningsinställningar - -Configuration -Inställningar - -Overview -Översikt - -Swap sides -Byt sida - -Show "%x" -Visa "%x" - -&Show details -&Visa detaljerat - -FreeFileSync %x is available! -FreeFileSync %x finns tillgänglig! - -Local path not available for %x. -Lokal sökväg ej tillgänglig för %x. - -Confirm -Bekräfta - - -Do you really want to execute the command %y for one item? -Do you really want to execute the command %y for %x items? - - -Vill du verkligen verkställa kommandot %y för ett objekt? -Vill du verkligen verkställa kommandot %y för %x objekt? - - -&Execute -&Kör - -Set direction: -Ange riktning: - -multiple selection -flerval - -&Include via filter: -&Inkludera via filter: - -&Exclude via filter: -&Undanta via filter: - -Include temporarily -Inkludera tillfälligt - -Exclude temporarily -Undanta tillfälligt - -&Synchronize selection -&Synkronisera markerat - -&Copy to... -&Kopiera till... - -&Delete -&Ta bort - -Show icons: -Visa ikoner: - -Small -Liten - -Medium -Normal - -Large -Stor - -Select time span... -Välj tidsintervall... - -Donation Edition -Donationsutgåva - -Folder Comparison and Synchronization -Mappjämförelse och synkronisering - -Configuration saved -Inställningar sparade - -FreeFileSync batch -FreeFileSync batch - -Do you want to save changes to %x? -Vill du spara ändringar till %x? - -Never save &changes -Spara aldrig &ändringar - -Do&n't save -Spara &inte - -%x cannot be renamed. -%x kan inte namnändras. - -New name: -Nytt namn: - -Rename Configuration -Byt namn på konfigurationen - -Configuration name must not be empty. -Konfigurationsnamnet kan inte lämnas tomt. - -&Rename... -&Byt namn... - -Hide configuration -Dölj konfigurationen - -Highlight... -Färgmarkera... - -Clear filter -Rensa filter - -Show files that exist on left side only -Visa filer som endast finns till vänster - -Show files that exist on right side only -Visa filer som endast finns till höger - -Show files that are newer on left -Visa filer som är nyare till vänster - -Show files that are newer on right -Visa filer som är nyare till höger - -Show files that are equal -Visa filer som är lika - -Show files that are different -Visa filer som är olika - -Show conflicts -Visa konflikter - -Show files that will be created on the left side -Visa filer som kommer att skapas till vänster - -Show files that will be created on the right side -Visa filer som kommer att skapas till höger - -Show files that will be deleted on the left side -Visa filer som kommer att tas bort till vänster - -Show files that will be deleted on the right side -Visa filer som kommer att tas bort till höger - -Show files that will be updated on the left side -Visa filer som kommer att uppdateras på vänster sida - -Show files that will be updated on the right side -Visa filer som kommer att uppdateras på höger sida - -Show files that won't be copied -Visa filer som inte kommer att kopieras - -Show filtered or temporarily excluded files -Visa filtrerade eller tillfälligt undantagna filer - -Filter -Filter - -All files are in sync -Alla filer är synkroniserade - - -1 directory -%x directories - - -1 mapp -%x mappar - - - -1 file -%x files - - -1 fil -%x filer - - - -Showing %y of 1 row -Showing %y of %x rows - - -Visar %y av 1 rad -Visar %y av %x rader - - -Cannot find %x -Kan inte hitta %x - -Move up -Flytta upp - -Move down -Flytta ner - -Comma-separated values -Kommaseparerade värden - -File list exported -Fillista exporterad - -Searching for program updates... -Söker efter programuppdateringar... - -Paused -Pausad - -Stop requested... -Stopp begärt... - -Initializing... -Initierar... - -Comparing content... -Jämför innehåll... - -&Continue -&Fortsätt - -Progress -Förlopp - -Thank you, %x, for your donation and support! -Tack %x, för din donation och ditt stöd! - -Connections -Anslutningar - -Recommended range: -Rekommenderat intervall: - -Do you really want to disconnect from user account %x? -Vill du verkligen koppla ner användarkonto %x? - -Password: -Lösenord: - -Key passphrase: -Nyckellösenfras: - -Please enter a file path. -Ange en filsökväg. - - -Copy the following item to another folder? -Copy the following %x items to another folder? - - -Vill du kopiera följande objekt till en annan mapp? -Vill du kopiera följande %x objekt till en annan mapp? - - -Please enter a target folder. -Ange en målmapp. - - -Do you really want to move the following item to the recycle bin? -Do you really want to move the following %x items to the recycle bin? - - -Vill du verkligen flytta följande objekt till papperskorgen? -Vill du verkligen flytta följande %x objekt till papperskorgen? - - -Move -Flytta - - -Do you really want to delete the following item? -Do you really want to delete the following %x items? - - -Vill du verkligen ta bort följande objekt? -Vill du verkligen ta bort följande %x objekt? - - -Start to synchronize the selection? -Vill du börja synkronisera markerat? - -Start synchronization now? -Vill du starta synkroniseringen nu? - -Copy DACL, SACL, Owner, Group -Kopiera DACL, SACL, Ägare, Grupp - -Integrate external applications into context menu. The following macros are available: -Integrera externa program i högerklicksmeny. Följande variabler finns tillgängliga: - -Full file or folder path -Fullständig fil- eller mappsökväg - -Parent folder path -Överordnad mappsökväg - -Temporary local copy for SFTP and MTP storage -Temporär lokal kopia för SFTP- och MTP-lagring - -Parameters for opposite side -Parametrar för motstående sida - -Show hidden dialogs again -Visa dolda dialoger igen - -All dialogs shown -Alla dialoger visade - -Downloading update... -Laddar ner uppdatering... - -Identify equal files by comparing modification time and size. -Identifiera likadana filer genom att jämföra tidsstämpling och filstorlek. - -Identify equal files by comparing the file content. -Identifiera likadana filer genom att jämföra filinnehåll. - -Identify equal files by comparing their file size. -Identifiera likadana filer genom att jämföra filstorlek. - -Identify and propagate changes on both sides. Deletions, moves and conflicts are detected automatically using a database. -Identifierar och sprider förändringar på båda sidor. Borttagningar, förflyttningar och konflikter detekteras automatiskt med hjälp av en databas. - -Create a mirror backup of the left folder by adapting the right folder to match. -Skapar en speglad säkerhetskopia av vänstra mappen genom att anpassa den högra. - -Copy new and updated files to the right folder. -Kopierar nya och uppdaterade filer till höger mapp. - -Configure your own synchronization rules. -Konfigurera dina egna synkroniseringsregler. - -Comparison -Jämförelse - -Synchronization -Synkronisering - -This week -Denna veckan - -This month -Denna månaden - -This year -I år - -Byte -Byte - -KB -KB - -MB -MB - -Retain deleted and overwritten files in the recycle bin -Behåll borttagna och överskrivna filer i papperskorgen - -Delete and overwrite files permanently -Ta bort och skriv över filer permanent - -Replace -Byt ut - -Move files and replace if existing -Flytta filer och byt ut om de redan finns - -Time stamp -Tidsstämpel - -Move files into a time-stamped subfolder -Flytta filer till en tidsstämplad undermapp - -File -Fil - -Append a time stamp to each file name -Lägg till en tidsstämpel till varje filnamn - -On completion: -Vid slutförd åtgärd: - -On errors: -Vid fel: - -On success: -Vid slutfört: - -Main config -Huvudkonfiguration - -empty -tom - -Leave as unresolved conflict -Ignorera konflikt - -YYYY-MM-DD hhmmss -YYYY-MM-DD hhmmss - -Minimum version count must be smaller than maximum count. -Minsta antal versioner måste vara mindre än maximalt antal. - -&Restore -&Återställ - -Files -Filer - -Percentage -Procent - -Failed to retrieve update information. -Kunde inte hämta uppdateringsinformation. - -Automatic updates: -Automatiska uppdateringar: - -Check for Program Updates -Sök efter programuppdateringar - -Auto-update now or download manually from the FreeFileSync home page? -Vill du uppdatera automatiskt nu, eller ladda ner manuellt från FreeFileSyncs hemsida? - -&Auto-update -&Auto-uppdatera - -&Home page -&Hemsida - -Download now? -Vill du ladda ner nu? - -&Download -&Ladda ner - -FreeFileSync is up to date. -FreeFileSync är uppdaterad. - -Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now? -Kan inte hitta aktuellt FreeFileSync versionsnummer online. En nyare version är troligen tillgänglig. Vill du kontrollera manuellt nu? - -&Check -&Kontrollera - -Consistency check failed for %x. -Konsekvenskontroll misslyckades för %x. - -Installation was registered on a different operating system. -Installationen har registrerats på ett annat operativsystem. - -Failed to activate FreeFileSync Donation Edition. -Kunde inte aktivera FreeFileSync Donation Edition. - -Incorrect activation key. -Felaktig aktiveringsnyckel. - -Unable to register to receive system messages. -Det gick inte att registrera mottagning av systemmeddelanden. - -The %x installation option is only available in the FreeFileSync Donation Edition. -Installationsalternativet %x är endast tillgängligt i FreeFileSync Donation Edition. - -Cannot find system function %x. -Kan inte hitta systemfunktion %x. - -Unable to register device notifications for %x. -Kunde inte registrera enhetsavisering för %x. - -The file is locked by another process: -Filen är låst av en annan process: - -Failed to determine file permission support for folder %x. -Kunde inte avgöra filbehörighetsstöd för mappen %x. - -Cannot read security context of %x. -Kan inte läsa säkerhetskontext för %x. - -Cannot write security context of %x. -Kan inte skriva säkerhetskontext för %x. - -Cannot read permissions of %x. -Kan inte läsa behörigheter för %x. - -Cannot copy permissions from %x to %y. -Kan inte kopiera rättigheter från %x till %y. - -%x is not a regular directory name. -%x är inte ett vanligt mappnamn. - -Cannot copy attributes from %x to %y. -Kan inte kopiera attribut från %x till %y. - -%x TB -%x TB - -%x PB -%x PB - - -1 min -%x min - - -1 min -%x min - - - -1 hour -%x hours - - -1 timma -%x timmar - - -Cannot set privilege %x. -Kan inte att ange behörigheten %x. - -Unable to suspend system sleep mode. -Det går inte att avbryta systemets viloläge. - -Cannot change process I/O priorities. -Kan inte ändra I/O-prioritet. - -Checking recycle bin failed for folder %x. -Kontroll av papperskorgen misslyckades för %x. - -Unable to shut down the system. -Kan inte stänga av systemet. - -Prepare installation -Förbered installation - -Choose which components you want to install. -Välj vilka komponenter du vill installera. - -Select installation type: -Välj installationstyp: - -Local -Lokal - -Portable -Portabel - -Save settings in %x -Spara inställningar i %x - -Register FreeFileSync file extensions -Registrerar filformat för FreeFileSync - -Create Explorer context menu entries -Skapar kontextmeny för Utforskaren - -Save settings in installation directory -Sparar inställningar i programmappen - -Do not write to Registry -Skriver inte till registret - -Just copy the files -Kopierar endast programfiler till valfri mapp - -Choose a directory for installation: -Välj installationsmapp: - -Create shortcuts: -Skapa genvägar: - -Desktop -Skrivbord - -Start Menu -Startmeny - -Send To -Skicka till - -Registering FreeFileSync file extensions -Registrerar filformat för FreeFileSync - -Unregistering FreeFileSync file extensions -Avregistrerar filformat för FreeFileSync - -FreeFileSync Configuration -FreeFileSync Konfiguration - -FreeFileSync Batch File -FreeFileSync Batch-fil - -FreeFileSync Synchronization Database -FreeFileSync Synkroniseringsdatabas - -RealTimeSync Configuration -RealTimeSync Konfiguration - -Edit with FreeFileSync -Redigera med FreeFileSync - -Instead of an ad, here's an animal. -Här är ett djur, istället för reklam. - -The FreeFileSync portable version cannot install into a subfolder of %x. -FreeFileSync portabel version kan inte installeras i en undermapp till %x. - -Please choose the local installation type or select a different folder for installation. -Välj lokal installationstyp eller välj en annan mapp för installationen. - -Get the Donation Edition with bonus features and help keep FreeFileSync ad-free. -Hämta donationsversionen med bonusfunktioner och hjälp till att hålla FreeFileSync reklamfri. - diff --git a/FreeFileSync/Build/Resources/Languages/turkish.lng b/FreeFileSync/Build/Resources/Languages/turkish.lng deleted file mode 100755 index 4ce717ec..00000000 --- a/FreeFileSync/Build/Resources/Languages/turkish.lng +++ /dev/null @@ -1,2136 +0,0 @@ -
- Türkçe - Kaya Zeren - tr_TR - flag_turkey.png - 2 - n == 1 ? 0 : 1 -
- -Cannot read file %x. -%x dosyası okunamadı. - - -Unexpected size of data stream. -Expected: %x bytes -Actual: %y bytes - - -Veri akışının boyutu beklenenden farklı. -Beklenen: %x bayt -Gerçekleşen: %y bayt - - -Cannot write file %x. -%x dosyası yazılamadı. - -Cannot write permissions of %x. -%x izinleri yazılamadı. - -Operation not supported between different devices. -Bu işlem farklı aygıtlar arasında yapılamaz. - -Cannot delete file %x. -%x dosyası silinemedi. - -Cannot delete symbolic link %x. -%x sembolik bağlantısı silinemedi. - -Cannot delete directory %x. -%x klasörü silinemedi. - -Cannot move file %x to %y. -%x dosyası %y üzerine taşınamadı. - -Cannot copy symbolic link %x to %y. -%x sembolik bağlantısı %y üzerine kopyalanamadı. - -Error Code %x -Hata Kodu %x - -Cannot read directory %x. -%x klasörü okunamadı. - -Cannot write modification time of %x. -%x dosyasının değişiklik tarihi yazılamadı. - -Cannot read file attributes of %x. -%x dosyasının öznitelikleri okunamadı. - -Cannot create directory %x. -%x klasörü oluşturulamadı. - -Cannot determine final path for %x. -%x dosyasının son yolu belirlenemedi. - -Operation not supported by device. -Bu işlem bu aygıt üzerinde yapılamaz. - -Cannot resolve symbolic link %x. -%x sembolik bağlantısı çözümlenemedi. - -Unable to move %x to the recycle bin. -%x geri dönüşüm kutusuna atılamadı. - -Authentication completed. -Kimlik doğrulandı. - -You may close this page now and continue with FreeFileSync. -Bu pencereyi kapatıp FreeFileSync kullanmaya devam edebilirsiniz. - -Authentication failed. -Kimlik doğrulanamadı. - -Unable to connect to %x. -%x üzerine bağlanılamadı. - -Cannot find %x. -%x bulunamadı. - -The name %x is used by more than one item in the folder. -%x adı klasördeki birden fazla öge için kullanılmış. - -Please authorize access to user account %x. -Lütfen %x kullanıcı hesabına erişim izni verin. - -Cannot open file %x. -%x dosyası açılamadı. - -The name %x is already used by another item. -%x adı başka bir öge tarafından kullanılıyor. - -Cannot determine free disk space for %x. -%x için boş disk alanı belirlenemedi. - -Unable to disconnect from %x. -%x bağlantısı kesilemedi. - -Unable to access %x. -%x bağlantısı kurulamadı. - -Failed to get information about server %x. -%x sunucusu hakkında bilgi alınamadı. - -Cannot monitor directory %x. -%x klasörü izlenemiyor. - -Cannot find device %x. -%x aygıtı bulunamadı. - -Cannot open directory %x. -%x klasörü açılamadı. - -Unsupported item type. -Dosya türü desteklenmiyor. - -Incorrect command line: -Satırdaki komut geçersiz: - -The server does not support authentication via %x. -Sunucu %x üzerinden kimlik doğrulamasını desteklemiyor. - -Required: -Zorunlu: - - -Operation timed out after 1 second. -Operation timed out after %x seconds. - - -İşlem 1 saniye sonunda zaman aşımına uğradı. -İşlem %x saniye sonunda zaman aşımına uğradı. - - - -Cannot wait on more than 1 connection at a time. -Cannot wait on more than %x connections at a time. - - -Aynı anda 1 taneden fazla bağlantı beklenemez. -Aynı anda %x taneden fazla bağlantı beklenemez. - - -Active connections: %x -Etkin bağlantı sayısı: %x - -Failed to open SFTP channel number %x. -%x SFTP kanal numarası açılamadı. - -Both sides have changed since last synchronization. -Son eşitlemeden bu yana iki tarafında içeriği değişmiş. - -Cannot determine sync-direction: -Eşitleme yönü belirlenemedi: - -No change since last synchronization. -Son eşitlemeden bu yana bir değişiklik olmamış. - -The database entry is not in sync considering current settings. -Geçerli kayıtlar ile veritabanı kaydı aynı değil. - -Setting default synchronization directions: Old files will be overwritten with newer files. -Varsayılan eşitleme yönleri ayarlanıyor: Yeni dosyalar eski dosyaların üzerine yazılacak. - -Creating file %x -%x dosyası oluşturuluyor - -Creating folder %x -%x klasörü oluşturuluyor - -Creating symbolic link %x -%x sembolik bağlantısı oluşturuluyor - -Moving file %x to the recycle bin -%x dosyası Geri Dönüşüm Kutusuna atılıyor - -Moving folder %x to the recycle bin -%x klasörü Geri Dönüşüm Kutusuna atılıyor - -Moving symbolic link %x to the recycle bin -%x simgesel bağlantısı Geri Dönüşüm Kutusuna atılıyor - -Deleting file %x -%x dosyası siliniyor - -Deleting folder %x -%x klasörü siliniyor - -Deleting symbolic link %x -%x sembolik bağlantısı siliniyor - -Checking recycle bin availability for folder %x... -%x klasörü için Geri Dönüşüm Kutusu kullanılabilir mi diye bakılıyor... - -The recycle bin is not supported by the following folders. Deleted or overwritten files will not be able to be restored: -Geri Dönüşüm Kutusu şu klasörler tarafından desteklenmiyor. Silinmiş ya da üzerine yazılmış klasörler geri yüklenemez: - -An exception occurred -Olağan dışı bir durumla karşılaşıldı - -A left and a right directory path are expected after %x. -%x ardından sol ve sağ klasör belirtilmelidir. - -Syntax error -Yazım hatası - -Cannot find file %x. -%x dosyası bulunamadı. - -Error -Sorun - -File %x does not contain a valid configuration. -%x dosyası geçerli yapılandırma bilgilerini içermiyor. - -The config file must not contain settings at directory pair level when directories are set via command line. -Klasörler komut satırından seçildiği zaman, yapılandırma dosyasında klasör çifti düzeyinde ayarlar bulunmamalıdır. - -Directories cannot be set for more than one configuration file. -Klasörler birden fazla yapılandırma dosyasında kullanılamaz. - -Command line -Komut Satırı - -Syntax: -Yazım: - -config files: -yapılandırma dosyaları: - -directory -klasör - -global config file: -genel yapılandırma dosyası: - -Any number of FreeFileSync "ffs_gui" and/or "ffs_batch" configuration files. -FreeFileSync "ffs_gui" ya da "ffs_batch" yapılandırma dosyalarının sayısı. - -Any number of alternative directory pairs for at most one config file. -En fazla bir yapılandırma dosyası için herhangi bir sayıda alternatif klasör çifti. - -Open the selected configuration for editing only, without executing it. -Seçilmiş yapılandırmayı yürütmeden yalnız düzenlemek için açar. - -Path to an alternate GlobalSettings.xml file. -Alternatif GlobalSettings.xml dosyasının yolu. - -Installation files are corrupted. Please reinstall FreeFileSync. -Kurulum dosyaları bozulmuş. Lütfen FreeFileSync uygulamasını yeniden kurun. - -Cannot find the following folders: -Aşağıdaki klasörler bulunamadı: - -The following folders do not yet exist: -Şu klasörler bulunamadı: - -The folders are created automatically when needed. -Klasörler gerektiğinde otomatik olarak oluşturulur. - -The following folder paths differ in case. Please use a single form in order to avoid duplicate accesses. -Şu klasör yolu büyük küçük harf olarak farklı. Lütfen çift erişimleri engellemek için tek bir biçim kullanın. - -Scanning: -Taranıyor: - -Comparison finished: -Karşılaştırma tamamlandı: - - -1 item found -%x items found - - -1 öge bulundu -%x öge bulundu - - -Time elapsed: -Geçen süre: - -File %x has an invalid date. -%x dosyasının tarihi geçersiz. - -Date: -Tarih: - -Files have the same date but a different size. -Dosyaların tarihleri aynı ancak boyutları farklı. - -Size: -Boyut: - -Content comparison was skipped for excluded files. -Katılmayan dosyalar için içerik karşılaştırması atlandı. - -Items differ in attributes only -Yalnız öznitelikleri farklı olan ögeler - -Resolving symbolic link %x -%x sembolik bağlantısı çözümleniyor - -Comparing content of files %x -%x dosyalarının içeriği karşılaştırılıyor - -Generating file list... -Dosya listesi oluşturuluyor... - -Fail-safe file copy -Dosyalar sorunsuz kopyalansın - -Enabled -Etkin - -Disabled -Devre Dışı - -Copy locked files -Kilitli dosyalar da kopyalansın - -Copy file access permissions -Dosya Erişim İzinleri de Kopyalansın - -File time tolerance -Yok sayılacak dosya zamanı farkı - -Run with background priority -Artalan önceliği ile çalışsın - -Lock directories during sync -Klasörler eşitleme sırasında kilitlensin - -Verify copied files -Kopyalanmış dosyalar doğrulansın - -Using non-default global settings: -Varsayılan olmayan genel ayarlar kullanılıyor: - -A folder input field is empty. -Bir klasör giriş alanı boş. - -The corresponding folder will be considered as empty. -Karşıdaki klasör boş olarak kabul edilecek. - -Exclude: -Katılmayacak Ögeler: - -One base folder of a folder pair is contained in the other one. -Klasör çiftindeki temel bir klasör diğerinin içinde bulunuyor. - -The folder should be excluded from synchronization via filter. -Süzgeç kullanılarak klasör eşitlemeye katılmamalı. - -Calculating sync directions... -Eşitleme yönleri hesaplanıyor... - -Out of memory. -Bellek yetersiz. - -Show in Explorer -Tarayıcıda Görüntüle - -Open with default application -Varsayılan Uygulama ile Aç - -Browse directory -Klasöre Gözat - -Database file %x is incompatible. -%x veritabanı dosyası uyumsuz. - -Initial synchronization: -Başlangıç eşitlemesi: - -Database file %x does not yet exist. -%x veritabanı dosyası henüz yok. - -Database file is corrupted: -Veritabanı dosyası bozulmuş: - -Loading file %x... -%x dosyaları yükleniyor... - -The database files do not yet contain information about the last synchronization. -Veritabanı dosyalarında henüz son eşitleme bilgileri yok. - -Saving file %x... -%x dosyası kaydediliyor... - -Searching for folder %x... -%x klasörü aranıyor... - -Timeout while searching for folder %x. -%x klasöründeki arama işlemi zaman aşımına uğradı. - -Cannot get process information. -İşlem bilgisi alınamadı. - -Waiting while directory is locked: -Klasör kilitli olduğundan bekleniyor: - -Lock owner: -Kilitleyen: - -Detecting abandoned lock... -Kaldırılmış kilit algılanıyor... - - -1 sec -%x sec - - -1 saniye -%x saniye - - -Item exists on left side only -Yalnız solda bulunan ögeler - -Item exists on right side only -Yalnız sağda bulunan ögeler - -Left side is newer -Soldaki daha yeni ögeler - -Right side is newer -Sağdaki daha yeni ögeler - -Items have different content -İçeriği farklı ögeler - -Both sides are equal -İki taraf eşit - -Conflict/item cannot be categorized -Uyuşmayan/sınıflanamayan ögeler - -Copy new item to left -Yeni öge sola kopyalansın - -Copy new item to right -Yeni öge sağa kopyalansın - -Delete left item -Soldaki öge silinsin - -Delete right item -Sağdaki öge silinsin - -Move file on left -Soldaki dosya taşınsın - -Move file on right -Sağdaki dosya taşınsın - -Update left item -Soldaki öge güncellensin - -Update right item -Sağdaki öge güncellensin - -Do nothing -Hiçbir işlem yapılmasın - -Update attributes on left -Soldaki öznitelikler güncellensin - -Update attributes on right -Sağdaki öznitelikler güncellensin - -Error parsing file %x, row %y, column %z. -%x dosyası işlenirken sorun çıktı, satır %y, sütun %z. - -Services -Hizmetler - -Show All -Tümünü Görüntüle - -Hide Others -Diğerlerini Gizle - -Hide %x -%x Ögesini Gizle - -Quit %x -%x Uygulamasından Çık - -Cannot set directory locks for the following folders: -Şu klasörler kilitlenemedi: - -Errors: -Hatalar: - -Warnings: -Uyarılar: - -Items processed: -İşlenen öge: - -Items remaining: -Kalan öge: - -Total time: -Toplam süre: - -Warning -Uyarı - -Stopped -Durduruldu - -Cleaning up log files: -Günlük dosyaları temizleniyor: - - -1 thread -%x threads - - -1 iş parçacığı -%x iş parçacığı - - -%x/sec -%x/saniye - -%x items -%x öge - -Completed successfully -Tamamlandı - -Completed with warnings -Uyarılar ile tamamlandı - -Completed with errors -Sorunlar ile tamamlandı - -Cannot access the Volume Shadow Copy Service. -Birim Gölge Hizmetine erişilemiyor. - -Please run the 64-bit version of FreeFileSync to create shadow copies on this system. -Lütfen bu sistemde gölge kopyalar oluşturmak için FreeFileSync uygulamasının 64 bit sürümünü kullanın. - -Volume name %x is not part of file path %y. -%x birim adı %y dosya yolunun bir parçası değil. - -File time and size -Tarih ve Saate Göre - -File content -İçeriğe Göre - -File size -Boyuta Göre - -Two way -Çift Yönlü - -Mirror -Yansıtma - -Update -Güncelleme - -Custom -Özel - -Multiple... -Çoklu... - -Cannot write file attributes of %x. -%x dosya öznitelikleri yazılamadı. - -%x and %y have different content. -%x ve %y farklı içeriklere sahip. - -Data verification error: -Veri doğrulama sorunu: - -Moving file %x to %y -%x dosyası %y içine taşınıyor - -Moving folder %x to %y -%x klasörü %y içine taşınıyor - -Moving symbolic link %x to %y -%x sembolik bağlantısı %y içine taşınıyor - -Updating file %x -%x dosyası güncelleniyor - -Updating symbolic link %x -%x sembolik bağlantısı güncelleniyor - -Verifying file %x -%x dosyası doğrulanıyor - -Updating attributes of %x -%x öznitelikleri güncelleniyor - -Source item %x not found -%x kaynak ögesi bulunamadı - -Parent folder %x is not existing. -%x üst klasörü bulunamadı. - -Cannot copy file %x to %y. -%x dosyası %y üzerine kopyalanamadı. - -Creating a Volume Shadow Copy for %x... -%x için Birim Gölge Hizmeti oluşturuluyor... - -Cannot find folder %x. -%x klasörü bulunamadı. - -Target folder %x is already existing, but was not available during folder comparison. -%x hedef klasörü zaten var ancak klasör karşılaştırması sırasında erişilemedi. - -Target folder input field must not be empty. -Hedef klasör giriş alanı boş olmamalı. - -Source folder %x not found. -%x kaynak klasörü bulunamadı. - -Please enter a target folder for versioning. -Sürüm izlemesinde kullanılacak bir hedef klasör yazın. - -The following items have unresolved conflicts and will not be synchronized: -Uyuşmazlığı çözümlenmemiş şu ögeler eşitlenmeyecek: - -Folder pair: -Klasör çifti: - -The following folders are significantly different. Please check that the correct folders are selected for synchronization. -Şu klasörler birbirinden çok farklı. Lütfen eşitleme için doğru klasörleri seçtiğinizden emin olun. - -Not enough free disk space available in: -Şurada yeterli boş disk alanı yok: - -Available: -Kullanılabilir: - -Some files will be synchronized as part of multiple base folders. -Bazı dosyalar çoklu temel klasörlerin bir parçası olarak eşitlenecek. - -To avoid conflicts, set up exclude filters so that each updated file is included by only one base folder. -Katılmayacaklar süzgeçleri ile çakışmalar engellenebilir. Güncellenen dosyalar yalnız bir tek temel klasörden alınır. - -Versioning folder: -Sürüm klasörü: - -Base folder: -Temel klasör: - -The versioning folder is contained in a base folder. -Sürümlendirme klasörü bir temel klasör içinde bulunuyor. - -Synchronizing folder pair: -Eşitlenen klasör çifti: - -Generating database... -Veritabanı oluşturuluyor... - -Searching for old file versions: -Önceki dosya sürümleri aranıyor: - -Removing old file versions: -Önceki dosya sürümleri siliniyor: - -Unable to create time stamp for versioning: -Sürümlendirme için zaman damgası oluşturulamadı: - -Drag && drop -Dosyaları sürükleyip buraya bırakın - -Select a folder -Bir klasör seçin - -&New -&Yeni - -&Open... -&Aç... - -Save &as... -F&arklı Kaydet... - -E&xit -Çı&k - -&File -&Dosya - -&View help -&Yardım Konuları - -&About -H&akkında - -&Help -&Yardım - -Usage: -Kullanım: - -Select folders to watch. -İzlenecek klasörleri seçin. - -Enter a command line. -Bir satır komutu yazın. - -Press 'Start'. -'Başlat' düğmesine tıklayın. - -To get started just import a "ffs_batch" file. -"ffs_batch" dosyasını yükleyerek başlayabilirsiniz. - -Folders to watch: -İzlenecek Klasörler: - -Add folder -Klasör Ekle - -Remove folder -Klasörü Sil - -Browse -Gözat - -Idle time (in seconds): -Boşta Bekleme Süresi (saniye): - -Idle time between last detected change and execution of command -Son algılanan değişiklik ile komutun yürütülmesi arasında beklenecek süre - -Command line: -Satır Komutu: - -&Hide console window -&Konsol penceresini gizle - - -The command is triggered if: -- files or subfolders change -- new folders arrive (e.g. USB stick insert) - - -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) - - -Start -Başlat - -About -Hakkında - -Build: %x -Yapım: %x - -All files -Tüm Dosyalar - -Automated Synchronization -Otomatik Eşitleme - -The %x protocol does not support directory monitoring: -%x iletişim kuralı klasör izlemesini desteklemiyor: - -Directory monitoring active -Klasör izlemesi yapılıyor - -Waiting until directory is available: -Klasörün kullanılabilir olması bekleniyor: - -&Configure -&Yapılandır - -&Show error message -&Hata iletisini görüntüle - -&Quit -Çı&k - -&Retry -&Yeniden Dene - - -1 byte -%x bytes - - -1 bayt -%x bayt - - -%x MB -%x MB - -%x KB -%x KB - -%x GB -%x GB - -Loading... -Yükleniyor... - -Scanning... -Taranıyor... - -configuration file -yapılandırma dosyası - -System: Sleep -Sistem: Uyku - -System: Shut down -Sistem: Kapat - -Nothing to synchronize -Eşitlenecek bir şey yok - -Executing command: -Komut yürütülüyor: - -You can switch to FreeFileSync's main window to resolve this issue. -Bu sorunu çözmek için FreeFileSync ana penceresine geçebilirsiniz. - -&Don't show this warning again -Bu &uyarı bir daha görüntülenmesin - -&Ignore -&Yok Say - -&Switch -&Değiştir - -Switching to FreeFileSync's main window -FreeFileSync ana penceresine geçiliyor - -Automatic retry -Otomatik yeniden denensin - -Ignore &all -Tümünü Yok S&ay - -Retrying operation... -İşlem yeniden deneniyor... - -Serious Error -Ciddi Sorun - -Last session -Önceki oturum - -Today -Bugün - - -1 day -%x days - - -1 gün -%x gün - - -Name -Ad - -Last sync -Son eşitleme - -Log -Günlük - -Folder -Klasör - -Symlink -Smblkbağlantı - -Full path -Tam Yol - -Relative path -Bağıl yol - -Item name -Öge adı - -Size -Boyut - -Date -Tarih - -Extension -Uzantı - -Category -Öge Türü - -Action -İşlem - -Local comparison settings -Yerel karşılaştırma ayarları - -Local synchronization settings -Yerel eşitleme ayarları - -Local filter -Yerel Süzgeç - -Active -Etkin - -None -Yok - -Remove local settings -Yerel Ayarları Sil - -Clear local filter -Yerel Süzgeci Temizle - -Copy -Kopyala - -Paste -Yapıştır - -The selected folder %x cannot be used with FreeFileSync. -Seçilmiş %x klasörü FreeFileSync ile birlikte kullanılamaz. - -Please select a folder on a local file system, network or an MTP device. -Lütfen yerel dosya sistemi, ağ ya da MTP aygıtı üzerinde bulunan bir klasör seçin. - -Defined by context of use -Kullanım bağlamına göre tanımlı - -Requires FreeFileSync Donation Edition -Bu özellik FreeFileSync Bağış Sürümünde bulunur - -&Save -&Kaydet - -Save as &batch job... -&Toplu İş Olarak Kaydet... - -Show &log -Gün&lüğü Görüntüle - -Start &comparison -&Karşılaştırmayı Başlat - -C&omparison settings -K&arşılaştırma Ayarları - -&Filter settings -&Süzme Ayarları - -S&ynchronization settings -Eşi&tleme Ayarları - -Start &synchronization -&Eşitlemeyi Başlat - -&Actions -İş&lemler - -&Preferences -&Ayarlar - -&Language -&Dil - -&Find... -A&rama... - -&Export file list... -&Dosya Listesini Ver... - -&Reset layout -Görünümü &Sıfırla - -&Tools -&Araçlar - -&Check for updates now -&Güncellemeleri Denetle - -Check &automatically once a week -&Haftada Bir Denetlensin - -Cancel -İptal - -Compare -Karşılaştır - -Synchronize -Eşitle - -Add folder pair -Klasör Çifti Ekle - -Remove folder pair -Klasör Çiftini Sil - -Access online storage -Çevrimiçi Depolama Erişimi - -Close search bar -Arama Çubuğunu Kapat - -Find: -Aranacak ifade: - -Match case -Büyük küçük harf uyumu göz önüne alınsın - -Processed: -İşlenen: - -Remaining: -Kalan: - -New -Yeni - -Open... -Aç... - -Save -Kaydet - -Save as... -Farklı Kaydet... - -View type: -Görünüm Kipi: - -Select view: -Eşit Dosya Görünümü: - -Save as default -Varsayılan Olarak Kaydet - -Statistics: -İstatistikler: - -Number of files and folders that will be deleted -Silinecek dosya ve klasör sayısı - -Number of files that will be updated -Güncellenecek dosya sayısı - -Number of files and folders that will be created -Eklenecek dosya ve klasör sayısı - -Total bytes to copy -Toplam kopyalanacak bayt - -Arrange folder pair -Klasör çiftini belirleyin - -Main settings: -Temel ayarlar: - -Use local settings: -Yerel Ayarlar Kullanılsın: - -Select a variant: -İşlem Türünü Seçin: - -Include &symbolic links: -&Sembolik bağlantılar katılsın: - -&Follow -İ&zlensin - -&Direct -&Yönlendirilsin - -More information -Ayrıntılı bilgiler - -&Ignore time shift [hh:mm] -&Yok sayılacak zaman farkı [ss:dd] - -List of file time offsets to ignore -Zaman farkı yok sayılacak dosyaların listesi - -Example: -Örnek: - -Handle daylight saving time -Yaz saati hakkında bilgiler - -Ignore errors -Sorunlar yok sayılsın - -Retry count: -Deneme Sayısı: - -Delay (in seconds): -Bekleme (saniye): - -Performance improvements: -Başarım İyileştirmeleri: - -Parallel file operations: -Eş Zamanlı İşlenecek Dosya Sayısı: - -How to get best performance? -En iyi başarım nasıl sağlanır? - -Local settings: -Yerel ayarlar: - -Include: -Katılacak Ögeler: - -Show examples -Örneklere Bakın - -Select filter rules to exclude certain files from synchronization. Enter file paths relative to their corresponding folder pair. -Eşitlenmeyecek dosyaların süzülme kurallarını belirleyin. Dosya yollarını bulundukları klasör çiftine göre yazın. - -File size: -Dosya Boyutu: - -Minimum: -En Küçük: - -Maximum: -En Büyük: - -Time span: -Zaman Aralığı: - -C&lear -&Temizle - -Detect moved files -Taşınmış dosyalar algılansın - - -- Not supported by all file systems -- Requires and creates database files -- Detection not available for first sync - - -- Tüm dosya sistemleri tarafından desteklenmez -- Veritabanı dosyalarının kullanılması gerekir -- Algılama, ilk eşitleme sırasında kullanılamaz - - -Delete files: -Dosya Silme İşlemi: - -&Recycle bin -Ge&ri Dönüşüm Kutusuna Atılsın - -&Permanent -&Kalıcı Olarak Silinsin - -&Versioning -Eski &Sürüm Olarak Saklansın - -Move files to a user-defined folder -Dosyalar kullanıcının belirteceği şu klasöre taşınsın - -Naming convention: -Adlandırma Kuralı: - -Limit file versions: -Dosya Sürümü Sayısı Sınırlaması: - -Last x days: -Son x Gün: - -&Override default log path: -Varsayılan yerine kullanılacak günlük y&olu: - -Run a command: -Bir komut yürüt: - -OK -Tamam - -Connection type: -Bağlantı Türü: - -Connected user accounts: -Bağlantılı kullanıcı hesapları: - -&Add connection -&Bağlantı ekle - -&Disconnect -Bağlantıyı &Kes - -Selected user account: -Seçilmiş kullanıcı hesabı: - -Server name or IP address: -Sunucu Adı / IP Adresi: - -Port: -Kapı: - -Encryption: -Şifreleme: - -&Disabled -&Devre Dışı - -&Explicit SSL/TLS -&Açık SSL/TLS - -Authentication: -Kimlik Doğrulaması: - -&Password -&Parola - -&Key file -Anahtar &Dosyası - -&SSH agent -&SSH İstemcisi - -User name: -Kullanıcı Adı: - -Private key file: -Özel Anahtar Dosyası: - -&Show password -Parola &Görüntülensin - -Directory on server: -Sunucudaki Klasör: - -Access timeout (in seconds): -Erişim zaman aşımı (saniye): - -SFTP channels per connection: -Bir Bağlantı için SFTP Kanalı Sayısı: - -Detect server limit -Sunucu Sınırını Bul - -Select Folder -Klasör Seçin - -Variant: -İşlem Türü: - -&Don't show this dialog again -Bu pencere bir daha &görüntülenmesin - -Bytes: -Bayt: - -Items: -Ögeler: - -Synchronizing... -Eşitleniyor... - -Minimize to notification area -Bildirim alanına küçült - -Bytes -Bayt - -Items -Öge - -When finished: -Tamamlandığında: - -Auto-close -Otomatik kapat - -Close -Kapat - -&Pause -&Duraklat - -Stop -Durdur - -Create a batch file for unattended synchronization. To start, double-click this file or schedule in a task planner: %x -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 - -Progress dialog: -İlerleme penceresi: - -Run minimized -Küçültülmüş Çalıştırılsın - -Show pop-up on errors or warnings -Sorun ya da uyarılar açılır pencerede görüntülenir - -&Cancel -İ&ptal edilsin - -Stop synchronization at first error -Çıkan ilk sorunda eşitleme durdurulsun - -How can I schedule a batch job? -Toplu İşlem Zamanlaması Hakkında Bilgiler - -&Keep relative paths -Bağıl yollar &korunsun - -&Overwrite existing files -&Varolan dosyaların üzerine yazılsın - -The following settings are used for all synchronization jobs. -Aşağıdaki ayarlar tüm eşitleme işlemleri için geçerlidir. - - -Copy to a temporary file (*.ffs_tmp) before overwriting target. -This guarantees a consistent state even in case of a serious error. - - -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. - - -recommended -önerilen - -Copy shared or locked files using the Volume Shadow Copy Service. -Paylaşılan ya da kilitlenmiş dosyalar Birim Gölge Hizmetini kullanılarak kopyalanır. - -requires administrator rights -yönetici izinleri gerekir - -Transfer file and folder permissions. -Dosya ve klasör izinleri de aktarılır. - -Show all permanently hidden dialogs and warning messages again -Kalıcı olarak gizlenmiş tüm ileti ve uyarılar yeniden görüntülenir - -Default log path: -Varsayılan günlük dosyası yolu: - -&Delete logs after x days: -&Günlük kayıtlarının silineceği gün sayısı: - -Notification sounds: -Bildirim sesleri: - -Synchronization finished: -Eşitleme tamamlandı: - -Customize context menu: -Sağ Tık Menüsü Uyarlamaları: - -Description -Açıklama - -&Default -&Varsayılan - -Feedback and suggestions are welcome: -Geri bildirim ve önerilerinizi bekliyoruz: - -Home page -Ana Sayfa - -FreeFileSync Forum -FreeFileSync Forumu - -Email -E-posta - -If you like FreeFileSync: -FreeFileSync hoşunuza gittiyse: - -Support with a donation -Bağış yaparak destek olun - -The auto updater was disabled by the administrator. -Otomatik güncelleme yönetici tarafından devre dışı bırakılmış. - -Donation details -Bağış Bilgileri - -Source code written in C++ using: -Kaynak kodu C++ kullanılarak yazılmıştır: - -Published under the GNU General Public License: -GNU Genel Kamu Lisansı koşulları altında yayınlanmıştır: - -Many thanks for localization: -Çeviriler için çok teşekkürler: - -Activate the FreeFileSync Donation Edition by one of the following methods: -FreeFileSync Bağış Sürümü şu yöntemlerden biri ile etkinleştirilebilir: - -Activate via internet now: -İnternet üzerinden etkinleştirme: - -Activate online -Çevrimiçi Etkinleştir - -Retrieve an offline activation key from the following URL: -Şu adresten bir çevrimdışı etkinleştirme anahtarı alarak: - -&Copy to clipboard -&Panoya Kopyala - -Enter activation key: -Etkinleştirme Anahtarını Yazın: - -Activate offline -Çevrimdışı Etkinleştir - -Highlight configurations that have not been run for more than the following number of days: -Şu kadar gündür çalıştırılmayan yapılandırmalar vurgulansın: - -FreeFileSync requires access rights to avoid "Operation not permitted" errors when synchronizing your data (e.g. Mail, Messages, Calendars). -FreeFileSync uygulaması verilerinizi (Posta, İletiler, Takvim gibi) eşitlerken oluşabilecek "İşleme izin verilmiyor" hatalarıyla karşılaşmamak için Tam Disk Erişimi iznine gerek duyuyor. - -Locate the FreeFileSync app -FreeFileSync uygulamasını seçin - -Open Security && Privacy -Güvenlik ve Gizlilik ayarlarını açın - -Click the lock to allow changes. -Değişiklik yapmak için kilit üzerine tıklayın. - -Drag FreeFileSync into the panel. -FreeFileSync simgesini panoya sürükleyin. - -Synchronization Settings -Eşitleme Ayarları - -Access Online Storage -Çevrimiçi Depolama Erişimi - -Save as a Batch Job -Toplu İş Olarak Kaydet - -Delete Items -Ögeleri Sil - -Copy Items -Ögeleri Kopyala - -Options -Ayarlar - -Select Time Span -Zaman Aralığı - -Highlight Configurations -Yapılandırmalar Vurgulansın - -Grant Full Disk Access -Tam Disk Erişimi İzni Verin - -Info -Bilgi - -No log entries -Herhangi bir günlük kaydı yok - -Select all -Tümünü Seç - -&Options -&Ayarlar - -Main Bar -Ana Çubuk - -Folder Pairs -Klasör Çiftleri - -Find -Arama - -View Settings -Görünüm Ayarları - -Configuration -İşlemler - -Overview -Genel - -Swap sides -Sağ ve Sol Tarafları Değiştir - -Show "%x" -"%x" paneli görüntülensin - -&Show details -&Ayrıntılara Bakın - -FreeFileSync %x is available! -FreeFileSync %x sürümü yayınlanmış! - -Local path not available for %x. -%x için yerel yol bulunamadı. - -Confirm -Onaylayın - - -Do you really want to execute the command %y for one item? -Do you really want to execute the command %y for %x items? - - -Bir öge için %y komutunu çalıştırmak istediğinize emin misiniz? -%x öge için %y komutunu çalıştırmak istediğinize emin misiniz? - - -&Execute -Çalış&tır - -Set direction: -Yönü Seç: - -multiple selection -çoklu seçim - -&Include via filter: -&Katılacak ögelere ekle: - -&Exclude via filter: -Katıl&mayacak ögelere ekle: - -Include temporarily -Geçici Olarak Kat - -Exclude temporarily -Geçici Olarak Katma - -&Synchronize selection -&Seçimi Eşitle - -&Copy to... -&Farklı Konuma Kopyala... - -&Delete -&Sil - -Show icons: -Simgeler Görüntülensin: - -Small -Küçük - -Medium -Orta - -Large -Büyük - -Select time span... -Zaman aralığını seçin... - -Donation Edition -Bağış Sürümü - -Folder Comparison and Synchronization -Klasör Karşılaştırma ve Eşitleme - -Configuration saved -Yapılandırma kaydedildi - -FreeFileSync batch -FreeFileSync toplu işi - -Do you want to save changes to %x? -Değişiklikleri %x dosyasına kaydetmek istiyor musunuz? - -Never save &changes -Değişiklikler asla &kaydedilmesin - -Do&n't save -Kaydedilmesi&n - -%x cannot be renamed. -%x yeniden adlandırılamadı. - -New name: -Yeni ad: - -Rename Configuration -Yapılandırmayı Yeniden Adlandır - -Configuration name must not be empty. -Yapılandırma adı boş olamaz. - -&Rename... -&Yeniden Adlandır... - -Hide configuration -Yapılandırma gizlensin - -Highlight... -Vurgula... - -Clear filter -Süzgeci Temizle - -Show files that exist on left side only -Yalnız sol tarafta bulunan dosyaları görüntüler ya da gizler - -Show files that exist on right side only -Yalnız sağ tarafta bulunan dosyaları görüntüler ya da gizler - -Show files that are newer on left -Solda daha yeni olan dosyaları görüntüler ya da gizler - -Show files that are newer on right -Sağda daha yeni olan dosyaları görüntüler ya da gizler - -Show files that are equal -Eşit dosyaları görüntüler ya da gizler - -Show files that are different -Farklı olan dosyaları görüntüler ya da gizler - -Show conflicts -Uyuşmazlıkları görüntüler ya da gizler - -Show files that will be created on the left side -Sol tarafa eklenecek dosyaları görüntüler ya da gizler - -Show files that will be created on the right side -Sağ tarafa eklenecek dosyaları görüntüler ya da gizler - -Show files that will be deleted on the left side -Sol tarafta silinecek dosyaları görüntüler ya da gizler - -Show files that will be deleted on the right side -Sağ tarafta silinecek dosyaları görüntüler ya da gizler - -Show files that will be updated on the left side -Sol tarafta güncellenecek dosyaları görüntüler ya da gizler - -Show files that will be updated on the right side -Sağ tarafta güncellenecek dosyaları görüntüler ya da gizler - -Show files that won't be copied -Kopyalanmayacak dosyaları görüntüler ya da gizler - -Show filtered or temporarily excluded files -Süzülmüş ya da geçici olarak katılmayan dosyaları görüntüler ya da gizler - -Filter -Süzme - -All files are in sync -Tüm dosyalar eşit - - -1 directory -%x directories - - -1 klasör -%x klasör - - - -1 file -%x files - - -1 dosya -%x dosya - - - -Showing %y of 1 row -Showing %y of %x rows - - -%y / 1 satır görüntüleniyor -%y / %x satır görüntüleniyor - - -Cannot find %x -%x bulunamadı - -Move up -Yukarı taşı - -Move down -Aşağı taşı - -Comma-separated values -Virgül ile ayrılmış değerler - -File list exported -Dosya listesi verildi - -Searching for program updates... -Yazılım güncellemesine bakılıyor... - -Paused -Duraklatıldı - -Stop requested... -Durdurulması istendi... - -Initializing... -Başlatılıyor... - -Comparing content... -İçerik karşılaştırılıyor... - -&Continue -&Devam - -Progress -İlerleme - -Thank you, %x, for your donation and support! -Sevgili %x, bağışın ve desteğin için teşekkürler! - -Connections -Bağlantılar - -Recommended range: -Önerilen Aralık: - -Do you really want to disconnect from user account %x? -%x kullanıcı hesabının bağlantısını kesmek istediğinize emin misiniz? - -Password: -Parola: - -Key passphrase: -Anahtar parolası: - -Please enter a file path. -Lütfen bir dosya yolu yazın. - - -Copy the following item to another folder? -Copy the following %x items to another folder? - - -Öge başka bir klasöre kopyalansın mı? -%x öge başka bir klasöre kopyalansın mı? - - -Please enter a target folder. -Lütfen bir hedef klasör yazın. - - -Do you really want to move the following item to the recycle bin? -Do you really want to move the following %x items to the recycle bin? - - -Aşağıdaki ögeyi Geri Dönüşüm Kutusuna atmak istediğinize emin misiniz? -Aşağıdaki %x ögeyi Geri Dönüşüm Kutusuna atmak istediğinize emin misiniz? - - -Move -Atılsın - - -Do you really want to delete the following item? -Do you really want to delete the following %x items? - - -Aşağıdaki ögeyi silmek istediğinize emin misiniz? -Aşağıdaki %x ögeyi silmek istediğinize emin misiniz? - - -Start to synchronize the selection? -Seçimin eşitlenmesi başlatılsın mı? - -Start synchronization now? -Eşitleme başlatılsın mı? - -Copy DACL, SACL, Owner, Group -DACL, SACL, Sahip, Grup kopyalansın - -Integrate external applications into context menu. The following macros are available: -Sağ tık menüsüne dış uygulamalar eklenebilir. Şu kodlar kullanılabilir: - -Full file or folder path -Tam dosya ya da klasör yolu - -Parent folder path -Üst klasör yolu - -Temporary local copy for SFTP and MTP storage -SFTP ve MTP depolama için geçici yerel kopya - -Parameters for opposite side -Diğer tarafın parametreleri - -Show hidden dialogs again -Gizlenmiş Pencereleri Yeniden Görüntüle - -All dialogs shown -Tüm İletiler Görüntüleniyor - -Downloading update... -Güncelleme indiriliyor... - -Identify equal files by comparing modification time and size. -Dosyaların eşit olup olmadığı, son değişiklik zamanı ve boyuta göre belirlenir. - -Identify equal files by comparing the file content. -Dosyaların eşit olup olmadığı, içeriklerine göre belirlenir. - -Identify equal files by comparing their file size. -Dosyaların eşit olup olmadığı boyutlarına göre belirlenir. - -Identify and propagate changes on both sides. Deletions, moves and conflicts are detected automatically using a database. -İki taraftaki değişiklikler de belirlenir ve kopyalanır. Silinme, taşınma ve çakışmalar, veritabanı kullanılarak otomatik olarak belirlenir. - -Create a mirror backup of the left folder by adapting the right folder to match. -Sağ klasör, sola uyacak şekilde değiştirilerek, sol klasörün yansı yedeği oluşturulur. - -Copy new and updated files to the right folder. -Sol taraftaki yeni ya da güncellenmiş dosyalar sağ tarafa kopyalanır. - -Configure your own synchronization rules. -Eşitleme kuralları kullanıcının isteğine göre yapılandırılır. - -Comparison -Karşılaştırma - -Synchronization -Eşitleme - -This week -Bu hafta - -This month -Bu ay - -This year -Bu yıl - -Byte -Bayt - -KB -KB - -MB -MB - -Retain deleted and overwritten files in the recycle bin -Silinmiş ve üzerine yazılmış dosyalar geri dönüşüm kutusunda tutulsun - -Delete and overwrite files permanently -Dosyalar silinsin ve kalıcı olarak üzerine yazılsın - -Replace -Ad Değiştirme - -Move files and replace if existing -Dosyalar taşınır ve varsa üzerine yazılır - -Time stamp -Zaman Damgalama - -Move files into a time-stamped subfolder -Dosyalar zaman damgalı bir alt klasöre taşınır - -File -Dosya - -Append a time stamp to each file name -Dosya adlarına zaman damgası eklenir - -On completion: -Tamamlandığında: - -On errors: -Sorun Çıktığında: - -On success: -Başarılı Olduğunda: - -Main config -Temel Yapılandırma - -empty -boş - -Leave as unresolved conflict -Uyuşmazlık çözümlenmeden bırakılsın - -YYYY-MM-DD hhmmss -YYYY-AA-GG SSddss - -Minimum version count must be smaller than maximum count. -En az sürüm sayısı en çok sürüm sayısı değerinden küçük olmalıdır. - -&Restore -Gö&rüntülensin - -Files -Dosyalar - -Percentage -Yüzde - -Failed to retrieve update information. -Güncelleme bilgileri alınamadı. - -Automatic updates: -Otomatik güncellemeler: - -Check for Program Updates -Güncelleme Denetimi - -Auto-update now or download manually from the FreeFileSync home page? -Şimdi otomatik olarak güncelle ya da FreeFileSync ana sayfasından indir - -&Auto-update -&Otomatik Güncelle - -&Home page -&Ana Sayfadan İndir - -Download now? -İndirmek ister misiniz? - -&Download -İn&dirin - -FreeFileSync is up to date. -FreeFileSync güncel. - -Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now? -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? - -&Check -&Denetle - -Consistency check failed for %x. -%x tutarlılık sınamasından geçemedi. - -Installation was registered on a different operating system. -Kurulum başka bir işletim sistemi üzerinde kayıt edilmiş. - -Failed to activate FreeFileSync Donation Edition. -FreeFileSync Bağış Sürümü etkinleştirilemedi. - -Incorrect activation key. -Etkinleştirme anahtarı hatalı. - -Unable to register to receive system messages. -Sistem iletilerini alabilmek için gerekli kayıt eklenemedi. - -The %x installation option is only available in the FreeFileSync Donation Edition. -%x kurulumu yalnız FreeFileSync Bağış Sürümü ile yapılabilir. - -Cannot find system function %x. -%x sistem işlevi bulunamadı. - -Unable to register device notifications for %x. -%x aygıtının bildirimleri için gerekli kayıt eklenemedi. - -The file is locked by another process: -Dosya başka bir işlem tarafından kilitlenmiş: - -Failed to determine file permission support for folder %x. -%x klasörünün dosya izinleri desteği belirlenemedi. - -Cannot read security context of %x. -%x için güvenlik bağlamı okunamadı. - -Cannot write security context of %x. -%x için güvenlik bağlamı yazılamadı. - -Cannot read permissions of %x. -%x izinleri okunamadı. - -Cannot copy permissions from %x to %y. -İzinler %x üzerinden %y üzerine kopyalanamadı. - -%x is not a regular directory name. -%x geçerli bir klasör adı değil. - -Cannot copy attributes from %x to %y. -Öznitelikler %x üzerinden %y üzerine kopyalanamadı. - -%x TB -%x TB - -%x PB -%x PB - - -1 min -%x min - - -1 dakika -%x dakika - - - -1 hour -%x hours - - -1 saat -%x saat - - -Cannot set privilege %x. -%x izni verilemedi. - -Unable to suspend system sleep mode. -Sistem uyku kipine geçirilemedi. - -Cannot change process I/O priorities. -Giriş/Çıkış işlemi öncelikleri değiştirilemedi. - -Checking recycle bin failed for folder %x. -%x klasörü için Geri Dönüşüm Kutusu denetlenemedi. - -Unable to shut down the system. -Bilgisayar kapatılamıyor. - -Prepare installation -Kuruluma hazırlanıyor - -Choose which components you want to install. -Kurmak istediğiniz bileşenleri seçin. - -Select installation type: -Kurulum türünü seçin: - -Local -Yerel - -Portable -Taşınabilir - -Save settings in %x -Ayarlar %x üzerine kaydedilsin - -Register FreeFileSync file extensions -FreeFileSync Dosya Uzantıları İlişkilendirilsin - -Create Explorer context menu entries -Windows Gezgini Sağ Tık Menü Kayıtları Eklensin - -Save settings in installation directory -Ayarlar Kurulum Klasörüne Kaydedilsin - -Do not write to Registry -Kayıt Defterine Yazılmasın - -Just copy the files -Yalnız Dosyalar Kopyalansın - -Choose a directory for installation: -Kurulum Klasörünü Seçin: - -Create shortcuts: -Oluşturulacak Kısayollar: - -Desktop -Masaüstü - -Start Menu -Başlat Menüsü - -Send To -Gönder - -Registering FreeFileSync file extensions -FreeFileSync dosya uzantıları kayıt defterine ekleniyor - -Unregistering FreeFileSync file extensions -FreeFileSync dosya uzantıları kayıt defterinden siliniyor - -FreeFileSync Configuration -FreeFileSync Yapılandırması - -FreeFileSync Batch File -FreeFileSync Toplu İşlem Dosyası - -FreeFileSync Synchronization Database -FreeFileSync Eşitleme Veritabanı - -RealTimeSync Configuration -RealTimeSync Yapılandırması - -Edit with FreeFileSync -FreeFileSync ile Düzenlensin - -Instead of an ad, here's an animal. -Burada bir reklam yerine bir hayvan var. - -The FreeFileSync portable version cannot install into a subfolder of %x. -FreeFileSync taşınabilir sürümü bir %x alt klasörüne yüklenemez. - -Please choose the local installation type or select a different folder for installation. -Kurulum için farklı bir klasör ya da yerel kurulum türünü seçin. - -Get the Donation Edition with bonus features and help keep FreeFileSync ad-free. -Hediye özellikleri edinmek ve FreeFileSync yazılımını reklamsız kullanmak için Bağış Sürümünü alın. - diff --git a/FreeFileSync/Build/Resources/Languages/ukrainian.lng b/FreeFileSync/Build/Resources/Languages/ukrainian.lng deleted file mode 100755 index 44979449..00000000 --- a/FreeFileSync/Build/Resources/Languages/ukrainian.lng +++ /dev/null @@ -1,2152 +0,0 @@ -
- Українська - lexxai - uk_UA - flag_ukraine.png - 3 - n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2 -
- -Cannot read file %x. -Не вдається прочитати файл %x. - - -Unexpected size of data stream. -Expected: %x bytes -Actual: %y bytes - - -Неочікуваний розмір потоку даних. -Очікуваний: %x байт -Дійсний: %y байт - - -Cannot write file %x. -Не вдається записати файл %x. - -Cannot write permissions of %x. -Не вдається записати права доступу до %x. - -Operation not supported between different devices. -Операція не підтримується між різними пристроями. - -Cannot delete file %x. -Не вдається видалити файл %x. - -Cannot delete symbolic link %x. -Не вдалося вилучити символьне посилання %x. - -Cannot delete directory %x. -Не вдається видалити папку %x. - -Cannot move file %x to %y. -Не вдається перемістити файл %x до %y. - -Cannot copy symbolic link %x to %y. -Не вдається скопіювати символьне посилання %x до %y. - -Error Code %x -Код помилки %x - -Cannot read directory %x. -Не вдається прочитати папку %x. - -Cannot write modification time of %x. -Не вдається записати час модифікації %x. - -Cannot read file attributes of %x. -Не вдається прочитати атрибути файлу %x. - -Cannot create directory %x. -Не вдається створити папку %x. - -Cannot determine final path for %x. -Не вдається визначити кінцевого шляху для %x. - -Operation not supported by device. -Операція не підтримується пристроєм. - -Cannot resolve symbolic link %x. -Не вдається вирішити символьне посилання %x. - -Unable to move %x to the recycle bin. -Не вдається перемістити %x до корзини. - -Authentication completed. -Автентифікація виконана. - -You may close this page now and continue with FreeFileSync. -Ви можете закрити цю сторінку зараз і продовжити з FreeFileSync. - -Authentication failed. -Автентифікація не виконана. - -Unable to connect to %x. -Не вдається з'єднатися з %x. - -Cannot find %x. -Не вдається знайти %x. - -The name %x is used by more than one item in the folder. -Ім'я %x використовується більше ніж одним елементом у папці. - -Please authorize access to user account %x. -Будь ласка, дозвольте доступ до облікового запису користувача %x. - -Cannot open file %x. -Не вдається відкрити файл %x. - -The name %x is already used by another item. -Назва %x вже використовується іншим елементом. - -Cannot determine free disk space for %x. -Не вдається визначити об'єм вільного місця для %x. - -Unable to disconnect from %x. -Неможливо від'єднатися від %x. - -Unable to access %x. -Не вдалося отримати доступ до %x. - -Failed to get information about server %x. -Не вдається отримати інформацію про сервер %x. - -Cannot monitor directory %x. -Не вдається спостереження за папкою %x. - -Cannot find device %x. -Не вдається знайти пристрій %x. - -Cannot open directory %x. -Не вдається відкрити папку %x. - -Unsupported item type. -Непідтримуваний тип елемента. - -Incorrect command line: -Неправильний командний рядок: - -The server does not support authentication via %x. -Сервер не підтримує аутентифікацію за допомогою %x. - -Required: -Потрібно: - - -Operation timed out after 1 second. -Operation timed out after %x seconds. - - -Вичерпався час очікування операції після %x секунди. -Вичерпався час очікування операції після %x секунд. -Вичерпався час очікування операції після %x секунд. - - - -Cannot wait on more than 1 connection at a time. -Cannot wait on more than %x connections at a time. - - -Неможливо очікувати більше ніж на %x з'єднанні одночасно. -Неможливо очікувати більше ніж на %x з'єднання одночасно. -Неможливо очікувати більше ніж на %x з'єднань одночасно. - - -Active connections: %x -Активні з'єднання: %x - -Failed to open SFTP channel number %x. -Не вдалося відкрити SFTP канал номер %x. - -Both sides have changed since last synchronization. -З моменту останньої синхронізації з обох сторін відбулися зміни. - -Cannot determine sync-direction: -Не можна визначити напрям синхронізації: - -No change since last synchronization. -Жодних змін з останньої синхронізації. - -The database entry is not in sync considering current settings. -Запис бази даних не синхронізований з урахуванням поточних налаштувань. - -Setting default synchronization directions: Old files will be overwritten with newer files. -Налаштування напрямку синхронізації за замовчуванням: Старі файли будуть замінені новішими файлами. - -Creating file %x -Створення файлу %x - -Creating folder %x -Створення папки %x - -Creating symbolic link %x -Створення символьного посилання %x - -Moving file %x to the recycle bin -Переміщення файлу %x до корзини - -Moving folder %x to the recycle bin -Переміщення папки %x до корзини - -Moving symbolic link %x to the recycle bin -Переміщення символьного посилання %x до корзини - -Deleting file %x -Вилучення файлу %x - -Deleting folder %x -Вилучення папки %x - -Deleting symbolic link %x -Вилучення символьного посилання %x - -Checking recycle bin availability for folder %x... -Перевірка доступності корзини для папки %x... - -The recycle bin is not supported by the following folders. Deleted or overwritten files will not be able to be restored: -Корзина недоступна для поточних папок. Видалені чи перезаписані файли буде неможливо відновити: - -An exception occurred -Відбулось виключення - -A left and a right directory path are expected after %x. -Шлях до каталогу ліворуч і праворуч очікується після %x. - -Syntax error -Синтаксична помилка - -Cannot find file %x. -Неможливо знайти файл %x. - -Error -Помилка - -File %x does not contain a valid configuration. -Файл %x не містить правильної конфігурації. - -The config file must not contain settings at directory pair level when directories are set via command line. -Конфігураційний файл не повинен містити налаштувань на рівні пар папок, якщо папки задаються командним рядком. - -Directories cannot be set for more than one configuration file. -Папки не можуть бути призначені більш ніж одному файлу конфігурації. - -Command line -Командний рядок - -Syntax: -Синтаксис: - -config files: -файли конфігурації: - -directory -папка - -global config file: -глобальний конфігураційний файл: - -Any number of FreeFileSync "ffs_gui" and/or "ffs_batch" configuration files. -Будь-яка кількість FreeFileSync "ffs_gui" та/або "ffs_batch" файлів конфігурації. - -Any number of alternative directory pairs for at most one config file. -Будь-яка кількість альтернативних пар папок для не більше одного конфігураційного файлу. - -Open the selected configuration for editing only, without executing it. -Відкрити вибрану конфігурацію тільки для редагування без її виконання. - -Path to an alternate GlobalSettings.xml file. -Шлях до альтернативного файлу GlobalSettings.xml. - -Installation files are corrupted. Please reinstall FreeFileSync. -Файли встановлення пошкоджені. Будь ласка, перевстановіть FreeFileSync. - -Cannot find the following folders: -Не вдається знайти такі папки: - -The following folders do not yet exist: -Наступні папки ще не існують: - -The folders are created automatically when needed. -Папки створюються автоматично, коли це потрібно. - -The following folder paths differ in case. Please use a single form in order to avoid duplicate accesses. -Наступні шляхи папок відрізняються за регістром. Будь ласка, використовуйте одну форму регістру, щоб уникнути дублювання доступу. - -Scanning: -Сканування: - -Comparison finished: -Порівняння завершено: - - -1 item found -%x items found - - -Знайдено %x элемент -Знайдено %x элементи -Знайдено %x элементів - - -Time elapsed: -Пройшло часу: - -File %x has an invalid date. -Файл %x має неіснуючу дату. - -Date: -Дата: - -Files have the same date but a different size. -Файли мають одинакову дату, але різний розмір. - -Size: -Розмір: - -Content comparison was skipped for excluded files. -Порівняння вмісту було пропущене для виключених файлів. - -Items differ in attributes only -Елементи відрізняються тільки атрибутами - -Resolving symbolic link %x -Вирішення символьного посилання %x - -Comparing content of files %x -Порівнювання вмісту файлів %x - -Generating file list... -Створення списку файлів... - -Fail-safe file copy -Відмовостійке копіювання файлів - -Enabled -Увімкнути - -Disabled -Вимкнути - -Copy locked files -Копіювати заблоковані файли - -Copy file access permissions -Копіювати права доступу до файлів - -File time tolerance -Толеранс часу файлу - -Run with background priority -Запустити з фоновим пріоритетом - -Lock directories during sync -Заблокувати папки на час синхронізації - -Verify copied files -Перевірити скопійовані файли - -Using non-default global settings: -Використовувати глобальні налаштування не за замовчуванням: - -A folder input field is empty. -Порожнє поле папки. - -The corresponding folder will be considered as empty. -Відповідна папка буде вважатися порожньою. - -Exclude: -Виключити: - -One base folder of a folder pair is contained in the other one. -Одна основна папка з пари папок міститься всередині іншої. - -The folder should be excluded from synchronization via filter. -Папку потрібно виключити з синхронізації за допомогою фільтрів. - -Calculating sync directions... -Встановлення напрямку синхронізації... - -Out of memory. -Недостатньо пам'яті. - -Show in Explorer -Показати у Провіднику - -Open with default application -Відкрити за допомогою програми за замовчуванням - -Browse directory -Переглянути папку - -Database file %x is incompatible. -Несумісний файл бази даних %x. - -Initial synchronization: -Початкова синхронізація: - -Database file %x does not yet exist. -Файл бази даних %x ще не існує. - -Database file is corrupted: -Файл бази даних пошкоджений: - -Loading file %x... -Завантажується файл %x... - -The database files do not yet contain information about the last synchronization. -Файли бази даних не містять інформації про останню синхронізацію. - -Saving file %x... -Збереження файлу %x... - -Searching for folder %x... -Пошук папки %x... - -Timeout while searching for folder %x. -Вичерпався час пошуку папки %x. - -Cannot get process information. -Не вдається отримати інформацію про процес. - -Waiting while directory is locked: -Очікування поки папка заблокована: - -Lock owner: -Власник блокування: - -Detecting abandoned lock... -Виявлено покинуте блокування... - - -1 sec -%x sec - - -%x сек -%x сек -%x сек - - -Item exists on left side only -Елемент існує тільки ліворуч - -Item exists on right side only -Елемент існує тільки праворуч - -Left side is newer -Ліва сторона новіша - -Right side is newer -Права сторона новіша - -Items have different content -Елементи мають різний вміст - -Both sides are equal -Сторони ідентичні - -Conflict/item cannot be categorized -Не вдається категоризувати конфлікт/елемент - -Copy new item to left -Копіювати нові елементи ліворуч - -Copy new item to right -Копіювати нові елементи праворуч - -Delete left item -Вилучити елемент ліворуч - -Delete right item -Вилучити елемент праворуч - -Move file on left -Перемістити файли ліворуч - -Move file on right -Перемістити файли праворуч - -Update left item -Оновити елемент ліворуч - -Update right item -Оновити елемент праворуч - -Do nothing -Нічого не робити - -Update attributes on left -Оновити атрибути ліворуч - -Update attributes on right -Оновити атрибути праворуч - -Error parsing file %x, row %y, column %z. -Помилка розбору файлу %x, рядок %y, колонка %z. - -Services -Служби - -Show All -Показати Усі - -Hide Others -Сховати Інші - -Hide %x -Сховати %x - -Quit %x -Вихід %x - -Cannot set directory locks for the following folders: -Неможливо встановити блокування каталогів для таких папок: - -Errors: -Помилки: - -Warnings: -Попередження: - -Items processed: -Елементів оброблено: - -Items remaining: -Елементів залишилось: - -Total time: -Загальний час: - -Warning -Увага - -Stopped -Зупинено - -Cleaning up log files: -Очищення файлів журналу: - - -1 thread -%x threads - - -%x потік виконання -%x потоки виконання -%x потоків виконання - - -%x/sec -%x/сек - -%x items -%x елементів - -Completed successfully -Завершено успішно - -Completed with warnings -Завершено з попередженнями - -Completed with errors -Завершено з помилками - -Cannot access the Volume Shadow Copy Service. -Не вдається отримати доступ до послуги Тіньового Копіювання Тому. - -Please run the 64-bit version of FreeFileSync to create shadow copies on this system. -Будь ласка, використовуйте 64-розрядну версію FreeFileSync для створення тіньових копій у цій системі. - -Volume name %x is not part of file path %y. -Ім'я тому %x не є частиною шляху до файлу %y. - -File time and size -Дата та розмір файлу - -File content -Вміст файлу - -File size -Розмір файлу - -Two way -Обидва напрямки - -Mirror -Дзеркало - -Update -Оновити - -Custom -Вибірково - -Multiple... -Різні варіанти... - -Cannot write file attributes of %x. -Не вдається записати атрибути файлу %x. - -%x and %y have different content. -%x і %y мають різний вміст. - -Data verification error: -Помилка перевірки даних: - -Moving file %x to %y -Переміщення файлу %x до %y - -Moving folder %x to %y -Переміщення папки %x до %y - -Moving symbolic link %x to %y -Переміщення символьного посилання %x до %y - -Updating file %x -Оновлення файлу %x - -Updating symbolic link %x -Оновлення символьних посилань %x - -Verifying file %x -Перевірка файлу %x - -Updating attributes of %x -Оновлення атрибутів %x - -Source item %x not found -Вихідний елемент %x не знайдено - -Parent folder %x is not existing. -Батьківська папка %x не існує. - -Cannot copy file %x to %y. -Не вдається скопіювати файл %x до %y. - -Creating a Volume Shadow Copy for %x... -Створення Тіньової Копії для %x... - -Cannot find folder %x. -Неможливо знайти папку %x. - -Target folder %x is already existing, but was not available during folder comparison. -Цільова папка %x уже існує, але не була доступна під час порівняння папок. - -Target folder input field must not be empty. -Поле цільової папки не повинно бути порожнім. - -Source folder %x not found. -Вихідну папку %x не знайдено. - -Please enter a target folder for versioning. -Будь ласка, введіть цільову папку для версій. - -The following items have unresolved conflicts and will not be synchronized: -Наступні елементи мають невирішені конфлікти і не будуть синхронізовані: - -Folder pair: -Пара папок: - -The following folders are significantly different. Please check that the correct folders are selected for synchronization. -Наступні папки значно відрізняються. Будь ласка, перевірте що вибрані правильні папки для синхронізації. - -Not enough free disk space available in: -Не достатньо вільного місця на: - -Available: -Доступно: - -Some files will be synchronized as part of multiple base folders. -Деякі файли були синхронізовані як частина декількох основних папок. - -To avoid conflicts, set up exclude filters so that each updated file is included by only one base folder. -Щоб уникнути конфліктів, встановіть виключення фільтрів, щоб кожен оновлений файл містив лише одну базову папку. - -Versioning folder: -Папка з версіями: - -Base folder: -Основна папка: - -The versioning folder is contained in a base folder. -Папка з версіями містить основну папку. - -Synchronizing folder pair: -Синхронізація пари папок: - -Generating database... -Створення бази даних... - -Searching for old file versions: -Пошук старих версій файлів: - -Removing old file versions: -Видалення старих версій файлів: - -Unable to create time stamp for versioning: -Не вдається створити часової мітки для версій: - -Drag && drop -Drag && drop - -Select a folder -Вибрати папку - -&New -&Створити - -&Open... -&Відкрити... - -Save &as... -Зберегти &як... - -E&xit -В&ихід - -&File -&Файл - -&View help -П&ерегляд довідки - -&About -Пр&о програму - -&Help -&Довідка - -Usage: -Використання: - -Select folders to watch. -Виберіть папки для моніторингу. - -Enter a command line. -Введіть рядок команди. - -Press 'Start'. -Натисніть 'Запуск'. - -To get started just import a "ffs_batch" file. -Щоб запустити імпортуйте "ffs_batch" файл. - -Folders to watch: -Папки для спостереження: - -Add folder -Додати папку - -Remove folder -Вилучити папку - -Browse -Переглянути - -Idle time (in seconds): -Час очікування (секунд): - -Idle time between last detected change and execution of command -Час очікування між виявленням останньої зміни та виконанням команди - -Command line: -Командний рядок: - -&Hide console window -&Приховати вікно консолі - - -The command is triggered if: -- files or subfolders change -- new folders arrive (e.g. USB stick insert) - - -Команда спрацьовує, якщо: -- змінилися файли або підпапки -- з'явилися нові папки (наприклад, підключений USB флеш-носій) - - -Start -Запуск - -About -Про - -Build: %x -Збірка: %x - -All files -Всі файли - -Automated Synchronization -Автоматична Синхронізація - -The %x protocol does not support directory monitoring: -Протокол %x не підтримує моніторинг папок: - -Directory monitoring active -Моніторинг папок активний - -Waiting until directory is available: -Очікування поки каталог не стане доступним: - -&Configure -&Налаштувати - -&Show error message -&Показати повідомлення про помилки - -&Quit -В&ихід - -&Retry -&Повторити - - -1 byte -%x bytes - - -%x байт -%x байти -%x байтів - - -%x MB -%x МБ - -%x KB -%x КБ - -%x GB -%x ГБ - -Loading... -Завантаження... - -Scanning... -Сканування... - -configuration file -файл конфігурації - -System: Sleep -Система: Сон - -System: Shut down -Система: Завершення роботи - -Nothing to synchronize -Нічого синхронізувати - -Executing command: -Виконання команди: - -You can switch to FreeFileSync's main window to resolve this issue. -Ви можете перейти до головного вікна FreeFileSync щоб вирішити це питання. - -&Don't show this warning again -&Надалі не показувати це попередження - -&Ignore -&Ігнорувати - -&Switch -&Перейти - -Switching to FreeFileSync's main window -Перехід до головного вікна FreeFileSync - -Automatic retry -Автоматична повторна спроба - -Ignore &all -Ігнорувати &усі - -Retrying operation... -Повтор операції... - -Serious Error -Серйозна помилка - -Last session -Остання сесія - -Today -Сьогодні - - -1 day -%x days - - -%x день -%x дні -%x днів - - -Name -Назва - -Last sync -Остання синхронізація - -Log -Лог - -Folder -Папка - -Symlink -Символьне посилання - -Full path -Повний шлях - -Relative path -Відносний шлях - -Item name -Назва елементу: - -Size -Розмір - -Date -Дата - -Extension -Розширення - -Category -Категорія - -Action -Дія - -Local comparison settings -Налаштування локального порівняння - -Local synchronization settings -Налаштування локальної синхронізації - -Local filter -Локальний фільтр - -Active -Активний - -None -Не задано - -Remove local settings -Вилучити локальні налаштування - -Clear local filter -Очистити локальний фільтр - -Copy -Копіювати - -Paste -Вставити - -The selected folder %x cannot be used with FreeFileSync. -Вибрана папка %x не може бути використана з FreeFileSync. - -Please select a folder on a local file system, network or an MTP device. -Будь ласка, виберіть папку на локальній файловій системі, в мережі чи на MTP пристрої. - -Defined by context of use -Визначено контекстом використання - -Requires FreeFileSync Donation Edition -Потрібна FreeFileSync Donation Edition - -&Save -&Зберегти - -Save as &batch job... -Зберегти як &пакетне завдання... - -Show &log -Показати &журнал - -Start &comparison -Запуск по&рівняння - -C&omparison settings -Налаштування п&орівняння - -&Filter settings -Налаштування &фільтру - -S&ynchronization settings -Н&алаштування синхронізації - -Start &synchronization -Запуск &синхронізації - -&Actions -Ді&ї - -&Preferences -&Уподобання - -&Language -&Мова - -&Find... -З&найти... - -&Export file list... -&Експортувати список файлів... - -&Reset layout -&Скинути розташування - -&Tools -&Інструменти - -&Check for updates now -&Перевірити оновлення зараз - -Check &automatically once a week -Перевіряти &автоматично щотижня - -Cancel -Відмінити - -Compare -Порівняти - -Synchronize -Синхронізувати - -Add folder pair -Додати пару папок - -Remove folder pair -Вилучити пару папок - -Access online storage -Доступ до online сховища - -Close search bar -Закрити панель пошуку - -Find: -Знайти: - -Match case -Враховувати регістр - -Processed: -Оброблено: - -Remaining: -Залишилося: - -New -Нова - -Open... -Відкрити... - -Save -Зберегти - -Save as... -Зберегти як... - -View type: -Тип перегляду: - -Select view: -Вибрати перегляд: - -Save as default -Зберегти як замовчування - -Statistics: -Статистика: - -Number of files and folders that will be deleted -Кількість файлів і папок, які будуть вилучені - -Number of files that will be updated -Кількість файлів і папок, які будуть оновлені - -Number of files and folders that will be created -Кількість файлів і папок, які будуть створені - -Total bytes to copy -Всього скопіювати байтів - -Arrange folder pair -Упорядкувати пару папок - -Main settings: -Головні налаштування: - -Use local settings: -Використати локальні налаштування: - -Select a variant: -Виберіть варіант: - -Include &symbolic links: -Включити &символьні посилання: - -&Follow -&Переходити - -&Direct -&Безпосередньо - -More information -Додаткова інформація - -&Ignore time shift [hh:mm] -&Ігнорувати зсув у часі [hh:mm] - -List of file time offsets to ignore -Список ігнорованих файлових зсувів у часі - -Example: -Приклад: - -Handle daylight saving time -Перехід на літній час вручну - -Ignore errors -Ігнорувати помилки - -Retry count: -Кількість спроб: - -Delay (in seconds): -Затримка (секунд): - -Performance improvements: -Підвищення продуктивності: - -Parallel file operations: -Паралельні файлові операції: - -How to get best performance? -Як отримати найкращу швидкодію? - -Local settings: -Локальні налаштування: - -Include: -Включити: - -Show examples -Показати приклади - -Select filter rules to exclude certain files from synchronization. Enter file paths relative to their corresponding folder pair. -Виберіть правила фільтрації для виключення деяких файлів із синхронізації. Введіть шляхи до файлів відносно відповідної пари папок. - -File size: -Розмір файлу: - -Minimum: -Мінімум: - -Maximum: -Максимум: - -Time span: -Відрізок часу: - -C&lear -О&чистити - -Detect moved files -Виявляти переміщені файли - - -- Not supported by all file systems -- Requires and creates database files -- Detection not available for first sync - - -- Не підтримується всіма файловими системами -- Вимагає та створює файли баз даних -- Визначення недоступне для першої синхронізації - - -Delete files: -Вилучати файли: - -&Recycle bin -&Корзина - -&Permanent -&Безповоротно - -&Versioning -&Управління версіями - -Move files to a user-defined folder -Перемістити файли у визначену користувачем папку - -Naming convention: -Метод іменування: - -Limit file versions: -Обмежити версії файлів: - -Last x days: -Останні x днів: - -&Override default log path: -&Перевизначити шлях журналу за замовчуванням: - -Run a command: -Запустити команду: - -OK -OK - -Connection type: -Тип з'єднання: - -Connected user accounts: -Підключені облікові записи користувачів: - -&Add connection -&Додати з'єднання - -&Disconnect -&Від'єднати - -Selected user account: -Вибраний обліковий запис користувача: - -Server name or IP address: -Ім'я серверу чи IP адреса: - -Port: -Порт: - -Encryption: -Шифрування: - -&Disabled -&Вимкнено - -&Explicit SSL/TLS -&Явний SSL/TLS - -Authentication: -Аутентифікація: - -&Password -&Пароль - -&Key file -&Файл ключа - -&SSH agent -&SSH агент - -User name: -Ім'я користувача: - -Private key file: -Приватний файл ключа: - -&Show password -&Показати пароль - -Directory on server: -Папка на сервері: - -Access timeout (in seconds): -Тайм-аут доступу (у секундах): - -SFTP channels per connection: -SFTP канали на з'єднання: - -Detect server limit -Визначити ліміти сервера - -Select Folder -Вибрати Папку - -Variant: -Варіант: - -&Don't show this dialog again -Більше &не показувати цей діалог - -Bytes: -Байтів: - -Items: -Об'єктів: - -Synchronizing... -Синхронізація... - -Minimize to notification area -Згорнути в область повідомлень - -Bytes -Байт - -Items -Елементи - -When finished: -Після завершення: - -Auto-close -Автозавершення - -Close -Закрити - -&Pause -&Пауза - -Stop -Зупинити - -Create a batch file for unattended synchronization. To start, double-click this file or schedule in a task planner: %x -Створити пакетний файл для автоматичної синхронізації. Щоб запустити двічі клацніть цей файл або заплануйте в планувальнику завдань: %x - -Progress dialog: -Діалог прогресу: - -Run minimized -Запустити згорнутим - -Show pop-up on errors or warnings -Показувати виринаючі вікна при помилках та попередженнях - -&Cancel -&Відмінити - -Stop synchronization at first error -Зупинити синхронізацію при першій помилці - -How can I schedule a batch job? -Як можна запланувати пакетне завдання? - -&Keep relative paths -&Зберегти відносні шляхи - -&Overwrite existing files -&Перезаписати існуючі файли - -The following settings are used for all synchronization jobs. -Наступні налаштування використовуються для всіх завдань синхронізації. - - -Copy to a temporary file (*.ffs_tmp) before overwriting target. -This guarantees a consistent state even in case of a serious error. - - -Скопіювати в тимчасовий файл (*.ffs_tmp) перед перезаписом цільового. -Це гарантує цілісність навіть у випадку серйозної помилки. - - -recommended -рекомендовано - -Copy shared or locked files using the Volume Shadow Copy Service. -Копіювати спільні та заблоковані файли за допомогою сервісу Тіньового Копіювання Тому. - -requires administrator rights -потрібні права адміністратора - -Transfer file and folder permissions. -Перенести права доступу файлів і папок. - -Show all permanently hidden dialogs and warning messages again -Показати всі сховані діалоги і повідомлення з попередженнями знову - -Default log path: -Шлях до журналу за замовчуванням: - -&Delete logs after x days: -&Видалити журнали після x днів: - -Notification sounds: -Звуки сповіщень: - -Synchronization finished: -Синхронізація завершена: - -Customize context menu: -Налаштування контекстного меню: - -Description -Опис - -&Default -&За замовчуванням - -Feedback and suggestions are welcome: -Зворотній зв'язок і пропозиції вітаються: - -Home page -Домашня сторінка - -FreeFileSync Forum -Форум FreeFileSync - -Email -Пошта - -If you like FreeFileSync: -Якщо Вам сподобався FreeFileSync: - -Support with a donation -Підтримати пожертвуванням. - -The auto updater was disabled by the administrator. -Автоматичне оновлення було відключене адміністратором. - -Donation details -Докладно про пожертвування - -Source code written in C++ using: -Код програми написаний на C++ з використанням: - -Published under the GNU General Public License: -Опубліковано за GNU General Public License: - -Many thanks for localization: -Подяка за локалізацію: - -Activate the FreeFileSync Donation Edition by one of the following methods: -Активувати FreeFileSync Donation Edition за допомогою одного з наступних методів: - -Activate via internet now: -Активувати через інтернет зараз: - -Activate online -Активувати online - -Retrieve an offline activation key from the following URL: -Отримати ключ для offline активації за допомогою наступного посилання: - -&Copy to clipboard -&Копіювати в буфер обміну - -Enter activation key: -Ввести ключ активації: - -Activate offline -Активувати offline - -Highlight configurations that have not been run for more than the following number of days: -Виділити конфігурації що не запускались більше ніж наступну кількість днів: - -FreeFileSync requires access rights to avoid "Operation not permitted" errors when synchronizing your data (e.g. Mail, Messages, Calendars). -FreeFileSync вимагає прав доступу, щоб уникнути помилок "Операція не дозволена" під час синхронізації ваших даних (наприклад, Пошти, Повідомлень, Календарів). - -Locate the FreeFileSync app -Розташування програми FreeFileSync - -Open Security && Privacy -Відкрити Захист і безпека - -Click the lock to allow changes. -Натисніть на замок, щоб дозволити зміни. - -Drag FreeFileSync into the panel. -Перетягніть FreeFileSync до панелі. - -Synchronization Settings -Налаштування Синхронізації - -Access Online Storage -Доступ до Online Сховища - -Save as a Batch Job -Зберегти як Пакетне Завдання - -Delete Items -Вилучити Елементи - -Copy Items -Копіювати Елементи - -Options -Опції - -Select Time Span -Виберіть Інтервал Часу - -Highlight Configurations -Налаштування виділення - -Grant Full Disk Access -Надання повний доступ до диску - -Info -Інформація - -No log entries -Немає записів журналу - -Select all -Виділити все - -&Options -&Опції - -Main Bar -Головна панель - -Folder Pairs -Пари Папок - -Find -Знайти - -View Settings -Налаштування перегляду - -Configuration -Конфігурація - -Overview -Огляд - -Swap sides -Поміняти місцями - -Show "%x" -Показати "%x" - -&Show details -&Показати докладніше - -FreeFileSync %x is available! -FreeFileSync %x доступний! - -Local path not available for %x. -Локальний шлях не доступний для %x. - -Confirm -Підтвердити - - -Do you really want to execute the command %y for one item? -Do you really want to execute the command %y for %x items? - - -Справді хочете виконати команду %y для %x елемента? -Справді хочете виконати команду %y для %x елементів? -Справді хочете виконати команду %y для %x елементів? - - -&Execute -&Виконати - -Set direction: -Виберіть напрям: - -multiple selection -груповий вибір - -&Include via filter: -&Включити за допомогою фільтра: - -&Exclude via filter: -В&иключити за допомогою фільтра: - -Include temporarily -Включити тимчасово - -Exclude temporarily -Виключити тимчасово - -&Synchronize selection -&Синхронізувати вибране - -&Copy to... -&Копіювати до... - -&Delete -Ви&далити - -Show icons: -Показати іконки: - -Small -Малий - -Medium -Середній - -Large -Великий - -Select time span... -Виберіть інтервал часу... - -Donation Edition -Donation Edition - -Folder Comparison and Synchronization -Порівнювання та Синхронізація папок - -Configuration saved -Налаштування синхронізації збережено - -FreeFileSync batch -Командний файл FreeFileSync - -Do you want to save changes to %x? -Зберегти зміни в %x? - -Never save &changes -Ніколи не зберігати &зміни - -Do&n't save -&Не зберігати - -%x cannot be renamed. -%x не можна перейменувати. - -New name: -Нова назва: - -Rename Configuration -Перейменувати конфігурацію - -Configuration name must not be empty. -Назва конфігурації не повинна бути порожньою. - -&Rename... -&Перейменувати... - -Hide configuration -Сховати конфігурацію - -Highlight... -Виділити... - -Clear filter -Очистити фільтр - -Show files that exist on left side only -Показати файли, які є тільки ліворуч - -Show files that exist on right side only -Показати файли, які є тільки праворуч - -Show files that are newer on left -Показати файли, які новіші ліворуч - -Show files that are newer on right -Показати файли, які новіші праворуч - -Show files that are equal -Показати однакові файли - -Show files that are different -Показати файли що відрізняються - -Show conflicts -Показати конфлікти - -Show files that will be created on the left side -Показати файли, які будуть створені ліворуч - -Show files that will be created on the right side -Показати файли, які будуть створені праворуч - -Show files that will be deleted on the left side -Показати файли, які будуть вилучені ліворуч - -Show files that will be deleted on the right side -Показати файли, які будуть вилучені праворуч - -Show files that will be updated on the left side -Показати файли, які будуть оновлені ліворуч - -Show files that will be updated on the right side -Показати файли, які будуть оновлені праворуч - -Show files that won't be copied -Показати файли, які не будуть скопійовані - -Show filtered or temporarily excluded files -Показати відфільтровані чи тимчасово виключені елементи - -Filter -Фільтр - -All files are in sync -Всі файли синхронні - - -1 directory -%x directories - - -%x папка -%x папки -%x папок - - - -1 file -%x files - - -%x файл -%x файли -%x файлів - - - -Showing %y of 1 row -Showing %y of %x rows - - -Показано %y з %x рядка -Показано %y з %x рядків -Показано %y з %x рядків - - -Cannot find %x -Неможливо знайти %x - -Move up -Перемістити вверх - -Move down -Перемістити вниз - -Comma-separated values -Значення розділені комою - -File list exported -Список файлів експортовано - -Searching for program updates... -Пошук оновлень програми... - -Paused -Призупинено - -Stop requested... -Зупинити запит... - -Initializing... -Ініціалізація... - -Comparing content... -Порівнювання вмісту... - -&Continue -&Продовжити - -Progress -Прогрес - -Thank you, %x, for your donation and support! -Дякуємо Вам, %x, за ваше пожертвування та підтримку! - -Connections -З'єднання - -Recommended range: -Рекомендований діапазон: - -Do you really want to disconnect from user account %x? -Ви дійсно хочете від’єднатися від облікового запису користувача %x? - -Password: -Пароль: - -Key passphrase: -Ключова парольна фраза: - -Please enter a file path. -Будь-ласка, введіть шлях до файлу. - - -Copy the following item to another folder? -Copy the following %x items to another folder? - - -Копіювати цей %x єлемент у іншу папку? -Копіювати ці %x елементи у іншу папку? -Копіювати ці %x елементів у іншу папку? - - -Please enter a target folder. -Будь ласка, введіть цільову папку. - - -Do you really want to move the following item to the recycle bin? -Do you really want to move the following %x items to the recycle bin? - - -Ви дійсно хочете перемістити цей %x елемент у корзину? -Ви дійсно хочете перемістити ці %x елементи у корзину? -Ви дійсно хочете перемістити ці %x елементів у корзину? - - -Move -Перемістити - - -Do you really want to delete the following item? -Do you really want to delete the following %x items? - - -Ви дійсно хочете вилучити цей %x елемент? -Ви дійсно хочете вилучити ці %x елементи? -Ви дійсно хочете вилучити ці %x елементів? - - -Start to synchronize the selection? -Почати синхронізувати вибране? - -Start synchronization now? -Запустити синхронізацію зараз? - -Copy DACL, SACL, Owner, Group -Скопіювати DACL, SACL, власника, групу - -Integrate external applications into context menu. The following macros are available: -Інтеграція зовнішніх додатків до контекстного меню. Наступні макроси доступні: - -Full file or folder path -Повна назва файлу чи папки - -Parent folder path -Шлях до батьківської папки: - -Temporary local copy for SFTP and MTP storage -Тимчасова локальна копія для SFTP і MTP сховища - -Parameters for opposite side -Параметри для протилежної сторони: - -Show hidden dialogs again -Показати сховані діалоги знову - -All dialogs shown -Показано всі діалоги - -Downloading update... -Завантажується оновлення... - -Identify equal files by comparing modification time and size. -Визначити однакові файли порівнюючи час модифікації та розмір. - -Identify equal files by comparing the file content. -Визначати однакові файли порівнюючи їх вміст. - -Identify equal files by comparing their file size. -Визначати однакові файли порівнюючи їх розмір. - -Identify and propagate changes on both sides. Deletions, moves and conflicts are detected automatically using a database. -Виявити та поширити зміни на обидві сторони. Видалення, перейменування та конфлікти визначаються автоматично використовуючи базу даних. - -Create a mirror backup of the left folder by adapting the right folder to match. -Створення дзеркальної резервної копії лівої папки шляхом приведення правої папки у повну відповідність. - -Copy new and updated files to the right folder. -Скопіювати нові та оновлені файли в праву папку. - -Configure your own synchronization rules. -Налаштувати власні правила синхронізації. - -Comparison -Порівняння - -Synchronization -Синхронізація - -This week -Цього тижня - -This month -Цього місяця - -This year -Цього року - -Byte -Байт - -KB -КБ - -MB -МБ - -Retain deleted and overwritten files in the recycle bin -Залишити видалені і перезаписані файли у корзині - -Delete and overwrite files permanently -Видалити і перезаписати файли назавжди - -Replace -Замінити - -Move files and replace if existing -Перемістити файли замінюючи існуючі - -Time stamp -Відмітка часу - -Move files into a time-stamped subfolder -Перемістити файли в підпапку з часовим шаблоном - -File -Файл - -Append a time stamp to each file name -Приєднати відмітку часу до кожної назви файлу - -On completion: -Після завершення: - -On errors: -Після завершення з помилками: - -On success: -Після успішного завершення: - -Main config -Головна конфігурація - -empty -пусто - -Leave as unresolved conflict -Залишити як невирішений конфлікт - -YYYY-MM-DD hhmmss -YYYY-MM-DD hhmmss - -Minimum version count must be smaller than maximum count. -Мінімальна кількість версій повинна бути меншою, ніж максимальна кількість. - -&Restore -Від&новити - -Files -Файли - -Percentage -Проценти - -Failed to retrieve update information. -Не вдалося отримати інформацію про оновлення. - -Automatic updates: -Автоматичні оновлення: - -Check for Program Updates -Перевірка Оновлень Програми - -Auto-update now or download manually from the FreeFileSync home page? -Автоматично оновити зараз чи завантажити вручную з домашньї сторінки FreeFileSync? - -&Auto-update -&Автоматичне оновлення - -&Home page -&Домашня сторінка - -Download now? -Завантажити зараз? - -&Download -&Завантажити - -FreeFileSync is up to date. -У Вас найновіша версія FreeFileSync. - -Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now? -Не вдається знайти номер поточної версії FreeFileSync он-лайн. Нова версія схоже доступна. Перевірити вручну зараз? - -&Check -&Перевірити - -Consistency check failed for %x. -Перевірка цілісності неуспішна для %x. - -Installation was registered on a different operating system. -Встановлення було зареєстровано на іншій операційній системі. - -Failed to activate FreeFileSync Donation Edition. -Не вдалося активувати FreeFileSync Donation Edition. - -Incorrect activation key. -Неправильний код активації. - -Unable to register to receive system messages. -Не вдається зареєструватися для отримання системних повідомлень. - -The %x installation option is only available in the FreeFileSync Donation Edition. -Варіант установки %x доступний тільки у FreeFileSync Donation Edition. - -Cannot find system function %x. -Не вдається знайти системну функцію %x. - -Unable to register device notifications for %x. -Не вдається зареєструвати повідомлення пристрою для %x. - -The file is locked by another process: -Файл заблоковано іншим процесом: - -Failed to determine file permission support for folder %x. -Не вдалося визначити підтримку дозволу на файл для папки %x. - -Cannot read security context of %x. -Не вдається прочитати контекст безпеки %x. - -Cannot write security context of %x. -Не вдається записати контекст безпеки %x. - -Cannot read permissions of %x. -Не вдається прочитати права доступу до %x. - -Cannot copy permissions from %x to %y. -Не вдається скопіювати права доступу з %x до %y. - -%x is not a regular directory name. -%x не є звичайним іменем папки. - -Cannot copy attributes from %x to %y. -Не вдається скопіювати атрибути з %x до %y. - -%x TB -%x ТБ - -%x PB -%x ПБ - - -1 min -%x min - - -%x хв -%x хв -%x хв - - - -1 hour -%x hours - - -%x година -%x години -%x годин - - -Cannot set privilege %x. -Не вдається встановити привілеї %x. - -Unable to suspend system sleep mode. -Не вдається призупинити режим сну системи. - -Cannot change process I/O priorities. -Не вдалося змінити пріоритетів Вх/Вих процесу. - -Checking recycle bin failed for folder %x. -Перевірка корзини для папки %x не вдалася. - -Unable to shut down the system. -Не вдається завершити роботу системи. - -Prepare installation -Підготовка встановлення - -Choose which components you want to install. -Виберіть які компоненти ви хочете встановити. - -Select installation type: -Виберіть тип встановлення: - -Local -Локальна - -Portable -Портативна - -Save settings in %x -Зберегти налаштування в %x - -Register FreeFileSync file extensions -Зареєструвати розширення файлів FreeFileSync - -Create Explorer context menu entries -Створити пункти контекстного меню Провідника - -Save settings in installation directory -Зберегти налаштування у папці встановлення - -Do not write to Registry -Не записувати у Реєстр - -Just copy the files -Просто скопіювати файли - -Choose a directory for installation: -Виберіть папку для встановлення: - -Create shortcuts: -Створити ярлики: - -Desktop -Робочий стіл - -Start Menu -Меню "Пуск" - -Send To -Відправити - -Registering FreeFileSync file extensions -Реєстрація розширень файлів FreeFileSync - -Unregistering FreeFileSync file extensions -Вилучення реєстрації розширень файлів FreeFileSync - -FreeFileSync Configuration -Конфігурація FreeFileSync - -FreeFileSync Batch File -Файл пакетного завдання FreeFileSync - -FreeFileSync Synchronization Database -База даних синхронізації FreeFileSync - -RealTimeSync Configuration -Конфігурація RealTimeSync - -Edit with FreeFileSync -Редагувати за допомогою FreeFileSync - -Instead of an ad, here's an animal. -Замість реклами, ось тварина. - -The FreeFileSync portable version cannot install into a subfolder of %x. -Портативна версія FreeFileSync не може бути встановлена в підпапку %x. - -Please choose the local installation type or select a different folder for installation. -Будь ласка, виберіть локальний тип інсталяції чи іншу папку для встановлення. - -Get the Donation Edition with bonus features and help keep FreeFileSync ad-free. -Отримайте Donation Edition з бонусними функціями та допоможіть зберегти FreeFileSync без реклами. - diff --git a/FreeFileSync/Source/Makefile b/FreeFileSync/Source/Makefile index 4ecc5f79..d3c1209a 100755 --- a/FreeFileSync/Source/Makefile +++ b/FreeFileSync/Source/Makefile @@ -56,7 +56,6 @@ CPP_FILES+=afs/gdrive.cpp CPP_FILES+=afs/init_curl_libssh2.cpp CPP_FILES+=afs/native.cpp CPP_FILES+=afs/sftp.cpp -CPP_FILES+=afs/libssh2/init_libssh2.cpp CPP_FILES+=ui/batch_config.cpp CPP_FILES+=ui/abstract_folder_picker.cpp CPP_FILES+=ui/batch_status_handler.cpp diff --git a/FreeFileSync/Source/RealTimeSync/application.cpp b/FreeFileSync/Source/RealTimeSync/application.cpp index 307f7d34..63b8ccbe 100644 --- a/FreeFileSync/Source/RealTimeSync/application.cpp +++ b/FreeFileSync/Source/RealTimeSync/application.cpp @@ -28,7 +28,7 @@ using namespace zen; using namespace rts; -IMPLEMENT_APP(Application); +IMPLEMENT_APP(Application) namespace @@ -45,6 +45,11 @@ bool Application::OnInit() #if GTK_MAJOR_VERSION == 2 ::gtk_rc_parse((fff::getResourceDirPf() + "Gtk2Styles.rc").c_str()); + //fix hang on Ubuntu 19.10 (see FFS's application.cpp) + if (::setenv("GIO_USE_VFS", "local", true /*overwrite*/) != 0) + std::cerr << utfTo(formatSystemError(L"setenv(GIO_USE_VFS)", errno)) << "\n"; + g_vfs_get_default(); //returns unowned GVfs* + #elif GTK_MAJOR_VERSION == 3 try { diff --git a/FreeFileSync/Source/RealTimeSync/config.cpp b/FreeFileSync/Source/RealTimeSync/config.cpp index 0549111d..3f084f3a 100644 --- a/FreeFileSync/Source/RealTimeSync/config.cpp +++ b/FreeFileSync/Source/RealTimeSync/config.cpp @@ -155,7 +155,7 @@ void rts::readRealOrBatchConfig(const Zstring& filePath, XmlRealConfig& cfg, std checkXmlMappingErrors(in, filePath); //throw FileError //--------------------------------------------------------------------------------------- - eraseIf(uniqueFolders, [](const Zstring& str) { return trimCpy(str).empty(); }); + std::erase_if(uniqueFolders, [](const Zstring& str) { return trimCpy(str).empty(); }); cfg.directories.assign(uniqueFolders.begin(), uniqueFolders.end()); cfg.commandline = Zstr('"') + fff::getFreeFileSyncLauncherPath() + Zstr("\" \"") + filePath + Zstr('"'); } diff --git a/FreeFileSync/Source/RealTimeSync/monitor.cpp b/FreeFileSync/Source/RealTimeSync/monitor.cpp index 5d103799..d5266c6c 100644 --- a/FreeFileSync/Source/RealTimeSync/monitor.cpp +++ b/FreeFileSync/Source/RealTimeSync/monitor.cpp @@ -23,7 +23,7 @@ const std::chrono::seconds FOLDER_EXISTENCE_CHECK_INTERVAL(1); //wait until all directories become available (again) + logs in network share std::set waitForMissingDirs(const std::vector& folderPathPhrases, //throw FileError - const std::function& requestUiRefresh, std::chrono::milliseconds cbInterval) + const std::function& requestUiUpdate, std::chrono::milliseconds cbInterval) { //early failure! check for unsupported folder paths: for (const Zstring& protoName : { Zstr("ftp"), Zstr("sftp"), Zstr("mtp"), Zstr("gdrive") }) @@ -46,7 +46,7 @@ std::set waitForMissingDirs(const std::vector& const Zstring& folderPath = fff::getResolvedFilePath(phrase); //start all folder checks asynchronously (non-existent network path may block) - if (folderInfos.find(folderPath) == folderInfos.end()) + if (!contains(folderInfos, folderPath)) folderInfos[folderPath] = { phrase, runAsync([folderPath]{ return dirAvailable(folderPath); }) }; } @@ -57,7 +57,7 @@ std::set waitForMissingDirs(const std::vector& std::future& folderAvailable = folderInfo.folderAvailable; while (folderAvailable.wait_for(cbInterval) != std::future_status::ready) - requestUiRefresh(folderPath); //throw X + requestUiUpdate(folderPath); //throw X if (folderAvailable.get()) availablePaths.insert(folderPath); @@ -79,7 +79,7 @@ std::set waitForMissingDirs(const std::vector& //wait some time... for (auto now = std::chrono::steady_clock::now(); now < delayUntil; now = std::chrono::steady_clock::now()) { - requestUiRefresh(folderPath); //throw X + requestUiUpdate(folderPath); //throw X std::this_thread::sleep_for(cbInterval); } @@ -89,7 +89,7 @@ std::set waitForMissingDirs(const std::vector& }); while (folderAvailable.wait_for(cbInterval) != std::future_status::ready) - requestUiRefresh(folderPath); //throw X + requestUiUpdate(folderPath); //throw X if (folderAvailable.get()) break; @@ -119,7 +119,7 @@ struct WaitResult WaitResult waitForChanges(const std::set& folderPaths, //throw FileError - const std::function& requestUiRefresh, std::chrono::milliseconds cbInterval) + const std::function& requestUiUpdate, std::chrono::milliseconds cbInterval) { assert(std::all_of(folderPaths.begin(), folderPaths.end(), [](const Zstring& folderPath) { return dirAvailable(folderPath); })); if (folderPaths.empty()) //pathological case, but we have to check else this function will wait endlessly @@ -161,9 +161,9 @@ WaitResult waitForChanges(const std::set& folderPaths, return WaitResult(folderPath); try { - std::vector changedItems = watcher->getChanges([&] { requestUiRefresh(false /*readyForSync*/); /*throw X*/ }, + std::vector changedItems = watcher->getChanges([&] { requestUiUpdate(false /*readyForSync*/); /*throw X*/ }, cbInterval); //throw FileError - eraseIf(changedItems, [](const DirWatcher::Entry& e) + std::erase_if(changedItems, [](const DirWatcher::Entry& e) { return endsWith(e.itemPath, Zstr(".ffs_tmp")) || //sync.8ea2.ffs_tmp @@ -184,7 +184,7 @@ WaitResult waitForChanges(const std::set& folderPaths, } std::this_thread::sleep_for(cbInterval); - requestUiRefresh(true /*readyForSync*/); //throw X: may start sync at this presumably idle time + requestUiUpdate(true /*readyForSync*/); //throw X: may start sync at this presumably idle time } } @@ -211,7 +211,7 @@ struct ExecCommandNowException {}; void rts::monitorDirectories(const std::vector& folderPathPhrases, std::chrono::seconds delay, const std::function& executeExternalCommand, - const std::function& requestUiRefresh, + const std::function& requestUiUpdate, const std::function& reportError, std::chrono::milliseconds cbInterval) { @@ -222,7 +222,7 @@ void rts::monitorDirectories(const std::vector& folderPathPhrases, std: for (;;) try { - std::set folderPaths = waitForMissingDirs(folderPathPhrases, [&](const Zstring& folderPath) { requestUiRefresh(&folderPath); }, cbInterval); //throw FileError + std::set folderPaths = waitForMissingDirs(folderPathPhrases, [&](const Zstring& folderPath) { requestUiUpdate(&folderPath); }, cbInterval); //throw FileError //schedule initial execution (*after* all directories have arrived) auto nextExecTime = std::chrono::steady_clock::now() + delay; @@ -236,7 +236,7 @@ void rts::monitorDirectories(const std::vector& folderPathPhrases, std: { const WaitResult res = waitForChanges(folderPaths, [&](bool readyForSync) //throw FileError, ExecCommandNowException { - requestUiRefresh(nullptr); + requestUiUpdate(nullptr); if (readyForSync && std::chrono::steady_clock::now() >= nextExecTime) throw ExecCommandNowException(); //abort wait and start sync @@ -249,7 +249,7 @@ void rts::monitorDirectories(const std::vector& folderPathPhrases, std: case WaitResult::FOLDER_UNAVAILABLE: //don't execute the command before all directories are available! lastChangeDetected = DirWatcher::Entry{ DirWatcher::ACTION_UPDATE, res.missingFolderPath}; - folderPaths = waitForMissingDirs(folderPathPhrases, [&](const Zstring& folderPath) { requestUiRefresh(&folderPath); }, cbInterval); //throw FileError + folderPaths = waitForMissingDirs(folderPathPhrases, [&](const Zstring& folderPath) { requestUiUpdate(&folderPath); }, cbInterval); //throw FileError break; } nextExecTime = std::chrono::steady_clock::now() + delay; diff --git a/FreeFileSync/Source/RealTimeSync/monitor.h b/FreeFileSync/Source/RealTimeSync/monitor.h index 06d01161..8a660f4a 100644 --- a/FreeFileSync/Source/RealTimeSync/monitor.h +++ b/FreeFileSync/Source/RealTimeSync/monitor.h @@ -18,7 +18,7 @@ void monitorDirectories(const std::vector& folderPathPhrases, //non-formatted paths that yet require call to getFormattedDirectoryName(); empty directories must be checked by caller! std::chrono::seconds delay, const std::function& executeExternalCommand, - const std::function& requestUiRefresh, //either waiting for change notifications or at least one folder is missing + const std::function& requestUiUpdate, //either waiting for change notifications or at least one folder is missing const std::function& reportError, //automatically retries after return! std::chrono::milliseconds cbInterval); } diff --git a/FreeFileSync/Source/RealTimeSync/tray_menu.cpp b/FreeFileSync/Source/RealTimeSync/tray_menu.cpp index 28266879..3b50e9c6 100644 --- a/FreeFileSync/Source/RealTimeSync/tray_menu.cpp +++ b/FreeFileSync/Source/RealTimeSync/tray_menu.cpp @@ -32,7 +32,7 @@ const std::chrono::milliseconds UI_UPDATE_INTERVAL(100); //perform ui updates no std::chrono::steady_clock::time_point lastExec; -bool updateUiIsAllowed() +bool uiUpdateDue() { const auto now = std::chrono::steady_clock::now(); @@ -247,7 +247,7 @@ private: rts::AbortReason rts::runFolderMonitor(const XmlRealConfig& config, const wxString& jobname) { std::vector dirNamesNonFmt = config.directories; - eraseIf(dirNamesNonFmt, [](const Zstring& str) { return trimCpy(str).empty(); }); //remove empty entries WITHOUT formatting paths yet! + std::erase_if(dirNamesNonFmt, [](const Zstring& str) { return trimCpy(str).empty(); }); //remove empty entries WITHOUT formatting paths yet! if (dirNamesNonFmt.empty()) { @@ -283,14 +283,14 @@ rts::AbortReason rts::runFolderMonitor(const XmlRealConfig& config, const wxStri } }; - auto requestUiRefresh = [&](const Zstring* missingFolderPath) + auto requestUiUpdate = [&](const Zstring* missingFolderPath) { if (missingFolderPath) trayIcon.setMode(TRAY_MODE_WAITING, *missingFolderPath); else trayIcon.setMode(TRAY_MODE_ACTIVE, Zstring()); - if (updateUiIsAllowed()) + if (uiUpdateDue()) trayIcon.doUiRefreshNow(); //throw AbortMonitoring }; @@ -323,7 +323,7 @@ rts::AbortReason rts::runFolderMonitor(const XmlRealConfig& config, const wxStri { monitorDirectories(dirNamesNonFmt, std::chrono::seconds(config.delay), executeExternalCommand, - requestUiRefresh, //throw AbortMonitoring + requestUiUpdate, //throw AbortMonitoring reportError, // UI_UPDATE_INTERVAL / 2); assert(false); diff --git a/FreeFileSync/Source/afs/abstract.h b/FreeFileSync/Source/afs/abstract.h index 535d4114..bc4932b1 100644 --- a/FreeFileSync/Source/afs/abstract.h +++ b/FreeFileSync/Source/afs/abstract.h @@ -408,6 +408,7 @@ inline bool operator!=(const AfsDevice& lhs, const AfsDevice& rhs) { return !(lh inline bool operator< (const AbstractPath& lhs, const AbstractPath& rhs) { return AbstractFileSystem::comparePath(lhs, rhs) < 0; } inline bool operator==(const AbstractPath& lhs, const AbstractPath& rhs) { return AbstractFileSystem::comparePath(lhs, rhs) == 0; } +//inline bool operator==(const AbstractPath& lhs, const AbstractPath& rhs) { return lhs.afsPath.value == rhs.afsPath.value && lhs.afsDevice == rhs.afsDevice; } => premature optimization? inline bool operator!=(const AbstractPath& lhs, const AbstractPath& rhs) { return !(lhs == rhs); } diff --git a/FreeFileSync/Source/afs/abstract_impl.h b/FreeFileSync/Source/afs/abstract_impl.h index 7a175128..c2d07828 100644 --- a/FreeFileSync/Source/afs/abstract_impl.h +++ b/FreeFileSync/Source/afs/abstract_impl.h @@ -255,7 +255,7 @@ private: pathLocks_.access([&](std::map>& pathLocks) { //remove obsolete entries - zen::eraseIf(pathLocks, [](const auto& v) { return !v.second.lock(); }); + std::erase_if(pathLocks, [](const auto& v) { return !v.second.lock(); }); //get or create mutex std::weak_ptr& weakPtr = pathLocks[nativePath]; diff --git a/FreeFileSync/Source/afs/ftp.cpp b/FreeFileSync/Source/afs/ftp.cpp index 8b5f65dd..9ae1c89c 100644 --- a/FreeFileSync/Source/afs/ftp.cpp +++ b/FreeFileSync/Source/afs/ftp.cpp @@ -511,7 +511,7 @@ public: //returns server response (header data) std::string runSingleFtpCommand(const std::string& ftpCmd, bool requiresUtf8, int timeoutSec) //throw SysError { - struct curl_slist* quote = nullptr; + curl_slist* quote = nullptr; ZEN_ON_SCOPE_EXIT(::curl_slist_free_all(quote)); quote = ::curl_slist_append(quote, ftpCmd.c_str()); @@ -748,6 +748,9 @@ private: if (equalAsciiNoCase (line, " MLST") || startsWithAsciiNoCase(line, " MLST ")) //SP "MLST" [SP factlist] CRLF output.mlsd = true; + //so much the theory. In practice FTP server implementers can't read specs, of course: https://freefilesync.org/forum/viewtopic.php?t=6752 + if (equalAsciiNoCase(line, " MLSD")) + output.mlsd = true; //https://tools.ietf.org/html/draft-somers-ftp-mfxx-04#section-3.3 //"Where a server-FTP process supports the MFMT command [...] it MUST include the response to the FEAT command" @@ -1613,7 +1616,7 @@ void ftpFileUpload(const FtpLoginInfo& login, const AfsPath& afsFilePath, //thro accessFtpSession(login, [&](FtpSession& session) //throw SysError { /* - struct curl_slist* quote = nullptr; + curl_slist* quote = nullptr; ZEN_ON_SCOPE_EXIT(::curl_slist_free_all(quote)); //"prefix the command with an asterisk to make libcurl continue even if the command fails" @@ -2085,7 +2088,7 @@ private: { accessFtpSession(login_, [&](FtpSession& session) //throw SysError { - struct curl_slist* quote = nullptr; + curl_slist* quote = nullptr; ZEN_ON_SCOPE_EXIT(::curl_slist_free_all(quote)); quote = ::curl_slist_append(quote, ("RNFR " + session.getServerPathInternal(pathFrom, login_.timeoutSec)).c_str()); //throw SysError quote = ::curl_slist_append(quote, ("RNTO " + session.getServerPathInternal(pathTo.afsPath, login_.timeoutSec)).c_str()); // diff --git a/FreeFileSync/Source/afs/gdrive.cpp b/FreeFileSync/Source/afs/gdrive.cpp index bcbed675..fe4f932a 100644 --- a/FreeFileSync/Source/afs/gdrive.cpp +++ b/FreeFileSync/Source/afs/gdrive.cpp @@ -26,6 +26,7 @@ #include "init_curl_libssh2.h" #include "../base/resolve_path.h" + using namespace zen; using namespace fff; using AFS = AbstractFileSystem; @@ -54,9 +55,6 @@ namespace { //Google Drive REST API Overview: https://developers.google.com/drive/api/v3/about-sdk //Google Drive REST API Reference: https://developers.google.com/drive/api/v3/reference - - const char* GOOGLE_DRIVE_CLIENT_ID = ""; // => replace with live credentials - const char* GOOGLE_DRIVE_CLIENT_SECRET = ""; // const Zchar* GOOGLE_REST_API_SERVER = Zstr("www.googleapis.com"); const std::chrono::seconds HTTP_SESSION_ACCESS_TIME_OUT(15); @@ -72,6 +70,9 @@ const char googleFolderMimeType[] = "application/vnd.google-apps.folder"; const char DB_FORMAT_DESCR[] = "FreeFileSync: Google Drive Database"; const int DB_FORMAT_VER = 1; +std::string getGoogleDriveClientId () { return ""; } // => replace with live credentials +std::string getGoogleDriveClientSecret() { return ""; } // + struct HttpSessionId { @@ -280,7 +281,7 @@ public: throw std::logic_error("Contract violation! " + std::string(__FILE__) + ":" + numberTo(__LINE__)); //Contradicting options: CURLOPT_READFUNCTION, CURLOPT_POSTFIELDS //--------------------------------------------------- - struct curl_slist* headers = nullptr; //"libcurl will not copy the entire list so you must keep it!" + curl_slist* headers = nullptr; //"libcurl will not copy the entire list so you must keep it!" ZEN_ON_SCOPE_EXIT(::curl_slist_free_all(headers)); for (const std::string& headerLine : extraHeaders) @@ -603,8 +604,8 @@ GoogleAccessInfo googleDriveExchangeAuthCode(const GoogleAuthCode& authCode) //t const std::string postBuf = xWwwFormUrlEncode( { { "code", authCode.code }, - { "client_id", GOOGLE_DRIVE_CLIENT_ID }, - { "client_secret", GOOGLE_DRIVE_CLIENT_SECRET }, + { "client_id", getGoogleDriveClientId() }, + { "client_secret", getGoogleDriveClientSecret() }, { "redirect_uri", authCode.redirectUrl }, { "grant_type", "authorization_code" }, { "code_verifier", authCode.codeChallenge }, @@ -708,7 +709,7 @@ GoogleAccessInfo authorizeAccessToGoogleDrive(const Zstring& googleLoginHint, co //authenticate Google Drive via browser: https://developers.google.com/identity/protocols/OAuth2InstalledApp#step-2-send-a-request-to-googles-oauth-20-server const std::string oauthUrl = "https://accounts.google.com/o/oauth2/v2/auth?" + xWwwFormUrlEncode( { - { "client_id", GOOGLE_DRIVE_CLIENT_ID }, + { "client_id", getGoogleDriveClientId() }, { "redirect_uri", redirectUrl }, { "response_type", "code" }, { "scope", "https://www.googleapis.com/auth/drive" }, @@ -841,8 +842,8 @@ GoogleAccessToken refreshAccessToGoogleDrive(const std::string& refreshToken) // const std::string postBuf = xWwwFormUrlEncode( { { "refresh_token", refreshToken }, - { "client_id", GOOGLE_DRIVE_CLIENT_ID }, - { "client_secret", GOOGLE_DRIVE_CLIENT_SECRET }, + { "client_id", getGoogleDriveClientId() }, + { "client_secret", getGoogleDriveClientSecret() }, { "grant_type", "refresh_token" }, }); @@ -1776,7 +1777,7 @@ public: if (it != itemDetails_.end()) { GoogleItemDetails detailsNew = it->second; - eraseIf(detailsNew.parentIds, [&](const std::string& id) { return id == parentIdOld; }); + std::erase_if(detailsNew.parentIds, [&](const std::string& id) { return id == parentIdOld; }); notifyItemUpdate(stateDelta, itemId, detailsNew); } else //conflict!!! @@ -1791,7 +1792,7 @@ public: GoogleItemDetails detailsNew = it->second; detailsNew.itemName = utfTo(newName); - eraseIf(detailsNew.parentIds, [&](const std::string& id) { return id == parentIdFrom || id == parentIdTo; }); // + std::erase_if(detailsNew.parentIds, [&](const std::string& id) { return id == parentIdFrom || id == parentIdTo; }); // detailsNew.parentIds.push_back(parentIdTo); //not a duplicate notifyItemUpdate(stateDelta, itemId, detailsNew); @@ -1901,7 +1902,7 @@ private: return; //=> avoid misleading changeLog_ entries after Google Drive sync!!! //update change logs (and clean up obsolete entries) - eraseIf(changeLog_, [&](std::weak_ptr& weakPtr) + std::erase_if(changeLog_, [&](std::weak_ptr& weakPtr) { if (std::shared_ptr iid = weakPtr.lock()) { @@ -1922,8 +1923,8 @@ private: std::vector parentIdsNew = details->parentIds; std::vector parentIdsRemoved = it->second.parentIds; - eraseIf(parentIdsNew, [&](const std::string& id) { return std::find(it->second.parentIds.begin(), it->second.parentIds.end(), id) != it->second.parentIds.end(); }); - eraseIf(parentIdsRemoved, [&](const std::string& id) { return std::find(details->parentIds.begin(), details->parentIds.end(), id) != details->parentIds.end(); }); + std::erase_if(parentIdsNew, [&](const std::string& id) { return std::find(it->second.parentIds.begin(), it->second.parentIds.end(), id) != it->second.parentIds.end(); }); + std::erase_if(parentIdsRemoved, [&](const std::string& id) { return std::find(details->parentIds.begin(), details->parentIds.end(), id) != details->parentIds.end(); }); for (const std::string& parentId : parentIdsNew) folderContents_[parentId].childItems.push_back(it); //new insert => no need for duplicate check @@ -1932,7 +1933,7 @@ private: { auto itP = folderContents_.find(parentId); if (itP != folderContents_.end()) - eraseIf(itP->second.childItems, [&](auto itChild) { return itChild == it; }); + std::erase_if(itP->second.childItems, [&](auto itChild) { return itChild == it; }); } //if all parents are removed, Google Drive will (recursively) delete the item => don't prematurely do this now: wait for change notifications! @@ -1954,7 +1955,7 @@ private: { auto itP = folderContents_.find(parentId); if (itP != folderContents_.end()) - eraseIf(itP->second.childItems, [&](auto itChild) { return itChild == it; }); + std::erase_if(itP->second.childItems, [&](auto itChild) { return itChild == it; }); } itemDetails_.erase(it); } @@ -1963,7 +1964,7 @@ private: if (itP != folderContents_.end()) { for (auto itChild : itP->second.childItems) //2. delete as parent from child items (don't wait for change notifications of children) - eraseIf(itChild->second.parentIds, [&](const std::string& id) { return id == itemId; }); + std::erase_if(itChild->second.parentIds, [&](const std::string& id) { return id == itemId; }); folderContents_.erase(itP); } } diff --git a/FreeFileSync/Source/afs/sftp.cpp b/FreeFileSync/Source/afs/sftp.cpp index ffddae13..163df3a5 100644 --- a/FreeFileSync/Source/afs/sftp.cpp +++ b/FreeFileSync/Source/afs/sftp.cpp @@ -913,6 +913,8 @@ private: //context of worker thread: void runGlobalSessionCleanUp() //throw ThreadInterruption { + warn_static("TODO: runn (S)FTP + HTTP session cleaners on demand only!") + std::chrono::steady_clock::time_point lastCleanupTime; for (;;) { @@ -943,7 +945,7 @@ private: std::this_thread::yield(); return; //don't hold lock for too long: delete only one session at a time, then yield... } - eraseIf(sessions.sshSessionsWithThreadAffinity, [](const auto& v) { return !v.second.lock(); }); //clean up dangling weak pointer + std::erase_if(sessions.sshSessionsWithThreadAffinity, [](const auto& v) { return !v.second.lock(); }); //clean up dangling weak pointer done = true; }); } diff --git a/FreeFileSync/Source/base/algorithm.cpp b/FreeFileSync/Source/base/algorithm.cpp index edb70cd1..ddb449d6 100644 --- a/FreeFileSync/Source/base/algorithm.cpp +++ b/FreeFileSync/Source/base/algorithm.cpp @@ -85,11 +85,13 @@ void fff::recursiveObjectVisitor(FileSystemObject& fsObj, } -void fff::swapGrids(const MainConfiguration& mainCfg, FolderComparison& folderCmp) //throw FileError +void fff::swapGrids(const MainConfiguration& mainCfg, FolderComparison& folderCmp, + PhaseCallback& callback /*throw X*/) //throw X { std::for_each(begin(folderCmp), end(folderCmp), [](BaseFolderPair& baseFolder) { baseFolder.flip(); }); - redetermineSyncDirection(extractDirectionCfg(mainCfg), folderCmp, nullptr /*notifyStatus*/); //throw FileError + redetermineSyncDirection(extractDirectionCfg(folderCmp, mainCfg), + callback); //throw FileError } //---------------------------------------------------------------------------------------------- @@ -275,18 +277,18 @@ bool stillInSync(const InSyncFile& dbFile, CompareVariant compareVar, int fileTi { switch (compareVar) { - case CompareVariant::TIME_SIZE: - if (dbFile.cmpVar == CompareVariant::CONTENT) return true; //special rule: this is certainly "good enough" for CompareVariant::TIME_SIZE! + case CompareVariant::timeSize: + if (dbFile.cmpVar == CompareVariant::content) return true; //special rule: this is certainly "good enough" for CompareVariant::timeSize! //case-sensitive short name match is a database invariant! return sameFileTime(dbFile.left.modTime, dbFile.right.modTime, fileTimeTolerance, ignoreTimeShiftMinutes); - case CompareVariant::CONTENT: + case CompareVariant::content: //case-sensitive short name match is a database invariant! - return dbFile.cmpVar == CompareVariant::CONTENT; + return dbFile.cmpVar == CompareVariant::content; //in contrast to comparison, we don't care about modification time here! - case CompareVariant::SIZE: //file size/case-sensitive short name always matches on both sides for an "in-sync" database entry + case CompareVariant::size: //file size/case-sensitive short name always matches on both sides for an "in-sync" database entry return true; } assert(false); @@ -317,17 +319,17 @@ bool stillInSync(const InSyncSymlink& dbLink, CompareVariant compareVar, int fil { switch (compareVar) { - case CompareVariant::TIME_SIZE: - if (dbLink.cmpVar == CompareVariant::CONTENT || dbLink.cmpVar == CompareVariant::SIZE) - return true; //special rule: this is already "good enough" for CompareVariant::TIME_SIZE! + case CompareVariant::timeSize: + if (dbLink.cmpVar == CompareVariant::content || dbLink.cmpVar == CompareVariant::size) + return true; //special rule: this is already "good enough" for CompareVariant::timeSize! //case-sensitive short name match is a database invariant! return sameFileTime(dbLink.left.modTime, dbLink.right.modTime, fileTimeTolerance, ignoreTimeShiftMinutes); - case CompareVariant::CONTENT: - case CompareVariant::SIZE: //== categorized by content! see comparison.cpp, ComparisonBuffer::compareBySize() + case CompareVariant::content: + case CompareVariant::size: //== categorized by content! see comparison.cpp, ComparisonBuffer::compareBySize() //case-sensitive short name match is a database invariant! - return dbLink.cmpVar == CompareVariant::CONTENT || dbLink.cmpVar == CompareVariant::SIZE; + return dbLink.cmpVar == CompareVariant::content || dbLink.cmpVar == CompareVariant::size; } assert(false); return false; @@ -720,10 +722,12 @@ private: }; } -//--------------------------------------------------------------------------------------------------------------- -std::vector fff::extractDirectionCfg(const MainConfiguration& mainCfg) +std::vector> fff::extractDirectionCfg(FolderComparison& folderCmp, const MainConfiguration& mainCfg) { + if (folderCmp.empty()) + return {}; + //merge first and additional pairs std::vector allPairs; allPairs.push_back(mainCfg.firstPair); @@ -731,85 +735,84 @@ std::vector fff::extractDirectionCfg(const MainConfiguration& m mainCfg.additionalPairs.begin(), //add additional pairs mainCfg.additionalPairs.end()); - std::vector output; - for (const LocalPairConfig& lpc : allPairs) - output.push_back(lpc.localSyncCfg ? lpc.localSyncCfg->directionCfg : mainCfg.syncCfg.directionCfg); - - return output; -} - - -void fff::redetermineSyncDirection(const DirectionConfig& dirCfg, //throw FileError - BaseFolderPair& baseFolder, - const std::function& notifyStatus) -{ - std::optional dbLoadError; //defer until after default directions have been set! - - //try to load sync-database files - std::shared_ptr lastSyncState; - if (dirCfg.var == DirectionConfig::TWO_WAY || detectMovedFilesEnabled(dirCfg)) - try - { - if (allItemsCategoryEqual(baseFolder)) - return; //nothing to do: abort and don't even try to open db files + if (folderCmp.size() != allPairs.size()) + throw std::logic_error("Contract violation! " + std::string(__FILE__) + ":" + numberTo(__LINE__)); - lastSyncState = loadLastSynchronousState(baseFolder, notifyStatus); //throw FileError, FileErrorDatabaseNotExisting - } - catch (FileErrorDatabaseNotExisting&) {} //let's ignore this error, there's no value in reporting it other than to confuse users - catch (const FileError& e) //e.g. incompatible database version - { - if (dirCfg.var == DirectionConfig::TWO_WAY) - dbLoadError = FileError(e.toString(), _("Setting default synchronization directions: Old files will be overwritten with newer files.")); - else - dbLoadError = e; - } + std::vector> output; - //set sync directions - if (dirCfg.var == DirectionConfig::TWO_WAY) + for (auto it = folderCmp.begin(); it != folderCmp.end(); ++it) { - if (lastSyncState) - RedetermineTwoWay::execute(baseFolder, *lastSyncState); - else //default fallback - Redetermine::execute(getTwoWayUpdateSet(), baseFolder); - } - else - Redetermine::execute(extractDirections(dirCfg), baseFolder); - - //detect renamed files - if (lastSyncState) - DetectMovedFiles::execute(baseFolder, *lastSyncState); + BaseFolderPair& baseFolder = **it; + const LocalPairConfig& lpc = allPairs[it - folderCmp.begin()]; - //error reporting: not any time earlier - if (dbLoadError) - throw* dbLoadError; + output.emplace_back(&baseFolder, lpc.localSyncCfg ? lpc.localSyncCfg->directionCfg : mainCfg.syncCfg.directionCfg); + } + return output; } -void fff::redetermineSyncDirection(const std::vector& directCfgs, //throw FileError - FolderComparison& folderCmp, - const std::function& notifyStatus) +void fff::redetermineSyncDirection(const std::vector>& directCfgs, + PhaseCallback& callback /*throw X*/) //throw X { - if (folderCmp.empty()) + if (directCfgs.empty()) return; - if (folderCmp.size() != directCfgs.size()) - throw std::logic_error("Contract violation! " + std::string(__FILE__) + ":" + numberTo(__LINE__)); - - std::optional dbLoadError; //defer until after default directions have been set! - - for (auto it = folderCmp.begin(); it != folderCmp.end(); ++it) - try - { - redetermineSyncDirection(directCfgs[it - folderCmp.begin()], **it, notifyStatus); //throw FileError - } - catch (const FileError& e) + std::unordered_set allEqualPairs; + std::unordered_map> lastSyncStates; + + //best effort: always set sync directions (even on DB load error and when user cancels during file loading) + ZEN_ON_SCOPE_EXIT + ( + //*INDENT-OFF* + for (const auto& [baseFolder, dirCfg] : directCfgs) + if (!contains(allEqualPairs, baseFolder)) + { + auto it = lastSyncStates.find(baseFolder); + const InSyncFolder* lastSyncState = it != lastSyncStates.end() ? &it->second.ref() : nullptr; + + //set sync directions + if (dirCfg.var == DirectionConfig::TWO_WAY) + { + if (lastSyncState) + RedetermineTwoWay::execute(*baseFolder, *lastSyncState); + else //default fallback + { + std::wstring msg = _("Setting default synchronization directions: Old files will be overwritten with newer files."); + if (directCfgs.size() > 1) + msg += "\n" + AFS::getDisplayPath(baseFolder->getAbstractPath< LEFT_SIDE>()) + L" " + getVariantNameForLog(dirCfg.var) + L" " + + AFS::getDisplayPath(baseFolder->getAbstractPath()); + + try { callback.reportInfo(msg); /*throw X*/} catch (...) {}; + + Redetermine::execute(getTwoWayUpdateSet(), *baseFolder); + } + } + else + Redetermine::execute(extractDirections(dirCfg), *baseFolder); + + //detect renamed files + if (lastSyncState) + DetectMovedFiles::execute(*baseFolder, *lastSyncState); + } + //*INDENT-ON* + ); + + std::vector baseFoldersForDbLoad; + for (const auto& [baseFolder, dirCfg] : directCfgs) + if (dirCfg.var == DirectionConfig::TWO_WAY || detectMovedFilesEnabled(dirCfg)) { - if (!dbLoadError) - dbLoadError = e; + if (allItemsCategoryEqual(*baseFolder)) //nothing to do: don't even try to open DB files + allEqualPairs.insert(baseFolder); + else + baseFoldersForDbLoad.push_back(baseFolder); } - if (dbLoadError) - throw* dbLoadError; + //(try to) load sync-database files + lastSyncStates = loadLastSynchronousState(baseFoldersForDbLoad, + callback /*throw X*/); //throw X + + callback.updateStatus(_("Calculating sync directions...")); //throw X + callback.requestUiUpdate(true /*force*/); //throw X } //--------------------------------------------------------------------------------------------------------------- @@ -1331,7 +1334,7 @@ void copyToAlternateFolderFrom(const std::vector& rowsT { statReporter.reportDelta(0, bytesDelta); - callback.requestUiRefresh(); //throw X + callback.requestUiUpdate(); //throw X }; /*const AFS::FileCopyResult result =*/ AFS::copyFileTransactional(sourcePath, sourceAttr, targetPath, //throw FileError, ErrorFileLocked, X false /*copyFilePermissions*/, true /*transactionalCopy*/, deleteTargetItem, notifyUnbufferedIO); @@ -1353,7 +1356,7 @@ void copyToAlternateFolderFrom(const std::vector& rowsT statReporter.reportDelta(1, 0); }); - callback.requestUiRefresh(); //throw X + callback.requestUiUpdate(); //throw X }, callback); //throw X } } @@ -1369,8 +1372,8 @@ void fff::copyToAlternateFolder(std::span rowsToC { std::vector itemSelectionLeft (rowsToCopyOnLeft .begin(), rowsToCopyOnLeft .end()); std::vector itemSelectionRight(rowsToCopyOnRight.begin(), rowsToCopyOnRight.end()); - eraseIf(itemSelectionLeft, [](const FileSystemObject* fsObj) { return fsObj->isEmpty< LEFT_SIDE>(); }); //needed for correct stats! - eraseIf(itemSelectionRight, [](const FileSystemObject* fsObj) { return fsObj->isEmpty(); }); // + std::erase_if(itemSelectionLeft, [](const FileSystemObject* fsObj) { return fsObj->isEmpty< LEFT_SIDE>(); }); //needed for correct stats! + std::erase_if(itemSelectionRight, [](const FileSystemObject* fsObj) { return fsObj->isEmpty(); }); // const int itemTotal = static_cast(itemSelectionLeft.size() + itemSelectionRight.size()); int64_t bytesTotal = 0; @@ -1383,7 +1386,7 @@ void fff::copyToAlternateFolder(std::span rowsToC visitFSObject(*fsObj, [](const FolderPair& folder) {}, [&](const FilePair& file) { bytesTotal += static_cast(file.getFileSize()); }, [](const SymlinkPair& symlink) {}); - callback.initNewPhase(itemTotal, bytesTotal, ProcessCallback::PHASE_SYNCHRONIZING); //throw X + callback.initNewPhase(itemTotal, bytesTotal, ProcessPhase::none); //throw X //------------------------------------------------------------------------------ @@ -1400,7 +1403,7 @@ namespace template void deleteFromGridAndHDOneSide(std::vector& rowsToDelete, bool useRecycleBin, - ProcessCallback& callback) + PhaseCallback& callback) { auto notifyItemDeletion = [&](const std::wstring& statusText, const std::wstring& displayPath) { @@ -1485,7 +1488,7 @@ void deleteFromGridAndHDOneSide(std::vector& rowsToDelete, } //remain transactional as much as possible => allow for abort only *after* updating file model - callback.requestUiRefresh(); //throw X + callback.requestUiUpdate(); //throw X }, callback); //throw X } @@ -1496,7 +1499,7 @@ void categorize(const std::vector& rows, std::vector& deleteRecyler, bool useRecycleBin, std::map& recyclerSupported, - ProcessCallback& callback) //throw X + PhaseCallback& callback) //throw X { auto hasRecycler = [&](const AbstractPath& baseFolderPath) -> bool { @@ -1529,30 +1532,27 @@ void categorize(const std::vector& rows, void fff::deleteFromGridAndHD(const std::vector& rowsToDeleteOnLeft, //refresh GUI grid after deletion to remove invalid rows const std::vector& rowsToDeleteOnRight, //all pointers need to be bound! - FolderComparison& folderCmp, //attention: rows will be physically deleted! - const std::vector& directCfgs, + const std::vector>& directCfgs, //attention: rows will be physically deleted! bool useRecycleBin, bool& warnRecyclerMissing, ProcessCallback& callback) { - if (folderCmp.empty()) + if (directCfgs.empty()) return; - else if (folderCmp.size() != directCfgs.size()) - throw std::logic_error("Contract violation! " + std::string(__FILE__) + ":" + numberTo(__LINE__)); //build up mapping from base directory to corresponding direction config std::unordered_map baseFolderCfgs; - for (auto it = folderCmp.begin(); it != folderCmp.end(); ++it) - baseFolderCfgs[&** it] = directCfgs[it - folderCmp.begin()]; + for (const auto& [baseFolder, dirCfg] : directCfgs) + baseFolderCfgs[baseFolder] = dirCfg; std::vector deleteLeft = rowsToDeleteOnLeft; std::vector deleteRight = rowsToDeleteOnRight; - eraseIf(deleteLeft, [](const FileSystemObject* fsObj) { return fsObj->isEmpty< LEFT_SIDE>(); }); //needed? - eraseIf(deleteRight, [](const FileSystemObject* fsObj) { return fsObj->isEmpty(); }); //yes, for correct stats: + std::erase_if(deleteLeft, [](const FileSystemObject* fsObj) { return fsObj->isEmpty< LEFT_SIDE>(); }); //needed? + std::erase_if(deleteRight, [](const FileSystemObject* fsObj) { return fsObj->isEmpty(); }); //yes, for correct stats: const int itemCount = static_cast(deleteLeft.size() + deleteRight.size()); - callback.initNewPhase(itemCount, 0, ProcessCallback::PHASE_SYNCHRONIZING); //throw X + callback.initNewPhase(itemCount, 0, ProcessPhase::none); //throw X //------------------------------------------------------------------------------ @@ -1591,7 +1591,8 @@ void fff::deleteFromGridAndHD(const std::vector& rowsToDelete } //last step: cleanup empty rows: this one invalidates all pointers! - std::for_each(begin(folderCmp), end(folderCmp), BaseFolderPair::removeEmpty); + for (const auto& [baseFolder, dirCfg] : directCfgs) + BaseFolderPair::removeEmpty(*baseFolder); }; ZEN_ON_SCOPE_EXIT(updateDirection()); //MSVC: assert is a macro and it doesn't play nice with ZEN_ON_SCOPE_EXIT, surprise... wasn't there something about macros being "evil"? @@ -1677,7 +1678,7 @@ void TempFileBuffer::createTempFiles(const std::set& workLoad, P for (const FileDescriptor& descr : workLoad) bytesTotal += descr.attr.fileSize; - callback.initNewPhase(itemTotal, bytesTotal, ProcessCallback::PHASE_SYNCHRONIZING); //throw X + callback.initNewPhase(itemTotal, bytesTotal, ProcessPhase::none); //throw X //------------------------------------------------------------------------------ @@ -1701,7 +1702,7 @@ void TempFileBuffer::createTempFiles(const std::set& workLoad, P for (const FileDescriptor& descr : workLoad) { - assert(tempFilePaths_.find(descr) == tempFilePaths_.end()); //ensure correct stats, NO overwrite-copy => caller-contract! + assert(!contains(tempFilePaths_, descr)); //ensure correct stats, NO overwrite-copy => caller-contract! MemoryStreamOut cookie; //create hash to distinguish different versions and file locations writeNumber (cookie, descr.attr.modTime); @@ -1730,7 +1731,7 @@ void TempFileBuffer::createTempFiles(const std::set& workLoad, P auto notifyUnbufferedIO = [&](int64_t bytesDelta) { statReporter.reportDelta(0, bytesDelta); - callback.requestUiRefresh(); //throw X + callback.requestUiUpdate(); //throw X }; /*const AFS::FileCopyResult result =*/ AFS::copyFileTransactional(descr.path, sourceAttr, //throw FileError, ErrorFileLocked, X createItemPathNative(tempFilePath), @@ -1741,6 +1742,6 @@ void TempFileBuffer::createTempFiles(const std::set& workLoad, P tempFilePaths_[descr] = tempFilePath; }, callback); //throw X - callback.requestUiRefresh(); //throw X + callback.requestUiUpdate(); //throw X } } diff --git a/FreeFileSync/Source/base/algorithm.h b/FreeFileSync/Source/base/algorithm.h index afb4303c..299a97a0 100644 --- a/FreeFileSync/Source/base/algorithm.h +++ b/FreeFileSync/Source/base/algorithm.h @@ -21,17 +21,13 @@ void recursiveObjectVisitor(FileSystemObject& fsObj, std::function onFile, std::function onSymlink); -void swapGrids(const MainConfiguration& mainCfg, FolderComparison& folderCmp); //throw FileError +void swapGrids(const MainConfiguration& mainCfg, FolderComparison& folderCmp, + PhaseCallback& callback /*throw X*/); //throw X -std::vector extractDirectionCfg(const MainConfiguration& mainCfg); +std::vector> extractDirectionCfg(FolderComparison& folderCmp, const MainConfiguration& mainCfg); -void redetermineSyncDirection(const DirectionConfig& directConfig, //throw FileError - BaseFolderPair& baseFolder, - const std::function& notifyStatus); - -void redetermineSyncDirection(const std::vector& directCfgs, //throw FileError - FolderComparison& folderCmp, - const std::function& notifyStatus); +void redetermineSyncDirection(const std::vector>& directCfgs, + PhaseCallback& callback /*throw X*/); //throw X void setSyncDirectionRec(SyncDirection newDirection, FileSystemObject& fsObj); //set new direction (recursively) @@ -72,8 +68,7 @@ void copyToAlternateFolder(std::span rowsToCopyOn //manual deletion of files on main grid void deleteFromGridAndHD(const std::vector& rowsToDeleteOnLeft, //refresh GUI grid after deletion to remove invalid rows const std::vector& rowsToDeleteOnRight, //all pointers need to be bound! - FolderComparison& folderCmp, //attention: rows will be physically deleted! - const std::vector& directCfgs, + const std::vector>& directCfgs, //attention: rows will be physically deleted! bool useRecycleBin, //global warnings: bool& warnRecyclerMissing, diff --git a/FreeFileSync/Source/base/application.cpp b/FreeFileSync/Source/base/application.cpp index 3e347866..d032955b 100644 --- a/FreeFileSync/Source/base/application.cpp +++ b/FreeFileSync/Source/base/application.cpp @@ -61,6 +61,14 @@ bool Application::OnInit() #if GTK_MAJOR_VERSION == 2 ::gtk_rc_parse((getResourceDirPf() + "Gtk2Styles.rc").c_str()); + //hang on Ubuntu 19.10 (GLib 2.62) caused by ibus initialization: https://freefilesync.org/forum/viewtopic.php?t=6704 + //=> work around 1: bonus: avoid needless DBus calls: https://developer.gnome.org/gio/stable/running-gio-apps.html + if (::setenv("GIO_USE_VFS", "local", true /*overwrite*/) != 0) + std::cerr << utfTo(formatSystemError(L"setenv(GIO_USE_VFS)", errno)) << "\n"; + //=> work around 2: setting GIO_USE_VFS seems to suffice, but this one also does it: + g_vfs_get_default(); //returns unowned GVfs* + //no such issue on GTK3! + #elif GTK_MAJOR_VERSION == 3 try { @@ -74,7 +82,8 @@ bool Application::OnInit() (getResourceDirPf() + "Gtk3Styles.css").c_str(), //const gchar* path, &error); //GError** error if (error) - throw SysError(formatSystemError(L"gtk_css_provider_load_from_data", replaceCpy(_("Error Code %x"), L"%x", numberTo(error->code)), utfTo(error->message))); + throw SysError(formatSystemError(L"gtk_css_provider_load_from_data", + replaceCpy(_("Error Code %x"), L"%x", numberTo(error->code)), utfTo(error->message))); ::gtk_style_context_add_provider_for_screen(::gdk_screen_get_default(), //GdkScreen* screen, GTK_STYLE_PROVIDER(provider), //GtkStyleProvider* provider, @@ -569,16 +578,17 @@ void runBatchMode(const Zstring& globalConfigFilePath, const XmlBatchConfig& bat extractCompareCfg(batchCfg.mainCfg), statusHandler); //throw AbortProcess //START SYNCHRONIZATION - synchronize(syncStartTime, - globalCfg.verifyFileCopy, - globalCfg.copyLockedFiles, - globalCfg.copyFilePermissions, - globalCfg.failSafeFileCopy, - globalCfg.runWithBackgroundPriority, - extractSyncCfg(batchCfg.mainCfg), - cmpResult, - globalCfg.warnDlgs, - statusHandler); //throw AbortProcess + if (!cmpResult.empty()) + synchronize(syncStartTime, + globalCfg.verifyFileCopy, + globalCfg.copyLockedFiles, + globalCfg.copyFilePermissions, + globalCfg.failSafeFileCopy, + globalCfg.runWithBackgroundPriority, + extractSyncCfg(batchCfg.mainCfg), + cmpResult, + globalCfg.warnDlgs, + statusHandler); //throw AbortProcess } catch (AbortProcess&) {} //exit used by statusHandler diff --git a/FreeFileSync/Source/base/comparison.cpp b/FreeFileSync/Source/base/comparison.cpp index c0c6c4b7..e705551b 100644 --- a/FreeFileSync/Source/base/comparison.cpp +++ b/FreeFileSync/Source/base/comparison.cpp @@ -73,7 +73,7 @@ struct ResolvedBaseFolders ResolvedBaseFolders initializeBaseFolders(const std::vector& fpCfgList, bool allowUserInteraction, WarningDialogs& warnings, - ProcessCallback& callback /*throw X*/) + PhaseCallback& callback /*throw X*/) //throw X { ResolvedBaseFolders output; std::set allFolders; @@ -191,10 +191,10 @@ ComparisonBuffer::ComparisonBuffer(const std::set& foldersToRead, { switch (callback.reportError(msg, retryNumber)) { - case ProcessCallback::ignoreError: + case PhaseCallback::ignore: return AFS::TraverserCallback::ON_ERROR_CONTINUE; - case ProcessCallback::retry: + case PhaseCallback::retry: return AFS::TraverserCallback::ON_ERROR_RETRY; } assert(false); @@ -206,10 +206,10 @@ ComparisonBuffer::ComparisonBuffer(const std::set& foldersToRead, auto onStatusUpdate = [&, textScanning = _("Scanning:") + L" "](const std::wstring& statusLine, int itemsTotal) { - callback.updateDataProcessed(itemsTotal - itemsReported, 0); + callback.updateDataProcessed(itemsTotal - itemsReported, 0); //noexcept itemsReported = itemsTotal; - callback.reportStatus(textScanning + statusLine); //throw X + callback.updateStatus(textScanning + statusLine); //throw X }; parallelDeviceTraversal(foldersToRead, //in @@ -377,17 +377,17 @@ std::shared_ptr ComparisonBuffer::compareByTimeSize(const Resolv namespace { -void categorizeSymlinkByContent(SymlinkPair& symlink, ProcessCallback& callback) +void categorizeSymlinkByContent(SymlinkPair& symlink, PhaseCallback& callback) { //categorize symlinks that exist on both sides std::string binaryContentL; std::string binaryContentR; const std::wstring errMsg = tryReportingError([&] { - callback.reportStatus(replaceCpy(_("Resolving symbolic link %x"), L"%x", fmtPath(AFS::getDisplayPath(symlink.getAbstractPath())))); //throw X + callback.updateStatus(replaceCpy(_("Resolving symbolic link %x"), L"%x", fmtPath(AFS::getDisplayPath(symlink.getAbstractPath())))); //throw X binaryContentL = AFS::getSymlinkBinaryContent(symlink.getAbstractPath()); //throw FileError - callback.reportStatus(replaceCpy(_("Resolving symbolic link %x"), L"%x", fmtPath(AFS::getDisplayPath(symlink.getAbstractPath())))); //throw X + callback.updateStatus(replaceCpy(_("Resolving symbolic link %x"), L"%x", fmtPath(AFS::getDisplayPath(symlink.getAbstractPath())))); //throw X binaryContentR = AFS::getSymlinkBinaryContent(symlink.getAbstractPath()); //throw FileError }, callback); //throw X @@ -469,7 +469,7 @@ namespace { void categorizeFileByContent(FilePair& file, const std::wstring& txtComparingContentOfFiles, AsyncCallback& acb, std::mutex& singleThread) //throw ThreadInterruption { - acb.reportStatus(replaceCpy(txtComparingContentOfFiles, L"%x", fmtPath(file.getRelativePathAny()))); //throw ThreadInterruption + acb.updateStatus(replaceCpy(txtComparingContentOfFiles, L"%x", fmtPath(file.getRelativePathAny()))); //throw ThreadInterruption bool haveSameContent = false; const std::wstring errMsg = tryReportingError([&] @@ -577,7 +577,7 @@ std::list> ComparisonBuffer::compareByContent(co } //finish categorization: compare files (that have same size) bytewise... - if (!fpWorkload.empty()) //run PHASE_COMPARING_CONTENT only when needed + if (!fpWorkload.empty()) //run ProcessPhase::comparingContent only when needed { int itemsTotal = 0; uint64_t bytesTotal = 0; @@ -588,7 +588,7 @@ std::list> ComparisonBuffer::compareByContent(co for (const FilePair* file : bwl.filesToCompareBytewise) bytesTotal += file->getFileSize(); //left and right file sizes are equal } - cb_.initNewPhase(itemsTotal, bytesTotal, ProcessCallback::PHASE_COMPARING_CONTENT); //throw X + cb_.initNewPhase(itemsTotal, bytesTotal, ProcessPhase::comparingContent); //throw X //PERF_START; @@ -913,8 +913,8 @@ std::shared_ptr ComparisonBuffer::performComparison(const Resolv std::vector& undefinedFiles, std::vector& undefinedSymlinks) const { - cb_.reportStatus(_("Generating file list...")); //throw X - cb_.forceUiRefresh(); //throw X + cb_.updateStatus(_("Generating file list...")); //throw X + cb_.requestUiUpdate(true /*force*/); //throw X auto getDirValue = [&](const AbstractPath& folderPath) -> const DirectoryValue* { @@ -944,7 +944,7 @@ std::shared_ptr ComparisonBuffer::performComparison(const Resolv } Zstring excludefilterFailedRead; - if (failedReads.find(Zstring()) != failedReads.end()) //empty path if read-error for whole base directory + if (contains(failedReads, Zstring())) //empty path if read-error for whole base directory excludefilterFailedRead += Zstr("*\n"); else for (const auto& [relPath, errorMsg] : failedReads) @@ -986,7 +986,7 @@ std::shared_ptr ComparisonBuffer::performComparison(const Resolv } -void fff::logNonDefaultSettings(const XmlGlobalSettings& activeSettings, ProcessCallback& callback) +void fff::logNonDefaultSettings(const XmlGlobalSettings& activeSettings, PhaseCallback& callback) { const XmlGlobalSettings defaultSettings; std::wstring changedSettingsMsg; @@ -1030,7 +1030,7 @@ FolderComparison fff::compare(WarningDialogs& warnings, //indicator at the very beginning of the log to make sense of "total time" //init process: keep at beginning so that all gui elements are initialized properly - callback.initNewPhase(-1, -1, ProcessCallback::PHASE_SCANNING); //throw X; it's unknown how many files will be scanned => -1 objects + callback.initNewPhase(-1, -1, ProcessPhase::scanning); //throw X; it's unknown how many files will be scanned => -1 objects //callback.reportInfo(Comparison started")); -> still useful? //------------------------------------------------------------------------------- @@ -1064,7 +1064,7 @@ FolderComparison fff::compare(WarningDialogs& warnings, if (resInfo.resolvedPairs.size() != fpCfgList.size()) throw std::logic_error("Contract violation! " + std::string(__FILE__) + ":" + numberTo(__LINE__)); - auto basefolderExisting = [&](const AbstractPath& folderPath) { return resInfo.existingBaseFolders.find(folderPath) != resInfo.existingBaseFolders.end(); }; + auto basefolderExisting = [&](const AbstractPath& folderPath) { return contains(resInfo.existingBaseFolders, folderPath); }; std::vector> workLoad; @@ -1109,7 +1109,6 @@ FolderComparison fff::compare(WarningDialogs& warnings, callback.reportWarning(_("One base folder of a folder pair is contained in the other one.") + L"\n" + //throw X _("The folder should be excluded from synchronization via filter.") + msg, warnings.warnDependentFolderPair); } - //-------------------end of basic checks------------------------------------------ //lock (existing) directories before comparison @@ -1149,7 +1148,7 @@ FolderComparison fff::compare(WarningDialogs& warnings, //process binary comparison as one junk std::vector> workLoadByContent; for (const auto& [folderPair, fpCfg] : workLoad) - if (fpCfg.compareVar == CompareVariant::CONTENT) + if (fpCfg.compareVar == CompareVariant::content) workLoadByContent.push_back({ folderPair, fpCfg }); std::list> outputByContent = cmpBuff.compareByContent(workLoadByContent); @@ -1158,13 +1157,13 @@ FolderComparison fff::compare(WarningDialogs& warnings, for (const auto& [folderPair, fpCfg] : workLoad) switch (fpCfg.compareVar) { - case CompareVariant::TIME_SIZE: + case CompareVariant::timeSize: output.push_back(cmpBuff.compareByTimeSize(folderPair, fpCfg)); break; - case CompareVariant::SIZE: + case CompareVariant::size: output.push_back(cmpBuff.compareBySize(folderPair, fpCfg)); break; - case CompareVariant::CONTENT: + case CompareVariant::content: assert(!outputByContent.empty()); if (!outputByContent.empty()) { @@ -1177,29 +1176,18 @@ FolderComparison fff::compare(WarningDialogs& warnings, assert(output.size() == fpCfgList.size()); //--------- set initial sync-direction -------------------------------------------------- + std::vector> directCfgs; + for (auto it = output.begin(); it != output.end(); ++it) + directCfgs.emplace_back(&** it, fpCfgList[it - output.begin()].directionCfg); - for (auto it = begin(output); it != end(output); ++it) - { - const FolderPairCfg& fpCfg = fpCfgList[it - output.begin()]; - - callback.reportStatus(_("Calculating sync directions...")); //throw X - callback.forceUiRefresh(); //throw X - - tryReportingError([&] - { - redetermineSyncDirection(fpCfg.directionCfg, *it, //throw FileError - [&](const std::wstring& msg) { callback.reportStatus(msg); }); //throw X - - }, callback); //throw X - } + redetermineSyncDirection(directCfgs, + callback); //throw X return output; } catch (const std::bad_alloc& e) { callback.reportFatalError(_("Out of memory.") + L" " + utfTo(e.what())); - //we need to maintain the "output.size() == fpCfgList.size()" contract in ALL cases! => abort - callback.abortProcessNow(); //throw X - throw std::logic_error("Contract violation! " + std::string(__FILE__) + ":" + numberTo(__LINE__)); + return {}; } } diff --git a/FreeFileSync/Source/base/comparison.h b/FreeFileSync/Source/base/comparison.h index c5a126ab..b3315926 100644 --- a/FreeFileSync/Source/base/comparison.h +++ b/FreeFileSync/Source/base/comparison.h @@ -48,9 +48,9 @@ struct FolderPairCfg std::vector extractCompareCfg(const MainConfiguration& mainCfg); //fill FolderPairCfg and resolve folder pairs //inform about (important) non-default global settings related to comparison and synchronization -void logNonDefaultSettings(const XmlGlobalSettings& currentSettings, ProcessCallback& callback); +void logNonDefaultSettings(const XmlGlobalSettings& currentSettings, PhaseCallback& callback); -//FFS core routine: +//FFS core routine: output.size() == fpCfgList.size() or 0 on fatal error FolderComparison compare(WarningDialogs& warnings, int fileTimeTolerance, bool allowUserInteraction, diff --git a/FreeFileSync/Source/base/config.cpp b/FreeFileSync/Source/base/config.cpp index edc7b05f..3ed3f416 100644 --- a/FreeFileSync/Source/base/config.cpp +++ b/FreeFileSync/Source/base/config.cpp @@ -22,7 +22,7 @@ using namespace fff; //functionally needed for correct overload resolution!!! namespace { //------------------------------------------------------------------------------------------------------------------------------- -const int XML_FORMAT_GLOBAL_CFG = 13; //2019-05-29 +const int XML_FORMAT_GLOBAL_CFG = 14; //2019-11-19 const int XML_FORMAT_SYNC_CFG = 14; //2018-08-13 //------------------------------------------------------------------------------------------------------------------------------- } @@ -156,13 +156,13 @@ void writeText(const CompareVariant& value, std::string& output) { switch (value) { - case CompareVariant::TIME_SIZE: + case CompareVariant::timeSize: output = "TimeAndSize"; break; - case CompareVariant::CONTENT: + case CompareVariant::content: output = "Content"; break; - case CompareVariant::SIZE: + case CompareVariant::size: output = "Size"; break; } @@ -173,11 +173,11 @@ bool readText(const std::string& input, CompareVariant& value) { const std::string tmp = trimCpy(input); if (tmp == "TimeAndSize") - value = CompareVariant::TIME_SIZE; + value = CompareVariant::timeSize; else if (tmp == "Content") - value = CompareVariant::CONTENT; + value = CompareVariant::content; else if (tmp == "Size") - value = CompareVariant::SIZE; + value = CompareVariant::size; else return false; return true; @@ -349,13 +349,13 @@ void writeText(const DeletionPolicy& value, std::string& output) { switch (value) { - case DeletionPolicy::PERMANENT: + case DeletionPolicy::permanent: output = "Permanent"; break; - case DeletionPolicy::RECYCLER: + case DeletionPolicy::recycler: output = "RecycleBin"; break; - case DeletionPolicy::VERSIONING: + case DeletionPolicy::versioning: output = "Versioning"; break; } @@ -366,11 +366,11 @@ bool readText(const std::string& input, DeletionPolicy& value) { const std::string tmp = trimCpy(input); if (tmp == "Permanent") - value = DeletionPolicy::PERMANENT; + value = DeletionPolicy::permanent; else if (tmp == "RecycleBin") - value = DeletionPolicy::RECYCLER; + value = DeletionPolicy::recycler; else if (tmp == "Versioning") - value = DeletionPolicy::VERSIONING; + value = DeletionPolicy::versioning; else return false; return true; @@ -485,13 +485,13 @@ void writeText(const ColumnTypeCfg& value, std::string& output) { switch (value) { - case ColumnTypeCfg::NAME: + case ColumnTypeCfg::name: output = "Name"; break; - case ColumnTypeCfg::LAST_SYNC: + case ColumnTypeCfg::lastSync: output = "Last"; break; - case ColumnTypeCfg::LAST_LOG: + case ColumnTypeCfg::lastLog: output = "Log"; break; } @@ -502,11 +502,11 @@ bool readText(const std::string& input, ColumnTypeCfg& value) { const std::string tmp = trimCpy(input); if (tmp == "Name") - value = ColumnTypeCfg::NAME; + value = ColumnTypeCfg::name; else if (tmp == "Last") - value = ColumnTypeCfg::LAST_SYNC; + value = ColumnTypeCfg::lastSync; else if (tmp == "Log") - value = ColumnTypeCfg::LAST_LOG; + value = ColumnTypeCfg::lastLog; else return false; return true; @@ -630,13 +630,13 @@ void writeText(const VersioningStyle& value, std::string& output) { switch (value) { - case VersioningStyle::REPLACE: + case VersioningStyle::replace: output = "Replace"; break; - case VersioningStyle::TIMESTAMP_FOLDER: + case VersioningStyle::timestampFolder: output = "TimeStamp-Folder"; break; - case VersioningStyle::TIMESTAMP_FILE: + case VersioningStyle::timestampFile: output = "TimeStamp-File"; break; } @@ -647,11 +647,11 @@ bool readText(const std::string& input, VersioningStyle& value) { const std::string tmp = trimCpy(input); if (tmp == "Replace") - value = VersioningStyle::REPLACE; + value = VersioningStyle::replace; else if (tmp == "TimeStamp-Folder") - value = VersioningStyle::TIMESTAMP_FOLDER; + value = VersioningStyle::timestampFolder; else if (tmp == "TimeStamp-File") - value = VersioningStyle::TIMESTAMP_FILE; + value = VersioningStyle::timestampFile; else return false; return true; @@ -933,6 +933,12 @@ bool readStruc(const XmlElement& input, ConfigFileItem& value) const bool rv4 = in.attribute("LogPath", logPathPhrase); if (rv4) value.logFilePath = createAbstractPath(resolveFreeFileSyncDriveMacro(logPathPhrase)); + std::string hexColor; //optional XML attribute! + if (in.attribute("Color", hexColor) && hexColor.size() == 6) + value.backColor.Set(unhexify(hexColor[0], hexColor[1]), + unhexify(hexColor[2], hexColor[3]), + unhexify(hexColor[4], hexColor[5])); + return rv1 && rv2 && rv3 && rv4; } @@ -948,6 +954,14 @@ void writeStruc(const ConfigFileItem& value, XmlElement& output) out.attribute("LogPath", substituteFreeFileSyncDriveLetter(*nativePath)); else out.attribute("LogPath", AFS::getInitPathPhrase(value.logFilePath)); + + if (value.backColor.IsOk()) + { + const auto& [highR, lowR] = hexify(value.backColor.Red ()); + const auto& [highG, lowG] = hexify(value.backColor.Green()); + const auto& [highB, lowB] = hexify(value.backColor.Blue ()); + out.attribute("Color", std::string({ highR, lowR, highG, lowG, highB, lowB })); + } } //TODO: remove after migration! 2018-07-27 @@ -1029,17 +1043,17 @@ void readConfig(const XmlIn& in, SyncConfig& syncCfg, std::mapgetAttribute("MaxAge", syncCfg.versionMaxAgeDays); //try to get attributes if available @@ -1533,7 +1547,9 @@ void readConfig(const XmlIn& in, XmlGlobalSettings& cfg, int formatVer) inGui["ConfigHistory"](cfgHist); for (const Zstring& cfgPath : cfgHist) - cfg.gui.mainDlg.cfgFileHistory.emplace_back(cfgPath, 0, getNullPath(), SyncResult::finishedSuccess); + cfg.gui.mainDlg.cfgFileHistory.emplace_back( + cfgPath, + 0, getNullPath(), SyncResult::finishedSuccess, wxNullColour); } //TODO: remove after migration! 2018-07-27 else if (formatVer < 10) @@ -1544,7 +1560,17 @@ void readConfig(const XmlIn& in, XmlGlobalSettings& cfg, int formatVer) inConfig["Configurations"](cfgFileHistory); for (const ConfigFileItemV9& item : cfgFileHistory) - cfg.gui.mainDlg.cfgFileHistory.emplace_back(item.filePath, item.lastSyncTime, getNullPath(), SyncResult::finishedSuccess); + cfg.gui.mainDlg.cfgFileHistory.emplace_back(item.filePath, item.lastSyncTime, getNullPath(), SyncResult::finishedSuccess, wxNullColour); + } + //TODO: remove after migration! 2019-11-19 + else if (formatVer < 14) + { + inConfig["Configurations"].attribute("MaxSize", cfg.gui.mainDlg.cfgHistItemsMax); + inConfig["Configurations"](cfg.gui.mainDlg.cfgFileHistory); + + for (ConfigFileItem& item : cfg.gui.mainDlg.cfgFileHistory) + if (equalNativePath(item.cfgFilePath, getLastRunConfigPath())) + item.backColor = wxColor(0xdd, 0xdd, 0xdd); //light grey from onCfgGridContext() } else { @@ -1921,7 +1947,7 @@ void writeConfig(const SyncConfig& syncCfg, const std::map& d out["VersioningFolder"].attribute("Style", syncCfg.versioningStyle); - if (syncCfg.versioningStyle != VersioningStyle::REPLACE) + if (syncCfg.versioningStyle != VersioningStyle::replace) { if (syncCfg.versionMaxAgeDays > 0) out["VersioningFolder"].attribute("MaxAge", syncCfg.versionMaxAgeDays); if (syncCfg.versionCountMin > 0) out["VersioningFolder"].attribute("MinCount", syncCfg.versionCountMin); diff --git a/FreeFileSync/Source/base/db_file.cpp b/FreeFileSync/Source/base/db_file.cpp index 4e16c885..c7ad54d5 100644 --- a/FreeFileSync/Source/base/db_file.cpp +++ b/FreeFileSync/Source/base/db_file.cpp @@ -7,8 +7,10 @@ #include "db_file.h" #include #include +#include #include #include "../afs/concrete.h" +#include "status_handler_impl.h" using namespace zen; @@ -23,6 +25,8 @@ const int DB_FORMAT_CONTAINER = 10; //since 2017-02-01 const int DB_FORMAT_STREAM = 3; // //------------------------------------------------------------------------------------------------------------------------------- +DEFINE_NEW_FILE_ERROR(FileErrorDatabaseNotExisting) + struct SessionData { bool isLeadStream = false; @@ -40,17 +44,23 @@ using DbStreams = std::map; //list of streams ordered by template inline AbstractPath getDatabaseFilePath(const BaseFolderPair& baseFolder) { - //Linux and Windows builds are binary incompatible: different file id?, problem with case sensitivity? - //precomposed/decomposed UTF? are UTC file times really compatible? what about endianess!? - //however 32 and 64-bit FreeFileSync are designed to produce binary-identical db files! - //=> give db files different names: + static_assert(usingLittleEndian()); + /* Windows, Linux, macOS considerations for uniform database format: + - different file IDs: no, but the volume IDs are different! + - problem with case sensitivity: no + - are UTC file times identical: yes (at least with 1 sec precision) + - endianess: FFS currently not running on any big-endian platform + - precomposed/decomposed UTF: differences already ignored + - 32 vs 64-bit: already handled + + => give db files different names: */ const Zstring dbName = Zstr(".sync"); //files beginning with dots are hidden e.g. in Nautilus return AFS::appendRelPath(baseFolder.getAbstractPath(), dbName + SYNC_DB_FILE_ENDING); } //####################################################################################################################################### -void saveStreams(const DbStreams& streamList, const AbstractPath& dbPath, const IOCallback& notifyUnbufferedIO) //throw FileError +void saveStreams(const DbStreams& streamList, const AbstractPath& dbPath, const IOCallback& notifyUnbufferedIO /*throw X*/) //throw FileError, X { const std::unique_ptr fileStreamOut = AFS::getOutputStream(dbPath, //throw FileError std::nullopt /*streamSize*/, @@ -105,7 +115,6 @@ DbStreams loadStreams(const AbstractPath& dbPath, const IOCallback& notifyUnbuff size_t streamCount = readNumber(*fileStreamIn); //throw FileError, ErrorFileLocked, X, UnexpectedEndOfStreamError while (streamCount-- != 0) { - //DB id of partner databases std::string sessionID = readContainer(*fileStreamIn); //throw FileError, ErrorFileLocked, X, UnexpectedEndOfStreamError SessionData sessionData = {}; @@ -284,11 +293,11 @@ private: class StreamParser { public: - static std::shared_ptr execute(bool leadStreamLeft, //throw FileError - const ByteArray& streamL, - const ByteArray& streamR, - const std::wstring& displayFilePathL, //for diagnostics only - const std::wstring& displayFilePathR) + static SharedRef execute(bool leadStreamLeft, //throw FileError + const ByteArray& streamL, + const ByteArray& streamR, + const std::wstring& displayFilePathL, //for diagnostics only + const std::wstring& displayFilePathR) { auto decompStream = [&](const ByteArray& stream) -> ByteArray //throw FileError { @@ -343,11 +352,11 @@ public: const ByteArray tmpL = readContainer(streamInL); const ByteArray tmpR = readContainer(streamInR); - auto output = std::make_shared(InSyncFolder::DIR_STATUS_IN_SYNC); + auto output = makeSharedRef(InSyncFolder::DIR_STATUS_IN_SYNC); StreamParserV2 parser(decompStream(tmpL), decompStream(tmpR), decompStream(tmpB)); - parser.recurse(*output); //throw UnexpectedEndOfStreamError + parser.recurse(output.ref()); //throw UnexpectedEndOfStreamError return output; } else @@ -369,15 +378,15 @@ public: const ByteArray bufSmallNum = readContainer(streamIn); //throw UnexpectedEndOfStreamError const ByteArray bufBigNum = readContainer(streamIn); // - auto output = std::make_shared(InSyncFolder::DIR_STATUS_IN_SYNC); + auto output = makeSharedRef(InSyncFolder::DIR_STATUS_IN_SYNC); StreamParser parser(streamVersion, decompStream(bufText), decompStream(bufSmallNum), decompStream(bufBigNum)); //throw FileError if (leadStreamLeft) - parser.recurse(*output); //throw UnexpectedEndOfStreamError + parser.recurse(output.ref()); //throw UnexpectedEndOfStreamError else - parser.recurse(*output); //throw UnexpectedEndOfStreamError + parser.recurse(output.ref()); //throw UnexpectedEndOfStreamError return output; } } @@ -446,7 +455,7 @@ private: } static Zstring readUtf8(MemoryStreamIn& streamIn) { return utfTo(readContainer>(streamIn)); } //throw UnexpectedEndOfStreamError - //optional: use null-termiation: 5% overall size reduction + //optional: use null-termination: 5% overall size reduction //optional: split into streamInText_/streamInSmallNum_: overall size increase! (why?) static InSyncDescrFile readFileDescr(MemoryStreamIn& streamIn) //throw UnexpectedEndOfStreamError @@ -582,9 +591,9 @@ private: } //delete removed items (= "in-sync") from database - eraseIf(dbFiles, [&](const InSyncFolder::FileList::value_type& v) + std::erase_if(dbFiles, [&](const InSyncFolder::FileList::value_type& v) { - if (toPreserve.find(v.first) != toPreserve.end()) + if (contains(toPreserve, v.first)) return false; //all items not existing in "currentFiles" have either been deleted meanwhile or been excluded via filter: const Zstring& itemRelPath = nativeAppendPaths(parentRelPath, v.first); @@ -619,9 +628,9 @@ private: } //delete removed items (= "in-sync") from database - eraseIf(dbSymlinks, [&](const InSyncFolder::SymlinkList::value_type& v) + std::erase_if(dbSymlinks, [&](const InSyncFolder::SymlinkList::value_type& v) { - if (toPreserve.find(v.first) != toPreserve.end()) + if (contains(toPreserve, v.first)) return false; //all items not existing in "currentSymlinks" have either been deleted meanwhile or been excluded via filter: const Zstring& itemRelPath = nativeAppendPaths(parentRelPath, v.first); @@ -654,7 +663,7 @@ private: } //delete removed items (= "in-sync") from database - eraseIf(dbFolders, [&](InSyncFolder::FolderList::value_type& v) + std::erase_if(dbFolders, [&](InSyncFolder::FolderList::value_type& v) { if (auto it = toPreserve.find(v.first); it != toPreserve.end()) { @@ -678,10 +687,10 @@ private: //delete all entries for removed folder (= "in-sync") from database void dbSetEmptyState(InSyncFolder& dbFolder, const Zstring& parentRelPathPf) { - eraseIf(dbFolder.files, [&](const InSyncFolder::FileList ::value_type& v) { return filter_.passFileFilter(parentRelPathPf + v.first); }); - eraseIf(dbFolder.symlinks, [&](const InSyncFolder::SymlinkList::value_type& v) { return filter_.passFileFilter(parentRelPathPf + v.first); }); + std::erase_if(dbFolder.files, [&](const InSyncFolder::FileList ::value_type& v) { return filter_.passFileFilter(parentRelPathPf + v.first); }); + std::erase_if(dbFolder.symlinks, [&](const InSyncFolder::SymlinkList::value_type& v) { return filter_.passFileFilter(parentRelPathPf + v.first); }); - eraseIf(dbFolder.folders, [&](InSyncFolder::FolderList::value_type& v) + std::erase_if(dbFolder.folders, [&](InSyncFolder::FolderList::value_type& v) { const Zstring& itemRelPath = parentRelPathPf + v.first; @@ -700,19 +709,19 @@ private: struct StreamStatusNotifier { - StreamStatusNotifier(const std::wstring& msgPrefix, const std::function& notifyStatus) : - msgPrefix_(msgPrefix), notifyStatus_(notifyStatus) {} + StreamStatusNotifier(const std::wstring& msgPrefix, AsyncCallback& acb /*throw ThreadInterruption*/) : + msgPrefix_(msgPrefix), acb_(acb) {} - void operator()(int64_t bytesDelta) //throw X + void operator()(int64_t bytesDelta) //throw ThreadInterruption { bytesTotal_ += bytesDelta; - if (notifyStatus_) notifyStatus_(msgPrefix_ + L" (" + formatFilesizeShort(bytesTotal_) + L")"); //throw X + acb_.updateStatus(msgPrefix_ + L" (" + formatFilesizeShort(bytesTotal_) + L")"); //throw ThreadInterruption } private: const std::wstring msgPrefix_; int64_t bytesTotal_ = 0; - const std::function notifyStatus_; + AsyncCallback& acb_; }; @@ -748,90 +757,146 @@ std::pair fff::loadLastSynchronousState(const BaseFolderPair& baseFolder, //throw FileError, FileErrorDatabaseNotExisting -> return value always bound! - const std::function& notifyStatus) +std::unordered_map> fff::loadLastSynchronousState(const std::vector& baseFolders, + PhaseCallback& callback /*throw X*/) //throw X { - const AbstractPath dbPathLeft = getDatabaseFilePath< LEFT_SIDE>(baseFolder); - const AbstractPath dbPathRight = getDatabaseFilePath(baseFolder); + std::set dbFilePaths; - if (!baseFolder.isAvailable< LEFT_SIDE>() || - !baseFolder.isAvailable()) - { + for (const BaseFolderPair* baseFolder : baseFolders) //avoid race condition with directory existence check: reading sync.ffs_db may succeed although first dir check had failed => conflicts! - //https://sourceforge.net/tracker/?func=detail&atid=1093080&aid=3531351&group_id=234430 - const AbstractPath filePath = !baseFolder.isAvailable() ? dbPathLeft : dbPathRight; - throw FileErrorDatabaseNotExisting(_("Initial synchronization:") + L" \n" + //it could be due to a to-be-created target directory not yet existing => FileErrorDatabaseNotExisting - replaceCpy(_("Database file %x does not yet exist."), L"%x", fmtPath(AFS::getDisplayPath(filePath)))); + if (baseFolder->isAvailable< LEFT_SIDE>() && + baseFolder->isAvailable()) + { + dbFilePaths.insert(getDatabaseFilePath< LEFT_SIDE>(*baseFolder)); + dbFilePaths.insert(getDatabaseFilePath(*baseFolder)); + } + //else: ignore; there's no value in reporting it other than to confuse users + + std::map dbStreamsByPath; + //------------ (try to) load DB files in parallel ------------------------- + { + Protected&> dbStreamsByPathShared(dbStreamsByPath); + std::vector> parallelWorkload; + + for (const AbstractPath& dbPath : dbFilePaths) + parallelWorkload.emplace_back(dbPath, [&dbStreamsByPathShared](ParallelContext& ctx) //throw ThreadInterruption + { + StreamStatusNotifier notifyLoad(replaceCpy(_("Loading file %x..."), L"%x", fmtPath(AFS::getDisplayPath(ctx.itemPath))), ctx.acb); + + tryReportingError([&] //throw ThreadInterruption + { + try + { + DbStreams dbStreams = ::loadStreams(ctx.itemPath, notifyLoad); //throw FileError, FileErrorDatabaseNotExisting, ThreadInterruption + + dbStreamsByPathShared.access([&](auto& dbStreamsByPath2) { dbStreamsByPath2.emplace(ctx.itemPath, std::move(dbStreams)); }); + } + catch (FileErrorDatabaseNotExisting&) {} + }, ctx.acb); + }); + + massParallelExecute(parallelWorkload, + "Load sync.ffs_db:", callback /*throw X*/); //throw X } + //---------------------------------------------------------------- - StreamStatusNotifier notifyLoadL(replaceCpy(_("Loading file %x..."), L"%x", fmtPath(AFS::getDisplayPath(dbPathLeft) )), notifyStatus); - StreamStatusNotifier notifyLoadR(replaceCpy(_("Loading file %x..."), L"%x", fmtPath(AFS::getDisplayPath(dbPathRight))), notifyStatus); - - //read file data: list of session ID + DirInfo-stream - const DbStreams streamsLeft = ::loadStreams(dbPathLeft, notifyLoadL); //throw FileError, FileErrorDatabaseNotExisting, X - const DbStreams streamsRight = ::loadStreams(dbPathRight, notifyLoadR); // - - //find associated session: there can be at most one session within intersection of left and right IDs - const auto [itStreamL, itStreamR] = findCommonSession(streamsLeft, streamsRight, //throw FileError - AFS::getDisplayPath(dbPathLeft), - AFS::getDisplayPath(dbPathRight)); - if (itStreamL == streamsLeft.end()) - throw FileErrorDatabaseNotExisting(_("Initial synchronization:") + L" \n" + - _("The database files do not yet contain information about the last synchronization.")); - - const bool leadStreamLeft = itStreamL->second.isLeadStream; - assert(itStreamL->second.isLeadStream != itStreamR->second.isLeadStream); - const ByteArray& streamL = itStreamL ->second.rawStream; - const ByteArray& streamR = itStreamR->second.rawStream; - - return StreamParser::execute(leadStreamLeft, streamL, streamR, //throw FileError - AFS::getDisplayPath(dbPathLeft), - AFS::getDisplayPath(dbPathRight)); + std::unordered_map> output; + + for (const BaseFolderPair* baseFolder : baseFolders) + if (baseFolder->isAvailable< LEFT_SIDE>() && + baseFolder->isAvailable()) + { + const AbstractPath dbPathL = getDatabaseFilePath< LEFT_SIDE>(*baseFolder); + const AbstractPath dbPathR = getDatabaseFilePath(*baseFolder); + + auto itL = dbStreamsByPath.find(dbPathL); + auto itR = dbStreamsByPath.find(dbPathR); + + if (itL != dbStreamsByPath.end() && + itR != dbStreamsByPath.end()) + { + const DbStreams& streamsL = itL->second; + const DbStreams& streamsR = itR->second; + + tryReportingError([&] //throw X + { + //find associated session: there can be at most one session within intersection of left and right IDs + const auto [itStreamL, itStreamR] = findCommonSession(streamsL, streamsR, + AFS::getDisplayPath(dbPathL), + AFS::getDisplayPath(dbPathR)); //throw FileError + if (itStreamL != streamsL.end()) + { + assert(itStreamL->second.isLeadStream != itStreamR->second.isLeadStream); + SharedRef lastSyncState = StreamParser::execute(itStreamL->second.isLeadStream, + itStreamL->second.rawStream, + itStreamR->second.rawStream, + AFS::getDisplayPath(dbPathL), + AFS::getDisplayPath(dbPathR)); //throw FileError + output.emplace(baseFolder, lastSyncState); + } + }, callback /*throw X*/); + } + } + + return output; } void fff::saveLastSynchronousState(const BaseFolderPair& baseFolder, bool transactionalCopy, - const std::function& notifyStatus /*throw X*/) //throw FileError, X + PhaseCallback& callback /*throw X*/) //throw X { - //transactional behaviour! write to tmp files first const AbstractPath dbPathL = getDatabaseFilePath< LEFT_SIDE>(baseFolder); const AbstractPath dbPathR = getDatabaseFilePath(baseFolder); - StreamStatusNotifier notifyLoadL(replaceCpy(_("Loading file %x..."), L"%x", fmtPath(AFS::getDisplayPath(dbPathL))), notifyStatus); - StreamStatusNotifier notifyLoadR(replaceCpy(_("Loading file %x..."), L"%x", fmtPath(AFS::getDisplayPath(dbPathR))), notifyStatus); - - StreamStatusNotifier notifySaveL(replaceCpy(_("Saving file %x..."), L"%x", fmtPath(AFS::getDisplayPath(dbPathL))), notifyStatus); - StreamStatusNotifier notifySaveR(replaceCpy(_("Saving file %x..."), L"%x", fmtPath(AFS::getDisplayPath(dbPathR))), notifyStatus); - - //(try to) load old database files... + //------------ (try to) load DB files in parallel ------------------------- DbStreams streamsL; //list of session ID + DirInfo-stream - DbStreams streamsR; + DbStreams streamsR; // + { + std::vector> parallelWorkload; + + for (const auto& [dbPath, streamsOut] : + { + std::pair(dbPathL, &streamsL), + std::pair(dbPathR, &streamsR) + }) + parallelWorkload.emplace_back(dbPath, [streamsOut /*clang bug*/= streamsOut](ParallelContext& ctx) //throw ThreadInterruption + { + StreamStatusNotifier notifyLoad(replaceCpy(_("Loading file %x..."), L"%x", fmtPath(AFS::getDisplayPath(ctx.itemPath))), ctx.acb); - try { streamsL = ::loadStreams(dbPathL, notifyLoadL); } //throw FileError, FileErrorDatabaseNotExisting, X - catch (FileError&) {} - try { streamsR = ::loadStreams(dbPathR, notifyLoadR); } //throw FileError, FileErrorDatabaseNotExisting, X - catch (FileError&) {} - //if error occurs: just overwrite old file! User is already informed about issues right after comparing! + tryReportingError([&] //throw ThreadInterruption + { + try { *streamsOut = ::loadStreams(ctx.itemPath, notifyLoad); } //throw FileError, FileErrorDatabaseNotExisting, ThreadInterruption + catch (FileErrorDatabaseNotExisting&) {} + }, ctx.acb); + }); - auto lastSyncState = std::make_shared(InSyncFolder::DIR_STATUS_IN_SYNC); + massParallelExecute(parallelWorkload, + "Load sync.ffs_db:", callback /*throw X*/); //throw X + } + //---------------------------------------------------------------- - //find associated session: there can be at most one session within intersection of left and right IDs - const auto [itStreamOldL, itStreamOldR] = findCommonSession(streamsL, streamsR, //throw FileError - AFS::getDisplayPath(dbPathL), - AFS::getDisplayPath(dbPathR)); - if (itStreamOldL != streamsL.end()) - try //load last synchrounous state - { - lastSyncState = StreamParser::execute(itStreamOldL->second.isLeadStream /*leadStreamLeft*/, - itStreamOldL->second.rawStream, //throw FileError - itStreamOldR->second.rawStream, - AFS::getDisplayPath(dbPathL), - AFS::getDisplayPath(dbPathR)); - } - catch (FileError&) {} //if error occurs: just overwrite old file! User is already informed about errors right after comparing! + //load last synchrounous state + auto itStreamOldL = streamsL.cend(); + auto itStreamOldR = streamsR.cend(); + InSyncFolder lastSyncState(InSyncFolder::DIR_STATUS_IN_SYNC); + try + { + //find associated session: there can be at most one session within intersection of left and right IDs + std::tie(itStreamOldL, itStreamOldR) = findCommonSession(streamsL, streamsR, //throw FileError + AFS::getDisplayPath(dbPathL), + AFS::getDisplayPath(dbPathR)); + if (itStreamOldL != streamsL.end()) + lastSyncState = std::move(StreamParser::execute(itStreamOldL->second.isLeadStream /*leadStreamLeft*/, + itStreamOldL->second.rawStream, + itStreamOldR->second.rawStream, + AFS::getDisplayPath(dbPathL), + AFS::getDisplayPath(dbPathR)).ref()); //throw FileError + } + catch (const FileError& e) { callback.reportInfo(e.toString()); } //throw X + //if error occurs: just overwrite old file! User is already informed about errors right after comparing! //update last synchrounous state - LastSynchronousStateUpdater::execute(baseFolder, *lastSyncState); + LastSynchronousStateUpdater::execute(baseFolder, lastSyncState); //serialize again SessionData sessionDataL = {}; @@ -839,11 +904,15 @@ void fff::saveLastSynchronousState(const BaseFolderPair& baseFolder, bool transa sessionDataL.isLeadStream = true; sessionDataR.isLeadStream = false; - StreamGenerator::execute(*lastSyncState, //throw FileError + if (const std::wstring errMsg = tryReportingError([&] //throw X +{ + StreamGenerator::execute(lastSyncState, //throw FileError AFS::getDisplayPath(dbPathL), AFS::getDisplayPath(dbPathR), sessionDataL.rawStream, sessionDataR.rawStream); + }, callback /*throw X*/); !errMsg.empty()) + return; //check if there is some work to do at all if (itStreamOldL != streamsL.end() && itStreamOldL->second == sessionDataL && @@ -862,90 +931,46 @@ void fff::saveLastSynchronousState(const BaseFolderPair& baseFolder, bool transa streamsL[sessionID] = std::move(sessionDataL); streamsR[sessionID] = std::move(sessionDataR); - warn_static("finish: support massParallelExecute!?") - if (transactionalCopy && - (!AFS::hasNativeTransactionalCopy(dbPathL) || - !AFS::hasNativeTransactionalCopy(dbPathR))) - { - //write (temp-) files as a transaction - const Zstring shortGuid = printNumber(Zstr("%04x"), static_cast(getCrc16(generateGUID()))); - - const AbstractPath dbPathTmpL = AFS::appendRelPath(*AFS::getParentPath(dbPathL), AFS::getItemName(dbPathL) + Zstr('.') + shortGuid + AFS::TEMP_FILE_ENDING); - const AbstractPath dbPathRTmp = AFS::appendRelPath(*AFS::getParentPath(dbPathR), AFS::getItemName(dbPathR) + Zstr('.') + shortGuid + AFS::TEMP_FILE_ENDING); - - saveStreams(streamsL, dbPathTmpL, notifySaveL); //throw FileError, X - auto guardTmpL = makeGuard([&] { try { AFS::removeFilePlain(dbPathTmpL); } catch (FileError&) {} }); - saveStreams(streamsR, dbPathRTmp, notifySaveR); //throw FileError, X - auto guardTmpR = makeGuard([&] { try { AFS::removeFilePlain(dbPathRTmp); } catch (FileError&) {} }); - - //operation finished: rename temp files -> this should work (almost) transactionally: - //if there were no write access, creation of temp files would have failed - AFS::removeFileIfExists(dbPathL); //throw FileError - AFS::moveAndRenameItem(dbPathTmpL, dbPathL); //throw FileError, (ErrorMoveUnsupported) - guardTmpL.dismiss(); - - AFS::removeFileIfExists(dbPathR); //throw FileError - AFS::moveAndRenameItem(dbPathRTmp, dbPathR); //throw FileError, (ErrorMoveUnsupported) - guardTmpR.dismiss(); - } - else //some MTP devices don't even allow renaming files: https://freefilesync.org/forum/viewtopic.php?t=6531 - { - warn_static("caveat: throw X leaves db file as deleted!") - AFS::removeFileIfExists(dbPathL); //throw FileError - saveStreams(streamsL, dbPathL, notifySaveL); //throw FileError, X - - AFS::removeFileIfExists(dbPathR); //throw FileError - saveStreams(streamsR, dbPathR, notifySaveR); //throw FileError, X - } - -#if 0 - warn_static("remove after test") - - //write (temp-) files as a transaction - const Zstring shortGuid = printNumber(Zstr("%04x"), static_cast(getCrc16(generateGUID()))); - - AbstractPath dbPathTmpL = getNullPath(); - AbstractPath dbPathTmpR = getNullPath(); - ZEN_ON_SCOPE_EXIT( - try { if (!AFS::isNullPath(dbPathTmpL)) AFS::removeFilePlain(dbPathTmpL); } - catch (FileError&) {} - - try { if (!AFS::isNullPath(dbPathTmpR)) AFS::removeFilePlain(dbPathTmpR); } - catch (FileError&) {} - ); - - if (transactionalCopy && !AFS::hasNativeTransactionalCopy(dbPathL)) - { - AbstractPath dbPathTmpL2 = AFS::appendRelPath(*AFS::getParentPath(dbPathL), AFS::getItemName(dbPathL) + Zstr('.') + shortGuid + AFS::TEMP_FILE_ENDING); - saveStreams(streamsL, dbPathTmpL2, notifySaveL); //throw FileError, X - dbPathTmpL = dbPathTmpL2; - } - - if (transactionalCopy && !AFS::hasNativeTransactionalCopy(dbPathR)) + //------------ save DB files in parallel ------------------------- { - AbstractPath dbPathTmpR2 = AFS::appendRelPath(*AFS::getParentPath(dbPathR), AFS::getItemName(dbPathR) + Zstr('.') + shortGuid + AFS::TEMP_FILE_ENDING); - saveStreams(streamsR, dbPathTmpR2, notifySaveR); //throw FileError, X - dbPathTmpR = dbPathTmpR2; - } + std::vector> parallelWorkload; + + for (const auto& [dbPath, streams] : + { + std::pair(dbPathL, &streamsL), + std::pair(dbPathR, &streamsR) + }) + parallelWorkload.emplace_back(dbPath, [streams /*clang bug*/= streams, transactionalCopy](ParallelContext& ctx) //throw ThreadInterruption + { + tryReportingError([&] //throw ThreadInterruption + { + StreamStatusNotifier notifySave(replaceCpy(_("Saving file %x..."), L"%x", fmtPath(AFS::getDisplayPath(ctx.itemPath))), ctx.acb); - AFS::removeFileIfExists(dbPathL); //throw FileError - if (!AFS::isNullPath(dbPathTmpL)) - { - //operation finished: rename temp files -> this should work (almost) transactionally: - //if there were no write access, creation of temp files would have failed - AFS::moveAndRenameItem(dbPathTmpL, dbPathL); //throw FileError, (ErrorMoveUnsupported) - dbPathTmpL = getNullPath(); - } - else //some MTP devices don't even allow renaming files: https://freefilesync.org/forum/viewtopic.php?t=6531 - saveStreams(streamsL, dbPathL, notifySaveL); //throw FileError, X + if (transactionalCopy && !AFS::hasNativeTransactionalCopy(ctx.itemPath)) + { + //write (temp-) files as a transaction + const Zstring shortGuid = printNumber(Zstr("%04x"), static_cast(getCrc16(generateGUID()))); + const AbstractPath dbPathTmp = AFS::appendRelPath(*AFS::getParentPath(ctx.itemPath), AFS::getItemName(ctx.itemPath) + Zstr('.') + shortGuid + AFS::TEMP_FILE_ENDING); + + saveStreams(*streams, dbPathTmp, notifySave); //throw FileError, ThreadInterruption + ZEN_ON_SCOPE_FAIL(try { AFS::removeFilePlain(dbPathTmp); } + catch (FileError&) {}); + + //operation finished: rename temp file -> this should work (almost) transactionally: + //if there were no write access, creation of temp file would have failed + AFS::removeFileIfExists(ctx.itemPath); //throw FileError + AFS::moveAndRenameItem(dbPathTmp, ctx.itemPath); //throw FileError, (ErrorMoveUnsupported) + } + else //some MTP devices don't even allow renaming files: https://freefilesync.org/forum/viewtopic.php?t=6531 + { + AFS::removeFileIfExists(ctx.itemPath); //throw FileError + saveStreams(*streams, ctx.itemPath, notifySave); //throw FileError, ThreadInterruption + } + }, ctx.acb); + }); - AFS::removeFileIfExists(dbPathR); //throw FileError - if (!AFS::isNullPath(dbPathTmpR)) - { - AFS::moveAndRenameItem(dbPathTmpR, dbPathR); //throw FileError, (ErrorMoveUnsupported) - dbPathTmpR = getNullPath(); + massParallelExecute(parallelWorkload, + "Save sync.ffs_db:", callback /*throw X*/); //throw X } - else - saveStreams(streamsR, dbPathR, notifySaveR); //throw FileError, X -#endif + //---------------------------------------------------------------- } diff --git a/FreeFileSync/Source/base/db_file.h b/FreeFileSync/Source/base/db_file.h index ca747dd9..f9e0dabb 100644 --- a/FreeFileSync/Source/base/db_file.h +++ b/FreeFileSync/Source/base/db_file.h @@ -7,8 +7,10 @@ #ifndef DB_FILE_H_834275398588021574 #define DB_FILE_H_834275398588021574 +#include #include #include "file_hierarchy.h" +#include "process_callback.h" namespace fff @@ -39,7 +41,7 @@ struct InSyncFile InSyncFile(const InSyncDescrFile& l, const InSyncDescrFile& r, CompareVariant cv, uint64_t fileSizeIn) : left(l), right(r), cmpVar(cv), fileSize(fileSizeIn) {} InSyncDescrFile left; //support flip()! InSyncDescrFile right; // - CompareVariant cmpVar = CompareVariant::TIME_SIZE; //the one active while finding "file in sync" + CompareVariant cmpVar = CompareVariant::timeSize; //the one active while finding "file in sync" uint64_t fileSize = 0; //file size must be identical on both sides! }; @@ -48,7 +50,7 @@ struct InSyncSymlink InSyncSymlink(const InSyncDescrLink& l, const InSyncDescrLink& r, CompareVariant cv) : left(l), right(r), cmpVar(cv) {} InSyncDescrLink left; InSyncDescrLink right; - CompareVariant cmpVar = CompareVariant::TIME_SIZE; + CompareVariant cmpVar = CompareVariant::timeSize; }; struct InSyncFolder @@ -92,13 +94,11 @@ struct InSyncFolder }; -DEFINE_NEW_FILE_ERROR(FileErrorDatabaseNotExisting); +std::unordered_map> loadLastSynchronousState(const std::vector& baseFolders, + PhaseCallback& callback /*throw X*/); //throw X -std::shared_ptr loadLastSynchronousState(const BaseFolderPair& baseDirObj, //throw FileError, FileErrorDatabaseNotExisting -> return value always bound! - const std::function& notifyStatus); - -void saveLastSynchronousState(const BaseFolderPair& baseDirObj, bool transactionalCopy, //throw FileError, X - const std::function& notifyStatus /*throw X*/); +void saveLastSynchronousState(const BaseFolderPair& baseFolder, bool transactionalCopy, //throw X + PhaseCallback& callback /*throw X*/); } #endif //DB_FILE_H_834275398588021574 diff --git a/FreeFileSync/Source/base/dir_exist_async.h b/FreeFileSync/Source/base/dir_exist_async.h index 4ea963d6..30ed2858 100644 --- a/FreeFileSync/Source/base/dir_exist_async.h +++ b/FreeFileSync/Source/base/dir_exist_async.h @@ -23,7 +23,6 @@ namespace //directory existence checking may hang for non-existent network drives => run asynchronously and update UI! //- check existence of all directories in parallel! (avoid adding up search times if multiple network drives are not reachable) //- add reasonable time-out time! -//- avoid checking duplicate entries => std::set struct FolderStatus { std::set existing; @@ -33,7 +32,7 @@ struct FolderStatus FolderStatus getFolderStatusNonBlocking(const std::set& folderPaths, - bool allowUserInteraction, ProcessCallback& procCallback /*throw X*/) + bool allowUserInteraction, PhaseCallback& procCallback /*throw X*/) { using namespace zen; @@ -90,14 +89,14 @@ FolderStatus getFolderStatusNonBlocking(const std::set& folderPath { const std::wstring& displayPathFmt = fmtPath(AFS::getDisplayPath(folderPath)); - procCallback.reportStatus(replaceCpy(_("Searching for folder %x..."), L"%x", displayPathFmt)); //throw X + procCallback.updateStatus(replaceCpy(_("Searching for folder %x..."), L"%x", displayPathFmt)); //throw X const int deviceTimeOut = AFS::getAccessTimeout(folderPath); //0 if no timeout in force const auto timeoutTime = startTime + std::chrono::seconds(deviceTimeOut > 0 ? deviceTimeOut : DEFAULT_FOLDER_ACCESS_TIME_OUT_SEC); while (std::chrono::steady_clock::now() < timeoutTime && future.wait_for(UI_UPDATE_INTERVAL / 2) != std::future_status::ready) - procCallback.requestUiRefresh(); //throw X + procCallback.requestUiUpdate(); //throw X if (!isReady(future)) output.failedChecks.emplace(folderPath, FileError(replaceCpy(_("Timeout while searching for folder %x."), L"%x", displayPathFmt))); diff --git a/FreeFileSync/Source/base/dir_lock.cpp b/FreeFileSync/Source/base/dir_lock.cpp index 43ffb4b2..85d2be90 100644 --- a/FreeFileSync/Source/base/dir_lock.cpp +++ b/FreeFileSync/Source/base/dir_lock.cpp @@ -98,7 +98,7 @@ private: return; ZEN_ON_SCOPE_EXIT(::close(fileHandle)); - /*const ssize_t bytesWritten =*/ ::write(fileHandle, " ", 1); + [[maybe_unused]] const ssize_t bytesWritten = ::write(fileHandle, " ", 1); } const Zstring lockFilePath_; //thread-local! @@ -263,7 +263,7 @@ ProcessStatus getProcessStatus(const LockInformation& lockInfo) //throw FileErro } -DEFINE_NEW_FILE_ERROR(ErrorFileNotExisting); +DEFINE_NEW_FILE_ERROR(ErrorFileNotExisting) uint64_t getLockFileSize(const Zstring& filePath) //throw FileError, ErrorFileNotExisting { struct ::stat fileInfo = {}; @@ -502,8 +502,8 @@ private: void tidyUp() //remove obsolete entries { - eraseIf(locksByGuid_, [](const auto& v) { return !v.second.lock(); }); - eraseIf(guidByPath_, [&](const auto& v) { return locksByGuid_.find(v.second) == locksByGuid_.end(); }); + std::erase_if(locksByGuid_, [](const auto& v) { return !v.second.lock(); }); + std::erase_if(guidByPath_, [&](const auto& v) { return !contains(locksByGuid_, v.second); }); } std::map guidByPath_; //lockFilePath |-> GUID; n:1; locks can be referenced by a lockFilePath or alternatively a GUID diff --git a/FreeFileSync/Source/base/ffs_paths.cpp b/FreeFileSync/Source/base/ffs_paths.cpp index b7ee1684..843e702e 100644 --- a/FreeFileSync/Source/base/ffs_paths.cpp +++ b/FreeFileSync/Source/base/ffs_paths.cpp @@ -40,9 +40,18 @@ Zstring getProcessParentFolderPath() +namespace +{ +//don't make this a function-scope static (avoid code-gen for "magic static") +//getFfsVolumeId() might be called during static destruction, e.g. async update check +std::once_flag onceFlagGetFfsVolumeId; +} + VolumeId fff::getFfsVolumeId() //throw FileError { - return getVolumeId(getProcessParentFolderPath()); //throw FileError + static VolumeId volumeId; //POD => no "magic static" code gen + std::call_once(onceFlagGetFfsVolumeId, [] { volumeId = getVolumeId(getProcessParentFolderPath()); }); //throw FileError + return volumeId; } @@ -59,35 +68,30 @@ Zstring fff::getResourceDirPf() } -namespace -{ -std::once_flag onceFlagCreateCfgPath; -} - - Zstring fff::getConfigDirPathPf() { - //make independent from wxWidgets global variable "appname"; support being called by RealTimeSync - auto appName = wxTheApp->GetAppName(); - wxTheApp->SetAppName(L"FreeFileSync"); - ZEN_ON_SCOPE_EXIT(wxTheApp->SetAppName(appName)); - - Zstring cfgFolderPath; - //OS standard path (XDG layout): ~/.config/FreeFileSync - //wxBug: wxStandardPaths::GetUserDataDir() does not honor FileLayout_XDG flag - wxStandardPaths::Get().SetFileLayout(wxStandardPaths::FileLayout_XDG); - cfgFolderPath = appendSeparator(utfTo(wxStandardPaths::Get().GetUserConfigDir())) + "FreeFileSync"; + //note: compiler generates magic-statics code => fine, we don't expect accesses during shutdown + static const Zstring cfgFolderPathPf = [] + { + //make independent from wxWidgets global variable "appname"; support being called by RealTimeSync + auto appName = wxTheApp->GetAppName(); + wxTheApp->SetAppName(L"FreeFileSync"); + ZEN_ON_SCOPE_EXIT(wxTheApp->SetAppName(appName)); + //OS standard path (XDG layout): ~/.config/FreeFileSync + //wxBug: wxStandardPaths::GetUserDataDir() does not honor FileLayout_XDG flag + wxStandardPaths::Get().SetFileLayout(wxStandardPaths::FileLayout_XDG); + const Zstring cfgFolderPath = appendSeparator(utfTo(wxStandardPaths::Get().GetUserConfigDir())) + "FreeFileSync"; - std::call_once(onceFlagCreateCfgPath, [&] - { try //create the config folder if not existing + create "Logs" subfolder while we're at it { createDirectoryIfMissingRecursion(appendSeparator(cfgFolderPath) + Zstr("Logs")); //throw FileError } catch (FileError&) { assert(false); } - }); - return appendSeparator(cfgFolderPath); + + return appendSeparator(cfgFolderPath); + }(); + return cfgFolderPathPf; } diff --git a/FreeFileSync/Source/base/file_hierarchy.h b/FreeFileSync/Source/base/file_hierarchy.h index 2edde6e2..4ab6a6f7 100644 --- a/FreeFileSync/Source/base/file_hierarchy.h +++ b/FreeFileSync/Source/base/file_hierarchy.h @@ -387,8 +387,7 @@ public: static const T* retrieve(ObjectIdConst id) //returns nullptr if object is not valid anymore { - const auto& aObj = activeObjects(); - return static_cast(aObj.find(id) == aObj.end() ? nullptr : id); + return static_cast(zen::contains(activeObjects(), id) ? id : nullptr); } static T* retrieve(ObjectId id) { return const_cast(retrieve(static_cast(id))); } diff --git a/FreeFileSync/Source/base/icon_buffer.cpp b/FreeFileSync/Source/base/icon_buffer.cpp index b5973c34..b10027a6 100644 --- a/FreeFileSync/Source/base/icon_buffer.cpp +++ b/FreeFileSync/Source/base/icon_buffer.cpp @@ -130,7 +130,7 @@ public: bool hasIcon(const AbstractPath& filePath) const { std::lock_guard dummy(lockIconList_); - return iconList.find(filePath) != iconList.end(); + return contains(iconList, filePath); } //must be called by main thread only! => wxBitmap is NOT thread-safe like an int (non-atomic ref-count!!!) diff --git a/FreeFileSync/Source/base/icon_loader.cpp b/FreeFileSync/Source/base/icon_loader.cpp index b58d5a6d..6d1727f6 100644 --- a/FreeFileSync/Source/base/icon_loader.cpp +++ b/FreeFileSync/Source/base/icon_loader.cpp @@ -227,7 +227,7 @@ ImageHolder fff::getThumbnailImage(const Zstring& filePath, int pixelSize) //ret } } - catch (SysError&) { assert(false); } + catch (SysError&) {} return ImageHolder(); } diff --git a/FreeFileSync/Source/base/localization.cpp b/FreeFileSync/Source/base/localization.cpp index 06083e31..d6491c86 100644 --- a/FreeFileSync/Source/base/localization.cpp +++ b/FreeFileSync/Source/base/localization.cpp @@ -14,6 +14,8 @@ #include #include #include +#include +#include #include #include #include "parse_plural.h" @@ -32,9 +34,7 @@ namespace class FFSTranslation : public TranslationHandler { public: - FFSTranslation(const Zstring& lngFilePath, wxLanguage langId); //throw lng::ParsingError, plural::ParsingError - - wxLanguage getLangId() const { return langId_; } + FFSTranslation(const std::string& lngStream); //throw lng::ParsingError, plural::ParsingError std::wstring translate(const std::wstring& text) const override { @@ -65,27 +65,15 @@ private: Translation transMapping_; //map original text |-> translation TranslationPlural transMappingPl_; std::unique_ptr pluralParser_; //bound! - const wxLanguage langId_; }; -FFSTranslation::FFSTranslation(const Zstring& lngFilePath, wxLanguage langId) : langId_(langId) //throw lng::ParsingError, plural::ParsingError +FFSTranslation::FFSTranslation(const std::string& lngStream) //throw lng::ParsingError, plural::ParsingError { - std::string inputStream; - try - { - inputStream = loadBinContainer(lngFilePath, nullptr /*notifyUnbufferedIO*/); //throw FileError - } - catch (const FileError& e) - { - throw lng::ParsingError({ e.toString(), 0, 0 }); - //passing FileError is too high a level for Parsing error, OTOH user is unlikely to see this since file I/O issues are sorted out by getExistingTranslations()! - } - lng::TransHeader header; lng::TranslationMap transUtf; lng::TranslationPluralMap transPluralUtf; - lng::parseLng(inputStream, header, transUtf, transPluralUtf); //throw ParsingError + lng::parseLng(lngStream, header, transUtf, transPluralUtf); //throw ParsingError pluralParser_ = std::make_unique(header.pluralDefinition); //throw plural::ParsingError @@ -120,55 +108,55 @@ std::vector loadTranslations() newEntry.languageName = std::wstring(L"English (US)") + LTR_MARK; //handle weak ")" for bidi-algorithm newEntry.translatorName = L"Zenju"; newEntry.languageFlag = L"flag_usa.png"; - newEntry.langFilePath = Zstr(""); + newEntry.lngFileName = Zstr(""); + newEntry.lngStream = ""; locMapping.push_back(newEntry); } - //search language files available - std::vector lngFilePaths; - - traverseFolder(fff::getResourceDirPf() + Zstr("Languages"), [&](const FileInfo& fi) //FileInfo is ambiguous on OS X + try { - if (endsWith(fi.fullPath, Zstr(".lng"))) - lngFilePaths.push_back(fi.fullPath); - }, nullptr, nullptr, [&](const std::wstring& errorMsg) { assert(false); }); //errors are not really critical in this context + const std::string rawStream = loadBinContainer(fff::getResourceDirPf() + Zstr("Languages.zip"), nullptr /*notifyUnbufferedIO*/); //throw FileError + wxMemoryInputStream memStream(rawStream.c_str(), rawStream.size()); //does not take ownership + wxZipInputStream zipStream(memStream, wxConvUTF8); - for (const Zstring& filePath : lngFilePaths) - { - try + while (const auto& entry = std::unique_ptr(zipStream.GetNextEntry())) //take ownership!) { - const std::string stream = loadBinContainer(filePath, nullptr /*notifyUnbufferedIO*/); //throw FileError - - lng::TransHeader lngHeader; - lng::parseHeader(stream, lngHeader); //throw ParsingError - - assert(!lngHeader.languageName .empty()); - assert(!lngHeader.translatorName.empty()); - assert(!lngHeader.localeName .empty()); - assert(!lngHeader.flagFile .empty()); - /* - Some ISO codes are used by multiple wxLanguage IDs which can lead to incorrect mapping by wxLocale::FindLanguageInfo()!!! - => Identify by description, e.g. "Chinese (Traditional)". The following ids are affected: - wxLANGUAGE_CHINESE_TRADITIONAL - wxLANGUAGE_ENGLISH_UK - wxLANGUAGE_SPANISH //non-unique, but still mapped correctly (or is it incidentally???) - wxLANGUAGE_SERBIAN // - */ - if (const wxLanguageInfo* locInfo = wxLocale::FindLanguageInfo(utfTo(lngHeader.localeName))) - { - TranslationInfo newEntry; - newEntry.languageID = static_cast(locInfo->Language); - newEntry.languageName = utfTo(lngHeader.languageName); - newEntry.translatorName = utfTo(lngHeader.translatorName); - newEntry.languageFlag = utfTo(lngHeader.flagFile); - newEntry.langFilePath = filePath; - locMapping.push_back(newEntry); - } - else assert(false); + std::string stream(entry->GetSize(), '\0'); + if (!stream.empty() && zipStream.ReadAll(&stream[0], stream.size())) + try + { + const lng::TransHeader lngHeader = lng::parseHeader(stream); //throw ParsingError + assert(!lngHeader.languageName .empty()); + assert(!lngHeader.translatorName.empty()); + assert(!lngHeader.localeName .empty()); + assert(!lngHeader.flagFile .empty()); + /* + Some ISO codes are used by multiple wxLanguage IDs which can lead to incorrect mapping by wxLocale::FindLanguageInfo()!!! + => Identify by description, e.g. "Chinese (Traditional)". The following IDs are affected: + wxLANGUAGE_CHINESE_TRADITIONAL + wxLANGUAGE_ENGLISH_UK + wxLANGUAGE_SPANISH //non-unique, but still mapped correctly (or is it incidentally???) + wxLANGUAGE_SERBIAN // + */ + if (const wxLanguageInfo* locInfo = wxLocale::FindLanguageInfo(utfTo(lngHeader.localeName))) + { + TranslationInfo newEntry; + newEntry.languageID = static_cast(locInfo->Language); + newEntry.languageName = utfTo(lngHeader.languageName); + newEntry.translatorName = utfTo(lngHeader.translatorName); + newEntry.languageFlag = utfTo(lngHeader.flagFile); + newEntry.lngFileName = utfTo(entry->GetName()); + newEntry.lngStream = std::move(stream); + locMapping.push_back(newEntry); + } + else assert(false); + } + catch (lng::ParsingError&) { assert(false); } //better not show an error message here; scenario: batch jobs + else + assert(false); } - catch (FileError&) { assert(false); } - catch (lng::ParsingError&) { assert(false); } //better not show an error message here; scenario: batch jobs } + catch (FileError&) { assert(false); } std::sort(locMapping.begin(), locMapping.end(), [](const TranslationInfo& lhs, const TranslationInfo& rhs) { @@ -324,6 +312,7 @@ wxLanguage mapLanguageDialect(wxLanguage language) //case wxLANGUAGE_SLOVENIAN: //case wxLANGUAGE_TURKISH: //case wxLANGUAGE_UKRAINIAN: + //case wxLANGUAGE_VIETNAMESE: default: return language; } @@ -338,6 +327,8 @@ public: MemoryTranslationLoader(wxLanguage langId, std::map&& transMapping) : canonicalName_(wxLocale::GetLanguageCanonicalName(langId)) { + assert(!canonicalName_.empty()); + //https://www.gnu.org/software/gettext/manual/html_node/MO-Files.html transMapping[""] = L"Content-Type: text/plain; charset=UTF-8\n"; @@ -411,37 +402,44 @@ public: void init(wxLanguage lng) { - locale_.reset(); //avoid global locale lifetime overlap! wxWidgets cannot handle this and will crash! - locale_ = std::make_unique(); - - const wxLanguageInfo* sysLngInfo = wxLocale::GetLanguageInfo(wxLocale::GetSystemLanguage()); + const wxLanguageInfo* sysLngInfo = wxLocale::GetLanguageInfo(sysLng_); const wxLanguageInfo* selLngInfo = wxLocale::GetLanguageInfo(lng); const bool sysLangIsRTL = sysLngInfo ? sysLngInfo->LayoutDirection == wxLayout_RightToLeft : false; const bool selectedLangIsRTL = selLngInfo ? selLngInfo->LayoutDirection == wxLayout_RightToLeft : false; - //wxWidgets shows a modal dialog on error during wxLocale::Init -> at least we can shut it up! - wxLog* oldLogTarget = wxLog::SetActiveTarget(new wxLogStderr); //transfer and receive ownership! - ZEN_ON_SCOPE_EXIT(delete wxLog::SetActiveTarget(oldLogTarget)); + const wxLanguage initLng = sysLangIsRTL == selectedLangIsRTL ? + sysLng_ : //use sys-lang to preserve sub-language specific rules (e.g. German Swiss number punctuation) + lng; //have to use the supplied language to enable RTL layout different than user settings - if (sysLangIsRTL == selectedLangIsRTL) - locale_->Init(wxLANGUAGE_DEFAULT); //use sys-lang to preserve sub-language specific rules (e.g. german swiss number punctuation) - else - locale_->Init(lng); //have to use the supplied language to enable RTL layout different than user settings + if (!locale_ || localeLng_ != initLng) + { + //wxWidgets shows a modal dialog on error during wxLocale::Init() -> at least we can shut it up! + wxLog* oldLogTarget = wxLog::SetActiveTarget(new wxLogStderr); //transfer and receive ownership! + ZEN_ON_SCOPE_EXIT(delete wxLog::SetActiveTarget(oldLogTarget)); + + locale_.reset(); //avoid global locale lifetime overlap! wxWidgets cannot handle this and will crash! + locale_ = std::make_unique(initLng, wxLOCALE_DONT_LOAD_DEFAULT /*we're not using wxwin.mo*/); + assert(locale_->IsOk()); + localeLng_ = initLng; + } - locLng_ = lng; + lng_ = lng; } - void tearDown() { locale_.reset(); locLng_ = wxLANGUAGE_UNKNOWN; } + void tearDown() { locale_.reset(); lng_ = localeLng_ = wxLANGUAGE_UNKNOWN; } - wxLanguage getLanguage() const { return locLng_; } + wxLanguage getLanguage () const { return lng_; } + wxLanguage getSysLanguage() const { return sysLng_; } private: wxWidgetsLocale() {} ~wxWidgetsLocale() { assert(!locale_); } std::unique_ptr locale_; - wxLanguage locLng_ = wxLANGUAGE_UNKNOWN; + wxLanguage localeLng_ = wxLANGUAGE_UNKNOWN; + wxLanguage lng_ = wxLANGUAGE_UNKNOWN; + const wxLanguage sysLng_ = static_cast(wxLocale::GetSystemLanguage()); }; } @@ -462,21 +460,23 @@ void fff::releaseWxLocale() void fff::setLanguage(wxLanguage lng) //throw FileError { - if (getLanguage() == lng && wxWidgetsLocale::getInstance().getLanguage() == lng) + if (getLanguage() == lng) return; //support polling //(try to) retrieve language file - Zstring langFilePath; + std::string lngStream; + Zstring lngFileName; for (const TranslationInfo& e : getExistingTranslations()) if (e.languageID == lng) { - langFilePath = e.langFilePath; + lngStream = e.lngStream; + lngFileName = e.lngFileName; break; } //load language file into buffer - if (langFilePath.empty()) //if languageFile is empty, texts will be english by default + if (lngStream.empty()) //if file stream is empty, texts will be English by default { setTranslator(nullptr); lng = wxLANGUAGE_ENGLISH_US; @@ -484,19 +484,19 @@ void fff::setLanguage(wxLanguage lng) //throw FileError else try { - setTranslator(std::make_unique(langFilePath, lng)); //throw lng::ParsingError, plural::ParsingError + setTranslator(std::make_unique(lngStream)); //throw lng::ParsingError, plural::ParsingError } catch (lng::ParsingError& e) { throw FileError(replaceCpy(replaceCpy(replaceCpy(_("Error parsing file %x, row %y, column %z."), - L"%x", fmtPath(langFilePath)), + L"%x", fmtPath(lngFileName)), L"%y", numberTo(e.row + 1)), L"%z", numberTo(e.col + 1)) + L"\n\n" + e.msg); } catch (plural::ParsingError&) { - throw FileError(L"Invalid plural form definition: " + fmtPath(langFilePath)); //user should never see this! + throw FileError(L"Invalid plural form definition: " + fmtPath(lngFileName)); //user should never see this! } //handle RTL swapping: we need wxWidgets to do this @@ -519,13 +519,12 @@ void fff::setLanguage(wxLanguage lng) //throw FileError wxLanguage fff::getLanguage() { - std::shared_ptr t = getTranslator(); - const FFSTranslation* loc = dynamic_cast(t.get()); - return loc ? loc->getLangId() : wxLANGUAGE_ENGLISH_US; + return wxWidgetsLocale::getInstance().getLanguage(); } wxLanguage fff::getSystemLanguage() { - return mapLanguageDialect(static_cast(wxLocale::GetSystemLanguage())); + static const wxLanguage sysLng = mapLanguageDialect(wxWidgetsLocale::getInstance().getSysLanguage()); + return sysLng; } diff --git a/FreeFileSync/Source/base/localization.h b/FreeFileSync/Source/base/localization.h index bf2f6b60..51fea760 100644 --- a/FreeFileSync/Source/base/localization.h +++ b/FreeFileSync/Source/base/localization.h @@ -20,13 +20,15 @@ struct TranslationInfo std::wstring languageName; std::wstring translatorName; std::wstring languageFlag; - Zstring langFilePath; + Zstring lngFileName; + std::string lngStream; }; const std::vector& getExistingTranslations(); void setLanguage(wxLanguage lng); //throw FileError wxLanguage getLanguage(); + wxLanguage getSystemLanguage(); void releaseWxLocale(); //wxLocale crashes miserably on wxGTK when destructor runs during global cleanup => call in wxApp::OnExit diff --git a/FreeFileSync/Source/base/lock_holder.h b/FreeFileSync/Source/base/lock_holder.h index fb1679bb..ab24e9f4 100644 --- a/FreeFileSync/Source/base/lock_holder.h +++ b/FreeFileSync/Source/base/lock_holder.h @@ -20,7 +20,7 @@ const Zchar LOCK_FILE_ENDING[] = Zstr(".ffs_lock"); //don't use Zstring as globa class LockHolder { public: - LockHolder(const std::set& folderPaths, bool& warnDirectoryLockFailed, ProcessCallback& pcb /*throw X*/) + LockHolder(const std::set& folderPaths, bool& warnDirectoryLockFailed, PhaseCallback& pcb /*throw X*/) { using namespace zen; @@ -31,7 +31,7 @@ public: { //lock file creation is synchronous and may block noticeably for very slow devices (USB sticks, mapped cloud storage) lockHolder_.emplace_back(appendSeparator(folderPath) + Zstr("sync") + LOCK_FILE_ENDING, - [&](const std::wstring& msg) { pcb.reportStatus(msg); /*throw X*/ }, + [&](const std::wstring& msg) { pcb.updateStatus(msg); /*throw X*/ }, UI_UPDATE_INTERVAL / 2); //throw FileError } catch (const FileError& e) { failedLocks.emplace_back(folderPath, e); } diff --git a/FreeFileSync/Source/base/log_file.cpp b/FreeFileSync/Source/base/log_file.cpp index 8a2489f9..76a9b7a1 100644 --- a/FreeFileSync/Source/base/log_file.cpp +++ b/FreeFileSync/Source/base/log_file.cpp @@ -261,7 +261,7 @@ void limitLogfileCount(const AbstractPath& logFolderPath, //throw FileError for (const LogFileInfo& lfi : logFiles) if (lfi.timeStamp < cutOffTime && - logFilePathsToKeep.find(lfi.filePath) == logFilePathsToKeep.end()) //don't trim latest log files corresponding to last used config files! + !contains(logFilePathsToKeep, lfi.filePath)) //don't trim latest log files corresponding to last used config files! //nitpicker's corner: what about path differences due to case? e.g. user-overriden log file path changed in case { if (notifyStatus) notifyStatus(_("Cleaning up log files:") + L" " + fmtPath(AFS::getDisplayPath(lfi.filePath))); diff --git a/FreeFileSync/Source/base/parse_lng.h b/FreeFileSync/Source/base/parse_lng.h index 4e6cb6c6..361628e4 100644 --- a/FreeFileSync/Source/base/parse_lng.h +++ b/FreeFileSync/Source/base/parse_lng.h @@ -49,8 +49,8 @@ struct ParsingError size_t row = 0; //starting with 0 size_t col = 0; // }; -void parseLng (const std::string& fileStream, TransHeader& header, TranslationMap& out, TranslationPluralMap& pluralOut); //throw ParsingError -void parseHeader(const std::string& fileStream, TransHeader& header); //throw ParsingError +TransHeader parseHeader(const std::string& fileStream); //throw ParsingError +void parseLng(const std::string& fileStream, TransHeader& header, TranslationMap& out, TranslationPluralMap& pluralOut); //throw ParsingError class TranslationUnorderedList; //unordered list of unique translation items std::string generateLng(const TranslationUnorderedList& in, const TransHeader& header); @@ -708,9 +708,11 @@ void parseLng(const std::string& fileStream, TransHeader& header, TranslationMap inline -void parseHeader(const std::string& fileStream, TransHeader& header) //throw ParsingError +TransHeader parseHeader(const std::string& fileStream) //throw ParsingError { + TransHeader header; LngParser(fileStream).parseHeader(header); + return header; } diff --git a/FreeFileSync/Source/base/path_filter.h b/FreeFileSync/Source/base/path_filter.h index 29705b06..549bf0cc 100644 --- a/FreeFileSync/Source/base/path_filter.h +++ b/FreeFileSync/Source/base/path_filter.h @@ -29,7 +29,7 @@ Semantics of PathFilter: NullFilter NameFilter CombinedFilter */ class PathFilter; -using FilterRef = zen::SharedRef; //always bound by design! Thread-safety: internally synchronized! +using FilterRef = zen::SharedRef; //Thread-safety: internally synchronized! const Zchar FILTER_ITEM_SEPARATOR = Zstr('|'); diff --git a/FreeFileSync/Source/base/process_callback.h b/FreeFileSync/Source/base/process_callback.h index a89f9945..8b46b8d4 100644 --- a/FreeFileSync/Source/base/process_callback.h +++ b/FreeFileSync/Source/base/process_callback.h @@ -19,26 +19,14 @@ const std::chrono::milliseconds UI_UPDATE_INTERVAL(100); //perform ui updates no //100 ms seems to be a good value with only a minimal performance loss; also used by Win 7 copy progress bar //this one is required by async directory existence check! -//report status during comparison and synchronization -struct ProcessCallback -{ - virtual ~ProcessCallback() {} - //these methods have to be implemented in the derived classes to handle error and status information - - //notify synchronization phases - enum Phase - { - PHASE_NONE, //initial status - PHASE_SCANNING, - PHASE_COMPARING_CONTENT, - PHASE_SYNCHRONIZING - }; - virtual void initNewPhase(int itemsTotal, int64_t bytesTotal, Phase phaseId) = 0; //throw X; informs about the estimated amount of data that will be processed in this phase +struct PhaseCallback +{ + virtual ~PhaseCallback() {} //note: this one must NOT throw in order to properly allow undoing setting of statistics! - //it is in general paired with a call to requestUiRefresh() to compensate! - virtual void updateDataProcessed(int itemsDelta, int64_t bytesDelta) = 0; //noexcept!! + //it is in general paired with a call to requestUiUpdate() to compensate! + virtual void updateDataProcessed(int itemsDelta, int64_t bytesDelta) = 0; //noexcept! virtual void updateDataTotal (int itemsDelta, int64_t bytesDelta) = 0; // /* the estimated and actual total workload may change *during* sync: 1. file cannot be moved -> fallback to copy + delete @@ -53,35 +41,40 @@ struct ProcessCallback 10. Error during file copy, retry: bytes were copied => increases total workload! */ - //opportunity to abort must be implemented in a frequently-executed method like requestUiRefresh() - virtual void requestUiRefresh() = 0; //throw X - virtual void forceUiRefresh () = 0; //throw X - called before starting long running tasks which don't update regularly + //opportunity to abort must be implemented in a frequently-executed method like requestUiUpdate() + virtual void requestUiUpdate(bool force = false) = 0; //throw X //UI info only, should not be logged: called periodically after data was processed: expected(!) to request GUI update - virtual void reportStatus(const std::wstring& text) = 0; //throw X + virtual void updateStatus(const std::wstring& msg) = 0; //throw X - //logging only, no status update! - virtual void logInfo(const std::wstring& msg) = 0; - - //called periodically after data was processed - void reportInfo(const std::wstring& msg) //throw X - { - logInfo(msg); - reportStatus(msg); //throw X - } + //like updateStatus() but should be logged: + virtual void reportInfo(const std::wstring& msg) = 0; //throw X virtual void reportWarning(const std::wstring& msg, bool& warningActive) = 0; //throw X - //error handling: enum Response { - ignoreError, + ignore, retry }; - virtual Response reportError (const std::wstring& msg, size_t retryNumber) = 0; //throw X; recoverable error situation - virtual void reportFatalError(const std::wstring& msg) = 0; //throw X; non-recoverable error situation + virtual Response reportError (const std::wstring& msg, size_t retryNumber) = 0; //throw X; recoverable error + virtual void reportFatalError(const std::wstring& msg) = 0; //throw X; non-recoverable error +}; + - [[noreturn]] virtual void abortProcessNow() = 0; //will throw an exception => don't call while in a C GUI callstack +enum class ProcessPhase +{ + none, //initial status + scanning, + comparingContent, + synchronizing +}; + +//report status during comparison and synchronization +struct ProcessCallback : public PhaseCallback +{ + //informs about the estimated amount of data that will be processed in the next synchronization phase + virtual void initNewPhase(int itemsTotal, int64_t bytesTotal, ProcessPhase phaseId) = 0; //throw X }; } diff --git a/FreeFileSync/Source/base/resolve_path.cpp b/FreeFileSync/Source/base/resolve_path.cpp index 1799acb5..83e6d226 100644 --- a/FreeFileSync/Source/base/resolve_path.cpp +++ b/FreeFileSync/Source/base/resolve_path.cpp @@ -157,7 +157,7 @@ namespace //expand volume name if possible, return original input otherwise Zstring expandVolumeName(Zstring pathPhrase) // [volname]:\folder [volname]\folder [volname]folder -> C:\folder { - //this would be a nice job for a C++11 regex... + //use C++11 regex? //we only expect the [.*] pattern at the beginning => do not touch dir names like "C:\somedir\[stuff]" trim(pathPhrase, true, false); diff --git a/FreeFileSync/Source/base/status_handler.cpp b/FreeFileSync/Source/base/status_handler.cpp index aba4810c..19d1e882 100644 --- a/FreeFileSync/Source/base/status_handler.cpp +++ b/FreeFileSync/Source/base/status_handler.cpp @@ -12,14 +12,14 @@ namespace { std::chrono::steady_clock::time_point lastExec; -}; +} -bool fff::updateUiIsAllowed() +bool fff::uiUpdateDue(bool force) { const auto now = std::chrono::steady_clock::now(); - if (now >= lastExec + UI_UPDATE_INTERVAL) + if (now >= lastExec + UI_UPDATE_INTERVAL || force) { lastExec = now; return true; diff --git a/FreeFileSync/Source/base/status_handler.h b/FreeFileSync/Source/base/status_handler.h index 561e0cc7..e91a2d1a 100644 --- a/FreeFileSync/Source/base/status_handler.h +++ b/FreeFileSync/Source/base/status_handler.h @@ -19,7 +19,7 @@ namespace fff { -bool updateUiIsAllowed(); //test if a specific amount of time is over +bool uiUpdateDue(bool force = false); //test if a specific amount of time is over /* Updating GUI is fast! @@ -34,11 +34,11 @@ class AbortProcess {}; enum class AbortTrigger { - USER, - PROGRAM, + user, + program, }; -//gui may want to abort process +//GUI may want to abort process struct AbortCallback { virtual ~AbortCallback() {} @@ -59,10 +59,10 @@ struct Statistics { virtual ~Statistics() {} - virtual ProcessCallback::Phase currentPhase() const = 0; + virtual ProcessPhase currentPhase() const = 0; - virtual ProgressStats getStatsCurrent(ProcessCallback::Phase phase) const = 0; - virtual ProgressStats getStatsTotal (ProcessCallback::Phase phase) const = 0; + virtual ProgressStats getStatsCurrent() const = 0; + virtual ProgressStats getStatsTotal () const = 0; virtual std::optional getAbortStatus() const = 0; virtual const std::wstring& currentStatusText() const = 0; @@ -84,116 +84,87 @@ struct ProcessSummary class StatusHandler : public ProcessCallback, public AbortCallback, public Statistics { public: - StatusHandler() - { - updateData(statsTotal_, -1, -1); - } + //StatusHandler() {} //implement parts of ProcessCallback - void initNewPhase(int itemsTotal, int64_t bytesTotal, Phase phase) override //(throw X) + void initNewPhase(int itemsTotal, int64_t bytesTotal, ProcessPhase phase) override //(throw X) { assert((itemsTotal < 0) == (bytesTotal < 0)); currentPhase_ = phase; - refStats(statsTotal_, currentPhase_) = { itemsTotal, bytesTotal }; + statsCurrent_ = {}; + statsTotal_ = { itemsTotal, bytesTotal }; } void updateDataProcessed(int itemsDelta, int64_t bytesDelta) override { updateData(statsCurrent_, itemsDelta, bytesDelta); } //note: these methods MUST NOT throw in order void updateDataTotal (int itemsDelta, int64_t bytesDelta) override { updateData(statsTotal_, itemsDelta, bytesDelta); } //to allow usage within destructors! - void requestUiRefresh() override final //throw AbortProcess - { - if (updateUiIsAllowed()) - forceUiRefresh(); //throw AbortProcess - } - - void forceUiRefresh() override final //throw AbortProcess + void requestUiUpdate(bool force) final //throw AbortProcess { - const bool abortRequestedBefore = static_cast(abortRequested_); - - forceUiRefreshNoThrow(); - - //triggered by userRequestAbort() - // => sufficient to evaluate occasionally when updateUiIsAllowed()! - // => refresh *before* throwing: support requestUiRefresh() during destruction - if (abortRequested_) + if (uiUpdateDue(force)) { - if (!abortRequestedBefore) - forceUiRefreshNoThrow(); //just once to immediately show the "Stop requested..." status after user clicks cancel - throw AbortProcess(); + const bool abortRequestedBefore = static_cast(abortRequested_); + + forceUiUpdateNoThrow(); + + //triggered by userRequestAbort() + // => sufficient to evaluate occasionally when uiUpdateDue()! + // => refresh *before* throwing: support requestUiUpdate() during destruction + if (abortRequested_) + { + if (!abortRequestedBefore) + forceUiUpdateNoThrow(); //just once to immediately show the "Stop requested..." status after user clicks cancel + throw AbortProcess(); + } } } - virtual void forceUiRefreshNoThrow() = 0; //noexcept + virtual void forceUiUpdateNoThrow() = 0; //noexcept - void reportStatus(const std::wstring& text) override final //throw AbortProcess + void updateStatus(const std::wstring& msg) final //throw AbortProcess { - //assert(!text.empty()); -> possible, e.g. start of parallel scan - statusText_ = text; //update text *before* running operations that can throw - requestUiRefresh(); //throw AbortProcess + //assert(!msg.empty()); -> possible, e.g. start of parallel scan + statusText_ = msg; //update *before* running operations that can throw + requestUiUpdate(false /*force*/); //throw AbortProcess } - [[noreturn]] void abortProcessNow() override + [[noreturn]] void abortProcessNow(AbortTrigger trigger) { - if (!abortRequested_) abortRequested_ = AbortTrigger::PROGRAM; - forceUiRefreshNoThrow(); - throw AbortProcess(); - } + if (!abortRequested_ || trigger == AbortTrigger::user) //AbortTrigger::USER overwrites AbortTrigger::program + abortRequested_ = trigger; - [[noreturn]] void userAbortProcessNow() - { - abortRequested_ = AbortTrigger::USER; //may overwrite AbortTrigger::PROGRAM - forceUiRefreshNoThrow(); //flush GUI to show new abort state + forceUiUpdateNoThrow(); //flush GUI to show new cancelled state throw AbortProcess(); } //implement AbortCallback - void userRequestAbort() override final + void userRequestAbort() final { - abortRequested_ = AbortTrigger::USER; //may overwrite AbortTrigger::PROGRAM + abortRequested_ = AbortTrigger::user; //may overwrite AbortTrigger::program } //called from GUI code: this does NOT call abortProcessNow() immediately, but later when we're out of the C GUI call stack - //=> don't call forceUiRefreshNoThrow() here + //=> don't call forceUiUpdateNoThrow() here! //implement Statistics - Phase currentPhase() const override final { return currentPhase_; } + ProcessPhase currentPhase() const final { return currentPhase_; } - ProgressStats getStatsCurrent(ProcessCallback::Phase phase) const override { return refStats(statsCurrent_, phase); } - ProgressStats getStatsTotal (ProcessCallback::Phase phase) const override { return refStats(statsTotal_, phase); } + ProgressStats getStatsCurrent() const override { return statsCurrent_; } + ProgressStats getStatsTotal () const override { return statsTotal_; } const std::wstring& currentStatusText() const override { return statusText_; } std::optional getAbortStatus() const override { return abortRequested_; } private: - void updateData(std::vector& num, int itemsDelta, int64_t bytesDelta) - { - auto& st = refStats(num, currentPhase_); - assert(st.items >= 0); - assert(st.bytes >= 0); - st.items += itemsDelta; - st.bytes += bytesDelta; - } - - static const ProgressStats& refStats(const std::vector& num, Phase phase) + void updateData(ProgressStats& stats, int itemsDelta, int64_t bytesDelta) { - switch (phase) - { - case PHASE_SCANNING: - return num[0]; - case PHASE_COMPARING_CONTENT: - return num[1]; - case PHASE_SYNCHRONIZING: - return num[2]; - case PHASE_NONE: - break; - } - return num[3]; //dummy entry! + assert(stats.items >= 0); + assert(stats.bytes >= 0); + stats.items += itemsDelta; + stats.bytes += bytesDelta; } - static ProgressStats& refStats(std::vector& num, Phase phase) { return const_cast(refStats(static_cast&>(num), phase)); } - - Phase currentPhase_ = PHASE_NONE; - std::vector statsCurrent_ = std::vector(4); //init with phase count - std::vector statsTotal_ = std::vector(4); // + ProcessPhase currentPhase_ = ProcessPhase::none; + ProgressStats statsCurrent_; + ProgressStats statsTotal_ { -1, -1 }; std::wstring statusText_; std::optional abortRequested_; diff --git a/FreeFileSync/Source/base/status_handler_impl.h b/FreeFileSync/Source/base/status_handler_impl.h index c3b32ca6..be6b6fa5 100644 --- a/FreeFileSync/Source/base/status_handler_impl.h +++ b/FreeFileSync/Source/base/status_handler_impl.h @@ -20,19 +20,19 @@ public: AsyncCallback() {} //non-blocking: context of worker thread (and main thread, see reportStats()) - void updateDataProcessed(int itemsDelta, int64_t bytesDelta) //noexcept!! + void updateDataProcessed(int itemsDelta, int64_t bytesDelta) //noexcept! { itemsDeltaProcessed_ += itemsDelta; bytesDeltaProcessed_ += bytesDelta; } - void updateDataTotal(int itemsDelta, int64_t bytesDelta) //noexcept!! + void updateDataTotal(int itemsDelta, int64_t bytesDelta) //noexcept! { itemsDeltaTotal_ += itemsDelta; bytesDeltaTotal_ += bytesDelta; } //context of worker thread - void reportStatus(const std::wstring& msg) //throw ThreadInterruption + void updateStatus(const std::wstring& msg) //throw ThreadInterruption { assert(!zen::runningMainThread()); { @@ -49,25 +49,20 @@ public: // so all other worker threads will wait when coming out of parallel I/O (trying to lock singleThread) void reportInfo(const std::wstring& msg) //throw ThreadInterruption { - reportStatus(msg); //throw ThreadInterruption - logInfo (msg); // - } + updateStatus(msg); //throw ThreadInterruption - //blocking call: context of worker thread - void logInfo(const std::wstring& msg) //throw ThreadInterruption - { assert(!zen::runningMainThread()); std::unique_lock dummy(lockRequest_); - zen::interruptibleWait(conditionReadyForNewRequest_, dummy, [this] { return !logInfoRequest_; }); //throw ThreadInterruption + zen::interruptibleWait(conditionReadyForNewRequest_, dummy, [this] { return !reportInfoRequest_; }); //throw ThreadInterruption - logInfoRequest_ = /*std::move(taskPrefix) + */ msg; + reportInfoRequest_ = /*std::move(taskPrefix) + */ msg; dummy.unlock(); //optimization for condition_variable::notify_all() conditionNewRequest.notify_all(); } //blocking call: context of worker thread - ProcessCallback::Response reportError(const std::wstring& msg, size_t retryNumber) //throw ThreadInterruption + PhaseCallback::Response reportError(const std::wstring& msg, size_t retryNumber) //throw ThreadInterruption { assert(!zen::runningMainThread()); std::unique_lock dummy(lockRequest_); @@ -78,27 +73,27 @@ public: zen::interruptibleWait(conditionHaveResponse_, dummy, [this] { return static_cast(errorResponse_); }); //throw ThreadInterruption - ProcessCallback::Response rv = *errorResponse_; + PhaseCallback::Response rv = *errorResponse_; errorRequest_ = {}; errorResponse_ = {}; dummy.unlock(); //optimization for condition_variable::notify_all() - conditionReadyForNewRequest_.notify_all(); //=> spurious wake-up for AsyncCallback::logInfo() + conditionReadyForNewRequest_.notify_all(); //=> spurious wake-up for AsyncCallback::reportInfo() return rv; } //context of main thread - void waitUntilDone(std::chrono::milliseconds duration, ProcessCallback& cb) //throw X + void waitUntilDone(std::chrono::milliseconds duration, PhaseCallback& cb) //throw X { assert(zen::runningMainThread()); for (;;) { const std::chrono::steady_clock::time_point callbackTime = std::chrono::steady_clock::now() + duration; - for (std::unique_lock dummy(lockRequest_) ;;) //process all errors without delay + for (std::unique_lock dummy(lockRequest_);;) //process all errors without delay { - const bool rv = conditionNewRequest.wait_until(dummy, callbackTime, [this] { return (errorRequest_ && !errorResponse_) || logInfoRequest_ || finishNowRequest_; }); + const bool rv = conditionNewRequest.wait_until(dummy, callbackTime, [this] { return (errorRequest_ && !errorResponse_) || reportInfoRequest_ || finishNowRequest_; }); if (!rv) //time-out + condition not met break; @@ -108,10 +103,10 @@ public: errorResponse_ = cb.reportError(errorRequest_->msg, errorRequest_->retryNumber); //throw X conditionHaveResponse_.notify_all(); //instead of notify_one(); workaround bug: https://svn.boost.org/trac/boost/ticket/7796 } - if (logInfoRequest_) + if (reportInfoRequest_) { - cb.logInfo(*logInfoRequest_); - logInfoRequest_ = {}; + cb.reportInfo(*reportInfoRequest_); //throw X + reportInfoRequest_ = {}; conditionReadyForNewRequest_.notify_all(); //=> spurious wake-up for AsyncCallback::reportError() } if (finishNowRequest_) @@ -123,7 +118,7 @@ public: } //call member functions outside of mutex scope: - cb.reportStatus(getCurrentStatus()); //throw X + cb.updateStatus(getCurrentStatus()); //throw X reportStats(cb); } } @@ -217,7 +212,7 @@ private: #endif //context of main thread - void reportStats(ProcessCallback& cb) + void reportStats(PhaseCallback& cb) { assert(zen::runningMainThread()); @@ -225,13 +220,13 @@ private: if (deltaProcessed.first != 0 || deltaProcessed.second != 0) { updateDataProcessed (-deltaProcessed.first, -deltaProcessed.second); //careful with these atomics: don't just set to 0 - cb.updateDataProcessed( deltaProcessed.first, deltaProcessed.second); //noexcept!! + cb.updateDataProcessed( deltaProcessed.first, deltaProcessed.second); //noexcept! } const std::pair deltaTotal(itemsDeltaTotal_, bytesDeltaTotal_); if (deltaTotal.first != 0 || deltaTotal.second != 0) { updateDataTotal (-deltaTotal.first, -deltaTotal.second); - cb.updateDataTotal( deltaTotal.first, deltaTotal.second); //noexcept!! + cb.updateDataTotal( deltaTotal.first, deltaTotal.second); //noexcept! } } @@ -240,7 +235,7 @@ private: { assert(zen::runningMainThread()); - int parallelOpsTotal = 0; + size_t parallelOpsTotal = 0; std::wstring statusMsg; { std::lock_guard dummy(lockCurrentStatus_); @@ -273,9 +268,9 @@ private: std::condition_variable conditionReadyForNewRequest_; std::condition_variable conditionNewRequest; std::condition_variable conditionHaveResponse_; - std::optional errorRequest_; - std::optional errorResponse_; - std::optional logInfoRequest_; + std::optional errorRequest_; + std::optional errorResponse_; + std::optional reportInfoRequest_; bool finishNowRequest_ = false; //---- status updates ---- @@ -294,7 +289,7 @@ private: //manage statistics reporting for a single item of work -template +template class ItemStatReporter { public: @@ -314,18 +309,18 @@ public: cb_.updateDataTotal(itemsReported_ - itemsExpected_, bytesReported_ - bytesExpected_); //noexcept! } - void reportStatus(const std::wstring& msg) { cb_.reportStatus(msg); } //throw ThreadInterruption + void updateStatus(const std::wstring& msg) { cb_.updateStatus(msg); } //throw ThreadInterruption - void reportDelta(int itemsDelta, int64_t bytesDelta) //nothrow! + void reportDelta(int itemsDelta, int64_t bytesDelta) //noexcept! { - cb_.updateDataProcessed(itemsDelta, bytesDelta); //nothrow! + cb_.updateDataProcessed(itemsDelta, bytesDelta); //noexcept! itemsReported_ += itemsDelta; bytesReported_ += bytesDelta; //special rule: avoid temporary statistics mess up, even though they are corrected anyway below: if (itemsReported_ > itemsExpected_) { - cb_.updateDataTotal(itemsReported_ - itemsExpected_, 0); + cb_.updateDataTotal(itemsReported_ - itemsExpected_, 0); //noexcept! itemsReported_ = itemsExpected_; } if (bytesReported_ > bytesExpected_) @@ -362,9 +357,9 @@ std::wstring tryReportingError(Function cmd /*throw FileError*/, Callback& cb /* assert(!e.toString().empty()); switch (cb.reportError(e.toString(), retryNumber)) //throw X { - case ProcessCallback::ignoreError: + case PhaseCallback::ignore: return e.toString(); - case ProcessCallback::retry: + case PhaseCallback::retry: break; //continue with loop } } @@ -383,7 +378,7 @@ namespace { void massParallelExecute(const std::vector>& workload, const std::string& threadGroupName, - ProcessCallback& callback /*throw X*/) //throw X + PhaseCallback& callback /*throw X*/) //throw X { using namespace zen; @@ -394,8 +389,8 @@ void massParallelExecute(const std::vector activeDeviceCount(perDeviceWorkload.size()); // + AsyncCallback acb; //manage life time: enclose ThreadGroup's!!! + std::atomic activeDeviceCount(perDeviceWorkload.size()); // //--------------------------------------------------------------------------------------------------------- std::map>> deviceThreadGroups; //worker threads live here... diff --git a/FreeFileSync/Source/base/structures.cpp b/FreeFileSync/Source/base/structures.cpp index 0c9c25e6..ba8b3a83 100644 --- a/FreeFileSync/Source/base/structures.cpp +++ b/FreeFileSync/Source/base/structures.cpp @@ -58,11 +58,11 @@ std::wstring fff::getVariantName(CompareVariant var) { switch (var) { - case CompareVariant::TIME_SIZE: + case CompareVariant::timeSize: return _("File time and size"); - case CompareVariant::CONTENT: + case CompareVariant::content: return _("File content"); - case CompareVariant::SIZE: + case CompareVariant::size: return _("File size"); } assert(false); diff --git a/FreeFileSync/Source/base/structures.h b/FreeFileSync/Source/base/structures.h index deb9811f..56c4cbaf 100644 --- a/FreeFileSync/Source/base/structures.h +++ b/FreeFileSync/Source/base/structures.h @@ -20,9 +20,9 @@ using AFS = AbstractFileSystem; enum class CompareVariant { - TIME_SIZE, - CONTENT, - SIZE + timeSize, + content, + size }; std::wstring getVariantName(CompareVariant var); @@ -49,9 +49,9 @@ enum CompareFileResult FILE_EQUAL, FILE_LEFT_SIDE_ONLY, FILE_RIGHT_SIDE_ONLY, - FILE_LEFT_NEWER, //CompareVariant::TIME_SIZE only! + FILE_LEFT_NEWER, //CompareVariant::timeSize only! FILE_RIGHT_NEWER, // - FILE_DIFFERENT_CONTENT, //CompareVariant::CONTENT, CompareVariant::SIZE only! + FILE_DIFFERENT_CONTENT, //CompareVariant::content, CompareVariant::size only! FILE_DIFFERENT_METADATA, //both sides equal, but different metadata only: short name case FILE_CONFLICT }; @@ -111,9 +111,9 @@ struct DirectionSet { SyncDirection exLeftSideOnly = SyncDirection::RIGHT; SyncDirection exRightSideOnly = SyncDirection::LEFT; - SyncDirection leftNewer = SyncDirection::RIGHT; //CompareVariant::TIME_SIZE only! + SyncDirection leftNewer = SyncDirection::RIGHT; //CompareVariant::timeSize only! SyncDirection rightNewer = SyncDirection::LEFT; // - SyncDirection different = SyncDirection::NONE; //CompareVariant::CONTENT, CompareVariant::SIZE only! + SyncDirection different = SyncDirection::NONE; //CompareVariant::content, CompareVariant::size only! SyncDirection conflict = SyncDirection::NONE; }; @@ -174,7 +174,7 @@ bool effectivelyEqual(const DirectionConfig& lhs, const DirectionConfig& rhs) struct CompConfig { - CompareVariant compareVar = CompareVariant::TIME_SIZE; + CompareVariant compareVar = CompareVariant::timeSize; SymLinkHandling handleSymlinks = SymLinkHandling::EXCLUDE; std::vector ignoreTimeShiftMinutes; //treat modification times with these offsets as equal }; @@ -198,16 +198,16 @@ std::wstring toTimeShiftPhrase (const std::vector& i enum class DeletionPolicy { - PERMANENT, - RECYCLER, - VERSIONING + permanent, + recycler, + versioning }; enum class VersioningStyle { - REPLACE, - TIMESTAMP_FOLDER, - TIMESTAMP_FILE, + replace, + timestampFolder, + timestampFile, }; struct SyncConfig @@ -215,13 +215,13 @@ struct SyncConfig //sync direction settings DirectionConfig directionCfg; - DeletionPolicy handleDeletion = DeletionPolicy::RECYCLER; //use Recycle Bin, delete permanently or move to user-defined location + DeletionPolicy handleDeletion = DeletionPolicy::recycler; //use Recycle Bin, delete permanently or move to user-defined location //versioning options Zstring versioningFolderPhrase; - VersioningStyle versioningStyle = VersioningStyle::REPLACE; + VersioningStyle versioningStyle = VersioningStyle::replace; - //limit number of versions per file: (if versioningStyle != REPLACE) + //limit number of versions per file: (if versioningStyle != replace) int versionMaxAgeDays = 0; //<= 0 := no limit int versionCountMin = 0; //only used if versionMaxAgeDays > 0 => < versionCountMax (if versionCountMax > 0) int versionCountMax = 0; //<= 0 := no limit @@ -232,10 +232,10 @@ inline bool operator==(const SyncConfig& lhs, const SyncConfig& rhs) { return lhs.directionCfg == rhs.directionCfg && - lhs.handleDeletion == rhs.handleDeletion && //!= DeletionPolicy::VERSIONING => still consider versioningFolderPhrase: e.g. user temporarily + lhs.handleDeletion == rhs.handleDeletion && //!= DeletionPolicy::versioning => still consider versioningFolderPhrase: e.g. user temporarily lhs.versioningFolderPhrase == rhs.versioningFolderPhrase && //switched to "permanent" deletion and accidentally saved cfg => versioning folder is easily restored lhs.versioningStyle == rhs.versioningStyle && - (lhs.versioningStyle == VersioningStyle::REPLACE || + (lhs.versioningStyle == VersioningStyle::replace || ( lhs.versionMaxAgeDays == rhs.versionMaxAgeDays && (lhs.versionMaxAgeDays <= 0 || @@ -252,11 +252,11 @@ bool effectivelyEqual(const SyncConfig& lhs, const SyncConfig& rhs) { return effectivelyEqual(lhs.directionCfg, rhs.directionCfg) && lhs.handleDeletion == rhs.handleDeletion && - (lhs.handleDeletion != DeletionPolicy::VERSIONING || //only evaluate versioning folder if required! + (lhs.handleDeletion != DeletionPolicy::versioning || //only evaluate versioning folder if required! ( lhs.versioningFolderPhrase == rhs.versioningFolderPhrase && lhs.versioningStyle == rhs.versioningStyle && - (lhs.versioningStyle == VersioningStyle::REPLACE || + (lhs.versioningStyle == VersioningStyle::replace || ( lhs.versionMaxAgeDays == rhs.versionMaxAgeDays && (lhs.versionMaxAgeDays <= 0 || diff --git a/FreeFileSync/Source/base/synchronization.cpp b/FreeFileSync/Source/base/synchronization.cpp index 24272eb1..fdb9e23e 100644 --- a/FreeFileSync/Source/base/synchronization.cpp +++ b/FreeFileSync/Source/base/synchronization.cpp @@ -247,9 +247,9 @@ void SyncStatistics::processFolder(const FolderPair& folder) /* - DeletionPolicy::PERMANENT: deletion frees space - DeletionPolicy::RECYCLER: won't free space until recycler is full, but then frees space - DeletionPolicy::VERSIONING: depends on whether versioning folder is on a different volume + DeletionPolicy::permanent: deletion frees space + DeletionPolicy::recycler: won't free space until recycler is full, but then frees space + DeletionPolicy::versioning: depends on whether versioning folder is on a different volume -> if deleted item is a followed symlink, no space is freed -> created/updated/deleted item may be on a different volume than base directory: consider symlinks, junctions! @@ -585,7 +585,7 @@ public: time_t syncStartTime); //clean-up temporary directory (recycle bin optimization) - void tryCleanup(ProcessCallback& cb /*throw X*/, bool allowCallbackException); //throw FileError -> call this in non-exceptional code path, i.e. somewhere after sync! + void tryCleanup(PhaseCallback& cb /*throw X*/); //throw X void removeDirWithCallback (const AbstractPath& dirPath, const Zstring& relativePath, AsyncItemStatReporter& statReporter, std::mutex& singleThread); // void removeFileWithCallback(const FileDescriptor& fileDescr, const Zstring& relativePath, AsyncItemStatReporter& statReporter, std::mutex& singleThread); //throw FileError, ThreadInterruption @@ -601,7 +601,7 @@ private: AFS::RecycleSession& getOrCreateRecyclerSession() //throw FileError => dont create in constructor!!! { - assert(deletionPolicy_ == DeletionPolicy::RECYCLER); + assert(deletionPolicy_ == DeletionPolicy::recycler); if (!recyclerSession_) recyclerSession_ = AFS::createRecyclerSession(baseFolderPath_); //throw FileError return *recyclerSession_; @@ -609,7 +609,7 @@ private: FileVersioner& getOrCreateVersioner() //throw FileError => dont create in constructor!!! { - assert(deletionPolicy_ == DeletionPolicy::VERSIONING); + assert(deletionPolicy_ == DeletionPolicy::versioning); if (!versioner_) versioner_ = std::make_unique(versioningFolderPath_, versioningStyle_, syncStartTime_); //throw FileError return *versioner_; @@ -620,7 +620,7 @@ private: const AbstractPath baseFolderPath_; std::unique_ptr recyclerSession_; - //used only for DeletionPolicy::VERSIONING: + //used only for DeletionPolicy::versioning: const AbstractPath versioningFolderPath_; const VersioningStyle versioningStyle_; const time_t syncStartTime_; @@ -649,11 +649,11 @@ DeletionHandler::DeletionHandler(const AbstractPath& baseFolderPath, //nothrow! { switch (deletionPolicy) { - case DeletionPolicy::PERMANENT: + case DeletionPolicy::permanent: return _("Deleting file %x"); - case DeletionPolicy::RECYCLER: + case DeletionPolicy::recycler: return _("Moving file %x to the recycle bin"); - case DeletionPolicy::VERSIONING: + case DeletionPolicy::versioning: return replaceCpy(_("Moving file %x to %y"), L"%y", fmtPath(AFS::getDisplayPath(versioningFolderPath_))); } return std::wstring(); @@ -662,11 +662,11 @@ txtRemovingSymlink_([&] { switch (deletionPolicy) { - case DeletionPolicy::PERMANENT: + case DeletionPolicy::permanent: return _("Deleting symbolic link %x"); - case DeletionPolicy::RECYCLER: + case DeletionPolicy::recycler: return _("Moving symbolic link %x to the recycle bin"); - case DeletionPolicy::VERSIONING: + case DeletionPolicy::versioning: return replaceCpy(_("Moving symbolic link %x to %y"), L"%y", fmtPath(AFS::getDisplayPath(versioningFolderPath_))); } return std::wstring(); @@ -675,48 +675,39 @@ txtRemovingFolder_([&] { switch (deletionPolicy) { - case DeletionPolicy::PERMANENT: + case DeletionPolicy::permanent: return _("Deleting folder %x"); - case DeletionPolicy::RECYCLER: + case DeletionPolicy::recycler: return _("Moving folder %x to the recycle bin"); - case DeletionPolicy::VERSIONING: + case DeletionPolicy::versioning: return replaceCpy(_("Moving folder %x to %y"), L"%y", fmtPath(AFS::getDisplayPath(versioningFolderPath_))); } return std::wstring(); }()) {} -void DeletionHandler::tryCleanup(ProcessCallback& cb /*throw X*/, bool allowCallbackException) //throw FileError +void DeletionHandler::tryCleanup(PhaseCallback& cb /*throw X*/) //throw X { assert(runningMainThread()); switch (deletionPolicy_) { - case DeletionPolicy::RECYCLER: + case DeletionPolicy::recycler: if (recyclerSession_) { auto notifyDeletionStatus = [&](const std::wstring& displayPath) { - try - { - if (!displayPath.empty()) - cb.reportStatus(replaceCpy(txtRemovingFile_, L"%x", fmtPath(displayPath))); //throw X - else - cb.requestUiRefresh(); //throw X - } - catch (...) - { - if (allowCallbackException) - throw; - } + if (!displayPath.empty()) + cb.updateStatus(replaceCpy(txtRemovingFile_, L"%x", fmtPath(displayPath))); //throw X + else + cb.requestUiUpdate(); //throw X }; - - //move content of temporary directory to recycle bin in a single call - recyclerSession_->tryCleanup(notifyDeletionStatus); //throw FileError + //move content of temporary directory to recycle bin in one go + tryReportingError([&] { recyclerSession_->tryCleanup(notifyDeletionStatus); /*throw FileError*/}, cb); //throw X } break; - case DeletionPolicy::PERMANENT: - case DeletionPolicy::VERSIONING: + case DeletionPolicy::permanent: + case DeletionPolicy::versioning: break; } } @@ -728,12 +719,12 @@ void DeletionHandler::removeDirWithCallback(const AbstractPath& folderPath,//thr { switch (deletionPolicy_) { - case DeletionPolicy::PERMANENT: + case DeletionPolicy::permanent: { //callbacks run *outside* singleThread_ lock! => fine auto notifyDeletion = [&statReporter](const std::wstring& statusText, const std::wstring& displayPath) { - statReporter.reportStatus(replaceCpy(statusText, L"%x", fmtPath(displayPath))); //throw ThreadInterruption + statReporter.updateStatus(replaceCpy(statusText, L"%x", fmtPath(displayPath))); //throw ThreadInterruption statReporter.reportDelta(1, 0); //it would be more correct to report *after* work was done! //OTOH: ThreadInterruption must not happen just after last deletion was successful: allow for transactional file model update! warn_static("=> indeed; fix!?") @@ -746,17 +737,17 @@ void DeletionHandler::removeDirWithCallback(const AbstractPath& folderPath,//thr } break; - case DeletionPolicy::RECYCLER: + case DeletionPolicy::recycler: parallel::recycleItemIfExists(getOrCreateRecyclerSession(), folderPath, relativePath, singleThread); //throw FileError statReporter.reportDelta(1, 0); //moving to recycler is ONE logical operation, irrespective of the number of child elements! break; - case DeletionPolicy::VERSIONING: + case DeletionPolicy::versioning: { //callbacks run *outside* singleThread_ lock! => fine auto notifyMove = [&statReporter](const std::wstring& statusText, const std::wstring& displayPathFrom, const std::wstring& displayPathTo) { - statReporter.reportStatus(replaceCpy(replaceCpy(statusText, L"%x", L"\n" + fmtPath(displayPathFrom)), L"%y", L"\n" + fmtPath(displayPathTo))); //throw ThreadInterruption + statReporter.updateStatus(replaceCpy(replaceCpy(statusText, L"%x", L"\n" + fmtPath(displayPathFrom)), L"%y", L"\n" + fmtPath(displayPathTo))); //throw ThreadInterruption statReporter.reportDelta(1, 0); //it would be more correct to report *after* work was done! warn_static("=> indeed; fix!?") }; @@ -782,13 +773,13 @@ void DeletionHandler::removeFileWithCallback(const FileDescriptor& fileDescr, // else switch (deletionPolicy_) { - case DeletionPolicy::PERMANENT: + case DeletionPolicy::permanent: parallel::removeFileIfExists(fileDescr.path, singleThread); //throw FileError break; - case DeletionPolicy::RECYCLER: + case DeletionPolicy::recycler: parallel::recycleItemIfExists(getOrCreateRecyclerSession(), fileDescr.path, relativePath, singleThread); //throw FileError break; - case DeletionPolicy::VERSIONING: + case DeletionPolicy::versioning: { //callback runs *outside* singleThread_ lock! => fine auto notifyUnbufferedIO = [&](int64_t bytesDelta) { statReporter.reportDelta(0, bytesDelta); interruptionPoint(); }; //throw ThreadInterruption @@ -810,13 +801,13 @@ void DeletionHandler::removeLinkWithCallback(const AbstractPath& linkPath, //thr { switch (deletionPolicy_) { - case DeletionPolicy::PERMANENT: + case DeletionPolicy::permanent: parallel::removeSymlinkIfExists(linkPath, singleThread); //throw FileError break; - case DeletionPolicy::RECYCLER: + case DeletionPolicy::recycler: parallel::recycleItemIfExists(getOrCreateRecyclerSession(), linkPath, relativePath, singleThread); //throw FileError break; - case DeletionPolicy::VERSIONING: + case DeletionPolicy::versioning: parallel::revisionSymlink(getOrCreateVersioner(), linkPath, relativePath, singleThread); //throw FileError break; } @@ -939,7 +930,7 @@ public: DeletionHandler& delHandlerRight; }; - static void runSync(SyncCtx& syncCtx, BaseFolderPair& baseFolder, ProcessCallback& cb) + static void runSync(SyncCtx& syncCtx, BaseFolderPair& baseFolder, PhaseCallback& cb) { runPass(PassNo::zero, syncCtx, baseFolder, cb); //prepare file moves runPass(PassNo::one, syncCtx, baseFolder, cb); //delete files (or overwrite big ones with smaller ones) @@ -973,7 +964,7 @@ private: static bool needZeroPass(const FilePair& file); static bool needZeroPass(const FolderPair& folder); - static void runPass(PassNo pass, SyncCtx& syncCtx, BaseFolderPair& baseFolder, ProcessCallback& cb); //throw X + static void runPass(PassNo pass, SyncCtx& syncCtx, BaseFolderPair& baseFolder, PhaseCallback& cb); //throw X RingBuffer getFolderLevelWorkItems(PassNo pass, ContainerObject& parentFolder, Workload& workload); @@ -1050,7 +1041,7 @@ Notes: - All threads share a single mutex, unlocked only during file I/O => do N - Memory consumption: work items may grow indefinitely; however: test case "C:\" ~80MB per 1 million work items */ -void FolderPairSyncer::runPass(PassNo pass, SyncCtx& syncCtx, BaseFolderPair& baseFolder, ProcessCallback& cb) //throw X +void FolderPairSyncer::runPass(PassNo pass, SyncCtx& syncCtx, BaseFolderPair& baseFolder, PhaseCallback& cb) //throw X { std::mutex singleThread; //only a single worker thread may run at a time, except for parallel file I/O @@ -1060,8 +1051,8 @@ void FolderPairSyncer::runPass(PassNo pass, SyncCtx& syncCtx, BaseFolderPair& ba workload.addWorkItems(fps.getFolderLevelWorkItems(pass, baseFolder, workload)); //initial workload: set *before* threads get access! std::vector worker; - ZEN_ON_SCOPE_EXIT( for (InterruptibleThread& wt : worker) wt.join (); ); // - ZEN_ON_SCOPE_EXIT( for (InterruptibleThread& wt : worker) wt.interrupt(); ); //interrupt all first, then join + ZEN_ON_SCOPE_EXIT( for (InterruptibleThread& wt : worker) wt.join (); ); //interrupt all first, then join + ZEN_ON_SCOPE_EXIT( for (InterruptibleThread& wt : worker) wt.interrupt(); ); // size_t threadIdx = 0; std::string threadName = "Sync Worker"; @@ -1619,7 +1610,7 @@ void FolderPairSyncer::synchronizeFileInt(FilePair& file, SyncOperation syncOp) auto onDeleteTargetFile = [&] //delete target at appropriate time { - //reportStatus(this->delHandlerTrg.getTxtRemovingFile(), AFS::getDisplayPath(targetPathResolvedOld)); -> superfluous/confuses user + //updateStatus(this->delHandlerTrg.getTxtRemovingFile(), AFS::getDisplayPath(targetPathResolvedOld)); -> superfluous/confuses user FileAttributes followedTargetAttr = file.getAttributes(); followedTargetAttr.isFollowedSymlink = false; @@ -1631,7 +1622,7 @@ void FolderPairSyncer::synchronizeFileInt(FilePair& file, SyncOperation syncOp) //file.removeObject(); -> doesn't make sense for isFollowedSymlink(); "file, sideTrg" evaluated below! //if fail-safe file copy is active, then the next operation will be a simple "rename" - //=> don't risk reportStatus() throwing ThreadInterruption() leaving the target deleted rather than updated! + //=> don't risk updateStatus() throwing ThreadInterruption() leaving the target deleted rather than updated! //=> if failSafeFileCopy_ : don't run callbacks that could throw }; @@ -1669,7 +1660,7 @@ void FolderPairSyncer::synchronizeFileInt(FilePair& file, SyncOperation syncOp) else assert(false); -#if 0 //changing file time without copying content is not justified after CompareVariant::SIZE finds "equal" files! similar issue with CompareVariant::TIME_SIZE and FileTimeTolerance == -1 +#if 0 //changing file time without copying content is not justified after CompareVariant::size finds "equal" files! similar issue with CompareVariant::timeSize and FileTimeTolerance == -1 //Bonus: some devices don't support setting (precise) file times anyway, e.g. FAT or MTP! if (file.getLastWriteTime() != file.getLastWriteTime()) //- no need to call sameFileTime() or respect 2 second FAT/FAT32 precision in this comparison @@ -1790,14 +1781,14 @@ void FolderPairSyncer::synchronizeLinkInt(SymlinkPair& symlink, SyncOperation sy { AsyncItemStatReporter statReporter(1, 0, acb_); - //reportStatus(delHandlerTrg.getTxtRemovingSymLink(), AFS::getDisplayPath(symlink.getAbstractPath())); + //updateStatus(delHandlerTrg.getTxtRemovingSymLink(), AFS::getDisplayPath(symlink.getAbstractPath())); delHandlerTrg.removeLinkWithCallback(symlink.getAbstractPath(), symlink.getRelativePath(), statReporter, singleThread_); //throw FileError, X statReporter.reportDelta(-1, 0); //undo item stats reporting within DeletionHandler::removeLinkWithCallback() //symlink.removeObject(); -> "symlink, sideTrg" evaluated below! - //=> don't risk reportStatus() throwing ThreadInterruption() leaving the target deleted rather than updated: - //reportStatus(txtUpdatingLink_, AFS::getDisplayPath(symlink.getAbstractPath())); //restore status text + //=> don't risk updateStatus() throwing ThreadInterruption() leaving the target deleted rather than updated: + //updateStatus(txtUpdatingLink_, AFS::getDisplayPath(symlink.getAbstractPath())); //restore status text parallel::copySymlink(symlink.getAbstractPath(), AFS::appendRelPath(symlink.parent().getAbstractPath(), symlink.getItemName()), //respect differences in case of source object @@ -2040,7 +2031,7 @@ AFS::FileCopyResult FolderPairSyncer::copyFileWithCallback(const FileDescriptor& //########################################################################################### template -bool baseFolderDrop(BaseFolderPair& baseFolder, ProcessCallback& callback) +bool baseFolderDrop(BaseFolderPair& baseFolder, PhaseCallback& callback) { const AbstractPath folderPath = baseFolder.getAbstractPath(); @@ -2055,7 +2046,7 @@ bool baseFolderDrop(BaseFolderPair& baseFolder, ProcessCallback& callback) if (!status.failedChecks.empty()) throw status.failedChecks.begin()->second; - if (status.existing.find(folderPath) == status.existing.end()) + if (!contains(status.existing, folderPath)) throw FileError(replaceCpy(_("Cannot find folder %x."), L"%x", fmtPath(AFS::getDisplayPath(folderPath)))); //should really be logged as a "fatal error" if ignored by the user... }, callback); //throw X @@ -2068,7 +2059,7 @@ bool baseFolderDrop(BaseFolderPair& baseFolder, ProcessCallback& callback) template //create base directories first (if not yet existing) -> no symlink or attribute copying! -bool createBaseFolder(BaseFolderPair& baseFolder, bool copyFilePermissions, ProcessCallback& callback) //return false if fatal error occurred +bool createBaseFolder(BaseFolderPair& baseFolder, bool copyFilePermissions, PhaseCallback& callback) //return false if fatal error occurred { static const SelectedSide sideSrc = OtherSide::value; const AbstractPath baseFolderPath = baseFolder.getAbstractPath(); @@ -2088,7 +2079,7 @@ bool createBaseFolder(BaseFolderPair& baseFolder, bool copyFilePermissions, Proc if (!status.failedChecks.empty()) throw status.failedChecks.begin()->second; - if (status.notExisting.find(baseFolderPath) != status.notExisting.end()) + if (contains(status.notExisting, baseFolderPath)) { if (baseFolder.isAvailable()) //copy file permissions { @@ -2104,7 +2095,7 @@ bool createBaseFolder(BaseFolderPair& baseFolder, bool copyFilePermissions, Proc } else { - assert(status.existing.find(baseFolderPath) != status.existing.end()); + assert(contains(status.existing, baseFolderPath)); //TEMPORARY network drop! base directory not found during comparison, but reappears during synchronization //=> sync-directions are based on false assumptions! Abort. callback.reportFatalError(replaceCpy(_("Target folder %x is already existing, but was not available during folder comparison."), @@ -2166,7 +2157,7 @@ void fff::synchronize(const std::chrono::system_clock::time_point& syncStartTime //keep at beginning so that all gui elements are initialized properly callback.initNewPhase(itemsTotal, //throw X bytesTotal, - ProcessCallback::PHASE_SYNCHRONIZING); + ProcessPhase::synchronizing); } //------------------------------------------------------------------------------- @@ -2206,7 +2197,7 @@ void fff::synchronize(const std::chrono::system_clock::time_point& syncStartTime std::vector>> checkDiskSpaceMissing; //base folder / space required / space available - //status of base directories which are set to DeletionPolicy::RECYCLER (and contain actual items to be deleted) + //status of base directories which are set to DeletionPolicy::recycler (and contain actual items to be deleted) std::map recyclerSupported; //expensive to determine on Win XP => buffer + check recycle bin existence only once per base folder! std::set checkVersioningPaths; @@ -2228,8 +2219,8 @@ void fff::synchronize(const std::chrono::system_clock::time_point& syncStartTime checkUnresolvedConflicts[&baseFolder] = folderPairStat.getConflicts(); //consider *all* paths that might be used during versioning limit at some time - if (folderPairCfg.handleDeletion == DeletionPolicy::VERSIONING && - folderPairCfg.versioningStyle != VersioningStyle::REPLACE) + if (folderPairCfg.handleDeletion == DeletionPolicy::versioning && + folderPairCfg.versioningStyle != VersioningStyle::replace) if (folderPairCfg.versionMaxAgeDays > 0 || folderPairCfg.versionCountMax > 0) //same check as in applyVersioningLimit() checkVersioningLimitPaths.insert(versioningFolderPath); @@ -2302,7 +2293,7 @@ void fff::synchronize(const std::chrono::system_clock::time_point& syncStartTime continue; } - if (folderPairCfg.handleDeletion == DeletionPolicy::VERSIONING) + if (folderPairCfg.handleDeletion == DeletionPolicy::versioning) { //check if user-defined directory for deletion was specified if (AFS::isNullPath(versioningFolderPath)) @@ -2359,9 +2350,9 @@ void fff::synchronize(const std::chrono::system_clock::time_point& syncStartTime { assert(!AFS::isNullPath(baseFolderPath)); if (!AFS::isNullPath(baseFolderPath)) - if (recyclerSupported.find(baseFolderPath) == recyclerSupported.end()) //perf: avoid duplicate checks! + if (!contains(recyclerSupported, baseFolderPath)) //perf: avoid duplicate checks! { - callback.reportStatus(replaceCpy(_("Checking recycle bin availability for folder %x..."), L"%x", //throw X + callback.updateStatus(replaceCpy(_("Checking recycle bin availability for folder %x..."), L"%x", //throw X fmtPath(AFS::getDisplayPath(baseFolderPath)))); bool recSupported = false; tryReportingError([&] @@ -2372,7 +2363,7 @@ void fff::synchronize(const std::chrono::system_clock::time_point& syncStartTime recyclerSupported.emplace(baseFolderPath, recSupported); } }; - if (folderPairCfg.handleDeletion == DeletionPolicy::RECYCLER) + if (folderPairCfg.handleDeletion == DeletionPolicy::recycler) { if (folderPairStat.expectPhysicalDeletion()) checkRecycler(baseFolder.getAbstractPath()); @@ -2519,6 +2510,52 @@ void fff::synchronize(const std::chrono::system_clock::time_point& syncStartTime std::set versionLimitFolders; + //------------------- show warnings after synchronization -------------------------------------- + //report errors when setting modification time as (a single) warning only! + const int exeptionCount = std::uncaught_exceptions(); + ZEN_ON_SCOPE_EXIT + ( + //*INDENT-OFF* + if (!errorsModTime.empty()) + { + std::wstring msg; + for (const FileError& e : errorsModTime) + { + std::wstring singleMsg = replaceCpy(e.toString(), L"\n\n", L"\n"); + msg += singleMsg + L"\n\n"; + } + msg.resize(msg.size() - 2); + + const bool scopeFail = std::uncaught_exceptions() > exeptionCount; + if (!scopeFail) + callback.reportWarning(msg, warnings.warnModificationTimeError); //throw X + else //at least log warnings when sync is cancelled + try { callback.reportInfo(msg); /*throw X*/} catch (...) {}; + } + //*INDENT-ON* + ); + //---------------------------------------------------------------------------------------------- + class PcbNoThrow : public PhaseCallback + { + public: + PcbNoThrow(ProcessCallback& callback) : callback_(callback) {} + + void updateDataProcessed(int itemsDelta, int64_t bytesDelta) override {} //logically not part of sync data, so let's ignore + void updateDataTotal (int itemsDelta, int64_t bytesDelta) override {} // + + void requestUiUpdate(bool force) override { try { callback_.requestUiUpdate(force); /*throw X*/} catch (...) {}; } + + void updateStatus(const std::wstring& msg) override { try { callback_.updateStatus(msg); /*throw X*/} catch (...) {}; } + void reportInfo (const std::wstring& msg) override { try { callback_.reportInfo (msg); /*throw X*/} catch (...) {}; } + + void reportWarning (const std::wstring& msg, bool& warningActive) override { reportInfo(msg); /*ignore*/ } + Response reportError (const std::wstring& msg, size_t retryNumber) override { reportInfo(msg); return Response::ignore; } + void reportFatalError(const std::wstring& msg) override { reportInfo(msg); /*ignore*/ } + + private: + ProcessCallback& callback_; + } callbackNoThrow(callback); + try { //loop through all directory pairs @@ -2533,9 +2570,10 @@ void fff::synchronize(const std::chrono::system_clock::time_point& syncStartTime continue; //------------------------------------------------------------------------------------------ - callback.reportInfo(_("Synchronizing folder pair:") + L" " + getVariantNameForLog(folderPairCfg.syncVariant) + L"\n" + //throw X - L" " + AFS::getDisplayPath(baseFolder.getAbstractPath< LEFT_SIDE>()) + L"\n" + - L" " + AFS::getDisplayPath(baseFolder.getAbstractPath())); + if (folderCmp.size() > 1) + callback.reportInfo(_("Synchronizing folder pair:") + L" " + getVariantNameForLog(folderPairCfg.syncVariant) + L"\n" + //throw X + L" " + AFS::getDisplayPath(baseFolder.getAbstractPath< LEFT_SIDE>()) + L"\n" + + L" " + AFS::getDisplayPath(baseFolder.getAbstractPath())); //------------------------------------------------------------------------------------------ //checking a second time: (a long time may have passed since syncing the previous folder pairs!) @@ -2552,16 +2590,12 @@ void fff::synchronize(const std::chrono::system_clock::time_point& syncStartTime //------------------------------------------------------------------------------------------ //execute synchronization recursively - //update synchronization database in case of errors: - auto guardDbSave = makeGuard([&] + //update database even when sync is cancelled: + auto guardDbSave = makeGuard([&] { - try - { - if (folderPairCfg.saveSyncDB) - saveLastSynchronousState(baseFolder, failSafeFileCopy, //throw FileError - [&](const std::wstring& statusMsg) { try { callback.reportStatus(statusMsg); /*throw X*/} catch (...) {}}); - } - catch (FileError&) {} + if (folderPairCfg.saveSyncDB) + saveLastSynchronousState(baseFolder, failSafeFileCopy, + callbackNoThrow); }); if (jobType[folderIndex] == FolderPairJobType::PROCESS) @@ -2582,12 +2616,12 @@ void fff::synchronize(const std::chrono::system_clock::time_point& syncStartTime auto getEffectiveDeletionPolicy = [&](const AbstractPath& baseFolderPath) -> DeletionPolicy { - if (folderPairCfg.handleDeletion == DeletionPolicy::RECYCLER) + if (folderPairCfg.handleDeletion == DeletionPolicy::recycler) { auto it = recyclerSupported.find(baseFolderPath); if (it != recyclerSupported.end()) //buffer filled during intro checks (but only if deletions are expected) if (!it->second) - return DeletionPolicy::PERMANENT; //Windows' ::SHFileOperation() will do this anyway, but we have a better and faster deletion routine (e.g. on networks) + return DeletionPolicy::permanent; //Windows' ::SHFileOperation() will do this anyway, but we have a better and faster deletion routine (e.g. on networks) } return folderPairCfg.handleDeletion; }; @@ -2606,22 +2640,11 @@ void fff::synchronize(const std::chrono::system_clock::time_point& syncStartTime std::chrono::system_clock::to_time_t(syncStartTime)); //always (try to) clean up, even if synchronization is aborted! - ZEN_ON_SCOPE_EXIT( - //may block heavily, but still do not allow user callback: - //-> avoid throwing user cancel exception again, leading to incomplete clean-up! - try - { - delHandlerL.tryCleanup(callback, false /*allowCallbackException*/); //throw FileError, (throw X) - } - catch (FileError&) {} - catch (...) { assert(false); } //what is this? - try + auto guardDelCleanup = makeGuard([&] { - delHandlerR.tryCleanup(callback, false /*allowCallbackException*/); //throw FileError, (throw X) - } - catch (FileError&) {} - catch (...) { assert(false); } //what is this? - ); + delHandlerL.tryCleanup(callbackNoThrow); + delHandlerR.tryCleanup(callbackNoThrow); + }); FolderPairSyncer::SyncCtx syncCtx = @@ -2632,12 +2655,13 @@ void fff::synchronize(const std::chrono::system_clock::time_point& syncStartTime }; FolderPairSyncer::runSync(syncCtx, baseFolder, callback); - //(try to gracefully) cleanup temporary Recycle Bin folders and versioning -> will be done in ~DeletionHandler anyway... - tryReportingError([&] { delHandlerL.tryCleanup(callback, true /*allowCallbackException*/); /*throw FileError*/}, callback); //throw X - tryReportingError([&] { delHandlerR.tryCleanup(callback, true ); /*throw FileError*/}, callback); //throw X + //(try to gracefully) clean up temporary Recycle Bin folders and versioning + delHandlerL.tryCleanup(callback); //throw X + delHandlerR.tryCleanup(callback); // + guardDelCleanup.dismiss(); - if (folderPairCfg.handleDeletion == DeletionPolicy::VERSIONING && - folderPairCfg.versioningStyle != VersioningStyle::REPLACE) + if (folderPairCfg.handleDeletion == DeletionPolicy::versioning && + folderPairCfg.versioningStyle != VersioningStyle::replace) versionLimitFolders.insert( { versioningFolderPath, @@ -2650,46 +2674,18 @@ void fff::synchronize(const std::chrono::system_clock::time_point& syncStartTime //(try to gracefully) write database file if (folderPairCfg.saveSyncDB) { - callback.reportStatus(_("Generating database...")); //throw X - callback.forceUiRefresh(); //throw X - - tryReportingError([&] - { - saveLastSynchronousState(baseFolder, failSafeFileCopy, //throw FileError, X - [&](const std::wstring& statusMsg) { callback.reportStatus(statusMsg); /*throw X*/}); - }, callback); //throw X - + saveLastSynchronousState(baseFolder, failSafeFileCopy, //throw X + callback /*throw X*/); guardDbSave.dismiss(); //[!] after "graceful" try: user might have cancelled during DB write: ensure DB is still written } } - //----------------------------------------------------------------------------------------------------- applyVersioningLimit(versionLimitFolders, - callback); //throw X - - //------------------- show warnings after end of synchronization -------------------------------------- - - //TODO: mod time warnings are not shown if user cancelled sync before batch-reporting the warnings: problem? - - //show errors when setting modification time: warning, not an error - if (!errorsModTime.empty()) - { - std::wstring msg; - for (const FileError& e : errorsModTime) - { - std::wstring singleMsg = replaceCpy(e.toString(), L"\n\n", L"\n"); - msg += singleMsg + L"\n\n"; - } - msg.resize(msg.size() - 2); - - callback.reportWarning(msg, warnings.warnModificationTimeError); //throw X - } + callback /*throw X*/); } catch (const std::exception& e) { callback.reportFatalError(utfTo(e.what())); - callback.abortProcessNow(); //throw X - throw std::logic_error("Contract violation! " + std::string(__FILE__) + ":" + numberTo(__LINE__)); } } diff --git a/FreeFileSync/Source/base/versioning.cpp b/FreeFileSync/Source/base/versioning.cpp index 37dd35e4..13125c74 100644 --- a/FreeFileSync/Source/base/versioning.cpp +++ b/FreeFileSync/Source/base/versioning.cpp @@ -28,7 +28,7 @@ Zstring getDotExtension(const Zstring& filePath) //including "." if extension is ++it; return Zstring(findLast(it, filePath.end(), Zstr('.')), filePath.end()); -}; +} } @@ -79,13 +79,13 @@ AbstractPath FileVersioner::generateVersionedPath(const Zstring& relativePath) c Zstring versionedRelPath; switch (versioningStyle_) { - case VersioningStyle::REPLACE: + case VersioningStyle::replace: versionedRelPath = relativePath; break; - case VersioningStyle::TIMESTAMP_FOLDER: + case VersioningStyle::timestampFolder: versionedRelPath = timeStamp_ + FILE_NAME_SEPARATOR + relativePath; break; - case VersioningStyle::TIMESTAMP_FILE: //assemble time-stamped version name + case VersioningStyle::timestampFile: //assemble time-stamped version name versionedRelPath = relativePath + Zstr(' ') + timeStamp_ + getDotExtension(relativePath); assert(impl::parseVersionedFileName(afterLast(versionedRelPath, FILE_NAME_SEPARATOR, IF_MISSING_RETURN_ALL)) == std::pair(syncStartTime_, afterLast(relativePath, FILE_NAME_SEPARATOR, IF_MISSING_RETURN_ALL))); @@ -321,12 +321,12 @@ void findFileVersions(VersionInfoMap& versions, auto extractFileVersion = [&](const Zstring& fileName, bool isSymlink) { - if (versionTimeParent) //VersioningStyle::TIMESTAMP_FOLDER + if (versionTimeParent) //VersioningStyle::timestampFolder addVersion(fileName, fileName, *versionTimeParent, isSymlink); else { const std::pair vfn = fff::impl::parseVersionedFileName(fileName); - if (vfn.first != 0) //VersioningStyle::TIMESTAMP_FILE + if (vfn.first != 0) //VersioningStyle::timestampFile addVersion(fileName, vfn.second, vfn.first, isSymlink); } }; @@ -339,7 +339,7 @@ void findFileVersions(VersionInfoMap& versions, for (const auto& [folderName, attrAndSub] : folderCont.folders) { - if (relPathOrigParent.empty() && !versionTimeParent) //VersioningStyle::TIMESTAMP_FOLDER? + if (relPathOrigParent.empty() && !versionTimeParent) //VersioningStyle::timestampFolder? { assert(!versionTimeParent); const time_t versionTime = fff::impl::parseVersionedFolderName(folderName); @@ -394,7 +394,7 @@ bool fff::operator<(const VersioningLimitFolder& lhs, const VersioningLimitFolde void fff::applyVersioningLimit(const std::set& folderLimits, - ProcessCallback& callback /*throw X*/) + PhaseCallback& callback /*throw X*/) { //--------- determine existing folder paths for traversal --------- std::set foldersToRead; @@ -443,10 +443,10 @@ void fff::applyVersioningLimit(const std::set& folderLimi { switch (callback.reportError(msg, retryNumber)) //throw X { - case ProcessCallback::ignoreError: + case PhaseCallback::ignore: return AFS::TraverserCallback::ON_ERROR_CONTINUE; - case ProcessCallback::retry: + case PhaseCallback::retry: return AFS::TraverserCallback::ON_ERROR_RETRY; } assert(false); @@ -457,7 +457,7 @@ void fff::applyVersioningLimit(const std::set& folderLimi auto onStatusUpdate = [&](const std::wstring& statusLine, int itemsTotal) { - callback.reportStatus(textScanning + statusLine); //throw X + callback.updateStatus(textScanning + statusLine); //throw X }; parallelDeviceTraversal(foldersToRead, folderBuf, @@ -472,7 +472,7 @@ void fff::applyVersioningLimit(const std::set& folderLimi { const AbstractPath versioningFolderPath = folderKey.folderPath; - assert(versionDetails.find(versioningFolderPath) == versionDetails.end()); + assert(!contains(versionDetails, versioningFolderPath)); findFileVersions(versionDetails[versioningFolderPath], folderVal.folderCont, @@ -546,7 +546,7 @@ void fff::applyVersioningLimit(const std::set& folderLimi { const std::wstring errMsg = tryReportingError([&] //throw ThreadInterruption { - acb.reportStatus(replaceCpy(txtDeletingFolder, L"%x", fmtPath(AFS::getDisplayPath(folderPath)))); //throw ThreadInterruption + acb.updateStatus(replaceCpy(txtDeletingFolder, L"%x", fmtPath(AFS::getDisplayPath(folderPath)))); //throw ThreadInterruption AFS::removeEmptyFolderIfExists(folderPath); //throw FileError }, acb); diff --git a/FreeFileSync/Source/base/versioning.h b/FreeFileSync/Source/base/versioning.h index 035a2254..9c0a9b43 100644 --- a/FreeFileSync/Source/base/versioning.h +++ b/FreeFileSync/Source/base/versioning.h @@ -101,7 +101,7 @@ bool operator<(const VersioningLimitFolder& lhs, const VersioningLimitFolder& rh void applyVersioningLimit(const std::set& folderLimits, - ProcessCallback& callback /*throw X*/); + PhaseCallback& callback /*throw X*/); namespace impl //declare for unit tests: diff --git a/FreeFileSync/Source/ui/abstract_folder_picker.cpp b/FreeFileSync/Source/ui/abstract_folder_picker.cpp index fffb5e73..e9cfc6e6 100644 --- a/FreeFileSync/Source/ui/abstract_folder_picker.cpp +++ b/FreeFileSync/Source/ui/abstract_folder_picker.cpp @@ -96,7 +96,8 @@ AbstractFolderPickerDlg::AbstractFolderPickerDlg(wxWindow* parent, AbstractPath& //add images in same sequence like TreeNodeImage enum!!! imgList->Add(shrinkImage(getResourceImage(L"server").ConvertToImage(), iconSize)); imgList->Add( IconBuffer::genericDirIcon(IconBuffer::SIZE_SMALL)); - imgList->Add(layOver(IconBuffer::genericDirIcon(IconBuffer::SIZE_SMALL), IconBuffer::linkOverlayIcon(IconBuffer::SIZE_SMALL))); + imgList->Add(layOver(IconBuffer::genericDirIcon(IconBuffer::SIZE_SMALL).ConvertToImage(), + IconBuffer::linkOverlayIcon(IconBuffer::SIZE_SMALL).ConvertToImage())); imgList->Add(shrinkImage(getResourceImage(L"msg_error").ConvertToImage(), iconSize)); assert(imgList->GetImageCount() == static_cast(TreeNodeImage::error) + 1); diff --git a/FreeFileSync/Source/ui/batch_status_handler.cpp b/FreeFileSync/Source/ui/batch_status_handler.cpp index cf2b249f..37a00989 100644 --- a/FreeFileSync/Source/ui/batch_status_handler.cpp +++ b/FreeFileSync/Source/ui/batch_status_handler.cpp @@ -83,25 +83,25 @@ BatchStatusHandler::Result BatchStatusHandler::reportFinalStatus(const Zstring& else if (errorLog_.getItemCount(MSG_TYPE_WARNING) > 0) return SyncResult::finishedWarning; - if (getStatsTotal(currentPhase()) == ProgressStats()) + if (getStatsTotal() == ProgressStats()) errorLog_.logMsg(_("Nothing to synchronize"), MSG_TYPE_INFO); return SyncResult::finishedSuccess; }(); - assert(finalStatus == SyncResult::aborted || currentPhase() == PHASE_SYNCHRONIZING); + assert(finalStatus == SyncResult::aborted || currentPhase() == ProcessPhase::synchronizing); const ProcessSummary summary { startTime_, finalStatus, jobName_, - getStatsCurrent(currentPhase()), - getStatsTotal (currentPhase()), + getStatsCurrent(), + getStatsTotal (), totalTime }; //post sync command Zstring commandLine = [&] { - if (getAbortStatus() && *getAbortStatus() == AbortTrigger::USER) + if (getAbortStatus() && *getAbortStatus() == AbortTrigger::user) ; //user cancelled => don't run post sync command! else switch (postSyncCondition_) @@ -133,7 +133,7 @@ BatchStatusHandler::Result BatchStatusHandler::reportFinalStatus(const Zstring& try { //do NOT use tryReportingError()! saving log files should not be cancellable! - auto notifyStatusNoThrow = [&](const std::wstring& msg) { try { reportStatus(msg); /*throw AbortProcess*/ } catch (...) {} }; + auto notifyStatusNoThrow = [&](const std::wstring& msg) { try { updateStatus(msg); /*throw AbortProcess*/ } catch (...) {} }; logFilePath = saveLogFile(summary, errorLog_, altLogFolderPathPhrase, logfilesMaxAgeDays, logFilePathsToKeep, notifyStatusNoThrow); //throw FileError } catch (const FileError& e) { errorLog_.logMsg(e.toString(), MSG_TYPE_ERROR); } @@ -154,7 +154,7 @@ BatchStatusHandler::Result BatchStatusHandler::reportFinalStatus(const Zstring& bool autoClose = false; FinalRequest finalRequest = FinalRequest::none; - if (getAbortStatus() && *getAbortStatus() == AbortTrigger::USER) + if (getAbortStatus() && *getAbortStatus() == AbortTrigger::user) ; //user cancelled => don't run post sync command! else { @@ -162,10 +162,10 @@ BatchStatusHandler::Result BatchStatusHandler::reportFinalStatus(const Zstring& { auto notifyStatusThrowOnCancel = [&](const std::wstring& msg) { - try { reportStatus(msg); /*throw AbortProcess*/ } + try { updateStatus(msg); /*throw AbortProcess*/ } catch (...) { - if (getAbortStatus() && *getAbortStatus() == AbortTrigger::USER) + if (getAbortStatus() && *getAbortStatus() == AbortTrigger::user) throw; } }; @@ -212,7 +212,7 @@ BatchStatusHandler::Result BatchStatusHandler::reportFinalStatus(const Zstring& finalRequest = FinalRequest::switchGui; } - auto errorLogFinal = std::make_shared(std::move(errorLog_)); + auto errorLogFinal = makeSharedRef(std::move(errorLog_)); progressDlg_->destroy(autoClose, true /*restoreParentFrame: n/a here*/, @@ -223,16 +223,17 @@ BatchStatusHandler::Result BatchStatusHandler::reportFinalStatus(const Zstring& } -void BatchStatusHandler::initNewPhase(int itemsTotal, int64_t bytesTotal, ProcessCallback::Phase phaseID) +void BatchStatusHandler::initNewPhase(int itemsTotal, int64_t bytesTotal, ProcessPhase phaseID) { StatusHandler::initNewPhase(itemsTotal, bytesTotal, phaseID); progressDlg_->initNewPhase(); //call after "StatusHandler::initNewPhase" - forceUiRefresh(); //throw AbortProcess; OS X needs a full yield to update GUI and get rid of "dummy" texts + //macOS needs a full yield to update GUI and get rid of "dummy" texts + requestUiUpdate(true /*force*/); //throw AbortProcess } -void BatchStatusHandler::updateDataProcessed(int itemsDelta, int64_t bytesDelta) +void BatchStatusHandler::updateDataProcessed(int itemsDelta, int64_t bytesDelta) //noexcept! { StatusHandler::updateDataProcessed(itemsDelta, bytesDelta); @@ -242,9 +243,10 @@ void BatchStatusHandler::updateDataProcessed(int itemsDelta, int64_t bytesDelta) } -void BatchStatusHandler::logInfo(const std::wstring& msg) +void BatchStatusHandler::reportInfo(const std::wstring& msg) { errorLog_.logMsg(msg, MSG_TYPE_INFO); + updateStatus(msg); //throw AbortProcess } @@ -262,7 +264,7 @@ void BatchStatusHandler::reportWarning(const std::wstring& msg, bool& warningAct { case BatchErrorHandling::showPopup: { - forceUiRefreshNoThrow(); //noexcept! => don't throw here when error occurs during clean up! + forceUiUpdateNoThrow(); //noexcept! => don't throw here when error occurs during clean up! bool dontWarnAgain = false; switch (showQuestionDialog(progressDlg_->getWindowIfVisible(), DialogInfoType::warning, @@ -277,17 +279,17 @@ void BatchStatusHandler::reportWarning(const std::wstring& msg, bool& warningAct case QuestionButton2::no: //switch errorLog_.logMsg(_("Switching to FreeFileSync's main window"), MSG_TYPE_INFO); switchToGuiRequested_ = true; //treat as a special kind of cancel - userAbortProcessNow(); //throw AbortProcess + abortProcessNow(AbortTrigger::user); //throw AbortProcess case QuestionButton2::cancel: - userAbortProcessNow(); //throw AbortProcess + abortProcessNow(AbortTrigger::user); //throw AbortProcess break; } } break; //keep it! last switch might not find match case BatchErrorHandling::cancel: - abortProcessNow(); //throw AbortProcess (not user-initiated!) + abortProcessNow(AbortTrigger::program); //throw AbortProcess break; } } @@ -302,12 +304,12 @@ ProcessCallback::Response BatchStatusHandler::reportError(const std::wstring& ms { errorLog_.logMsg(msg + L"\n-> " + _("Automatic retry"), MSG_TYPE_INFO); delayAndCountDown(_("Automatic retry") + (automaticRetryCount_ <= 1 ? L"" : L" " + numberTo(retryNumber + 1) + L"/" + numberTo(automaticRetryCount_)), - automaticRetryDelay_, [&](const std::wstring& statusMsg) { this->reportStatus(_("Error") + L": " + statusMsg); }); //throw AbortProcess + automaticRetryDelay_, [&](const std::wstring& statusMsg) { this->updateStatus(_("Error") + L": " + statusMsg); }); //throw AbortProcess return ProcessCallback::retry; } //always, except for "retry": - auto guardWriteLog = makeGuard([&] { errorLog_.logMsg(msg, MSG_TYPE_ERROR); }); + auto guardWriteLog = makeGuard([&] { errorLog_.logMsg(msg, MSG_TYPE_ERROR); }); if (!progressDlg_->getOptionIgnoreErrors()) { @@ -315,18 +317,18 @@ ProcessCallback::Response BatchStatusHandler::reportError(const std::wstring& ms { case BatchErrorHandling::showPopup: { - forceUiRefreshNoThrow(); //noexcept! => don't throw here when error occurs during clean up! + forceUiUpdateNoThrow(); //noexcept! => don't throw here when error occurs during clean up! switch (showConfirmationDialog(progressDlg_->getWindowIfVisible(), DialogInfoType::error, PopupDialogCfg().setDetailInstructions(msg), _("&Ignore"), _("Ignore &all"), _("&Retry"))) { case ConfirmationButton3::accept: //ignore - return ProcessCallback::ignoreError; + return ProcessCallback::ignore; case ConfirmationButton3::acceptAll: //ignore all progressDlg_->setOptionIgnoreErrors(true); - return ProcessCallback::ignoreError; + return ProcessCallback::ignore; case ConfirmationButton3::decline: //retry guardWriteLog.dismiss(); @@ -334,22 +336,22 @@ ProcessCallback::Response BatchStatusHandler::reportError(const std::wstring& ms return ProcessCallback::retry; case ConfirmationButton3::cancel: - userAbortProcessNow(); //throw AbortProcess + abortProcessNow(AbortTrigger::user); //throw AbortProcess break; } } break; //used if last switch didn't find a match case BatchErrorHandling::cancel: - abortProcessNow(); //throw AbortProcess (not user-initiated!) + abortProcessNow(AbortTrigger::program); //throw AbortProcess break; } } else - return ProcessCallback::ignoreError; + return ProcessCallback::ignore; assert(false); - return ProcessCallback::ignoreError; //dummy value + return ProcessCallback::ignore; //dummy value } @@ -364,7 +366,7 @@ void BatchStatusHandler::reportFatalError(const std::wstring& msg) { case BatchErrorHandling::showPopup: { - forceUiRefreshNoThrow(); //noexcept! => don't throw here when error occurs during clean up! + forceUiUpdateNoThrow(); //noexcept! => don't throw here when error occurs during clean up! switch (showConfirmationDialog(progressDlg_->getWindowIfVisible(), DialogInfoType::error, PopupDialogCfg().setTitle(_("Serious Error")). @@ -379,20 +381,20 @@ void BatchStatusHandler::reportFatalError(const std::wstring& msg) break; case ConfirmationButton2::cancel: - userAbortProcessNow(); //throw AbortProcess + abortProcessNow(AbortTrigger::user); //throw AbortProcess break; } } break; case BatchErrorHandling::cancel: - abortProcessNow(); //throw AbortProcess (not user-initiated!) + abortProcessNow(AbortTrigger::program); //throw AbortProcess break; } } -void BatchStatusHandler::forceUiRefreshNoThrow() +void BatchStatusHandler::forceUiUpdateNoThrow() { progressDlg_->updateGui(); } diff --git a/FreeFileSync/Source/ui/batch_status_handler.h b/FreeFileSync/Source/ui/batch_status_handler.h index d3bee240..357a9d48 100644 --- a/FreeFileSync/Source/ui/batch_status_handler.h +++ b/FreeFileSync/Source/ui/batch_status_handler.h @@ -34,14 +34,14 @@ public: PostSyncAction postSyncAction); //noexcept!! ~BatchStatusHandler(); - void initNewPhase (int itemsTotal, int64_t bytesTotal, Phase phaseID) override; // - void logInfo (const std::wstring& msg) override; // + void initNewPhase (int itemsTotal, int64_t bytesTotal, ProcessPhase phaseID) override; // + void reportInfo (const std::wstring& msg) override; // void reportWarning (const std::wstring& msg, bool& warningActive) override; //throw AbortProcess Response reportError (const std::wstring& msg, size_t retryNumber) override; // void reportFatalError(const std::wstring& msg) override; // void updateDataProcessed(int itemsDelta, int64_t bytesDelta) override; //noexcept - void forceUiRefreshNoThrow() override; // + void forceUiUpdateNoThrow() override; // enum class FinalRequest { diff --git a/FreeFileSync/Source/ui/cfg_grid.cpp b/FreeFileSync/Source/ui/cfg_grid.cpp index dfceed07..9e8eb69a 100644 --- a/FreeFileSync/Source/ui/cfg_grid.cpp +++ b/FreeFileSync/Source/ui/cfg_grid.cpp @@ -48,24 +48,28 @@ void ConfigView::set(const std::vector& cfgItems) for (const ConfigFileItem& item : cfgItems) filePaths.push_back(item.cfgFilePath); - //list is stored with last used files first in XML, however m_gridCfgHistory expects them last!!! + //list is stored with last used files first in XML, however addCfgFilesImpl() expects them last!!! std::reverse(filePaths.begin(), filePaths.end()); - //make sure is always part of history list (if existing) - filePaths.push_back(lastRunConfigPath_); - cfgList_ .clear(); cfgListView_.clear(); - addCfgFiles(filePaths); + addCfgFilesImpl(filePaths); for (const ConfigFileItem& item : cfgItems) - cfgList_.find(item.cfgFilePath)->second.cfgItem = item; //cfgFilePath must exist after addCfgFiles()! + cfgList_.find(item.cfgFilePath)->second.cfgItem = item; //cfgFilePath must exist after addCfgFilesImpl()! - sortListView(); //needed if sorted by last sync time + sortListView(); } void ConfigView::addCfgFiles(const std::vector& filePaths) +{ + addCfgFilesImpl(filePaths); + sortListView(); +} + + +void ConfigView::addCfgFilesImpl(const std::vector& filePaths) { //determine highest "last use" index number of m_listBoxHistory int lastUseIndexMax = 0; @@ -84,7 +88,7 @@ void ConfigView::addCfgFiles(const std::vector& filePaths) std::tie(detail.name, detail.cfgType, detail.isLastRunCfg) = [&] { if (equalNativePath(filePath, lastRunConfigPath_)) - return std::make_tuple(utfTo(L"<" + _("Last session") + L">"), Details::CFG_TYPE_GUI, true); + return std::make_tuple(utfTo(L"[" + _("Last session") + L"]"), Details::CFG_TYPE_GUI, true); const Zstring fileName = afterLast(filePath, FILE_NAME_SEPARATOR, IF_MISSING_RETURN_ALL); @@ -102,8 +106,6 @@ void ConfigView::addCfgFiles(const std::vector& filePaths) else it->second.lastUseIndex = ++lastUseIndexMax; } - - sortListView(); } @@ -111,12 +113,15 @@ void ConfigView::removeItems(const std::vector& filePaths) { const std::set pathsSorted(filePaths.begin(), filePaths.end()); - eraseIf(cfgListView_, [&](auto it) { return pathsSorted.find(it->first) != pathsSorted.end(); }); + std::erase_if(cfgListView_, [&](auto it) { return pathsSorted.find(it->first) != pathsSorted.end(); }); for (const Zstring& filePath : filePaths) cfgList_.erase(filePath); assert(cfgList_.size() == cfgListView_.size()); + + if (sortColumn_ == ColumnTypeCfg::name) + sortListView(); //needed if top element of colored-group is removed } @@ -139,7 +144,24 @@ void ConfigView::setLastRunStats(const std::vector& filePaths, const La } } } - sortListView(); //needed if sorted by last sync time + + if (sortColumn_ != ColumnTypeCfg::name) + sortListView(); //needed if sorted by log, or last sync time +} + + +void ConfigView::setBackColor(const std::vector& filePaths, const wxColor& col) +{ + for (const Zstring& filePath : filePaths) + { + auto it = cfgList_.find(filePath); + assert(it != cfgList_.end()); + if (it != cfgList_.end()) + it->second.cfgItem.backColor = col; + } + + if (sortColumn_ == ColumnTypeCfg::name) + sortListView(); //needed if top element of colored-group is removed } @@ -166,7 +188,7 @@ void ConfigView::sortListViewImpl() const auto lessCfgName = [](CfgFileList::iterator lhs, CfgFileList::iterator rhs) { if (lhs->second.isLastRunCfg != rhs->second.isLastRunCfg) - return lhs->second.isLastRunCfg > rhs->second.isLastRunCfg; //"last session" label should be at top position! + return lhs->second.isLastRunCfg; //"last session" should be at top position! return LessNaturalSort()(lhs->second.name, rhs->second.name); }; @@ -177,7 +199,7 @@ void ConfigView::sortListViewImpl() return lhs->second.isLastRunCfg < rhs->second.isLastRunCfg; //"last session" label should be (always) last return makeSortDirection(std::greater<>(), std::bool_constant())(lhs->second.cfgItem.lastSyncTime, rhs->second.cfgItem.lastSyncTime); - //[!] ascending LAST_SYNC shows lowest "days past" first <=> highest lastSyncTime first + //[!] ascending lastSync shows lowest "days past" first <=> highest lastSyncTime first }; const auto lessLastLog = [](CfgFileList::iterator lhs, CfgFileList::iterator rhs) @@ -200,13 +222,28 @@ void ConfigView::sortListViewImpl() switch (sortColumn_) { - case ColumnTypeCfg::NAME: - std::sort(cfgListView_.begin(), cfgListView_.end(), makeSortDirection(lessCfgName, std::bool_constant())); + case ColumnTypeCfg::name: + //pre-sort by name + std::sort(cfgListView_.begin(), cfgListView_.end(), lessCfgName); + + //aggregate groups by color + for (auto it = cfgListView_.begin(); it != cfgListView_.end(); ) + if ((*it)->second.cfgItem.backColor.IsOk()) + it = std::stable_partition(it + 1, cfgListView_.end(), + [&groupCol = (*it)->second.cfgItem.backColor](CfgFileList::iterator item) { return item->second.cfgItem.backColor == groupCol; }); + else + ++it; + + //simplify aggregation logic by not having to consider "ascending/descending" + if (!ascending) + std::reverse(cfgListView_.begin(), cfgListView_.end()); break; - case ColumnTypeCfg::LAST_SYNC: + + case ColumnTypeCfg::lastSync: std::sort(cfgListView_.begin(), cfgListView_.end(), lessLastSync); break; - case ColumnTypeCfg::LAST_LOG: + + case ColumnTypeCfg::lastLog: std::sort(cfgListView_.begin(), cfgListView_.end(), lessLastLog); break; } @@ -231,7 +268,7 @@ class GridDataCfg : private wxEvtHandler, public GridData public: GridDataCfg(Grid& grid) : grid_(grid) { - grid.Connect(EVENT_GRID_MOUSE_LEFT_DOWN, GridClickEventHandler(GridDataCfg::onMouseLeft), nullptr, this); + grid.Connect(EVENT_GRID_MOUSE_LEFT_DOWN, GridClickEventHandler(GridDataCfg::onMouseLeft), nullptr, this); grid.Connect(EVENT_GRID_MOUSE_LEFT_DOUBLE, GridClickEventHandler(GridDataCfg::onMouseLeftDouble), nullptr, this); } @@ -272,10 +309,10 @@ private: if (const ConfigView::Details* item = cfgView_.getItem(row)) switch (static_cast(colType)) { - case ColumnTypeCfg::NAME: + case ColumnTypeCfg::name: return utfTo(item->name); - case ColumnTypeCfg::LAST_SYNC: + case ColumnTypeCfg::lastSync: if (!item->isLastRunCfg) { if (item->cfgItem.lastSyncTime == 0) @@ -287,7 +324,7 @@ private: } break; - case ColumnTypeCfg::LAST_LOG: + case ColumnTypeCfg::lastLog: if (!item->isLastRunCfg && !AFS::isNullPath(item->cfgItem.logFilePath)) return getFinalStatusLabel(item->cfgItem.logResult); @@ -305,22 +342,47 @@ private: { wxRect rectTmp = rect; - wxDCTextColourChanger dummy(dc); //accessibility: always set both foreground AND background colors! + wxDCTextColourChanger textColor(dc); //accessibility: always set both foreground AND background colors! if (selected) - dummy.Set(wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHTTEXT)); + textColor.Set(wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHTTEXT)); else { //if (enabled) - dummy.Set(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT)); + textColor.Set(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT)); //else - // dummy.Set(wxSystemSettings::GetColour(wxSYS_COLOUR_GRAYTEXT)); + // textColor.Set(wxSystemSettings::GetColour(wxSYS_COLOUR_GRAYTEXT)); } if (const ConfigView::Details* item = cfgView_.getItem(row)) switch (static_cast(colType)) { - case ColumnTypeCfg::NAME: + case ColumnTypeCfg::name: { + if (item->cfgItem.backColor.IsOk()) + { + wxRect rectTmp2 = rectTmp; + if (!selected) + { + rectTmp2.width = rectTmp.width * 2 / 3; + clearArea(dc, rectTmp2, item->cfgItem.backColor); //accessibility: always set both foreground AND background colors! + textColor.Set(*wxBLACK); // + + rectTmp2.x += rectTmp2.width; + rectTmp2.width = rectTmp.width - rectTmp2.width; + dc.GradientFillLinear(rectTmp2, item->cfgItem.backColor, wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW), wxEAST); + } + else //always show a glimpse of the background color + { + rectTmp2.width = getColumnGapLeft() + fileIconSize_; + clearArea(dc, rectTmp2, item->cfgItem.backColor); + + rectTmp2.x += rectTmp2.width; + rectTmp2.width = getColumnGapLeft(); + dc.GradientFillLinear(rectTmp2, item->cfgItem.backColor, wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHT), wxEAST); + } + } + + //------------------------------------------------------------------------------------- rectTmp.x += getColumnGapLeft(); rectTmp.width -= getColumnGapLeft(); @@ -348,18 +410,18 @@ private: } break; - case ColumnTypeCfg::LAST_SYNC: + case ColumnTypeCfg::lastSync: { - wxDCTextColourChanger dummy2(dc); + wxDCTextColourChanger textColor2(dc); if (syncOverdueDays_ > 0) if (getDaysPast(item->cfgItem.lastSyncTime) >= syncOverdueDays_) - dummy2.Set(*wxRED); + textColor2.Set(*wxRED); drawCellText(dc, rectTmp, getValue(row, colType), wxALIGN_CENTER); } break; - case ColumnTypeCfg::LAST_LOG: + case ColumnTypeCfg::lastLog: if (!item->isLastRunCfg && !AFS::isNullPath(item->cfgItem.logFilePath)) { @@ -392,13 +454,13 @@ private: switch (static_cast(colType)) { - case ColumnTypeCfg::NAME: + case ColumnTypeCfg::name: return getColumnGapLeft() + fileIconSize_ + getColumnGapLeft() + dc.GetTextExtent(getValue(row, colType)).GetWidth() + getColumnGapLeft(); - case ColumnTypeCfg::LAST_SYNC: + case ColumnTypeCfg::lastSync: return getColumnGapLeft() + dc.GetTextExtent(getValue(row, colType)).GetWidth() + getColumnGapLeft(); - case ColumnTypeCfg::LAST_LOG: + case ColumnTypeCfg::lastLog: return fileIconSize_; } assert(false); @@ -418,10 +480,10 @@ private: if (const ConfigView::Details* item = cfgView_.getItem(row)) switch (static_cast(colType)) { - case ColumnTypeCfg::NAME: - case ColumnTypeCfg::LAST_SYNC: + case ColumnTypeCfg::name: + case ColumnTypeCfg::lastSync: break; - case ColumnTypeCfg::LAST_LOG: + case ColumnTypeCfg::lastLog: if (!item->isLastRunCfg && !AFS::isNullPath(item->cfgItem.logFilePath) && @@ -434,19 +496,20 @@ private: void renderColumnLabel(Grid& tree, wxDC& dc, const wxRect& rect, ColumnType colType, bool highlighted) override { + const auto colTypeCfg = static_cast(colType); + const wxRect rectInner = drawColumnLabelBackground(dc, rect, highlighted); wxRect rectRemain = rectInner; wxBitmap sortMarker; + const auto [sortCol, ascending] = cfgView_.getSortDirection(); + if (colTypeCfg == sortCol) + sortMarker = getResourceImage(ascending ? L"sort_ascending" : L"sort_descending"); - const auto sortInfo = cfgView_.getSortDirection(); - if (colType == static_cast(sortInfo.first)) - sortMarker = getResourceImage(sortInfo.second ? L"sort_ascending" : L"sort_descending"); - - switch (static_cast(colType)) + switch (colTypeCfg) { - case ColumnTypeCfg::NAME: - case ColumnTypeCfg::LAST_SYNC: + case ColumnTypeCfg::name: + case ColumnTypeCfg::lastSync: rectRemain.x += getColumnGapLeft(); rectRemain.width -= getColumnGapLeft(); drawColumnLabelText(dc, rectRemain, getColumnLabel(colType)); @@ -455,7 +518,7 @@ private: drawBitmapRtlNoMirror(dc, sortMarker, rectInner, wxALIGN_CENTER_HORIZONTAL); break; - case ColumnTypeCfg::LAST_LOG: + case ColumnTypeCfg::lastLog: drawBitmapRtlNoMirror(dc, getResourceImage(L"log_file_sicon"), rectInner, wxALIGN_CENTER); if (sortMarker.IsOk()) @@ -474,11 +537,11 @@ private: { switch (static_cast(colType)) { - case ColumnTypeCfg::NAME: + case ColumnTypeCfg::name: return _("Name"); - case ColumnTypeCfg::LAST_SYNC: + case ColumnTypeCfg::lastSync: return _("Last sync"); - case ColumnTypeCfg::LAST_LOG: + case ColumnTypeCfg::lastLog: return _("Log"); } return std::wstring(); @@ -488,10 +551,10 @@ private: { switch (static_cast(colType)) { - case ColumnTypeCfg::NAME: - case ColumnTypeCfg::LAST_SYNC: + case ColumnTypeCfg::name: + case ColumnTypeCfg::lastSync: break; - case ColumnTypeCfg::LAST_LOG: + case ColumnTypeCfg::lastLog: return getColumnLabel(colType); } return std::wstring(); @@ -502,10 +565,10 @@ private: if (const ConfigView::Details* item = cfgView_.getItem(row)) switch (static_cast(colType)) { - case ColumnTypeCfg::NAME: - case ColumnTypeCfg::LAST_SYNC: + case ColumnTypeCfg::name: + case ColumnTypeCfg::lastSync: break; - case ColumnTypeCfg::LAST_LOG: + case ColumnTypeCfg::lastLog: if (!item->isLastRunCfg && !AFS::isNullPath(item->cfgItem.logFilePath)) @@ -584,7 +647,7 @@ void cfggrid::addAndSelect(Grid& grid, const std::vector& filePaths, bo std::optional selectionTopRow; for (size_t i = 0; i < grid.getRowCount(); ++i) - if (pathsSorted.find(getDataView(grid).getItem(i)->cfgItem.cfgFilePath) != pathsSorted.end()) + if (contains(pathsSorted, getDataView(grid).getItem(i)->cfgItem.cfgFilePath)) { if (!selectionTopRow) selectionTopRow = i; diff --git a/FreeFileSync/Source/ui/cfg_grid.h b/FreeFileSync/Source/ui/cfg_grid.h index 628c5400..3ace5ff7 100644 --- a/FreeFileSync/Source/ui/cfg_grid.h +++ b/FreeFileSync/Source/ui/cfg_grid.h @@ -22,29 +22,32 @@ struct ConfigFileItem ConfigFileItem(const Zstring& filePath, time_t syncTime, const AbstractPath& logPath, - SyncResult result) : + SyncResult result, + wxColor bcol) : cfgFilePath(filePath), lastSyncTime(syncTime), logFilePath(logPath), - logResult(result) {} + logResult(result), + backColor(bcol) {} Zstring cfgFilePath; time_t lastSyncTime = 0; //last COMPLETED sync (aborted syncs don't count) AbstractPath logFilePath = getNullPath(); //ANY last sync attempt (including aborted syncs) SyncResult logResult = SyncResult::aborted; // + wxColor backColor; }; enum class ColumnTypeCfg { - NAME, - LAST_SYNC, - LAST_LOG, + name, + lastSync, + lastLog, }; struct ColAttributesCfg { - ColumnTypeCfg type = ColumnTypeCfg::NAME; + ColumnTypeCfg type = ColumnTypeCfg::name; int offset = 0; int stretch = 0; bool visible = false; @@ -56,24 +59,24 @@ std::vector getCfgGridDefaultColAttribs() using namespace zen; return { - { ColumnTypeCfg::NAME, fastFromDIP(0 - 75 - 42), 1, true }, - { ColumnTypeCfg::LAST_SYNC, fastFromDIP(75), 0, true }, - { ColumnTypeCfg::LAST_LOG, fastFromDIP(42), 0, true }, //leave some room for the sort direction indicator + { ColumnTypeCfg::name, fastFromDIP(0 - 75 - 42), 1, true }, + { ColumnTypeCfg::lastSync, fastFromDIP(75), 0, true }, + { ColumnTypeCfg::lastLog, fastFromDIP(42), 0, true }, //leave some room for the sort direction indicator }; } -const ColumnTypeCfg cfgGridLastSortColumnDefault = ColumnTypeCfg::NAME; +const ColumnTypeCfg cfgGridLastSortColumnDefault = ColumnTypeCfg::name; inline bool getDefaultSortDirection(ColumnTypeCfg colType) { switch (colType) { - case ColumnTypeCfg::NAME: + case ColumnTypeCfg::name: return true; - case ColumnTypeCfg::LAST_SYNC: //actual sort order is "time since last sync" + case ColumnTypeCfg::lastSync: //actual sort order is "time since last sync" return false; - case ColumnTypeCfg::LAST_LOG: + case ColumnTypeCfg::lastLog: return true; } assert(false); @@ -101,6 +104,7 @@ public: AbstractPath logFilePath; //optional }; void setLastRunStats(const std::vector& filePaths, const LastRunStats& lastRun); + void setBackColor(const std::vector& filePaths, const wxColor& col); struct Details { @@ -128,6 +132,8 @@ private: ConfigView (const ConfigView&) = delete; ConfigView& operator=(const ConfigView&) = delete; + void addCfgFilesImpl(const std::vector& filePaths); + void sortListView(); template void sortListViewImpl(); diff --git a/FreeFileSync/Source/ui/command_box.cpp b/FreeFileSync/Source/ui/command_box.cpp index 6e769bb7..b862d365 100644 --- a/FreeFileSync/Source/ui/command_box.cpp +++ b/FreeFileSync/Source/ui/command_box.cpp @@ -75,7 +75,7 @@ void CommandBox::addItemHistory() equalNoCase(newCommand, cmd)) return; - eraseIf(history_, [&](const Zstring& item) { return equalNoCase(newCommand, item); }); + std::erase_if(history_, [&](const Zstring& item) { return equalNoCase(newCommand, item); }); history_.insert(history_.begin(), newCommand); @@ -192,7 +192,7 @@ void CommandBox::OnKeyEvent(wxKeyEvent& event) //this->SetSelection(wxNOT_FOUND); //delete selected row - eraseIf(history_, [&](const Zstring& item) { return item == selValue; }); + std::erase_if(history_, [&](const Zstring& item) { return item == selValue; }); SetString(pos, wxString()); //in contrast to Delete(), this one does not kill the drop-down list and gives a nice visual feedback! //Delete(pos); diff --git a/FreeFileSync/Source/ui/file_grid.cpp b/FreeFileSync/Source/ui/file_grid.cpp index c115d1a0..e369527e 100644 --- a/FreeFileSync/Source/ui/file_grid.cpp +++ b/FreeFileSync/Source/ui/file_grid.cpp @@ -167,7 +167,7 @@ protected: const FileSystemObject* getRawData(size_t row) const { - if (auto view = getGridDataView()) + if (const FileView* view = getGridDataView()) return view->getObject(row); return nullptr; } @@ -474,11 +474,11 @@ private: return true; }(); - wxDCTextColourChanger dummy(dc); + wxDCTextColourChanger textColor(dc); if (!isActive) - dummy.Set(wxSystemSettings::GetColour(wxSYS_COLOUR_GRAYTEXT)); + textColor.Set(wxSystemSettings::GetColour(wxSYS_COLOUR_GRAYTEXT)); else if (getRowDisplayType(row) != DisplayType::NORMAL) - dummy.Set(*wxBLACK); //accessibility: always set both foreground AND background colors! + textColor.Set(*wxBLACK); //accessibility: always set both foreground AND background colors! wxRect rectTmp = rect; @@ -678,13 +678,14 @@ private: drawColumnLabelText(dc, rectRemain, getColumnLabel(colType)); //draw sort marker - if (getGridDataView()) - if (auto sortInfo = getGridDataView()->getSortInfo()) - if (colType == static_cast(sortInfo->type) && (side == LEFT_SIDE) == sortInfo->onLeft) - { - const wxBitmap& marker = getResourceImage(sortInfo->ascending ? L"sort_ascending" : L"sort_descending"); - drawBitmapRtlNoMirror(dc, marker, rectInner, wxALIGN_CENTER_HORIZONTAL); - } + if (const FileView* view = getGridDataView()) + if (auto sortInfo = view->getSortInfo()) + if (const ColumnTypeRim* sortType = std::get_if(&sortInfo->sortCol)) + if (*sortType == static_cast(colType) && sortInfo->onLeft == (side == LEFT_SIDE)) + { + const wxBitmap& marker = getResourceImage(sortInfo->ascending ? L"sort_ascending" : L"sort_descending"); + drawBitmapRtlNoMirror(dc, marker, rectInner, wxALIGN_CENTER_HORIZONTAL); + } } struct IconInfo @@ -792,12 +793,12 @@ private: { if (const FileSystemObject* fsObj = getRawData(row)) { - if (markedFilesAndLinks_.find(fsObj) != markedFilesAndLinks_.end()) //mark files/links directly + if (contains(markedFilesAndLinks_, fsObj)) //mark files/links directly return true; if (auto folder = dynamic_cast(fsObj)) { - if (markedContainer_.find(folder) != markedContainer_.end()) //mark directories which *are* the given ContainerObject* + if (contains(markedContainer_, folder)) //mark directories which *are* the given ContainerObject* return true; } @@ -805,7 +806,7 @@ private: const ContainerObject* parent = &(fsObj->parent()); for (;;) { - if (markedContainer_.find(parent) != markedContainer_.end()) + if (contains(markedContainer_, parent)) return true; if (auto folder = dynamic_cast(parent)) @@ -1095,30 +1096,46 @@ private: void renderColumnLabel(Grid& tree, wxDC& dc, const wxRect& rect, ColumnType colType, bool highlighted) override { - switch (static_cast(colType)) + const auto colTypeCenter = static_cast(colType); + + const wxRect rectInner = drawColumnLabelBackground(dc, rect, highlighted && colTypeCenter != ColumnTypeCenter::CHECKBOX); + + wxBitmap colIcon; + switch (colTypeCenter) { case ColumnTypeCenter::CHECKBOX: - drawColumnLabelBackground(dc, rect, false /*highlighted*/); break; case ColumnTypeCenter::CMP_CATEGORY: - { - const wxRect rectInner = drawColumnLabelBackground(dc, rect, highlighted); - - const wxBitmap& cmpIcon = getResourceImage(L"compare_sicon"); - drawBitmapRtlNoMirror(dc, highlightSyncAction_ ? greyScale(cmpIcon) : cmpIcon, rectInner, wxALIGN_CENTER); - } - break; + colIcon = getResourceImage(L"compare_sicon"); + if (highlightSyncAction_) + colIcon = greyScale(colIcon); + break; case ColumnTypeCenter::SYNC_ACTION: - { - const wxRect rectInner = drawColumnLabelBackground(dc, rect, highlighted); - - const wxBitmap& syncIcon = getResourceImage(L"file_sync_sicon"); - drawBitmapRtlNoMirror(dc, highlightSyncAction_ ? syncIcon : greyScale(syncIcon), rectInner, wxALIGN_CENTER); - } - break; + colIcon = getResourceImage(L"file_sync_sicon"); + if (!highlightSyncAction_) + colIcon = greyScale(colIcon); + break; } + + if (colIcon.IsOk()) + drawBitmapRtlNoMirror(dc, colIcon, rectInner, wxALIGN_CENTER); + + //draw sort marker + if (const FileView* view = getGridDataView()) + if (auto sortInfo = view->getSortInfo()) + if (const ColumnTypeCenter* sortType = std::get_if(&sortInfo->sortCol)) + if (*sortType == colTypeCenter) + { + const int gapLeft = (rectInner.width + colIcon.GetWidth()) / 2; + wxRect rectRemain = rectInner; + rectRemain.x += gapLeft; + rectRemain.width -= gapLeft; + + const wxBitmap& marker = getResourceImage(sortInfo->ascending ? L"sort_ascending" : L"sort_descending"); + drawBitmapRtlNoMirror(dc, marker, rectRemain, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL); + } } static wxColor getBackGroundColorSyncAction(const FileSystemObject* fsObj) @@ -1587,7 +1604,7 @@ void filegrid::init(Grid& gridLeft, Grid& gridCenter, Grid& gridRight) //gridCenter.showScrollBars(Grid::SB_SHOW_NEVER, Grid::SB_SHOW_NEVER); const int widthCheckbox = getResourceImage(L"checkbox_true").GetWidth() + fastFromDIP(3); - const int widthCategory = 2 * getResourceImage(L"cat_left_only_sicon").GetWidth() + getResourceImage(L"notch").GetWidth(); + const int widthCategory = 2 * getResourceImage(L"sort_ascending").GetWidth() + getResourceImage(L"cat_left_only_sicon").GetWidth() + getResourceImage(L"notch").GetWidth(); const int widthAction = 3 * getResourceImage(L"so_create_left_sicon").GetWidth(); gridCenter.SetSize(widthCategory + widthCheckbox + widthAction, -1); @@ -1645,7 +1662,7 @@ private: iconBuffer_.setWorkload(newLoad); - if (newLoad.empty()) //let's only pay for IconUpdater when needed + if (newLoad.empty()) //let's only pay for IconUpdater while needed stop(); } diff --git a/FreeFileSync/Source/ui/file_grid_attr.h b/FreeFileSync/Source/ui/file_grid_attr.h index ea5f1b54..0746fc8c 100644 --- a/FreeFileSync/Source/ui/file_grid_attr.h +++ b/FreeFileSync/Source/ui/file_grid_attr.h @@ -79,7 +79,6 @@ const ItemPathFormat defaultItemPathFormatLeftGrid = ItemPathFormat::RELATIVE_P const ItemPathFormat defaultItemPathFormatRightGrid = ItemPathFormat::RELATIVE_PATH; //------------------------------------------------------------------ - enum class ColumnTypeCenter { CHECKBOX, @@ -87,6 +86,13 @@ enum class ColumnTypeCenter SYNC_ACTION, }; + +inline +bool getDefaultSortDirection(ColumnTypeCenter type) //true: ascending; false: descending +{ + assert(type != ColumnTypeCenter::CHECKBOX); + return true; +} //------------------------------------------------------------------ } diff --git a/FreeFileSync/Source/ui/file_view.cpp b/FreeFileSync/Source/ui/file_view.cpp index 40f0a7d5..0342d800 100644 --- a/FreeFileSync/Source/ui/file_view.cpp +++ b/FreeFileSync/Source/ui/file_view.cpp @@ -7,48 +7,58 @@ #include "file_view.h" #include #include -#include "sorting.h" #include "../base/synchronization.h" using namespace zen; using namespace fff; -template -void addNumbers(const FileSystemObject& fsObj, StatusResult& result) +namespace +{ +struct CompileTimeReminder : public FSObjectVisitor +{ + void visit(const FilePair& file ) override {} + void visit(const SymlinkPair& symlink) override {} + void visit(const FolderPair& folder ) override {} +} checkDymanicCasts; //just a compile-time reminder to manually check dynamic casts in this file if ever needed + + +template +void addNumbers(const FileSystemObject& fsObj, ViewStats& stats) { visitFSObject(fsObj, [&](const FolderPair& folder) { if (!folder.isEmpty()) - ++result.folderCountLeft; + ++stats.fileStatsLeft.folderCount; if (!folder.isEmpty()) - ++result.folderCountRight; + ++stats.fileStatsRight.folderCount; }, [&](const FilePair& file) { if (!file.isEmpty()) { - result.bytesLeft += file.getFileSize(); - ++result.fileCountLeft; + stats.fileStatsLeft.bytes += file.getFileSize(); + ++stats.fileStatsLeft.fileCount; } if (!file.isEmpty()) { - result.bytesRight += file.getFileSize(); - ++result.fileCountRight; + stats.fileStatsRight.bytes += file.getFileSize(); + ++stats.fileStatsRight.fileCount; } }, [&](const SymlinkPair& symlink) { if (!symlink.isEmpty()) - ++result.fileCountLeft; + ++stats.fileStatsLeft.fileCount; if (!symlink.isEmpty()) - ++result.fileCountRight; + ++stats.fileStatsRight.fileCount; }); } +} template @@ -59,7 +69,6 @@ void FileView::updateView(Predicate pred) rowPositionsFirstChild_.clear(); for (const RefIndex& ref : sortedRef_) - { if (const FileSystemObject* fsObj = FileSystemObject::retrieve(ref.objId)) if (pred(*fsObj)) { @@ -84,7 +93,6 @@ void FileView::updateView(Predicate pred) //build subview this->viewRef_.push_back(ref.objId); } - } } @@ -102,62 +110,62 @@ ptrdiff_t FileView::findRowFirstChild(const ContainerObject* hierObj) const } -FileView::StatusCmpResult FileView::updateCmpResult(bool showExcluded, //maps sortedRef to viewRef - bool showLeftOnly, - bool showRightOnly, - bool showLeftNewer, - bool showRightNewer, - bool showDifferent, - bool showEqual, - bool showConflict) +FileView::CategoryViewStats FileView::applyFilterByCategory(bool showExcluded, //maps sortedRef to viewRef + bool showLeftOnly, + bool showRightOnly, + bool showLeftNewer, + bool showRightNewer, + bool showDifferent, + bool showEqual, + bool showConflict) { - StatusCmpResult output; + CategoryViewStats stats; - updateView([&](const FileSystemObject& fsObj) -> bool + updateView([&](const FileSystemObject& fsObj) { - auto categorize = [&](bool showCategory, bool& existsCategory) + auto categorize = [&](bool showCategory, int& categoryCount) { if (!fsObj.isActive()) { - output.existsExcluded = true; + ++stats.excluded; if (!showExcluded) return false; } - existsCategory = true; + ++categoryCount; if (!showCategory) return false; - addNumbers(fsObj, output); //calculate total number of bytes for each side + addNumbers(fsObj, stats); //calculate total number of bytes for each side return true; }; switch (fsObj.getCategory()) { case FILE_LEFT_SIDE_ONLY: - return categorize(showLeftOnly, output.existsLeftOnly); + return categorize(showLeftOnly, stats.leftOnly); case FILE_RIGHT_SIDE_ONLY: - return categorize(showRightOnly, output.existsRightOnly); + return categorize(showRightOnly, stats.rightOnly); case FILE_LEFT_NEWER: - return categorize(showLeftNewer, output.existsLeftNewer); + return categorize(showLeftNewer, stats.leftNewer); case FILE_RIGHT_NEWER: - return categorize(showRightNewer, output.existsRightNewer); + return categorize(showRightNewer, stats.rightNewer); case FILE_DIFFERENT_CONTENT: - return categorize(showDifferent, output.existsDifferent); + return categorize(showDifferent, stats.different); case FILE_EQUAL: case FILE_DIFFERENT_METADATA: //= sub-category of equal - return categorize(showEqual, output.existsEqual); + return categorize(showEqual, stats.equal); case FILE_CONFLICT: - return categorize(showConflict, output.existsConflict); + return categorize(showConflict, stats.conflict); } assert(false); return true; }); - return output; + return stats; } -FileView::StatusSyncPreview FileView::updateSyncPreview(bool showExcluded, //maps sortedRef to viewRef +FileView::ActionViewStats FileView::applyFilterByAction(bool showExcluded, //maps sortedRef to viewRef bool showCreateLeft, bool showCreateRight, bool showDeleteLeft, @@ -168,58 +176,58 @@ FileView::StatusSyncPreview FileView::updateSyncPreview(bool showExcluded, //map bool showEqual, bool showConflict) { - StatusSyncPreview output; + ActionViewStats stats; updateView([&](const FileSystemObject& fsObj) { - auto categorize = [&](bool showCategory, bool& existsCategory) + auto categorize = [&](bool showCategory, int& categoryCount) { if (!fsObj.isActive()) { - output.existsExcluded = true; + ++stats.excluded; if (!showExcluded) return false; } - existsCategory = true; + ++categoryCount; if (!showCategory) return false; - addNumbers(fsObj, output); //calculate total number of bytes for each side + addNumbers(fsObj, stats); //calculate total number of bytes for each side return true; }; switch (fsObj.getSyncOperation()) //evaluate comparison result and sync direction { case SO_CREATE_NEW_LEFT: - return categorize(showCreateLeft, output.existsSyncCreateLeft); + return categorize(showCreateLeft, stats.createLeft); case SO_CREATE_NEW_RIGHT: - return categorize(showCreateRight, output.existsSyncCreateRight); + return categorize(showCreateRight, stats.createRight); case SO_DELETE_LEFT: - return categorize(showDeleteLeft, output.existsSyncDeleteLeft); + return categorize(showDeleteLeft, stats.deleteLeft); case SO_DELETE_RIGHT: - return categorize(showDeleteRight, output.existsSyncDeleteRight); - case SO_OVERWRITE_RIGHT: - case SO_COPY_METADATA_TO_RIGHT: //no extra button on screen - case SO_MOVE_RIGHT_FROM: - case SO_MOVE_RIGHT_TO: - return categorize(showUpdateRight, output.existsSyncDirRight); + return categorize(showDeleteRight, stats.deleteRight); case SO_OVERWRITE_LEFT: case SO_COPY_METADATA_TO_LEFT: //no extra button on screen case SO_MOVE_LEFT_TO: case SO_MOVE_LEFT_FROM: - return categorize(showUpdateLeft, output.existsSyncDirLeft); + return categorize(showUpdateLeft, stats.updateLeft); + case SO_OVERWRITE_RIGHT: + case SO_COPY_METADATA_TO_RIGHT: //no extra button on screen + case SO_MOVE_RIGHT_FROM: + case SO_MOVE_RIGHT_TO: + return categorize(showUpdateRight, stats.updateRight); case SO_DO_NOTHING: - return categorize(showDoNothing, output.existsSyncDirNone); + return categorize(showDoNothing, stats.updateNone); case SO_EQUAL: - return categorize(showEqual, output.existsEqual); + return categorize(showEqual, stats.equal); case SO_UNRESOLVED_CONFLICT: - return categorize(showConflict, output.existsConflict); + return categorize(showConflict, stats.conflict); } assert(false); return true; }); - return output; + return stats; } @@ -245,7 +253,7 @@ void FileView::removeInvalidRows() rowPositionsFirstChild_.clear(); //remove rows that have been deleted meanwhile - eraseIf(sortedRef_, [&](const RefIndex& refIdx) { return !FileSystemObject::retrieve(refIdx.objId); }); + std::erase_if(sortedRef_, [&](const RefIndex& refIdx) { return !FileSystemObject::retrieve(refIdx.objId); }); } @@ -259,16 +267,15 @@ private: index_(index), output_(sortedRef) {} #if 0 - /* - Spend additional CPU cycles to sort the standard file list? + /* Spend additional CPU cycles to sort the standard file list? Test case: 690.000 item pairs, Windows 7 x64 (C:\ vs I:\) ---------------------- CmpNaturalSort: 850 ms CmpLocalPath: 233 ms CmpAsciiNoCase: 189 ms - No sorting: 30 ms - */ + No sorting: 30 ms + */ template static std::vector getItemsSorted(std::list& itemList) { @@ -319,7 +326,186 @@ void FileView::setData(FolderComparison& folderCmp) } -//------------------------------------ SORTING TEMPLATES ------------------------------------------------ +//------------------------------------ SORTING ----------------------------------------- +namespace +{ +inline +bool isDirectoryPair(const FileSystemObject& fsObj) +{ + return dynamic_cast(&fsObj) != nullptr; +} + + +template inline +bool lessShortFileName(const FileSystemObject& lhs, const FileSystemObject& rhs) +{ + //sort order: first files/symlinks, then directories then empty rows + + //empty rows always last + if (lhs.isEmpty()) + return false; + else if (rhs.isEmpty()) + return true; + + //directories after files/symlinks: + if (isDirectoryPair(lhs)) + { + if (!isDirectoryPair(rhs)) + return false; + } + else if (isDirectoryPair(rhs)) + return true; + + //sort directories and files/symlinks by short name + return zen::makeSortDirection(LessNaturalSort() /*even on Linux*/, std::bool_constant())(lhs.getItemName(), rhs.getItemName()); +} + + +template inline +bool lessFullPath(const FileSystemObject& lhs, const FileSystemObject& rhs) +{ + //empty rows always last + if (lhs.isEmpty()) + return false; + else if (rhs.isEmpty()) + return true; + + return zen::makeSortDirection(LessNaturalSort() /*even on Linux*/, std::bool_constant())( + zen::utfTo(AFS::getDisplayPath(lhs.getAbstractPath())), + zen::utfTo(AFS::getDisplayPath(rhs.getAbstractPath()))); +} + + +template inline //side currently unused! +bool lessRelativeFolder(const FileSystemObject& lhs, const FileSystemObject& rhs) +{ + const bool isDirectoryL = isDirectoryPair(lhs); + const Zstring& relFolderL = isDirectoryL ? + lhs.getRelativePathAny() : + lhs.parent().getRelativePathAny(); + + const bool isDirectoryR = isDirectoryPair(rhs); + const Zstring& relFolderR = isDirectoryR ? + rhs.getRelativePathAny() : + rhs.parent().getRelativePathAny(); + + //compare relative names without filepaths first + const int rv = compareNatural(relFolderL, relFolderR); + if (rv != 0) + return zen::makeSortDirection(std::less(), std::bool_constant())(rv, 0); + + //make directories always appear before contained files + if (isDirectoryR) + return false; + else if (isDirectoryL) + return true; + + return zen::makeSortDirection(LessNaturalSort(), std::bool_constant())(lhs.getItemNameAny(), rhs.getItemNameAny()); +} + + +template inline +bool lessFilesize(const FileSystemObject& lhs, const FileSystemObject& rhs) +{ + //empty rows always last + if (lhs.isEmpty()) + return false; + else if (rhs.isEmpty()) + return true; + + //directories second last + if (isDirectoryPair(lhs)) + return false; + else if (isDirectoryPair(rhs)) + return true; + + const FilePair* fileL = dynamic_cast(&lhs); + const FilePair* fileR = dynamic_cast(&rhs); + + //then symlinks + if (!fileL) + return false; + else if (!fileR) + return true; + + //return list beginning with largest files first + return zen::makeSortDirection(std::less<>(), std::bool_constant())(fileL->getFileSize(), fileR->getFileSize()); +} + + +template inline +bool lessFiletime(const FileSystemObject& lhs, const FileSystemObject& rhs) +{ + if (lhs.isEmpty()) + return false; //empty rows always last + else if (rhs.isEmpty()) + return true; //empty rows always last + + const FilePair* fileL = dynamic_cast(&lhs); + const FilePair* fileR = dynamic_cast(&rhs); + + const SymlinkPair* symlinkL = dynamic_cast(&lhs); + const SymlinkPair* symlinkR = dynamic_cast(&rhs); + + if (!fileL && !symlinkL) + return false; //directories last + else if (!fileR && !symlinkR) + return true; //directories last + + const int64_t dateL = fileL ? fileL->getLastWriteTime() : symlinkL->getLastWriteTime(); + const int64_t dateR = fileR ? fileR->getLastWriteTime() : symlinkR->getLastWriteTime(); + + //return list beginning with newest files first + return zen::makeSortDirection(std::less<>(), std::bool_constant())(dateL, dateR); +} + + +template inline +bool lessExtension(const FileSystemObject& lhs, const FileSystemObject& rhs) +{ + if (lhs.isEmpty()) + return false; //empty rows always last + else if (rhs.isEmpty()) + return true; //empty rows always last + + if (dynamic_cast(&lhs)) + return false; //directories last + else if (dynamic_cast(&rhs)) + return true; //directories last + + auto getExtension = [](const FileSystemObject& fsObj) + { + return afterLast(fsObj.getItemName(), Zstr('.'), zen::IF_MISSING_RETURN_NONE); + }; + + return zen::makeSortDirection(LessNaturalSort() /*even on Linux*/, std::bool_constant())(getExtension(lhs), getExtension(rhs)); +} + + +template inline +bool lessCmpResult(const FileSystemObject& lhs, const FileSystemObject& rhs) +{ + return zen::makeSortDirection([](CompareFileResult lhs2, CompareFileResult rhs2) + { + //presort: equal shall appear at end of list + if (lhs2 == FILE_EQUAL) + return false; + if (rhs2 == FILE_EQUAL) + return true; + return lhs2 < rhs2; + }, + std::bool_constant())(lhs.getCategory(), rhs.getCategory()); +} + + +template inline +bool lessSyncDirection(const FileSystemObject& lhs, const FileSystemObject& rhs) +{ + return zen::makeSortDirection(std::less<>(), std::bool_constant())(lhs.getSyncOperation(), rhs.getSyncOperation()); +} +} + + template struct FileView::LessFullPath { @@ -351,9 +537,12 @@ struct FileView::LessRelativeFolder //presort by folder pair if (a.folderIndex != b.folderIndex) - return ascending ? - a.folderIndex < b.folderIndex : - a.folderIndex > b.folderIndex; + { + if constexpr (ascending) + return a.folderIndex < b.folderIndex; + else + return a.folderIndex > b.folderIndex; + } return lessRelativeFolder(*fsObjA, *fsObjB); } @@ -476,9 +665,9 @@ void FileView::sortView(ColumnTypeRim type, ItemPathFormat pathFmt, bool onLeft, switch (pathFmt) { case ItemPathFormat::FULL_PATH: - if ( ascending && onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessFullPath()); + if ( ascending && onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessFullPath()); else if ( ascending && !onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessFullPath()); - else if (!ascending && onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessFullPath()); + else if (!ascending && onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessFullPath()); else if (!ascending && !onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessFullPath()); break; @@ -488,31 +677,55 @@ void FileView::sortView(ColumnTypeRim type, ItemPathFormat pathFmt, bool onLeft, break; case ItemPathFormat::ITEM_NAME: - if ( ascending && onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessShortFileName()); + if ( ascending && onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessShortFileName()); else if ( ascending && !onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessShortFileName()); - else if (!ascending && onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessShortFileName()); + else if (!ascending && onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessShortFileName()); else if (!ascending && !onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessShortFileName()); break; } break; case ColumnTypeRim::SIZE: - if ( ascending && onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessFilesize()); + if ( ascending && onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessFilesize()); else if ( ascending && !onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessFilesize()); - else if (!ascending && onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessFilesize()); + else if (!ascending && onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessFilesize()); else if (!ascending && !onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessFilesize()); break; case ColumnTypeRim::DATE: - if ( ascending && onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessFiletime()); + if ( ascending && onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessFiletime()); else if ( ascending && !onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessFiletime()); - else if (!ascending && onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessFiletime()); + else if (!ascending && onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessFiletime()); else if (!ascending && !onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessFiletime()); break; case ColumnTypeRim::EXTENSION: - if ( ascending && onLeft) std::stable_sort(sortedRef_.begin(), sortedRef_.end(), LessExtension()); + if ( ascending && onLeft) std::stable_sort(sortedRef_.begin(), sortedRef_.end(), LessExtension()); else if ( ascending && !onLeft) std::stable_sort(sortedRef_.begin(), sortedRef_.end(), LessExtension()); - else if (!ascending && onLeft) std::stable_sort(sortedRef_.begin(), sortedRef_.end(), LessExtension()); + else if (!ascending && onLeft) std::stable_sort(sortedRef_.begin(), sortedRef_.end(), LessExtension()); else if (!ascending && !onLeft) std::stable_sort(sortedRef_.begin(), sortedRef_.end(), LessExtension()); break; } } + + +void FileView::sortView(ColumnTypeCenter type, bool ascending) +{ + viewRef_ .clear(); + rowPositions_ .clear(); + rowPositionsFirstChild_.clear(); + currentSort_ = SortInfo({ type, false, ascending }); + + switch (type) + { + case ColumnTypeCenter::CHECKBOX: + assert(false); + break; + case ColumnTypeCenter::CMP_CATEGORY: + if ( ascending) std::stable_sort(sortedRef_.begin(), sortedRef_.end(), LessCmpResult()); + else if (!ascending) std::stable_sort(sortedRef_.begin(), sortedRef_.end(), LessCmpResult()); + break; + case ColumnTypeCenter::SYNC_ACTION: + if ( ascending) std::stable_sort(sortedRef_.begin(), sortedRef_.end(), LessSyncDirection()); + else if (!ascending) std::stable_sort(sortedRef_.begin(), sortedRef_.end(), LessSyncDirection()); + break; + } +} diff --git a/FreeFileSync/Source/ui/file_view.h b/FreeFileSync/Source/ui/file_view.h index 4dcb96a3..86c967c4 100644 --- a/FreeFileSync/Source/ui/file_view.h +++ b/FreeFileSync/Source/ui/file_view.h @@ -8,6 +8,7 @@ #define GRID_VIEW_H_9285028345703475842569 #include +#include #include #include #include "file_grid_attr.h" @@ -31,62 +32,55 @@ public: //get references to FileSystemObject: no nullptr-check needed! Everything's bound. std::vector getAllFileRef(const std::vector& rows); - struct StatusCmpResult + struct FileStats { - bool existsExcluded = false; - bool existsEqual = false; - bool existsConflict = false; - - bool existsLeftOnly = false; - bool existsRightOnly = false; - bool existsLeftNewer = false; - bool existsRightNewer = false; - bool existsDifferent = false; - - unsigned int fileCountLeft = 0; - unsigned int folderCountLeft = 0; - uint64_t bytesLeft = 0; - - unsigned int fileCountRight = 0; - unsigned int folderCountRight = 0; - uint64_t bytesRight = 0; + int fileCount = 0; + int folderCount = 0; + uint64_t bytes = 0; }; - //comparison results view - StatusCmpResult updateCmpResult(bool showExcluded, - bool showLeftOnly, - bool showRightOnly, - bool showLeftNewer, - bool showRightNewer, - bool showDifferent, - bool showEqual, - bool showConflict); - - struct StatusSyncPreview + struct CategoryViewStats { - bool existsExcluded = false; - bool existsEqual = false; - bool existsConflict = false; - - bool existsSyncCreateLeft = false; - bool existsSyncCreateRight = false; - bool existsSyncDeleteLeft = false; - bool existsSyncDeleteRight = false; - bool existsSyncDirLeft = false; - bool existsSyncDirRight = false; - bool existsSyncDirNone = false; - - unsigned int fileCountLeft = 0; - unsigned int folderCountLeft = 0; - uint64_t bytesLeft = 0; - - unsigned int fileCountRight = 0; - unsigned int folderCountRight = 0; - uint64_t bytesRight = 0; + int excluded = 0; + int equal = 0; + int conflict = 0; + + int leftOnly = 0; + int rightOnly = 0; + int leftNewer = 0; + int rightNewer = 0; + int different = 0; + + FileStats fileStatsLeft; + FileStats fileStatsRight; }; - - //synchronization preview - StatusSyncPreview updateSyncPreview(bool showExcluded, + CategoryViewStats applyFilterByCategory(bool showExcluded, + bool showLeftOnly, + bool showRightOnly, + bool showLeftNewer, + bool showRightNewer, + bool showDifferent, + bool showEqual, + bool showConflict); + + struct ActionViewStats + { + int excluded = 0; + int equal = 0; + int conflict = 0; + + int createLeft = 0; + int createRight = 0; + int deleteLeft = 0; + int deleteRight = 0; + int updateLeft = 0; + int updateRight = 0; + int updateNone = 0; + + FileStats fileStatsLeft; + FileStats fileStatsRight; + }; + ActionViewStats applyFilterByAction(bool showExcluded, bool showCreateLeft, bool showCreateRight, bool showDeleteLeft, @@ -101,12 +95,13 @@ public: void removeInvalidRows(); //remove references to rows that have been deleted meanwhile: call after manual deletion and synchronization! //sorting... - void sortView(ColumnTypeRim type, ItemPathFormat pathFmt, bool onLeft, bool ascending); //always call this method for sorting, never sort externally! + void sortView(ColumnTypeRim type, ItemPathFormat pathFmt, bool onLeft, bool ascending); //always call these; never sort externally! + void sortView(ColumnTypeCenter type, bool ascending); // struct SortInfo { - ColumnTypeRim type = ColumnTypeRim::ITEM_PATH; - bool onLeft = false; + std::variant sortCol; + bool onLeft = false; //if sortCol is ColumnTypeRim bool ascending = false; }; const SortInfo* getSortInfo() const { return zen::get(currentSort_); } //return nullptr if currently not sorted diff --git a/FreeFileSync/Source/ui/folder_history_box.cpp b/FreeFileSync/Source/ui/folder_history_box.cpp index 2b824b1f..70eaa9dc 100644 --- a/FreeFileSync/Source/ui/folder_history_box.cpp +++ b/FreeFileSync/Source/ui/folder_history_box.cpp @@ -88,6 +88,8 @@ void FolderHistoryBox::setValueAndUpdateList(const wxString& folderPathPhrase) if (std::find(dirList.begin(), dirList.end(), folderPathPhrase) == dirList.end()) dirList.insert(dirList.begin(), folderPathPhrase); + warn_static("do something about wxComboBox::Append() perf") + //this->Clear(); -> NO! emits yet another wxEVT_COMMAND_TEXT_UPDATED!!! wxItemContainer::Clear(); //suffices to clear the selection items only! this->Append(dirList); diff --git a/FreeFileSync/Source/ui/folder_history_box.h b/FreeFileSync/Source/ui/folder_history_box.h index e83346e1..9db2f062 100644 --- a/FreeFileSync/Source/ui/folder_history_box.h +++ b/FreeFileSync/Source/ui/folder_history_box.h @@ -41,7 +41,7 @@ public: const Zstring nameTmp = zen::trimCpy(folderPathPhrase); //insert new folder or put it to the front if already existing - zen::eraseIf(folderPathPhrases_, [&](const Zstring& item) { return equalNoCase(item, nameTmp); }); + std::erase_if(folderPathPhrases_, [&](const Zstring& item) { return equalNoCase(item, nameTmp); }); folderPathPhrases_.insert(folderPathPhrases_.begin(), nameTmp); @@ -49,7 +49,7 @@ public: folderPathPhrases_.resize(maxSize_); } - void delItem(const Zstring& folderPathPhrase) { zen::eraseIf(folderPathPhrases_, [&](const Zstring& item) { return equalNoCase(item, folderPathPhrase); }); } + void delItem(const Zstring& folderPathPhrase) { std::erase_if(folderPathPhrases_, [&](const Zstring& item) { return equalNoCase(item, folderPathPhrase); }); } private: size_t maxSize_ = 0; @@ -71,7 +71,7 @@ public: const wxValidator& validator = wxDefaultValidator, const wxString& name = wxComboBoxNameStr); - void init(const std::shared_ptr& sharedHistory) { sharedHistory_ = sharedHistory; } + void init(zen::SharedRef& sharedHistory) { sharedHistory_ = sharedHistory.ptr(); } void setValue(const wxString& folderPathPhrase) { diff --git a/FreeFileSync/Source/ui/gui_generated.cpp b/FreeFileSync/Source/ui/gui_generated.cpp index d384e0bb..559dfa0d 100644 --- a/FreeFileSync/Source/ui/gui_generated.cpp +++ b/FreeFileSync/Source/ui/gui_generated.cpp @@ -652,7 +652,7 @@ MainDialogGenerated::MainDialogGenerated( wxWindow* parent, wxWindowID id, const wxBoxSizer* bSizer291; bSizer291 = new wxBoxSizer( wxVERTICAL ); - ffgSizer111 = new wxFlexGridSizer( 2, 0, 5, 5 ); + ffgSizer111 = new wxFlexGridSizer( 0, 2, 5, 5 ); ffgSizer111->SetFlexibleDirection( wxBOTH ); ffgSizer111->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); @@ -703,7 +703,7 @@ MainDialogGenerated::MainDialogGenerated( wxWindow* parent, wxWindowID id, const wxBoxSizer* bSizer292; bSizer292 = new wxBoxSizer( wxVERTICAL ); - ffgSizer112 = new wxFlexGridSizer( 2, 0, 5, 5 ); + ffgSizer112 = new wxFlexGridSizer( 0, 1, 5, 5 ); ffgSizer112->SetFlexibleDirection( wxBOTH ); ffgSizer112->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); @@ -844,19 +844,19 @@ MainDialogGenerated::MainDialogGenerated( wxWindow* parent, wxWindowID id, const bSizerViewFilter->Add( 0, 0, 1, wxEXPAND, 5 ); - m_staticTextViewType = new wxStaticText( m_panelViewFilter, wxID_ANY, _("View type:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextViewType->Wrap( -1 ); - bSizerViewFilter->Add( m_staticTextViewType, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + wxBoxSizer* bSizer287; + bSizer287 = new wxBoxSizer( wxHORIZONTAL ); m_bpButtonViewTypeSyncAction = new zen::ToggleButton( m_panelViewFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1, -1 ), wxBU_AUTODRAW ); - bSizerViewFilter->Add( m_bpButtonViewTypeSyncAction, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL|wxRIGHT, 5 ); + bSizer287->Add( m_bpButtonViewTypeSyncAction, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + m_bpButtonViewContext = new wxBitmapButton( m_panelViewFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1, -1 ), wxBU_AUTODRAW ); + m_bpButtonViewContext->SetToolTip( _("dummy") ); - bSizerViewFilter->Add( 0, 0, 3, wxEXPAND, 5 ); + bSizer287->Add( m_bpButtonViewContext, 0, wxRIGHT|wxEXPAND, 5 ); - m_staticTextSelectView = new wxStaticText( m_panelViewFilter, wxID_ANY, _("Select view:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextSelectView->Wrap( -1 ); - bSizerViewFilter->Add( m_staticTextSelectView, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + bSizerViewFilter->Add( bSizer287, 0, wxALIGN_CENTER_VERTICAL, 5 ); m_bpButtonShowExcluded = new zen::ToggleButton( m_panelViewFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1, -1 ), wxBU_AUTODRAW ); bSizerViewFilter->Add( m_bpButtonShowExcluded, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL|wxRIGHT, 5 ); @@ -903,13 +903,8 @@ MainDialogGenerated::MainDialogGenerated( wxWindow* parent, wxWindowID id, const m_bpButtonShowConflict = new zen::ToggleButton( m_panelViewFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1, -1 ), wxBU_AUTODRAW ); bSizerViewFilter->Add( m_bpButtonShowConflict, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - m_bpButtonViewFilterSave = new wxBitmapButton( m_panelViewFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW ); - m_bpButtonViewFilterSave->SetToolTip( _("Save as default") ); - - bSizerViewFilter->Add( m_bpButtonViewFilterSave, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); - - bSizerViewFilter->Add( 0, 0, 3, wxEXPAND, 5 ); + bSizerViewFilter->Add( 0, 0, 1, wxEXPAND, 5 ); m_staticText96 = new wxStaticText( m_panelViewFilter, wxID_ANY, _("Statistics:"), wxDefaultPosition, wxDefaultSize, 0 ); m_staticText96->Wrap( -1 ); @@ -1171,6 +1166,8 @@ MainDialogGenerated::MainDialogGenerated( wxWindow* parent, wxWindowID id, const m_bpButtonSaveAsBatch->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnSaveAsBatchJob ), NULL, this ); m_bpButtonShowLog->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnShowLog ), NULL, this ); m_bpButtonViewTypeSyncAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewType ), NULL, this ); + m_bpButtonViewContext->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnViewTypeContext ), NULL, this ); + m_bpButtonViewContext->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::OnViewTypeContext ), NULL, this ); m_bpButtonShowExcluded->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewButton ), NULL, this ); m_bpButtonShowDeleteLeft->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewButton ), NULL, this ); m_bpButtonShowUpdateLeft->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewButton ), NULL, this ); @@ -1186,7 +1183,6 @@ MainDialogGenerated::MainDialogGenerated( wxWindow* parent, wxWindowID id, const m_bpButtonShowUpdateRight->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewButton ), NULL, this ); m_bpButtonShowDeleteRight->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewButton ), NULL, this ); m_bpButtonShowConflict->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnToggleViewButton ), NULL, this ); - m_bpButtonViewFilterSave->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::OnViewFilterSave ), NULL, this ); } MainDialogGenerated::~MainDialogGenerated() @@ -3261,7 +3257,7 @@ CompareProgressDlgGenerated::CompareProgressDlgGenerated( wxWindow* parent, wxWi wxBoxSizer* bSizer291; bSizer291 = new wxBoxSizer( wxVERTICAL ); - ffgSizer111 = new wxFlexGridSizer( 2, 0, 5, 5 ); + ffgSizer111 = new wxFlexGridSizer( 0, 2, 5, 5 ); ffgSizer111->SetFlexibleDirection( wxBOTH ); ffgSizer111->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); @@ -3312,7 +3308,7 @@ CompareProgressDlgGenerated::CompareProgressDlgGenerated( wxWindow* parent, wxWi wxBoxSizer* bSizer292; bSizer292 = new wxBoxSizer( wxVERTICAL ); - ffgSizer112 = new wxFlexGridSizer( 2, 0, 5, 5 ); + ffgSizer112 = new wxFlexGridSizer( 0, 1, 5, 5 ); ffgSizer112->SetFlexibleDirection( wxBOTH ); ffgSizer112->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); @@ -4685,65 +4681,48 @@ AboutDlgGenerated::AboutDlgGenerated( wxWindow* parent, wxWindowID id, const wxS m_staticText94->Wrap( -1 ); bSizer186->Add( m_staticText94, 0, wxALL, 5 ); - wxBoxSizer* bSizer166; - bSizer166 = new wxBoxSizer( wxHORIZONTAL ); - - wxBoxSizer* bSizer251; - bSizer251 = new wxBoxSizer( wxVERTICAL ); + ffgSizer11 = new wxFlexGridSizer( 2, 0, 5, 10 ); + ffgSizer11->SetFlexibleDirection( wxBOTH ); + ffgSizer11->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); m_bitmapHomepage = new wxStaticBitmap( m_panel41, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1, -1 ), 0 ); m_bitmapHomepage->SetToolTip( _("Home page") ); - bSizer251->Add( m_bitmapHomepage, 0, wxALIGN_CENTER_HORIZONTAL, 5 ); - - m_hyperlink1 = new wxHyperlinkCtrl( m_panel41, wxID_ANY, _("FreeFileSync.org"), wxT("https://freefilesync.org/"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); - m_hyperlink1->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, true, wxEmptyString ) ); - m_hyperlink1->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); - m_hyperlink1->SetToolTip( _("https://freefilesync.org") ); + ffgSizer11->Add( m_bitmapHomepage, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - bSizer251->Add( m_hyperlink1, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + m_bitmapForum = new wxStaticBitmap( m_panel41, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1, -1 ), 0 ); + m_bitmapForum->SetToolTip( _("FreeFileSync Forum") ); + ffgSizer11->Add( m_bitmapForum, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - bSizer166->Add( bSizer251, 0, wxALIGN_BOTTOM|wxRIGHT|wxLEFT, 5 ); + m_bitmapEmail = new wxStaticBitmap( m_panel41, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1, -1 ), 0 ); + m_bitmapEmail->SetToolTip( _("Email") ); - wxBoxSizer* bSizer250; - bSizer250 = new wxBoxSizer( wxVERTICAL ); + ffgSizer11->Add( m_bitmapEmail, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - m_bitmapForum = new wxStaticBitmap( m_panel41, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1, -1 ), 0 ); - m_bitmapForum->SetToolTip( _("FreeFileSync Forum") ); + m_hyperlink1 = new wxHyperlinkCtrl( m_panel41, wxID_ANY, _("FreeFileSync.org"), wxT("https://freefilesync.org/"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); + m_hyperlink1->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, true, wxEmptyString ) ); + m_hyperlink1->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); + m_hyperlink1->SetToolTip( _("https://freefilesync.org") ); - bSizer250->Add( m_bitmapForum, 0, wxALIGN_CENTER_HORIZONTAL, 5 ); + ffgSizer11->Add( m_hyperlink1, 0, wxALIGN_CENTER_VERTICAL, 5 ); m_hyperlink21 = new wxHyperlinkCtrl( m_panel41, wxID_ANY, _("FreeFileSync Forum"), wxT("https://freefilesync.org/forum/"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); m_hyperlink21->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, true, wxEmptyString ) ); m_hyperlink21->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); m_hyperlink21->SetToolTip( _("https://freefilesync.org/forum/") ); - bSizer250->Add( m_hyperlink21, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - - bSizer166->Add( bSizer250, 0, wxALIGN_BOTTOM|wxRIGHT|wxLEFT, 5 ); - - wxBoxSizer* bSizer249; - bSizer249 = new wxBoxSizer( wxVERTICAL ); - - m_bitmapEmail = new wxStaticBitmap( m_panel41, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1, -1 ), 0 ); - m_bitmapEmail->SetToolTip( _("Email") ); - - bSizer249->Add( m_bitmapEmail, 0, wxALIGN_CENTER_HORIZONTAL, 5 ); + ffgSizer11->Add( m_hyperlink21, 0, wxALIGN_CENTER_VERTICAL, 5 ); m_hyperlink2 = new wxHyperlinkCtrl( m_panel41, wxID_ANY, _("zenju@freefilesync.org"), wxT("mailto:zenju@freefilesync.org"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); m_hyperlink2->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, true, wxEmptyString ) ); m_hyperlink2->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); m_hyperlink2->SetToolTip( _("mailto:zenju@freefilesync.org") ); - bSizer249->Add( m_hyperlink2, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - - bSizer166->Add( bSizer249, 0, wxALIGN_BOTTOM|wxRIGHT|wxLEFT, 5 ); + ffgSizer11->Add( m_hyperlink2, 0, wxALIGN_CENTER_VERTICAL, 5 ); - bSizer186->Add( bSizer166, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_HORIZONTAL, 5 ); + bSizer186->Add( ffgSizer11, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 ); bSizerMainSection->Add( bSizer186, 0, wxALL|wxEXPAND, 5 ); diff --git a/FreeFileSync/Source/ui/gui_generated.h b/FreeFileSync/Source/ui/gui_generated.h index 44a4df3f..15653910 100644 --- a/FreeFileSync/Source/ui/gui_generated.h +++ b/FreeFileSync/Source/ui/gui_generated.h @@ -173,9 +173,8 @@ protected: wxPanel* m_panelViewFilter; wxBoxSizer* bSizerViewFilter; wxBitmapButton* m_bpButtonShowLog; - wxStaticText* m_staticTextViewType; zen::ToggleButton* m_bpButtonViewTypeSyncAction; - wxStaticText* m_staticTextSelectView; + wxBitmapButton* m_bpButtonViewContext; zen::ToggleButton* m_bpButtonShowExcluded; zen::ToggleButton* m_bpButtonShowDeleteLeft; zen::ToggleButton* m_bpButtonShowUpdateLeft; @@ -191,7 +190,6 @@ protected: zen::ToggleButton* m_bpButtonShowUpdateRight; zen::ToggleButton* m_bpButtonShowDeleteRight; zen::ToggleButton* m_bpButtonShowConflict; - wxBitmapButton* m_bpButtonViewFilterSave; wxStaticText* m_staticText96; wxPanel* m_panelStatistics; wxBoxSizer* bSizer1801; @@ -247,8 +245,9 @@ protected: virtual void OnHideSearchPanel( wxCommandEvent& event ) { event.Skip(); } virtual void OnSearchGridEnter( wxCommandEvent& event ) { event.Skip(); } virtual void OnToggleViewType( wxCommandEvent& event ) { event.Skip(); } + virtual void OnViewTypeContext( wxCommandEvent& event ) { event.Skip(); } + virtual void OnViewTypeContext( wxMouseEvent& event ) { event.Skip(); } virtual void OnToggleViewButton( wxCommandEvent& event ) { event.Skip(); } - virtual void OnViewFilterSave( wxCommandEvent& event ) { event.Skip(); } public: @@ -1137,11 +1136,12 @@ protected: wxStaticBitmap* m_bitmapLogo; wxStaticLine* m_staticline341; wxStaticText* m_staticText94; + wxFlexGridSizer* ffgSizer11; wxStaticBitmap* m_bitmapHomepage; - wxHyperlinkCtrl* m_hyperlink1; wxStaticBitmap* m_bitmapForum; - wxHyperlinkCtrl* m_hyperlink21; wxStaticBitmap* m_bitmapEmail; + wxHyperlinkCtrl* m_hyperlink1; + wxHyperlinkCtrl* m_hyperlink21; wxHyperlinkCtrl* m_hyperlink2; wxStaticLine* m_staticline3412; wxPanel* m_panelDonate; diff --git a/FreeFileSync/Source/ui/gui_status_handler.cpp b/FreeFileSync/Source/ui/gui_status_handler.cpp index be2dea7a..6b1504b0 100644 --- a/FreeFileSync/Source/ui/gui_status_handler.cpp +++ b/FreeFileSync/Source/ui/gui_status_handler.cpp @@ -18,6 +18,10 @@ using namespace zen; using namespace fff; +namespace +{ +const std::chrono::seconds TEMP_PANEL_DISPLAY_DELAY(1); +} StatusHandlerTemporaryPanel::StatusHandlerTemporaryPanel(MainDialog& dlg, const std::chrono::system_clock::time_point& startTime, @@ -25,13 +29,27 @@ StatusHandlerTemporaryPanel::StatusHandlerTemporaryPanel(MainDialog& dlg, size_t automaticRetryCount, std::chrono::seconds automaticRetryDelay) : mainDlg_(dlg), + ignoreErrors_(ignoreErrors), automaticRetryCount_(automaticRetryCount), automaticRetryDelay_(automaticRetryDelay), startTime_(startTime) { - { - mainDlg_.compareStatus_->init(*this, ignoreErrors, automaticRetryCount); //clear old values before showing panel + mainDlg_.compareStatus_->init(*this, ignoreErrors_, automaticRetryCount_); //clear old values before showing panel + + //showStatsPanel(); => delay and avoid GUI distraction for short-lived tasks + + mainDlg_.Update(); //don't wait until idle event! + + //register keys + mainDlg_.Connect(wxEVT_CHAR_HOOK, wxKeyEventHandler(StatusHandlerTemporaryPanel::OnKeyPressed), nullptr, this); + mainDlg_.m_buttonCancel->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusHandlerTemporaryPanel::OnAbortCompare), nullptr, this); +} + +void StatusHandlerTemporaryPanel::showStatsPanel() +{ + assert(!mainDlg_.auiMgr_.GetPane(mainDlg_.compareStatus_->getAsWindow()).IsShown()); + { //------------------------------------------------------------------ const wxAuiPaneInfo& topPanel = mainDlg_.auiMgr_.GetPane(mainDlg_.m_panelTopButtons); wxAuiPaneInfo& statusPanel = mainDlg_.auiMgr_.GetPane(mainDlg_.compareStatus_->getAsWindow()); @@ -90,21 +108,11 @@ StatusHandlerTemporaryPanel::StatusHandlerTemporaryPanel(MainDialog& dlg, mainDlg_.auiMgr_.Update(); mainDlg_.compareStatus_->getAsWindow()->Refresh(); //macOS: fix background corruption for the statistics boxes (call *after* wxAuiManager::Update() } - - mainDlg_.Update(); //don't wait until idle event! - - //register keys - mainDlg_.Connect(wxEVT_CHAR_HOOK, wxKeyEventHandler(StatusHandlerTemporaryPanel::OnKeyPressed), nullptr, this); - mainDlg_.m_buttonCancel->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusHandlerTemporaryPanel::OnAbortCompare), nullptr, this); } StatusHandlerTemporaryPanel::~StatusHandlerTemporaryPanel() { - //unregister keys - mainDlg_.Disconnect(wxEVT_CHAR_HOOK, wxKeyEventHandler(StatusHandlerTemporaryPanel::OnKeyPressed), nullptr, this); - mainDlg_.m_buttonCancel->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusHandlerTemporaryPanel::OnAbortCompare), nullptr, this); - //Workaround wxAuiManager crash when starting panel resizing during comparison and holding button until after comparison has finished: //- unlike regular window resizing, wxAuiManager does not run a dedicated event loop while the mouse button is held //- wxAuiManager internally stores the panel index that is currently resized @@ -116,6 +124,11 @@ StatusHandlerTemporaryPanel::~StatusHandlerTemporaryPanel() mainDlg_.auiMgr_.GetPane(mainDlg_.compareStatus_->getAsWindow()).Hide(); mainDlg_.auiMgr_.Update(); + + //unregister keys + mainDlg_.Disconnect(wxEVT_CHAR_HOOK, wxKeyEventHandler(StatusHandlerTemporaryPanel::OnKeyPressed), nullptr, this); + mainDlg_.m_buttonCancel->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusHandlerTemporaryPanel::OnAbortCompare), nullptr, this); + mainDlg_.compareStatus_->teardown(); if (!errorLog_.empty()) //reportFinalStatus() was not called! @@ -146,8 +159,8 @@ StatusHandlerTemporaryPanel::Result StatusHandlerTemporaryPanel::reportFinalStat const ProcessSummary summary { startTime_, finalStatus, {} /*jobName*/, - getStatsCurrent(currentPhase()), - getStatsTotal (currentPhase()), + getStatsCurrent(), + getStatsTotal (), totalTime }; @@ -158,19 +171,21 @@ StatusHandlerTemporaryPanel::Result StatusHandlerTemporaryPanel::reportFinalStat } -void StatusHandlerTemporaryPanel::initNewPhase(int itemsTotal, int64_t bytesTotal, Phase phaseID) +void StatusHandlerTemporaryPanel::initNewPhase(int itemsTotal, int64_t bytesTotal, ProcessPhase phaseID) { StatusHandler::initNewPhase(itemsTotal, bytesTotal, phaseID); mainDlg_.compareStatus_->initNewPhase(); //call after "StatusHandler::initNewPhase" - forceUiRefresh(); //throw AbortProcess; OS X needs a full yield to update GUI and get rid of "dummy" texts + //macOS needs a full yield to update GUI and get rid of "dummy" texts + requestUiUpdate(true /*force*/); //throw AbortProcess } -void StatusHandlerTemporaryPanel::logInfo(const std::wstring& msg) +void StatusHandlerTemporaryPanel::reportInfo(const std::wstring& msg) { errorLog_.logMsg(msg, MSG_TYPE_INFO); + updateStatus(msg); //throw AbortProcess } @@ -185,7 +200,7 @@ void StatusHandlerTemporaryPanel::reportWarning(const std::wstring& msg, bool& w if (!mainDlg_.compareStatus_->getOptionIgnoreErrors()) { - forceUiRefreshNoThrow(); //noexcept! => don't throw here when error occurs during clean up! + forceUiUpdateNoThrow(); //noexcept! => don't throw here when error occurs during clean up! bool dontWarnAgain = false; switch (showConfirmationDialog(&mainDlg_, DialogInfoType::warning, @@ -197,7 +212,7 @@ void StatusHandlerTemporaryPanel::reportWarning(const std::wstring& msg, bool& w warningActive = !dontWarnAgain; break; case ConfirmationButton::cancel: - userAbortProcessNow(); //throw AbortProcess + abortProcessNow(AbortTrigger::user); //throw AbortProcess break; } } @@ -214,27 +229,27 @@ ProcessCallback::Response StatusHandlerTemporaryPanel::reportError(const std::ws { errorLog_.logMsg(msg + L"\n-> " + _("Automatic retry"), MSG_TYPE_INFO); delayAndCountDown(_("Automatic retry") + (automaticRetryCount_ <= 1 ? L"" : L" " + numberTo(retryNumber + 1) + L"/" + numberTo(automaticRetryCount_)), - automaticRetryDelay_, [&](const std::wstring& statusMsg) { this->reportStatus(_("Error") + L": " + statusMsg); }); //throw AbortProcess + automaticRetryDelay_, [&](const std::wstring& statusMsg) { this->updateStatus(_("Error") + L": " + statusMsg); }); //throw AbortProcess return ProcessCallback::retry; } //always, except for "retry": - auto guardWriteLog = zen::makeGuard([&] { errorLog_.logMsg(msg, MSG_TYPE_ERROR); }); + auto guardWriteLog = zen::makeGuard([&] { errorLog_.logMsg(msg, MSG_TYPE_ERROR); }); if (!mainDlg_.compareStatus_->getOptionIgnoreErrors()) { - forceUiRefreshNoThrow(); //noexcept! => don't throw here when error occurs during clean up! + forceUiUpdateNoThrow(); //noexcept! => don't throw here when error occurs during clean up! switch (showConfirmationDialog(&mainDlg_, DialogInfoType::error, PopupDialogCfg().setDetailInstructions(msg), _("&Ignore"), _("Ignore &all"), _("&Retry"))) { case ConfirmationButton3::accept: //ignore - return ProcessCallback::ignoreError; + return ProcessCallback::ignore; case ConfirmationButton3::acceptAll: //ignore all mainDlg_.compareStatus_->setOptionIgnoreErrors(true); - return ProcessCallback::ignoreError; + return ProcessCallback::ignore; case ConfirmationButton3::decline: //retry guardWriteLog.dismiss(); @@ -242,15 +257,15 @@ ProcessCallback::Response StatusHandlerTemporaryPanel::reportError(const std::ws return ProcessCallback::retry; case ConfirmationButton3::cancel: - userAbortProcessNow(); //throw AbortProcess + abortProcessNow(AbortTrigger::user); //throw AbortProcess break; } } else - return ProcessCallback::ignoreError; + return ProcessCallback::ignore; assert(false); - return ProcessCallback::ignoreError; //dummy return value + return ProcessCallback::ignore; //dummy return value } @@ -262,7 +277,7 @@ void StatusHandlerTemporaryPanel::reportFatalError(const std::wstring& msg) if (!mainDlg_.compareStatus_->getOptionIgnoreErrors()) { - forceUiRefreshNoThrow(); //noexcept! => don't throw here when error occurs during clean up! + forceUiUpdateNoThrow(); //noexcept! => don't throw here when error occurs during clean up! switch (showConfirmationDialog(&mainDlg_, DialogInfoType::error, PopupDialogCfg().setTitle(_("Serious Error")). @@ -277,15 +292,19 @@ void StatusHandlerTemporaryPanel::reportFatalError(const std::wstring& msg) break; case ConfirmationButton2::cancel: - userAbortProcessNow(); //throw AbortProcess + abortProcessNow(AbortTrigger::user); //throw AbortProcess break; } } } -void StatusHandlerTemporaryPanel::forceUiRefreshNoThrow() +void StatusHandlerTemporaryPanel::forceUiUpdateNoThrow() { + if (!mainDlg_.auiMgr_.GetPane(mainDlg_.compareStatus_->getAsWindow()).IsShown() && + std::chrono::steady_clock::now() > startTimeSteady_ + TEMP_PANEL_DISPLAY_DELAY) + showStatsPanel(); + mainDlg_.compareStatus_->updateGui(); } @@ -357,25 +376,25 @@ StatusHandlerFloatingDialog::Result StatusHandlerFloatingDialog::reportFinalStat else if (errorLog_.getItemCount(MSG_TYPE_WARNING) > 0) return SyncResult::finishedWarning; - if (getStatsTotal(currentPhase()) == ProgressStats()) + if (getStatsTotal() == ProgressStats()) errorLog_.logMsg(_("Nothing to synchronize"), MSG_TYPE_INFO); return SyncResult::finishedSuccess; }(); - assert(finalStatus == SyncResult::aborted || currentPhase() == PHASE_SYNCHRONIZING); + assert(finalStatus == SyncResult::aborted || currentPhase() == ProcessPhase::synchronizing); const ProcessSummary summary { startTime_, finalStatus, jobName_, - getStatsCurrent(currentPhase()), - getStatsTotal (currentPhase()), + getStatsCurrent(), + getStatsTotal (), totalTime }; //post sync command Zstring commandLine = [&] { - if (getAbortStatus() && *getAbortStatus() == AbortTrigger::USER) + if (getAbortStatus() && *getAbortStatus() == AbortTrigger::user) ; //user cancelled => don't run post sync command! else switch (postSyncCondition_) @@ -405,7 +424,7 @@ StatusHandlerFloatingDialog::Result StatusHandlerFloatingDialog::reportFinalStat try { //do NOT use tryReportingError()! saving log files should not be cancellable! - auto notifyStatusNoThrow = [&](const std::wstring& msg) { try { reportStatus(msg); /*throw AbortProcess*/ } catch (...) {} }; + auto notifyStatusNoThrow = [&](const std::wstring& msg) { try { updateStatus(msg); /*throw AbortProcess*/ } catch (...) {} }; logFilePath = saveLogFile(summary, errorLog_, altLogFolderPathPhrase, logfilesMaxAgeDays, logFilePathsToKeep, notifyStatusNoThrow); //throw FileError } catch (const FileError& e) { errorLog_.logMsg(e.toString(), MSG_TYPE_ERROR); } @@ -426,10 +445,10 @@ StatusHandlerFloatingDialog::Result StatusHandlerFloatingDialog::reportFinalStat { auto notifyStatusThrowOnCancel = [&](const std::wstring& msg) { - try { reportStatus(msg); /*throw AbortProcess*/ } + try { updateStatus(msg); /*throw AbortProcess*/ } catch (...) { - if (getAbortStatus() && *getAbortStatus() == AbortTrigger::USER) + if (getAbortStatus() && *getAbortStatus() == AbortTrigger::user) throw; } }; @@ -448,7 +467,7 @@ StatusHandlerFloatingDialog::Result StatusHandlerFloatingDialog::reportFinalStat bool autoClose = false; FinalRequest finalRequest = FinalRequest::none; - if (getAbortStatus() && *getAbortStatus() == AbortTrigger::USER) + if (getAbortStatus() && *getAbortStatus() == AbortTrigger::user) ; //user cancelled => don't run post sync command! else switch (progressDlg_->getOptionPostSyncAction()) @@ -478,7 +497,7 @@ StatusHandlerFloatingDialog::Result StatusHandlerFloatingDialog::reportFinalStat break; } - auto errorLogFinal = std::make_shared(std::move(errorLog_)); + auto errorLogFinal = makeSharedRef(std::move(errorLog_)); autoCloseDialogOut_ = //output parameter owned by SyncProgressDialog (evaluate *after* user closed the results dialog) progressDlg_->destroy(autoClose, @@ -490,19 +509,21 @@ StatusHandlerFloatingDialog::Result StatusHandlerFloatingDialog::reportFinalStat } -void StatusHandlerFloatingDialog::initNewPhase(int itemsTotal, int64_t bytesTotal, Phase phaseID) +void StatusHandlerFloatingDialog::initNewPhase(int itemsTotal, int64_t bytesTotal, ProcessPhase phaseID) { - assert(phaseID == PHASE_SYNCHRONIZING); + assert(phaseID == ProcessPhase::synchronizing); StatusHandler::initNewPhase(itemsTotal, bytesTotal, phaseID); progressDlg_->initNewPhase(); //call after "StatusHandler::initNewPhase" - forceUiRefresh(); //throw AbortProcess; OS X needs a full yield to update GUI and get rid of "dummy" texts + //macOS needs a full yield to update GUI and get rid of "dummy" texts + requestUiUpdate(true /*force*/); //throw AbortProcess } -void StatusHandlerFloatingDialog::logInfo(const std::wstring& msg) +void StatusHandlerFloatingDialog::reportInfo(const std::wstring& msg) { errorLog_.logMsg(msg, MSG_TYPE_INFO); + updateStatus(msg); //throw AbortProcess } @@ -517,7 +538,7 @@ void StatusHandlerFloatingDialog::reportWarning(const std::wstring& msg, bool& w if (!progressDlg_->getOptionIgnoreErrors()) { - forceUiRefreshNoThrow(); //noexcept! => don't throw here when error occurs during clean up! + forceUiUpdateNoThrow(); //noexcept! => don't throw here when error occurs during clean up! bool dontWarnAgain = false; switch (showConfirmationDialog(progressDlg_->getWindowIfVisible(), DialogInfoType::warning, @@ -529,7 +550,7 @@ void StatusHandlerFloatingDialog::reportWarning(const std::wstring& msg, bool& w warningActive = !dontWarnAgain; break; case ConfirmationButton::cancel: - userAbortProcessNow(); //throw AbortProcess + abortProcessNow(AbortTrigger::user); //throw AbortProcess break; } } @@ -546,27 +567,27 @@ ProcessCallback::Response StatusHandlerFloatingDialog::reportError(const std::ws { errorLog_.logMsg(msg + L"\n-> " + _("Automatic retry"), MSG_TYPE_INFO); delayAndCountDown(_("Automatic retry") + (automaticRetryCount_ <= 1 ? L"" : L" " + numberTo(retryNumber + 1) + L"/" + numberTo(automaticRetryCount_)), - automaticRetryDelay_, [&](const std::wstring& statusMsg) { this->reportStatus(_("Error") + L": " + statusMsg); }); //throw AbortProcess + automaticRetryDelay_, [&](const std::wstring& statusMsg) { this->updateStatus(_("Error") + L": " + statusMsg); }); //throw AbortProcess return ProcessCallback::retry; } //always, except for "retry": - auto guardWriteLog = zen::makeGuard([&] { errorLog_.logMsg(msg, MSG_TYPE_ERROR); }); + auto guardWriteLog = zen::makeGuard([&] { errorLog_.logMsg(msg, MSG_TYPE_ERROR); }); if (!progressDlg_->getOptionIgnoreErrors()) { - forceUiRefreshNoThrow(); //noexcept! => don't throw here when error occurs during clean up! + forceUiUpdateNoThrow(); //noexcept! => don't throw here when error occurs during clean up! switch (showConfirmationDialog(progressDlg_->getWindowIfVisible(), DialogInfoType::error, PopupDialogCfg().setDetailInstructions(msg), _("&Ignore"), _("Ignore &all"), _("&Retry"))) { case ConfirmationButton3::accept: //ignore - return ProcessCallback::ignoreError; + return ProcessCallback::ignore; case ConfirmationButton3::acceptAll: //ignore all progressDlg_->setOptionIgnoreErrors(true); - return ProcessCallback::ignoreError; + return ProcessCallback::ignore; case ConfirmationButton3::decline: //retry guardWriteLog.dismiss(); @@ -574,15 +595,15 @@ ProcessCallback::Response StatusHandlerFloatingDialog::reportError(const std::ws return ProcessCallback::retry; case ConfirmationButton3::cancel: - userAbortProcessNow(); //throw AbortProcess + abortProcessNow(AbortTrigger::user); //throw AbortProcess break; } } else - return ProcessCallback::ignoreError; + return ProcessCallback::ignore; assert(false); - return ProcessCallback::ignoreError; //dummy value + return ProcessCallback::ignore; //dummy value } @@ -594,7 +615,7 @@ void StatusHandlerFloatingDialog::reportFatalError(const std::wstring& msg) if (!progressDlg_->getOptionIgnoreErrors()) { - forceUiRefreshNoThrow(); //noexcept! => don't throw here when error occurs during clean up! + forceUiUpdateNoThrow(); //noexcept! => don't throw here when error occurs during clean up! switch (showConfirmationDialog(progressDlg_->getWindowIfVisible(), DialogInfoType::error, PopupDialogCfg().setTitle(_("Serious Error")). @@ -609,14 +630,14 @@ void StatusHandlerFloatingDialog::reportFatalError(const std::wstring& msg) break; case ConfirmationButton2::cancel: - userAbortProcessNow(); //throw AbortProcess + abortProcessNow(AbortTrigger::user); //throw AbortProcess break; } } } -void StatusHandlerFloatingDialog::updateDataProcessed(int itemsDelta, int64_t bytesDelta) +void StatusHandlerFloatingDialog::updateDataProcessed(int itemsDelta, int64_t bytesDelta) //noexcept! { StatusHandler::updateDataProcessed(itemsDelta, bytesDelta); @@ -626,7 +647,7 @@ void StatusHandlerFloatingDialog::updateDataProcessed(int itemsDelta, int64_t by } -void StatusHandlerFloatingDialog::forceUiRefreshNoThrow() +void StatusHandlerFloatingDialog::forceUiUpdateNoThrow() { progressDlg_->updateGui(); } diff --git a/FreeFileSync/Source/ui/gui_status_handler.h b/FreeFileSync/Source/ui/gui_status_handler.h index dffd1783..0a5e96b9 100644 --- a/FreeFileSync/Source/ui/gui_status_handler.h +++ b/FreeFileSync/Source/ui/gui_status_handler.h @@ -18,20 +18,20 @@ namespace fff { //classes handling sync and compare errors as well as status feedback -//StatusHandlerTemporaryPanel(CompareProgressDialog) will internally process Window messages! disable GUI controls to avoid unexpected callbacks! +//internally pumps window messages => disable GUI controls to avoid unexpected callbacks! class StatusHandlerTemporaryPanel : private wxEvtHandler, public StatusHandler { public: StatusHandlerTemporaryPanel(MainDialog& dlg, const std::chrono::system_clock::time_point& startTime, bool ignoreErrors, size_t automaticRetryCount, std::chrono::seconds automaticRetryDelay); ~StatusHandlerTemporaryPanel(); - void initNewPhase (int itemsTotal, int64_t bytesTotal, Phase phaseID) override; // - void logInfo (const std::wstring& msg) override; // - void reportWarning (const std::wstring& msg, bool& warningActive) override; //throw AbortProcess - Response reportError (const std::wstring& msg, size_t retryNumber) override; // - void reportFatalError(const std::wstring& msg) override; // + void initNewPhase (int itemsTotal, int64_t bytesTotal, ProcessPhase phaseID) override; // + void reportInfo (const std::wstring& msg) override; // + void reportWarning (const std::wstring& msg, bool& warningActive) override; //throw AbortProcess + Response reportError (const std::wstring& msg, size_t retryNumber) override; // + void reportFatalError(const std::wstring& msg) override; // - void forceUiRefreshNoThrow() override; + void forceUiUpdateNoThrow() override; struct Result { @@ -43,12 +43,15 @@ public: private: void OnKeyPressed(wxKeyEvent& event); void OnAbortCompare(wxCommandEvent& event); //handle abort button click + void showStatsPanel(); MainDialog& mainDlg_; zen::ErrorLog errorLog_; + const bool ignoreErrors_; const size_t automaticRetryCount_; const std::chrono::seconds automaticRetryDelay_; const std::chrono::system_clock::time_point startTime_; + const std::chrono::steady_clock::time_point startTimeSteady_ = std::chrono::steady_clock::now(); }; @@ -68,14 +71,14 @@ public: bool& autoCloseDialog); //noexcept! ~StatusHandlerFloatingDialog(); - void initNewPhase (int itemsTotal, int64_t bytesTotal, Phase phaseID) override; // - void logInfo (const std::wstring& msg) override; // - void reportWarning (const std::wstring& msg, bool& warningActive) override; //throw AbortProcess - Response reportError (const std::wstring& msg, size_t retryNumber) override; // - void reportFatalError(const std::wstring& msg) override; // + void initNewPhase (int itemsTotal, int64_t bytesTotal, ProcessPhase phaseID) override; // + void reportInfo (const std::wstring& msg) override; // + void reportWarning (const std::wstring& msg, bool& warningActive) override; //throw AbortProcess + Response reportError (const std::wstring& msg, size_t retryNumber) override; // + void reportFatalError(const std::wstring& msg) override; // void updateDataProcessed(int itemsDelta, int64_t bytesDelta) override; //noexcept!! - void forceUiRefreshNoThrow() override; // + void forceUiUpdateNoThrow() override; // enum class FinalRequest { @@ -86,7 +89,7 @@ public: struct Result { ProcessSummary summary; - std::shared_ptr errorLog; + zen::SharedRef errorLog; FinalRequest finalRequest; AbstractPath logFilePath; }; diff --git a/FreeFileSync/Source/ui/log_panel.cpp b/FreeFileSync/Source/ui/log_panel.cpp index c0504291..8e770d43 100644 --- a/FreeFileSync/Source/ui/log_panel.cpp +++ b/FreeFileSync/Source/ui/log_panel.cpp @@ -24,7 +24,8 @@ inline wxColor getColorGridLine() { return { 192, 192, 192 }; } //light grey inline wxBitmap getImageButtonPressed(const wchar_t* name) { - return layOver(getResourceImage(L"msg_button_pressed"), getResourceImage(name)); + return layOver(getResourceImage(L"msg_button_pressed").ConvertToImage(), + getResourceImage(name).ConvertToImage()); } @@ -40,11 +41,11 @@ wxBitmap getImageButtonReleased(const wchar_t* name) } -enum class ColumnTypeMsg +enum class ColumnTypeLog { - TIME, - CATEGORY, - TEXT, + time, + category, + text, }; } @@ -53,7 +54,7 @@ enum class ColumnTypeMsg class fff::MessageView { public: - MessageView(const std::shared_ptr& log /*bound*/) : log_(log) {} + MessageView(const SharedRef& log) : log_(log) {} size_t rowsOnView() const { return viewRef_.size(); } @@ -85,7 +86,7 @@ public: { viewRef_.clear(); - for (auto it = log_->begin(); it != log_->end(); ++it) + for (auto it = log_.ref().begin(); it != log_.ref().end(); ++it) if (it->type & includedTypes) { static_assert(std::is_same_v, wchar_t>); @@ -142,7 +143,7 @@ private: /* /|\ | updateView() | */ - const std::shared_ptr log_; + const SharedRef log_; }; //----------------------------------------------------------------------------- @@ -152,7 +153,7 @@ namespace class GridDataMessages : public GridData { public: - GridDataMessages(const std::shared_ptr& log /*bound!*/) : msgView_(log) {} + GridDataMessages(const SharedRef& log) : msgView_(log) {} MessageView& getDataView() { return msgView_; } @@ -161,14 +162,14 @@ public: std::wstring getValue(size_t row, ColumnType colType) const override { if (std::optional entry = msgView_.getEntry(row)) - switch (static_cast(colType)) + switch (static_cast(colType)) { - case ColumnTypeMsg::TIME: + case ColumnTypeLog::time: if (entry->firstLine) return formatTime(FORMAT_TIME, getLocalTime(entry->time)); break; - case ColumnTypeMsg::CATEGORY: + case ColumnTypeLog::category: if (entry->firstLine) switch (entry->type) { @@ -183,7 +184,7 @@ public: } break; - case ColumnTypeMsg::TEXT: + case ColumnTypeLog::text: return copyStringTo(entry->messageLine); } return std::wstring(); @@ -212,13 +213,13 @@ public: //-------------------------------------------------------- if (std::optional entry = msgView_.getEntry(row)) - switch (static_cast(colType)) + switch (static_cast(colType)) { - case ColumnTypeMsg::TIME: + case ColumnTypeLog::time: drawCellText(dc, rectTmp, getValue(row, colType), wxALIGN_CENTER); break; - case ColumnTypeMsg::CATEGORY: + case ColumnTypeLog::category: if (entry->firstLine) { wxBitmap msgTypeIcon = [&] @@ -240,7 +241,7 @@ public: } break; - case ColumnTypeMsg::TEXT: + case ColumnTypeLog::text: rectTmp.x += getColumnGapLeft(); rectTmp.width -= getColumnGapLeft(); drawCellText(dc, rectTmp, getValue(row, colType)); @@ -258,15 +259,15 @@ public: // -> synchronize renderCell() <-> getBestSize() if (msgView_.getEntry(row)) - switch (static_cast(colType)) + switch (static_cast(colType)) { - case ColumnTypeMsg::TIME: + case ColumnTypeLog::time: return 2 * getColumnGapLeft() + dc.GetTextExtent(getValue(row, colType)).GetWidth(); - case ColumnTypeMsg::CATEGORY: + case ColumnTypeLog::category: return getResourceImage(L"msg_info_sicon").GetWidth(); - case ColumnTypeMsg::TEXT: + case ColumnTypeLog::text: return getColumnGapLeft() + dc.GetTextExtent(getValue(row, colType)).GetWidth(); } return 0; @@ -291,13 +292,13 @@ public: std::wstring getToolTip(size_t row, ColumnType colType) const override { - switch (static_cast(colType)) + switch (static_cast(colType)) { - case ColumnTypeMsg::TIME: - case ColumnTypeMsg::TEXT: + case ColumnTypeLog::time: + case ColumnTypeLog::text: break; - case ColumnTypeMsg::CATEGORY: + case ColumnTypeLog::category: return getValue(row, colType); } return std::wstring(); @@ -312,19 +313,49 @@ private: //######################################################################################## +LogPanel::LogPanel(wxWindow* parent) : LogPanelGenerated(parent) +{ + const int rowHeight = GridDataMessages::getRowDefaultHeight(*m_gridMessages); + const int colMsgTimeWidth = GridDataMessages::getColumnTimeDefaultWidth(*m_gridMessages); + const int colMsgCategoryWidth = GridDataMessages::getColumnCategoryDefaultWidth(); + + m_gridMessages->setColumnLabelHeight(0); + m_gridMessages->showRowLabel(false); + m_gridMessages->setRowHeight(rowHeight); + m_gridMessages->setColumnConfig( + { + { static_cast(ColumnTypeLog::time ), colMsgTimeWidth, 0, true }, + { static_cast(ColumnTypeLog::category), colMsgCategoryWidth, 0, true }, + { static_cast(ColumnTypeLog::text ), -colMsgTimeWidth - colMsgCategoryWidth, 1, true }, + }); + + //support for CTRL + C + m_gridMessages->getMainWin().Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(LogPanel::onGridButtonEvent), nullptr, this); + + m_gridMessages->Connect(EVENT_GRID_MOUSE_RIGHT_UP, GridClickEventHandler(LogPanel::onMsgGridContext), nullptr, this); + + //enable dialog-specific key events + Connect(wxEVT_CHAR_HOOK, wxKeyEventHandler(LogPanel::onLocalKeyEvent), nullptr, this); + + setLog(nullptr); +} + + void LogPanel::setLog(const std::shared_ptr& log) { - std::shared_ptr newLog = log; - if (!newLog) + SharedRef newLog = [&] { - auto placeHolderLog = std::make_shared(); - placeHolderLog->logMsg(_("No log entries"), MSG_TYPE_INFO); - newLog = placeHolderLog; - } + if (log) + return SharedRef(log); + + ErrorLog dummyLog; + dummyLog.logMsg(_("No log entries"), MSG_TYPE_INFO); + return makeSharedRef(std::move(dummyLog)); + }(); - const int errorCount = newLog->getItemCount(MSG_TYPE_ERROR | MSG_TYPE_FATAL_ERROR); - const int warningCount = newLog->getItemCount(MSG_TYPE_WARNING); - const int infoCount = newLog->getItemCount(MSG_TYPE_INFO); + const int errorCount = newLog.ref().getItemCount(MSG_TYPE_ERROR | MSG_TYPE_FATAL_ERROR); + const int warningCount = newLog.ref().getItemCount(MSG_TYPE_WARNING); + const int infoCount = newLog.ref().getItemCount(MSG_TYPE_INFO); auto initButton = [](ToggleButton& btn, const wchar_t* imgName, const wxString& tooltip) { @@ -344,29 +375,7 @@ void LogPanel::setLog(const std::shared_ptr& log) m_bpButtonWarnings->Show(warningCount != 0); m_bpButtonInfo ->Show(infoCount != 0); - //init grid, determine default sizes - const int rowHeight = GridDataMessages::getRowDefaultHeight(*m_gridMessages); - const int colMsgTimeWidth = GridDataMessages::getColumnTimeDefaultWidth(*m_gridMessages); - const int colMsgCategoryWidth = GridDataMessages::getColumnCategoryDefaultWidth(); - m_gridMessages->setDataProvider(std::make_shared(newLog)); - m_gridMessages->setColumnLabelHeight(0); - m_gridMessages->showRowLabel(false); - m_gridMessages->setRowHeight(rowHeight); - m_gridMessages->setColumnConfig( - { - { static_cast(ColumnTypeMsg::TIME ), colMsgTimeWidth, 0, true }, - { static_cast(ColumnTypeMsg::CATEGORY), colMsgCategoryWidth, 0, true }, - { static_cast(ColumnTypeMsg::TEXT ), -colMsgTimeWidth - colMsgCategoryWidth, 1, true }, - }); - - //support for CTRL + C - m_gridMessages->getMainWin().Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(LogPanel::onGridButtonEvent), nullptr, this); - - m_gridMessages->Connect(EVENT_GRID_MOUSE_RIGHT_UP, GridClickEventHandler(LogPanel::onMsgGridContext), nullptr, this); - - //enable dialog-specific key events - Connect(wxEVT_CHAR_HOOK, wxKeyEventHandler(LogPanel::onLocalKeyEvent), nullptr, this); updateGrid(); } @@ -394,7 +403,7 @@ void LogPanel::updateGrid() includedTypes |= MSG_TYPE_INFO; getDataView().updateView(includedTypes); //update MVC "model" - m_gridMessages->Refresh(); //update MVC "view" + m_gridMessages->Refresh(); //update MVC "view" } void LogPanel::OnErrors(wxCommandEvent& event) @@ -536,7 +545,7 @@ void LogPanel::copySelectionToClipboard() if (auto prov = m_gridMessages->getDataProvider()) { std::vector colAttr = m_gridMessages->getColumnConfig(); - eraseIf(colAttr, [](const Grid::ColAttributes& ca) { return !ca.visible; }); + std::erase_if(colAttr, [](const Grid::ColAttributes& ca) { return !ca.visible; }); if (!colAttr.empty()) for (size_t row : m_gridMessages->getSelectedRows()) { diff --git a/FreeFileSync/Source/ui/log_panel.h b/FreeFileSync/Source/ui/log_panel.h index 47f9a84a..f92b0e48 100644 --- a/FreeFileSync/Source/ui/log_panel.h +++ b/FreeFileSync/Source/ui/log_panel.h @@ -19,7 +19,7 @@ class MessageView; class LogPanel : public LogPanelGenerated { public: - LogPanel(wxWindow* parent) : LogPanelGenerated(parent) { setLog(nullptr); } + LogPanel(wxWindow* parent); void setLog(const std::shared_ptr& log); diff --git a/FreeFileSync/Source/ui/main_dlg.cpp b/FreeFileSync/Source/ui/main_dlg.cpp index 1c327b25..b77a2a7e 100644 --- a/FreeFileSync/Source/ui/main_dlg.cpp +++ b/FreeFileSync/Source/ui/main_dlg.cpp @@ -86,6 +86,8 @@ bool acceptDialogFileDrop(const std::vector& shellItemPaths) equalAsciiNoCase(ext, Zstr("ffs_batch")); }); } + + } //------------------------------------------------------------------ @@ -248,11 +250,9 @@ void updateTopButton(wxBitmapButton& btn, const wxBitmap& bmp, const wxString& v stackImages(iconImage, descrImage, ImageStackLayout::HORIZONTAL, ImageStackAlignment::CENTER, fastFromDIP(5)) : stackImages(descrImage, iconImage, ImageStackLayout::HORIZONTAL, ImageStackAlignment::CENTER, fastFromDIP(5)); - //SetMinSize() instead of SetSize() is needed here for wxWindows layout determination to work correctly - wxSize minSize = dynImage.GetSize() + wxSize(fastFromDIP(16), fastFromDIP(16)); //add border space - minSize.x = std::max(minSize.x, fastFromDIP(TOP_BUTTON_OPTIMAL_WIDTH_DIP)); - - btn.SetMinSize(minSize); + wxSize btnSize = dynImage.GetSize() + wxSize(fastFromDIP(16), fastFromDIP(16)); //add border space + btnSize.x = std::max(btnSize.x, fastFromDIP(TOP_BUTTON_OPTIMAL_WIDTH_DIP)); + dynImage.Resize(btnSize, wxPoint() + (btnSize - dynImage.GetSize()) / 2); setImage(btn, wxBitmap(dynImage)); } @@ -316,7 +316,7 @@ void MainDialog::create(const Zstring& globalConfigFilePath) const Zstring lastRunConfigFilePath = getLastRunConfigPath(); if (fileAvailable(lastRunConfigFilePath)) //3. try to load auto-save config (should not block) cfgFilePaths.push_back(lastRunConfigFilePath); - //else: not-existing/access error? => user may click on later + //else: not-existing/access error? => user may click on [Last session] later } XmlGuiConfig guiCfg; //contains default values @@ -381,8 +381,8 @@ MainDialog::MainDialog(const Zstring& globalConfigFilePath, MainDialogGenerated(nullptr), globalConfigFilePath_(globalConfigFilePath) { - m_folderPathLeft ->init(folderHistoryLeft_ .ptr()); - m_folderPathRight->init(folderHistoryRight_.ptr()); + m_folderPathLeft ->init(folderHistoryLeft_ ); + m_folderPathRight->init(folderHistoryRight_); //setup sash: detach + reparent: m_splitterMain->SetSizer(nullptr); //alas wxFormbuilder doesn't allow us to have child windows without a sizer, so we have to remove it here @@ -396,28 +396,69 @@ MainDialog::MainDialog(const Zstring& globalConfigFilePath, //set icons for this dialog SetIcon(getFfsIcon()); //set application icon + auto generateSaveAsImage = [](const wxString& layoverName) + { + wxImage backImg = getResourceImage(L"file_save").ConvertToImage(); + const wxSize oldSize = backImg.GetSize(); + + backImg = shrinkImage(backImg, backImg.GetWidth() * 9 / 10); + backImg.Resize(oldSize, wxPoint(0, oldSize.GetHeight() - backImg.GetHeight())); + + return layOver(backImg, shrinkImage(getResourceImage(layoverName).ConvertToImage(), backImg.GetWidth() * 7 / 10), wxALIGN_TOP | wxALIGN_RIGHT); + }; + m_bpButtonCmpConfig ->SetBitmapLabel(getResourceImage(L"cfg_compare")); m_bpButtonSyncConfig->SetBitmapLabel(getResourceImage(L"cfg_sync")); m_bpButtonCmpContext ->SetBitmapLabel(mirrorIfRtl(getResourceImage(L"button_arrow_right"))); m_bpButtonFilterContext->SetBitmapLabel(mirrorIfRtl(getResourceImage(L"button_arrow_right"))); m_bpButtonSyncContext ->SetBitmapLabel(mirrorIfRtl(getResourceImage(L"button_arrow_right"))); + m_bpButtonViewContext ->SetBitmapLabel(mirrorIfRtl(getResourceImage(L"button_arrow_right"))); m_bpButtonNew ->SetBitmapLabel(getResourceImage(L"file_new")); m_bpButtonOpen ->SetBitmapLabel(getResourceImage(L"file_load")); - m_bpButtonSaveAs ->SetBitmapLabel(getResourceImage(L"file_sync")); - m_bpButtonSaveAsBatch->SetBitmapLabel(getResourceImage(L"file_batch")); + m_bpButtonSaveAs ->SetBitmapLabel(generateSaveAsImage(L"file_sync")); + m_bpButtonSaveAsBatch->SetBitmapLabel(generateSaveAsImage(L"file_batch")); m_bpButtonAddPair ->SetBitmapLabel(getResourceImage(L"item_add")); m_bpButtonHideSearch ->SetBitmapLabel(getResourceImage(L"close_panel")); m_bpButtonShowLog ->SetBitmapLabel(getResourceImage(L"log_file")); - m_bpButtonViewFilterSave->SetBitmapLabel(getResourceImage(L"file_save_sicon")); - m_bpButtonFilter ->SetMinSize(wxSize(getResourceImage(L"cfg_filter").GetWidth() + fastFromDIP(27), -1)); //make the filter button wider m_textCtrlSearchTxt->SetMinSize(wxSize(fastFromDIP(220), -1)); - initViewFilterButtons(); + //---------------------------------------------------------------------------------------- + wxImage labelImage = createImageFromText(_("Select view:"), m_bpButtonViewTypeSyncAction->GetFont(), wxSystemSettings::GetColour(wxSYS_COLOUR_BTNTEXT)); + + const wxSize labelSize = labelImage.GetSize() + wxSize(fastFromDIP(10), 0); //add border space + labelImage.Resize(labelSize, wxPoint() + (labelSize - labelImage.GetSize()) / 2); + + auto generateViewTypeImage = [&](const wxString& imgName) + { + return stackImages(labelImage, mirrorIfRtl(getResourceImage(imgName).ConvertToImage()), ImageStackLayout::VERTICAL, ImageStackAlignment::CENTER); + }; + m_bpButtonViewTypeSyncAction->init(generateViewTypeImage(L"viewtype_sync_action"), + generateViewTypeImage(L"viewtype_cmp_result")); + //tooltip is updated dynamically in setViewTypeSyncAction() + //---------------------------------------------------------------------------------------- + m_bpButtonShowExcluded ->SetToolTip(_("Show filtered or temporarily excluded files")); + m_bpButtonShowEqual ->SetToolTip(_("Show files that are equal")); + m_bpButtonShowConflict ->SetToolTip(_("Show conflicts")); + + m_bpButtonShowCreateLeft ->SetToolTip(_("Show files that will be created on the left side")); + m_bpButtonShowCreateRight->SetToolTip(_("Show files that will be created on the right side")); + m_bpButtonShowDeleteLeft ->SetToolTip(_("Show files that will be deleted on the left side")); + m_bpButtonShowDeleteRight->SetToolTip(_("Show files that will be deleted on the right side")); + m_bpButtonShowUpdateLeft ->SetToolTip(_("Show files that will be updated on the left side")); + m_bpButtonShowUpdateRight->SetToolTip(_("Show files that will be updated on the right side")); + m_bpButtonShowDoNothing ->SetToolTip(_("Show files that won't be copied")); + + m_bpButtonShowLeftOnly ->SetToolTip(_("Show files that exist on left side only")); + m_bpButtonShowRightOnly ->SetToolTip(_("Show files that exist on right side only")); + m_bpButtonShowLeftNewer ->SetToolTip(_("Show files that are newer on left")); + m_bpButtonShowRightNewer->SetToolTip(_("Show files that are newer on right")); + m_bpButtonShowDifferent ->SetToolTip(_("Show files that are different")); + //---------------------------------------------------------------------------------------- const wxBitmap& bmpFile = IconBuffer::genericFileIcon(IconBuffer::SIZE_SMALL); const wxBitmap& bmpDir = IconBuffer::genericDirIcon (IconBuffer::SIZE_SMALL); @@ -459,7 +500,7 @@ MainDialog::MainDialog(const Zstring& globalConfigFilePath, } }); - compareStatus_ = std::make_unique(*this); //integrate the compare status panel (in hidden state) + compareStatus_ = std::make_unique(*this); //integrate the compare status panel (in hidden state) //caption required for all panes that can be manipulated by the users => used by context menu auiMgr_.AddPane(m_panelCenter, @@ -808,19 +849,19 @@ MainDialog::MainDialog(const Zstring& globalConfigFilePath, MainDialog::~MainDialog() { std::optional firstError; - try //save "GlobalSettings.xml" + try //save "LastRun.ffs_gui" { - writeConfig(getGlobalCfgBeforeExit(), globalConfigFilePath_); //throw FileError + writeConfig(getConfig(), lastRunConfigPath_); //throw FileError } catch (const FileError& e) { if (!firstError) firstError = e; } - try //save "LastRun.ffs_gui" + try //save "GlobalSettings.xml" { - writeConfig(getConfig(), lastRunConfigPath_); //throw FileError + writeConfig(getGlobalCfgBeforeExit(), globalConfigFilePath_); //throw FileError } catch (const FileError& e) { if (!firstError) firstError = e; } - //don't annoy users on read-only drives: it's enough to show a single error message when saving global config + //don't annoy users on read-only drives: it's enough to show a single error message if (firstError) showNotificationDialog(this, DialogInfoType::error, PopupDialogCfg().setDetailInstructions(firstError->toString())); @@ -974,8 +1015,9 @@ void MainDialog::setGlobalCfgOnInit(const XmlGlobalSettings& globalSettings) //compare progress dialog minimum sizes are layout-dependent + can't be changed by user => don't load stale values from config wxAuiPaneInfo& progPane = auiMgr_.GetPane(compareStatus_->getAsWindow()); - const wxSize progPaneMinSizeOrig = progPane.min_size; - const wxSize progPaneBestSizeOrig = progPane.best_size; + wxAuiPaneInfo& viewPane = auiMgr_.GetPane(m_panelViewFilter); //same goes for view filter + const std::pair progPaneSizeOrig(progPane.min_size, progPane.best_size); + const std::pair viewPaneSizeOrig(viewPane.min_size, viewPane.best_size); auiMgr_.LoadPerspective(globalSettings.gui.mainDlg.guiPerspectiveLast); @@ -983,8 +1025,8 @@ void MainDialog::setGlobalCfgOnInit(const XmlGlobalSettings& globalSettings) for (const auto& [paneInfo, caption] : paneCaptions) paneInfo->Caption(caption); - progPane.min_size = progPaneMinSizeOrig; - progPane.best_size = progPaneBestSizeOrig; + std::tie(progPane.min_size, progPane.best_size) = progPaneSizeOrig; + std::tie(viewPane.min_size, viewPane.best_size) = viewPaneSizeOrig; //-------------------------------------------------------------------------------- //if MainDialog::onQueryEndSession() is called while comparison is active, this panel is saved and restored as "visible" @@ -1021,13 +1063,24 @@ XmlGlobalSettings MainDialog::getGlobalCfgBeforeExit() //-------------------------------------------------------------------------------- //write list of configuration files - std::vector cfgHistory = cfggrid::getDataView(*m_gridCfgHistory).get(); + std::vector cfgHistory + { + //make sure [Last session] is always part of history list + ConfigFileItem(lastRunConfigPath_, 0 /*syncTime*/, getNullPath() /*logPath*/, SyncResult::aborted, + wxColor(0xdd, 0xdd, 0xdd) /* light grey from onCfgGridContext()*/) + }; - if (cfgHistory.size() > globalSettings.gui.mainDlg.cfgHistItemsMax) //erase oldest elements - cfgHistory.resize(globalSettings.gui.mainDlg.cfgHistItemsMax); + for (const ConfigFileItem& item : cfggrid::getDataView(*m_gridCfgHistory).get()) + if (equalNativePath(item.cfgFilePath, lastRunConfigPath_)) + cfgHistory[0] = item; //preserve users's background color choice + else + cfgHistory.push_back(item); - globalSettings.gui.mainDlg.cfgFileHistory = cfgHistory; + //trim excess elements (oldest first) + if (cfgHistory.size() > globalSettings.gui.mainDlg.cfgHistItemsMax) + cfgHistory.resize(globalSettings.gui.mainDlg.cfgHistItemsMax); + globalSettings.gui.mainDlg.cfgFileHistory = std::move(cfgHistory); globalSettings.gui.mainDlg.cfgGridTopRowPos = m_gridCfgHistory->getTopRow(); globalSettings.gui.mainDlg.cfgGridColumnAttribs = convertColAttributes(m_gridCfgHistory->getColumnConfig()); globalSettings.gui.mainDlg.cfgGridSyncOverdueDays = cfggrid::getSyncOverdueDays(*m_gridCfgHistory); @@ -1187,7 +1240,7 @@ void MainDialog::copySelectionToClipboard(const std::vector& gridRe if (auto prov = grid->getDataProvider()) { std::vector colAttr = grid->getColumnConfig(); - eraseIf(colAttr, [](const Grid::ColAttributes& ca) { return !ca.visible; }); + std::erase_if(colAttr, [](const Grid::ColAttributes& ca) { return !ca.visible; }); if (!colAttr.empty()) for (size_t row : grid->getSelectedRows()) { @@ -1281,9 +1334,8 @@ void MainDialog::copyToAlternateFolder(const std::vector& sel ZEN_ON_SCOPE_EXIT(app->Yield(); enableAllElements()); //ui update before enabling buttons again: prevent strange behaviour of delayed button clicks const auto& guiCfg = getConfig(); - const std::chrono::system_clock::time_point startTime = std::chrono::system_clock::now(); - StatusHandlerTemporaryPanel statusHandler(*this, startTime, + StatusHandlerTemporaryPanel statusHandler(*this, std::chrono::system_clock::now() /*startTime*/, false /*ignoreErrors*/, guiCfg.mainCfg.automaticRetryCount, guiCfg.mainCfg.automaticRetryDelay); //handle status display and error messages @@ -1325,20 +1377,17 @@ void MainDialog::deleteSelectedFiles(const std::vector& selec auto app = wxTheApp; //fix lambda/wxWigets/VC fuck up ZEN_ON_SCOPE_EXIT(app->Yield(); enableAllElements()); //ui update before enabling buttons again: prevent strange behaviour of delayed button clicks - const auto& guiCfg = getConfig(); - const std::chrono::system_clock::time_point startTime = std::chrono::system_clock::now(); - //wxBusyCursor dummy; -> redundant: progress already shown in status bar! + const auto& guiCfg = getConfig(); - StatusHandlerTemporaryPanel statusHandler(*this, startTime, + StatusHandlerTemporaryPanel statusHandler(*this, std::chrono::system_clock::now() /*startTime*/, false /*ignoreErrors*/, guiCfg.mainCfg.automaticRetryCount, guiCfg.mainCfg.automaticRetryDelay); //handle status display and error messages try { deleteFromGridAndHD(selectionLeft, selectionRight, - folderCmp_, - extractDirectionCfg(getConfig().mainCfg), + extractDirectionCfg(folderCmp_, getConfig().mainCfg), moveToRecycler, globalCfg_.warnDlgs.warnRecyclerMissing, statusHandler); //throw AbortProcess @@ -1533,16 +1582,15 @@ void MainDialog::openExternalApplication(const Zstring& commandLinePhrase, bool //##################### create temporary files for non-native paths ###################### if (!nonNativeFiles.empty()) { - const auto& guiCfg = getConfig(); - const std::chrono::system_clock::time_point startTime = std::chrono::system_clock::now(); - FocusPreserver fp; disableAllElements(true /*enableAbort*/); //StatusHandlerTemporaryPanel will internally process Window messages, so avoid unexpected callbacks! auto app = wxTheApp; //fix lambda/wxWigets/VC fuck up ZEN_ON_SCOPE_EXIT(app->Yield(); enableAllElements()); //ui update before enabling buttons again: prevent strange behaviour of delayed button clicks - StatusHandlerTemporaryPanel statusHandler(*this, startTime, + const auto& guiCfg = getConfig(); + + StatusHandlerTemporaryPanel statusHandler(*this, std::chrono::system_clock::now() /*startTime*/, false /*ignoreErrors*/, guiCfg.mainCfg.automaticRetryCount, guiCfg.mainCfg.automaticRetryDelay); //handle status display and error messages @@ -1607,7 +1655,7 @@ void MainDialog::flashStatusInformation(const wxString& text) } } }; - guiQueue_.processAsync([] { std::this_thread::sleep_for(std::chrono::milliseconds(2500)); }, restoreStatusInformation); + guiQueue_.processAsync([] { std::this_thread::sleep_for(std::chrono::seconds(3)); }, restoreStatusInformation); } @@ -2593,7 +2641,7 @@ void MainDialog::onOpenMenuTools(wxMenuEvent& event) //each layout menu item is either shown and owned by m_menuTools OR detached from m_menuTools and owned by detachedMenuItems_: auto filterLayoutItems = [&](wxMenuItem* menuItem, wxWindow* panelWindow) { - if (detachedMenuItems_.find(menuItem) == detachedMenuItems_.end()) + if (!contains(detachedMenuItems_, menuItem)) detachedMenuItems_.insert(m_menuTools->Remove(menuItem)); //pass ownership wxAuiPaneInfo& paneInfo = this->auiMgr_.GetPane(panelWindow); @@ -2676,13 +2724,13 @@ void MainDialog::OnCompSettingsContext(wxEvent& event) const wxBitmap iconGrey = greyScale(iconNormal); menu.addItem(getVariantName(cmpVar), [&setVariant, cmpVar] { setVariant(cmpVar); }, activeCmpVar == cmpVar ? &iconNormal : &iconGrey); }; - addVariantItem(CompareVariant::TIME_SIZE, L"cmp_file_time_sicon"); - addVariantItem(CompareVariant::CONTENT, L"cmp_file_content_sicon"); - addVariantItem(CompareVariant::SIZE, L"cmp_file_size_sicon"); + addVariantItem(CompareVariant::timeSize, L"cmp_file_time_sicon"); + addVariantItem(CompareVariant::content, L"cmp_file_content_sicon"); + addVariantItem(CompareVariant::size, L"cmp_file_size_sicon"); - //menu.addRadio(getVariantName(CompareVariant::TIME_SIZE), [&] { setVariant(CompareVariant::TIME_SIZE); }, activeCmpVar == CompareVariant::TIME_SIZE); - //menu.addRadio(getVariantName(CompareVariant::CONTENT ), [&] { setVariant(CompareVariant::CONTENT); }, activeCmpVar == CompareVariant::CONTENT); - //menu.addRadio(getVariantName(CompareVariant::SIZE ), [&] { setVariant(CompareVariant::SIZE); }, activeCmpVar == CompareVariant::SIZE); + //menu.addRadio(getVariantName(CompareVariant::timeSize), [&] { setVariant(CompareVariant::timeSize); }, activeCmpVar == CompareVariant::timeSize); + //menu.addRadio(getVariantName(CompareVariant::content ), [&] { setVariant(CompareVariant::content); }, activeCmpVar == CompareVariant::content); + //menu.addRadio(getVariantName(CompareVariant::size ), [&] { setVariant(CompareVariant::size); }, activeCmpVar == CompareVariant::size); menu.popup(*m_bpButtonCmpContext, { m_bpButtonCmpContext->GetSize().x, 0 }); } @@ -3033,7 +3081,7 @@ bool MainDialog::saveOldConfig() //return false on user abort } } //user doesn't save changes => - //discard current reference file(s), this ensures next app start will load instead of the original non-modified config selection + //discard current reference file(s), this ensures next app start will load [Last session] instead of the original non-modified config selection setLastUsedConfig(guiCfg, {} /*cfgFilePaths*/); //this seems to make theoretical sense also: the job of this function is to make sure, current (volatile) config and reference file name are in sync // => if user does not save cfg, it is not attached to a physical file anymore! @@ -3261,10 +3309,51 @@ void MainDialog::onCfgGridKeyEvent(wxKeyEvent& event) void MainDialog::onCfgGridContext(GridClickEvent& event) { ContextMenu menu; - //-------------------------------------------------------------------------------------------------------- const std::vector selectedRows = m_gridCfgHistory->getSelectedRows(); - menu.addItem(_("&Rename...") + L"\tF2", [this] { renameSelectedCfgHistoryItem (); }, nullptr, !selectedRows.empty()); + //-------------------------------------------------------------------------------------------------------- + menu.addItem(_("&Rename...") + L"\tF2", [this] { renameSelectedCfgHistoryItem (); }, nullptr, !selectedRows.empty()); + //-------------------------------------------------------------------------------------------------------- + ContextMenu submenu; + + auto addColorOption = [&](const wxColor& col, const wxString& name) + { + auto applyBackColor = [this, col, &selectedRows] + { + std::vector filePaths; + for (size_t row : selectedRows) + if (const ConfigView::Details* cfg = cfggrid::getDataView(*m_gridCfgHistory).getItem(row)) + filePaths.push_back(cfg->cfgItem.cfgFilePath); + else + assert(false); + + cfggrid::getDataView(*m_gridCfgHistory).setBackColor(filePaths, col); + + //re-apply selection (after sorting by color tags): + cfggrid::addAndSelect(*m_gridCfgHistory, activeConfigFiles_, false /*scrollToSelection*/); + //m_gridCfgHistory->Refresh(); <- implicit in last call + }; + + wxBitmap bmpSquare(this->GetCharHeight(), this->GetCharHeight()); //seems we don't need to pass 24-bit depth here even for high-contrast color schemes + { + wxMemoryDC dc(bmpSquare); + dc.SetBrush(!col.Ok() ? wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW) : col); + dc.SetPen(wxColor(0xdd, 0xdd, 0xdd)); //light grey + dc.DrawRectangle(wxPoint(), bmpSquare.GetSize()); + } + submenu.addItem(name, applyBackColor, &bmpSquare, !selectedRows.empty()); + }; + addColorOption(wxNullColour, L"(" + _("&Default") + L")"); //meta options should be enclosed in parentheses + addColorOption({ 0xff, 0xd8, 0xcb }, _("Red")); + addColorOption({ 0xff, 0xf9, 0x99 }, _("Yellow")); + addColorOption({ 0xcc, 0xff, 0x99 }, _("Green")); + addColorOption({ 0xcc, 0xff, 0xff }, _("Cyan")); + addColorOption({ 0xcc, 0xcc, 0xff }, _("Blue")); + addColorOption({ 0xf2, 0xcb, 0xff }, _("Purple")); + addColorOption({ 0xdd, 0xdd, 0xdd }, _("Grey")); + + menu.addSubmenu(_("Background color"), submenu, &getResourceImage(L"color_sicon"), !selectedRows.empty()); + //-------------------------------------------------------------------------------------------------------- menu.addItem(_("Hide configuration") + L"\tDel", [this] { deleteSelectedCfgHistoryItems(); }, nullptr, !selectedRows.empty()); //-------------------------------------------------------------------------------------------------------- menu.popup(*m_gridCfgHistory, event.mousePos_); @@ -3284,7 +3373,7 @@ void MainDialog::onCfgGridLabelContext(GridLabelClickEvent& event) Grid::ColAttributes* caToggle = nullptr; for (Grid::ColAttributes& ca : colAttr) - if (ca.type == static_cast(ColumnTypeCfg::NAME)) + if (ca.type == static_cast(ColumnTypeCfg::name)) caName = &ca; else if (ca.type == ct) caToggle = &ca; @@ -3306,7 +3395,7 @@ void MainDialog::onCfgGridLabelContext(GridLabelClickEvent& event) if (auto prov = m_gridCfgHistory->getDataProvider()) for (const Grid::ColAttributes& ca : m_gridCfgHistory->getColumnConfig()) menu.addCheckBox(prov->getColumnLabel(ca.type), [ct = ca.type, toggleColumn] { toggleColumn(ct); }, - ca.visible, ca.type != static_cast(ColumnTypeCfg::NAME)); //do not allow user to hide name column! + ca.visible, ca.type != static_cast(ColumnTypeCfg::name)); //do not allow user to hide name column! else assert(false); //-------------------------------------------------------------------------------------------------------- menu.addSeparator(); @@ -3340,9 +3429,9 @@ void MainDialog::onCfgGridLabelLeftClick(GridLabelClickEvent& event) const auto colType = static_cast(event.colType_); bool sortAscending = getDefaultSortDirection(colType); - const auto sortInfo = cfggrid::getDataView(*m_gridCfgHistory).getSortDirection(); - if (sortInfo.first == colType) - sortAscending = !sortInfo.second; + const auto [sortCol, ascending] = cfggrid::getDataView(*m_gridCfgHistory).getSortDirection(); + if (sortCol == colType) + sortAscending = !ascending; cfggrid::getDataView(*m_gridCfgHistory).setSortDirection(colType, sortAscending); m_gridCfgHistory->Refresh(); @@ -3627,60 +3716,6 @@ void MainDialog::OnToggleViewButton(wxCommandEvent& event) } -inline -wxBitmap buttonPressed(const wchar_t* name) -{ - wxBitmap background = getResourceImage(L"button_pressed"); - return mirrorIfRtl(layOver(background, getResourceImage(name))); -} - - -inline -wxBitmap buttonReleased(const wchar_t* name) -{ - wxImage output = getResourceImage(name).ConvertToImage().ConvertToGreyscale(1.0/3, 1.0/3, 1.0/3); //treat all channels equally! - //moveImage(output, 1, 0); //move image right one pixel - - //enlarge (needed for m_bpButtonShowExcluded) - const wxSize diff = getResourceImage(L"button_pressed").GetSize() - output.GetSize(); - if (diff != wxSize()) - output.Resize(diff + output.GetSize(), wxPoint(diff.x, diff.y) / 2); - - brighten(output, 80); - return mirrorIfRtl(output); -} - - -void MainDialog::initViewFilterButtons() -{ - m_bpButtonViewTypeSyncAction->init(mirrorIfRtl(getResourceImage(L"viewtype_sync_action")), - mirrorIfRtl(getResourceImage(L"viewtype_cmp_result"))); - //tooltip is updated dynamically in setViewTypeSyncAction() - - auto initButton = [](ToggleButton& btn, const wchar_t* imgName, const wxString& tooltip) { btn.init(buttonPressed(imgName), buttonReleased(imgName)); btn.SetToolTip(tooltip); }; - - //compare result buttons - initButton(*m_bpButtonShowLeftOnly, L"cat_left_only", _("Show files that exist on left side only")); - initButton(*m_bpButtonShowRightOnly, L"cat_right_only", _("Show files that exist on right side only")); - initButton(*m_bpButtonShowLeftNewer, L"cat_left_newer", _("Show files that are newer on left")); - initButton(*m_bpButtonShowRightNewer, L"cat_right_newer", _("Show files that are newer on right")); - initButton(*m_bpButtonShowEqual, L"cat_equal", _("Show files that are equal")); - initButton(*m_bpButtonShowDifferent, L"cat_different", _("Show files that are different")); - initButton(*m_bpButtonShowConflict, L"cat_conflict", _("Show conflicts")); - - //sync preview buttons - initButton(*m_bpButtonShowCreateLeft, L"so_create_left", _("Show files that will be created on the left side")); - initButton(*m_bpButtonShowCreateRight, L"so_create_right", _("Show files that will be created on the right side")); - initButton(*m_bpButtonShowDeleteLeft, L"so_delete_left", _("Show files that will be deleted on the left side")); - initButton(*m_bpButtonShowDeleteRight, L"so_delete_right", _("Show files that will be deleted on the right side")); - initButton(*m_bpButtonShowUpdateLeft, L"so_update_left", _("Show files that will be updated on the left side")); - initButton(*m_bpButtonShowUpdateRight, L"so_update_right", _("Show files that will be updated on the right side")); - initButton(*m_bpButtonShowDoNothing, L"so_none", _("Show files that won't be copied")); - - initButton(*m_bpButtonShowExcluded, L"checkbox_false", _("Show filtered or temporarily excluded files")); -} - - void MainDialog::setViewFilterDefault() { auto setButton = [](ToggleButton& tb, bool value) { tb.setActive(value); }; @@ -3706,7 +3741,7 @@ void MainDialog::setViewFilterDefault() } -void MainDialog::OnViewFilterSave(wxCommandEvent& event) +void MainDialog::OnViewTypeContext(wxEvent& event) { auto saveButtonDefault = [](const ToggleButton& tb, bool& defaultValue) { @@ -3734,10 +3769,12 @@ void MainDialog::OnViewFilterSave(wxCommandEvent& event) saveButtonDefault(*m_bpButtonShowUpdateLeft, def.updateLeft); saveButtonDefault(*m_bpButtonShowUpdateRight, def.updateRight); saveButtonDefault(*m_bpButtonShowDoNothing, def.doNothing); + + flashStatusInformation(_("View settings saved")); }; ContextMenu menu; - menu.addItem( _("Save as default"), saveDefault); + menu.addItem( _("Save as default"), saveDefault, &getResourceImage(L"file_save_sicon")); menu.popup(*this); } @@ -3785,7 +3822,6 @@ void MainDialog::OnCompare(wxCommandEvent& event) const auto& guiCfg = getConfig(); const std::chrono::system_clock::time_point startTime = std::chrono::system_clock::now(); - const std::vector& fpCfgList = extractCompareCfg(guiCfg.mainCfg); //handle status display and error messages @@ -3842,7 +3878,7 @@ void MainDialog::OnCompare(wxCommandEvent& event) if (!IsActive()) RequestUserAttention(); - //remember folder history (unless cancelled by user) + //remember folder history (except when cancelled by user) for (const FolderPairCfg& fpCfg : fpCfgList) { folderHistoryLeft_ .ref().addItem(fpCfg.folderPathPhraseLeft_); @@ -3898,7 +3934,7 @@ void MainDialog::clearGrid(ptrdiff_t pos) folderCmp_.erase(folderCmp_.begin() + pos); } - filegrid::getDataView(*m_gridMainC).setData(folderCmp_); + filegrid::getDataView(*m_gridMainC ).setData(folderCmp_); treegrid::getDataView(*m_gridOverview).setData(folderCmp_); updateGui(); } @@ -3908,16 +3944,19 @@ void MainDialog::updateStatistics() { auto setValue = [](wxStaticText& txtControl, bool isZeroValue, const wxString& valueAsString, wxStaticBitmap& bmpControl, const wchar_t* bmpName) { - wxFont fnt = txtControl.GetFont(); - fnt.SetWeight(isZeroValue ? wxFONTWEIGHT_NORMAL : wxFONTWEIGHT_BOLD); - txtControl.SetFont(fnt); + if (txtControl.GetLabel() != valueAsString) + { + wxFont fnt = txtControl.GetFont(); + fnt.SetWeight(isZeroValue ? wxFONTWEIGHT_NORMAL : wxFONTWEIGHT_BOLD); + txtControl.SetFont(fnt); - setText(txtControl, valueAsString); + txtControl.SetLabel(valueAsString); - if (isZeroValue) - bmpControl.SetBitmap(greyScale(mirrorIfRtl(getResourceImage(bmpName)))); - else - bmpControl.SetBitmap(mirrorIfRtl(getResourceImage(bmpName))); + if (isZeroValue) + bmpControl.SetBitmap(greyScale(mirrorIfRtl(getResourceImage(bmpName)))); + else + bmpControl.SetBitmap(mirrorIfRtl(getResourceImage(bmpName))); + } }; auto setIntValue = [&setValue](wxStaticText& txtControl, int value, wxStaticBitmap& bmpControl, const wchar_t* bmpName) @@ -3949,12 +3988,12 @@ void MainDialog::applyCompareConfig(bool setDefaultViewType) if (setDefaultViewType) switch (currentCfg_.mainCfg.cmpCfg.compareVar) { - case CompareVariant::TIME_SIZE: - case CompareVariant::SIZE: + case CompareVariant::timeSize: + case CompareVariant::size: setViewTypeSyncAction(true); break; - case CompareVariant::CONTENT: + case CompareVariant::content: setViewTypeSyncAction(false); break; } @@ -4056,7 +4095,7 @@ void MainDialog::OnStartSync(wxCommandEvent& event) StatusHandlerFloatingDialog::Result r = statusHandler.reportFinalStatus(guiCfg.mainCfg.altLogFolderPathPhrase, globalCfg_.logfilesMaxAgeDays, logFilePathsToKeep); //noexcept //--------------------------------------------------------------------------- - setLastOperationLog(r.summary, r.errorLog); + setLastOperationLog(r.summary, r.errorLog.ptr()); //update last sync stats for the selected cfg files updateConfigLastRunStats(std::chrono::system_clock::to_time_t(syncStartTime), r.summary.finalStatus, r.logFilePath); @@ -4183,7 +4222,7 @@ void MainDialog::startSyncForSelecction(const std::vector& se std::vector fpCfgSelect; for (size_t i = 0; i < folderCmp_.size(); ++i) - if (basePairsSelect.find(folderCmp_[i].get()) != basePairsSelect.end()) + if (contains(basePairsSelect, folderCmp_[i].get())) { folderCmpSelect.push_back(folderCmp_[i]); fpCfgSelect .push_back( fpCfg[i]); @@ -4277,19 +4316,19 @@ void MainDialog::setLastOperationLog(const ProcessSummary& summary, const std::s return wxNullBitmap; }(); - const wxBitmap statusOverlayImage = [&] + const wxImage statusOverlayImage = [&] { switch (summary.finalStatus) { case SyncResult::finishedSuccess: break; case SyncResult::finishedWarning: - return getResourceImage(L"msg_warning_sicon"); + return getResourceImage(L"msg_warning_sicon").ConvertToImage(); case SyncResult::finishedError: case SyncResult::aborted: - return getResourceImage(L"msg_error_sicon"); + return getResourceImage(L"msg_error_sicon").ConvertToImage(); } - return wxNullBitmap; + return wxNullImage; }(); m_bitmapLogStatus->SetBitmap(statusImage); @@ -4319,10 +4358,12 @@ void MainDialog::setLastOperationLog(const ProcessSummary& summary, const std::s //totalTimeSec < 3600 ? wxTimeSpan::Seconds(totalTimeSec).Format(L"%M:%S") -> let's use full precision for max. clarity: https://freefilesync.org/forum/viewtopic.php?t=6308 logPanel_->setLog(errorLog); - m_panelLog->Layout(); - setImage(*m_bpButtonShowLog, layOver(getResourceImage(L"log_file"), statusOverlayImage, wxALIGN_BOTTOM | wxALIGN_RIGHT)); + m_panelLog->Layout(); + //m_panelItemStats->Layout(); //needed? + //m_panelTimeStats->Layout(); // + setImage(*m_bpButtonShowLog, layOver(getResourceImage(L"log_file").ConvertToImage(), statusOverlayImage, wxALIGN_BOTTOM | wxALIGN_RIGHT)); m_bpButtonShowLog->Show(static_cast(errorLog)); } @@ -4421,17 +4462,41 @@ void MainDialog::onGridDoubleClickRim(size_t row, bool leftSide) } -void MainDialog::onGridLabelLeftClick(bool onLeft, ColumnTypeRim type) +void MainDialog::onGridLabelLeftClickC(GridLabelClickEvent& event) { - auto sortInfo = filegrid::getDataView(*m_gridMainC).getSortInfo(); + const ColumnTypeCenter colType = static_cast(event.colType_); + if (colType != ColumnTypeCenter::CHECKBOX) + { + bool sortAscending = getDefaultSortDirection(colType); - bool sortAscending = getDefaultSortDirection(type); - if (sortInfo && sortInfo->onLeft == onLeft && sortInfo->type == type) - sortAscending = !sortInfo->ascending; + if (auto sortInfo = filegrid::getDataView(*m_gridMainC).getSortInfo()) + if (const ColumnTypeCenter* sortType = std::get_if(&sortInfo->sortCol)) + if (*sortType == colType) + sortAscending = !sortInfo->ascending; + + filegrid::getDataView(*m_gridMainC).sortView(colType, sortAscending); + + m_gridMainL->clearSelection(GridEventPolicy::ALLOW); + m_gridMainC->clearSelection(GridEventPolicy::ALLOW); + m_gridMainR->clearSelection(GridEventPolicy::ALLOW); + + updateGui(); //refresh gridDataView + } +} + + +void MainDialog::onGridLabelLeftClick(bool onLeft, ColumnTypeRim colType) +{ + bool sortAscending = getDefaultSortDirection(colType); + + if (auto sortInfo = filegrid::getDataView(*m_gridMainC).getSortInfo()) + if (const ColumnTypeRim* sortType = std::get_if(&sortInfo->sortCol)) + if (*sortType == colType && sortInfo->onLeft == onLeft) + sortAscending = !sortInfo->ascending; const ItemPathFormat itemPathFormat = onLeft ? globalCfg_.gui.mainDlg.itemPathFormatLeftGrid : globalCfg_.gui.mainDlg.itemPathFormatRightGrid; - filegrid::getDataView(*m_gridMainC).sortView(type, itemPathFormat, onLeft, sortAscending); + filegrid::getDataView(*m_gridMainC).sortView(colType, itemPathFormat, onLeft, sortAscending); m_gridMainL->clearSelection(GridEventPolicy::ALLOW); m_gridMainC->clearSelection(GridEventPolicy::ALLOW); @@ -4452,13 +4517,6 @@ void MainDialog::onGridLabelLeftClickR(GridLabelClickEvent& event) } -void MainDialog::onGridLabelLeftClickC(GridLabelClickEvent& event) -{ - //sorting middle grid is more or less useless: therefore let's toggle view instead! - setViewTypeSyncAction(!m_bpButtonViewTypeSyncAction->isActive()); //toggle view -} - - void MainDialog::OnSwapSides(wxCommandEvent& event) { //swap directory names: @@ -4496,110 +4554,170 @@ void MainDialog::OnSwapSides(wxCommandEvent& event) m_bpButtonShowUpdateRight->setActive(tmp); */ - try - { - swapGrids(getConfig().mainCfg, folderCmp_); //throw FileError - } - catch (const FileError& e) + //---------------------------------------------------------------------- + + if (!folderCmp_.empty()) { - showNotificationDialog(this, DialogInfoType::error, PopupDialogCfg().setDetailInstructions(e.toString())); + FocusPreserver fp; + + disableAllElements(true /*enableAbort*/); //StatusHandlerTemporaryPanel will internally process Window messages, so avoid unexpected callbacks! + auto app = wxTheApp; //fix lambda/wxWigets/VC fuck up + ZEN_ON_SCOPE_EXIT(app->Yield(); enableAllElements()); //ui update before enabling buttons again: prevent strange behaviour of delayed button clicks + + const auto& guiCfg = getConfig(); + + StatusHandlerTemporaryPanel statusHandler(*this, std::chrono::system_clock::now() /*startTime*/, + false /*ignoreErrors*/, + guiCfg.mainCfg.automaticRetryCount, + guiCfg.mainCfg.automaticRetryDelay); //handle status display and error messages + try + { + statusHandler.initNewPhase(-1, -1, ProcessPhase::none); + swapGrids(getConfig().mainCfg, folderCmp_, + statusHandler); //throw AbortProcess + } + catch (AbortProcess&) {} + + const StatusHandlerTemporaryPanel::Result r = statusHandler.reportFinalStatus(); //noexcept + setLastOperationLog(r.summary, r.errorLog); } - updateGui(); + updateGui(); //e.g. unsaved changes } void MainDialog::updateGridViewData() { - size_t fileCountLeft = 0; - size_t folderCountLeft = 0; - uint64_t bytesLeft = 0; + auto updateFilterButton = [&](ToggleButton& btn, const wchar_t* imgName, int itemCount) + { + const bool show = itemCount > 0; + if (show) + { + int& itemCountDrawn = buttonLabelItemCount_[&btn]; + assert(itemCount != 0); //itemCountDrawn defaults to 0! + if (itemCountDrawn != itemCount) //perf: only regenerate button labels when needed! + { + itemCountDrawn = itemCount; - size_t fileCountRight = 0; - size_t folderCountRight = 0; - uint64_t bytesRight = 0; + //accessibility: always set both foreground AND background colors! + wxImage imgCountPressed = mirrorIfRtl(createImageFromText(formatNumber(itemCount), btn.GetFont().Bold(), wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT))); + wxImage imgCountReleased = mirrorIfRtl(createImageFromText(formatNumber(itemCount), btn.GetFont(), wxSystemSettings::GetColour(wxSYS_COLOUR_BTNTEXT))); + imgCountReleased.Resize(imgCountPressed.GetSize(), wxPoint() + (imgCountPressed.GetSize() - imgCountReleased.GetSize()) / 2); //match with imgCountPressed's bold font - auto updateVisibility = [](ToggleButton* btn, bool shown) - { - if (btn->IsShown() != shown) - btn->Show(shown); + //add bottom/right border space + imgCountPressed .Resize(imgCountPressed .GetSize() + wxSize(fastFromDIP(5), fastFromDIP(5)), wxPoint()); + imgCountReleased.Resize(imgCountReleased.GetSize() + wxSize(fastFromDIP(5), fastFromDIP(5)), wxPoint()); + + wxImage imgCategory = getResourceImage(imgName).ConvertToImage(); + imgCategory.Resize(imgCategory.GetSize() + wxSize(fastFromDIP(5), fastFromDIP(2)), wxPoint(fastFromDIP(5), fastFromDIP(2) / 2)); + + wxImage imgIconReleased = imgCategory.ConvertToGreyscale(1.0/3, 1.0/3, 1.0/3); //treat all channels equally! + brighten(imgIconReleased, 80); + + wxImage imgButtonPressed = stackImages(imgCategory, imgCountPressed, ImageStackLayout::HORIZONTAL, ImageStackAlignment::BOTTOM); + wxImage imgButtonReleased = stackImages(imgIconReleased, imgCountReleased, ImageStackLayout::HORIZONTAL, ImageStackAlignment::BOTTOM); + + wxBitmap bmpBorderRect(imgButtonPressed.GetWidth(), imgButtonPressed.GetHeight()); //seems we don't need to pass 24-bit depth here even for high-contrast color schemes + { + //draw rectangle border with gradient + const wxColor colFrom = wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE); + const wxColor colTo(0x11, 0x79, 0xfe); //light blue + + wxMemoryDC dc(bmpBorderRect); + dc.SetBrush(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); + wxRect rect(bmpBorderRect.GetSize()); + + const int borderSize = fastFromDIP(3); + for (int i = 1 ; i <= borderSize; ++i) + { + const wxColor colGradient((colFrom.Red () * (borderSize - i) + colTo.Red () * i) / borderSize, + (colFrom.Green() * (borderSize - i) + colTo.Green() * i) / borderSize, + (colFrom.Blue () * (borderSize - i) + colTo.Blue () * i) / borderSize); + dc.SetPen(colGradient); + dc.DrawRectangle(rect); + rect.Deflate(1); + } + } + wxImage imgBorderRect = bmpBorderRect.ConvertToImage(); + convertToVanillaImage(imgBorderRect); + imgButtonPressed = layOver(imgBorderRect, imgButtonPressed); + + btn.init(mirrorIfRtl(imgButtonPressed), mirrorIfRtl(imgButtonReleased)); + } + } + + if (btn.IsShown() != show) + btn.Show(show); }; + FileView::FileStats fileStatsLeft; + FileView::FileStats fileStatsRight; + if (m_bpButtonViewTypeSyncAction->isActive()) { - const FileView::StatusSyncPreview result = filegrid::getDataView(*m_gridMainC).updateSyncPreview(m_bpButtonShowExcluded->isActive(), - m_bpButtonShowCreateLeft ->isActive(), - m_bpButtonShowCreateRight->isActive(), - m_bpButtonShowDeleteLeft ->isActive(), - m_bpButtonShowDeleteRight->isActive(), - m_bpButtonShowUpdateLeft ->isActive(), - m_bpButtonShowUpdateRight->isActive(), - m_bpButtonShowDoNothing ->isActive(), - m_bpButtonShowEqual ->isActive(), - m_bpButtonShowConflict ->isActive()); - fileCountLeft = result.fileCountLeft; - folderCountLeft = result.folderCountLeft; - bytesLeft = result.bytesLeft; - - fileCountRight = result.fileCountRight; - folderCountRight = result.folderCountRight; - bytesRight = result.bytesRight; + const FileView::ActionViewStats viewStats = filegrid::getDataView(*m_gridMainC).applyFilterByAction(m_bpButtonShowExcluded->isActive(), + m_bpButtonShowCreateLeft ->isActive(), + m_bpButtonShowCreateRight->isActive(), + m_bpButtonShowDeleteLeft ->isActive(), + m_bpButtonShowDeleteRight->isActive(), + m_bpButtonShowUpdateLeft ->isActive(), + m_bpButtonShowUpdateRight->isActive(), + m_bpButtonShowDoNothing ->isActive(), + m_bpButtonShowEqual ->isActive(), + m_bpButtonShowConflict ->isActive()); + fileStatsLeft = viewStats.fileStatsLeft; + fileStatsRight = viewStats.fileStatsRight; //sync preview buttons - updateVisibility(m_bpButtonShowExcluded, result.existsExcluded); - updateVisibility(m_bpButtonShowEqual, result.existsEqual); - updateVisibility(m_bpButtonShowConflict, result.existsConflict); - - updateVisibility(m_bpButtonShowCreateLeft, result.existsSyncCreateLeft); - updateVisibility(m_bpButtonShowCreateRight, result.existsSyncCreateRight); - updateVisibility(m_bpButtonShowDeleteLeft, result.existsSyncDeleteLeft); - updateVisibility(m_bpButtonShowDeleteRight, result.existsSyncDeleteRight); - updateVisibility(m_bpButtonShowUpdateLeft, result.existsSyncDirLeft); - updateVisibility(m_bpButtonShowUpdateRight, result.existsSyncDirRight); - updateVisibility(m_bpButtonShowDoNothing, result.existsSyncDirNone); - - updateVisibility(m_bpButtonShowLeftOnly, false); - updateVisibility(m_bpButtonShowRightOnly, false); - updateVisibility(m_bpButtonShowLeftNewer, false); - updateVisibility(m_bpButtonShowRightNewer, false); - updateVisibility(m_bpButtonShowDifferent, false); + updateFilterButton(*m_bpButtonShowExcluded, L"cat_excluded", viewStats.excluded); + updateFilterButton(*m_bpButtonShowEqual, L"cat_equal", viewStats.equal); + updateFilterButton(*m_bpButtonShowConflict, L"cat_conflict", viewStats.conflict); + + updateFilterButton(*m_bpButtonShowCreateLeft, L"so_create_left", viewStats.createLeft); + updateFilterButton(*m_bpButtonShowCreateRight, L"so_create_right", viewStats.createRight); + updateFilterButton(*m_bpButtonShowDeleteLeft, L"so_delete_left", viewStats.deleteLeft); + updateFilterButton(*m_bpButtonShowDeleteRight, L"so_delete_right", viewStats.deleteRight); + updateFilterButton(*m_bpButtonShowUpdateLeft, L"so_update_left", viewStats.updateLeft); + updateFilterButton(*m_bpButtonShowUpdateRight, L"so_update_right", viewStats.updateRight); + updateFilterButton(*m_bpButtonShowDoNothing, L"so_none", viewStats.updateNone); + + m_bpButtonShowLeftOnly ->Hide(); + m_bpButtonShowRightOnly ->Hide(); + m_bpButtonShowLeftNewer ->Hide(); + m_bpButtonShowRightNewer->Hide(); + m_bpButtonShowDifferent ->Hide(); } else { - const FileView::StatusCmpResult result = filegrid::getDataView(*m_gridMainC).updateCmpResult(m_bpButtonShowExcluded->isActive(), - m_bpButtonShowLeftOnly ->isActive(), - m_bpButtonShowRightOnly ->isActive(), - m_bpButtonShowLeftNewer ->isActive(), - m_bpButtonShowRightNewer->isActive(), - m_bpButtonShowDifferent ->isActive(), - m_bpButtonShowEqual ->isActive(), - m_bpButtonShowConflict ->isActive()); - fileCountLeft = result.fileCountLeft; - folderCountLeft = result.folderCountLeft; - bytesLeft = result.bytesLeft; - - fileCountRight = result.fileCountRight; - folderCountRight = result.folderCountRight; - bytesRight = result.bytesRight; + const FileView::CategoryViewStats viewStats = filegrid::getDataView(*m_gridMainC).applyFilterByCategory(m_bpButtonShowExcluded->isActive(), + m_bpButtonShowLeftOnly ->isActive(), + m_bpButtonShowRightOnly ->isActive(), + m_bpButtonShowLeftNewer ->isActive(), + m_bpButtonShowRightNewer->isActive(), + m_bpButtonShowDifferent ->isActive(), + m_bpButtonShowEqual ->isActive(), + m_bpButtonShowConflict ->isActive()); + fileStatsLeft = viewStats.fileStatsLeft; + fileStatsRight = viewStats.fileStatsRight; //comparison result view buttons - updateVisibility(m_bpButtonShowExcluded, result.existsExcluded); - updateVisibility(m_bpButtonShowEqual, result.existsEqual); - updateVisibility(m_bpButtonShowConflict, result.existsConflict); - - updateVisibility(m_bpButtonShowCreateLeft, false); - updateVisibility(m_bpButtonShowCreateRight, false); - updateVisibility(m_bpButtonShowDeleteLeft, false); - updateVisibility(m_bpButtonShowDeleteRight, false); - updateVisibility(m_bpButtonShowUpdateLeft, false); - updateVisibility(m_bpButtonShowUpdateRight, false); - updateVisibility(m_bpButtonShowDoNothing, false); - - updateVisibility(m_bpButtonShowLeftOnly, result.existsLeftOnly); - updateVisibility(m_bpButtonShowRightOnly, result.existsRightOnly); - updateVisibility(m_bpButtonShowLeftNewer, result.existsLeftNewer); - updateVisibility(m_bpButtonShowRightNewer, result.existsRightNewer); - updateVisibility(m_bpButtonShowDifferent, result.existsDifferent); + updateFilterButton(*m_bpButtonShowExcluded, L"cat_excluded", viewStats.excluded); + updateFilterButton(*m_bpButtonShowEqual, L"cat_equal", viewStats.equal); + updateFilterButton(*m_bpButtonShowConflict, L"cat_conflict", viewStats.conflict); + + m_bpButtonShowCreateLeft ->Hide(); + m_bpButtonShowCreateRight->Hide(); + m_bpButtonShowDeleteLeft ->Hide(); + m_bpButtonShowDeleteRight->Hide(); + m_bpButtonShowUpdateLeft ->Hide(); + m_bpButtonShowUpdateRight->Hide(); + m_bpButtonShowDoNothing ->Hide(); + + updateFilterButton(*m_bpButtonShowLeftOnly, L"cat_left_only", viewStats.leftOnly); + updateFilterButton(*m_bpButtonShowRightOnly, L"cat_right_only", viewStats.rightOnly); + updateFilterButton(*m_bpButtonShowLeftNewer, L"cat_left_newer", viewStats.leftNewer); + updateFilterButton(*m_bpButtonShowRightNewer, L"cat_right_newer", viewStats.rightNewer); + updateFilterButton(*m_bpButtonShowDifferent, L"cat_different", viewStats.different); } const bool anyViewButtonShown = m_bpButtonShowExcluded ->IsShown() || @@ -4620,10 +4738,8 @@ void MainDialog::updateGridViewData() m_bpButtonShowRightNewer->IsShown() || m_bpButtonShowDifferent ->IsShown(); - m_staticTextViewType ->Show(anyViewButtonShown); m_bpButtonViewTypeSyncAction->Show(anyViewButtonShown); - m_staticTextSelectView ->Show(anyViewButtonShown); - m_bpButtonViewFilterSave ->Show(anyViewButtonShown); + m_bpButtonViewContext ->Show(anyViewButtonShown); m_panelViewFilter->Layout(); @@ -4632,62 +4748,53 @@ void MainDialog::updateGridViewData() //overview panel if (m_bpButtonViewTypeSyncAction->isActive()) - treegrid::getDataView(*m_gridOverview).updateSyncPreview(m_bpButtonShowExcluded ->isActive(), - m_bpButtonShowCreateLeft ->isActive(), - m_bpButtonShowCreateRight->isActive(), - m_bpButtonShowDeleteLeft ->isActive(), - m_bpButtonShowDeleteRight->isActive(), - m_bpButtonShowUpdateLeft ->isActive(), - m_bpButtonShowUpdateRight->isActive(), - m_bpButtonShowDoNothing ->isActive(), - m_bpButtonShowEqual ->isActive(), - m_bpButtonShowConflict ->isActive()); + treegrid::getDataView(*m_gridOverview).applyFilterByAction(m_bpButtonShowExcluded ->isActive(), + m_bpButtonShowCreateLeft ->isActive(), + m_bpButtonShowCreateRight->isActive(), + m_bpButtonShowDeleteLeft ->isActive(), + m_bpButtonShowDeleteRight->isActive(), + m_bpButtonShowUpdateLeft ->isActive(), + m_bpButtonShowUpdateRight->isActive(), + m_bpButtonShowDoNothing ->isActive(), + m_bpButtonShowEqual ->isActive(), + m_bpButtonShowConflict ->isActive()); else - treegrid::getDataView(*m_gridOverview).updateCmpResult(m_bpButtonShowExcluded ->isActive(), - m_bpButtonShowLeftOnly ->isActive(), - m_bpButtonShowRightOnly ->isActive(), - m_bpButtonShowLeftNewer ->isActive(), - m_bpButtonShowRightNewer->isActive(), - m_bpButtonShowDifferent ->isActive(), - m_bpButtonShowEqual ->isActive(), - m_bpButtonShowConflict ->isActive()); + treegrid::getDataView(*m_gridOverview).applyFilterByCategory(m_bpButtonShowExcluded ->isActive(), + m_bpButtonShowLeftOnly ->isActive(), + m_bpButtonShowRightOnly ->isActive(), + m_bpButtonShowLeftNewer ->isActive(), + m_bpButtonShowRightNewer->isActive(), + m_bpButtonShowDifferent ->isActive(), + m_bpButtonShowEqual ->isActive(), + m_bpButtonShowConflict ->isActive()); m_gridOverview->Refresh(); //update status bar information - setStatusBarFileStats(fileCountLeft, - folderCountLeft, - bytesLeft, - fileCountRight, - folderCountRight, - bytesRight); + setStatusBarFileStats(fileStatsLeft, fileStatsRight); } -void MainDialog::setStatusBarFileStats(size_t fileCountLeft, - size_t folderCountLeft, - uint64_t bytesLeft, - size_t fileCountRight, - size_t folderCountRight, - uint64_t bytesRight) +void MainDialog::setStatusBarFileStats(FileView::FileStats statsLeft, + FileView::FileStats statsRight) { //select state bSizerFileStatus->Show(true); m_staticTextFullStatus->Hide(); //update status information - bSizerStatusLeftDirectories->Show(folderCountLeft > 0); - bSizerStatusLeftFiles ->Show(fileCountLeft > 0); + bSizerStatusLeftDirectories->Show(statsLeft.folderCount > 0); + bSizerStatusLeftFiles ->Show(statsLeft.fileCount > 0); - setText(*m_staticTextStatusLeftDirs, _P("1 directory", "%x directories", folderCountLeft)); - setText(*m_staticTextStatusLeftFiles, _P("1 file", "%x files", fileCountLeft)); - setText(*m_staticTextStatusLeftBytes, L"(" + formatFilesizeShort(bytesLeft) + L")"); + setText(*m_staticTextStatusLeftDirs, _P("1 directory", "%x directories", statsLeft.folderCount)); + setText(*m_staticTextStatusLeftFiles, _P("1 file", "%x files", statsLeft.fileCount)); + setText(*m_staticTextStatusLeftBytes, L"(" + formatFilesizeShort(statsLeft.bytes) + L")"); //------------------------------------------------------------------------------ - bSizerStatusRightDirectories->Show(folderCountRight > 0); - bSizerStatusRightFiles ->Show(fileCountRight > 0); + bSizerStatusRightDirectories->Show(statsRight.folderCount > 0); + bSizerStatusRightFiles ->Show(statsRight.fileCount > 0); - setText(*m_staticTextStatusRightDirs, _P("1 directory", "%x directories", folderCountRight)); - setText(*m_staticTextStatusRightFiles, _P("1 file", "%x files", fileCountRight)); - setText(*m_staticTextStatusRightBytes, L"(" + formatFilesizeShort(bytesRight) + L")"); + setText(*m_staticTextStatusRightDirs, _P("1 directory", "%x directories", statsRight.folderCount)); + setText(*m_staticTextStatusRightFiles, _P("1 file", "%x files", statsRight.fileCount)); + setText(*m_staticTextStatusRightBytes, L"(" + formatFilesizeShort(statsRight.bytes) + L")"); //------------------------------------------------------------------------------ wxString statusCenterNew; if (filegrid::getDataView(*m_gridMainC).rowsTotal() > 0) @@ -4716,16 +4823,34 @@ void MainDialog::applyFilterConfig() void MainDialog::applySyncDirections() { - try - { - const std::vector directCfgs = extractDirectionCfg(getConfig().mainCfg); - redetermineSyncDirection(directCfgs, folderCmp_, nullptr /*notifyStatus*/); //throw FileError - } - catch (const FileError& e) + if (!folderCmp_.empty()) { - showNotificationDialog(this, DialogInfoType::error, PopupDialogCfg().setDetailInstructions(e.toString())); + FocusPreserver fp; + + disableAllElements(true /*enableAbort*/); //StatusHandlerTemporaryPanel will internally process Window messages, so avoid unexpected callbacks! + auto app = wxTheApp; //fix lambda/wxWigets/VC fuck up + ZEN_ON_SCOPE_EXIT(app->Yield(); enableAllElements()); //ui update before enabling buttons again: prevent strange behaviour of delayed button clicks + + const auto& guiCfg = getConfig(); + const auto& directCfgs = extractDirectionCfg(folderCmp_, getConfig().mainCfg); + + StatusHandlerTemporaryPanel statusHandler(*this, std::chrono::system_clock::now() /*startTime*/, + false /*ignoreErrors*/, + guiCfg.mainCfg.automaticRetryCount, + guiCfg.mainCfg.automaticRetryDelay); //handle status display and error messages + try + { + statusHandler.initNewPhase(-1, -1, ProcessPhase::none); + redetermineSyncDirection(directCfgs, + statusHandler); //throw AbortProcess + } + catch (AbortProcess&) {} + + const StatusHandlerTemporaryPanel::Result r = statusHandler.reportFinalStatus(); //noexcept + setLastOperationLog(r.summary, r.errorLog); } - updateGui(); + + updateGui(); //e.g. unsaved changes } @@ -5006,7 +5131,7 @@ void MainDialog::updateGuiForFolderPair() m_bpButtonLocalCompCfg ->Show(showLocalCfgFirstPair); m_bpButtonLocalSyncCfg ->Show(showLocalCfgFirstPair); - m_bpButtonLocalFilter->Show(showLocalCfgFirstPair); + m_bpButtonLocalFilter ->Show(showLocalCfgFirstPair); setImage(*m_bpButtonSwapSides, getResourceImage(showLocalCfgFirstPair ? L"swap_slim" : L"swap")); //update sub-panel sizes for calculations below!!! @@ -5070,33 +5195,43 @@ void MainDialog::insertAddFolderPair(const std::vector& newPair for (size_t i = 0; i < newPairs.size(); ++i) { - FolderPairPanel* newPair = new FolderPairPanel(m_scrolledWindowFolderPairs, *this); + FolderPairPanel* newPair = nullptr; + if (!folderPairScrapyard_.empty()) //construct cheaply from "spare parts" + { + newPair = folderPairScrapyard_.back().release(); //transfer ownership + folderPairScrapyard_.pop_back(); + newPair->Show(); + } + else + { + newPair = new FolderPairPanel(m_scrolledWindowFolderPairs, *this); - //init dropdown history - newPair->m_folderPathLeft ->init(folderHistoryLeft_ .ptr()); - newPair->m_folderPathRight->init(folderHistoryRight_.ptr()); + //init dropdown history + newPair->m_folderPathLeft ->init(folderHistoryLeft_ ); + newPair->m_folderPathRight->init(folderHistoryRight_); - newPair->m_bpButtonFolderPairOptions->SetBitmapLabel(getResourceImage(L"button_arrow_down")); + newPair->m_bpButtonFolderPairOptions->SetBitmapLabel(getResourceImage(L"button_arrow_down")); - //set width of left folder panel - const int width = m_panelTopLeft->GetSize().GetWidth(); - newPair->m_panelLeft->SetMinSize(wxSize(width, -1)); + //set width of left folder panel + const int width = m_panelTopLeft->GetSize().GetWidth(); + newPair->m_panelLeft->SetMinSize(wxSize(width, -1)); - bSizerAddFolderPairs->Insert(pos + i, newPair, 0, wxEXPAND); - additionalFolderPairs_.insert(additionalFolderPairs_.begin() + pos + i, newPair); + //register events + newPair->m_bpButtonFolderPairOptions->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxEventHandler(MainDialog::OnShowFolderPairOptions), nullptr, this); + newPair->m_bpButtonFolderPairOptions->Connect(wxEVT_RIGHT_DOWN, wxEventHandler(MainDialog::OnShowFolderPairOptions), nullptr, this); + newPair->m_bpButtonRemovePair ->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MainDialog::OnRemoveFolderPair ), nullptr, this); + static_cast(newPair)->Connect(wxEVT_CHAR_HOOK, wxKeyEventHandler(MainDialog::onAddFolderPairKeyEvent), nullptr, this); - //register events - newPair->m_bpButtonFolderPairOptions->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxEventHandler(MainDialog::OnShowFolderPairOptions), nullptr, this); - newPair->m_bpButtonFolderPairOptions->Connect(wxEVT_RIGHT_DOWN, wxEventHandler(MainDialog::OnShowFolderPairOptions), nullptr, this); - newPair->m_bpButtonRemovePair ->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MainDialog::OnRemoveFolderPair ), nullptr, this); - static_cast(newPair)->Connect(wxEVT_CHAR_HOOK, wxKeyEventHandler(MainDialog::onAddFolderPairKeyEvent), nullptr, this); + newPair->m_bpButtonLocalCompCfg->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MainDialog::OnLocalCompCfg ), nullptr, this); + newPair->m_bpButtonLocalSyncCfg->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MainDialog::OnLocalSyncCfg ), nullptr, this); + newPair->m_bpButtonLocalFilter ->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MainDialog::OnLocalFilterCfg), nullptr, this); - newPair->m_bpButtonLocalCompCfg->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MainDialog::OnLocalCompCfg ), nullptr, this); - newPair->m_bpButtonLocalSyncCfg->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MainDialog::OnLocalSyncCfg ), nullptr, this); - newPair->m_bpButtonLocalFilter ->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MainDialog::OnLocalFilterCfg), nullptr, this); + //important: make sure panel has proper default height! + newPair->GetSizer()->SetSizeHints(newPair); //~=Fit() + SetMinSize() + } - //important: make sure panel has proper default height! - newPair->GetSizer()->SetSizeHints(newPair); //~=Fit() + SetMinSize() + bSizerAddFolderPairs->Insert(pos + i, newPair, 0, wxEXPAND); + additionalFolderPairs_.insert(additionalFolderPairs_.begin() + pos + i, newPair); //wxComboBox screws up miserably if width/height is smaller than the magic number 4! Problem occurs when trying to set tooltip //so we have to update window sizes before setting configuration: @@ -5144,13 +5279,14 @@ void MainDialog::removeAddFolderPair(size_t pos) { FolderPairPanel* panel = additionalFolderPairs_[pos]; - bSizerAddFolderPairs->Detach(panel); //Remove() does not work on wxWindow*, so do it manually additionalFolderPairs_.erase(additionalFolderPairs_.begin() + pos); + bSizerAddFolderPairs->Detach(panel); //Remove() does not work on wxWindow*, so do it manually //more (non-portable) wxWidgets bullshit: on OS X wxWindow::Destroy() screws up and calls "operator delete" directly rather than //the deferred deletion it is expected to do (and which is implemented correctly on Windows and Linux) //http://bb10.com/python-wxpython-devel/2012-09/msg00004.html //=> since we're in a mouse button callback of a sub-component of "panel" we need to delay deletion ourselves: - guiQueue_.processAsync([] {}, [panel] { panel->Destroy(); }); + panel->Hide(); + folderPairScrapyard_.emplace_back(panel); //transfer ownership updateGuiForFolderPair(); clearGrid(pos + 1); //+ GUI update @@ -5160,8 +5296,14 @@ void MainDialog::removeAddFolderPair(size_t pos) void MainDialog::setAddFolderPairs(const std::vector& newPairs) { + //FolderPairPanel are too expensive to casually throw away and recreate! + for (FolderPairPanel* panel : additionalFolderPairs_) + { + panel->Hide(); + folderPairScrapyard_.emplace_back(panel); //transfer ownership + } additionalFolderPairs_.clear(); - bSizerAddFolderPairs->Clear(true); + bSizerAddFolderPairs->Clear(false /*delete_windows*/); //release ownership insertAddFolderPair(newPairs, 0); } @@ -5230,9 +5372,9 @@ void MainDialog::OnMenuExportFileList(wxCommandEvent& event) auto colAttrCenter = m_gridMainC->getColumnConfig(); auto colAttrRight = m_gridMainR->getColumnConfig(); - eraseIf(colAttrLeft, [](const Grid::ColAttributes& ca) { return !ca.visible; }); - eraseIf(colAttrCenter, [](const Grid::ColAttributes& ca) { return !ca.visible || static_cast(ca.type) == ColumnTypeCenter::CHECKBOX; }); - eraseIf(colAttrRight, [](const Grid::ColAttributes& ca) { return !ca.visible; }); + std::erase_if(colAttrLeft, [](const Grid::ColAttributes& ca) { return !ca.visible; }); + std::erase_if(colAttrCenter, [](const Grid::ColAttributes& ca) { return !ca.visible || static_cast(ca.type) == ColumnTypeCenter::CHECKBOX; }); + std::erase_if(colAttrRight, [](const Grid::ColAttributes& ca) { return !ca.visible; }); if (provLeft && provCenter && provRight) { diff --git a/FreeFileSync/Source/ui/main_dlg.h b/FreeFileSync/Source/ui/main_dlg.h index 1dfec916..06145bc7 100644 --- a/FreeFileSync/Source/ui/main_dlg.h +++ b/FreeFileSync/Source/ui/main_dlg.h @@ -27,7 +27,7 @@ namespace fff { class FolderPairFirst; class FolderPairPanel; -class CompareProgressDialog; +class CompareProgressPanel; template class FolderPairCallback; class PanelMoveWindow; @@ -86,7 +86,6 @@ private: void updateGlobalFilterButton(); - void initViewFilterButtons(); void setViewFilterDefault(); void cfgHistoryRemoveObsolete(const std::vector& filepaths); @@ -126,12 +125,7 @@ private: const std::vector& selectionRight); //selection may be empty //status bar supports one of the following two states at a time: - void setStatusBarFileStats(size_t fileCountLeft, - size_t folderCountLeft, - uint64_t bytesLeft, - size_t fileCountRight, - size_t folderCountRight, - uint64_t bytesRight); + void setStatusBarFileStats(FileView::FileStats statsLeft, FileView::FileStats statsRight); //void setStatusBarFullText(const wxString& msg); void flashStatusInformation(const wxString& msg); //temporarily show different status (only valid for setStatusBarFileStats) @@ -152,12 +146,13 @@ private: void OnSyncSettingsContext(wxCommandEvent& event) override { OnSyncSettingsContext(static_cast(event)); } void OnGlobalFilterContext(wxMouseEvent& event) override { OnGlobalFilterContext(static_cast(event)); } void OnGlobalFilterContext(wxCommandEvent& event) override { OnGlobalFilterContext(static_cast(event)); } + void OnViewTypeContext (wxMouseEvent& event) override { OnViewTypeContext (static_cast(event)); } + void OnViewTypeContext (wxCommandEvent& event) override { OnViewTypeContext (static_cast(event)); } void OnCompSettingsContext(wxEvent& event); void OnSyncSettingsContext(wxEvent& event); void OnGlobalFilterContext(wxEvent& event); - - void OnViewFilterSave(wxCommandEvent& event) override; + void OnViewTypeContext (wxEvent& event); void applyCompareConfig(bool setDefaultViewType); @@ -185,7 +180,7 @@ private: void onGridLabelLeftClickL(zen::GridLabelClickEvent& event); void onGridLabelLeftClickC(zen::GridLabelClickEvent& event); void onGridLabelLeftClickR(zen::GridLabelClickEvent& event); - void onGridLabelLeftClick(bool onLeft, ColumnTypeRim type); + void onGridLabelLeftClick(bool onLeft, ColumnTypeRim colType); void onGridLabelContextL(zen::GridLabelClickEvent& event); void onGridLabelContextC(zen::GridLabelClickEvent& event); @@ -319,6 +314,12 @@ private: std::vector additionalFolderPairs_; //additional pairs to the first pair std::optional addPairCountLast_; + + //------------------------------------- + //fight sluggish GUI: FolderPairPanel are too expensive to casually throw away and recreate! + struct DeleteWxWindow { void operator()(wxWindow* win) const { win->Destroy(); } }; + + std::vector> folderPairScrapyard_; //------------------------------------- //*********************************************** @@ -326,7 +327,7 @@ private: std::vector oldStatusMsgs_; //the first one is the original/non-flash status message //compare status panel (hidden on start, shown when comparing) - std::unique_ptr compareStatus_; //always bound + std::unique_ptr compareStatus_; //always bound LogPanel* logPanel_ = nullptr; @@ -342,8 +343,11 @@ private: time_t manualTimeSpanFrom_ = 0; time_t manualTimeSpanTo_ = 0; //buffer manual time span selection at session level + //regenerate view filter button labels only when necessary: + std::unordered_map buttonLabelItemCount_; + zen::SharedRef folderHistoryLeft_ = zen::makeSharedRef(); //shared by all wxComboBox dropdown controls - zen::SharedRef folderHistoryRight_ = zen::makeSharedRef(); //always bound! + zen::SharedRef folderHistoryRight_ = zen::makeSharedRef(); // zen::AsyncGuiQueue guiQueue_; //schedule and run long-running tasks asynchronously, but process results on GUI queue diff --git a/FreeFileSync/Source/ui/progress_indicator.cpp b/FreeFileSync/Source/ui/progress_indicator.cpp index 87b75607..7a3e48a9 100644 --- a/FreeFileSync/Source/ui/progress_indicator.cpp +++ b/FreeFileSync/Source/ui/progress_indicator.cpp @@ -40,7 +40,7 @@ using namespace fff; namespace { constexpr std::chrono::seconds WINDOW_BYTES_PER_SEC (5); //window size used for statistics -constexpr std::chrono::seconds WINDOW_REMAINING_TIME(60); //USB memory stick scenario can have drop outs of 40 seconds => 60 sec. window size handles it +constexpr std::chrono::seconds WINDOW_REMAINING_TIME(60); //USB memory stick can have 40-second-hangs constexpr std::chrono::seconds SPEED_ESTIMATE_SAMPLE_SKIP(1); constexpr std::chrono::milliseconds SPEED_ESTIMATE_UPDATE_INTERVAL(500); constexpr std::chrono::seconds GRAPH_TOTAL_TIME_UPDATE_INTERVAL(2); @@ -70,13 +70,13 @@ std::wstring getDialogPhaseText(const Statistics& syncStat, bool paused) switch (syncStat.currentPhase()) { - case ProcessCallback::PHASE_NONE: + case ProcessPhase::none: return _("Initializing..."); //dialog is shown *before* sync starts, so this text may be visible! - case ProcessCallback::PHASE_SCANNING: + case ProcessPhase::scanning: return _("Scanning..."); - case ProcessCallback::PHASE_COMPARING_CONTENT: + case ProcessPhase::comparingContent: return _("Comparing content..."); - case ProcessCallback::PHASE_SYNCHRONIZING: + case ProcessPhase::synchronizing: return _("Synchronizing..."); } assert(false); @@ -128,7 +128,7 @@ class CurveDataProgressSeparatorLine : public CurveData } -class CompareProgressDialog::Impl : public CompareProgressDlgGenerated +class CompareProgressPanel::Impl : public CompareProgressDlgGenerated { public: Impl(wxFrame& parentWindow); @@ -177,7 +177,7 @@ private: }; -CompareProgressDialog::Impl::Impl(wxFrame& parentWindow) : +CompareProgressPanel::Impl::Impl(wxFrame& parentWindow) : CompareProgressDlgGenerated(&parentWindow), parentWindow_(parentWindow) { @@ -187,7 +187,7 @@ CompareProgressDialog::Impl::Impl(wxFrame& parentWindow) : m_bitmapIgnoreErrors->SetBitmap(getResourceImage(L"error_ignore_active")); m_bitmapRetryErrors ->SetBitmap(getResourceImage(L"error_retry")); - //make sure that standard height matches PHASE_COMPARING_CONTENT statistics layout (== largest) + //make sure that standard height matches ProcessPhase::comparingContent statistics layout (== largest) //init graph m_panelProgressGraph->setAttributes(Graph2D::MainAttributes().setMinY(0).setMaxY(2). @@ -210,7 +210,7 @@ CompareProgressDialog::Impl::Impl(wxFrame& parentWindow) : } -void CompareProgressDialog::Impl::init(const Statistics& syncStat, bool ignoreErrors, size_t automaticRetryCount) +void CompareProgressPanel::Impl::init(const Statistics& syncStat, bool ignoreErrors, size_t automaticRetryCount) { syncStat_ = &syncStat; parentTitleBackup_ = parentWindow_.GetTitle(); @@ -235,7 +235,7 @@ void CompareProgressDialog::Impl::init(const Statistics& syncStat, bool ignoreEr } -void CompareProgressDialog::Impl::teardown() +void CompareProgressPanel::Impl::teardown() { syncStat_ = nullptr; parentWindow_.SetTitle(parentTitleBackup_); @@ -243,15 +243,15 @@ void CompareProgressDialog::Impl::teardown() } -void CompareProgressDialog::Impl::initNewPhase() +void CompareProgressPanel::Impl::initNewPhase() { //start new measurement perf_ = PerfCheck(WINDOW_REMAINING_TIME, WINDOW_BYTES_PER_SEC); timeLastSpeedEstimate_ = std::chrono::seconds(-100); //make sure estimate is updated upon next check phaseStart_ = stopWatch_.elapsed(); - const int itemsTotal = syncStat_->getStatsTotal(syncStat_->currentPhase()).items; - const int64_t bytesTotal = syncStat_->getStatsTotal(syncStat_->currentPhase()).bytes; + const int itemsTotal = syncStat_->getStatsTotal().items; + const int64_t bytesTotal = syncStat_->getStatsTotal().bytes; const bool haveTotalStats = itemsTotal >= 0 || bytesTotal >= 0; @@ -272,14 +272,14 @@ void CompareProgressDialog::Impl::initNewPhase() } -void CompareProgressDialog::Impl::updateStaticGui() +void CompareProgressPanel::Impl::updateStaticGui() { bSizerErrorsIgnore->Show(ignoreErrors_); Layout(); } -void CompareProgressDialog::Impl::updateProgressGui() +void CompareProgressPanel::Impl::updateProgressGui() { assert(syncStat_); if (!syncStat_) //no comparison running!! @@ -294,10 +294,10 @@ void CompareProgressDialog::Impl::updateProgressGui() bool layoutChanged = false; //avoid screen flicker by calling layout() only if necessary const std::chrono::nanoseconds timeElapsed = stopWatch_.elapsed(); - const int itemsCurrent = syncStat_->getStatsCurrent(syncStat_->currentPhase()).items; - const int64_t bytesCurrent = syncStat_->getStatsCurrent(syncStat_->currentPhase()).bytes; - const int itemsTotal = syncStat_->getStatsTotal (syncStat_->currentPhase()).items; - const int64_t bytesTotal = syncStat_->getStatsTotal (syncStat_->currentPhase()).bytes; + const int itemsCurrent = syncStat_->getStatsCurrent().items; + const int64_t bytesCurrent = syncStat_->getStatsCurrent().bytes; + const int itemsTotal = syncStat_->getStatsTotal ().items; + const int64_t bytesTotal = syncStat_->getStatsTotal ().bytes; const bool haveTotalStats = itemsTotal >= 0 || bytesTotal >= 0; @@ -389,16 +389,16 @@ void CompareProgressDialog::Impl::updateProgressGui() //######################################################################################## //redirect to implementation -CompareProgressDialog::CompareProgressDialog(wxFrame& parentWindow) : pimpl_(new Impl(parentWindow)) {} //owned by parentWindow -wxWindow* CompareProgressDialog::getAsWindow() { return pimpl_; } -void CompareProgressDialog::init(const Statistics& syncStat, bool ignoreErrors, size_t automaticRetryCount) { pimpl_->init(syncStat, ignoreErrors, automaticRetryCount); } -void CompareProgressDialog::teardown() { pimpl_->teardown(); } -void CompareProgressDialog::initNewPhase() { pimpl_->initNewPhase(); } -void CompareProgressDialog::updateGui() { pimpl_->updateProgressGui(); } -bool CompareProgressDialog::getOptionIgnoreErrors() const { return pimpl_->getOptionIgnoreErrors(); } -void CompareProgressDialog::setOptionIgnoreErrors(bool ignoreErrors) { pimpl_->setOptionIgnoreErrors(ignoreErrors); } -void CompareProgressDialog::timerSetStatus(bool active) { pimpl_->timerSetStatus(active); } -bool CompareProgressDialog::timerIsRunning() const { return pimpl_->timerIsRunning(); } +CompareProgressPanel::CompareProgressPanel(wxFrame& parentWindow) : pimpl_(new Impl(parentWindow)) {} //owned by parentWindow +wxWindow* CompareProgressPanel::getAsWindow() { return pimpl_; } +void CompareProgressPanel::init(const Statistics& syncStat, bool ignoreErrors, size_t automaticRetryCount) { pimpl_->init(syncStat, ignoreErrors, automaticRetryCount); } +void CompareProgressPanel::teardown() { pimpl_->teardown(); } +void CompareProgressPanel::initNewPhase() { pimpl_->initNewPhase(); } +void CompareProgressPanel::updateGui() { pimpl_->updateProgressGui(); } +bool CompareProgressPanel::getOptionIgnoreErrors() const { return pimpl_->getOptionIgnoreErrors(); } +void CompareProgressPanel::setOptionIgnoreErrors(bool ignoreErrors) { pimpl_->setOptionIgnoreErrors(ignoreErrors); } +void CompareProgressPanel::timerSetStatus(bool active) { pimpl_->timerSetStatus(active); } +bool CompareProgressPanel::timerIsRunning() const { return pimpl_->timerIsRunning(); } //######################################################################################## @@ -440,7 +440,7 @@ private: /* //report some additional width by 5% elapsed time to make graph recalibrate before hitting the right border - //caveat: graph for batch mode binary comparison does NOT start at elapsed time 0!! PHASE_COMPARING_CONTENT and PHASE_SYNCHRONIZING! + //caveat: graph for batch mode binary comparison does NOT start at elapsed time 0!! ProcessPhase::comparingContent and ProcessPhase::synchronizing! //=> consider width of current sample set! upperEndMs += 0.05 *(upperEndMs - samples.begin()->first); */ @@ -651,7 +651,7 @@ public: size_t automaticRetryCount, PostSyncAction2 postSyncAction); - Result destroy(bool autoClose, bool restoreParentFrame, SyncResult finalStatus, const std::shared_ptr& log /*bound!*/) override; + Result destroy(bool autoClose, bool restoreParentFrame, SyncResult finalStatus, const SharedRef& log) override; wxWindow* getWindowIfVisible() override { return this->IsShown() ? this : nullptr; } //workaround OS X bug: if "this" is used as parent window for a modal dialog then this dialog will erroneously un-hide its parent! @@ -689,7 +689,7 @@ private: void OnMinimizeToTray(wxCommandEvent& event) { minimizeToTray(); } //void OnToggleIgnoreErrors(wxCommandEvent& event) { updateStaticGui(); } - void showSummary(SyncResult finalStatus, const std::shared_ptr& log /*bound!*/); + void showSummary(SyncResult finalStatus, const SharedRef& log); void minimizeToTray(); void resumeFromSystray(); @@ -851,8 +851,8 @@ SyncProgressDialogImpl::SyncProgressDialogImpl(long style, //wxF wxBitmap bmpSquare(this->GetCharHeight(), this->GetCharHeight()); //seems we don't need to pass 24-bit depth here even for high-contrast color schemes { wxMemoryDC dc(bmpSquare); - wxDCBrushChanger dummy(dc, fillCol); - wxDCPenChanger dummy2(dc, borderCol); + dc.SetBrush(fillCol); + dc.SetPen(borderCol); dc.DrawRectangle(wxPoint(), bmpSquare.GetSize()); } return bmpSquare; @@ -881,7 +881,7 @@ SyncProgressDialogImpl::SyncProgressDialogImpl(long style, //wxF updateStaticGui(); //null-status will be shown while waiting for dir locks - //make sure that standard height matches PHASE_COMPARING_CONTENT statistics layout (== largest) + //make sure that standard height matches ProcessPhase::comparingContent statistics layout (== largest) this->GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize() pnl_.Layout(); @@ -965,7 +965,7 @@ void SyncProgressDialogImpl::notifyProgressChange() //noexcept! { if (syncStat_) //sync running { - const ProgressStats stats = syncStat_->getStatsCurrent(syncStat_->currentPhase()); + const ProgressStats stats = syncStat_->getStatsCurrent(); curveDataBytes_->addRecord(stopWatch_.elapsed(), stats.bytes); curveDataItems_->addRecord(stopWatch_.elapsed(), stats.items); } @@ -1027,10 +1027,10 @@ void SyncProgressDialogImpl::updateProgressGui(bool allowYield) const std::chrono::nanoseconds timeElapsed = stopWatch_.elapsed(); const double timeElapsedDouble = std::chrono::duration(timeElapsed).count(); - const int itemsCurrent = syncStat_->getStatsCurrent(syncStat_->currentPhase()).items; - const int64_t bytesCurrent = syncStat_->getStatsCurrent(syncStat_->currentPhase()).bytes; - const int itemsTotal = syncStat_->getStatsTotal (syncStat_->currentPhase()).items; - const int64_t bytesTotal = syncStat_->getStatsTotal (syncStat_->currentPhase()).bytes; + const int itemsCurrent = syncStat_->getStatsCurrent().items; + const int64_t bytesCurrent = syncStat_->getStatsCurrent().bytes; + const int itemsTotal = syncStat_->getStatsTotal ().items; + const int64_t bytesTotal = syncStat_->getStatsTotal ().bytes; const bool haveTotalStats = itemsTotal >= 0 || bytesTotal >= 0; @@ -1208,12 +1208,12 @@ void SyncProgressDialogImpl::updateStaticGui() //depends on "syn switch (syncStat_->currentPhase()) { - case ProcessCallback::PHASE_NONE: - case ProcessCallback::PHASE_SCANNING: + case ProcessPhase::none: + case ProcessPhase::scanning: return getResourceImage(L"status_scanning"); - case ProcessCallback::PHASE_COMPARING_CONTENT: + case ProcessPhase::comparingContent: return getResourceImage(L"status_binary_compare"); - case ProcessCallback::PHASE_SYNCHRONIZING: + case ProcessPhase::synchronizing: return getResourceImage(L"status_syncing"); } assert(false); @@ -1228,8 +1228,8 @@ void SyncProgressDialogImpl::updateStaticGui() //depends on "syn taskbar_->setStatus(Taskbar::STATUS_PAUSED); else { - const int itemsTotal = syncStat_->getStatsTotal(syncStat_->currentPhase()).items; - const int64_t bytesTotal = syncStat_->getStatsTotal(syncStat_->currentPhase()).bytes; + const int itemsTotal = syncStat_->getStatsTotal().items; + const int64_t bytesTotal = syncStat_->getStatsTotal().bytes; const bool haveTotalStats = itemsTotal >= 0 || bytesTotal >= 0; @@ -1249,7 +1249,7 @@ void SyncProgressDialogImpl::updateStaticGui() //depends on "syn template -void SyncProgressDialogImpl::showSummary(SyncResult finalStatus, const std::shared_ptr& log /*bound!*/) +void SyncProgressDialogImpl::showSummary(SyncResult finalStatus, const SharedRef& log) { assert(syncStat_); //at the LATEST(!) to prevent access to currentStatusHandler @@ -1264,10 +1264,10 @@ void SyncProgressDialogImpl::showSummary(SyncResult finalStatus, updateProgressGui(false /*allowYield*/); //=================================================================================== - const int itemsProcessed = syncStat_->getStatsCurrent(syncStat_->currentPhase()).items; - const int64_t bytesProcessed = syncStat_->getStatsCurrent(syncStat_->currentPhase()).bytes; - const int itemsTotal = syncStat_->getStatsTotal (syncStat_->currentPhase()).items; - const int64_t bytesTotal = syncStat_->getStatsTotal (syncStat_->currentPhase()).bytes; + const int itemsProcessed = syncStat_->getStatsCurrent().items; + const int64_t bytesProcessed = syncStat_->getStatsCurrent().bytes; + const int itemsTotal = syncStat_->getStatsTotal ().items; + const int64_t bytesTotal = syncStat_->getStatsTotal ().bytes; //set overall speed (instead of current speed) const double timeDelta = std::chrono::duration(stopWatch_.elapsed() - phaseStart_).count(); @@ -1387,11 +1387,11 @@ void SyncProgressDialogImpl::showSummary(SyncResult finalStatus, //2. log file assert(pnl_.m_notebookResult->GetPageCount() == 1); LogPanel* logPanel = new LogPanel(pnl_.m_notebookResult); //owned by m_notebookResult - logPanel->setLog(log); + logPanel->setLog(log.ptr()); pnl_.m_notebookResult->AddPage(logPanel, _("Log"), false /*bSelect*/); //show log instead of graph if errors occurred! (not required for ignored warnings) - if (log->getItemCount(MSG_TYPE_ERROR | MSG_TYPE_FATAL_ERROR) > 0) + if (log.ref().getItemCount(MSG_TYPE_ERROR | MSG_TYPE_FATAL_ERROR) > 0) pnl_.m_notebookResult->ChangeSelection(pagePosLog); //fill image list to cope with wxNotebook image setting design desaster... @@ -1450,7 +1450,7 @@ void SyncProgressDialogImpl::showSummary(SyncResult finalStatus, template -auto SyncProgressDialogImpl::destroy(bool autoClose, bool restoreParentFrame, SyncResult finalStatus, const std::shared_ptr& log /*bound!*/) -> Result +auto SyncProgressDialogImpl::destroy(bool autoClose, bool restoreParentFrame, SyncResult finalStatus, const SharedRef& log) -> Result { if (autoClose) { @@ -1467,7 +1467,7 @@ auto SyncProgressDialogImpl::destroy(bool autoClose, bool restor //wait until user closes the dialog by pressing "okay" while (!okayPressed_) { - wxTheApp->Yield(); //*first* refresh GUI (removing flicker) before sleeping! + wxTheApp->Yield(); //refresh GUI *first* before sleeping! (remove flicker) std::this_thread::sleep_for(UI_UPDATE_INTERVAL); } restoreParentFrame = true; diff --git a/FreeFileSync/Source/ui/progress_indicator.h b/FreeFileSync/Source/ui/progress_indicator.h index 90f5ddcf..af8a079b 100644 --- a/FreeFileSync/Source/ui/progress_indicator.h +++ b/FreeFileSync/Source/ui/progress_indicator.h @@ -18,10 +18,10 @@ namespace fff { -class CompareProgressDialog +class CompareProgressPanel { public: - CompareProgressDialog(wxFrame& parentWindow); //CompareProgressDialog will be owned by parentWindow! + CompareProgressPanel(wxFrame& parentWindow); //CompareProgressPanel will be owned by parentWindow! wxWindow* getAsWindow(); //convenience! don't abuse! @@ -69,7 +69,7 @@ struct SyncProgressDialog size_t automaticRetryCount, PostSyncAction2 postSyncAction); struct Result { bool autoCloseDialog; }; - virtual Result destroy(bool autoClose, bool restoreParentFrame, SyncResult finalStatus, const std::shared_ptr& log /*bound!*/) = 0; + virtual Result destroy(bool autoClose, bool restoreParentFrame, SyncResult finalStatus, const zen::SharedRef& log) = 0; //--------------------------------------------------------------------------- virtual wxWindow* getWindowIfVisible() = 0; //may be nullptr; don't abuse, use as parent for modal dialogs only! diff --git a/FreeFileSync/Source/ui/search_grid.cpp b/FreeFileSync/Source/ui/search_grid.cpp index cd03aa8d..5a4bcabb 100644 --- a/FreeFileSync/Source/ui/search_grid.cpp +++ b/FreeFileSync/Source/ui/search_grid.cpp @@ -69,7 +69,7 @@ ptrdiff_t findRow(const Grid& grid, //return -1 if no matching row found if (auto prov = grid.getDataProvider()) { std::vector colAttr = grid.getColumnConfig(); - eraseIf(colAttr, [](const Grid::ColAttributes& ca) { return !ca.visible; }); + std::erase_if(colAttr, [](const Grid::ColAttributes& ca) { return !ca.visible; }); if (!colAttr.empty()) { const MatchFound matchFound(searchString); diff --git a/FreeFileSync/Source/ui/small_dlgs.cpp b/FreeFileSync/Source/ui/small_dlgs.cpp index aeb36d6a..256100fd 100644 --- a/FreeFileSync/Source/ui/small_dlgs.cpp +++ b/FreeFileSync/Source/ui/small_dlgs.cpp @@ -34,7 +34,7 @@ #include "../base/synchronization.h" #include "../base/help_provider.h" #include "../base/path_filter.h" -#include "../base/status_handler.h" //updateUiIsAllowed() +#include "../base/status_handler.h" //uiUpdateDue() #include "../base/log_file.h" #include "../base/icon_buffer.h" #include "../version/version.h" @@ -687,7 +687,7 @@ public: std::span rowsOnLeft, std::span rowsOnRight, Zstring& lastUsedPath, - const std::shared_ptr& folderHistory, + SharedRef& folderHistory, bool& keepRelPaths, bool& overwriteIfExists); @@ -699,7 +699,7 @@ private: void onLocalKeyEvent(wxKeyEvent& event); std::unique_ptr targetFolder; //always bound - std::shared_ptr folderHistory_; + SharedRef folderHistory_; //output-only parameters: Zstring& lastUsedPathOut_; @@ -712,7 +712,7 @@ CopyToDialog::CopyToDialog(wxWindow* parent, std::span rowsOnLeft, std::span rowsOnRight, Zstring& lastUsedPath, - const std::shared_ptr& folderHistory, + SharedRef& folderHistory, bool& keepRelPaths, bool& overwriteIfExists) : CopyToDlgGenerated(parent), @@ -745,14 +745,14 @@ CopyToDialog::CopyToDialog(wxWindow* parent, http://trac.wxwidgets.org/ticket/14823 "Menu not disabled when showing modal dialogs in wxGTK under Unity" */ - const std::pair selectionInfo = getSelectedItemsAsString(rowsOnLeft, rowsOnRight); + const auto [itemList, itemCount] = getSelectedItemsAsString(rowsOnLeft, rowsOnRight); const wxString header = _P("Copy the following item to another folder?", - "Copy the following %x items to another folder?", selectionInfo.second); + "Copy the following %x items to another folder?", itemCount); m_staticTextHeader->SetLabel(header); m_staticTextHeader->Wrap(fastFromDIP(460)); //needs to be reapplied after SetLabel() - m_textCtrlFileList->ChangeValue(selectionInfo.first); + m_textCtrlFileList->ChangeValue(itemList); //----------------- set config --------------------------------- targetFolder ->setPath(lastUsedPath); @@ -793,7 +793,7 @@ void CopyToDialog::OnOK(wxCommandEvent& event) keepRelPathsOut_ = m_checkBoxKeepRelPath->GetValue(); overwriteIfExistsOut_ = m_checkBoxOverwriteIfExists->GetValue(); - folderHistory_->addItem(lastUsedPathOut_); + folderHistory_.ref().addItem(lastUsedPathOut_); EndModal(ReturnSmallDlg::BUTTON_OKAY); } @@ -809,12 +809,12 @@ ReturnSmallDlg::ButtonPressed fff::showCopyToDialog(wxWindow* parent, bool& overwriteIfExists) { - auto folderHistory = std::make_shared(folderPathHistory, historySizeMax); + auto folderHistory = makeSharedRef(folderPathHistory, historySizeMax); CopyToDialog dlg(parent, rowsOnLeft, rowsOnRight, lastUsedPath, folderHistory, keepRelPaths, overwriteIfExists); const auto rc = static_cast(dlg.ShowModal()); - folderPathHistory = folderHistory->getList(); //unconditionally write path history: support manual item deletion + cancel + folderPathHistory = folderHistory.ref().getList(); //unconditionally write path history: support manual item deletion + cancel return rc; } @@ -882,27 +882,26 @@ DeleteDialog::DeleteDialog(wxWindow* parent, void DeleteDialog::updateGui() { - const std::pair delInfo = getSelectedItemsAsString(rowsToDeleteOnLeft_, - rowsToDeleteOnRight_); + const auto [itemList, itemCount] = getSelectedItemsAsString(rowsToDeleteOnLeft_, rowsToDeleteOnRight_); wxString header; if (m_checkBoxUseRecycler->GetValue()) { header = _P("Do you really want to move the following item to the recycle bin?", - "Do you really want to move the following %x items to the recycle bin?", delInfo.second); + "Do you really want to move the following %x items to the recycle bin?", itemCount); m_bitmapDeleteType->SetBitmap(getResourceImage(L"delete_recycler")); m_buttonOK->SetLabel(_("Move")); //no access key needed: use ENTER! } else { header = _P("Do you really want to delete the following item?", - "Do you really want to delete the following %x items?", delInfo.second); + "Do you really want to delete the following %x items?", itemCount); m_bitmapDeleteType->SetBitmap(getResourceImage(L"delete_permanently")); m_buttonOK->SetLabel(replaceCpy(_("&Delete"), L"&", L"")); } m_staticTextHeader->SetLabel(header); m_staticTextHeader->Wrap(fastFromDIP(460)); //needs to be reapplied after SetLabel() - m_textCtrlFileList->ChangeValue(delInfo.first); + m_textCtrlFileList->ChangeValue(itemList); /* There is a nasty bug on wxGTK under Ubuntu: If a multi-line wxTextCtrl contains so many lines that scrollbars are shown, it re-enables all windows that are supposed to be disabled during the current modal loop! @@ -1619,12 +1618,12 @@ public: void notifyNewFile (const Zstring& filePath) { filePath_ = filePath; } void notifyProgress(int64_t delta) { bytesCurrent_ += delta; } - void requestUiRefresh() //throw CancelPressed + void requestUiUpdate() //throw CancelPressed { if (cancelled_) throw CancelPressed(); - if (updateUiIsAllowed()) + if (uiUpdateDue()) { updateGui(); //wxTheApp->Yield(); @@ -1690,7 +1689,7 @@ DownloadProgressWindow::~DownloadProgressWindow() { pimpl_->Destroy(); } void DownloadProgressWindow::notifyNewFile(const Zstring& filePath) { pimpl_->notifyNewFile(filePath); } void DownloadProgressWindow::notifyProgress(int64_t delta) { pimpl_->notifyProgress(delta); } -void DownloadProgressWindow::requestUiRefresh() { pimpl_->requestUiRefresh(); } //throw CancelPressed +void DownloadProgressWindow::requestUiUpdate() { pimpl_->requestUiUpdate(); } //throw CancelPressed //######################################################################################## diff --git a/FreeFileSync/Source/ui/small_dlgs.h b/FreeFileSync/Source/ui/small_dlgs.h index f3636a0c..a37cf51b 100644 --- a/FreeFileSync/Source/ui/small_dlgs.h +++ b/FreeFileSync/Source/ui/small_dlgs.h @@ -74,7 +74,7 @@ public: struct CancelPressed {}; void notifyNewFile(const Zstring& filePath); void notifyProgress(int64_t delta); - void requestUiRefresh(); //throw CancelPressed + void requestUiUpdate(); //throw CancelPressed private: class Impl; diff --git a/FreeFileSync/Source/ui/sorting.h b/FreeFileSync/Source/ui/sorting.h deleted file mode 100644 index 24a8b9c8..00000000 --- a/FreeFileSync/Source/ui/sorting.h +++ /dev/null @@ -1,200 +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 SORTING_H_82574232452345 -#define SORTING_H_82574232452345 - -#include -#include "../base/file_hierarchy.h" - - -namespace fff -{ -namespace -{ -struct CompileTimeReminder : public FSObjectVisitor -{ - void visit(const FilePair& file ) override {} - void visit(const SymlinkPair& symlink) override {} - void visit(const FolderPair& folder ) override {} -} checkDymanicCasts; //just a compile-time reminder to manually check dynamic casts in this file if ever needed -} - - -inline -bool isDirectoryPair(const FileSystemObject& fsObj) -{ - return dynamic_cast(&fsObj) != nullptr; -} - - -template inline -bool lessShortFileName(const FileSystemObject& a, const FileSystemObject& b) -{ - //sort order: first files/symlinks, then directories then empty rows - - //empty rows always last - if (a.isEmpty()) - return false; - else if (b.isEmpty()) - return true; - - //directories after files/symlinks: - if (isDirectoryPair(a)) - { - if (!isDirectoryPair(b)) - return false; - } - else if (isDirectoryPair(b)) - return true; - - //sort directories and files/symlinks by short name - return zen::makeSortDirection(LessNaturalSort() /*even on Linux*/, std::bool_constant())(a.getItemName(), b.getItemName()); -} - - -template inline -bool lessFullPath(const FileSystemObject& a, const FileSystemObject& b) -{ - //empty rows always last - if (a.isEmpty()) - return false; - else if (b.isEmpty()) - return true; - - return zen::makeSortDirection(LessNaturalSort() /*even on Linux*/, std::bool_constant())( - zen::utfTo(AFS::getDisplayPath(a.getAbstractPath())), - zen::utfTo(AFS::getDisplayPath(b.getAbstractPath()))); -} - - -template inline //side currently unused! -bool lessRelativeFolder(const FileSystemObject& a, const FileSystemObject& b) -{ - const bool isDirectoryA = isDirectoryPair(a); - const Zstring& relFolderA = isDirectoryA ? - a.getRelativePathAny() : - a.parent().getRelativePathAny(); - - const bool isDirectoryB = isDirectoryPair(b); - const Zstring& relFolderB = isDirectoryB ? - b.getRelativePathAny() : - b.parent().getRelativePathAny(); - - //compare relative names without filepaths first - const int rv = compareNatural(relFolderA, relFolderB); - if (rv != 0) - return zen::makeSortDirection(std::less(), std::bool_constant())(rv, 0); - - //make directories always appear before contained files - if (isDirectoryB) - return false; - else if (isDirectoryA) - return true; - - return zen::makeSortDirection(LessNaturalSort(), std::bool_constant())(a.getItemNameAny(), b.getItemNameAny()); -} - - -template inline -bool lessFilesize(const FileSystemObject& a, const FileSystemObject& b) -{ - //empty rows always last - if (a.isEmpty()) - return false; - else if (b.isEmpty()) - return true; - - //directories second last - if (isDirectoryPair(a)) - return false; - else if (isDirectoryPair(b)) - return true; - - const FilePair* fileA = dynamic_cast(&a); - const FilePair* fileB = dynamic_cast(&b); - - //then symlinks - if (!fileA) - return false; - else if (!fileB) - return true; - - //return list beginning with largest files first - return zen::makeSortDirection(std::less<>(), std::bool_constant())(fileA->getFileSize(), fileB->getFileSize()); -} - - -template inline -bool lessFiletime(const FileSystemObject& a, const FileSystemObject& b) -{ - if (a.isEmpty()) - return false; //empty rows always last - else if (b.isEmpty()) - return true; //empty rows always last - - const FilePair* fileA = dynamic_cast(&a); - const FilePair* fileB = dynamic_cast(&b); - - const SymlinkPair* symlinkA = dynamic_cast(&a); - const SymlinkPair* symlinkB = dynamic_cast(&b); - - if (!fileA && !symlinkA) - return false; //directories last - else if (!fileB && !symlinkB) - return true; //directories last - - const int64_t dateA = fileA ? fileA->getLastWriteTime() : symlinkA->getLastWriteTime(); - const int64_t dateB = fileB ? fileB->getLastWriteTime() : symlinkB->getLastWriteTime(); - - //return list beginning with newest files first - return zen::makeSortDirection(std::less<>(), std::bool_constant())(dateA, dateB); -} - - -template inline -bool lessExtension(const FileSystemObject& a, const FileSystemObject& b) -{ - if (a.isEmpty()) - return false; //empty rows always last - else if (b.isEmpty()) - return true; //empty rows always last - - if (dynamic_cast(&a)) - return false; //directories last - else if (dynamic_cast(&b)) - return true; //directories last - - auto getExtension = [](const FileSystemObject& fsObj) - { - return afterLast(fsObj.getItemName(), Zstr('.'), zen::IF_MISSING_RETURN_NONE); - }; - - return zen::makeSortDirection(LessNaturalSort() /*even on Linux*/, std::bool_constant())(getExtension(a), getExtension(b)); -} - - -template inline -bool lessCmpResult(const FileSystemObject& a, const FileSystemObject& b) -{ - //presort result: equal shall appear at end of list - if (a.getCategory() == FILE_EQUAL) - return false; - if (b.getCategory() == FILE_EQUAL) - return true; - - return zen::makeSortDirection(std::less(), std::bool_constant())(a.getCategory(), b.getCategory()); -} - - -template inline -bool lessSyncDirection(const FileSystemObject& a, const FileSystemObject& b) -{ - return zen::makeSortDirection(std::less<>(), std::bool_constant())(a.getSyncOperation(), b.getSyncOperation()); -} -} - -#endif //SORTING_H_82574232452345 diff --git a/FreeFileSync/Source/ui/sync_cfg.cpp b/FreeFileSync/Source/ui/sync_cfg.cpp index 1530cfbd..1711f382 100644 --- a/FreeFileSync/Source/ui/sync_cfg.cpp +++ b/FreeFileSync/Source/ui/sync_cfg.cpp @@ -75,9 +75,9 @@ private: void OnToggleIgnoreErrors (wxCommandEvent& event) override { updateMiscGui(); } void OnToggleAutoRetry (wxCommandEvent& event) override { updateMiscGui(); } - void OnCompByTimeSize (wxCommandEvent& event) override { localCmpVar_ = CompareVariant::TIME_SIZE; updateCompGui(); updateSyncGui(); } // - void OnCompByContent (wxCommandEvent& event) override { localCmpVar_ = CompareVariant::CONTENT; updateCompGui(); updateSyncGui(); } //affects sync settings, too! - void OnCompBySize (wxCommandEvent& event) override { localCmpVar_ = CompareVariant::SIZE; updateCompGui(); updateSyncGui(); } // + void OnCompByTimeSize (wxCommandEvent& event) override { localCmpVar_ = CompareVariant::timeSize; updateCompGui(); updateSyncGui(); } // + void OnCompByContent (wxCommandEvent& event) override { localCmpVar_ = CompareVariant::content; updateCompGui(); updateSyncGui(); } //affects sync settings, too! + void OnCompBySize (wxCommandEvent& event) override { localCmpVar_ = CompareVariant::size; updateCompGui(); updateSyncGui(); } // void OnCompByTimeSizeDouble (wxMouseEvent& event) override; void OnCompBySizeDouble (wxMouseEvent& event) override; void OnCompByContentDouble (wxMouseEvent& event) override; @@ -88,7 +88,7 @@ private: void updateCompGui(); - CompareVariant localCmpVar_ = CompareVariant::TIME_SIZE; + CompareVariant localCmpVar_ = CompareVariant::timeSize; std::set devicesForEdit_; //helper data for deviceParallelOps std::map deviceParallelOps_; // @@ -132,9 +132,9 @@ private: void OnDifferent (wxCommandEvent& event) override; void OnConflict (wxCommandEvent& event) override; - void OnDeletionPermanent (wxCommandEvent& event) override { handleDeletion_ = DeletionPolicy::PERMANENT; updateSyncGui(); } - void OnDeletionRecycler (wxCommandEvent& event) override { handleDeletion_ = DeletionPolicy::RECYCLER; updateSyncGui(); } - void OnDeletionVersioning (wxCommandEvent& event) override { handleDeletion_ = DeletionPolicy::VERSIONING; updateSyncGui(); } + void OnDeletionPermanent (wxCommandEvent& event) override { handleDeletion_ = DeletionPolicy::permanent; updateSyncGui(); } + void OnDeletionRecycler (wxCommandEvent& event) override { handleDeletion_ = DeletionPolicy::recycler; updateSyncGui(); } + void OnDeletionVersioning (wxCommandEvent& event) override { handleDeletion_ = DeletionPolicy::versioning; updateSyncGui(); } void OnHelpDetectMovedFiles(wxHyperlinkEvent& event) override { displayHelpEntry(L"synchronization-settings", this); } void OnHelpVersioning (wxHyperlinkEvent& event) override { displayHelpEntry(L"versioning", this); } @@ -146,7 +146,7 @@ private: //parameters with ownership NOT within GUI controls! DirectionConfig directionCfg_; - DeletionPolicy handleDeletion_ = DeletionPolicy::RECYCLER; //use Recycler, delete permanently or move to user-defined location + DeletionPolicy handleDeletion_ = DeletionPolicy::recycler; //use Recycler, delete permanently or move to user-defined location const std::function getDeviceParallelOps_; const std::function setDeviceParallelOps_; @@ -193,11 +193,11 @@ std::wstring getCompVariantDescription(CompareVariant var) { switch (var) { - case CompareVariant::TIME_SIZE: + case CompareVariant::timeSize: return _("Identify equal files by comparing modification time and size."); - case CompareVariant::CONTENT: + case CompareVariant::content: return _("Identify equal files by comparing the file content."); - case CompareVariant::SIZE: + case CompareVariant::size: return _("Identify equal files by comparing their file size."); } assert(false); @@ -300,9 +300,9 @@ commandHistItemsMax_(commandHistItemsMax) setRelativeFontSize(*m_toggleBtnBySize, 1.25); setRelativeFontSize(*m_toggleBtnByContent, 1.25); - m_toggleBtnByTimeSize->SetToolTip(getCompVariantDescription(CompareVariant::TIME_SIZE)); - m_toggleBtnByContent ->SetToolTip(getCompVariantDescription(CompareVariant::CONTENT)); - m_toggleBtnBySize ->SetToolTip(getCompVariantDescription(CompareVariant::SIZE)); + m_toggleBtnByTimeSize->SetToolTip(getCompVariantDescription(CompareVariant::timeSize)); + m_toggleBtnByContent ->SetToolTip(getCompVariantDescription(CompareVariant::content)); + m_toggleBtnBySize ->SetToolTip(getCompVariantDescription(CompareVariant::size)); m_staticTextCompVarDescription->SetMinSize(wxSize(fastFromDIP(CFG_DESCRIPTION_WIDTH_DIP), -1)); @@ -372,9 +372,9 @@ commandHistItemsMax_(commandHistItemsMax) m_toggleBtnVersioning->SetToolTip(_("Move files to a user-defined folder")); enumVersioningStyle_. - add(VersioningStyle::REPLACE, _("Replace"), _("Move files and replace if existing")). - add(VersioningStyle::TIMESTAMP_FOLDER, _("Time stamp") + L" [" + _("Folder") + L"]", _("Move files into a time-stamped subfolder")). - add(VersioningStyle::TIMESTAMP_FILE, _("Time stamp") + L" [" + _("File") + L"]", _("Append a time stamp to each file name")); + add(VersioningStyle::replace, _("Replace"), _("Move files and replace if existing")). + add(VersioningStyle::timestampFolder, _("Time stamp") + L" [" + _("Folder") + L"]", _("Move files into a time-stamped subfolder")). + add(VersioningStyle::timestampFile, _("Time stamp") + L" [" + _("File") + L"]", _("Append a time stamp to each file name")); m_spinCtrlVersionMaxDays ->SetMinSize(wxSize(fastFromDIP(60), -1)); // m_spinCtrlVersionCountMin->SetMinSize(wxSize(fastFromDIP(60), -1)); //Hack: set size (why does wxWindow::Size() not work?) @@ -417,9 +417,9 @@ commandHistItemsMax_(commandHistItemsMax) //temporarily set main config as reference for window height calculations: globalPairCfg_ = GlobalPairConfig(); globalPairCfg_.syncCfg.directionCfg.var = DirectionConfig::MIRROR; // - globalPairCfg_.syncCfg.handleDeletion = DeletionPolicy::VERSIONING; // + globalPairCfg_.syncCfg.handleDeletion = DeletionPolicy::versioning; // globalPairCfg_.syncCfg.versioningFolderPhrase = Zstr("dummy"); //set tentatively for sync dir height calculation below - globalPairCfg_.syncCfg.versioningStyle = VersioningStyle::TIMESTAMP_FILE; // + globalPairCfg_.syncCfg.versioningStyle = VersioningStyle::timestampFile; // globalPairCfg_.syncCfg.versionMaxAgeDays = 30; // globalPairCfg_.miscCfg.altLogFolderPathPhrase = Zstr("dummy"); // @@ -631,26 +631,26 @@ void ConfigDialog::updateCompGui() if (compOptionsEnabled) //help wxWidgets a little to render inactive config state (needed on Windows, NOT on Linux!) switch (localCmpVar_) { - case CompareVariant::TIME_SIZE: + case CompareVariant::timeSize: m_toggleBtnByTimeSize->SetValue(true); break; - case CompareVariant::CONTENT: + case CompareVariant::content: m_toggleBtnByContent->SetValue(true); break; - case CompareVariant::SIZE: + case CompareVariant::size: m_toggleBtnBySize->SetValue(true); break; } switch (localCmpVar_) //unconditionally update image, including "local options off" { - case CompareVariant::TIME_SIZE: + case CompareVariant::timeSize: setBitmap(*m_bitmapCompVariant, getResourceImage(L"cmp_file_time")); break; - case CompareVariant::CONTENT: + case CompareVariant::content: setBitmap(*m_bitmapCompVariant, getResourceImage(L"cmp_file_content")); break; - case CompareVariant::SIZE: + case CompareVariant::size: setBitmap(*m_bitmapCompVariant, getResourceImage(L"cmp_file_size")); break; } @@ -949,7 +949,7 @@ std::optional ConfigDialog::getSyncConfig() const syncCfg.handleDeletion = handleDeletion_; syncCfg.versioningFolderPhrase = versioningFolder_.getPath(); syncCfg.versioningStyle = getEnumVal(enumVersioningStyle_, *m_choiceVersioningStyle); - if (syncCfg.versioningStyle != VersioningStyle::REPLACE) + if (syncCfg.versioningStyle != VersioningStyle::replace) { syncCfg.versionMaxAgeDays = m_checkBoxVersionMaxDays ->GetValue() ? m_spinCtrlVersionMaxDays->GetValue() : 0; syncCfg.versionCountMin = m_checkBoxVersionCountMin->GetValue() && m_checkBoxVersionMaxDays->GetValue() ? m_spinCtrlVersionCountMin->GetValue() : 0; @@ -971,7 +971,7 @@ void ConfigDialog::setSyncConfig(const SyncConfig* syncCfg) versioningFolder_.setPath(tmpCfg.versioningFolderPhrase); setEnumVal(enumVersioningStyle_, *m_choiceVersioningStyle, tmpCfg.versioningStyle); - const bool useVersionLimits = tmpCfg.versioningStyle != VersioningStyle::REPLACE; + const bool useVersionLimits = tmpCfg.versioningStyle != VersioningStyle::replace; m_checkBoxVersionMaxDays ->SetValue(useVersionLimits && tmpCfg.versionMaxAgeDays > 0); m_checkBoxVersionCountMin->SetValue(useVersionLimits && tmpCfg.versionCountMin > 0 && tmpCfg.versionMaxAgeDays > 0); @@ -1025,13 +1025,13 @@ void ConfigDialog::updateSyncGui() { const CompareVariant activeCmpVar = m_checkBoxUseLocalCmpOptions->GetValue() ? localCmpVar_ : globalPairCfg_.cmpCfg.compareVar; - m_bitmapLeftNewer ->Show(activeCmpVar == CompareVariant::TIME_SIZE); - m_bpButtonLeftNewer ->Show(activeCmpVar == CompareVariant::TIME_SIZE); - m_bitmapRightNewer ->Show(activeCmpVar == CompareVariant::TIME_SIZE); - m_bpButtonRightNewer->Show(activeCmpVar == CompareVariant::TIME_SIZE); + m_bitmapLeftNewer ->Show(activeCmpVar == CompareVariant::timeSize); + m_bpButtonLeftNewer ->Show(activeCmpVar == CompareVariant::timeSize); + m_bitmapRightNewer ->Show(activeCmpVar == CompareVariant::timeSize); + m_bpButtonRightNewer->Show(activeCmpVar == CompareVariant::timeSize); - m_bitmapDifferent ->Show(activeCmpVar == CompareVariant::CONTENT || activeCmpVar == CompareVariant::SIZE); - m_bpButtonDifferent->Show(activeCmpVar == CompareVariant::CONTENT || activeCmpVar == CompareVariant::SIZE); + m_bitmapDifferent ->Show(activeCmpVar == CompareVariant::content || activeCmpVar == CompareVariant::size); + m_bpButtonDifferent->Show(activeCmpVar == CompareVariant::content || activeCmpVar == CompareVariant::size); } //active variant description: @@ -1068,34 +1068,34 @@ void ConfigDialog::updateSyncGui() if (syncOptionsEnabled) //help wxWidgets a little to render inactive config state (needed on Windows, NOT on Linux!) switch (handleDeletion_) //unconditionally update image, including "local options off" { - case DeletionPolicy::RECYCLER: + case DeletionPolicy::recycler: m_toggleBtnRecycler->SetValue(true); break; - case DeletionPolicy::PERMANENT: + case DeletionPolicy::permanent: m_toggleBtnPermanent->SetValue(true); break; - case DeletionPolicy::VERSIONING: + case DeletionPolicy::versioning: m_toggleBtnVersioning->SetValue(true); break; } switch (handleDeletion_) //unconditionally update image, including "local options off" { - case DeletionPolicy::RECYCLER: + case DeletionPolicy::recycler: setBitmap(*m_bitmapDeletionType, getResourceImage(L"delete_recycler")); setText(*m_staticTextDeletionTypeDescription, _("Retain deleted and overwritten files in the recycle bin")); break; - case DeletionPolicy::PERMANENT: + case DeletionPolicy::permanent: setBitmap(*m_bitmapDeletionType, getResourceImage(L"delete_permanently")); setText(*m_staticTextDeletionTypeDescription, _("Delete and overwrite files permanently")); break; - case DeletionPolicy::VERSIONING: + case DeletionPolicy::versioning: setBitmap(*m_bitmapVersioning, getResourceImage(L"delete_versioning")); break; } //m_staticTextDeletionTypeDescription->Wrap(fastFromDIP(200)); //needs to be reapplied after SetLabel() - const bool versioningSelected = handleDeletion_ == DeletionPolicy::VERSIONING; + const bool versioningSelected = handleDeletion_ == DeletionPolicy::versioning; m_bitmapDeletionType ->Show(!versioningSelected); m_staticTextDeletionTypeDescription->Show(!versioningSelected); @@ -1110,26 +1110,26 @@ void ConfigDialog::updateSyncGui() switch (versioningStyle) { - case VersioningStyle::REPLACE: + case VersioningStyle::replace: setText(*m_staticTextNamingCvtPart1, pathSep + _("Folder") + pathSep + _("File") + L".doc"); setText(*m_staticTextNamingCvtPart2Bold, L""); setText(*m_staticTextNamingCvtPart3, L""); break; - case VersioningStyle::TIMESTAMP_FOLDER: + case VersioningStyle::timestampFolder: setText(*m_staticTextNamingCvtPart1, pathSep); setText(*m_staticTextNamingCvtPart2Bold, _("YYYY-MM-DD hhmmss")); setText(*m_staticTextNamingCvtPart3, pathSep + _("Folder") + pathSep + _("File") + L".doc "); break; - case VersioningStyle::TIMESTAMP_FILE: + case VersioningStyle::timestampFile: setText(*m_staticTextNamingCvtPart1, pathSep + _("Folder") + pathSep + _("File") + L".doc "); setText(*m_staticTextNamingCvtPart2Bold, _("YYYY-MM-DD hhmmss")); setText(*m_staticTextNamingCvtPart3, L".doc"); break; } - const bool enableLimitCtrls = syncOptionsEnabled && versioningStyle != VersioningStyle::REPLACE; + const bool enableLimitCtrls = syncOptionsEnabled && versioningStyle != VersioningStyle::replace; const bool showLimitCtrls = m_checkBoxVersionMaxDays->GetValue() || m_checkBoxVersionCountMax->GetValue(); //m_checkBoxVersionCountMin->GetValue() => irrelevant if !m_checkBoxVersionMaxDays->GetValue()! @@ -1324,10 +1324,10 @@ void ConfigDialog::selectFolderPairConfig(int newPairIndexToShow) addDevicePath(fpCfg.folderPathPhraseLeft); addDevicePath(fpCfg.folderPathPhraseRight); - if (fpCfg.localSyncCfg && fpCfg.localSyncCfg->handleDeletion == DeletionPolicy::VERSIONING) + if (fpCfg.localSyncCfg && fpCfg.localSyncCfg->handleDeletion == DeletionPolicy::versioning) addDevicePath(fpCfg.localSyncCfg->versioningFolderPhrase); } - if (globalPairCfg_.syncCfg.handleDeletion == DeletionPolicy::VERSIONING) //let's always add, even if *all* folder pairs use a local sync config (=> strange!) + if (globalPairCfg_.syncCfg.handleDeletion == DeletionPolicy::versioning) //let's always add, even if *all* folder pairs use a local sync config (=> strange!) addDevicePath(globalPairCfg_.syncCfg.versioningFolderPhrase); //--------------------------------------------------------------------------------------------------------------- @@ -1359,7 +1359,7 @@ bool ConfigDialog::unselectFolderPairConfig() if (trimCpy(filterCfg.includeFilter).empty()) filterCfg.includeFilter = FilterConfig().includeFilter; //no need to show error message, just correct user input - if (syncCfg && syncCfg->handleDeletion == DeletionPolicy::VERSIONING) + if (syncCfg && syncCfg->handleDeletion == DeletionPolicy::versioning) { if (AFS::isNullPath(createAbstractPath(syncCfg->versioningFolderPhrase))) { @@ -1370,7 +1370,7 @@ bool ConfigDialog::unselectFolderPairConfig() return false; } - if (syncCfg->versioningStyle != VersioningStyle::REPLACE && + if (syncCfg->versioningStyle != VersioningStyle::replace && syncCfg->versionMaxAgeDays > 0 && syncCfg->versionCountMin > 0 && syncCfg->versionCountMax > 0 && diff --git a/FreeFileSync/Source/ui/tree_grid.cpp b/FreeFileSync/Source/ui/tree_grid.cpp index d62e0a48..f6ebc8f5 100644 --- a/FreeFileSync/Source/ui/tree_grid.cpp +++ b/FreeFileSync/Source/ui/tree_grid.cpp @@ -352,7 +352,7 @@ void TreeView::applySubView(std::vector&& newView) const TreeLine& line = flatTree_[row]; if (auto hierObj = getHierAlias(line)) - if (expandedNodes.find(hierObj) != expandedNodes.end()) + if (contains(expandedNodes, hierObj)) { std::vector newLines; getChildren(*line.node, line.level + 1, newLines); @@ -491,14 +491,14 @@ ptrdiff_t TreeView::getParent(size_t row) const } -void TreeView::updateCmpResult(bool showExcluded, - bool leftOnlyFilesActive, - bool rightOnlyFilesActive, - bool leftNewerFilesActive, - bool rightNewerFilesActive, - bool differentFilesActive, - bool equalFilesActive, - bool conflictFilesActive) +void TreeView::applyFilterByCategory(bool showExcluded, + bool leftOnlyFilesActive, + bool rightOnlyFilesActive, + bool leftNewerFilesActive, + bool rightNewerFilesActive, + bool differentFilesActive, + bool equalFilesActive, + bool conflictFilesActive) { updateView([showExcluded, //make sure the predicate can be stored safely! leftOnlyFilesActive, @@ -536,16 +536,16 @@ void TreeView::updateCmpResult(bool showExcluded, } -void TreeView::updateSyncPreview(bool showExcluded, - bool syncCreateLeftActive, - bool syncCreateRightActive, - bool syncDeleteLeftActive, - bool syncDeleteRightActive, - bool syncDirOverwLeftActive, - bool syncDirOverwRightActive, - bool syncDirNoneActive, - bool syncEqualActive, - bool conflictFilesActive) +void TreeView::applyFilterByAction(bool showExcluded, + bool syncCreateLeftActive, + bool syncCreateRightActive, + bool syncDeleteLeftActive, + bool syncDeleteRightActive, + bool syncDirOverwLeftActive, + bool syncDirOverwRightActive, + bool syncDirNoneActive, + bool syncEqualActive, + bool conflictFilesActive) { updateView([showExcluded, //make sure the predicate can be stored safely! syncCreateLeftActive, @@ -601,7 +601,7 @@ void TreeView::setData(FolderComparison& newData) folderCmp_ = newData; //remove truly empty folder pairs as early as this: we want to distinguish single/multiple folder pair cases by looking at "folderCmp" - eraseIf(folderCmp_, [](const std::shared_ptr& baseObj) + std::erase_if(folderCmp_, [](const std::shared_ptr& baseObj) { return AFS::isNullPath(baseObj->getAbstractPath< LEFT_SIDE>()) && AFS::isNullPath(baseObj->getAbstractPath()); @@ -674,7 +674,7 @@ wxColor getColorForLevel(size_t level) case 2: return { 0xff, 0xff, 0x99 }; case 3: - return { 0xcc, 0xcc, 0xcc }; + return { 0xdd, 0xdd, 0xdd }; case 4: return { 0xff, 0xcc, 0xff }; case 5: @@ -773,6 +773,8 @@ private: void renderColumnLabel(Grid& tree, wxDC& dc, const wxRect& rect, ColumnType colType, bool highlighted) override { + const auto colTypeTree = static_cast(colType); + const wxRect rectInner = drawColumnLabelBackground(dc, rect, highlighted); wxRect rectRemain = rectInner; @@ -780,10 +782,10 @@ private: rectRemain.width -= getColumnGapLeft(); drawColumnLabelText(dc, rectRemain, getColumnLabel(colType)); - auto sortInfo = treeDataView_.getSortDirection(); - if (colType == static_cast(sortInfo.first)) + const auto [sortCol, ascending] = treeDataView_.getSortDirection(); + if (colTypeTree == sortCol) { - const wxBitmap& marker = getResourceImage(sortInfo.second ? L"sort_ascending" : L"sort_descending"); + const wxBitmap& marker = getResourceImage(ascending ? L"sort_ascending" : L"sort_descending"); drawBitmapRtlNoMirror(dc, marker, rectInner, wxALIGN_CENTER_HORIZONTAL); } } @@ -859,7 +861,7 @@ private: dc.DrawRectangle(areaPercTmp); } - wxDCTextColourChanger dummy3(dc, *wxBLACK); //accessibility: always set both foreground AND background colors! + wxDCTextColourChanger textColor(dc, *wxBLACK); //accessibility: always set both foreground AND background colors! drawCellText(dc, areaPerc, numberTo(node->percent_) + L"%", wxALIGN_CENTER); rectTmp.x += percentageBarWidth_ + 2 * gridGap_; @@ -920,9 +922,9 @@ private: if (rectTmp.width > 0) { - wxDCTextColourChanger dummy(dc); + wxDCTextColourChanger textColor(dc); if (!isActive) - dummy.Set(wxSystemSettings::GetColour(wxSYS_COLOUR_GRAYTEXT)); + textColor.Set(wxSystemSettings::GetColour(wxSYS_COLOUR_GRAYTEXT)); drawCellText(dc, rectTmp, getValue(row, colType), wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL); } @@ -1155,11 +1157,11 @@ private: void onGridLabelLeftClick(GridLabelClickEvent& event) { const auto colTypeTree = static_cast(event.colType_); - bool sortAscending = getDefaultSortDirection(colTypeTree); - const auto sortInfo = treeDataView_.getSortDirection(); - if (sortInfo.first == colTypeTree) - sortAscending = !sortInfo.second; + bool sortAscending = getDefaultSortDirection(colTypeTree); + const auto [sortCol, ascending] = treeDataView_.getSortDirection(); + if (sortCol == colTypeTree) + sortAscending = !ascending; treeDataView_.setSortDirection(colTypeTree, sortAscending); grid_.clearSelection(GridEventPolicy::ALLOW); diff --git a/FreeFileSync/Source/ui/tree_grid.h b/FreeFileSync/Source/ui/tree_grid.h index 027271af..1291cec0 100644 --- a/FreeFileSync/Source/ui/tree_grid.h +++ b/FreeFileSync/Source/ui/tree_grid.h @@ -24,26 +24,26 @@ public: void setData(FolderComparison& newData); //set data, taking (partial) ownership //apply view filter: comparison results - void updateCmpResult(bool showExcluded, - bool leftOnlyFilesActive, - bool rightOnlyFilesActive, - bool leftNewerFilesActive, - bool rightNewerFilesActive, - bool differentFilesActive, - bool equalFilesActive, - bool conflictFilesActive); + void applyFilterByCategory(bool showExcluded, + bool leftOnlyFilesActive, + bool rightOnlyFilesActive, + bool leftNewerFilesActive, + bool rightNewerFilesActive, + bool differentFilesActive, + bool equalFilesActive, + bool conflictFilesActive); //apply view filter: synchronization preview - void updateSyncPreview(bool showExcluded, - bool syncCreateLeftActive, - bool syncCreateRightActive, - bool syncDeleteLeftActive, - bool syncDeleteRightActive, - bool syncDirOverwLeftActive, - bool syncDirOverwRightActive, - bool syncDirNoneActive, - bool syncEqualActive, - bool conflictFilesActive); + void applyFilterByAction(bool showExcluded, + bool syncCreateLeftActive, + bool syncCreateRightActive, + bool syncDeleteLeftActive, + bool syncDeleteRightActive, + bool syncDirOverwLeftActive, + bool syncDirOverwRightActive, + bool syncDirNoneActive, + bool syncEqualActive, + bool conflictFilesActive); enum NodeStatus { diff --git a/FreeFileSync/Source/ui/version_check.cpp b/FreeFileSync/Source/ui/version_check.cpp index fffe1dc0..8728c136 100644 --- a/FreeFileSync/Source/ui/version_check.cpp +++ b/FreeFileSync/Source/ui/version_check.cpp @@ -180,7 +180,6 @@ void showUpdateAvailableDialog(wxWindow* parent, const std::string& onlineVersio } -//access is thread-safe on Windows (WinInet), but not on Linux/OS X (wxWidgets) std::string getOnlineVersion(const std::vector>& postParams) //throw SysError { const std::string buffer = sendHttpPost(Zstr("https://api.freefilesync.org/latest_version"), postParams, diff --git a/FreeFileSync/Source/version/version.h b/FreeFileSync/Source/version/version.h index 662c0ea3..a13ee197 100644 --- a/FreeFileSync/Source/version/version.h +++ b/FreeFileSync/Source/version/version.h @@ -3,7 +3,7 @@ namespace fff { -const char ffsVersion[] = "10.17"; //internal linkage! +const char ffsVersion[] = "10.18"; //internal linkage! const char FFS_VERSION_SEPARATOR = '.'; } diff --git a/wx+/async_task.h b/wx+/async_task.h index 04eac61c..1599c4d7 100644 --- a/wx+/async_task.h +++ b/wx+/async_task.h @@ -85,7 +85,7 @@ public: std::vector> readyTasks; //Reentrancy; access to AsyncTasks::add is not protected! => evaluate outside eraseIf - eraseIf(tasks_, [&](std::unique_ptr& task) + std::erase_if(tasks_, [&](std::unique_ptr& task) { if (task->resultReady()) { diff --git a/wx+/context_menu.h b/wx+/context_menu.h index d856db03..08a313bf 100644 --- a/wx+/context_menu.h +++ b/wx+/context_menu.h @@ -14,7 +14,7 @@ #include /* -A context menu supporting C++11 lambda callbacks! +A context menu supporting lambda callbacks! Usage: ContextMenu menu; @@ -56,7 +56,7 @@ public: void addSeparator() { menu_->AppendSeparator(); } - void addSubmenu(const wxString& label, ContextMenu& submenu, const wxBitmap* bmp = nullptr) //invalidates submenu! + void addSubmenu(const wxString& label, ContextMenu& submenu, const wxBitmap* bmp = nullptr, bool enabled = true) //invalidates submenu! { //transfer submenu commands: commandList_.insert(submenu.commandList_.begin(), submenu.commandList_.end()); @@ -67,6 +67,7 @@ public: wxMenuItem* newItem = new wxMenuItem(menu_.get(), wxID_ANY, label, L"", wxITEM_NORMAL, submenu.menu_.release()); //menu owns item, item owns submenu! if (bmp) newItem->SetBitmap(*bmp); //do not set AFTER appending item! wxWidgets screws up for yet another crappy reason menu_->Append(newItem); + if (!enabled) newItem->Enable(false); } void popup(wxWindow& wnd, const wxPoint& pos = wxDefaultPosition) //show popup menu + process lambdas diff --git a/wx+/dc.h b/wx+/dc.h index 894fb473..757942ca 100644 --- a/wx+/dc.h +++ b/wx+/dc.h @@ -56,7 +56,7 @@ int fastFromDIP(int d) //like wxWindow::FromDIP (but tied to primary monitor and #else //https://github.com/wxWidgets/wxWidgets/blob/master/src/common/wincmn.cpp#L2865 static_assert(GTK_MAJOR_VERSION == 2); //GTK2 doesn't properly support high DPI: https://freefilesync.org/forum/viewtopic.php?t=6114 - //=> requires general fix at wxWidgets-level + //=> requires general fix at wxWidgets-level assert(wxTheApp); //only call after wxWidgets was initalized! static const int dpiY = wxScreenDC().GetPPI().y; //perf: buffering for calls to ::GetDeviceCaps() needed!? const int defaultDpi = 96; diff --git a/wx+/font_size.h b/wx+/font_size.h index 2f2d377c..d25dfede 100644 --- a/wx+/font_size.h +++ b/wx+/font_size.h @@ -35,7 +35,7 @@ void setRelativeFontSize(wxWindow& control, double factor) wxFont font = control.GetFont(); font.SetPointSize(numeric::round(wxNORMAL_FONT->GetPointSize() * factor)); control.SetFont(font); -}; +} inline @@ -46,7 +46,7 @@ void setMainInstructionFont(wxWindow& control) font.SetWeight(wxFONTWEIGHT_BOLD); control.SetFont(font); -}; +} } #endif //FONT_SIZE_H_23849632846734343234532 diff --git a/wx+/graph.cpp b/wx+/graph.cpp index aac2cc10..a6d0f19d 100644 --- a/wx+/graph.cpp +++ b/wx+/graph.cpp @@ -151,7 +151,7 @@ void drawXLabel(wxDC& dc, double xMin, double xMax, int blockCount, const Conver return; wxDCPenChanger dummy(dc, wxColor(192, 192, 192)); //light grey => not accessible! but no big deal... - wxDCTextColourChanger dummy2(dc, wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT)); + wxDCTextColourChanger textColor(dc, wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT)); const double valRangePerBlock = (xMax - xMin) / blockCount; @@ -179,7 +179,7 @@ void drawYLabel(wxDC& dc, double yMin, double yMax, int blockCount, const Conver return; wxDCPenChanger dummy(dc, wxColor(192, 192, 192)); //light grey => not accessible! but no big deal... - wxDCTextColourChanger dummy2(dc, wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT)); + wxDCTextColourChanger textColor(dc, wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT)); const double valRangePerBlock = (yMax - yMin) / blockCount; @@ -225,13 +225,12 @@ void drawCornerText(wxDC& dc, const wxRect& graphArea, const wxString& txt, Grap drawPos.y += graphArea.height - boxExtent.GetHeight(); break; } - { + //add text shadow to improve readability: - wxDCTextColourChanger dummy(dc, colorBack); - dc.DrawText(txt, drawPos + border + wxSize(fastFromDIP(1), fastFromDIP(1))); - } + wxDCTextColourChanger textColor(dc, colorBack); + dc.DrawText(txt, drawPos + border + wxSize(fastFromDIP(1), fastFromDIP(1))); - wxDCTextColourChanger dummy(dc, colorText); + textColor.Set(colorText); dc.DrawText(txt, drawPos + border); } diff --git a/wx+/grid.cpp b/wx+/grid.cpp index 851146bc..0613e14f 100644 --- a/wx+/grid.cpp +++ b/wx+/grid.cpp @@ -249,7 +249,7 @@ wxRect GridData::drawColumnLabelBackground(wxDC& dc, const wxRect& rect, bool hi void GridData::drawColumnLabelText(wxDC& dc, const wxRect& rect, const std::wstring& text) { - wxDCTextColourChanger dummy(dc, getColorLabelText()); //accessibility: always set both foreground AND background colors! + wxDCTextColourChanger textColor(dc, getColorLabelText()); //accessibility: always set both foreground AND background colors! drawCellText(dc, rect, text, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL); } @@ -452,9 +452,7 @@ public: { wxClientDC dc(this); - wxFont labelFont = GetFont(); - //labelFont.SetWeight(wxFONTWEIGHT_BOLD); - dc.SetFont(labelFont); //harmonize with RowLabelWin::render()! + dc.SetFont(GetFont()); //harmonize with RowLabelWin::render()! int bestWidth = 0; for (ptrdiff_t i = rowFrom; i <= rowTo; ++i) @@ -504,9 +502,7 @@ private: { clearArea(dc, rect, wxSystemSettings::GetColour(/*!renderAsEnabled(*this) ? wxSYS_COLOUR_BTNFACE :*/wxSYS_COLOUR_WINDOW)); - wxFont labelFont = GetFont(); - //labelFont.SetWeight(wxFONTWEIGHT_BOLD); - dc.SetFont(labelFont); //harmonize with RowLabelWin::getBestWidth()! + dc.SetFont(GetFont()); //harmonize with RowLabelWin::getBestWidth()! auto rowRange = getRowsOnClient(rect); //returns range [begin, end) for (auto row = rowRange.first; row < rowRange.second; ++row) @@ -524,7 +520,7 @@ private: { //clearArea(dc, rect, getColorRowLabel()); dc.GradientFillLinear(rect, getColorLabelGradientFrom(), getColorLabelGradientTo(), wxEAST); //clear overlapping cells - wxDCTextColourChanger dummy3(dc, getColorLabelText()); //accessibility: always set both foreground AND background colors! + wxDCTextColourChanger textColor(dc, getColorLabelText()); //accessibility: always set both foreground AND background colors! //label text wxRect textRect = rect; @@ -623,10 +619,10 @@ private: //coordinate with "colLabelHeight" in Grid constructor: wxFont labelFont = GetFont(); - labelFont.SetWeight(wxFONTWEIGHT_BOLD); + labelFont.MakeBold(); dc.SetFont(labelFont); - wxDCTextColourChanger dummy(dc, wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT)); //use user setting for labels + wxDCTextColourChanger textColor(dc, wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT)); //use user setting for labels const int colLabelHeight = refParent().colLabelHeight_; @@ -893,7 +889,7 @@ private: dc.SetFont(GetFont()); //harmonize with Grid::getBestColumnSize() - wxDCTextColourChanger dummy(dc, wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT)); //use user setting for labels + wxDCTextColourChanger textColor(dc, wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT)); //use user setting for labels std::vector absWidths = refParent().getColWidths(); //resolve stretched widths { @@ -1313,7 +1309,7 @@ Grid::Grid(wxWindow* parent, { //coordinate with ColLabelWin::render(): wxFont labelFont = colLabelWin_->GetFont(); - labelFont.SetWeight(wxFONTWEIGHT_BOLD); + labelFont.MakeBold(); return labelFont.GetPixelSize().GetHeight(); }(); @@ -1491,22 +1487,51 @@ wxSize Grid::GetSizeAvailableForScrollTarget(const wxSize& size) }(); //2. try(!) to determine scrollbar sizes: +#if GTK_MAJOR_VERSION == 2 + /* Ubuntu 19.10: "scrollbar-spacing" has a default value of 3: https://developer.gnome.org/gtk2/stable/GtkScrolledWindow.html#GtkScrolledWindow--s-scrollbar-spacing + => the default Ubuntu theme (but also our Gtk2Styles.rc) set it to 0, but still the first call to gtk_widget_style_get() returns 3: why? + => maybe styles are applied asynchronously? GetClientSize() is affected by this, so can't use! + => always ignore spacing to get consistent scrollbar dimensions! */ + GtkScrolledWindow* scrollWin = GTK_SCROLLED_WINDOW(wxWindow::m_widget); + assert(scrollWin); + GtkWidget* rangeH = ::gtk_scrolled_window_get_hscrollbar(scrollWin); + GtkWidget* rangeV = ::gtk_scrolled_window_get_vscrollbar(scrollWin); + + GtkRequisition reqH = {}; + GtkRequisition reqV = {}; + if (rangeH) ::gtk_widget_size_request(rangeH, &reqH); + if (rangeV) ::gtk_widget_size_request(rangeV, &reqV); + assert(reqH.width > 0 && reqH.height > 0); + assert(reqV.width > 0 && reqV.height > 0); + + const wxSize scrollBarSizeTmp(reqV.width, reqH.height); + assert(scrollBarHeightH_ == 0 || scrollBarHeightH_ == scrollBarSizeTmp.y); + assert(scrollBarWidthV_ == 0 || scrollBarWidthV_ == scrollBarSizeTmp.x); + +#elif GTK_MAJOR_VERSION == 3 + //scrollbar size increases dynamically on mouse-hover! + //see "overlay scrolling": https://developer.gnome.org/gtk3/stable/GtkScrolledWindow.html#gtk-scrolled-window-set-overlay-scrolling + //luckily "scrollbar-spacing" is stable on GTK3 const wxSize scrollBarSizeTmp = GetSize() - GetClientSize(); - assert(scrollBarHeightH_ == 0 || scrollBarSizeTmp.y == 0 || scrollBarHeightH_ == scrollBarSizeTmp.y); - assert(scrollBarWidthV_ == 0 || scrollBarSizeTmp.x == 0 || scrollBarWidthV_ == scrollBarSizeTmp.x); + + assert(scrollBarSizeTmp.x == 0 || scrollBarSizeTmp.x == 6 || scrollBarSizeTmp.x == 13); //lame hard-coded numbers (from Ubuntu 19.10) + assert(scrollBarSizeTmp.y == 0 || scrollBarSizeTmp.y == 6 || scrollBarSizeTmp.y == 13); //=> but let's have a *close* eye on scrollbar fluctuation! +#else +#error unknown GTK version! +#endif scrollBarHeightH_ = std::max(scrollBarHeightH_, scrollBarSizeTmp.y); scrollBarWidthV_ = std::max(scrollBarWidthV_, scrollBarSizeTmp.x); //this function is called again by wxScrollHelper::AdjustScrollbars() if SB_SHOW_ALWAYS-scrollbars are not yet shown => scrollbar size > 0 eventually! - + //----------------------------------------------------------------------------- //harmonize with Grid::updateWindowSizes()! wxSize sizeAvail = size - wxSize(rowLabelWidth, colLabelHeight_); //EXCEPTION: space consumed by SB_SHOW_ALWAYS-scrollbars is *never* available for "scroll target"; see wxScrollHelper::AdjustScrollbars() if (showScrollbarH_ == SB_SHOW_ALWAYS) - sizeAvail.y -= scrollBarHeightH_; + sizeAvail.y -= (scrollBarHeightH_ > 0 ? scrollBarHeightH_ : /*fallback:*/ scrollBarWidthV_); if (showScrollbarV_ == SB_SHOW_ALWAYS) - sizeAvail.x -= scrollBarWidthV_; + sizeAvail.x -= (scrollBarWidthV_ > 0 ? scrollBarWidthV_ : /*fallback:*/ scrollBarHeightH_); return wxSize(std::max(0, sizeAvail.x), std::max(0, sizeAvail.y)); @@ -1879,10 +1904,10 @@ void Grid::showScrollBars(Grid::ScrollBarStatus horizontal, Grid::ScrollBarStatu assert(false); return GTK_POLICY_AUTOMATIC; }; - - GtkWidget* gridWidget = wxWindow::m_widget; - GtkScrolledWindow* scrolledWindow = GTK_SCROLLED_WINDOW(gridWidget); - ::gtk_scrolled_window_set_policy(scrolledWindow, + + GtkScrolledWindow* scrollWin = GTK_SCROLLED_WINDOW(wxWindow::m_widget); + assert(scrollWin); + ::gtk_scrolled_window_set_policy(scrollWin, mapStatus(horizontal), mapStatus(vertical)); diff --git a/wx+/grid.h b/wx+/grid.h index cecdfafe..74dc25b2 100644 --- a/wx+/grid.h +++ b/wx+/grid.h @@ -333,15 +333,13 @@ private: ColumnType colToType(size_t col) const; //returns ColumnType::NONE on error - /* - Visual layout: - -------------------------------- - |CornerWin | ColLabelWin | - |------------------------------| - |RowLabelWin | MainWin | - | | | - -------------------------------- - */ + /* Grid window layout: + _______________________________ + | CornerWin | ColLabelWin | + |_____________|_______________| + | RowLabelWin | MainWin | + | | | + |_____________|_______________| */ CornerWin* cornerWin_; RowLabelWin* rowLabelWin_; ColLabelWin* colLabelWin_; diff --git a/wx+/image_resources.cpp b/wx+/image_resources.cpp index faabbb2a..91189ba6 100644 --- a/wx+/image_resources.cpp +++ b/wx+/image_resources.cpp @@ -11,10 +11,10 @@ #include #include #include -#include +#include #include -#include #include +#include #include #include #include "image_tools.h" @@ -143,24 +143,6 @@ private: //hardware_concurrency() == 0 if "not computable or well defined" }; - -void loadAnimFromZip(wxZipInputStream& zipInput, wxAnimation& anim) -{ - //work around wxWidgets bug: - //construct seekable input stream (zip-input stream is not seekable) for wxAnimation::Load() - //luckily this method call is very fast: below measurement precision! - std::vector data; - data.reserve(10000); - - int newValue = 0; - while ((newValue = zipInput.GetC()) != wxEOF) - data.push_back(static_cast(newValue)); - - wxMemoryInputStream seekAbleStream(&data.front(), data.size()); //stream does not take ownership of data - - anim.Load(seekAbleStream, wxANIMATION_TYPE_GIF); -} - //================================================================================================ //================================================================================================ @@ -204,44 +186,59 @@ void GlobalBitmaps::init(const Zstring& filePath) { assert(bitmaps_.empty() && anims_.empty()); - wxFFileInputStream input(utfTo(filePath)); - if (input.IsOk()) //if not... we don't want to react too harsh here + //wxFFileInputStream/wxZipInputStream loads in junks of 512 bytes => WTF!!! => implement sane file loading: + try { - //activate support for .png files - wxImage::AddHandler(new wxPNGHandler); //ownership passed - - wxZipInputStream streamIn(input, wxConvUTF8); - //do NOT rely on wxConvLocal! On failure shows unhelpful popup "Cannot convert from the charset 'Unknown encoding (-1)'!" - - //do we need xBRZ scaling for high quality DPI images? - const int hqScale = std::clamp(std::ceil(fastFromDIP(1000) / 1000.0), 1, xbrz::SCALE_FACTOR_MAX); - //even for 125% DPI scaling, "2xBRZ + bilinear downscale" gives a better result than mere "125% bilinear upscale"! - if (hqScale > 1) - dpiScaler_ = std::make_unique(hqScale); - - while (const auto& entry = std::unique_ptr(streamIn.GetNextEntry())) //take ownership!) - { - const wxString name = entry->GetName(); - - if (endsWith(name, L".png")) - { - wxImage img(streamIn, wxBITMAP_TYPE_PNG); - - //end this alpha/no-alpha/mask/wxDC::DrawBitmap/RTL/high-contrast-scheme interoperability nightmare here and now!!!! - //=> there's only one type of wxImage: with alpha channel, no mask!!! - convertToVanillaImage(img); - - if (dpiScaler_) - dpiScaler_->add(name, img); //scale in parallel! - else - bitmaps_.emplace(name, img); - } - else if (endsWith(name, L".gif")) - loadAnimFromZip(streamIn, anims_[name]); - else - assert(false); - } + const std::string rawStream = loadBinContainer(filePath, nullptr /*notifyUnbufferedIO*/); //throw FileError + wxMemoryInputStream memStream(rawStream.c_str(), rawStream.size()); //does not take ownership + wxZipInputStream zipStream(memStream, wxConvUTF8); + //do NOT rely on wxConvLocal! On failure shows unhelpful popup "Cannot convert from the charset 'Unknown encoding (-1)'!" + + //activate support for .png files + wxImage::AddHandler(new wxPNGHandler); //ownership passed + + //do we need xBRZ scaling for high quality DPI images? + const int hqScale = std::clamp(std::ceil(fastFromDIP(1000) / 1000.0), 1, xbrz::SCALE_FACTOR_MAX); + //even for 125% DPI scaling, "2xBRZ + bilinear downscale" gives a better result than mere "125% bilinear upscale"! + if (hqScale > 1) + dpiScaler_ = std::make_unique(hqScale); + + while (const auto& entry = std::unique_ptr(zipStream.GetNextEntry())) //take ownership!) + { + const wxString name = entry->GetName(); + + if (endsWith(name, L".png")) + { + wxImage img(zipStream, wxBITMAP_TYPE_PNG); + assert(img.IsOk()); + + //end this alpha/no-alpha/mask/wxDC::DrawBitmap/RTL/high-contrast-scheme interoperability nightmare here and now!!!! + //=> there's only one type of wxImage: with alpha channel, no mask!!! + convertToVanillaImage(img); + + if (dpiScaler_) + dpiScaler_->add(name, img); //scale in parallel! + else + bitmaps_.emplace(name, img); + } + else if (endsWith(name, L".gif")) + { + //work around wxWidgets bug: wxAnimation::Load() requires seekable input stream (zip-input stream is not seekable) + std::string stream(entry->GetSize(), '\0'); + if (!stream.empty() && zipStream.ReadAll(&stream[0], stream.size())) + { + wxMemoryInputStream seekAbleStream(stream.c_str(), stream.size()); //stream does not take ownership of data + [[maybe_unused]] const bool loadSuccess = anims_[name].Load(seekAbleStream, wxANIMATION_TYPE_GIF); + assert(loadSuccess); + } + else + assert(false); + } + else + assert(false); + } } + catch (FileError&) { assert(false); } } diff --git a/wx+/image_tools.cpp b/wx+/image_tools.cpp index b314e801..0f248057 100644 --- a/wx+/image_tools.cpp +++ b/wx+/image_tools.cpp @@ -203,15 +203,15 @@ wxImage zen::createImageFromText(const wxString& text, const wxFont& font, const } -wxBitmap zen::layOver(const wxBitmap& back, const wxBitmap& front, int alignment) +wxImage zen::layOver(const wxImage& back, const wxImage& front, int alignment) { if (!front.IsOk()) return back; + assert(front.HasAlpha() && back.HasAlpha()); const int width = std::max(back.GetWidth(), front.GetWidth()); const int height = std::max(back.GetHeight(), front.GetHeight()); - assert(front.HasAlpha() == back.HasAlpha()); //we don't support mixed-mode brittleness! - const int offsetX = [&] + const int offsetX = [&] { if (alignment & wxALIGN_RIGHT) return back.GetWidth() - front.GetWidth(); @@ -239,8 +239,8 @@ wxBitmap zen::layOver(const wxBitmap& back, const wxBitmap& front, int alignmen ::memset(output.GetAlpha(), wxIMAGE_ALPHA_TRANSPARENT, width * height); const wxPoint posBack(std::max(-offsetX, 0), std::max(-offsetY, 0)); - writeToImage(output, back .ConvertToImage(), posBack); - writeToImage(output, front.ConvertToImage(), posBack + wxPoint(offsetX, offsetY)); + writeToImage(output, back , posBack); + writeToImage(output, front, posBack + wxPoint(offsetX, offsetY)); return output; } diff --git a/wx+/image_tools.h b/wx+/image_tools.h index 2a0dd0d4..d72597ef 100644 --- a/wx+/image_tools.h +++ b/wx+/image_tools.h @@ -34,7 +34,7 @@ wxImage stackImages(const wxImage& img1, const wxImage& img2, ImageStackLayout d wxImage createImageFromText(const wxString& text, const wxFont& font, const wxColor& col, ImageStackAlignment textAlign = ImageStackAlignment::LEFT); //CENTER/LEFT/RIGHT -wxBitmap layOver(const wxBitmap& back, const wxBitmap& front, int alignment = wxALIGN_CENTER); +wxImage layOver(const wxImage& back, const wxImage& front, int alignment = wxALIGN_CENTER); wxImage greyScale(const wxImage& img); //greyscale + brightness adaption wxBitmap greyScale(const wxBitmap& bmp); // @@ -213,7 +213,7 @@ wxColor gradient(const wxColor& from, const wxColor& to, double fraction) inline wxColor hsvColor(double h, double s, double v) //h within [0, 360), s, v within [0, 1] { - //https://de.wikipedia.org/wiki/HSV-Farbraum + //https://en.wikipedia.org/wiki/HSL_and_HSV //make input values fit into bounds if (h > 360) diff --git a/wx+/rtl.h b/wx+/rtl.h index 0cae9bac..0adb6037 100644 --- a/wx+/rtl.h +++ b/wx+/rtl.h @@ -20,6 +20,7 @@ void drawBitmapRtlNoMirror(wxDC& dc, const wxBitmap& bmp, const wxRect& rect, in //wxDC::DrawIcon DOES mirror by default -> implement RTL support when needed wxBitmap mirrorIfRtl(const wxBitmap& bmp); +wxImage mirrorIfRtl(const wxImage& bmp); //manual text flow correction: https://www.w3.org/International/articles/inline-bidi-markup/ @@ -93,6 +94,15 @@ void drawBitmapRtlNoMirror(wxDC& dc, const wxBitmap& bmp, const wxRect& rect, in } +inline +wxImage mirrorIfRtl(const wxImage& bmp) +{ + if (wxTheApp->GetLayoutDirection() == wxLayout_RightToLeft) + return bmp.Mirror(); + else + return bmp;} + + inline wxBitmap mirrorIfRtl(const wxBitmap& bmp) { diff --git a/wx+/toggle_button.h b/wx+/toggle_button.h index f61c3857..98ca32b3 100644 --- a/wx+/toggle_button.h +++ b/wx+/toggle_button.h @@ -28,8 +28,8 @@ public: SetLayoutDirection(wxLayout_LeftToRight); //avoid mirroring RTL languages like Hebrew or Arabic } - void init(const wxBitmap& activeBmp, - const wxBitmap& inactiveBmp); + void init(const wxBitmap& bmpActive, + const wxBitmap& bmpInactive); void setActive(bool value); bool isActive() const { return active_; } @@ -37,8 +37,8 @@ public: private: bool active_ = false; - wxBitmap activeBmp_; - wxBitmap inactiveBmp_; + wxBitmap bmpActive_; + wxBitmap bmpInactive_; }; @@ -49,21 +49,24 @@ private: //######################## implementation ######################## inline -void ToggleButton::init(const wxBitmap& activeBmp, - const wxBitmap& inactiveBmp) +void ToggleButton::init(const wxBitmap& bmpActive, + const wxBitmap& bmpInactive) { - activeBmp_ = activeBmp; - inactiveBmp_ = inactiveBmp; + bmpActive_ = bmpActive; + bmpInactive_ = bmpInactive; - setActive(active_); + setImage(*this, active_ ? bmpActive_ : bmpInactive_); } inline void ToggleButton::setActive(bool value) { - active_ = value; - setImage(*this, active_ ? activeBmp_ : inactiveBmp_); + if (active_ != value) + { + active_ = value; + setImage(*this, active_ ? bmpActive_ : bmpInactive_); + } } } diff --git a/zen/dir_watcher.cpp b/zen/dir_watcher.cpp index f5ed0488..94632ea4 100644 --- a/zen/dir_watcher.cpp +++ b/zen/dir_watcher.cpp @@ -101,7 +101,7 @@ DirWatcher::~DirWatcher() } -std::vector DirWatcher::getChanges(const std::function& requestUiRefresh, std::chrono::milliseconds cbInterval) //throw FileError +std::vector DirWatcher::getChanges(const std::function& requestUiUpdate, std::chrono::milliseconds cbInterval) //throw FileError { std::vector buffer(512 * (sizeof(struct ::inotify_event) + NAME_MAX + 1)); diff --git a/zen/dir_watcher.h b/zen/dir_watcher.h index 875a0098..4d514e89 100644 --- a/zen/dir_watcher.h +++ b/zen/dir_watcher.h @@ -56,7 +56,7 @@ public: }; //extract accumulated changes since last call - std::vector getChanges(const std::function& requestUiRefresh, std::chrono::milliseconds cbInterval); //throw FileError + std::vector getChanges(const std::function& requestUiUpdate, std::chrono::milliseconds cbInterval); //throw FileError private: DirWatcher (const DirWatcher&) = delete; diff --git a/zen/error_log.h b/zen/error_log.h index 4a3f5f2c..5115e6ef 100644 --- a/zen/error_log.h +++ b/zen/error_log.h @@ -60,7 +60,6 @@ private: - //######################## implementation ########################## inline void ErrorLog::logMsg(const std::wstring& msg, MessageType type) diff --git a/zen/file_error.h b/zen/file_error.h index e47fb9f4..55935eba 100644 --- a/zen/file_error.h +++ b/zen/file_error.h @@ -30,9 +30,9 @@ private: #define DEFINE_NEW_FILE_ERROR(X) struct X : public zen::FileError { X(const std::wstring& msg) : FileError(msg) {} X(const std::wstring& msg, const std::wstring& descr) : FileError(msg, descr) {} }; -DEFINE_NEW_FILE_ERROR(ErrorTargetExisting); -DEFINE_NEW_FILE_ERROR(ErrorFileLocked); -DEFINE_NEW_FILE_ERROR(ErrorMoveUnsupported); +DEFINE_NEW_FILE_ERROR(ErrorTargetExisting) +DEFINE_NEW_FILE_ERROR(ErrorFileLocked) +DEFINE_NEW_FILE_ERROR(ErrorMoveUnsupported) //CAVEAT: thread-local Win32 error code is easily overwritten => evaluate *before* making any (indirect) system calls: diff --git a/zen/format_unit.cpp b/zen/format_unit.cpp index 3e75278b..f2df4153 100644 --- a/zen/format_unit.cpp +++ b/zen/format_unit.cpp @@ -117,7 +117,7 @@ std::wstring roundToBlock(double timeInHigh, if (unitLowPerHigh > blockSizeLow) output += L" " + formatUnitTime(roundedtimeInLow % unitLowPerHigh, unitLow); return output; -}; +} } diff --git a/zen/globals.h b/zen/globals.h index e0bfd362..e59d64c1 100644 --- a/zen/globals.h +++ b/zen/globals.h @@ -23,6 +23,20 @@ Solve static destruction order fiasco by providing shared ownership and serializ ATTENTION: function-static globals have the compiler generate "magic statics" == compiler-genenerated locking code which will crash or leak memory when accessed after global is "dead" => "solved" by FunStatGlobal, but we can't have "too many" of these... */ + +class PodSpinMutex +{ +public: + bool tryLock(); + void lock(); + void unlock(); + bool isLocked(); + +private: + std::atomic_flag flag_; //= ATOMIC_FLAG_INIT; rely entirely on static zero-initialization! => avoid potential contention with worker thread during Global<> construction! +}; + + template class Global //don't use for function-scope statics! { @@ -30,7 +44,8 @@ public: Global() { static_assert(std::is_trivially_constructible_v&& std::is_trivially_destructible_v, "this memory needs to live forever"); - assert(!pod_.inst && !pod_.spinLock); //we depend on static zero-initialization! + assert(!pod_.spinLock.isLocked()); //we depend on static zero-initialization! + assert(!pod_.inst); // } explicit Global(std::unique_ptr&& newInst) { set(std::move(newInst)); } @@ -39,8 +54,9 @@ public: std::shared_ptr get() //=> return std::shared_ptr to let instance life time be handled by caller (MT usage!) { - while (pod_.spinLock.exchange(true)) ; - ZEN_ON_SCOPE_EXIT(pod_.spinLock = false); + pod_.spinLock.lock(); + ZEN_ON_SCOPE_EXIT(pod_.spinLock.unlock()); + if (pod_.inst) return *pod_.inst; return nullptr; @@ -52,8 +68,9 @@ public: if (newInst) tmpInst = new std::shared_ptr(std::move(newInst)); { - while (pod_.spinLock.exchange(true)) ; - ZEN_ON_SCOPE_EXIT(pod_.spinLock = false); + pod_.spinLock.lock(); + ZEN_ON_SCOPE_EXIT(pod_.spinLock.unlock()); + std::swap(pod_.inst, tmpInst); } delete tmpInst; @@ -62,9 +79,9 @@ public: private: struct Pod { - std::atomic spinLock; // { false }; rely entirely on static zero-initialization! => avoid potential contention with worker thread during Global<> construction! + PodSpinMutex spinLock; //rely entirely on static zero-initialization! => avoid potential contention with worker thread during Global<> construction! //serialize access; can't use std::mutex: has non-trival destructor - std::shared_ptr* inst; // = nullptr; + std::shared_ptr* inst; //= nullptr; } pod_; }; @@ -92,8 +109,9 @@ public: static_assert(std::is_trivially_constructible_v&& std::is_trivially_destructible_v, "this class must not generate code for magic statics!"); - while (pod_.spinLock.exchange(true)) ; - ZEN_ON_SCOPE_EXIT(pod_.spinLock = false); + pod_.spinLock.lock(); + ZEN_ON_SCOPE_EXIT(pod_.spinLock.unlock()); + if (pod_.inst) return *pod_.inst; return nullptr; @@ -105,8 +123,8 @@ public: if (newInst) tmpInst = new std::shared_ptr(std::move(newInst)); { - while (pod_.spinLock.exchange(true)) ; - ZEN_ON_SCOPE_EXIT(pod_.spinLock = false); + pod_.spinLock.lock(); + ZEN_ON_SCOPE_EXIT(pod_.spinLock.unlock()); std::swap(pod_.inst, tmpInst); registerDestruction(); @@ -116,8 +134,8 @@ public: void initOnce(std::unique_ptr (*getInitialValue)()) { - while (pod_.spinLock.exchange(true)) ; - ZEN_ON_SCOPE_EXIT(pod_.spinLock = false); + pod_.spinLock.lock(); + ZEN_ON_SCOPE_EXIT(pod_.spinLock.unlock()); if (!pod_.cleanUpEntry.cleanUpFun) { @@ -132,7 +150,7 @@ private: //call while holding pod_.spinLock void registerDestruction() { - assert(pod_.spinLock); + assert(pod_.spinLock.isLocked()); if (!pod_.cleanUpEntry.cleanUpFun) { @@ -149,7 +167,7 @@ private: struct Pod { - std::atomic spinLock; // { false }; rely entirely on static zero-initialization! => avoid potential contention with worker thread during Global<> construction! + PodSpinMutex spinLock; //rely entirely on static zero-initialization! => avoid potential contention with worker thread during Global<> construction! //serialize access; can't use std::mutex: has non-trival destructor std::shared_ptr* inst; // = nullptr; CleanUpEntry cleanUpEntry; @@ -162,20 +180,20 @@ void registerGlobalForDestruction(CleanUpEntry& entry) { static struct { - std::atomic spinLock; - CleanUpEntry* head; + PodSpinMutex spinLock; + CleanUpEntry* head; } cleanUpList; static_assert(std::is_trivially_constructible_v&& std::is_trivially_destructible_v, "we must not generate code for magic statics!"); - while (cleanUpList.spinLock.exchange(true)) ; - ZEN_ON_SCOPE_EXIT(cleanUpList.spinLock = false); + cleanUpList.spinLock.lock(); + ZEN_ON_SCOPE_EXIT(cleanUpList.spinLock.unlock()); std::atexit([] { - while (cleanUpList.spinLock.exchange(true)) ; - ZEN_ON_SCOPE_EXIT(cleanUpList.spinLock = false); + cleanUpList.spinLock.lock(); + ZEN_ON_SCOPE_EXIT(cleanUpList.spinLock.unlock()); (*cleanUpList.head->cleanUpFun)(cleanUpList.head->callbackData); cleanUpList.head = cleanUpList.head->prev; //nicely clean up in reverse order of construction @@ -185,6 +203,50 @@ void registerGlobalForDestruction(CleanUpEntry& entry) cleanUpList.head = &entry; } + +//------------------------------------------------------------------------------------------ +#if __cpp_lib_atomic_wait +#error implement + rewiew improvements +#endif + + +inline +bool PodSpinMutex::tryLock() +{ + return !flag_.test_and_set(std::memory_order_acquire); +} + + +inline +void PodSpinMutex::lock() +{ + while (!tryLock()) +#if __cpp_lib_atomic_wait + flag_.wait(true, std::memory_order_relaxed); +#else + ; +#endif +} + + +inline +void PodSpinMutex::unlock() +{ + flag_.clear(std::memory_order_release); +#if __cpp_lib_atomic_wait + flag_.notify_one(); +#endif +} + + +inline +bool PodSpinMutex::isLocked() +{ + if (!tryLock()) + return true; + unlock(); + return false; +} } #endif //GLOBALS_H_8013740213748021573485 diff --git a/zen/http.cpp b/zen/http.cpp index 93651d0b..4f2c5205 100644 --- a/zen/http.cpp +++ b/zen/http.cpp @@ -12,6 +12,8 @@ using namespace zen; + + class HttpInputStream::Impl { public: diff --git a/zen/legacy_compiler.h b/zen/legacy_compiler.h index d0b4d3fe..6ce1d765 100644 --- a/zen/legacy_compiler.h +++ b/zen/legacy_compiler.h @@ -8,19 +8,25 @@ #define LEGACY_COMPILER_H_839567308565656789 +#if !__cpp_lib_erase_if +#include +#include +#include +#endif + +//https://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations +//https://en.cppreference.com/w/User:D41D8CD98F/feature_testing_macros +//https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html namespace std { -//https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html -//https://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations - +//--------------------------------------------------------------------------------- #if __cpp_lib_span - #error get rid of workarounds + #error get rid of workaround: #endif -//requires C++20! until then, this should suffice... template class span { @@ -51,8 +57,12 @@ private: const size_t size_; T* const data_; }; + +//--------------------------------------------------------------------------------- + } + namespace zen { double from_chars(const char* first, const char* last); diff --git a/zen/open_ssl.cpp b/zen/open_ssl.cpp index ce05de53..dc9c8a19 100644 --- a/zen/open_ssl.cpp +++ b/zen/open_ssl.cpp @@ -28,7 +28,7 @@ void zen::openSslInit() //see Curl_ossl_cleanup(): https://github.com/curl/curl/blob/master/lib/vtls/openssl.c //excplicitly init OpenSSL on main thread: seems to initialize atomically! But it still might help to avoid issues: - [[maybe_unused]] const int rv = ::OPENSSL_init_ssl(OPENSSL_INIT_SSL_DEFAULT, nullptr); + [[maybe_unused]] const int rv = ::OPENSSL_init_ssl(OPENSSL_INIT_SSL_DEFAULT | OPENSSL_INIT_NO_LOAD_CONFIG, nullptr); assert(rv == 1); //https://www.openssl.org/docs/man1.1.0/ssl/OPENSSL_init_ssl.html } diff --git a/zen/process_priority.cpp b/zen/process_priority.cpp index f80dd022..5aa9a0ce 100644 --- a/zen/process_priority.cpp +++ b/zen/process_priority.cpp @@ -18,8 +18,8 @@ PreventStandby::~PreventStandby() {} //solution for GNOME?: http://people.gnome.org/~mccann/gnome-session/docs/gnome-session.html#org.gnome.SessionManager.Inhibit struct ScheduleForBackgroundProcessing::Impl {}; -ScheduleForBackgroundProcessing::ScheduleForBackgroundProcessing() {}; -ScheduleForBackgroundProcessing::~ScheduleForBackgroundProcessing() {}; +ScheduleForBackgroundProcessing::ScheduleForBackgroundProcessing() {} +ScheduleForBackgroundProcessing::~ScheduleForBackgroundProcessing() {} /* struct ScheduleForBackgroundProcessing diff --git a/zen/scope_guard.h b/zen/scope_guard.h index 3a79d841..5d3ac411 100644 --- a/zen/scope_guard.h +++ b/zen/scope_guard.h @@ -18,7 +18,7 @@ namespace zen { //Scope Guard /* - auto guardAio = zen::makeGuard([&] { ::CloseHandle(hDir); }); + auto guardAio = zen::makeGuard([&] { ::CloseHandle(hDir); }); ... guardAio.dismiss(); @@ -30,34 +30,35 @@ Scope Exit: enum class ScopeGuardRunMode { - ON_EXIT, - ON_SUCCESS, - ON_FAIL + onExit, + onSuccess, + onFail }; //partially specialize scope guard destructor code and get rid of those pesky MSVC "4127 conditional expression is constant" template inline -void runScopeGuardDestructor(F& fun, int /*exeptionCountOld*/, std::integral_constant) noexcept +void runScopeGuardDestructor(F& fun, bool failed, std::integral_constant) { - try { fun(); } - catch (...) { assert(false); } //consistency: don't expect exceptions for ON_EXIT even if "!failed"! + if (!failed) + fun(); //throw X + else + try { fun(); } + catch (...) { assert(false); } } template inline -void runScopeGuardDestructor(F& fun, int exeptionCountOld, std::integral_constant) +void runScopeGuardDestructor(F& fun, bool failed, std::integral_constant) { - const bool failed = std::uncaught_exceptions() > exeptionCountOld; if (!failed) fun(); //throw X } template inline -void runScopeGuardDestructor(F& fun, int exeptionCountOld, std::integral_constant) noexcept +void runScopeGuardDestructor(F& fun, bool failed, std::integral_constant) noexcept { - const bool failed = std::uncaught_exceptions() > exeptionCountOld; if (failed) try { fun(); } catch (...) { assert(false); } @@ -75,10 +76,13 @@ public: exeptionCount_(other.exeptionCount_), dismissed_(other.dismissed_) { other.dismissed_ = true; } - ~ScopeGuard() noexcept(runMode != ScopeGuardRunMode::ON_SUCCESS) + ~ScopeGuard() noexcept(runMode == ScopeGuardRunMode::onFail) { if (!dismissed_) - runScopeGuardDestructor(fun_, exeptionCount_, std::integral_constant()); + { + const bool failed = std::uncaught_exceptions() > exeptionCount_; + runScopeGuardDestructor(fun_, failed, std::integral_constant()); + } } void dismiss() { dismissed_ = true; } @@ -104,8 +108,8 @@ auto makeGuard(F&& fun) { return ScopeGuard>(std::forwa #define ZEN_CHECK_CASE_FOR_CONSTANT_IMPL(X) L ## X -#define ZEN_ON_SCOPE_EXIT(X) [[maybe_unused]] auto ZEN_CONCAT(scopeGuard, __LINE__) = zen::makeGuard([&]{ X; }); -#define ZEN_ON_SCOPE_FAIL(X) [[maybe_unused]] auto ZEN_CONCAT(scopeGuard, __LINE__) = zen::makeGuard([&]{ X; }); -#define ZEN_ON_SCOPE_SUCCESS(X) [[maybe_unused]] auto ZEN_CONCAT(scopeGuard, __LINE__) = zen::makeGuard([&]{ X; }); +#define ZEN_ON_SCOPE_EXIT(X) [[maybe_unused]] auto ZEN_CONCAT(scopeGuard, __LINE__) = zen::makeGuard([&]{ X; }); +#define ZEN_ON_SCOPE_FAIL(X) [[maybe_unused]] auto ZEN_CONCAT(scopeGuard, __LINE__) = zen::makeGuard([&]{ X; }); +#define ZEN_ON_SCOPE_SUCCESS(X) [[maybe_unused]] auto ZEN_CONCAT(scopeGuard, __LINE__) = zen::makeGuard([&]{ X; }); #endif //SCOPE_GUARD_H_8971632487321434 diff --git a/zen/stl_tools.h b/zen/stl_tools.h index 9014b0f7..d09010ad 100644 --- a/zen/stl_tools.h +++ b/zen/stl_tools.h @@ -20,16 +20,6 @@ //enhancements for namespace zen { -//erase selected elements from any container: -template -void eraseIf(std::vector& v, Predicate p); - -template -void eraseIf(std::set& s, Predicate p); - -template -void eraseIf(std::map& m, Predicate p); - //append STL containers template void append(std::vector& v, const C& c); @@ -46,10 +36,7 @@ void removeDuplicates(std::vector& v); template void removeDuplicates(std::vector& v, CompLess less); -//binary search returning an iterator -template -Iterator binarySearch(Iterator first, Iterator last, const T& value, CompLess less); - +//searching STL containers template BidirectionalIterator findLast(BidirectionalIterator first, BidirectionalIterator last, const T& value); @@ -58,6 +45,9 @@ template BidirectionalIterator1 searchLast(BidirectionalIterator1 first1, BidirectionalIterator1 last1, BidirectionalIterator2 first2, BidirectionalIterator2 last2); +//binary search returning an iterator +template +Iterator binarySearch(Iterator first, Iterator last, const T& value, CompLess less); //read-only variant of std::merge; input: two sorted ranges template @@ -96,7 +86,9 @@ template class SharedRef //why is there no std::shared_ref??? { public: - SharedRef() = delete; //no suprise memory allocations => always construct with makeSharedRef() + SharedRef() = delete; //no surprise memory allocations! + + explicit SharedRef(std::shared_ptr ptr) : ref_(std::move(ptr)) { assert(ref_); } template SharedRef(const SharedRef& other) : ref_(other.ref_) {} @@ -104,12 +96,10 @@ public: /**/ T& ref() { return *ref_; }; const T& ref() const { return *ref_; }; - std::shared_ptr ptr() { return ref_; }; + std::shared_ptr< T> ptr() { return ref_; }; + std::shared_ptr ptr() const { return ref_; }; private: - explicit SharedRef(std::shared_ptr&& ptr) : ref_(std::move(ptr)) { assert(ref_); } - - template friend SharedRef makeSharedRef(Args&& ... args); template friend class SharedRef; std::shared_ptr ref_; //always bound @@ -117,6 +107,7 @@ private: template inline SharedRef makeSharedRef(Args&& ... args) { return SharedRef(std::make_shared(std::forward(args)...)); } + //=========================================================================== @@ -124,36 +115,6 @@ SharedRef makeSharedRef(Args&& ... args) { return SharedRef(std::make_shar //######################## implementation ######################## - -template inline -void eraseIf(std::vector& v, Predicate p) -{ - v.erase(std::remove_if(v.begin(), v.end(), p), v.end()); -} - - -namespace impl -{ -template inline -void setOrMapEraseIf(S& s, Predicate p) -{ - for (auto it = s.begin(); it != s.end();) - if (p(*it)) - s.erase(it++); - else - ++it; -} -} - - -template inline -void eraseIf(std::set& s, Predicate p) { impl::setOrMapEraseIf(s, p); } //don't make this any more generic! e.g. must not compile for std::vector!!! - - -template inline -void eraseIf(std::map& m, Predicate p) { impl::setOrMapEraseIf(m, p); } - - template inline void append(std::vector& v, const C& c) { v.insert(v.end(), c.begin(), c.end()); } @@ -242,6 +203,17 @@ BidirectionalIterator1 searchLast(const BidirectionalIterator1 first1, Bid } +//--------------------------------------------------------------------------------------- +//http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0458r2.html + +template >> inline +bool contains(const Container& c, const ValueType& val, int dummy = 0 /*overload string_tools.h contains()*/) +{ + return c.find(val) != c.end(); +} +//--------------------------------------------------------------------------------------- + + //read-only variant of std::merge; input: two sorted ranges template inline void mergeTraversal(Iterator first1, Iterator last1, diff --git a/zen/string_base.h b/zen/string_base.h index a417b7f6..6c835c72 100644 --- a/zen/string_base.h +++ b/zen/string_base.h @@ -12,6 +12,9 @@ #include #include #include "string_tools.h" +#if __cpp_impl_three_way_comparison && __cpp_lib_three_way_comparison + #include +#endif //Zbase - a policy based string class optimizing performance and flexibility @@ -189,11 +192,10 @@ private: length (static_cast(len)), capacity(static_cast(cap)) { - //static_assert(ATOMIC_INT_LOCK_FREE == 2); //2: "The atomic type is always lock-free" - static_assert(decltype(refCount)::is_always_lock_free); //C++17 variant (not yet supported on GCC 6.3) + static_assert(decltype(refCount)::is_always_lock_free); } - std::atomic refCount { 1 }; //std:atomic is uninitialized by default! + std::atomic refCount { 1 }; //std:atomic is uninitialized by default! uint32_t length; const uint32_t capacity; //allocated size without null-termination }; @@ -289,10 +291,22 @@ private: Char* rawStr_; }; + +#if __cpp_impl_three_way_comparison && __cpp_lib_three_way_comparison + #error implement! +#endif + + template class SP> bool operator==(const Zbase& lhs, const Zbase& rhs); template class SP> bool operator==(const Zbase& lhs, const Char* rhs); template class SP> inline bool operator==(const Char* lhs, const Zbase& rhs) { return operator==(rhs, lhs); } +#if __cpp_impl_three_way_comparison && __cpp_lib_three_way_comparison +template class SP> std::strong_ordering operator<=>(const Zbase& lhs, const Zbase& rhs); +template class SP> std::strong_ordering operator<=>(const Zbase& lhs, const Char* rhs); +template class SP> std::strong_ordering operator<=>(const Char* lhs, const Zbase& rhs); + +#else template class SP> inline bool operator!=(const Zbase& lhs, const Zbase& rhs) { return !operator==(lhs, rhs); } template class SP> inline bool operator!=(const Zbase& lhs, const Char* rhs) { return !operator==(lhs, rhs); } template class SP> inline bool operator!=(const Char* lhs, const Zbase& rhs) { return !operator==(lhs, rhs); } @@ -300,6 +314,7 @@ template class SP> inline bool operator!=(const Ch template class SP> bool operator<(const Zbase& lhs, const Zbase& rhs); template class SP> bool operator<(const Zbase& lhs, const Char* rhs); template class SP> bool operator<(const Char* lhs, const Zbase& rhs); +#endif template class SP> inline Zbase operator+(const Zbase& lhs, const Zbase& rhs) { return Zbase(lhs) += rhs; } template class SP> inline Zbase operator+(const Zbase& lhs, const Char* rhs) { return Zbase(lhs) += rhs; } @@ -313,11 +328,6 @@ template class SP> inline Zbase operator template class SP> inline Zbase operator+( Char lhs, const Zbase& rhs) { return Zbase(&lhs, 1) += rhs; } template class SP> inline Zbase operator+(const Char* lhs, const Zbase& rhs) { return Zbase(lhs ) += rhs; } -#if __cpp_impl_three_way_comparison -#error implement: -std::strong_ordering operator<=>(const Zbase& lhs, const Zbase& rhs) -bool operator==(const Zbase& lhs, const Zbase& rhs); -#endif @@ -476,6 +486,31 @@ bool operator==(const Zbase& lhs, const Char* rhs) } +#if __cpp_impl_three_way_comparison && __cpp_lib_three_way_comparison +template class SP> inline +std::strong_ordering operator<=>(const Zbase& lhs, const Zbase& rhs) +{ + return std::lexicographical_compare_three_way(lhs.begin(), lhs.end(), //respect embedded 0 + rhs.begin(), rhs.end()); +} + + +template class SP> inline +std::strong_ordering operator<=>(const Zbase& lhs, const Char* rhs) +{ + return std::lexicographical_compare_three_way(lhs.begin(), lhs.end(), //respect embedded 0 + rhs, rhs + strLength(rhs)); +} + + +template class SP> inline +std::strong_ordering operator<=>(const Char* lhs, const Zbase& rhs) +{ + return std::lexicographical_compare_three_way(lhs, lhs + strLength(lhs), //respect embedded 0 + rhs.begin(), rhs.end()); +} + +#else template class SP> inline bool operator<(const Zbase& lhs, const Zbase& rhs) { @@ -498,6 +533,7 @@ bool operator<(const Char* lhs, const Zbase& rhs) return std::lexicographical_compare(lhs, lhs + strLength(lhs), //respect embedded 0 rhs.begin(), rhs.end()); } +#endif template class SP> inline diff --git a/zen/string_tools.h b/zen/string_tools.h index dcb5a54a..7f9a07ff 100644 --- a/zen/string_tools.h +++ b/zen/string_tools.h @@ -32,7 +32,7 @@ template Char asciiToLower(Char c); template Char asciiToUpper(Char c); //both S and T can be strings or char/wchar_t arrays or single char/wchar_t -template bool contains(const S& str, const T& term); +template >> bool contains(const S& str, const T& term); template bool startsWith (const S& str, const T& prefix); template bool startsWithAsciiNoCase(const S& str, const T& prefix); @@ -103,7 +103,6 @@ template T copyStringTo(S&& str); - //---------------------- implementation ---------------------- template inline bool isWhiteSpace(Char c) @@ -279,7 +278,7 @@ int compareAsciiNoCase(const S& lhs, const T& rhs) } -template inline +template inline bool contains(const S& str, const T& term) { static_assert(std::is_same_v, GetCharTypeT>); @@ -415,15 +414,15 @@ std::vector split(const S& str, const T& delimiter, SplitType st) namespace impl { -ZEN_INIT_DETECT_MEMBER(append); +ZEN_INIT_DETECT_MEMBER(append) //either call operator+=(S(str, len)) or append(str, len) -template inline -std::enable_if_t::value> stringAppend(S& str, InputIterator first, InputIterator last) { str.append(first, last); } +template >> inline +void stringAppend(S& str, InputIterator first, InputIterator last) { str.append(first, last); } //inefficient append: keep disabled until really needed -//template inline -//std::enable_if_t::value> stringAppend(S& str, InputIterator first, InputIterator last) { str += S(first, last); } +//template >> inline +//void stringAppend(S& str, InputIterator first, InputIterator last) { str += S(first, last); } } @@ -850,6 +849,8 @@ char unhexify(char high, char low) }; return static_cast(16 * unhexifyDigit(high) + unhexifyDigit(low)); //[!] convert to unsigned char first, then to char (which may be signed) } + + } #endif //STRING_TOOLS_H_213458973046 diff --git a/zen/string_traits.h b/zen/string_traits.h index d0f34d54..f1269130 100644 --- a/zen/string_traits.h +++ b/zen/string_traits.h @@ -92,14 +92,18 @@ template <> struct GetCharTypeImpl, false> template <> struct GetCharTypeImpl, false> { using Type = wchar_t; }; -ZEN_INIT_DETECT_MEMBER_TYPE(value_type); -ZEN_INIT_DETECT_MEMBER(c_str); //we don't know the exact declaration of the member attribute and it may be in a base class! -ZEN_INIT_DETECT_MEMBER(length); // +ZEN_INIT_DETECT_MEMBER_TYPE(value_type) +ZEN_INIT_DETECT_MEMBER(c_str) //we don't know the exact declaration of the member attribute and it may be in a base class! +ZEN_INIT_DETECT_MEMBER(length) // template class StringTraits { - using CleanType = std::remove_cv_t>; //std::remove_cvref requires C++20 +#if __cpp_lib_remove_cvref + using CleanType = std::remove_cvref_t; +#else + using CleanType = std::remove_cv_t>; +#endif using NonArrayType = std::remove_extent_t ; using NonPtrType = std::remove_pointer_t; using UndecoratedType = std::remove_cv_t ; //handle "const char* const" @@ -107,9 +111,9 @@ class StringTraits public: enum { - isStringClass = HasMemberType_value_type::value && - HasMember_c_str ::value && - HasMember_length ::value + isStringClass = HasMemberTypeV_value_type&& + HasMemberV_c_str && + HasMemberV_length }; using CharType = typename GetCharTypeImpl::Type; diff --git a/zen/sys_error.h b/zen/sys_error.h index 7c746258..f3b38250 100644 --- a/zen/sys_error.h +++ b/zen/sys_error.h @@ -85,10 +85,11 @@ std::wstring formatSystemError(const std::wstring& functionName, long long lastE inline std::wstring formatSystemError(const std::wstring& functionName, ErrorCode ec) { - //const std::wstring errorCode = printNumber(L"0x%08x", static_cast(ec)); + const std::wstring errorDescr = formatSystemErrorRaw(ec); const std::wstring errorCode = numberTo(ec); + //const std::wstring errorCode = printNumber(L"0x%08x", static_cast(ec)); - return formatSystemError(functionName, replaceCpy(_("Error Code %x"), L"%x", errorCode), formatSystemErrorRaw(ec)); + return formatSystemError(functionName, replaceCpy(_("Error Code %x"), L"%x", errorCode), errorDescr); } diff --git a/zen/type_traits.h b/zen/type_traits.h index 9823bb44..03fbd768 100644 --- a/zen/type_traits.h +++ b/zen/type_traits.h @@ -68,19 +68,19 @@ template using IsArithmetic = std::bool_constant::val /* Detect data or function members of a class by name: ZEN_INIT_DETECT_MEMBER + HasMember_ Example: 1. ZEN_INIT_DETECT_MEMBER(c_str); - 2. HasMember_c_str::value -> use boolean + 2. HasMemberV_c_str -> use boolean */ /* Detect data or function members of a class by name *and* type: ZEN_INIT_DETECT_MEMBER2 + HasMember_ Example: 1. ZEN_INIT_DETECT_MEMBER2(size, size_t (T::*)() const); - 2. HasMember_size::value -> use as boolean + 2. HasMember_size::value -> use as boolean */ /* Detect member type of a class: ZEN_INIT_DETECT_MEMBER_TYPE + HasMemberType_ Example: 1. ZEN_INIT_DETECT_MEMBER_TYPE(value_type); - 2. HasMemberType_value_type::value -> use as boolean + 2. HasMemberTypeV_value_type -> use as boolean */ //########## Sorting ############################## @@ -159,8 +159,7 @@ template <> struct IsSignedInt : std::true_type {}; template \ struct HasMemberImpl_##NAME : std::false_type {}; \ \ - template \ - struct HasMember_##NAME : std::bool_constant::value, T>::value> {}; + template constexpr bool HasMemberV_##NAME = HasMemberImpl_##NAME, T>::value; //#################################################################### @@ -178,7 +177,10 @@ template <> struct IsSignedInt : std::true_type {}; template static No& hasMember(...); \ public: \ enum { value = sizeof(hasMember(nullptr)) == sizeof(Yes) }; \ - }; + }; \ + \ + template constexpr bool HasMemberV_##NAME = HasMember_##NAME::value; + //#################################################################### #define ZEN_INIT_DETECT_MEMBER_TYPE(TYPENAME) \ @@ -195,7 +197,9 @@ template <> struct IsSignedInt : std::true_type {}; template static No& hasMemberType(...); \ public: \ enum { value = sizeof(hasMemberType(nullptr)) == sizeof(Yes) }; \ - }; + }; \ + \ + template constexpr bool HasMemberTypeV_##TYPENAME = HasMemberType_##TYPENAME::value; } #endif //TYPE_TRAITS_H_3425628658765467 diff --git a/zenXml/zenxml/cvrt_struc.h b/zenXml/zenxml/cvrt_struc.h index 85c5d8d0..9df1c7ba 100644 --- a/zenXml/zenxml/cvrt_struc.h +++ b/zenXml/zenxml/cvrt_struc.h @@ -46,9 +46,9 @@ template void writeStruc(const T& value, XmlElement& output); //------------------------------ implementation ------------------------------------- namespace impl_2384343 { -ZEN_INIT_DETECT_MEMBER_TYPE(value_type); -ZEN_INIT_DETECT_MEMBER_TYPE(iterator); -ZEN_INIT_DETECT_MEMBER_TYPE(const_iterator); +ZEN_INIT_DETECT_MEMBER_TYPE(value_type) +ZEN_INIT_DETECT_MEMBER_TYPE(iterator) +ZEN_INIT_DETECT_MEMBER_TYPE(const_iterator) ZEN_INIT_DETECT_MEMBER(begin) // ZEN_INIT_DETECT_MEMBER(end) //we don't know the exact declaration of the member attribute: may be in a base class! @@ -57,12 +57,12 @@ ZEN_INIT_DETECT_MEMBER(insert) // template using IsStlContainer = std::bool_constant< - impl_2384343::HasMemberType_value_type ::value && - impl_2384343::HasMemberType_iterator ::value && - impl_2384343::HasMemberType_const_iterator::value && - impl_2384343::HasMember_begin ::value && - impl_2384343::HasMember_end ::value && - impl_2384343::HasMember_insert ::value>; + impl_2384343::HasMemberTypeV_value_type && + impl_2384343::HasMemberTypeV_iterator && + impl_2384343::HasMemberTypeV_const_iterator && + impl_2384343::HasMemberV_begin && + impl_2384343::HasMemberV_end && + impl_2384343::HasMemberV_insert >; template -- cgit