pax_global_header00006660000000000000000000000064135216277130014521gustar00rootroot0000000000000052 comment=032699fbf9368b0562ac034c4cb7a361112754b1 syncthing-gtk-0.9.4.4/000077500000000000000000000000001352162771300144665ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/.gitignore000066400000000000000000000000531352162771300164540ustar00rootroot00000000000000*.pyc syncthing.exe *~ *.exe *.zip *.nupkg syncthing-gtk-0.9.4.4/LICENSE000066400000000000000000000431521352162771300155000ustar00rootroot00000000000000GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. {description} Copyright (C) {year} {fullname} This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. {signature of Ty Coon}, 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. syncthing-gtk-0.9.4.4/README.md000066400000000000000000000103201352162771300157410ustar00rootroot00000000000000Syncthing-GTK ============= GTK3 & Python based GUI and notification area icon for [Syncthing](https://github.com/syncthing/syncthing) [![screenshot1](http://i.imgur.com/N36wmBM.png)](http://i.imgur.com/eX250tQ.png) [![screenshot2](http://i.imgur.com/43mmnC7.png)](http://i.imgur.com/RTRgRdC.png) [![screenshot3](http://i.imgur.com/KDBYekd.png)](http://i.imgur.com/OZ4xEeH.jpg) ##### Supported Syncthing features - Everything what WebUI can display - Adding / editing / deleting nodes - Adding / editing / deleting repositories - Restart / shutdown server - Editing daemon settings ##### Additional features - First run wizard for initial configuration - Running Syncthing daemon in background - Half-automatic setup for new nodes and repositories - Nautilus (a.k.a. Files), Nemo and Caja integration - Desktop notifications ##### Like what I'm doing? [![Help me become filthy rich on Liberapay](https://img.shields.io/badge/Help%20me%20become%20filthy%20rich%20on-Liberapay-yellow.svg)](https://liberapay.com/kozec) or [![donate anything with PayPal](https://img.shields.io/badge/donate_anything_with-Paypal-blue.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=77DQD3L9K8RPU&lc=SK&item_name=kozec&item_number=scc¤cy_code=EUR&bn=PP%2dDonationsBF%3abtn_donate_LG%2egif%3aNonHosted) ##### Packages - Ubuntu, Debian, deb-based distros: in [OpenSUSE Build Service](http://software.opensuse.org/download.html?project=home%3Akozec&package=syncthing-gtk). - Arch Linux: In [[community] repository](https://www.archlinux.org/packages/community/any/syncthing-gtk/) - Fedora: search for `syncthing-gtk` in Software Center - SUSE (and other rpm-based distros): in [OpenSUSE Build Service](http://software.opensuse.org/download.html?project=home%3Akozec&package=syncthing-gtk). - Flatpak (distro-agnostic): in [Flathub](https://flathub.org/apps/details/me.kozec.syncthingtk) - Windows: Get [latest installer from here](https://github.com/kozec/syncthing-gui/releases/latest), or use [the Chocolatey package](https://chocolatey.org/packages/syncthing-gtk). - Or, in worst case scenario, download [latest tarball](https://github.com/kozec/syncthing-gui/releases/latest), extract it and run syncthing-gtk.py. ##### Dependencies - python 2.7, GTK 3.8 or newer and [PyGObject](https://live.gnome.org/PyGObject) - [python-gi-cairo](https://packages.debian.org/sid/python-gi-cairo), [gir1.2-notify](https://packages.debian.org/sid/gir1.2-notify-0.7) and [gir1.2-rsvg](https://packages.debian.org/sid/gir1.2-rsvg-2.0) on debian based distros (included in PyGObject elsewhere) - [python-dateutil](http://labix.org/python-dateutil) (Python 2 version) - [python-bcrypt](https://pypi.python.org/pypi/bcrypt/2.0.0) - [setuptools](https://pypi.python.org/pypi/setuptools) - [psmisc](http://psmisc.sourceforge.net) (for the `killall` command) - [Syncthing](https://github.com/syncthing/syncthing) v0.13 or newer ##### Optional Dependencies - libnotify for desktop notifications. - nautilus-python, nemo-python or caja-python for filemanager integration - [this Gnome Shell extension](https://extensions.gnome.org/extension/615/appindicator-support/), if running Gnome Shell - [gir1.2-appindicator3](https://packages.debian.org/sid/gir1.2-appindicator3-0.1) (part of [libappindicator](https://launchpad.net/libappindicator)), if running Gnome Shell or Unity ##### Windows Building Dependencies _(you don't need to install these just to **run** Syncthing-GTK)_ - Python for Windows 2.7 - [PyGObject for Windows](http://sourceforge.net/projects/pygobjectwin32/) with GTK3 enabled (tested with version 3.14.0) - [python-dateutil](http://labix.org/python-dateutil) (Python 2 version) - [Python for Windows Extensions](http://sourceforge.net/projects/pywin32/) - [WMI](http://timgolden.me.uk/python/wmi/index.html) - [NSIS2](http://nsis.sourceforge.net/NSIS_2) with NSISdl, [ZipDLL](http://nsis.sourceforge.net/ZipDLL_plug-in) and [FindProcDLL](http://forums.winamp.com/showpost.php?p=2777729&postcount=8) plugins (optional, for building installer) ##### Related links - https://syncthing.net - https://forum.syncthing.net/t/syncthing-gtk-gui-for-syncthing-now-with-inotify-support/709 - https://forum.syncthing.net/t/lxle-a-respin-of-lubuntu-now-has-syncthing-included-by-default/1392 syncthing-gtk-0.9.4.4/appimage-build.sh000077500000000000000000000137431352162771300177150ustar00rootroot00000000000000#!/bin/bash APP="syncthing-gtk" EXEC="syncthing-gtk" [ x"$BUILD_APPDIR" == "x" ] && BUILD_APPDIR=$(pwd)/appimage function download_dep() { NAME=$1 URL=$2 if [ -e ../../${NAME}.obstargz ] ; then # Special case for OBS cp ../../${NAME}.obstargz /tmp/${NAME}.tar.gz elif [ -e ${NAME}.tar.gz ] ; then cp ${NAME}.tar.gz /tmp/${NAME}.tar.gz else wget -c "${URL}" -O /tmp/${NAME}.tar.gz fi } function setup_dep() { NAME="$1" mkdir -p /tmp/${NAME} pushd /tmp/${NAME} tar --extract --strip-components=1 -f /tmp/${NAME}.tar.gz python2 setup.py build PYTHONPATH=${BUILD_APPDIR}/usr/lib/python2.7/site-packages python2 \ setup.py install --optimize=1 \ --prefix="/usr/" \ --root="${BUILD_APPDIR}" popd } function build_dep() { NAME="$1" CONFIGURE="$2" if [ -e ${NAME}.prebuilt.tar.gz ] ; then cp ${NAME}.prebuilt.tar.gz /tmp/${NAME}.prebuilt.tar.gz unpack_dep "$NAME.prebuilt" return $? fi mkdir -p /tmp/${NAME} pushd /tmp/${NAME} tar --keep-newer-files --extract --strip-components=1 -f /tmp/${NAME}.tar.gz [ $# -gt 2 ] && $3 ./configure $(echo $CONFIGURE) make make DESTDIR="${BUILD_APPDIR}" install popd } function unpack_dep() { NAME="$1" pushd ${BUILD_APPDIR} tar --extract --exclude="usr/include**" --exclude="usr/lib/pkgconfig**" \ --exclude="usr/lib/python3.6**" -f /tmp/${NAME}.tar.gz popd } function unpack_gi() { NAME="$1" pushd ${BUILD_APPDIR} tar --extract --wildcards "usr/lib/girepository-1.0/*" -f /tmp/${NAME}.tar.gz popd } set -exu # display commands, no empty vars, terminate on 1st failure # Download deps download_dep "python-dateutil-1.5" "http://labix.org/download/python-dateutil/python-dateutil-1.5.tar.gz" download_dep "six-1.11.0" "https://pypi.python.org/packages/16/d8/bc6316cf98419719bd59c91742194c111b6f2e85abac88e496adefaf7afe/six-1.11.0.tar.gz" download_dep "python-bcrypt-3.1.7" "https://archive.archlinux.org/packages/p/python2-bcrypt/python2-bcrypt-3.1.7-1-x86_64.pkg.tar.xz" download_dep "python-cairo-1.18.1" "https://archive.archlinux.org/packages/p/python2-cairo/python2-cairo-1.18.1-1-x86_64.pkg.tar.xz" download_dep "python-cffi-1.12.3" "https://archive.archlinux.org/packages/p/python2-cffi/python2-cffi-1.12.3-1-x86_64.pkg.tar.xz" download_dep "python-gobject-3.32.2" "https://archive.archlinux.org/packages/p/python2-gobject/python2-gobject-3.32.2-1-x86_64.pkg.tar.xz" download_dep "gir-1.60.2" "https://archive.archlinux.org/packages/g/gobject-introspection-runtime/gobject-introspection-runtime-1.60.2-1-x86_64.pkg.tar.xz" download_dep "gtk-3.24.7" "https://archive.archlinux.org/packages/g/gtk3/gtk3-3.24.7-1-x86_64.pkg.tar.xz" download_dep "atk-2.32" "https://archive.archlinux.org/packages/a/atk/atk-2.32-1-x86_64.pkg.tar.xz" download_dep "glib-2.60.6" "https://archive.archlinux.org/packages/g/glib2/glib2-2.60.6-1-x86_64.pkg.tar.xz" download_dep "pango-1.44.3" "https://archive.archlinux.org/packages/p/pango/pango-1%3A1.44.3-1-x86_64.pkg.tar.xz" download_dep "gdk-pixbuf-2.36.9" "http://ftp.gnome.org/pub/gnome/sources/gdk-pixbuf/2.36/gdk-pixbuf-2.36.9.tar.xz" download_dep "libxml2-2.9.9" "https://archive.archlinux.org/packages/l/libxml2/libxml2-2.9.9-2-x86_64.pkg.tar.xz" download_dep "librsvg-2.42.2" "http://ftp.gnome.org/pub/gnome/sources/librsvg/2.42/librsvg-2.42.2.tar.xz" download_dep "libpng-1.6.37" "https://archive.archlinux.org/packages/l/libpng/libpng-1.6.37-1-x86_64.pkg.tar.xz" download_dep "libepoxy-1.5.3" "https://archive.archlinux.org/packages/l/libepoxy/libepoxy-1.5.3-1-x86_64.pkg.tar.xz" download_dep "libnotify-0.7.8" "https://archive.archlinux.org/packages/l/libnotify/libnotify-0.7.8-1-x86_64.pkg.tar.xz" download_dep "libxrandr-1.5.2" "https://archive.archlinux.org/packages/l/libxrandr/libxrandr-1.5.2-1-x86_64.pkg.tar.xz" download_dep "icu-60.2" "https://ssl.icu-project.org/files/icu4c/60.2/icu4c-60_2-src.tgz" download_dep "libpcre-8.42" "https://ftp.pcre.org/pub/pcre/pcre-8.42.tar.gz" # Prepare & build mkdir -p ${BUILD_APPDIR}/usr/lib/python2.7/site-packages/ setup_dep "python-dateutil-1.5" setup_dep "six-1.11.0" unpack_dep "python-bcrypt-3.1.7" unpack_dep "python-cairo-1.18.1" unpack_dep "python-cffi-1.12.3" unpack_dep "python-gobject-3.32.2" # PYTHON=python2 build_dep "glib-2.56.1" "--disable-selinux --disable-fam --disable-xattr --prefix=/usr" unpack_dep "glib-2.60.6" build_dep "icu-60.2" "--prefix=/usr --disable-dyload --enable-rpath --disable-draft --disable-extras --disable-tools --disable-tests --disable-samples" "cd source" unpack_dep "gtk-3.24.7" # PYTHON=python2 build_dep "gtk-3.24.5" "--prefix=/usr --disable-rpath --enable-x11-backend --disable-cups --disable-papi --disable-cloudprint --enable-introspection=yes" build_dep "librsvg-2.42.2" "--prefix=/usr --disable-rpath --disable-static --enable-introspection=yes --disable-tools" build_dep "libpcre-8.42" "--prefix=/usr --disable-rpath --disable-cpp --disable-static" build_dep "gdk-pixbuf-2.36.9" "--prefix=/usr --disable-rpath --disable-static --enable-introspection=yes --without-libtiff --with-x11 --with-included-loaders=png,jpeg" unpack_dep "gir-1.60.2" unpack_dep "atk-2.32" unpack_gi "pango-1.44.3" unpack_dep "libxml2-2.9.9" unpack_dep "libpng-1.6.37" unpack_dep "libepoxy-1.5.3" unpack_dep "libnotify-0.7.8" unpack_dep "libxrandr-1.5.2" # Cleanup rm -R ${BUILD_APPDIR}/usr/bin rm -R ${BUILD_APPDIR}/usr/include || true for x in aclocal gtk-doc gdb gettext libalpm doc man vala locale bash-completion ; do rm -R ${BUILD_APPDIR}/usr/share/$x || true done python2 setup.py build python2 setup.py install --prefix ${BUILD_APPDIR}/usr # Move & patch desktop file mv ${BUILD_APPDIR}/usr/share/applications/${APP}.desktop ${BUILD_APPDIR}/ sed -i "s/Icon=.*/Icon=${APP}/g" ${BUILD_APPDIR}/${APP}.desktop # Copy icon cp -H icons/${APP}.png ${BUILD_APPDIR}/${APP}.png [ -e "${BUILD_APPDIR}/usr/share/${APP}/icons/${APP}.png" ] || ln -s "../../../../${APP}.png" "${BUILD_APPDIR}/usr/share/${APP}/icons/${APP}.png" # Copy AppRun script cp scripts/appimage-AppRun.sh ${BUILD_APPDIR}/AppRun chmod +x ${BUILD_APPDIR}/AppRun echo "Run appimagetool -n ${BUILD_APPDIR} to finish prepared appimage" syncthing-gtk-0.9.4.4/build_windows.py000066400000000000000000000163131352162771300177150ustar00rootroot00000000000000#!/c/Python27/python.exe """ Do './build_windows.py build' to build exe, then call 'makensis syncthing-gtk.nsis' to create installation package. """ import os, site, sys, shutil, re from cx_Freeze import setup, Executable from cx_Freeze.freezer import Freezer, VersionInfo from win32verstamp import stamp from tempfile import mkdtemp from subprocess import Popen, PIPE from setup import get_version as _get_version, find_mos gnome_dll_path = "/Python27/Lib/site-packages/gnome" build_dir = "./build/exe.win32-2.7/" # List of dlls that cx_freeze can't detect automatically missing_dll = [ 'libgtk-3-0.dll', 'libgdk-3-0.dll', 'libatk-1.0-0.dll', 'libcairo-gobject-2.dll', 'libgdk_pixbuf-2.0-0.dll', #'libgirepository-1.0-1.dll', #'libgmodule-2.0-0.dll', #'libgladeui-2-6.dll', 'libpango-1.0-0.dll', 'libpangocairo-1.0-0.dll', 'libpangoft2-1.0-0.dll', 'libpangowin32-1.0-0.dll', 'libffi-6.dll', #'libgio-2.0-0.dll', 'libharfbuzz-gobject-0.dll', 'libharfbuzz-0.dll', #'libpng16-16.dll', #'libxmlxpat.dll', #'libintl-8.dll', 'librsvg-2-2.dll', #'libzzz.dll', 'libtiff-5.dll', 'libwebp-5.dll', #'libfreetype-6.dll', #'libwinpthread-1.dll', 'libepoxy-0.dll', 'libjasper-1.dll', 'libjpeg-8.dll', 'gspawn-win32-helper.exe', 'gspawn-win32-helper-console.exe', ] # List of dlls that are exported from wrong source (or broken for # somehow other reason wrong_sized_dll = [ 'libcairo-gobject-2.dll', 'libpangocairo-1.0-0.dll', 'libfontconfig-1.dll', 'libglib-2.0-0.dll', 'libgobject-2.0-0.dll', 'libgthread-2.0-0.dll', ] # List of languages that are copied from GTK and included in installation enabled_gtk_locales = [ "sk", "cs", "pl", "de", "fr", "vi", "ru", "zh_CN", "lt", "es", "hu", "nl", "it" ] include_files = [ ] # Stuff required by GTK gtk_dirs = ('etc', 'lib') include_files += [ (os.path.join(gnome_dll_path, x), x) for x in gtk_dirs ] include_files += [ (os.path.join(gnome_dll_path, x), x) for x in missing_dll ] # GTK locales include_files += [ (os.path.join(gnome_dll_path, "share/locale", x, "LC_MESSAGES", "glib20.mo"), "share/locale/" + x + "/LC_MESSAGES/glib20.mo" ) for x in enabled_gtk_locales ] include_files += [ (os.path.join(gnome_dll_path, "share/locale", x, "LC_MESSAGES", "gtk30.mo"), "share/locale/" + x + "/LC_MESSAGES/gtk30.mo" ) for x in enabled_gtk_locales ] # Data files include_files += [ x for x in os.listdir(".") if x.endswith(".glade") ] include_files += [ "./icons" ] d = [ (x, x) for x in find_mos("locale/") ] include_files += d import pprint pprint.pprint(include_files) # sys.exit(0) executables = [ Executable( "scripts/syncthing-gtk-exe.py", targetName = "syncthing-gtk.exe", base = "Win32GUI", icon = "icons/st-logo-128.ico", ), Executable( "scripts/syncthing-gtk-exe.py", targetName = "syncthing-gtk-console.exe", base = "console", icon = "icons/st-logo-128.ico", ), ] get_version = lambda : "%s-win32" % (_get_version(),) # Monkey-patch _AddVersionResource in cx_Freeze so win32verstamp will # not bitch about non-numeric version RE_NUMBER = re.compile(r'v?([0-9]+).*') extract_number = lambda x : RE_NUMBER.match(x).group(1) if \ RE_NUMBER.match(x) else "0" win32version = lambda x : ".".join([ extract_number(i) for i in x.split(".")[0:4] ]) Freezer._AddVersionResource = lambda self, exe : \ stamp(exe.targetName, VersionInfo( win32version(self.metadata.version), comments = self.metadata.long_description, description = self.metadata.description, company = self.metadata.author, product = self.metadata.name, copyright = exe.copyright, trademarks = exe.trademarks )) setup( name = "Syncthing GTK", author = "Kozec", version = get_version(), description = "Windows port of Syncthing GTK", options = dict( build_exe = dict( includes = [ "gi" ], packages = [ "gi", "bcrypt", "cffi" ], include_files = include_files ), ), executables = executables ) if 'build' in sys.argv: for l in wrong_sized_dll: print "replacing", l shutil.copy( os.path.join(gnome_dll_path, l), os.path.join(build_dir, l) ) # Copy some theme icons sizes = ["16x16", "24x24", "32x32", "scalable"] icons = { "status" : [ "image-missing", "dialog-information", "dialog-warning", "dialog-error", "checkbox-symbolic", "checkbox-mixed-symbolic", "checkbox-checked-symbolic", ], "mimetypes" : [ "text-html" ], "emblems" : [ "emblem-system-symbolic" ], "apps" : [ "utilities-terminal" ], "categories" : [ "preferences-system" ], "places": [ "user-home" ], "actions" : [ "help-about", "edit-delete", "edit-undo", "application-exit", "system-shutdown", "document-open", "view-refresh", "open-menu-symbolic", "window-close-symbolic", "window-maximize-symbolic", "window-restore-symbolic", "window-minimize-symbolic", "list-add-symbolic", "list-remove-symbolic", "pan-up-symbolic", "pan-start-symbolic", "pan-end-symbolic", "pan-down-symbolic", ], "devices" : [ "drive-harddisk", "computer", ], } themes = ["Adwaita"] target_path = os.path.join(build_dir, "share/icons/") src_path = os.path.join(gnome_dll_path, "share/icons/") for theme in themes: for size in sizes: extension = "svg" if size == "scalable" else "png" for cat in icons: try: os.makedirs(os.path.join(target_path, theme, size, cat)) except Exception : pass for icon in icons[cat]: print "Copying icon %s/%s/%s/%s" % (theme, size, cat, icon) icon = "%s.%s" % (icon, extension) src = os.path.join(src_path, theme, size, cat, icon) dst = os.path.join(target_path, theme, size, cat, icon) if os.path.exists(src): shutil.copy(src, dst) print "Copying theme index for", theme shutil.copy( os.path.join(src_path, theme, "index.theme"), os.path.join(target_path, theme, "index.theme") ) print "Copying even more icons" shutil.copy( os.path.join(build_dir, "icons/128x128/apps/syncthing-gtk.png"), os.path.join(build_dir, "icons/syncthing-gtk.png") ) print "Copying glib schemas" if not os.path.exists(os.path.join(build_dir, "/share/glib-2.0/schemas")): target_path = os.path.join(build_dir, "share/glib-2.0/schemas") src_path = os.path.join(gnome_dll_path, "share/glib-2.0/schemas") if not os.path.exists(target_path): os.makedirs(target_path) for filename in os.listdir(src_path): src = os.path.join(src_path, filename) target = os.path.join(target_path, filename) shutil.copy(src, target) print "Fixing https://github.com/syncthing/syncthing-gtk/issues/313" # Needs http://win-builds.org/1.5.0/packages/windows_32/FILENAME in in work directory FILENAME = "glib-networking-2.36.2-1-i686-w64-mingw32.txz" tmpdir = mkdtemp() cwd = os.getcwd() archive = open(FILENAME, "rb") os.chdir(os.path.join(build_dir)) tarxz = Popen(['tar', 'Jxv', '--exclude', 'windows_32/share/*', '--exclude', 'windows_32/doc/*', '--strip-components', "1"], stdin=PIPE) tarxz.communicate(archive.read()) archive.close() os.chdir(cwd) if tarxz.returncode != 0: print >>sys.stderr, "Failed to unpack", FILENAME sys.exit(1) print "Storing version" with open(os.path.join(build_dir, "__version__"), "w") as f: f.write(get_version()) with open(os.path.join(build_dir, "..", "version.nsh"), "w") as f: f.write('!define VERSION "{version}"'.format(version=get_version())) syncthing-gtk-0.9.4.4/chocolatey_update.py000066400000000000000000000050041352162771300205330ustar00rootroot00000000000000#!/c/Python27/python.exe """ Update Chocolatey package from GitHub releases information. Requirements: - Being on Windows - Having Chocolatey installed (https://chocolatey.org/) - Having warmup and nuget.commandline installed ("cinst warmup nuget.commandline") - Having the API key configured ("nuget SetApiKey [API_KEY_HERE] -source http://chocolatey.org/" "https://chocolatey.org/account") - Being a maintainer of the syncthing-gtk package on Chocolatey """ from __future__ import unicode_literals, print_function import re, os, json try: from urllib import request # Py3 except ImportError: import urllib2 as request # Py2 from io import open print("Retrieving last version...") releasesString = request.urlopen("https://api.github.com/repos/syncthing/syncthing-gtk/releases").read().decode('utf-8') releases = json.loads(releasesString) lastRelease = releases[0] # Improve if needed version = '' url = '' releaseNotes = '' version = lastRelease['name'].replace('v', '', ) releaseNotes = lastRelease['body'].replace('\r', '').replace(':\n-', ':\n\n-') for asset in lastRelease['assets']: if re.match(r'.+win32-full-installer.exe', asset['name']): # url = "https://cdn.rawgit.com/syncthing/syncthing-gtk/releases/download/"+lastRelease['name']+"/"+asset['name'] url = asset['browser_download_url'] assert(url != ''), "ERR No fitting script found" print("Found version", version) print("Updating files...") nuspecFile = open("syncthing-gtk.nuspec", "r", encoding="utf8") nuspecString = nuspecFile.read() nuspecFile.close() nuspecString = re.sub(r'.*', ''+version+'', nuspecString) nuspecString = re.sub(r'[\w\W]*', ''+releaseNotes+'', nuspecString) nuspecFile = open("syncthing-gtk.nuspec", "w", encoding="utf8") print(nuspecString, file=nuspecFile, end="") nuspecFile.close() chocolateyInstallFile = open("tools/chocolateyInstall.ps1", "r", encoding="utf8") chocolateyInstallString = chocolateyInstallFile.read() chocolateyInstallFile.close() chocolateyInstallString = re.sub(r'\$url ?= ?\'.*\'\n', '$url = \''+url+'\'\n', chocolateyInstallString) chocolateyInstallFile = open("tools/chocolateyInstall.ps1", "w", encoding="utf8") print(chocolateyInstallString, file=chocolateyInstallFile, end="") chocolateyInstallFile.close() print("Packaging...") os.system("cpack") input("Done! Press [Enter] to push or ^C to cancel pushing") print("Pushing...") os.system("cpush syncthing-gtk."+version+".nupkg") print("Done!") syncthing-gtk-0.9.4.4/doc/000077500000000000000000000000001352162771300152335ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/doc/syncthing-gtk.1000066400000000000000000000020021352162771300201000ustar00rootroot00000000000000.\" Manpage for syncthing-gtk .TH man 1 "23 Aug 2016" "1.0" "syncthing-gtk man page" .SH NAME Syncthing-GTK \- GUI for Syncthing .SH SYNOPSIS syncthing-gtk [OPTIONS...] .SH DESCRIPTION Syncthing-GTK is a GTK3 and Python based GUI and notification area icon for Syncthing. .SH OPTIONS -h, --help Shows help screen -w, --window Display window (don't start minimized) -m, --minimized Hide window (start minimized) -s, --header Use classic window header -q, --quit Quit running instance (if any) -v, --verbose Be verbose -d, --debug Be more verbose (debug mode) -1, --wizard Run 'first start wizard' and exit -a, --about Display about dialog and exit --home Overrides default syncthing configuration directory --add-repo Opens 'add repository' dialog with specified path prefilled --remove-repo If there is repository assigned with specified path, opens 'remove repository' dialog .SH SEE ALSO syncthing(1) .SH COPYRIGHT Code & UI (c) 2016 Kozec syncthing-gtk-0.9.4.4/generate-icons.sh000077500000000000000000000100011352162771300177200ustar00rootroot00000000000000#!/bin/bash # Used to generate some icons # Requires inkscape and imagemagick pacages ICODIR=./icons/ # Directory with icons SI_FRAMES=12 # Number of animation frames for status icon for size in 16 24 32 ; do # Rotating 'syncing' status icon is generated from multilayer svg inkscape ${ICODIR}/si-syncthing.svg --export-id-only \ --export-area-page \ --export-id=background \ --export-png=/tmp/si-syncthing-back-${size}.png \ --export-width=${size} --export-height=${size} # Generate default icon for each rotation # for i in $(seq 0 $((SI_FRAMES-1))) ; do for i in 0 ; do echo si-syncthing-${i}.png inkscape ${ICODIR}/si-syncthing.svg --export-id-only \ --export-area-page \ --export-id=rot${i} \ --export-png=/tmp/si-syncthing-${size}-${i}.png \ --export-width=${size} --export-height=${size} convert \ /tmp/si-syncthing-back-${size}.png \ /tmp/si-syncthing-${size}-${i}.png \ -gravity center -compose over -composite \ ${ICODIR}/${size}x${size}/status/si-syncthing-${i}.png done # Generate icon for idle state, unknown/offline state and warning state echo si-syncthing-idle.png convert \ /tmp/si-syncthing-back-${size}.png \ /tmp/si-syncthing-${size}-0.png \ -gravity center -compose over -composite \ ${ICODIR}/${size}x${size}/status/si-syncthing-idle.png echo si-syncthing-unknown.png convert \ /tmp/si-syncthing-back-${size}.png \ /tmp/si-syncthing-${size}-0.png \ -gravity center -compose over -composite \ -colorspace Gray \ ${ICODIR}/${size}x${size}/status/si-syncthing-unknown.png echo si-syncthing-warning.png inkscape ${ICODIR}/si-syncthing.svg --export-id-only \ --export-area-page \ --export-id=warning \ --export-png=/tmp/si-syncthing-warning-${size}.png \ --export-width=${size} --export-height=${size} convert \ ${ICODIR}/${size}x${size}/status/si-syncthing-idle.png \ /tmp/si-syncthing-warning-${size}.png \ -gravity center -compose over -composite \ ${ICODIR}/${size}x${size}/status/si-syncthing-warning.png # Generate black & white icons for cols in "background-black rot black" "background-white rotblack white" ; do cols=($cols) inkscape ${ICODIR}/si-syncthing.svg --export-id-only \ --export-area-page \ --export-id=${cols[0]} \ --export-png=/tmp/si-syncthing-back-${size}.png \ --export-width=${size} --export-height=${size} # Generate icon for each rotation for i in $(seq 0 $((SI_FRAMES-1))) ; do echo si-syncthing-${cols[2]}-${i}.png inkscape ${ICODIR}/si-syncthing.svg --export-id-only \ --export-area-page \ --export-id=${cols[1]}${i} \ --export-png=/tmp/si-syncthing-${size}-${i}.png \ --export-width=${size} --export-height=${size} convert \ /tmp/si-syncthing-back-${size}.png \ /tmp/si-syncthing-${size}-${i}.png \ -gravity center -compose over -composite \ ${ICODIR}/${size}x${size}/status/si-syncthing-${cols[2]}-${i}.png done # Generate icon for idle state, unknown/offline state and warning state echo si-syncthing-${cols[2]}-idle.png convert \ /tmp/si-syncthing-back-${size}.png \ /tmp/si-syncthing-${size}-0.png \ -gravity center -compose over -composite \ ${ICODIR}/${size}x${size}/status/si-syncthing-${cols[2]}-idle.png echo si-syncthing-${cols[2]}-unknown.png inkscape ${ICODIR}/si-syncthing.svg --export-id-only \ --export-area-page \ --export-id=${cols[1]}-unknown \ --export-png=/tmp/si-syncthing-${size}-unknown.png \ --export-width=${size} --export-height=${size} convert \ /tmp/si-syncthing-back-${size}.png \ /tmp/si-syncthing-${size}-unknown.png \ -gravity center -compose over -composite \ -colorspace Gray \ ${ICODIR}/${size}x${size}/status/si-syncthing-${cols[2]}-unknown.png echo si-syncthing-${cols[2]}-warning.png convert \ ${ICODIR}/${size}x${size}/status/si-syncthing-${cols[2]}-idle.png \ /tmp/si-syncthing-warning-${size}.png \ -gravity center -compose over -composite \ ${ICODIR}/${size}x${size}/status/si-syncthing-${cols[2]}-warning.png done donesyncthing-gtk-0.9.4.4/generate-locales.sh000077500000000000000000000004051352162771300202360ustar00rootroot00000000000000#!/bin/bash # Constants GETTEXT_DOMAIN="syncthing-gtk" MESSAGES_PO="messages.po" for lang in locale/* ; do filename=${lang}/LC_MESSAGES/${GETTEXT_DOMAIN}.po mo=${lang}/LC_MESSAGES/${GETTEXT_DOMAIN}.mo msgfmt ${filename} -o ${mo} echo "Created" ${mo} done syncthing-gtk-0.9.4.4/generate-source-locale.sh000077500000000000000000000012551352162771300213550ustar00rootroot00000000000000#!/bin/bash # Constants GETTEXT_DOMAIN="syncthing-gtk" MESSAGES_PO="messages.po" LOCALEDIR="locale" SRCLOCALE="en" # Generate messages.po [ -e ${MESSAGES_PO} ] && rm ${MESSAGES_PO} xgettext -e syncthing_gtk/*.py glade/*.glade filename=${LOCALEDIR}/${SRCLOCALE}/LC_MESSAGES/${GETTEXT_DOMAIN}.po mo=${LOCALEDIR}/${SRCLOCALE}/LC_MESSAGES/${GETTEXT_DOMAIN}.mo mkdir -p ${LOCALEDIR}/${SRCLOCALE}/LC_MESSAGES if [ -e ${filename} ] ; then # Merge new strings to existing po file msgmerge --update ${filename} ${MESSAGES_PO} || exit 1 echo "Merged" ${filename} msgfmt ${filename} -o ${mo} else # Copy new po file cp ${MESSAGES_PO} ${filename} || exit 1 echo "Created" ${filename} fi syncthing-gtk-0.9.4.4/glade/000077500000000000000000000000001352162771300155425ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/glade/about.glade000066400000000000000000000167111352162771300176600ustar00rootroot00000000000000 False About Syncthing-GTK icons/st-gtk-logo.png dialog False vertical 2 False end gtk-close True True True True True True 1 False False 0 True False 50 50 10 10 vertical True False 10 icons/st-gtk-logo.png False True 0 True False <span size="large"><b>Syncthing-GTK</b></span> True center False True 1 True False 5 10 (version) False True 2 True False 20 GUI and notification area icon for Syncthing True center False True 3 True True 25 <b>Code&amp;UI © 2016 Kozec</b> Source code available on <a href="http://github.com/kozec/syncthing-gtk">GitHub</a> I'd like to express my biggest thanks for all my <b><a href="https://www.patreon.com/kozec">Patreon</a></b> supporters, with special mention of <b>Deryn L.</b> <b>Eric Duhamel</b> <b>Enric Morales</b> <b>Orivej Desh</b> <b>G. Wilson</b> <b>Joshua M</b> <b>Lutris</b> <b>Taowa</b> and <b>ambidot</b> True center 0 False True 4 True True 10 <small>This program comes with absolutely no warranty. See the <a href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html">GNU General Public License, version 2 or later</a> for details.</small> True center 1 True True 5 True True 1 syncthing-gtk-0.9.4.4/glade/app.glade000066400000000000000000001154371352162771300173330ustar00rootroot00000000000000 900 600 syncthing-gtk icons/32x32/apps/syncthing-gtk.png True True True none half app-menu-icons app-menu True True syncthing-gtk 24 icons/24x24/apps/syncthing-gtk.png start False start True False center edit-menu-button-icon edit-menu-icons edit-menu True True emblem-system-symbolic open-menu-symbolic 1 end True False vertical True False horizontal 6 6 True center app-menu-button-icon app-menu-icons app-menu True False True 0 True True True 1 True False center edit-menu-button-icon edit-menu-icons edit-menu True False True end 2 True False horizontal True True 500 True True True True False True False vertical 6 False False True True True False True False vertical 6 False False True True True False True False Open _Web Interface True True menu-webui-image app.webui True False Display _Daemon Output True True menu-daemon-output-image app.daemon_output True False UI _Settings True False True menu-ui-settings-image False True app.preferences True False gtk-about True True True app.about True False gtk-quit True True True app.quit True False True False Add Shared _Folder True menu-add-folder-image False True app.add_folder True False Add _Device True menu-add-device-image False True app.add_device True False Daemon _Settings True False True menu-daemon-settings-image False True app.daemon_preferences True False Show _ID True menu-show-id-image False True app.show_id True False True False Sh_utdown Daemon True menu-shutdown-image False True app.daemon_shutdown True False _Restart Daemon True menu-restart-image False True app.daemon_restart
Open _Web Interface app.webui Display _Daemon Output app.daemon_output
UI _Settings app.preferences
_About app.about _Quit app.quit
Add Shared _Folder app.add_folder Add _Device app.add_device
Daemon _Settings app.daemon_preferences Show _ID app.show_id
Sh_utdown Daemon app.daemon_shutdown _Restart Daemon app.daemon_restart
True False True False Override Remote Changes True True True menu-popup-override-image True False Override Local Changes True True True menu-popup-revert-image True False True False gtk-edit True True True True False Edit _Ignore Patterns True menu-popup-edit-ignored-image True True False gtk-delete True True True True False True False _Rescan True False True menu-popup-rescan-folder-image True False _Browse True True True menu-popup-browse-image True False True False gtk-edit True True True True False Show _ID True True True menu-popup-show-id-image True False gtk-media-pause True True True True False Resume menu-popup-resume-image True True True True False gtk-delete True True True True False True False Connecting to daemon... False False True False Show Window False True True False True False S_top Syncthing True menu-si-shutdown-image False False True False False Resume Sync_thing True menu-si-resume-image False True True _Incoming Rate Limit True False True menu-si-recvlimit-image False True False True False _Unlimited True True False _Other True True False _Outgoing Rate Limit True False True menu-si-sendlimit-image False True False True False _Unlimited True True False _Other True True False True False True False Show _ID True menu-si-show-id-image False False True True False Open _Web Interface True True menu-si-webui-image True False Display _Daemon Output True True menu-si-daemon-output-image True False UI _Settings True True menu-si-ui-settings-image True False True False gtk-about True True True True False gtk-quit True True True True syncthing-gtk 16 icons/16x16/apps/syncthing-gtk.png True emblem-system-symbolic True False 1 drive-harddisk True False 1 computer True False 1 preferences-system True False 1 preferences-system True False 1 icons/show_id.svg True False 1 system-shutdown True False 1 view-refresh True False 1 text-html True False 1 utilities-terminal True False 1 view-refresh True False 1 icons/show_id.svg True False 1 system-shutdown True False 1 media-playback-start True False 1 view-refresh True False 1 text-html True False 1 utilities-terminal True False 1 go-down True False 1 go-up True False 1 preferences-system True False 1 icons/eye.svg True False 1 icons/show_id.svg True False edit-undo True False edit-undo True False view-refresh True False folder-open True False gtk-media-play
syncthing-gtk-0.9.4.4/glade/daemon-output.glade000066400000000000000000000063531352162771300213500ustar00rootroot00000000000000 False Daemon Output proc-output True 1000 500 dialog True True False vertical 2 False end gtk-close True True True True True True 0 False True end 0 True True in True False True True False True True 1 syncthing-gtk-0.9.4.4/glade/daemon-settings.glade000066400000000000000000000427161352162771300216530ustar00rootroot00000000000000 1 99999 5 1 10 99999 1 1 10 99999 1 1 10 1 9999 50 1 10 1 65535 21025 1 10 False daemon-settings True 500 dialog True True False vertical 2 False end gtk-cancel True True True True True True 0 gtk-save True False True True True True True 1 False True end 0 True False 10 10 3 True True False Sync Protocol Listen Addresses True vlistenAddresses 0 0 0 2 True True True 10 0 1 2 Enable Local _Discovery True True False True 0 True 0 6 2 Enable _UPnP True True False True 0 True 0 12 2 True False Local Discovery _Port True vlocalAnnouncePort 0 0 7 2 True True 10 adjMaxSendKbps 0 5 2 True True False True 0 True True False Outgoing _Rate Limit True vmaxSendKbpsEnabled 0 4 2 Open browser with _WebUI when daemon is starting True True False 10 True 0 True 0 14 2 Enable _Anonymous Usage Reporting True True False True 0 True 0 13 2 Enable _Global Discovery True True False True 0 True 0 9 2 True False Global Discovery _Servers True vglobalAnnounceServers 0 0 10 2 True True 15 0 11 2 True True 10 50 adjlocalAnnouncePort 50 0 8 2 True True False True 0 True True False _Incoming Rate Limit True vmaxRecvKbpsEnabled 0 2 2 True True 10 adjMaxRecvKbps 0 3 2 True True 1 1 syncthing-gtk-0.9.4.4/glade/device-edit.glade000066400000000000000000000376651352162771300207430ustar00rootroot00000000000000 1 99999 5 1 10 always All Data never Off metadata Metadata Only False device-edit True 500 dialog True True False vertical 2 False end gtk-cancel True True True True True True 0 gtk-save True False True True True True True 1 False True end 0 True False 10 10 3 True False Device _ID True vdeviceID 0 0 0 2 True True 0 1 2 True False Device _Name True vname 0 0 3 2 True True 0 4 2 True False 10 Shown instead of Device ID in the cluster status. True 0 0 5 2 True False _Addresses True vaddresses 0 0 6 2 True True 0 7 2 True False 10 Enter comma separated "ip:port" addresses or "dynamic" to perform automatic discovery of the address. True 0 0 8 2 True False True 0 0 2 2 True False Share _Folders True 0 0 13 2 True False Select the folders to share with this device 0 0 15 2 _Introducer True True False True 0 True 0 11 2 True False 10 Any devices configured on an introducer device will be added to this device as well. True 0 0 12 2 True False _Compression True vaddresses 0 0 9 2 True False 10 lststrCompression 1 0 10 2 100 True True True True False True False vertical 0 14 2 True True 1 1 syncthing-gtk-0.9.4.4/glade/device-id.glade000066400000000000000000000111211352162771300203650ustar00rootroot00000000000000 1 99999 5 1 10 False Device Identification device-id True 500 dialog True True False vertical 2 False end gtk-close True True True True True True 0 False True end 0 True False 20 20 vertical True True 10 10 False 70 XYZ-123-ABC 0.5 False True 0 True False True False 256 computer 6 True True 1 False True 1 syncthing-gtk-0.9.4.4/glade/find-daemon.glade000066400000000000000000000231331352162771300207230ustar00rootroot00000000000000 False Can't invoke the daemon find-daemon True center 600 dialog-error dialog True True False 5 5 5 5 vertical 2 False end UI _Settings True True True True True True 0 gtk-quit True True True True True True 1 gtk-save True False True True True True True 3 False True end 0 True False vertical 450 True False 10 True ... message goes here ... True True 0 False True 0 True False 10 True True 20 True True 0 _Browse... True True True True 0.51999998092651367 False True 1 False True 1 True False 30 True False 20 True True 0 200 False True False True 1 _Download... True True True True False True 2 False True 2 True True 1 syncthing-gtk-0.9.4.4/glade/folder-edit.glade000066400000000000000000001734741352162771300207560ustar00rootroot00000000000000 1 99999 5 1 10 9999 1 10 100 1 1 10 999999 5 1 10 9999 1 10 random Random alphabetic Alphabetic smallestFirst Smallest First largestFirst Largest First oldestFirst Oldest First newestFirst Newest First Off simple Simple staggered Staggered trashcan Trashcan external External False folder-edit True 700 dialog True True False vertical 2 False end gtk-cancel True True True True True True 0 gtk-save True False True True True True True 1 False True end 0 True True True False 10 10 5 5 3 True False Folder _Label True vlabel 0 0 0 2 True True gtk-refresh Generate Random 0 4 2 True False 10 Short identifier for the folder. Must be the same on all devices. True 0 0 5 2 True False _Path True 0 0 6 2 True False 10 Path to the folder on the local computer. Will be created if it does not exist. True 0 0 8 2 True False Rescan _Interval True 0 0 9 2 True True 10 5 False number adjRescanInterval True True 5 0 10 2 True True False 10 True 0 True True False Monitor filesystem for _changes True vfsWatcherEnabled start 0 11 2 True False True True True True 0 Browse... True True True False True 1 0 7 2 True False Folder _ID True vid 0 0 3 2 True True 0 1 2 True False 10 Optional descriptive label for the folder. Can be different on each device. True 0 0 2 2 True True False True 0 True True False _Send Only Folder True vreadOnly 0 12 2 200 True False 10 Files are protected from changes made on other devices, but changes made on this device will be sent to the rest of the cluster. True 0 0 0 13 2 True True False True 0 True True False _Receive Only Folder True vreadOnly 0 14 2 200 True False 10 Changes from other devices are applied to files on this device, but changes made on this device are not sent to the rest of the cluster. True 0 0 0 15 2 True False True _Folder Settings True True False True False 10 10 5 5 vertical True False Select the devices to share this folder with. True 0 0 False True 0 True True True True False True False vertical False True 1 1 True False True Share With _Devices True 1 True False True False 10 10 5 5 vertical True False Versioning _Mode True vversioning 0 False True 0 300 True False lsVersioning 1 False True 1 True False crossfade True False vertical False True vertical 200 True False 10 Files are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing. True 0 0 False True 0 True False _Keep Versions True vkeepVersions 0 0 False False 2 300 True True 5 adjKeepVersions 1 True True 5 False True 3 True False The number of old versions to keep, per file. True 0 0 True True 4 False True 0 False True vertical 200 True False 10 Files are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing. Versions are automatically deleted if they are older than the maximum age or exceed the number of files allowed in an interval. The following intervals are used: for the first hour a version is kept every 30 seconds, for the first day a version is kept every hour, for the first 30 days a version is kept every day, until the maximum age a version is kept every week. True 0 0 False True 0 True False Ma_ximum Age True vkeepVersions 0 0 False False 1 300 True True 10 5 adjMaxAge 1 True True 5 False True 2 True False Versions _Path True vkeepVersions 0 0 False False 3 300 True True False True 4 200 True False Path where versions should be stored (leave empty for the default .stversions folder). True 0 0 False True 5 False True 1 True False vertical True False 10 Files are moved to .stversions folder when replaced or deleted by Syncthing True 0 False True 0 True False Clean out _after True vkeepVersions 0 0 False False 1 300 True True 5 adjvCleanoutDays 1 True True 5 False True 2 200 True False The number of days to keep files in the trash can. True 0 0 False True 3 False True 2 True False vertical 200 True False 10 An external command handles the versioning. It has to remove the file from the synced folder. True 0 0 False True 0 True False Command True vkeepVersions 0 0 False False 1 300 True True False True 2 200 True False The first command line parameter is the folder path and the second parameter is the relative path in the folder. True 0 0 False True 3 False True 3 False True 2 2 True False True File _Versioning True 2 True False True False 10 10 5 5 vertical True True False True 0 True True False Ignore P_ermissions True vignorePerms start False True 0 True False 10 File permission bits are ignored when looking for changes. Use on FAT filesystems. True 0 0 False True 1 True False Minimum Free Disk Space True vminDiskFreePct 0 False True 2 True True 10 5 False number adjMinDiskFreePct 1 True True 1 False True 3 True False File Pull _Order True vorder 0 False True 4 300 True False 10 lsOrder 0 1 False True 5 3 True False True _Advanced True 3 True False True True 1 syncthing-gtk-0.9.4.4/glade/ignore-editor.glade000066400000000000000000000143671352162771300213220ustar00rootroot00000000000000 False Ignore Patterns ignore-edit True 600 550 dialog True True False 10 10 vertical 2 False end gtk-close True True True True True True 0 gtk-save True False True True True True True 1 False True end 0 True False vertical True True GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_STRUCTURE_MASK 10 in True False True tbPatterns False True True 0 True True 15 See <a href="http://docs.syncthing.net/users/ignoring.html">Syncthing documentation</a> for list of supported patterns True 0 False True 1 True False 5 File location: True end 0 False True 2 True True 1 syncthing-gtk-0.9.4.4/glade/ui-settings.glade000066400000000000000000001501261352162771300210200ustar00rootroot00000000000000 1 99999 5 1 10 99 1 10 syncthing Default syncthing-black Black syncthing-white White Default cs Česky de Deutsch en English es Español fr Français lt Latviešu pt Português ru Русский sk Slovenský vi tiếng việt zh_CN 中文 19 Lowest 10 Low 0 Normal -10 Above Normal 550 False Syncthing-GTK Settings ui-settings True 500 dialog True True False vertical 2 False 5 5 end False True 20 Please, restart Syncthing-GTK to apply all changed settings True True 0 gtk-cancel True True True True True True 1 gtk-save True False True True True True True 2 False True end 0 True True 400 True False 5 5 5 5 True False 10 When starting and Syncthing daemon is not running... 0 0 10 2 ... _wait for daemon True True False 30 True 0 True True 0 11 2 ... start daemon in _background True True False 30 True 0 True rbOnStartWait 0 12 2 ... _ask me what to do True True False 30 True 0 True rbOnStartWait 0 13 2 True False 10 When exiting after daemon was started in background... 0 0 14 2 ... terminate _daemon True True False 30 True 0 True rbOnExitLeave 0 15 2 ... leave daemon _running True True False 30 True 0 True True 0 16 2 ... ask me w_hat to do True True False 30 True 0 True rbOnExitLeave 0 17 2 Us_e traditional window header True True False True 0 True 0 2 2 True False 10 True Display desktop notifications for... 0 0 6 2 ... file updates True True False 30 True 0 True 0 7 2 ... errors True True False 30 True 0 True 0 9 2 ... synchronization completion True True False 30 True 0 True 0 8 2 Start Syncthing-GTK when I login to my desktop True True False True True 0 True 0 0 2 Minimize to _tray on start True True False True 0 True 0 1 2 Use _icons in menu True True False True 0 True 0 4 2 Display paths in directories panel True True False True 0 True 0 5 2 Force _dark theme True False True True 0 True 0 3 2 True False 20 10 True lst_vicon_theme 0 1 1 18 True False 10 Tray icon style 0 0 18 False True 5 Language 0 0 19 False True 20 5 True lst_vlanguage 0 1 1 19 True True False True _Interface True True False True False 5 3 5 True False Integrate Syncthing with filemanagers True end 0 0 0 Nemo (Cinamon Desktop) True False True False 10 5 0 True 0 1 Nautilus (Ubuntu/GNOME) True False True False 10 0 True 0 2 Caja (MATE Desktop) True False True False 10 0 True 0 3 True False False 7 Install blahblahblah to enable Nemo support Install blahblahblah to enable Nautilus support Install blahblahblah to enable Caja support 0 0 5 True False 8 3 <b>Note:</b> You may need to restart your filemanager after toggling integration. True True 0 0 4 1 True False True _Integration True 1 True False True False 5 5 5 5 True True False True 10 0 True True False Keep Syncthing binary up-to-date 0 0 6 2 True False True 10 If enabled, Syncthing-GTK will automatically check for new daemon releases and replace binary with latest version. True True 0 0 7 2 True False Daemon process priority True 0 0 0 2 True False lststrPriority 1 0 1 2 True False 10 Priority will be used only if "<i>start daemon in background</i>" option is checked on "<i>Interface</i>" page. True True 0 0 2 2 True False Maximum number of CPU cores True 0 0 3 2 True False 10 Sets the maximum number of CPU cores for daemon to use. This value will be used only if "<i>start daemon in background</i>" option is checked on "<i>Interface</i>" page. True True 0 0 5 2 True True 10 1 adjMaxCPUs 1 0 4 2 2 True True False True Daemon True 2 True False True False 5 5 5 5 True False True 10 This binary will be started when syncthing daemon is not running and "<i>start daemon in background</i>" option is checked on "<i>Interface</i>" page. True True 0 0 4 2 _Browse... True True True True True 0.51999998092651367 1 3 True False True Syncthing binary location True 0 0 2 2 True True True True 0 3 True False Daemon arguments and variables True 0 0 5 2 True True True 0 6 2 True False 10 Space-separated list of arguments and environment variables passed when starting above binary Use <i>VARIABLE="value"</i> to set variable and <i>-argument="value"</i> (with dash) for argument. If you need to pass commandline to different command (such as logger or ionice), separate prefixed arguments with exclamation mark "!" Example: <i>STTRACE="all" logger -t /var/log/syncthing.log ! -logflags=10</i> True True 0 0 7 2 True False 5 5 <b>Warning:</b> Changing settings on this page may prevent you from using Syncthing-GTK True 0 0 2 True False 5 5 5 5 0 1 2 3 True False True _Advanced True 3 True False True True 1 syncthing-gtk-0.9.4.4/icons/000077500000000000000000000000001352162771300156015ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/icons/128x128/000077500000000000000000000000001352162771300165365ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/icons/128x128/apps/000077500000000000000000000000001352162771300175015ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/icons/128x128/apps/syncthing-gtk.png000066400000000000000000000275161352162771300230130ustar00rootroot00000000000000PNG  IHDR>atEXtSoftwareAdobe ImageReadyqe<iTXtXML:com.adobe.xmp logo copy )S*IDATx]|U?޷GvB6$$ *ܨjjڪڪZ+mE2e !d/2^nn5޻|9s~w~!@<2Cя 7H3DM Xy}#J>(vĒp*u_[[|6KU\u`cu=Ѡ18nL 5Y4@z}LRŀA.ۃVbuy&0N9<Q/W'AP3{~>+7G0578XevRƕЅʏ}ً9@P%ӯq:f)2nI˗YطH un7NF^oL%-g.I}Ǵe 0xVgO?k-6=<_:<; QrA:[=l^BeɪeſWZu'\{˃YR'}Jەpxq[_YY63/&և2Ns/'"Dsa0 Qrlm*fth]Rizť-S^ $ɿyUm֖i~C"-様!.7:ǥ-h B p.MտM(|]KyhGy4QoΊfz7J+ 00r:XW  {T1 Y¿ g&6Nl#ܝ&T?Al@ t&9hArڋc>pj_m ] ({%Tsϊ8fX|je36t)?LY3nQAN`DW_.$/Uhx %u]00@W?s\ѳIyߨגrJ1 ;E3QLQG-.=x"spB;+A[ҧ5S!D6Q:-Eg'h ^8pE65z#$=u]X 2&7#0N nB&v$a%6sM$s3H[$3 jff[ >/w5 k uNGqkqpɟy§:[1v/_C`q^,(H>*i(2:wIP, ,R"Ux=\ sӕVծjTr;V@\WT+5@{ۣtYҸ$`99P;ޓY"t͈HЩB>e^ kԝt x)ۿz׷.Nuʡ]6&v3ӸM ޞ|l(n?V o6B%@iO B kxF^ "dtSNaxƱcnv_y9֤)SL Rh|]cVG'rao7FZ x ҷgaxWV:+Ru~95JF x3gSuA48xvlbsʰ=]eVK=DHDJ[XV0E1z6,TOh)|F#Lo[D/VӅW?/!% ]jS wְBPJO7k(ŝ`YYn 8*|^QI`]@?vfF=[*zP@),xOu " #jN .'BL X^f7M3w;~w(lɈ= .h¯F&jBWQKƨ>tT\e%RP) ,H5[hvc։P 3I>f'ܼ `lb޼ UO`@sMfsQs.Z]*1-ҺaEi@:(*nsqt^#1%]Nd_ju:Ԉj[P#Vѱv!毑iOyw\HV 1ުku ?ݓڜ Y?%l(utk'9|] Ǵ; -8شD#ip>vY$-mFR==;OQ1~.yT3$Ȕ$x/R҂(5QN-:UIc2`t;S%# ,$N˽@M2@`R%fg_lbNƧǛ'}iZyl(cK>,l!3D&h&k0G%K>1砘svYvv|ѹyŧڇrb槛↟n,[ :s*%JL|pEDd/#->?_MG%ﮅ} NET8ȟticqǍbxNv41%d)q9H~j*\wV|ZbY!>uQHN8pe^dƷ6VYgN!{x}zLDޠOnWBAs0-Yf-4<+Vd3q5 y|DL*)#E%DJ&LߨhBVgtt$ʯHP^XM9|9-k ojw h? SA-J$PHKhFWŧ R2eq:S$B~f$S~TG? KDd j`;\w㒘w$ebE1%| d ;d}P哨^MLnQNٓXD~R*M2nZŧl: =NKG5毋[p.F[}'@Hn$tr ̽լdSE!(dPƺUvTH6:&{D]71϶ ]kv{$PIUxC-C ِdj=KP:Rm&}0o~G=޹vXeYzNt1u:u$BZXK`R/ݐiw68lAJK{<3 g(-D%YLZ\i0<{r|"<gN-8<+AP{x!Qb䅩):"y0BhDf^mVQ.Ц\ܱ]> $4:(I\ ` 5 4 fEhe`PjTH>}tgvd+ 7r#LL[WgvĠՈ121:Nݦ 8Blm/.5ҫrgvi :?Ds*x+5$Wܶj$gzh.?B4eT (Xy&M_P5Tkgp&5S`8,ZJ=~H3tZpf? ߤDc5?Ín {)Hr/k+j0ͣ>^OTEC֙Ww@]m||@$dC6Pa\W.&N?=kAD,'J/Dq2#3MN=nΏ2aҩMni(PS)-)o^쟺C 0Hu/ԡ`A NN2}B[v>h.ṭ'`K00B1`N8VC8Y 뫯8k=B\h鴵lأB տc/Lj#h`_@JD۲6uoVMכ*a"Y;Z(_=@:\j++^p9Ĕ"J_eQ))GvN[ krɥhH[IZʙ)f='@SʙR$To`YUk6L¥V}{8a"nςh|,F4/H>;LeO?WiS'Ϊ m݄NexUְ={ur'J':uHG0&Gy2'=WˆjU flKiv` u[Qb8g/Aj^Jlp2?(h`~t2|j]NSAݝvQ.,ѭ+e^XO!ўKդ$dlLW˟´ 66TXWbS9[WWV>1kxN+;y]EMh'{YшpH֖@A& TҺ7#b]4jg{yf:Suȴߐ'Y$5ҳ" Tg4ߑFpCǾ`l 鹭HBpרed!(n?쨑xlBܾ. P"nZJr6VXF/֕ՖԴ1ٽWu8_{WX=pˊbEǖ bIhݺ\m?1 pqF$H){8ٶˊ(ȟ6l^E-O]PI˒hnX~ NQ˟wV +B/t]T gB^7uHz>.lde\J%g֔ZU32Hu{lK_-7:fE?Vd 5`F&/Q7a:) O Z{\ɤG'pva$UT1iH+qzpZW7{ &By_0}s krB"[IS{]ACK3 #B˺ƓYH35F10zP75rJdCI~= _Re@4- =,[4.A2 :$`6kՃ.T\Í,_(!= c.w`8=s‚h0=2#,kXD뼾ZZr \{g/h ekJv IXl /lbi.Lc5$rL1i0xШR׷xSӡ`#fLib%Lٶ*+#@)ݭQ?7[`^V$ Pހr,h \yW؄E޻e> jeQGڒuRϖqQ Z'i5Ŷ SRL'W5;3[}|) ikpzY~ً/z5#fnE2ҠQcC-8bbsQS֕Z ianCQm۾(nPW>Z@`:0!6exCo%Bï0dfVByQJ ȟihPOf_ 8,${o_}\EC./F Fjkrt._IB(cd<[ձ {'QOTxߵ'enB+4Bڰl@[y1, rXn{V'(g 4w46g͜5 !C![5/_'NQY0%I48}&7PHʘCRJ.dUq3SqZSrB\{1T8I.;#io4zȗ0~{~N8tO Q*7T&SP< ) ټ[2 &KۜSt*%k hH0.8Pssűf4!@Nlo,܎5tj(t.}If@GzXIh7bu\xun")wzzNZRI:-={dm 9}(,9^;蹋 h;Ӣ:o_80tv㓌pu^ kA K8"+ݎQ6 kɥ3 o]_~{㇫e/ޔXyc2Wsr0z#۟y Eř$$ 0g dnu;~fz* ׇmo^\ݶI>co9>x4׭`}l>!!( 10T/ƽ7Ib;̱>RHnG iX,MOPIڧGa)ʔkvhZ;z R w҄ z/ǰhF=M #Qm?f}}E;*:%.tW4[ѤYipMr}R_of7+AcI+Y.wny~h^*n9$ 0l T_ȃ[bw7+ l553pJOèL D6d ZRNf0Y HIn2L),ǟI&5t x FI+XV15z/s{wmW# tX6k@%>-.?$*dQ׫eƽ6? mAWe__{ C NcȔ])@&ªhxLCpBK`K.hVF\?$ ٬aֆKRa%a5^_ݮ pkX G+;%8UhEHoi݃"j];Rd*L#$H!EAnQd1~8 {YjZ_u@K9y䲇@6L6F2f ԿKώ4BI g=W:#$ֺu8wlK޳5nBڰh§҆Η-a[ XO\Th-HAv$LJ5Ic,j|YԌ~lNaFN`йX3m."Nٗ)ӎdK MKc{K'`I)&d8]mFZk D^^R4QwCm+eĺ]K~}p[Yȩ[UA{#.|:$( 0# Բ#=RLS"`}R݀>aa# 8rj/ۓ͟`E+ހ_ߜ<\KTOn沟ӚH.[iJ␼mM O˝.?ʝ҂*,j={+o*ӱؤhG^OC{HЎ,sM7O_׻ݾjQhS4oA8?u@wx~wz=C n7lmܔ+/>6urBLh;ݒg~W7%s͟!SMFԛ%(x ^g+u%gz5ЫݴH59cPVc'Ҹ=H^w`ޯh[EdS jת/Ϝ,:$i;Ku vw;zmaܙ˜Kȧ4X9`AZTWη{;=_~&z{49/I37Z.n 28AjtrZJwRs.h2O%k&{Sf_21*KȞ0?= iLE+ $^gk:]eo+wWw }E QǤѓ\L0Ω_+ph8,(xXkXoXwkz@1iش.*9y Лs4.r@,h&um;sB -v䳢ϕRr$qbeQ4RMa)t n`IENDB`syncthing-gtk-0.9.4.4/icons/16x16/000077500000000000000000000000001352162771300163665ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/icons/16x16/apps/000077500000000000000000000000001352162771300173315ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/icons/16x16/apps/syncthing-gtk.png000066400000000000000000000015501352162771300226310ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME 0:7IDAT8mOLe}.@`Alj o5^l±zB<jVI"`m.`X'dyf&?%[ɐ>Y(A,(y;goAc(F2!;ݝqfce ׏ZgVτܙ77<=T$@ԱxP:` Dp~f|ͭ2vh9R|*ĕWR|ړh] ȸZmw+~+_<8/nQq5S+ٍGҽ+e\cMT[tF)1cj1>gY,7(5|\H#ZZ!}ד^hZ2DG"F囅"قm2(s J d&vhNѕ q6_?>d5hA|i8mWe4F RE?)9?I3T⇕]y%.\8DAhs'H3/ ǹW{DPӚ;˻ xZY,Q{U]:άfjO.c'yT K^M"2Y+)(;cF\6ޡAER<ƽIͫkG~e(F!;Փp2`kci0כWl5d 9#rՅGrwz:r=IENDB`syncthing-gtk-0.9.4.4/icons/16x16/status/000077500000000000000000000000001352162771300177115ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/icons/16x16/status/si-syncthing-0.png000066400000000000000000000023121352162771300231710ustar00rootroot00000000000000PNG  IHDR(-SgAMA a cHRMz&u0`:pQ<@PLTE$ " $$%η(M+ ̱% $ " ɦ# #m $ ȿ   GlmJ"`g#φ,3ۻ$[ݷ") 7"֭R[܇Cw}֑A>Wld{hl?Z:6&9LؾW s/ӂ Kػ| +TW0ջZ?tRNSVRTVXRTVPTTUQQޫR` %bKGDq\ pHYs:tIME u~@IDATc`F&fV6v(wptrvy]=<}|@|~аHAظĤTa4̬ܼ"AbҲrʪIںֶ̦_iή޾~ !'1O.0ut3gVbP3w^e ,^t*+WƮ^VSA{z  7m9UoVmw4e={w55yP%Q%tEXtdate:create2016-08-15T21:16:11+02:00j%tEXtdate:modify2016-08-15T21:16:11+02:007-tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/16x16/status/si-syncthing-1.png000066400000000000000000000023301352162771300231720ustar00rootroot00000000000000PNG  IHDR(-SgAMA a cHRMz&u0`:pQ<OPLTE$ " $$%(%+ % ˙$ Ɍ- # #m $ ȕ   "0UW1!NN#x8Gr$P*RpEE$ <,*d}il>զϹ_B .^2dݦϦDԺa ɧq)յ gdG|(r=tRNSVRTVXRT鰪VPTTUQQRbKGDq\ pHYs:tIME u~@IDATc`F&fV6v(䲵wpty]\=<}@|~_?аȨX۸D$aԴ̬ܼ1¢R2rI)J٪ꚬںF9ֶNBE޾ 'M.2u3Tf͞3w -^ʠt+W^vz M 7Mym m߱s={ՇxCkjfnaiembo2Rd&%tEXtdate:create2016-08-15T21:16:11+02:00j%tEXtdate:modify2016-08-15T21:16:11+02:007-tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/16x16/status/si-syncthing-10.png000066400000000000000000000023321352162771300232540ustar00rootroot00000000000000PNG  IHDR(-SgAMA a cHRMz&u0`:pQ<LPLTE$ " $$ο%(%+ ̩% $ " # #m $ Ȱ Ȧ  'ְZ!G?#v?@'\^$Rҿ63A*җ\W&Cק03tostm-ֺhPٔ96ΣY6}&ӻ^ -l&Աˁjk|VlBtRNSVRTVXRTVPTTUQQޫR3PbKGDKi P pHYs:tIME u~@IDATc`F&fV6v(rrvqusy=<}|@|а(aظxĤTQ1̬ܼ¢baҲxɪ:)iƦYV6vyήʞ޾ ')2(M2|3gV :w -^4dj +W^v 7ij10hoݢ53kv ܵh}!11=`f~a KwmlAl Q~ғt%tEXtdate:create2016-08-15T21:16:11+02:00j%tEXtdate:modify2016-08-15T21:16:11+02:007-tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/16x16/status/si-syncthing-11.png000066400000000000000000000023021352162771300232520ustar00rootroot00000000000000PNG  IHDR(-SgAMA a cHRMz&u0`:pQ<7PLTE$ " 8$Φ%Π(%+ ̚% $ " # Ǔ#m $  ɸ  OupH)pXϥ$$rcU9D$MԚp 3soѵz֤Tqp;t'SFןjMK//&ѷҷV&du'@gIaE .PO(A>AtRNSVRTVXRTVPTTUQQޫRVbKGDXĎ pHYs:tIME u~@IDATc`F&fV6v(rtrvquy=<}|A|а(!ظĤTQ4̬ܼB!"Ҳʰiں̦或ֶYή> 'MR0Ue3#f1Ϟ3w -Yɠ4BgYq +V10诊X!#s mظx۶Ǜ@ϵ:^_ hu5ҕ TڡsuqQA$?tRNSVRTVXRTVPTUUQQޫRbKGDOnfAI pHYs:tIME u~@IDATc`F&fV6v(wptrvy]==}@|A_?PpaȨظ$Q1Դ̬ܼa¢2r )JںƦYֶή޾ 'UUO256nt%3g%Ϟ2w C5-^t+Wki30^v 7mۢrmwܵ{!3F&{?p ]s K+k[;Pn%tEXtdate:create2016-08-15T21:16:11+02:00j%tEXtdate:modify2016-08-15T21:16:11+02:007-tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/16x16/status/si-syncthing-3.png000066400000000000000000000023061352162771300231770ustar00rootroot00000000000000PNG  IHDR(-SgAMA a cHRMz&u0`:pQ<@PLTE$ " $$%(%+ % ˟$ " # #m $   ˕q 3S9!,n#>h2گ% 9uz מ̋p_ߎ%6Hۤ ׇy1ֹYr_S y ɟ~Gؙ0>{>S!uP2Ӏ%Cxm+ :lzc߮?D:tRNSVRTVXRT谪VPTTUQQޫRq9bKGDCg b pHYs:tIME u~@IDATc`F&fV6v(䲲y]\@|AO/o_?`!аȨظxQĤԴ̬\!¢(? ʪںƦ)iֶή^?~Y 'UOtRNSVRTVXRTVPTTUQQ߫R=bKGDG`{ pHYs:tIME u~@IDATc`F&fV6v(䲳wpv]\=<A|!o_?P0Hظxq ɄĤԴ̬\¢ҲʪjiںƦֶNY9w^ J 'M2U%bZK3Uf͞0w -^Πt+W9^FKAg6nJټe6]Sع} 14&0[XZY؂Qy:%tEXtdate:create2016-08-15T21:16:11+02:00j%tEXtdate:modify2016-08-15T21:16:11+02:007-tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/16x16/status/si-syncthing-5.png000066400000000000000000000023061352162771300232010ustar00rootroot00000000000000PNG  IHDR(-SgAMA a cHRMz&u0`:pQ<=PLTE$ " $$%(%+ Ȫ ̞% $ ɚ" ɿ# #m $   ; !FG+!3׫VESWFzB)L}GZ%v37! ׮RG׻)҆P~zE΁x~#`қ_ *="'Oٸ5ϔ ɡґOid'Pz]">tRNSVRTVXRTVPTTUQQޫRN(WbKGDV pHYs:tIME u~@IDATc`F&fV6v(䲳wptry]\=<}A|_?Aаp!ȨظDQ0Դ̬\! ɰ¢ )ʪ0ƦYVή^> 'EO2UAu3g͞8w| M -^h: +Vқ:9euAN5q-[ma]gb 󮙹- !!OL%tEXtdate:create2016-08-15T21:16:11+02:00j%tEXtdate:modify2016-08-15T21:16:11+02:007-tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/16x16/status/si-syncthing-6.png000066400000000000000000000023151352162771300232020ustar00rootroot00000000000000PNG  IHDR(-SgAMA a cHRMz&u0`:pQ<FPLTE$ " $$Κ%(%+ Ȫ ( $ " # #mC$    (/ !Hڈ># ae$-0OU&-FM`ߔ3MaxB֟j}Lٔ:v}z/i:Ҝ^b! '͉ˣ| ʁ}OLx!lw1/E~ 'L25-*zt>3g͞3wn 1k,\4$fr-m+W^v uAN۴ymwܵ[={?p]S3s K+kkQ*nv[%tEXtdate:create2016-08-15T21:16:11+02:00j%tEXtdate:modify2016-08-15T21:16:11+02:007-tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/16x16/status/si-syncthing-7.png000066400000000000000000000023301352162771300232000ustar00rootroot00000000000000PNG  IHDR(-SgAMA a cHRMz&u0`:pQ<LPLTE$ " $$δ%(%+ ȭ %˺$ " # Ƕ#m $ ȅ Ȏ  ԿV+!4R#STއG~$2*:ٳ%bN5%8%M#K ׮SL~z3Gܬd#> )DOٷӔ ɯҐ bgfP}_ ^bnAtRNSVRTVXRTVPTTUQQޫRbbKGDI| pHYs:tIME u~@IDATc`F&fV6v(rtrvquy=<=}A|!_?a0QȨظ$q dԴ̬ܼ|Q¢زJY*ZƦVŶN߮> T&M2ut3gTUcP3w^] -^t&+W*Yvz] 7MyVCSm߱sn={M 15۷C-`޵wQ%~%tEXtdate:create2016-08-15T21:16:11+02:00j%tEXtdate:modify2016-08-15T21:16:11+02:007-tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/16x16/status/si-syncthing-8.png000066400000000000000000000023171352162771300232060ustar00rootroot00000000000000PNG  IHDR(-SgAMA a cHRMz&u0`:pQ<IPLTE$ " ғ$$%(0%+ ̩% $ " # #m $ Ȋ   'IG݃G۾U#DْA*]$Dy4A![o.Y$BEڪA ,osC֨QsmLբTQٓ̍6M8|:a ɱ@L˂dh\~~T։ ;tRNSVRTVXRT谪VPTTUQQޫRHbKGDEW pHYs:tIME u~@IDATc`F&fV6v(䲶]\]@|AO/o_?!aQPȨhq ɘظĤԴLQ, +rB&M2ut%3g͞3c 2/^tr+Wd`ZV{]y ]]7逜ymwܵ{3{?p̻&fV 6pzQBqq%tEXtdate:create2016-08-15T21:16:11+02:00j%tEXtdate:modify2016-08-15T21:16:11+02:007-tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/16x16/status/si-syncthing-9.png000066400000000000000000000023141352162771300232040ustar00rootroot00000000000000PNG  IHDR(-SgAMA a cHRMz&u0`:pQ<@PLTE$ " A$$%Α(̧%+ ̋% $ " # #m $ ȳ    d1ME(!:#|cWq&C(:bV$]Ѩ<"%هZq9܌VδBԺ=j{ЗV%"΁kO޴דxk"Eʽ~i1pˋiU[zPM@tRNSVRTVXRTVPTTUQQޮRwS$bKGDH pHYs:tIME u~@IDATc`F&fV6v(rptrvqy=<}A|!_a?P0QpȨظx I)ĤԴ̬\Q<¢b2ryʪꚔZƦfEֶv¢ήe޾ 'MUƠ>u3gΞ37p Z -^_t+utV^z  @N5ܴhmw4xt={73yVP[%tEXtdate:create2016-08-15T21:16:11+02:00j%tEXtdate:modify2016-08-15T21:16:11+02:007-tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/16x16/status/si-syncthing-black-0.png000066400000000000000000000011741352162771300242500ustar00rootroot00000000000000PNG  IHDR7gAMA a cHRMz&u0`:pQ<bKGD̿ pHYs:tIME7JIDAT(]+?kKI\8:-r!f.J:H.\$6k89ȁ6f|=}灢,b$xCl)kC]pAlD]|Socm2$z?!$.Hmi 1)|zh*B04O/'% V}'b~`IhbX7$O,BEΙZ!.0L4~9?x)Lɗ鄗^Lg,OOWH-o,qjU%tEXtdate:create2016-08-15T21:16:18+02:00Y:B%tEXtdate:modify2016-08-15T21:16:18+02:00(tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/16x16/status/si-syncthing-black-10.png000066400000000000000000000011751352162771300243320ustar00rootroot00000000000000PNG  IHDR7gAMA a cHRMz&u0`:pQ<bKGD̿ pHYs:tIME7KIDAT(];Hc%bQ:" .J}uE):v⠢ĥBb7A|a,Rp38Хu1!x.s8PVHm e )M ~/DTQ ~Md'p=.|I$gvH8Om~uXnH*`*vX&e^!' IN/MOHmr 8EWwRd" udjdX(޹(bߌyEw9tu67j7)6ƹ]u)1c d? eK%tEXtdate:create2016-08-15T21:16:18+02:00Y:B%tEXtdate:modify2016-08-15T21:16:18+02:00(tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/16x16/status/si-syncthing-black-11.png000066400000000000000000000011661352162771300243330ustar00rootroot00000000000000PNG  IHDR7gAMA a cHRMz&u0`:pQ<bKGD̿ pHYs:tIME7DIDAT(]1hSEOBL",R"n8hU!I0E$bJbiq A \qvB |>o{g9 hiR'8dEoxF4xom'"I}dϮE5 ^2'P3M?sj$'`[D%tEXtdate:create2016-08-15T21:16:18+02:00Y:B%tEXtdate:modify2016-08-15T21:16:18+02:00(tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/16x16/status/si-syncthing-black-2.png000066400000000000000000000011711352162771300242470ustar00rootroot00000000000000PNG  IHDR7gAMA a cHRMz&u0`:pQ<bKGD̿ pHYs:tIME7GIDAT(]=H[?S}yBA(vJu(vqQP(iZ$t+dt'"[ :el jPpR4uhR9w;=J2!MJaTL< ;2gђ"kC:'5@Hm>`y$"4}ĐV %Gw\s\]CKƀY3A,Qd hMp~I_>BϹV wxI7gqw $z{GN:R%f=6{E \l`Uݴg4_-qWKT?CKI4D<̕LK%tEXtdate:create2016-08-15T21:16:18+02:00Y:B%tEXtdate:modify2016-08-15T21:16:18+02:00(tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/16x16/status/si-syncthing-black-3.png000066400000000000000000000011741352162771300242530ustar00rootroot00000000000000PNG  IHDR7gAMA a cHRMz&u0`:pQ<bKGD̿ pHYs:tIME7JIDAT(e?Ht!DRI 5hQţ%Ap;uPhq0 !(ʐ)7qH|\~w|5f2(!eg0IW]GDQ;/bk~A2q*DtJTB1lod`5IϪ4Hp=hWu<(DDg&{yP٣DG(sNy4tڋܚGV6})ж'q8ou^ԧ"912n8޲[ןRZʳU_ ;o]xi< \%Yk\1L.oI@2a/1z:לF6 pPyWgfdA-% Ao_}&^~tۄu0_W3M_P"Ֆΐվ +%tEXtdate:create2016-08-15T21:16:18+02:00Y:B%tEXtdate:modify2016-08-15T21:16:18+02:00(tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/16x16/status/si-syncthing-black-5.png000066400000000000000000000012021352162771300242450ustar00rootroot00000000000000PNG  IHDR7gAMA a cHRMz&u0`:pQ<bKGD̿ pHYs:tIME7PIDAT(]1H'"bX['d[qJ$M.5 G $ E J!84x.yCޟdؤ%s/iaDJd>qட}S!u>gcSJc uI =0_mF$ev4S ~(;3e8kܷrRÕ3CNVjk#@U^U'dM۫LZ/PwVw09-EgמY׌J! ŮhagںIECM~wr{8Y s )C)i'[nE;ErFE JOo')%tEXtdate:create2016-08-15T21:16:18+02:00Y:B%tEXtdate:modify2016-08-15T21:16:18+02:00(tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/16x16/status/si-syncthing-black-7.png000066400000000000000000000011751352162771300242600ustar00rootroot00000000000000PNG  IHDR7gAMA a cHRMz&u0`:pQ<bKGD̿ pHYs:tIME7KIDAT(e?HwG$`"K' RS!(d$.ށ `Ԑ C:q>'w{w&A28g,I$G-36Tݒ~u>w!!8hFnw$vXE("nBjJ{F$ A3ԕK1]O>b<&J'x '4=F/C*O$Bʭܞ OꙬAt{iI^Aڰ:%$njvڢ[8kɨ..1giDAlsvE5k"Yp} +HV%tEXtdate:create2016-08-15T21:16:18+02:00Y:B%tEXtdate:modify2016-08-15T21:16:18+02:00(tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/16x16/status/si-syncthing-black-8.png000066400000000000000000000011741352162771300242600ustar00rootroot00000000000000PNG  IHDR7gAMA a cHRMz&u0`:pQ<bKGD̿ pHYs:tIME7JIDAT(]O(?޽VKJJq޶RNN˔%čpY8O){>O_(!E5*Y {/) c& f$(|∇~}N{CƾTD䫒4 l X}4Xcɒ,w/P%tEXtdate:create2016-08-15T21:16:18+02:00Y:B%tEXtdate:modify2016-08-15T21:16:18+02:00(tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/16x16/status/si-syncthing-black-9.png000066400000000000000000000011761352162771300242630ustar00rootroot00000000000000PNG  IHDR7gAMA a cHRMz&u0`:pQ<bKGD̿ pHYs:tIME7LIDAT(]K}I@ -.th mpqs+Ŕ{E:RET !.7o:;{8 :\F$Us(R&S/SHC$`ւe߉C^x I$)O>tg"6{I8-$b{;9(j4.E5e/jmw 1J y  >Sګs XFf(@?("$;Y9{ɟ 0SDup\$rsqgcտ֯VSNz`WR!u$)m4mȾ 6%tEXtdate:create2016-08-15T21:16:18+02:00Y:B%tEXtdate:modify2016-08-15T21:16:18+02:00(tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/16x16/status/si-syncthing-black-idle.png000066400000000000000000000011741352162771300250260ustar00rootroot00000000000000PNG  IHDR7gAMA a cHRMz&u0`:pQ<bKGD̿ pHYs:tIME BJIDAT(]+?kKI\8:-r!f.J:H.\$6k89ȁ6f|=}灢,b$xCl)kC]pAlD]|S3[;{3 wp4cg`vrpr]\͜8<<|A/oC_?v@z 0 _,2*:(,FA".>41)(9%5-=#S9/;'7(/6,?HLL!/ܯEpֶ.? 9Szz*AA&N4yĉSTjZ:zj=%tEXtdate:create2017-03-24T19:16:48+01:00eX%tEXtdate:modify2017-03-24T19:16:48+01:00;tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/16x16/status/si-syncthing-idle.png000066400000000000000000000023121352162771300237470ustar00rootroot00000000000000PNG  IHDR(-SgAMA a cHRMz&u0`:pQ<@PLTE$ " $$%η(M+ ̱% $ " ɦ# #m $ ȿ   GlmJ"`g#φ,3ۻ$[ݷ") 7"֭R[܇Cw}֑A>Wld{hl?Z:6&9LؾW s/ӂ Kػ| +TW0ջZ?tRNSVRTVXRTVPTTUQQޫR` %bKGDq\ pHYs:tIME K`IDATc`F&fV6v(wptrvy]=<}|@|~аHAظĤTa4̬ܼ"AbҲrʪIںֶ̦_iή޾~ !'1O.0ut3gVbP3w^e ,^t*+WƮ^VSA{z  7m9UoVmw4e={w55yP%Q%tEXtdate:create2016-08-15T20:32:06+02:00Iv%tEXtdate:modify2016-08-15T20:32:06+02:008+9tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/16x16/status/si-syncthing-unknown.png000066400000000000000000000012271352162771300245350ustar00rootroot00000000000000PNG  IHDR7gAMA abKGD̿ pHYs:tIME K`IDAT(MKq_NK)A"D)H (;%RU JE)qH!(I9C̫{K</^2K˧XyyvWLEfpGL=ًi*i+{Yq"('n&^8l,!)ª7T0#`IR~ #)pXP;azqlMp[V 8I=(k@bkԓb0هcEȐ+) .˔:/\2:;l4UHsoXѱ{&/p28H/lW/8 -Ȓd췅II777DW?Z: ތDDD//ظLؾϓ'o'頢iƼ)5 6`Ԩ]0W2/$n~ _c+ym`Cs/;&3ٖ9V?٤Ӎ Bnr6Cjْ$s|XpPwlrhz}DfğNgmm*R;GF63$)y &GK_^b\)+j.tqX{#cVYm=L)5=_J1%tEXtdate:create2016-08-15T21:16:25+02:00\a%tEXtdate:modify2016-08-15T21:16:25+02:00tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/16x16/status/si-syncthing-white-10.png000066400000000000000000000011671352162771300243770ustar00rootroot00000000000000PNG  IHDR7gAMA a cHRMz&u0`:pQ<bKGD̿ pHYs:tIME1EIDAT(]OǚvIi]J[OE88̎Q\jR-9p7(jdf`gy<:ʚ}P]%`Ŵ-|WYlsF Sr[3]B=EG>cn(F}.YGru36-3YN;h2]77d^,%Ji`GnɜKJ#y=RYL5Ɇt?y͟?\h} LFY12h7(r5Sf|46 4Y^_sUE5qw`v wӂ}VVhkne';$%tEXtdate:create2016-08-15T21:16:25+02:00\a%tEXtdate:modify2016-08-15T21:16:25+02:00tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/16x16/status/si-syncthing-white-11.png000066400000000000000000000011631352162771300243740ustar00rootroot00000000000000PNG  IHDR7gAMA a cHRMz&u0`:pQ<bKGD̿ pHYs:tIME1AIDAT(]=HE!`uR%$&$Q!YZKq(nKB⒡`X$[QE2.Hd $ir\33ƈ?L>l=v˼߽0kO]wմHtBg>s$`; 21i/j{jidW[ub' ϳ50Z]]xEEC(P|d`ᨧ^8knՄR0bsY1lՌ6Ňw'QMkwW|a̸%5=4Q~j]vwG(.)j%tEXtdate:create2016-08-15T21:16:25+02:00\a%tEXtdate:modify2016-08-15T21:16:25+02:00tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/16x16/status/si-syncthing-white-2.png000066400000000000000000000011651352162771300243160ustar00rootroot00000000000000PNG  IHDR7gAMA a cHRMz&u0`:pQ<bKGD̿ pHYs:tIME1CIDAT(]=h#I,8tqfŵ.Cn Eg5YD:T;XEAuPT  Ŗ49Kzl/KZ ~z/1Y0o>MѴ*b^5cC+;U|)7)Tc)<4[kؤm pue=`1~|pljz[ 6j%[E$pΦ;~ dғg5r!Iٝ<БJ3pv@r0{=)Y6pשޓD=[ _!P'٣afi$2 %LZ+~Qu^;$`1[=(V5S߲={KfD9XB}~gy|)c7MwwE0t)%tEXtdate:create2016-08-15T21:16:25+02:00\a%tEXtdate:modify2016-08-15T21:16:25+02:00tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/16x16/status/si-syncthing-white-4.png000066400000000000000000000011651352162771300243200ustar00rootroot00000000000000PNG  IHDR7gAMA a cHRMz&u0`:pQ<bKGD̿ pHYs:tIME1CIDAT(]ϋǚvPʁ8РUMf\8(- qpsi/U`dw_;3-~O'HYSW]OU4| Wknķ`!;5xij.C=}YW֜rx48m~L {PVOPEOˑّ$)r'3=>d?lL3W})'sQo`/ɺָEY- l(U=rSnfŠywmq/I +?=\R6s(gjaz?K.y釯T u*SMH%tEXtdate:create2016-08-15T21:16:25+02:00\a%tEXtdate:modify2016-08-15T21:16:25+02:00tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/16x16/status/si-syncthing-white-6.png000066400000000000000000000011661352162771300243230ustar00rootroot00000000000000PNG  IHDR7gAMA a cHRMz&u0`:pQ<bKGD̿ pHYs:tIME1DIDAT(]= 5A"$d0*D, Yd`:䪑pR01w,׺YM1Es*FU tVy\~lu;קgAc;5DY5=^U*=`O+"-[vֺyvRA!_gwgd:Ϻg2lʪBڋKJ=Gr8݊)&hZ)Q+mı}-\$Kκ3=7Ҧ߲5e´ge ~q=IF#'roL+ll:27ϲf}}/`v1@ (%tEXtdate:create2016-08-15T21:16:25+02:00\a%tEXtdate:modify2016-08-15T21:16:25+02:00tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/16x16/status/si-syncthing-white-7.png000066400000000000000000000011521352162771300243170ustar00rootroot00000000000000PNG  IHDR7gAMA a cHRMz&u0`:pQ<bKGD̿ pHYs:tIME18IDAT(e?l^0 $I `S H$fCo XnKM'ch=y 1ao+*يBg֤~BW_}9f#}gjw-'7/ӊLvRV%ږUG?GF%tEXtdate:create2016-08-15T21:16:25+02:00\a%tEXtdate:modify2016-08-15T21:16:25+02:00tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/16x16/status/si-syncthing-white-8.png000066400000000000000000000011721352162771300243220ustar00rootroot00000000000000PNG  IHDR7gAMA a cHRMz&u0`:pQ<bKGD̿ pHYs:tIME1HIDAT(UOg&;;Ju-mI^điLJJEJ&M=&RjFUI[bv8o}7)0aWͪf=zƂ)7h 7h9jx;| - Ԓ~-lOTݐF5}1+64-_4^6'!.vG]sNeyA=}lW:J4; [Q7 XYp[b[,rz-{qO%Ɂ$ͧd9) y[]I;)?}'sGϞy)s2aW6$9J2U53tZI4~9kJkF뒺Jwm x%tEXtdate:create2016-08-15T21:16:25+02:00\a%tEXtdate:modify2016-08-15T21:16:25+02:00tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/16x16/status/si-syncthing-white-idle.png000066400000000000000000000011711352162771300250670ustar00rootroot00000000000000PNG  IHDR7gAMA a cHRMz&u0`:pQ<bKGD̿ pHYs:tIME Q!PGIDAT(]=K[h"8E5h--!j!`@ԡCU*'@Z RZ͏AQ}4g|pc¬KsôIj1czWW=2QyQ5s|j*tQV)j0MQl$3Ғ61u3Zj"Wfva23#1+ &9.?PO+.DB@3[;{3 wp4cg`vrpr]\͜8<<|A/oC_?v@z 0 _,2*:(,FA".>41)(9%5-=#S9/;'7(/0DBL)٬լCpή>3 9S&Mdf6YQI(4eiӧN:#H(n>SH%tEXtdate:create2017-03-24T19:17:00+01:00=s$%tEXtdate:modify2017-03-24T19:17:00+01:00L˘tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/24x24/000077500000000000000000000000001352162771300163645ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/icons/24x24/apps/000077500000000000000000000000001352162771300173275ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/icons/24x24/apps/syncthing-gtk.png000066400000000000000000000027021352162771300226270ustar00rootroot00000000000000PNG  IHDRw=bKGD pHYs  tIME /$ѴOIDATHǕ[l\}.s>/1hŤErJ@+  )TPhHZRA_"q *- TjQ'6&v3_v9{>`KaoiX ` ͆2V#: " 'OObmRiR]o߶{v)X HVE7t1a+%l>&vLfjnpI288vgz<Du'e|z4:maT>O PG_#<<4=OGoM#w&8rd@PtD- L08ZX(yLq8= BnOGy/TKd+I@oM\C&ϩ|ȰO>49,f*?F[(ϝB 9Ym+^7fL(&LoO}qrskmQNQa,K"Eر*Hks|] @2sU|4MK׷vC|h!al:!2*2RbϦ +%}X7͸llҤ#eOSmfךFv% '3 e+3}^ IJ:&?^̮ t UBGESbbT /oZkxZfݫB4-֧#mQ@\gUu}RhaD`?~slR rJ\1wP[\կX~2@mA-Req^MKȗbhMIENDB`syncthing-gtk-0.9.4.4/icons/24x24/status/000077500000000000000000000000001352162771300177075ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/icons/24x24/status/si-syncthing-0.png000066400000000000000000000031511352162771300231710ustar00rootroot00000000000000PNG  IHDRw=gAMA a cHRMz&u0`:pQ<bKGD pHYs6GtIME ¹3IDATHǍYlTU9wnttQ)6=(bDbĸ&F@\b!Q%j5,V -BӍv(3{?nVrso{TM8FVr8&&>Avſ, nb㧗l؍F(#D`6yc=R?!8Ŗ S`CZ 0:f4:EJ7\sY b/`,ŀϓKK)-t80/  Pd0㕎|38r9wUN1TF]޼)AU$A>Jz :N^2b@}jJJZPSu%t&'xnNfx$*)pxJQ;a0a G:v_B(.XZ39/H=PT5aLxӟsl[^æeăN{ jP^@5E.~u?pFP%)O)X*"`B-$nq#cq1Nz}rRv=E}fϋy:JHu?TG7,ɑ)s~:b>8HN>##D ,-k(r-OPuvD @z[v†O; :uSu>&4߱EE520}75͙kIeYv;cYvWWP;/8{L(WDYbHQ2fRf ۼ1bqu1!zOg9v*QpC):ҞLagՆU2 wVF$1sK\^,@DHccX:<쵃777P-Mb%4'3bEa*fݼZ])VnEְU1ؿ߮-EϦfb%tEXtdate:create2016-08-15T21:16:32+02:00bq%tEXtdate:modify2016-08-15T21:16:32+02:00tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/24x24/status/si-syncthing-1.png000066400000000000000000000032771352162771300232030ustar00rootroot00000000000000PNG  IHDRw=gAMA a cHRMz&u0`:pQ<bKGD pHYs6GtIME ¹IDATHǍml[WϹvR{qq&m6m[0YhR 4Ā/C2!M ^2heSV5mfi&IN'nJrstVn[N1<.  <3爉]ӣG7|eRBP J VeR9rkVD+"cERz*nDȹdc*DRjz[OmQ>+й:@ьu^RL\H|ӳ:-?vvAw0Rblwag*~=8xXT䲄'["g@ QgEٻ%1҅ jKO72Pq R\<=XWIgc1pxJ? O0cLv>7㉓D._ڶ{PČmϾ7FH^p c BR_l=V4$h1JbP8zׅtYk{[nghl7޽̑.:tK zr 2o{ċ=to ܎(BnSfrN9⸄͵t5d 3ySLF )"SY\]Wh 퉍Ndxm(ǣK$/ݴWWmm ܅ɀ-0ibh&O9qDy9xW?Xc2 w)\JΕʓ̗ʣ9oGKm?BYʜxqjow&@2\ADr$ ':n g>pe;cqJJ81Ʃ R%v74 Zʖ^-ɂy$e/?c8]X|aC.Ϣ@v+*b1~Q5 {oMLgKDhKC J9 Vc2\Q%lku0PʪtYfBJQ \K ^5O1³3I{yjk-\<([k}D.6/j~cl %R@nmuV,~⛝QmRε -ËNrR4nes[/ݶezcw▿+Gqs{xts|7X :XO}qK7XL<|I,7Ma N2iS˿N7=aYSb.Y' DIK#z[&%tEXtdate:create2016-08-15T21:16:32+02:00bq%tEXtdate:modify2016-08-15T21:16:32+02:00tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/24x24/status/si-syncthing-10.png000066400000000000000000000032471352162771300232600ustar00rootroot00000000000000PNG  IHDRw=gAMA a cHRMz&u0`:pQ<bKGD pHYs6GtIME ¹qIDATHǍmlT9z^w,6Y7)i MФc5QH!GSP(U?uk*M&"$%J QHF`^zL\zҕΝ3s9g=&[\#Dy@\S)P&9\ww>'2QBb1BsW922C*X]RMoP>Ϡ0QJcؿT9L39fGgJ1drޢ~*!Db6ǎwMeXP$f@ %3ԇ}Ua}E1JQ׏ Leq͢8Iyr:=RzJf5!K\^:3FX'Tpr< ʻFVX(+ueKS7/cr׭oEÜϐ͡XC&;%VRyrv]kpGm-U>=ZPVYVr^!=xϧ @~-%z}}?•lAU\}gSs-bdz^Vo<8O6 }e%lBw@ըp .0?۲`>XGtT:НH;p9=t+^gBG]EĹ1qjtoq]sB|a{5{ύsJb6)q SITK;n>wÑY{>9jDmR{#`}2M:gҕH$鼧q|5֑=c1殦hdՋ)qSP+<`Uu9%l5b@ĹW'm'?ͩާ%tEXtdate:create2016-08-15T21:16:32+02:00bq%tEXtdate:modify2016-08-15T21:16:32+02:00tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/24x24/status/si-syncthing-11.png000066400000000000000000000032001352162771300232460ustar00rootroot00000000000000PNG  IHDRw=gAMA a cHRMz&u0`:pQ<bKGD pHYs6GtIME ¹JIDATHǍkl3y׻^_r\Ĥ(HM*qHHDBV *6UiU 4РP%MhjvbR0N\_bvڻݬqB;733sFjfvQ T}ANؠ=uyn!7}<=b(&ocLOu͍D~޽&F,w5Wp{$D}53LQ_D' bFnJPw|\AS]WO =渚h pkmTN,3dD^sxrGs~qv%]6FMMjj*?ു)rye"C !R-1@T(Gk4ۏ}}q2CP@&rt]+F%T!K ѓ^k,?O 3uE@T59o_їHafsg74 jP~$3>;5q Kmaj~5Oعh9TޤJ8 {#<{fJ-Ѷ * 'Qdž[$Q/齪ΖZrQBT⡖'.$_ w;P+6CW-`7[u9VUsjtJޏH9ƚC ʊSE|FC[@k-VZjȘsՔO};d|tF2bEF bif߭u.ʧUz(+?If\o_gTSގzoqZ(.`QUaΑi.O “ᗗ SYW~|n̦&jo緗8''9 'rGnq5' TnAfr?~žxQ:_9ʼnwɹ_{ڶ-5$3<^ϥx{|P2iNyg|%x`v^(?ԹWyyh/zqzi/(U^7;6?m. h_+I*!̫;[ihWPwyċGﬨ 3q߶h"#lxΥD.I+d b;O5$5@63t4MGBff@KMoI96[6~xӖv HKAﵑì 0ufs7>çiz.,}>Q X ( DGGUhwSV1 bǭxrbb-@%tEXtdate:create2016-08-15T21:16:32+02:00bq%tEXtdate:modify2016-08-15T21:16:32+02:00tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/24x24/status/si-syncthing-2.png000066400000000000000000000032061352162771300231740ustar00rootroot00000000000000PNG  IHDRw=gAMA a cHRMz&u0`:pQ<bKGD pHYs6GtIME ¹PIDATHǍ]pTgn6d%IIhB*za v:u#hqkZQ/u3U@)c‡ PB>7 &$ݐ>^f=x^Ux!VQ>! T埂!{Iq=|&+?!&F#@6cfծU?"%?7!g1΃uK*x:5ĜϛSKDbÚ{vܓ ~B 5!^Ǯ5L2@Mrm][8@DgGEkDk[Ǽk34?| UK, dr0EGA ,<`HѼwۿa)UAK39>y:( 79GX*ͭL Y о$o5iVVP_(QNzNTG6QU\Ͱ9˥,77",wt&1,3>ڳN?8/vsS}VW[A4s>QT!/a-.qtItgmBpv.")frÿ{:'Z8! 6r+A 0fg{,?Oa W27ƕGd bH )ގoJѵ8pwB+1y]*]Cx=_{*MQrWoGY4n1:nb{[#K҇/L~@S4@Gc'ZbL,&N߿pTE_(*<]!~[G'UPH]9eOY  ![&vnQ!oW'xp?;NYL _AUQɂ7.1vJP_CͫY"HAنkw{P[Jt(`)gStsU^G՘RUjK5l;6PWUGM-6 UgC涨,0fh(y[R8Ta8[d^Йe^דy9KG]U(czDG0Sԩ*"*|%{^##=bzntQnWU.GH=Jĥp̀d*|=Y6N5: ~S|іmQ9F{}Bڛ;;F2볥<*x ݌BuIxݣT4 Y_V_ZnyV998<6e$dҳ͡B6LM\Nf#Spש9e}0m"G#'J®س+qcE!x˶%m+m>Ɓ9/+=@{2CG2Ci;MUZ'XEESy?|zãߩb: SzqQqdT1%4 5c,@p%tEXtdate:create2016-08-15T21:16:32+02:00bq%tEXtdate:modify2016-08-15T21:16:32+02:00tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/24x24/status/si-syncthing-5.png000066400000000000000000000031771352162771300232060ustar00rootroot00000000000000PNG  IHDRw=gAMA a cHRMz&u0`:pQ<bKGD pHYs6GtIME ¹IIDATHǍml>Ou8&4I4DHQu"6ml:a2}`!QTZIii$m6S'qq{$=_s? :qklה ,/isޞ#D^ B?8D FBl1ƤLoxJDBϵW_ us`^E3LfV Db1wl*A O5%)ĶA^D&%U.Nƙ1Ork溣_8Tg׍a\xWO|xt1BcXmU)[V5aF)^㑢G! õboa[]{ 2yaRm.gtϞ>|YPZr7z*XٺGAPPr^\sAHm Ut}~?5Wؾ~:/Pp..6BJl sh$Iw"tN xPT[h_׏W)"PZ# Deem6|Ǒx1z}AvlrV%E2)UEʯnM:F|Xo1*wTP=.9b^l*GӜywjfgW%x]CR_ߗ(4\g86f}ǁX.Jrj$M"mXU[*k0KeN7,byBO"C(Щ٦Z7tĒ鎍85eDFP  (T\ɃrlX^\`,,*Fhξ|q~^ˋd~T=Ѩ5o(zZh,kB>N6rB>w|yD !o  %(;Y5bӴ/R`pj& s8cl~ӏF Yq/6yф8fGlߞn or$ub@Ĺv+mﺶ| ;%%tEXtdate:create2016-08-15T21:16:32+02:00bq%tEXtdate:modify2016-08-15T21:16:32+02:00tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/24x24/status/si-syncthing-6.png000066400000000000000000000032111352162771300231740ustar00rootroot00000000000000PNG  IHDRw=gAMA a cHRMz&u0`:pQ<bKGD pHYs6GtIME ¹SIDATHDžk9aw0 mik(4-46{5&&ml&iS &MMZ͢i,YuYp\v0^E?yrr=y#|ާjbo(T4ۀ=yr)nD!KM4 hG}WPXx~s#=\xzc,|rp*]?#YD~Ղ/q*hѕqȵ,FW`f4 \[A83 ,}ާx"|!_N#3q[e7BMcKe)wECT,y+lzB[2;[+sMZRT=J<e>]XTuQU+7c"ºH`v cdHf$yF?mf4K)p&IRQ\fɿW2cAZO)a02O.97噦^91'd" ܡ8*qajXp0CݩbQs^Gu@M>CO45axvKLޱUi9K rA&Yff*Em f&Mѱ|V\>W~{R$(Lu}ڐH8s81X&@pz,vEGFk,-H89sW;ּηi֛Օ}k}]1p^C!3B~7ܕ4=iB$8u7%(MwqxG rjV<cSX\Zw~*ݨ£x| YϳϽ"Ydh #VT 1l0FU hhoŦ%y|B][VPYLqGq (n+pOe=N-rKVsOhy<{nyvb•%n-kd]cxD=7xY5¡i> ԗ(Lc,aȲĆ%-SU4{tvׯH}VSģ D/f|= -,èg_TU^e!:ZRdvEUH[nzWT,?شS)DPPU*<˶!~c@/} ;;*M-k Q5(k [)[v]9AUᡖ03ǫqp*'&R3TCQ5^eyU gp9%`ͰgK#PW\_ cd/Nwp0MUaAv%kp)ˠFsn1dm]ew=<8Þ~C=ɿw\3|:}FRS!(ŧQv?L2bD7cx6D47:T,fo8ϮC㒪Tν<K<fwd~~v-GQD5gDx|"!$oE|!ceu^*FSYyoD'iR'(3Os<ܼt,ҪzéZ ޞYs:I3xu{+X\@X[>\Z8:D4j6ۂ[yK,J?mn`kk5)>Nr>gX^`}m9%8csg\چGfi2rԈ4U0m5, 8e`&͇#I쏓凐Xzr[ǾC?5=J!ѸXXӗhoBwVEdְO<946W][ ͆'%tEXtdate:create2016-08-15T21:16:32+02:00bq%tEXtdate:modify2016-08-15T21:16:32+02:00tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/24x24/status/si-syncthing-9.png000066400000000000000000000032131352162771300232010ustar00rootroot00000000000000PNG  IHDRw=gAMA a cHRMz&u0`:pQ<bKGD pHYs6GtIME ¹UIDATHǍ{l.Y 6@x*mi DEH& (BJU"UUR% *VUI*jChi+5Ə}=c6&H#s}{\.Ux\#&*9]'&)N2}N"ib1LŦcLgS';F4 MG{߱}Ylw{'h h|L i"1tu];ݑ ˍ91ptk'@)) !Pw*Tq^M0Rկr_ƎS3{-@ƈ חbjo߹:sGzַٶ$J{OΧI=N.UoMI5.aX?m^HB[8o^8&^^ٌ%Hٻ:޷CPb.^۸#&x`_bM]QUT݊gҔ g#ATiX!(yd;Y";8Qq5eM,E8v# ︞DMЗ)q{3Y]UP_K(/X? |7zn@ϮGa]kWAA-3V1SKpw{3SujstAY-7 0< ßf$89u=4kT~PmTMǯM3XNT-%Ϣ@H Ɔ@? :m>i.[L. **FQQU9; -YYd2Aw kcAFC2(X+9 Ia&\9.>nF@Z_MX=ޗkeVu`C 4<yp~F㐻z捳dZkwK{x3ʓK'e)Ͽ]#|tPٝ$^ԉ,{7{Ʒmբb2^h@!?mc0W L:v8\xKx[]ҟ)6Vϭ< "Վ([7Ȃ0:?b oxpyO1"%Y53>>-s]sJA~6,jHS9 Vǣ&X+?c &k/GH1ƎMA!%"tsfn8'.v8RwkI<:D4%^cV;UFiqd,"ΐcx[\9\uӎ-6g%tEXtdate:create2016-08-15T21:16:32+02:00bq%tEXtdate:modify2016-08-15T21:16:32+02:00tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/24x24/status/si-syncthing-black-0.png000066400000000000000000000015421352162771300242450ustar00rootroot00000000000000PNG  IHDRJ~sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYs6GtIME'G,0IDAT8uMKaGRJ%I (0\AQA J(67-VanJ/1" [$2%5sxGKgsƤ)~o(2C0{[VU(T[+lNwg h8jxTV.JVBP7 N`C$0jJ)Rc y&Ŏܣbgq1 0cy_gHfn?i<v8, zֈhngn,׮IFovM iSϐHBamf{y߇}\rfWʵAo԰Q$"oR$WUjL[%B>(&h"jGgA`0Ili3ڕ^Qc~s&\f/zCXm)wnŒRМ܆-\  Is$-.D+#%5x&A3jPt$&æiY:UkRt"\PO,@%; (,͋ Z$8gx0W@?Jɜj%@% 3ЍF^OJO}xMy,tAj6b,%cQMɻ2Ox1N#4BbfL:FǍЉqBb1d e 3O_HÃ(bMymxIӒ(*_I\1ڞ* QJx@Ъy㔒2#**42$]PAM;_q2wxS%tEXtdate:create2016-08-15T21:16:39+02:006%tEXtdate:modify2016-08-15T21:16:39+02:007tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/24x24/status/si-syncthing-black-10.png000066400000000000000000000015471352162771300243330ustar00rootroot00000000000000PNG  IHDRJ~sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYs6GtIME'G,5IDAT8u]ha"b%}Fjaá%I|q@LCI)9pDC(FYhs`|H;f9xn\u=}뎐iQf3ȢVZxc1#B:ODE_|^ɮuH7' y!sJtx!#G*VZk3rG/a򠈛;&=OYЫ4 ~wNۑ;dH(Ta7a_R9A >P6Βpp ;Tmfe-mQʠt,`3?y9ЃWmwMeaT7OF_=8F!]a:n'f6ٟQtV=,l]AxTRr҇lK;s@ug܆Mi~ _j7"V'Մ8[~0h uj9Tx}ow0q>Xd{im?<`JJ[;,7&|` WÓb``g]^8FAq԰b+7h3 R;@=%tEXtdate:create2016-08-15T21:16:39+02:006%tEXtdate:modify2016-08-15T21:16:39+02:007tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/24x24/status/si-syncthing-black-11.png000066400000000000000000000015511352162771300243270ustar00rootroot00000000000000PNG  IHDRJ~sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYs6GtIME'G,7IDAT8uKHakeEiх.FA70qQD vnZM-BHhх(B(J40C2MOu(3}Zǣcmf}?fg"L"JyC#y4*bq P$-6J!vzV^ellqĨ:Np2|)#X{۬pf" 6B-ny=mr4S_'iӀ)m iGB܀+a vP O'j XAk8{6bx<*Tf 3b>0$T3" `k);f bC7H/ˆ?6>8mq¾;cb+砧]y?6 xk*[OC!}U#ǬX:~kgS@@_0Ji-qzE>]y=uJɩk2%tEXtdate:create2016-08-15T21:16:39+02:006%tEXtdate:modify2016-08-15T21:16:39+02:007tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/24x24/status/si-syncthing-black-2.png000066400000000000000000000015511352162771300242470ustar00rootroot00000000000000PNG  IHDRJ~sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYs6GtIME'G,7IDAT8uKUQ?MGJ$T((0hPP4,F 䬢$BABRF00L 2,E\^39>HJvr\f5Dq3B-lP[dR" IO6'^fΫ/;vXkDdMEW6x:%9[Kul_Y޹L!pm\- *c6W@y(T"\ |jA dTY ! d GENA+Z`51Wv;49O, 1G,'X#N89?`,̸yq3 X5n΄iNBecBqoI۬ƗNR~cn"VXX( v'bcH84#ӍӅYV7I hFl#3>p)U<8jp1U%wˡ&Y;E yFq5HD5 |f;@1bnIkDR ih#]LV?MgX%tEXtdate:create2016-08-15T21:16:39+02:006%tEXtdate:modify2016-08-15T21:16:39+02:007tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/24x24/status/si-syncthing-black-3.png000066400000000000000000000015431352162771300242510ustar00rootroot00000000000000PNG  IHDRJ~sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYs6GtIME'G,1IDAT8uKHQFoFIS5ȞfZ=ǤFH4FD""kдID H""EABv#(ˁYUW{go>12#`=죈B{bDfMeB/{ [LOu{V|f JL`,#l~P1H:C%s;.$6%RYӣW/vܝimOwA,qa{Lz"wȪjq WfbdnEl2iȱy_昪Ӟ19=_HL4n^vaNmCIzVq7-:aL<4".* F T0>2ڸK[p!6r54J;<; /Ayn%tEXtdate:create2016-08-15T21:16:39+02:006%tEXtdate:modify2016-08-15T21:16:39+02:007tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/24x24/status/si-syncthing-black-4.png000066400000000000000000000015561352162771300242560ustar00rootroot00000000000000PNG  IHDRJ~sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYs6GtIME'G,H2Vk$\N W1N/L9 v)ʙv{[l`L(" kI!ǩur. T[J+4VIyv}Y%#6H0xN< Te %tEXtdate:create2016-08-15T21:16:39+02:006%tEXtdate:modify2016-08-15T21:16:39+02:007tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/24x24/status/si-syncthing-black-5.png000066400000000000000000000015401352162771300242500ustar00rootroot00000000000000PNG  IHDRJ~sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYs6GtIME'G,.IDAT8uIHQ?:@֡B蒇("hCH`#QءMmAp"U'dOq;={﷽S- L%Lh?C1X&/'\6w6L8_>ZevĄܚX3_HCpֺؗ@+m4[_Y/2"(UcόӶQzM ,O *D+cYpWLn@?z&/7xʈ"k|!Oт,n9 mxQ=vz6k S[kHkFePo3YS7MY=XG3tg!t+ݲ* Ab|aa9סØls 02q)or A;vҋvm3t(t:H]5 DŒTutVyG$ zkY}&].{jqo/LeV6%po>: DRNZ)-Lº`V65ܫ6|Yc/<qv1'DL@tӗ^h/p6%tEXtdate:create2016-08-15T21:16:39+02:006%tEXtdate:modify2016-08-15T21:16:39+02:007tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/24x24/status/si-syncthing-black-7.png000066400000000000000000000015371352162771300242600ustar00rootroot00000000000000PNG  IHDRJ~sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYs6GtIME'G,-IDAT8}KHa3 .QtBA A1.*! 6- #E 5 M؅$4-D1Ql|Z89>=Ȍ0sCxDÖtƩ#<^{q#q4[RsҸO v0xΘP[b}0-<*g}6?ޥ"},SguwR"wܪ7\u"QPxT9l-@,]p WPxAwR%ǚiHW\IJ}aV9䤭rȫ.I/+R?sHX$yA6Zl0ӎ2̶'Pnp rbȚdv#v8/aԄŒbce =!;m3g#9>}8_p>M 1AV˗:n6;M{PdzQ}l׼'(h&@J!E򨤌2H-eó:Ib,G9F֌(4 *(~Bݙ_@%tEXtdate:create2016-08-15T21:16:39+02:006%tEXtdate:modify2016-08-15T21:16:39+02:007tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/24x24/status/si-syncthing-black-8.png000066400000000000000000000015461352162771300242610ustar00rootroot00000000000000PNG  IHDRJ~sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYs6GtIME'G,4IDAT8uKHa{!C% ʼD ]JP`AFPMQVHA.ԢhQMAen(ʅٕTG3}ZG=Gmf3߼3_T b;Oh>/?F#84ϧ'dZc{-p:4ոwyX /bs樷3[ztXT^4%=$Z:nE<רE6:1lKGn6-A83G\)2@U8a9jIz%<ɸKEg$ꍙ)r )ծjGR$ǿyP+x"aO!>S ( 0BxM-Xɤ2B3&'8W|O2\Kf<0nxfūO2qp_?8p"1[5Itw[2B~دJ$s -|$eԒ%:Xind񅴳 i"FyOwafnuAb3=^Ҧ@ PG1۴ѕúU%tEXtdate:create2016-08-15T21:16:39+02:006%tEXtdate:modify2016-08-15T21:16:39+02:007tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/24x24/status/si-syncthing-black-9.png000066400000000000000000000015471352162771300242630ustar00rootroot00000000000000PNG  IHDRJ~sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYs6GtIME'G,5IDAT8uMHTaT `$TjcZ(jQQmE26 ) jA&",+2I'yZq{ssN\ c)f פ8= sdP9Ϫ֜fTQo >LsW#U5唟SG$W2QK2 O2ҹDQ2c# [L?, CI,w-0pc^J4f̅iF=Ƶ:&@V1+'ϚoC^ߩw_MZvx3O0 QJ. Hq= B\z3`q|l^c8a  1 ],)Vg\6S.Ȱnh#sՊ4npZx͸ńrEqC ~mu"˯c%Qx.GUm ϩq8F|62x"0Z b'Q!f=]2FH%tEXtdate:create2016-08-15T21:16:39+02:006%tEXtdate:modify2016-08-15T21:16:39+02:007tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/24x24/status/si-syncthing-black-idle.png000066400000000000000000000015421352162771300250230ustar00rootroot00000000000000PNG  IHDRJ~sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYs6GtIME $+!j0IDAT8uMKaGRJ%I (0\AQA J(67-VanJ/1" [$2%5sxGKgsƤ)~o(2C0{[VU(T[+lNwg h8jxTV.JVBP7 N`C$0jJ)Rc y&Ŏܣbgq1 0cy_gHfn?i<v8, zֈhngn,׮IFovM iSϐHBatEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/24x24/status/si-syncthing-black-unknown.png000066400000000000000000000014561352162771300256110ustar00rootroot00000000000000PNG  IHDRJ~sgAMA abKGD̿ pHYs6GtIME $+!j(IDAT8ukW|e|H%5)hR/T"Bp!Vq-c[]t#hc"3Sb$3I޳8yytAzO 푪5"YT\-RV#F ޛ#^5/2y#FU:[Q1suvP2lq! C!dL(!E1i\w)/+*ո{G)O>(9N𔶺rDΐ3tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/24x24/status/si-syncthing-black-warning.png000066400000000000000000000030051352162771300255470ustar00rootroot00000000000000PNG  IHDRשgAMA a cHRMz&u0`:pQ<PLTEgFU888ppp777kkk˰jjjooo㼼Cfffuuu`222 PPPggg<SS'''Հ&&D EEEz``Ԡ}}}JJJ RRR[[lccc___wwwVVV6 55..YYYqqq11@@pp~~~۸\\\ff??QQQ**oo}}(HtRNS5x{2af+1h3|tȹw40b * L~U7XbKGDoUa pHYstIMEDIDAT(]WTQ8(*݉퀢qp *#(6bRbw-]x{ùk}ߺ{RvՂרY+ġ3RnU>뉏sa *yC;g$$&& ^7y&$V0NNK쑞6e*j R26>C:sL9~7y|9 m(\ Od BTK,]+H[/Jƚ6_^ n((DQڨ(.x,ݴ[%h:`Iڽ{!c?:NDC1?ADA:."rt9p.K!T+yFF^verYtWUuwJCD;(1DOE=狨z|Vz=ZVD8>52>9/ZHWMyK Dep)/CM1l;bd\ܨѱ1.+c@D鶪%tEXtdate:create2017-03-24T19:17:15+01:00\%tEXtdate:modify2017-03-24T19:17:15+01:00@tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/24x24/status/si-syncthing-idle.png000066400000000000000000000031511352162771300237470ustar00rootroot00000000000000PNG  IHDRw=gAMA a cHRMz&u0`:pQ<bKGD pHYs6GtIME _.b3IDATHǍYlTU9wnttQ)6=(bDbĸ&F@\b!Q%j5,V -BӍv(3{?nVrso{TM8FVr8&&>Avſ, nb㧗l؍F(#D`6yc=R?!8Ŗ S`CZ 0:f4:EJ7\sY b/`,ŀϓKK)-t80/  Pd0㕎|38r9wUN1TF]޼)AU$A>Jz :N^2b@}jJJZPSu%t&'xnNfx$*)pxJQ;a0a G:v_B(.XZ39/H=PT5aLxӟsl[^æeăN{ jP^@5E.~u?pFP%)O)X*"`B-$nq#cq1Nz}rRv=E}fϋy:JHu?TG7,ɑ)s~:b>8HN>##D ,-k(r-OPuvD @z[v†O; :uSu>&4߱EE520}75͙kIeYv;cYvWWP;/8{L(WDYbHQ2fRf ۼ1bqu1!zOg9v*QpC):ҞLagՆU2 wVF$1sK\^,@DHccX:<쵃777P-Mb%4'3bEa*fݼZ])VnEְU1ؿ߮-EϦfb%tEXtdate:create2016-08-15T20:32:29+02:00+%tEXtdate:modify2016-08-15T20:32:29+02:00FNtEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/24x24/status/si-syncthing-unknown.png000066400000000000000000000016711352162771300245360ustar00rootroot00000000000000PNG  IHDRJ~sgAMA abKGD̿ pHYs6GtIME _.bIDAT8m_hU9okm{_߭\ʰYͦ2j%ET^TPuHz]t"Q؈֍TF[R.Ik:Ɯ\N{upιxs`:ShU?uGpz^C) (. -j*n ֦(0)BwLCKfQtJB^;D8ֹʷ~Ps&\3`^PXo@_l>W5BZcÖNߘ[Y'@JÝ12Yln1&IfyOe3\Tz d遤M-cI%(qg*us ))ڣcYDsk7e?iԤrA+,TWQ1kμ-Jȕ]_fĐ:w|YA1ٔiA" .\Gڬ|xg[.I̍. m6jHAj篺u4$?4娳Qu+IQ2@3+5 ܾTV;j5ɟH4@nʆb}mf̠M:god'ú(MₙżD`_l~%2 W8v?Q#=T{=Q?-Y)3ny%tEXtdate:create2016-08-15T20:32:29+02:00+%tEXtdate:modify2016-08-15T20:32:29+02:00FNtEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/24x24/status/si-syncthing-warning.png000066400000000000000000000032261352162771300245020ustar00rootroot00000000000000PNG  IHDRw=gAMA a cHRMz&u0`:pQ<bKGD pHYstIMEq`IDATHǭ[lTUϙt3e cmBB0hB5R@Q1 `PA4J&*(ԂjlL H@Ez.R>sC-\IY+{":q=JL *TbTRe_ B]5[Qaz MZSZB)Hua5ՈF{>[?+M PLt3%Mq: #IRNcZf&Aƻ'jcJ,(˲[3L5i> v0b8{ML7J)S2aA7"fPkex|r_>79("_Cb{2\&cxs\Z( N帾!R~CPiN-5O~aSL6O!dN.F-dBJg5@3i Ex " wۅtF,Ṭ|\f~ԜR_AɓN2 ||I>zs)Jt4elBDI"b╊rg/Iq$š_7-i˖E3uxGҒ+Y}]IWn !{TFJXL1bY2bZsj{GRx|'JT>[#,"dyLGӲXu(eePXO?ͻi 1\fB䀇Ra<_m ,ZDR4X m JLp_W\qB#nRڶi Kb{< ACeR\\,2~_!`OD^SsjlPKqx`;G{ח(_Oj iq#K˹5I~AOZ)]x{:D=ҽt]2ԩx1n YYzu=e4wGh""Jl=AnMNg,7.2`KԖ.I(ON #V=fx]'oݷdhJ_x!yG===ʕ+99p@Dk`Vh\<4* ךKNYvL,gJ< dxHMM͈,j9uP*:/e ;b\ :IAzz˲(**¶X^Af&v**wԦtM(ytm,i͌reZfϞ=&[$Ua&ia[L jd|xFmۆgQ`eᱠNM*p梆q8]鲴a(@mbX4b1Q.( %tEXtdate:create2017-03-24T19:17:03+01:00 gi%tEXtdate:modify2017-03-24T19:17:03+01:00}:tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/24x24/status/si-syncthing-white-0.png000066400000000000000000000015471352162771300243160ustar00rootroot00000000000000PNG  IHDRJ~sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYs6GtIME.>z5IDAT8uKQʹ Y`ATJ"^BE]vQEZTP6*"!E+M(3,Jmi1f:cpy d@feX\M8n~zËx&KI:j>\\u+ [mmV6UUVKO-s8F_-ٯy)|?75kl.ik]Q4k\`\3zxژUs8ۙlMZ)[.l< GݬIb3^YC s!.ζ]%cLE}|H#: N;X2:6.rw]bec޴E,'w]-Ք`B3w20*C.uՓ ~J^HĎ[HFM{\9_=;kSͯ24cbl74- >0[v?ST(Dia#0B'-fk(~X&%tEXtdate:create2016-08-15T21:16:46+02:00A-O{%tEXtdate:modify2016-08-15T21:16:46+02:000ptEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/24x24/status/si-syncthing-white-1.png000066400000000000000000000015411352162771300243110ustar00rootroot00000000000000PNG  IHDRJ~sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYs6GtIME.>z/IDAT8}_HuF&6rEˍ qq,bEtѠ? b"v.Օ]!26hI66.~ksu9L@MQ1q62˱1sz;,7*#Q1٘$vDsΩx=s04/Jг8KFot7k5U$f%ښlySF*yFr.|Đ=((^Mͮ4 *( c҅y9$ru|=oϨ=I"B*^Zb Ws*z',gj Ic9i*/3^m"vZOmUCʺ"估^ϙ} !ddnSx1*.~To)LctD{Ds G<t@R%tEXtdate:create2016-08-15T21:16:46+02:00A-O{%tEXtdate:modify2016-08-15T21:16:46+02:000ptEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/24x24/status/si-syncthing-white-10.png000066400000000000000000000015571352162771300244000ustar00rootroot00000000000000PNG  IHDRJ~sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYs6GtIME.>z=IDAT8mOHTQƿySdaՌDh Z#*k",( ZHZ.ZEB*E,#.JI Q$dԙ_{sy︔,Ԩf-WԥWJjqG( pf9CbrREcc\z97?alɤf~s|1#Rn4N^GIkg#7xH1'f|p g4BWp4. &#Q,ye;0^ԖR&hMS՚D7t\vZ|>Yڰ$IWAJriT&F ^؏XIm "RrOh@Z^gTH:z7IDAT8m]haELG>bfE9Ѷ5)88QX)4YS[I)z9{m蹞c`@5멥)67xK0>̲~1~XJ^Bw+!f]̤Oc/Q':2z8IDAT8mKHQW3 A{aidC A"Zj"ZQ@E-zXAHI(!IY2ٿ_{Ϲ|'BZPA (`1oxH7#fscVH^6!($72~6ew6k%[ o]5D6C^ ˢd~C"W„ qA6:"OZRG3H~Z)Pmwz$]9Z5twTkz8:UIT{v{Xx3`#c+A7Q5f3  [gDS`4C@l'p9eqjGR -f{]V-Au'~՗f")8mmlPDQf67EՏ.Q} ]=8-g}<]1bI"Cas {1S՘##p--k-F}ޯS1+H2ꨥI[no%tEXtdate:create2016-08-15T21:16:46+02:00A-O{%tEXtdate:modify2016-08-15T21:16:46+02:000ptEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/24x24/status/si-syncthing-white-3.png000066400000000000000000000015331352162771300243140ustar00rootroot00000000000000PNG  IHDRJ~sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYs6GtIME.>z)IDAT8mKHag&NJ(f ҤRwRA ;EA"j-r-ZDD$BӢ mРne6Ր׿w}pD,Yleܬc:'=ūTeB\{^<:=m^xU:%U_ez2QV=c.'N2wv#T\$ܛ2[uUUN{_* #&{1" |jFDIYgUMثkzq^1)⹢g:xJO7Hf,t5Vxȏrj.ռ5ͬnFQ-,L"d1wyL/`52! .6sZ mrTb%ig)+_fD#Bo%tEXtdate:create2016-08-15T21:16:46+02:00A-O{%tEXtdate:modify2016-08-15T21:16:46+02:000ptEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/24x24/status/si-syncthing-white-4.png000066400000000000000000000015621352162771300243170ustar00rootroot00000000000000PNG  IHDRJ~sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYs6GtIME.>z@IDAT8mMHTQ߹wI ͲIE(5DTTQ? !h&( H\$%IPB+ 4Iiqܛνw"ڭ*SjЗ&JG)^ЎbĀӼ7X8^8E c B45!8R@JM&>ӪBC6xT𗕜#bM9kvbnS4Qs~]hYͲ ,@ꡘqz1SD'+aOG !^kA ܥ8:I;@R\=K钚Mը$-+9SަYEԥMJVJŞKJfLҠ’me㪐!K*TA5O/)OBJsȁ+x)y/f $s@KQVjsܕp qs$ِu8K"z3Ud)%$h!E^0TItQ?o0+w:5lh<8v..5p31>jIz> ?+hssi%tEXtdate:create2016-08-15T21:16:46+02:00A-O{%tEXtdate:modify2016-08-15T21:16:46+02:000ptEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/24x24/status/si-syncthing-white-5.png000066400000000000000000000015411352162771300243150ustar00rootroot00000000000000PNG  IHDRJ~sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYs6GtIME.>z/IDAT8mkq_9 &CJ{xH{`fc3yv%}}N9}1?_v|c9ih*^&,7z>U}jQ`jd~Q=n72Rh_hѤCEl3Su-CkԻ𰧌β^uKt72nW;Zǝ#bgp«ƬrpwWSoW".75T2`PҴ9 5a'2F%!|06֤oY Ќ=ꨋ9CٯCU3YJC:nXך7#3_2dSd_)++gyQky3րD('/d!AaL.˾R#^8@ḙ=PF2 ҝ(d,Gӿnew%tEXtdate:create2016-08-15T21:16:46+02:00A-O{%tEXtdate:modify2016-08-15T21:16:46+02:000ptEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/24x24/status/si-syncthing-white-6.png000066400000000000000000000015321352162771300243160ustar00rootroot00000000000000PNG  IHDRJ~sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYs6GtIME.>z(IDAT8uKHTa9sa)urќB`f-$qS&1D MDF A YE\@iPVD$2talyZ3{6!0Ԣ_Q k‘Wy$Jb-r ^e$+EIQ~p6!vc,ѼN-b0觙u7BFICk76y&B`YpBxʸBߨfY rR9@C<0P"G!kgH  % cHuw^KJj|֝}$-ɯ&+:PV]&2UeXtQiFY$9)$鮎RYK҂B4)zaD%n[F?PI,O D A'@C1j+U_FXB_4| "  7_,7⤍yB?13@řk`=WhgaZ9 SO ɔXHs (3MAmҐBE>%tEXtdate:create2016-08-15T21:16:46+02:00A-O{%tEXtdate:modify2016-08-15T21:16:46+02:000ptEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/24x24/status/si-syncthing-white-7.png000066400000000000000000000015171352162771300243220ustar00rootroot00000000000000PNG  IHDRJ~sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYs6GtIME.>zIDAT8}]hq9[d7LL)BK+DIRj ,r"HTRDnH) y g/6}?~_* $cy4('q+ƣ@ -E/VC)B^>#^abV2' GH0K_ݴNzh|.W ئYv$N/N&8ì?T{iW\βvzɄMU]Qgwq~AM.-B)F ٱ%+u7|)&i&cjLʸ_r܋U1+2"=:-z c?P̉Q#+ǭx\|PY%tEXtdate:create2016-08-15T21:16:46+02:00A-O{%tEXtdate:modify2016-08-15T21:16:46+02:000ptEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/24x24/status/si-syncthing-white-8.png000066400000000000000000000015451352162771300243240ustar00rootroot00000000000000PNG  IHDRJ~sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYs6GtIME.>z3IDAT8mMHQA0# ~lHYDEedAAhaԢ] 6QѢL*IZhH`.JJ2Ai7:rs}Ϲ1`@ 즌=4a&Gq + ~'r[9^hҸL;)E鋜QZSF"[wz宲+R1K=MS8բPpτ;BԻ~4)ϫ:7F"}P }s:u1HJdy*:7X?s~z8IDAT8mOHqǿ3솴ٺ$Y%ZʠR] K򐗠? EA~#BT1jGYm1 =\s "8b 6)z_dꆃ%}=^T]%fuOTZMuP?PF(,IsƤv$)Sf]mස#%XB|9LI3>F* fX%Uo8 +$AƁtDY6} e"rGPN#e=/(Ysv^ 'J B Z-:\&A;<Y.b 8k]:IՔ*?'0d܏!*%tEXtdate:create2016-08-15T21:16:46+02:00A-O{%tEXtdate:modify2016-08-15T21:16:46+02:000ptEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/24x24/status/si-syncthing-white-idle.png000066400000000000000000000015471352162771300250740ustar00rootroot00000000000000PNG  IHDRJ~sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYs6GtIME ,X5IDAT8uKQʹ Y`ATJ"^BE]vQEZTP6*"!E+M(3,Jmi1f:cpy d@feX\M8n~zËx&KI:j>\\u+ [mmV6UUVKO-s8F_-ٯy)|?75kl.ik]Q4k\`\3zxژUs8ۙlMZ)[.l< GݬIb3^YC s!.ζ]%cLE}|H#: N;X2:6.rw]bec޴E,'w]-Ք`B3w20*C.uՓ ~J^HĎ[HFM{\9_=;kSͯ24cbl74- >0[v?ST(Dia#0B'-fk(~X&%tEXtdate:create2016-08-15T20:32:44+02:00Zl%tEXtdate:modify2016-08-15T20:32:44+02:00+&tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/24x24/status/si-syncthing-white-unknown.png000066400000000000000000000014711352162771300256520ustar00rootroot00000000000000PNG  IHDRJ~sgAMA abKGD̿ pHYs6GtIME ,X3IDAT8uki&&FLh&n& x Ap/ nlDPT qBWQ&/XILq1cnsK)R9v5w\cŲ8b*q*E*Y702~Qڛ0hWDل;tKN ٨BـY>%V8AID/f0}q)QNGq5Tkq!#8I)Ň8PR[Ԗڥ==G&d}3V zZKCl'GbB>icjBQdǽ"* F/pF!e5ժ[̞ ujѬEf>e Sпsc:Q[n٪ E"Jq>Sc6>xE&li7]u$y<`%,KΑT79C&[&!M<3lB duɴ$ׯئRHbKVgV}lJtX.qQgV R%tEXtdate:create2016-08-15T20:32:44+02:00Zl%tEXtdate:modify2016-08-15T20:32:44+02:00+&tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/24x24/status/si-syncthing-white-warning.png000066400000000000000000000030121352162771300256110ustar00rootroot00000000000000PNG  IHDRשgAMA a cHRMz&u0`:pQ<PLTE~~Ǐuuu444OOO333555CCCBBB777VVV♙<<>>>TTT NNN^^PPP'''+++%%%***FFF--&&KKK``Ԡ00MMM<<<&&&' RRR[[aaa:: 55ccc-- $$qqq11}}EEEyypp~~~$$G$$\\\ffDD??QQQ**oo}}}lHtRNS5x{2af+1h3|tȹw40b * L~U7XbKGD- pHYstIMEsdIDAT(]WAJ!kJxޢ$KBz[kNʾ+c9wf^!X4mԸEOS?YzEK>fZրsvp"۶̸>OLHR#%yv*|+sӜ&;O:AzUmFB;rb`Y K|yv+':cUjS!6oz]DWld^%_PLtQ\b[ݺw%)zaZ!&r)sPJGqy$y W+R9[^AV/ZG.._Wq^ Aq3#o]yVoEøGc| <{!|V{U>Ca#I_Æ1OI 3Ĩ_:1Z%C_i1~91*jp)p;%tEXtdate:create2017-03-24T19:17:26+01:00zAc%tEXtdate:modify2017-03-24T19:17:26+01:00m'tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/256x256/000077500000000000000000000000001352162771300165425ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/icons/256x256/apps/000077500000000000000000000000001352162771300175055ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/icons/256x256/apps/syncthing-gtk.png000066400000000000000000000553211352162771300230120ustar00rootroot00000000000000PNG  IHDR\rftEXtSoftwareAdobe ImageReadyqe<iTXtXML:com.adobe.xmp logo copy w]VyIDATx]Uү3sHFQQzwgʙpzC Q $Hΰ9ɡ{f13===]RoWW IJ`}QiC2ߗicaR@䟘ȁ:'^r8aǃp|Mu2Qش|5x*Zy[ˈSaGpaY`M.(K*W/.ӊYyhi9LH!G >od Dk8,< qnwMji?޿[_S{萷ot UPhEi El7ld(QJ>t ǁSE$Vo! r]@rM~^9olVFB7ڹm*QES> S'Zߐ57>%.gbJ.AuMUTkOh99L>{麁ˀՃvy*._A|(kQ xbz_x9g=KT6gw׸ʶ.Yok)4&L}e̋ %gꉥR,n@o}Տ5߾ֱ\{4GEgp^ηLyu[yOIy?=nxXTt>d}QRM6# HCY fU}= ;-m.}]~0lĽۀ fކ'n2O X۬f=̻q}%?@G/$ ?:LT{Yj밭kA(R ?xe*H><4be3}Zh%`J-|4`e(Kxdކq}ݒr$]~IZ=u5?>'X`p̎F<_`s2ЎE@{ ϊcu*DYO,N5iY%;HsML%Jz~I3kblw5]%9uz3aM@mm}{*DI,f ϼe0ǩ8na{X J?+ NVDV^E"BaF.|@Kg.k~TT'Ϛyf(=pݔ,3; ^5e{ wg5P|(A' 0Or'&s $(YC[w3(nߩ=vxaxC6-f}ٿ֡@8v]&sBӨm>vIDO#4Ғd藠WUBiqvx m^0i)JMB286|KDPKsZwꕸ'T PJ~)4;Oy`6x`9|tT),q[xKn:TcשIs~WV^q{Tb Hx`u @Or?Vu [(;v~Kϝ{b%w|j7*M`o'Zu}X@Y D1\"3QܙCBpRsCiXdd& rLhwZ`*AZ~uw}*B,fMȸ/AHPϏ*~~*Q%Ϗe*.ZP vQxtxugȺ3G֛8uɽ[Ɂ P`A& TH~k s1+-_O?,yߐ.spd 4yh܏NJkP1q )oT5 `>BX,vПTL5PPXvxyxzO3RFYҫw/% r{g J<nJyaS 7a]tyU}(Ͳ `wT|F`rƥi9e={6$EKyg'=t%&9cRf.8ݿghɴhѢ& aאj^K9H3r4IJ犁nk1*XǘDۊV8e?̼x]ވ=s;'ϣuۡP}z6D+C7 yQS]"zLȋ1% zx<8!*ks< >*<dDr<4.욤h?f%. bİdxCm?lv @˚䧫XyHxJh3csiBTfP}'a& |v4c$qx~O MrG@Z\=X @Ɓ钔Z!@vdUw94{AAY\<Ʋo(|À4xhDVT}K__?swuv EeQbl {? Qj+c4à>@6 n0⭯shO}7{J_4p;bq?6D1\C5wREFU| fKnkuѼt=)&10Zcxwt ϻᔄ*V#Q"?7.N-Hy7_V_ -@,"d\)*\۸/'  Yťe쫿$%}鈴zcώˁYQ~lqV]sTQh3[RgɆa3))rf2ו ;:Wl,W<[{N= bcrU xUmtҬ1TH6@O*:TcT@`Rڠ /ev棂CihQYpnQtR{_)kQ~ :Y8+]0.} ;*o[zi&#}IΉy$w!x`L4m^ѾbhfFyʼnis_$$u]C3~Qq#lkSlu7_L] n &faqdK{!M1XC($/o]UQ{VQ`R/dE(/{,MQDzыVU{[L(Z.n lÙK+akk 5 41i\NM_oǥF7]eщsywtP )GZh VVz-QUU?sya_GL<5]@RZ1u`l-.d8]/9 jW&G _ ;jUoN4|i&hsaM$X58Ƶ{B_CU 5rIQ0AE|Emiu9*`[Un&q:WD^cs߈,m9[c+ 7Şh$]ϛ g/䃽4!rD" T tKAP ; , |ML؀;;*b/fFg=)mC3`Zvd54*zu |8-crw1pk<;Ʀpj&%3"'eV鰀Lvva"B$]z]^ ./S y|\AGM|<PF\K%Ahl,$X8};&y[ C~E _M{͋;{imŭ |`@ (֋[*;amv6E8ygWY3[D)qqCϺfqW08c^QǧVꪨG fRpiD*{ۃ~hR281`uX1fN0T/c=fTvr`V F i>w`:ݙüsuiIaA NiT<߹֫T)#L&/%*n5}X<%D?c;vPQ Q5 9Ȯ>2̋NcOE@ y#Ҍp=z`sC罫\mBM\ Gx Ɯ-158^ԇбȖFZy^K NIK(M0?n}9!,@83|uJF~y7r&9Cwe6keh0%E""/ Oı˭;ᵡ0lȣqcYkR/ E[ײjCԁ []"3²&r0pI{7¯NmJV~yaKSq_6W /&$L^W4xk 4a-=-ª?3VwVS%"ՃM]q׶ >r!)he3 W &Z(.uJDr.}Sw}XOSЕİNY.)֝&3TQE`=aH:,RY&eenlvŠ:*+:t`4~H~sB~({@;&"c9{j|.7*Kh&p;-Yg&cWRik`FTQ% lSs,/+; i]Kָ9)O[X:Ws`o2YSBlG; l Nܹ*fW8O_oqaeMS%,7ɀW(V浵R}rkRMr+J_HE §PcJ>VC}@vmM®i;^cM. e*d͉Et@H)BqGU^}94ؗSs-^̰rms37 g +,hLEbJUS"iFXtRQTN7&icm&i{ +@{PA67g"07*#䟭-N_gB $"蓨yqDe+aep)D[Z k^ 0Hg(Ho.Ϭ@ʪ:i]*ZB}7 ̈́צB.:J|S+75&GaiV/-<8&=0!9MrFԓ0_^T6,ֈ(B'"p wL.\/%j^Gܕ+`nUuM&($V4Ăc:E'&=jx .I=YZSK>Xb"F{0UT}MΧe%n~54d~cI==QNRjYfÉmuK3s$3uiYmA5Фf ikvgH)EAaGGytsrFg̐>2{=W0ot^`#hKESmfUGӂKiMޘ)V*%f E/#ч[j P@g%üIQK=ok=om2ihAGI&)=0&$,Fl1r5k:=&@6 {T6DK0UFwR1dU6pד H# 1I K8 'Nqt3&H(z2gcoQ W\U^:2-uA`mz+xݹxX&גV!b1on z;`OPᅮ [X7}V` `h֬k.$դ5ׇSt0*,?~7*P&) Wiw9yiНp8O5&}7}V-+!S'إ@K%UjHD6#osh":C>)g`af τFgGMI1wJ&g7z%r~#Spj"U&N%)wJ>L΍r~O֎\ *2{6yBf9F$ƅ~->Ҹm6o2'ɶae& c|.J#N}VuA+q&s4@TzCM kNb;PG @0\=Y!bx'/`NI4,hSz%}o+Q `_kPy :"Z鉮pA6%8)jҋ+'Q|MlFK&ˏGP.#`f95>,xIR'k$_PL 1cc!yN):WcfQ~2'E4D믡4! GId j+p6Jd3诟L+ R`:xYʏ[ׯ> Lb*!@%.hҪ?BB :>rrZ(ѻ&-痦( Sf_<=UDq 2l`P*)w8otوtoz|8֕"#Bf:Ui3B`0Qd =\{ǂcA t̔|gO%TZxeW ݺb{R&-~ /E%v:6Paqk8$YqrFAazMtXf<1}0Ш% urݭ` (zѪ0?`}bR#Tl *fB{& ]FI4a èztH")tu\'1>p1) jV(ш&`'AL̤JpZL(ϭdO8 D谡JUl nReFO *5Va c~rB ,@hrd89!0Z7 ϠD;J~,HQMNT\lFtQC5*u>`O}QQYڤ!a|ZZC)`Y̨Hт%G<8~|dJ+=#^wٵ^?Y0Ait>VypGe4Ky$R\`2n15RT␕F  hUXaP"VA>- ,BY-w6a"P4ȱh៣bjg@Ke8,QHJTtJ5Z"c7͂" L|6A@7O[ q SmՂ`4^l]d(&!PKhb&#ܩAo檱V`ۭ]+N Zy9a@ Sח>0am )(G0ϰi jqg V n?4o(^;{[i D\0ζf'tP3 HVkj:Ɯ pE0!#:~&ktx" %n?OTScsl^mnJn>P,"ASϥ>}^Uw4^athG TV*sH1 ?Qȟ}4L4et/?YlTcxlC=bYYc52x][X[astXB(c Ʒ5^7l/=`i0cfX5 >U%|6v6Ww5UDlz9+bS;XR=!HRp! uhQwQC֚cG,T Ӧ;~G'9^ J, ]tcrb@.5/)_g _Y~.Ί12TVl!Fvw7O#:&GZi)mnPǨ񹰺Nb+ehEM<@P 2#@݁V h9kPAK5D -v{<@˻  PrۡG`y$|Y73ycseߊCyjrh?U6"[K@?UxX[Ė vpt~=J.6ju!aWOz F\13XOP(s`p2>"^W7XL O2%gR&_Ŏ=-߶8m焯;BPqEItiڠ5w%ӟ> /mo5> s,4i'XE[VE7Bz(Vquhh $ywo+BC%#a<亥04WUA3,F-*DPd!@W~Wkaټ/lQnbeXM'(Y,Jq"7eYߴgq#7퍛شB/F Zon: zQLv|+썘`ֺhk-u|v !FK*;CԅS"ЩEQs˒~bWӑ+\v^Zjlxp]]_Ɩ&'Ry|Trk1ZCF@h:Ml Xq*-FЅ{jJ>-u+?nayt{ J ]M ؿqk;"r#Yl65'=9;@U 8vW#~hB1 L +X.t;});m謠@,]ZEBn_Y +k6*ʉ# }uG3|T&8?-M)JKwD4r-oن?S2FXexzxnkUQF{ˊj+Ñ$-R`d Cwf9w- yv4D}C|/:emn g^WwOWơ 7M`y5v/!xUv ,?KFXُ+f l' 02X|SRxq[3P;YMQFPT+fНğA?6桌׫wڪVl_~nkhʰ26 Fg/G Rĉ #U~ŸjiUvҁOaw<[8jL!V'w?LEvĆzbh#>9zC`6*iU M7ҠymfTJ{ a_3_w#f`8 ʇ *"r`&h@K1;{ZɂI2=Imr%[uԭX|C@ς<<:) eUtKSjFo7ߴ',ZlaǍ$e>rQ`lOU](,Ww&'-zOSb`QA Ѳ,ȳs5f[Z; 6Տ۸c!m_z'?s|M#l_.pzV6)ow'e%0!^A1x|j0W_ZG$M˧i"Dwպ +1K&_?!E{GC8A1Ӎ[z75"­cBUC Po{}F\ڭIj$3&q"G!ŭ?\i?|5Cחd^-X`")^E0Fˋ+>ɴQ*A#/_" H+ ];Vÿg u)o^ FyrCH&Q=XC|OɧAD/ͣD DysW lkrЄ(90OfZ虧0FkKoYQ1 8**8˃AARsN+Iulc{ۢ]UT~ 8>s\s#3|qu࿗|M҆Wm0~%/Ln>^̓~xms1.Vg9TW .Df *7}r,΁]e1!,K0>F-J҃ҊNJ1] V uf~En=XtpJch7lv]oo ?n XU̴3sbK . *sKVUĢD4S>C89"uPb=(I6@EG]Mo"Ak=oz bed~}f)f|ǻ\)tUUXWx4_\"8d[ H -sWh b@\=r쾢{`HR;r/`W E_5ÕA c0;ȆtC$D>h#[Ka~)v"l:Z8T}mNO)W0J_; @~ܒve2ϸ`P'>U+z`CԋMLkgd/lT) dLT%8 D) =`;QJP\],`X|7Z°9ܟ^ƍmvvqiZ%,'Dz(@s .ݭh52>+op-y&.Z 8nea}WT+T\ |NԠ]>=8QZI'D5OY^u~% ټ{v8<ԛVҴQN."/ݑF'FXT֮뼁M솭p׷<B93oot\U!B z >3 iOV0q7-M-ϻ}~Q!v?n*V(׎@gas"HB~FAe &9ž7EQkm.<8j^ cX`- E)[p/y.&1HFwU#\5<NflW!K1h5{]^N߅~r*?fhvGWS9. c.8_ cr-`4`a,YL-L۳ED^e9,좳1e<ƝM=IO X 2Gq$fz]U9]-c౩GOeL)A0յ4<c1Ͻ{+y"r5fOhPM"N \nD d%a"O@tWLNoqC&r*F s .{Dal6BDߧ76absQ5.O}iHqy ;xf܍ؓ -p/]p;cD%.>S%fzpbg ;Ud0)A2EּYUQ %DK5'&N}%?/j[r\tc;4TrcvxRޡ&l3Ymp}aG (J\~~kI"xAXM v RdLw`cC!Oշs^ϖoT&l^qhNQ|pz vL0ࣺ ViQ׏\O0kb,i7ް8mL@?2ZD`@yb:\1(s n~N'vaaN燏^+EZu}U wA %>+M8244[JvAI ` ;[%q<mlû2ϼV[pPGtʖ#s}iIM5\AJt&UJqEV }Wph1[CVh`4K=ul|uN?m !XVAodHV86aX{_m/96G.'KĨF|gfOߒ yXz^)31S EPVOI-Yu+~IV|;^µb>Z-'2''Vc. іr#}c %ߑ6"5oæbz'`Pz,Z8o`*M1TEu@F$87||&O./A=|s&O\6 ^L;%G! &aAc󢛯087( jvBGSEYC4̍#}`p$_PGsCrr,߁ UR߃,+WF:˙h<v/L+L*zc"lc}΀T8}:F˜qߗ:QPd̉^=+F}6U4x6ub(kjm01J)H[J3KS,m.hr5T>Y܉`Lȱ@yZP6n_)˚a?a&b5YhZ]>)ord_#H3iԘ3bXTR(Y|i&Pt?VfbՔE ;Ks/g'/+:#Xnz=6tq (WD?ccs$ vp^ A~' ADz= =TzB謇s@~+>/ljØ6/Oz GG?<%..+;=m'̠8n_+3~ȖK'.И37N*N&ʂYǿ9)xϜErc&G$r{_2֡; -fVVutdA ؙe7Q{,ONP%cEtǥwYn]Z k hcϥ uس\1+NϾcѡo-fzwR.\$8RGƪFU6C@Al-7O3& 0"ˬN j.EϛX~X+NK.eԣ5f ''-T؞lo68`:ov4Y3@PBV'yTq)ZBZ,b@@K&29ECa1L7g;O_+s lh/x7 Nnx\+,hwhDr$cBMM16p ƛu,MdJsL5U]PD)/[ȮnYRnV?BK'>X~El)2$0^2~M߱wK  "o6pzdPE~G{ZisᯃS#RD|uk##t;3'nJWn.lmipZdE|T*V-do+-rb$EAFW=zw*=~W9pރ 0P,DV`Ա0$Lbf$ᗺ{[\ ~Zb[^j QH&i߳݋&ո N?󎅬9iqŭ~wEN.H`Tۥb SUtR6/|]FֿݳՋ<_$p+7Ybt&p(4u8\0=lܾB+ɳf к'T`c*4 )~ fhGlsFy$ow71oquPB=|Mhج¢c!YO($ 9Cq4L<gx[(=v+ªB,&E^~&=@O~DpppW,~vxeݰYũ{FS0/%w}BBsU H8ʢ7ZxǥK6u{V/Ȝw#ͱn=JwYX,~x#kuu[uh)7>$u"So|&TJJ%H1ϹM鄛 0\(|~zE;=; ˂n3.7pP׵*GA!udh>ڡJŁ SoGw\t@8 OszFϞ=G䬱8';75Uo]eCy:W96ߓu&߿GC}'\u4Lվ^ӻ-¯Vܨӵ.M+Hg>U9Sv~a"=q+kb/ hF ь:,M5ukKHhApj=_7|_{NƪЇ=f;pi'1ִ-_]FғOuDkgRn_TӔ0 logo copy -7 RIDATxڤWyl;3;{ٻ>c`8#)%@p$$m*IK BmI'K %Z"`S06z9>cW t3;{{o 4CJsۦ͙g+9\PR.f&{+l5] מW苣-mñkxs~碕o*|AJurB̈"DV|]mGus@W)v=&%"i[',H$26"=[7zC`?lKJ( E!,QyLSS46DfUjĩsQd11 VŮ_<߱q+y( Y}yeVvNʔ?d@f0fM?}tGwBqKV;~OGۯ8z_ ?jĆYhBp87~=9h i SK( 'V#UYi$*N2s .v Q麻vx}& sjB ) ׌OwKyaԛPM c0z]Y&^,6ߪohA+|i/s{)oO&oWߦ N{ѳ=EMw饲 =?2,Zːd5\sƜ‚F@,N⥭tGn7"2C YѲ| ;6n%>QtųvIye΀s[̥3h5ImFrgߢV& hel1Vʲ([i\+$"gDWzؓ˵.BJB']b+hՐ[{ sCؙeQB̑9b q-V5+ &[z6DK52'H# @<9bGukUM88̴|ZD|4-}/Z#{}C' l:!68,g>bgU)k拧.ۨ)T};)};#VuׇR`EƀEwBVC ]n?~{#!H'Ԧ RټeیAԴhRbI ^Ϲ,4&e;FyUh{}LJ7\ÅZGsWnł~`se0/4ʪt>r LQ~-tlpۺ=7¤E~rԑ~9+6lǹ"Pr1I) rJP6#7Ѝ\F90 AΟ6מeZziڷ lx*_uU%fu`2Yۿ%k@k} ye3V)=`smD|9{ȶ^ Oc~Ƴgぉiyybq`SBfD1)k׺봦sk'hñ_ G IENDB`syncthing-gtk-0.9.4.4/icons/32x32/status/000077500000000000000000000000001352162771300177055ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/icons/32x32/status/si-syncthing-0.png000066400000000000000000000044021352162771300231670ustar00rootroot00000000000000PNG  IHDR szzgAMA a cHRMz&u0`:pQ<bKGD pHYsvv}ՂtIME6- IDATXÝylT720f",̒4CB mԴ i4(AmԪIT4R5KQDB JBPF6kXM1=xlόgy 핞t޽w=>ᮇwώDY P(uBCSn[>z;ΨolOalt(AD  [⍀Ial=;RC(\Á$49E@!O6}@}c"L4s<.TQk!PPyl"J7h|~C EM*<<;"@\k|8#驻?λ-~4 j5B,>Rݸ 7؊c-:*7(Y[zMZoFI &8jE+ƺǝCW8'| |AiJd(|_E$y,jzZ{H@fn(0uJcs>꛻!;U{o].;S2A~%B1L4dPbӤ~hf9x?3I~o'%,潥9dG[wMȜms?Tɽ#8 O N}gD ]P0+{Z G- N< [>`B1}(EN~RSD[@; @[k$1\7E'iw>4mOJ++{ME6+ڪրhͳSiy\-@3e@ #?F3 eXznjv|OҷH2M@M<;&z,PHO>؋f i2я͵*籵x`;.SHD/2-xX1v.tId+B 'T+^9{~P>Fbh2D3)etb&6HQN3u}Q攸,etRC bYx6N؀*Sk4׎T,.dW?qӠIAdaˢz^o?=-.(bV*Z"PfN)ix8_z(˷Qg,'FY Fy n'(`jQ8 loa-fՌ,GkjKYS[3Cy;H Sb-Z3|?U(P o0/8Ù[ 0؉2XD" )`G aAYhtҾVbvp:h dW39Nw1kUGfl,oDJ6Uhmuo7x`Bak`ۯ> su㙚:M_O:nW 341~ |~9Յ~e[4D?gؼ''`^RLSo?[iڲZVqkn|s"E6g\_ϯa k]%n]; Y_,H9:Ža|}+'3q3r*?'+c/VˊY 9SMgivPgctn.S}i**mJ3~e#oUct2dR7<6%.:Qv7Ik/ 'ƤTytbpN^?Յ(rbE}X{)I2Nɏfzq18 /}x<=aC]f]znky1mbȊwJw܌.Q}Q_ ɸnl墨O 9\Z @+ɓA^wAQƷ޽P2%Dz.]qycB{8;*0D ek1eRڎE#Zy 4a(:ب%tEXtdate:create2016-08-15T21:16:54+02:00^%tEXtdate:modify2016-08-15T21:16:54+02:00kEptEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/32x32/status/si-syncthing-1.png000066400000000000000000000044531352162771300231760ustar00rootroot00000000000000PNG  IHDR szzgAMA a cHRMz&u0`:pQ<bKGD pHYsvv}ՂtIME6- IDATXÝ{pT?ww7$wbBB"yVK4X)VN;#LmXvpZAPC<;dnw$7sΜ9s}~>Z8^"JUH(Ja(7/.lR+978 bk+JD"@# :=;px!Vk)68_!57o`}3cUv0-TS @pcA>"0-u(\tbr*%>j*XP!c6V?9$F2&g8EW,vҭ/ [lo?=0HQps;?|_nk( 1DO$zпEDq^41׫ǣkw2`Zv8DHNH.~:53 }݃q>T<0 @,m1a+y+49ѐvvȞlﮨMՂGpcB0֫Tqs2mJf*oV|g3MD5ԗy!([fiHQwai#2֑ؗ@DdU{[HsޘE[o9Ж[4-wSo/iJ#}R;s}ܖ梁0Ey^WJm0 ۠cҰŏ!0+mDʂj-XQ pZ.͋&2#Iȍ@ʰ Ei(l뎟8,n:.AS^>>YQ@h1G("HMvRJHOdGA>튀hƠCa'zŜ¤ѼT׷䖭`vǦdt}+.^A,]$4;4Y1-'ބFdw==7Ț Wr5@-E M{[FUiFX7ho/&}l<Ճe阘3U(miy&ݭYW]JlaI}>2@v1jNh)8ynf&[lڲVZ7і_khSKgqHsD@TǨ6u>S{[&t^~מVŃ1/~G:YRņ"4jD +&ݩxka=r]m~+i-ʌ~A#6t~^wuse6;WNB_tN4pWi,`N?`goC7'ojp3?WTGgN6dO`4jvy&׷Ϧ|Q^13fhOqCJ2'dBjnȱ۹!JJ0-65e ]kU]c-O",Ksɼ4u;($]AyꚯD$X~mYo2$MF<eLbaY5GDG^DAQƽm?Ve:qd-1,{1dxNu4&xf=BuC!p(5E.Mke|$V`Wϓ[j%tEXtdate:create2016-08-15T21:16:54+02:00^%tEXtdate:modify2016-08-15T21:16:54+02:00kEptEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/32x32/status/si-syncthing-10.png000066400000000000000000000044571352162771300232620ustar00rootroot00000000000000PNG  IHDR szzgAMA a cHRMz&u0`:pQ<bKGD pHYsvv}ՂtIME6- IDATXÝkpy\61K  !"pS FF SUjӢ3팥ժZkeJՎVh[ ^.!` \=$=n6E|ygϞ9>R)ypS/nX."Ub0s@mQ~~smEszlitŲ4(F"@Җ|" 9f(ݹoM`3% As<-͕ٴ}ݜɉF r۱jlit1k`-a~K$'8:DĈeߝ՘Fl{/@ 5dm 63>m1Kіx碓s#N`K;wRj^Uy  QPs6f37C8aj漎3pe/7/ƮP<{,ß]ScqHϖn~>Ḳ6Ǣ,ec] |(ڳmi khk qnz&$͸+rq6 w4uY{ 6H{(ʭK\eH^6UE}<#QVzC$TC|.Cy'ePⶼdK;M WV]gVUO(8Ahr?؎PL:SͶI@UIz{Ҿ7DN5(:`}a p9)Y?%Y.VciX(g:McQw6᱄'`J˰ya%<ԃSI*&E|Iӕ$~d$W mNR9.uӣj~j[yIdg›hZ#ia]m!e9F]=<3}3Z{,;:Jjz0 ji#+'eyAG U4ͦų8ک4F@ @ۆڣ}M}TS=K'KƤ[[S@Ye'{e ?A<D_e̎4ds}ܶڴƮ\UƆKE Fl;?,q [*YV^><Jbջ^&+0Mv{ Gz^k& ܾUsl~-" WҳTFs=B߈:qq^?>Ty)2lap|c{ook64}b泶KBM6@!^>6@4z wx={?7?ƒHNEˎVS3[;ICG2?faL;i1qoh25 '&m%jSLb2El˥p #c*Gj]bgEE*Sj%tEXtdate:create2016-08-15T21:16:54+02:00^%tEXtdate:modify2016-08-15T21:16:54+02:00kEptEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/32x32/status/si-syncthing-11.png000066400000000000000000000044251352162771300232560ustar00rootroot00000000000000PNG  IHDR szzgAMA a cHRMz&u0`:pQ<bKGD pHYsvv}ՂtIME6- IDATXÝkpTg{ffBm$)-w(Em[*Bq*i/:2cN;  tЁJ)bB\S͕I-{^?=@@ϗ4\ Dy}6_'U9q N\P_(}VP~%6\]Kj9 l7ߨ)/%>3o}eMhW-t )/ jYPμN Ūz7l;uG^} :ƚ}2~_nD[E{W<+'#@(f)#' f7ioddIM;LX])|McJ2[%M1s;YͱH c=^El<҅/Omh;;e8ߩu FIYz:v>Teiֿ{o8/V⡦xf9x۠Eu!W3'fz02MF4E6~&ЬN#o3ZӱSnpB#Gj|jnS;㉙c>pg Q8vSQQd2Kd6%`.DyANOퟝF: ǩJ1}p4Ϫ`L3<nuY^ק\ 柠LximybQ'fT8UUD2GxDv!::r2@~ҲB'XF䈦!Q{ CE ¢F%(Mm ci;q0өmu Z(B1 yl6Gv{ovIofΞ{~|9+|R:1f{"P c 챌[U9ƶ6\wXVA+"@2O2^vYPozCda wҗ[Èiqey\gE*%Jgd''p#/=31;zCbh̍R+ذpA9g֎ujab9OSEKW/6oEsXE.Ux ͍%X"gE9OK+%B. p* =FALNsCw|Yn&y1 xoHۇj_?rOH^c_REyŶ3l=:qӢ9v]e8p ::/8#/v98EUASQ4ʶ=]38=ٲ=6qC>_mS(ǪmXb<0i~&eu!e?WnkJK[l@ \] e+P3yLs $~:#SU\j[5RP}Ēg>'2WRMNvʳzєƐ > [AoQiC=Ger*P4}{OR5e3@|0<񝦹DmTGc(C|sAKsr^kgۇ F1gkv.qCfX׶s=8yՓ M&yjK}y춀VT1McB@[Y}$ W ̙Vl$wEIŞۛhBetI m^]jX""̲vz"Qs,(oFLepgb#+eߍƒj$XUs-Q^;'1DXoZڹ|tsβ1L#.D_zhidlQ9m<ˣUFNXP.AZX{za0nQ(gP%tEXtdate:create2016-08-15T21:16:54+02:00^%tEXtdate:modify2016-08-15T21:16:54+02:00kEptEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/32x32/status/si-syncthing-3.png000066400000000000000000000044021352162771300231720ustar00rootroot00000000000000PNG  IHDR szzgAMA a cHRMz&u0`:pQ<bKGD pHYsvv}ՂtIME6- IDATXÝ{pT?wn$&dI `ad[ ABԎM-mgj[cô}hu֎uiiAE)X H `x@&$wfj;{sOGKͳmT({-"2S b(95^V}5զyDQ"Ȝ_P e]Gn9۫ 1vJ=W&CI~#5"Y08ŨB>ٻ?mfc>gL*Z`=ND[p%zWȦ#_I8Kbv~T~ 0YSCI^3:4]ܐ:mfWSޢjc :(6MM~~2Ɵ:&!,1?DV2=pciprMʙQZD2i9ѱ B*P" y;Ǣ$m=56NP˷ .טa+g|`'c8}\P[8u+pv@JV\5ewxVkКְgo9FS6dL-򠵆>>$-̓ouTC~ gu 9emh$ 0w¶)p7ny d: TkNj(wח\GkmG#esm<#[אlI:c猡qJ |: r)s*1GOh,56Ȣ~sT)0ʼF`L3TYGtD5Қ<{"vEchw@0&Y!2Z:($s(/x8[͉EVH`2Ck8KKr:"za]dK36alѠ7 d9Lt+w<>45\[FxDtAJ/'Zo)Ag8V[7q^im{+g.%,1V +| F\ (6 RZs֭Ytԉo^Nt7<~t^vj";6 3nN)4]%,iv * 0YГOkK6FkD"GX >Ju\~N_JvyǸ U%'Y`7Yb >SqWCi;Ma?2T s' KZdH8"V>_xfKFǸ&C[|c'/u #>#o\S2@cyK'A)=jm-'cL 4U];?ľax8W:83#,>qF *|<}jhrtlV ;<u/ j|q4ƿ3Ԗ tSO1ɶ P y@elr/e'{ǭ֚$_|=b]a˜ #A`'#)gؖ:xAn8{)S0 P7)(DHgk8=AFRT=,䦐 f3Ѵ A oR,nGX3h Hdض[#w^D.("Զөu#@)--3800HMylv_6P{3w9={~^*<P}"R'1 iGw]ygjmVyŲ4,F"@F˴G6;7(rbKgsjA\ R F rk /1k[a FR1 ypPS |X. _t kޏ5 s2l8GC٨EЗukMexhcFQivtdMajTAT YGծ, ~d>i 2 }0zށ8t JVֽzX=t2:N&xi97kK?rYl[3l<%Mib]%0$äO>ǘ7 Q}luo$Pf^Y"cU|3:&P w6Sw@%/]AirWϴD:*d4-gOٙRVu!X,ɜ@&0èKi|Lnn,q[BL]=-2 ИIgʣa^^M(ˀ]=/,!бxX&> { e6 =FMA$Xe: zcI.K!2?O&\%QQޏr"ƶZ!~8.@^ADQɉV7=#JmA~;2r;$[UoDYB;m13S1;_NԲn Vpe\vTT# ~;_`U7gfW5ez-*aŜ#C7wUq其}+Ufoϰ4w•WE}Q݀[#Ρ{|P"3͢$o•Be?.[XӋxx7 ;&3_p_C,L6˜C=InN W,E$20;j.yUs=Nn]05H@79ζaV1e[7u5dNEUމ>r:T':Moa$yYfo;q(Io,ir PKsy$Og ?^0emxsKc),g}4vv#s'XN_fv&}+Pޤ#)[K[a[hˑe,a"05A,Y; VSk)wDZ~8;ʎ{g/''Ȯ//6W#@nhxVe[xh0zsbb{V6q&szG70˾޲!LSu%ySH464?]_ @.#lbytY`EbL> ٩zK챷 G}P5nh%tEXtdate:create2016-08-15T21:16:54+02:00^%tEXtdate:modify2016-08-15T21:16:54+02:00kEptEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/32x32/status/si-syncthing-5.png000066400000000000000000000043571352162771300232050ustar00rootroot00000000000000PNG  IHDR szzgAMA a cHRMz&u0`:pQ<bKGD pHYsvv}ՂtIME6- IDATXÝyl\sߛgx<8IiR i!B!M)PEjQHP EE"R-BdqBq/x=oo6I$i= T=t1NZ`#ZFu덵U.8bk(ebA x6X>uhɒځ!8QPݐ0 lma1UR4@o 1ǥih)ƀ]C=>շ=G0/U-r3>븼6O9QN麚lm9*:7~ri,.'`y=ơ}D\E7:^fiM8K ±PLDABAٯi^<3ZGc y-6Jh&91x.SFE^L9\^Ut^%<7Bw7Z'919/+8>>쀸zțw(g+,؇>1Oz\V:/ ٭C&eeve@';X6نR/.L5-Uerf]u83SN<̀]WV1#T E8烞ĄB͗U + { ƷnLFR.wLg*l_ZIE?Oh}63Bl`W{\Y 0^hcω;旲yI%G{#kwwuuN|ˠ/dGm0U?]Zua3fЊ*ι^twp 3 h72>EG m]-2:iy%lY6 &L~־tHF̪ژsw ]I0;;(%BqiK2tW!T`,@4`p+SG2G~uɉ~ LwŒu_bͬ0t'xu[DjZ1 * TiKr3ΞAއL̎ލ~a|puƒjd ]'1Xtϋa&zſcRW=~C'ot:g' ~ X.ŖFF/C X{Mw6=r翶?7m%tEXtdate:create2016-08-15T21:16:54+02:00^%tEXtdate:modify2016-08-15T21:16:54+02:00kEptEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/32x32/status/si-syncthing-6.png000066400000000000000000000044721352162771300232040ustar00rootroot00000000000000PNG  IHDR szzgAMA a cHRMz&u0`:pQ<bKGD pHYsvv}ՂtIME6- IDATXÝil\7ǻe%!8M* ($D~ Zi+"(8iX$`ǎcDZ=^&x;f&%zwsJubLw2io[F>JںGW}U>bY Z.F"g|ip^o5 Ӂ,9C }oG`c͈)lhߢ2o C d*MN`#F-9jzC{ВYXȵ YU8Ϛܴgp'clځG_B[ψv_yާ͑?WsqeI,#ԇ8d4`| UA?+BlWQn6}f/ImgWDX^̢aUM)%P[ȃO!#Ed]7 g{x6uaxҡ3@gwF,KQs)O[A4pώ>YZF=WTU0]Ao~ }mKj(Y齐r}YE 7A <|A%ua?GƉ\(V9DH@' xai5E`,Rtk֯I;) X<~Q%XvzPy~E-d(+*VxT=5"ӈ OSuaChASbzcI>{gI y:ƒXšH=)lK))u{NX^K#\Pd_4N[WiQpwc1~㑼!&os#p8*_6繎~40xN$~\ឳza!=<ʠMUǂ||"łj|DH+mVe"8{bٌpqehuaVׅT̴ 'RsfNI%."FY yLrCAA*<'J8DNy( ؼL9.``@tFTk48›ن8")[C-0<4`1O y eQ)N105MX2 &s*mIZ~"Qvh0fDMAmdiU׿zH8Jx2bfK?ɩ.Tl>ƳD[Er`zbj~g΁l57?*9Sȳ}q.qc[CP֝WSIӮr]l94慐S ^(ƔIZin3e:Jf|"V)gPUJ54NX"` *Opx41@X"lFځ, 3t0KP]Q@ @ܝ|uco=Lw#Ӏ4e21ܳݾXPCxef׺'Swl3O/cmw$rd=ate$od=̤㕋:e' ?vV5tgr9e;A"z J|Вr6e싱{7c4^hl^͂hU5R ^E~p|ʛ̺äl=_Nh77X>#i}E{/D_zbpEfj֋eV1c8$j;#8Js?olg4 %tEXtdate:create2016-08-15T21:16:54+02:00^%tEXtdate:modify2016-08-15T21:16:54+02:00kEptEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/32x32/status/si-syncthing-7.png000066400000000000000000000045171352162771300232050ustar00rootroot00000000000000PNG  IHDR szzgAMA a cHRMz&u0`:pQ<bKGD pHYsvv}ՂtIME6- IDATXÝyl\羙,6%8`R4B) B@*mmU U EE%".KHp$j{;3c̻c,^t;w9{tReyP(*dM w}ݨrIv=b]$JD"@ҖCRWvX4(~͆PS>,. !^kA"HPr[ho/hTnK0wG #AZ"&852"Jܮ;<0]if5\VQΪ<ΣKJY_]xA&Mc6ȗCQqcљ 4m֢S8 ŏeI .BOyqeb7+J={`7]x6y# Dٖ7DcgMU,.vsx nJvM0[tf8\e兌M~;L"{<ӼV0v2o9> +o>"!0ЈEnq{U>k*ri c| %;( f՛7 kjaMU>>:/>`R[D@kv 1IG'(Fe]U7p|/J=?L47!,Opzx> NI,B)۹x1 ߘەy\QD`Wb3ÈKJ3Uzh`ŬVrӶCr[ڞc$4L'=c<m]uѦS^92(㘒UVSTдx|I)>`cSP m?h35L$L~^;_m ^lglj|Tζ!> B)y yli*"DcxhB"{xmDs}E2NO̤NC2D m՛,!6ݵEr'щKeeg #`W`CCYC?Ի ;nGSkF0urb^'wl{wqztJ֙P̫]T_??-{\NjQ"]XӦHh 05x]6^'.Glmʐ͙{/r,RUoCn˾`̰eY yu8 !396p׿@:p3pY_[ެ V2C\w/zES(MW{! u1Ǘ:cxMayK̂L =w0bT`"O/3lZlL EA;PG/23Ou_Ȉ.v[O%tEXtdate:create2016-08-15T21:16:54+02:00^%tEXtdate:modify2016-08-15T21:16:54+02:00kEptEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/32x32/status/si-syncthing-8.png000066400000000000000000000043771352162771300232120ustar00rootroot00000000000000PNG  IHDR szzgAMA a cHRMz&u0`:pQ<bKGD pHYsvv}ՂtIME6- IDATXÝ{pTw$bH!PU^AD7:VӎvJֱi)tTP贵U@0$$4W͕f{K4h̙wy}§y\eP(uL1n켩f.񌠃A X11I4|yժ wG7bCᛩJ)551DaqElv79J͢ {@h2Ccǎ~W>s~k٘ "R.+r_Mז"e\Tuc9:G?&g0hѢҔr/,S;aG`(J\L$ޥ\_峣<9:B[^L&/OSU 캦ŶA^8#>`},b'fjSwsnbIzp4z&8+3ɪ"qxa(j{C\oPEx}m|pw2AZRCm^ޕ_0\wu)^@?ɱPdZQ'jKڢn} [+<ZF&NDw]WM}˳ݲ0hYk&}n[h4j ώl =<6}R @hhMs}ˋhھGVS*kd,)c(~2h^81Hc(·3'"7PnQ~rNEmc,ƝK x?4˧FWP L$Xp"#L z.{N T-VR0L:ezϩxP`XṣX]2۫25%Y,:X=;pJwC3em ON&yNr_-2 sԷS6 } aחeǵ ƾq?v}_`Ubצ]@+y m7;FsMU}E E-{>P2@CAI{}UϽl Q0MNZ&xj]9,Lm\Tٻbae&Mo%?@"$qo'ٽ)ҷГӳ'&H:2Mt:iSa`<ƽ'hhbBQOזe4&r{|~,[zyΌӿ=sBN2ٌp(d\'˃>\KjN똵#:c.Zͺirzb͙{K|ܶg.wD&qs9a6<}b__vR_@+ƴqoX&" `0w=IǾ3W,k5bA d2ez PdKo_k;Œd y8C ܹpקfUy9U$py:M\e(pt"K\bDwM#՘и?>.k8F0‡J$rۮ95,Czl֛ڟ?|.AOZw6lk^TUTŵwy5s=ܰz2&AU3PC3TZKGǕlw˪Jbb=$BZ!V,ɶB6t+"\Q]ªyA~h#L# *hxǮH"͞Ihby})=c ዗h`a rTkT뮡<)Co"V6*^y.7ԗcA89F4jvY3@ ^SVH(J9UjJ,|V2VoN⎲g0>K~Ÿpk>Fq /t8cf(̒oZ) ?;w2[SʶmDS.~c t*QHJ}=@VB->jPSSpĠUׅHK*|ycA)2J]nn/Vc!FE^g&XPJuIA0(2EcP4;~{ɂvvE Ŝ|>#۹`arzRѸC"fȦ¢Y%{ywbMlÊӢV`Q'S~6>#3;( ǜ+kI+l?>Ǿk@UYd=}4}[6(Hz)i*ce8:T]Q7 !V/L {Z}rE#Cqv nQphw\_@$XXm؆e򀋪JfJ,Co&MUq۝) }I#I>(1-wB %؆۪-Z<Ӽ7Z]}ŻÝFX҆@]-󹱩æa8gc!.b<&\߽XUyWʺ/iKdo>hFd>//wzݵψe2ý2A)@DEᶑ3U qkz#"\*qA^7췮%pts%tEXtdate:create2016-08-15T21:16:54+02:00^%tEXtdate:modify2016-08-15T21:16:54+02:00kEptEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/32x32/status/si-syncthing-black-0.png000066400000000000000000000020741352162771300242440ustar00rootroot00000000000000PNG  IHDR sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYsvv}ՂtIME IDATHǍMhUL`)茝*袤5TR!EbݹPZ vBw`]Q @1ZjPRi~(- 'ŝofKL8;0)b=$Vg0eP=A-n {z;cSvX=}?柳찭݁XG,Ԕ tp#^8k xDL:vZ`il c5-%tEXtdate:create2016-08-15T21:17:02+02:00%tEXtdate:modify2016-08-15T21:17:02+02:00tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/32x32/status/si-syncthing-black-1.png000066400000000000000000000020601352162771300242400ustar00rootroot00000000000000PNG  IHDR sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYsvv}ՂtIMEIDATHǍKHQif 3,B{@J, mQ|mlAD*`Ң(0 S+Ҳ2{8w̧X޳9{s=vh6Zi MB3PL7Mӈ@GT"chͭF\\W. hNXYErLq+T>H3ô#舄Y!Ԅ }6QlʽMm)q' FҪw{w~m#@}_dOvQrXm}{&13O^Zx3W_~(p%tEXtdate:create2016-08-15T21:17:02+02:00%tEXtdate:modify2016-08-15T21:17:02+02:00tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/32x32/status/si-syncthing-black-10.png000066400000000000000000000021071352162771300243220ustar00rootroot00000000000000PNG  IHDR sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYsvv}ՂtIMEIDATHǍke?xΚh!Lh(AZjLePTD "mf+Cd"k'K]Kn٧9;wE2"9G]T@THZ^]Q}QǼouV`HC|C][]Y;\ziFq\d?F u[MDrlhbDI&gp` ̆<Aw"GC'(NM@7wз ) %x3k__~nQ YjI#R{4#u޷RuA3U%^Ṱ "Z)a?.i {l2Be|#bLu hs> rqUgy-(zɥ<=]a!ۏF9yB JOp8lwzCOYT7cr020e,;!I7=6!b\ULfq= #YWyҾ3uH wi '~~ô?zk%tEXtdate:create2016-08-15T21:17:02+02:00%tEXtdate:modify2016-08-15T21:17:02+02:00tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/32x32/status/si-syncthing-black-11.png000066400000000000000000000021141352162771300243210ustar00rootroot00000000000000PNG  IHDR sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYsvv}ՂtIMEIDATHǍMh\U'TJKAlJHZQ1DJ.$ v#х ]E B(5jj4 (f;3=w{NZ`-A+I=37󿬎C\k}|Mrr,<1z&R,'g8:p.sg Ut̬s!.yaYu磈 qF ˮs/h`_i|Cuȶ#rnĤfjh`Ѯȷ=ɿc"fI/|F-8h*~挍V=y "p;ck\?į kW9%'ћ&xiu~pwylhau_dzl=Ӥh `{MdI_ϼԗ.w5FPMޔ$0{UrXz/+B<$\Y{Y{>hG]7-b-/tP5D^I;?lnhFltm͞V)x$RIW.̸) )U=oJ&`o{L2E6fC,͜.x,b黜ODϭ<T|˂yU wLmZW'wNR% /3GEOy_Jzs,p*;΁:-yKgqձ7*8՝'bH [igi|g 7 um %tEXtdate:create2016-08-15T21:17:02+02:00%tEXtdate:modify2016-08-15T21:17:02+02:00tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/32x32/status/si-syncthing-black-2.png000066400000000000000000000021051352162771300242410ustar00rootroot00000000000000PNG  IHDR sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYsvv}ՂtIMEIDATHǍYlLa3ڡmDBV4t%B<4bHi9> ,Fĩg 1 R9l3 a7K Oy2yW!* =|`xFgtTI*1*=ץe)Kb\BUSoT_i*`+Qݠ_%靤./-T'ij2_OL*w)tTTr3Ezm uia^1&Qy!)4,]%Q1> EBfm55Xi}ؑ3ZcO"QS(vhWX ݨ;K" D.{.sPjkb~0}@4 0{64:yOQ5ȰD>\I96EC-h!v4Mޱnc2mp;^"L&e|rADlIWme2U(zǪU I`(%tEXtdate:create2016-08-15T21:17:02+02:00%tEXtdate:modify2016-08-15T21:17:02+02:00tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/32x32/status/si-syncthing-black-3.png000066400000000000000000000021031352162771300242400ustar00rootroot00000000000000PNG  IHDR sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYsvv}ՂtIMEIDATHǍKh]Usm`& R8p`ZZb$QER:Wѡ T$>NH[G7XmZkcm9ǹړ׿DdYĵ l fO9a_c1#_#T#rl$9ǽvD 7ش{ՒLd蠘B:=a}פEڛOKw9_u+w'S>R60|hZT;T9Q;λ(u?<vV SU!O'9d$%5Ow۪) }z8̅;~埮/ q6T"=veUϨa>fS1 Y2pMfŽEv֘xԒ C-f`5L5JU?Z菹鵶V=ŴK [it\9}f^(puAŘS2D dqAx$ί/:E6P K.ԧB2b9oG}C-{~>^yȊ="P %&? <;CD8x6qAF'~{+DC #|twӞM_pĊ{Wg2^K/ao}bsxj缹j|WluN,U/1փ%v/?XrƂyOˎmJe+CgG-hUd*\O%tEXtdate:create2016-08-15T21:17:02+02:00%tEXtdate:modify2016-08-15T21:17:02+02:00tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/32x32/status/si-syncthing-black-4.png000066400000000000000000000021011352162771300242370ustar00rootroot00000000000000PNG  IHDR sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYsvv}ՂtIMEIDATHǍYHUQ{3LF ")zHz("**,Bz1,JH&לzws<4}^{,<-2izթ^/KNѬMJ*Eaʩuiߴ 汋 ۽s Su9~.2m&e՛NԱbɣ>6)F6/p`#'B3m{{-%1g5ljvguO7OAx`<}KҸ0f0pwgEp$3f4 1nqE' "bTM!),+ kp,6񞰇A HXT\O5`4 S \Jo$ BܤϠIT&|KAuהMծi$?a x(jד )#JSHX+``L`d!b6pmmC2F;QHv)vT%ob| Ir \6]6+/03In q^2̊rC/L ( lboyۑ__qd)W!EiU 1jkO=?0K$r9Wwl!JNc4T>e:έ*kfhUt}TV-O _ySa"3%tEXtdate:create2016-08-15T21:17:02+02:00%tEXtdate:modify2016-08-15T21:17:02+02:00tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/32x32/status/si-syncthing-black-5.png000066400000000000000000000020771352162771300242540ustar00rootroot00000000000000PNG  IHDR sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYsvv}ՂtIME IDATHǍ_he?xeQa4[(غFe$V $AFEha^TnPJipLw*’zޛ{<$8? d _ua5oJ_D;.i:;nh *usiEW )b3O팥' db bI]~֢bqqT%T8ܭu-K)V]ՙ9.\*pa-~Ԧ9x]͙5ikkը^kPͧIz6? |:YVfPFEj0Rȥ CVW *KްׄU/ wGqoMDOqS9O7PP;XM1R~ܢZ:xJ;>Q짂O|'Ajy*ݻm)pcTBoW{o49Z)M@u*c&vj/%tEXtdate:create2016-08-15T21:17:02+02:00%tEXtdate:modify2016-08-15T21:17:02+02:00tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/32x32/status/si-syncthing-black-8.png000066400000000000000000000021061352162771300242500ustar00rootroot00000000000000PNG  IHDR sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYsvv}ՂtIMEIDATHǍ]e)D_X-J7K+k&YYUY]DE]-a7EdHFDƖQ}I"ˌ҇, ظwzx999O@JtN# #8ZY2u(fC!:g;{qϪ1\ʽ3VE9.K-W~\mS1pNXZR9oN?;îD o}f,sqdY7QXbAղVP*DxU^ۘܧG!@r}ʗЯn0^o,EGz޲%Yv/YDLkԝ"yk|XLw$2ℙߒa5:`0Y"L4g\͊] 9~T*sKҭn q<ۿN9aXKzDC~2 " <2}.l.!˘$Ok1rXGk=ګ>TvY%7b}w+=9oq)` .v/y9cv*R?I4LW)G`L!`+5Ԍ37Jj٧lPG^ml͠*@@r"^Y_+Wܬ_;=rm.5cF1Xvc^ϧ%H^[=aER6,t-鳃0f8_2_/n\{=%tEXtdate:create2016-08-15T21:17:02+02:00%tEXtdate:modify2016-08-15T21:17:02+02:00tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/32x32/status/si-syncthing-black-9.png000066400000000000000000000021151352162771300242510ustar00rootroot00000000000000PNG  IHDR sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYsvv}ՂtIMEIDATHǍMhe]iŃۨhDGcHc*E1TjRP0'O^b(Rы7#%mZQ6ZC#mKQ%lgЙR) _?\dk>OON{RkṷbW՗#[`ûޥU˺XЏx+w=qӾd6ȟ&Ylx҅O v'6r-M&+AxF?$)h(h"\aMkZk($#J5 \$747b|$m 0:htSi9Y Fۇz)UGBH#qŝMΛ,s*]ۼ5V7ip3G7W^Vmu]pWei[=ew4N_Q6@$|ޜ3v(*4ָC vyqF+e 4FP -i¹XkQg?*uaoc0v.2\ 'MvZfu%tEXtdate:create2016-08-15T21:17:02+02:00%tEXtdate:modify2016-08-15T21:17:02+02:00tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/32x32/status/si-syncthing-black-idle.png000066400000000000000000000020741352162771300250220ustar00rootroot00000000000000PNG  IHDR sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYsvv}ՂtIME ;#, IDATHǍMhUL`)茝*袤5TR!EbݹPZ vBw`]Q @1ZjPRi~(- 'ŝofKL8;0)b=$Vg0eP=A-n {z;cSvX=}?柳찭݁XG,Ԕ tp#^8k xDL:vZ`il c5-%tEXtdate:create2016-08-15T20:32:59+02:002%tEXtdate:modify2016-08-15T20:32:59+02:00GtEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/32x32/status/si-syncthing-black-unknown.png000066400000000000000000000020271352162771300256020ustar00rootroot00000000000000PNG  IHDR sgAMA abKGD̿ pHYsItIMEpTIDATHǍOg,C壊E R@퇍@IZі&&Ikӛ)_R5&mEACU4!ZXم,+33s<Ϝ=o`= 㺴J Wf׹nTf'ל&[NMvDX0oʌ|3 kPv[Aű7&,AݺUu۸9yj6M7gQQL-8[֠˦=-&Ԍ[4kbuX]Dgtd UfE4{=p5dS8-B6lR!D>#oCd:YH eW\6m TK) r{U*eQ-ĮPo&ZGչfGMq,tjxCޱFqQ CZ6vDMr.r P^vg>MGOJ?Bc:5mUIERB JEР‡,BJ+E_.>d\(cQȭz56&oC=4ײ<ӟ PJ7=-+fn;hݭM٫x(aO zF',8_r)䜉WW YJ C96$CPM Cbt5uec#iʈ7b헎b>df=ysX(,hVSr̯ Ism,*}bt]/nP=yE1C.z3?H! %tEXtdate:create2017-03-24T19:17:31+01:00ws%tEXtdate:modify2017-03-24T19:17:31+01:00d*tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/32x32/status/si-syncthing-black-warning.png000066400000000000000000000033021352162771300255450ustar00rootroot00000000000000PNG  IHDR szzgAMA a cHRMz&u0`:pQ<bKGD pHYsItIME(IDATXý]hTgsf2|6Nk^ ZInb-Aȅ"E;MD/dD/FKi/[E@c.5̇ $:3'^$3s2Yv87?K2' l5` cݪRLZv-W&94ZY+e%Uvټy3۶m:4ڵk`sod~fF511 R)R) >*;3R;a lmmՃ$Inґ#G 0J>ahڵ:z%ILF---Nj}Ok'dɤl>0gR)cǎ9}ju<~$ƍZbs7`8$ibfQ|YBe>Occc2MSQ0m+޶%Ii>2Yhc%Pjb;::TS -|AȈ@P1PWtv\n߾-]| hB@xH$lɤuU-*%IK~. jA HfffJo]^/C$```ڼ`7F|rsx;wŨ@ `u3EF.\$y,:p@)& IΟ?o]G\Q߯u~KPI7v7==m= SG8k׮_*o2O>)n|v`u3g~z577S:קW_eիᢏ?Hz5/ ._\k(޽r--NilL2Oh˖-CY CreY(Ll6˓dR|>rzy)P6lSNf P$Ǐ%Isssҋ;}Te˖ÇRmm (32x9oK+͙$_yŞsOG+KkDI|Yv\.b$._vߪ/Oƻ~bMMMtClV')i\=68re_DxsFZ`0;kS z X-5sF['p*j>7`ӖO|9=W _`~{Ͽౣ%tEXtdate:create2017-03-24T19:17:40+01:00}%tEXtdate:modify2017-03-24T19:17:40+01:00ȘbtEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/32x32/status/si-syncthing-idle.png000066400000000000000000000044021352162771300237450ustar00rootroot00000000000000PNG  IHDR szzgAMA a cHRMz&u0`:pQ<bKGD pHYsvv}ՂtIME 41IDATXÝylT720f",̒4CB mԴ i4(AmԪIT4R5KQDB JBPF6kXM1=xlόgy 핞t޽w=>ᮇwώDY P(uBCSn[>z;ΨolOalt(AD  [⍀Ial=;RC(\Á$49E@!O6}@}c"L4s<.TQk!PPyl"J7h|~C EM*<<;"@\k|8#驻?λ-~4 j5B,>Rݸ 7؊c-:*7(Y[zMZoFI &8jE+ƺǝCW8'| |AiJd(|_E$y,jzZ{H@fn(0uJcs>꛻!;U{o].;S2A~%B1L4dPbӤ~hf9x?3I~o'%,潥9dG[wMȜms?Tɽ#8 O N}gD ]P0+{Z G- N< [>`B1}(EN~RSD[@; @[k$1\7E'iw>4mOJ++{ME6+ڪրhͳSiy\-@3e@ #?F3 eXznjv|OҷH2M@M<;&z,PHO>؋f i2я͵*籵x`;.SHD/2-xX1v.tId+B 'T+^9{~P>Fbh2D3)etb&6HQN3u}Q攸,etRC bYx6N؀*Sk4׎T,.dW?qӠIAdaˢz^o?=-.(bV*Z"PfN)ix8_z(˷Qg,'FY Fy n'(`jQ8 loa-fՌ,GkjKYS[3Cy;H Sb-Z3|?U(P o0/8Ù[ 0؉2XD" )`G aAYhtҾVbvp:h dW39Nw1kUGfl,oDJ6Uhmuo7x`Bak`ۯ> su㙚:M_O:nW 341~ |~9Յ~e[4D?gؼ''`^RLSo?[iڲZVqkn|s"E6g\_ϯa k]%n]; Y_,H9:Ža|}+'3q3r*?'+c/VˊY 9SMgivPgctn.S}i**mJ3~e#oUct2dR7<6%.:Qv7Ik/ 'ƤTytbpN^?Յ(rbE}X{)I2Nɏfzq18 /}x<=aC]f]znky1mbȊwJw܌.Q}Q_ ɸnl墨O 9\Z @+ɓA^wAQƷ޽P2%Dz.]qycB{8;*0D ek1eRڎE#Zy 4a(:ب%tEXtdate:create2016-08-15T20:32:52+02:00٫%tEXtdate:modify2016-08-15T20:32:52+02:00ttEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/32x32/status/si-syncthing-unknown.png000066400000000000000000000024061352162771300245310ustar00rootroot00000000000000PNG  IHDR sgAMA abKGD̿ pHYsvv}ՂtIME 41IDATH}[L\U rf)"ՖRR+MтVm11&j%1)hC_|3чmFPEA(u 0᜙iIN9{k-n`zJ"9~ރ7]}*zO>t .;AwYAySOHBX\`p wHȠ:"K 2@d3S*E-[l}"BabtMxh6K9{{Ji}Hh0w]PI D& ;iqan LIPY$Wx) $LcDtD,I^_C5`ZPL-.klNb^cI3hE{(!UFBpPD%V?%.7uDRd,elem4}(gᚮLuŃ'T|*pBg1׵H ]o$wĭBγ*nhj+Y9p;SxVgk 5F:$Iw#%tEXtdate:create2016-08-15T20:32:52+02:00٫%tEXtdate:modify2016-08-15T20:32:52+02:00ttEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/32x32/status/si-syncthing-warning.png000066400000000000000000000044001352162771300244730ustar00rootroot00000000000000PNG  IHDR szzgAMA a cHRMz&u0`:pQ<bKGD pHYsItIME~5IDATXý}pT&م ht$P[8X-T)Fd q*NURm@:|`K fw{YX{f9y/a>!j_+o$@Ooh0bpL^=z֒;{Po]l|]30$m8\42cC#mll$cJOX5EP^Fy閑<&:MA ,2"iDJ,oXMy tzw+p I$hZNǰL~/'H& |f~N0a-'>+JP"Kc0ʫG0/XBxuv"'H#p3N%($wa5ݒ(ALKlSݱDR+ޕpGo2 vrY.q^__n42''j 7 ^ˤuۙ].Q-O=WCY+~C>RJf8,Qa>QdHdE:Xi-_cM:6(Qen{L:bflo?Ðm)GCǖ^qPE8nv۷Ӿ-eUV @̴X.CW͌mO93/ JW@!;TUx;#p87zZݳ|\RךTVF;/)Y :VIʞoKXjj ^xQȮ3 S`-TOӎŒcLi>@'=~Ώ's璓Æ z/fgÚ5axVOxǿcӻ~///@-ZoL^@?,N+^\>q`斲22 ˗C](bxG#XGg})0pDnOęቸܙ1B)01w3팄<]ӌǾ~\`uO!Fa+Q%tEXtdate:create2017-03-24T19:17:29+01:0021%tEXtdate:modify2017-03-24T19:17:29+01:00o6tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/32x32/status/si-syncthing-white-0.png000066400000000000000000000021011352162771300242770ustar00rootroot00000000000000PNG  IHDR sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYsvv}ՂtIME bA IDATHǍ_he?3ʑHۙ[lA nF&a(E-r_ °EwE$p^DE6 -txJm<~xs~ݼ>}}7bJ7OGp{TzyŹ0kov03wZDi|.PFl|4t8lQբg'ó6cc4~gތ'āsHtj v&O' B ך˝Sq-X ;EWhok등@zmuj bYc|U` ]5_܀Uwng+U IcSKnqֻKp :3f]q{67Ygzy^ S:g<\5nܧ^"Wޗ/$~ ڢX94#O^G1\X:~`San1*k?/C+eyYvjI%uw{o}pIWzU%N`_g%~k(lC`{FάCb6垮" 4&ĺtO>pmpg > 4f78!WKa/8=vsb$'KOX^T\5_:z֫<,pZic#mx9U\J䍚TDfVs q_Y?pq/%tEXtdate:create2016-08-15T21:17:10+02:00%tEXtdate:modify2016-08-15T21:17:10+02:00􂧧tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/32x32/status/si-syncthing-white-1.png000066400000000000000000000020541352162771300243070ustar00rootroot00000000000000PNG  IHDR sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYsvv}ՂtIME bA IDATHǍ[HTagMw 2#2 BB Ḽ$./=A/YOvQ "2R 4Dt_9g2efosfUکJ1htnSO[Xh g=6.o "tg2gtQ:6Gʣ}[3(K[ZzfER( TG%tEXtdate:create2016-08-15T21:17:10+02:00%tEXtdate:modify2016-08-15T21:17:10+02:00􂧧tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/32x32/status/si-syncthing-white-10.png000066400000000000000000000021021352162771300243610ustar00rootroot00000000000000PNG  IHDR sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYsvv}ՂtIME bA IDATHǍoMQƿs'EӔ45FJR3mHD/ T^ Cm"PmAZ*H~>{ϽXo}{^RifP 聮j#Z>YF_bV ۻ*c"O̤*eE9,rmXP[F!2I+QLl-x=!z\179/}Uf(5 /".:A49{DemC fc!ܞbTHByAe޳}!\ egt8\1!~7#o10;RΪE(3snF#fBKq>ԼZ<.G]I=T3ry8QWUG=1:>z@|ݽVY"c6G=_6ȶ [1 |RA{ǥtlIe]$b:bQ7M~X=jWL2fqqA@{"K]OkkL:@o+!6z"vՁ)g^pk]Lj+ZoqEIWs ?,B m<Oqc<)l~mH%T>9\Qv+n"d(PwB 4Eq(mLԀJDŽjܨg6;?392[=tfVqo$UYa_iӗ.6x"ͻ]J`[q jfWuO}'IEc5ʘb1iU(Çcz[20@0jFro^hvIp)q>s%_3bw1ɴ3+u ޠpWU$hv#@_D/~{ ]c9ϯ=;~A:2f hJ".K53 %K(\A BƓQ(e,`60~*nj/l\rwu ڛP ]:׉jNċ9gU`E q=[Uew9Ysћ&R wy? x[|>l5n]:g]S^PSun#>ikOXߙs:/Zk(BpW4EEiIDO_%d~TP.|fbκ}&& XmNGAZkQnٯ#֠pF1졒F((h)721GDnl&u2~FWG1ZWp8wbZ1պʷ08wPOӽJ"RގukuQxnK Aπ':QUcoqD/w Ά#N >bA)5`^ %DpQnIRX@wV6(j` /Wd< i$Ό)W5Kw3@{QX6o^DcGQ ytë3yL >4Й< sГ a'435ĀNFxPI,)ڱnjp iu%3claa$7lC RRXiW{ƺKL| QmLMh,\!%hrvS-PtIND9bƛH228M 5V5D9zz n'%tEXtdate:create2016-08-15T21:17:10+02:00%tEXtdate:modify2016-08-15T21:17:10+02:00􂧧tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/32x32/status/si-syncthing-white-5.png000066400000000000000000000021021352162771300243050ustar00rootroot00000000000000PNG  IHDR sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYsvv}ՂtIME bA IDATHǍ_he?9;) K\h(˥%!Jka9fٮ*BB7fbuS$bV7QHF+Z(ùQԚy{޳s|?üfZ?̂]Yφ_6'&lfDitp"'gL3)GM^`͸RR"<^c9X47:op[R2<^X=p[ u~8T?LӷM Kuk^ Zsy Su2>TwLb$A@C[%AF>oZXh+79/ȥ:;ceW#Q"p#sV{܉7EwyN=dF9?)79KFbQ\@N}>JRZQ60 VuTh&Mt ( 8ɦi >:n䓩׸,#;qZ+fF%)rTx0ްGϤ"78jqӮr˼mF~cP ^p_*Z;(v8fCy"<VyG఑wk՚IU li-^ 3YջT|J $X?3'/.pv%;=Z;]Qq_|-&uVi+ǘa,Δ(򏪲w2dO3E/BdVh&Y%tEXtdate:create2016-08-15T21:17:10+02:00%tEXtdate:modify2016-08-15T21:17:10+02:00􂧧tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/32x32/status/si-syncthing-white-6.png000066400000000000000000000020671352162771300243200ustar00rootroot00000000000000PNG  IHDR sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYsvv}ՂtIME bA IDATHǍMh\eLk MTjSR,hZmuFTE6taApSDJ)B B) PQK:vh#1y\{gn;I޻;|== H++pz-IU'z35xʣWo_R-S4~ 񃪬[8_%!r41 p' 0ģAye{ReՃ{ehqMTY(x`~MNMp~j4!l%tEXtdate:create2016-08-15T21:17:10+02:00%tEXtdate:modify2016-08-15T21:17:10+02:00􂧧tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/32x32/status/si-syncthing-white-7.png000066400000000000000000000020421352162771300243120ustar00rootroot00000000000000PNG  IHDR sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYsvv}ՂtIME bA IDATHǍohqǿvm2f"6LŊ$,Z22d^/P҆7XyAJ-jBH#k"X\ynysy;Rt*4[Ij=5խ)ͤ侎cJ E\$Q[aI!q6F܊it8i;_:e4!:HuG4~SXeA6& Bpm=؃ HR,N'>xU'dw|\ !n4 1(3DuCE0#\~a4,]5q5nV(f3CT! a`0dO'i!C%$J"G0L>`L~]-TA,6@1.: \zG T8sfѻwE=eb6KE%@7F0ǚ_(r;hcA8=*&X} y \dSX,N Zn~#kb%bS+_Nit9<|5b}R}kטp~A2e0Pk݆xO/>6?YQ0^PK9L$9p:QO[6 vqncnݱa`hȯQ x#oR=eVK.vzyޓzHA4 tMoƃW!~;V⍰% |*GlE%Z[et(8zQ=}&zOlPǴ?I? 3qmUֈ5'dz)8f\"tg@FJ#. Tsw6vPY:Q`^8ٓw G!%tEXtdate:create2016-08-15T21:17:10+02:00%tEXtdate:modify2016-08-15T21:17:10+02:00􂧧tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/32x32/status/si-syncthing-white-9.png000066400000000000000000000021231352162771300243140ustar00rootroot00000000000000PNG  IHDR sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYsvv}ՂtIME bA !IDATHǍKhe3&^Dill!EJ!H[bjm,XE(. +AhAQt6U[*"PP Z&mS !̝;bw;盀bvK7 2LĬ8c-)9ɬ#ogrҘ վW=wzȿKq[_yAu)'?9 ;j|E5<[]ɟSjO4|O9͆f?*(/&;"|]T^%6]VPJTp@u:RgxDw%~ˑɈ9VyX_C5kux%2Oz/SCS7݌.VvObނ÷UqC9o qH/@{]KXZf-0,5F+&^,tƻZʬ9" p5d2ƀ\MB1!sa "E!<k Wt±MWPuμ Z!_mg#uiC5 HL7qV6KqmYg,^͜VT=eKZ0~z[ <>]Ag<^0XVY]lMG}/(vxMO("U)b=N:pV]qǢ+eŦ`I_M:bpO5)QEꄋA6zɭcag.V\1k%tEXtdate:create2016-08-15T21:17:10+02:00%tEXtdate:modify2016-08-15T21:17:10+02:00􂧧tEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/32x32/status/si-syncthing-white-idle.png000066400000000000000000000021011352162771300250550ustar00rootroot00000000000000PNG  IHDR sgAMA a cHRMz&u0`:pQ<bKGD̿ pHYsvv}ՂtIME!WaYIDATHǍ_he?3ʑHۙ[lA nF&a(E-r_ °EwE$p^DE6 -txJm<~xs~ݼ>}}7bJ7OGp{TzyŹ0kov03wZDi|.PFl|4t8lQբg'ó6cc4~gތ'āsHtj v&O' B ך˝Sq-X ;EWhok등@zmuj bYc|U` ]5_܀Uwng+U IcSKnqֻKp :3f]q{67Ygzy^ S:g<\5nܧ^"Wޗ/$~ ڢX94#O^G1\X:~`San1*k?/C+eyYvjI%uw{o}pIWzU%N`_g%~k(lC`{FάCb6垮" 4&ĺtO>pmpg > 4f78!WKa/8=vsb$'KOX^T\5_:z֫<,pZic#mx9U\J䍚TDfVs q_Y?pq/%tEXtdate:create2016-08-15T20:33:07+02:005%tEXtdate:modify2016-08-15T20:33:07+02:00qYtEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/32x32/status/si-syncthing-white-unknown.png000066400000000000000000000020511352162771300256430ustar00rootroot00000000000000PNG  IHDR sgAMA abKGD̿ pHYsItIME*UÐ#IDATHǍ]oTU 3ufXSZGPZ@CQ_L4ƟKwbzSRjBh) R2Bl/Ι2u3wZ{GY=q6,—a$,dp- a1+FD;ӵb1xI菎DByPqـ1% $xPg4A n:kJC`0`[Eg%)xҢvΔ^IGl~tb8C\qGC_sAh0ȐSVy߲ETqܘ*k38Ȍ^y{L`Eg( b;|LhM?hKϩT=m6R: &=YoUk[^r҄MpI(X(ک͈P1E#i9*l+aA5$J5F1)b WjL75(hڝTݧJ[֯hH7:g'3 ¬7њ,{΍NݺRo-`O>N6ft!Q+bb[D4a !Xmv טtҢOdr/b!+ aޙs;i unEa~捒 ,`%tEXtdate:create2017-03-24T19:17:42+01:00.Zl%tEXtdate:modify2017-03-24T19:17:42+01:00_KtEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/32x32/status/si-syncthing-white-warning.png000066400000000000000000000034061352162771300256160ustar00rootroot00000000000000PNG  IHDR szzgAMA a cHRMz&u0`:pQ<bKGD pHYsItIME318IDATXý]hTgM6dӋ1ً"v- ڤzc7a#X`. VpEѕ$.RkW,,B-$q2ə^LfrĤ,|yS#R%mQZIo%]c|}c/_ OΕq`0lUKz۶uM]zU=p`0UVi֭jhh]OƘ|߻'SZZ$$xA<OVl20X,Ψ>/_$֯_ÇD"ضmp!jjjDyy9IDӻ ˲B;w:ضٳg Xs]. ׁĦM7<\dO?Utܶmۜ0v@IcG]껺K"p84PZ:S_^Nuuun;`3ڊ$92C+UUHdͫWFGu%gSN9$}ѕedj/^L$)RZ2a `P_ar#/ $nbTUUrNޱ؈$.^6ܻ^LCVVB=s 0椾$p줸C] 1lhp?l†hB5^8`L`M $11[8sguf%H_R/̥c޽IZ9c>yL]{I_Cmq4=sH !%H^[o\K*ϋ&+XhdQ2$P,ٳ %sJSH`O5«%tEXtdate:create2017-03-24T19:17:51+01:00v%tEXtdate:modify2017-03-24T19:17:51+01:00EHtEXtSoftwarewww.inkscape.org<IENDB`syncthing-gtk-0.9.4.4/icons/64x64/000077500000000000000000000000001352162771300163745ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/icons/64x64/apps/000077500000000000000000000000001352162771300173375ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/icons/64x64/apps/syncthing-gtk-error.png000066400000000000000000000130301352162771300237620ustar00rootroot00000000000000PNG  IHDR@@iqbKGD77\ pHYs  tIME 8 nIDATx[y|Tսsٗl$" hVw[}>PZQ{ZVWEnT"(,L2̝a$%`;{~; AH~aЂ3 -#Fp+TaHSYH Ees Ƿo=o46|0GƢ*ΙRRzъxd )*9yyD@,QH.N%>3W_q eK^_Ɍ=; [@"2ÓZ-;6[x#'~3WS ` :v/u}tl6`;77FS69B^J&{شLv(+~ܘ%[ʵs0X`[`6A*P@Q(!oO J(57~9l̽n'tnB h0RH%Ba5N fS#X rmO ϿL>Ec9\K re<ӎw1pD g0o܀ϐ; (NxDk[= 3^w:ӲcX:"p 9 8ε4+?E՗c0Mx<9OI_~9^ӵAi33:a`}:t 3k=~b``i ` BA>m>SDQO׬=pݮ5O㼳 (~y'n R_@zݿ`jo)pv6!C*N? 9IZ>c6>D𼧸~10 {0w7+N휖 xB}CԈkE|2X۶sݱ\QJ-D9d[  OFpPZnۃD%H6ͩ #\rw`w5m[)J"+~۰?ث/nlU\,rjaL Y(JʲD\ w0!{s1]9]i/ztY N[TyH&9DA~2Y-hk@|RPqstEP?~>{,c6soP;7O^sH8s_W߼>Zhyn>t'D' gRI idkx$>X4K914R|;-l> ȑtd.Gd=YF+ʟ@ެ0+IF5H^q3F5v<$e6(0kw'7C^3ӂOxK(KpǞq6RQ%P?z1fܑyegJhY+?k`0#H}2'HacQ?=u:X:bŠ/ `ڈgv&`i' |%O?BYc5s- c}jߚ"+t'(qBf] ~\f >H>cXRE; N|̙L"8FWbAU/òݏÊEqLa 3HlLE:o,QD~PAFPuзm[f0h~0od34{n;۽0W.hT> '':Ѽ>pC#zL*/XUP0Rѣmu훐ڸމQ3ٝqx'`cBvvGJSWCP k.?U$$ #ݮoJp5rMV~.x}x4ؙ͍ص $Wb8nggD"LB%:%U`"tn`H! K?2APOa SW@=niZwv aq탪jjpYTf}XR9.-ק D<{h'c2!҇- Z`$v1c 9gs"B|w~6nDVcY9 8ؽ"~mB!&%7 ]Pv#(rY"W j^sX pDV0'{?83 U8{+>m{tlCퟮBHu!گZ7?t6Q@>!?h8x<2KLY Bm4l;ߞ1O݋N]BT2R:'sS\Y'cwER1&|%'1vŽ/Ѹ3' oB Sa+=hY$V~mxϻ S;s/bYVw:C [AZP,P-ִ=g2G u l:84z:_ ݁\ZQw>$\vz~vG[= de#N&ΥK+28i{rI5֙L~{DECYR8@$\KAS#=j;v:?Fc$<'0`u#tiU" EB JY%z.+p- S𳧶5gZf:m TCpBt( @E?X,xh~%#@3Qpe:;Lv"NlCqMO?n^;>N5f5G:0pYE ;A=^rP ,ssrp8{r O>;D`q(8J?} ^_cNgPEE_^H%eFQ4iRQ!"<$H&&N ϲA'As³$PYR9rI9gt݃C7b,bū{C1ޱlHٰ.5ڰvg cOhG@/ԵJw ~ ;`^m!ݱLuBƺrie=pA=XQwϵYJg;q2l-^sE=2{yD2}Mւd:ղ_-!gIQ T]v33NA_ )?M49I |KSTPS΃katbh^0e5[\خa:J4ƱӖ \c!G2n7s~e0j'h3 n`g3pfk`*Uw?b}yD| ʆk7L>I(4yLesi;(FPwwv7H/n ,:.7+#pWw| SI8rY`)DxIJ[- Pd%4ˆM?e" N~l w_~3O:;u]xW Ϫ؇אNuy`4%h"$GĒ_7ML&_Rd%tQ__b,K}{k`j3gρRVy@lkAe._$~TTqJt.PQ_ X.wu}M"L$fbN? `[ 87H*Gd9CCo!5+`v8( S@@Cܰ}JRK_;ҬчAoE^A?ٙE @ 恺= `3պfK#̶Z:3oLB)2*>^7[{Pe›Gt_]sӥe9T[%ZNKXuu߽K=IϬz2C.t骷Uצ;@*6b?wO8`$ (JjP}ɎO9HT;zfEruNfQmGSrLCkF[m>J[q,.&stQ>Ύnœ}p HF!ZłbknzRM'ks~Kq"iU)# logo copy $IDATx[ xU>U]{wWb D6 *3 >pތ8'3gq|>"s]TE wZ5^ҝt!﫯==?9`<!cJT7|] $BHU 9/Ȓoin7zO,;./;z:>TƇoH <'7#ou$Pr_ 0+C+ϟW;Mxj3o |㗼>[$}PB3Y\[;tuwH#h%GbF7IR)@/ ؁6l< `x@uFvmoxtb@O{ s͌4OtkF/  Eppp r  !0k1Ij )lG !A\}aݲ%3pN$զqΆ0T/Nd65VDa'`j%ǣ8'oD.Ǽ:K&p*ffwp#l`  goolz➻z1=yk_F纺=4Z;'IY -@|\g_ OD 44%hRmUVEϹ(C10@w6:ɀEA*.(f1 +g?8]t;џRatѮZ?)k wjHa_ GoңˏMDzk@?hN~vs]cJ]U吢 [c`C+ft*FjdaA.qWgPDD`:#A<"g!o$bM*DUQxb)\[0$Dl(VnG_7.;4xEi-~Ƃnt:#8<^ +2 $>,Í@"fg==tm؆\RtJ&ޞq{[wCmaL="ؿ:a .!ߠTTQ,3ѹ7$ūNz 68g TQl+qWhT 䆹 t"Cr\<4ԩPu j^k{?$Q^trR@Wc_Ȇǎ4{])N mZR=Mθ LTh(%4Z&~YCd).qbnf ߷`J⃊@0 Cpr Z, Ú+1vupBT""ɍaLmE qݼk<. )/iny04ƍ'p<<]t9p kȭ0"quٚ@2ɭ.6u*$/OZ`FVT&CäPwW9l'Ha@IzTi[>dIr;aCًI=pmhqrfbԿM͆;Ǥ/MKP,&iEM͐Q$WN@L* HՈS`5OStЯ#r\$L[MjEH9e u4sdĮW61eL(d;ѐ$4 'CvV gҘd$ElٜG.bRtV7HsB+GʟP ƌAw͇ENQ"  p㎖:Ww{aإHjjj@s;hV-C5*):slG|VPp}P 4mzL6 Ѯh=%+ KSk EՄb!w$HHC4.:(e1|hB<]ȒR_2ZdІQcnDуen3{/1?’β=aBLχ>xr1Df\b PnARu \t_&̅iT9N_}XLڝQmE F++~ي@S1z݄RG{t6_7#B[W$Iiߎ2XJdpN?iu >\1x>"LuY $߯jQ KW@O>%Cꅥ/'>M-쬱1C9)Hm[3ŷ_ƯWzJv\ /f'XH?!r7Q-bZjO+'^I$U|@|yh ݌ev9XqwapSt\YCpǘC p$j.K^u .>)Sh쩷UXf^GRZ}aJaP!E(eKfI e"TZ}f/mo^|Zhn^NL{+>d.|lK.Nv$Ѹ"ͽpcןVA4UWa*yܮ]62M=ڮ^@15y%Ó7O\1 _qi9*;yxWmk;zq-[z}CD9~H,:7eA68x^Ab䭍k A$rRk<^KT r Ԣy5Pze/e3Ft+d[rJɜ".3F󪘕^3)>a8 ܀e$g <q;[0ѳ5іCHBqOa.1yo i:NH2WqoI us2n,NI=fO4k8<_GׯWX8|OHPL}nnAWZa\C x`(]/B o9|Fqf *}\Ok#KD}s/LZx?rRޔUP~O0<εT$C9򬚳Nzǿ#bӺD-_4mxu|\BZ!#`H{o$R!ם(EG![,t6AesGN>) 9(QMhZ rfm1!>l5 0Z2NIENDB`syncthing-gtk-0.9.4.4/icons/add_node.svg000066400000000000000000000051051352162771300200600ustar00rootroot00000000000000 syncthing-gtk-0.9.4.4/icons/add_repo.svg000066400000000000000000000064461352162771300201110ustar00rootroot00000000000000 syncthing-gtk-0.9.4.4/icons/address.svg000066400000000000000000000072441352162771300177560ustar00rootroot00000000000000 syncthing-gtk-0.9.4.4/icons/announce.svg000066400000000000000000000037401352162771300201340ustar00rootroot00000000000000 syncthing-gtk-0.9.4.4/icons/clock.svg000066400000000000000000000044171352162771300174230ustar00rootroot00000000000000 syncthing-gtk-0.9.4.4/icons/compress.svg000066400000000000000000000100511352162771300201520ustar00rootroot00000000000000 syncthing-gtk-0.9.4.4/icons/cpu.svg000066400000000000000000000043321352162771300171130ustar00rootroot00000000000000 syncthing-gtk-0.9.4.4/icons/dl_rate.svg000066400000000000000000000041511352162771300177350ustar00rootroot00000000000000 syncthing-gtk-0.9.4.4/icons/emblem-syncthing-active.png000066400000000000000000000144301352162771300230270ustar00rootroot00000000000000PNG  IHDR@@iqsRGBbKGD pHYs  tIME "' IDATxyTչkkADP'8%ƙxU8'&Fc $q#**ʠ"S47 iZ8Y)t&"Y1uThHߒ ==J`UĈ#åHT(.^p ZXJvZ}5Kpn*/f fy5F, (GkW&9^) mgP}ݸnMkI4_3)*3U`٘0sNnm8 !2T –_fVތK{ʡ9iӚrM;<d ӉJۃ72'狽J^;OZ5bVjMU(]SJ<<y]`ZkiKlfx3]Ib6J+R†!Q>T{zx/,{[Bw`,)I.]gU [rŠC]O;<#{qҎg DApBI}Z /i-g$ǃ4iWqp 'qhHIGѝqڊZ5%$lI5IÊ8Rh7NNz v=e"%: |3n2IQTy .ݧ""֚ҬN#;6=Qh) KR32~^܅7Z<ƸMtzpv7 -8wx4\)=^zSIQ̩U Zfkg"óM}3Xr^`~ˁR٬QWg5ANbB3){?1@bQ&/?NF>n{bT:|\tnj?q??-M ݷK]g],Qkzp/liWQbI5"˨[x!`.n jb7n$Ӵ(/]Vb?H*\ZpvZNQM͹2UFHH87[bH*1$L)Q1y%Ys/J|F"]"͑u0 p{A${0ׯ/v0 6gOpaw'.ME5%'^5j",Ӆ!'Xmj/~lmN?Q22VspӲM^ng 8n6[o|QJ!cB'rOaev*!vb6~ݴ#ʲz4=[Y쯬doLtb $A-ĞX@[nvvh]K7Mk4ni߉)[I5y $ `HƆ<Âz4lL9`9,f/| 媾'}O?H`D8Hݍ|}32F'*|W_Ō?bن.l>+ "ځu]/=}τQnzVBǝVZJ1G]&G|vfT@EՃೞ4xMuTߴ&o޹r ,ܫ]!g]Վr"Z$]8rdE3 ZF~?Ic2sjYeo7tu~vv4_ I`bp /ױp$Nau"<ГqIZYʸAj-$m׭yK XT-lWv.]DY'  1m,5u/E@D;}r r`A~ئ~x %aˠ#ȹFLAOD  P[YF}}=s;~ ܿWrn]+zZ2![\FWkYi'BL"˸D3*OT Piܤ4X~HĄ1%xEmHθR# 3uҥKŪooSNᅿHPl_^B$AkJZYvV)VΦl 2T9j2YD.<9UW*c xՌ& P^fVI4==R9o\''4JA:ǐS biu F(<gw}yyq%X(-kq>|7@0e{1HIa@#$`ƳhFUngx ̱SS#p%m;y4R_7ן R<-R_]޾:Fv:7D(A Ҏ⇳j`jE0*L-r[MDSnnI0`@y5UubvgÝHy[^{z2_'*ֱ'[ĉ'LkpRXhR⨑!ΟR>ljάf]gArAϤ+ [%Ik"\޳g\_? gVZ9 :84U HasZ󝂪psw\e/^ RE{]JjG޺9 ~%2R/Ɂ&+%c:iע⽻#$GL"KkAD3.WΪk;fJƟ+GkГqe5"TFb \@ NDn !Hٚh"qsFrB]V m/[ ! 2A#o @ gJ>nKГVj %@ ^ 3|fvtu+?ߎDfӇFt&E;3orh.V|v}Z. OXA+\kՁ!M"FL(6ApCγAf\mHϹ_OM2xtmJi~4gdViJy?0̝g[u  =iBR!ߚgϦ+j0!DqP, @d\MQT-+cBo@yxFb߆ڶ0 KDsawb]4 W\|܃2\ط*UӃl>^kyWbH!/-(lIkJ NTJU3kKWnE >Nڢffz=E|{J4H:_֗rƾ 67Ú$v$ifJ$fw}M2ɘi>-ҏ!nW5p:3Yq<;{웑jqz(+s־5.7}f|q[afc^ILtߗc܆nZv Ĺ*"A, 2C1sK~oY5AH2Fiͤr?O*刱aFB'S?CP֑\g:6ӷ__*<_ w|=xуbԳ3rSx7fg} 3Ps>zd1`hݡ (?cQ^{mL`ejH J @b&<&)c7ɤ_>["a nEZ/'egU2oi% /`@k NIB:7AG1&!GYOGB3>%# "8#PDP9晢n6S5^AHPJb!%JDp՛?qW>=DK؝"rė=0:RT8/ݷmw\4Tv`($N0={ˇRy}oCʿCIENDB`syncthing-gtk-0.9.4.4/icons/emblem-syncthing-error.png000066400000000000000000000130301352162771300227000ustar00rootroot00000000000000PNG  IHDR@@iqbKGD77\ pHYs  tIME 8 nIDATx[y|Tսsٗl$" hVw[}>PZQ{ZVWEnT"(,L2̝a$%`;{~; AH~aЂ3 -#Fp+TaHSYH Ees Ƿo=o46|0GƢ*ΙRRzъxd )*9yyD@,QH.N%>3W_q eK^_Ɍ=; [@"2ÓZ-;6[x#'~3WS ` :v/u}tl6`;77FS69B^J&{شLv(+~ܘ%[ʵs0X`[`6A*P@Q(!oO J(57~9l̽n'tnB h0RH%Ba5N fS#X rmO ϿL>Ec9\K re<ӎw1pD g0o܀ϐ; (NxDk[= 3^w:ӲcX:"p 9 8ε4+?E՗c0Mx<9OI_~9^ӵAi33:a`}:t 3k=~b``i ` BA>m>SDQO׬=pݮ5O㼳 (~y'n R_@zݿ`jo)pv6!C*N? 9IZ>c6>D𼧸~10 {0w7+N휖 xB}CԈkE|2X۶sݱ\QJ-D9d[  OFpPZnۃD%H6ͩ #\rw`w5m[)J"+~۰?ث/nlU\,rjaL Y(JʲD\ w0!{s1]9]i/ztY N[TyH&9DA~2Y-hk@|RPqstEP?~>{,c6soP;7O^sH8s_W߼>Zhyn>t'D' gRI idkx$>X4K914R|;-l> ȑtd.Gd=YF+ʟ@ެ0+IF5H^q3F5v<$e6(0kw'7C^3ӂOxK(KpǞq6RQ%P?z1fܑyegJhY+?k`0#H}2'HacQ?=u:X:bŠ/ `ڈgv&`i' |%O?BYc5s- c}jߚ"+t'(qBf] ~\f >H>cXRE; N|̙L"8FWbAU/òݏÊEqLa 3HlLE:o,QD~PAFPuзm[f0h~0od34{n;۽0W.hT> '':Ѽ>pC#zL*/XUP0Rѣmu훐ڸމQ3ٝqx'`cBvvGJSWCP k.?U$$ #ݮoJp5rMV~.x}x4ؙ͍ص $Wb8nggD"LB%:%U`"tn`H! K?2APOa SW@=niZwv aq탪jjpYTf}XR9.-ק D<{h'c2!҇- Z`$v1c 9gs"B|w~6nDVcY9 8ؽ"~mB!&%7 ]Pv#(rY"W j^sX pDV0'{?83 U8{+>m{tlCퟮBHu!گZ7?t6Q@>!?h8x<2KLY Bm4l;ߞ1O݋N]BT2R:'sS\Y'cwER1&|%'1vŽ/Ѹ3' oB Sa+=hY$V~mxϻ S;s/bYVw:C [AZP,P-ִ=g2G u l:84z:_ ݁\ZQw>$\vz~vG[= de#N&ΥK+28i{rI5֙L~{DECYR8@$\KAS#=j;v:?Fc$<'0`u#tiU" EB JY%z.+p- S𳧶5gZf:m TCpBt( @E?X,xh~%#@3Qpe:;Lv"NlCqMO?n^;>N5f5G:0pYE ;A=^rP ,ssrp8{r O>;D`q(8J?} ^_cNgPEE_^H%eFQ4iRQ!"<$H&&N ϲA'As³$PYR9rI9gt݃C7b,bū{C1ޱlHٰ.5ڰvg cOhG@/ԵJw ~ ;`^m!ݱLuBƺrie=pA=XQwϵYJg;q2l-^sE=2{yD2}Mւd:ղ_-!gIQ T]v33NA_ )?M49I |KSTPS΃katbh^0e5[\خa:J4ƱӖ \c!G2n7s~e0j'h3 n`g3pfk`*Uw?b}yD| ʆk7L>I(4yLesi;(FPwwv7H/n ,:.7+#pWw| SI8rY`)DxIJ[- Pd%4ˆM?e" N~l w_~3O:;u]xW Ϫ؇אNuy`4%h"$GĒ_7ML&_Rd%tQ__b,K}{k`j3gρRVy@lkAe._$~TTqJt.PQ_ X.wu}M"L$fbN? `[ 87H*Gd9CCo!5+`v8( S@@Cܰ}JRK_;ҬчAoE^A?ٙE @ 恺= `3պfK#̶Z:3oLB)2*>^7[{Pe›Gt_]sӥe9T[%ZNKXuu߽K=IϬz2C.t骷Uצ;@*6b?wO8`$ (JjP}ɎO9HT;zfEruNfQmGSrLCkF[m>J[q,.&stQ>Ύnœ}p HF!ZłbknzRM'ks~Kq"iU)#Ƿ8s!1qsǔ F0-HhV;;u5f+gvFvvVV4TT 6-PÌ(P($!!$v.۹vb':tw{{lUTTfk)(((X,FQK$I@eȲ,a! }>OfgglxhII?t:VլH$!2$I$Ii#IA@Y充;MLL'g h,ܾ}vlڴɬh "dY~(EQe^7:00pg@`PE#"DQ|bC`iiIzտ}Z ߻wjyG"$IBbii)W_}tT4]ʙ͂ I#%j:@$bjjj?>1==PSS`8[um"( :ffz "(BF!2hEQGՂy/x믿K/}/K I`ZQZZ2l6dggI,$Ij$I0 7ovww\HX,Yny$ ӉTVVe٧wAvqmBU`YS~vxSa",zzzΞ=[ƌi۶m7<ϯ`{f;v A-/Ĺsp]qPjt+4 $D0>>>,..P=qV^x$IbllL}FExljjܺɩ}7OQE,ٲ,y8p I25088Yj3^iHIܹs,bӉ, !HtP(ZG)((!̷a$IFww7xF|7Xр8 baaeeelݻwӊM(..nD"! @mm577Hqٳ/r ]]]uZvi]`p}ܻwUUUl( wUM$Ibъ}bbÌt4 A8*sCCCOmgh4all .Kp(XVFB!pH$PTTT144T!It:N8ѨVWWs'>ELNNZ. uuu<|>HN#522[Ntqߏ\u… NWax<]SXX'NpypVu o L+ y[lݻO•+Wl} Rl۶-#P4MEA$,K2GEQLtkk8'|R N1ۏBl6g/y%IlNS|>w" i=ztE˸pHTͲ^G0qjT理$IhA+IR& U)$ m((` ՊǏ,%zܸq,˪Mh4p8lr%I0M$.|x\nVlCQQ<fggqȑepIqDQUz}ZB$AgR8ɞBn{k^xk'&&pUJ^1y6VHh13EA"|x>DJ)p!tvvxpɞr%wz(噤D"w}عs'rrrH$Ti|ǯk<"Eزe:722jT<*//Ga "|>BKXss3ꐩLDMMM).i^w*yIpݝ hZnW~;_NNNg,/T6|iD"GbQ]NNJO;V+**~j04Jmy֭[(,,fã!FFF6<7H$D؞eYXVTEQj~Uٹntww9$I"JW\9&} $ ejq%(2o,ƍQv؁fDQX,qalT)?Fh4:R }[n1M)(σab@```4MoXDyF]]---p:Dssz͛7q崎$I|H$N͛7,OSq\.t: v7HB$0|>vءvbntjKNj}?([*KFq-oQmjܨjx-tuu!0A@\vG) ,m_4McnnuuuSSSP(ǣF ؘR䝞?>ma=88< <>-))IVV\i4LNN"YVQOk#Ș ҙ:v1;;[Jjb,`J̔\lΝ;׬FQ\t cY|͕''OF+EEEJ k9nGvvnMMMC<G0D<W?HI*4A (nK/ǏdMЮ][ni3e1>>ŋ;2H4ꫯs8J08p߿"޽{zjBQEaL&pۍ7jHΜ9SżO#}С-[d>@$ ? 3  ,  z E'%<: ;;(  - - '#  <<<- .9; |3 *   3 4"! !        2:< #a  3 , =: = ' %#  ;;(- -' !<<<-  .9; |3(   2 4" !!       2:< #a  3, =: ='%#  ;;(-Z6k~M.&ڶuf^WPONSY`mU)hcK;2)"$)0:BVk֠*$ykM8% !!"#!%5AY$ QjH. !"#$$+?SM/ !"#$%&%+A\G&a< !"#$$%&'%4HEQ- !"#$$%&'(*Bj]L" !"##$%&'()=\ PJ !"#$%&'()*))<[U =<;\_R. !"#>^֕%aoF1)*++*+4=<<;[bV= !"&G YU8**/;EDCBA@@??=<<;:Yd!nL4 !"&LV ^;BGEDCBA@@?>==;;::XghgI3 !!"#H5XFEDCBAA@??==;;:99Wi }eJ7# "!:MHDCBAA@??==<;::98Vl |nP?0+b끇BBAA@??==<;::987Un VΜcJuBBAA@@?>=<;::9876Sp x|(YACAA@??>=<;;:99766RsZJtHDBBA@@?>=<;;:987665Pu=5QrtFBCBA@@?>=<;;:9876654Ox:0Eh֞!LȍS=@@?>=<;;:98776544M{;*<]L ^==<;:997765443L}; ! $6OpvtjB:;:9977654432J; !!""!2DfϠ#JnjM59776554321I< !!""##$$",;ZNZ565443211H<!!"##$$%$(8Moysg;132100F< !!""##$$%&4Bdʢ%IƋG-00/E= ""##$%&'((&.@]@V.-D= "##$%&'((:brdJ=!##$%&'((,DZ HŚ>!##$$%&'(2SMbc>aʫ, ?"#$$%&'(F 6761D~S ?"$$%&'()4eJ7765416cH ?#$$%%&&''()=k\6765443204h-?#$%%&&'()*F^57654432100.5?#%%&&'()*5HDh! EO67655432100/.-)LF@$%&&'()*)EGFEM?Vr;87654433100/.-,+*]XA$&&'()*+3HFFEDALmȝԸc=787655432100/..,,+,B$&&'(()*+*?FFEDCBB@<@KPOG979987664433100/.-,,+)ePB%&%7<'())**+,HFEDDBAA@??==<;::987655433110/..,,+*:D%*D|9()**+6FEDDBAA@??>=<;::987655433110/..,,+*&D1SI]1**+*@EDDBBA@??>=<;::987665433210/..,,+*'ggGhO-*++FEDBBA@@?>=<;::987765433210/..-,+*)J H-++3EDCBA@@?>=<;;:9877654332100..-,++)=ĸ</H.,++;DCBA@@?>=<;;:997765443210/..-,+**93H/+*@CBAA@?>=<<;:997765443210//.-,+*)? 3Q5*DBA@@??=<<;:9977654432100/.-,,+'N  b;CA@@?>==;;::98765443211//.-,++)o   F@@??==;;:9987654433100/.-,,(>g  Hj?>==<;::987655432100/..,*4.!   #%thB:;::987655433100/.-(=|P!%"    "%'!mϖZ=567655433110-)9\O '$"   !#%:y]NE;99:CN\p'"$#!   Aqh5       @@ Background     @@@@"&&") $&'&&%%&'&$ $&'&%%&''  "'&$$%'#!&%$$%&#&%$$#!!#$$&"%##'A^wzaE*##%#$#"##"7r{>!##"#%%""U`!""$$""R_""$#!!,ƊY:(&7T7!!##!! T? 8f!!# "  w) "t  "!  6  +  !!|  h  !t\H MR>mV! %^GS  KEH9>E R, ?& ]G+P   B    `03e#+g F?DC-^  Z,  )h w  j! 9xPH   r l-  j$ L       +:K^s s Sd-X  " M9 ̹y[F  ѾjVC2% F     1o&B1#{,  Bo Xt +" yN;d %  1 i I  Ɲ fN  4Y KXe e  m 9 l6> X%        3A  8     ԗa:" 6Z     .]׃   1<#   MΘU     8QcmmeT;             $  ) FlqJ%).fl6$V ` doLZ*DǽRbкsvƮ wū u·㶩_ոǨs@ѯ թS㳦ܩΧܧFԣȾ\、ϡM壦ꥦ(ӟ[ם뢣 *=䜢N_֛骫mzݡϜƙƵ󲗝͘񝜝覗З󡕛۝Ж˛ߖ˕▚ÔҼ闙x"ٓ]ķ򛗘j=ƽݒM,|ӏ X܏k*̍󛑔=ڎ䐓搑_ʊՋ 򗎐j 𐎏XȌ⠆/B˘ QZϤͅj kͳ⎉x lٰÍx kϠw\ͬhD톂O$v}. JTZb P{ ~W$ 2[wz_8) #@Ykxyn\C' &TŬZ,)8{շA$h t yԇ]n %3Tey   wQ h"Yuc4v "7Pf}܏٭м£"֮ؒUj'<{ڕ;Uۆ-ؗ-ҾD` vٛ  ְ ְ ذ ٚev6׼F o~$Ε0 &y /$LκU)6aǺf<Z .*%!!$&(* , , /6778     ?           7765_5 8+ :) E'P%]#j!f7<n&!n,&*v*=K8"Zsyncthing-gtk-0.9.4.4/icons/emblem-syncthing.png000066400000000000000000000145741352162771300215670ustar00rootroot00000000000000PNG  IHDR@@iqtEXtSoftwareAdobe ImageReadyqe<iTXtXML:com.adobe.xmp logo copy $IDATx[ xU>U]{wWb D6 *3 >pތ8'3gq|>"s]TE wZ5^ҝt!﫯==?9`<!cJT7|] $BHU 9/Ȓoin7zO,;./;z:>TƇoH <'7#ou$Pr_ 0+C+ϟW;Mxj3o |㗼>[$}PB3Y\[;tuwH#h%GbF7IR)@/ ؁6l< `x@uFvmoxtb@O{ s͌4OtkF/  Eppp r  !0k1Ij )lG !A\}aݲ%3pN$զqΆ0T/Nd65VDa'`j%ǣ8'oD.Ǽ:K&p*ffwp#l`  goolz➻z1=yk_F纺=4Z;'IY -@|\g_ OD 44%hRmUVEϹ(C10@w6:ɀEA*.(f1 +g?8]t;џRatѮZ?)k wjHa_ GoңˏMDzk@?hN~vs]cJ]U吢 [c`C+ft*FjdaA.qWgPDD`:#A<"g!o$bM*DUQxb)\[0$Dl(VnG_7.;4xEi-~Ƃnt:#8<^ +2 $>,Í@"fg==tm؆\RtJ&ޞq{[wCmaL="ؿ:a .!ߠTTQ,3ѹ7$ūNz 68g TQl+qWhT 䆹 t"Cr\<4ԩPu j^k{?$Q^trR@Wc_Ȇǎ4{])N mZR=Mθ LTh(%4Z&~YCd).qbnf ߷`J⃊@0 Cpr Z, Ú+1vupBT""ɍaLmE qݼk<. )/iny04ƍ'p<<]t9p kȭ0"quٚ@2ɭ.6u*$/OZ`FVT&CäPwW9l'Ha@IzTi[>dIr;aCًI=pmhqrfbԿM͆;Ǥ/MKP,&iEM͐Q$WN@L* HՈS`5OStЯ#r\$L[MjEH9e u4sdĮW61eL(d;ѐ$4 'CvV gҘd$ElٜG.bRtV7HsB+GʟP ƌAw͇ENQ"  p㎖:Ww{aإHjjj@s;hV-C5*):slG|VPp}P 4mzL6 Ѯh=%+ KSk EՄb!w$HHC4.:(e1|hB<]ȒR_2ZdІQcnDуen3{/1?’β=aBLχ>xr1Df\b PnARu \t_&̅iT9N_}XLڝQmE F++~ي@S1z݄RG{t6_7#B[W$Iiߎ2XJdpN?iu >\1x>"LuY $߯jQ KW@O>%Cꅥ/'>M-쬱1C9)Hm[3ŷ_ƯWzJv\ /f'XH?!r7Q-bZjO+'^I$U|@|yh ݌ev9XqwapSt\YCpǘC p$j.K^u .>)Sh쩷UXf^GRZ}aJaP!E(eKfI e"TZ}f/mo^|Zhn^NL{+>d.|lK.Nv$Ѹ"ͽpcןVA4UWa*yܮ]62M=ڮ^@15y%Ó7O\1 _qi9*;yxWmk;zq-[z}CD9~H,:7eA68x^Ab䭍k A$rRk<^KT r Ԣy5Pze/e3Ft+d[rJɜ".3F󪘕^3)>a8 ܀e$g <q;[0ѳ5іCHBqOa.1yo i:NH2WqoI us2n,NI=fO4k8<_GׯWX8|OHPL}nnAWZa\C x`(]/B o9|Fqf *}\Ok#KD}s/LZx?rRޔUP~O0<εT$C9򬚳Nzǿ#bӺD-_4mxu|\BZ!#`H{o$R!ם(EG![,t6AesGN>) 9(QMhZ rfm1!>l5 0Z2NIENDB`syncthing-gtk-0.9.4.4/icons/eye.svg000066400000000000000000000043501352162771300171060ustar00rootroot00000000000000 syncthing-gtk-0.9.4.4/icons/folder.svg000066400000000000000000000033151352162771300175770ustar00rootroot00000000000000 syncthing-gtk-0.9.4.4/icons/global.svg000066400000000000000000000471521352162771300175730ustar00rootroot00000000000000 syncthing-gtk-0.9.4.4/icons/home.svg000066400000000000000000000036371352162771300172630ustar00rootroot00000000000000 syncthing-gtk-0.9.4.4/icons/ignore.svg000066400000000000000000000025451352162771300176130ustar00rootroot00000000000000 syncthing-gtk-0.9.4.4/icons/lock.svg000066400000000000000000000026211352162771300172530ustar00rootroot00000000000000 syncthing-gtk-0.9.4.4/icons/ram.svg000066400000000000000000000123271352162771300171060ustar00rootroot00000000000000 syncthing-gtk-0.9.4.4/icons/rescan.svg000066400000000000000000000054161352162771300176030ustar00rootroot00000000000000 syncthing-gtk-0.9.4.4/icons/restart.png000066400000000000000000000013761352162771300200020ustar00rootroot00000000000000PNG  IHDRw=sRGBbKGD pHYs u N{MtIME3 iTXtCommentCreated with GIMPd.eUIDATHUOHa~l]6>\& 2\ a .;ym,6AZwA]Hup >>+]~AoNJ๼<^FD8ϸs_҉V"gd~@Eف+-1xZ?-_GS 0}6y!!~\,Iü.n{TK>3{2@goG7fbۮ !5=\D\n*^y9ISWfwƢN!p>{tSVe83E *Ulp7^V*̴`+%> x6FTV_>xYՠr>Y' v )pXVf 勫dfzCG:G[P׉Bй0i05yihV^δy=# 'Vkߦ4Px<m ̱x4 `b@L~3($SU7`k3bUBC;nC -ZO _rry]W O7k#цIENDB`syncthing-gtk-0.9.4.4/icons/settings.png000066400000000000000000000013071352162771300201500ustar00rootroot00000000000000PNG  IHDRw=sRGBbKGD pHYs u N{MtIME3 ^iTXtCommentCreated with GIMPd.eIDATHU1lQ;p.1^;p\`AsACS0՚L4%vb.-&XKYX#6iqZƻC} /}#"Lr]ÄUcv>C6=h?4)9qa]w>/b~3t`b\ya3!0h9a״ʹ ެzv U>Dshy`ZeSw |9 旊WUmnB(xXqSWCUSdg/_Zu-zڏ3p3wY7d&p5Z9WЭ;pk':0+EmXBln4SSXc_ԗ xe-է@7ݍ6FFagvZ>^14Jrk&s_c>ҙ?IENDB`syncthing-gtk-0.9.4.4/icons/shared.svg000066400000000000000000000036411352162771300175740ustar00rootroot00000000000000 syncthing-gtk-0.9.4.4/icons/show_id.svg000066400000000000000000000026501352162771300177610ustar00rootroot00000000000000 syncthing-gtk-0.9.4.4/icons/shutdown.png000066400000000000000000000013751352162771300201700ustar00rootroot00000000000000PNG  IHDRw=sRGBbKGD pHYs u N{MtIME4CKWiTXtCommentCreated with GIMPd.eTIDATH?H[QWڼ%qyq;7=tJ ELv ;S#BD`2\ YL4@|Qd˒z:ZSKC{r/s~w("Sg<n1%hXѸ5# e,5%˕mq|]r}e֒ħSl\|"[F.[q۟ ؚͭQiZ^rx)Vo|9) \;3CmvC|t|:+-y)Q/` +ΝdodxDa)'#!/pe{ΞEQ!՟%&V,u=ϛu*A7ujwcA,;EM7d TWlXMvSo?pnPŹrY߽rZ_vy.6Py„r| QJـǤh"y00%_D<~R C Ðιj Kn!b9/1hŤErJ@+  )TPhHZRA_"q *- TjQ'6&v3_v9{>`KaoiX ` ͆2V#: " 'OObmRiR]o߶{v)X HVE7t1a+%l>&vLfjnpI288vgz<Du'e|z4:maT>O PG_#<<4=OGoM#w&8rd@PtD- L08ZX(yLq8= BnOGy/TKd+I@oM\C&ϩ|ȰO>49,f*?F[(ϝB 9Ym+^7fL(&LoO}qrskmQNQa,K"Eر*Hks|] @2sU|4MK׷vC|h!al:!2*2RbϦ +%}X7͸llҤ#eOSmfךFv% '3 e+3}^ IJ:&?^̮ t UBGESbbT /oZkxZfݫB4-֧#mQ@\gUu}RhaD`?~slR rJ\1wP[\կX~2@mA-Req^MKȗbhMIENDB`syncthing-gtk-0.9.4.4/icons/si-syncthing.svg000066400000000000000000003213321352162771300207450ustar00rootroot00000000000000 image/svg+xmlsyncthing-gtk-0.9.4.4/icons/st-gtk-logo.png000066400000000000000000001231411352162771300204600ustar00rootroot00000000000000PNG  IHDRoilsRGBbKGD pHYs  tIME 26 IDATxw\Wy鳽*,K 1` x@H{IH#!H(18jc-Yj{^ީ;;ڝU13-;{T*UJURT*UJURT*UJURFT$\ X|_TGjw,zuUUKT]xT5ϪT,\| 9 (:|W*U9pp P5| hsUryW::Uʙ#˜)R/(R#n]o)π xRS#bcQW^ ] *q_bUJU*,>&l߼+{rvl'+ ۫B67$$Q5<5 #@d$GN0 Mdl{9~U}U@J.9gWRڤTH !"vWD_0<cRBUJjVw^ɪ?5 :  * t~ࣷT%.h/*0T*hq9vvşb;^ 2tҲA@,$\ $o9QKh U`o_rZ$R.U i!8%ALDff% >r;}ER 1 >7yLԉa`aiI[e C2NT RםVA+*^Gͭ_ W$1+: % RJ RO!$XGOV 1 _&R^V; $ .`]  ۽Ala+1>đ5/W* ֋HO2$[y% A' lҥC/W*u PU@;TMؼV/l*(H,8봁VcDX27A1M_g_", NZU@Z>?Q"V;oe˲OɃJ ,4 bJ A:܂BИVcsSJݕPre)lS{l&oO:^:](vo JkJ7{B:ĩ _ǪPR7`{ vVୋֱ[9J;OڏEewIJw ',V_}HUtQncWBYpn?Ħ7BI0 &4T::]u:րF_ŭ)@WAW+`Yq,i?HP" LR FLb3`^ȤRtF,dO<7+ (o\78fBdlVmnWRfeTl PԸV48f7  ^iy "*;iD$86浡$} D Ek2B`<跱,ڇ]YQיx OaUsf[/x3ֶRmr+,Xfcs\yTtY0"oLsI;M '|Z2$)S=$O19Y2yV c* WᬖlG]`]]BW}01$a ..r.])8@%'3$$=awXXtBui4xYTCgS-hPsUQ5'E]XtCdŀ|̖nY3e<򿟡3z,?>p U@8r.vS+&M+_0ʐXѠA.\+y@Wh +=<ta%KxhGWixYd&.nb&ZRDq"`iɾHwaaLEMfq1_kX]3JalAE 7m=Yܤob8]IF1 r|.Sr81]2ew㓹bpPRY:ٱf1 4UL3sFOɾFҲ{GDH>z7ׄ'+quWgg)î__P1 XYrNE[;8%HɦVFT=Di]!6{dD.$-7©(I'F¼3BHRֵ-Dr=B[@ë F&1\;@ D:"/^AUfޣ{N5ݷގ8 skaW%mfxgaeٽB fkNewOdeE@XbQN  qgD I0aTEZ֧Ynĭ*{UH[+&a&KDK5+4\ތݥ{;SVvM?@m?A{&r\'^~de6q6tkK~AzҒRzF`8Jh?,mX N,tx#lOxTRX9,0iaVƪ^1љ{NJ˜Ut7˹MTaz 5v`c}%?B(BNs%&XN+\H 0ӎgSqd2²jR} E['696"OVSXe' 7\o(BltO31ydC,wcFuP/J)lD8ǀZU@I&sc*T,h_7>ؤW4|.Fx ۻaY[%nXDRvJl~,#IrbX8DGG"tdKS x$E SM>*I,iZce{=F6"E]-*`JONg' Tk+!/uq'Dmo7}T:pGf@1 K˒mW]x۟7g_E .opqo^Z| Uh jtU"R,i :L@)RqR0Z/A(Y4}(o,J,iKF˒u%-^DCq|,hD#)"S7E~o7| =rbg.M c+p$ڸG\rlXvH 6y9~vtzXTqi"TH<=b'( X3B0V:x,D<ǥ;)ZIӶñ~nc)UlS &aZ@)b!Q$][Ďewy3K })os3 c!p?.6\q{(+/ ehOFey*C%k Mg"Kd#ˆ#4LR :M5^/ХIg܄.ࡽޏ( Lj$3S#%<:k7.1ko"Izü2"f$<8o9.CMxrAjz=mѹmS,q̂w8(X1qY&6_~ lc&O'P~65K}\˲z;'I(;g@t * nxP9"0e.՞&z1L#5[`Pt?0e.Y[Ƀ׵-eҲz&uny)*;<\Ǣ(>ie$d({G74r!J#LD̂0K25j}ڤyj^m4Ua(c<̦3Y"XVum+Y)ʜӄX'{С *(i1 K@|ZڮҕGZRZh/?Aނ]π5T,9y߳ݟck,\KT9N,G-,QIyN5aZ!B_Sއe.G+gNLӴ韈* M5^n}RIY9+Z)x\Q‰4U^&gfQ| :k—` ;{(=8i͏P37EUZls簂0roc|#& :2|Rt$Wu8ՃI;PfWIM 蟈! -PEw2qV2F:2 vzk7ݧ &flWQϹb"mT$xTzXƣM4Iq=ǒ; E ԣ}LȔf<ȑ"*\cp<`(aZ,y i@ȿQZҙ@w5d8@$Q߭LM^>>̝?Cqyу (./BQ8[x뚨ꥋ7qT"2 x#?.FRWI_[n]* NZ( (veM=Q ۇGuyJH0MfƵO ہ: Kֱ='qC$)弴P,,ktѵIӱQ8Y=Q>4ѡpn(*7GhL3:(݅ߢ 8h`0'i,5Rks$á8(ȷJ]GNcHQsoXH=nBN2EE@p9fCaaY.hY@R䵦ė[M1b ŵZ젦.N27b6amÕl+,z' [nozډ^X5&u^Tbr+*4'2Mgkh&T1Ab d,Fbw5"s1H3g"29WݣPC4r1MY1$&}1C;u (^v64\n"F']$C&騡Ƌi韈sl8X,i jQԩL',T2u:o4}1k8rTn!]DG$fR+_HDDڴ=s@@C T U@_N7 rê tXfi &Hx"mqnMϏoۛm]JFgsAݎ@9cv+ ,=_SARR*D'-#GhzhR'.{]%sMLjLBաy6Xwp< F*/\t(;i&b\KZ0k1 u#C!zǢyIH{$BS/iNC)rmr\(.'7PCŵ+\"5֣) :K\5;0(mk \oBaVp8O/Hkg4ѡ)ÚPIWL6t;[ôg,\𱶫kִrs]Ժ՜G$k\*K]lU« biIP\)akB !%2< %؅5 9كxA}a,] (3J`'R I)iAuUMA]-5NRI>,՝+V@Fl+`jBػus5 EV}%?B3Ȱ$?NS|[)4{γICRe!4Ҵc" ݣx]*֙:‰u$"Xm[:Z4YSn#|[i9B.K,BCUUztBS'+3E1ʲɴgtUaX·i"we-A֯s+'x IDAT0nMe6v5)ץm4e1KqxH>0̙8!SN&4C.v{3dm퓬'BuBPdz?HpE6% `#K0}dYIG&KTo @`Y fØ3\\%ATUDr /c$xDQT(8GҊpv`e[ ]&b]!Td)V8IZ8CFI~ub?":$*r k$ZfdzyΉ(d*ghmVn؁:03Q=2sIXPssg?M$~ .V5 i7HdBB"b TZ`Yv+[y֥\G/b3 /2xp܎$T L;]ū@pWߣuOv͖Z+c4LC1<v'{?á8%Q=~4:c7{\B` Iwz{w?]N` VkfmLA[SPb&l2j"X-\e-ncs*xq0/&%:K*!u ]-)izA=E+Zh|⚦Y]<ӂZ"5[u:9oQOPt`(g!vsGQ^ӈ;斔 PHI!sNT #x\a| ıWOv[Yr'._,$2S~)fNH)$$" S}U ;i͋U(\2ӦWu%5n,xWz52MS UQPۼU5VղuY3]Mn?awd⌓Ȗl-T]C4/ssٵH˜Rh]9a.\º,Z,ҏDyS2 Mj"8G9j vEj6A2둰r*GJRij ]{)fzVײ5Hk^3b&Dž3'ȋ6H&c#=6ʞ#OY/(HT鰪 4eI#]Ml # Iâo"GyxK64q9mE ~ppž' y/"hB,L=e84}u1+(Z@Lj/ waWzV>v-W/Xl˒ <54DJέjtk*vԕs8"al,2 - 3&=>hE9>%NHgq)Bpk4\x8q=|,ɏ% 4UӬtCH #80PhnZT9c銠ùul]Ć ,KO 6!?8=Dl AZm˚jNkIx$K'u`'ql$b} oG K$LYLȫsW_'re@ShXSϖzT9QeإӧڸZ'%yvlڿ|ϝn[DӤn2oy!e&Fd #4L'!l^9ĴST֫-HǢz/AFc߭ a*tŃϯҦİ, S6-B44$G#'3#61̶B5)e(lvA-.kf:k4%)@GdH@@pp0lDdz]l k:`iXd फ़1?# EաU_ 6T^LLp+ qĔL!TBוYMԹU}L4V!.._r.4L~{;9yz}苌:8M[i3b|&>yUv@TKEUNO'P+N,E8a`vp"M,e4,IaNXQ(ktyȖn%hlS1b2d,0OfAzƢ$ qPxκl]֌=6sݣ Gl`RY!P}P\Pӡ NJ0[3 4ֿ޷! 9'&xc2hY ZY2e6kw=½'N0Li@Px{Yh0ņTBH cfR#04D 0+4R_p.*;(`Y*4\m[P2!0 H}}!;8Qzc $*ܳ"n]l3SZ˚ UTp I”ywC~H]q0gGgy=$zg@* ʴ.nY.[q˚x}wp[?7I#f\bvcg۔i 쁠Ԍ*! 38WucNs MxtVp6u69ϥj/ӚIG d(ÔH86-`$+}!;8c M+oΗS_(od V80}u)a9$"p)*QSI[F8yY{MU>PZ9Heb?oۆnڵkNMRJ{/zÇOq0c4&vhT[4M&ZE\X! cvi01fIL*:C=;~N5NR8g3)3qSw*wJ[hB!nZ,3w9gp*LUkV!jRW`赲"n0s~CslL?}.}ml~r01V ٍr jݴ󽈤!Hqru-& ieMɘekY06HDg+K۽2(s.ɮ*@ܒ$bg2|?eG}¬`>u) O/ *:NkR߱~sc1A41 , 46]x /WeEYZ B_Os Gk]٦&M标Z/ (taSa1SB(xP5)m9ODu lUy1+&MߊȔYW_\N.nnl˖`T<̑~ʎf/?XF3plEudr^j4Vl6'yݛ[V!QAW֫;}tKShQGU#Ii3S0vO,W9D+eFosBm!H28O3x"cM#ZmԷ(ꝇ旀սڦ~}^Ep<Þʠ{s;?YH$aHGfұG#:_WN2+UtԺX'֦^Ta%3O z8p?r&lD7W"To^Vn_?RD~b ޱig&ܴ1G*\_#{>|{Wȷ^y3֝,,E6Ź,«rzvVcG(N[LX"90^2BE%嘎SY9] F{+L$lx Z>&GJ '*|땙zX>v+vpf@ (12#6/ Te^R^)rӓtB@ kxYkڃ4]vvhXN GI̼D>c|aO̐yHwsEMpk w)c}3}.yI |`=/@s .2R$-/&3,I!7x45/)VܶۺXCaJ&C1?2crr,LfS/B}3, 0 ?~gŀqN\ .C3. v7yv\ALs^vwb]>\bFڙuBT`\W V)[Z.aUkx0OwFKObH('=ڄCtNڙ 2LpŀEw\:j;R&OCq3/{w]ety/O/((3&3/JOWMbN(1ʶٕ]8(Zl"RD~M}*+{3h0lp^W/7@+qtx,ួ<3{)[il-E@E{g~|0oŌ'M) en^GH9 *{6eK\@^QޓrSJ&E U#c <Ӹ $p_#|u\VrY};u6p3\gd3WԮmah&,ݛDžMMˆ!&TTQuY -}~%, KZEp}}ȑ*7:5-Jmu_3R3vli84q`Ƙ䇮 EA͏ڡn8"Ɛ^Bkh&,՝L]UQ0"F*BTM%l˜唢s@`M ,Ǡ~q {I+=$`J~tO*&=xU@(xDwE׶мF\TҞ)8]r&/,|OeIE餐;(08YQ d(f3 '[. u=ΝhF* ]Gx"M3C( K 0d'< N7PP5PTT1Qr%:vP2"O,,-QlanEËyNbr)Ƌ涇fZ/`IJ1Z0 OG6\uu(8p0c0&&0qLD< )x鉄t '~5 8 ETu;!W^0Oז IDAT8@٘K]=9(m8iIҴ 7JrZ傉+/^@y&L(V޽ď?5ģ3LE<SRwH;T!T-(c8<ςcܲl Rxa~U9 puv}}G65y/6 w\1{@OGmox͗]^WSKA޿et3$z0#O<ȓO<5|ء{20ܤ(2'*%<,)8&TB׈~G_1 tҗ"Lo]+ 7· >y̹=㿉!\;Ȫ^zTҽ+KEN1F ?/~45yպWnJ5B1F\ B |;J&PqķՔ".HFb~$E''k7F$N]ʹ}?%=㿁&₪#2#C/2K@Pfpg5 ¿>Dz[>WXn x0(IC(_,"M$ܸΝǫ,oLO+EdΜmP$^>u_yY&0ED$I(Jq#掄$A`xcm /`uY' :<G7|պ \0@.|'}_t!B!zao3D: Qs|nruɞ?{^iGުy|ya&uUhȳOt66.2u ?c!{5 C6{ق.i~x*]DG.V]c5u1UnNs1.=K^"&@6ˍly}^wIAKUA?5hA$g<3Oͫ];oW'8]U 7/05 8MOe* 1}jzSlЫ#6ԇd2x!#@մ&酮">e-kV(ܸٳRp]Roɓ~ v~FT$I$LޙZ*7{wrzvwɴiv"0>οB%\ dǾͿiI0u _FF 0d!Pe3)x&p{ =m~E2`S g  ƃ~vGҗw zo(*BfI(,.vȲ'/]bϯb-/Zu?Yi^xa: :J|5.fB+\Clg4G9U]s_ļ1}Sa%LLVB  MJ3 kLH)laNUR4lla _ir|" `y&>z@VջNuԫs[a.hu q3HKQ6߶WT}Ν>MOŦgYjQa~J} 2mG LO!r}`Wasd" 3f@ @d|H Bv2,:I.ٷ4{ ۷; |eKC Jq| G`l|O}pU]ݾNRIvl{quJK\,B<.)?Sl/} 5C ? ͛q9o'3' A l׿3c;8q=ND ҦR+RjWGOgVB>'S;Rd6dzP߃Rl:,2f-I;W{@$P 6-X&pv%;UFuR)̩)b;wۙ  zo/Z"WzGho|)T`}r>¾;2$H}?"/]BǻOØ#Tށc<=sg?B.Ks&cEq7$!K2=Z{g(0|WP5Π_ѿld͂g1S..f/|rW3{);T|ĜBxR?8@A鹥+]\n])) b]tHll¿Cޝ%wh]ᾇܗr`iND#~2ZC\N^b2r6*ea=fjPDW+8>"D7btj}!OL$载KAEXj'$H-_|󄇆ڛ^%^G\vN {y{v^̉5ylxhCA2q22#uܗϡlnCCU&/~Z/t_5Yc[l djf\#j &H@1*eA t0+q񇨇n߯-(AJGSne1^05ZIUx|dV4py"n]M/CH8±cw4֍`OOݸK7or&ʹG]cwl'?̞.ZERv} nhgE H}ccLޜ3]^2~~U0 :'p_x 2j}81jl&;j.;2 8B2IY|i+0g7߲<\|m- ]Xs7qM{[7YlEQ{!ׯ|c콏=Qƅ,Qq:/Gd)l|2c;51$vwbas3hQu#}8=̤I!Svl|o@N-*o; JYxO>IEC&@K$[\6ٿ5eW%o}V4n۶;vLc6"N$]|{xnklnP/?uc 0~U\oh(pnʡ0'?[xLX aF LD.sCdТG;zcʝ(ٓc- (FPpsϭ<|3Wɜ;GߡC.&Ջ0l<~SG5_|Gٳe hZ^9}mCJ+9Y>rˍ|dI>ͿcMb+9^?SO1);隵`PÞnL0M$u$xj*'I8O.i4I|NNR?&uE:Wpᆆ ػɓ(B/iᥩλ ;&`*#1upAjHdQ-(픚Rj5N_lWŨD +H-BEEmB ہ*)O |V ˳Aō/#>z@GUUW; 6 nע yCCuƗ%YfOS{[drFȠ0#ЩՕőp#GW4m(10mlUK/aV}&].-"[ܲ7+]}=|};Xn0wzm隮ř9>N5gPTu!6l3= ]֫tU},BZҎ#T'$(JIU X/nIB8'c푽l |zGk̛o޺ľ}kJGpx{ Ntdgg_FɆ]L9Bu14VȜe>;cyn朗 +.A;1d$_9gO^8"{>"qQ|ʩ3yn^*3. dyw|ѦG0 Zx))D-RT}Q,gu.NN.0>w.̙n2 7YKe͑͛~"ο*L|޽{kuǰ2;Rz׳ejH`+_Z MdU%tM>>N̻WcΜh$M+!XX\ąF3^OL5IF Dy:ô9Çs3/Y"ӧ4 &j0:YL+ʚA3y6]a"ȲcZJش%zu&%9Bb3 ~WBXYR0aܶkoW}5 /͊*WYI㥉W8r:Άljn~ƞ Fg_O9ˌ9Ù9]}? X,U} u97s79~La``Nxֲp+*6#H | q#{~7qe_{ g+KRUM5b\tBaU V ntkB|cCp_Uއ,+5,` J7!xr5>)VZ5ͥ2Tb1nϭzSYvϢiZ_]Q|A8GE6PIGʐ9'oQn]>Rl<]}7q w?̗6=){)$(Bn?ˤi|ǯ v*5vKA;b,I.?pE7N7D;mb [烟 #> PCMU*i iY-H P%(>x*/a+3p5 !/'E*Y9?ٷxy"oN(1E ha=BWJ nKũ4o_:Jr!ٸVܲ`1@@]F0cx'qc R4C\!ТQv>wB'O2?9SlyQ 82Ra"J?1_(uRCR~Sq7s ee5@  ) j3'ӣ+ǻZ.>]y7ξdSFPiѢc+YT>Gΐgk-e*KWEXw@舫bmvAY I& $iӲ>ilgQc?7nTJjĊ9?ϩbfbͧO3ķoGVUhSE4IBCI oDhtΝ̿.'fgoJp6ҐCO?XFʬB"8v[4]q=ɶ[m@X jrGbN{0XP'7Yʱ@舯y+YR_`k '3H9At׮ۊ)lz9>wq$~0^3׮8=srF4*hGMaTJ˵ ۵;Y8zX pV鞠kC}+z[0xc] J4U'( ֺB^+ @OL5(WDNurخ]xVkmҦIo8\a 5Ä6l =JvH=0^ =A64 WƑsoAǖ;vFASuD!8Uv%v0ZȬ+_p:SXz@$̙šK IDATJv<'w/{aI,. ZF%I" ,M!W{=fmCŊj#jC-~B?ŷj;ّkj!U(4뒢spl z{q\} {"V6,!ez/ z_ [?z``mc>\8/{UCں B|q71lOYaES};`4ss]R}vՎ+X,(<;P9s[[fTK QT'ţXPŅK\i@UVkޢΙEJ>n[`-M1=ͺZ WK@I"c~wz{9+X-9R t4*A,h f=y;JEe.:>\f#q9;w鹩;~i6?Nj^B>_ZG,7bhRkvw $ɮ PdM{vG=\RY. j8Lb~6o0sD``&sLև,yw~_*++*F @Y^sU, WG>Kתpi1YWGįzAɌ70LgKVOOaw ;9~P#&Mɘ#kVTK`P%I֢W辎bZa劀P}$EAg3a$RUX>@Cq)%V;~cq+y)B( ;_%zb1b\7awb R((Qc0mFɆ0{U6uWnxu0ID,K}1g,t>ݼ~ڒ=@T6XX,2) mY:^K@]ap 7n߳v"tt%TZ9eY\!ñL_\_*zG#˜|l\ֈ >{a+_\\RH{"$Mݵ  !FێQ]HX!%H\uꆆ'|C}A"l }F/T2WcM10Ż8p+c5݁w$Z\e=j0m+>݉J@˧ONĊҎ]oYȭrӃ%I,&!]4AL)C1s9Nȩ-"7'88Ⱦo|y{$yl_#w/ |H4av!wČm,]p]Y~+zFCK j@jb@1-F\ 9,K銎VhacC9z C$qdI& [dNB0$Iv m8;ܜY RS$"Z-l2vsc(?:0h`ٻBPQzzL[`F ,R-Ԧqwp }&jP446ƞ_urܸt)HUJes͛tZuc6]!H&a]J$P,{j{ڱ|%EiK%Io^ǷZ#ِQzEdݻkBΗA߳_2|l:1 YQZ$IRڱ~9ӤBh#jWZd2QTG Yps9<ˣll!l 37hdЊ @*hdOTBjҴ,*82F&o_8xKBمbFTjr*wؕEbNd!2'͸t9%.*B^>Ob;w"P;N4B5z@ih\y= Mco(Dt_w _`5>뿮R++竊ަ,p\%$ޕc\֪e_y6EǙ2FWt"Ja(4HO)D4Y: ANe.9_rPGT|W5H<+Y:r]5󡙟j @pVu~)n&S,kFu=:V| @RSq.m.~ 8w=;w.%d30s47ϝJfg[Ӷ ԝ4=iߪki`hR1J@M(7A$և1L$|4Y+`Y$4C_ 4TH *ֳn$86GaֲB}lB5\IX3˦g[ {](\!S5Y8C#őKh @\E(}#G8d/_٩B֭l{q%_>^ϓ|5#?4VlrӶuzB ҎZPe! )Z4]+i RAG|GUVeRrd֟0:"K}F/bcE} Q=\2POd $Pܜ9DaO9-wV;BH:諏(֦'e@@UPyvW.? C-ϳs${?)V282 Z,iVS_QMJ مRnkM@tHF%jcuBVmAT0@7xQ@7hᆙӢJ:mZ4֬/IZlwxO>$9waʊ8i6_T,As7 (¥}==?pf<+'Or?G>cKn%g_"{{ M(jc6ns_,ul@/3`еZHX(-$H J@ T8P)J`PV\}Uƾ ̲p[<3g۱X,09ڀA}s;u$IbA4v,8_ٟaR!tY.Uسd ŸAp|G8Uί^ DݚoP[FG?_"E ) ,72q%&e}go t$g u]ǏcNO7\sϓOҷnrVLalPIK]m$I,髯Ri{F"||nk+.,>~زc1MC*jY$w0$ kBo7 h_5~[3/ i8Te:B.qe$[3f} *`u̵r:KՀT~bGxRݹ-=`IӤЄ%$"`q`qR;v( PUaÂygdž\v}9ʞ/X(T)VrUh ;5 .) ip|V.(j2&^cYHRZk~ɥ):x[,K2a#R0]jrAWS5K9&[±c\ie`OaϞJK0T:$+ZYroGd66o1Et]ra I5 sӜ$>M2uLh,ly@53I;iLϬ Գ_u A ɥLTU-%![SPd`pH0 4YN=k-rJU;? 7n6nls 1> ٫WYX\$eDu\,2)nvLLrf|[=IdgML&]om-ZPJs| cYJ2DI 1xH֭;Mӯ+ F&  /01cΞg!.phUl58\~Wx YCSJf$a  aO_ܹU²)3w 8^}%k]j=%W(2MBRu3 M# wݎ*qBj0ّ, VQF JAzɍJ 2`ER<6v6=I_{dqnGw DV[R~(z,|6~o/q%}5 "I"u={mYf݊;6Ļ6rSk$'Nzvj ս4 U &wI,Τϳ.z (:R(VJ<0YdZdra\IM0DA!W@R]+~{qoEa[Vmm l5YtT#_Ycy`>$$Υ/SÚY6qk!60Sff]qXEŞKXp,gUѿPU߷u+H|6۰Fr}Xgq ?$кu QGƲ4f!UaKC}|n&yka_|7~TIA[TֶoSpMV5XX\\$VrMa4_AWٹٵw#lcI7k(CW6>˗6Ur\-%j۶ # ht]/]"91̇2/2`qq9mey/C(ip d`Ї~ Cb,h,+<7k:k F,F$$;xoUch\!Ⱥ.Wg9~ _Ɩi!}eahZ9!/#vY3 N* ~@e$y3Tn\6LnȥsxG ꛄZK8wbݪMi.\w(U4*Bc=X3&n-C@6QZe:y_g7iU~3[TtPU,| z$Mg`Qkbq:!YI^}ytfQ:!&8 rJ!uս(m>oR LxyO|U@F.*%Ugb%CPlTdEVڂ%6,'9j5Bx抯kQ S#X9{BG;$IhīN$PFERvB {i",;FڵʠEIJkBSXC>~2b“z@i4| ]MkjK,NV5R,u UU װ3E/|([ ݮ5fCs^ҥ<0 ̓ %%%XUv۷`#N/myRL=g.wyvBGIWU\3? jO#7g0ٺ#GX|}L x l> Ŷց%@h U;_T"I;:-k;.Pxi(DAA)"1S촅oWtrf젩; LJHm`ӅN8u,h 4 0))swf3j .A:)`EnLM9 : d͛1nѣ\Y\$M({ J(M؀,-/n*οHy@ֲ*-8ˠ qH*QP:V_s+ܔ >5as]ybcm;|B" 8#B݇Z?x]$ chgMBYdEAK$v1{Y:D"QjMX)gYzpJDz.CԸϷQ4uMEB[0`01Cb*O ̑d1Y^G/+?ϩ3\Z\[k亚D$5}P.tf''Y%l+c7ϝl- IDAT#lz)htyc.HWh22u*_}5JS@h(8bUsws*!`IGtp Nq?z/m}Ck*S'>퉣,GîÕ=OƓ@g'` 2ۘr UP:6%ufѧ&<>޲m%*/Z[+PԌQ*Zvj̭`9+@UC*@@C$ EUPTUW +g<%Wv~;eNʧ18x8rW.WLr6ISex]Q49dSw@F;YqEN\ ewB>V*Ezz!T?`HuY JbYGiK/t:U q >wEƈ:v.bލ$Mܞs}M߻x^xhc.|z2)F..^')dz;,!0WU`I9;<0FNW Ae9.%}Ti@N4]Ŭ*ibб`(ϲ~*)8Ӡ[(zedUF5iJWTʝ _,ώ="+UUb(B X F`c9',gWn7 d:=IY˪Yry2$odӓOYJ:趆4a5[KYpu8@s,U)Jxyl>EWN;}H =;E4|$UE;dl<[bhU+iYH˃B\qgO=ņhQn5!ѥ׊MJۻ R -&P֞]s@k\lw!&8#h?IMOc##Ν !<"*|XiXFtIxn{͑b2rnx:UfـfiŸ !pv'JW$ 7 z:2 BUa Mձ+n܀cb*z4i4%XӒ4 T9 _bw22b 2a(LƘNN@ 隸:p>칟D0@~M~verʙA%.$-=s0gB@rJ˂teI:qΌK"ĂA*eN-UebzTX܌ 4^,U$;(IH M@:{15ʡCHmD$<0ELM`:fp ;!v%vr!EЫWm]k_zνU:[ vmMA|Wn>+$ۀ^''zwvp _߸HBNXIw!.(4V@Rаʱ5v*.IB(f^q=-UX~yD X;- ǧ3+] =c;0(N.gZY v%0XmA+vAA'Gמd}rwZ;1X~%?z,_u.q+_钱I˸biִ6WE}aMA՟TW,!w2IDHclg23Ŝ5ϢHLѣ'XfSx# '-WGk>q6})G/+No^ͫqZWD@M9\UfߜĚ[; 7Ýi>Z\Qk KHZVWj./BAVO %d:PS2v,D 8tz'Eؙή,>5@u UUT>~ʩkc`{2v g^&{>iŝ?2^L2ɯl֞%DT b-~`۸\I*Gu Z /eEugB 61v#t0n 841֖ДzzF !ҏv2YBPjBD \CI;v{֞^yKHAdZN_97}ft!=ӔVAOL&mc‰pŊx)@ UHQ5Ac] pV˹}:?$EQ+|cC.πF Gb19 XY>x-AQHt-a`JD0g=ua0IGшL!4ӂFY,Z ydaRLq3Ng>Ň*$n&LdlK;i=F(vrZRe&;v2)h1dB]>eګ,BH+2q3 t16F0J&g  bԞq]ۑ)2Jà^UPQIDA !m|_ w:5pFDp!$jj[7((Ҵ$Lj$;3mϱ9v6stP$4X."EiW5NLh ROp%98e5z1 /olիi2 2YFS?fz7ș7ވLMk׎:^zy77l LN+R-[U7<J4ݙS,5ڿ?~*$dx2`hQL 0}iB>ܺP {7PYw+g0NDGwtCC}cc|jڢ#Pc7QIT(_`99hgӼSIT>40 !:Cݴ:1Tb$`Xx MjT.kBdP/hd i ~cm7{@=5}p$D q^A?-T4&#l9Lw$QmmpCzhZ#Gonƴ݆>xXQ o!q&D T!!Ē1"(H01 ÒxEdXP- #(U?5ybolF3܃.cw% R<4:u[E4 1pҥ7JEKP()SKAxЪ-GplnD[#\|Zµh,6Vc7QǛА-RB8K* n;ā`EdB=I~ lA+ɡ@H)Y[WMTE,Jp:U)=Thx^B(B૫Cxi==S2!(< YKFU)I(hA!H쐁`ZP("wL2{X#Ql9z?TXՎDǑXCCt\lYAkAQt5_d!|CJ"##L>Lll ׋#ؤa0ñ={0$iᱮm/} Җx5UGiLaWnd*8 2]BBQYXGy? Dʝ';p:dEYUrA#Lr%xz.+[ Xޯd=0do/F0i(0y0EŒHU9"9BŠGG]X)STMWC5Sleiko0ΡsÊDtEdǯΞ'(|F #5i1.ccwu1ӃHIllP(J^.L||&Opbн:n=֥I֑Q 4a坼\Iு 䜂RsZ< ܅;i x}|QjjGۅONH r6s6R|O!w&0tGz43ۨyg*I8+=աŠ*j/A< I`ĒHtg'B{7X:jW3[]2p+y mVυr9Y4hWƸa[bxy۔gZ وԤ6@MӐiS"H?3cɇrtU<$b E IYe ב(oݬf VAym_*?X5v[8{GFOkg*5>px* 9)+IJINE'cp8Q,b=: N" c&)!Mf#DU<~/UoLⷷ/)2%'m^ '}}\j8'϶BUV(!(>u`@Ҝ^(ݣ[:O#O%1 Y3(~/˃oPxS <:X*ms߾* ^/zf$"(*8_JRDs,CUMՋѪu&fdtmcV~ur`៟ds+qygG M& `"O; UQ0 cZaOz@)!( vff#IAq/,PES4yqSAUU4]C5ov& =an/neX9o?5-sJxY.C6Vh$իh29MKf3B{vd8EAʼ <ES0J Mмm^&~Ns+,hܣ׀_c q<3b0\bW,YB;bD5FwBNlSa.WVFvH1|F@a/VDv U'@MU5AwnAPb_Uŋ TdNJjj{``[H~cz;]x03b Krv m|$ J`x)pT1rr<v};2ƾ縔l+KrE}}yN*IN Bx0I*ڶ M )LXF8BO$\t).YD^I2ȕQh) otUW0!( dMB;wr9|)%6M4 `u 4۹W(RIT}*\9!;$V. , BHY ?t`<}}NNrMS/Yf@;I+&P̱S |pN!V26O'wuY;ov+5↤/ƯUD'NJ<)ܨ%i-܇UrbB+ܴf M~$iG:̮q`W€wi[oGwCR]BX8=ְNƥd7\ɕSH`,WhTIp}/?PNVvᗰFE(OZ9VעKd{Q~Z[lZL25ڙVBx^b ϰgK>蒁k!EOkӅ&kt`\ɵMЕ.@95 6)B\Xnr NZ cUQx{D?݋$\ِQg^RZeLofOKegced¼Ap=qJo|/B%!q4EׁߔVC6_eF|xK7o]4 ~q;/IEmT@C(>;\5?Ͷ{Z*K:Wdo]SooS8V܍"{>nVnr V-©Gmkb&ÇJK :4YK)1ҤlI*uu^|v~ׇivElثppk}Vh2hm[N.J [%DZ"n>o"Q i)M&"I4vu\TCG0P0۷ITbS4>\1銂{n~W>YN0 | \Bp1T>xO90$ȅlǨa8r3$9K @q{3Jouu\(1 ##] êvdfCH:} ^F1t哴oh>3'8)X|s)/s.8mɴz)%ۇG|1IJ|WK.JJWŋ-oe;u19rGzNha HCPݟढ+i=TQ& UU 'HIIHII]k. .J?DIIHIIG{w6. .:GHIIHII]k. .J?DIIHIIG{w6. .:G$}څ-#}o!}W |F|6{{%{b{!O z#>z%چ.y'oy(Wy*F x,6 x.|& w/cw1O w3?v5چ.v7ou8Wu:GuHHIIJIIH/ /0//FHIIspIIH9//Lׁ6//0>300FHIIaJHIIB2//9?//03uyB3FHIIRDGIIH://?2//04lGHIIM?@HIIC3//:ځ7//004HHIIJ|@8FIIH0//h>005FI IM20>HIIF6//3m2006GI It8/5EII?1//3mW004HHI ITR//=HIIG8//01i411CHHI I//4DHII@2//006zi114^HHI I`C//115i112FHIIz43@HIIE611Y22GHIIR87FIIH?211R>22GHIIHZp2>HIIG811NN22GHIICoֈGEHIIA311KW22HIIHCޔYJIIG911Ml422EIIDG٦pSIIA31121U922FIIH=NʎZMIH;1126m<23FIIE6T߳{[JC522C>33FII?3YԨz_>5225Cs>33GHIIF71aԷe]Rc>33HHII?22X=33IHIIF812X<33FHIIA311M݂933GHIIG:22: k844GHIIB422@oT544GHIIH<226XE44GHIIC522G~{;44HIH=2235_S544FHIID62233Aio:44FHIIH>33Jmm=44EHIIE8336D^̭tA44CGII?33457TkżmP@544BGIIF833495GKX]RQI9445EGHIIHA4334 4545455.FGIIG:445FGHIIA5445HHIIJIIH/ /0//FHIIspIIH9//Lׁ6//0>300FHIIaJHIIB2//9?//03uyB3FHIIRDGIIH://?2//04lGHIIM?@HIIC3//:ځ7//004HHIIJ|@8FIIH0//h>005FI IM20>HIIF6//3m2006GI It8/5EII?1//3mW004HHI ITR//=HIIG8//01i411CHHI I//4DHII@2//006zi114^HHI I`C//115i112FHIIz43@HIIE611Y22GHIIR87FIIH?211R>22GHIIHZp2>HIIG811NN22GHIICoֈGEHIIA311KW22HIIHCޔYJIIG911Ml422EIIDG٦pSIIA31121U922FIIH=NʎZMIH;1126m<23FIIE6T߳{[JC522C>33FII?3YԨz_>5225Cs>33GHIIF71aԷe]Rc>33HHII?22X=33IHIIF812X<33FHIIA311M݂933GHIIG:22: k844GHIIB422@oT544GHIIH<226XE44GHIIC522G~{;44HIH=2235_S544FHIID62233Aio:44FHIIH>33Jmm=44EHIIE8336D^̭tA44CGII?33457TkżmP@544BGIIF833495GKX]RQI9445EGHIIHA4334 4545455.FGIIG:445FGHIIA5445HIIHGq116DIIGo11HHD45dF558CHH45eE55=F:45fE557?E46gD556356hD55456fC554$56`C553*55XB55355NB556555HB556566455EB5 56566455?E5 5 65557yY55656 6555]755676$IGI#IHI#IHIIKSNIIFIIS~[KIIGIIVեqVIIGHIWΗfQIIHEIW^LIIG=HXޮvQIIH4DYmHIIH/;YDIIH/3T{;GIIG/0Mz4CIIG00Fx0:GIIH00Aw03BHIIH00Bu019FIIH82Bt113@IIHIZIs118EIIHG̚r112>HIIHGq116DIIGo11HHD45dF558CHH45eE55=F:45fE557?E46gD556356hD55456fC554$56`C553*55XB55355NB556555HB556566455EB5 56566455?E5 5 65557yY55656 6555]755676$###########}#z#w#t"p"l"h"d"`"\"X"T"O"K"G"C"?";"6"2"."*"&"$"#"!" """""""""""""" " " """"""""""       !##%'¹)+» ,ǿ . / 124579:;< IHHII?5455DHIIE955HIH@55HIF:55FHIIA655H IG;55BGHI IB655G IH=5566HHI IC7556FGIIH=5 565566*HHIID85 56CHHIIH>55 6 GHIIE955 67!GHHIIH?55676677#EHHIIE9667677$?HGIIHA76678&HGHIIG;66 78'*GHIIB7 78)FHHG<778788+IHB877878 8,BF:778 8.7678 8/.768 816778 8236688447688657788706788947788:35788;367=7 IHHII?5455DHIIE955HIH@55HIF:55FHIIA655H IG;55BGHI IB655G IH=5566HHI IC7556FGIIH=5 565566*HHIID85 56CHHIIH>55 6 GHIIE955 67!GHHIIH?55676677#EHHIIE9667677$?HGIIHA76678&HGHIIG;66 78'*GHIIB7 78)FHHG<778788+IHB877878 8,BF:778 8.7678 8/.768 816778 8236688447688657788706788947788:35788;367=7 B-j,5*[)('M&z$@"f!3X& K!w#>$ c&1'V)$+I,t.< / a 1/ 2T4"6G7p9:: _;-<R綠ڰٲŲө᭧ ୨ ޭ 󦨻ݬ 򦧧ܬ ۬٬ ê             󰯯             !&5BW56556 67677555vB6 67655HߜR6678755ex=866 786558zkC778788655656?҉;778765566FD778 8766<|C8 87666CuB8 876667:_B8 8766678K}A8 876778[@8 875778788Aa@8 875778778 8GZc=8 87477889=8 878"878!8738!8768!8768"8588985889858898488 98388 978898889:948 89:68898899:9889:93889:9::947899 :987889 9:9:78899:9::;:;:558899:9::;:76899 :;::;:;;:9879:: ;:3599: : ;5 :9:: ;<;< 39:: ;<;/ 9::; ;<;3 89:;; <;:8:;; <;*?8;< <;37;;< <;8; <;6:;<<:*:;;<<;3/;:<<;:9;<<:9:<<;9:;< :<>>!9A<&5BW56556 67677555vB6 67655HߜR6678755ex=866 786558zkC778788655656?҉;778765566FD778 8766<|C8 87666CuB8 876667:_B8 8766678K}A8 876778[@8 875778788Aa@8 875778778 8GZc=8 87477889=8 878"878!8738!8768!8768"8588985889858898488 98388 978898889:948 89:68898899:9889:93889:9::947899 :987889 9:9:78899:9::;:;:558899:9::;:76899 :;::;:;;:9879:: ;:3599: : ;5 :9:: ;<;< 39:: ;<;/ 9::; ;<;3 89:;; <;:8:;; <;*?8;< <;37;;< <;8; <;6:;<<:*:;;<<;3/;:<<;:9;<<:9:<<;9:;< :<>>!9A<&#"~"{"y"v"s!o!k!g!c!^!Z!V!R!N!I!E!A!=!9!4!0!,!(!%!$!"!!!!!  Em8 \+O } C j 6 Z ) M zAg4X'zJJ!#&3[-yst-logo-128.png#1     ~K^y^™y^gjynxEH:?EGH8GFGII7CFHII5EFGHII2*HHI0EDHHI I/FHGI I-IHHI I+IHII)IHII&I$I"I I I"I%I%IJI!IKJQ\\a^b!ITbm!I[} IJb "Ii !IJg!IKefHI IXCHI I]BHIINvHI\IHIIZIKkIKqȿIKyɛ}fSQTmIJtÁN<7.0./1BxIJtzC//..0GIjȁE. .2eIgY5. .Q:86420 / - +)&$"  "%'#!!! " " "!    Dz îⷙͤ ۸ EP:OPQQ8QOPQRR6RPPQRR5QOQRR2UQOPQRR0EPPQR R/QPR R-RQPR R+RQRR)RQRR&R$R"R R R"R%R%RSR!RTSZcdifj!R]jt!Rc RSj "Rp !RSo!RTmpPR R`KPQRReFPRRV|PQRRd QRaRSsRSwRT̠lZW[rRS{ņUC>57567I~RS{J66557MRrˆM5 59jRo`<5 5W ?:I8W6"e4,s250 ? /H -? +U)l& $"+ ?Tk !$+&>(S*j, . 1*3:57D78@9[9j9u999996<3*EFE:0EGE.?FGHIIGC,GFIHIIHC*HGHIIGE(IHHIIH3%*EFHHI IH$EFHHI IH"?GGHI IHF GIHHGGHIIHCIHHIHE*EFHHII8EFHHIIH?HHIIHGHHIHFHGHHIIHDGHHIIHC *FGI#IH EGGHI$IG8 ?HH'IHGFHHI(IHAHHI*IHGEHH-IE*FHGHI-IHEGHI0IH3IH84I3IG2IH2IHE2IHE2IH2IH?2IG2IG1IHI1IHF1IHE2I?1IH?IOWKHIIGIPbKEHIIGIQcܪ?EI IG?辇[GHIIQi0115EHIIo<11236>EIIH103;CHIIx71127K@336//29AFK1126N[3345:AFHIIH?I//16>Kx16LL33459AGIIGHM//4DpJD334459?EHIGN0//0=ا=34458=CGHQ//>74456;BEV//0D344569:U//0Kw445/ْ?//0ZM44545ڱ{H//03Cq>4454*ڲ|O4//03Avs@5445462¿0.,*Ŀ'% $"!Ծ # $ (*),.1344423233321122׹ڥϘ ē   򵓔 Ӻ ó裔ح➔ۛƓҘٝǕᰚ䠍ꨛö䤜𲏎ݡӞ챎 ɜꭎ ֠ ܭģ ūĥƭ6K3UNMLD0EQPQQOM.OPPQRRPL,QRQQRRQR*PQRPQ(OPQQRRQL%UNPPQR RP$ERPQR RP"OQQRQ!QPQQRRQPQRRQROQQRPQUNPQQRRQUENQQRRQORQRRPQRQOPOQQRRQMOQ RQR UPQQ"RPU EOQQR$RQU OPQR&RQQRQQR(RQPQ*RQPQ,RQNUPQQ.RQMPQR0RQH3RP84R4R2RQ2RQN2RQM2RQH2RQ?3R3R1RQR1RQP1RQM1RQL1RQ?RX`SQRRPRYjSNQRRPRYkݭFCKPRRQPbZWSRRZk=;AJQRRQgXR RVk889?HOQR RQM׷|ZTRRSt|889>FNR RQLcPQRRZn889=EMPQR RQH׉OMQRR`^889FNRRL86;CLQRR>899?TH;;>ELPQRRQOD569@JOT99>Ub;;<>CJOQRRLO5568>GT9>TS;;<=AJPRRHS5566;LwSK;;<DKN]667K;<<=>A?[667R|<<=7ۗG6678aT<<=;5ܵO667;KvE<<=<*ܶU;667;I|yH=<<=;527pg0 B;.L5,Z"*#i'-x %7 $ A x"K [ Y8#h"-w7  AJxXZ#g8-v" 6! @$ J&W(w#f)Y,t+76-!03 33v2X272!2222v1W161!1111u0V050!0000u/V/5/ ////t.U.4. ...IZH0. .CINs7..7IJ|q4..4}Iff2..2YM4ISi0..3//HIIJu1../JHII\9../DGIIMP../FHII_4../GHIIMQ../DHIIa:../EIIK3../DHIIVe0../EHIIjV/../1/DHIIL[../0@ATT]HIIZj..41EMdHIky1. ./.48D\mGHIIxL0..03CGd|GHIIԎQ=:1=7KVlGHIIׯGHI IMFHI IUHIIXGIIV GIIR3GIIQ?GIIPLHIIO}:HIIJaîtzDHIISjTB>4465WFHIIKh μ`R98/0014f?HIINoӵaO>22//01GBIIObDZ~`EB/2//01AGHIILQ[mxyaV@=2/ /01BHHIIHC@>49/1.. /01EDHIIHG@93/.. /01RCHIIHE?71/.. /01jFGIIGC=60.//016FHIIGB:40//012MEHIIHFA930//013|EIIHD>72//012IEHIIHD=6100123GHI!IHFB;510012fHHI$IF@94112HGIIHI IHGE?83112DFHIIMHH IGC<62112:IHII_|dCEGHI IHGC<52HWHHII[p68?FHH IHE@Ks4GIIWu104;BEHH IHoہ74GIISzy//15=CGGHIIXׇ;44GIIPu߆5//28>CGHHIIPh=445?GI INqJ//139AEGHIMZܐ?4455*FI IQh3//015:@I\H44558HI I_ݤW7//0017R|Ђ;445EHI I_۝fB972BAc҃?445HGI I` ݾn6445?GI Ib߯a6445CHI IcܜU445HHI I`r9445JHI IU ПX6445BGI IJ{ ۻ}K445FHI Ib Ж[73445GHI IQӪn=3344 5FHI ILm˦rH334 56͢ 꿗殎Ñٜٕ̑Ə񻍋쳌벋󻏋 ֬ҭ         ̷ɺĺ´ "$& Ƿ Ý ß𿐓 ʢ񾏎ϤəЩ ݥ񐔜ԧ 躕ӫ ۬ͦ մɧ  ໡ ү à ܺ ȭ Ӵ ۼ ۾RbO75 5JRWy>55>RSv;55;Rmk8559_S:R[o755955QRRS{955JQRRd@55NPRRUV556OQRRg;556OQRRVX556KQRRi@556QRRT:556NRR_k7556RQRRq^655686OQRRUb557GH[[dOQRRbp55:8KTjQRs~85 565;?JasPRRS7557:JNiOQRRדXDA8D>R\qPQRRٳPQR RVQR^PRRa QRR_UPRR[3QRRY ?QRRYLPRRW NQRRSi ƲzUPRR[çpZID<<>=]FQRRTp ϾfY@?6778;lLQRRWvֹgUD996678NMRRWjʴfLH58556678HQQRRTZcs~~h\GD9655678IQPRRQLHE;?68556789LLPRRQOH@:6556789XKQRRPNH?86556789oLRRPLE=7556789>QRPJB;75566789TNQRRQOIA:766789:RQRRQMF?:66789OPQRRQME=97789:NR"RQOKD=87889kQQR$ROHA<9889ORQRRQR RQPNH@:889LPQRRUPQQR RPKD>:99BPQRRfkLMPQR RQPKE=:O^QQRRcv>@HNPQQR RQNISx<PRR_z87667788>Y҈C<<EQR RgܡlI@?:IHhԈG<<=HPR Rh t><<=OQR Rjh><<=PPR Rkݠ[<<=UQR RhxA<<=JPR R] Ҥ_><<=KQR RS ݾS<<=OQR Rj қa?;<<=OQR RZխtE;;<<=MQR RUtͪxO;;<=999999999 9%9,949;9C9J9Q9Y9`9h9o9w9~::::: : ::::::::":(:/:7:>:F:N:U:]:e:l:t:|;;;;; ; ;;;;;;;; ;$;ڲ}O4//2@twB5344 5}O4//4nC53344 53O4//kR334 562/F334 565//1@3344 565/06;3344 56*/0;ʪ644 5676/0@̑Te344 567 /0EΔV44ms44 567 /0I|Y4116yd44 567 /0432119T44 56787/01<H44567875/012AB44 5678632/0012H=44556786 \FC50112P74556787 _92112Z45 567874 M31123dv45567878 ՉC1125oh5567861 n41228}X5567878 F223;K55678873 ]3223>D5567886 {223C?556786 8233K95567875 @33S5567874 A33]y5567 89 ?335gl5567 8 <3347r\55677 8973 73449P556>C78898 3344<J5566K`8898 n344?S56@}Y88989 W44EԂUyL889 C44LF889 644V@889:9< i44]9889:9? I446b߀889:8 6447cV889:9 Y4457d̓Q9889:8 ;445hزqF889:;7 ^445dƊU889:;:4 :445Pēa:889:;:5 W445?Գ`>889:;:? 54455Hq}yjI@7889:;: I44556;7:77 89:;<: m445567 89:;<;9 ;445567 89:;<;7 @44556789:;<;4 4 567 89:;<:8 45 567 89:;<; 45567 89:;<;: 5678 89:;<;567 89:;<;:567 89:;<;<956789:;<;55667=C;;<<=>=*67C˭=<<=>?=67HΖ[k;<<=>??>678MЙ]<??=678O`<99>k<<=>??<678;9899@[<<=>??@?6789CP<< =>??@?56789IJ<<=?@?39677889PE<<=>??@@? bMK=889X?<<=>??@@> ³e@9889:a<<=>??@?> T:899:;k|<<=>??@?= ׎J899:=vn<<=>??@@9 t<99:@^<<=>??@@A8 L99::;BR<<==>?@@3 c::;FK<==>?@@A? ހ::;KF<==>??@@A? @:;;RA==>??@@A@> H;;Z==>??@@A> I;;d~==?@A@A G;;=mr==>??@@A@8 C;;;<G`@@ABAB _< J<<<\G@@ABCB< o<<<>i]@@AABC@ `<<>kΘYA@@AABCB B<<=oڵxN@@ABC@ e<<=jȏ\@@ABCDBC B<<=WƗhB@@ABCDC ]<<=HֶgF@@ABCDB? =<<=Pw~pQH?@@ABCCDCQ<<=B?A??@ABCDCA s<<=>??@@ABCDCB B<<=>??@ABCDC@ H<<=>??@@ABCDC< <=>??@@ABCDB8 <=>??@@ABCDB? <=>??@@ABCDC<=>?@@ABCD<=?@ABCDC<==>??@@ABCDC<==>??@ABCDF?=>?@@ABCDEH=>??@@ABC D=>??@@ABCD?=>??@@ABCDCA=?@ABCDCB@3=>??@@ABCDCB=>??@@ABCDCD=>??@@ABCDCBC?=>?@@ABCB:=>??@@ABCCBCB=>??@ABCDBB.s-T-3- ----s,S,3, ,,, ,r +R +2 + + + + +q *Q *1 * * * * *q )P )1 ) ) ) ) )n (Q (7 (" ( ( ' 'm 'P '7 '" ' ' & &l&O%1%$8#N"~$ :S k݄)@X r.GHI IOxȠlJ334 56FHIIR}ֺdG334 56FHIISkӸqN842334 56EHIILTmxfIB2234 567DHIIKIHJCDD3711234 567GIIHGC<7311234 567FHIIHFB<6312234 5678FHIIGB<632234 5678HHIIHFC=74334 5678HHIIGB<74344 56788GIIHFC>8544 5678HI!IGC=85445 5678GI"IHFC>965567876GI%IHC>8655678768?GI&IHFB=96556787H)IHGD>965566778767*3GI+IGD>:7677676/?I-IHFC>:8771DHI.IHGC:5KHI.IHF?GI-IHGC BHI+IHGG GHI)IHIGH(IHGAHI&IHDEHI$IHICI#IHGHBHI!IGI*FHIIGH?EHIIHDHIHGFGIIHG8GHIIHDIHIIHFG!HIHG#GHIIH?$FHIIHGG&GIIHG(HIIHU)GI IGFD+GI IHA-HI IHGD/GIIHGG*0HIIHF<2HIIHD4HIHGG6GH87FGGB9?CE{ ۿ׾־ż쿸󿹯!"&')+,..ß- , +''»%&% ¿"$$&()+- /0 24679¿{MQR RW~ʥrQ;;<=PQRRZؽjO;; <=ORR\rֻvU@<:;;<=>QRRT]t~lPI99:;<=>?OQRRTRPRKK:>99:;; <=>??PQRRQPKD?:8899:; <=?OQRRQOKE?;99:;<=>??@PQRRPKD?;::;<=>??@@OQRRQOKE@<;;< =?@QQRRPKE@<;<<=>?@@RRQOLFA><<=>??@@PR!RPKFA=<<=>??@@QR"RQOLGA=<<==>??@@?PR%RQLGA>==>??@@?8?QR&RQOKFB>==>??@@?><HPR(RQPMGB>==>??@@>>*LQR+RPMGB?>??>?UR-RQOLGB@?>9DQR.RQPLB:KQR.RQP?LQR-RQP MQR+RQO QPR)RQPQ(RQPURQR&RQUMQR$RQPPR#RQPMR"RQRUP RQLRQRRQOPQRRQQRQRUPQRRQNQRQ"PQRRQ$PQRRQOU$QRQO&RQP(PRRQNU)QRRPU+ RQN-PR RQP/QRRQPU0QRRPQH2QRRQPO4QRQN6OPQQPU7NOPPK9HJK{+;3;:;B;J;R;Z;b;j;q;y<<:8q7.5E 3^ 2w0\4.3-d +} )9'R&j!$&&"?.!W6q>-FEN] Vw^2!fK#oc $w} &|9(Q) i+ ߃'- ?/V0p2-4D6\ 7u98H,{6778 89:9:* 6778898/"78 89:99$788985& 89899'898875) 8,875-873.87667087612674?37's "$%')+,.023s>??@@ABCBCA* >??@@AB@?"?@@ABA%?@@ABA?&@AB?(@AC)@A@?+@A@>-@A@?>3.@?@70@?>2?@?3?:sF _"x$ 4% L' e)~$+9,R .k0܄)2?3X s<Y,{st-logo-128.png      Q{m{Ùȉ2- > ?3;&0183.2236-03345$.23342$-02233440'-122344.,112234 4,*023234 4)*/0334'*01334$$.12334"'10223344 ,1223344$./23344$,0334./123344$/02234!4.033$4,/12234%4.232334'4.0234*4.1234*4*/2334(4/2334'4$.1334%4-0334#4$0233!4 ?:U86420. +f )&$""#%U(*+)(&#  >:86420. + ( &$" !$&'++('&$! > :D8![6 2t3G2"^0 3v.H +$_ ( 6x &J$&a" 9yN&f9} 6 d! 7#P%!e'!~*&*p( +~'7% D#O ~3:'-128.013235$113344'/223442.234/*.223344-$-033 4+*112234 4(*-0232344&$0013344$'0122344!$+21334".123344'11334*0234344-023344/1123344343/1334348>HY`gr}-01334329J^x+/233435Ch -0323443=[ */033432:_3*133437T,22334329f*.02334432:kͪeWM10233435Z}N3&##/01233443A֎N+##$2343Oޅ7!##$$34 43WR$##$$434434 43QJ%#$$ 432764234 432> `)"#$$ 432:][82334 43/2`D%"$$432<^ÉT7133443/):ق;!##$$4329Y伅O8133443/&%GЇ;%"$$432>oL523443.&#%Sׂ="##$$443EݳvJ233442,%#"+RՌ@%"#$4434K}B4334432+%##"$R܎B$"#4432FxF4334431*$$#")OڒF$"4432:o̅E))034430)$$#%KH(44334Qn3$%+23443/'$$%%$(KO4433;uj/#$&-23442.'$$%%$#%A4432@ߌ8#$$'.24432-&%%$#%D4433Ei*#$$(/34432,&%%$#%:4432L`%$%%*134431+%%$@4315p0$%&,134430*% %#&=432-]D#%',24430)&&%&%%$B41,@9$&-3443.(& &%&J430)&Su1&.3443.'& &#.i43/)%1e҆J4133442,'& &%']433.(&$3n٦hA4234432+'&&' &$*j43.('&&4i̎X;3341*' '&*T432,''&$*Sƍ_A42/)' '&%#3i41+('(''+M̟yN5*$&&'&%#:d430*(('&(7d ˡ|WB7.+&)+,1G\~:7541/- + (&#!!Uþ   ĪЦtkii Ⲇoiijvhiijj ̉iij"Ȅjijj  ؒmhijj  jijj 𗖜¨zzyhiijjvkޭyjijjؼrij{hiijj׸pihn|jiij۵󗔂njiij~jhiˤ}mjjin崁iiګp|zljkkjij黂mМukovkjkkjm麇יrjkqukkjl~Ęyklltrkkllk 혘ۚpklmwqllklzԔmlmo|pmml~ ڟumnp|om mlm|򗔅mnrynmnnmߩ{ntvnnonoononn|qأwvto omt{pwௐsoppoppoopopxqoy˯rppqponrwrqrzĪ~rq qpr񘗓trsrqu ì{rqrrqqrrqqoyustssu ̺{qqrrqp~}ttst~ǫ}wvrtvvy ~:7521/ , * (%#!  Ķɬš ۮ"٪ 㴚  ѹЧ  ΰģʪƣŦĤֿȥջɦѴ˨Ĩϱϩݻʫϭ⹠ƨɥ仟ռෞӷ忣γֿϬ̯ӺƧǫ ϴ¦Ũ̱̿վ ǭԺëѶԽͳҹ˱ε̺~: 3q7I5$b2 6z1L/&e,8} *M ('d%:~#O!)f<R *j=R!+l#?%V' -n+ A-X/ .p1B4Z60s8:~@$*';1.(930$7432/-54320.-343221.(143211"/ 430'- 431$+4321")43210.'4320%4321-#43221,!43200430431.$34334344320-yuqfVN@9722334344310-*ѻoYD65233432-۽}R;42334432/+ЦvW>223443232+͠l@32344321+ tB434430*m?1334431+ NMVkܣ_<13344321( #"#'/A]ȉK6244321.$#+?jܘV2234431/*$#%-\a<234432/*$#$#"$7oc6334431/( $#",YT334323$ $#"'OޓB434432/"$ $#"*^c42344321$ $#6܈>3443$#!2J2344 $#>H3344 $#".rF2344 $#3o݁=2344#$$#"&HZ43344"$$#'Q|81344$#$$#%D~ݑB-244P,#$%%$+Nև?'-3344X&$$%%$#$.Q|:$'/344Y-#$%%$##0SїU,"$(/334434Z*#$%%$##2We6&$$%)0343326:8323344P$$ %$#$1=5'#$%$%)1338LrY=334؈6%$% %$%$%+136H~‡W<23344Y%%&%%#':B.&$%%$&+7GvK72334 4|0$%&&%$)GΜ]2'%%$5\麁O8334 46$%&&%$#+S֔Y0$'9]ܒO534 4/%%&&%)TғfmċN5134 4p/%&&,XH,'034 4H#&&''&&(;ksB'#%)034 4v3&''&(?mۧk;$$%&&+134 4ׅ:%&''&$'+ύ9)Ά: &:%ˀ3 #ŀ. !y/s/r,s' n'"f'$e#%f(b*Z +W .X 0X2Q3ݢK5ܛK7ݓL8ےF:Օ<?T/-02-.3210',4320-*432*(4321-'&431-$ 43220,*" 4310.! 431.4321-432+$4321+432.43211.*432*43210432*4320"4322.43221043210/43231-T0.,*(&$ " fUT0-+*(&$ "  ӶٿݿڪT@0Ӓ>-Ԋ? +ӄ> )΄8 (Ʌ3 &ǀ2 $ x4" s1 w,v'p)h)f&g!fD *du,h%_ W-023344+023344*+12334401334 .03344"$012344$*/223443%)02344(-/133443($+02334 43**-02334 43,.01334 43.$3233443203023344312-02344314023344305.133/7",1232/9-030-;*-)=    #U%'( * , -/1U3579:<p ! !#%'( * , - /13579:̾< T_#v / <!J#V%Y'"e))~+ 3 - ? .P 0_2"_4*j61899D:U< 43/)(('&'Bv42-(('&)K~ 32-)( ('&-Iy  Ε31,)( (&.Cd Θ\331+) )('*/Cv ٶP/&'30+))(')5H_ײ_>+''((2.*))(%/7Fmy̽mN2,)'()(('2-))('*'-7:FUadlqxwreaXKA:/(()('(11,))()(()''(()()3S1,**)2)('*8^0+* *)*)*))*)('+>h/+**)*))*))(+>l.*0*)(2_-*.*)(*I,*-*),V,*-*)+H+*-*)([+*-*(,T++ *+**):)*+"+*++**++**)*D())*+++*Dz#(*)*+++)+4_&')*+++*)*=m%)*+,,+,,+*)(@i'**++,,+,+,+*))?_!&)*+,#,+,,+*,6@7&*++,-,+ $(*+,., ()*+,--,--,-,,-,,-,,-,$#)+,--,-,-,,-,)*,,-(-.*++,-&-*),,-%-)++,..-..--.--.--.--*+--..-.--.-)*,--..'(,,-..$(+,-..),,..!(+--.//.-")*-../ /.//.-%*,-.//.-,'"&-+../ /-.,*').*,-.//.,*-&)--../.--+(1(,.01/0-*%6*9>95, {tuutst Ŀyuutu엓xuvuvvuty ݹwvvwvvwvuy  ݻ{wvw wvuwzͯytu~wwxwxwwxwvw~˰xuvv|wwx xwxwwu{İ}xwvwwv{xxwxwwxwz{wwvw|zxxyyxyxyyxxyx xwxwwxwxwx~yyxyyxyx xwy폀zyzzyzzy)yxwz~yyzzyz yxz}z(zyzyzyy|z-zyz|z{ {z{z{{zzy{{{z{z{{z{zz{{{||{|{|{|{{|{z||{ |{z}~||}}|}||{}}|}|}|}|}||{|}~~}~~}~}}|x}~}~~~~}~~}~}}y{}~ ~~~~~~~}|}f}}~~~~~~~}|x~~}}y~  f  mz f   q  ?x"U# w% )s-1􄈈5 ɲƯӾ Ҽϸ  ˸̶ ̾dz񫪮ĹŲ꭬ѼϹɶ ƴ³񾲱 󰱱 𷳴 񵴴 򱴶  ̹     ̶   ̹    ƽ ľ    !$ %*¹-¿1ÿ5ļ;( H&P#W#$f  +} 3?O ^!f֒#*hΉ:%3u ~0 ) <s* -Cj&1K٬`"41EC4;Ն<&&''&$+?f p5%%&&''&&',24 4n2&''&.Cr w=+&&'-234 4T0''(('&'/J~ p;)&&'(.24 4%''((''(2Ti<(&')/34 4'(''&)8_֡l^τ<(')/34 4('&+@iΗ]2&'4X}F(&'*034 4'/FrÍS/&''6\ݱt@*&''*034 4K~ẃJ.'(()((6cl<(&((+134 4ܳxF,&())(*1/&')()((,144שn?(&(())-234 43ўd8''(())-24 431ɓZ2''()).33443220-濈O.(())*/344320/ݶ~G.()**)** )*) )*034420+ٯtB,')**)*)+0344320-n?*'*$*+1344331.҆A((*&*,13322.& D)(*%*),0210* \.')*$*)+-0' y:(()* *)('(r>0*)**)('#ږT/++*+**+**+* *)'%%ŏT1)++*('#⽃N.(**++*)&{F,)**++*)(("-*++*'# ,+,+,+,++))',+*((!,+**$#,+*)&%-,--,-,,-,,-,,+'%'-,+)") -,+*(&+ -,+*)-- -+)'/.-,,+)1.-,*$4.-,++7.-,,*'8,*":(ᰀrrsrssrrqu ء{qpqrqqpt Рzrssrw ̦urqrru zsttsxȢtrrw sttutt{ ɞtssy utv߯ts{ vuuwݻ{tu}Ϫust} uzֵ{uuvuu~˥vtuu ѯzvv~vuvvw ̨yuwwvw|zuvwwvw Ƣwvxxwx wvwwxxwxxwxxwy ڹ~wxxwzԳ{wxyyxyx|έ|xxyyx}Uʦ{xyzzyzzyzzyzyyxˣzxzzyzzyzUಉyz%zyzUƋzz{{z{z{{zz{{zy{ Ӛ}z{{z{ ֫{{|{||{zy}̨|{||{zyv潖}|}}||}||}||zyxظ|}}|{rӲ|}~~}~}~} }|yt}~~~~}~}||{~~ ~~~~}~|{q~|{j~~? ~y" ~{%'s) + -󄅅/1368:ˮ© ªŮ  Į  ¼̯ ӽɴ ϹƲ ͷñ ɷŴ ò  ӿ ϻ̸  ڪȸǷ 򮯺ܪиتۺ ó θ ̺µ·Ͼ     "%'(*-/1358:;͆8}2 6s+5i#3^1R/ٗG,ԏ? *҆: (z3&o+%e""[ ߠPٗFԍ@ρ: w2 m*"c!%Z&ޝO( וE* ҋ=,́7 /v11m*3c#5Y8ޛN:E4310&43200. 43201 4320+!4321*#43220-&4321/'(432."*43201-,2$.1'   ! #%)*,-   !#%'*+- ߛOؒE  Ή9  }/ !r* #i'%` 'W*ݗM+ՎB-9  z== Background     TtK&K2K>'288V8m WfQa 0.DJ+J;JKJKK ;339348345343334413344/3344 -Y44 *(e44(4r44&44hN344}[8!3444 wG#34V#$34 T%34l%34G&4 1(4(" '5AHP0'=QftB2Pl  e 6[x ,c@ mt;3A v+?{  K b 89 e } B8,6L4*h2 F0%d - B + _(=| %Z #0s ! H ` 5x  M !e 9 R zpf$k m[K;+ 9 y`G2  M`?#  qF !@ X'#@ l,$@i%@ %@ Y&=( 2"1BQZd <1Le T?e  Es 7}  P) K BR 7  Q   ` ~  HI     }p8I6~4E2s/< -j +3( a&'#L !q-R v2W|;7 ȧs[C*UฒlM.r ‘`5% i0!] ܄:#]A$] %%]-%]&Y(H"-HbxW!Hox#[ c  O r:k \u M p    ce "   O9#6W5)2 `03 - h +*(S&~$?! i*S~ ?" f%'9)Z, {. -0O3o5#7B9d ;&4/644-24D44* -44~U944# )'44lO844%44 {lC44#4{Y=44!uY:445uW:445uU94456 lO8447{lE5448 {gC449 |Y=449: vY:44<9 vW:44A:vU9448K9 lO8449P8 |lC44:46 %|Y=44#wZ:443wW:441wX:445440KC==744,+/44:=FOW`jwwV844844,&6Le}mE54494b&1Vz }hD44] Fu}Z=44!$T}xZ:44$2exX:44&XxV9(On*e ,D.:X`gnrrzyqiaYPF5# R qM#t  wB " L M~@r n 8P T y^/ \bJ""Pt  HH&&;qK6 K2y&- c&).V%! S# O! O5 , {, u t q p \  Z M L  K B ? =\RJJC@@659??GJU_jt 5.B\{ .44:" y[:44p. yY:44g$yW944544`oP844944V oF544:44D jD44n2 [:44h yY:44R zY:445448 &=u ;k9e7[5T 3L1E/>-2,%* n(b& T$G" 9 , w j T ? ' k J ==۹3;)975ۅ3x 1l/a-N,9* ۫&( ۗ& $m"W B +۠^ ;o(<#:864x 2 k0 \.N-A+1)"'%z #b! L 8 "jH*j:n > !  # H$& M( * 9z645\ 4;_ 44?_/:445EnD9445Gt+L8448SuAF6449Z !TF544;\ #,U?44;\$=Z;44;_ ? N\;44?_ 7ίMZ];445Fo Mϳ=c[9445Hu_і#)cS8448Suh{3iH6449[peCDDEFGGHIIJKKLMNNOPPQRSSTUUVWXXYZZ[\]]^__`abbc@CCDEEFGHHIJJKLLMNOOPQQRSTTUVVWXYYZ[[\]^^_``abcABCDDEFFGHHIJKKLMMNOPPQRRSTUUVWWXYZZ[\\]^__`aabABBCDEEFGGHIIJKLLMNNOPQQRSSTUVVWXXYZ[[\]]^_``abABCCDEFFGHHIJJKLMMNOOPQRRSTTUVWWXYYZ[\\]^^_`aa@ABBCDDEFGGHIIJKKLMNNOPPQRSSTUUVWXXYZZ[\]]^__`a@@ABCCDEEFGHHIJJKLLMNOOPQQRSTTUVVWXYYZ[[\]^^_``?@AABCDDEFFGHHIJKKLMMNOPPQRRSTUUVWWXYZZ[\\]^__`?@@ABBCDEEFGGHIIJKLLMNNOPQQRSSTUVVWXXYZ[[\]]^_`>?@AABCCDEFFGHHIJJKLMMNOOPQRRSTTUVWWXYYZ[\\]^^_>??@ABBCDDEFGGHIIJKKLMNNOPPQRSSTUUVWXXYZZ[\]]^_>?@@ABCCDEEFGHHIJJKLLMNOOPQQRSTTUVVWXYYZ[[\]^^=>??@AABCDDEFFGHHIJKKLM3;OPPQRRSTUUVWWXYZZ[\\]^=>?@@ABBCDEEFGGHIIJKLL7PQQRSSTUVVWXXYZ[[\]]<=>>?@AABCCDEFFGHHIJJKL4PRRSTTUVWWXYYZ[\\]<==>??@ABBCDDEFGGHIIJKK 1PSSTUUVWXXYZZ[\];<=>>?@@ABCCDEEFGHHIJJ -OTTUVVWXYYZ[[\9<<=>??@AABCDDEFFGHHIJA*NUUVWWXYZZ[\8;<==>?@@ABBCDEEFGGHII7 &MVVWXXYZ[[7;<<=>>?@AABCCDEFFGHHI/ #KWWXYYZ[7:;<==>??@ABBCDDEFGGHI%HXXYZZ6:;;<=>>?@@ABCCDEEFGHHEYYZ6::;<<=>??@AABCDDEFFGHAZ59:;;<==>?@@ABBCDEEFGG 599:;<<=>>?@AABCCDEFFG'589::;<==>??@ABBCDDEF@(2899:;;<=>>?@@ABCCDEE7(1789::;<<=>??@AABCDDE/   * i!+ #R $x A5 STUI 'STUVWK3&RSTUVWX@E*RRSTUVWXX5[-QRSTUVWXYZU+k/PQRSTUVWXYZ[Q  |3PQRSTUVWWXYZ[\I7OPQRSTUVWXYZ[\]^I !:OPQRRSTUVWXYZ[\]^II-;NOPQRSTUVWXYZ[[\]^_II=;NNOPQRSTUVWXYZ[\]^_`aIIN;MNOPQRSTUVWWXYZ[\]^_`abIIe>LMNOPQRSTUVWXYZ[\]^__`abcI >LMNOPQRRSTUVWXYZ[\]^_`abcdII =KLMNOPQRSTUVWXYZ[[\]^_`abcdeII =KLMNNOPQRSTUVWXYZ[\]^_`abcddefII?JKLMNOPQRSTUVWWXYZ[\]^_`abcdefghII@JJKLMNOPQRSTUVWXYZ[\]^__`abcdefghiI+@IJKLMNOPQRRSTUVWXYZ[\]^_`abcdefghhiII$?HIJKLMNOPQRSTUVWXYZ[[\]^_`abcdefghijkII?HIJKLMNNOPQRSTUVWXYZ[\]^_`abcddefghijklIIBGHIJKLMNOPQRSTUVWWXYZ[\]^_`abcdefghijkllmIIBGHIJJKLMNOPQRSTUVWXYZ[\]^__`abcdefghijklmnoIC AFGHIJKLMNOPQRRSTUVWXYZ[\]^_`abcdefghhijklmnoIIAEFGHIJKLMNOPQRSTUVWXYZ[[\]^_`abcdefghijklmnopqBEFGHIJKLMNNOPQRSTUVWXYZ[\]^_`abcddefghijklmnopCDEFGHIJKLMNOPQRSTUVWWXYZ[\]^_`abcdefghijkllmnoCDEFGHIJJKLMNOPQRSTUVWXYZ[\]^__`abcdefghijklmnoBCDEFGHIJKLMNOPQRRSTUVWXYZ[\]^_`abcdefghhijklmnBCDEEFGHIJKLMNOPQRSTUVWXYZ[[\]^_`abcdefghijklmnABCDEFGHIJKLMNNOPQRSTUVWXYZ[\]^_`abcddefghijklmAABCDEFGHIJKLMNOPQRSTUVWWXYZ[\]^_`abcdefghijkll@ABCDEFGHIJJKLMNOPQRSTUVWXYZ[\]^__`abcdefghijkl?@ABCDEFGHIJKLMNOPQRRSTUVWXYZ[\]^_`abcdefghhijk?@ABCDEEFGHIJKLMNOPQRSTUVWXYZ[[\]^_`abcdefghijk>?@ABCDEFGHIJKLMNNOPQRSTUVWXYZ[\]^_`abcddefghij>?@AABCDEFGHIJKLMNOPQRS8@VWWXYZ[\]^_`abcdefghij=>?@ABCDEFGHIJJKLMNOPQR?@ABCDEFGHIJKLMNOPQR9WYZ[\]^_`abcdefghh<=>?@ABCDEEFGHIJKLMNOPQ  6X[[\]^_`abcdefgh;<=>?@ABCDEFGHIJKLMNNON 2W\]^_`abcddefg9<=>?@AABCDEFGHIJKLMNOF.V]^_`abcdefg7;<=>?@ABCDEFGHIJJKLMN; *U__`abcdef7;<==>?@ABCDEFGHIJKLMN2 &R`abcdef6:;<=>?@ABCDEEFGHIJKLM("Oabcde59:;<=>?@ABCDEFGHIJKLMLcdd59:;<=>?@AABCDEFGHIJKLId489:;<=>?@ABCDEFGHIJJK 489:;<==>?@ABCDEFGHIJK'3789:;<=>?@ABCDEEFGHIC(17889:;<=>?@ABCDEFGHI:(/6789:;<=>?@AABCDEFGH124U555676N6c6y6666666666666666688888888888866666666666666666666666666 i' ]B Y\ `pp    E m"  ( D  } 3 z p 2 # Oh S +> yrM@`*Q5Fp U45Hv( J 48Tv D@} H6449[ a)] CjF544;] ~+ :m I]?44;] ] Fq L^;4408` ;7UrP\;4,++.,++2U.,++2W,++2X ,++2[ c,++5[ D,++,9i -,++,9n ++,@t   !++.MV #++.N¹, %++.NQ‹'++.T=+](++2Tt/+/'++5>/(++b)++)*++|%*+7 ԖF%wlH 2  yV sw  }   (  Z!  ,  5  Z (    C   B  . h  n  9R %  gU 8l +p  6b  [ U  6} _: M g }]qOJrw}~< |}}+&'}}2%h}} =# a~}}Q #l}}t%#'n}}~ M"(q}}~E 5)s}}~ E I/@w}}~ e/cdII(Ax}}lK/cddeII"Bz}} bcdeeIIF{}} bccdeefIIJ{}} bcddeffgII J|}} abccdeefgghIIO|}}abcddeffghhiII,N|}} `abbcdeefgghiiIIN|}}`aabccdeefghhijjIIN}} _`abbcddeffghiijkkII X}}_``abccdeefgghijjkllII$_}}_`aabcddeffghhijkklmmII($c}}^_``abbcdeefgghiijkllmnIIU$l~}}ཙ^^_`aabccdeefghhijjklmmnoII@-r}}ڄĊ}]^__`abbcddeffghiijkklmnnopII+4s}}~}]^^_``abccdeefgghijjkllmnoopqII4s}}~\]^__`aabcddeffghhijkklmmnoppqrIC4t}}\]]^_``abbcdeefgghiijkllmnnopqqrII-Qy}}\]^^_`aabccdeefghhijjklmmnoopqrrsIIQ{}}[\]]^__`abbcddeffghiijkklmnnoppqrsstI:m|~[[\]^^_``abccdeefgghijjkllmnoopqqrsttII*/Z[\\]^__`aabcddeffghhijkklmmnoppqrrstuuII>Z[\]]^_``abbcdeefgghiijkllmnnopqqrsstuvvI!:[\]^^_`aabccdeefghhijjklmmnoopqrrsttuvwII  6Z]^__`abbcddeffghiijkklmnnoppqrsstuuvwxII 2Y^_``abccdeefgghijjkllmnoopqqrsttuvvwxyI .X_`aabcddeffghhijkklmmnoppqrrstuuvwwxym" D t     5 v, :  E u 4  #W  U  ;   Hh/  l F 5# C|  p j D u G` ~ %t `[ۻJ д4&1 =%- I#- a# -܌,# 9 \" 9 R < : ޘR I5 \ y8qrII.\ ݰY8pqrsII'^ ĸpqrstIIdopqrstuIIjopqqrstuvIIjnopqrstuvwxIIq mnopqrstuvwxyII4p mnopqrstuuvwxyII#p lmnopqrstuvwxyz{IIp lmnopqqrstuvwxyz{|II klmnopqrstuvwxyyz{|}II5kllmnopqrstuvwxyz{|}~II. 5jklmnopqrstuuvwxyz{|}~IIb 5ijklmnopqrstuvwxyz{|}~~IIJ Aټ༴ijklmnopqqrstuvwxyz{|}~II2 Kٶյhijklmnopqrstuvwxyyz{|}~II Kٶ¿hijkllmnopqrstuvwxyz{|}~IN  Kghijklmnopqrstuuvwxyz{|}~II5 ughhijklmnopqrstuvwxyz{|}~~II ufghijklmnopqqrstuvwxyz{|}~ID efghijklmnopqrstuvwxyyz{|}~II>Defghijkllmnopqrstuvwxyz{|}~IIEdfghijklmnopqrstuuvwxyz{|}~I'Aehhijklmnopqrstuvwxyz{|}~~II  G~#f=z"Bc ` /E \kI`%8~ ! S>%\NCtT:4w nS944gKonG644oV7QzU4-.443mzH-++1442<oA,++1/ ri?++ XR3++)=mI-++(3yX6++# -u X1++,"(q mP0++-!2q Y8,++,K~mP1++,I $;Y| \8,++,IIrwY7,++IInP1++)I Y8,++'IoP1++,% I oA-++,$ II Z9,++,# IIoQ2+ +,  PIIZ9,+ +,\IIvQ2+ +,iIIoO0+ +!uIIZ9,+ +)-II2+ +'9II+ +$ FII++,++$  RIIḷ-++$ _II++$ lII++# "yII++" /II( Z x  `~ 1J + n  S1 hX & $c rJl Q }}LP~}}~0+ }}|0w }}~vAR~}}~q3D }}~e = }}c6}}`C}}\f }}X1Px }}~}9 }}~|9 }}s9 ~}}~q0 }}j ~}}h  ~}}g } }^  m~} }[}³} }~[} }~|C,~} }~uC <} }~p0 L} }~i ]}~}}~h  m}}~h }}~h }~f -}~d =u M^ l w W M v;S ֮Z07t cXgyG%` 7_/ MF k} j )sQw  |?a 9! i? q0.~ ߹]ͻu" Ŷmd ϵE6E  ʸ^ e ŵJ T̺. K̷"B ȷ"R ̻"%zǷ~"R;` ͻR"RR ̺R  RRoǷR Ro˻E RoǷ. Ron ֿ.RRon ˺ .RR onƷ .2RR onʺ " 9RRppo onƷ "ARRpp onŶ `"HRRpp onʺ `ORRpp on E#WRRpp on . +^RRpp on.2RR p on. :RRqp p on.ARRqqp p on.IRRqq p o n.PRRqq p o n.#XRRqq p o n+_RRqq p o nm 2eq q p o nm 7hrq q p o nm ;krrq q p o nm @mrr q p o nm Dorr q p o nm @nrr q p o nmzX944844pF54464,kD445 zX644pR944- qQ8447,kQ8446' {kF5446#{]?5445|]>4454|[>4452|[:446. |[:446* II}[:445' II rS9445!+II mR844?II}mG544II~^?5443 IIz~^?4423II󞝝j~\?445/EIIV~\;446*TIIE\;445( II2;445% 'II젟455II袡4DII󜛛 4II顠q II쟞Y#II⤣D/IIަ.;IIܧIIण II٨IIڧiIIԪS Iҫ= IIا( Iά I ̭u ئ] ΫE ̬- ֦ ̫ ͫw ӧ` ͪhLH ͪnGk1 姦wN%B 婨~U, \3 z : _c 﨧 6K % 4 񧦦> x 򧦥[R u +|󦥥 f oN/F7J!!g ~c~;h ( W  9  j4 ` Z R O 1 r0 m& g&"WA U_RQ0LL~0 fl0}kj&%Ne&9/VM T c R "3lCHT' ) b @     o I $    ܡvu n0Q w:h) 쿂C . ʋM  W   T| 7 !V ] 0   D & Fn\o37\ ; ,R  יKՊЂ vrڼG أE ם6 RRՔ6 RRkk} RRlkk z+RRllkh w RRlk`uRRlkVm"RRlkJٵE/RRllk=כE  9RRllk1֗6 RR lk#Ԑ6 RRm lk{ #RRm lky-RRm lka w RRm lkQ RRm lk@RRm l k1RR m l k!&RRnm m l kRRn m l khRRn m l k[ RRn m l kjKRRn m l kj< Rn m l kj, Rn m l kj R n m l kj Ron n m l kje on n m l kjU n m l kjD n m l kj2 n m l kj! n m l kj n m l kjh n m l kjX n m l kjG n m lkdI6hkkj5 n m lkgM2Lkkj% n mljS6/kk j n mlkW;hkk ji n ml[?#[kk j[ n mZ' Dkk jI n mc &kk ji8 n mi fkk ji' nm ml* Ukk ji nm m=:kk ji mO kk ji] m] akk jiLmg Nkk ji:ml 2kk ji*m2ikk jimF]kk jimUFkk ji`ma *kk jiO:;:;l>====V=,<<<<:9999m9C98888r8I87777w7L7# 8fK(鞴k(靳S(靳<(露$(露(蜱3'曱)%䖰† #␰|!qއŽi ܅ƺ]ڂȴSzɯIyʨ>s ondɿdȽ^ȱYǰYǥOƢOƘKŕDŌDĈ<:{8s0m0g)a&[%TOHD; 8/ڡ-ؘ#ؕ!؋؈؁ | wpneb\ݝWߞSޝKߝIស@>➟{7᝞t(❞op䞟i07889:;;<==>?@@ABBCDE&(077899:;<<=>>?@AABCCD(/67889::;<==>??@ABBCD(/667899:;;<=>>?@@ABCC (/567789::;<<=>??@AABC(.5667889:;;<==>?@@ABB5'.45677899:;<<=>>?@AABCC2%+45567889::;<==>??@ABBCDD/ #*445667899:;;<=>>?@@ABCCDED, !)345567789::;<<=>??@AABCDDEFD)'3345667889:;;<==>?@@ABBCDEEFGD&&23445677899:;<<=>>?@AABCCDEFFGHC"%23345567889::;<==>??@ABBCDDEFGGHIB#123445667899:;;<=>>?@@ABCCDEEFGHHIJ@"122345567789::;<<=>??@AABCDDEFFGHHIJK> 1123345667889:;;<==>?@@ABBCDEEFGGHIIJKL01223445677899:;<<=>>?@AABCCDEFFGHHIJJK00123345567889::;<==>??@ABBCDDEFGGHIIJK/01123445667899:;;<=>>?@@ABCCDEEFGHHIJF/00122345567789::;<<=>??@AABCDDEFFGHHIF./01123345667889:;;<==>?@@ABBCDEEFGGHI@.//01223445677899:;<<=>>?@AABCCDEFFGHH@../00123345567889::;<==>??@ABBCDDEFGGH<-.//01123445667899:;;<=>>?@@ABCCDEEFGH;--./00122345567789::;<<=>??@AABCDDEFFG7,-../01123345667889:;;<==>?@@ABBCDEEFG5,--.//01223445677899:;<<=>>?@AABCCDEFF2+,-../00123345567889::;<==>??@ABBCDDEF1+,,-.//01123445667899:;;<=>>?@@ABCCDEE-++,--./00122345567789::;<<=>??@AABCDDE,*+,,-../01123345667889:;;<==>?@@ABBCDE) *++,--.//01223445677899:;<<=>>?@AABCCD' )*++,-../00123345567889::;<==>??@ABBCD$ )**+,,-.//01123445667899:;;<=>>?@@ABCC" ))*++,--./00122345567789::;<<=>??@AABC  ()**+,,-../01123345667889:;;<==>?@@ABB(()*++,--.//01223445677899:;<<=>>?@AAB'())*++,-../00123345567889::;<==>??@AB'(()**+,,-.//01123445667899:;;<=>>?@@A&'())*++,--./00122345567789::;<<=>??@A&''()**+,,-../01123345667889:;;<==>?@@&&'(()*++,--.//01223445677899:;<<=>>?@%&''())*++,-../00123345567889::;<==>??#%&'(()**+,,-.//01123445667899:;;<=>>? "%&&'())*++,--./00122345567789::;<<=>?  %%&''()**+,,-../01123345667889:;;<==>$%&&'(()*++,--.//01223445677899:;<<=>$$%&''())*++,-../00123345567889::;<==#$%%&'(()**+,,-.//01123445667899:;;<=#$$%&&'())*++,--./00122345567789::;<<"#$%%&''()**+,,-../01123345667889:;;<"##$%&&'(()*++,--.//01223445677899:;8""#$$%&''())*++,-../00123345567889::7""##$%%&'(()**+,,-.//01123445667899:4""#$$%&&'())*++,--./00122345567789:2""#$%%&''()**+,,-../011233456678890""#$%&&'(()*++,--.//0122344567789.""#$$%&''())*++,-../0012334556788,""#$%%&'(()**+,,-.//011234456678*""#$$%&&'())*++,--./001223455677( ""#$%%&''()**+,,-../01123345667& ""#$%&&'(()*++,--.//0122344567$ !""#$$%&''())*++,-../0012334556"I""#$%%&'(()**+,,-.//011234456 .56789:;<=>?@ABCDEFGH((.56789:;<==>?@ABCDEFG(-456789:;<=>?@ABCDEEF(-4567889:;<=>?@ABCDEF (,3456789:;<=>?@AABCDE(,34456789:;<=>?@ABCDE7'+23456789:;<==>?@ABCDEF4%)123456789:;<=>?@ABCDEEFG1 #(1234567889:;<=>?@ABCDEFGHH/ !'0123456789:;<=>?@AABCDEFGHIH+$01234456789:;<=>?@ABCDEFGHIJJG(#/0123456789:;<==>?@ABCDEFGHIJKLH$#/00123456789:;<=>?@ABCDEEFGHIJKLMF! ./01234567889:;<=>?@ABCDEFGHIJKLMNND-./0123456789:;<=>?@AABCDEFGHIJKLMNOPC-./01234456789:;<=>?@ABCDEFGHIJJKLMNOPQ,-./0123456789:;<==>?@ABCDEFGHIJKLMNOPQ,-./00123456789:;<=>?@ABCDEEFGHIJKLMNOP+,-./01234567889:;<=>?@ABCDEFGHIJKLMNNK++,-./0123456789:;<=>?@AABCDEFGHIJKLMNJ*+,-./01234456789:;<=>?@ABCDEFGHIJJKLME)*+,-./0123456789:;<==>?@ABCDEFGHIJKLME)*+,-./00123456789:;<=>?@ABCDEEFGHIJKL?()*+,-./01234567889:;<=>?@ABCDEFGHIJKL?()*++,-./0123456789:;<=>?@AABCDEFGHIJK:'()*+,-./01234456789:;<=>?@ABCDEFGHIJJ8''()*+,-./0123456789:;<==>?@ABCDEFGHIJ5&'()*+,-./00123456789:;<=>?@ABCDEEFGHI3 %&'()*+,-./01234567889:;<=>?@ABCDEFGHI0 %&'()*++,-./0123456789:;<=>?@AABCDEFGH. $%&'()*+,-./01234456789:;<=>?@ABCDEFGH+ $%&''()*+,-./0123456789:;<==>?@ABCDEFG( #$%&'()*+,-./00123456789:;<=>?@ABCDEEF& ##$%&'()*+,-./01234567889:;<=>?@ABCDEF#"#$%&'()*++,-./0123456789:;<=>?@AABCDE!!"#$%&'()*+,-./01234456789:;<=>?@ABCDE!"#$%&''()*+,-./0123456789:;<==>?@ABCD !"#$%&'()*+,-./00123456789:;<=>?@ABCD !"##$%&'()*+,-./01234567889:;<=>?@ABC !"#$%&'()*++,-./0123456789:;<=>?@AAB !"#$%&'()*+,-./01234456789:;<=>?@AB !"#$%&''()*+,-./0123456789:;<==>?@A !"#$%&'()*+,-./00123456789:;<=>?@A !"##$%&'()*+,-./01234567889:;<=>?@  !"#$%&'()*++,-./0123456789:;<=>?@  !"#$%&'()*+,-./01234456789:;<=>? !"#$%&''()*+,-./0123456789:;<==> !"#$%&'()*+,-./00123456789:;<=> !"##$%&'()*+,-./01234567889:;<= !"#$%&'()*++,-./0123456789:;<= !"#$%&'()*+,-./01234456789:;< !"#$%&''()*+,-./0123456789:;8 !"#$%&'()*+,-./00123456789:7 !"##$%&'()*+,-./012345678893 !"#$%&'()*++,-./01234567892 !"#$%&'()*+,-./0123445678/  !"#$%&''()*+,-./012345678.  !"#$%&'()*+,-./001234567+  !"##$%&'()*+,-./01234567*  !"#$%&'()*++,-./0123456'  !"#$%&'()*+,-./0123445%  !"#$%&''()*+,-./012345# !"#$%&'()*+,-./001234!I !"##$%&'()*+,-./01234666666666666666666666666666666666666666666666666|6x6n6i6a6Z6S6K6E686'666555 cXMBI8,@" "y# o@%c`'X)M+1+?+M+Z+g+u++++*Phx F l ٔ95޻a T։+qT,ԍ|!:ԫ !7MauӉӘӨӺ+8GUb|o||y҉nҖnҥfҲ`ҿ`SR$N2DAD*U`abbcdeefgghiijkllmnnopqqrsstuvvwxxyy?%SabccdeefghhijjklmmnoopqrrsttuvwwxyyM!PbcddeffghiijkklmnnoppqrsstuuvwxxyyELcdeefgghijjkllmnoopqqrsttuvvwxyy#GdeffghhijkklmmnoppqrrstuuvwwxyycCdfgghiijkllmnnopqqrsstuvvwxxyy?dghhijjklmmnoopqrrsttuvwwxyyH :chiijkklmnnoppqrsstuuvwxxyyg"5aijjkllmnoopqqrsttuvvwxyy #1`jkklmmnoppqrrstuuvwwxyy%,]kllmnnopqqrsstuvvwxxy.''Zlmmnoopqrrsttuvwwxy>)"VmnnoppqrsstuuvwxxI+lmnoopqqrsttuvvwxR+lmmnoppqrrstuuvwwY+"llmnnopqqrsstuvvwa+(klmmnoopqrrsttuvwb+.kklmnnoppqrsstuuvb+4jkllmnoopqqrsttuvg+:jkklmmnoppqrrstuuh+@ijkllmnnopqqrsstuh+Fijjklmmnoopqrrsttm+Kiijkklmnnoppqrsstn Qhijjkllmnoopqqrstm*WR1 Whhijkklmmnoppqrrsm:WXXYA ]ghiijkllmnnopqqrslLWWXYYZQ- bghhijjklmmnoopqrrlUVWXXYZZ[Z>ffghiijkklmnnoppqrlUVVWXYYZ[[\]O)efgghijjkllmnoopqqk!UUVWWXYZZ[\\]^[: effghhijkklmmnoppqi,TUVVWXXYZ[[\]]^_`K$eefgghiijkllmnnopqd8TTUVWWXYYZ[\\]^^_`aZ5deefghhijjklmmnoopdCSTUUVWXXYZZ[\]]^__`abbTddeffghiijkklmnnopcNSTTUVVWXYYZ[[\]^^_``abccdeefgghijjkllmnoocRRSTUUVWWXYZZ[\\]^__`aabcddeffghhijkklmmnoc QRSSTUVVWXXYZ[[\]]^_``abbcdeefgghiijkllmnn]QRRSTTUVWWXYYZ[\\]^^_`aabccdeefghhijjklmmn[PQRSSTUUVWXXYZZ[\]]^__`abbcddeffghiijkklmn[%PQQRSTTUVVWXYYZ[[\]^^_``abccdeefgghijjkllmY-PPQRRSTUUVWWXYZZ[\\]^__`aabcddeffghhijkklmS4OPQQRSSTUVVWXXYZ[[\]]^_``abbcdeefgghiijkllS:OOPQRRSTTUVWWXYYZ[\\]^^_`aabccdeefghhijjklR@NOPPQRSSTUUVWXXYZZ[\]]^__`abbcddeffghiijkkLFNOOPQQRSTTUVVWXYYZ[[\]^^_``abccdeefgghijjkLKMNOPPQRRSTUUVWWXYZZ[\\]^__`aabcddeffghhijkKLMNNOPQQRSSTUVVWXXYZ[[\]]^_``abbcdeefgghiijE LMMNOOPQRRSTTUVWWXYYZ[\\]^^_`aabccdeefghhijEKLMNNOPPQRSSTUUVWXXYZZ[\]]^__`abbcddeffghiiDKLLMNOOPQQRSTTUVVWXYYZ[[\]^^_``abccdeefgghi>KKLMMNOPPQRRSTUUVWWXYZZ[\\]^__`aabcddeffghh>JKLLMNNOPQQRSSTUVVWXXYZ[[\]]^_``abbcdeefggh=$JJKLMMNOOPQRRSTTUVWWXYYZ[\\]^^_`aabccdeefgh7)IJKKLMNNOPPQRSSTUUVWXXYZZ[\]]^__`abbcddeffg7-IJJKLLMNOOPQQRSTTUVVWXYYZ[[\]^^_``abccdeefg52HIJKKLMMNOPPQRRSTUUVWWXYZZ[\\]^__`aabcddeff06HIIJKLLMNNOPQQRSSTUVVWXXYZ[[\]]^_``abbcdeef0;HHIJJKLMMNOOPQRRSTTUVWWXYYZ[\\]^^_`aabccdee-@GHIIJKKLMNNOPPQRSSTUUVWXXYZZ[\]]^__`abbcdde*DGHHIJJKLLMNOOPQQRSTTUVVWXYYZ[[\]^^_``abccde*FFGHHIJKKLMMNOPPQRRSTUUVWWXYZZ[\\]^__`aabcdd$EFGGHIIJKLLMNNOPQQRSSTUVVWXXYZ[[\]]^_``abbcd$ EFFGHHIJJKLMMNOOPQRRSTTUVWWXYYZ[\\]^^_`aabcc"DEFGGHIIJKKLMNNOPPQRSSTUUVWXXYZZ[\]]^__`abbcDEEFGHHIJJKLLMNOOPQQRSTTUVVWXYYZ[[\]^^_``abc/`mnopqrstuuvwxyz{|}~J*]nopqrstuvwxyz{|}~~[&Zpqqrstuvwxyz{|}~Q Vqrstuvwxyyz{|}~)Qrstuvwxyz{|}~tMsuuvwxyz{|}~$Hrvwxyz{|}~~U Cqwxyz{|}~y" >pyyz{|}~ #8nz{|}~$%3k{|}~5'-h}~~I)(d~V+}~`+!}~i+(|}~r+.|}~~s+5{|}~r+UVWXYZ[\]^_`abcdefghhijklmnopqrstuvwxyz{|}_EUVWXYZ[[\]^_`abcdefghijklmnopqqrstuvwxyz{|XKTUVWXYZ[\]^_`abcddefghijklmnopqrstuvwxyyz{XQTUVWWXYZ[\]^_`abcdefghijkllmnopqrstuvwxyz{WRSTUVWXYZ[\]^__`abcdefghijklmnopqrstuuvwxyzP RRSTUVWXYZ[\]^_`abcdefghhijklmnopqrstuvwxyzPQRSTUVWXYZ[[\]^_`abcdefghijklmnopqqrstuvwxyNPQRSTUVWXYZ[\]^_`abcddefghijklmnopqrstuvwxyGPQRSTUVWWXYZ[\]^_`abcdefghijkllmnopqrstuvwxG!OPQRSTUVWXYZ[\]^__`abcdefghijklmnopqrstuuvwF&OPQRRSTUVWXYZ[\]^_`abcdefghhijklmnopqrstuvw@+NOPQRSTUVWXYZ[[\]^_`abcdefghijklmnopqqrstuv?0NNOPQRSTUVWXYZ[\]^_`abcddefghijklmnopqrstuv>4MNOPQRSTUVWWXYZ[\]^_`abcdefghijkllmnopqrstu89LMNOPQRSTUVWXYZ[\]^__`abcdefghijklmnopqrstu7?LMNOPQRRSTUVWXYZ[\]^_`abcdefghhijklmnopqrst3CKLMNOPQRSTUVWXYZ[[\]^_`abcdefghijklmnopqqrs0HKLMNNOPQRSTUVWXYZ[\]^_`abcddefghijklmnopqrs0IJKLMNOPQRSTUVWWXYZ[\]^_`abcdefghijkllmnopqr)IJJKLMNOPQRSTUVWXYZ[\]^__`abcdefghijklmnopqr) HIJKLMNOPQRRSTUVWXYZ[\]^_`abcdefghhijklmnopq&GHIJKLMNOPQRSTUVWXYZ[[\]^_`abcdefghijklmnopq!GHIJKLMNNOPQRSTUVWXYZ[\]^_`abcddefghijklmnop!RϽһF==711&$$!i` Yvg SB O򾽽 I FE >bu <|򽼼W 3 *8 39 )5G )RU nc sw a '쎽J A 웽5 ] 짽 x 첼  索 𠩩2 񜩨M |񕨨i )p򓨨3c󊨧>W􉧧#GJ<R=Y\0vtf%u Hpm!yk-AcH ae엷[WK + ++#gd +ku0 5l@= nPC"p`J #ro.T }=\ c j s #| % % & . . . 4 7j [RRIAA311-!!| z sY m' d `g V T%t G6L G,J$ 9O\ 9yo , +   :e ` H  *    ) I q ( 6 DQx4_fXlTzC3p'"4Bej n/+++&&0)/ :+J H.d R0~\3/e 4Is d ~ *ڈ * * 4 8 8 : F F F N T1krr q p o nmrr q p o nm*rr qk%%!Boo nm9rr qV 8oo nmFrr q? 4oo nmTrr qp( 2oo nmarr qp .oo nmlirr qpl ,oo nm/qrr qpZ 'oo nmCrr qpH &oo nmSrr qp5 !oo nma rr qp# oo nmi"rrq qp oo nm$*rrq qpo oon nm73rq qpd oon nmJ;q qpW on nmZDq qpI n nmd Lqqp< n nmjTqqp. nnm, ]qqp! nnm? dqqp nnmQ jqq p nm^ qpiknnmg qq p^hnnml! qq pUennm4 qq pMannmGqq poF`nnmVqq po>[nnmb %qq po6Znnmmj+qq po/Tnmm(2qqp po&Tnmm;8qp poNmmN>qp poMmm\3Dp poGmmgiJp po Gmml.ePppo Amm0Vppo@mmD\ppooona ll kjBoona ll kjHoona ll k jMoonf ll k jRoo nh ll k jVoo ng ll k ji[oo ni ll k jiboo nm ll k jieoo nm ll k jihoo nm $ll k jinoo nm &ll k ji#R9{;VW%r/𑐐 rk*KU!$? ) h?oX[B3-vPq'\ Fk0Dta^7I4zT ,waoLᑐ7ז"՗IyCd;O4y;-r&'l! d狊{#]h&VR(P>* H~*, B{~~.;w~|05q~~j3/l~~}V5)f~}}B7s~~}}.MD}~~}}\ n~}}j,N~}px:(s~~}}\􏎍J X~~}}IW2x~~}}4e)`~~}}!퇆r7<}~~}}㌋{Gh~~}}v⍌~~}}c퇆~~}}O䌋~}}24%Uc>I"?u!8k E  b* qPM(|=ySj/.  U"[6Db=s j^TjID@!5#,&$(p*|L,q(. g0^3S5Ix7-T}z0/: Hb H| .X`G <` i }    \migkk ji>m'Wkk ji-m;>kk jimM!kk ji m[ ckk jicfQkk jiR5kk j iA!jkk j i1 ^kk j i Ikk j ih,kk j ihdhkk j ihUZkk j ihD@kk j ih3$kk j ih# dkk j ihTkk j ihf8kk j ihXjkk j ihG akk j ih7Lkk j ih&0kk j ihhkk j ih[kk j ih[Dkk j ihJ'kk j ih:fkk j i h)Vkk j i h;kk j i hkk j i h_ bkk j i hMNkk j i hg=k j i hg,k j i hgk j i hg 4ckkj j i hga0_jj i hgP*\jj i hg@&Xjj i hg0!Tjji i hgPi i hg!Kii hgc#Fhii hgT&Agiih hgC( =dhhg2* 7chhg",3`hhg..]hhgge0*ZggW3%VggG5!Rgg67]gg&9 7eggjhDXggjiO!?gg\jiiZ, \ggLjiib8 Fg g< igB(`g g+ ihN Lg g ihY+/cg g iha9Sggai hgRi hgAi hg)6666z6Q6(55555W5-44444[423 3 3 3 3a 38 3 2 2 2 2g 2= 2 1 1 1 1k 1C 1 0 0 0 0q 0J 0" / / / / /] /7 / ....s.L.$-----m-P-2, .㝞cF㞟M`E%=P6yCo7 f!1" h$2% h'2( h*2+ i-2. i022 k365r6:8y9A;}=I ""#$$%&&'())*++,--./001223455I ""#$%%&''()**+,,-../011233452I""#$%&&'(()*++,--.//0122344561I""#$$%&''())*++,-../00123345567/I!##$%%&'(()**+,,-.//011234456678.I#$$%&&'())*++,--./00122345567789-I!$%%&''()**+,,-../01123345667889I$%&&'(()*++,--.//0122344567789I !%&''())*++,-../0012334556788I%&'(()**+,,-.//011234456678!I "&'())*++,--./001223455677"I''()**+,,-../01123345667$I #(()*++,--.//0122344567%I())*++,-../0012334556'I $)**+,,-.//011234456(I)*++,--./001223455*I &*+,,-../01123345+I++,--.//0122344-I '+,-../0012334.I,,-.//0112340I (--./0012232I-../011233I).//01225I./00126I,/0118I!0019I-1;I#I !"#$%&'()*++,-./0123I  !"#$%&'()*+,-./01230I !"#$%&''()*+,-./01234/I !"#$%&'()*+,-./0012345.I  !"##$%&'()*+,-./01234567-I !"#$%&'()*++,-./012345678,I  !"#$%&'()*+,-./0123445678I !"#$%&''()*+,-./012345678I  !"#$%&'()*+,-./001234567I !"##$%&'()*+,-./01234567!I  !"#$%&'()*++,-./0123456"I !"#$%&'()*+,-./0123445$I !"#$%&''()*+,-./012345%I!"#$%&'()*+,-./001234'I ##$%&'()*+,-./01234(I#$%&'()*++,-./0123*I $%&'()*+,-./0123+I%&''()*+,-./012-I !&'()*+,-./001.I&'()*+,-./010I #()*++,-./02I()*+,-./03I %)*+,-./5I*+,-./6I'+,-.8I+,-9I)-;I 5Q544c43 2 0 4.+, *1)H'c% #,"c @|!##\$&P')F* ,;- /2 0{ 2) 3r5%6p8$9n;#;l=!O;_6 l6{)ы(,ј$"%Ѧ(|Ѷ/u3k% < AFNRY_cmoڴvڴvٮȀ٧أȆؙȉחȌ׌Ȓ֊ȓG~Ț~ȚLqqRed YZ"W _N (J iB1> t6:1~+#D%% %O%%Y%#%d(+˷.oʯ.!5ʦ(" yɛ$$>ɑ% x~'5n( o\*-Ls+c0- :&vWDDEFFGHHIJKKLMMNOPPQRRSTUUVWWXYZZ[\\]^__`aab!CDEEFGGHIIJKLLMNNOPQQRSSTUVVWXXYZ[[\]]^_``ab%CCDEFFGHHIJJKLMMNOOPQRRSTTUVWWXYYZ[\\]^^_`aa*BCDDEFGGHIIJKKLMNNOPPQRSSTUUVWXXYZZ[\]]^__`a/BCCDEEFGHHIJJKLLMNOOPQQRSTTUVVWXYYZ[[\]^^_``*4ABCDDEFFGHHIJKKLMMNOPPQRRSTUUVWWXYZZ[\\]^__`/:* 8ABBCDEEFGGHIIJKLLMNNOPQQRSSTUVVWXXYZ[[\]]^_` 9:;( =AABCCDEFFGHHIJJKLMMNOOPQRRSTTUVWWXYYZ[\\]^^_ B9::;;&?@ABBCDDEFGGHIIJKKLMNNOPPQRSSTUUVWXXYZZ[\]]^_H99:;;<<# ?@@ABCCDEEFGHHIJJKLLMNOOPQQRSTTUVVWXYYZ[[\]^^U89::;<<==??@AABCDDEFFGHHIJKKLMMNOPPQRRSTUUVWWXYZZ[\\]^\889:;;<==>?@@ABBCDEEFGGHIIJKLLMNNOPQQRSSTUVVWXXYZ[[\]]d7899:;<<=>>?@AABCCDEFFGHHIJJKLMMNOOPQRRSTTUVWWXYYZ[\\]o7889::;<==>??@ABBCDDEFGGHIIJKKLMNNOPPQRSSTUUVWXXYZZ[\[t67899:;;<=>>?@@ABCCDEEFGHHIJJKLLMNOOPQQRSTTUVVWXYYZ[[WȀ67789::;<<=>??@AABCDDEFFGHHIJKKLMMNOPPQRRSTUUVWWXYZZ[WȈ667889:;;<==>?@@ABBCDEEFGGHIIJKLLMNNOPQQRSSTUVVWXXYZ[RȎ5677899:;<<=>>?@AABCCDEFFGHHIJJKLMMNOOPQRRSTTUVWWXYYZPȜ5567889::;<==>??@ABBCDDEFGGHIIJKKLMNNOPPQRSSTUUVWXXYZOȟ45667899:;;<=>>?@@ABCCDEEFGHHIJJKLLMNOOPQQRSTTUVVWXYYJȪ45567789::;<<=>??@AABCDDEFFGHHIJKKLMMNOPPQRRSTUUVWWXYJȪ345667889:;;<==>?@@ABBCDEEFGGHIIJKLLMNNOPQQRSSTUVVWXXGȸ3445677899:;<<=>>?@AABCCDEFFGHHIJJKLMMNOOPQRRSTTUVWWXDȸ3345567889::;<==>??@ABBCDDEFGGHIIJKKLMNNOPPQRSSTUUVWXB23445667899:;;<=>>?@@ABCCDEEFGHHIJJKLLMNOOPQQRSTTUVVW>22345567789::;<<=>??@AABCDDEFFGHHIJKKLMMNOPPQRRSTUUVW=123345667889:;;<==>?@@ABBCDEEFGGHIIJKLLMNNOPQQRSSTUVV81223445677899:;<<=>>?@AABCCDEFFGHHIJJKLMMNOOPQRRSTTUV8/23345567889::;<==>??@ABBCDDEFGGHIIJKKLMNNOPPQRSSTUU3%23445667899:;;<=>>?@@ABCCDEEFGHHIJJKLLMNOOPQQRSTTU30345567789::;<<=>??@AABCDDEFFGHHIJKKLMMNOPPQRRSTU-(345667889:;;<==>?@@ABBCDEEFGGHIIJKLLMNNOPQQRSST-345677899:;<<=>>?@AABCCDEFFGHHIJJKLMMNOOPQRRST(  *5567889::;<==>??@ABBCDDEFGGHIIJKKLMNNOPPQRSS(4667899:;;<=>>?@@ABCCDEEFGHHIJJKLLMNOOPQQRS$ ,67789::;<<=>??@AABCDDEFFGHHIJKKLMMNOPPQRR" 57889:;;<==>?@@ABBCDEEFGGHIIJKLLMNNOPQQR /7899:;<<=>>?@AABCCDEFFGHHIJJKLMMNOOPQR*  889::;<==>??@ABBCDDEFGGHIIJKKLMNNOPPQ*299:;;<=>>?@@ABCCDEEFGHHIJJKLLMNOOPQ*$9::;<<=>??@AABCDDEFFGHHIJKKLMMNOPP*4:;;<==>?@@ABBCDEEFGGHIIJKLLMNNOP*(:;<<=>>?@AABCCDEFFGHHIJJKLMMNOO47;<==>??@ABBCDDEFGGHIIJKKLMNNO8,;<=>>?@@ABCCDEEFGHHIJJKLLMNO 8:<=>??@AABCDDEFFGHHIJKKLMMN 8 /==>?@@ABBCDEEFGGHIIJKLLMN8<>>?@AABCCDEFFGHHIJJKLMM8 2>??@ABBCDDEFGGHIIJKKLM8!=?@@ABCCDEEFGHHIJJKLH=6?@AABCDDEFFGHHIJKKEF%@@ABBCDEEFGGHIIJKBF!9AABCCDEFFGHHIJJ>=")ABBCDDEFGGHIIJ:8$;BCCDEEFGHHIJ5/%)BCDDEFFGHHI.*':CDEEFGGHI((&BDEFFGHH!*:DEFGGH+#CEFGH--FFE:*FGHIJKLMNOPQRSTUVWWXYZ[\]^_`abcdefghijkllmno"FGHIJJKLMNOPQRSTUVWXYZ[\]^__`abcdefghijklmno&EFGHIJKLMNOPQRRSTUVWXYZ[\]^_`abcdefghhijklmn ,EEFGHIJKLMNOPQRSTUVWXYZ[[\]^_`abcdefghijklmn 1DEFGHIJKLMNNOPQRSTUVWXYZ[\]^_`abcddefghijklm5CDEFGHIJKLMNOPQRSTUVWWXYZ[\]^_`abcdefghijkll9* :CDEFGHIJJKLMNOPQRSTUVWXYZ[\]^__`abcdefghijkl 9:;( >BCDEFGHIJKLMNOPQRRSTUVWXYZ[\]^_`abcdefghhijk 89:;;&ABCDEEFGHIJKLMNOPQRSTUVWXYZ[[\]^_`abcdefghijk!889:;<<# @ABCDEFGHIJKLMNNOPQRSTUVWXYZ[\]^_`abcddefghij'789:;<=>>@AABCDEFGHIJKLMNOPQRSTUVWWXYZ[\]^_`abcdefghij*6789:;<=>?@ABCDEFGHIJJKLMNOPQRSTUVWXYZ[\]^__`abcdefghi-6789:;<==>?@ABCDEFGHIJKLMNOPQRRSTUVWXYZ[\]^_`abcdefghh256789:;<=>?@ABCDEEFGHIJKLMNOPQRSTUVWXYZ[[\]^_`abcdefgf567889:;<=>?@ABCDEFGHIJKLMNNOPQRSTUVWXYZ[\]^_`abcddefa:456789:;<=>?@AABCDEFGHIJKLMNOPQRSTUVWWXYZ[\]^_`abcdefa>4456789:;<=>?@ABCDEFGHIJJKLMNOPQRSTUVWXYZ[\]^__`abcde\A3456789:;<==>?@ABCDEFGHIJKLMNOPQRRSTUVWXYZ[\]^_`abcdeZG23456789:;<=>?@ABCDEEFGHIJKLMNOPQRSTUVWXYZ[[\]^_`abcdYH234567889:;<=>?@ABCDEFGHIJKLMNNOPQRSTUVWXYZ[\]^_`abcdRN123456789:;<=>?@AABCDEFGHIJKLMNOPQRSTUVWWXYZ[\]^_`abcRN1234456789:;<=>?@ABCDEFGHIJJKLMNOPQRSTUVWXYZ[\]^__`abOT0123456789:;<==>?@ABCDEFGHIJKLMNOPQRRSTUVWXYZ[\]^_`abLS00123456789:;<=>?@ABCDEEFGHIJKLMNOPQRSTUVWXYZ[[\]^_`aIX/01234567889:;<=>?@ABCDEFGHIJKLMNNOPQRSTUVWXYZ[\]^_`aEZ./0123456789:;<=>?@AABCDEFGHIJKLMNOPQRSTUVWWXYZ[\]^_`D]./01234456789:;<=>?@ABCDEFGHIJJKLMNOPQRSTUVWXYZ[\]^__>`-./0123456789:;<==>?@ABCDEFGHIJKLMNOPQRRSTUVWXYZ[\]^_>a,/00123456789:;<=>?@ABCDEEFGHIJKLMNOPQRSTUVWXYZ[[\]^8g#/01234567889:;<=>?@ABCDEFGHIJKLMNNOPQRSTUVWXYZ[\]^8g-0123456789:;<=>?@AABCDEFGHIJKLMNOPQRSTUVWWXYZ[\]2m&1234456789:;<=>?@ABCDEFGHIJJKLMNOPQRSTUVWXYZ[\]2m023456789:;<==>?@ABCDEFGHIJKLMNOPQRRSTUVWXYZ[\,m(23456789:;<=>?@ABCDEEFGHIJKLMNOPQRSTUVWXYZ[[+m24567889:;<=>?@ABCDEFGHIJKLMNNOPQRSTUVWXYZ[' m *456789:;<=>?@AABCDEFGHIJKLMNOPQRSTUVWWXYZ% m 356789:;<=>?@ABCDEFGHIJJKLMNOPQRSTUVWXYZ"m -6789:;<==>?@ABCDEFGHIJKLMNOPQRRSTUVWXY m 6789:;<=>?@ABCDEEFGHIJKLMNOPQRSTUVWXYl1889:;<=>?@ABCDEFGHIJKLMNNOPQRSTUVWXl#89:;<=>?@AABCDEFGHIJKLMNOPQRSTUVWWl39:;<=>?@ABCDEFGHIJJKLMNOPQRSTUVWl(:;<==>?@ABCDEFGHIJKLMNOPQRRSTUVl7;<=>?@ABCDEEFGHIJKLMNOPQRSTUVl+;<=>?@ABCDEFGHIJKLMNNOPQRSTU l:=>?@AABCDEFGHIJKLMNOPQRSTU l /=>?@ABCDEFGHIJJKLMNOPQRSTl<>?@ABCDEFGHIJKLMNOPQRRSl 3?@ABCDEEFGHIJKLMNOPQRSl!>@ABCDEFGHIJKLMNNOPQMl7AABCDEFGHIJKLMNOPQJ l&ABCDEFGHIJJKLMNOPF l!:BCDEFGHIJKLMNOPCl"*CDEEFGHIJKLMNO=l$=DEFGHIJKLMNN9l%*DEFGHIJKLMN2k'3II 5I7II$9I/:> T V b b% b* j* p8 p8 p< }F }F }O TYTra$b<fVo`¨&Ii-Q x  »:Y!BaŸ!@a  !"=$a%€'!);+b,.!0;2b35!789J:>o nm &ll k jio nm 'llk k jio nm ,lk k jion nm ,lk k ji nm ,k k ji nm 0kk ji nm 2kk ji nm 2kk j in m 3kk j in m 9kk j in m 9kk j ihnn ml 9kk j ihnn ml$ Bkk j ihn ml&(Xkk j ihn ml&4akk j ihn ml,?gkk j ihn ml,Kjkk j ihn ml.'Vlk k j ihn ml:2`llk k j ihnm m l k j ihnm m l k j ih m l k j ih m l k j ihR m l k j ihR+mm l k j ihR=mm l k j ihRKm l k j ihRY!m l k j ihR/m l k j ihRR@ m l k j iRQm l k j iR\$ m l k jiR6 m l k jiRD m l k jiRUm l k jiR(ml l k jiR:ml l k jiRH l k jiR l k jiR, l k jiRR:l k jRHl k jRl kjR,l kjR: l kjRH"l kjR$l kjR,%l kjR:'l kjR)l kjR+l kjRR,,l kR:.lkkR0kR2kR,3kR5kR7kR9R"; >;:*8Q7t5412Y0{ . -8+b) ("&@$b" !$@b$!@#g$&$(@*j+ - $/ A1䌋~~}}T눇~~}}E拊~}}y1􃂂~~}}f눇~~}}|D芉~~}}m 򄃃~~}}|F!鉈~~}}f#剈~~}}y<$~~}\&鈇~~o*(ꈇ~{C)I]+II+-IE.󅄄II_0󆅅II,2IIE3II`5Iu-7IE8IY:m"< >   Z ( }:  !0#n$#&M({ )ª&+N-| .&0N2| 3&5O7z 8 :<< >i hgEi hg9i hgd(i hgTi h gf8i h gZ i h gf9!ih h gT#ih h gd2$ h gL& hg\#( hge7)hgRL+hgR#-hgR8.hgRL0hgR#2hgRR83hRL5hR\$7hR78RG:W< >,,,o++*+)b(c'Y&,% #D!  ,gJ  !%#P%~ &(F*t+ - =/ j0244b57%9H;n$;%'-(o* ,\- .H @0fY3 }p7 c`j24$6G8j9;$7777AC !syncthing-gtk-0.9.4.4/icons/st-logo-128.ico000066400000000000000000003025361352162771300202020ustar00rootroot00000000000000 hV  00 %f@@ (B; (6}(  ?ÁIŁƂȄǃǂƁLf Dž Ʌ ͎աAۭZۭ[աB͎ɉDž $ ȉ ʊ ݳcϝϛĄĄϛԧ׭ʋƆ$UɌ̍ϙקF͏̍̍̏yҜ-Ɍ fȎF͏߷fКқ(͐͐͐͐͐łj͏Ɍ Lʑm߹eϕΔΓΓљݴZҜդ6تDԠқ$˒ҡ.Қ̍}sة}ϗИӜ۰M͕Йѕߺ_۱K޸ZkʅΐККɄgϙѝcώҝҝҝҝҝݵQw֞ʂҟ˄iѝПݶMؠӢӠӠӠӠӠӠث3ՙްeџѠת*ڤݸNԤԤԤԤԤԤԤح2̀ѠΡDզqٟٮ1էէէէէէح.^ΡJԨתӌڟ߼O׫"֪֪׫!޻LڞՏٯ,ԧȣիخ!tަܡӊӉܠަwخ"֫ ϧ ȣ֭!ذ!ܷ3XopYܷ4ٰ"ծ"ϧ Ҭ!Dְ"ױ#ٳ$ٳ$ױ#կ"֮ FU( @ \<h^uĀɃɃ Łvܓa`?m##/1Z€ ҋ щ ̇ ʅ Ʉ Ʉ ʅ ̇ Љ Ӌ ā ^5#8  }SΉ ֎ ̈ ɅȂǀǁȁǀȁɅ̈ Վ Ћ X )+v ْ ̉ Ɇǁˊ֢Ayңݸݹӥ|פD̋ǁȃɂ֋z 1!52"7ą Ր ˉ Ʉ͍uy٩Mąݳaӏ ɇ ;)B'(Ć ӑˊ Ʌ٩KNJاGї%Αΐі$ئDńΙЌʊ 0!3  y ֔̌ ʇtsΏɅʈˊ ̋ ̋ ˊ ʈɅΏј'Ԑ   yT ܙ͎ʈuԞ0Ɇ̍ ͏͏͏͏͏͏͏͏ˊݷі̌ ۘ] ''ВВˋ۬Lїˋΐ͐͐͐͐͐͐͐͐ΐʈ͓ݲYˊϑԕ2#4] ۛ̍ϓա2̌ΒΒΒΒΒΒΒΒΒΒ̍ئ=c޴Zј͐ ښf ‹В Ԡ,љpˌϔϔϔϔϔϔϔϔϔΓ͐ ϔة@ʊʉiʉ̍ѕɐ  W>`Ֆ ޵Zlˊ͏͐Α Β ϓϔϕϕΑ ЖқЕȃ̎ϕϔϕљϔٜaF mh כ|eܲQ٪?գ/ӝ"Иϕ͏٪?ϕЖЗЗ͐ݴUΒ לnԜ߶޴ϔ ИИИϕ ڬAΏΒԛ͗Ж ~ԚڭA^s̉֡Йљњњјԡ%ϕ ҚΗҜћЗ nљϗ ϖ ϖ ϕϖ ϗ ЙҜӞۯCϕқҜқӞљћҜӞҝЙ ӞҜҝҝҝҝҝҝҝҝњצ+ܬ߳`ЗҝҜӟњҝӞΛԟњ ܪة/ҝӟӟӟӟӟӟӟӟӟҝћӞИ ݵM˂ћњ բ ћԟϜأћ ̈́޷OҝӠӠӠӠӠӠӠӠӠӡӠӠӠћ ٫3ڤ֦&gЌћ ףܐnܨҞ޸OҏҜ ԢԢԢԢԢԢԢԢԢԢԢԢԢԢҞ֤ ψҝ ܩtTA Zܩԣ֥եԣդդդդդդդդդդդդդդԡԡت+ު_I hř٩Ӡυxӟ եեեեեեեեեեեեեեեԢ޴;͝eզث&۱7ԣ֧֧֧֧֧֧֧֧֧֧֧֧֧֧ӡ ΁p$"֨ګԤ^ج&ե֩֩֩֩֩֩֩֩֩֩֩֩զת Ցۯ*ګ.%-v]!תե҇ܳ6եשתתתתתתתתתեڱ/הեԥh "׫֨ӈsج է֩ת׫׫ת֩է׫kؔ֩׫"  ! ʢ#׭֩cӇL۳0ٯ%ٯ%۳/Jтl֩׬"Ѩ +"*,#-ʣ $د"׫۳.֍ٔܵ2֪خ!$ѩ!5+7#!%ܳ$د׬۳*\ؑڔ`۴-׬دܳ$%+#* zdٲ$&޶%ٱ!دخدٰٰدخدٱ!ݵ%&ܴ$j  (!%oʧ"&&޷%۴%ڴ$ڴ$۴%޷%&&ͩ"t-%+YJ[|!ֱ%ܶ&ܶ&ײ%!֙~]M`??(0` ap;xj||~ǁǂǁƁÀϾ||woo@nUq6{zĀƂȃȃȃȃȃȃȃȃȃȃȃȃƁĀ{w۱L޷[lʆ߻cЙњњњњњњЙsث=КњњЙКћћћت:ԛ֦1КћћћћћћћћћККККЛɂݰٯEКћћћћћКgگFКћћћЛќќќت8{ќќќќќќќќќќќќќќќќԢ&Ύ޸ZћќќќќћgڰFќќќқќҝҝҝש3̇ѝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝѝҟٯC޹YܴMת6БpҞҝҝҝѝsٮ@ѝҝҝѝʘҞҞҞե*֝ҟҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞӡ{˅ԣ$ҞҞҞ΋ש3ҞҞҞ͚ƕҟӟӟԢ ߳Ԥ#ӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟҟgԚ׫4ҟզ)ܬե&ӟӟӠɗÓӠӠӠӠόٯ<ӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠҠݷRӕ٣ӡӠӠҠșWԡӡӡӡ߼]oӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡڰ?ڦת0ӡӡԢŕj,РԣԣӢج3ޯզ#ԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣӢת.uӢԣҠ鶌ʉ̍̍Ύ֔D/@x Ք̎̎̎̎̎ɇmȉ̌ ʉ̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎ɈҠբ9ˊ̎̎̎Ғ dFfۙ͏͏͏͏͏ʈܱX߷eʇ̍ ͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏ˉ߷e͎͐ ͏͏͏͏ۘX ƋҒ͐͐͐͐ˋա4ݲYʈ͏͎͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐ ΑګKˊ͐͐͐͐ϑѓ- &}X ۚ͐͐͐͐͏ ͑߸fʈ͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͑ˊڭNЗ̎ ؘ͐͐͐͐j ȍѓΑΑΑΑˊdžʍˊΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑ͎ ї߹ҝ̐դˋΑΑΑΑϒӕ- 'kL nܜΒΒΒΒ͏ ա1͐ ΑΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒ̌ةiʉ͏ ˌˋ٬ڬI̍ΒΒΒΒۚ_ ՗ΓΓ͑ˍʊקצ;̎ΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓˌ߹dڮ̎ΒΓΓ͐ Ҝ%͐ ΓΓΓΓҕō;*5ךϔϔ̏њtڮ̎ˍϔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔ͐ ԟ+қ"͑ ΔΔΔϔˍyۯN̏ΔΔΔΔ۝U=S{X ܞϕ͐٪Bo̎ϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϓΒ Α Α ޴X͎ϕϕϕϕϕϓЗܱ͏ϕϕϕϕڜk|֚ΓӞ&٫B͐ϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϔ͏Иգ1Ҝ#{Ӝ̏ϕϕϕϕϕϕϕ̎ǂԡ,Γ ϕϕϕӘ  '"ʒї̐ˋϖϕΓ ͑̐̐͐͑ ͒ Γ ΔϕϖϖϖϖϖϖΔϖǁљΔϖϖϖϖϖϖϖΓ գ1o̐ϖϖϖЖ՚<,:U=V֛Зϔ ڪЕjݴVڬC֤2Ӟ%љϕΓ ͑͑͑͐ϕ޴ڭFΒЗЗЗЗЗЗЗЗЗϓ ݲΒ ЗЗЗЗ۞jM p] םЗЖإΐy߷[ДۮFΔ ИИИИИИИИИ͑ǀқЗИИИ؞jx֜ЙΔ ܮ٧ΓЙЙЙЙЙЙЙЙЙΔ ܱMר9ϕЙЙЙ֜Ǽӛљϕ ݴSҘdɃҘۭЗљљљљљљљљљЗ֤-޷Xϕ љљљӛЙњњњϖ єИΓΔΔϕ ЗњӞգ+ت:ܱK߹^s̈՝޳ϖ њњњњњњњњњљҝsϔњњњњЙқћћћњϖ єˆћЙћћћћћњњЙИϗ ϖ Ε Εϕ ϖ Ићҝߵϖ ЙћћћћћћћћћњˆΕћћћћћќќќќќϕjԡ$ϕћќќќќќќќќќќќќќќќќћћϖ ܲL۫ҝИќќќќќќќќЙЏΖ ќќќќќҝҝҝҝҝЗ rӝҜҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝИ lצ-З ҝҝҝҝҝҝҝњАϗ ҝҝҝҝҝӞҞҞҞҞЙ jԢ!ҝҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞИ ٫9Ѝ߳xݵPܲHЗ ҝҞҞҞҞҝҜ͈Ϙ ҞҞҞҞӞϜӟҞҞҞК ߺZ֧,ќҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞћЙ КК Й И ֥)hϘ ҝҞҞҞҝӠwЙ ҞҞҞӟН֡ӟӟӟҜܱD۱CҜӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟҜӟ٣ϊҜҝӟӟҝר-^ћ ӟӟӟ֡’ߡz٤ӠӠӠӞק+gћ ӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠҞќˁݬԡҜҞϗܳF۰?ҝӠӠӠ٤}_ۧӡӡӡӠӟ֛ћ ӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӠК `ت0ث3e߰ե#ӠӡӡӡܧmP= O٥ԡԡԡԢќ םӡӡԡԡԡԡԡԡԡԡԡԡԡԡԡԡԡԡԡԡԡԡԡԡԡԡԡԡԡԡԡԢӡќ ܲBќ ԢԡԡӡީfN i"̜פԢԢԢҞ]ݵGӟԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԣҞة+޸PӞԢԢգإ7*3ܩԣԣԣԢ֨&ךҝ ԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣӠԢޮԢԣԣ٧ v[yԤԤԤԤҟ٠ث,ԢԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤҞ ΅۲?ӡԤq4(,ܪ֦եեեԡݵEӏӟ եեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեӠܧߺRӡեN< Iݬեզզեӡ۱9ԢզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզӠҎܳ>ԣکƚ  cM`զզզէԣݶEԣզէզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզԣݷHեզc ɞګ֧֧֧֧Ӣؚςӡ ֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֨ӡ ޹KԤةר%u\p ֧֨֨֨֨ث%^ԣ֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨ԣ޸GSԤ֨ q Ɯܮ֩֩֩֩ԥ߻MRԣ֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩Ԥܵ>ҊmVת!ԥ֩٬Ԩ#YF S!תתתתתԤt\Ԥ֩תתתתתתתתתתתתתתתתתתתתתתתת֩Ԥ޹HԎӣ Ԥզ֩ת֩!t\s!ת׫׫׫תեӉ|֧֨׫ ׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫ ֩զhܢ֧ת׫׫׫ת  "Ҩܯ!׫ ׫ ׫ ׫ ׫էӋ۳6զ֪׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ תզٰ+ܡܢ֩ת׫ ׫ ׫ ׫ ڮ ܯ!6+/Q@ I"ٮ ׬ ׬ ׬ ׬ ׫էwуٯ)է֪׬׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ֪էح"tՍ֩׫׬ ׬ ׬ ׬ ج "hSfw_u#ح!ح!ح!ح!ح!ح ֨TՌݸ?׫֨֩׫ججح ح جج׫֩֨תܶ8Ѐf֨جح!ح!ح!ح!ح!#su#ٮ!خ!خ!خ!خ!خ!֩ڲ,ݢԊYݷ:ٰ(ح׬׬حٰ&ܶ7T҂ܶ7֩خ!خ!خ!خ!خ!ح!# w$ٯ"خ"خ"خ"خ"د"׭֪R_׫׬د"خ"خ"خ"خ"خ"$ v%ڱ"د"ٯ"ٯ"ٯ"ٯ"ٯ"׬حU`خ׫ٯ!ٯ"ٯ"ٯ"ٯ"ٯ"ٰ"$ ybv$޴#ٰ"ٰ#ٰ#ٰ#ٰ#ٰ#ٰ"ح׬ݷ7r{޺>ح׬ٯ!ٰ#ٰ#ٰ#ٰ#ٰ#ٰ"ݳ#%s TDLԬ"%ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#د׬׭ڲ'޼A^wՈْْ֊za߽Eڴ*׭׬دٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#%۲#eRa%&߷%ٲ$ٲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ٲ#ٱ!ذخ׭׭׭׭׭׭خدٱ!ٲ#ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ٲ$޵$&3*+]LVɥ!&߶%ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڲ$ݵ%&Ҭ#nZh  ydqΩ"'&۴$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$۴$%'ԯ#o hVa&'&ܶ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ܶ%&'' t`o8. /{fxҮ$&'&޸&۵%۵%۵%۵%۵%۵%޷&&'&հ$ălA6 7& TFOlá"س&ܶ&۶&۶&ܶ&ڵ&Ť"֬qZJV,%#??????(  1 !K0FuLjUnn}ɃȂȂȂȂȂȂȂȂɂƁެpάp[{PtS6O<'+  G/:xNti{˅Ҋ Ҋ҉͆͆Ʉȃȃȃȃȃȃȃȃȃȃȃ̆͆ЈҊ Ҋ·~ߧmWU8I(7$"mGcjŁ ӊ ԋ Ј ˅ Ʉ ȃ ȃ ȃ ȃ ȃ ȃ ȃ ȃ ȃ ȃ ȃ ȃ ȃ ȃ ȃ ȃ ȃ ȃ ȃ ȃ ȃ ȃ Ƀ ˅ χ ӊ ԋ ʄ s{PuH// (sLdtЈ ֌ Ј ˅ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ƀ ʄ · Ջ ӊ {̇X|8$* U8@jˆ Ռ ψ ʄ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ ͇ ԋ Љ thDX! fC]x ׍ щ ˅ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ Ʉ ʅ ψ ׍ Ƃ |Rx2!  {ReŃ ׎ Έ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ ̇ Ս ω a5# mH[Ȅ ֍ ̇ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ Ʌ ʆ Ԍ Њ ]~Q6>{ Վ ̇ Ʌ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ʌ ʆ ԍ DŽ pJ_ / gՎ ϊ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ Ɇ ̈ ֎ x H01nIUΉ ԍ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ ʆ Њ ֎ `} %i א ͉ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʆ ʆ ʆ ʆ ʆ ʆ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ˇ ֏ z A,-V::ɇ Վ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ɆɄȂǁǀǁȂȃɄɆʆɅɄȃǁǀǀǁȃɅʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ʇ ь Ҍ pKczRiҎ ϋ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ Ɇȃǁȃˋј+اJ߶iŇϝٱ۵ңȍrګSӛ3͎ɅǁǂɅʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ̉ ؑ i h ֑ ̉ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ Ʌǁȃ͏צHڴȎڭVϔ$ɅǁȄʇ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ֐ { 5$,u ؒ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʉ ɇ ǂȃϔ$޴e׮yқ2ɆǂɆʈ ʉ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ ʈ Ɉ ӏ Ņ K325$LJ Ԑ ʉ ʉ ʉ ʉ ʉ ʉ ʉ ʉ ʉ ʉ ʉ ʉ ʉ ʉ ʉ ʉ ʉ ʉ ʉ Ɇǂ̌ڭV׭߸lΒǂɅʉ ˉ ʉ ʉ ʉ ʉ ʈ ɆɆɆʈ ʉ ʉ ʉ ʉ ʉ ʉ ʉ ʉ ό ג _@D5$%ȇ Ҏ ˉ ˉ ˉ ˉ ˉ ˉ ˉ ˉ ˉ ˉ ˉ ˉ ˉ ˉ ˉ ˉ ˉ ˉ ʆȂГ{̕Ԝ3ɃɅˉ ˉ Ʉȃ̋Д#җ*Е$̌ɃɄˉ ˉ ˉ ˉ ˉ ˉ ˉ ΋ ֐ _@P5$'Ȉ Ҏ ˊ ˊ ˊ ˊ ˊ ˊ ˊ ˊ ˊ ˊ ˊ ˊ ˊ ˊ ˊ ˊ ˊ ʈȃД!ƈԦԟ7ȃɅץCϚҢ٩KʇɆˊ ˊ ˊ ˊ ˊ ˊ ͌ ֒ _AT5$#ȇ ҏ ˊ ˊ ˊ ˊ ˊ ˊ ˊ ˊ ˊ ˊ ˊ ˊ ˊ ˊ ˊ ˊ ˊ Ȅ͍~Н֪ݸҚ/Ʉˊ ˊ ˊ ˊ ˊ ˊ ͌ ֑_AP5$Ȉ ҏ ˊ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ˋɇɆۯXϛn٩Kӛ0ϓ͎ˊ ʈɇɆʇʉ ̍Αљ*ץC޵dɏ߽اIȄˋ ˋ ˋ ˋ ˋ ˊ ͌ ֒_AC Ƈ Ґ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ȄЖ$׫͖ڭTЖ$ʉ ȄȄɆʈʉʊ ˊ ˋ ˋ ˋ ˋ ˊ ˊ ʉ ʈɆȅȄʇΒצEĄա9Ɇˋ ˋ ˋ ˋ ˋ ˋ ͍ ؔJ20 u ԑˋ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ʉ Ʌܱ[ΘצF̍ȄɅʈˊ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ˋ ʉ ɆȄʉ Ԟ4Â̍ˊ ˋ ˋ ˋ ˋ ˋ ˋ Ў ƈ 3#b ۖˌ̌̌̌̌̌̌̌̌̌̌̌̌̌̌ʈ͕̌lϓɅʇˋ ̌̌̌̌̌̌̌̌̌̌̌̌̌̌̌̌̌̌̌̌̌̌̌̌̌̌̋ ʈɅۭ̍SܷqɅ̌̌̌̌̌̌ˌՒ~ mK[ۖ̌̌̌̌̌̌̌̌̌̌̌̌̌̌̌Ɇї%ܱ\̌Ʌˊ ̌̌̌̌̌̌̌̌̌̌̌̌̌̌̌̌̌̌̌̌̌̌̌̌̌̌̌̌̌̌̌̌̋ ʆʈץAڲ̋ ̋ ̌̌̌̌̌̌̌ؔm K4+ՓΎ̍̍̍̍̍̍̍̍̍̍̍̍̍̍Ɇ֣=߸i̍Ɇ̋ ̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̌ ɅДԞ3ˉ̍̍̍̍̍̍̍̌ږpMa † ґ̍̍̍̍̍̍̍̍̍̍̍̍̍̍ɆڬO͕ϔɆ̌ ̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍ʉצCܰWʇ̍̍̍̍̍̍̍̍ΎՓ@,*c ٖ̍̍̍̍̍̍̍̍̍̍̍̍̍̍ɆܱY٨HɆˊ ̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍̍ʈۮS߸hɇ̍̍̍̍̍̍̍̍̍Ӓ  ^B?ژ̎̎̎̎̎̎̎̎̎̎̎̎̎̎ɇܱZԣΒɈ̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎ʉڬO޵cɈ̎̎̎̎̎̎̎̎̎̎ٗe | NjБ̎̎̎̎̎̎̎̎̎̎̎̎̎ɇڭPsʉˋ ̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎̎ˋԠ5ةHʉ̎̎̎̎̎̎̎̎̎̎̎ؗF1-b ٖ͎͏͏͏͏͏͏͏͏͏͏͏͏ʉ֤=ۭPɇ̎ ͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏̍ ΑЖ̍ ͏͏͏͏͏͏͏͏͏͏͎ӓ >+&Ԕϐ͏͏͏͏͏͏͏͏͏͏͏͏ˋҙ%פ;ʈ͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏ʈˏשʇ͏͏͏͏͏͏͏͏͏͏͏͏͏ژpN ]v ֖͏͏͏͏͏͏͏͏͏͏͏͏̍ ͏ԟ2ˉ͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏͏̌ Ӝ+Ԟ/ˋ͏͏͏͏͏͏͏͏͏͏͏͏Б̎Z@>٘͐͐͐͐͐͐͐͐͐͐͐͐͐ʊϗԠ2ˊ͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐ɇգΑ̎ ؘ͐͐͐͐͐͐͐͐͐͐͐͐c } Ӕ͐͐͐͐͐͐͐͐͐͐͐͐ʉݳ\֤<ʊ͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐ˋצ>ϗʊ͐͐͐͐͐͐͐͐͐͐͐͐ΑՖ2#aDEۚ͐͐͐͐͐͐͐͐͐͐͐͐̍њ%ۯRʉ͑͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐͐̏ ͒ۯSʊؘ͑͐͐͐͐͐͐͐͐͐͐͐i ӕΑΑΑΑΑΑΑΑΑΑΑ͑ˌڭwʊΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑˋ͓Ж͏ ΑΑΑΑΑΑΑΑΑΑΑϒԖ/!H2:ٙΑΑΑΑΑΑΑΑΑΑΑΑˋݲZר̌ΐΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑˋۮO޵_ʌϗˎj֢5ˊnΕˋΑΑΑΑΑΑΑΑΑΑΑΑۚ}X xx֘ΒΒΒΒΒΒΒΒΒΒΒΐ ϔЖ͏ ΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒ͐ јՠ0ʉˋˋˋˌ͎ Α̍٫צ=̍ΒΒΒΒΒΒΒΒΒΒΒєʏ 4%֘ϒΒΒΒΒΒΒΒΒΒΒΒˋۮMˌΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒΒ֥̍lˋΒΒΒΒΒΒΒ͏ ҙ ̎ΒΒΒΒΒΒΒΒΒΒΒΒܜiJ V` zڛΓΓΓΓΓΓΓΓΓΓΓ͑ қ$қˌΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓˌ߷b۰̎ΒΓΓΓΓΓΓΓΓˌ޷`۰R̎ΓΓΓΓΓΓΓΓΓΓΓԗ ҖΓΓΓΓΓΓΓΓΓ͑ ̎Ɉʊњ!͑ ΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓΓ͐ Ӟ*қ$͐ ΓΓΓΓΓΓΓΓΓΓ̏ ޷͐ ΒΓΓΓΓΓΓΓΓΓΓϔ֘6&'T<<۝ΔΔΔΔΔΔΔΓ̏̏ҝ&ڭKlpˍΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΓ͐ ߸ݴZˍΔΔΔΔΔΔΔΔΔΔΔ̏ ֦9۰Q̎ΔΔΔΔΔΔΔΔΔΔΓٜb |m ؛ΔϔϔϔϔϔΒ̏٫EڬϔΓϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔˍtӞ̎Δϔϔϔϔϔϔϔϔϔϔϔϔ̎ӝ̐Δϔϔϔϔϔϔϔϔϔϔӗ ɐҖϔϔϔϔϔΑ ϕЖvˊϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔϔ͐ץ7ИΒ ϔϔϔϔϔϔϔϔϔϔϔϔϔΑ բ0צ;͐ ϔϔϔϔϔϔϔϔϔϔДڜG2.F38۝ЕϕϕϕϕΓЖ٫E͐ϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϔϔۮJ͏ϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕ̏Ԡϓ̏ϕϕϕϕϕϕϕϕϕϕϕܟ|Z wa ~۞ϕϕϕϕϕ͑ اԟ*Β ϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕΔΒ ͑ ͑ Γ ̎ʈˌ̎ϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕΑ ب=љϓϕϕϕϕϕϕϕϕϕϕՙ՚ϕϕϕϕ͐޷^ܰ͑ ϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕ͑ ͐њצ8ڬG٫Cӝ$ۯMϕϔϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕ͑ ݴW͐ϕϕϕϕϕϕϕϕϕϕЖї&$ЗЗϖϖϖϕϕ٫C͑ϕϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖΓ ͒ ۯKץר;͑ ϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖ̐eף͐ϖϖϖϖϖϖϖϖϖϖϖܟU>IS<Cܟϖϖϖϖ͒ ٬Eӝ͒ Ε͒ ̐̐̐͐͑ ͓ ΓΔϕϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖ͒ ӝ$ګy̏ϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖϖΔҝ#љΕϖϖϖϖϖϖϖϖϖϖڞc zY vݠЗЗЗЗ͑}߷֤͎wcܲPة=բ.ӝ"ИϕΓ ͑͑͑͒Β Δ ϕϕЖЗЗЗЗЗЗЗЗЗЗЗЗЗЗΓ ֣0ϔ ЖЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗΒګۯJΒ ЗЗЗЗЗЗЗЗЗЗל~u؝ЗЗЗЗΒ՟ݲԞˉs߸^۰Lب:ԡ*ҜЗϔ Β ͑͑ΑΒ Γ ϔ ϕЖЖЗЗϕҜբ+ϓ ЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗ͑cɄ͑ЗЗЗЗЗЗЗЗЗЗҙȑ ԚЗЗЗЗΒ ڪۭјȃn޶YڮGצ6ԟ&қЗΓ Β̎ՠ٪?Γ ЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗϕգ-ϔ ЗЗЗЗЗЗЗЗЗЗјל;,*-!ɓљИИИИΓԝئԝΔ ИИИИИИИИИИИИИИИИИИИИИИЖҝϗИИИИИИИИИИ۠V? OT= B՛ИИИИИ͒xצ5ϕИИИИИИИИИИИИИИИИИИИИИ͒Ҙت>ϕ ИИИИИИИИИИ۠}\ unQ g֜ЙЙЙЙЙΕ ٬@l͓ЙЙЙЙЙЙЙЙЙЙЙЙЙЙЙЙЙЙЙЙЙΓhߺbΔ ЙЙЙЙЙЙЙЙЙЙٟkq֝ЙЙЙЙЙЙϗ۫߶Г͓ЙЙЙЙЙЙЙЙЙЙЙЙЙЙЙЙЙЙЙЙЙΕ ڭBˆ͓ЙЙЙЙЙЙЙЙЙЙ՝s֝љљљљљљϕ ݳQע͑ϕ ИқԠ%ק4ڭCݵUj~ГکףΓљљљљљљљљљљљљљљљљљљљљљЗա(ئϔ љљљљљљљљљљ՝Θњњњњњњњњϕ єԠ"ИњљљИЗϖ ϕ ϕ ΔΔ ϕ ϖ њӝբ(ة8۰H޷YoʄҘܮӚΔњњњњњњњњњњњњњњњњњњњњњљқЗњњњњњњњњњњњϙқњњњњњњњњЙИإا5ϖ њњњњњњњњњњњњњљЙИЗϖ ϕ ϔ ΔΔ ϕ Зњӟ!գ+ت;ܲM_t̊՞޳xΔњњњњњњњњњњњњњњњњњњњњњњЗњљњњњњњњњњњњҚћћћћћћћћћћЙИ޲գ)ϖ ћћћћћћћћћћћћћћћћћћћћћћћћњњЙИИϖ ϖ Ε ΔΕϗ ИќҜڪ٫<ϖ ћћћћћћћћћћћћћћћћћћћћћћϖ ݯӟКћћћћћћћћћћћћћћћћћћћћћћњΓ޲޶VИИћћћћћћћћћћћћћћћћћћћћћћћћћћћћћћћћћћћћћњΕݴPӗљИћћћћћћћћћћћћћћћћћћћћћϖ ֟բ&ЙћћћћћћћћћћћћћћћћћћћћћћћИԢ&ϗ ϗ ћћћћћћћћћћћћћћћћћћћћћћћћћћћћћћћћћћћћћћћћћЙӠ"ϗ ќћћћћћћћћћћћћћћћћћћћΕ ҕդ+ЙћћћћћћћћћћћќќќќќќќќќќќќЙϘ ќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќИث:ت9ϖ ќќќќќќќќќќќќќќќќќќќΖ Ϗ֦.КќќќќќќќќќќќҜҜҜҜҜҜҜҜҜҜҜҜљњҜҜҜҜҜҜҜҜҜҜҜҜҜҜҜҜҜҜҜҜҜҜҜҜҜҜҜҜҜҜҜҜҜҜҜҜҜҜҜҜҜҜҜҜЗ ߷W޷UϖҜҜҜҜҜҜҜҜҜҜҜҜҜҜҜҜҜҜϖ Ϗ֦.њҜҜҜҜҜҜҜҜҜҜҜҝҝҝҝҝҝҝҝҝҝҝҝњћҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝЗ ܳIvИ ќҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝϗ Ҕ֦,ћҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝњҝҜҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝИ ԡ ɀ޶S٦ԙќњҝҝҝҝҝҝҝҝҝҝҝҝҝҝҝИ ֤֞)ћҝҝҝҝҝҝҝҝҝҝҝҞҞҞҞҞҞҞҞҞҞҞҞК߲ԡҝҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞќИ ӟ۱Ek{xߺ[ר1КϘ ћ͈ԣ$Й ҞҞҞҞҞҞҞҞҞҞҞҞҞҞЙ ܬԢ"ќҞҞҞҞҞҞҞҞҞҞҞՠҞҞҞҞҞҞҞҞҞҞҞЙ ءե(ќҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҝКЙ Ϙ Ϙ Й ќҞҞҝИ g٭:И ҞҞҞҞҞҞҞҞҞҞҞҞҞћҟҝҞҞҞҞҞҞҞҞҞҞԟēԟҞҞҞҞҞҞҞҞҞҞϘ ό٭:ќҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞҞϘ ܲH߹WϘ ҞҞҞҞҞҞҞҞҞҞҞҞҟћҞҞҞҞҞҞҞҞҞҞӟʘۗr٣ӟӟӟӟӟӟӟӟӟӟњ s޷SћӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟК ר/wњ Ҟӟӟӟӟӟӟӟӟӟҝ֥'ݭћӟӟӟӟӟӟӟӟӟӟأȘr٣ӟӟӟӟӟӟӟӟӟӟћ߹Vtњ ӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟӟқԠܪ՚ӞҜӟӟӟӟӟӟӟӟҜگ?ЏЙ ӟӟӟӟӟӟӟӟӟӟأbJ ]٣ӠӠӠӠӠӠӠӠӠӠҝ٭9םњ ӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠҝҜΈ֥%ћӠӠӠӠӠӠӠћ blћ ӠӠӠӠӠӠӠӠӠӠݧhO< 8֢ӠӠӠӠӠӠӠӠӠӠӟԣ!ҞӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӟК gگ<ћ ӠӠӠӠӠӠЙ яܴHѝӠӠӠӠӠӠӠӠӠӠިz]k#ʚ֢ӠӠӠӠӠӠӠӠӠӠҝ֨,ҞӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠӠК ܴIߺXК Ӡҟћ ќӟӠ֧*ҟӠӠӠӠӠӠӠӠӠӠިN< E إӡӡӡӡӡӡӡӡӡӡќ ю߻Xѝӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡќת/yМ ֦'nݫҟӡӡӡӡӡӡӡӡӡӡԢ֤3'!tܨӡӡӡӡӡӡӡӡӡӡѝ߻YԔќ ӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡӡѝԢܪяМ ӡӡӡӡӡӡӡӡӡӡפĖsWhԢԢԢԢԢԢԢԢԢԢӠש,ԢԡԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢӠҞψiћ ԢԢԢԢԢԢԢԢԢԢܨG6 6߫ԢԢԢԢԢԢԢԢԢԢԢӟݴGӟԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԡќ g٭6ӟԢԢԢԢԢԢԢԢԢat Ϟ֥ԢԢԢԢԢԢԢԢԢԢҝ zӓҝ ԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢԢќ ݵIԢԡԢԢԢԢԢԢԢԢJ9 ;ܩԣԣԣԣԣԣԣԣԣԣӡگ9ե!ԢԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣҞث0qҞԣԣԣԣԣԣԣ֥ѡ y]kԣԣԣԣԣԣԣԣԣԣԣӠfҞԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣԣӠդԢԢԣԣԣԣԣԣܩ:-(ޫդԤԤԤԤԤԤԤԤԤԤҟnӡԣԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԣԤ۳AӡԤԤԤԤԤԤqWc ėاԤԤԤԤԤԤԤԤԤԤӣש(߻VҠԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤԤӡ۲=iҟԤԤԤԤԤդܪ8,lzդդդդդդդդդդդӟՖԡդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդդӠ޹O}ӟդդդդդ۩A2)ެ֦եեեեեեեեեեԣ۱:]Ӡեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեӡ޹N|Ӡեեեեեx]dܪեեեեեեեեեեեӠܦզդեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեեԣ۲;dӠեեեեצا&v\`զզզզզզզզզզզԣ۳>΃Ӡզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզե֧ ܲ=ԣզզզզެ#רקզզզզզզզզզզզӡٞ۳>ԣզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզզӡיԤզզզզզWD =uէէէէէէէէէէէԤٮ0ԥզէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէԤ۳=fӢէէէէګ 3(#ݭ֨էէէէէէէէէէէӡ|ӎӡէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէէӢЇԥէէէէէjSZ֧֧֧֧֧֧֧֧֧֧֧֦֦߮^Ԣ֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֧֨֨ԣ۲9ٮ.ե֧֧֧֧٪ҥI: * ֨֨֨֨֨֨֨֨֨֨֨֨ԤݸGܵ?Ԥ֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨զש ڰ3ԥ֨֨֨֨֨ ed֨֨֨֨֨֨֨֨֨֨֨֨ԢЄٮ.դ֧֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨֨եІש ե֨֨֨֨֨٪ԧ>1 #ܮת֩֩֩֩֩֩֩֩֩֩֩֨զج&զ֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֨ԥڞܢjٮ,Ԥ֨֩֩֩֩֩֨ rZYx ֩֩֩֩֩֩֩֩֩֩֩֩էٯ.ج%զ֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֨զؙVӣ էզԤԥէ֩֩֩֩֩֩֩ܮś $ӧڬ ֩֩֩֩֩֩֩֩֩֩֩֩ԥ߻Mٮ,ԥ֩ ֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩֩էէڞ~Ԥ֪֩֩֩֩֩֩֩֩֩֩֩֩!RA :rZX!תתתתתתתתתתתתתԥiܴ;եתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתת է׫!ٜզתתתתתתתתתתתתת! ߱ תתתתתתתתתתתתתե~Vդשתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתե۳5֨֩תתתתתתתתתתתתڬݮ .$@3 ް ٬׫׫׫׫׫׫׫׫׫׫׫׫תզӉЁ֨֨׫ ׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫׫ שե[ת֩׫ ׫׫׫׫׫׫׫׫׫׫׫׫!t\Ss[_"׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ תզӊ۳5զ׫׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ էج!֒ث!֩׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ""׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫էЂr֩է׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ֩էR׫֩׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ׫ ܰ!Х%-$Ϧݱ!׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬էo߽Mը֩׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ֪է۴5ݢڛ֪֪׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ٭ "O? 7M= 2!٭ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ԧUߩݹCըթ׬׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ֪էڲ0Ԍ}ը׫׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ ׬ "ghpZY$ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!֨ܵ8O׫֨׫ح ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!׬֩֩ݷ=גW֧جح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!׬!#q~#ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح"תحבtܴ4ש֨׫حح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح ׫֩֩ڰ)a۳3֨ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!# #ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ج֨Vsݸ?ح ֩֩ת׫جح ح!ح!ح!ح!ح!ح!ح!ح!ح ج׬ת֩֨׫ܴ4cݤx׫׫ح"ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!ح!߳"ի!-##׮!خ!خ!خ!خ!خ!خ!خ!خ!خ!خ!خ!خ!خ!خ!خ!ٰ֪&אޥvRܶ7ٰ'׬׫֪֪֪֪֩֩֩׬ٯ$۴2߽Jmژݷ:֩حخ!خ!خ!خ!خ!خ!خ!خ!خ!خ!خ!خ!خ!خ!خ!ߴ"ԫ!8-#׮!خ"خ"خ"خ"خ"خ"خ"خ"خ"خ"خ"خ"خ"خ"خ"׭֩޻Cݠڛښܞߨ^ת׬خ"خ"خ"خ"خ"خ"خ"خ"خ"خ"خ"خ"خ"خ"خ"خ!ߴ"ԫ!9. % $خ"د"د"د"د"د"د"د"د"د"د"د"د"د"د"د"د"׬֫Uoخ!֪خ!د"د"د"د"د"د"د"د"د"د"د"د"د"د"د"خ"ߴ#լ"9. '$د"د"د"د"د"د"د"د"د"د"د"د"د"د"د"د"د"د!֫׬Tkٰ#֪خ د"د"د"د"د"د"د"د"د"د"د"د"د"د"د"د"د"#լ!9. $$ٯ"ٯ"ٯ"ٯ"ٯ"ٯ"ٯ"ٯ"ٯ"ٯ"ٯ"ٯ"ٯ"ٯ"ٯ"ٯ"ٯ"ٯ"ٯ!׬׫޺@׏ߤSح׫ٮ ٯ"ٯ"ٯ"ٯ"ٯ"ٯ"ٯ"ٯ"ٯ"ٯ"ٯ"ٯ"ٯ"ٯ"ٯ"ٯ"ٯ"ٯ"#Ӫ!9.  t}%۲"ٰ"ٰ"ٰ"ٰ"ٰ"ٰ"ٰ"ٰ"ٰ"ٰ"ٰ"ٰ"ٰ"ٰ"ٰ"ٰ"ٰ"ٰ"ٰ"خ׫ڲ&Yݟkܵ0׬׭ٰ!ٰ"ٰ"ٰ"ٰ"ٰ"ٰ"ٰ"ٰ"ٰ"ٰ"ٰ"ٰ"ٰ"ٰ"ٰ"ٰ"ٰ"ٰ"ٰ"%#s][$ߵ$ٰ#ٰ#ٰ#ٰ#ٰ#ٰ#ٰ#ٰ#ٰ#ٰ#ٰ#ٰ#ٰ#ٰ#ٰ#ٰ#ٰ#ٰ#ٰ#ٰ#ٯ!׬׫ڱ'M҂ؑ[۴/׬׬دٰ#ٰ#ٰ#ٰ#ٰ#ٰ#ٰ#ٰ#ٰ#ٰ#ٰ#ٰ#ٰ#ٰ#ٰ#ٰ#ٰ#ٰ#ٰ#ٰ#۱#&|PA 4Ѫ"%ٰ#ٰ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٰ!خ׬׭ڳ)߼CdԆߣ׏lK۵/خ׬׭دٰ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٰ#ߵ$$v`]0'%۳#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٰ د׭׬׭خٰ ڳ(۵/ܷ3ܸ5ܸ5ܷ4۶0ڴ*ٱ"خ׭׬׭خذٱ"ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#ٱ#%˦!D8 /u`a߷$$ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٱ"ٱ!ذ ذذذذذٱ ٱ"ٱ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٲ#ٱ#ݵ$&} C7 # &ݵ%ٲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ٲ$۳$&ծ#hUC v`[֯#&۳$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$ڲ$&%{ (!%&ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$%&E8 *B6 &&%۴$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$%&Ȥ!dRBN@ -&&ܵ%ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$ڳ$۴%&&ƣ!jWI8. &ܶ%'&۵%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%߸&''OB< )"{ea ''߸&ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ڴ%ݶ%''ʧ"ѐwz:0 #F; +x{ʨ"''&ݷ%۵%۵%۵%۵%۵%۵%۵%۵%۵%۵%۵%۵%۵%۵%۵%۵%۵%۵%۵%۵%۵%۵%۵%۵%۵%۵%۵%۵%۵%۵%ܶ%&''հ$עZK??4 *~hjֱ%'('&ݷ&۵&۵%۵&۵&۵&۵&۵&۵&۵&۵&۵&۵&۵&۵&۵&۵&۵&۵&۵&۵%ݶ&߸&'((ܶ&!x}N@ 8 J= 6wch!Ү$޸''''ݷ&۵&۶&۶&۶&۶&۶&۶&۶&۶&۵&۶&''''԰%ǥ"ΩkvYIB)" %TF8fU]̩#޸'۶&۶&۶&۶&۶&۶&۶&۶&ܷ&׳%ģtaf\LB/'???????????????syncthing-gtk-0.9.4.4/icons/st-logo-512.png000066400000000000000000001373261352162771300202140ustar00rootroot00000000000000PNG  IHDRxtEXtSoftwareAdobe ImageReadyqe<iTXtXML:com.adobe.xmp logo copy S~IDATxDaMh>R=/kib-V 0_}pk݈#&MVZ={\&УaHM`sHSL}&/|+񊷂ᄐCGr(@ E #lֆQf 7{QSAgJ53􂒈$=^N˕{EATG?H,b%yG`PNA 9i~ gK^USI {'vvIXrft"V֦L֊ @zRVa㪽2ݔ_|lV)v#O}sdb =ضa^[u, -~$"SXk3%ǚ+Mf~{OF词dQbu kF,6+- QS"A _]1w~1la=6ݡ[d@΅&˺oŷ'(DH \Z GO=9eվpOnc"cL ӝ qmկ$6y?H6nAKUsvO?hL[1``H7CO @1a6؇&13(m,Ad*LL J(zw}Wh{:iyHpMWv(:]Sp](-VxGB&Z۟~'c/"և @䦷?~&؆?GjPcBG'L ]mre~恧mI `Bbptu SU>6fbI D5ٲ-yeqt R Xc;[/:RrRB˰_0[}$iItt>qҩtB@ bWhy<ߡ'þ?TEۧa;u5͉S 7D?ZhS{(zTW- AD }ֺgvt>y4Ǵy=J,t൧zw[ia~a¿'~Da~Y50%wwx{ypab&z>TՁnQi9G*EJz(^"yNTb;(r$W$}g|8c;οܟN?]tM/AM~[{yͤ Ğyh]h> !;t71!P蝗(7h r v'_=ԿR1T?A߇9D"R^{s3EsSbۆmJ4DCjϗWu}_ 4Q( r :]Iow=/s- (_'y?צShBA0f w=~_+ޠcZcc1Z;.vC NQ+ o{R1p'MY^l# ">Xo>;<Ⱦ?G 8AM:? ^2乶ƵZw`@SwWj.dF~ T~, H5_7|LBBXFB/8矢vCIW,Ս<1qNh,Y!@䆛cI <AG0 ${kGX*jw͟ښhaHFCYWYp/IFt4 - wsʁUJ4"i]& ~M&p=&Wwb5V9U~1р8>أͥ.D B+DJ{nYzaj,&'B;Fy?nr& @ $Ω%?Z9w+RP(ß dR0MuN9psi'BÅH ~5*᠉qJ0K";FM=1fI'~Jg$~Pr]x;A5»'B7*@55JfΟjٱl*v_}oNBƿA(M%W?: x8ϗ˘?ysK\쫕{d@,E\wۢNk6LQ* D{Cד{.{̅(裗 py3 0PhQ/1+:fKVvG5&  =v>tSJ8@ B )8Z?zdyoK?sz34Pœ"dפ|7~x]ڣOHM`_4]wmhIHd?ד|?8afB"kx,q>;9 EZb#(Q JkNˍAXw "@|N-^HUS$tmx(+$oJ8@뫕&=yGVxR''Qxz{l ÎHJ ۷6?OhgCE@_`6ubkF[v[ Ea>鐎At: uZ˭HiU$tagт ؒd)8y!QB> $=l 'x)1pv/{*Hd/(GEoВ}ؒR7 ? rxbk&Cv&T0b"[/+%=wه_vS?GMPؿHJ"NMcKi BWgc<0c[I*OQ1>bPq"Zŗ63`UNRGe㪼pb 3CdXVko Pa7(ȵͿ>7ޢ@? rrOt2QW,p~C>>S bqH@2ɼkUM[iQH EiГU]Ch5$vg/hAcTdn~:ia\sTi/Rp;`IjfxxL]`R7u`[8 ?b/nT9usoeHya,6(1J+wj#x/b 7-^&af(B)z׎X 2oE_{27$Eٿ53AR+U.z .7؜&X%ȷIPh5Ix/x;Io}'<tKZ}7\5ߠ!fZYr#]mch5ήsR ά˃3c37`R鱑 z`FNf+*W97wbw—~^z?sXg0A>*qUN Lܻ"AV{vum;kl5;gw@rM@H !c K33 -H>$‘^AJ50*c!`> P)*$._+5˽_qB5czVYSo)vX{avE^z'M${0Sރh_=S,s|xXEț")`=3SfѳɆSF1Q!a[ﱂ*ACVhX`DcZ>| l!Kay*gvك4@w|DtT?2}ѐwN}אӛ7Œ:va(wegn=zqx. y:f@Mw5(] LϳH}~̲(ܲ n4)dG$&&@X]H_Z=7m~9F:7z3c=hc2pk^w#(#$rr|P&l'0MX1IoHn_(ih 9m8(CE'jPp|8m/ꗛ);o1=X@(VKKG3 0Lr)QnS(7}G`%e" ,lv$Ø ˡ ho~/գ g F{aWo$NJ{E3yiG !neM;?brR_'~H0p3{DZ'Rx8# A>CW409o3OCf1 =Q 5ѕ VMg G ir  t_0h~J u} ~v=Ɛm R'QҼEM!^+d:LhyYS#L`ʬb{Q<n]-U l,v`¦kN;.٪0 \2^;w/*B =X5Ka|jZaxigyQYCV92Q쩀c `^G~6">tgׯ̹ܻ=CU13d<Ɛ;\?Kب^[7[\y!e;MwxG<ƊfaO;uI|76iWׯ"`dXϤZ&;8~jT!n0x~Gvx}J[en]lL+tjH+0o[x? |~n ~ų;$ Jd5;ؕwb8cA.7Kqc1.ۂ X9k+=|D/UvSh3?/(Ws bZMЃmQXV'䄿NYٟze+i'ݗ!\<~ LBE29L_G!ĎD c쌃E!Ι;췏7rwxȘ5uz!-$3̶)tĞ+q0Y/Rz\A3Sπyž<Ȋ(`'_2u(0Qg a`bCxo_Þ4yB~O=v᭖0OɅ|T8pp #I3:E7#r6|RM÷R7xQ_>ƢM@bFarwVǭvK{q2(}xm 'y(ZO26LQbfI{7gk2F8'S#+Id#Rkw>2 n/LwX:겴Z#ʽ6;oCѿB[)xW%+`۳r"' v[aqkz2%~ePS 0Q\Yh l3ePr#Iu [.VPʽl']n`(hld6(0i-&sJc2d0"扉|E8 fʧ&c߽[^ l,6L;R35/+JY[Hghcr~BSW`HcȦ,b`$/!l)fOׯGh{*/pZ" )ޣ~A>_cQl~y,1R)9d%ճS=Kko&;bkX!O"[XGy a^[V!+w;舧H|.&礹@,0f~H awKK€b^<<3CjKd)|$@ k!Z/xS4b'0;ɬn֟w@ ᆒWXd\'Ό?u?ί׋GWc6>K霟0"B{LtmTQD`vޒOKЙj2VtHd}P?cZMsćǚ{ǔr8ګnxY#3tH9=㮗v` 3üV(`޶^ۃF<#CNM7=IֆZO|g(=o@|V\~ Ŋ&~LFx,kc +3c}0"#.Ê(u T2$a68&͵'d>ׇDewN]GzQYPv? +؉oLV}n(Zp`XnN?2RY%j*JϳR /ZsY)j"H4B crC93Gb;b;%Wx sa..Z%uf$6}:N}ZPxO \]_gV꺻 ;pޒI53a܀-L,pE)qR[9.O&i /YӑUg\%U[fӧ НPfF v D>ԺP_|g;Hr]*V`ɛ,Y$JX@U깿: קQW .|,eD_q̴Ǒ=KnrC(0O UTlC0-,y@?&3#l'ݢcbn _l7ߙ?.O-ݼϧ88"5f$o4auw &u9S`v_IYF.{4պ3+dpxB_= suC&?lFL*_]n\ 9=  48H@gcN@w+T_|Pdf_p@EɍL"7foS0翷ғ.?ArxH B,'mWtDsm,NxYGY!oScarQ?O-ugQc}w?wSȟ 4ym$?ܝ }k(6|ҰȊ="w4cս}߻'POa.T GW{t] ?_ij& @(>`^0L(p認0V1X[Pן~WSAOoI؏Ȇ0ɈW iB!ӆtπ$3 ^}^8hs({,W89,k'g/ȳ;g~r-'GY{B]6<绐x? 'ڞ»b: X TR&Rl[`mk+ս+\|CI~Tەx,ii&ɶ#jcba^ME_@Jɽ5Xׇ=(_^~.ȩ{ϯtß&J9?{v~~ +["<9pvK7gسd'biK"Wld*c?y_w9ԇpk3ĞΨ^xbK7lY#t%d'މÎ(ߏNJfxig[*֏qԘ4hwBGa2[̙c}f>ܧ} |WCV:'!|~烷: _'#6h c: PdxGn%včj"SM;hߍZwFiALN¢sCB'4ES= K Tq6j'wnMI},ċ&btsȪʳoT VxtvO"OY%:)xugЌG(]Lag=q>(̖ S~ic荧VCnEǞw\R*tx_k1,m~TO w,;J{&Aʫr* uī D7IԺ9%ȥXwT~7L_ϥ˚]2KTGY eGy,iPX$ $s2@c<[g^T&+ ~{t5G#lpN2qO CƟ "Ν4m:N3Y%X3R.UDko6`xp}D,g1g1?fUꢍg!OFBmMy0`ϖ4&=ICUYCj#o=Luƕ 0(W]b[&ǖ2aL ׍N0EN>賞D$*N (2.@0?oB.?z?ApJ d?GF|A:8,UġF `"yi+{fdTl Mlɜ Hr%c^u_K2C"kL aޓYX^e3 Yata|F`Zf$.P`"!:2( P@"TRZLE3NC'ܦƣ9ٍZ0 lY# j|0!2ES\ ߧ}N=TA a@7TPz92xX>\LsVtjG ބ>g2#Zd7e{ <8 0A02m'y3"rTrdžǓ> G&=xAJ Lp3VW0?\s[ X':wb~eכB%zfkIw(i 3 3bFwv8oAhۺ<*b$`',o2!Ȁ3D|g xvSRbaћĘ:px>O&7jd S`Pj DcZT̼kJx6`t`g lnRn\6v3</ǟgşZMsmk3٭=܂i T\e?Łu~7cY:㩌v"`΍g_VSNť ab""@UNx:,d 9UPc .QU-5b]Adعa <#>@R4ij<g8g9 F8=K툳> aH&xv[ܿ?Ab_ 2aS+HRuĔ"~@,펉Fc pz?#{8 ׾•E WFVG ysnEL$в(@>y٦~0 W,[@C$@e0,2pY/_KZ"/ADzUN 2o3Ac$Z#\b}V77:h_t(ȲaoL;egG6t[z'?khwlMߴ1Yp_~jpx¹Dfj e 3R!VUгHD? J&8G+<հ,PUR zz8{nXIzC?q3 >ZTGxL-wC5j`3 >Yǜ֟%'D G{4S*Fmbv  dC',~ dY/-0󿒊%Q{}~7Kb2l; |F3cOcX~8֏@?A2Zaj{I"8]gC0n*$Xf#?AF89xr1@T|HЙR^fOZ33읓C]x 1Pkq@b[`J '"|J`LM쏩oblJj{: A'1kc~ؒV*PA-aF%3;s'4"ac摧vاrCF튅Zs;V 1@`cR;e LȚ ٚ,lg Y~wQ lVm5}&=)]r?>L[f?nː k2k@?-?~U+$e'b1 4x)Wj\ȳJwOO u`߷1$P}8;J8hȸ;as[8%A 1`JGJ&j>9ܢ75 s`/:czx.z?WxZJpV,O m4Hl݊P2P*2xi`#vgs՝1S 6$vaBƽRcaO9xe脽'.:=`t8؈D,4$u`%OaLF{/9_r:_0^s`6D02b?lP )u~]kaG:`V;,PQ0 w\:|!LOpDj_6uS MlL:kj2C2{6W q/P"aõC5b xmΘ?#B+PPd!COهj4LYF R W1vMQxfK8 MM&=+61)T5 z>~c֑(nhtVS4Ώ!B`o%hW1֏g.uucQQ}X߻㔽fyk^Ah$dgNvM`\Iƫ\s9ZW8I wr^K^єLs Ȅ` q 4G J2x1վ/y-Qh"&r9Mpd'KN ǜm-Dq-$dzcsm#zuz Vzxog-v?A>bHbY}:^i.1mZmUQFuAdrd$`:2iT9)&?/M]ztE*%"cHrHO{`{"e|G\*y/#Me͆@C]8Ġ1+"il`׊6~Fr +xo TTtZrmK "i 2 aGT my- f dWQ}sBoa$yU60oE~'>4d #8 b2t=c),疻5| !B'`/R 1m [M!'/ /g'Zs^+$, gH wٙ?ʫ|lc7 B7`0)<19D.L>. '%3> njg>𑿣Sb|)G;'"àg j'`AuWjǜFpܪ"O7ډ5ݚ6xFA L1p [%Z=uL*Ǚɴoq %w^06pH[H(¶.ό0%ȷN+kӞ}[`y c颿Hkԏ=@M$ 0: ^i1G Aʝxpj8!ܶ ztV]fDۘ%wv}aT55 0ԥ}rSw2tmRY C}VZ> yb6toe/P2'06ߍ{P|5q?L"̫.%MaR yxf}LWK/ܭo<Ϛm\v:u`mM?6a+ۃMQ? 401*)o/X˪j<1'+E@*( nhGVJ#B[0a%t޿gS7x4N@JUi~ѝP?A t8>IoN7w Iuj*Ye´bxkn RAF8#lYPXiIpyn;)dTX7`|0й57|7x:"Xg#wɘ"ۜJȷQނvmD,uϿ5@tA9l2{8&P]'p[/Aw$ir)O ten_"J@M&M%u짎=XL0[&D`0cA&'1f 1j ϭ"l ۂ2'I9{PW[D*(vh8wU'7^? ̮:VfN@GT='!?rW^_+\fgл$\~~#\Nx)ߓޙP]Ř6@A0?J<΃NƣykR7ⰾ'N k cqźv(^3#yK?>G?~*ur7ɷCGOeHGSq ~[@Rm(îa~+}5!Rot$AЋwy?s.okrv1#E޵Pl7h&3QPBN "7x>ڹk  &Fe}H#=LxL(.p1A{!bڝ*4[W")wv4@!|)*9mws7߃V:`~UvUSR2Ee06˹;l?G`eV T\] o.0*O ;Uj@D_*ľϦ׊~Xɾw ًͪy&4RTR`ڂy>:v><<& SpȢ ~S._`XoϤP'ny w:?6<a[.]ZIykmK~+"iiviL'3jy0*So+QGkQ8{{m=P`*k)@xoÕuxvϚvny`?&i| > 8070 jPq /ϥ`s FgIҙZ€d >"r:kO3 %5H]n#jI#`5C]0)u1M~NY,xkwcXD>e癥_5B0{$ˆ f-Fy׸-pQ v̳3Czr%-+~Kv52zsz |ڭM`fCP)FIf&K_xQWc[IzHUyM53"X 8O]¼+zeaGz6?FݔZ&bnNFϪUcY 6jj "Q{R'=E ~{o@H뻴)(`fG>j# ^a:~nn #*1A7HlI7( rwu~׼]Inc|H`6}vZef_0abwHj*Qb#Vh4xs Dny߸"wJ]'yuvh,^VBI@ 5%Fx_8.({kW9-Oٟl ''6oR k5_vY6KM^I** W4,iVz_DdTAQk*fMw D΂Ul~:6-~Y{dcŖ]m˘3c@d~zï&bxػҥ͹[ihA1d{w8w;Oh=_c.&_kAN9 =m~eŠt\6 Lf($ 6w|@ r +'/Ǘ{Qܴ''b> ~ >q&jG)X%eh^2^V{CP?& C[Lyg+k$~ }Z Uc{  cQ`{Ta@abwd?n_p~vxy[{&wgP R:{/cDT`挮9!")0WY.cv%<|LH'xOjފ$VRfDa'2kUS"DփbkOσ?(Γ.{g2fw1$Gnq`@ #E,Ǹ@qc#E 1 %Qܸ'(:͹ۀ ?aCdSR z&.T1CX0lD1&b" A{+!}t;\u Uڿ`g? nZ9~qY_3g4wW0'.&(Lp@Q\Xp0 ֡Q[Nv)@Dߌʅ3ϾK?“%} c?]aDd;gWR'pQo!c:X^J+mL@a6h$B8PjDchGSic*}fgzONk6/~+5-Ob]-$NjGN+Bp.sr?X~E7ÚA@Ԫ4kfb荐'o赣^'La4v϶} aG9 B%E&;M<ׅkK~oy7ٯ=O\4Zi2̀bZ%z&TH_CD'&jQ9ngCqR_?][ xikK^F]쇎¯&Kt-o_ 7hIF{<m+Qx s+ Z4HT@J:_6u~8uH4 W-p8{D> c]'!`BVx=7z'|UoMX({t%cn0PVB= ?%O:dbyp|~==3J]f9wn6vc{T?+uIQwfG`ƒآ1&h$M411cb"t8m/3;3vNzw3oܻcgmϋE\5xk/_'411 z*$d2`L̇gļ*;Xߙ\<6~:~=^(I":h&-@U3S ?U/)|LMfcFcS{#S ~ qI@{|E+#&~x@+WU0@1:B `bQ-Ab?%YG@KLeZ&'($0UoM)%2ǴafF1-AɝܻS!ׇ2a7 ^" P ?Ȍ,;<~]E9`rY_9}q&Lj '#>YH$@4O# ?\VޘBk8@զK_ݗV6> %m<$!Tav)QLEM~%m!a]K]y)N5֤.4'D0glf~6chHpzNUi{ @M":E0G@V9u$'EiHq\wx))l=`O؏rYYs9bEbD Vq{*{c+ -A $! `n9>c~~2S?6NE!y$3 QS_DG$ۺ"nV7 VLn;׷ Qqk%hdeo,XIX’tEdRE &,iYЄ~ .S79: T;lk-EL|>f#qxC~"z= @[H7;/  R`b>y]16k4p+uCb7E@K2sQL2 ;ߜWṾx1R8Һmoϣ 43[5)O+7I`^[1.:rSp<w|9v8`~*rfX3*[7W߿XЇamɞ4k(]l]z C'qb~HX"AAp(Qi߀qbyv菞WÁsy0W/f@*XKطiEcGƑ%nx pê&x7Y H6a$I0IcƼ59+OY0)ssHV)jb4`{7KQDK!]l1ߏ3n<4>y ۄOAt2IF]KuMף5NfՑzY̸-mKrBelM8aMKtCD7j?u7G%XS~|(7͵`wխǔAk] Vj4QOvH׮}Cq ?nqJbW k۟@%`'Nm̲- v*f߇ؑ@In9?Д7U3y 7"Rب6̾/ 3}EJiEWA/ikv;H`>VGF=01 ]cmB!{^u3(IGʺ*/^RyLkfwֵ 0I1W(6UHH<'B&tFrVApCoI~ol 釱9@Az(u[uy/,ĺ3]o_`ʶ↌#Jx|&zYC2ss'7;'!$_؇*0/ܖyhċ?Â:ȫ]77Fgo᥋mp&>(  /y$Un;fDF7}1x+ ۳ue(7y`0d(}sd.s!Lq(zLÌQjt\D1%% @DѸ_/ϸ<(~޿/=(dqdC˟}.̥#9JVgEn1wAO͹w^%o')W!&{;Jkaf"K@gDhDΘa"!M y}BNaBY!E9W,r(Ӊ?Oǖår/WLtok۾6<J&ĕw'<>'?0B0H}QY؆֐l2Vv 6qzh`ʜ^HVK}}l\>ڕG@O~}JsXb=e%Gۺ/H+uBSK<"T/Dьtt[8syY_R;S郡|2~yT,k B?6l-@9y\< *_}^MNImj+~w43K &퉂94涽!yұTO >gaQ ta70auajoJ\\H)lf nYUFs8xyq|Ұc5&qƂyenkb/d =CTiƙ/uDCף1Kݒpee(aP ZF#.ZHb_̱kr-` "a@LDTQuF8Zz >CȮy&).D .7ҘzbXm-5Kb5 ]tw5>[Y R0U ,OuhB:duf`}{Kd `0Xg1h76<[pfa_Y¼Fœθ<ƫU^ 3[Q6{jJu_K6@y{'' Ԃk~!*t"LFAZ^F8uu%#Սf@ Q2>n 7z?oqzE.ݦn C BDT_gOt}?WJ*z;@M-PM QGoJq'Z_LNk pRGi.? Ff~["<`>I\RzCK=(M֥'el.N@"H\hԻ މ=1Ŕ}{}͘ħNd_`gv-19Dcq>hpZ39 l4'ڝ`Kb[W78`D@ATW{chЅ3̠w^f{='ٯpgJ%B¨[meAKH7u}퍨hpvP>/?Djnغ%U8p ^5{w ŞѠCpT 6$qth77q.#5OɺEHy`8GF#齣!IMxxH{5Ix->lÈG-()pǺVx [*|16N{}6sA.Ϙz if˟.Ɵ9K 'F|r~f""1HCE|D W[?-r%=\m",k 6wuJ2q7iƀ Y6JQ3C\‘:)bmsg\OA:U_L>kqM2n)ace;NlXUx[ >ihQ;ǿ|6$F{xhP+d=M`ئF၊}bۃ3Ev6mmXb+,b7V:e/ǙG@"+sAփ|,Q$=z=wr9v -8n lqp^o~s48-pq#qbIIq#@/{'b=}ބi~_L:F1TSa?-|C2G c>3' 0x5ڕd;Ha!^ڗ_%vi2rϙߟ^!D3N=?h S: ~wP:Aumʎ] t@NVcO|{Ox|E^:7k|L{ҸcUp"fj{35cFºl銀ڕuN/p}йm&ɵ[@U$Ucƽ~ 3ano7{ 6{kkKȾ s@=oxd<ʍ9[)|<\ q`58P@I罇-QYbP卂l @m{Ol͹ 0[1:C!gԽ/4]}EsGV'_ϨV\i |"1p6^e ʳ燗[)p2Mh ɐmx]OhanXZ=MȨTJphz~Ύ 0ߑ4>"CVˉV6< _M?CG_yܾ6o 3`$ΏZN fXU Gª i $Dt0y^X0_? ҂Ѩ 0ܛKgXa"x}^:G}-'{Zݒs5A#eL"p m+ ϑ9 _gwX-`+pbyn8:@Z eZ\~_ rS-kjrk5M.~ ۈ\rcU.cIwP-܌ 5>$aV;c>bt&$ 0KK_zVoC_2eTBNp К4ˁzM<0U;KAV,`Ag{mcGy ڕQ(vTsp|~a= =1AUE"<8Gd\o ѝ?lh aɵ+79! QP5766M}x%Ql{`wTiGҠȌ5.=N#.~GwٲO0Qン^[̎Cpܑ\B#0?}}\n﹧7 ;#k .WxSeLڲr'l#!Y/V/ig6Bxج1, Z&L)KRCL)p:bES?[G%O~&@4ђ]k| ^A-['dz\:ȁi,U= N\T 7}̧7+ԅCxT9$OW'gi}`3ADl+\{vt5bŌ? &Ric@kP-~ *{ʛpѼh]e{ߘ{6d43]k*u/;_:Wi}9S :L?WUEb ?臜uQKpdfc)^q[`S,|YE|NTbvS|4a`X~8 KF,3P}EmiRCy~@7w!hI %֜eU^tEFd٠i\GoFTW;x6΢@c[>N&fIp1#MD·V/4ݾi|_@g#H.]wZ$9_BBOOB t$ qf1x7a4gA&T+Q~pX v!peǗùU4<=4پ)蒧|3`7gjK=N|YY> W7B+Zf@LD+hHq ĭkI Y}C~9Ͱ3od\wT)D8s:Rީq)uHjkz-xYNjXS='=Q6z*\ʥW?N L.o v*+!(`<cjsj7Ȼ>Z Z⪯й<= K``*ٝݺ&T Y®T G4@?5d?D\U_׾A/ֽZpzt膕3׫z9዁-aaZn72J]#ߝV>FOQ5_ct54(.E4uxH&!$ph HZ@ |50^Ep|J orTN=Q3XgAMf_ e~K tQ>WTC[?lΨMOaA34$OǏqs\'#N-Ul z3W[jI"0՟.͐>퀿mhψZUEsX4{f0JT<8nMX?1 N}Qә6 $50RAڼ|p2 kZ-]~ 6^BEcaў^xrq‰in·^&X_ 1{=vǗMw}" ׯh6ua>߮i,J%D AHh a v7FHUl|$=NjlF蚗Th@3/7B-4\wm5pipp^•h,tԁ|G8bQmyE.+3%Ie/#<9I>3UPo@Xu^j22KUIP!W,iGt:@8x`{ٮW iOy8AS  fPS'Y2 yzGZ5|Ҟ31[ ǟ:p0b֐aGk]8sz^7ݺZ,tVܡk۵.o`sn8ajigh!3L 0`>`;9mpb]߷5$Û5^i5g|n`~ep+!^5ŔbCy>$H ?a,;W>$CL~6FR72.YO:^492X^%Z@ulR*w`ֿTվX3^.ojo,ml;oP@64mw댛/r%p<JNNd'PY]=*Xվ6Ҍ KɳY GJŋ?qMx5(1b5/B'ZˣH +IQaC{ΛHU^4Bz/<+؝uaGǰc`?3f{w0%rv>zkxawbc?üSN~¹QE%u~NdM1FU8{B!PB;^#ݯ`,;A7 m!G  k=7k|\(0<~ŒtC˲`q# LQsIWfĜ@-b EWxAiewu5Z8v?atȶ̲[d7pdFDh7|2o @oLȇo~ U4S[?JϫYzo=tnЕQι:"LHDv&0?QxKsTGJ<',Z\ˣ Y+sGx 9+ ausGtjʂ?;úuԙuU/|r ^)aԈ&$!tA""`[X8O[9sGfճJ!,QA 0-$Dn_ǎÊ\>,;y(0laY^|~ 96{L޹!iC)u[fjZ~!CsFiaD L]°Sm!n\hGx| cBXiYtLm{lPZϠBƨl;/ zG20ֶ6CY:RuW3E?~zɋ5쮚+H@,%#Z4wy DK}c;7Y 5l(ʄ;[hXA _=uYwcr!F5VswF1J'-|C9eS{Z։GX,E6A]qYgzxK 1>ـv^?%AF~<n0@ř׼k#L'8\=Ұ3 wqiq9U;0gTտme `$@L^a![pd&。-7v%YNǼocҐXe5_L\|5Z42$! 5sma]N+V!B <H ZE9Fxl_h1->?gįJH:'a\yN!밸 ۞5P6G\& ,zbnqm, a{NUo{Gx 9,D*+"h )d3^1fʲB 'VdtũcsaAy6Egۙ'-cE1Z(w/7L%1~Ne&'x!ػ^-8f-ĂWu$fݻ[aħa8k>A$@6Wቯ v7,oHNȁJ\\:y cD-$s!==Q5GEV_~X׶k!n1&!Bpp_pίm-3Eb_Ri3v0faB=R ޿x21)cۻ"Kj}e ÑexItD*yb(P8oQ7,^^E1' 6[\CQ[p۰13{{ n JpS8u) LSl;*|{z!/p20gOqyD9fC{w47 WHk2խ.JH@=A@\2w@Hl (Uc˳y8)@ #g>({TtIfQ19CyQxbk^;`n ?s Z;lnʏѲ56lGֶv(¤D$L &$w|[;æG3sBEa_پu X>Fm=mmӎԸ+ٳC^^+H0<{zc TFy*ҳ6UKa]k\ Im:<5Wsq簎Jwg}ȱLb! V%1&Ǒ Ή%ax;{<x|y6-< LbOZ93ut)T$c%1fwC`ֶ@5</qu>C@ "AFw\yT8hQ8k5 h 8j#/gJp>kg-9Z 4&I[f2#<ɠ񣳡/qL'u*lF̄- 6(ͻtr,ݚ9f:uj)y&d@-@+`C{ΛYV i>"'°~I3 i'}C;xdGpx/-=R?hh3B\*ʄ!֐ݑ8| Lz#'Ʌ ~h H 3-3 ;6u ǙQ̔I =|zꖪ uڱ1K^?mØ\O#TƩZ@M\HHco" TtZ̤T`wUE^ vsLuu59O>2$@M+b9VæfԡiUS6xʊF?4OްXW|Ҳ'.)9nupBC;L-r›U>N, ~?EުyRlMj+}*--ֆħc9EF}F^(ϋ740mLoU2*F 趧 myPҢ|poր/Ϩ8OpuGo !Z$9m)s/[3b[ XiE.R2\s(qZ`H u@H\8%#8Go xlT7!*EׅF-Uu{>wlųowі1I-^5BeO"ghRT C6LwWuFuoM N&j{lZbNQuҜ@Z3& ܀ ;p|g$fZ_B2"aHU>%x/Upò&1(Rcgn] Ά&gMp2E_psnKStp޿xL=QZK 'gG/WZac%aulM=c7;FgR㫄-慊Hp20 p53)ecOFyDrmm1nK"W%,kqα AK|4 rxM_KqbI㿸,c<`F?(fj H : R DbA .\ӊH xc[Ñi.Pj7M޶sIW{["G,%cEΨS-AΙI8jFe:?'$L p/c ?<6ZP~8ep x+R=۬3O:qdX(wFS 1E &8yw@H8Qx6>W*/#{̛I"X߽ѷi*S&vԩ͹6 .e\\}MyR✦,/t @K;*XEN3QQ7{3xA؟TJkP`ͼVlŻfX7ekr yN>@ qE8el-W yPLBV~XZ-3e6Ҕ""/*db aXwwzXL:f^[x] Eϡ_ydA,!JbKߜJrwҸ#`xT@,w6``Q v,érSeoLŊ[#|%ʧ7S  EX\S̙loҰ=J {=!Xgd H||h NW=:²J!A4(XanWdC]4@Xnn1uEo]JƪԮ&TygÁuY3EMeaEXH朐** ( xaڲ`g Y%Vލnj'S8227- O-!9hHWjG]J^n =`$agwR.~xuDYu  d"v7XLgb@ uwFz&U1U7 \2Լ࣑e?턛W5Y恷.82 H"˥FfD}䁔P6VAmcv(ud& -,H>c#(NU9|0!" ]ڄ'vl 7JU߉/lGv>HL}P$`y}T"%nX%YӠ<]F@ͻL3b-#Е3ڧ4E13.x,c1= "#K @O#[&8 PQ! ҮH03`V s9c{;[wu3!nZ,uBmMy!T@wSmc27gL!i#<)w.+?9G-!UJ K (S h1m&i;#/-{.-is:A ۏ9g!РaEI)Ha>"fqC[ּŕ2 NjzKacvS]wtWKy6i?YJ?4}  ){υw. VYB]B>j<ݷҲ6w"}VAimw~1[ٚ<,yn%eeHs8gR>yJ+(@0E@ΦUi@. F{yImI+ޒv7Lkf-.mq $jpԾP&uS9@@ {|:lLg_O߽[ΉLKQ'e[fbK` `id1; /R#찱= .)@HSո<'\4Mls'Y(b]мi'TM ,'Se8I,7rRO  ֮Hb*u ҋՠiA@ X|lϲ eŝp+U\d#QN+!()Sh0! 6Qb*{$ZAbww,18?\Ob=k-؛o1Mߺ|}" BO$'U==QXZyYPƌlcl.V9֠ "a- ,$ʳaVdx9)HBv?C 4`=;Vft*((*/Z M > .Ro4@4\|}B- O:bO y|K~-f2|ڦwh*$koTWwBG⼳8u\.>>ʇ E* ! ~VDDG(Zʟt&XV=~ǷvS\n(nKbze AInJXYUaAENQ8wr>8TfkBAB*;B# !nE>j ƒyr[t7DJ˞YTa6ģs¹2A Z^:+eM:ִB^삖 55-sav2#J௧l;E7v`Zt6gOl?Α>yL)f-eG'|XPq&B Ƹ׷ams~tnS\p &0B$^pcۇƒîP和R෯j) w[07[})cUZ4Xm±scs`me#=)<5X@D0(ϧԩe):zJ# P0yD%e=^ʓ_ysʵ~^ ӗƫ7|bXN "Cy$5 gy1S:-bBǍ>zq   (Ji/sï挄{O'?vx7%wnol#I?̺2ey peD΄zw.?: F /kaqB0̏i'T⾳UB`w@_J? W*z滑x##V` iI%P:w{]4k.d\zhL.t^eP 1{z$'~DVߘ\;3qLL+r0 ^;/# Q8eS9?z.O.Qd5(ɪZ:a)ePH j HRe/^#LCmE a|>dT8hg}}ԑ%ppÜ| ?} <?ggs@-y%)JO@SRpX۔sWwޯ|nFP\#40,T*~+vp8orM_W.y{Cم{bsJ݇2df3Wʽd"ʲpGnl ZUmaE$aMHMO#9QY;N?:8$NM{ Nzvg/#Y[h'`~Pq?+rΧAReE NAp@/rkG`i6xT q0cQ'FPbtTdI?iLnZ\X`WxTcOп΍Hk]}7g޽,cf~k3k>qzZ#()Pc_?Y7ZVU~X^ 2 qQAkF eIcrxJW7V7fO^q=W>F#y(޻NmhE[;Ü|a>*|lUp\Č=՘.p/uqx{\ ?|?PZ9Dϟ@llws#Gƞ,;pLҴ1<@)mXm!} [)+W0_g#M)t¼l7*BRKi^[Y5"2:NWAץ86wZؗG 2xGڀ& 80B=^P%U d'M¶&EAeB{mWT6 m%.? \擄~j\z$50JW_0D>C<6 Ђp\*etD E}@AH(liqiި,aaɉ1 ɮtzXkɰ}_Kܫ0v<''BВyc}0ϫ}j1yyEKT=4G1cB4t2&}޴Vjz#]}vr] ]1"_,xoܫEL5b4G~kZ!\?gC8 FP3_LIqNeblH4~~#7"3h-@.sVfqQX'˞V*38ix\hȣלj5,KIkozgnJBoD m[8-XjD[)EN'd 6=~m-Ď[hgD!mv(b~yS{v*%FF-N`IVu@!18ot6\;11olǷtA{PőFyi@K++2Li0<^ m!\Of[G#F`H\FN$`DTcDʣJu`xcN.qo D7AT^/s\8wr<6e'0B^^zӒ\d % Hgڮ'0P"VGDJy -P N~N S8qL,`Ǭ2D჆4%sR#(s0uL`"=zc"DK85L 3< ~rD 39WxtSZ!u؆ft4>‰X/P0 ';e|{N>zJ#Ϸɏ: Hz鲻 <4DP0{;obaZa&ztPQi>HHY|9W+{̇2FШ<>-1e-s煅ɍyԃ@n EBRU %>h]|{Dv3yDt#nY,MBntnb .d$3$(D0X Ȍr%g1h>QǾI9Ϭ>r}ygoAƟ, ΋6RPY{3YT'@X(Žnxfk7lh BYtɗ=kM--Vm2@.^NDָ N΃YP9n8o+mbiG;JnZ")#wb;fsZ[D g&+H :p̨,hz!|m\.dgæ<7vBUOR>}>5W*?k")I=p`,2-hwcsp #220lj%$|v3C/X-oX!O1[yk>?""8.8,c+v}:HDFVB4!%H[0fOO yhER{u*ؙq(8qlN}42/ m r_0d^nrd`*yJքi@!l-T7Z8:L/vôbEK@]QXߜ0;"~gV*K-x&ϮP7hMsof;hHt ZAcpXe= (tp:_ jz1?Gq(R^z"W6h;_qRbD  A2! `~ en90+iO|d-Vc?a?ƽ~f-i)&HpU\Ŏ'KYW}<# 0$18,6&6#j1{}=1h-vj3ڙ石]ZWք@f`[ms/& Մ a*vG 9$aLrs56{%FZTޕ bFޖ4Qݠu7%/{'E4Ї@~GcZ,|ctY̻qŅh UfR;ǖ49vm1( \VޮmLިCxġ#$>|AOqRk`Mz7`jчYmiEdY=IqMv}Q>n ! {&p`_pfҲQ廮W?!9'k%S']w (4V0syʮE"a1У~2Ux,hAO0ZZtDžxU&D:-Ѣw SbKa-?m[z+j"Ah֥޹G]]q^ݐ,y$ML"`+R"V0 >vmLvdl?8Nm_h@hA !A O $n !6}~{{&hL &|?39{{Ͻ)rw,m' ,_3+whú-U#~K#~C_OGF b0Gv}e\L<n/Iqz*Mw7<<;Ռ!_j箾FyjRwq IpшBsa~ocvCCт#GujvCb@gQ+("wt[~eh ` 57Wj o2 J|R*,`ovCO`}+`hdY_CB/W ?x|?uۻ`X!GvSu+:Q$t^0ѝDf5K{QbVOQ/E%B qn|o}x7?] y(X70 c}]ڿXeZu;d`0&,2W-%M'}Ipy UAMҧ1Wɜ3M rW3 Ѯ]fcWp?1ˋFW\ă*oS.\Ċ@ъ}hWAAF Ȋ5ly~3hZ?_|"1^kOXA 0Hox$ϲ-@Mzɺ WЉA0bhaZU~TTLB !p El 0LNR W3fs5ۺB`b S<Vr3͂\ f.?fdzVͶq@w.JyiSfޯ$c \V6g<@g-tͪ,+jAO')ޔ/X{˿S H4ck8_`}ǭ=Ͻ: C"C+m_GvN7oݬ?Ռ ȟ˼(~h b$ ?Hm;?eU`Fa'KJ7Ew].,WT j醬Zkˬʲ ֡F 6:[j(P}ki8'GW܀Pm)gOfgZn~ݮ~EzY$o]jJO Qh~f\]fU:6H9zъRr{W)W @E8bNU֮g^?|`l;H)Ͽ}+XMq K pSx8׆6Qw@'wxƓ>gu21w~I3frY؎˂с-#᝛=d}<m@M.Nr^Rb h̎V}@g]+ʭ_v tGO"%)#Q,uB5cj Sru]jD!["5[WYF.9NiӒU_wմorfO'DA"pY>t@Aݶܷe'7ֲC´b-o5A#z74Cy)8w :_w(C~6 oVHvC /P&,UǥqۊF5uxC<NSa7VZ^^PI$[%Zy%.agL<^1 H >`}pۻDm^/FkGO@J>|1/Ѧ04]4#9* W]0F,M>ڇcփxϩ]E_0ESbN"5:h*7Ë)h\r'D," 4'_ь#v˾üL=veY Y @0A)no9j֌4O3[ pt;Pds; ({}؋"TBjƴd%\mɊ+ӊijÖ́zPm^:/ށ$EɟbFnDTDf5r/9XIesgΡԩ",T3' '䕱'bOHS_U޽tt<Ϟ>n,sԮ C>58U||r+Ob1;3-6B$_@Ԟg>+ClQ~]_GI3ͬ~w(w G.E߭$y ;fg9|QeoeJWt X1pGyg6Qݮy0F0f6f~$(jJO:x 4nE&EQvլ+;1l;U<'ѭkp 0Y!8X|aY4gNV_ųlmiss]2@0FcDn'E(d"xlQa@HD50N8YR[?f˱WRQhpg"Cj矃" =O 9sw] 'iU ^!r["6*:IENDB`syncthing-gtk-0.9.4.4/icons/sync.svg000066400000000000000000000036421352162771300173030ustar00rootroot00000000000000 syncthing-gtk-0.9.4.4/icons/syncthing-gtk.png000077700000000000000000000000001352162771300234722st-logo-512.pngustar00rootroot00000000000000syncthing-gtk-0.9.4.4/icons/thumb_up.svg000066400000000000000000000105141352162771300201460ustar00rootroot00000000000000 syncthing-gtk-0.9.4.4/icons/up_rate.svg000066400000000000000000000041571352162771300177700ustar00rootroot00000000000000 syncthing-gtk-0.9.4.4/icons/version.svg000066400000000000000000000026601352162771300200130ustar00rootroot00000000000000 syncthing-gtk-0.9.4.4/locale/000077500000000000000000000000001352162771300157255ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/locale/cs/000077500000000000000000000000001352162771300163325ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/locale/cs/LC_MESSAGES/000077500000000000000000000000001352162771300201175ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/locale/cs/LC_MESSAGES/syncthing-gtk.mo000066400000000000000000001034571352162771300232570ustar00rootroot00000000000000V |>B?#EcBcPlu|  2=NhQW g {     : ,(!!U!]w!!T!-:"h" "" """"g"!]##### # ##'#!'$I$$a$D$R$% %%3%D%c%5{%]%& %& 0& =&J&$a&&"&5&D&6' <'J'['n''''''!("( ;(eH(((((( (- ),9)f))))&)))(*&A*h*!*****R*<+KB+g++-P. a. k. w. ..0... . /r //PK0a0=0<11222&2)2("3(K3"t3*3(393%%4 K4DV4,4 4 44 5"5 85D5H5 O5\5 x5555 555666"6&6.6560I6Kz66 I7U7j77O7V7.8 58A82P838K859;99u9=:oC::::::;;"; 5;?;H;vh;;-;,*<W< f<p<=+=?= N=AZ= ==1="=>k >y> @.@ N@\@v@~@@,@@@A AA2ACA]A(BBB.aB;BBBC+#C0OC7CC CCVC6MDD3D3DmE)sEEp5F2F-FGG#GG G G G+H 4H>HGH NH YHeHHHHHH%HH I*I6QWQoQ QQQQQRmRoRRS-SJShS oS }S-SAS(T$7T\\T T`T9'U8aU U,U U UVV1V%VV V W'W0W 9WDW*cW%WW)WOWHIXXXX*XX9Yj;YYYY YY$ Z/Z%IZ6oZ?ZZZ[[0[P[i[ [[[-[ [ \b+\\\ \\\(\3\03]!d]3]])]%^)(^(R^{^&^^^^ _o__c_~_<z`bLc kcyc ccc+cc"cd -d9ddKeqfGff{gyhhh hhhh hi-i?Ai.i igi/"j2Rjj#j jjj k k k}0}y}4p~~l/7:&܀ $27G  % %.(T}:Aׂ/ IUY+ۃr z  (ʄ  " B M Xc s }  ̅م  ,' T _ j/w B̆ "# S@ol*G?/U:L9n]NQM*EF<EfW  th&'8[b;|Kg? OTD1R5;7(%F.c_CxakQrU1A><0"O#=^JwsPZ+IKH7+!`qJ$-R20HS-$9B'>,T6=!.N&v)Ved BmL5CzIP }  YD) 48iX4Muj3/V3@,2G\pA{"(:y %6~%(device)s wants to share folder "%(folder)s". Add new folder?%(hostname)s: Deleted %(deleted)s files to reflect remote changes.%(hostname)s: Deleted '%(filename)s' to reflect remote changes.%(hostname)s: Downloaded %(updated)s files to reflect remote changes.%(hostname)s: Downloaded '%(filename)s' to reflect remote changes.%(hostname)s: downloaded %(updated)s files and deleted %(deleted)s files to reflect remote changes.%(online)s/%(total)s online%s KiB/s%s day%s days%s days ago%s kB/s%s minutes ago%s minutes from now%s seconds ago%s seconds from now%s%%%ss(watch)... _ask me what to do... _wait for daemon... ask me w_hat to do... errors... file updates... leave daemon _running... start daemon in _background... synchronization completion... terminate _daemonNote: You may need to restart your filemanager after toggling integration.Warning: Changing settings on this page may prevent you from using Syncthing-GTKAbout Syncthing-GTKAbove NormalAdd Shared _FolderAdd _DeviceAddressAll DataAll devices offlineAllow Anonymous Usage Reporting?Alternatively, Syncthing-GTK can download Syncthing binaryAlways do same; Don't show this window againAlways start daemon automaticallyAn external command handles the versioning. It has to remove the file from the synced folder.Announce ServerAny devices configured on an introducer device will be added to this device as well.Attempting to download recent, please wait...Auto_update downloaded binaryBinary path:Browse for Syncthing binaryBrowse...CPU UtilizationCaja (MATE Desktop)Can't invoke the daemonCannot authorize with daemon. Please, use WebUI to generate API key or disable password authentication.Cannot download Syncthing daemon.Checking for available port...Clean out _afterCluster out of syncCommandCompressionConnectedConnected to Syncthing daemonConnecting to Syncthing daemon at %s...Connecting to Syncthing daemon...Connecting to daemon...Connection to Syncthing daemon lost.Connection to daemon failed. Check your configuration and try again.Continue this wizard to create a Syncthing configuration file or abort it to exit.DaemonDaemon OutputDaemon _SettingsDaemon arguments and variablesDaemon process priorityDevice "%s" is trying to connect to syncthing daemon.Device "%(name)s" (%(device)s) at IP "%(ip)s" wants to connect. Add new device?Device IdentificationDevice _IDDevice _NameDisconnectedDisplay _Daemon OutputDisplay desktop notifications for...Display error logDisplay paths in directories panelDo you really want remove device '%s' from Syncthing?Do you really want to permanently stop synchronizing directory '%s'?Done.Download RateDownload failed.Download finished.Downloaded file is corrupted.Downloading Syncthing %sDownloading Syncthing daemon.Downloading...Edit _Ignore PatternsEnable Local _DiscoveryEnable _Anonymous Usage ReportingEnable _Global DiscoveryEnable _UPnPEnter comma separated "ip:port" addresses or "dynamic" to perform automatic discovery of the address.ErrorError message:Exiting.ExternalExtracting update...Failed to create temporaly file.Failed to determine latest Syncthing version.Failed to download Syncthing daemon package.Failed to download upgrade: %sFailed to find unused port for listening.Failed to generate keysFailed to load Syncthing configurationFailed to load configuration from daemon.Failed to modify Syncthing configurationFailed to save Syncthing configurationFailed to save configuration.Failed to start Syncthing daemon.File Pull _OrderFile _VersioningFile location:File location: File permission bits are ignored when looking for changes. Use on FAT filesystems.FilesFiles are moved to .stversions folder when replaced or deleted by SyncthingFiles are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing.Files are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing. Versions are automatically deleted if they are older than the maximum age or exceed the number of files allowed in an interval. The following intervals are used: for the first hour a version is kept every 30 seconds, for the first day a version is kept every hour, for the first 30 days a version is kept every day, until the maximum age a version is kept every week.Files are protected from changes made on other devices, but changes made on this device will be sent to the rest of the cluster.First run wizardFolder IDFolder TypeFolder _IDFolder _LabelForce _dark themeGTK GUI and notification area icon for SyncthingGitHubGlobal Discovery _ServersGlobal StateHide WindowIf enabled, Syncthing-GTK will automatically check for new daemon releases and replace binary with latest version.If enabled, changed, created and delete files are synchronized immediately, as long as Syncthing-GTK is running. Note: Using this along with short Rescan Interval (<300s) may consume a lot of resources.If the reported data set is changed you will be prompted with this dialog again.If you already had Syncthing daemon configured, please, exit this wizard and check your %s folderIf you have Syncthing installed, please, set path to %s belowIf you have Syncthing installed, please, set path to %s below or click on Download button to download latest Syncthing package.If you prefer to be able to manage Syncthing remotely, over the internet or on your local network, select listen on all interfaces and set username and password to protect Syncthing from unauthorized access.Ignore P_ermissionsIgnore PatternsIgnore PermissionsIn File Pull Order comboboxAlphabeticIn File Pull Order comboboxLargest FirstIn File Pull Order comboboxNewest FirstIn File Pull Order comboboxOldest FirstIn File Pull Order comboboxRandomIn File Pull Order comboboxSmallest FirstInitial configuration should be created.Install %(package)s package to enable %(feature)s supportIntegrate Syncthing with filemanagersIntroducerIt is used to track common platforms, folder sizes and app versions.It looks like you never have used Syncthing.Keep Syncthing binary up-to-dateLast SeenListen on _all interfacesListen on _localhostLocal Discovery _PortLocal StateLowLowestMa_ximum AgeMaximum number of CPU coresMetadata OnlyMinimize to _tray on startMinimum Free Disk SpaceMonitor filesystem for _changesMore infoNautilus (Ubuntu/GNOME)Nemo (Cinamon Desktop)NeverNoNormalOffOfflineOnlineOpen _Web InterfaceOpen browser with _WebUI when daemon is startingOptional descriptive label for the folder. Can be different on each device.Otherwise, select listen on localhost, so only users and programs on this computer will be able to interact with Syncthing.Out Of SyncOutgoing _Rate LimitOverride Remote ChangesPathPath to the folder on the local computer. Will be created if it does not exist.Path where versions should be stored (leave empty for the default .stversions folder).PausedPlease waitPlease wait...Please, check error log and fill bug report on %s.Please, check your firewall settings and try again.Please, check your installation or set new path to Syncthing daemon binary.Please, install pyinotify package to use this featurePlease, restart Syncthing-GTK to apply all changed settingsPlease, use package manager to install the Syncthing package or %(download_link)s from Syncthing page and save it to your %(target)s directory.Please, use package manager to install the Syncthing package.Priority will be used only if "start daemon in background" option is checked on "Interface" page.RAM UtilizationRescan IntervalRescan _IntervalRestarting daemon...ResumeResume Sync_thingS_top SyncthingSaving settings...Saving...ScanningSearching for Syncthing daemon.See Syncthing documentation for list of supported patternsSelect Folder for new FolderSelect the devices to share this folder with.Select the folders to share with this deviceSend & ReceiveSend OnlySets the maximum number of CPU cores for daemon to use. This value will be used only if "start daemon in background" option is checked on "Interface" page.Sh_utdown DaemonShare With _DevicesShare _FoldersShared WithShort identifier for the folder. Must be the same on all devices.Show WindowShow _IDShown instead of Device ID in the cluster status.Shutdown Syncthing daemon as well?SimpleSorry, connecting to HTTPS is not supported on this platform. Please, use WebUI to disable HTTPS try again.Space-separated list of arguments and environment variables passed when starting above binary Use VARIABLE="value" to set variable and -argument="value" (with dash) for argument. If you need to pass commandline to different command (such as logger or ionice), separate prefixed arguments with exclamation mark "!" Example: STTRACE="all" logger -t /var/log/syncthing.log ! -logflags=10StaggeredStart Syncthing-GTK when I login to my desktopStart it now?Starting Syncthing daemonStoppedSync Protocol Listen AddressesSynchronizationSynchronization of folder '%s' is completed.Synchronizing %s foldersSynchronizing '%s'SyncingSyncthingSyncthing Daemon SettingsSyncthing binarySyncthing binary locationSyncthing can be managed remotely using WebUI and even if you are going to use Syncthing-GTK, WebUI needs to be enabled, as Syncthing-GTK uses it to communicate with the Syncthing daemon.Syncthing daemon binary cannot be found.Syncthing daemon binary found.Syncthing daemon doesn't appear to be running.Syncthing daemon failed to generate RSA key or certificate.Syncthing daemon is too old.Syncthing daemon not found.Syncthing has been shut down.Syncthing has been successfully configured.Syncthing is generating RSA key and certificate.Syncthing is probably restarting or has been shut down.Syncthing is restarting.Syncthing-GTKSyncthing-GTK SettingsSyncthing-GTK needs Syncthing daemon %(min)s or newer, but only %(actual)s were found.Syncthing-GTK started and running in notification areaSyncthing-Inotify OutputSyncthing-Inotify is unavailable or failed to startThe aggregated statistics are publicly available atThe configuration has been saved but not activated. Syncthing must restart to activate the new configuration.The encrypted usage report is sent daily.The entered device ID does not look valid. It should be a 52 character string consisting of letters and numbers, with spaces and dashes being optional.The first command line parameter is the folder path and the second parameter is the relative path in the folder.The number of days to keep files in the trash can.The number of old versions to keep, per file.This binary will be started when syncthing daemon is not running and "start daemon in background" option is checked on "Interface" page.This may take a while...This platform (%s) is not supportedTrashcanTry again.UI SettingsUI _SettingsUnexpected folder ID sent from device "%s".UnlimitedUnsharedUnusedUp to DateUpload RateUs_e traditional window headerUse _icons in menuVersionVersion:Versioning _ModeVersions _PathWaiting for Syncthing daemon at %s...WebUI Listen AddressesWebUI setupWelcome to Syncthing-GTK first run wizard!When exiting after daemon was started in background...When starting and Syncthing daemon is not running...XYZ-123-ABCYesYou can configure more details later, in UI Settings and Daemon Settings menus in main window of application.Your syncthing daemon is too old.Your syncthing daemon is too old. Please, upgrade syncthing package at least to version %s and try again._About_Add_Addresses_Advanced_Browse_Browse..._Compression_Download Syncthing binary_Download..._Folder Settings_Ignore_Incoming Rate Limit_Integration_Interface_Introducer_Keep Versions_Other_Outgoing Rate Limit_Password_Path_Quit_Rescan_Restart_Restart Daemon_Send Only Folder_Unlimited_Usernamedisableddownload latest binaryin %s daysin a momentjust nowlast resort and generally not suggested.never deleteno limitofflineto %s and keep it up-to-date, but this option is meant as~%s hours ago~%s hours from nowProject-Id-Version: syncthing-gtk Report-Msgid-Bugs-To: POT-Creation-Date: 2016-04-20 11:27+0200 PO-Revision-Date: 2018-08-23 17:24+0000 Last-Translator: kozec Language-Team: Czech (http://www.transifex.com/syncthing-gtk/syncthing-gtk/language/cs/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: cs Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3; %(device)s chce sdílet adresář "%(folder)s". Přidat nový adresář?%(hostname)s: %(deleted)s souborů bylo smazáno na jiném zařízení.%(hostname)s: Soubor '%(filename)s' byl smazán na jiném zařízení.%(hostname)s: %(updated)s souborů bylo směněno na jiném zařízení.%(hostname)s: Soubor '%(filename)s' byl směněn na jiném zařízení.%(hostname)s: %(updated)s souborů bylo směněno a %(deleted)s smazáno na jiném zařízení.%(online)s/%(total)s dostupné%s KiB/s%s den%s dnůpřed %s dny%s kB/spřed %s minutamiza %s minutpřed %s vteřinamiza %s vteřin%s%%%ss(sleduji)... _zeptat se co dělat... _počkat na démona... zeptat se _co dělat... chyby... aktualizované soubory... _nechat démona běžet... _spustit démona na pozadí... dokončené synchronizace... _ukončit démonaPoznámka: Po úpravě nastavení integrace možná budete muset restartovat váš souborový manažerVarování: Změna nastavení na této stránce může zamezit možnost použití aplikace Syncthing-GTKO aplikaci Syncthing-GTKVětší než normálníPřidat sdílený _adresářPřidat sdílený _přístrojAdresaVšechna dataVšechny přístroje nedostupnéPovolit anonymní hlášení o používání?Nebo Syncthing-GTK může stáhnout spustitelný soubor SyncthingPoužít pokaždé; Příště se neptatVždy spouštět démona automatickyVerzování obstarává externí příkaz. Musí odstranit soubor ze sdíleného adresáře.OznamováníJakékoliv přístroje nakonfigurované na zavaděči budou přidány také na tento přístroj.Pokouším se stáhnout aktuálního, čekejte prosím..._Automaticky aktualizovat stáhnutý spustitelný souborCesta ke spustitelnému souboru:Procházet pro spustitelný soubor SyncthingProcházet...Využití CPUCaja (MATE Desktop)Nemůžu vyvolat démonaNemůžu se autorizovat démonu. Použijte prosím webové rozhraní pro vygenerování API klíče nebo vypněte autentifikaci heslem.Nemůžu stáhnout démona Syncthing.Kontrola dostupného portu...V_yčistit poCluster nesesynchronizovánPříkazKompresePřipojenoPřipojeno k démonu SyncthingPřipojuji se k démonu Syncthing na %s...Připojování k démonu Syncthing...Připojuji se k démonu...Připojení k démonu Syncthing ztraceno.Připojení k démonu selhalo. Zkontrolujte svou konfiguraci a zkuste to znovu.Pokračováním v průvodci se vytvoří nová konfigurace pro Synthing.DémonVýstup démonaNastavení _démonaArgumenty démona a proměnné prostředíPriorita procesu démonaPřístroj "%s" se snaží připojit k démonu Syncthing.Přístroj "%(name)s" %(device)s na IP "%(ip)s" se chce připojit. Přidat nový přístroj?Identifikace přístroje_ID přístroje_Název přístrojeNepřipojenoZobrazit výstup _démonaZobrazit oznámení na ploše pro...Zobrazit chybový výstupZobrazovat cesty v panelu adresářůOpravdu chcete ze Syncthing odstranit přístroj '%s'?Opravdu chcete natrvalo zastavit synchronizaci adresáře '%s'?Hotovo.Rychlost stahováníStahování selhalo.Stahování dokončeno.Stažený soubor je porušený.Stahování Syncthing %sStahování démona Syncthing.Stahuji...Upravit _ignorované vzoryPovolit _lokální oznamováníPovolit _anonymní hlášení o používáníPovolit _globální oznamováníPovolit _UPnPZadejte adresy oddělené čárkou "ip:port" nebo "dynamic" pro automatické zjišťování adres.ChybaChybová zpráva:Ukončuje se.ExterníExtrahuji aktualizaci...Vytvoření dočasného souboru selhalo.Rozpoznání nejnovější verze Syncthing selhalo.Stahování balíčku démona Syncthing selhalo.Stažení aktualizace selhalo: %sHledání volného portu pro naslouchání selhalo.Generování klíčů selhaloNahrávání nastavení Syncthing selhaloNačtení nastavení démona selhalo.Upravování nastavení Syncthing selhaloUkládání nastavení Syncthing selhaloUložení nastavení selhalo.Selhalo spuštění démona Syncthing.Pořadí stahování s_ouborů_Verzování souborůUmístění souboru:Umístění souboru:Bity označující práva souborů jsou při hledání změn ignorovány. Použít pro souborové systémy FAT.SouboryPo nahrazení nebo smazání aplikací Syncthing jsou soubory přesunuty do adresáře .stversions.Po nahrazení nebo smazání aplikací Syncthing jsou soubory přesunuty do verzí označených daty v adresáři .stversions.Po nahrazení nebo smazání aplikací Syncthing jsou soubory přesunuty do verzí označených daty v adresáři .stversions. Verze jsou automaticky smazány, pokud jsou starší než maximální časový limit nebo překročí počet souborů povolených pro interval. Jsou použity následující intervaly: za první hodinu jsou ponechány verze pro každých 30 sekund, za první den jsou ponechány verze pro každou hodinu, za prvních 30 dní jsou ponechány verze pro každý den a do nejvyššího nastaveného stáří jsou ponechány verze pro každý týden.Soubory jsou chráněny před změnami na ostatních přístrojích, ale změny provedené z tohoto přístroje budou rozeslány na zbytek clusteru.Průvodce prvním spuštěnímID adresářeTyp adresářeID adresářeOznačení adresářePoužívat _tmavé témaNotifikační a GTK GUI ikona pro SyncthingGitHubS_ervery globálního oznamováníGlobální statusSkrýt oknoPokud je povoleno, Syncthing-GTK bude automaticky kontrolovat dostupnost nové verze démona a nahrazovat spustitelný soubor nejnovější verzí.Při povolení jsou změněné, vytvořené a smazané soubory synchronizovány okamžitě, pokud je Syncthing-GTK spuštěn. Poznámka: Používání této funkce spolu s nastaveným intervalem opakování skenování (<300s) může více zatěžovat systém.Pokud se hlášená data změní, budete opět upozorněni tímto dialogem.Pokud už máte démona Syncthing nastaveného, ukončete prosím tohoto průvodce a zkontrolujte svou složku %sPokud máte Syncthing nainstalován, nastavte prosím cestu k %s nížePokud máte Syncthing nainstalován, nastavte prosím cestu k %s níže nebo klikněte na tlačítko Stáhnout pro stažení nejnovější verze Syncthing.Pokud upřednostňujete možnost spravovat Syncthing vzdáleně přes internet nebo na své lokální síti, vyberte naslouchat na všech zařízeních a nastavte uživatelské jméno a heslo pro ochranu Syncthing před neověřeným přístupem.Ignorovat o_právněníIgnorované vzoryIgnorovat oprávněníAbecedněOd největšíhoOd nejnovějšíhoOd nejstaršíhoNáhodněOd nejmenšíhoMělo by být vytvořeno prvotní nastavení.Instalujte %(package)s balíček pro podporu funkce %(feature)sIntegrovat Syncthing se souborovými manažeryZavaděčJsou používána pro zjištění nejobvyklejších platforem, velikosti adresářů a verzí aplikace.Vypadá to, že používáte Syncthing poprvé.Udržovat spustitelný soubor Syncthing aktuálníNaposledy spatřenNaslouchat na _všech zařízeníchNaslouchat na _tomto zařízení_Port lokálního oznamováníMístní statusNízkáNejnižšíMa_ximální časový limitMaximální počet CPU jaderPouze metadataMinimalizovat do _lišty při startuMinimum volného místa na diskuSledovat _změny v souborovém systémuVíce informacíNautilus (Ubuntu/GNOME)Nemo (Cinamon Desktop)NovějšíNeNormálníVypnutoNedostupnéDostupnéOtevřít _webové rozhraníPři startu démona otevřít prohlížeč s _webovým rozhranímVolitelné označení nebo popisek adresáře. Může být rozdílné na každém zařízení.V opačném případě vyberte naslouchat na tomto zařízení aby jenom uživatelé a programy na tomto počítači mohly pracovat se Syncthing.NesesynchronizovánoOmezení rychlosti _odesíláníPřepsat vzdálené změnyCestaCesta k adresáři na lokálním počítači. Pokud neexistuje, bude vytvořen.Cesta pro ukládání verzí (nechat prázdné pro výchozí podadresář .stversions).PozastavenoČekejte prosímProsím čekejte...Zkontrolujte prosím chybový výstup a nahlaste chybu (New issue) na %s.Zkontrolujte prosím nastavení svého firewallu a zkuste to znovu.Zkontrolujete prosím svou instalaci nebo nastavte novou cestu ke spustitelnému souboru démona Syncthing.Instalujte prosím pyinotify balíček pro použití této funkceProsím, restartujte Syncthing-GTK aby se aplikovaly všechny změny v nastaveníchPoužijte prosím manažer balíčků pro instalaci balíčku Syncthing nebo %(download_link)s ze stránky Syncthing a uložte jej ho své složky %(target)s.Použijte prosím manažer balíčků pro instalaci balíčku Syncthing.Priorita bude použita pouze pokud bude zaškrtnuta možnost "spustit démona na pozadí" na záložce "Rozhraní".Využití RAMInterval opakování skenování_Interval opakování skenováníRestartuji démona...Pokračovat_Obnovit Syncthing_Zastavit SyncthingUkládání nastavení...Ukládání...SkenováníHledám démona Syncthing.Navštivte dokumentaci Syncthing pro získání seznamu podporovaných vzorůVyberte složku pro nový adresářVybrat přístroje, se kterými sdílet tento adresář.Vyberte adresáře sdílené s tímto přístrojemOdesílat i přijímatPouze odesílatNastaví maximální počet CPU jader která může démon použít. Tato hodnota bude použita pouze pokud bude zaškrtnuta možnost "spustit démona na pozadí" na záložce "Rozhraní"._Ukončit démonaS_dílet s přístrojiSdílet _adresářSdíleno sKrátký identifikátor tohoto adresáře. Musí být stejný na všech přístrojích.Zobrazit oknoZobrazit _IDZobrazuje se místo ID přístroje v listu přístrojů.Ukončit také démona Syncthing?JednoduchéJe mi líto, ale připojení k HTTPS není na této platformě podporováno. Použijte prosím webové rozhraní pro vypnutí HTTPS a zkuste to znovu.Mezerou oddělený seznam argumentů a proměnných prostředí předaných při spuštění výše uvedené aplikace Použijte PROMĚNNÁ="hodnota" k nastavení proměnné a -argument="hodnota" (s pomlčkou) pro argument. Pokud potřebujete předat příkazovou řádku jinému příkazu (např. logger nebo ionice), oddělte argumenty předponou ve formě vykřičníku "!" Příklad: STTRACE="all" logger -t /var/log/syncthing.log ! -logflags=10PostupnéSpustit Syncthing-GTK po přihlášeníSpustit jej nyní?Syncthing démon se spouštíZastavenoAdresa naslouchání synchronizačního protokoluSynchronizaceSynchronizace adresáře '%s' je dokončena.Synchronizuje se '%s' adresářůSynchronizuje se '%s'Synchronizuje seSyncthingNastavení démona SyncthingSpustitelný soubor SyncthingUmístění spustitelného souboru SyncthingSyncthing je možné spravovat vzdáleně přes webové rozhraní. Přestože budete používat Syncthing-GTK, webové rozhraní je nutné povolit, protože Syncthing-GTK jej používá pro komunikaci s démonem Syncthing.Nemůžu najít spustitelný soubor démona Syncthing.Nalezen spustitelný soubor démona Syncthing.Vypadá to, že démon Syncthing neběží.Démon Syncthing nedokázal vygenerovat RSA klíč nebo certifikát.Démon Syncthing je příliš starý.Démon Syncthing nebyl nalezen.Syncthing byl ukončen.Syncthing byl úspěšně nastaven.Syncthing generuje RSA klíč a certifikát.Syncthing se nejspíš restartuje nebo byl ukončen.Syncthing se restartuje.Syncthing-GTKNastavení Syncthing-GTKSyncthing-GTK potřebuje démona Syncthing %(min)s nebo novějšího, ale byl nalezen pouze %(actual)s.Syncthing-GTK je spuštěný a běží v oznamovací oblastiVýstup Syncthing-inotifySyncthing-inotify je nedostupné nebo selhalo jeho spuštěníSouhrnné statistiky jsou veřejně dostupné naKonfigurace byla uložena, ale nebyla aktivována. Aby bylo nové nastavení aktivováno, Syncthing se musí restartovat.Šifrovaná data o využití jsou zasílána denně.Zadané ID přístroje není platné. Mělo by mít 52 znaků a mělo by obsahovat písmena a čísla. Mezery a pomlčky jsou nepovinné.První parametr příkazové řádky je cesta k adresáři, druhý je relativní cesta v témže adresáři.Počet dní, po který budou soubory uchovány v koši.Počet starších verzí k zachování pro každý soubor.Tento spustitelný soubor bude spuštěn když nebude běžet démon Syncthing a bude zaškrtnuta možnost "spustit démona na pozadí" na záložce "Rozhraní".Toto může chvíli trvat...Tato platforma (%s) není podporovánaOdpadkový košZkuste to znovu.Nastavení UINastavení rozhraníZařízení "%s" odeslalo neočekávané ID adresáře.NeomezenoNesdílenoNepoužitoAktuálníRychlost odesíláníPoužívat _tradiční hlavičku oknaPoužívat _ikony v menuVerzeVerze:Mód verzováníCesta _k verzímČekám na démona Syncthing na %s...Adresa naslouchání webového rozhraníNastavení webového rozhraníVítejte v průvodci pro první spuštění Syncthing-GTK!Při ukončování poté, co byl démon spuštěný na pozadí...Pokud při startu neběží démon Syncthing...XYZ-123-ABCAnoMůžete nastavit více možností později, v Nastavení rozhraní a Nastavení démona v hlavním okně aplikace.Váš démon Syncthing je příliš starý.Váš démon Syncthing je příliš starý. Aktualizujte prosím Syncthing alespoň na verzi %s a zkuste to znovu._O programu_Přidat_Adresy_Pokročilé_Prohlížet_Procházet..._Komprese_Stáhnout spustitelný soubor Syncthing_Stáhnout...Nastavení Adresáře_IgnorovatOmezení rychlosti s_tahování_Integrace_Rozhraní_ZavaděčPonechat _verze_OstatníOmezení rychlosti _odesílání_Heslo_CestaU_končit_Opakovat skenování_Restartovat_Restartovat démonaPouze odesílat_Neomezeno_Uživatelské jménovypnutostáhněte nejnovější spustitelný souborv %s dnechza chvilkuprávě teďposlední možnost a obecně není doporučena.nikdy nemazatbez limitunedostupnédo %s a udržovat jej aktuální, ale tato možnost je brána jakopřed ~%s hodinamiza ~%s hodinsyncthing-gtk-0.9.4.4/locale/cs/LC_MESSAGES/syncthing-gtk.po000077500000000000000000001324041352162771300232570ustar00rootroot00000000000000# Syncthing-GTK # Copyright (C) 2014-2015 Kozec and contributors # This file is distributed under the same license as the Syncthing-GTK package. # # Translators: # chucic, 2016-2017 # Jaroslav Lichtblau , 2016 # kozec , 2016-2018 # chucic, 2015 msgid "" msgstr "" "Project-Id-Version: syncthing-gtk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-04-20 11:27+0200\n" "PO-Revision-Date: 2018-08-23 17:24+0000\n" "Last-Translator: kozec \n" "Language-Team: Czech (http://www.transifex.com/syncthing-gtk/syncthing-gtk/language/cs/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: cs\n" "Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n" #: syncthing_gtk/app.py:194 msgid "Syncthing-GTK started and running in notification area" msgstr "Syncthing-GTK je spuštěný a běží v oznamovací oblasti" #: syncthing_gtk/app.py:288 #, python-format msgid "%s kB/s" msgstr "%s kB/s" #: syncthing_gtk/app.py:302 syncthing_gtk/notifications.py:77 #: syncthing_gtk/wizard.py:53 msgid "Syncthing-GTK" msgstr "Syncthing-GTK" #: syncthing_gtk/app.py:363 syncthing_gtk/app.py:364 syncthing_gtk/app.py:942 msgid "Syncing" msgstr "Synchronizuje se" #: syncthing_gtk/app.py:366 syncthing_gtk/app.py:367 msgid "Scanning" msgstr "Skenování" #: syncthing_gtk/app.py:390 syncthing_gtk/app.py:652 msgid "Starting Syncthing daemon" msgstr "Syncthing démon se spouští" #: syncthing_gtk/app.py:424 msgid "Allow Anonymous Usage Reporting?" msgstr "Povolit anonymní hlášení o používání?" #: syncthing_gtk/app.py:426 msgid "The encrypted usage report is sent daily." msgstr "Šifrovaná data o využití jsou zasílána denně." #: syncthing_gtk/app.py:427 msgid "It is used to track common platforms, folder sizes and app versions." msgstr "Jsou používána pro zjištění nejobvyklejších platforem, velikosti adresářů a verzí aplikace." #: syncthing_gtk/app.py:428 msgid "" "If the reported data set is changed you will be prompted with this dialog " "again." msgstr "Pokud se hlášená data změní, budete opět upozorněni tímto dialogem." #: syncthing_gtk/app.py:430 msgid "The aggregated statistics are publicly available at" msgstr "Souhrnné statistiky jsou veřejně dostupné na" #: syncthing_gtk/app.py:486 msgid "Extracting update..." msgstr "Extrahuji aktualizaci..." #: syncthing_gtk/app.py:491 msgid "Restarting daemon..." msgstr "Restartuji démona..." #: syncthing_gtk/app.py:507 #, python-format msgid "Failed to download upgrade: %s" msgstr "Stažení aktualizace selhalo: %s" #: syncthing_gtk/app.py:525 #, python-format msgid "Downloading Syncthing %s" msgstr "Stahování Syncthing %s" #: syncthing_gtk/app.py:604 msgid "Connected to Syncthing daemon" msgstr "Připojeno k démonu Syncthing" #: syncthing_gtk/app.py:614 msgid "Connection to Syncthing daemon lost." msgstr "Připojení k démonu Syncthing ztraceno." #: syncthing_gtk/app.py:615 msgid "Syncthing is probably restarting or has been shut down." msgstr "Syncthing se nejspíš restartuje nebo byl ukončen." #: syncthing_gtk/app.py:617 msgid "Syncthing has been shut down." msgstr "Syncthing byl ukončen." #: syncthing_gtk/app.py:621 syncthing_gtk/app.py:1499 msgid "Syncthing is restarting." msgstr "Syncthing se restartuje." #: syncthing_gtk/app.py:621 syncthing_gtk/app.py:1499 msgid "Please wait" msgstr "Čekejte prosím" #: syncthing_gtk/app.py:644 #, python-format msgid "Connecting to Syncthing daemon at %s..." msgstr "Připojuji se k démonu Syncthing na %s..." #: syncthing_gtk/app.py:649 #, python-format msgid "Waiting for Syncthing daemon at %s..." msgstr "Čekám na démona Syncthing na %s..." #: syncthing_gtk/app.py:664 msgid "Your syncthing daemon is too old." msgstr "Váš démon Syncthing je příliš starý." #: syncthing_gtk/app.py:664 msgid "Attempting to download recent, please wait..." msgstr "Pokouším se stáhnout aktuálního, čekejte prosím..." #: syncthing_gtk/app.py:670 msgid "" "Cannot authorize with daemon. Please, use WebUI to generate API key or " "disable password authentication." msgstr "Nemůžu se autorizovat démonu. Použijte prosím webové rozhraní pro vygenerování API klíče nebo vypněte autentifikaci heslem." #: syncthing_gtk/app.py:672 #, python-format msgid "" "Your syncthing daemon is too old.\n" "Please, upgrade syncthing package at least to version %s and try again." msgstr "Váš démon Syncthing je příliš starý.\nAktualizujte prosím Syncthing alespoň na verzi %s a zkuste to znovu." #: syncthing_gtk/app.py:674 msgid "" "Sorry, connecting to HTTPS is not supported on this platform.\n" "Please, use WebUI to disable HTTPS try again." msgstr "Je mi líto, ale připojení k HTTPS není na této platformě podporováno.\nPoužijte prosím webové rozhraní pro vypnutí HTTPS a zkuste to znovu." #: syncthing_gtk/app.py:677 msgid "Connection to daemon failed. Check your configuration and try again." msgstr "Připojení k démonu selhalo. Zkontrolujte svou konfiguraci a zkuste to znovu." #: syncthing_gtk/app.py:678 syncthing_gtk/app.py:1992 #: syncthing_gtk/editordialog.py:314 msgid "Error message:" msgstr "Chybová zpráva:" #: syncthing_gtk/app.py:689 msgid "More info" msgstr "Více informací" #: syncthing_gtk/app.py:715 msgid "" "The configuration has been saved but not activated.\n" "Syncthing must restart to activate the new configuration." msgstr "Konfigurace byla uložena, ale nebyla aktivována.\nAby bylo nové nastavení aktivováno, Syncthing se musí restartovat." #: syncthing_gtk/app.py:717 msgid "_Restart" msgstr "_Restartovat" #: syncthing_gtk/app.py:784 #, python-format msgid "%(device)s wants to share folder \"%(folder)s\". Add new folder?" msgstr "%(device)s chce sdílet adresář \"%(folder)s\". Přidat nový adresář?" #: syncthing_gtk/app.py:791 syncthing_gtk/app.py:813 msgid "_Add" msgstr "_Přidat" #: syncthing_gtk/app.py:806 #, python-format msgid "" "Device \"%(name)s\" (%(device)s) at IP \"%(ip)s\" wants to " "connect. Add new device?" msgstr "Přístroj \"%(name)s\" %(device)s na IP \"%(ip)s\" se chce připojit. Přidat nový přístroj?" #: syncthing_gtk/app.py:814 msgid "_Ignore" msgstr "_Ignorovat" #: syncthing_gtk/app.py:832 msgid "RAM Utilization" msgstr "Využití RAM" #: syncthing_gtk/app.py:833 msgid "CPU Utilization" msgstr "Využití CPU" #: syncthing_gtk/app.py:834 syncthing_gtk/app.py:1353 msgid "Download Rate" msgstr "Rychlost stahování" #: syncthing_gtk/app.py:835 syncthing_gtk/app.py:1354 msgid "Upload Rate" msgstr "Rychlost odesílání" #: syncthing_gtk/app.py:836 msgid "Announce Server" msgstr "Oznamování" #: syncthing_gtk/app.py:837 syncthing_gtk/app.py:1356 msgid "Version" msgstr "Verze" #: syncthing_gtk/app.py:860 syncthing_gtk/editordialog.py:394 msgid "disabled" msgstr "vypnuto" #: syncthing_gtk/app.py:862 msgid "Online" msgstr "Dostupné" #: syncthing_gtk/app.py:862 msgid "offline" msgstr "nedostupné" #: syncthing_gtk/app.py:864 #, python-format msgid "%(online)s/%(total)s online" msgstr "%(online)s/%(total)s dostupné" #: syncthing_gtk/app.py:891 syncthing_gtk/app.py:1357 #: syncthing_gtk/app.py:1382 msgid "Never" msgstr "Novější" #: syncthing_gtk/app.py:899 syncthing_gtk/app.py:1691 #: syncthing_gtk/app.py:1692 msgid "Paused" msgstr "Pozastaveno" #: syncthing_gtk/app.py:899 syncthing_gtk/app.py:924 syncthing_gtk/app.py:939 #: syncthing_gtk/infobox.py:60 msgid "Disconnected" msgstr "Nepřipojeno" #: syncthing_gtk/app.py:916 msgid "Connected" msgstr "Připojeno" #: syncthing_gtk/app.py:945 syncthing_gtk/app.py:980 syncthing_gtk/app.py:1030 #: syncthing_gtk/app.py:1031 syncthing_gtk/app.py:1070 msgid "Up to Date" msgstr "Aktuální" #: syncthing_gtk/app.py:966 syncthing_gtk/app.py:967 syncthing_gtk/app.py:968 msgid "Files" msgstr "Soubory" #: syncthing_gtk/app.py:980 syncthing_gtk/app.py:1068 msgid "Cluster out of sync" msgstr "Cluster nesesynchronizován" #: syncthing_gtk/app.py:995 msgid "Stopped" msgstr "Zastaveno" #: syncthing_gtk/app.py:998 syncthing_gtk/app.py:1005 msgid "Error" msgstr "Chyba" #: syncthing_gtk/app.py:1024 #, python-format msgid "Synchronizing '%s'" msgstr "Synchronizuje se '%s'" #: syncthing_gtk/app.py:1026 #, python-format msgid "Synchronizing %s folders" msgstr "Synchronizuje se '%s' adresářů" #: syncthing_gtk/app.py:1035 syncthing_gtk/app.py:1036 msgid "All devices offline" msgstr "Všechny přístroje nedostupné" #: syncthing_gtk/app.py:1040 syncthing_gtk/app.py:1041 msgid "Connecting to Syncthing daemon..." msgstr "Připojování k démonu Syncthing..." #: syncthing_gtk/app.py:1079 msgid "Unshared" msgstr "Nesdíleno" #: syncthing_gtk/app.py:1082 msgid "Offline" msgstr "Nedostupné" #: syncthing_gtk/app.py:1176 msgid "Hide Window" msgstr "Skrýt okno" #: syncthing_gtk/app.py:1190 app.glade:651 msgid "Show Window" msgstr "Zobrazit okno" #: syncthing_gtk/app.py:1239 msgid "Syncthing daemon doesn't appear to be running." msgstr "Vypadá to, že démon Syncthing neběží." #: syncthing_gtk/app.py:1240 msgid "Start it now?" msgstr "Spustit jej nyní?" #: syncthing_gtk/app.py:1243 msgid "Always start daemon automatically" msgstr "Vždy spouštět démona automaticky" #: syncthing_gtk/app.py:1292 msgid "Folder ID" msgstr "ID adresáře" #: syncthing_gtk/app.py:1293 msgid "Path" msgstr "Cesta" #: syncthing_gtk/app.py:1294 msgid "Global State" msgstr "Globální status" #: syncthing_gtk/app.py:1295 msgid "Local State" msgstr "Místní status" #: syncthing_gtk/app.py:1296 msgid "Out Of Sync" msgstr "Nesesynchronizováno" #: syncthing_gtk/app.py:1297 msgid "Folder Type" msgstr "Typ adresáře" #: syncthing_gtk/app.py:1298 msgid "Ignore Permissions" msgstr "Ignorovat oprávnění" #: syncthing_gtk/app.py:1299 msgid "Rescan Interval" msgstr "Interval opakování skenování" #: syncthing_gtk/app.py:1300 msgid "Shared With" msgstr "Sdíleno s" #: syncthing_gtk/app.py:1324 syncthing_gtk/app.py:1325 #: syncthing_gtk/app.py:1381 msgid "Yes" msgstr "Ano" #: syncthing_gtk/app.py:1324 syncthing_gtk/app.py:1325 #: syncthing_gtk/app.py:1381 msgid "No" msgstr "Ne" #: syncthing_gtk/app.py:1327 msgid "(watch)" msgstr "(sleduji)" #: syncthing_gtk/app.py:1341 msgid "Unused" msgstr "Nepoužito" #: syncthing_gtk/app.py:1350 msgid "Address" msgstr "Adresa" #: syncthing_gtk/app.py:1351 msgid "Synchronization" msgstr "Synchronizace" #: syncthing_gtk/app.py:1352 msgid "Compression" msgstr "Komprese" #: syncthing_gtk/app.py:1355 msgid "Introducer" msgstr "Zavaděč" #: syncthing_gtk/app.py:1357 msgid "Last Seen" msgstr "Naposledy spatřen" #: syncthing_gtk/app.py:1378 device-edit.glade:22 msgid "All Data" msgstr "Všechna data" #: syncthing_gtk/app.py:1379 device-edit.glade:26 folder-edit.glade:78 msgid "Off" msgstr "Vypnuto" #: syncthing_gtk/app.py:1375 msgid "Send Only" msgstr "Pouze odesílat" #: syncthing_gtk/app.py:1375 msgid "Send & Receive" msgstr "Odesílat i přijímat" #: syncthing_gtk/app.py:1380 device-edit.glade:30 msgid "Metadata Only" msgstr "Pouze metadata" #: syncthing_gtk/app.py:1522 msgid "Exiting." msgstr "Ukončuje se." #: syncthing_gtk/app.py:1523 msgid "Shutdown Syncthing daemon as well?" msgstr "Ukončit také démona Syncthing?" #: syncthing_gtk/app.py:1528 msgid "Always do same; Don't show this window again" msgstr "Použít pokaždé; Příště se neptat" #: syncthing_gtk/app.py:1768 #, python-format msgid "Do you really want to permanently stop synchronizing directory '%s'?" msgstr "Opravdu chcete natrvalo zastavit synchronizaci adresáře '%s'?" #: syncthing_gtk/app.py:1770 #, python-format msgid "Do you really want remove device '%s' from Syncthing?" msgstr "Opravdu chcete ze Syncthing odstranit přístroj '%s'?" #: syncthing_gtk/app.py:1838 msgid "Syncthing-Inotify Output" msgstr "Výstup Syncthing-inotify" #: syncthing_gtk/app.py:1844 msgid "Syncthing-Inotify is unavailable or failed to start" msgstr "Syncthing-inotify je nedostupné nebo selhalo jeho spuštění" #: syncthing_gtk/app.py:1991 msgid "Failed to start Syncthing daemon." msgstr "Selhalo spuštění démona Syncthing." #: syncthing_gtk/app.py:1993 msgid "" "Please, check your installation or set new path to Syncthing daemon binary." msgstr "Zkontrolujete prosím svou instalaci nebo nastavte novou cestu ke spustitelnému souboru démona Syncthing." #: syncthing_gtk/daemonsettings.py:24 msgid "Syncthing Daemon Settings" msgstr "Nastavení démona Syncthing" #: syncthing_gtk/deviceeditor.py:24 msgid "" "The entered device ID does not look valid. It should be a 52 character " "string consisting of letters and numbers, with spaces and dashes being " "optional." msgstr "Zadané ID přístroje není platné. Mělo by mít 52 znaků a mělo by obsahovat písmena a čísla. Mezery a pomlčky jsou nepovinné." #: syncthing_gtk/editordialog.py:312 msgid "Failed to load configuration from daemon." msgstr "Načtení nastavení démona selhalo." #: syncthing_gtk/editordialog.py:313 msgid "Try again." msgstr "Zkuste to znovu." #: syncthing_gtk/editordialog.py:387 syncthing_gtk/editordialog.py:396 #, python-format msgid "%ss" msgstr "%ss" #: syncthing_gtk/editordialog.py:402 #, python-format msgid "%s%%" msgstr "%s%%" #: syncthing_gtk/editordialog.py:409 msgid "no limit" msgstr "bez limitu" #: syncthing_gtk/editordialog.py:411 #, python-format msgid "%s KiB/s" msgstr "%s KiB/s" #: syncthing_gtk/editordialog.py:418 msgid "never delete" msgstr "nikdy nemazat" #: syncthing_gtk/editordialog.py:420 #, python-format msgid "%s day" msgstr "%s den" #: syncthing_gtk/editordialog.py:422 #, python-format msgid "%s days" msgstr "%s dnů" #: syncthing_gtk/editordialog.py:455 msgid "Failed to save configuration." msgstr "Uložení nastavení selhalo." #: syncthing_gtk/finddaemondialog.py:24 find-daemon.glade:7 msgid "Can't invoke the daemon" msgstr "Nemůžu vyvolat démona" #: syncthing_gtk/finddaemondialog.py:26 msgid "Syncthing binary" msgstr "Spustitelný soubor Syncthing" #: syncthing_gtk/finddaemondialog.py:28 syncthing_gtk/finddaemondialog.py:37 msgid "Syncthing daemon binary cannot be found." msgstr "Nemůžu najít spustitelný soubor démona Syncthing." #: syncthing_gtk/finddaemondialog.py:29 #, python-format msgid "" "If you have Syncthing installed, please, set path to %s below or click on " "Download button to download latest Syncthing package." msgstr "Pokud máte Syncthing nainstalován, nastavte prosím cestu k %s níže nebo klikněte na tlačítko Stáhnout pro stažení nejnovější verze Syncthing." #: syncthing_gtk/finddaemondialog.py:38 #, python-format msgid "If you have Syncthing installed, please, set path to %s below" msgstr "Pokud máte Syncthing nainstalován, nastavte prosím cestu k %s níže" #: syncthing_gtk/finddaemondialog.py:82 syncthing_gtk/wizard.py:411 msgid "Cannot download Syncthing daemon." msgstr "Nemůžu stáhnout démona Syncthing." #: syncthing_gtk/finddaemondialog.py:83 syncthing_gtk/wizard.py:412 #, python-format msgid "This platform (%s) is not supported" msgstr "Tato platforma (%s) není podporována" #: syncthing_gtk/finddaemondialog.py:100 msgid "Downloading..." msgstr "Stahuji..." #: syncthing_gtk/finddaemondialog.py:163 syncthing_gtk/stdownloader.py:251 #: syncthing_gtk/stdownloader.py:279 msgid "Download failed." msgstr "Stahování selhalo." #: syncthing_gtk/finddaemondialog.py:185 syncthing_gtk/wizard.py:458 msgid "Download finished." msgstr "Stahování dokončeno." #: syncthing_gtk/foldereditor.py:45 msgid "Select Folder for new Folder" msgstr "Vyberte složku pro nový adresář" #: syncthing_gtk/foldereditor.py:166 syncthing_gtk/foldereditor.py:167 msgid "Please, install pyinotify package to use this feature" msgstr "Instalujte prosím pyinotify balíček pro použití této funkce" #: syncthing_gtk/ignoreeditor.py:44 msgid "File location:" msgstr "Umístění souboru:" #: syncthing_gtk/notifications.py:120 #, python-format msgid "Unexpected folder ID sent from device \"%s\"." msgstr "Zařízení \"%s\" odeslalo neočekávané ID adresáře." #: syncthing_gtk/notifications.py:124 #, python-format msgid "Device \"%s\" is trying to connect to syncthing daemon." msgstr "Přístroj \"%s\" se snaží připojit k démonu Syncthing." #: syncthing_gtk/notifications.py:153 #, python-format msgid "Synchronization of folder '%s' is completed." msgstr "Synchronizace adresáře '%s' je dokončena." #: syncthing_gtk/notifications.py:160 #, python-format msgid "%(hostname)s: Downloaded '%(filename)s' to reflect remote changes." msgstr "%(hostname)s: Soubor '%(filename)s' byl směněn na jiném zařízení." #: syncthing_gtk/notifications.py:165 #, python-format msgid "%(hostname)s: Deleted '%(filename)s' to reflect remote changes." msgstr "%(hostname)s: Soubor '%(filename)s' byl smazán na jiném zařízení." #: syncthing_gtk/notifications.py:168 #, python-format msgid "%(hostname)s: Downloaded %(updated)s files to reflect remote changes." msgstr "%(hostname)s: %(updated)s souborů bylo směněno na jiném zařízení." #: syncthing_gtk/notifications.py:171 #, python-format msgid "%(hostname)s: Deleted %(deleted)s files to reflect remote changes." msgstr "%(hostname)s: %(deleted)s souborů bylo smazáno na jiném zařízení." #: syncthing_gtk/notifications.py:175 #, python-format msgid "" "%(hostname)s: downloaded %(updated)s files and deleted %(deleted)s files to " "reflect remote changes." msgstr "%(hostname)s: %(updated)s souborů bylo směněno a %(deleted)s smazáno na jiném zařízení." #: syncthing_gtk/statusicon.py:48 msgid "Syncthing" msgstr "Syncthing" #: syncthing_gtk/stdownloader.py:174 syncthing_gtk/stdownloader.py:217 #: syncthing_gtk/stdownloader.py:313 syncthing_gtk/stdownloader.py:344 msgid "Failed to determine latest Syncthing version." msgstr "Rozpoznání nejnovější verze Syncthing selhalo." #: syncthing_gtk/stdownloader.py:236 msgid "Failed to create temporaly file." msgstr "Vytvoření dočasného souboru selhalo." #: syncthing_gtk/stdownloader.py:294 msgid "Downloaded file is corrupted." msgstr "Stažený soubor je porušený." #: syncthing_gtk/tools.py:192 #, python-format msgid "~%s hours ago" msgstr "před ~%s hodinami" #: syncthing_gtk/tools.py:194 #, python-format msgid "%s minutes ago" msgstr "před %s minutami" #: syncthing_gtk/tools.py:196 #, python-format msgid "%s seconds ago" msgstr "před %s vteřinami" #: syncthing_gtk/tools.py:197 msgid "just now" msgstr "právě teď" #: syncthing_gtk/tools.py:199 #, python-format msgid "%s days ago" msgstr "před %s dny" #: syncthing_gtk/tools.py:203 #, python-format msgid "in %s days" msgstr "v %s dnech" #: syncthing_gtk/tools.py:205 #, python-format msgid "~%s hours from now" msgstr "za ~%s hodin" #: syncthing_gtk/tools.py:207 #, python-format msgid "%s minutes from now" msgstr "za %s minut" #: syncthing_gtk/tools.py:209 #, python-format msgid "%s seconds from now" msgstr "za %s vteřin" #: syncthing_gtk/tools.py:210 msgid "in a moment" msgstr "za chvilku" #: syncthing_gtk/uisettingsdialog.py:58 msgid "UI Settings" msgstr "Nastavení UI" #: syncthing_gtk/uisettingsdialog.py:70 msgid "Unlimited" msgstr "Neomezeno" #: syncthing_gtk/uisettingsdialog.py:107 #, python-format msgid "Install %(package)s package to enable %(feature)s support" msgstr "Instalujte %(package)s balíček pro podporu funkce %(feature)s" #: syncthing_gtk/uisettingsdialog.py:312 msgid "Browse for Syncthing binary" msgstr "Procházet pro spustitelný soubor Syncthing" #: syncthing_gtk/wizard.py:53 msgid "First run wizard" msgstr "Průvodce prvním spuštěním" #: syncthing_gtk/wizard.py:137 #, python-format msgid "Please, check error log and fill bug report on %s." msgstr "Zkontrolujte prosím chybový výstup a nahlaste chybu (New issue) na %s." #: syncthing_gtk/wizard.py:141 msgid "Display error log" msgstr "Zobrazit chybový výstup" #: syncthing_gtk/wizard.py:198 msgid "Welcome to Syncthing-GTK first run wizard!" msgstr "Vítejte v průvodci pro první spuštění Syncthing-GTK!" #: syncthing_gtk/wizard.py:200 msgid "It looks like you never have used Syncthing." msgstr "Vypadá to, že používáte Syncthing poprvé." #: syncthing_gtk/wizard.py:201 msgid "Initial configuration should be created." msgstr "Mělo by být vytvořeno prvotní nastavení." #: syncthing_gtk/wizard.py:202 msgid "" "Continue this wizard to create a Syncthing configuration file or abort it to" " exit." msgstr "Pokračováním v průvodci se vytvoří nová konfigurace pro Synthing." #: syncthing_gtk/wizard.py:204 #, python-format msgid "" "If you already had Syncthing daemon configured, please, exit this wizard and" " check your %s folder" msgstr "Pokud už máte démona Syncthing nastaveného, ukončete prosím tohoto průvodce a zkontrolujte svou složku %s" #: syncthing_gtk/wizard.py:220 msgid "Searching for Syncthing daemon." msgstr "Hledám démona Syncthing." #: syncthing_gtk/wizard.py:222 syncthing_gtk/wizard.py:394 msgid "Please wait..." msgstr "Prosím čekejte..." #: syncthing_gtk/wizard.py:270 syncthing_gtk/wizard.py:287 msgid "Syncthing daemon not found." msgstr "Démon Syncthing nebyl nalezen." #: syncthing_gtk/wizard.py:271 msgid "Please, use package manager to install the Syncthing package." msgstr "Použijte prosím manažer balíčků pro instalaci balíčku Syncthing." #: syncthing_gtk/wizard.py:283 msgid "download latest binary" msgstr "stáhněte nejnovější spustitelný soubor" #: syncthing_gtk/wizard.py:288 syncthing_gtk/wizard.py:302 #, python-format msgid "" "Please, use package manager to install the Syncthing package or " "%(download_link)s from Syncthing page and save it to your %(target)s " "directory." msgstr "Použijte prosím manažer balíčků pro instalaci balíčku Syncthing nebo %(download_link)s ze stránky Syncthing a uložte jej ho své složky %(target)s." #: syncthing_gtk/wizard.py:296 msgid "Syncthing daemon is too old." msgstr "Démon Syncthing je příliš starý." #: syncthing_gtk/wizard.py:297 #, python-format msgid "" "Syncthing-GTK needs Syncthing daemon %(min)s or newer, but only %(actual)s " "were found." msgstr "Syncthing-GTK potřebuje démona Syncthing %(min)s nebo novějšího, ale byl nalezen pouze %(actual)s." #: syncthing_gtk/wizard.py:309 msgid "Alternatively, Syncthing-GTK can download Syncthing binary" msgstr "Nebo Syncthing-GTK může stáhnout spustitelný soubor Syncthing" #: syncthing_gtk/wizard.py:310 #, python-format msgid "to %s and keep it up-to-date, but this option is meant as" msgstr "do %s a udržovat jej aktuální, ale tato možnost je brána jako" #: syncthing_gtk/wizard.py:312 msgid "last resort and generally not suggested." msgstr "poslední možnost a obecně není doporučena." #: syncthing_gtk/wizard.py:315 msgid "_Download Syncthing binary" msgstr "_Stáhnout spustitelný soubor Syncthing" #: syncthing_gtk/wizard.py:319 msgid "Auto_update downloaded binary" msgstr "_Automaticky aktualizovat stáhnutý spustitelný soubor" #: syncthing_gtk/wizard.py:375 msgid "Syncthing daemon binary found." msgstr "Nalezen spustitelný soubor démona Syncthing." #: syncthing_gtk/wizard.py:377 syncthing_gtk/wizard.py:460 msgid "Binary path:" msgstr "Cesta ke spustitelnému souboru:" #: syncthing_gtk/wizard.py:378 msgid "Version:" msgstr "Verze:" #: syncthing_gtk/wizard.py:393 msgid "Downloading Syncthing daemon." msgstr "Stahování démona Syncthing." #: syncthing_gtk/wizard.py:441 msgid "Failed to download Syncthing daemon package." msgstr "Stahování balíčku démona Syncthing selhalo." #: syncthing_gtk/wizard.py:472 msgid "Syncthing is generating RSA key and certificate." msgstr "Syncthing generuje RSA klíč a certifikát." #: syncthing_gtk/wizard.py:473 msgid "This may take a while..." msgstr "Toto může chvíli trvat..." #: syncthing_gtk/wizard.py:515 msgid "Failed to generate keys" msgstr "Generování klíčů selhalo" #: syncthing_gtk/wizard.py:516 msgid "Syncthing daemon failed to generate RSA key or certificate." msgstr "Démon Syncthing nedokázal vygenerovat RSA klíč nebo certifikát." #: syncthing_gtk/wizard.py:526 msgid "WebUI setup" msgstr "Nastavení webového rozhraní" #: syncthing_gtk/wizard.py:528 msgid "" "Syncthing can be managed remotely using WebUI and even if you are going to " "use Syncthing-GTK, WebUI needs to be enabled, as Syncthing-GTK uses it to " "communicate with the Syncthing daemon." msgstr "Syncthing je možné spravovat vzdáleně přes webové rozhraní. Přestože budete používat Syncthing-GTK, webové rozhraní je nutné povolit, protože Syncthing-GTK jej používá pro komunikaci s démonem Syncthing." #: syncthing_gtk/wizard.py:533 msgid "" "If you prefer to be able to manage Syncthing remotely, over the internet or " "on your local network, select listen on all interfaces and set " "username and password to protect Syncthing from unauthorized access." msgstr "Pokud upřednostňujete možnost spravovat Syncthing vzdáleně přes internet nebo na své lokální síti, vyberte naslouchat na všech zařízeních a nastavte uživatelské jméno a heslo pro ochranu Syncthing před neověřeným přístupem." #: syncthing_gtk/wizard.py:538 msgid "" "Otherwise, select listen on localhost, so only users and programs on " "this computer will be able to interact with Syncthing." msgstr "V opačném případě vyberte naslouchat na tomto zařízení aby jenom uživatelé a programy na tomto počítači mohly pracovat se Syncthing." #: syncthing_gtk/wizard.py:544 msgid "WebUI Listen Addresses" msgstr "Adresa naslouchání webového rozhraní" #: syncthing_gtk/wizard.py:545 msgid "Listen on _localhost" msgstr "Naslouchat na _tomto zařízení" #: syncthing_gtk/wizard.py:547 msgid "Listen on _all interfaces" msgstr "Naslouchat na _všech zařízeních" #: syncthing_gtk/wizard.py:554 msgid "_Username" msgstr "_Uživatelské jméno" #: syncthing_gtk/wizard.py:555 msgid "_Password" msgstr "_Heslo" #: syncthing_gtk/wizard.py:609 msgid "Saving settings..." msgstr "Ukládání nastavení..." #: syncthing_gtk/wizard.py:610 msgid "Checking for available port..." msgstr "Kontrola dostupného portu..." #: syncthing_gtk/wizard.py:631 msgid "Failed to find unused port for listening." msgstr "Hledání volného portu pro naslouchání selhalo." #: syncthing_gtk/wizard.py:632 msgid "Please, check your firewall settings and try again." msgstr "Zkontrolujte prosím nastavení svého firewallu a zkuste to znovu." #: syncthing_gtk/wizard.py:646 msgid "Saving..." msgstr "Ukládání..." #: syncthing_gtk/wizard.py:678 msgid "Failed to load Syncthing configuration" msgstr "Nahrávání nastavení Syncthing selhalo" #: syncthing_gtk/wizard.py:705 msgid "Failed to modify Syncthing configuration" msgstr "Upravování nastavení Syncthing selhalo" #: syncthing_gtk/wizard.py:715 msgid "Failed to save Syncthing configuration" msgstr "Ukládání nastavení Syncthing selhalo" #: syncthing_gtk/wizard.py:729 msgid "Done." msgstr "Hotovo." #: syncthing_gtk/wizard.py:731 msgid "Syncthing has been successfully configured." msgstr "Syncthing byl úspěšně nastaven." #: syncthing_gtk/wizard.py:733 msgid "" "You can configure more details later, in UI Settings and Daemon " "Settings menus in main window of application." msgstr "Můžete nastavit více možností později, v Nastavení rozhraní a Nastavení démona v hlavním okně aplikace." #: about.glade:7 msgid "About Syncthing-GTK" msgstr "O aplikaci Syncthing-GTK" #: about.glade:10 msgid "GTK GUI and notification area icon for Syncthing" msgstr "Notifikační a GTK GUI ikona pro Syncthing" #: about.glade:12 msgid "GitHub" msgstr "GitHub" #: app.glade:239 app.glade:420 app.glade:802 msgid "Open _Web Interface" msgstr "Otevřít _webové rozhraní" #: app.glade:251 app.glade:424 app.glade:814 msgid "Display _Daemon Output" msgstr "Zobrazit výstup _démona" #: app.glade:280 app.glade:430 msgid "UI _Settings" msgstr "Nastavení rozhraní" #: app.glade:325 app.glade:451 msgid "Add Shared _Folder" msgstr "Přidat sdílený _adresář" #: app.glade:338 app.glade:455 msgid "Add _Device" msgstr "Přidat sdílený _přístroj" #: app.glade:356 app.glade:461 msgid "Daemon _Settings" msgstr "Nastavení _démona" #: app.glade:371 app.glade:465 app.glade:588 app.glade:788 msgid "Show _ID" msgstr "Zobrazit _ID" #: app.glade:391 app.glade:471 msgid "Sh_utdown Daemon" msgstr "_Ukončit démona" #: app.glade:404 app.glade:475 msgid "_Restart Daemon" msgstr "_Restartovat démona" #: app.glade:436 msgid "_About" msgstr "_O programu" #: app.glade:440 msgid "_Quit" msgstr "U_končit" #: app.glade:490 msgid "Override Remote Changes" msgstr "Přepsat vzdálené změny" #: app.glade:519 msgid "Edit _Ignore Patterns" msgstr "Upravit _ignorované vzory" #: app.glade:547 msgid "_Rescan" msgstr "_Opakovat skenování" #: app.glade:559 msgid "_Browse" msgstr "_Prohlížet" #: app.glade:611 msgid "Resume" msgstr "Pokračovat" #: app.glade:641 msgid "Connecting to daemon..." msgstr "Připojuji se k démonu..." #: app.glade:669 msgid "S_top Syncthing" msgstr "_Zastavit Syncthing" #: app.glade:683 msgid "Resume Sync_thing" msgstr "_Obnovit Syncthing" #: app.glade:695 daemon-settings.glade:335 msgid "_Incoming Rate Limit" msgstr "Omezení rychlosti s_tahování" #: app.glade:709 app.glade:751 msgid "_Unlimited" msgstr "_Neomezeno" #: app.glade:718 app.glade:760 msgid "_Other" msgstr "_Ostatní" #: app.glade:737 msgid "_Outgoing Rate Limit" msgstr "Omezení rychlosti _odesílání" #: daemon-output.glade:7 msgid "Daemon Output" msgstr "Výstup démona" #: daemon-settings.glade:106 msgid "Sync Protocol Listen Addresses" msgstr "Adresa naslouchání synchronizačního protokolu" #: daemon-settings.glade:136 msgid "Enable Local _Discovery" msgstr "Povolit _lokální oznamování" #: daemon-settings.glade:153 msgid "Enable _UPnP" msgstr "Povolit _UPnP" #: daemon-settings.glade:171 msgid "Local Discovery _Port" msgstr "_Port lokálního oznamování" #: daemon-settings.glade:212 msgid "Outgoing _Rate Limit" msgstr "Omezení rychlosti _odesílání" #: daemon-settings.glade:229 msgid "Open browser with _WebUI when daemon is starting" msgstr "Při startu démona otevřít prohlížeč s _webovým rozhraním" #: daemon-settings.glade:246 msgid "Enable _Anonymous Usage Reporting" msgstr "Povolit _anonymní hlášení o používání" #: daemon-settings.glade:262 msgid "Enable _Global Discovery" msgstr "Povolit _globální oznamování" #: daemon-settings.glade:281 msgid "Global Discovery _Servers" msgstr "S_ervery globálního oznamování" #: device-edit.glade:102 msgid "Device _ID" msgstr "_ID přístroje" #: device-edit.glade:134 msgid "Device _Name" msgstr "_Název přístroje" #: device-edit.glade:166 msgid "Shown instead of Device ID in the cluster status." msgstr "Zobrazuje se místo ID přístroje v listu přístrojů." #: device-edit.glade:181 msgid "_Addresses" msgstr "_Adresy" #: device-edit.glade:213 msgid "" "Enter comma separated \"ip:port\" addresses or \"dynamic\" to perform " "automatic discovery of the address." msgstr "Zadejte adresy oddělené čárkou \"ip:port\" nebo \"dynamic\" pro automatické zjišťování adres." #: device-edit.glade:242 msgid "Share _Folders" msgstr "Sdílet _adresář" #: device-edit.glade:276 msgid "Select the folders to share with this device" msgstr "Vyberte adresáře sdílené s tímto přístrojem" #: device-edit.glade:287 msgid "_Introducer" msgstr "_Zavaděč" #: device-edit.glade:308 msgid "" "Any devices configured on an introducer device will be added to this device " "as well." msgstr "Jakékoliv přístroje nakonfigurované na zavaděči budou přidány také na tento přístroj." #: device-edit.glade:323 msgid "_Compression" msgstr "_Komprese" #: device-id.glade:14 msgid "Device Identification" msgstr "Identifikace přístroje" #: device-id.glade:68 msgid "XYZ-123-ABC" msgstr "XYZ-123-ABC" #: find-daemon.glade:126 ui-settings.glade:821 msgid "_Browse..." msgstr "_Procházet..." #: find-daemon.glade:179 msgid "_Download..." msgstr "_Stáhnout..." #: folder-edit.glade:44 msgctxt "In File Pull Order combobox" msgid "Random" msgstr "Náhodně" #: folder-edit.glade:48 msgctxt "In File Pull Order combobox" msgid "Alphabetic" msgstr "Abecedně" #: folder-edit.glade:52 msgctxt "In File Pull Order combobox" msgid "Smallest First" msgstr "Od nejmenšího" #: folder-edit.glade:56 msgctxt "In File Pull Order combobox" msgid "Largest First" msgstr "Od největšího" #: folder-edit.glade:60 msgctxt "In File Pull Order combobox" msgid "Oldest First" msgstr "Od nejstaršího" #: folder-edit.glade:64 msgctxt "In File Pull Order combobox" msgid "Newest First" msgstr "Od nejnovějšího" #: folder-edit.glade:82 msgid "Simple" msgstr "Jednoduché" #: folder-edit.glade:86 msgid "Staggered" msgstr "Postupné" #: folder-edit.glade:90 msgid "Trashcan" msgstr "Odpadkový koš" #: folder-edit.glade:94 msgid "External" msgstr "Externí" #: folder-edit.glade:171 msgid "Folder _Label" msgstr "Označení adresáře" #: folder-edit.glade:202 msgid "Short identifier for the folder. Must be the same on all devices." msgstr "Krátký identifikátor tohoto adresáře. Musí být stejný na všech přístrojích." #: folder-edit.glade:216 msgid "_Path" msgstr "_Cesta" #: folder-edit.glade:234 msgid "" "Path to the folder on the local computer. Will be created if it does not " "exist." msgstr "Cesta k adresáři na lokálním počítači. Pokud neexistuje, bude vytvořen." #: folder-edit.glade:248 msgid "Rescan _Interval" msgstr "_Interval opakování skenování" #: folder-edit.glade:293 msgid "Monitor filesystem for _changes" msgstr "Sledovat _změny v souborovém systému" #: folder-edit.glade:314 msgid "" "If enabled, changed, created and delete files are synchronized immediately, as long as Syncthing-GTK is running.\n" "Note: Using this along with short Rescan Interval (<300s) may consume a lot of resources." msgstr "Při povolení jsou změněné, vytvořené a smazané soubory synchronizovány okamžitě, pokud je Syncthing-GTK spuštěn.\nPoznámka: Používání této funkce spolu s nastaveným intervalem opakování skenování (<300s) může více zatěžovat systém." #: folder-edit.glade:343 msgid "Browse..." msgstr "Procházet..." #: folder-edit.glade:366 msgid "Folder _ID" msgstr "ID adresáře" #: folder-edit.glade:396 msgid "" "Optional descriptive label for the folder. Can be different on each device." msgstr "Volitelné označení nebo popisek adresáře. Může být rozdílné na každém zařízení." #: folder-edit.glade:418 msgid "_Send Only Folder" msgstr "Pouze odesílat" #: folder-edit.glade:439 msgid "" "Files are protected from changes made on other devices, but changes made on " "this device will be sent to the rest of the cluster." msgstr "Soubory jsou chráněny před změnami na ostatních přístrojích, ale změny provedené z tohoto přístroje budou rozeslány na zbytek clusteru." #: folder-edit.glade:456 msgid "_Folder Settings" msgstr "Nastavení Adresáře" #: folder-edit.glade:476 msgid "Select the devices to share this folder with." msgstr "Vybrat přístroje, se kterými sdílet tento adresář." #: folder-edit.glade:514 msgid "Share With _Devices" msgstr "S_dílet s přístroji" #: folder-edit.glade:535 msgid "Versioning _Mode" msgstr "Mód verzování" #: folder-edit.glade:590 msgid "" "Files are moved to date stamped versions in a .stversions folder when " "replaced or deleted by syncthing." msgstr "Po nahrazení nebo smazání aplikací Syncthing jsou soubory přesunuty do verzí označených daty v adresáři .stversions." #: folder-edit.glade:605 msgid "_Keep Versions" msgstr "Ponechat _verze" #: folder-edit.glade:642 msgid "The number of old versions to keep, per file." msgstr "Počet starších verzí k zachování pro každý soubor." #: folder-edit.glade:671 msgid "" "Files are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing. Versions are automatically deleted if they are older than the maximum age or exceed the number of files allowed in an interval.\n" "\n" "The following intervals are used: for the first hour a version is kept every 30 seconds, for the first day a version is kept every hour, for the first 30 days a version is kept every day, until the maximum age a version is kept every week." msgstr "Po nahrazení nebo smazání aplikací Syncthing jsou soubory přesunuty do verzí označených daty v adresáři .stversions. Verze jsou automaticky smazány, pokud jsou starší než maximální časový limit nebo překročí počet souborů povolených pro interval.\n\nJsou použity následující intervaly: za první hodinu jsou ponechány verze pro každých 30 sekund, za první den jsou ponechány verze pro každou hodinu, za prvních 30 dní jsou ponechány verze pro každý den a do nejvyššího nastaveného stáří jsou ponechány verze pro každý týden." #: folder-edit.glade:688 msgid "Ma_ximum Age" msgstr "Ma_ximální časový limit" #: folder-edit.glade:727 msgid "Versions _Path" msgstr "Cesta _k verzím" #: folder-edit.glade:759 msgid "" "Path where versions should be stored (leave empty for the default " ".stversions folder)." msgstr "Cesta pro ukládání verzí (nechat prázdné pro výchozí podadresář .stversions)." #: folder-edit.glade:787 msgid "" "Files are moved to .stversions folder when replaced or deleted by Syncthing" msgstr "Po nahrazení nebo smazání aplikací Syncthing jsou soubory přesunuty do adresáře .stversions." #: folder-edit.glade:801 msgid "Clean out _after" msgstr "V_yčistit po" #: folder-edit.glade:840 msgid "The number of days to keep files in the trash can." msgstr "Počet dní, po který budou soubory uchovány v koši." #: folder-edit.glade:869 msgid "" "An external command handles the versioning. It has to remove the file from " "the synced folder." msgstr "Verzování obstarává externí příkaz. Musí odstranit soubor ze sdíleného adresáře." #: folder-edit.glade:884 msgid "Command" msgstr "Příkaz" #: folder-edit.glade:917 msgid "" "The first command line parameter is the folder path and the second parameter" " is the relative path in the folder." msgstr "První parametr příkazové řádky je cesta k adresáři, druhý je relativní cesta v témže adresáři." #: folder-edit.glade:953 msgid "File _Versioning" msgstr "_Verzování souborů" #: folder-edit.glade:982 msgid "Ignore P_ermissions" msgstr "Ignorovat o_právnění" #: folder-edit.glade:1003 msgid "" "File permission bits are ignored when looking for changes. Use on FAT " "filesystems." msgstr "Bity označující práva souborů jsou při hledání změn ignorovány. Použít pro souborové systémy FAT." #: folder-edit.glade:1018 msgid "Minimum Free Disk Space" msgstr "Minimum volného místa na disku" #: folder-edit.glade:1057 msgid "File Pull _Order" msgstr "Pořadí stahování s_ouborů" #: folder-edit.glade:1103 ui-settings.glade:954 msgid "_Advanced" msgstr "_Pokročilé" #: ignore-editor.glade:8 msgid "Ignore Patterns" msgstr "Ignorované vzory" #: ignore-editor.glade:99 msgid "" "See Syncthing " "documentation for list of supported patterns" msgstr "Navštivte dokumentaci Syncthing pro získání seznamu podporovaných vzorů" #: ignore-editor.glade:114 msgid "File location: " msgstr "Umístění souboru:" #: ui-settings.glade:27 msgid "Lowest" msgstr "Nejnižší" #: ui-settings.glade:31 msgid "Low" msgstr "Nízká" #: ui-settings.glade:35 msgid "Normal" msgstr "Normální" #: ui-settings.glade:39 msgid "Above Normal" msgstr "Větší než normální" #: ui-settings.glade:46 msgid "Syncthing-GTK Settings" msgstr "Nastavení Syncthing-GTK" #: ui-settings.glade:69 msgid "Please, restart Syncthing-GTK to apply all changed settings" msgstr "Prosím, restartujte Syncthing-GTK aby se aplikovaly všechny změny v nastaveních" #: ui-settings.glade:136 msgid "When starting and Syncthing daemon is not running..." msgstr "Pokud při startu neběží démon Syncthing..." #: ui-settings.glade:147 msgid "... _wait for daemon" msgstr "... _počkat na démona" #: ui-settings.glade:164 msgid "... start daemon in _background" msgstr "... _spustit démona na pozadí" #: ui-settings.glade:180 msgid "... _ask me what to do" msgstr "... _zeptat se co dělat" #: ui-settings.glade:199 msgid "When exiting after daemon was started in background..." msgstr "Při ukončování poté, co byl démon spuštěný na pozadí..." #: ui-settings.glade:210 msgid "... terminate _daemon" msgstr "... _ukončit démona" #: ui-settings.glade:226 msgid "... leave daemon _running" msgstr "... _nechat démona běžet" #: ui-settings.glade:242 msgid "... ask me w_hat to do" msgstr "... zeptat se _co dělat" #: ui-settings.glade:258 msgid "Us_e traditional window header" msgstr "Používat _tradiční hlavičku okna" #: ui-settings.glade:278 msgid "Display desktop notifications for..." msgstr "Zobrazit oznámení na ploše pro..." #: ui-settings.glade:289 msgid "... file updates" msgstr "... aktualizované soubory" #: ui-settings.glade:304 msgid "... errors" msgstr "... chyby" #: ui-settings.glade:319 msgid "... synchronization completion" msgstr "... dokončené synchronizace" #: ui-settings.glade:334 msgid "Start Syncthing-GTK when I login to my desktop" msgstr "Spustit Syncthing-GTK po přihlášení" #: ui-settings.glade:350 msgid "Minimize to _tray on start" msgstr "Minimalizovat do _lišty při startu" #: ui-settings.glade:366 msgid "Use _icons in menu" msgstr "Používat _ikony v menu" #: ui-settings.glade:383 msgid "Display paths in directories panel" msgstr "Zobrazovat cesty v panelu adresářů" #: ui-settings.glade:399 msgid "Force _dark theme" msgstr "Používat _tmavé téma" #: ui-settings.glade:474 msgid "_Interface" msgstr "_Rozhraní" #: ui-settings.glade:492 msgid "Integrate Syncthing with filemanagers" msgstr "Integrovat Syncthing se souborovými manažery" #: ui-settings.glade:507 msgid "Nemo (Cinamon Desktop)" msgstr "Nemo (Cinamon Desktop)" #: ui-settings.glade:524 msgid "Nautilus (Ubuntu/GNOME)" msgstr "Nautilus (Ubuntu/GNOME)" #: ui-settings.glade:540 msgid "Caja (MATE Desktop)" msgstr "Caja (MATE Desktop)" #: ui-settings.glade:579 msgid "" "Note: You may need to restart your filemanager after toggling " "integration." msgstr "Poznámka: Po úpravě nastavení integrace možná budete muset restartovat váš souborový manažer" #: ui-settings.glade:598 msgid "_Integration" msgstr "_Integrace" #: ui-settings.glade:627 msgid "Keep Syncthing binary up-to-date" msgstr "Udržovat spustitelný soubor Syncthing aktuální" #: ui-settings.glade:647 msgid "" "If enabled, Syncthing-GTK will automatically check for new daemon releases " "and replace binary with latest version." msgstr "Pokud je povoleno, Syncthing-GTK bude automaticky kontrolovat dostupnost nové verze démona a nahrazovat spustitelný soubor nejnovější verzí." #: ui-settings.glade:662 msgid "Daemon process priority" msgstr "Priorita procesu démona" #: ui-settings.glade:698 msgid "" "Priority will be used only if \"start daemon in background\" option " "is checked on \"Interface\" page." msgstr "Priorita bude použita pouze pokud bude zaškrtnuta možnost \"spustit démona na pozadí\" na záložce \"Rozhraní\"." #: ui-settings.glade:713 msgid "Maximum number of CPU cores" msgstr "Maximální počet CPU jader" #: ui-settings.glade:731 msgid "" "Sets the maximum number of CPU cores for daemon to use. This value will be " "used only if \"start daemon in background\" option is checked on " "\"Interface\" page." msgstr "Nastaví maximální počet CPU jader která může démon použít. Tato hodnota bude použita pouze pokud bude zaškrtnuta možnost \"spustit démona na pozadí\" na záložce \"Rozhraní\"." #: ui-settings.glade:786 msgid "Daemon" msgstr "Démon" #: ui-settings.glade:808 msgid "" "This binary will be started when syncthing daemon is not running and " "\"start daemon in background\" option is checked on " "\"Interface\" page." msgstr "Tento spustitelný soubor bude spuštěn když nebude běžet démon Syncthing a bude zaškrtnuta možnost \"spustit démona na pozadí\" na záložce \"Rozhraní\"." #: ui-settings.glade:838 msgid "Syncthing binary location" msgstr "Umístění spustitelného souboru Syncthing" #: ui-settings.glade:867 msgid "Daemon arguments and variables" msgstr "Argumenty démona a proměnné prostředí" #: ui-settings.glade:897 msgid "" "Space-separated list of arguments and environment variables passed when starting above binary\n" "\n" "Use VARIABLE=\"value\" to set variable and -argument=\"value\" (with dash) for argument.\n" "\n" "If you need to pass commandline to different command (such as logger or ionice), separate prefixed arguments with exclamation mark \"!\"\n" "\n" "Example:\n" " STTRACE=\"all\" logger -t /var/log/syncthing.log ! -logflags=10" msgstr "Mezerou oddělený seznam argumentů a proměnných prostředí předaných při spuštění výše uvedené aplikace\n\nPoužijte PROMĚNNÁ=\"hodnota\" k nastavení proměnné a -argument=\"hodnota\" (s pomlčkou) pro argument.\n\nPokud potřebujete předat příkazovou řádku jinému příkazu (např. logger nebo ionice), oddělte argumenty předponou ve formě vykřičníku \"!\"\n\nPříklad:\n STTRACE=\"all\" logger -t /var/log/syncthing.log ! -logflags=10" #: ui-settings.glade:921 msgid "" "Warning: Changing settings on this page may prevent you from using " "Syncthing-GTK" msgstr "Varování: Změna nastavení na této stránce může zamezit možnost použití aplikace Syncthing-GTK" syncthing-gtk-0.9.4.4/locale/de/000077500000000000000000000000001352162771300163155ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/locale/de/LC_MESSAGES/000077500000000000000000000000001352162771300201025ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/locale/de/LC_MESSAGES/syncthing-gtk.mo000066400000000000000000001046511352162771300232370ustar00rootroot00000000000000W >B?3EsBc`| + BM^xQW w     : ,8!!e!]!!T!-J"x" "" """"g#!m##### # ##'$!7$Y$$q$D$$ $$% %58%]n%% % % % &(&$?&d&"v&5&D&' '('9'L'j'''''!'( (e&(((((( (-(,)D))c))&)))()&*F*!d*****R*+K +gl++-.. ?. I. U. `.n.0... . .r.^/P)0az0=011x222&2)2(3()3"R3*u3(393%4 )4D44,y4 4 4445 5"5&5 -5:5 V5d555 55555566 660'6KX66 '737H7`7Oe7V7 8V8 j8v82838K8589;n99=::ox:::;;.;5;G;W; j;t;};v;<-1<,_<< <<O=`=t= =A= ==1=">;>kB>> J@.T@ @@@@@,@A(A;A CAMAgAxAA(NBwB.B;BCC:C+XC0C7CC DDV+D6DD3D3Em:E)EEpjF2F-G![M`[[ [[['[#\A\a\r\\5\\\ ]]]]]]&]:]>*^'i^.^ ^*^, _,9_.f_%_3_$_`(` 7`fC``l`aacud d d ddd(de e'e8eKeeefAgLghhiii jj(j7j GjQj3ajYj&jk_+k9k=kl"l6lRlolllll l#ll(m=mPmhmmmmmmmm;mHm>nn n*o,oT1o`ooo uppUpIpl2qJqBq-rPrAss sss tt1tEt `tmt$stt-uEMu6uu uuvvv vJv+w :w8Dw%}wwwQx Uz?`zzz z#z{/{B{[{o{ ~{{{{{4|(|) }LJ}'}(}!}) ~14~Af~~ ~~d~BN@8)5߀m{88"[ ++ Wbs% Ƀ׃ +&?GP e&s;؄A3V  -N҆ ن   *'Ra u $&؇ %+ 4 ANa u # ˈ ۈ5 *;FC$ SAol*F@0V:M9n]MQN+DG<FfW  th'(8[b;|Jg? NTE2S5<8(&E/c_CxakRrU1A>=0" P#^KwsPZ+JLI7,!`qI%.R31GT-$:C'?,U6=".O&v*Ved BmK6zHQ }! Y>) 59iX4Luj4/W3@-D2H\ OpB{#);y %7~%(device)s wants to share folder "%(folder)s". Add new folder?%(hostname)s: Deleted %(deleted)s files to reflect remote changes.%(hostname)s: Deleted '%(filename)s' to reflect remote changes.%(hostname)s: Downloaded %(updated)s files to reflect remote changes.%(hostname)s: Downloaded '%(filename)s' to reflect remote changes.%(hostname)s: downloaded %(updated)s files and deleted %(deleted)s files to reflect remote changes.%(online)s/%(total)s online%s KiB/s%s day%s days%s days ago%s kB/s%s minutes ago%s minutes from now%s seconds ago%s seconds from now%s%%%ss(watch)... _ask me what to do... _wait for daemon... ask me w_hat to do... errors... file updates... leave daemon _running... start daemon in _background... synchronization completion... terminate _daemonNote: You may need to restart your filemanager after toggling integration.Warning: Changing settings on this page may prevent you from using Syncthing-GTKAbout Syncthing-GTKAbove NormalAdd Shared _FolderAdd _DeviceAddressAll DataAll devices offlineAllow Anonymous Usage Reporting?Alternatively, Syncthing-GTK can download Syncthing binaryAlways do same; Don't show this window againAlways start daemon automaticallyAn external command handles the versioning. It has to remove the file from the synced folder.Announce ServerAny devices configured on an introducer device will be added to this device as well.Attempting to download recent, please wait...Auto_update downloaded binaryBinary path:Browse for Syncthing binaryBrowse...CPU UtilizationCaja (MATE Desktop)Can't invoke the daemonCannot authorize with daemon. Please, use WebUI to generate API key or disable password authentication.Cannot download Syncthing daemon.Checking for available port...Clean out _afterCluster out of syncCommandCompressionConnectedConnected to Syncthing daemonConnecting to Syncthing daemon at %s...Connecting to Syncthing daemon...Connecting to daemon...Connection to Syncthing daemon lost.Connection to daemon failed. Check your configuration and try again.DaemonDaemon OutputDaemon _SettingsDaemon arguments and variablesDaemon process priorityDevice "%s" is trying to connect to syncthing daemon.Device "%(name)s" (%(device)s) at IP "%(ip)s" wants to connect. Add new device?Device IdentificationDevice _IDDevice _NameDisconnectedDisplay Syncthing-Inotify OutputDisplay _Daemon OutputDisplay desktop notifications for...Display error logDisplay paths in directories panelDo you really want remove device '%s' from Syncthing?Do you really want to permanently stop synchronizing directory '%s'?Done.Download RateDownload failed.Download finished.Downloaded file is corrupted.Downloading Syncthing %sDownloading Syncthing daemon.Downloading...Edit _Ignore PatternsEnable Local _DiscoveryEnable _Anonymous Usage ReportingEnable _Global DiscoveryEnable _UPnPEnter comma separated "ip:port" addresses or "dynamic" to perform automatic discovery of the address.ErrorError message:Exiting.ExternalExtracting update...Failed to create temporaly file.Failed to determine latest Syncthing version.Failed to download Syncthing daemon package.Failed to download upgrade: %sFailed to find unused port for listening.Failed to generate keysFailed to load Syncthing configurationFailed to load configuration from daemon.Failed to modify Syncthing configurationFailed to save Syncthing configurationFailed to save configuration.Failed to start Syncthing daemon.File Pull _OrderFile _VersioningFile location:File location: File permission bits are ignored when looking for changes. Use on FAT filesystems.FilesFiles are moved to .stversions folder when replaced or deleted by SyncthingFiles are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing.Files are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing. Versions are automatically deleted if they are older than the maximum age or exceed the number of files allowed in an interval. The following intervals are used: for the first hour a version is kept every 30 seconds, for the first day a version is kept every hour, for the first 30 days a version is kept every day, until the maximum age a version is kept every week.Files are protected from changes made on other devices, but changes made on this device will be sent to the rest of the cluster.First run wizardFolder IDFolder TypeFolder _IDFolder _LabelForce _dark themeGTK GUI and notification area icon for SyncthingGitHubGlobal Discovery _ServersGlobal StateHide WindowIf enabled, Syncthing-GTK will automatically check for new daemon releases and replace binary with latest version.If enabled, changed, created and delete files are synchronized immediately, as long as Syncthing-GTK is running. Note: Using this along with short Rescan Interval (<300s) may consume a lot of resources.If the reported data set is changed you will be prompted with this dialog again.If you already had Syncthing daemon configured, please, exit this wizard and check your %s folderIf you have Syncthing installed, please, set path to %s belowIf you have Syncthing installed, please, set path to %s below or click on Download button to download latest Syncthing package.If you prefer to be able to manage Syncthing remotely, over the internet or on your local network, select listen on all interfaces and set username and password to protect Syncthing from unauthorized access.Ignore P_ermissionsIgnore PatternsIgnore PermissionsIn File Pull Order comboboxAlphabeticIn File Pull Order comboboxLargest FirstIn File Pull Order comboboxNewest FirstIn File Pull Order comboboxOldest FirstIn File Pull Order comboboxRandomIn File Pull Order comboboxSmallest FirstInitial configuration should be created.Install %(package)s package to enable %(feature)s supportIntegrate Syncthing with filemanagersIntroducerIt is used to track common platforms, folder sizes and app versions.It looks like you never have used Syncthing.Keep Syncthing binary up-to-dateLast SeenListen on _all interfacesListen on _localhostLocal Discovery _PortLocal StateLowLowestMa_ximum AgeMaximum number of CPU coresMetadata OnlyMinimize to _tray on startMinimum Free Disk SpaceMonitor filesystem for _changesMore infoNautilus (Ubuntu/GNOME)Nemo (Cinamon Desktop)NeverNoNormalOffOfflineOnlineOpen _Web InterfaceOpen browser with _WebUI when daemon is startingOptional descriptive label for the folder. Can be different on each device.Otherwise, select listen on localhost, so only users and programs on this computer will be able to interact with Syncthing.Out Of SyncOutgoing _Rate LimitOverride Remote ChangesPathPath to the folder on the local computer. Will be created if it does not exist.Path where versions should be stored (leave empty for the default .stversions folder).PausedPlease click %s to create a Syncthing configuration file or Quit to exitPlease waitPlease wait...Please, check error log and fill bug report on %s.Please, check your firewall settings and try again.Please, check your installation or set new path to Syncthing daemon binary.Please, install pyinotify package to use this featurePlease, restart Syncthing-GTK to apply all changed settingsPlease, use package manager to install the Syncthing package or %(download_link)s from Syncthing page and save it to your %(target)s directory.Please, use package manager to install the Syncthing package.Priority will be used only if "start daemon in background" option is checked on "Interface" page.RAM UtilizationRescan IntervalRescan _IntervalRestarting daemon...ResumeResume Sync_thingS_top SyncthingSaving settings...Saving...ScanningSearching for Syncthing daemon.See Syncthing documentation for list of supported patternsSelect Folder for new FolderSelect the devices to share this folder with.Select the folders to share with this deviceSend & ReceiveSend OnlySets the maximum number of CPU cores for daemon to use. This value will be used only if "start daemon in background" option is checked on "Interface" page.Sh_utdown DaemonShare With _DevicesShare _FoldersShared WithShort identifier for the folder. Must be the same on all devices.Show WindowShow _IDShown instead of Device ID in the cluster status.Shutdown Syncthing daemon as well?SimpleSorry, connecting to HTTPS is not supported on this platform. Please, use WebUI to disable HTTPS try again.Space-separated list of arguments and environment variables passed when starting above binary Use VARIABLE="value" to set variable and -argument="value" (with dash) for argument. If you need to pass commandline to different command (such as logger or ionice), separate prefixed arguments with exclamation mark "!" Example: STTRACE="all" logger -t /var/log/syncthing.log ! -logflags=10StaggeredStart Syncthing-GTK when I login to my desktopStart it now?Starting Syncthing daemonStoppedSync Protocol Listen AddressesSynchronizationSynchronization of folder '%s' is completed.Synchronizing %s foldersSynchronizing '%s'SyncingSyncthingSyncthing Daemon SettingsSyncthing binarySyncthing binary locationSyncthing can be managed remotely using WebUI and even if you are going to use Syncthing-GTK, WebUI needs to be enabled, as Syncthing-GTK uses it to communicate with the Syncthing daemon.Syncthing daemon binary cannot be found.Syncthing daemon binary found.Syncthing daemon doesn't appear to be running.Syncthing daemon failed to generate RSA key or certificate.Syncthing daemon is too old.Syncthing daemon not found.Syncthing has been shut down.Syncthing has been successfully configured.Syncthing is generating RSA key and certificate.Syncthing is probably restarting or has been shut down.Syncthing is restarting.Syncthing-GTKSyncthing-GTK SettingsSyncthing-GTK needs Syncthing daemon %(min)s or newer, but only %(actual)s were found.Syncthing-GTK started and running in notification areaSyncthing-Inotify OutputSyncthing-Inotify is unavailable or failed to startThe aggregated statistics are publicly available atThe configuration has been saved but not activated. Syncthing must restart to activate the new configuration.The encrypted usage report is sent daily.The entered device ID does not look valid. It should be a 52 character string consisting of letters and numbers, with spaces and dashes being optional.The first command line parameter is the folder path and the second parameter is the relative path in the folder.The number of days to keep files in the trash can.The number of old versions to keep, per file.This binary will be started when syncthing daemon is not running and "start daemon in background" option is checked on "Interface" page.This may take a while...This platform (%s) is not supportedTrashcanTry again.UI SettingsUI _SettingsUnexpected folder ID sent from device "%s".UnlimitedUnsharedUnusedUp to DateUpload RateUs_e traditional window headerUse _icons in menuVersionVersion:Versioning _ModeVersions _PathWaiting for Syncthing daemon at %s...WebUI Listen AddressesWebUI setupWelcome to Syncthing-GTK first run wizard!When exiting after daemon was started in background...When starting and Syncthing daemon is not running...XYZ-123-ABCYesYou can configure more details later, in UI Settings and Daemon Settings menus in main window of application.Your syncthing daemon is too old.Your syncthing daemon is too old. Please, upgrade syncthing package at least to version %s and try again._About_Add_Addresses_Advanced_Browse_Browse..._Compression_Download Syncthing binary_Download..._Folder Settings_Ignore_Incoming Rate Limit_Integration_Interface_Introducer_Keep Versions_Other_Outgoing Rate Limit_Password_Path_Quit_Rescan_Restart_Restart Daemon_Send Only Folder_Unlimited_Usernamedisableddownload latest binaryin %s daysin a momentjust nowlast resort and generally not suggested.never deleteno limitofflineto %s and keep it up-to-date, but this option is meant as~%s hours ago~%s hours from nowProject-Id-Version: syncthing-gtk Report-Msgid-Bugs-To: POT-Creation-Date: 2016-04-20 11:27+0200 PO-Revision-Date: 2018-02-24 08:00+0000 Last-Translator: kozec Language-Team: German (http://www.transifex.com/syncthing-gtk/syncthing-gtk/language/de/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: de Plural-Forms: nplurals=2; plural=(n != 1); %(device)s möchte den Ordner "%(folder)s" teilen. Neuen Ordner hinzufügen?%(hostname)s:Gelöscht %(deleted)s um entfernte Änderungen widerzuspiegeln%(hostname)s: Gelöscht '%(filename)s' um entfernte Änderungen widerzuspiegeln.%(hostname)s: Heruntergeladen %(updated)s um entfernte Änderungen widerzuspiegeln.%(hostname)s: Heruntergeladen '%(filename)s' um entfernte Änderungen widerzuspiegeln.%(hostname)s: Heruntergeladen, %(updated)s Dateien aktualisiert und %(deleted)s Dateien gelöscht um entfernte Änderungen widerzuspiegeln.%(online)s/%(total)s online%s KiB/s%s Tag%s Tagevor %s Tagen%s kB/svor %s Minutenin %s Minutenvor %s Sekundenin %s Sekunden%s%%%ss(beobachte)... _frag mich, was zu tun ist... _auf den Daemon warten... frag mich w_as zu tun ist... Fehler... Dateiaktualisierungen...Daemon _laufen lassen... Daemon _im Hintergrund starten... Synchronisationsabschluss... Daemon _beendenHinweis: Möglicherweise müssen Sie Ihren Dateimanager nach dem Einschalten der Integration neu starten..Achtung: Änderungen auf dieser Seite können die Unbenutzbarkeit von Syncthing-GTK zur Folge haben.Über Syncthing-GTKÜber NormalGeteilten Ordner hinzu_fügen_Gerät hinzufügenAdresseAlle DatenAlle Geräte offlineErlaube anonymisierte Sammlung von Benutzungsdaten?Ansonsten kann Syncthing-GTK die Syncthing-Programmdatei selbstImmer das Gleiche machen; Dieses Fenster nicht mehr fragenDienst immer automatisch startenEin externer Befehl übernimmt die Versionsverwaltung. Er muss die Datei vom synchronisierten Ordner entfernen.AnkündigungsserverAlle Geräte, die auf einem Bekanntmachungsknoten-Gerät konfiguriert sind, werden zu diesem Gerät ebenfalls hinzugefügt.Es wird versucht, einen aktuelleren herunterzuladen, bitte warten…A_utomatisch Programmdatei aktualisierenPfad des Programmes:Nach Syncthing-Programmdatei suchenDurchsuchen ...CPU-AuslastungCaja (MATE Desktop)Konnte den Dienst nicht aufrufenKann nicht am Dienst authorisiert werden. Bitte verwenden Sie die Web-Oberfläche, um einen API-Schlüssel zu generieren oder schalten Sie die Passwort-Authentisierung aus.Kann Syncthing-Dienst nicht herunterladen.Suche nach verfügbarem Port…Säubere _nachCluster ist nicht synchronBefehlKomprimierungVerbundenMit dem Syncthing-Dienst verbundenVerbindung zum Syncthing-Dienst unter %s wird aufgebaut…Verbindung zu Syncthing-Dienst wird aufgebaut…Verbinde mit Dienst…Verbindung mit dem Syncthing-Dienst verloren.Die Verbindung mit dem ist Dienst fehlgeschlagen. Prüfen Sie die Konfiguration und versuchen Sie es erneut.DaemonDienstausgabeDienstein_stellungenArgumente und Variablen für DaemonDaemon ProzessprioritätGerät "%s" versucht eine Verbindung mit dem syncthing-Daemon aufzubauen.Gerät "%(name)s " (%(device)s) mit IP "%(ip)s" möchte eine Verbindung aufbauen. Neues Gerät hinzufügen?Geräte-IdentifikationGeräte-_IDGeräte-_NameVerbindung getrenntZeige Ausgabe von Syncthing-InotifyZeige _Dienst-AusgabenZeige Desktop Benachrichtigungen für...Fehlerprotokoll anzeigenZeige Pfade in der VerzeichnisübersichtlMöchten Sie wirklich das Gerät '%s' aus Syncthing entfernen?Möchten Sie wirklich auf Dauer aufhören, den Ordner '%s' zu synchronieren?Abgeschlossen.DownloadrateDownload fehlgeschlagen.Download abgeschlossen.Die heruntergeladene Datei ist korrupt.Lade Syncthing %s herunter…Lade Syncthing-Dienst herunter.Lade herunter…Bearbeite _IgnoriermusterAktiviere lokale Ent_deckungAktiviere _Anonymisierte Sammlung von BenutzungsdatenAktiviere _Globale EntdeckungAktiviere _UPnPGeben Sie durch Kommata getrennte "ip:port"-Adressen ein, oder "dynamic", um automatische Entdeckung der Adresse durchzuführen.FehlerFehlernachricht:Beende.ExternEntpacke Update…Konnte temporäre Datei nicht anlegen.Konnte die aktuellste Syncthing-Version nicht feststellen.Konnte Paket mit Syncthing-Dienstprogramm nicht herunterladen.Download des Updates fehlgeschlagen: %sKonnte keinen freien Port zum Lauschen finden.Konnte Schlüssel nicht erzeugenKonnte Syncthing-Konfiguration nicht ladenKonnte Konfiguration nicht aus Dienst laden.Konnte Syncthing-Konfiguration nicht ändernKonnte Syncthing-Konfiguration nicht speichernKonnte Konfiguration nicht speichern.Der Syncthing-Dienst konnte nicht gestartet werden.Übertragungsreihenfolge von DateienDatei_versionierungOrt der Datei:Dateipfad: Bei der Suche nach Änderungen werden Dateiberechtigungen ignoriert. Verwendung auf FAT Dateisystemen.DateienDateien werden in einen .stversions Ordner verschoben, wenn sie von Syncthing ersetzt oder gelöscht werden.Dateien werden in eine mit Datum versehene Version in einen .stversions Ordner verschoben, wenn sie von Syncthing ersetzt oder gelöscht werden. Dateien werden in eine mit Datum versehene Version in einen .stversions Ordner verschoben, wenn sie von Syncthing ersetzt oder gelöscht werden. Die Dateiversionen werden automatisch gelöscht, wenn sie das maximale Alter oder eine maximale Anzahl in einem gegebenen Intervall erreicht haben. Folgende Intervalle kommen zur Anwendung: während der ersten Stunde wird ein Version 30 Sekunden, während des ersten Tages wird sie jede Stunde, während der ersten 30 Tage wird sie jeden Tag und bis zu ihrem maximalen Alter jede Woche gehalten.Dateien werden vor Änderungen, die auf anderen Geräten vorgenommen werden geschützt. Änderungen auf diesem Gerät werden jedoch an den Rest des Clusters gesendet.ErsteinrichtungsasssistentOrdner-IDOrdnertypOrdner-_IDOrdner-Bezeich_nungErzwinge _dunkles ThemaAnwendungs- und Tray Icon für SyncthingGitHubGlobale Entdeckungs-_ServerGlobaler ZustandFenster versteckenWenn aktiviert, wird Syncthing-GTK automatisch nach neuen Daemon Versionen suchen und die Programmdatei mit der aktuellen Version ersetzen.Wenn aktiviert, werden geänderte, angelegte und gelöschte Dateien - solange Syncthing-GTK läuft - sofort synchronisiert. Hinweis: Eine derartige Verwendung zusammen mit einem kurzen Rescan-Intervall (<300 s) kann zu einem hohen Ressourcenverbrauch führen.Wenn sich die erfassten Daten ändern, werden Sie erneut mit diesem Dialog aufgefordert, zuzustimmen.Falls Sie schon einmal den Syncthing-Dienst konfiguriert haben, verlassen Sie bitte diesen Assistenten und prüfen Sie ihren %s - OrdnerFalls Sie Syncthing installiert haben, bitte setzen Sie den Pfad zu %s untenFalls Sie Syncthing installiert haben, bitten Sie den Pfad zu %s unten oder betätigen Sie den Download-Knopf, um das neueste Syncthing-Paket herunterzuladen.Falls Sie es bevorzugen, Syncthing aus der Ferne zu verwalten, über das Internet oder über Ihr lokales Netzwerk, wählen Sie Auf allen Schnittstellen lauschen und setzen Sie Benutzername und Passwort, um Syncthing vor unberechtigtem Zugriff zu schützen._Berechtigungen ignorierenIgnoriere MusterIgnoriere BerechtigungenAlphabetischGrößste zuerstNeueste zuerstÄlteste zuerstZufälligKleinste zuerstEine initiale Konfiguration sollte angelegt werden.Installieren Sie das Paket %(package)s , um Unterstützung für %(feature)s zu aktivierenIntegriere Syncthing mit DateimanagernVorstellender KnotenEr wird verwendet, um häufige Plattformen, Ordnergrößen und Anwendungsversionen zu erfassen.Es scheint, als hätten Sie Syncthing noch nie verwendet.Halten Sie die Syncthing Programmdatei auf dem neuesten StandZuletzt gesehenAuf _allen Schnittstellen lauschenNur auf _localhost lauschen_Port für lokale EntdeckungLokaler ZustandNiedrigAm NiedrigstenMa_ximales AlterMaximale Anzahl der CPU-KerneNur MetadatenBeim Start in den _tray minimierenMinimal freier SpeicherplatzÜberwache Dateisystem für _ÄnderungenMehr InformationenNautilus (Ubuntu/GNOME)Nemo (Cinamon Desktop)NieNeinNormalAusOfflineOnlineÖffne _WeboberflächeÖffne Browser mit _Weboberfläche, wenn der Dienst startetOptionale Ordner-Bezeichnung. Diese kann van Gerät zu Gerät variieren.Ansonsten wählen Sie Nur auf localhost lauschen, so dass nur Benutzer und Programme auf diesem Rechner mit Syncthing interagieren können.Nicht synchronLimit für _ausgehende DatenrateÄnderungen von Gegenstelle überschreibenPfadPfad zu dem Ordner auf dem lokalen Rechner. Wird angelegt, falls er nicht existiert.Pfad, wo Versionen gespeichert werden sollen (leer lassen für den Standard .stversions Ordner).PausiertBitte klicken Sie auf %s um eine Syncthing-Konfigurationsdatei anzulegen, oder auf Quit um das Programm zu verlassen.Bitte wartenBitte warten…Bitte prüfen Sie das Fehlerprotokoll und füllen sie einen Fehlerbericht auf %s aus.Bitte prüfen Sie Ihre Firewalleinstellungen und versuchen Sie es erneut.Bitte prüfen Sie Ihre Installation oder setzen Sie einen neuen Pfad zum Programm für den Syncthing-Dienst.Bitte installieren Sie das pyinotify-Paket, um diese Funktion zu verwendenDie Änderung werden erst nach Neustart von Syncthing-GTK wirksam.Bitte verwenden Sie die Paketverwaltung, um das Syncthing-Paket zu installieren oder %(download_link)s von der Syncthing-Webseite herunter und speichern Sie es in Ihrem %(target)s - Verzeichnis.Bitte verwenden Sie die Paketverwaltung, um das Syncthing-Paket zu installieren.Vorrang wird nur dann eingeräumt werden, wenn "Starte Daemon im Hintergrund" Option auf der "Interface" Seite angehakt ist.RAM-AuslastungSuchintervallRescan _IntervallStarte Dienst neu…FortsetzenSyncthing _fortsetzenSyncthing _anhaltenSpeichere Einstellungen…Speichere…SucheSuche nach Syncthing-Dienstprogramm.Konsultieren Sie die Syncthing Dokumentation für eine Liste der unterstützten MusterWähle Ordner für neuen OrdnerWählen Sie die Geräte, mit denen dieser Ordner geteilt werden soll.Wählen Sie die mit diesem Gerät geteilten Ordner ausSenden und EmpfangenNur sendenLegt die maximale Anzahl der CPU-Kerne für den Daemon fest. This value will be used only if "start daemon in background" option is checked on "Interface" page.Dienst her_unterfahrenMit _Geräten teilen_Ordner teilenGeteilt mitKurzer Bezeichner für den Ordner. Muss auf allen Geräten identisch sein.Fenster zeigenZeige _IDWird anstelle der Geräte-ID im Cluser-Status angezeigt.Syncthing-Dienst auch herunterfahren?EinfachVerbindung per HTTPS ist leider auf dieser Plattform nicht unterstützt. Bitte verwenden Sie die Web-Oberfläche, um HTTPS auszuschalten und versuchen Sie es erneut.Durch Leerzeichen getrennte Liste von Argumenten und Umgebungsvariablen werden übergeben, wenn die obige Programmdatei gestartet wird. Benutzen Sie VARIABLE="value", um die Variable zu setzen und -argument="value" (mit Strich) für das Argument. Wenn Sie die Befehlszeile an ein anderes Kommando (wie bspw. Logger oder Ionice) weitergeben müssen, trennen Sie die voreingestellten Argumente mit dem Ausrufezeichen "!". Beispiel: STTRACE="all" logger -t /var/log/syncthing.log ! -logflags=10GestaffeltSyncthing-GTK starten, wenn ich mich an meinem Computer anmeldeSoll er gestartet werden?Starte Syncthing-DienstAngehaltenLausch-Adressen des Sync-ProtokollsSynchronisierungSynchronisierung von Ordner '%s' abgeschlossen.Synchronisiere %s OrdnerSynchronisiere '%s'SynchronisiereSyncthingSyncthing-Dienst-EinstellungenSyncthing-ProgrammdateiOrt der Syncthing ProgrammdateiSyncthing kann über eine Weboberfläche ferngesteuert werden und selbst wenn Sie Syncthing-GTK verwenden, muss die Weboberfläche aktiviert sein, da Syncthing-GTK diese verwendet, um mit dem Syncthing-Dienst zu kommunizieren.Syncthing-Dienstprogramm kann nicht gefunden werden.Syncthing-Dienst-Programmdatei gefunden.Syncthing-Dienst scheint nicht zu laufen.Der Syncthing-Dienst konnte keinen RSA-Schlüssel oder -Zertifikat erzeugen.Die Syncthing-Programmdatei ist zu alt.Syncthing-Dienstprogramm nicht gefunden.Syncthing wurde heruntergefahren.Syncthing wurde erfolgreich konfiguriert.Syncthing erzeugt RSA-Schlüssel und -Zertifikat.Syncthing startet wahrscheinlich neu oder wurde heruntergefahren.Syncthing startet neu.Syncthing-GTKSyncthing-GTK EinstellungenSyncthing-GTK benötigt den Syncthing-Dienst %(min)s oder neuer, aber nur %(actual)s wurde gefunden.Syncthing-GTK ist gestartet und läuft im BenachrichtigungsbereichAusgabe von Syncthing-InotifySyncthing-Inotify ist nicht verfügbar oder konnte nicht startenAggregierte Statistiken sind öffentlich einsehbar unterDie Konfiguration wurde gespeichert, aber noch nicht aktiviert. Syncthing muss neu starten, um die Konfiguration zu aktivieren.Der verschlüsselte Bericht wird täglich verschickt.Die eingegebene Geräte-ID wirkt nicht gültig. Es sollte eine Zeichenkette aus 52 Buchstaben und Ziffern sein. Leerzeichen und Bindestriche sind optional.Der erste Befehlszeilenparameter ist der Ordnerpfad und der zweite Parameter ist der relative Pfad im Ordner.Die Anzahl der Tage, um Dateien im Papierkorb zu halten.Die Anzahl der aufzuhebenden alten Versionen, pro Datei.Die Programmdatei wird ausgeführt, wenn der Syncthing Daemon nicht läuft und die "Daemon im Hintergrund starten" Option auf der "Interface" Seite angehakt ist.Dies kann eine Weile dauern…Diese Plattform (%s) ist nicht unterstütztPapierkorbVersuche erneut.GUI-EinstellungenGUI-Ein_stellungenUnerwartete Ordner ID von Gerät "%s"UnbegrenztNicht geteiltNicht verwendetAktuellUploadrateBenutz_e die traditionelle FensterkopfzeileVerwende _icons im MenüVersionVersion:Versionierungs_modusVersions_pfadWarte auf Syncthing-Dienst unter %s…Weboberflächen-Lausch-AdressenWeboberflächen-EinstellungenWillkommen zum Ersteinrichtungsassistent von Syncthing-GTK!Beim Beenden nachdem der Daemon im Hintergrund gestartet wurde...Beim Starten und nicht aktivem Syncthing Daemon ...XYZ-123-ABCJaSie können später mehr Details konfigurieren, in den Menüs GUI-Einstellungen und Dienst-Einstellungen im Hauptmenü der Anwendung.Ihr Syncthing-Dienst ist zu alt.Ihr Syncthing-Dienst ist zu alt. Bitte aktualisieren Sie das syncthing-Paket mindestens auf Version %s und versuchen Sie es erneut.Ü_ber_Hinzufügen_Adressen_Fortgeschritten_Durchsuchen_Suche…_Komprimierung_Herunterladen der Syncthing-Programmdatei_HerunterladenOrdnereinstellungen_IgnorierenMaximale Empfangsrate_Integration_Schnittstelle_Bekanntmachungs-Knoten - Introducer_Anzahl der zu aufzuhebenden Versionen_Andere_Maximale Senderate_Passwort_PfadB_eendenNeu s_cannen_Neu startenDienst neusta_rten"Nur senden" Ordner_Unbegrenzt_Benutzernamedeaktiviertladen Sie die neueste Programmdateiin %s Tagenin einem Momentgerade ebenNotlösung gedacht und wird generell nicht empfohlen.nie löschenKeine BegrenzungOfflinenach %s herunterladen und es aktuell halten, aber diese Option ist alsvor ~%s Stundenin ~%s Stundensyncthing-gtk-0.9.4.4/locale/de/LC_MESSAGES/syncthing-gtk.po000066400000000000000000001337721352162771300232500ustar00rootroot00000000000000# Syncthing-GTK # Copyright (C) 2014-2015 Kozec and contributors # This file is distributed under the same license as the Syncthing-GTK package. # # Translators: # Daniel Kessel , 2015 # kozec , 2016,2018 # Manuel Schneider, 2017 # pitfd , 2016 # pitfd , 2018 # Vincent Bermel , 2016 msgid "" msgstr "" "Project-Id-Version: syncthing-gtk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-04-20 11:27+0200\n" "PO-Revision-Date: 2018-02-24 08:00+0000\n" "Last-Translator: kozec \n" "Language-Team: German (http://www.transifex.com/syncthing-gtk/syncthing-gtk/language/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: syncthing_gtk/app.py:194 msgid "Syncthing-GTK started and running in notification area" msgstr "Syncthing-GTK ist gestartet und läuft im Benachrichtigungsbereich" #: syncthing_gtk/app.py:288 #, python-format msgid "%s kB/s" msgstr "%s kB/s" #: syncthing_gtk/app.py:302 syncthing_gtk/notifications.py:77 #: syncthing_gtk/wizard.py:53 msgid "Syncthing-GTK" msgstr "Syncthing-GTK" #: syncthing_gtk/app.py:363 syncthing_gtk/app.py:364 syncthing_gtk/app.py:942 msgid "Syncing" msgstr "Synchronisiere" #: syncthing_gtk/app.py:366 syncthing_gtk/app.py:367 msgid "Scanning" msgstr "Suche" #: syncthing_gtk/app.py:390 syncthing_gtk/app.py:652 msgid "Starting Syncthing daemon" msgstr "Starte Syncthing-Dienst" #: syncthing_gtk/app.py:424 msgid "Allow Anonymous Usage Reporting?" msgstr "Erlaube anonymisierte Sammlung von Benutzungsdaten?" #: syncthing_gtk/app.py:426 msgid "The encrypted usage report is sent daily." msgstr "Der verschlüsselte Bericht wird täglich verschickt." #: syncthing_gtk/app.py:427 msgid "It is used to track common platforms, folder sizes and app versions." msgstr "Er wird verwendet, um häufige Plattformen, Ordnergrößen und Anwendungsversionen zu erfassen." #: syncthing_gtk/app.py:428 msgid "" "If the reported data set is changed you will be prompted with this dialog " "again." msgstr "Wenn sich die erfassten Daten ändern, werden Sie erneut mit diesem Dialog aufgefordert, zuzustimmen." #: syncthing_gtk/app.py:430 msgid "The aggregated statistics are publicly available at" msgstr "Aggregierte Statistiken sind öffentlich einsehbar unter" #: syncthing_gtk/app.py:486 msgid "Extracting update..." msgstr "Entpacke Update…" #: syncthing_gtk/app.py:491 msgid "Restarting daemon..." msgstr "Starte Dienst neu…" #: syncthing_gtk/app.py:507 #, python-format msgid "Failed to download upgrade: %s" msgstr "Download des Updates fehlgeschlagen: %s" #: syncthing_gtk/app.py:525 #, python-format msgid "Downloading Syncthing %s" msgstr "Lade Syncthing %s herunter…" #: syncthing_gtk/app.py:604 msgid "Connected to Syncthing daemon" msgstr "Mit dem Syncthing-Dienst verbunden" #: syncthing_gtk/app.py:614 msgid "Connection to Syncthing daemon lost." msgstr "Verbindung mit dem Syncthing-Dienst verloren." #: syncthing_gtk/app.py:615 msgid "Syncthing is probably restarting or has been shut down." msgstr "Syncthing startet wahrscheinlich neu oder wurde heruntergefahren." #: syncthing_gtk/app.py:617 msgid "Syncthing has been shut down." msgstr "Syncthing wurde heruntergefahren." #: syncthing_gtk/app.py:621 syncthing_gtk/app.py:1499 msgid "Syncthing is restarting." msgstr "Syncthing startet neu." #: syncthing_gtk/app.py:621 syncthing_gtk/app.py:1499 msgid "Please wait" msgstr "Bitte warten" #: syncthing_gtk/app.py:644 #, python-format msgid "Connecting to Syncthing daemon at %s..." msgstr "Verbindung zum Syncthing-Dienst unter %s wird aufgebaut…" #: syncthing_gtk/app.py:649 #, python-format msgid "Waiting for Syncthing daemon at %s..." msgstr "Warte auf Syncthing-Dienst unter %s…" #: syncthing_gtk/app.py:664 msgid "Your syncthing daemon is too old." msgstr "Ihr Syncthing-Dienst ist zu alt." #: syncthing_gtk/app.py:664 msgid "Attempting to download recent, please wait..." msgstr "Es wird versucht, einen aktuelleren herunterzuladen, bitte warten…" #: syncthing_gtk/app.py:670 msgid "" "Cannot authorize with daemon. Please, use WebUI to generate API key or " "disable password authentication." msgstr "Kann nicht am Dienst authorisiert werden. Bitte verwenden Sie die Web-Oberfläche, um einen API-Schlüssel zu generieren oder schalten Sie die Passwort-Authentisierung aus." #: syncthing_gtk/app.py:672 #, python-format msgid "" "Your syncthing daemon is too old.\n" "Please, upgrade syncthing package at least to version %s and try again." msgstr "Ihr Syncthing-Dienst ist zu alt.\nBitte aktualisieren Sie das syncthing-Paket mindestens auf Version %s und versuchen Sie es erneut." #: syncthing_gtk/app.py:674 msgid "" "Sorry, connecting to HTTPS is not supported on this platform.\n" "Please, use WebUI to disable HTTPS try again." msgstr "Verbindung per HTTPS ist leider auf dieser Plattform nicht unterstützt.\nBitte verwenden Sie die Web-Oberfläche, um HTTPS auszuschalten und versuchen Sie es erneut." #: syncthing_gtk/app.py:677 msgid "Connection to daemon failed. Check your configuration and try again." msgstr "Die Verbindung mit dem ist Dienst fehlgeschlagen. Prüfen Sie die Konfiguration und versuchen Sie es erneut." #: syncthing_gtk/app.py:678 syncthing_gtk/app.py:1992 #: syncthing_gtk/editordialog.py:314 msgid "Error message:" msgstr "Fehlernachricht:" #: syncthing_gtk/app.py:689 msgid "More info" msgstr "Mehr Informationen" #: syncthing_gtk/app.py:715 msgid "" "The configuration has been saved but not activated.\n" "Syncthing must restart to activate the new configuration." msgstr "Die Konfiguration wurde gespeichert, aber noch nicht aktiviert. Syncthing muss neu starten, um die Konfiguration zu aktivieren." #: syncthing_gtk/app.py:717 msgid "_Restart" msgstr "_Neu starten" #: syncthing_gtk/app.py:784 #, python-format msgid "%(device)s wants to share folder \"%(folder)s\". Add new folder?" msgstr "%(device)s möchte den Ordner \"%(folder)s\" teilen. Neuen Ordner hinzufügen?" #: syncthing_gtk/app.py:791 syncthing_gtk/app.py:813 msgid "_Add" msgstr "_Hinzufügen" #: syncthing_gtk/app.py:806 #, python-format msgid "" "Device \"%(name)s\" (%(device)s) at IP \"%(ip)s\" wants to " "connect. Add new device?" msgstr "Gerät \"%(name)s \" (%(device)s) mit IP \"%(ip)s\" möchte eine Verbindung aufbauen. Neues Gerät hinzufügen?" #: syncthing_gtk/app.py:814 msgid "_Ignore" msgstr "_Ignorieren" #: syncthing_gtk/app.py:832 msgid "RAM Utilization" msgstr "RAM-Auslastung" #: syncthing_gtk/app.py:833 msgid "CPU Utilization" msgstr "CPU-Auslastung" #: syncthing_gtk/app.py:834 syncthing_gtk/app.py:1353 msgid "Download Rate" msgstr "Downloadrate" #: syncthing_gtk/app.py:835 syncthing_gtk/app.py:1354 msgid "Upload Rate" msgstr "Uploadrate" #: syncthing_gtk/app.py:836 msgid "Announce Server" msgstr "Ankündigungsserver" #: syncthing_gtk/app.py:837 syncthing_gtk/app.py:1356 msgid "Version" msgstr "Version" #: syncthing_gtk/app.py:860 syncthing_gtk/editordialog.py:394 msgid "disabled" msgstr "deaktiviert" #: syncthing_gtk/app.py:862 msgid "Online" msgstr "Online" #: syncthing_gtk/app.py:862 msgid "offline" msgstr "Offline" #: syncthing_gtk/app.py:864 #, python-format msgid "%(online)s/%(total)s online" msgstr "%(online)s/%(total)s online" #: syncthing_gtk/app.py:891 syncthing_gtk/app.py:1357 #: syncthing_gtk/app.py:1382 msgid "Never" msgstr "Nie" #: syncthing_gtk/app.py:899 syncthing_gtk/app.py:1691 #: syncthing_gtk/app.py:1692 msgid "Paused" msgstr "Pausiert" #: syncthing_gtk/app.py:899 syncthing_gtk/app.py:924 syncthing_gtk/app.py:939 #: syncthing_gtk/infobox.py:60 msgid "Disconnected" msgstr "Verbindung getrennt" #: syncthing_gtk/app.py:916 msgid "Connected" msgstr "Verbunden" #: syncthing_gtk/app.py:945 syncthing_gtk/app.py:980 syncthing_gtk/app.py:1030 #: syncthing_gtk/app.py:1031 syncthing_gtk/app.py:1070 msgid "Up to Date" msgstr "Aktuell" #: syncthing_gtk/app.py:966 syncthing_gtk/app.py:967 syncthing_gtk/app.py:968 msgid "Files" msgstr "Dateien" #: syncthing_gtk/app.py:980 syncthing_gtk/app.py:1068 msgid "Cluster out of sync" msgstr "Cluster ist nicht synchron" #: syncthing_gtk/app.py:995 msgid "Stopped" msgstr "Angehalten" #: syncthing_gtk/app.py:998 syncthing_gtk/app.py:1005 msgid "Error" msgstr "Fehler" #: syncthing_gtk/app.py:1024 #, python-format msgid "Synchronizing '%s'" msgstr "Synchronisiere '%s'" #: syncthing_gtk/app.py:1026 #, python-format msgid "Synchronizing %s folders" msgstr "Synchronisiere %s Ordner" #: syncthing_gtk/app.py:1035 syncthing_gtk/app.py:1036 msgid "All devices offline" msgstr "Alle Geräte offline" #: syncthing_gtk/app.py:1040 syncthing_gtk/app.py:1041 msgid "Connecting to Syncthing daemon..." msgstr "Verbindung zu Syncthing-Dienst wird aufgebaut…" #: syncthing_gtk/app.py:1079 msgid "Unshared" msgstr "Nicht geteilt" #: syncthing_gtk/app.py:1082 msgid "Offline" msgstr "Offline" #: syncthing_gtk/app.py:1176 msgid "Hide Window" msgstr "Fenster verstecken" #: syncthing_gtk/app.py:1190 app.glade:651 msgid "Show Window" msgstr "Fenster zeigen" #: syncthing_gtk/app.py:1239 msgid "Syncthing daemon doesn't appear to be running." msgstr "Syncthing-Dienst scheint nicht zu laufen." #: syncthing_gtk/app.py:1240 msgid "Start it now?" msgstr "Soll er gestartet werden?" #: syncthing_gtk/app.py:1243 msgid "Always start daemon automatically" msgstr "Dienst immer automatisch starten" #: syncthing_gtk/app.py:1292 msgid "Folder ID" msgstr "Ordner-ID" #: syncthing_gtk/app.py:1293 msgid "Path" msgstr "Pfad" #: syncthing_gtk/app.py:1294 msgid "Global State" msgstr "Globaler Zustand" #: syncthing_gtk/app.py:1295 msgid "Local State" msgstr "Lokaler Zustand" #: syncthing_gtk/app.py:1296 msgid "Out Of Sync" msgstr "Nicht synchron" #: syncthing_gtk/app.py:1297 msgid "Folder Type" msgstr "Ordnertyp" #: syncthing_gtk/app.py:1298 msgid "Ignore Permissions" msgstr "Ignoriere Berechtigungen" #: syncthing_gtk/app.py:1299 msgid "Rescan Interval" msgstr "Suchintervall" #: syncthing_gtk/app.py:1300 msgid "Shared With" msgstr "Geteilt mit" #: syncthing_gtk/app.py:1324 syncthing_gtk/app.py:1325 #: syncthing_gtk/app.py:1381 msgid "Yes" msgstr "Ja" #: syncthing_gtk/app.py:1324 syncthing_gtk/app.py:1325 #: syncthing_gtk/app.py:1381 msgid "No" msgstr "Nein" #: syncthing_gtk/app.py:1327 msgid "(watch)" msgstr "(beobachte)" #: syncthing_gtk/app.py:1341 msgid "Unused" msgstr "Nicht verwendet" #: syncthing_gtk/app.py:1350 msgid "Address" msgstr "Adresse" #: syncthing_gtk/app.py:1351 msgid "Synchronization" msgstr "Synchronisierung" #: syncthing_gtk/app.py:1352 msgid "Compression" msgstr "Komprimierung" #: syncthing_gtk/app.py:1355 msgid "Introducer" msgstr "Vorstellender Knoten" #: syncthing_gtk/app.py:1357 msgid "Last Seen" msgstr "Zuletzt gesehen" #: syncthing_gtk/app.py:1378 device-edit.glade:22 msgid "All Data" msgstr "Alle Daten" #: syncthing_gtk/app.py:1379 device-edit.glade:26 folder-edit.glade:78 msgid "Off" msgstr "Aus" #: syncthing_gtk/app.py:1375 msgid "Send Only" msgstr "Nur senden" #: syncthing_gtk/app.py:1375 msgid "Send & Receive" msgstr "Senden und Empfangen" #: syncthing_gtk/app.py:1380 device-edit.glade:30 msgid "Metadata Only" msgstr "Nur Metadaten" #: syncthing_gtk/app.py:1522 msgid "Exiting." msgstr "Beende." #: syncthing_gtk/app.py:1523 msgid "Shutdown Syncthing daemon as well?" msgstr "Syncthing-Dienst auch herunterfahren?" #: syncthing_gtk/app.py:1528 msgid "Always do same; Don't show this window again" msgstr "Immer das Gleiche machen; Dieses Fenster nicht mehr fragen" #: syncthing_gtk/app.py:1768 #, python-format msgid "Do you really want to permanently stop synchronizing directory '%s'?" msgstr "Möchten Sie wirklich auf Dauer aufhören, den Ordner '%s' zu synchronieren?" #: syncthing_gtk/app.py:1770 #, python-format msgid "Do you really want remove device '%s' from Syncthing?" msgstr "Möchten Sie wirklich das Gerät '%s' aus Syncthing entfernen?" #: syncthing_gtk/app.py:1838 msgid "Syncthing-Inotify Output" msgstr "Ausgabe von Syncthing-Inotify" #: syncthing_gtk/app.py:1844 msgid "Syncthing-Inotify is unavailable or failed to start" msgstr "Syncthing-Inotify ist nicht verfügbar oder konnte nicht starten" #: syncthing_gtk/app.py:1991 msgid "Failed to start Syncthing daemon." msgstr "Der Syncthing-Dienst konnte nicht gestartet werden." #: syncthing_gtk/app.py:1993 msgid "" "Please, check your installation or set new path to Syncthing daemon binary." msgstr "Bitte prüfen Sie Ihre Installation oder setzen Sie einen neuen Pfad zum Programm für den Syncthing-Dienst." #: syncthing_gtk/daemonsettings.py:24 msgid "Syncthing Daemon Settings" msgstr "Syncthing-Dienst-Einstellungen" #: syncthing_gtk/deviceeditor.py:24 msgid "" "The entered device ID does not look valid. It should be a 52 character " "string consisting of letters and numbers, with spaces and dashes being " "optional." msgstr "Die eingegebene Geräte-ID wirkt nicht gültig. Es sollte eine Zeichenkette aus 52 Buchstaben und Ziffern sein. Leerzeichen und Bindestriche sind optional." #: syncthing_gtk/editordialog.py:312 msgid "Failed to load configuration from daemon." msgstr "Konnte Konfiguration nicht aus Dienst laden." #: syncthing_gtk/editordialog.py:313 msgid "Try again." msgstr "Versuche erneut." #: syncthing_gtk/editordialog.py:387 syncthing_gtk/editordialog.py:396 #, python-format msgid "%ss" msgstr "%ss" #: syncthing_gtk/editordialog.py:402 #, python-format msgid "%s%%" msgstr "%s%%" #: syncthing_gtk/editordialog.py:409 msgid "no limit" msgstr "Keine Begrenzung" #: syncthing_gtk/editordialog.py:411 #, python-format msgid "%s KiB/s" msgstr "%s KiB/s" #: syncthing_gtk/editordialog.py:418 msgid "never delete" msgstr "nie löschen" #: syncthing_gtk/editordialog.py:420 #, python-format msgid "%s day" msgstr "%s Tag" #: syncthing_gtk/editordialog.py:422 #, python-format msgid "%s days" msgstr "%s Tage" #: syncthing_gtk/editordialog.py:455 msgid "Failed to save configuration." msgstr "Konnte Konfiguration nicht speichern." #: syncthing_gtk/finddaemondialog.py:24 find-daemon.glade:7 msgid "Can't invoke the daemon" msgstr "Konnte den Dienst nicht aufrufen" #: syncthing_gtk/finddaemondialog.py:26 msgid "Syncthing binary" msgstr "Syncthing-Programmdatei" #: syncthing_gtk/finddaemondialog.py:28 syncthing_gtk/finddaemondialog.py:37 msgid "Syncthing daemon binary cannot be found." msgstr "Syncthing-Dienstprogramm kann nicht gefunden werden." #: syncthing_gtk/finddaemondialog.py:29 #, python-format msgid "" "If you have Syncthing installed, please, set path to %s below or click on " "Download button to download latest Syncthing package." msgstr "Falls Sie Syncthing installiert haben, bitten Sie den Pfad zu %s unten oder betätigen Sie den Download-Knopf, um das neueste Syncthing-Paket herunterzuladen." #: syncthing_gtk/finddaemondialog.py:38 #, python-format msgid "If you have Syncthing installed, please, set path to %s below" msgstr "Falls Sie Syncthing installiert haben, bitte setzen Sie den Pfad zu %s unten" #: syncthing_gtk/finddaemondialog.py:82 syncthing_gtk/wizard.py:411 msgid "Cannot download Syncthing daemon." msgstr "Kann Syncthing-Dienst nicht herunterladen." #: syncthing_gtk/finddaemondialog.py:83 syncthing_gtk/wizard.py:412 #, python-format msgid "This platform (%s) is not supported" msgstr "Diese Plattform (%s) ist nicht unterstützt" #: syncthing_gtk/finddaemondialog.py:100 msgid "Downloading..." msgstr "Lade herunter…" #: syncthing_gtk/finddaemondialog.py:163 syncthing_gtk/stdownloader.py:251 #: syncthing_gtk/stdownloader.py:279 msgid "Download failed." msgstr "Download fehlgeschlagen." #: syncthing_gtk/finddaemondialog.py:185 syncthing_gtk/wizard.py:458 msgid "Download finished." msgstr "Download abgeschlossen." #: syncthing_gtk/foldereditor.py:45 msgid "Select Folder for new Folder" msgstr "Wähle Ordner für neuen Ordner" #: syncthing_gtk/foldereditor.py:166 syncthing_gtk/foldereditor.py:167 msgid "Please, install pyinotify package to use this feature" msgstr "Bitte installieren Sie das pyinotify-Paket, um diese Funktion zu verwenden" #: syncthing_gtk/ignoreeditor.py:44 msgid "File location:" msgstr "Ort der Datei:" #: syncthing_gtk/notifications.py:120 #, python-format msgid "Unexpected folder ID sent from device \"%s\"." msgstr "Unerwartete Ordner ID von Gerät \"%s\"" #: syncthing_gtk/notifications.py:124 #, python-format msgid "Device \"%s\" is trying to connect to syncthing daemon." msgstr "Gerät \"%s\" versucht eine Verbindung mit dem syncthing-Daemon aufzubauen." #: syncthing_gtk/notifications.py:153 #, python-format msgid "Synchronization of folder '%s' is completed." msgstr "Synchronisierung von Ordner '%s' abgeschlossen." #: syncthing_gtk/notifications.py:160 #, python-format msgid "%(hostname)s: Downloaded '%(filename)s' to reflect remote changes." msgstr "%(hostname)s: Heruntergeladen '%(filename)s' um entfernte Änderungen widerzuspiegeln." #: syncthing_gtk/notifications.py:165 #, python-format msgid "%(hostname)s: Deleted '%(filename)s' to reflect remote changes." msgstr "%(hostname)s: Gelöscht '%(filename)s' um entfernte Änderungen widerzuspiegeln." #: syncthing_gtk/notifications.py:168 #, python-format msgid "%(hostname)s: Downloaded %(updated)s files to reflect remote changes." msgstr "%(hostname)s: Heruntergeladen %(updated)s um entfernte Änderungen widerzuspiegeln." #: syncthing_gtk/notifications.py:171 #, python-format msgid "%(hostname)s: Deleted %(deleted)s files to reflect remote changes." msgstr "%(hostname)s:Gelöscht %(deleted)s um entfernte Änderungen widerzuspiegeln" #: syncthing_gtk/notifications.py:175 #, python-format msgid "" "%(hostname)s: downloaded %(updated)s files and deleted %(deleted)s files to " "reflect remote changes." msgstr "%(hostname)s: Heruntergeladen, %(updated)s Dateien aktualisiert und %(deleted)s Dateien gelöscht um entfernte Änderungen widerzuspiegeln." #: syncthing_gtk/statusicon.py:48 msgid "Syncthing" msgstr "Syncthing" #: syncthing_gtk/stdownloader.py:174 syncthing_gtk/stdownloader.py:217 #: syncthing_gtk/stdownloader.py:313 syncthing_gtk/stdownloader.py:344 msgid "Failed to determine latest Syncthing version." msgstr "Konnte die aktuellste Syncthing-Version nicht feststellen." #: syncthing_gtk/stdownloader.py:236 msgid "Failed to create temporaly file." msgstr "Konnte temporäre Datei nicht anlegen." #: syncthing_gtk/stdownloader.py:294 msgid "Downloaded file is corrupted." msgstr "Die heruntergeladene Datei ist korrupt." #: syncthing_gtk/tools.py:192 #, python-format msgid "~%s hours ago" msgstr "vor ~%s Stunden" #: syncthing_gtk/tools.py:194 #, python-format msgid "%s minutes ago" msgstr "vor %s Minuten" #: syncthing_gtk/tools.py:196 #, python-format msgid "%s seconds ago" msgstr "vor %s Sekunden" #: syncthing_gtk/tools.py:197 msgid "just now" msgstr "gerade eben" #: syncthing_gtk/tools.py:199 #, python-format msgid "%s days ago" msgstr "vor %s Tagen" #: syncthing_gtk/tools.py:203 #, python-format msgid "in %s days" msgstr "in %s Tagen" #: syncthing_gtk/tools.py:205 #, python-format msgid "~%s hours from now" msgstr "in ~%s Stunden" #: syncthing_gtk/tools.py:207 #, python-format msgid "%s minutes from now" msgstr "in %s Minuten" #: syncthing_gtk/tools.py:209 #, python-format msgid "%s seconds from now" msgstr "in %s Sekunden" #: syncthing_gtk/tools.py:210 msgid "in a moment" msgstr "in einem Moment" #: syncthing_gtk/uisettingsdialog.py:58 msgid "UI Settings" msgstr "GUI-Einstellungen" #: syncthing_gtk/uisettingsdialog.py:70 msgid "Unlimited" msgstr "Unbegrenzt" #: syncthing_gtk/uisettingsdialog.py:107 #, python-format msgid "Install %(package)s package to enable %(feature)s support" msgstr "Installieren Sie das Paket %(package)s , um Unterstützung für %(feature)s zu aktivieren" #: syncthing_gtk/uisettingsdialog.py:312 msgid "Browse for Syncthing binary" msgstr "Nach Syncthing-Programmdatei suchen" #: syncthing_gtk/wizard.py:53 msgid "First run wizard" msgstr "Ersteinrichtungsasssistent" #: syncthing_gtk/wizard.py:137 #, python-format msgid "Please, check error log and fill bug report on %s." msgstr "Bitte prüfen Sie das Fehlerprotokoll und füllen sie einen Fehlerbericht auf %s aus." #: syncthing_gtk/wizard.py:141 msgid "Display error log" msgstr "Fehlerprotokoll anzeigen" #: syncthing_gtk/wizard.py:198 msgid "Welcome to Syncthing-GTK first run wizard!" msgstr "Willkommen zum Ersteinrichtungsassistent von Syncthing-GTK!" #: syncthing_gtk/wizard.py:200 msgid "It looks like you never have used Syncthing." msgstr "Es scheint, als hätten Sie Syncthing noch nie verwendet." #: syncthing_gtk/wizard.py:201 msgid "Initial configuration should be created." msgstr "Eine initiale Konfiguration sollte angelegt werden." #: syncthing_gtk/wizard.py:202 msgid "" "Please click %s to create a Syncthing configuration file or " "Quit to exit" msgstr "Bitte klicken Sie auf %s um eine Syncthing-Konfigurationsdatei anzulegen, oder auf Quit um das Programm zu verlassen." #: syncthing_gtk/wizard.py:204 #, python-format msgid "" "If you already had Syncthing daemon configured, please, exit this wizard and" " check your %s folder" msgstr "Falls Sie schon einmal den Syncthing-Dienst konfiguriert haben, verlassen Sie bitte diesen Assistenten und prüfen Sie ihren %s - Ordner" #: syncthing_gtk/wizard.py:220 msgid "Searching for Syncthing daemon." msgstr "Suche nach Syncthing-Dienstprogramm." #: syncthing_gtk/wizard.py:222 syncthing_gtk/wizard.py:394 msgid "Please wait..." msgstr "Bitte warten…" #: syncthing_gtk/wizard.py:270 syncthing_gtk/wizard.py:287 msgid "Syncthing daemon not found." msgstr "Syncthing-Dienstprogramm nicht gefunden." #: syncthing_gtk/wizard.py:271 msgid "Please, use package manager to install the Syncthing package." msgstr "Bitte verwenden Sie die Paketverwaltung, um das Syncthing-Paket zu installieren." #: syncthing_gtk/wizard.py:283 msgid "download latest binary" msgstr "laden Sie die neueste Programmdatei" #: syncthing_gtk/wizard.py:288 syncthing_gtk/wizard.py:302 #, python-format msgid "" "Please, use package manager to install the Syncthing package or " "%(download_link)s from Syncthing page and save it to your %(target)s " "directory." msgstr "Bitte verwenden Sie die Paketverwaltung, um das Syncthing-Paket zu installieren oder %(download_link)s von der Syncthing-Webseite herunter und speichern Sie es in Ihrem %(target)s - Verzeichnis." #: syncthing_gtk/wizard.py:296 msgid "Syncthing daemon is too old." msgstr "Die Syncthing-Programmdatei ist zu alt." #: syncthing_gtk/wizard.py:297 #, python-format msgid "" "Syncthing-GTK needs Syncthing daemon %(min)s or newer, but only %(actual)s " "were found." msgstr "Syncthing-GTK benötigt den Syncthing-Dienst %(min)s oder neuer, aber nur %(actual)s wurde gefunden." #: syncthing_gtk/wizard.py:309 msgid "Alternatively, Syncthing-GTK can download Syncthing binary" msgstr "Ansonsten kann Syncthing-GTK die Syncthing-Programmdatei selbst" #: syncthing_gtk/wizard.py:310 #, python-format msgid "to %s and keep it up-to-date, but this option is meant as" msgstr "nach %s herunterladen und es aktuell halten, aber diese Option ist als" #: syncthing_gtk/wizard.py:312 msgid "last resort and generally not suggested." msgstr "Notlösung gedacht und wird generell nicht empfohlen." #: syncthing_gtk/wizard.py:315 msgid "_Download Syncthing binary" msgstr "_Herunterladen der Syncthing-Programmdatei" #: syncthing_gtk/wizard.py:319 msgid "Auto_update downloaded binary" msgstr "A_utomatisch Programmdatei aktualisieren" #: syncthing_gtk/wizard.py:375 msgid "Syncthing daemon binary found." msgstr "Syncthing-Dienst-Programmdatei gefunden." #: syncthing_gtk/wizard.py:377 syncthing_gtk/wizard.py:460 msgid "Binary path:" msgstr "Pfad des Programmes:" #: syncthing_gtk/wizard.py:378 msgid "Version:" msgstr "Version:" #: syncthing_gtk/wizard.py:393 msgid "Downloading Syncthing daemon." msgstr "Lade Syncthing-Dienst herunter." #: syncthing_gtk/wizard.py:441 msgid "Failed to download Syncthing daemon package." msgstr "Konnte Paket mit Syncthing-Dienstprogramm nicht herunterladen." #: syncthing_gtk/wizard.py:472 msgid "Syncthing is generating RSA key and certificate." msgstr "Syncthing erzeugt RSA-Schlüssel und -Zertifikat." #: syncthing_gtk/wizard.py:473 msgid "This may take a while..." msgstr "Dies kann eine Weile dauern…" #: syncthing_gtk/wizard.py:515 msgid "Failed to generate keys" msgstr "Konnte Schlüssel nicht erzeugen" #: syncthing_gtk/wizard.py:516 msgid "Syncthing daemon failed to generate RSA key or certificate." msgstr "Der Syncthing-Dienst konnte keinen RSA-Schlüssel oder -Zertifikat erzeugen." #: syncthing_gtk/wizard.py:526 msgid "WebUI setup" msgstr "Weboberflächen-Einstellungen" #: syncthing_gtk/wizard.py:528 msgid "" "Syncthing can be managed remotely using WebUI and even if you are going to " "use Syncthing-GTK, WebUI needs to be enabled, as Syncthing-GTK uses it to " "communicate with the Syncthing daemon." msgstr "Syncthing kann über eine Weboberfläche ferngesteuert werden und selbst wenn Sie Syncthing-GTK verwenden, muss die Weboberfläche aktiviert sein, da Syncthing-GTK diese verwendet, um mit dem Syncthing-Dienst zu kommunizieren." #: syncthing_gtk/wizard.py:533 msgid "" "If you prefer to be able to manage Syncthing remotely, over the internet or " "on your local network, select listen on all interfaces and set " "username and password to protect Syncthing from unauthorized access." msgstr "Falls Sie es bevorzugen, Syncthing aus der Ferne zu verwalten, über das Internet oder über Ihr lokales Netzwerk, wählen Sie Auf allen Schnittstellen lauschen und setzen Sie Benutzername und Passwort, um Syncthing vor unberechtigtem Zugriff zu schützen." #: syncthing_gtk/wizard.py:538 msgid "" "Otherwise, select listen on localhost, so only users and programs on " "this computer will be able to interact with Syncthing." msgstr "Ansonsten wählen Sie Nur auf localhost lauschen, so dass nur Benutzer und Programme auf diesem Rechner mit Syncthing interagieren können." #: syncthing_gtk/wizard.py:544 msgid "WebUI Listen Addresses" msgstr "Weboberflächen-Lausch-Adressen" #: syncthing_gtk/wizard.py:545 msgid "Listen on _localhost" msgstr "Nur auf _localhost lauschen" #: syncthing_gtk/wizard.py:547 msgid "Listen on _all interfaces" msgstr "Auf _allen Schnittstellen lauschen" #: syncthing_gtk/wizard.py:554 msgid "_Username" msgstr "_Benutzername" #: syncthing_gtk/wizard.py:555 msgid "_Password" msgstr "_Passwort" #: syncthing_gtk/wizard.py:609 msgid "Saving settings..." msgstr "Speichere Einstellungen…" #: syncthing_gtk/wizard.py:610 msgid "Checking for available port..." msgstr "Suche nach verfügbarem Port…" #: syncthing_gtk/wizard.py:631 msgid "Failed to find unused port for listening." msgstr "Konnte keinen freien Port zum Lauschen finden." #: syncthing_gtk/wizard.py:632 msgid "Please, check your firewall settings and try again." msgstr "Bitte prüfen Sie Ihre Firewalleinstellungen und versuchen Sie es erneut." #: syncthing_gtk/wizard.py:646 msgid "Saving..." msgstr "Speichere…" #: syncthing_gtk/wizard.py:678 msgid "Failed to load Syncthing configuration" msgstr "Konnte Syncthing-Konfiguration nicht laden" #: syncthing_gtk/wizard.py:705 msgid "Failed to modify Syncthing configuration" msgstr "Konnte Syncthing-Konfiguration nicht ändern" #: syncthing_gtk/wizard.py:715 msgid "Failed to save Syncthing configuration" msgstr "Konnte Syncthing-Konfiguration nicht speichern" #: syncthing_gtk/wizard.py:729 msgid "Done." msgstr "Abgeschlossen." #: syncthing_gtk/wizard.py:731 msgid "Syncthing has been successfully configured." msgstr "Syncthing wurde erfolgreich konfiguriert." #: syncthing_gtk/wizard.py:733 msgid "" "You can configure more details later, in UI Settings and Daemon " "Settings menus in main window of application." msgstr "Sie können später mehr Details konfigurieren, in den Menüs GUI-Einstellungen und Dienst-Einstellungen im Hauptmenü der Anwendung." #: about.glade:7 msgid "About Syncthing-GTK" msgstr "Über Syncthing-GTK" #: about.glade:10 msgid "GTK GUI and notification area icon for Syncthing" msgstr "Anwendungs- und Tray Icon für Syncthing" #: about.glade:12 msgid "GitHub" msgstr "GitHub" #: app.glade:239 app.glade:420 app.glade:802 msgid "Open _Web Interface" msgstr "Öffne _Weboberfläche" #: app.glade:251 app.glade:424 app.glade:814 msgid "Display _Daemon Output" msgstr "Zeige _Dienst-Ausgaben" #: app.glade:263 msgid "Display Syncthing-Inotify Output" msgstr "Zeige Ausgabe von Syncthing-Inotify" #: app.glade:280 app.glade:430 msgid "UI _Settings" msgstr "GUI-Ein_stellungen" #: app.glade:325 app.glade:451 msgid "Add Shared _Folder" msgstr "Geteilten Ordner hinzu_fügen" #: app.glade:338 app.glade:455 msgid "Add _Device" msgstr "_Gerät hinzufügen" #: app.glade:356 app.glade:461 msgid "Daemon _Settings" msgstr "Dienstein_stellungen" #: app.glade:371 app.glade:465 app.glade:588 app.glade:788 msgid "Show _ID" msgstr "Zeige _ID" #: app.glade:391 app.glade:471 msgid "Sh_utdown Daemon" msgstr "Dienst her_unterfahren" #: app.glade:404 app.glade:475 msgid "_Restart Daemon" msgstr "Dienst neusta_rten" #: app.glade:436 msgid "_About" msgstr "Ü_ber" #: app.glade:440 msgid "_Quit" msgstr "B_eenden" #: app.glade:490 msgid "Override Remote Changes" msgstr "Änderungen von Gegenstelle überschreiben" #: app.glade:519 msgid "Edit _Ignore Patterns" msgstr "Bearbeite _Ignoriermuster" #: app.glade:547 msgid "_Rescan" msgstr "Neu s_cannen" #: app.glade:559 msgid "_Browse" msgstr "_Durchsuchen" #: app.glade:611 msgid "Resume" msgstr "Fortsetzen" #: app.glade:641 msgid "Connecting to daemon..." msgstr "Verbinde mit Dienst…" #: app.glade:669 msgid "S_top Syncthing" msgstr "Syncthing _anhalten" #: app.glade:683 msgid "Resume Sync_thing" msgstr "Syncthing _fortsetzen" #: app.glade:695 daemon-settings.glade:335 msgid "_Incoming Rate Limit" msgstr "Maximale Empfangsrate" #: app.glade:709 app.glade:751 msgid "_Unlimited" msgstr "_Unbegrenzt" #: app.glade:718 app.glade:760 msgid "_Other" msgstr "_Andere" #: app.glade:737 msgid "_Outgoing Rate Limit" msgstr "_Maximale Senderate" #: daemon-output.glade:7 msgid "Daemon Output" msgstr "Dienstausgabe" #: daemon-settings.glade:106 msgid "Sync Protocol Listen Addresses" msgstr "Lausch-Adressen des Sync-Protokolls" #: daemon-settings.glade:136 msgid "Enable Local _Discovery" msgstr "Aktiviere lokale Ent_deckung" #: daemon-settings.glade:153 msgid "Enable _UPnP" msgstr "Aktiviere _UPnP" #: daemon-settings.glade:171 msgid "Local Discovery _Port" msgstr "_Port für lokale Entdeckung" #: daemon-settings.glade:212 msgid "Outgoing _Rate Limit" msgstr "Limit für _ausgehende Datenrate" #: daemon-settings.glade:229 msgid "Open browser with _WebUI when daemon is starting" msgstr "Öffne Browser mit _Weboberfläche, wenn der Dienst startet" #: daemon-settings.glade:246 msgid "Enable _Anonymous Usage Reporting" msgstr "Aktiviere _Anonymisierte Sammlung von Benutzungsdaten" #: daemon-settings.glade:262 msgid "Enable _Global Discovery" msgstr "Aktiviere _Globale Entdeckung" #: daemon-settings.glade:281 msgid "Global Discovery _Servers" msgstr "Globale Entdeckungs-_Server" #: device-edit.glade:102 msgid "Device _ID" msgstr "Geräte-_ID" #: device-edit.glade:134 msgid "Device _Name" msgstr "Geräte-_Name" #: device-edit.glade:166 msgid "Shown instead of Device ID in the cluster status." msgstr "Wird anstelle der Geräte-ID im Cluser-Status angezeigt." #: device-edit.glade:181 msgid "_Addresses" msgstr "_Adressen" #: device-edit.glade:213 msgid "" "Enter comma separated \"ip:port\" addresses or \"dynamic\" to perform " "automatic discovery of the address." msgstr "Geben Sie durch Kommata getrennte \"ip:port\"-Adressen ein, oder \"dynamic\", um automatische Entdeckung der Adresse durchzuführen." #: device-edit.glade:242 msgid "Share _Folders" msgstr "_Ordner teilen" #: device-edit.glade:276 msgid "Select the folders to share with this device" msgstr "Wählen Sie die mit diesem Gerät geteilten Ordner aus" #: device-edit.glade:287 msgid "_Introducer" msgstr "_Bekanntmachungs-Knoten - Introducer" #: device-edit.glade:308 msgid "" "Any devices configured on an introducer device will be added to this device " "as well." msgstr "Alle Geräte, die auf einem Bekanntmachungsknoten-Gerät konfiguriert sind, werden zu diesem Gerät ebenfalls hinzugefügt." #: device-edit.glade:323 msgid "_Compression" msgstr "_Komprimierung" #: device-id.glade:14 msgid "Device Identification" msgstr "Geräte-Identifikation" #: device-id.glade:68 msgid "XYZ-123-ABC" msgstr "XYZ-123-ABC" #: find-daemon.glade:126 ui-settings.glade:821 msgid "_Browse..." msgstr "_Suche…" #: find-daemon.glade:179 msgid "_Download..." msgstr "_Herunterladen" #: folder-edit.glade:44 msgctxt "In File Pull Order combobox" msgid "Random" msgstr "Zufällig" #: folder-edit.glade:48 msgctxt "In File Pull Order combobox" msgid "Alphabetic" msgstr "Alphabetisch" #: folder-edit.glade:52 msgctxt "In File Pull Order combobox" msgid "Smallest First" msgstr "Kleinste zuerst" #: folder-edit.glade:56 msgctxt "In File Pull Order combobox" msgid "Largest First" msgstr "Größste zuerst" #: folder-edit.glade:60 msgctxt "In File Pull Order combobox" msgid "Oldest First" msgstr "Älteste zuerst" #: folder-edit.glade:64 msgctxt "In File Pull Order combobox" msgid "Newest First" msgstr "Neueste zuerst" #: folder-edit.glade:82 msgid "Simple" msgstr "Einfach" #: folder-edit.glade:86 msgid "Staggered" msgstr "Gestaffelt" #: folder-edit.glade:90 msgid "Trashcan" msgstr "Papierkorb" #: folder-edit.glade:94 msgid "External" msgstr "Extern" #: folder-edit.glade:171 msgid "Folder _Label" msgstr "Ordner-Bezeich_nung" #: folder-edit.glade:202 msgid "Short identifier for the folder. Must be the same on all devices." msgstr "Kurzer Bezeichner für den Ordner. Muss auf allen Geräten identisch sein." #: folder-edit.glade:216 msgid "_Path" msgstr "_Pfad" #: folder-edit.glade:234 msgid "" "Path to the folder on the local computer. Will be created if it does not " "exist." msgstr "Pfad zu dem Ordner auf dem lokalen Rechner. Wird angelegt, falls er nicht existiert." #: folder-edit.glade:248 msgid "Rescan _Interval" msgstr "Rescan _Intervall" #: folder-edit.glade:293 msgid "Monitor filesystem for _changes" msgstr "Überwache Dateisystem für _Änderungen" #: folder-edit.glade:314 msgid "" "If enabled, changed, created and delete files are synchronized immediately, as long as Syncthing-GTK is running.\n" "Note: Using this along with short Rescan Interval (<300s) may consume a lot of resources." msgstr "Wenn aktiviert, werden geänderte, angelegte und gelöschte Dateien - solange Syncthing-GTK läuft - sofort synchronisiert.\nHinweis: Eine derartige Verwendung zusammen mit einem kurzen Rescan-Intervall (<300 s) kann zu einem hohen Ressourcenverbrauch führen." #: folder-edit.glade:343 msgid "Browse..." msgstr "Durchsuchen ..." #: folder-edit.glade:366 msgid "Folder _ID" msgstr "Ordner-_ID" #: folder-edit.glade:396 msgid "" "Optional descriptive label for the folder. Can be different on each device." msgstr "Optionale Ordner-Bezeichnung. Diese kann van Gerät zu Gerät variieren." #: folder-edit.glade:418 msgid "_Send Only Folder" msgstr "\"Nur senden\" Ordner" #: folder-edit.glade:439 msgid "" "Files are protected from changes made on other devices, but changes made on " "this device will be sent to the rest of the cluster." msgstr "Dateien werden vor Änderungen, die auf anderen Geräten vorgenommen werden geschützt. Änderungen auf diesem Gerät werden jedoch an den Rest des Clusters gesendet." #: folder-edit.glade:456 msgid "_Folder Settings" msgstr "Ordnereinstellungen" #: folder-edit.glade:476 msgid "Select the devices to share this folder with." msgstr "Wählen Sie die Geräte, mit denen dieser Ordner geteilt werden soll." #: folder-edit.glade:514 msgid "Share With _Devices" msgstr "Mit _Geräten teilen" #: folder-edit.glade:535 msgid "Versioning _Mode" msgstr "Versionierungs_modus" #: folder-edit.glade:590 msgid "" "Files are moved to date stamped versions in a .stversions folder when " "replaced or deleted by syncthing." msgstr "Dateien werden in eine mit Datum versehene Version in einen .stversions Ordner verschoben, wenn sie von Syncthing ersetzt oder gelöscht werden. " #: folder-edit.glade:605 msgid "_Keep Versions" msgstr "_Anzahl der zu aufzuhebenden Versionen" #: folder-edit.glade:642 msgid "The number of old versions to keep, per file." msgstr "Die Anzahl der aufzuhebenden alten Versionen, pro Datei." #: folder-edit.glade:671 msgid "" "Files are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing. Versions are automatically deleted if they are older than the maximum age or exceed the number of files allowed in an interval.\n" "\n" "The following intervals are used: for the first hour a version is kept every 30 seconds, for the first day a version is kept every hour, for the first 30 days a version is kept every day, until the maximum age a version is kept every week." msgstr "Dateien werden in eine mit Datum versehene Version in einen .stversions Ordner verschoben, wenn sie von Syncthing ersetzt oder gelöscht werden. Die Dateiversionen werden automatisch gelöscht, wenn sie das maximale Alter oder eine maximale Anzahl in einem gegebenen Intervall erreicht haben.\nFolgende Intervalle kommen zur Anwendung: während der ersten Stunde wird ein Version 30 Sekunden, während des ersten Tages wird sie jede Stunde, während der ersten 30 Tage wird sie jeden Tag und bis zu ihrem maximalen Alter jede Woche gehalten." #: folder-edit.glade:688 msgid "Ma_ximum Age" msgstr "Ma_ximales Alter" #: folder-edit.glade:727 msgid "Versions _Path" msgstr "Versions_pfad" #: folder-edit.glade:759 msgid "" "Path where versions should be stored (leave empty for the default " ".stversions folder)." msgstr "Pfad, wo Versionen gespeichert werden sollen (leer lassen für den Standard .stversions Ordner)." #: folder-edit.glade:787 msgid "" "Files are moved to .stversions folder when replaced or deleted by Syncthing" msgstr "Dateien werden in einen .stversions Ordner verschoben, wenn sie von Syncthing ersetzt oder gelöscht werden." #: folder-edit.glade:801 msgid "Clean out _after" msgstr "Säubere _nach" #: folder-edit.glade:840 msgid "The number of days to keep files in the trash can." msgstr "Die Anzahl der Tage, um Dateien im Papierkorb zu halten." #: folder-edit.glade:869 msgid "" "An external command handles the versioning. It has to remove the file from " "the synced folder." msgstr "Ein externer Befehl übernimmt die Versionsverwaltung. Er muss die Datei vom synchronisierten Ordner entfernen." #: folder-edit.glade:884 msgid "Command" msgstr "Befehl" #: folder-edit.glade:917 msgid "" "The first command line parameter is the folder path and the second parameter" " is the relative path in the folder." msgstr "Der erste Befehlszeilenparameter ist der Ordnerpfad und der zweite Parameter ist der relative Pfad im Ordner." #: folder-edit.glade:953 msgid "File _Versioning" msgstr "Datei_versionierung" #: folder-edit.glade:982 msgid "Ignore P_ermissions" msgstr "_Berechtigungen ignorieren" #: folder-edit.glade:1003 msgid "" "File permission bits are ignored when looking for changes. Use on FAT " "filesystems." msgstr "Bei der Suche nach Änderungen werden Dateiberechtigungen ignoriert. Verwendung auf FAT Dateisystemen." #: folder-edit.glade:1018 msgid "Minimum Free Disk Space" msgstr "Minimal freier Speicherplatz" #: folder-edit.glade:1057 msgid "File Pull _Order" msgstr "Übertragungsreihenfolge von Dateien" #: folder-edit.glade:1103 ui-settings.glade:954 msgid "_Advanced" msgstr "_Fortgeschritten" #: ignore-editor.glade:8 msgid "Ignore Patterns" msgstr "Ignoriere Muster" #: ignore-editor.glade:99 msgid "" "See Syncthing " "documentation for list of supported patterns" msgstr "Konsultieren Sie die Syncthing Dokumentation für eine Liste der unterstützten Muster" #: ignore-editor.glade:114 msgid "File location: " msgstr "Dateipfad: " #: ui-settings.glade:27 msgid "Lowest" msgstr "Am Niedrigsten" #: ui-settings.glade:31 msgid "Low" msgstr "Niedrig" #: ui-settings.glade:35 msgid "Normal" msgstr "Normal" #: ui-settings.glade:39 msgid "Above Normal" msgstr "Über Normal" #: ui-settings.glade:46 msgid "Syncthing-GTK Settings" msgstr "Syncthing-GTK Einstellungen" #: ui-settings.glade:69 msgid "Please, restart Syncthing-GTK to apply all changed settings" msgstr "Die Änderung werden erst nach Neustart von Syncthing-GTK wirksam." #: ui-settings.glade:136 msgid "When starting and Syncthing daemon is not running..." msgstr "Beim Starten und nicht aktivem Syncthing Daemon ..." #: ui-settings.glade:147 msgid "... _wait for daemon" msgstr "... _auf den Daemon warten" #: ui-settings.glade:164 msgid "... start daemon in _background" msgstr "... Daemon _im Hintergrund starten" #: ui-settings.glade:180 msgid "... _ask me what to do" msgstr "... _frag mich, was zu tun ist" #: ui-settings.glade:199 msgid "When exiting after daemon was started in background..." msgstr "Beim Beenden nachdem der Daemon im Hintergrund gestartet wurde..." #: ui-settings.glade:210 msgid "... terminate _daemon" msgstr "... Daemon _beenden" #: ui-settings.glade:226 msgid "... leave daemon _running" msgstr "...Daemon _laufen lassen" #: ui-settings.glade:242 msgid "... ask me w_hat to do" msgstr "... frag mich w_as zu tun ist" #: ui-settings.glade:258 msgid "Us_e traditional window header" msgstr "Benutz_e die traditionelle Fensterkopfzeile" #: ui-settings.glade:278 msgid "Display desktop notifications for..." msgstr "Zeige Desktop Benachrichtigungen für..." #: ui-settings.glade:289 msgid "... file updates" msgstr "... Dateiaktualisierungen" #: ui-settings.glade:304 msgid "... errors" msgstr "... Fehler" #: ui-settings.glade:319 msgid "... synchronization completion" msgstr "... Synchronisationsabschluss" #: ui-settings.glade:334 msgid "Start Syncthing-GTK when I login to my desktop" msgstr "Syncthing-GTK starten, wenn ich mich an meinem Computer anmelde" #: ui-settings.glade:350 msgid "Minimize to _tray on start" msgstr "Beim Start in den _tray minimieren" #: ui-settings.glade:366 msgid "Use _icons in menu" msgstr "Verwende _icons im Menü" #: ui-settings.glade:383 msgid "Display paths in directories panel" msgstr "Zeige Pfade in der Verzeichnisübersichtl" #: ui-settings.glade:399 msgid "Force _dark theme" msgstr "Erzwinge _dunkles Thema" #: ui-settings.glade:474 msgid "_Interface" msgstr "_Schnittstelle" #: ui-settings.glade:492 msgid "Integrate Syncthing with filemanagers" msgstr "Integriere Syncthing mit Dateimanagern" #: ui-settings.glade:507 msgid "Nemo (Cinamon Desktop)" msgstr "Nemo (Cinamon Desktop)" #: ui-settings.glade:524 msgid "Nautilus (Ubuntu/GNOME)" msgstr "Nautilus (Ubuntu/GNOME)" #: ui-settings.glade:540 msgid "Caja (MATE Desktop)" msgstr "Caja (MATE Desktop)" #: ui-settings.glade:579 msgid "" "Note: You may need to restart your filemanager after toggling " "integration." msgstr "Hinweis: Möglicherweise müssen Sie Ihren Dateimanager nach dem Einschalten der Integration neu starten.." #: ui-settings.glade:598 msgid "_Integration" msgstr "_Integration" #: ui-settings.glade:627 msgid "Keep Syncthing binary up-to-date" msgstr "Halten Sie die Syncthing Programmdatei auf dem neuesten Stand" #: ui-settings.glade:647 msgid "" "If enabled, Syncthing-GTK will automatically check for new daemon releases " "and replace binary with latest version." msgstr "Wenn aktiviert, wird Syncthing-GTK automatisch nach neuen Daemon Versionen suchen und die Programmdatei mit der aktuellen Version ersetzen." #: ui-settings.glade:662 msgid "Daemon process priority" msgstr "Daemon Prozesspriorität" #: ui-settings.glade:698 msgid "" "Priority will be used only if \"start daemon in background\" option " "is checked on \"Interface\" page." msgstr "Vorrang wird nur dann eingeräumt werden, wenn \"Starte Daemon im Hintergrund\" Option auf der \"Interface\" Seite angehakt ist." #: ui-settings.glade:713 msgid "Maximum number of CPU cores" msgstr "Maximale Anzahl der CPU-Kerne" #: ui-settings.glade:731 msgid "" "Sets the maximum number of CPU cores for daemon to use. This value will be " "used only if \"start daemon in background\" option is checked on " "\"Interface\" page." msgstr "Legt die maximale Anzahl der CPU-Kerne für den Daemon fest. This value will be used only if \"start daemon in background\" option is checked on \"Interface\" page." #: ui-settings.glade:786 msgid "Daemon" msgstr "Daemon" #: ui-settings.glade:808 msgid "" "This binary will be started when syncthing daemon is not running and " "\"start daemon in background\" option is checked on " "\"Interface\" page." msgstr "Die Programmdatei wird ausgeführt, wenn der Syncthing Daemon nicht läuft und die \"Daemon im Hintergrund starten\" Option auf der \"Interface\" Seite angehakt ist." #: ui-settings.glade:838 msgid "Syncthing binary location" msgstr "Ort der Syncthing Programmdatei" #: ui-settings.glade:867 msgid "Daemon arguments and variables" msgstr "Argumente und Variablen für Daemon" #: ui-settings.glade:897 msgid "" "Space-separated list of arguments and environment variables passed when starting above binary\n" "\n" "Use VARIABLE=\"value\" to set variable and -argument=\"value\" (with dash) for argument.\n" "\n" "If you need to pass commandline to different command (such as logger or ionice), separate prefixed arguments with exclamation mark \"!\"\n" "\n" "Example:\n" " STTRACE=\"all\" logger -t /var/log/syncthing.log ! -logflags=10" msgstr "Durch Leerzeichen getrennte Liste von Argumenten und Umgebungsvariablen werden übergeben, wenn die obige Programmdatei gestartet wird.\n\nBenutzen Sie VARIABLE=\"value\", um die Variable zu setzen und -argument=\"value\" (mit Strich) für das Argument.\n\nWenn Sie die Befehlszeile an ein anderes Kommando (wie bspw. Logger oder Ionice) weitergeben müssen, trennen Sie die voreingestellten Argumente mit dem Ausrufezeichen \"!\".\n\nBeispiel:\nSTTRACE=\"all\" logger -t /var/log/syncthing.log ! -logflags=10" #: ui-settings.glade:921 msgid "" "Warning: Changing settings on this page may prevent you from using " "Syncthing-GTK" msgstr "Achtung: Änderungen auf dieser Seite können die Unbenutzbarkeit von Syncthing-GTK zur Folge haben." syncthing-gtk-0.9.4.4/locale/en/000077500000000000000000000000001352162771300163275ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/locale/en/LC_MESSAGES/000077500000000000000000000000001352162771300201145ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/locale/en/LC_MESSAGES/syncthing-gtk.mo000066400000000000000000000005721352162771300232460ustar00rootroot00000000000000$,8@9Project-Id-Version: PACKAGE VERSION Report-Msgid-Bugs-To: POT-Creation-Date: 2016-04-20 11:27+0200 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: LANGUAGE Language: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit syncthing-gtk-0.9.4.4/locale/en/LC_MESSAGES/syncthing-gtk.po000066400000000000000000001025021352162771300232450ustar00rootroot00000000000000# Syncthing-GTK # Copyright (C) 2014-2015 Kozec and contributors # This file is distributed under the same license as the Syncthing-GTK package. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-04-20 11:27+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: syncthing_gtk/app.py:194 msgid "Syncthing-GTK started and running in notification area" msgstr "" #: syncthing_gtk/app.py:288 #, python-format msgid "%s kB/s" msgstr "" #: syncthing_gtk/app.py:302 syncthing_gtk/notifications.py:77 #: syncthing_gtk/wizard.py:53 msgid "Syncthing-GTK" msgstr "" #: syncthing_gtk/app.py:363 syncthing_gtk/app.py:364 syncthing_gtk/app.py:942 msgid "Syncing" msgstr "" #: syncthing_gtk/app.py:366 syncthing_gtk/app.py:367 msgid "Scanning" msgstr "" #: syncthing_gtk/app.py:390 syncthing_gtk/app.py:652 msgid "Starting Syncthing daemon" msgstr "" #: syncthing_gtk/app.py:424 msgid "Allow Anonymous Usage Reporting?" msgstr "" #: syncthing_gtk/app.py:426 msgid "The encrypted usage report is sent daily." msgstr "" #: syncthing_gtk/app.py:427 msgid "It is used to track common platforms, folder sizes and app versions." msgstr "" #: syncthing_gtk/app.py:428 msgid "" "If the reported data set is changed you will be prompted with this dialog " "again." msgstr "" #: syncthing_gtk/app.py:430 msgid "The aggregated statistics are publicly available at" msgstr "" #: syncthing_gtk/app.py:552 #, python-format msgid "" "Your Windows version doesn't supports cryptographic standards needed\n" "for Syncthing-GTK to check for Syncthing updates.\n" "Please, install this Windows update or disable update " "feature." msgstr "" #: syncthing_gtk/app.py:486 msgid "Extracting update..." msgstr "" #: syncthing_gtk/app.py:491 msgid "Restarting daemon..." msgstr "" #: syncthing_gtk/app.py:507 #, python-format msgid "Failed to download upgrade: %s" msgstr "" #: syncthing_gtk/app.py:525 #, python-format msgid "Downloading Syncthing %s" msgstr "" #: syncthing_gtk/app.py:604 msgid "Connected to Syncthing daemon" msgstr "" #: syncthing_gtk/app.py:614 msgid "Connection to Syncthing daemon lost." msgstr "" #: syncthing_gtk/app.py:615 msgid "Syncthing is probably restarting or has been shut down." msgstr "" #: syncthing_gtk/app.py:617 msgid "Syncthing has been shut down." msgstr "" #: syncthing_gtk/app.py:621 syncthing_gtk/app.py:1499 msgid "Syncthing is restarting." msgstr "" #: syncthing_gtk/app.py:621 syncthing_gtk/app.py:1499 msgid "Please wait" msgstr "" #: syncthing_gtk/app.py:644 #, python-format msgid "Connecting to Syncthing daemon at %s..." msgstr "" #: syncthing_gtk/app.py:649 #, python-format msgid "Waiting for Syncthing daemon at %s..." msgstr "" #: syncthing_gtk/app.py:664 msgid "Your syncthing daemon is too old." msgstr "" #: syncthing_gtk/app.py:664 msgid "Attempting to download recent, please wait..." msgstr "" #: syncthing_gtk/app.py:670 msgid "" "Cannot authorize with daemon. Please, use WebUI to generate API key or " "disable password authentication." msgstr "" #: syncthing_gtk/app.py:672 #, python-format msgid "" "Your syncthing daemon is too old.\n" "Please, upgrade syncthing package at least to version %s and try again." msgstr "" #: syncthing_gtk/app.py:674 msgid "" "Sorry, connecting to HTTPS is not supported on this platform.\n" "Please, use WebUI to disable HTTPS try again." msgstr "" #: syncthing_gtk/app.py:677 msgid "Connection to daemon failed. Check your configuration and try again." msgstr "" #: syncthing_gtk/app.py:678 syncthing_gtk/app.py:1992 #: syncthing_gtk/editordialog.py:314 msgid "Error message:" msgstr "" #: syncthing_gtk/app.py:763 msgid "Possible cause: Is there another web server running on Syncthing port?" msgstr "" #: syncthing_gtk/app.py:689 msgid "More info" msgstr "" #: syncthing_gtk/app.py:715 msgid "" "The configuration has been saved but not activated.\n" "Syncthing must restart to activate the new configuration." msgstr "" #: syncthing_gtk/app.py:717 msgid "_Restart" msgstr "" #: syncthing_gtk/app.py:859 msgid "Incompatible" msgstr "" #: syncthing_gtk/app.py:863 #, python-format msgid "" "Connecting to %s failed; the remote device speaks an older version of " "the protocol (%s) not compatible with this version" msgstr "" #: syncthing_gtk/app.py:784 #, python-format msgid "%(device)s wants to share folder \"%(folder)s\". Add new folder?" msgstr "" #: syncthing_gtk/app.py:791 syncthing_gtk/app.py:813 msgid "_Add" msgstr "" #: syncthing_gtk/app.py:806 #, python-format msgid "" "Device \"%(name)s\" (%(device)s) at IP \"%(ip)s\" wants to " "connect. Add new device?" msgstr "" #: syncthing_gtk/app.py:814 msgid "_Ignore" msgstr "" #: syncthing_gtk/app.py:832 msgid "RAM Utilization" msgstr "" #: syncthing_gtk/app.py:833 msgid "CPU Utilization" msgstr "" #: syncthing_gtk/app.py:834 syncthing_gtk/app.py:1353 msgid "Download Rate" msgstr "" #: syncthing_gtk/app.py:835 syncthing_gtk/app.py:1354 msgid "Upload Rate" msgstr "" #: syncthing_gtk/app.py:836 msgid "Announce Server" msgstr "" #: syncthing_gtk/app.py:837 syncthing_gtk/app.py:1356 msgid "Version" msgstr "" #: syncthing_gtk/app.py:860 syncthing_gtk/editordialog.py:394 msgid "disabled" msgstr "" #: syncthing_gtk/app.py:862 msgid "Online" msgstr "" #: syncthing_gtk/app.py:862 msgid "offline" msgstr "" #: syncthing_gtk/app.py:864 #, python-format msgid "%(online)s/%(total)s online" msgstr "" #: syncthing_gtk/app.py:891 syncthing_gtk/app.py:1357 syncthing_gtk/app.py:1382 msgid "Never" msgstr "" #: syncthing_gtk/app.py:899 syncthing_gtk/app.py:1691 syncthing_gtk/app.py:1692 msgid "Paused" msgstr "" #: syncthing_gtk/app.py:899 syncthing_gtk/app.py:924 syncthing_gtk/app.py:939 #: syncthing_gtk/infobox.py:60 msgid "Disconnected" msgstr "" #: syncthing_gtk/app.py:916 msgid "Connected" msgstr "" #: syncthing_gtk/app.py:945 syncthing_gtk/app.py:980 syncthing_gtk/app.py:1030 #: syncthing_gtk/app.py:1031 syncthing_gtk/app.py:1070 msgid "Up to Date" msgstr "" #: syncthing_gtk/app.py:966 syncthing_gtk/app.py:967 syncthing_gtk/app.py:968 msgid "Files" msgstr "" #: syncthing_gtk/app.py:980 syncthing_gtk/app.py:1068 msgid "Cluster out of sync" msgstr "" #: syncthing_gtk/app.py:995 msgid "Stopped" msgstr "" #: syncthing_gtk/app.py:1090 msgid "Local changes" msgstr "" #: syncthing_gtk/app.py:998 syncthing_gtk/app.py:1005 msgid "Error" msgstr "" #: syncthing_gtk/app.py:1024 #, python-format msgid "Synchronizing '%s'" msgstr "" #: glade/app.glade:490 msgid "Override Local Changes" msgstr "" #: syncthing_gtk/app.py:1026 #, python-format msgid "Synchronizing %s folders" msgstr "" #: syncthing_gtk/app.py:1035 syncthing_gtk/app.py:1036 msgid "All devices offline" msgstr "" #: syncthing_gtk/app.py:1040 syncthing_gtk/app.py:1041 msgid "Connecting to Syncthing daemon..." msgstr "" #: syncthing_gtk/app.py:1079 msgid "Unshared" msgstr "" #: syncthing_gtk/app.py:1082 msgid "Offline" msgstr "" #: syncthing_gtk/app.py:1176 msgid "Hide Window" msgstr "" #: syncthing_gtk/app.py:1190 app.glade:651 msgid "Show Window" msgstr "" #: syncthing_gtk/app.py:1239 msgid "Syncthing daemon doesn't appear to be running." msgstr "" #: syncthing_gtk/app.py:1240 msgid "Start it now?" msgstr "" #: syncthing_gtk/app.py:1243 msgid "Always start daemon automatically" msgstr "" #: syncthing_gtk/app.py:1292 msgid "Folder ID" msgstr "" #: syncthing_gtk/app.py:1293 msgid "Path" msgstr "" #: syncthing_gtk/app.py:1294 msgid "Global State" msgstr "" #: syncthing_gtk/app.py:1295 msgid "Local State" msgstr "" #: syncthing_gtk/app.py:1296 msgid "Out Of Sync" msgstr "" #: syncthing_gtk/app.py:1297 msgid "Folder Type" msgstr "" #: syncthing_gtk/app.py:1298 msgid "Ignore Permissions" msgstr "" #: syncthing_gtk/app.py:1299 msgid "Rescan Interval" msgstr "" #: syncthing_gtk/app.py:1300 msgid "Shared With" msgstr "" #: syncthing_gtk/app.py:1324 syncthing_gtk/app.py:1325 #: syncthing_gtk/app.py:1381 msgid "Yes" msgstr "" #: syncthing_gtk/app.py:1324 syncthing_gtk/app.py:1325 #: syncthing_gtk/app.py:1381 msgid "No" msgstr "" #: syncthing_gtk/app.py:1327 msgid "(watch)" msgstr "" #: syncthing_gtk/app.py:1341 msgid "Unused" msgstr "" #: syncthing_gtk/app.py:1350 msgid "Address" msgstr "" #: syncthing_gtk/app.py:1351 msgid "Synchronization" msgstr "" #: syncthing_gtk/app.py:1352 msgid "Compression" msgstr "" #: syncthing_gtk/app.py:1355 msgid "Introducer" msgstr "" #: syncthing_gtk/app.py:1357 msgid "Last Seen" msgstr "" #: syncthing_gtk/app.py:1378 device-edit.glade:22 msgid "All Data" msgstr "" #: syncthing_gtk/app.py:1379 device-edit.glade:26 folder-edit.glade:78 msgid "Off" msgstr "" #: syncthing_gtk/app.py:1375 msgid "Send Only" msgstr "" #: syncthing_gtk/app.py:1375 msgid "Send & Receive" msgstr "" #: syncthing_gtk/app.py:1447 msgid "Receive Only" msgstr "" #: syncthing_gtk/app.py:1380 device-edit.glade:30 msgid "Metadata Only" msgstr "" #: syncthing_gtk/app.py:1522 msgid "Exiting." msgstr "" #: syncthing_gtk/app.py:1523 msgid "Shutdown Syncthing daemon as well?" msgstr "" #: syncthing_gtk/app.py:1528 msgid "Always do same; Don't show this window again" msgstr "" #: syncthing_gtk/app.py:1768 #, python-format msgid "Do you really want to permanently stop synchronizing directory '%s'?" msgstr "" #: syncthing_gtk/app.py:1770 #, python-format msgid "Do you really want remove device '%s' from Syncthing?" msgstr "" #: syncthing_gtk/app.py:1991 msgid "Failed to start Syncthing daemon." msgstr "" #: syncthing_gtk/app.py:1993 msgid "" "Please, check your installation or set new path to Syncthing daemon binary." msgstr "" #: syncthing_gtk/daemonsettings.py:24 msgid "Syncthing Daemon Settings" msgstr "" #: syncthing_gtk/deviceeditor.py:24 msgid "" "The entered device ID does not look valid. It should be a 52 character " "string consisting of letters and numbers, with spaces and dashes being " "optional." msgstr "" #: syncthing_gtk/editordialog.py:312 msgid "Failed to load configuration from daemon." msgstr "" #: syncthing_gtk/editordialog.py:313 msgid "Try again." msgstr "" #: syncthing_gtk/editordialog.py:387 syncthing_gtk/editordialog.py:396 #, python-format msgid "%ss" msgstr "" #: syncthing_gtk/editordialog.py:402 #, python-format msgid "%s%%" msgstr "" #: syncthing_gtk/editordialog.py:409 msgid "no limit" msgstr "" #: syncthing_gtk/editordialog.py:411 #, python-format msgid "%s KiB/s" msgstr "" #: syncthing_gtk/editordialog.py:418 msgid "never delete" msgstr "" #: syncthing_gtk/editordialog.py:420 #, python-format msgid "%s day" msgstr "" #: syncthing_gtk/editordialog.py:422 #, python-format msgid "%s days" msgstr "" #: syncthing_gtk/editordialog.py:455 msgid "Failed to save configuration." msgstr "" #: syncthing_gtk/finddaemondialog.py:24 find-daemon.glade:7 msgid "Can't invoke the daemon" msgstr "" #: syncthing_gtk/finddaemondialog.py:26 msgid "Syncthing binary" msgstr "" #: syncthing_gtk/finddaemondialog.py:28 syncthing_gtk/finddaemondialog.py:37 msgid "Syncthing daemon binary cannot be found." msgstr "" #: syncthing_gtk/finddaemondialog.py:29 #, python-format msgid "" "If you have Syncthing installed, please, set path to %s below or click on " "Download button to download latest Syncthing package." msgstr "" #: syncthing_gtk/finddaemondialog.py:38 #, python-format msgid "If you have Syncthing installed, please, set path to %s below" msgstr "" #: syncthing_gtk/finddaemondialog.py:82 syncthing_gtk/wizard.py:411 msgid "Cannot download Syncthing daemon." msgstr "" #: syncthing_gtk/finddaemondialog.py:83 syncthing_gtk/wizard.py:412 #, python-format msgid "This platform (%s) is not supported" msgstr "" #: syncthing_gtk/finddaemondialog.py:100 msgid "Downloading..." msgstr "" #: syncthing_gtk/finddaemondialog.py:163 syncthing_gtk/stdownloader.py:251 #: syncthing_gtk/stdownloader.py:279 msgid "Download failed." msgstr "" #: syncthing_gtk/finddaemondialog.py:185 syncthing_gtk/wizard.py:458 msgid "Download finished." msgstr "" #: syncthing_gtk/foldereditor.py:45 msgid "Select Folder for new Folder" msgstr "" #: syncthing_gtk/ignoreeditor.py:44 msgid "File location:" msgstr "" #: syncthing_gtk/notifications.py:120 #, python-format msgid "Unexpected folder ID sent from device \"%s\"." msgstr "" #: syncthing_gtk/notifications.py:124 #, python-format msgid "Device \"%s\" is trying to connect to syncthing daemon." msgstr "" #: syncthing_gtk/notifications.py:153 #, python-format msgid "Synchronization of folder '%s' is completed." msgstr "" #: syncthing_gtk/notifications.py:114 syncthing_gtk/notifications.py:115 #, python-format msgid "Accept device \"%s\"" msgstr "" #: syncthing_gtk/notifications.py:116 #, python-format msgid "Ignore device \"%s\"" msgstr "" #: syncthing_gtk/notifications.py:118 msgid "Unknown Device" msgstr "" #: syncthing_gtk/notifications.py:161 syncthing_gtk/notifications.py:162 #, python-format msgid "Accept folder \"%s\"" msgstr "" #: syncthing_gtk/notifications.py:163 #, python-format msgid "Ignore folder \"%s\"" msgstr "" #: syncthing_gtk/notifications.py:173 msgid "Folder rejected" msgstr "" #: syncthing_gtk/notifications.py:174 #, python-format msgid "Unexpected folder \"%(folder)s\" sent from device \"%(device)s\"." msgstr "" #: syncthing_gtk/notifications.py:207 #, python-format msgid "Completed synchronization in \"%s\"" msgstr "" #: syncthing_gtk/notifications.py:209 #, python-format msgid "Updates in folder \"%s\"" msgstr "" #: syncthing_gtk/notifications.py:160 #, python-format msgid "%(hostname)s: Downloaded '%(filename)s' to reflect remote changes." msgstr "" #: syncthing_gtk/notifications.py:165 #, python-format msgid "%(hostname)s: Deleted '%(filename)s' to reflect remote changes." msgstr "" #: syncthing_gtk/notifications.py:168 #, python-format msgid "%(hostname)s: Downloaded %(updated)s files to reflect remote changes." msgstr "" #: syncthing_gtk/notifications.py:171 #, python-format msgid "%(hostname)s: Deleted %(deleted)s files to reflect remote changes." msgstr "" #: syncthing_gtk/notifications.py:175 #, python-format msgid "" "%(hostname)s: downloaded %(updated)s files and deleted %(deleted)s files to " "reflect remote changes." msgstr "" #: syncthing_gtk/notifications.py:256 #, python-format msgid "Conflicting file in \"%s\"" msgstr "" #: syncthing_gtk/notifications.py:257 #, python-format msgid "Conflict in path \"%s\" detected." msgstr "" #: syncthing_gtk/notifications.py:261 msgid "Open Conflicting file in filemanager" msgstr "" #: syncthing_gtk/notifications.py:337 msgid "An error occurred in Syncthing!" msgstr "" #: syncthing_gtk/statusicon.py:48 msgid "Syncthing" msgstr "" #: syncthing_gtk/stdownloader.py:174 syncthing_gtk/stdownloader.py:217 #: syncthing_gtk/stdownloader.py:313 syncthing_gtk/stdownloader.py:344 msgid "Failed to determine latest Syncthing version." msgstr "" #: syncthing_gtk/stdownloader.py:236 msgid "Failed to create temporary file." msgstr "" #: syncthing_gtk/stdownloader.py:294 msgid "Downloaded file is corrupted." msgstr "" #: syncthing_gtk/tools.py:192 #, python-format msgid "~%s hours ago" msgstr "" #: syncthing_gtk/tools.py:194 #, python-format msgid "%s minutes ago" msgstr "" #: syncthing_gtk/tools.py:196 #, python-format msgid "%s seconds ago" msgstr "" #: syncthing_gtk/tools.py:197 msgid "just now" msgstr "" #: syncthing_gtk/tools.py:199 #, python-format msgid "%s days ago" msgstr "" #: syncthing_gtk/tools.py:203 #, python-format msgid "in %s days" msgstr "" #: syncthing_gtk/tools.py:205 #, python-format msgid "~%s hours from now" msgstr "" #: syncthing_gtk/tools.py:207 #, python-format msgid "%s minutes from now" msgstr "" #: syncthing_gtk/tools.py:209 #, python-format msgid "%s seconds from now" msgstr "" #: syncthing_gtk/tools.py:210 msgid "in a moment" msgstr "" #: syncthing_gtk/uisettingsdialog.py:58 msgid "UI Settings" msgstr "" #: syncthing_gtk/uisettingsdialog.py:70 msgid "Unlimited" msgstr "" #: syncthing_gtk/uisettingsdialog.py:107 #, python-format msgid "Install %(package)s package to enable %(feature)s support" msgstr "" #: syncthing_gtk/uisettingsdialog.py:312 msgid "Browse for Syncthing binary" msgstr "" #: syncthing_gtk/wizard.py:53 msgid "First run wizard" msgstr "" #: syncthing_gtk/wizard.py:137 #, python-format msgid "Please, check error log and fill bug report on %s." msgstr "" #: syncthing_gtk/wizard.py:141 msgid "Display error log" msgstr "" #: syncthing_gtk/wizard.py:215 msgid "Next" msgstr "" #: syncthing_gtk/wizard.py:224 msgid "" "Continue this wizard to create a Syncthing configuration file or abort it to " "exit." msgstr "" #: syncthing_gtk/wizard.py:198 msgid "Welcome to Syncthing-GTK first run wizard!" msgstr "" #: syncthing_gtk/wizard.py:200 msgid "It looks like you never have used Syncthing." msgstr "" #: syncthing_gtk/wizard.py:201 msgid "Initial configuration should be created." msgstr "" #: syncthing_gtk/wizard.py:204 #, python-format msgid "" "If you already had Syncthing daemon configured, please, exit this wizard and " "check your %s folder" msgstr "" #: syncthing_gtk/wizard.py:220 msgid "Searching for Syncthing daemon." msgstr "" #: syncthing_gtk/wizard.py:222 syncthing_gtk/wizard.py:394 msgid "Please wait..." msgstr "" #: syncthing_gtk/wizard.py:270 syncthing_gtk/wizard.py:287 msgid "Syncthing daemon not found." msgstr "" #: syncthing_gtk/wizard.py:271 msgid "Please, use package manager to install the Syncthing package." msgstr "" #: syncthing_gtk/wizard.py:283 msgid "download latest binary" msgstr "" #: syncthing_gtk/wizard.py:288 syncthing_gtk/wizard.py:302 #, python-format msgid "" "Please, use package manager to install the Syncthing package or " "%(download_link)s from Syncthing page and save it to your %(target)s " "directory." msgstr "" #: syncthing_gtk/wizard.py:296 msgid "Syncthing daemon is too old." msgstr "" #: syncthing_gtk/wizard.py:297 #, python-format msgid "" "Syncthing-GTK needs Syncthing daemon %(min)s or newer, but only %(actual)s " "were found." msgstr "" #: syncthing_gtk/wizard.py:309 msgid "Alternatively, Syncthing-GTK can download Syncthing binary" msgstr "" #: syncthing_gtk/wizard.py:310 #, python-format msgid "to %s and keep it up-to-date, but this option is meant as" msgstr "" #: syncthing_gtk/wizard.py:312 msgid "last resort and generally not suggested." msgstr "" #: syncthing_gtk/wizard.py:315 msgid "_Download Syncthing binary" msgstr "" #: syncthing_gtk/wizard.py:319 msgid "Auto_update downloaded binary" msgstr "" #: syncthing_gtk/wizard.py:375 msgid "Syncthing daemon binary found." msgstr "" #: syncthing_gtk/wizard.py:377 syncthing_gtk/wizard.py:460 msgid "Binary path:" msgstr "" #: syncthing_gtk/wizard.py:378 msgid "Version:" msgstr "" #: syncthing_gtk/wizard.py:393 msgid "Downloading Syncthing daemon." msgstr "" #: syncthing_gtk/wizard.py:441 msgid "Failed to download Syncthing daemon package." msgstr "" #: syncthing_gtk/wizard.py:472 msgid "Syncthing is generating RSA key and certificate." msgstr "" #: syncthing_gtk/wizard.py:473 msgid "This may take a while..." msgstr "" #: syncthing_gtk/wizard.py:515 msgid "Failed to generate keys" msgstr "" #: syncthing_gtk/wizard.py:516 msgid "Syncthing daemon failed to generate RSA key or certificate." msgstr "" #: syncthing_gtk/wizard.py:526 msgid "WebUI setup" msgstr "" #: syncthing_gtk/wizard.py:528 msgid "" "Syncthing can be managed remotely using WebUI and even if you are going to " "use Syncthing-GTK, WebUI needs to be enabled, as Syncthing-GTK uses it to " "communicate with the Syncthing daemon." msgstr "" #: syncthing_gtk/wizard.py:533 msgid "" "If you prefer to be able to manage Syncthing remotely, over the internet or " "on your local network, select listen on all interfaces and set " "username and password to protect Syncthing from unauthorized access." msgstr "" #: syncthing_gtk/wizard.py:538 msgid "" "Otherwise, select listen on localhost, so only users and programs on " "this computer will be able to interact with Syncthing." msgstr "" #: syncthing_gtk/wizard.py:544 msgid "WebUI Listen Addresses" msgstr "" #: syncthing_gtk/wizard.py:545 msgid "Listen on _localhost" msgstr "" #: syncthing_gtk/wizard.py:547 msgid "Listen on _all interfaces" msgstr "" #: syncthing_gtk/wizard.py:554 msgid "_Username" msgstr "" #: syncthing_gtk/wizard.py:555 msgid "_Password" msgstr "" #: syncthing_gtk/wizard.py:609 msgid "Saving settings..." msgstr "" #: syncthing_gtk/wizard.py:610 msgid "Checking for available port..." msgstr "" #: syncthing_gtk/wizard.py:631 msgid "Failed to find unused port for listening." msgstr "" #: syncthing_gtk/wizard.py:632 msgid "Please, check your firewall settings and try again." msgstr "" #: syncthing_gtk/wizard.py:646 msgid "Saving..." msgstr "" #: syncthing_gtk/wizard.py:678 msgid "Failed to load Syncthing configuration" msgstr "" #: syncthing_gtk/wizard.py:705 msgid "Failed to modify Syncthing configuration" msgstr "" #: syncthing_gtk/wizard.py:715 msgid "Failed to save Syncthing configuration" msgstr "" #: syncthing_gtk/wizard.py:729 msgid "Done." msgstr "" #: syncthing_gtk/wizard.py:731 msgid "Syncthing has been successfully configured." msgstr "" #: syncthing_gtk/wizard.py:733 msgid "" "You can configure more details later, in UI Settings and Daemon " "Settings menus in main window of application." msgstr "" #: about.glade:7 msgid "About Syncthing-GTK" msgstr "" #: about.glade:10 msgid "GUI and notification area icon for Syncthing" msgstr "" #: app.glade:239 app.glade:420 app.glade:802 msgid "Open _Web Interface" msgstr "" #: app.glade:251 app.glade:424 app.glade:814 msgid "Display _Daemon Output" msgstr "" #: app.glade:280 app.glade:430 msgid "UI _Settings" msgstr "" #: app.glade:325 app.glade:451 msgid "Add Shared _Folder" msgstr "" #: app.glade:338 app.glade:455 msgid "Add _Device" msgstr "" #: app.glade:356 app.glade:461 msgid "Daemon _Settings" msgstr "" #: app.glade:371 app.glade:465 app.glade:588 app.glade:788 msgid "Show _ID" msgstr "" #: app.glade:391 app.glade:471 msgid "Sh_utdown Daemon" msgstr "" #: app.glade:404 app.glade:475 msgid "_Restart Daemon" msgstr "" #: app.glade:436 msgid "_About" msgstr "" #: app.glade:440 msgid "_Quit" msgstr "" #: app.glade:490 msgid "Override Remote Changes" msgstr "" #: app.glade:519 msgid "Edit _Ignore Patterns" msgstr "" #: app.glade:547 msgid "_Rescan" msgstr "" #: app.glade:559 msgid "_Browse" msgstr "" #: app.glade:611 msgid "Resume" msgstr "" #: app.glade:641 msgid "Connecting to daemon..." msgstr "" #: app.glade:669 msgid "S_top Syncthing" msgstr "" #: app.glade:683 msgid "Resume Sync_thing" msgstr "" #: app.glade:695 daemon-settings.glade:335 msgid "_Incoming Rate Limit" msgstr "" #: app.glade:709 app.glade:751 msgid "_Unlimited" msgstr "" #: app.glade:718 app.glade:760 msgid "_Other" msgstr "" #: app.glade:737 msgid "_Outgoing Rate Limit" msgstr "" #: daemon-output.glade:7 msgid "Daemon Output" msgstr "" #: daemon-settings.glade:106 msgid "Sync Protocol Listen Addresses" msgstr "" #: daemon-settings.glade:136 msgid "Enable Local _Discovery" msgstr "" #: daemon-settings.glade:153 msgid "Enable _UPnP" msgstr "" #: daemon-settings.glade:171 msgid "Local Discovery _Port" msgstr "" #: daemon-settings.glade:212 msgid "Outgoing _Rate Limit" msgstr "" #: daemon-settings.glade:229 msgid "Open browser with _WebUI when daemon is starting" msgstr "" #: daemon-settings.glade:246 msgid "Enable _Anonymous Usage Reporting" msgstr "" #: daemon-settings.glade:262 msgid "Enable _Global Discovery" msgstr "" #: daemon-settings.glade:281 msgid "Global Discovery _Servers" msgstr "" #: device-edit.glade:102 msgid "Device _ID" msgstr "" #: device-edit.glade:134 msgid "Device _Name" msgstr "" #: device-edit.glade:166 msgid "Shown instead of Device ID in the cluster status." msgstr "" #: device-edit.glade:181 msgid "_Addresses" msgstr "" #: device-edit.glade:213 msgid "" "Enter comma separated \"ip:port\" addresses or \"dynamic\" to perform " "automatic discovery of the address." msgstr "" #: device-edit.glade:242 msgid "Share _Folders" msgstr "" #: device-edit.glade:276 msgid "Select the folders to share with this device" msgstr "" #: device-edit.glade:287 msgid "_Introducer" msgstr "" #: device-edit.glade:308 msgid "" "Any devices configured on an introducer device will be added to this device " "as well." msgstr "" #: device-edit.glade:323 msgid "_Compression" msgstr "" #: device-id.glade:14 msgid "Device Identification" msgstr "" #: device-id.glade:68 msgid "XYZ-123-ABC" msgstr "" #: find-daemon.glade:126 ui-settings.glade:821 msgid "_Browse..." msgstr "" #: find-daemon.glade:179 msgid "_Download..." msgstr "" #: folder-edit.glade:44 msgctxt "In File Pull Order combobox" msgid "Random" msgstr "" #: folder-edit.glade:48 msgctxt "In File Pull Order combobox" msgid "Alphabetic" msgstr "" #: folder-edit.glade:52 msgctxt "In File Pull Order combobox" msgid "Smallest First" msgstr "" #: folder-edit.glade:56 msgctxt "In File Pull Order combobox" msgid "Largest First" msgstr "" #: folder-edit.glade:60 msgctxt "In File Pull Order combobox" msgid "Oldest First" msgstr "" #: folder-edit.glade:64 msgctxt "In File Pull Order combobox" msgid "Newest First" msgstr "" #: folder-edit.glade:82 msgid "Simple" msgstr "" #: folder-edit.glade:86 msgid "Staggered" msgstr "" #: folder-edit.glade:90 msgid "Trashcan" msgstr "" #: folder-edit.glade:94 msgid "External" msgstr "" #: folder-edit.glade:171 msgid "Folder _Label" msgstr "" #: folder-edit.glade:190 msgid "Generate Random" msgstr "" #: folder-edit.glade:202 msgid "Short identifier for the folder. Must be the same on all devices." msgstr "" #: folder-edit.glade:216 msgid "_Path" msgstr "" #: folder-edit.glade:234 msgid "" "Path to the folder on the local computer. Will be created if it does not " "exist." msgstr "" #: folder-edit.glade:248 msgid "Rescan _Interval" msgstr "" #: folder-edit.glade:293 msgid "Monitor filesystem for _changes" msgstr "" #: folder-edit.glade:343 msgid "Browse..." msgstr "" #: folder-edit.glade:366 msgid "Folder _ID" msgstr "" #: folder-edit.glade:396 msgid "" "Optional descriptive label for the folder. Can be different on each device." msgstr "" #: folder-edit.glade:418 msgid "_Send Only Folder" msgstr "" #: folder-edit.glade:439 msgid "" "Files are protected from changes made on other devices, but changes made on " "this device will be sent to the rest of the cluster." msgstr "" #: folder-edit.glade:453 msgid "_Receive Only Folder" msgstr "" #: folder-edit.glade:474 msgid "" "Changes from other devices are applied to files on this device, but changes " "made on this device are not sent to the rest of the cluster.\n" msgstr "" #: folder-edit.glade:456 msgid "_Folder Settings" msgstr "" #: folder-edit.glade:476 msgid "Select the devices to share this folder with." msgstr "" #: folder-edit.glade:514 msgid "Share With _Devices" msgstr "" #: folder-edit.glade:535 msgid "Versioning _Mode" msgstr "" #: folder-edit.glade:590 msgid "" "Files are moved to date stamped versions in a .stversions folder when " "replaced or deleted by syncthing." msgstr "" #: folder-edit.glade:605 msgid "_Keep Versions" msgstr "" #: folder-edit.glade:642 msgid "The number of old versions to keep, per file." msgstr "" #: folder-edit.glade:671 msgid "" "Files are moved to date stamped versions in a .stversions folder when " "replaced or deleted by syncthing. Versions are automatically deleted if they " "are older than the maximum age or exceed the number of files allowed in an " "interval.\n" "\n" "The following intervals are used: for the first hour a version is kept every " "30 seconds, for the first day a version is kept every hour, for the first 30 " "days a version is kept every day, until the maximum age a version is kept " "every week." msgstr "" #: folder-edit.glade:688 msgid "Ma_ximum Age" msgstr "" #: folder-edit.glade:727 msgid "Versions _Path" msgstr "" #: folder-edit.glade:759 msgid "" "Path where versions should be stored (leave empty for the default ." "stversions folder)." msgstr "" #: folder-edit.glade:787 msgid "" "Files are moved to .stversions folder when replaced or deleted by Syncthing" msgstr "" #: folder-edit.glade:801 msgid "Clean out _after" msgstr "" #: folder-edit.glade:840 msgid "The number of days to keep files in the trash can." msgstr "" #: folder-edit.glade:869 msgid "" "An external command handles the versioning. It has to remove the file from " "the synced folder." msgstr "" #: folder-edit.glade:884 msgid "Command" msgstr "" #: folder-edit.glade:917 msgid "" "The first command line parameter is the folder path and the second parameter " "is the relative path in the folder." msgstr "" #: folder-edit.glade:953 msgid "File _Versioning" msgstr "" #: folder-edit.glade:982 msgid "Ignore P_ermissions" msgstr "" #: folder-edit.glade:1003 msgid "" "File permission bits are ignored when looking for changes. Use on FAT " "filesystems." msgstr "" #: folder-edit.glade:1018 msgid "Minimum Free Disk Space" msgstr "" #: folder-edit.glade:1057 msgid "File Pull _Order" msgstr "" #: folder-edit.glade:1103 ui-settings.glade:954 msgid "_Advanced" msgstr "" #: ignore-editor.glade:8 msgid "Ignore Patterns" msgstr "" #: ignore-editor.glade:99 msgid "" "See Syncthing " "documentation for list of supported patterns" msgstr "" #: ignore-editor.glade:114 msgid "File location: " msgstr "" #: ui-settings.glade:27 msgid "Lowest" msgstr "" #: ui-settings.glade:31 msgid "Low" msgstr "" #: ui-settings.glade:35 msgid "Normal" msgstr "" #: ui-settings.glade:39 msgid "Above Normal" msgstr "" #: ui-settings.glade:46 msgid "Syncthing-GTK Settings" msgstr "" #: ui-settings.glade:27 msgid "Default" msgstr "" #: ui-settings.glade:35 msgid "White" msgstr "" #: ui-settings.glade:31 msgid "Black" msgstr "" #: ui-settings.glade:69 msgid "Please, restart Syncthing-GTK to apply all changed settings" msgstr "" #: ui-settings.glade:136 msgid "When starting and Syncthing daemon is not running..." msgstr "" #: ui-settings.glade:147 msgid "... _wait for daemon" msgstr "" #: ui-settings.glade:164 msgid "... start daemon in _background" msgstr "" #: ui-settings.glade:180 msgid "... _ask me what to do" msgstr "" #: ui-settings.glade:199 msgid "When exiting after daemon was started in background..." msgstr "" #: ui-settings.glade:210 msgid "... terminate _daemon" msgstr "" #: ui-settings.glade:226 msgid "... leave daemon _running" msgstr "" #: ui-settings.glade:242 msgid "... ask me w_hat to do" msgstr "" #: ui-settings.glade:258 msgid "Us_e traditional window header" msgstr "" #: ui-settings.glade:278 msgid "Display desktop notifications for..." msgstr "" #: ui-settings.glade:289 msgid "... file updates" msgstr "" #: ui-settings.glade:304 msgid "... errors" msgstr "" #: ui-settings.glade:319 msgid "... synchronization completion" msgstr "" #: ui-settings.glade:334 msgid "Start Syncthing-GTK when I login to my desktop" msgstr "" #: ui-settings.glade:350 msgid "Minimize to _tray on start" msgstr "" #: ui-settings.glade:366 msgid "Use _icons in menu" msgstr "" #: ui-settings.glade:383 msgid "Display paths in directories panel" msgstr "" #: ui-settings.glade:399 msgid "Force _dark theme" msgstr "" #: ui-settings.glade:540 msgid "Tray icon style" msgstr "" #: ui-settings.glade:553 msgid "Language" msgstr "" #: ui-settings.glade:474 msgid "_Interface" msgstr "" #: ui-settings.glade:492 msgid "Integrate Syncthing with filemanagers" msgstr "" #: ui-settings.glade:507 msgid "Nemo (Cinamon Desktop)" msgstr "" #: ui-settings.glade:524 msgid "Nautilus (Ubuntu/GNOME)" msgstr "" #: ui-settings.glade:540 msgid "Caja (MATE Desktop)" msgstr "" #: ui-settings.glade:579 msgid "" "Note: You may need to restart your filemanager after toggling " "integration." msgstr "" #: ui-settings.glade:598 msgid "_Integration" msgstr "" #: ui-settings.glade:627 msgid "Keep Syncthing binary up-to-date" msgstr "" #: ui-settings.glade:647 msgid "" "If enabled, Syncthing-GTK will automatically check for new daemon releases " "and replace binary with latest version." msgstr "" #: ui-settings.glade:662 msgid "Daemon process priority" msgstr "" #: ui-settings.glade:698 msgid "" "Priority will be used only if \"start daemon in background\" option " "is checked on \"Interface\" page." msgstr "" #: ui-settings.glade:713 msgid "Maximum number of CPU cores" msgstr "" #: ui-settings.glade:731 msgid "" "Sets the maximum number of CPU cores for daemon to use. This value will be " "used only if \"start daemon in background\" option is checked on " "\"Interface\" page." msgstr "" #: ui-settings.glade:786 msgid "Daemon" msgstr "" #: ui-settings.glade:808 msgid "" "This binary will be started when syncthing daemon is not running and " "\"start daemon in background\" option is checked on \"Interface" "\" page." msgstr "" #: ui-settings.glade:838 msgid "Syncthing binary location" msgstr "" #: ui-settings.glade:867 msgid "Daemon arguments and variables" msgstr "" #: ui-settings.glade:897 msgid "" "Space-separated list of arguments and environment variables passed when " "starting above binary\n" "\n" "Use VARIABLE=\"value\" to set variable and -argument=\"value\" (with dash) for argument.\n" "\n" "If you need to pass commandline to different command (such as logger or " "ionice), separate prefixed arguments with exclamation mark \"!\"\n" "\n" "Example:\n" " STTRACE=\"all\" logger -t /var/log/syncthing.log ! -logflags=10" msgstr "" #: ui-settings.glade:921 msgid "" "Warning: Changing settings on this page may prevent you from using " "Syncthing-GTK" msgstr "" syncthing-gtk-0.9.4.4/locale/es/000077500000000000000000000000001352162771300163345ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/locale/es/LC_MESSAGES/000077500000000000000000000000001352162771300201215ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/locale/es/LC_MESSAGES/syncthing-gtk.mo000066400000000000000000001014111352162771300232450ustar00rootroot00000000000000Q ,0>1p &; R]nQW/   : ,H!u]T -Z      g!!}!!!!! ! !"'"!G"i"$"D"" "##0#5H#]~## # # $ $8$$O$t$"$5$D$$% *%8%I%\%z%%%%%!%& )&e6&&&&&& &-&,''T')s''&')'((&/(V(!t(((((R(*)K0)g|))+>, O, Y, e, p,~,0,,, , ,r,n-P9.a.=.*//000&0)0(1(91"b1*1(191%2 92DD2,2 2 2223 &32363 =3J3 f3t333 33344 4444#4074Kh44 75C5X5p5Ou5V56 #6/62>63q6K656;'7c7=7o1888888899 #9-969vV99-9,:E: T:^:;;-; <;AH; ;;1;";;k;g< >. > <>J>d>l>>,>>>> >? ?1?K?(@0@.O@;~@@@@+A0=A7nAA AAVA6;BrB3B3BmB)aCCp#D2D-DDE#EE E E E+E "F,F5F MOMmMrM vMMMM MMM"N9NVNfjN]N /O:ONOjO OO%O%OGO7.P+fPbPP_Q3oQ2QQ$Q R R)R@R^R-R S7SKScS kS wS S.S$SS6TVETTTT"TTIUu\UUUV V&)VPV,nVV.V;VQ WrWyWWW%WW#WX%X>X$ZXXXrXY%Y 7YAY$IY"nY7Y8Y/Z32ZfZ0Z4Z3Z1[%P[*v[[[[[j\k\at\k\B]T_#_ ``'`6`K`5_`` ` ```haSKbabIcKccddd e e e3eFeNe(deIe/e f`f'tf,ff fgg 2g?g Dg Ng \g}g,gg2g hh5hPhVhYh`hhhphwh5hThiiiiiHig9jjjjLjHkagkDk@lOlHl;m mmmmnn-n@n \n in unn&o5Fo<|oo ooppppNp>q Nq?Zq*qqqXr s. t9tMtlt(utt6tttu !u&+uRu guu9Sv,v5v8v*)w,Tww*w8w=wK_e  ́   *5 >+Jv Cނ3K,<&1 G~F2(mBqf,N@&> 0)5M}L+ =tW?U;y;u:94IQ66R%A/CC /"sV1Z9D'_ #)(:X oj $I20$+7!ve LJ\H@--EzBT47.*%ibwY.K ]dGlA*8g`HE#Pk'|?5aN" xQr8<![OcMp^h{J3>=OPSn DF%(device)s wants to share folder "%(folder)s". Add new folder?%(online)s/%(total)s online%s KiB/s%s day%s days%s days ago%s kB/s%s minutes ago%s minutes from now%s seconds ago%s seconds from now%s%%%ss(watch)... _ask me what to do... _wait for daemon... ask me w_hat to do... errors... file updates... leave daemon _running... start daemon in _background... synchronization completion... terminate _daemonNote: You may need to restart your filemanager after toggling integration.Warning: Changing settings on this page may prevent you from using Syncthing-GTKAbout Syncthing-GTKAbove NormalAdd Shared _FolderAdd _DeviceAddressAll DataAll devices offlineAllow Anonymous Usage Reporting?Alternatively, Syncthing-GTK can download Syncthing binaryAlways do same; Don't show this window againAlways start daemon automaticallyAn external command handles the versioning. It has to remove the file from the synced folder.Announce ServerAny devices configured on an introducer device will be added to this device as well.Attempting to download recent, please wait...Auto_update downloaded binaryBinary path:Browse for Syncthing binaryBrowse...CPU UtilizationCaja (MATE Desktop)Can't invoke the daemonCannot authorize with daemon. Please, use WebUI to generate API key or disable password authentication.Cannot download Syncthing daemon.Checking for available port...Clean out _afterCluster out of syncCommandCompressionConnectedConnected to Syncthing daemonConnecting to Syncthing daemon at %s...Connecting to Syncthing daemon...Connecting to daemon...Connection to Syncthing daemon lost.Connection to daemon failed. Check your configuration and try again.DaemonDaemon OutputDaemon _SettingsDaemon arguments and variablesDaemon process priorityDevice "%s" is trying to connect to syncthing daemon.Device "%(name)s" (%(device)s) at IP "%(ip)s" wants to connect. Add new device?Device IdentificationDevice _IDDevice _NameDisconnectedDisplay Syncthing-Inotify OutputDisplay _Daemon OutputDisplay desktop notifications for...Display error logDisplay paths in directories panelDo you really want remove device '%s' from Syncthing?Do you really want to permanently stop synchronizing directory '%s'?Done.Download RateDownload failed.Download finished.Downloaded file is corrupted.Downloading Syncthing %sDownloading Syncthing daemon.Downloading...Edit _Ignore PatternsEnable Local _DiscoveryEnable _Anonymous Usage ReportingEnable _Global DiscoveryEnable _UPnPEnter comma separated "ip:port" addresses or "dynamic" to perform automatic discovery of the address.ErrorError message:Exiting.ExternalExtracting update...Failed to create temporaly file.Failed to determine latest Syncthing version.Failed to download Syncthing daemon package.Failed to download upgrade: %sFailed to find unused port for listening.Failed to generate keysFailed to load Syncthing configurationFailed to load configuration from daemon.Failed to modify Syncthing configurationFailed to save Syncthing configurationFailed to save configuration.Failed to start Syncthing daemon.File Pull _OrderFile _VersioningFile location:File location: File permission bits are ignored when looking for changes. Use on FAT filesystems.FilesFiles are moved to .stversions folder when replaced or deleted by SyncthingFiles are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing.Files are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing. Versions are automatically deleted if they are older than the maximum age or exceed the number of files allowed in an interval. The following intervals are used: for the first hour a version is kept every 30 seconds, for the first day a version is kept every hour, for the first 30 days a version is kept every day, until the maximum age a version is kept every week.Files are protected from changes made on other devices, but changes made on this device will be sent to the rest of the cluster.First run wizardFolder IDFolder TypeFolder _IDFolder _LabelForce _dark themeGTK GUI and notification area icon for SyncthingGitHubGlobal Discovery _ServersGlobal StateHide WindowIf enabled, Syncthing-GTK will automatically check for new daemon releases and replace binary with latest version.If enabled, changed, created and delete files are synchronized immediately, as long as Syncthing-GTK is running. Note: Using this along with short Rescan Interval (<300s) may consume a lot of resources.If the reported data set is changed you will be prompted with this dialog again.If you already had Syncthing daemon configured, please, exit this wizard and check your %s folderIf you have Syncthing installed, please, set path to %s belowIf you have Syncthing installed, please, set path to %s below or click on Download button to download latest Syncthing package.If you prefer to be able to manage Syncthing remotely, over the internet or on your local network, select listen on all interfaces and set username and password to protect Syncthing from unauthorized access.Ignore P_ermissionsIgnore PatternsIgnore PermissionsIn File Pull Order comboboxAlphabeticIn File Pull Order comboboxLargest FirstIn File Pull Order comboboxNewest FirstIn File Pull Order comboboxOldest FirstIn File Pull Order comboboxRandomIn File Pull Order comboboxSmallest FirstInitial configuration should be created.Install %(package)s package to enable %(feature)s supportIntegrate Syncthing with filemanagersIntroducerIt is used to track common platforms, folder sizes and app versions.It looks like you never have used Syncthing.Keep Syncthing binary up-to-dateLast SeenListen on _all interfacesListen on _localhostLocal Discovery _PortLocal StateLowLowestMa_ximum AgeMaximum number of CPU coresMetadata OnlyMinimize to _tray on startMinimum Free Disk SpaceMonitor filesystem for _changesMore infoNautilus (Ubuntu/GNOME)Nemo (Cinamon Desktop)NeverNoNormalOffOfflineOnlineOpen _Web InterfaceOpen browser with _WebUI when daemon is startingOptional descriptive label for the folder. Can be different on each device.Otherwise, select listen on localhost, so only users and programs on this computer will be able to interact with Syncthing.Out Of SyncOutgoing _Rate LimitOverride Remote ChangesPathPath to the folder on the local computer. Will be created if it does not exist.Path where versions should be stored (leave empty for the default .stversions folder).PausedPlease waitPlease wait...Please, check error log and fill bug report on %s.Please, check your firewall settings and try again.Please, check your installation or set new path to Syncthing daemon binary.Please, install pyinotify package to use this featurePlease, restart Syncthing-GTK to apply all changed settingsPlease, use package manager to install the Syncthing package or %(download_link)s from Syncthing page and save it to your %(target)s directory.Please, use package manager to install the Syncthing package.Priority will be used only if "start daemon in background" option is checked on "Interface" page.RAM UtilizationRescan IntervalRescan _IntervalRestarting daemon...ResumeResume Sync_thingS_top SyncthingSaving settings...Saving...ScanningSearching for Syncthing daemon.See Syncthing documentation for list of supported patternsSelect Folder for new FolderSelect the devices to share this folder with.Select the folders to share with this deviceSend & ReceiveSend OnlySets the maximum number of CPU cores for daemon to use. This value will be used only if "start daemon in background" option is checked on "Interface" page.Sh_utdown DaemonShare With _DevicesShare _FoldersShared WithShort identifier for the folder. Must be the same on all devices.Show WindowShow _IDShown instead of Device ID in the cluster status.Shutdown Syncthing daemon as well?SimpleSorry, connecting to HTTPS is not supported on this platform. Please, use WebUI to disable HTTPS try again.Space-separated list of arguments and environment variables passed when starting above binary Use VARIABLE="value" to set variable and -argument="value" (with dash) for argument. If you need to pass commandline to different command (such as logger or ionice), separate prefixed arguments with exclamation mark "!" Example: STTRACE="all" logger -t /var/log/syncthing.log ! -logflags=10StaggeredStart Syncthing-GTK when I login to my desktopStart it now?Starting Syncthing daemonStoppedSync Protocol Listen AddressesSynchronizationSynchronization of folder '%s' is completed.Synchronizing %s foldersSynchronizing '%s'SyncingSyncthingSyncthing Daemon SettingsSyncthing binarySyncthing binary locationSyncthing can be managed remotely using WebUI and even if you are going to use Syncthing-GTK, WebUI needs to be enabled, as Syncthing-GTK uses it to communicate with the Syncthing daemon.Syncthing daemon binary cannot be found.Syncthing daemon binary found.Syncthing daemon doesn't appear to be running.Syncthing daemon failed to generate RSA key or certificate.Syncthing daemon is too old.Syncthing daemon not found.Syncthing has been shut down.Syncthing has been successfully configured.Syncthing is generating RSA key and certificate.Syncthing is probably restarting or has been shut down.Syncthing is restarting.Syncthing-GTKSyncthing-GTK SettingsSyncthing-GTK needs Syncthing daemon %(min)s or newer, but only %(actual)s were found.Syncthing-GTK started and running in notification areaSyncthing-Inotify OutputSyncthing-Inotify is unavailable or failed to startThe aggregated statistics are publicly available atThe configuration has been saved but not activated. Syncthing must restart to activate the new configuration.The encrypted usage report is sent daily.The entered device ID does not look valid. It should be a 52 character string consisting of letters and numbers, with spaces and dashes being optional.The first command line parameter is the folder path and the second parameter is the relative path in the folder.The number of days to keep files in the trash can.The number of old versions to keep, per file.This binary will be started when syncthing daemon is not running and "start daemon in background" option is checked on "Interface" page.This may take a while...This platform (%s) is not supportedTrashcanTry again.UI SettingsUI _SettingsUnexpected folder ID sent from device "%s".UnlimitedUnsharedUnusedUp to DateUpload RateUs_e traditional window headerUse _icons in menuVersionVersion:Versioning _ModeVersions _PathWaiting for Syncthing daemon at %s...WebUI Listen AddressesWebUI setupWelcome to Syncthing-GTK first run wizard!When exiting after daemon was started in background...When starting and Syncthing daemon is not running...XYZ-123-ABCYesYou can configure more details later, in UI Settings and Daemon Settings menus in main window of application.Your syncthing daemon is too old.Your syncthing daemon is too old. Please, upgrade syncthing package at least to version %s and try again._About_Add_Addresses_Advanced_Browse_Browse..._Compression_Download Syncthing binary_Download..._Folder Settings_Ignore_Incoming Rate Limit_Integration_Interface_Introducer_Keep Versions_Other_Outgoing Rate Limit_Password_Path_Quit_Rescan_Restart_Restart Daemon_Send Only Folder_Unlimited_Usernamedisableddownload latest binaryin %s daysin a momentjust nowlast resort and generally not suggested.never deleteno limitofflineto %s and keep it up-to-date, but this option is meant as~%s hours ago~%s hours from nowProject-Id-Version: syncthing-gtk Report-Msgid-Bugs-To: POT-Creation-Date: 2016-04-20 11:27+0200 PO-Revision-Date: 2017-09-23 01:19+0000 Last-Translator: kozec Language-Team: Spanish (http://www.transifex.com/syncthing-gtk/syncthing-gtk/language/es/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: es Plural-Forms: nplurals=2; plural=(n != 1); El %(device)s quiere compartir la carpeta "%(folder)s". ¿Añadir nueva carpeta?%(online)s/%(total)s online%s KiB/s%s día%s diashace %s dias%s kB/shace %s minutos%s minutos a partir de ahorahace %s segundos%s segundos a partir de ahora%s%%%ss(observar)..._pregúntame qué hacer...esperar al daemon...pregúntame _qué hacer... errores... actualizaciones de archivo...dejar el daemon _ejecutando... arrancar daemon en _background... sincronización completa...terminar _daemonNota: Puede que tengas que reiniciar el gestor de archivos después de cambiar la integración.Aviso: Si cambias configuraciones en esta página puedes dejar sin andar Syncthing-GTKAcerca de Encima de lo normalAñadir _Carpeta CompartidaAñadir _DispositivoDirecciónTodos los datosTodos los dispositivos están offline¿Permitir el envío anónimo de uso?Como alternativa, Syncthing-GTK puede descargar el binario de SyncthingSiempre haz lo mismo; No muestres esta ventana de nuevoSiempre arrancar el daemon automáticamenteUn comando externo para gestionar las versiones. Debe mover el archivo de la carpeta sincronizada.Servidor de presentaciónCualquier dispositivo configurado en un introductor será añadido a este dispositivo también.Intentando bajar más reciente, espera por favor...Actualización_automática ha descargdo el binarioUbicación del binario:Navega hasta el binario de SyncthingNavegar...Uso de CPUCaja (Escritorio MATE)No se puede invocar el daemonNo se puede autorizar con el daemon. Por favor, usa el WebUI para generar una llave API o deshabilitar la autenticación por contraseña.No se puede descargar el daemon de Syncthing.Comprobando puerto disponible...Vaciar _después deCluster no sincronizadoComandoCompresiónConectadoConectado al daemon de SyncthingConectando con el daemon de Syncthing en %s...Conectando al daemon de Syncthing...Conectando al daemon...Se ha perdido la conexión con el daemon de Syncthing.No se ha podido conectar con el daemon. Comprueba tu configuración y prueba de nuevo.DaemonSalida del Daemon_Configuración de DeamonParámetros y variables del DaemonPrioridad del proceso de daemonEl dispositivo "%s" está intentando conectar con el daemon de Syncthing.El dispositivo "%(name)s" (%(device)s) con el IP "%(ip)s" quiere conectar. ¿Añadir nuevo dispositivo?Identificación del Dispositivo_ID de dispositivo_Nombre de DispositivoDesconectadoMostrar el output de Syncthing-InotifyMostrar el output del _DaemonMostrar notificaciones de escritorio para...Mostrar el log de erroresMostrar ubicaciones en el panel de directorios¿De verdad quieres sacar el dispositivo '%s' de Syncthing?¿De verdad quieres dejar de sincronizar el directorio '%s' de manera permanente?Hecho.Ratio de bajadaNo se pudo descargar.Descarga terminada.El archivo descargado está corrupto.Descargando Syncthing %sDescargando el daemon de Syncthing.Descargando...Editar patrones _IgnorarHabilitar _Detección localHabilitar Informes _Anónimos de UsoHabilitar Detección _GlobalHabilitar _UPnPIntroduce, separado por comas, "ip:port" dirección o "dynamic" para llevar a cabo la detección de la dirección.ErrorMensaje de error:Apagando.ExternoDesempaquetando la actualización...No se pudo crear archivo temporal.No se pudo determinar la última versión de Syncthing.No se pudo descargar el paquete del daemon de Syncthing.No se ha podido descargar la actualización: %sNo se pudo encontrar un puerto libre para escuchar.No se pudo generar las clavesNo se pudo cargar la configuración de SyncthingNo se pudo cargar la configuración desde el daemon.No se pudo modificar la configuración de SyncthingNo se pudo guardar la configuración de SyncthingNo se pudo guardar la configuración.No se pudo arrancar el daemon de Syncthing_Orden de Toma de Archivos_Versiones de ArchivoUbicación de archivo:Ubicación de Archivo:Se ignoran los bits de permisos del archivo mientras busca para cambios. Usa para sistemas de ficheros FATArchivosCuando los archivos son reemplazados o borrados de Syncthing, se mueven a la carpeta .stversions.Cuando los archivos son reemplazados o borrados, se mueven a la carpeta .stversions con su marca-de-tiempo.Cuando los archivos son reemplazados o borrados de Syncthing, se mueven a la carpeta .stversions con marca-de-tiempo. Luego se borran automáticamente si las versiones son más viejas que la edad máxima o son más que el número de archivos permitidos. Se emplean los siguientes intervalos: para la primer hora se guarda una versión cada 30 segundos, para el primer día se guarda una versión cada hora, para los primeros 30 días se guarda una versión cada día, hasta que haya una una versión de edad máxima cada semana.Se protegen archivos de los cambios hechos en otros dispositivos, pero los cambios hechos en este dispositivo se enviarán al resto del cluster.Asistente de la primera ejecución.ID de carpetaTipo de Carpeta_ID de Carpeta_Etiqueta de CarpetaForzar tema _oscuroIcono de la GUI GTK y el área de notificación para GitHub_Servidores de Detección GlobalEstado GlobalOcultar ventanaSi está habilitado, Syncthing-GTK comprobará automáticamente nuevas versiones del daemon y reemplazará el binario con la nueva versión.Si está habilitado, los archivos creados y borrados se sincronizan inmediatamente mientras Syncthing-GTK se ejecuta. Aviso: Esta opción acompañada con un Intervalo corto de re-escaneo (<300s) puede consumir muchos recursos.Si se cambia el contenido del informe, este cuadro de diálogo se abrirá de nuevo.Si ya tenías configurado el daemon de Syncthing, sal de este asistente y comprueba la carpeta %sSi has instalado Syncthing, por favor, define la ubicación como %s abajoSi has instalado Syncthing, por favor, indica la ubicación como %s abajo o haz click en botón Bajar para bajar la versión más reciente del Syncthing.Si prefieres poder gestionar Syncthing remotamente por internet o en tu red local, selecciona escucha en todas las interfaces y establece un nombre de usuario y contraseña para protegerte de accesos no autorizados.Ignorar _PermisosIgnorar PatronesIgnorar PermisosAlfabéticoMás grande primeroMás nuevo primeroMás viejo primeroAl azarMás pequeño primeroSe debe crear la configuración inicial.Instala el paquete %(package)s para habilitar el suporte para %(feature)sIntegrar Syncthing con los gestores de archivosIntroductorSe usa para monitorizar plataformas comunes, tamaños de carpetas y versiones de la aplicación.Parece que aun nos has usado Syncthing.Mantener el binario de Syncthing actualizadoVisto por última vezEscucha en _todas las interfacesEscucha en _localhost_Puerto de Detección LocalEstado LocalBajoMás bajoEdad Má_ximaNúmero máximo de cores del CPUSolo MetadatosMinimizar al _bandeja de sistema al arrancarEspacio mínimo libre de discoMonitorizar los _cambios en el sistema de archivosMás informaciónNautilus (Ubuntu/GNOME)Nemo (Escritorio Cinnamon)NuncaNoNormalApagadoOfflineOnlineAbrir la _Interfaz WebAbrir navegador con _WebUI cuando se inicia el daemonEtiqueta descriptiva de la carpeta. Opcional. Puede se distinto en cada dispositivo.Sino, selecciona escucha en localhost, para que solo usuarios y programas en este ordenador puedan interactuar con Syncthing.Des-sincronizadoLímite del Ratio de _SubidaSobrescribir cambios remotosCaminoUbicación de la carpeta en el ordenador local. Se creará si no existe.Ubicación donde se deben guardar las versiones (déjalo vacío para el valor de omisión .stversions).En pausaEspera por favor.Por favor, espera...Por favor, comprueba el log de errores y completa un reporte de error en %s.Por favor, comprueba tu configuración de cortafuegos y prueba de nuevo.Por favor, comprueba tu instalación o define un nuevo camino al binario del daemon de Syncthing.Por favor, instala el paquete pyinotify para usar esta funcionalidadPor favor, reinicia Syncthing-GTK para aplicar todos los cambiosPor favor, usa el gestor de paquetes para instalar el paquete Syncthing o %(download_link)s desde la página de Syncthing y guárdalo en tu directorio %(target)s.Por favor, usa el gestor de paquetes para instalar el paquete Syncthing.Solo se usará Prioridad si se ha seleccionada la opción "ejecutar daemon en background" en la página "Interfaz".Uso de RAMIntervalo de re-escaneo_Intervalo del re-escaneoReiniciando daemon...Reanudar_Reanudar Syncthing_Detener SyncthingGuardando configuración...Guardando...Escaneando Buscando el daemon de Syncthing.Véanse la documentación de Syncthing para una lista de patrones soportadosSeleccionar Carpeta para nueva CarpetaSeleccionar dispositivos para compartir esta carpeta.Seleccionar las carpetas para compartir con este dispositivoEnviar y RecibirSolo EnviarDefine el número máximo de cores de CPU que utilizará el daemon. Este valor será usado, solo si se ha seleccionada la opción "ejecutar daemon en background" en la página "Interfaz".A_pagar DeamonCompartido Con _Dispositivos_Compartir CarpetasCompartido conIdentificador corto para carpeta. Debe ser el mismo en todos los dispositivos.Mostrar ventanaMostrar _IDMostrado en vez de ID de dispositivo en el estatus del cluster.¿Detener también el daemon de Syncthing?SimpleLo siento, la conexión por HTTPS no está soportado en este plataforma. Por favor, usa la WebUI para deshabilitar HTTPS y prueba de nuevo.Lista de parámetros i environment variables empleados cuando se ejecute el binario definido arriba Usa VARIABLE="value" para definir un variable i -argument="value" (con guión) para el parámetro. Si necesitas pasar commandline a otro comando (como podría se logger o ionice), separa parámetros con una exclamación "!" Ejemplo: STTRACE="all" logger -t /var/log/syncthing.log ! -logflags=10IntercaladoEjecutar Syncthing-GTK en el inicio de sesión¿Arráncalo ahora?Arrancando el daemon SyncthingDetenidoDirección de escucha del protocolo SyncSincronizaciónSe ha completado la sincronización de la carpeta '%s'Sincronizando %s carpetasSincronizando '%s'Sincronizando SyncthingConfiguración del Daemon de SyncthingBinario de SyncthingUbicación del binario SyncthingSe puede gestionar Syncthing remotamente usando el WebUI incluso si estás usando Syncthing-GTK. WebUI tiene que estar habilitado porque Syncthing-GTK lo usa para comunicarse con el daemon de Syncthing.Se se puede encontrar el binario del daemon de Syncthing.No se pudo encontrar el binario de SyncthingEl daemon de Syncthing no parece estar en ejecución.Syncthing no pudo generar la clave o el certificado RSA.El daemon de Syncthing es demasiado viejo.No se pudo encontrar el daemon de Syncthing.Se ha cerrado Syncthing.Se ha configurado Syncthing correctamente.Syncthing está generando la clave y el certificado RSA.Probablemente se está reiniciando o se ha cerrado Syncthing.Syncthing se está reiniciando.Syncthing-GTKConfiguración Syncthing-GTKSyncthing-GTK necesita la versión %(min)s del daemon de Syncthing o superior, pero solo se encontró %(actual)sSyncthing-GTK arrancado y ejecutando en la zona de notificacionesOuput de Syncthing-InotifySyncthing-Inotify no está disponible o no pudo arrancarLas estadísticas agregadas están disponibles enSe ha guardado la configuración pero no se ha activado. Syncthing debe reiniciarse para activar la nueva configuración.Informe encriptado de uso se envía diariamente,El ID de dispositivo presentado no parece ser válido. Debe ser una cadena de 52 caracteres de letras y números, espacios y guiones son opcionales.El primer parámetro del comando es la ubicación de la carpeta y el segundo es la ubicación relativa en la carpeta.El número de días para mantener archivos en la papelera.Mantener este número de versiones, por archivo.Este binario se iniciará cuando el daemon de Syncthing no esté corriendo y la opción "ejecutar daemon en background" esté habilitada en la página "Interfaz".Esto puede tardar un poco...Esta plataforma (%s) no está soportadaPapeleraIntenta de nuevo.Configuración del UI_Configuración del UISe ha enviado un ID inesperado desde el equipo "%s".Sin limiteNo compartidaSin utilizarActualizadoRatio de subidaUsar el en_cabezado tradicional de ventanaUsa _iconos en el menúVersiónVersión:_Modo de versiones_Ubicación de VersionesEsperando el daemon de Syncthing en %s...Dirección de escucha de WebUI Configurar WebUI¡Bienvenido al asistente de Syncthing-GTK!Cuando cierra después de que el daemon se ejecutó en el background...Cuando se arranca y Syncthing no está ejecutando...XYZ-123-ABCSíPuedes configurar más detalles en los menús de Configuración del UI y Configuración del Daemon en la ventana de la aplicación.Tu versión de Syncthing es demasiado vieja.Tu versión de Syncthing es demasiado vieja. Por favor, actualiza Syncthing como mínimo a la versión %s e intenta de nuevo._Sobre_Añadir_Direcciones_Avanzado_Navegar_Navegar..._Compresión_Descarga el binario de Syncthing_Descargar..._Configuración de Carpeta_IgnorarLímite del ratio de _bajada_Integración_Interfaz_Introductor_Mantener Versiones_Otro_Límite del Ratio de Subida_Contraseña_UbicaciónS_alir_Re-escanear_Reiniciar_Reiniciar Daemon_Carpeta de Envío Solamente_Sin limite_Usuariodeshabilitadobaja el binario más recienteen %s diasen breveahora mismoúltimo recurso y generalmente no sugerido.no borrar nuncasin límiteofflinea %s y mantenlo actualizado, pero esta opción es solo pensada comohace ~%s horas~%s horas a partir de ahorasyncthing-gtk-0.9.4.4/locale/es/LC_MESSAGES/syncthing-gtk.po000066400000000000000000001313371352162771300232620ustar00rootroot00000000000000# Syncthing-GTK # Copyright (C) 2014-2015 Kozec and contributors # This file is distributed under the same license as the Syncthing-GTK package. # # Translators: # Lu Pa , 2017 msgid "" msgstr "" "Project-Id-Version: syncthing-gtk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-04-20 11:27+0200\n" "PO-Revision-Date: 2017-09-23 01:19+0000\n" "Last-Translator: kozec \n" "Language-Team: Spanish (http://www.transifex.com/syncthing-gtk/syncthing-gtk/language/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: syncthing_gtk/app.py:194 msgid "Syncthing-GTK started and running in notification area" msgstr "Syncthing-GTK arrancado y ejecutando en la zona de notificaciones" #: syncthing_gtk/app.py:288 #, python-format msgid "%s kB/s" msgstr "%s kB/s" #: syncthing_gtk/app.py:302 syncthing_gtk/notifications.py:77 #: syncthing_gtk/wizard.py:53 msgid "Syncthing-GTK" msgstr "Syncthing-GTK" #: syncthing_gtk/app.py:363 syncthing_gtk/app.py:364 syncthing_gtk/app.py:942 msgid "Syncing" msgstr "Sincronizando " #: syncthing_gtk/app.py:366 syncthing_gtk/app.py:367 msgid "Scanning" msgstr "Escaneando " #: syncthing_gtk/app.py:390 syncthing_gtk/app.py:652 msgid "Starting Syncthing daemon" msgstr "Arrancando el daemon Syncthing" #: syncthing_gtk/app.py:424 msgid "Allow Anonymous Usage Reporting?" msgstr "¿Permitir el envío anónimo de uso?" #: syncthing_gtk/app.py:426 msgid "The encrypted usage report is sent daily." msgstr "Informe encriptado de uso se envía diariamente," #: syncthing_gtk/app.py:427 msgid "It is used to track common platforms, folder sizes and app versions." msgstr "Se usa para monitorizar plataformas comunes, tamaños de carpetas y versiones de la aplicación." #: syncthing_gtk/app.py:428 msgid "" "If the reported data set is changed you will be prompted with this dialog " "again." msgstr "Si se cambia el contenido del informe, este cuadro de diálogo se abrirá de nuevo." #: syncthing_gtk/app.py:430 msgid "The aggregated statistics are publicly available at" msgstr "Las estadísticas agregadas están disponibles en" #: syncthing_gtk/app.py:486 msgid "Extracting update..." msgstr "Desempaquetando la actualización..." #: syncthing_gtk/app.py:491 msgid "Restarting daemon..." msgstr "Reiniciando daemon..." #: syncthing_gtk/app.py:507 #, python-format msgid "Failed to download upgrade: %s" msgstr "No se ha podido descargar la actualización: %s" #: syncthing_gtk/app.py:525 #, python-format msgid "Downloading Syncthing %s" msgstr "Descargando Syncthing %s" #: syncthing_gtk/app.py:604 msgid "Connected to Syncthing daemon" msgstr "Conectado al daemon de Syncthing" #: syncthing_gtk/app.py:614 msgid "Connection to Syncthing daemon lost." msgstr "Se ha perdido la conexión con el daemon de Syncthing." #: syncthing_gtk/app.py:615 msgid "Syncthing is probably restarting or has been shut down." msgstr "Probablemente se está reiniciando o se ha cerrado Syncthing." #: syncthing_gtk/app.py:617 msgid "Syncthing has been shut down." msgstr "Se ha cerrado Syncthing." #: syncthing_gtk/app.py:621 syncthing_gtk/app.py:1499 msgid "Syncthing is restarting." msgstr "Syncthing se está reiniciando." #: syncthing_gtk/app.py:621 syncthing_gtk/app.py:1499 msgid "Please wait" msgstr "Espera por favor." #: syncthing_gtk/app.py:644 #, python-format msgid "Connecting to Syncthing daemon at %s..." msgstr "Conectando con el daemon de Syncthing en %s..." #: syncthing_gtk/app.py:649 #, python-format msgid "Waiting for Syncthing daemon at %s..." msgstr "Esperando el daemon de Syncthing en %s..." #: syncthing_gtk/app.py:664 msgid "Your syncthing daemon is too old." msgstr "Tu versión de Syncthing es demasiado vieja." #: syncthing_gtk/app.py:664 msgid "Attempting to download recent, please wait..." msgstr "Intentando bajar más reciente, espera por favor..." #: syncthing_gtk/app.py:670 msgid "" "Cannot authorize with daemon. Please, use WebUI to generate API key or " "disable password authentication." msgstr "No se puede autorizar con el daemon. Por favor, usa el WebUI para generar una llave API o deshabilitar la autenticación por contraseña." #: syncthing_gtk/app.py:672 #, python-format msgid "" "Your syncthing daemon is too old.\n" "Please, upgrade syncthing package at least to version %s and try again." msgstr "Tu versión de Syncthing es demasiado vieja.\nPor favor, actualiza Syncthing como mínimo a la versión %s e intenta de nuevo." #: syncthing_gtk/app.py:674 msgid "" "Sorry, connecting to HTTPS is not supported on this platform.\n" "Please, use WebUI to disable HTTPS try again." msgstr "Lo siento, la conexión por HTTPS no está soportado en este plataforma.\nPor favor, usa la WebUI para deshabilitar HTTPS y prueba de nuevo." #: syncthing_gtk/app.py:677 msgid "Connection to daemon failed. Check your configuration and try again." msgstr "No se ha podido conectar con el daemon. Comprueba tu configuración y prueba de nuevo." #: syncthing_gtk/app.py:678 syncthing_gtk/app.py:1992 #: syncthing_gtk/editordialog.py:314 msgid "Error message:" msgstr "Mensaje de error:" #: syncthing_gtk/app.py:689 msgid "More info" msgstr "Más información" #: syncthing_gtk/app.py:715 msgid "" "The configuration has been saved but not activated.\n" "Syncthing must restart to activate the new configuration." msgstr "Se ha guardado la configuración pero no se ha activado.\nSyncthing debe reiniciarse para activar la nueva configuración." #: syncthing_gtk/app.py:717 msgid "_Restart" msgstr "_Reiniciar" #: syncthing_gtk/app.py:784 #, python-format msgid "%(device)s wants to share folder \"%(folder)s\". Add new folder?" msgstr "El %(device)s quiere compartir la carpeta \"%(folder)s\". ¿Añadir nueva carpeta?" #: syncthing_gtk/app.py:791 syncthing_gtk/app.py:813 msgid "_Add" msgstr "_Añadir" #: syncthing_gtk/app.py:806 #, python-format msgid "" "Device \"%(name)s\" (%(device)s) at IP \"%(ip)s\" wants to " "connect. Add new device?" msgstr "El dispositivo \"%(name)s\" (%(device)s) con el IP \"%(ip)s\" quiere conectar. ¿Añadir nuevo dispositivo?" #: syncthing_gtk/app.py:814 msgid "_Ignore" msgstr "_Ignorar" #: syncthing_gtk/app.py:832 msgid "RAM Utilization" msgstr "Uso de RAM" #: syncthing_gtk/app.py:833 msgid "CPU Utilization" msgstr "Uso de CPU" #: syncthing_gtk/app.py:834 syncthing_gtk/app.py:1353 msgid "Download Rate" msgstr "Ratio de bajada" #: syncthing_gtk/app.py:835 syncthing_gtk/app.py:1354 msgid "Upload Rate" msgstr "Ratio de subida" #: syncthing_gtk/app.py:836 msgid "Announce Server" msgstr "Servidor de presentación" #: syncthing_gtk/app.py:837 syncthing_gtk/app.py:1356 msgid "Version" msgstr "Versión" #: syncthing_gtk/app.py:860 syncthing_gtk/editordialog.py:394 msgid "disabled" msgstr "deshabilitado" #: syncthing_gtk/app.py:862 msgid "Online" msgstr "Online" #: syncthing_gtk/app.py:862 msgid "offline" msgstr "offline" #: syncthing_gtk/app.py:864 #, python-format msgid "%(online)s/%(total)s online" msgstr "%(online)s/%(total)s online" #: syncthing_gtk/app.py:891 syncthing_gtk/app.py:1357 #: syncthing_gtk/app.py:1382 msgid "Never" msgstr "Nunca" #: syncthing_gtk/app.py:899 syncthing_gtk/app.py:1691 #: syncthing_gtk/app.py:1692 msgid "Paused" msgstr "En pausa" #: syncthing_gtk/app.py:899 syncthing_gtk/app.py:924 syncthing_gtk/app.py:939 #: syncthing_gtk/infobox.py:60 msgid "Disconnected" msgstr "Desconectado" #: syncthing_gtk/app.py:916 msgid "Connected" msgstr "Conectado" #: syncthing_gtk/app.py:945 syncthing_gtk/app.py:980 syncthing_gtk/app.py:1030 #: syncthing_gtk/app.py:1031 syncthing_gtk/app.py:1070 msgid "Up to Date" msgstr "Actualizado" #: syncthing_gtk/app.py:966 syncthing_gtk/app.py:967 syncthing_gtk/app.py:968 msgid "Files" msgstr "Archivos" #: syncthing_gtk/app.py:980 syncthing_gtk/app.py:1068 msgid "Cluster out of sync" msgstr "Cluster no sincronizado" #: syncthing_gtk/app.py:995 msgid "Stopped" msgstr "Detenido" #: syncthing_gtk/app.py:998 syncthing_gtk/app.py:1005 msgid "Error" msgstr "Error" #: syncthing_gtk/app.py:1024 #, python-format msgid "Synchronizing '%s'" msgstr "Sincronizando '%s'" #: syncthing_gtk/app.py:1026 #, python-format msgid "Synchronizing %s folders" msgstr "Sincronizando %s carpetas" #: syncthing_gtk/app.py:1035 syncthing_gtk/app.py:1036 msgid "All devices offline" msgstr "Todos los dispositivos están offline" #: syncthing_gtk/app.py:1040 syncthing_gtk/app.py:1041 msgid "Connecting to Syncthing daemon..." msgstr "Conectando al daemon de Syncthing..." #: syncthing_gtk/app.py:1079 msgid "Unshared" msgstr "No compartida" #: syncthing_gtk/app.py:1082 msgid "Offline" msgstr "Offline" #: syncthing_gtk/app.py:1176 msgid "Hide Window" msgstr "Ocultar ventana" #: syncthing_gtk/app.py:1190 app.glade:651 msgid "Show Window" msgstr "Mostrar ventana" #: syncthing_gtk/app.py:1239 msgid "Syncthing daemon doesn't appear to be running." msgstr "El daemon de Syncthing no parece estar en ejecución." #: syncthing_gtk/app.py:1240 msgid "Start it now?" msgstr "¿Arráncalo ahora?" #: syncthing_gtk/app.py:1243 msgid "Always start daemon automatically" msgstr "Siempre arrancar el daemon automáticamente" #: syncthing_gtk/app.py:1292 msgid "Folder ID" msgstr "ID de carpeta" #: syncthing_gtk/app.py:1293 msgid "Path" msgstr "Camino" #: syncthing_gtk/app.py:1294 msgid "Global State" msgstr "Estado Global" #: syncthing_gtk/app.py:1295 msgid "Local State" msgstr "Estado Local" #: syncthing_gtk/app.py:1296 msgid "Out Of Sync" msgstr "Des-sincronizado" #: syncthing_gtk/app.py:1297 msgid "Folder Type" msgstr "Tipo de Carpeta" #: syncthing_gtk/app.py:1298 msgid "Ignore Permissions" msgstr "Ignorar Permisos" #: syncthing_gtk/app.py:1299 msgid "Rescan Interval" msgstr "Intervalo de re-escaneo" #: syncthing_gtk/app.py:1300 msgid "Shared With" msgstr "Compartido con" #: syncthing_gtk/app.py:1324 syncthing_gtk/app.py:1325 #: syncthing_gtk/app.py:1381 msgid "Yes" msgstr "Sí" #: syncthing_gtk/app.py:1324 syncthing_gtk/app.py:1325 #: syncthing_gtk/app.py:1381 msgid "No" msgstr "No" #: syncthing_gtk/app.py:1327 msgid "(watch)" msgstr "(observar)" #: syncthing_gtk/app.py:1341 msgid "Unused" msgstr "Sin utilizar" #: syncthing_gtk/app.py:1350 msgid "Address" msgstr "Dirección" #: syncthing_gtk/app.py:1351 msgid "Synchronization" msgstr "Sincronización" #: syncthing_gtk/app.py:1352 msgid "Compression" msgstr "Compresión" #: syncthing_gtk/app.py:1355 msgid "Introducer" msgstr "Introductor" #: syncthing_gtk/app.py:1357 msgid "Last Seen" msgstr "Visto por última vez" #: syncthing_gtk/app.py:1378 device-edit.glade:22 msgid "All Data" msgstr "Todos los datos" #: syncthing_gtk/app.py:1379 device-edit.glade:26 folder-edit.glade:78 msgid "Off" msgstr "Apagado" #: syncthing_gtk/app.py:1375 msgid "Send Only" msgstr "Solo Enviar" #: syncthing_gtk/app.py:1375 msgid "Send & Receive" msgstr "Enviar y Recibir" #: syncthing_gtk/app.py:1380 device-edit.glade:30 msgid "Metadata Only" msgstr "Solo Metadatos" #: syncthing_gtk/app.py:1522 msgid "Exiting." msgstr "Apagando." #: syncthing_gtk/app.py:1523 msgid "Shutdown Syncthing daemon as well?" msgstr "¿Detener también el daemon de Syncthing?" #: syncthing_gtk/app.py:1528 msgid "Always do same; Don't show this window again" msgstr "Siempre haz lo mismo; No muestres esta ventana de nuevo" #: syncthing_gtk/app.py:1768 #, python-format msgid "Do you really want to permanently stop synchronizing directory '%s'?" msgstr "¿De verdad quieres dejar de sincronizar el directorio '%s' de manera permanente?" #: syncthing_gtk/app.py:1770 #, python-format msgid "Do you really want remove device '%s' from Syncthing?" msgstr "¿De verdad quieres sacar el dispositivo '%s' de Syncthing?" #: syncthing_gtk/app.py:1838 msgid "Syncthing-Inotify Output" msgstr "Ouput de Syncthing-Inotify" #: syncthing_gtk/app.py:1844 msgid "Syncthing-Inotify is unavailable or failed to start" msgstr "Syncthing-Inotify no está disponible o no pudo arrancar" #: syncthing_gtk/app.py:1991 msgid "Failed to start Syncthing daemon." msgstr "No se pudo arrancar el daemon de Syncthing" #: syncthing_gtk/app.py:1993 msgid "" "Please, check your installation or set new path to Syncthing daemon binary." msgstr "Por favor, comprueba tu instalación o define un nuevo camino al binario del daemon de Syncthing." #: syncthing_gtk/daemonsettings.py:24 msgid "Syncthing Daemon Settings" msgstr "Configuración del Daemon de Syncthing" #: syncthing_gtk/deviceeditor.py:24 msgid "" "The entered device ID does not look valid. It should be a 52 character " "string consisting of letters and numbers, with spaces and dashes being " "optional." msgstr "El ID de dispositivo presentado no parece ser válido. Debe ser una cadena de 52 caracteres de letras y números, espacios y guiones son opcionales." #: syncthing_gtk/editordialog.py:312 msgid "Failed to load configuration from daemon." msgstr "No se pudo cargar la configuración desde el daemon." #: syncthing_gtk/editordialog.py:313 msgid "Try again." msgstr "Intenta de nuevo." #: syncthing_gtk/editordialog.py:387 syncthing_gtk/editordialog.py:396 #, python-format msgid "%ss" msgstr "%ss" #: syncthing_gtk/editordialog.py:402 #, python-format msgid "%s%%" msgstr "%s%%" #: syncthing_gtk/editordialog.py:409 msgid "no limit" msgstr "sin límite" #: syncthing_gtk/editordialog.py:411 #, python-format msgid "%s KiB/s" msgstr "%s KiB/s" #: syncthing_gtk/editordialog.py:418 msgid "never delete" msgstr "no borrar nunca" #: syncthing_gtk/editordialog.py:420 #, python-format msgid "%s day" msgstr "%s día" #: syncthing_gtk/editordialog.py:422 #, python-format msgid "%s days" msgstr "%s dias" #: syncthing_gtk/editordialog.py:455 msgid "Failed to save configuration." msgstr "No se pudo guardar la configuración." #: syncthing_gtk/finddaemondialog.py:24 find-daemon.glade:7 msgid "Can't invoke the daemon" msgstr "No se puede invocar el daemon" #: syncthing_gtk/finddaemondialog.py:26 msgid "Syncthing binary" msgstr "Binario de Syncthing" #: syncthing_gtk/finddaemondialog.py:28 syncthing_gtk/finddaemondialog.py:37 msgid "Syncthing daemon binary cannot be found." msgstr "Se se puede encontrar el binario del daemon de Syncthing." #: syncthing_gtk/finddaemondialog.py:29 #, python-format msgid "" "If you have Syncthing installed, please, set path to %s below or click on " "Download button to download latest Syncthing package." msgstr "Si has instalado Syncthing, por favor, indica la ubicación como %s abajo o haz click en botón Bajar para bajar la versión más reciente del Syncthing." #: syncthing_gtk/finddaemondialog.py:38 #, python-format msgid "If you have Syncthing installed, please, set path to %s below" msgstr "Si has instalado Syncthing, por favor, define la ubicación como %s abajo" #: syncthing_gtk/finddaemondialog.py:82 syncthing_gtk/wizard.py:411 msgid "Cannot download Syncthing daemon." msgstr "No se puede descargar el daemon de Syncthing." #: syncthing_gtk/finddaemondialog.py:83 syncthing_gtk/wizard.py:412 #, python-format msgid "This platform (%s) is not supported" msgstr "Esta plataforma (%s) no está soportada" #: syncthing_gtk/finddaemondialog.py:100 msgid "Downloading..." msgstr "Descargando..." #: syncthing_gtk/finddaemondialog.py:163 syncthing_gtk/stdownloader.py:251 #: syncthing_gtk/stdownloader.py:279 msgid "Download failed." msgstr "No se pudo descargar." #: syncthing_gtk/finddaemondialog.py:185 syncthing_gtk/wizard.py:458 msgid "Download finished." msgstr "Descarga terminada." #: syncthing_gtk/foldereditor.py:45 msgid "Select Folder for new Folder" msgstr "Seleccionar Carpeta para nueva Carpeta" #: syncthing_gtk/foldereditor.py:166 syncthing_gtk/foldereditor.py:167 msgid "Please, install pyinotify package to use this feature" msgstr "Por favor, instala el paquete pyinotify para usar esta funcionalidad" #: syncthing_gtk/ignoreeditor.py:44 msgid "File location:" msgstr "Ubicación de archivo:" #: syncthing_gtk/notifications.py:120 #, python-format msgid "Unexpected folder ID sent from device \"%s\"." msgstr "Se ha enviado un ID inesperado desde el equipo \"%s\"." #: syncthing_gtk/notifications.py:124 #, python-format msgid "Device \"%s\" is trying to connect to syncthing daemon." msgstr "El dispositivo \"%s\" está intentando conectar con el daemon de Syncthing." #: syncthing_gtk/notifications.py:153 #, python-format msgid "Synchronization of folder '%s' is completed." msgstr "Se ha completado la sincronización de la carpeta '%s'" #: syncthing_gtk/notifications.py:160 #, python-format msgid "%(hostname)s: Downloaded '%(filename)s' to reflect remote changes." msgstr "" #: syncthing_gtk/notifications.py:165 #, python-format msgid "%(hostname)s: Deleted '%(filename)s' to reflect remote changes." msgstr "" #: syncthing_gtk/notifications.py:168 #, python-format msgid "%(hostname)s: Downloaded %(updated)s files to reflect remote changes." msgstr "" #: syncthing_gtk/notifications.py:171 #, python-format msgid "%(hostname)s: Deleted %(deleted)s files to reflect remote changes." msgstr "" #: syncthing_gtk/notifications.py:175 #, python-format msgid "" "%(hostname)s: downloaded %(updated)s files and deleted %(deleted)s files to " "reflect remote changes." msgstr "" #: syncthing_gtk/statusicon.py:48 msgid "Syncthing" msgstr "Syncthing" #: syncthing_gtk/stdownloader.py:174 syncthing_gtk/stdownloader.py:217 #: syncthing_gtk/stdownloader.py:313 syncthing_gtk/stdownloader.py:344 msgid "Failed to determine latest Syncthing version." msgstr "No se pudo determinar la última versión de Syncthing." #: syncthing_gtk/stdownloader.py:236 msgid "Failed to create temporaly file." msgstr "No se pudo crear archivo temporal." #: syncthing_gtk/stdownloader.py:294 msgid "Downloaded file is corrupted." msgstr "El archivo descargado está corrupto." #: syncthing_gtk/tools.py:192 #, python-format msgid "~%s hours ago" msgstr "hace ~%s horas" #: syncthing_gtk/tools.py:194 #, python-format msgid "%s minutes ago" msgstr "hace %s minutos" #: syncthing_gtk/tools.py:196 #, python-format msgid "%s seconds ago" msgstr "hace %s segundos" #: syncthing_gtk/tools.py:197 msgid "just now" msgstr "ahora mismo" #: syncthing_gtk/tools.py:199 #, python-format msgid "%s days ago" msgstr "hace %s dias" #: syncthing_gtk/tools.py:203 #, python-format msgid "in %s days" msgstr "en %s dias" #: syncthing_gtk/tools.py:205 #, python-format msgid "~%s hours from now" msgstr "~%s horas a partir de ahora" #: syncthing_gtk/tools.py:207 #, python-format msgid "%s minutes from now" msgstr "%s minutos a partir de ahora" #: syncthing_gtk/tools.py:209 #, python-format msgid "%s seconds from now" msgstr "%s segundos a partir de ahora" #: syncthing_gtk/tools.py:210 msgid "in a moment" msgstr "en breve" #: syncthing_gtk/uisettingsdialog.py:58 msgid "UI Settings" msgstr "Configuración del UI" #: syncthing_gtk/uisettingsdialog.py:70 msgid "Unlimited" msgstr "Sin limite" #: syncthing_gtk/uisettingsdialog.py:107 #, python-format msgid "Install %(package)s package to enable %(feature)s support" msgstr "Instala el paquete %(package)s para habilitar el suporte para %(feature)s" #: syncthing_gtk/uisettingsdialog.py:312 msgid "Browse for Syncthing binary" msgstr "Navega hasta el binario de Syncthing" #: syncthing_gtk/wizard.py:53 msgid "First run wizard" msgstr "Asistente de la primera ejecución." #: syncthing_gtk/wizard.py:137 #, python-format msgid "Please, check error log and fill bug report on %s." msgstr "Por favor, comprueba el log de errores y completa un reporte de error en %s." #: syncthing_gtk/wizard.py:141 msgid "Display error log" msgstr "Mostrar el log de errores" #: syncthing_gtk/wizard.py:198 msgid "Welcome to Syncthing-GTK first run wizard!" msgstr "¡Bienvenido al asistente de Syncthing-GTK!" #: syncthing_gtk/wizard.py:200 msgid "It looks like you never have used Syncthing." msgstr "Parece que aun nos has usado Syncthing." #: syncthing_gtk/wizard.py:201 msgid "Initial configuration should be created." msgstr "Se debe crear la configuración inicial." #: syncthing_gtk/wizard.py:202 msgid "" "Continue this wizard to create a Syncthing configuration file or abort it to exit." msgstr "" #: syncthing_gtk/wizard.py:204 #, python-format msgid "" "If you already had Syncthing daemon configured, please, exit this wizard and" " check your %s folder" msgstr "Si ya tenías configurado el daemon de Syncthing, sal de este asistente y comprueba la carpeta %s" #: syncthing_gtk/wizard.py:220 msgid "Searching for Syncthing daemon." msgstr "Buscando el daemon de Syncthing." #: syncthing_gtk/wizard.py:222 syncthing_gtk/wizard.py:394 msgid "Please wait..." msgstr "Por favor, espera..." #: syncthing_gtk/wizard.py:270 syncthing_gtk/wizard.py:287 msgid "Syncthing daemon not found." msgstr "No se pudo encontrar el daemon de Syncthing." #: syncthing_gtk/wizard.py:271 msgid "Please, use package manager to install the Syncthing package." msgstr "Por favor, usa el gestor de paquetes para instalar el paquete Syncthing." #: syncthing_gtk/wizard.py:283 msgid "download latest binary" msgstr "baja el binario más reciente" #: syncthing_gtk/wizard.py:288 syncthing_gtk/wizard.py:302 #, python-format msgid "" "Please, use package manager to install the Syncthing package or " "%(download_link)s from Syncthing page and save it to your %(target)s " "directory." msgstr "Por favor, usa el gestor de paquetes para instalar el paquete Syncthing o %(download_link)s desde la página de Syncthing y guárdalo en tu directorio %(target)s." #: syncthing_gtk/wizard.py:296 msgid "Syncthing daemon is too old." msgstr "El daemon de Syncthing es demasiado viejo." #: syncthing_gtk/wizard.py:297 #, python-format msgid "" "Syncthing-GTK needs Syncthing daemon %(min)s or newer, but only %(actual)s " "were found." msgstr "Syncthing-GTK necesita la versión %(min)s del daemon de Syncthing o superior, pero solo se encontró %(actual)s" #: syncthing_gtk/wizard.py:309 msgid "Alternatively, Syncthing-GTK can download Syncthing binary" msgstr "Como alternativa, Syncthing-GTK puede descargar el binario de Syncthing" #: syncthing_gtk/wizard.py:310 #, python-format msgid "to %s and keep it up-to-date, but this option is meant as" msgstr "a %s y mantenlo actualizado, pero esta opción es solo pensada como" #: syncthing_gtk/wizard.py:312 msgid "last resort and generally not suggested." msgstr "último recurso y generalmente no sugerido." #: syncthing_gtk/wizard.py:315 msgid "_Download Syncthing binary" msgstr "_Descarga el binario de Syncthing" #: syncthing_gtk/wizard.py:319 msgid "Auto_update downloaded binary" msgstr "Actualización_automática ha descargdo el binario" #: syncthing_gtk/wizard.py:375 msgid "Syncthing daemon binary found." msgstr "No se pudo encontrar el binario de Syncthing" #: syncthing_gtk/wizard.py:377 syncthing_gtk/wizard.py:460 msgid "Binary path:" msgstr "Ubicación del binario:" #: syncthing_gtk/wizard.py:378 msgid "Version:" msgstr "Versión:" #: syncthing_gtk/wizard.py:393 msgid "Downloading Syncthing daemon." msgstr "Descargando el daemon de Syncthing." #: syncthing_gtk/wizard.py:441 msgid "Failed to download Syncthing daemon package." msgstr "No se pudo descargar el paquete del daemon de Syncthing." #: syncthing_gtk/wizard.py:472 msgid "Syncthing is generating RSA key and certificate." msgstr "Syncthing está generando la clave y el certificado RSA." #: syncthing_gtk/wizard.py:473 msgid "This may take a while..." msgstr "Esto puede tardar un poco..." #: syncthing_gtk/wizard.py:515 msgid "Failed to generate keys" msgstr "No se pudo generar las claves" #: syncthing_gtk/wizard.py:516 msgid "Syncthing daemon failed to generate RSA key or certificate." msgstr "Syncthing no pudo generar la clave o el certificado RSA." #: syncthing_gtk/wizard.py:526 msgid "WebUI setup" msgstr "Configurar WebUI" #: syncthing_gtk/wizard.py:528 msgid "" "Syncthing can be managed remotely using WebUI and even if you are going to " "use Syncthing-GTK, WebUI needs to be enabled, as Syncthing-GTK uses it to " "communicate with the Syncthing daemon." msgstr "Se puede gestionar Syncthing remotamente usando el WebUI incluso si estás usando Syncthing-GTK. WebUI tiene que estar habilitado porque Syncthing-GTK lo usa para comunicarse con el daemon de Syncthing." #: syncthing_gtk/wizard.py:533 msgid "" "If you prefer to be able to manage Syncthing remotely, over the internet or " "on your local network, select listen on all interfaces and set " "username and password to protect Syncthing from unauthorized access." msgstr "Si prefieres poder gestionar Syncthing remotamente por internet o en tu red local, selecciona escucha en todas las interfaces y establece un nombre de usuario y contraseña para protegerte de accesos no autorizados." #: syncthing_gtk/wizard.py:538 msgid "" "Otherwise, select listen on localhost, so only users and programs on " "this computer will be able to interact with Syncthing." msgstr "Sino, selecciona escucha en localhost, para que solo usuarios y programas en este ordenador puedan interactuar con Syncthing." #: syncthing_gtk/wizard.py:544 msgid "WebUI Listen Addresses" msgstr "Dirección de escucha de WebUI " #: syncthing_gtk/wizard.py:545 msgid "Listen on _localhost" msgstr "Escucha en _localhost" #: syncthing_gtk/wizard.py:547 msgid "Listen on _all interfaces" msgstr "Escucha en _todas las interfaces" #: syncthing_gtk/wizard.py:554 msgid "_Username" msgstr "_Usuario" #: syncthing_gtk/wizard.py:555 msgid "_Password" msgstr "_Contraseña" #: syncthing_gtk/wizard.py:609 msgid "Saving settings..." msgstr "Guardando configuración..." #: syncthing_gtk/wizard.py:610 msgid "Checking for available port..." msgstr "Comprobando puerto disponible..." #: syncthing_gtk/wizard.py:631 msgid "Failed to find unused port for listening." msgstr "No se pudo encontrar un puerto libre para escuchar." #: syncthing_gtk/wizard.py:632 msgid "Please, check your firewall settings and try again." msgstr "Por favor, comprueba tu configuración de cortafuegos y prueba de nuevo." #: syncthing_gtk/wizard.py:646 msgid "Saving..." msgstr "Guardando..." #: syncthing_gtk/wizard.py:678 msgid "Failed to load Syncthing configuration" msgstr "No se pudo cargar la configuración de Syncthing" #: syncthing_gtk/wizard.py:705 msgid "Failed to modify Syncthing configuration" msgstr "No se pudo modificar la configuración de Syncthing" #: syncthing_gtk/wizard.py:715 msgid "Failed to save Syncthing configuration" msgstr "No se pudo guardar la configuración de Syncthing" #: syncthing_gtk/wizard.py:729 msgid "Done." msgstr "Hecho." #: syncthing_gtk/wizard.py:731 msgid "Syncthing has been successfully configured." msgstr "Se ha configurado Syncthing correctamente." #: syncthing_gtk/wizard.py:733 msgid "" "You can configure more details later, in UI Settings and Daemon " "Settings menus in main window of application." msgstr "Puedes configurar más detalles en los menús de Configuración del UI y Configuración del Daemon en la ventana de la aplicación." #: about.glade:7 msgid "About Syncthing-GTK" msgstr "Acerca de " #: about.glade:10 msgid "GTK GUI and notification area icon for Syncthing" msgstr "Icono de la GUI GTK y el área de notificación para " #: about.glade:12 msgid "GitHub" msgstr "GitHub" #: app.glade:239 app.glade:420 app.glade:802 msgid "Open _Web Interface" msgstr "Abrir la _Interfaz Web" #: app.glade:251 app.glade:424 app.glade:814 msgid "Display _Daemon Output" msgstr "Mostrar el output del _Daemon" #: app.glade:263 msgid "Display Syncthing-Inotify Output" msgstr "Mostrar el output de Syncthing-Inotify" #: app.glade:280 app.glade:430 msgid "UI _Settings" msgstr "_Configuración del UI" #: app.glade:325 app.glade:451 msgid "Add Shared _Folder" msgstr "Añadir _Carpeta Compartida" #: app.glade:338 app.glade:455 msgid "Add _Device" msgstr "Añadir _Dispositivo" #: app.glade:356 app.glade:461 msgid "Daemon _Settings" msgstr "_Configuración de Deamon" #: app.glade:371 app.glade:465 app.glade:588 app.glade:788 msgid "Show _ID" msgstr "Mostrar _ID" #: app.glade:391 app.glade:471 msgid "Sh_utdown Daemon" msgstr "A_pagar Deamon" #: app.glade:404 app.glade:475 msgid "_Restart Daemon" msgstr "_Reiniciar Daemon" #: app.glade:436 msgid "_About" msgstr "_Sobre" #: app.glade:440 msgid "_Quit" msgstr "S_alir" #: app.glade:490 msgid "Override Remote Changes" msgstr "Sobrescribir cambios remotos" #: app.glade:519 msgid "Edit _Ignore Patterns" msgstr "Editar patrones _Ignorar" #: app.glade:547 msgid "_Rescan" msgstr "_Re-escanear" #: app.glade:559 msgid "_Browse" msgstr "_Navegar" #: app.glade:611 msgid "Resume" msgstr "Reanudar" #: app.glade:641 msgid "Connecting to daemon..." msgstr "Conectando al daemon..." #: app.glade:669 msgid "S_top Syncthing" msgstr "_Detener Syncthing" #: app.glade:683 msgid "Resume Sync_thing" msgstr "_Reanudar Syncthing" #: app.glade:695 daemon-settings.glade:335 msgid "_Incoming Rate Limit" msgstr "Límite del ratio de _bajada" #: app.glade:709 app.glade:751 msgid "_Unlimited" msgstr "_Sin limite" #: app.glade:718 app.glade:760 msgid "_Other" msgstr "_Otro" #: app.glade:737 msgid "_Outgoing Rate Limit" msgstr "_Límite del Ratio de Subida" #: daemon-output.glade:7 msgid "Daemon Output" msgstr "Salida del Daemon" #: daemon-settings.glade:106 msgid "Sync Protocol Listen Addresses" msgstr "Dirección de escucha del protocolo Sync" #: daemon-settings.glade:136 msgid "Enable Local _Discovery" msgstr "Habilitar _Detección local" #: daemon-settings.glade:153 msgid "Enable _UPnP" msgstr "Habilitar _UPnP" #: daemon-settings.glade:171 msgid "Local Discovery _Port" msgstr "_Puerto de Detección Local" #: daemon-settings.glade:212 msgid "Outgoing _Rate Limit" msgstr "Límite del Ratio de _Subida" #: daemon-settings.glade:229 msgid "Open browser with _WebUI when daemon is starting" msgstr "Abrir navegador con _WebUI cuando se inicia el daemon" #: daemon-settings.glade:246 msgid "Enable _Anonymous Usage Reporting" msgstr "Habilitar Informes _Anónimos de Uso" #: daemon-settings.glade:262 msgid "Enable _Global Discovery" msgstr "Habilitar Detección _Global" #: daemon-settings.glade:281 msgid "Global Discovery _Servers" msgstr "_Servidores de Detección Global" #: device-edit.glade:102 msgid "Device _ID" msgstr "_ID de dispositivo" #: device-edit.glade:134 msgid "Device _Name" msgstr "_Nombre de Dispositivo" #: device-edit.glade:166 msgid "Shown instead of Device ID in the cluster status." msgstr "Mostrado en vez de ID de dispositivo en el estatus del cluster." #: device-edit.glade:181 msgid "_Addresses" msgstr "_Direcciones" #: device-edit.glade:213 msgid "" "Enter comma separated \"ip:port\" addresses or \"dynamic\" to perform " "automatic discovery of the address." msgstr "Introduce, separado por comas, \"ip:port\" dirección o \"dynamic\" para llevar a cabo la detección de la dirección." #: device-edit.glade:242 msgid "Share _Folders" msgstr "_Compartir Carpetas" #: device-edit.glade:276 msgid "Select the folders to share with this device" msgstr "Seleccionar las carpetas para compartir con este dispositivo" #: device-edit.glade:287 msgid "_Introducer" msgstr "_Introductor" #: device-edit.glade:308 msgid "" "Any devices configured on an introducer device will be added to this device " "as well." msgstr "Cualquier dispositivo configurado en un introductor será añadido a este dispositivo también." #: device-edit.glade:323 msgid "_Compression" msgstr "_Compresión" #: device-id.glade:14 msgid "Device Identification" msgstr "Identificación del Dispositivo" #: device-id.glade:68 msgid "XYZ-123-ABC" msgstr "XYZ-123-ABC" #: find-daemon.glade:126 ui-settings.glade:821 msgid "_Browse..." msgstr "_Navegar..." #: find-daemon.glade:179 msgid "_Download..." msgstr "_Descargar..." #: folder-edit.glade:44 msgctxt "In File Pull Order combobox" msgid "Random" msgstr "Al azar" #: folder-edit.glade:48 msgctxt "In File Pull Order combobox" msgid "Alphabetic" msgstr "Alfabético" #: folder-edit.glade:52 msgctxt "In File Pull Order combobox" msgid "Smallest First" msgstr "Más pequeño primero" #: folder-edit.glade:56 msgctxt "In File Pull Order combobox" msgid "Largest First" msgstr "Más grande primero" #: folder-edit.glade:60 msgctxt "In File Pull Order combobox" msgid "Oldest First" msgstr "Más viejo primero" #: folder-edit.glade:64 msgctxt "In File Pull Order combobox" msgid "Newest First" msgstr "Más nuevo primero" #: folder-edit.glade:82 msgid "Simple" msgstr "Simple" #: folder-edit.glade:86 msgid "Staggered" msgstr "Intercalado" #: folder-edit.glade:90 msgid "Trashcan" msgstr "Papelera" #: folder-edit.glade:94 msgid "External" msgstr "Externo" #: folder-edit.glade:171 msgid "Folder _Label" msgstr "_Etiqueta de Carpeta" #: folder-edit.glade:202 msgid "Short identifier for the folder. Must be the same on all devices." msgstr "Identificador corto para carpeta. Debe ser el mismo en todos los dispositivos." #: folder-edit.glade:216 msgid "_Path" msgstr "_Ubicación" #: folder-edit.glade:234 msgid "" "Path to the folder on the local computer. Will be created if it does not " "exist." msgstr "Ubicación de la carpeta en el ordenador local. Se creará si no existe." #: folder-edit.glade:248 msgid "Rescan _Interval" msgstr "_Intervalo del re-escaneo" #: folder-edit.glade:293 msgid "Monitor filesystem for _changes" msgstr "Monitorizar los _cambios en el sistema de archivos" #: folder-edit.glade:314 msgid "" "If enabled, changed, created and delete files are synchronized immediately, as long as Syncthing-GTK is running.\n" "Note: Using this along with short Rescan Interval (<300s) may consume a lot of resources." msgstr "Si está habilitado, los archivos creados y borrados se sincronizan inmediatamente mientras Syncthing-GTK se ejecuta.\nAviso: Esta opción acompañada con un Intervalo corto de re-escaneo (<300s) puede consumir muchos recursos." #: folder-edit.glade:343 msgid "Browse..." msgstr "Navegar..." #: folder-edit.glade:366 msgid "Folder _ID" msgstr "_ID de Carpeta" #: folder-edit.glade:396 msgid "" "Optional descriptive label for the folder. Can be different on each device." msgstr "Etiqueta descriptiva de la carpeta. Opcional. Puede se distinto en cada dispositivo." #: folder-edit.glade:418 msgid "_Send Only Folder" msgstr "_Carpeta de Envío Solamente" #: folder-edit.glade:439 msgid "" "Files are protected from changes made on other devices, but changes made on " "this device will be sent to the rest of the cluster." msgstr "Se protegen archivos de los cambios hechos en otros dispositivos, pero los cambios hechos en este dispositivo se enviarán al resto del cluster." #: folder-edit.glade:456 msgid "_Folder Settings" msgstr "_Configuración de Carpeta" #: folder-edit.glade:476 msgid "Select the devices to share this folder with." msgstr "Seleccionar dispositivos para compartir esta carpeta." #: folder-edit.glade:514 msgid "Share With _Devices" msgstr "Compartido Con _Dispositivos" #: folder-edit.glade:535 msgid "Versioning _Mode" msgstr "_Modo de versiones" #: folder-edit.glade:590 msgid "" "Files are moved to date stamped versions in a .stversions folder when " "replaced or deleted by syncthing." msgstr "Cuando los archivos son reemplazados o borrados, se mueven a la carpeta .stversions con su marca-de-tiempo." #: folder-edit.glade:605 msgid "_Keep Versions" msgstr "_Mantener Versiones" #: folder-edit.glade:642 msgid "The number of old versions to keep, per file." msgstr "Mantener este número de versiones, por archivo." #: folder-edit.glade:671 msgid "" "Files are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing. Versions are automatically deleted if they are older than the maximum age or exceed the number of files allowed in an interval.\n" "\n" "The following intervals are used: for the first hour a version is kept every 30 seconds, for the first day a version is kept every hour, for the first 30 days a version is kept every day, until the maximum age a version is kept every week." msgstr "Cuando los archivos son reemplazados o borrados de Syncthing, se mueven a la carpeta .stversions con marca-de-tiempo. Luego se borran automáticamente si las versiones son más viejas que la edad máxima o son más que el número de archivos permitidos.\n\nSe emplean los siguientes intervalos: para la primer hora se guarda una versión cada 30 segundos, para el primer día se guarda una versión cada hora, para los primeros 30 días se guarda una versión cada día, hasta que haya una una versión de edad máxima cada semana." #: folder-edit.glade:688 msgid "Ma_ximum Age" msgstr "Edad Má_xima" #: folder-edit.glade:727 msgid "Versions _Path" msgstr "_Ubicación de Versiones" #: folder-edit.glade:759 msgid "" "Path where versions should be stored (leave empty for the default " ".stversions folder)." msgstr "Ubicación donde se deben guardar las versiones (déjalo vacío para el valor de omisión .stversions)." #: folder-edit.glade:787 msgid "" "Files are moved to .stversions folder when replaced or deleted by Syncthing" msgstr "Cuando los archivos son reemplazados o borrados de Syncthing, se mueven a la carpeta .stversions." #: folder-edit.glade:801 msgid "Clean out _after" msgstr "Vaciar _después de" #: folder-edit.glade:840 msgid "The number of days to keep files in the trash can." msgstr "El número de días para mantener archivos en la papelera." #: folder-edit.glade:869 msgid "" "An external command handles the versioning. It has to remove the file from " "the synced folder." msgstr "Un comando externo para gestionar las versiones. Debe mover el archivo de la carpeta sincronizada." #: folder-edit.glade:884 msgid "Command" msgstr "Comando" #: folder-edit.glade:917 msgid "" "The first command line parameter is the folder path and the second parameter" " is the relative path in the folder." msgstr "El primer parámetro del comando es la ubicación de la carpeta y el segundo es la ubicación relativa en la carpeta." #: folder-edit.glade:953 msgid "File _Versioning" msgstr "_Versiones de Archivo" #: folder-edit.glade:982 msgid "Ignore P_ermissions" msgstr "Ignorar _Permisos" #: folder-edit.glade:1003 msgid "" "File permission bits are ignored when looking for changes. Use on FAT " "filesystems." msgstr "Se ignoran los bits de permisos del archivo mientras busca para cambios. Usa para sistemas de ficheros FAT" #: folder-edit.glade:1018 msgid "Minimum Free Disk Space" msgstr "Espacio mínimo libre de disco" #: folder-edit.glade:1057 msgid "File Pull _Order" msgstr "_Orden de Toma de Archivos" #: folder-edit.glade:1103 ui-settings.glade:954 msgid "_Advanced" msgstr "_Avanzado" #: ignore-editor.glade:8 msgid "Ignore Patterns" msgstr "Ignorar Patrones" #: ignore-editor.glade:99 msgid "" "See Syncthing " "documentation for list of supported patterns" msgstr "Véanse la documentación de Syncthing para una lista de patrones soportados" #: ignore-editor.glade:114 msgid "File location: " msgstr "Ubicación de Archivo:" #: ui-settings.glade:27 msgid "Lowest" msgstr "Más bajo" #: ui-settings.glade:31 msgid "Low" msgstr "Bajo" #: ui-settings.glade:35 msgid "Normal" msgstr "Normal" #: ui-settings.glade:39 msgid "Above Normal" msgstr "Encima de lo normal" #: ui-settings.glade:46 msgid "Syncthing-GTK Settings" msgstr "Configuración Syncthing-GTK" #: ui-settings.glade:69 msgid "Please, restart Syncthing-GTK to apply all changed settings" msgstr "Por favor, reinicia Syncthing-GTK para aplicar todos los cambios" #: ui-settings.glade:136 msgid "When starting and Syncthing daemon is not running..." msgstr "Cuando se arranca y Syncthing no está ejecutando..." #: ui-settings.glade:147 msgid "... _wait for daemon" msgstr "...esperar al daemon" #: ui-settings.glade:164 msgid "... start daemon in _background" msgstr "... arrancar daemon en _background" #: ui-settings.glade:180 msgid "... _ask me what to do" msgstr "..._pregúntame qué hacer" #: ui-settings.glade:199 msgid "When exiting after daemon was started in background..." msgstr "Cuando cierra después de que el daemon se ejecutó en el background..." #: ui-settings.glade:210 msgid "... terminate _daemon" msgstr "...terminar _daemon" #: ui-settings.glade:226 msgid "... leave daemon _running" msgstr "...dejar el daemon _ejecutando" #: ui-settings.glade:242 msgid "... ask me w_hat to do" msgstr "...pregúntame _qué hacer" #: ui-settings.glade:258 msgid "Us_e traditional window header" msgstr "Usar el en_cabezado tradicional de ventana" #: ui-settings.glade:278 msgid "Display desktop notifications for..." msgstr "Mostrar notificaciones de escritorio para..." #: ui-settings.glade:289 msgid "... file updates" msgstr "... actualizaciones de archivo" #: ui-settings.glade:304 msgid "... errors" msgstr "... errores" #: ui-settings.glade:319 msgid "... synchronization completion" msgstr "... sincronización completa" #: ui-settings.glade:334 msgid "Start Syncthing-GTK when I login to my desktop" msgstr "Ejecutar Syncthing-GTK en el inicio de sesión" #: ui-settings.glade:350 msgid "Minimize to _tray on start" msgstr "Minimizar al _bandeja de sistema al arrancar" #: ui-settings.glade:366 msgid "Use _icons in menu" msgstr "Usa _iconos en el menú" #: ui-settings.glade:383 msgid "Display paths in directories panel" msgstr "Mostrar ubicaciones en el panel de directorios" #: ui-settings.glade:399 msgid "Force _dark theme" msgstr "Forzar tema _oscuro" #: ui-settings.glade:474 msgid "_Interface" msgstr "_Interfaz" #: ui-settings.glade:492 msgid "Integrate Syncthing with filemanagers" msgstr "Integrar Syncthing con los gestores de archivos" #: ui-settings.glade:507 msgid "Nemo (Cinamon Desktop)" msgstr "Nemo (Escritorio Cinnamon)" #: ui-settings.glade:524 msgid "Nautilus (Ubuntu/GNOME)" msgstr "Nautilus (Ubuntu/GNOME)" #: ui-settings.glade:540 msgid "Caja (MATE Desktop)" msgstr "Caja (Escritorio MATE)" #: ui-settings.glade:579 msgid "" "Note: You may need to restart your filemanager after toggling " "integration." msgstr "Nota: Puede que tengas que reiniciar el gestor de archivos después de cambiar la integración." #: ui-settings.glade:598 msgid "_Integration" msgstr "_Integración" #: ui-settings.glade:627 msgid "Keep Syncthing binary up-to-date" msgstr "Mantener el binario de Syncthing actualizado" #: ui-settings.glade:647 msgid "" "If enabled, Syncthing-GTK will automatically check for new daemon releases " "and replace binary with latest version." msgstr "Si está habilitado, Syncthing-GTK comprobará automáticamente nuevas versiones del daemon y reemplazará el binario con la nueva versión." #: ui-settings.glade:662 msgid "Daemon process priority" msgstr "Prioridad del proceso de daemon" #: ui-settings.glade:698 msgid "" "Priority will be used only if \"start daemon in background\" option " "is checked on \"Interface\" page." msgstr "Solo se usará Prioridad si se ha seleccionada la opción \"ejecutar daemon en background\" en la página \"Interfaz\"." #: ui-settings.glade:713 msgid "Maximum number of CPU cores" msgstr "Número máximo de cores del CPU" #: ui-settings.glade:731 msgid "" "Sets the maximum number of CPU cores for daemon to use. This value will be " "used only if \"start daemon in background\" option is checked on " "\"Interface\" page." msgstr "Define el número máximo de cores de CPU que utilizará el daemon. Este valor será usado, solo si se ha seleccionada la opción \"ejecutar daemon en background\" en la página \"Interfaz\"." #: ui-settings.glade:786 msgid "Daemon" msgstr "Daemon" #: ui-settings.glade:808 msgid "" "This binary will be started when syncthing daemon is not running and " "\"start daemon in background\" option is checked on " "\"Interface\" page." msgstr "Este binario se iniciará cuando el daemon de Syncthing no esté corriendo y la opción \"ejecutar daemon en background\" esté habilitada en la página \"Interfaz\"." #: ui-settings.glade:838 msgid "Syncthing binary location" msgstr "Ubicación del binario Syncthing" #: ui-settings.glade:867 msgid "Daemon arguments and variables" msgstr "Parámetros y variables del Daemon" #: ui-settings.glade:897 msgid "" "Space-separated list of arguments and environment variables passed when starting above binary\n" "\n" "Use VARIABLE=\"value\" to set variable and -argument=\"value\" (with dash) for argument.\n" "\n" "If you need to pass commandline to different command (such as logger or ionice), separate prefixed arguments with exclamation mark \"!\"\n" "\n" "Example:\n" " STTRACE=\"all\" logger -t /var/log/syncthing.log ! -logflags=10" msgstr "Lista de parámetros i environment variables empleados cuando se ejecute el binario definido arriba\n\nUsa VARIABLE=\"value\" para definir un variable i -argument=\"value\" (con guión) para el parámetro.\n\nSi necesitas pasar commandline a otro comando (como podría se logger o ionice), separa parámetros con una exclamación \"!\"\n\nEjemplo:\n STTRACE=\"all\" logger -t /var/log/syncthing.log ! -logflags=10" #: ui-settings.glade:921 msgid "" "Warning: Changing settings on this page may prevent you from using " "Syncthing-GTK" msgstr "Aviso: Si cambias configuraciones en esta página puedes dejar sin andar Syncthing-GTK" syncthing-gtk-0.9.4.4/locale/fr/000077500000000000000000000000001352162771300163345ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/locale/fr/LC_MESSAGES/000077500000000000000000000000001352162771300201215ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/locale/fr/LC_MESSAGES/syncthing-gtk.mo000066400000000000000000001035431352162771300232550ustar00rootroot00000000000000R <`>a  .37?Vk Q W_   :=,x!]% T5 -    !!!3!gK!!!!!"" !" -"7"'U"!}""$"D"R!#t# {#####5#]$m$ $ $ $ $$$$%"%5:%Dp%% %%%% &$&B&Q&g&!&& &e&-'3'B'K'T' i'-','')(.(&F()m(((&((!)')8)I)X)Rh))K)g *u*N,, , , ,-0-F-M- g- t-r--P.a/=q//60 1!111&D1)k1(1(1"1* 2(529^2%2 2D2,3 ;3\3 e3o333 333 33 34454 U4_4w4444444404K4B5 5555O6VS66 662636K3757;77=8o8/9?9O9`9u9|999 999v9[:-x:,::};;; ;A; ; <1<"F<i<kp<< x>.> >>>>?,?=?V?i? q?{????(|@@.@;@/ALAhA+A0A7AB 4BBBVYB6BB3C34CmhC)CDpD2 E-FGF WF bF nF {FFF F FFFFFFG%G5G LG*XG6G4GG GH{H!HiH II I $I.I 6I AINI iIvIII I I IIII IIJ JJJ *J 5J?JHJ _J jJvJ(J JJJ9J KK!KUL&MDMLMTM]MmMuMMMMMM MMMMN%NEN!`N"NNsNo1OOOOOPP""P5EP>{P9P%P^QyQfQCQ88RqRR2R R RRRS0S"SSTT $T 0T:T&XTTT$TKTz%UUUU UU V:V}UVVVW W'"WJW0hWW4W5WGXgXmX|XX&X X$X Y4YSY4rYYYtYLZSZfZxZ!Z+Z.Z.Z4,[8a[#[5[:[7/\5g\-\,\!\]2]K]yd]]n]V^^`"a aaaaVbZb .c Oc\coccYei[ePeffggh h)h?hYh rh}h.hNh/i Ci]Pi=i)ijj7jVjmj jjj jjj4j$k4@kuk/kkkkkk kllB$l]gllQmam%{mmTmhmfnonnJn=nt!oFoAopIpw q qqqq qqqr$r ;rIrgr.r9$s8^ss@tTtqt tNtt t:u)Aukuruv w4wx4xSx,\xx1xxxy yy;y'Qyyy8bzz&zEz$!{*F{q{&{0{B{#| 9|G|ib|A|}?*}:j}]}?~C~~=^9|)ŀ$Ԁ$ '1 Y c p {5$́ !+;'g-AڂHe kw{$,xQ ʄՄ ބ &>Phq ȅυ    7B U+a  ن <AS7Q=mj%C<,Q6H5lF[KOI&A 8EdU rf"# 4Y`7zHe;LRA.N184#!B+a]?v_iMpS~-=9:+K\F u qNX&'G3( ^ oG *P/-DO (6";'P29)J!{t%Tcb*>k?}I2@xEL,W C@$15gV:Jsh0R/<0 ).DZMn>y$Bw 3|%(device)s wants to share folder "%(folder)s". Add new folder?%(online)s/%(total)s online%s KiB/s%s day%s days%s days ago%s kB/s%s minutes ago%s minutes from now%s seconds ago%s seconds from now%s%%%ss(watch)... _ask me what to do... _wait for daemon... ask me w_hat to do... errors... file updates... leave daemon _running... start daemon in _background... synchronization completion... terminate _daemonNote: You may need to restart your filemanager after toggling integration.Warning: Changing settings on this page may prevent you from using Syncthing-GTKAbout Syncthing-GTKAbove NormalAdd Shared _FolderAdd _DeviceAddressAll DataAll devices offlineAllow Anonymous Usage Reporting?Alternatively, Syncthing-GTK can download Syncthing binaryAlways do same; Don't show this window againAlways start daemon automaticallyAn external command handles the versioning. It has to remove the file from the synced folder.Announce ServerAny devices configured on an introducer device will be added to this device as well.Attempting to download recent, please wait...Auto_update downloaded binaryBinary path:BlackBrowse for Syncthing binaryBrowse...CPU UtilizationCaja (MATE Desktop)Can't invoke the daemonCannot authorize with daemon. Please, use WebUI to generate API key or disable password authentication.Cannot download Syncthing daemon.Checking for available port...Clean out _afterCluster out of syncCommandCompressionConnectedConnected to Syncthing daemonConnecting to Syncthing daemon at %s...Connecting to Syncthing daemon...Connecting to daemon...Connection to Syncthing daemon lost.Connection to daemon failed. Check your configuration and try again.Continue this wizard to create a Syncthing configuration file or abort it to exit.DaemonDaemon OutputDaemon _SettingsDaemon arguments and variablesDaemon process priorityDefaultDevice "%s" is trying to connect to syncthing daemon.Device "%(name)s" (%(device)s) at IP "%(ip)s" wants to connect. Add new device?Device IdentificationDevice _IDDevice _NameDisconnectedDisplay Syncthing-Inotify OutputDisplay _Daemon OutputDisplay desktop notifications for...Display error logDisplay paths in directories panelDo you really want remove device '%s' from Syncthing?Do you really want to permanently stop synchronizing directory '%s'?Done.Download RateDownload failed.Download finished.Downloaded file is corrupted.Downloading Syncthing %sDownloading Syncthing daemon.Downloading...Edit _Ignore PatternsEnable Local _DiscoveryEnable _Anonymous Usage ReportingEnable _Global DiscoveryEnable _UPnPEnter comma separated "ip:port" addresses or "dynamic" to perform automatic discovery of the address.ErrorError message:Exiting.ExternalExtracting update...Failed to create temporaly file.Failed to determine latest Syncthing version.Failed to download Syncthing daemon package.Failed to download upgrade: %sFailed to find unused port for listening.Failed to generate keysFailed to load Syncthing configurationFailed to load configuration from daemon.Failed to modify Syncthing configurationFailed to save Syncthing configurationFailed to save configuration.Failed to start Syncthing daemon.File Pull _OrderFile _VersioningFile location:File location: File permission bits are ignored when looking for changes. Use on FAT filesystems.FilesFiles are moved to .stversions folder when replaced or deleted by SyncthingFiles are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing.Files are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing. Versions are automatically deleted if they are older than the maximum age or exceed the number of files allowed in an interval. The following intervals are used: for the first hour a version is kept every 30 seconds, for the first day a version is kept every hour, for the first 30 days a version is kept every day, until the maximum age a version is kept every week.Files are protected from changes made on other devices, but changes made on this device will be sent to the rest of the cluster.First run wizardFolder IDFolder _IDFolder _LabelForce _dark themeGTK GUI and notification area icon for SyncthingGitHubGlobal Discovery _ServersGlobal StateHide WindowIf enabled, Syncthing-GTK will automatically check for new daemon releases and replace binary with latest version.If enabled, changed, created and delete files are synchronized immediately, as long as Syncthing-GTK is running. Note: Using this along with short Rescan Interval (<300s) may consume a lot of resources.If the reported data set is changed you will be prompted with this dialog again.If you already had Syncthing daemon configured, please, exit this wizard and check your %s folderIf you have Syncthing installed, please, set path to %s belowIf you have Syncthing installed, please, set path to %s below or click on Download button to download latest Syncthing package.If you prefer to be able to manage Syncthing remotely, over the internet or on your local network, select listen on all interfaces and set username and password to protect Syncthing from unauthorized access.Ignore P_ermissionsIgnore PatternsIgnore PermissionsIn File Pull Order comboboxAlphabeticIn File Pull Order comboboxLargest FirstIn File Pull Order comboboxNewest FirstIn File Pull Order comboboxOldest FirstIn File Pull Order comboboxRandomIn File Pull Order comboboxSmallest FirstInitial configuration should be created.Install %(package)s package to enable %(feature)s supportIntegrate Syncthing with filemanagersIntroducerIt is used to track common platforms, folder sizes and app versions.It looks like you never have used Syncthing.Keep Syncthing binary up-to-dateLanguageLast SeenListen on _all interfacesListen on _localhostLocal Discovery _PortLocal StateLowLowestMa_ximum AgeMaximum number of CPU coresMetadata OnlyMinimize to _tray on startMinimum Free Disk SpaceMonitor filesystem for _changesMore infoNautilus (Ubuntu/GNOME)Nemo (Cinamon Desktop)NeverNoNormalOffOfflineOnlineOpen _Web InterfaceOpen browser with _WebUI when daemon is startingOptional descriptive label for the folder. Can be different on each device.Otherwise, select listen on localhost, so only users and programs on this computer will be able to interact with Syncthing.Out Of SyncOutgoing _Rate LimitOverride Remote ChangesPathPath to the folder on the local computer. Will be created if it does not exist.Path where versions should be stored (leave empty for the default .stversions folder).PausedPlease waitPlease wait...Please, check error log and fill bug report on %s.Please, check your firewall settings and try again.Please, check your installation or set new path to Syncthing daemon binary.Please, install pyinotify package to use this featurePlease, restart Syncthing-GTK to apply all changed settingsPlease, use package manager to install the Syncthing package or %(download_link)s from Syncthing page and save it to your %(target)s directory.Please, use package manager to install the Syncthing package.Priority will be used only if "start daemon in background" option is checked on "Interface" page.RAM UtilizationRescan IntervalRescan _IntervalRestarting daemon...ResumeResume Sync_thingS_top SyncthingSaving settings...Saving...ScanningSearching for Syncthing daemon.See Syncthing documentation for list of supported patternsSelect Folder for new FolderSelect the devices to share this folder with.Select the folders to share with this deviceSets the maximum number of CPU cores for daemon to use. This value will be used only if "start daemon in background" option is checked on "Interface" page.Sh_utdown DaemonShare With _DevicesShare _FoldersShared WithShort identifier for the folder. Must be the same on all devices.Show WindowShow _IDShown instead of Device ID in the cluster status.Shutdown Syncthing daemon as well?SimpleSorry, connecting to HTTPS is not supported on this platform. Please, use WebUI to disable HTTPS try again.Space-separated list of arguments and environment variables passed when starting above binary Use VARIABLE="value" to set variable and -argument="value" (with dash) for argument. If you need to pass commandline to different command (such as logger or ionice), separate prefixed arguments with exclamation mark "!" Example: STTRACE="all" logger -t /var/log/syncthing.log ! -logflags=10StaggeredStart Syncthing-GTK when I login to my desktopStart it now?Starting Syncthing daemonStoppedSync Protocol Listen AddressesSynchronizationSynchronization of folder '%s' is completed.Synchronizing %s foldersSynchronizing '%s'SyncingSyncthingSyncthing Daemon SettingsSyncthing binarySyncthing binary locationSyncthing can be managed remotely using WebUI and even if you are going to use Syncthing-GTK, WebUI needs to be enabled, as Syncthing-GTK uses it to communicate with the Syncthing daemon.Syncthing daemon binary cannot be found.Syncthing daemon binary found.Syncthing daemon doesn't appear to be running.Syncthing daemon failed to generate RSA key or certificate.Syncthing daemon is too old.Syncthing daemon not found.Syncthing has been shut down.Syncthing has been successfully configured.Syncthing is generating RSA key and certificate.Syncthing is probably restarting or has been shut down.Syncthing is restarting.Syncthing-GTKSyncthing-GTK SettingsSyncthing-GTK needs Syncthing daemon %(min)s or newer, but only %(actual)s were found.Syncthing-GTK started and running in notification areaSyncthing-Inotify OutputSyncthing-Inotify is unavailable or failed to startThe aggregated statistics are publicly available atThe configuration has been saved but not activated. Syncthing must restart to activate the new configuration.The encrypted usage report is sent daily.The entered device ID does not look valid. It should be a 52 character string consisting of letters and numbers, with spaces and dashes being optional.The first command line parameter is the folder path and the second parameter is the relative path in the folder.The number of days to keep files in the trash can.The number of old versions to keep, per file.This binary will be started when syncthing daemon is not running and "start daemon in background" option is checked on "Interface" page.This may take a while...This platform (%s) is not supportedTrashcanTray icon styleTry again.UI SettingsUI _SettingsUnlimitedUnsharedUnusedUp to DateUpload RateUs_e traditional window headerUse _icons in menuVersionVersion:Versioning _ModeVersions _PathWaiting for Syncthing daemon at %s...WebUI Listen AddressesWebUI setupWelcome to Syncthing-GTK first run wizard!When exiting after daemon was started in background...When starting and Syncthing daemon is not running...WhiteXYZ-123-ABCYesYou can configure more details later, in UI Settings and Daemon Settings menus in main window of application.Your syncthing daemon is too old.Your syncthing daemon is too old. Please, upgrade syncthing package at least to version %s and try again._About_Add_Addresses_Advanced_Browse_Browse..._Compression_Download Syncthing binary_Download..._Folder Settings_Ignore_Incoming Rate Limit_Integration_Interface_Introducer_Keep Versions_Other_Outgoing Rate Limit_Password_Path_Quit_Rescan_Restart_Restart Daemon_Unlimited_Usernamedisableddownload latest binaryin %s daysin a momentjust nowlast resort and generally not suggested.never deleteno limitofflineto %s and keep it up-to-date, but this option is meant as~%s hours ago~%s hours from nowProject-Id-Version: syncthing-gtk Report-Msgid-Bugs-To: POT-Creation-Date: 2016-04-20 11:27+0200 PO-Revision-Date: 2017-09-22 17:53+0000 Last-Translator: kozec Language-Team: French (France) (http://www.transifex.com/syncthing-gtk/syncthing-gtk/language/fr_FR/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: fr_FR Plural-Forms: nplurals=2; plural=(n > 1); Le %(device)s souhaite partager le dossier "%(folder)s". Ajouter ce nouveau dossier ?%(online)s/%(total)s en ligne%s ko/s%s jour%s joursIl y a %s jours%s ko/sIl y a %s minutesDans %s minutesIl y a %s secondesDans %s secondes%s%%%ss(surveiller)…me _demander quoi faire…l'_attendre…me demander quoi _faire…les erreurs…les mises à jour de fichier…le _laisser en fonction…le démarrer en arrière-_plan…les synchronisations terminées…éteindre le _démonremarque : il peut être nécessaire de redémarrer le gestionnaire de fichiers pour activer l'intégration.Attention : les modifications apportées à cette page peuvent casser le fonctionnement de Syncthing-GTKÀ propos de Syncthing-GTKAu dessus de la normaleAjouter un _dossier partagéAjouter un _appareilAdresseToutes les donnéesTous les appareils sont hors-ligneAutoriser l'envoi anonyme de données d'utilisation ?Sinon Syncthing-GTK peut télécharger l'exécutable SyncthingToujours procéder ainsi. Ne plus afficher cette fenêtreDémarrer le démon automatiquement ?Une commande externe gère le versionning. Celle-ci retire le fichier du dossier synchronisé.Annoncer le serveurTous les appareils configurés sur l'appareil introducteur seront également ajoutés à cet appareil.Téléchargement d'une version plus récente, merci de patienter…Mise à jour _automatique de l'exécutable téléchargéChemin vers l'éxécutable :NoirNaviguez jusqu'au binaire exécutable de SyncthingParcourir…Charge CPUCaja (env. de bureau Mate)Appel du démon impossibleDémon non reconnu. Veuillez utiliser l'interface Web pour générer une nouvelle clé ou désactiver l'authentification par mot de passe.Impossible de télécharger le démon Syncthing.Contrôle des ports disponibles…Nettoyer _aprèsGroupe désynchroniséCommandeCompressionConnectéConnecté au démon SyncthingConnexion du démon Syncthing à %s…Connexion au démon syncthingConnexion au démon…Connexion au démon Syncthing perdueÉchec de la connexion au démon. Vérifiez sa configuration et réessayer.Veuillez cliquez sur %s pour la création d'un fichier de configuration de Syncthing ou Quitter pour sortir.DémonSortie du démonParamètres du _démonArguments et variables du démonPriorité du processus démonPar défautL'appareil "%s" tente de se connecter au démon Syncthing.L'appareil "%(name)s" (%(device)s) à l'adresse IP "%(ip)s" souhaite se connecter. Ajouter ce nouvel appareil ?Identification de l'appareil_ID de l'appareil_Nom de l'appareilDéconnectéAfficher la sortie de Syncthing-InotifyAfficher la sortie du _démonAfficher les notifications sur le bureau pour…Afficher les logs d'erreurAfficher les emplacements dans les vues des dossiersSouhaitez-vous retirer de Syncthing l'appareil '%s' ?Souhaitez-vous définitivement cesser de synchroniser le dossier '%s' ?Fait.Débit entrantÉchec du téléchargement.Téléchargement terminé.Le fichier téléchargé est corrompu.Téléchargement de Syncthing %sTéléchargement du démon SyncthingTéléchargement…Éditer les motifs à _ignorerActiver la découverte _locale_Autoriser l'envoi anonyme de données d'utilisationActiver la découverte _globaleAcitver l'_UPnPEntrer des adresses sur le modèle "ip:port" ou "dynamique" pour effectuer une découverte automatique des adresses.ErreurMessage d'erreur :En cours d'arrêtExterneRécupération de la mise à jourImpossible de créer le fichier temporaire.Échec à déterminer la version de Syncthing.Échec du téléchargement du paquet SyncthingÉchec du téléchargement de la mise à niveau : %sImpossible de trouver un port disponible pour l'écoute.Échec de la génération des clésÉchec du chargement de la configuration de SyncthingÉchec du chargement de la configuration depuis le démon.Échec de la modification de configuration de SyncthingÉchec de la sauvegarde de configuration de SyncthingLa sauvegarde de la configuration a échoué.Le démarrage du démon Syncthing a échoué_Ordre de traitement des fichiers_Versionning de fichierEmplacement du fichier :Emplacement du fichier :Les droits/permissions des fichiers ne sont pas pris en compte. Utiliser cette option avec les systèmes de fichiers FAT.FichiersLorsqu'ils sont remplacés ou effacés par syncthing, les fichiers sont déplacés dans le dossier .stversionsLorsqu'ils sont remplacés ou effacés par syncthing, les fichiers sont déplacés dans un dossier .stversions et renommés par horodatage.Lorsqu'ils sont remplacés ou effacés par syncthing, les fichiers sont déplacés dans un dossier .stversions et renommés par horodatage. Les versions sont automatiquement effacées en fonction de leur age ou leur nombre, déterminés pour un intervalle. Les intervalles sont les suivants : pendant la première heure, une version est conservée toutes les 30 secondes ; pendant le premier, jour une version par heure ; les 30 jours suivants, une version par jour ; et jusqu'à l'age maximal, une version par semaine.Les fichiers sont protégés des changement effectués sur les autres appareils, mais les changements effectués sur cet appareil seront diffusés dans tout le groupe.Assistant de première utilisationID du dossier_ID du dossierÉtiqu_ette du dossierForcer le thème _sombreInterface Utilisateur Graphique en GTK et icone de zone de notification pour SyncthingCe programme est fourni sans aucun garantie. Reportez vous à la licence GNU GPL version 2 ou ultérieure pour plus de détails._Serveurs de découverte globaleÉtat globalCacher la fenêtreActivé, Syncthing-GTK vérifiera automatiquement l'existence de mise à jour et remplacera l’exécutable par sa version la plus récente.Si activé, toute création, modification ou suppression de fichier est instantanément synchronisée, tant que Syncthing-GTK est en cours d'éxécution. Remarque : Cette option employée avec un intervalle de re-scan court ≤300s est gourmande en ressources.Si le contenu du rapport vient à changer, cette boîte de dialogue s'ouvrira à nouveau.Si le démon Syncthing est déjà configuré, veuillez quitter cet assistant et contrôler le dossier %s.Si Syncthing est installé veuillez renseigner son chemin d'accès %s ci-dessousSi Syncthing est déjà installé, veuillez renseigner le chemin vers %s sinon cliquez sur le bouton Télécharger pour télécharger sa version la plus récente.Si vous souhaitez conserver la possibilité d'utiliser Syncthing à distance, à travers internet ou via votre réseau local, sélectionner écouter toutes les interfaces et paramétrez un nom d'utilisateur et mot passe pour protéger Syncthing d'un accès non autorisé.Ignorer les _permissions.Ignore les motifsIgnorer les permissionsAlphabétiqueLes plus gros d'abordLes plus récents d'abordLes plus anciens d'abordAléatoireLes plus petits d'abordIl s'agit de créer la configuration initiale.Installez le paquet %(package)s pour activer la prise en charge de %(feature)sIntégrer Syncthing au gestionnaire de fichiersIntroducteurIl sert à recenser les plates-formes, la taille des dossiers et la version de l'application.Il semble que c'est votre première utilisation de Syncthing.Maintenir à jour l'exécutable SyncthingLangueVu pour la dernière foisÉcoute sur _toutes interfacesÉcoute sur _localhost_Port local de découverteÉtat localFaibleLe plus faibleAge ma_ximalNombre maximum de processeursMéta-données uniquementRéduire dans la _zone de notification au démarrageEspace disque libre minimalSurveiller les _modifications du système de fichierInformations supplémentairesNautilus (env. de bureau Ubuntu-Unity ou Gnome)Nemo (env. de bureau Cinamon)JamaisNonNormalArrêtHors ligneEn ligneOuvrir _Interface WebOuvrir l'interface _Web dans le navigateur au démarrage du démonÉtiquette optionnelle de description du dossier. Peut être différente sur chaque appareil.Sinon sélectionnez écouter localhost afin que seuls les utilisateurs et programmes de cet ordinateur interagissent avec Syncthing.DésynchroniséLimite de débit _sortantPasser outre les changements distantsCheminChemin vers le dossier sur l'ordinateur local. Sera créé s'il n'existe pas déjà.Indiquer le dossier où stocker les versions - si laissé vide, c'est le dossier par défaut .stversionsEn pauseMerci de patienterVeuillez patienter…Veuillez consulter les logs d'erreur et soumettre un rapport de bug à %s.Veuillez vérifier les paramètres du pare-feu et réessayer.Veuillez vérifier votre installation ou indiquer un nouveau chemin vers le binaire exécutable du démon Syncthing.Veuillez installer le paquet pyinotify pour profiter de cette fonctionVeuillez redémarrer Syncthing-GTK pour appliquer les changementsVeuillez utiliser votre gestionnaire de paquets pour installer Syncthing ou %(download_link)s depuis la page Syncthing et sauvegardez-le dans le dossier %(target)sVeuillez utiliser votre gestionnaire de paquets pour installer Syncthing.Cette priorité sera utilisée si l'option "démarrrer en arrière-plan" a été choisie à la page "Interface".Usage RAMIntervalle entre scansIntervalle de _rescanRedémarrage du démonReprendreReprendre Sync_thingArrêter Sync_thingSauvegarde des paramètres…Sauvegarde en cours…Scan en coursRecherche du démon SyncthingReportez-vous à la documentation Syncthing pour la liste des motifs supportés.Sélectionner un dossier ou un nouveau dossierSélectionner les appareils avec qui partager ce dossier.Sélectionnez les dossiers à partager avec cet appareilNombre max. de processeurs utilisés par le démon. Cette valeur sera utilisée si l'option "démarrrer en arrière-plan" a été choisie à la page "Interface"._Arrêter le démonPartager avec les _appareilsPartage des _dossiersPartagé avecIdentifiant court pour le dossier. Doit être le même sur tous les appareils.Montrer la fenêtreMontrer l'_IDPlutôt que l'ID de l'appareil dans les statuts du groupe.Arrêter également le démon syncthing ?SimpleDésolé la connexion en HTTPS n'est pas supportée par ce système. Veuillez utiliser l'interface Web pour désactiver le HTTPS et réessayer.Liste des arguments et variables d'environnement, séparés par des espaces, utilisée par l’exécutable. Utiliser VARIABLE="valeur" pour créer la variable et argument="valeur" (avec les guillemets) pour l'argument. Si vous avez besoin de passer des options à différentes commandes (telles que logger ou ionice), séparez les arguments avec un point d'exclamation « ! » Exemple: STTRACE="all" logger -t /var/log/syncthing.log ! -logflags=10VersionnéDémarrer Syncthing-GTK à l'ouverture de ma sessionLe démarrer maintenant ?Démarrage du démon SyncthingArrêtéAdresses écoutées par le protocole de SyncSynchronisationLa synchronisation du dossier '%s' est terminée.Synchronisation des dossiers %sSynchronisation de '%s'SynchronisationSyncthingRéglages du démon SyncthingExécutable SyncthingEmplacement de l'éxécutable SyncthingSyncthing peut s'utiliser à distance via l'interface Web. Même si vous n'utilisez que Syncthing-GTK localement, il est nécessaire d'activer l'interface Web car Syncthing-GTK l'utilise pour communiquer avec le démon de Syncthing.Impossible de trouver l'exécutable du démon Syncthing.Démon Syncthing trouvéLe démon syncthing n'est pas activé.Échec du démon Syncthing à générer la clé RSA ou le certificat.Le démon Syncthing est trop ancien.Impossible de trouver le démon Syncthing.Syncthing est éteint.Syncthing est correctement configuré.Syncthing génère la clé RSA et le certificat.Syncthing est probablement en train de redémarrer ou est éteint.Syncthing redémarre.Syncthing-GTKRéglages de Syncthing-GTKSyncthing-GTK nécessite le démon %(min)s ou plus récent, alors que seulement %(actual)s est installé.Syncthing-GTK en cours d'éxécution dans la zone de notificationSortie de Syncthing-InotifySyncthing-Inotify est indisponible ou son démarrage a échouéLes données collectées sont publiquement accessibles viaLa configuration est sauvegardée mais pas active. Syncthing doit redémarrer pour l'activer.Ce rapport d'utilisation chiffré sera envoyé quotidiennement.L'ID de l'appareil renseignée ne semble pas valide : elle devrait compter 52 caractères alphanumériques, éventuels espaces et tirets inclus.Le premier paramètre pour la ligne de commande est le chemin vers le dossier et le second paramètre, le chemin relatif dans ce dossier.Nombre de jours où conserver les fichiers dans la corbeille.Le nombre d'anciennes versions à conserver, par fichier.Cet exécutable sera démarré si le démon syncthing ne l'est pas déjà et si l'option "démarrrer en arrière-plan" a été choisie à la page "Interface".Cela peut prendre un moment…Ce système (%s) n'est pas pris en chargeMode corbeilleStyle de l’icône de notification Essayer à nouveauRéglages de l'Interface Utilisateur_Paramètres de l'interface utilisateurIllimitéNon partagéInutiliséSynchroniséDébit sortantUtiliser la barre de titre de fenêtre traditionnelleUtiliser les _icônes dans les menusVersionVersion :_Mode de versionningDossier de _stockage des versionsEn attente du démon Syncthing depuis %s…Adresses écoutées par l'interface WebRéglages de l'interface WebBienvenue dans l'assistant de Syncthing-GTK !Lorsque le démon s'exécute en arrière-plan, à la fermeture…Si au démarrage le démon Syncthing n'est pas en cours d'éxécution…BlancXYZ-123-ABCOuiD'autres paramètres de configuration sont accessibles via les menus Interface Utilisateurs et Paramètres du Démon dans la fenêtre principale de l'application.Votre démon Syncthing est obsolèteVotre démon Syncthing est obsolète. Veuillez mettre à jour Syncthing vers sa version %s ou ultérieure et réessayer._À propos_Ajouter_Adresses_Avancé_Parcourir_Parcourir…_Compression_Télécharger l'exécutable Syncthing_Télécharger…Paramètres du _dossier_IgnorerLimite de débit _entrantIntegrat_ion_Interface_IntroducteurVersions à _conserver_AutreLimite de débit _sortantMot de _passe_Chemin_Quitter_Rescanner_Redémarrer_Redémarrer le démonIll_imitéNom d'_utilisateurdésactivétéléchargez l'exécutable le plus récentDans %s joursDans un instantÀ l'instant recours n'est pas recommandée.ne jamais effacerpas de limiteHors lignedans %s et le maintenir à jour mais cette option de dernierIl y a ~%s heuresDans ~%s heuressyncthing-gtk-0.9.4.4/locale/fr/LC_MESSAGES/syncthing-gtk.po000066400000000000000000001341441352162771300232610ustar00rootroot00000000000000# Syncthing-GTK # Copyright (C) 2014-2015 Kozec and contributors # This file is distributed under the same license as the Syncthing-GTK package. # # Translators: # Cœur Noir , 2016 # Cœur Noir , 2015-2016 # kozec , 2016 msgid "" msgstr "" "Project-Id-Version: syncthing-gtk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-04-20 11:27+0200\n" "PO-Revision-Date: 2017-09-22 17:53+0000\n" "Last-Translator: kozec \n" "Language-Team: French (France) (http://www.transifex.com/syncthing-gtk/syncthing-gtk/language/fr_FR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fr_FR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: syncthing_gtk/app.py:194 msgid "Syncthing-GTK started and running in notification area" msgstr "Syncthing-GTK en cours d'éxécution dans la zone de notification" #: syncthing_gtk/app.py:288 #, python-format msgid "%s kB/s" msgstr "%s ko/s" #: syncthing_gtk/app.py:302 syncthing_gtk/notifications.py:77 #: syncthing_gtk/wizard.py:53 msgid "Syncthing-GTK" msgstr "Syncthing-GTK" #: syncthing_gtk/app.py:363 syncthing_gtk/app.py:364 syncthing_gtk/app.py:942 msgid "Syncing" msgstr "Synchronisation" #: syncthing_gtk/app.py:366 syncthing_gtk/app.py:367 msgid "Scanning" msgstr "Scan en cours" #: syncthing_gtk/app.py:390 syncthing_gtk/app.py:652 msgid "Starting Syncthing daemon" msgstr "Démarrage du démon Syncthing" #: syncthing_gtk/app.py:424 msgid "Allow Anonymous Usage Reporting?" msgstr "Autoriser l'envoi anonyme de données d'utilisation ?" #: syncthing_gtk/app.py:426 msgid "The encrypted usage report is sent daily." msgstr "Ce rapport d'utilisation chiffré sera envoyé quotidiennement." #: syncthing_gtk/app.py:427 msgid "It is used to track common platforms, folder sizes and app versions." msgstr "Il sert à recenser les plates-formes, la taille des dossiers et la version de l'application." #: syncthing_gtk/app.py:428 msgid "" "If the reported data set is changed you will be prompted with this dialog " "again." msgstr "Si le contenu du rapport vient à changer, cette boîte de dialogue s'ouvrira à nouveau." #: syncthing_gtk/app.py:430 msgid "The aggregated statistics are publicly available at" msgstr "Les données collectées sont publiquement accessibles via" #: syncthing_gtk/app.py:486 msgid "Extracting update..." msgstr "Récupération de la mise à jour" #: syncthing_gtk/app.py:491 msgid "Restarting daemon..." msgstr "Redémarrage du démon" #: syncthing_gtk/app.py:507 #, python-format msgid "Failed to download upgrade: %s" msgstr "Échec du téléchargement de la mise à niveau : %s" #: syncthing_gtk/app.py:525 #, python-format msgid "Downloading Syncthing %s" msgstr "Téléchargement de Syncthing %s" #: syncthing_gtk/app.py:604 msgid "Connected to Syncthing daemon" msgstr "Connecté au démon Syncthing" #: syncthing_gtk/app.py:614 msgid "Connection to Syncthing daemon lost." msgstr "Connexion au démon Syncthing perdue" #: syncthing_gtk/app.py:615 msgid "Syncthing is probably restarting or has been shut down." msgstr "Syncthing est probablement en train de redémarrer ou est éteint." #: syncthing_gtk/app.py:617 msgid "Syncthing has been shut down." msgstr "Syncthing est éteint." #: syncthing_gtk/app.py:621 syncthing_gtk/app.py:1499 msgid "Syncthing is restarting." msgstr "Syncthing redémarre." #: syncthing_gtk/app.py:621 syncthing_gtk/app.py:1499 msgid "Please wait" msgstr "Merci de patienter" #: syncthing_gtk/app.py:644 #, python-format msgid "Connecting to Syncthing daemon at %s..." msgstr "Connexion du démon Syncthing à %s…" #: syncthing_gtk/app.py:649 #, python-format msgid "Waiting for Syncthing daemon at %s..." msgstr "En attente du démon Syncthing depuis %s…" #: syncthing_gtk/app.py:664 msgid "Your syncthing daemon is too old." msgstr "Votre démon Syncthing est obsolète" #: syncthing_gtk/app.py:664 msgid "Attempting to download recent, please wait..." msgstr "Téléchargement d'une version plus récente, merci de patienter…" #: syncthing_gtk/app.py:670 msgid "" "Cannot authorize with daemon. Please, use WebUI to generate API key or " "disable password authentication." msgstr "Démon non reconnu. Veuillez utiliser l'interface Web pour générer une nouvelle clé ou désactiver l'authentification par mot de passe." #: syncthing_gtk/app.py:672 #, python-format msgid "" "Your syncthing daemon is too old.\n" "Please, upgrade syncthing package at least to version %s and try again." msgstr "Votre démon Syncthing est obsolète.\nVeuillez mettre à jour Syncthing vers sa version %s ou ultérieure et réessayer." #: syncthing_gtk/app.py:674 msgid "" "Sorry, connecting to HTTPS is not supported on this platform.\n" "Please, use WebUI to disable HTTPS try again." msgstr "Désolé la connexion en HTTPS n'est pas supportée par ce système.\nVeuillez utiliser l'interface Web pour désactiver le HTTPS et réessayer." #: syncthing_gtk/app.py:677 msgid "Connection to daemon failed. Check your configuration and try again." msgstr "Échec de la connexion au démon. Vérifiez sa configuration et réessayer." #: syncthing_gtk/app.py:678 syncthing_gtk/app.py:1992 #: syncthing_gtk/editordialog.py:314 msgid "Error message:" msgstr "Message d'erreur :" #: syncthing_gtk/app.py:689 msgid "More info" msgstr "Informations supplémentaires" #: syncthing_gtk/app.py:715 msgid "" "The configuration has been saved but not activated.\n" "Syncthing must restart to activate the new configuration." msgstr "La configuration est sauvegardée mais pas active.\nSyncthing doit redémarrer pour l'activer." #: syncthing_gtk/app.py:717 msgid "_Restart" msgstr "_Redémarrer" #: syncthing_gtk/app.py:784 #, python-format msgid "%(device)s wants to share folder \"%(folder)s\". Add new folder?" msgstr "Le %(device)s souhaite partager le dossier \"%(folder)s\". Ajouter ce nouveau dossier ?" #: syncthing_gtk/app.py:791 syncthing_gtk/app.py:813 msgid "_Add" msgstr "_Ajouter" #: syncthing_gtk/app.py:806 #, python-format msgid "" "Device \"%(name)s\" (%(device)s) at IP \"%(ip)s\" wants to " "connect. Add new device?" msgstr "L'appareil \"%(name)s\" (%(device)s) à l'adresse IP \"%(ip)s\" souhaite se connecter. Ajouter ce nouvel appareil ?" #: syncthing_gtk/app.py:814 msgid "_Ignore" msgstr "_Ignorer" #: syncthing_gtk/app.py:832 msgid "RAM Utilization" msgstr "Usage RAM" #: syncthing_gtk/app.py:833 msgid "CPU Utilization" msgstr "Charge CPU" #: syncthing_gtk/app.py:834 syncthing_gtk/app.py:1353 msgid "Download Rate" msgstr "Débit entrant" #: syncthing_gtk/app.py:835 syncthing_gtk/app.py:1354 msgid "Upload Rate" msgstr "Débit sortant" #: syncthing_gtk/app.py:836 msgid "Announce Server" msgstr "Annoncer le serveur" #: syncthing_gtk/app.py:837 syncthing_gtk/app.py:1356 msgid "Version" msgstr "Version" #: syncthing_gtk/app.py:860 syncthing_gtk/editordialog.py:394 msgid "disabled" msgstr "désactivé" #: syncthing_gtk/app.py:862 msgid "Online" msgstr "En ligne" #: syncthing_gtk/app.py:862 msgid "offline" msgstr "Hors ligne" #: syncthing_gtk/app.py:864 #, python-format msgid "%(online)s/%(total)s online" msgstr "%(online)s/%(total)s en ligne" #: syncthing_gtk/app.py:891 syncthing_gtk/app.py:1357 #: syncthing_gtk/app.py:1382 msgid "Never" msgstr "Jamais" #: syncthing_gtk/app.py:899 syncthing_gtk/app.py:1691 #: syncthing_gtk/app.py:1692 msgid "Paused" msgstr "En pause" #: syncthing_gtk/app.py:899 syncthing_gtk/app.py:924 syncthing_gtk/app.py:939 #: syncthing_gtk/infobox.py:60 msgid "Disconnected" msgstr "Déconnecté" #: syncthing_gtk/app.py:916 msgid "Connected" msgstr "Connecté" #: syncthing_gtk/app.py:945 syncthing_gtk/app.py:980 syncthing_gtk/app.py:1030 #: syncthing_gtk/app.py:1031 syncthing_gtk/app.py:1070 msgid "Up to Date" msgstr "Synchronisé" #: syncthing_gtk/app.py:966 syncthing_gtk/app.py:967 syncthing_gtk/app.py:968 msgid "Files" msgstr "Fichiers" #: syncthing_gtk/app.py:980 syncthing_gtk/app.py:1068 msgid "Cluster out of sync" msgstr "Groupe désynchronisé" #: syncthing_gtk/app.py:995 msgid "Stopped" msgstr "Arrêté" #: syncthing_gtk/app.py:998 syncthing_gtk/app.py:1005 msgid "Error" msgstr "Erreur" #: syncthing_gtk/app.py:1024 #, python-format msgid "Synchronizing '%s'" msgstr "Synchronisation de '%s'" #: syncthing_gtk/app.py:1026 #, python-format msgid "Synchronizing %s folders" msgstr "Synchronisation des dossiers %s" #: syncthing_gtk/app.py:1035 syncthing_gtk/app.py:1036 msgid "All devices offline" msgstr "Tous les appareils sont hors-ligne" #: syncthing_gtk/app.py:1040 syncthing_gtk/app.py:1041 msgid "Connecting to Syncthing daemon..." msgstr "Connexion au démon syncthing" #: syncthing_gtk/app.py:1079 msgid "Unshared" msgstr "Non partagé" #: syncthing_gtk/app.py:1082 msgid "Offline" msgstr "Hors ligne" #: syncthing_gtk/app.py:1176 msgid "Hide Window" msgstr "Cacher la fenêtre" #: syncthing_gtk/app.py:1190 app.glade:651 msgid "Show Window" msgstr "Montrer la fenêtre" #: syncthing_gtk/app.py:1239 msgid "Syncthing daemon doesn't appear to be running." msgstr "Le démon syncthing n'est pas activé." #: syncthing_gtk/app.py:1240 msgid "Start it now?" msgstr "Le démarrer maintenant ?" #: syncthing_gtk/app.py:1243 msgid "Always start daemon automatically" msgstr "Démarrer le démon automatiquement ?" #: syncthing_gtk/app.py:1292 msgid "Folder ID" msgstr "ID du dossier" #: syncthing_gtk/app.py:1293 msgid "Path" msgstr "Chemin" #: syncthing_gtk/app.py:1294 msgid "Global State" msgstr "État global" #: syncthing_gtk/app.py:1295 msgid "Local State" msgstr "État local" #: syncthing_gtk/app.py:1296 msgid "Out Of Sync" msgstr "Désynchronisé" #: syncthing_gtk/app.py:1297 msgid "Folder Type" msgstr "" #: syncthing_gtk/app.py:1298 msgid "Ignore Permissions" msgstr "Ignorer les permissions" #: syncthing_gtk/app.py:1299 msgid "Rescan Interval" msgstr "Intervalle entre scans" #: syncthing_gtk/app.py:1300 msgid "Shared With" msgstr "Partagé avec" #: syncthing_gtk/app.py:1324 syncthing_gtk/app.py:1325 #: syncthing_gtk/app.py:1381 msgid "Yes" msgstr "Oui" #: syncthing_gtk/app.py:1324 syncthing_gtk/app.py:1325 #: syncthing_gtk/app.py:1381 msgid "No" msgstr "Non" #: syncthing_gtk/app.py:1327 msgid "(watch)" msgstr "(surveiller)" #: syncthing_gtk/app.py:1341 msgid "Unused" msgstr "Inutilisé" #: syncthing_gtk/app.py:1350 msgid "Address" msgstr "Adresse" #: syncthing_gtk/app.py:1351 msgid "Synchronization" msgstr "Synchronisation" #: syncthing_gtk/app.py:1352 msgid "Compression" msgstr "Compression" #: syncthing_gtk/app.py:1355 msgid "Introducer" msgstr "Introducteur" #: syncthing_gtk/app.py:1357 msgid "Last Seen" msgstr "Vu pour la dernière fois" #: syncthing_gtk/app.py:1378 device-edit.glade:22 msgid "All Data" msgstr "Toutes les données" #: syncthing_gtk/app.py:1379 device-edit.glade:26 folder-edit.glade:78 msgid "Off" msgstr "Arrêt" #: syncthing_gtk/app.py:1375 msgid "Send Only" msgstr "" #: syncthing_gtk/app.py:1375 msgid "Send & Receive" msgstr "" #: syncthing_gtk/app.py:1380 device-edit.glade:30 msgid "Metadata Only" msgstr "Méta-données uniquement" #: syncthing_gtk/app.py:1522 msgid "Exiting." msgstr "En cours d'arrêt" #: syncthing_gtk/app.py:1523 msgid "Shutdown Syncthing daemon as well?" msgstr "Arrêter également le démon syncthing ?" #: syncthing_gtk/app.py:1528 msgid "Always do same; Don't show this window again" msgstr "Toujours procéder ainsi. Ne plus afficher cette fenêtre" #: syncthing_gtk/app.py:1768 #, python-format msgid "Do you really want to permanently stop synchronizing directory '%s'?" msgstr "Souhaitez-vous définitivement cesser de synchroniser le dossier '%s' ?" #: syncthing_gtk/app.py:1770 #, python-format msgid "Do you really want remove device '%s' from Syncthing?" msgstr "Souhaitez-vous retirer de Syncthing l'appareil '%s' ?" #: syncthing_gtk/app.py:1838 msgid "Syncthing-Inotify Output" msgstr "Sortie de Syncthing-Inotify" #: syncthing_gtk/app.py:1844 msgid "Syncthing-Inotify is unavailable or failed to start" msgstr "Syncthing-Inotify est indisponible ou son démarrage a échoué" #: syncthing_gtk/app.py:1991 msgid "Failed to start Syncthing daemon." msgstr "Le démarrage du démon Syncthing a échoué" #: syncthing_gtk/app.py:1993 msgid "" "Please, check your installation or set new path to Syncthing daemon binary." msgstr "Veuillez vérifier votre installation ou indiquer un nouveau chemin vers le binaire exécutable du démon Syncthing." #: syncthing_gtk/daemonsettings.py:24 msgid "Syncthing Daemon Settings" msgstr "Réglages du démon Syncthing" #: syncthing_gtk/deviceeditor.py:24 msgid "" "The entered device ID does not look valid. It should be a 52 character " "string consisting of letters and numbers, with spaces and dashes being " "optional." msgstr "L'ID de l'appareil renseignée ne semble pas valide : elle devrait compter 52 caractères alphanumériques, éventuels espaces et tirets inclus." #: syncthing_gtk/editordialog.py:312 msgid "Failed to load configuration from daemon." msgstr "Échec du chargement de la configuration depuis le démon." #: syncthing_gtk/editordialog.py:313 msgid "Try again." msgstr "Essayer à nouveau" #: syncthing_gtk/editordialog.py:387 syncthing_gtk/editordialog.py:396 #, python-format msgid "%ss" msgstr "%ss" #: syncthing_gtk/editordialog.py:402 #, python-format msgid "%s%%" msgstr "%s%%" #: syncthing_gtk/editordialog.py:409 msgid "no limit" msgstr "pas de limite" #: syncthing_gtk/editordialog.py:411 #, python-format msgid "%s KiB/s" msgstr "%s ko/s" #: syncthing_gtk/editordialog.py:418 msgid "never delete" msgstr "ne jamais effacer" #: syncthing_gtk/editordialog.py:420 #, python-format msgid "%s day" msgstr "%s jour" #: syncthing_gtk/editordialog.py:422 #, python-format msgid "%s days" msgstr "%s jours" #: syncthing_gtk/editordialog.py:455 msgid "Failed to save configuration." msgstr "La sauvegarde de la configuration a échoué." #: syncthing_gtk/finddaemondialog.py:24 find-daemon.glade:7 msgid "Can't invoke the daemon" msgstr "Appel du démon impossible" #: syncthing_gtk/finddaemondialog.py:26 msgid "Syncthing binary" msgstr "Exécutable Syncthing" #: syncthing_gtk/finddaemondialog.py:28 syncthing_gtk/finddaemondialog.py:37 msgid "Syncthing daemon binary cannot be found." msgstr "Impossible de trouver l'exécutable du démon Syncthing." #: syncthing_gtk/finddaemondialog.py:29 #, python-format msgid "" "If you have Syncthing installed, please, set path to %s below or click on " "Download button to download latest Syncthing package." msgstr "Si Syncthing est déjà installé, veuillez renseigner le chemin vers %s sinon cliquez sur le bouton Télécharger pour télécharger sa version la plus récente." #: syncthing_gtk/finddaemondialog.py:38 #, python-format msgid "If you have Syncthing installed, please, set path to %s below" msgstr "Si Syncthing est installé veuillez renseigner son chemin d'accès %s ci-dessous" #: syncthing_gtk/finddaemondialog.py:82 syncthing_gtk/wizard.py:411 msgid "Cannot download Syncthing daemon." msgstr "Impossible de télécharger le démon Syncthing." #: syncthing_gtk/finddaemondialog.py:83 syncthing_gtk/wizard.py:412 #, python-format msgid "This platform (%s) is not supported" msgstr "Ce système (%s) n'est pas pris en charge" #: syncthing_gtk/finddaemondialog.py:100 msgid "Downloading..." msgstr "Téléchargement…" #: syncthing_gtk/finddaemondialog.py:163 syncthing_gtk/stdownloader.py:251 #: syncthing_gtk/stdownloader.py:279 msgid "Download failed." msgstr "Échec du téléchargement." #: syncthing_gtk/finddaemondialog.py:185 syncthing_gtk/wizard.py:458 msgid "Download finished." msgstr "Téléchargement terminé." #: syncthing_gtk/foldereditor.py:45 msgid "Select Folder for new Folder" msgstr "Sélectionner un dossier ou un nouveau dossier" #: syncthing_gtk/foldereditor.py:166 syncthing_gtk/foldereditor.py:167 msgid "Please, install pyinotify package to use this feature" msgstr "Veuillez installer le paquet pyinotify pour profiter de cette fonction" #: syncthing_gtk/ignoreeditor.py:44 msgid "File location:" msgstr "Emplacement du fichier :" #: syncthing_gtk/notifications.py:120 #, python-format msgid "Unexpected folder ID sent from device \"%s\"." msgstr "" #: syncthing_gtk/notifications.py:124 #, python-format msgid "Device \"%s\" is trying to connect to syncthing daemon." msgstr "L'appareil \"%s\" tente de se connecter au démon Syncthing." #: syncthing_gtk/notifications.py:153 #, python-format msgid "Synchronization of folder '%s' is completed." msgstr "La synchronisation du dossier '%s' est terminée." #: syncthing_gtk/notifications.py:160 #, python-format msgid "%(hostname)s: Downloaded '%(filename)s' to reflect remote changes." msgstr "" #: syncthing_gtk/notifications.py:165 #, python-format msgid "%(hostname)s: Deleted '%(filename)s' to reflect remote changes." msgstr "" #: syncthing_gtk/notifications.py:168 #, python-format msgid "%(hostname)s: Downloaded %(updated)s files to reflect remote changes." msgstr "" #: syncthing_gtk/notifications.py:171 #, python-format msgid "%(hostname)s: Deleted %(deleted)s files to reflect remote changes." msgstr "" #: syncthing_gtk/notifications.py:175 #, python-format msgid "" "%(hostname)s: downloaded %(updated)s files and deleted %(deleted)s files to " "reflect remote changes." msgstr "" #: syncthing_gtk/statusicon.py:48 msgid "Syncthing" msgstr "Syncthing" #: syncthing_gtk/stdownloader.py:174 syncthing_gtk/stdownloader.py:217 #: syncthing_gtk/stdownloader.py:313 syncthing_gtk/stdownloader.py:344 msgid "Failed to determine latest Syncthing version." msgstr "Échec à déterminer la version de Syncthing." #: syncthing_gtk/stdownloader.py:236 msgid "Failed to create temporaly file." msgstr "Impossible de créer le fichier temporaire." #: syncthing_gtk/stdownloader.py:294 msgid "Downloaded file is corrupted." msgstr "Le fichier téléchargé est corrompu." #: syncthing_gtk/tools.py:192 #, python-format msgid "~%s hours ago" msgstr "Il y a ~%s heures" #: syncthing_gtk/tools.py:194 #, python-format msgid "%s minutes ago" msgstr "Il y a %s minutes" #: syncthing_gtk/tools.py:196 #, python-format msgid "%s seconds ago" msgstr "Il y a %s secondes" #: syncthing_gtk/tools.py:197 msgid "just now" msgstr "À l'instant" #: syncthing_gtk/tools.py:199 #, python-format msgid "%s days ago" msgstr "Il y a %s jours" #: syncthing_gtk/tools.py:203 #, python-format msgid "in %s days" msgstr "Dans %s jours" #: syncthing_gtk/tools.py:205 #, python-format msgid "~%s hours from now" msgstr "Dans ~%s heures" #: syncthing_gtk/tools.py:207 #, python-format msgid "%s minutes from now" msgstr "Dans %s minutes" #: syncthing_gtk/tools.py:209 #, python-format msgid "%s seconds from now" msgstr "Dans %s secondes" #: syncthing_gtk/tools.py:210 msgid "in a moment" msgstr "Dans un instant" #: syncthing_gtk/uisettingsdialog.py:58 msgid "UI Settings" msgstr "Réglages de l'Interface Utilisateur" #: syncthing_gtk/uisettingsdialog.py:70 msgid "Unlimited" msgstr "Illimité" #: syncthing_gtk/uisettingsdialog.py:107 #, python-format msgid "Install %(package)s package to enable %(feature)s support" msgstr "Installez le paquet %(package)s pour activer la prise en charge de %(feature)s" #: syncthing_gtk/uisettingsdialog.py:312 msgid "Browse for Syncthing binary" msgstr "Naviguez jusqu'au binaire exécutable de Syncthing" #: syncthing_gtk/wizard.py:53 msgid "First run wizard" msgstr "Assistant de première utilisation" #: syncthing_gtk/wizard.py:137 #, python-format msgid "Please, check error log and fill bug report on %s." msgstr "Veuillez consulter les logs d'erreur et soumettre un rapport de bug à %s." #: syncthing_gtk/wizard.py:141 msgid "Display error log" msgstr "Afficher les logs d'erreur" #: syncthing_gtk/wizard.py:198 msgid "Welcome to Syncthing-GTK first run wizard!" msgstr "Bienvenue dans l'assistant de Syncthing-GTK !" #: syncthing_gtk/wizard.py:200 msgid "It looks like you never have used Syncthing." msgstr "Il semble que c'est votre première utilisation de Syncthing." #: syncthing_gtk/wizard.py:201 msgid "Initial configuration should be created." msgstr "Il s'agit de créer la configuration initiale." #: syncthing_gtk/wizard.py:202 msgid "" "Continue this wizard to create a Syncthing configuration file or abort it to exit." msgstr "Veuillez cliquez sur %s pour la création d'un fichier de configuration de Syncthing ou Quitter pour sortir." #: syncthing_gtk/wizard.py:204 #, python-format msgid "" "If you already had Syncthing daemon configured, please, exit this wizard and" " check your %s folder" msgstr "Si le démon Syncthing est déjà configuré, veuillez quitter cet assistant et contrôler le dossier %s." #: syncthing_gtk/wizard.py:220 msgid "Searching for Syncthing daemon." msgstr "Recherche du démon Syncthing" #: syncthing_gtk/wizard.py:222 syncthing_gtk/wizard.py:394 msgid "Please wait..." msgstr "Veuillez patienter…" #: syncthing_gtk/wizard.py:270 syncthing_gtk/wizard.py:287 msgid "Syncthing daemon not found." msgstr "Impossible de trouver le démon Syncthing." #: syncthing_gtk/wizard.py:271 msgid "Please, use package manager to install the Syncthing package." msgstr "Veuillez utiliser votre gestionnaire de paquets pour installer Syncthing." #: syncthing_gtk/wizard.py:283 msgid "download latest binary" msgstr "téléchargez l'exécutable le plus récent" #: syncthing_gtk/wizard.py:288 syncthing_gtk/wizard.py:302 #, python-format msgid "" "Please, use package manager to install the Syncthing package or " "%(download_link)s from Syncthing page and save it to your %(target)s " "directory." msgstr "Veuillez utiliser votre gestionnaire de paquets pour installer Syncthing ou %(download_link)s depuis la page Syncthing et sauvegardez-le dans le dossier %(target)s" #: syncthing_gtk/wizard.py:296 msgid "Syncthing daemon is too old." msgstr "Le démon Syncthing est trop ancien." #: syncthing_gtk/wizard.py:297 #, python-format msgid "" "Syncthing-GTK needs Syncthing daemon %(min)s or newer, but only %(actual)s " "were found." msgstr "Syncthing-GTK nécessite le démon %(min)s ou plus récent, alors que seulement %(actual)s est installé." #: syncthing_gtk/wizard.py:309 msgid "Alternatively, Syncthing-GTK can download Syncthing binary" msgstr "Sinon Syncthing-GTK peut télécharger l'exécutable Syncthing" #: syncthing_gtk/wizard.py:310 #, python-format msgid "to %s and keep it up-to-date, but this option is meant as" msgstr "dans %s et le maintenir à jour mais cette option de dernier" #: syncthing_gtk/wizard.py:312 msgid "last resort and generally not suggested." msgstr " recours n'est pas recommandée." #: syncthing_gtk/wizard.py:315 msgid "_Download Syncthing binary" msgstr "_Télécharger l'exécutable Syncthing" #: syncthing_gtk/wizard.py:319 msgid "Auto_update downloaded binary" msgstr "Mise à jour _automatique de l'exécutable téléchargé" #: syncthing_gtk/wizard.py:375 msgid "Syncthing daemon binary found." msgstr "Démon Syncthing trouvé" #: syncthing_gtk/wizard.py:377 syncthing_gtk/wizard.py:460 msgid "Binary path:" msgstr "Chemin vers l'éxécutable :" #: syncthing_gtk/wizard.py:378 msgid "Version:" msgstr "Version :" #: syncthing_gtk/wizard.py:393 msgid "Downloading Syncthing daemon." msgstr "Téléchargement du démon Syncthing" #: syncthing_gtk/wizard.py:441 msgid "Failed to download Syncthing daemon package." msgstr "Échec du téléchargement du paquet Syncthing" #: syncthing_gtk/wizard.py:472 msgid "Syncthing is generating RSA key and certificate." msgstr "Syncthing génère la clé RSA et le certificat." #: syncthing_gtk/wizard.py:473 msgid "This may take a while..." msgstr "Cela peut prendre un moment…" #: syncthing_gtk/wizard.py:515 msgid "Failed to generate keys" msgstr "Échec de la génération des clés" #: syncthing_gtk/wizard.py:516 msgid "Syncthing daemon failed to generate RSA key or certificate." msgstr "Échec du démon Syncthing à générer la clé RSA ou le certificat." #: syncthing_gtk/wizard.py:526 msgid "WebUI setup" msgstr "Réglages de l'interface Web" #: syncthing_gtk/wizard.py:528 msgid "" "Syncthing can be managed remotely using WebUI and even if you are going to " "use Syncthing-GTK, WebUI needs to be enabled, as Syncthing-GTK uses it to " "communicate with the Syncthing daemon." msgstr "Syncthing peut s'utiliser à distance via l'interface Web. Même si vous n'utilisez que Syncthing-GTK localement, il est nécessaire d'activer l'interface Web car Syncthing-GTK l'utilise pour communiquer avec le démon de Syncthing." #: syncthing_gtk/wizard.py:533 msgid "" "If you prefer to be able to manage Syncthing remotely, over the internet or " "on your local network, select listen on all interfaces and set " "username and password to protect Syncthing from unauthorized access." msgstr "Si vous souhaitez conserver la possibilité d'utiliser Syncthing à distance, à travers internet ou via votre réseau local, sélectionner écouter toutes les interfaces et paramétrez un nom d'utilisateur et mot passe pour protéger Syncthing d'un accès non autorisé." #: syncthing_gtk/wizard.py:538 msgid "" "Otherwise, select listen on localhost, so only users and programs on " "this computer will be able to interact with Syncthing." msgstr "Sinon sélectionnez écouter localhost afin que seuls les utilisateurs et programmes de cet ordinateur interagissent avec Syncthing." #: syncthing_gtk/wizard.py:544 msgid "WebUI Listen Addresses" msgstr "Adresses écoutées par l'interface Web" #: syncthing_gtk/wizard.py:545 msgid "Listen on _localhost" msgstr "Écoute sur _localhost" #: syncthing_gtk/wizard.py:547 msgid "Listen on _all interfaces" msgstr "Écoute sur _toutes interfaces" #: syncthing_gtk/wizard.py:554 msgid "_Username" msgstr "Nom d'_utilisateur" #: syncthing_gtk/wizard.py:555 msgid "_Password" msgstr "Mot de _passe" #: syncthing_gtk/wizard.py:609 msgid "Saving settings..." msgstr "Sauvegarde des paramètres…" #: syncthing_gtk/wizard.py:610 msgid "Checking for available port..." msgstr "Contrôle des ports disponibles…" #: syncthing_gtk/wizard.py:631 msgid "Failed to find unused port for listening." msgstr "Impossible de trouver un port disponible pour l'écoute." #: syncthing_gtk/wizard.py:632 msgid "Please, check your firewall settings and try again." msgstr "Veuillez vérifier les paramètres du pare-feu et réessayer." #: syncthing_gtk/wizard.py:646 msgid "Saving..." msgstr "Sauvegarde en cours…" #: syncthing_gtk/wizard.py:678 msgid "Failed to load Syncthing configuration" msgstr "Échec du chargement de la configuration de Syncthing" #: syncthing_gtk/wizard.py:705 msgid "Failed to modify Syncthing configuration" msgstr "Échec de la modification de configuration de Syncthing" #: syncthing_gtk/wizard.py:715 msgid "Failed to save Syncthing configuration" msgstr "Échec de la sauvegarde de configuration de Syncthing" #: syncthing_gtk/wizard.py:729 msgid "Done." msgstr "Fait." #: syncthing_gtk/wizard.py:731 msgid "Syncthing has been successfully configured." msgstr "Syncthing est correctement configuré." #: syncthing_gtk/wizard.py:733 msgid "" "You can configure more details later, in UI Settings and Daemon " "Settings menus in main window of application." msgstr "D'autres paramètres de configuration sont accessibles via les menus Interface Utilisateurs et Paramètres du Démon dans la fenêtre principale de l'application." #: about.glade:7 msgid "About Syncthing-GTK" msgstr "À propos de Syncthing-GTK" #: about.glade:10 msgid "GTK GUI and notification area icon for Syncthing" msgstr "Interface Utilisateur Graphique en GTK et icone de zone de notification pour Syncthing" #: about.glade:12 msgid "GitHub" msgstr "Ce programme est fourni sans aucun garantie.\nReportez vous à la licence GNU GPL version 2 ou ultérieure pour plus de détails." #: app.glade:239 app.glade:420 app.glade:802 msgid "Open _Web Interface" msgstr "Ouvrir _Interface Web" #: app.glade:251 app.glade:424 app.glade:814 msgid "Display _Daemon Output" msgstr "Afficher la sortie du _démon" #: app.glade:263 msgid "Display Syncthing-Inotify Output" msgstr "Afficher la sortie de Syncthing-Inotify" #: app.glade:280 app.glade:430 msgid "UI _Settings" msgstr "_Paramètres de l'interface utilisateur" #: app.glade:325 app.glade:451 msgid "Add Shared _Folder" msgstr "Ajouter un _dossier partagé" #: app.glade:338 app.glade:455 msgid "Add _Device" msgstr "Ajouter un _appareil" #: app.glade:356 app.glade:461 msgid "Daemon _Settings" msgstr "Paramètres du _démon" #: app.glade:371 app.glade:465 app.glade:588 app.glade:788 msgid "Show _ID" msgstr "Montrer l'_ID" #: app.glade:391 app.glade:471 msgid "Sh_utdown Daemon" msgstr "_Arrêter le démon" #: app.glade:404 app.glade:475 msgid "_Restart Daemon" msgstr "_Redémarrer le démon" #: app.glade:436 msgid "_About" msgstr "_À propos" #: app.glade:440 msgid "_Quit" msgstr "_Quitter" #: app.glade:490 msgid "Override Remote Changes" msgstr "Passer outre les changements distants" #: app.glade:519 msgid "Edit _Ignore Patterns" msgstr "Éditer les motifs à _ignorer" #: app.glade:547 msgid "_Rescan" msgstr "_Rescanner" #: app.glade:559 msgid "_Browse" msgstr "_Parcourir" #: app.glade:611 msgid "Resume" msgstr "Reprendre" #: app.glade:641 msgid "Connecting to daemon..." msgstr "Connexion au démon…" #: app.glade:669 msgid "S_top Syncthing" msgstr "Arrêter Sync_thing" #: app.glade:683 msgid "Resume Sync_thing" msgstr "Reprendre Sync_thing" #: app.glade:695 daemon-settings.glade:335 msgid "_Incoming Rate Limit" msgstr "Limite de débit _entrant" #: app.glade:709 app.glade:751 msgid "_Unlimited" msgstr "Ill_imité" #: app.glade:718 app.glade:760 msgid "_Other" msgstr "_Autre" #: app.glade:737 msgid "_Outgoing Rate Limit" msgstr "Limite de débit _sortant" #: daemon-output.glade:7 msgid "Daemon Output" msgstr "Sortie du démon" #: daemon-settings.glade:106 msgid "Sync Protocol Listen Addresses" msgstr "Adresses écoutées par le protocole de Sync" #: daemon-settings.glade:136 msgid "Enable Local _Discovery" msgstr "Activer la découverte _locale" #: daemon-settings.glade:153 msgid "Enable _UPnP" msgstr "Acitver l'_UPnP" #: daemon-settings.glade:171 msgid "Local Discovery _Port" msgstr "_Port local de découverte" #: daemon-settings.glade:212 msgid "Outgoing _Rate Limit" msgstr "Limite de débit _sortant" #: daemon-settings.glade:229 msgid "Open browser with _WebUI when daemon is starting" msgstr "Ouvrir l'interface _Web dans le navigateur au démarrage du démon" #: daemon-settings.glade:246 msgid "Enable _Anonymous Usage Reporting" msgstr "_Autoriser l'envoi anonyme de données d'utilisation" #: daemon-settings.glade:262 msgid "Enable _Global Discovery" msgstr "Activer la découverte _globale" #: daemon-settings.glade:281 msgid "Global Discovery _Servers" msgstr "_Serveurs de découverte globale" #: device-edit.glade:102 msgid "Device _ID" msgstr "_ID de l'appareil" #: device-edit.glade:134 msgid "Device _Name" msgstr "_Nom de l'appareil" #: device-edit.glade:166 msgid "Shown instead of Device ID in the cluster status." msgstr "Plutôt que l'ID de l'appareil dans les statuts du groupe." #: device-edit.glade:181 msgid "_Addresses" msgstr "_Adresses" #: device-edit.glade:213 msgid "" "Enter comma separated \"ip:port\" addresses or \"dynamic\" to perform " "automatic discovery of the address." msgstr "Entrer des adresses sur le modèle \"ip:port\" ou \"dynamique\" pour effectuer une découverte automatique des adresses." #: device-edit.glade:242 msgid "Share _Folders" msgstr "Partage des _dossiers" #: device-edit.glade:276 msgid "Select the folders to share with this device" msgstr "Sélectionnez les dossiers à partager avec cet appareil" #: device-edit.glade:287 msgid "_Introducer" msgstr "_Introducteur" #: device-edit.glade:308 msgid "" "Any devices configured on an introducer device will be added to this device " "as well." msgstr "Tous les appareils configurés sur l'appareil introducteur seront également ajoutés à cet appareil." #: device-edit.glade:323 msgid "_Compression" msgstr "_Compression" #: device-id.glade:14 msgid "Device Identification" msgstr "Identification de l'appareil" #: device-id.glade:68 msgid "XYZ-123-ABC" msgstr "XYZ-123-ABC" #: find-daemon.glade:126 ui-settings.glade:821 msgid "_Browse..." msgstr "_Parcourir…" #: find-daemon.glade:179 msgid "_Download..." msgstr "_Télécharger…" #: folder-edit.glade:44 msgctxt "In File Pull Order combobox" msgid "Random" msgstr "Aléatoire" #: folder-edit.glade:48 msgctxt "In File Pull Order combobox" msgid "Alphabetic" msgstr "Alphabétique" #: folder-edit.glade:52 msgctxt "In File Pull Order combobox" msgid "Smallest First" msgstr "Les plus petits d'abord" #: folder-edit.glade:56 msgctxt "In File Pull Order combobox" msgid "Largest First" msgstr "Les plus gros d'abord" #: folder-edit.glade:60 msgctxt "In File Pull Order combobox" msgid "Oldest First" msgstr "Les plus anciens d'abord" #: folder-edit.glade:64 msgctxt "In File Pull Order combobox" msgid "Newest First" msgstr "Les plus récents d'abord" #: folder-edit.glade:82 msgid "Simple" msgstr "Simple" #: folder-edit.glade:86 msgid "Staggered" msgstr "Versionné" #: folder-edit.glade:90 msgid "Trashcan" msgstr "Mode corbeille" #: folder-edit.glade:94 msgid "External" msgstr "Externe" #: folder-edit.glade:171 msgid "Folder _Label" msgstr "Étiqu_ette du dossier" #: folder-edit.glade:202 msgid "Short identifier for the folder. Must be the same on all devices." msgstr "Identifiant court pour le dossier. Doit être le même sur tous les appareils." #: folder-edit.glade:216 msgid "_Path" msgstr "_Chemin" #: folder-edit.glade:234 msgid "" "Path to the folder on the local computer. Will be created if it does not " "exist." msgstr "Chemin vers le dossier sur l'ordinateur local. Sera créé s'il n'existe pas déjà." #: folder-edit.glade:248 msgid "Rescan _Interval" msgstr "Intervalle de _rescan" #: folder-edit.glade:293 msgid "Monitor filesystem for _changes" msgstr "Surveiller les _modifications du système de fichier" #: folder-edit.glade:314 msgid "" "If enabled, changed, created and delete files are synchronized immediately, as long as Syncthing-GTK is running.\n" "Note: Using this along with short Rescan Interval (<300s) may consume a lot of resources." msgstr "Si activé, toute création, modification ou suppression de fichier est instantanément synchronisée, tant que Syncthing-GTK est en cours d'éxécution.\nRemarque : Cette option employée avec un intervalle de re-scan court ≤300s est gourmande en ressources." #: folder-edit.glade:343 msgid "Browse..." msgstr "Parcourir…" #: folder-edit.glade:366 msgid "Folder _ID" msgstr "_ID du dossier" #: folder-edit.glade:396 msgid "" "Optional descriptive label for the folder. Can be different on each device." msgstr "Étiquette optionnelle de description du dossier. Peut être différente sur chaque appareil." #: folder-edit.glade:418 msgid "_Send Only Folder" msgstr "" #: folder-edit.glade:439 msgid "" "Files are protected from changes made on other devices, but changes made on " "this device will be sent to the rest of the cluster." msgstr "Les fichiers sont protégés des changement effectués sur les autres appareils, mais les changements effectués sur cet appareil seront diffusés dans tout le groupe." #: folder-edit.glade:456 msgid "_Folder Settings" msgstr "Paramètres du _dossier" #: folder-edit.glade:476 msgid "Select the devices to share this folder with." msgstr "Sélectionner les appareils avec qui partager ce dossier." #: folder-edit.glade:514 msgid "Share With _Devices" msgstr "Partager avec les _appareils" #: folder-edit.glade:535 msgid "Versioning _Mode" msgstr "_Mode de versionning" #: folder-edit.glade:590 msgid "" "Files are moved to date stamped versions in a .stversions folder when " "replaced or deleted by syncthing." msgstr "Lorsqu'ils sont remplacés ou effacés par syncthing, les fichiers sont déplacés dans un dossier .stversions et renommés par horodatage." #: folder-edit.glade:605 msgid "_Keep Versions" msgstr "Versions à _conserver" #: folder-edit.glade:642 msgid "The number of old versions to keep, per file." msgstr "Le nombre d'anciennes versions à conserver, par fichier." #: folder-edit.glade:671 msgid "" "Files are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing. Versions are automatically deleted if they are older than the maximum age or exceed the number of files allowed in an interval.\n" "\n" "The following intervals are used: for the first hour a version is kept every 30 seconds, for the first day a version is kept every hour, for the first 30 days a version is kept every day, until the maximum age a version is kept every week." msgstr "Lorsqu'ils sont remplacés ou effacés par syncthing, les fichiers sont déplacés dans un dossier .stversions et renommés par horodatage. Les versions sont automatiquement effacées en fonction de leur age ou leur nombre, déterminés pour un intervalle.\n\nLes intervalles sont les suivants : pendant la première heure, une version est conservée toutes les 30 secondes ; pendant le premier, jour une version par heure ; les 30 jours suivants, une version par jour ; et jusqu'à l'age maximal, une version par semaine." #: folder-edit.glade:688 msgid "Ma_ximum Age" msgstr "Age ma_ximal" #: folder-edit.glade:727 msgid "Versions _Path" msgstr "Dossier de _stockage des versions" #: folder-edit.glade:759 msgid "" "Path where versions should be stored (leave empty for the default " ".stversions folder)." msgstr "Indiquer le dossier où stocker les versions - si laissé vide, c'est le dossier par défaut .stversions" #: folder-edit.glade:787 msgid "" "Files are moved to .stversions folder when replaced or deleted by Syncthing" msgstr "Lorsqu'ils sont remplacés ou effacés par syncthing, les fichiers sont déplacés dans le dossier .stversions" #: folder-edit.glade:801 msgid "Clean out _after" msgstr "Nettoyer _après" #: folder-edit.glade:840 msgid "The number of days to keep files in the trash can." msgstr "Nombre de jours où conserver les fichiers dans la corbeille." #: folder-edit.glade:869 msgid "" "An external command handles the versioning. It has to remove the file from " "the synced folder." msgstr "Une commande externe gère le versionning. Celle-ci retire le fichier du dossier synchronisé." #: folder-edit.glade:884 msgid "Command" msgstr "Commande" #: folder-edit.glade:917 msgid "" "The first command line parameter is the folder path and the second parameter" " is the relative path in the folder." msgstr "Le premier paramètre pour la ligne de commande est le chemin vers le dossier et le second paramètre, le chemin relatif dans ce dossier." #: folder-edit.glade:953 msgid "File _Versioning" msgstr "_Versionning de fichier" #: folder-edit.glade:982 msgid "Ignore P_ermissions" msgstr "Ignorer les _permissions." #: folder-edit.glade:1003 msgid "" "File permission bits are ignored when looking for changes. Use on FAT " "filesystems." msgstr "Les droits/permissions des fichiers ne sont pas pris en compte. Utiliser cette option avec les systèmes de fichiers FAT." #: folder-edit.glade:1018 msgid "Minimum Free Disk Space" msgstr "Espace disque libre minimal" #: folder-edit.glade:1057 msgid "File Pull _Order" msgstr "_Ordre de traitement des fichiers" #: folder-edit.glade:1103 ui-settings.glade:954 msgid "_Advanced" msgstr "_Avancé" #: ignore-editor.glade:8 msgid "Ignore Patterns" msgstr "Ignore les motifs" #: ignore-editor.glade:99 msgid "" "See Syncthing " "documentation for list of supported patterns" msgstr "Reportez-vous à la documentation Syncthing pour la liste des motifs supportés." #: ignore-editor.glade:114 msgid "File location: " msgstr "Emplacement du fichier :" #: ui-settings.glade:27 msgid "Lowest" msgstr "Le plus faible" #: ui-settings.glade:31 msgid "Low" msgstr "Faible" #: ui-settings.glade:35 msgid "Normal" msgstr "Normal" #: ui-settings.glade:39 msgid "Above Normal" msgstr "Au dessus de la normale" #: ui-settings.glade:46 msgid "Syncthing-GTK Settings" msgstr "Réglages de Syncthing-GTK" #: ui-settings.glade:69 msgid "Please, restart Syncthing-GTK to apply all changed settings" msgstr "Veuillez redémarrer Syncthing-GTK pour appliquer les changements" #: ui-settings.glade:136 msgid "When starting and Syncthing daemon is not running..." msgstr "Si au démarrage le démon Syncthing n'est pas en cours d'éxécution…" #: ui-settings.glade:147 msgid "... _wait for daemon" msgstr "…l'_attendre" #: ui-settings.glade:164 msgid "... start daemon in _background" msgstr "…le démarrer en arrière-_plan" #: ui-settings.glade:180 msgid "... _ask me what to do" msgstr "…me _demander quoi faire" #: ui-settings.glade:199 msgid "When exiting after daemon was started in background..." msgstr "Lorsque le démon s'exécute en arrière-plan, à la fermeture…" #: ui-settings.glade:210 msgid "... terminate _daemon" msgstr "…éteindre le _démon" #: ui-settings.glade:226 msgid "... leave daemon _running" msgstr "…le _laisser en fonction" #: ui-settings.glade:242 msgid "... ask me w_hat to do" msgstr "…me demander quoi _faire" #: ui-settings.glade:258 msgid "Us_e traditional window header" msgstr "Utiliser la barre de titre de fenêtre traditionnelle" #: ui-settings.glade:278 msgid "Display desktop notifications for..." msgstr "Afficher les notifications sur le bureau pour…" #: ui-settings.glade:289 msgid "... file updates" msgstr "…les mises à jour de fichier" #: ui-settings.glade:304 msgid "... errors" msgstr "…les erreurs" #: ui-settings.glade:319 msgid "... synchronization completion" msgstr "…les synchronisations terminées" #: ui-settings.glade:334 msgid "Start Syncthing-GTK when I login to my desktop" msgstr "Démarrer Syncthing-GTK à l'ouverture de ma session" #: ui-settings.glade:350 msgid "Minimize to _tray on start" msgstr "Réduire dans la _zone de notification au démarrage" #: ui-settings.glade:366 msgid "Use _icons in menu" msgstr "Utiliser les _icônes dans les menus" #: ui-settings.glade:383 msgid "Display paths in directories panel" msgstr "Afficher les emplacements dans les vues des dossiers" #: ui-settings.glade:399 msgid "Force _dark theme" msgstr "Forcer le thème _sombre" #: ui-settings.glade:536 msgid "Tray icon style" msgstr "Style de l’icône de notification " #: ui-settings.glade:27 ui-settings.glade:49 msgid "Default" msgstr "Par défaut" #: ui-settings.glade:31 msgid "Black" msgstr "Noir" #: ui-settings.glade:35 msgid "White" msgstr "Blanc" #: ui-settings.glade:549 msgid "Language" msgstr "Langue" #: ui-settings.glade:474 msgid "_Interface" msgstr "_Interface" #: ui-settings.glade:492 msgid "Integrate Syncthing with filemanagers" msgstr "Intégrer Syncthing au gestionnaire de fichiers" #: ui-settings.glade:507 msgid "Nemo (Cinamon Desktop)" msgstr "Nemo (env. de bureau Cinamon)" #: ui-settings.glade:524 msgid "Nautilus (Ubuntu/GNOME)" msgstr "Nautilus (env. de bureau Ubuntu-Unity ou Gnome)" #: ui-settings.glade:540 msgid "Caja (MATE Desktop)" msgstr "Caja (env. de bureau Mate)" #: ui-settings.glade:579 msgid "" "Note: You may need to restart your filemanager after toggling " "integration." msgstr "remarque : il peut être nécessaire de redémarrer le gestionnaire de fichiers pour activer l'intégration." #: ui-settings.glade:598 msgid "_Integration" msgstr "Integrat_ion" #: ui-settings.glade:627 msgid "Keep Syncthing binary up-to-date" msgstr "Maintenir à jour l'exécutable Syncthing" #: ui-settings.glade:647 msgid "" "If enabled, Syncthing-GTK will automatically check for new daemon releases " "and replace binary with latest version." msgstr "Activé, Syncthing-GTK vérifiera automatiquement l'existence de mise à jour et remplacera l’exécutable par sa version la plus récente." #: ui-settings.glade:662 msgid "Daemon process priority" msgstr "Priorité du processus démon" #: ui-settings.glade:698 msgid "" "Priority will be used only if \"start daemon in background\" option " "is checked on \"Interface\" page." msgstr "Cette priorité sera utilisée si l'option \"démarrrer en arrière-plan\" a été choisie à la page \"Interface\"." #: ui-settings.glade:713 msgid "Maximum number of CPU cores" msgstr "Nombre maximum de processeurs" #: ui-settings.glade:731 msgid "" "Sets the maximum number of CPU cores for daemon to use. This value will be " "used only if \"start daemon in background\" option is checked on " "\"Interface\" page." msgstr "Nombre max. de processeurs utilisés par le démon. Cette valeur sera utilisée si l'option \"démarrrer en arrière-plan\" a été choisie à la page \"Interface\"." #: ui-settings.glade:786 msgid "Daemon" msgstr "Démon" #: ui-settings.glade:808 msgid "" "This binary will be started when syncthing daemon is not running and " "\"start daemon in background\" option is checked on " "\"Interface\" page." msgstr "Cet exécutable sera démarré si le démon syncthing ne l'est pas déjà et si l'option \"démarrrer en arrière-plan\" a été choisie à la page \"Interface\"." #: ui-settings.glade:838 msgid "Syncthing binary location" msgstr "Emplacement de l'éxécutable Syncthing" #: ui-settings.glade:867 msgid "Daemon arguments and variables" msgstr "Arguments et variables du démon" #: ui-settings.glade:897 msgid "" "Space-separated list of arguments and environment variables passed when starting above binary\n" "\n" "Use VARIABLE=\"value\" to set variable and -argument=\"value\" (with dash) for argument.\n" "\n" "If you need to pass commandline to different command (such as logger or ionice), separate prefixed arguments with exclamation mark \"!\"\n" "\n" "Example:\n" " STTRACE=\"all\" logger -t /var/log/syncthing.log ! -logflags=10" msgstr "Liste des arguments et variables d'environnement, séparés par des espaces, utilisée par l’exécutable.\n\nUtiliser VARIABLE=\"valeur\" pour créer la variable et argument=\"valeur\" (avec les guillemets) pour l'argument.\n\nSi vous avez besoin de passer des options à différentes commandes (telles que logger ou ionice), séparez les arguments avec un point d'exclamation « ! »\n\nExemple:\nSTTRACE=\"all\" logger -t /var/log/syncthing.log ! -logflags=10" #: ui-settings.glade:921 msgid "" "Warning: Changing settings on this page may prevent you from using " "Syncthing-GTK" msgstr "Attention : les modifications apportées à cette page peuvent casser le fonctionnement de Syncthing-GTK" syncthing-gtk-0.9.4.4/locale/hu/000077500000000000000000000000001352162771300163415ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/locale/hu/LC_MESSAGES/000077500000000000000000000000001352162771300201265ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/locale/hu/LC_MESSAGES/syncthing-gtk.mo000066400000000000000000001111061352162771300232540ustar00rootroot00000000000000l| x>yB?E;Bc( D M T \ h p          !!&!@!`!!Q!W!?" S"`"s"" """" ":",&#!S#u#]##T$-X$$ $$$ $$$%g%!%%-&L&]&q&!y& &&& &&'''!''$'D(RT(( (((()5 )]B)) ) ) ))$)*")*5L*D** ****+6+T+c+y+!++ +e+?,E,T,],f, {,-,,,,)-@-&X-)-(-&--!.9.J.[.j.Rz..K.g//`11 1 1 2 2!212,C2p22 2 2r2P&3aw3=344u55555&5)5(#6(L6"u6*6 6(696%37 Y7Dd7,7 77 8 8$898 O8[8_8 f8s8 8888 889)9/94979>9B9J9$Q9v909K9: ::::O:V;o; v;;2;3;K;;D<<==FN=o=> >">2>C>X>_>q>> >>>v>>?-[?,?? ??y@@@ @A@ @A1A"BAeAklAA tC.~C CCCCC, D9DRDeD mDwDDDD(xEE.E;E+FHFdF+F0F7FG 0G>GVUG6G3GmH)HHpGI2I-IJJ#JJJ K K K=*K+hKK KKK KK KK LL%L.L?L%NLtL L*L6L4L.M 4M@M{DMM!NiNOO $O /O9O AO LOYO tOOOO O O OOOO OPPP)P1P:PJP \P gPqPzP P PP(P PPP9P 2Q@QSQRSM[SYSMTYQTnTU:UCUJUQUZUbUvUUUUUU UU V#V6VSV(oV#VVjVyCWWWWX$XCXYX ^XjX2XCX;X':YbYiYY]Z4aZ.ZZZZ Z ["[#A[e[)[\"\ \\])] I]/W]$] ]"]]*q^#^^,^m _qw___`"`:`M`D^``-a@a Taaara&aa,aCaB8b{bbbbbbc $c!2c!Tc>vc&cccd d ddd/d=d72e%jeEe'e4e23f6ff1f+f.f*gAg [g hguuggig[h@h#kkk kk ll0lIPll$lll|m_mvm;Wnn!o)2p\p)op,p*ppqq#q6qFqWq2hqQq)q rl!rAr#rrr s)s@s[sjssssssss/s$t:t!Rttt yttt t t t8tt?uGHuuDvVv$ovvdviw lwvw wHwDwfx`xx8{yAyyz zzzz zz{({ C{ N{Y{t{${8|:W|| ||}}}}F}&~<~CY~+~ ~o~ C PH]  ρ!ہ3B]t ‚ۂ9-/T>!Ԅ"5CL Ӆ<d3ՆEXiXBˆ17# )=QiK;͊ 2BV#\&ދ 'GY;r:- */ e o| ׏  - 7BX`z  Ȑ ", GU n x ÑNё 6h"1XmJ6dp^Q^MjY`NfAKOaF_lY[? %A k)-"Q,$%7) GTjq! &_R}H|;Ib70;?</i,a*x$:3[>(V*1@PcgcE I:ov(<Sl='T\Gu8nBK9\ NC4>zS9r+{2&0 . `4 ]Zd#-V8UB W!UtE6+L eDFih3~P='R52yD#CJ]@O.XsfLHZ5bkgwMeW/%(device)s wants to share folder "%(folder)s". Add new folder?%(hostname)s: Deleted %(deleted)s files to reflect remote changes.%(hostname)s: Deleted '%(filename)s' to reflect remote changes.%(hostname)s: Downloaded %(updated)s files to reflect remote changes.%(hostname)s: Downloaded '%(filename)s' to reflect remote changes.%(hostname)s: downloaded %(updated)s files and deleted %(deleted)s files to reflect remote changes.%(online)s/%(total)s online%s KiB/s%s day%s days%s days ago%s kB/s%s minutes ago%s minutes from now%s seconds ago%s seconds from now%s%%%ss(watch)... _ask me what to do... _wait for daemon... ask me w_hat to do... errors... file updates... leave daemon _running... start daemon in _background... synchronization completion... terminate _daemonNote: You may need to restart your filemanager after toggling integration.Warning: Changing settings on this page may prevent you from using Syncthing-GTKAbout Syncthing-GTKAbove NormalAccept device "%s"Accept folder "%s"Add Shared _FolderAdd _DeviceAddressAll DataAll devices offlineAllow Anonymous Usage Reporting?Alternatively, Syncthing-GTK can download Syncthing binaryAlways do same; Don't show this window againAlways start daemon automaticallyAn error occurred in Syncthing!An external command handles the versioning. It has to remove the file from the synced folder.Announce ServerAny devices configured on an introducer device will be added to this device as well.Attempting to download recent, please wait...Auto_update downloaded binaryBinary path:BlackBrowse for Syncthing binaryBrowse...CPU UtilizationCaja (MATE Desktop)Can't invoke the daemonCannot authorize with daemon. Please, use WebUI to generate API key or disable password authentication.Cannot download Syncthing daemon.Changes from other devices are applied to files on this device, but changes made on this device are not sent to the rest of the cluster. Checking for available port...Clean out _afterCluster out of syncCommandCompleted synchronization in "%s"CompressionConflict in path "%s" detected.Conflicting file in "%s"ConnectedConnected to Syncthing daemonConnecting to %s failed; the remote device speaks an older version of the protocol (%s) not compatible with this versionConnecting to Syncthing daemon at %s...Connecting to Syncthing daemon...Connecting to daemon...Connection to Syncthing daemon lost.Connection to daemon failed. Check your configuration and try again.Continue this wizard to create a Syncthing configuration file or abort it to exit.DaemonDaemon OutputDaemon _SettingsDaemon arguments and variablesDaemon process priorityDefaultDevice "%s" is trying to connect to syncthing daemon.Device "%(name)s" (%(device)s) at IP "%(ip)s" wants to connect. Add new device?Device IdentificationDevice _IDDevice _NameDisconnectedDisplay _Daemon OutputDisplay desktop notifications for...Display error logDisplay paths in directories panelDo you really want remove device '%s' from Syncthing?Do you really want to permanently stop synchronizing directory '%s'?Done.Download RateDownload failed.Download finished.Downloaded file is corrupted.Downloading Syncthing %sDownloading Syncthing daemon.Downloading...Edit _Ignore PatternsEnable Local _DiscoveryEnable _Anonymous Usage ReportingEnable _Global DiscoveryEnable _UPnPEnter comma separated "ip:port" addresses or "dynamic" to perform automatic discovery of the address.ErrorError message:Exiting.ExternalExtracting update...Failed to create temporary file.Failed to determine latest Syncthing version.Failed to download Syncthing daemon package.Failed to download upgrade: %sFailed to find unused port for listening.Failed to generate keysFailed to load Syncthing configurationFailed to load configuration from daemon.Failed to modify Syncthing configurationFailed to save Syncthing configurationFailed to save configuration.Failed to start Syncthing daemon.File Pull _OrderFile _VersioningFile location:File location: File permission bits are ignored when looking for changes. Use on FAT filesystems.FilesFiles are moved to .stversions folder when replaced or deleted by SyncthingFiles are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing.Files are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing. Versions are automatically deleted if they are older than the maximum age or exceed the number of files allowed in an interval. The following intervals are used: for the first hour a version is kept every 30 seconds, for the first day a version is kept every hour, for the first 30 days a version is kept every day, until the maximum age a version is kept every week.Files are protected from changes made on other devices, but changes made on this device will be sent to the rest of the cluster.First run wizardFolder IDFolder TypeFolder _IDFolder _LabelFolder rejectedForce _dark themeGUI and notification area icon for SyncthingGenerate RandomGlobal Discovery _ServersGlobal StateHide WindowIf enabled, Syncthing-GTK will automatically check for new daemon releases and replace binary with latest version.If the reported data set is changed you will be prompted with this dialog again.If you already had Syncthing daemon configured, please, exit this wizard and check your %s folderIf you have Syncthing installed, please, set path to %s belowIf you have Syncthing installed, please, set path to %s below or click on Download button to download latest Syncthing package.If you prefer to be able to manage Syncthing remotely, over the internet or on your local network, select listen on all interfaces and set username and password to protect Syncthing from unauthorized access.Ignore P_ermissionsIgnore PatternsIgnore PermissionsIgnore device "%s"Ignore folder "%s"In File Pull Order comboboxAlphabeticIn File Pull Order comboboxLargest FirstIn File Pull Order comboboxNewest FirstIn File Pull Order comboboxOldest FirstIn File Pull Order comboboxRandomIn File Pull Order comboboxSmallest FirstIncompatibleInitial configuration should be created.Install %(package)s package to enable %(feature)s supportIntegrate Syncthing with filemanagersIntroducerIt is used to track common platforms, folder sizes and app versions.It looks like you never have used Syncthing.Keep Syncthing binary up-to-dateLanguageLast SeenListen on _all interfacesListen on _localhostLocal Discovery _PortLocal StateLowLowestMa_ximum AgeMaximum number of CPU coresMetadata OnlyMinimize to _tray on startMinimum Free Disk SpaceMonitor filesystem for _changesMore infoNautilus (Ubuntu/GNOME)Nemo (Cinamon Desktop)NeverNextNoNormalOffOfflineOnlineOpen Conflicting file in filemanagerOpen _Web InterfaceOpen browser with _WebUI when daemon is startingOptional descriptive label for the folder. Can be different on each device.Otherwise, select listen on localhost, so only users and programs on this computer will be able to interact with Syncthing.Out Of SyncOutgoing _Rate LimitOverride Remote ChangesPathPath to the folder on the local computer. Will be created if it does not exist.Path where versions should be stored (leave empty for the default .stversions folder).PausedPlease waitPlease wait...Please, check error log and fill bug report on %s.Please, check your firewall settings and try again.Please, check your installation or set new path to Syncthing daemon binary.Please, restart Syncthing-GTK to apply all changed settingsPlease, use package manager to install the Syncthing package or %(download_link)s from Syncthing page and save it to your %(target)s directory.Please, use package manager to install the Syncthing package.Possible cause: Is there another web server running on Syncthing port?Priority will be used only if "start daemon in background" option is checked on "Interface" page.RAM UtilizationReceive OnlyRescan IntervalRescan _IntervalRestarting daemon...ResumeResume Sync_thingS_top SyncthingSaving settings...Saving...ScanningSearching for Syncthing daemon.See Syncthing documentation for list of supported patternsSelect Folder for new FolderSelect the devices to share this folder with.Select the folders to share with this deviceSend & ReceiveSend OnlySets the maximum number of CPU cores for daemon to use. This value will be used only if "start daemon in background" option is checked on "Interface" page.Sh_utdown DaemonShare With _DevicesShare _FoldersShared WithShort identifier for the folder. Must be the same on all devices.Show WindowShow _IDShown instead of Device ID in the cluster status.Shutdown Syncthing daemon as well?SimpleSorry, connecting to HTTPS is not supported on this platform. Please, use WebUI to disable HTTPS try again.Space-separated list of arguments and environment variables passed when starting above binary Use VARIABLE="value" to set variable and -argument="value" (with dash) for argument. If you need to pass commandline to different command (such as logger or ionice), separate prefixed arguments with exclamation mark "!" Example: STTRACE="all" logger -t /var/log/syncthing.log ! -logflags=10StaggeredStart Syncthing-GTK when I login to my desktopStart it now?Starting Syncthing daemonStoppedSync Protocol Listen AddressesSynchronizationSynchronization of folder '%s' is completed.Synchronizing %s foldersSynchronizing '%s'SyncingSyncthingSyncthing Daemon SettingsSyncthing binarySyncthing binary locationSyncthing can be managed remotely using WebUI and even if you are going to use Syncthing-GTK, WebUI needs to be enabled, as Syncthing-GTK uses it to communicate with the Syncthing daemon.Syncthing daemon binary cannot be found.Syncthing daemon binary found.Syncthing daemon doesn't appear to be running.Syncthing daemon failed to generate RSA key or certificate.Syncthing daemon is too old.Syncthing daemon not found.Syncthing has been shut down.Syncthing has been successfully configured.Syncthing is generating RSA key and certificate.Syncthing is probably restarting or has been shut down.Syncthing is restarting.Syncthing-GTKSyncthing-GTK SettingsSyncthing-GTK needs Syncthing daemon %(min)s or newer, but only %(actual)s were found.Syncthing-GTK started and running in notification areaThe aggregated statistics are publicly available atThe configuration has been saved but not activated. Syncthing must restart to activate the new configuration.The encrypted usage report is sent daily.The entered device ID does not look valid. It should be a 52 character string consisting of letters and numbers, with spaces and dashes being optional.The first command line parameter is the folder path and the second parameter is the relative path in the folder.The number of days to keep files in the trash can.The number of old versions to keep, per file.This binary will be started when syncthing daemon is not running and "start daemon in background" option is checked on "Interface" page.This may take a while...This platform (%s) is not supportedTrashcanTray icon styleTry again.UI SettingsUI _SettingsUnexpected folder "%(folder)s" sent from device "%(device)s".Unexpected folder ID sent from device "%s".Unknown DeviceUnlimitedUnsharedUnusedUp to DateUpdates in folder "%s"Upload RateUs_e traditional window headerUse _icons in menuVersionVersion:Versioning _ModeVersions _PathWaiting for Syncthing daemon at %s...WebUI Listen AddressesWebUI setupWelcome to Syncthing-GTK first run wizard!When exiting after daemon was started in background...When starting and Syncthing daemon is not running...WhiteXYZ-123-ABCYesYou can configure more details later, in UI Settings and Daemon Settings menus in main window of application.Your Windows version doesn't supports cryptographic standards needed for Syncthing-GTK to check for Syncthing updates. Please, install this Windows update or disable update feature.Your syncthing daemon is too old.Your syncthing daemon is too old. Please, upgrade syncthing package at least to version %s and try again._About_Add_Addresses_Advanced_Browse_Browse..._Compression_Download Syncthing binary_Download..._Folder Settings_Ignore_Incoming Rate Limit_Integration_Interface_Introducer_Keep Versions_Other_Outgoing Rate Limit_Password_Path_Quit_Receive Only Folder_Rescan_Restart_Restart Daemon_Send Only Folder_Unlimited_Usernamedisableddownload latest binaryin %s daysin a momentjust nowlast resort and generally not suggested.never deleteno limitofflineto %s and keep it up-to-date, but this option is meant as~%s hours ago~%s hours from nowProject-Id-Version: syncthing-gtk Report-Msgid-Bugs-To: POT-Creation-Date: 2016-04-20 11:27+0200 PO-Revision-Date: 2019-08-03 12:15+0000 Last-Translator: Gyuris Gellért Language-Team: Hungarian (http://www.transifex.com/syncthing-gtk/syncthing-gtk/language/hu/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: hu Plural-Forms: nplurals=2; plural=(n != 1); %(device)s szeretne megosztani e mappát: „%(folder)s”. Hozzáadható a mappa?%(hostname)s: %(deleted)s fájl törölve, a távoli változásokat követve.%(hostname)s: A(z) „%(filename)s” fájl törölve, a távoli változásokat követve.%(hostname)s: %(updated)s fájl letöltve, a távoli változásokat követve.%(hostname)s: A(z) „%(filename)s” fájl letöltve, a távoli változásokat követve.%(hostname)s: %(updated)s fájl letöltve, és %(deleted)s fájl törölve, a távoli változásokat követve.%(online)s/%(total)s elérhető%s KiB/s%s nap%s nap%s napja%s kB/s%s perccel ezelőtt%s perc múlva%s másodperccel ezelőtt%s másodperc múlva%s%%%ss(watch)… _kérdezze meg, mi a teendő… _várakozzon a démonra… kérdezze meg, mi a _teendő… hibák esetén… fájlfrissülés esetén… hagyja a démont _futni… indítsa el a démont a _háttérben… szinkronizálás befejezésekor… állítsa le a _démontFigyelem: Az integráció bekapcsolásához valószínűleg újra kell indítani a fájlkezelőket.Figyelem: Az ezen az oldalon lévő beállítások módosítása megakadályozhatja a Syncthing-GTK használatát.Syncthing-GTK névjegyeNormáltól magasabbEszköz elfogadása: „%s”Mappa elfogadása: „%s”Megosztott _mappa hozzáadása_Eszköz hozzáadásaCímMinden adatMinden eszköz elérhetetlenElküldhetően a névtelen felhasználási adatok?Egyébként a Syncthing-GTK le tudja tölteni a Syncthing bináristMindig így történjen. Ne jelenjen meg újra ez az ablak.A démon automatikus indítása mindig Hiba történt a Synchtingben!Külső program kezeli a fájlverzió-követést. Az távolítja el a fájlt a szinkronizált mappából.Bejelentő kiszolgálóMinden, a bevezető eszközön beállított eszköz hozzá lesz adva ehhez az eszközhöz is.Kísérlet a legfrissebb letöltésére, türelem…Letöltött bináris automatikus _frissítéseBináris útvonala:FeketeSyncthing bináris tallózásaTallózás…ProcesszorhasználatCaja (MATE asztali környezet)Nem sikerült hivatkozni a démonraNem sikerült a hitelesítés a démonnal. A webes felületen lehet API kulcsot előállítani vagy kikapcsolni a jelszavas védelmet.Nem lehet letölteni a Syncthing démont.A többi eszköz módosításai alkalmazva lesznek ennek az eszköznek a fájljain, de az ezen az eszközön történt módosítások nem lesznek elküldve a fürt többi tagjának. Elérhető portok ellenőrzése…TakarításKlaszter nincs szinkronbanParancsSzinkronizálás befejeződött: „%s”TömörítésKonfliktus található az útvonalon: „%s”.Konfliktusban álló fájl: „%s”KapcsolódvaKapcsolódva a Syncthing démonhozNem sikerült a kapcsolódás: %s. A távoli eszköz a protokoll régi verzióját (%s) használja, mely nem kompatibilis ezzel a verzióval.Kapcsolódás a Syncthing démonhoz: %s…Kapcsolódás a Syncthing démonhozCsatlakozás a démonhoz…A kapcsolat elveszett a Syncthing démonnal.Nem sikerült a kapcsolódás a démonhoz. Javasolt ellenőrizni a konfigurációt, majd újra próbálkozni.A varázsló folytatásával létre fog jönni a Syncthing konfigurációs fájl, vagy kilépéssel megszakad ez.DémonDémon kimeneteDémon _beállításaiDémon argumentumai és változóiDémon prioritásaAlapértelmezettKapcsolódni próbál ez az eszköz a Syncthing démonhoz: „%s”.„%(name)s” eszköz (%(device)s) csatlakozni szeretne a következő IP címről: „%(ip)s”. Hozzáadható az eszköz?EszközazonosítóEszköz_azonosítóEszköz_névKapcsolat bontva_Démon kimeneteAsztali értesítések alkalmazása…Hibajegyzék megjelenítéseÚtvonalak megjelenítése a mappák panelenValóban eltávolítandó ezen távoli eszköz a Syncthingből: %s?Valóban véglegesen leállítandó e mappa szinkronizálása: %s?Kész.Letöltési sebességLetöltés nem sikerült.A letöltés befejeződött.A letöltött fájl sérült.Syncthing %s letöltéseSyncthing démon letöltése.Letöltés…Kihagyási _minták szerkesztéseHelyi felfedezés engedélyezéseNévtelen felhasználási adatok küldésének engedélyezése_Globális felfedezés engedélyezése_UPnP engedélyezéseVesszővel elválasztott listában lehet megadni az "ip:port" címeket, ill. a "dynamic" kulcsszót az automatikus felfedezés végrehajtásához.HibaHibaüzenet:Kilépés.KülsőFrissítés kibontása…Nem sikerült létrehozni az ideiglenes fájlt.Nem sikerült meghatározni a legfrissebb Syncthing verziót.Nem sikerült letölteni a Syncthing démon csomagját.Hiba a frissítés letöltésekor: %sNem sikerült használaton kívüli portokat találni a figyeléshez.Nem sikerült a kulcsok előállításaNem sikerült betölteni a Syncthing konfigurációtNem sikerült betölteni a démon beállításait.Nem sikerült módosítani a Syncthing konfigurációtNem sikerült menteni a Syncthing konfigurációtNem sikerült elmenteni a beállításokat.Nem sikerült elindítani a Syncthing démont.Fájlküldési sorrendFájlok verziókövetéseFájl helye:Fájl helye:Fájljogosultságok figyelmen kívül hagyása változások keresésekor. FAT fájlrendszerek használatakor hasznos.fájlHa a Syncthing áthelyezi vagy törli a fájlokat, akkor azok a .stversions mappába lesznek áthelyezve.Ha a Syncthing felülírja vagy törli a fájlokat, akkor azok a .stversions mappába lesznek áthelyezve, időbélyegzővel ellátva.Ha a Syncthing felülírja vagy törli a fájlokat, akkor azok a .stversions mappába lesznek áthelyezve, időbélyegzővel ellátva. A régi verziók automatikusan törlődnek, amennyiben öregebbek mint a maximum kor, vagy már több van belőlük mint az adott időszakban megtartható maximum. A következő intervallumok használatosak: egy régi verziót őrzünk meg az első órában minden 30 másodpercben, az első nap minden órában, az első 30 napban minden nap, egészen addig amíg el nem érjük a maximálisan megtartható verziók számát minden héten.A fájlok védve vannak a más eszközökön történt változásokkal szemben, de az ezen az eszközön történt változások érvényesek lesznek a többire.Elsőindítás-varázslóMappaazonosítóMappatípusMapp_aazonosítóMappacímkeVisszautasított mappa_Sötét téma kényszerítéseA Syncthing grafikus felületének és értesítési területének ikonjaVéletlenszerű előállításaGlobális felfedezési kiszolgálókGlobális állapotAblak elrejtéseBekapcsolva a Syncthing-GTK automatikusan ellenőrzi a friss kiadásokat és lecserél a binárist a legfrissebb verzióval.Az elküldött adatcsomag változása esetén ismételt engedélyezési kérés fog megjelenni.Ha már konfigurálva van a Syncthing démon, javasolt kilépni ebből a varázslóból és ellenőrizni a mappát: %sHa telepítve van már a Syncthing, alább kell megadni: %sHa telepítve van már a Syncthing, alább kell megadni: %s, vagy a Letöltés gombbal indítható a lefrissebb Syncthing letöltése.Ha a Syncthinget távolról, az internetről vagy a helyi hálózatról is szeretnénk kezelni, válasszuk a figyelés minden interfészen opciót és adjunk meg egy felhasználói nevet és jelszót a Syncthinghez való idegen hozzáférések megakadályozására.Jogosultságok figyelmen kívül hagyásaKihagyási mintákJogosultságok figyelmen kívül hagyásaEszköz figyelmen kívül hagyása: „%s”Mappa figyelmen kívül hagyása: „%s”ABC sorrendbenNagyobb előszörÚjabb előszörRégebbi előszörVéletlenszerűKisebb előszörNem kompatibilisSzükséges a kezdő beállítások létrehozása.%(feature)s szolgáltatásokhoz ezeket a csomagokat kell telepíteni: %(package)sSyncthing integrálása a fájlkezelőkbeBevezetőArra használjuk őket, hogy kövessük a különböző platformokat, mappaméreteket és programverziókat.Úgy tűnik, hogy még soha nem lett lett elindítva a Syncthing.Syncthing bináris frissen tartásaNyelvUtoljára látvaFigyelés minden interfészenFigyelés _localhostonHelyi felfedezés _portja:Helyi állapotAlacsonyLegalacsonyabbMa_ximális korCPU magok maximális számaCsak metaadatokIndítás a _tálcánMinimális szabad lemezterületFájlrendszer megfigyelése a _változásokértTovábbi információNautilus (Ubuntu/GNOME)Nemo (Cinamon asztali környezet)SohaKövetkezőNemNormálKikapcsolvaElérhetetlenElérhetőKonfliktusban álló fájl megnyitása a fájlkezelőben_Webfelület megnyitásaA webfelület megnyitása böngészőben a démon indításakorA mappa kiegészítő leírása. Minden eszközön különböző lehet.Egyébként válasszuk a figyelés localhoston opciót, ha azt szeretnénk, hogy csak az ezen számítógépen lévő felhasználók és programok érjek el a Syncthing-et.Nincs szinkronbanKimenő sebességkorlátTávoli módosítások felülírásaÚtvonalA mappa elérési útja az eszközön. Amennyiben nem létezik, a program automatikusan létrehozza.A verziók tárolására szolgáló elérési út (üresen hagyva az alapértelmezett .stversions mappa).SzünetelTürelemTürelem…A hibajegyzék tanulmányozása után érdemes bejelenteni a hibát: %s.Ellenőrizni kell a tűzfalbeállításokat és újra próbálkozni.Ellenőrizni kell a telepítést vagy be kell állítani a Syncthing démon binárisának útvonalát.A Syncthing-GTK újraindítása után fognak érvényre lépni a megváltoztatott beállításokCsomagkezelővel kell telepíteni a Syncthing csomagot vagy le lehet tölteni erről a címről: %(download_link)s és elhelyezni a mappában: %(target)sCsomagkezelővel lehet telepíteni a Syncthing csomagot.Lehetséges, hogy egy másik webszerver fut a Syncthing portján?A prioritás akkor lesz használva, ha a démon háttérben való indítása opció be lett kapcsolva az interfész oldalon.MemóriahasználatCsak fogadásÁtnézési intervallumÁtnézési _intervallumDémon újraindítása…FolytatásSyncthing _folytatásaSyncthing _leállításaBeállítások mentése…Mentés…ÁtnézésSyncthing démon kereséseA Syncthing dokumentációban található a támogatott minták listájaMappa választása az új mappához.Eszközök, amelyekkel meg szeretnénk osztani a mappátMappák kiválasztása ezen eszközzel való megosztáshozKüldés és fogadásCsak küldésBeállítja, hogy a démon legfeljebb mennyi CPU magot használhat. Ez az érték akkor lesz használva, ha a démon háttérben való indítása opció be lett kapcsolva az interfész oldalon.Démon _leállításaMegosztás más eszközzelMappák _megosztásaMegosztva ezekkel:A mappa rövid azonosítója. Minden eszközön azonosnak kell lennie.Ablak megjelenítése_Azonosító megjelenítéseMegjelenítés az eszközazonosító helyett a klaszterállapotban.A Syncthing démon szintén leállítható?EgyszerűSajnos a HTTPS kapcsolódás nem támogatott ezen a platformon. A webes felületen lehet kikapcsolni a HTTPS-t.Szóközzel elválasztott lista az argumentumokról és a környezetei változókról, melyek átadásra kerülnek a fenti binárisnak Változót a VÁLTOZÓ="érték" szintaxissal lehet átadni, argumentumot pedig a -argumentum="érték" (kötőjellel) módon. Ha a parancssort különféle parancsoknak kell átadni (mint pl. a logger vagy az ionice), akkor az előtagos argumentumokat felkiáltó jellel "!" kell elválasztani. Példa: STTRACE="all" logger -t /var/log/syncthing.log ! -logflags=10TöbbszintűSyncthing-GTK indítása az asztali környezetbe való bejelentkezéskorIndítható?Syncthing démon indításaLeállítvaSzinkronizációs protokoll címeSzinkronizálásA mappa szinkronizálása befejeződött: „%s”.%s mappa szinkronizálása'%s' szinkronizálásaSzinkronizálásSyncthingSyncthing démon beállításaiSyncthing binárisSyncthing bináris helyeA Syncthing távolról a webes felülettel kezelhető és akkor is szükség van rá, ha a Syncthing-GTK-t használjuk, mivel a Syncthing-GTK azt használja a Syncthing démonnal való kommunikációra.A Syncthing démon binárisát nem sikerült megtalálni.A Syncthing démon binárisa nem található.Nem úgy tűnik, hogy a Syncthing démon futna.A Syncthing démonnak nem sikerült RSA kulcsot vagy tanúsítványt előállítani.A Syncthing démon túl régi.Syncthing démon nem található.A Syncthing le lett állítva.A Syncthing beállítása sikeres.A Syncthing RSA kulcsot és tanúsítványt generál.A Syncthing valószínűleg épp újraindul vagy le lett állítva.A Syncthing újraindul.Syncthing-GTKSyncthing-GTK beállításokA Syncthing-GTK minimum %(min)s vagy újabb verziót igényel a Syncthing démonből, de a legfrissebb megtalált verziószám csak %(actual)s. A Syncthing-GTK elindult és az értesítési területen futA felhalmozott statisztika publikusan elérthető: A konfiguráció el lett mentve, de nem lett aktiválva. A Syncthinget újra kell indítani az konfiguráció életbelépéséhez.A titkosított felhasználási adatok naponta kerülnek elküldésre.A megadott eszközazonosító nem tűnik érvényesnek. Az azonosító 52 karakterből kell álljon, betűket és számokat tartalmazhat., opcionálisan szóközöket és kötőjeleket.Az első parancssori paraméter a mappa elérési útja, a második a relatív elérési út a mappában.A napok száma ameddig a fájlok meg lesznek tartva a szemetesben.A megtartott régi verziók száma, fájlonként.Ez a bináris kerül indításra ha a Syncthing démon nem fut és, ha a démon háttérben való indítása opció be lett kapcsolva az interfész oldalon.Ez eltarthat egy ideig…Ez a platform (%s) nem támogatott.SzemetesTálcaikon stílusaÚjrapróbálkozásFelület beállításaiFelület beállításaiAz eszköz („%(device)s”) váratlan mappát küldött: „%(folder)s”Váratlan mappazonosítót küldött az eszköz: „%s” .Ismeretlen eszközKorlátozás nélkülNincs megosztvaNincs használatbanFrissFrissítések a mappában: „%s”Feltöltési sebességHagyományos _ablakfejléc használata_Ikonok alkalmazása a menübenVerzióVerzió:Verziószámozási _módszerVerziók útvonalaVárakozás a Syncthing démonra: %s…Webfelület címeWebfelület beállításÜdvözlet a Syncthing-GTK elsőindítás-varázslójában!Kilépéskor, ha a démon a háttérben volt elindítva…Indításkor ha a Syncthing démon nem fut…FehérXYZ-123-ABCIgenA további részleteket később a program Felület beállításai és a Démon beállításai menüiben lehet beállítani.A Windows verziója nem támogatja a Syncthing-GTK által igényelt kriptográfiai szabványokat, melyek a Syncthing frissítéséhez szükségesek. Javasolt telepíteni ezt a Windows firssítést vagy kikapcsolni a frissítési funkciót.A Syncthing démon túl régi.A syncthing démon túl régi. Frissíteni kell a Syncthing csomagot legalább erre a verzióra: %s, majd újra lehet próbálkozni._Névjegy_Hozzáadás_Címek_Haladó_Tallózás_Tallózás…_TömörítésSyncthing bináris _letöltése_Letöltés…_Mappabeállítások_Mellőz_Bejövő sebességkorlát_Integráció_Felület_Bevezető_Verziók megtartása_Egyéb_Kimenő sebességkorlát_JelszóÚt_vonal_KilépésCsak _fogadó mappaÁt_nézésÚj_raindításDémon _újraindításaCsak _mappa küldése_Korlátozás nélkül_Felhasználói névletiltottfriss bináris letöltése%s nap múlvanéhány pillanat múlvaépp mostáltalánosságban nem javasolt.soha ne legyen törölvenincs limitálvaelérhetetlena %s helyre és képes is frissen tartani azt, de ez az végső megoldást és~%s órával ezelőtt~%s óra múlvasyncthing-gtk-0.9.4.4/locale/hu/LC_MESSAGES/syncthing-gtk.po000077500000000000000000001417131352162771300232710ustar00rootroot00000000000000# Syncthing-GTK # Copyright (C) 2014-2015 Kozec and contributors # This file is distributed under the same license as the Syncthing-GTK package. # # Translators: # Balázs Meskó , 2017 # Falu , 2017 # Gyuris Gellért , 2018-2019 # Gyuris Gellért , 2017 msgid "" msgstr "" "Project-Id-Version: syncthing-gtk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-04-20 11:27+0200\n" "PO-Revision-Date: 2019-08-03 12:15+0000\n" "Last-Translator: Gyuris Gellért \n" "Language-Team: Hungarian (http://www.transifex.com/syncthing-gtk/syncthing-gtk/language/hu/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: syncthing_gtk/app.py:194 msgid "Syncthing-GTK started and running in notification area" msgstr "A Syncthing-GTK elindult és az értesítési területen fut" #: syncthing_gtk/app.py:288 #, python-format msgid "%s kB/s" msgstr "%s kB/s" #: syncthing_gtk/app.py:302 syncthing_gtk/notifications.py:77 #: syncthing_gtk/wizard.py:53 msgid "Syncthing-GTK" msgstr "Syncthing-GTK" #: syncthing_gtk/app.py:363 syncthing_gtk/app.py:364 syncthing_gtk/app.py:942 msgid "Syncing" msgstr "Szinkronizálás" #: syncthing_gtk/app.py:366 syncthing_gtk/app.py:367 msgid "Scanning" msgstr "Átnézés" #: syncthing_gtk/app.py:390 syncthing_gtk/app.py:652 msgid "Starting Syncthing daemon" msgstr "Syncthing démon indítása" #: syncthing_gtk/app.py:424 msgid "Allow Anonymous Usage Reporting?" msgstr "Elküldhetően a névtelen felhasználási adatok?" #: syncthing_gtk/app.py:426 msgid "The encrypted usage report is sent daily." msgstr "A titkosított felhasználási adatok naponta kerülnek elküldésre." #: syncthing_gtk/app.py:427 msgid "It is used to track common platforms, folder sizes and app versions." msgstr "Arra használjuk őket, hogy kövessük a különböző platformokat, mappaméreteket és programverziókat." #: syncthing_gtk/app.py:428 msgid "" "If the reported data set is changed you will be prompted with this dialog " "again." msgstr "Az elküldött adatcsomag változása esetén ismételt engedélyezési kérés fog megjelenni." #: syncthing_gtk/app.py:430 msgid "The aggregated statistics are publicly available at" msgstr "A felhalmozott statisztika publikusan elérthető: " #: syncthing_gtk/app.py:552 #, python-format msgid "" "Your Windows version doesn't supports cryptographic standards needed\n" "for Syncthing-GTK to check for Syncthing updates.\n" "Please, install this Windows update or disable update feature." msgstr "A Windows verziója nem támogatja a Syncthing-GTK által igényelt kriptográfiai szabványokat, melyek a Syncthing frissítéséhez szükségesek. Javasolt telepíteni ezt a Windows firssítést vagy kikapcsolni a frissítési funkciót." #: syncthing_gtk/app.py:486 msgid "Extracting update..." msgstr "Frissítés kibontása…" #: syncthing_gtk/app.py:491 msgid "Restarting daemon..." msgstr "Démon újraindítása…" #: syncthing_gtk/app.py:507 #, python-format msgid "Failed to download upgrade: %s" msgstr "Hiba a frissítés letöltésekor: %s" #: syncthing_gtk/app.py:525 #, python-format msgid "Downloading Syncthing %s" msgstr "Syncthing %s letöltése" #: syncthing_gtk/app.py:604 msgid "Connected to Syncthing daemon" msgstr "Kapcsolódva a Syncthing démonhoz" #: syncthing_gtk/app.py:614 msgid "Connection to Syncthing daemon lost." msgstr "A kapcsolat elveszett a Syncthing démonnal." #: syncthing_gtk/app.py:615 msgid "Syncthing is probably restarting or has been shut down." msgstr "A Syncthing valószínűleg épp újraindul vagy le lett állítva." #: syncthing_gtk/app.py:617 msgid "Syncthing has been shut down." msgstr "A Syncthing le lett állítva." #: syncthing_gtk/app.py:621 syncthing_gtk/app.py:1499 msgid "Syncthing is restarting." msgstr "A Syncthing újraindul." #: syncthing_gtk/app.py:621 syncthing_gtk/app.py:1499 msgid "Please wait" msgstr "Türelem" #: syncthing_gtk/app.py:644 #, python-format msgid "Connecting to Syncthing daemon at %s..." msgstr "Kapcsolódás a Syncthing démonhoz: %s…" #: syncthing_gtk/app.py:649 #, python-format msgid "Waiting for Syncthing daemon at %s..." msgstr "Várakozás a Syncthing démonra: %s…" #: syncthing_gtk/app.py:664 msgid "Your syncthing daemon is too old." msgstr "A Syncthing démon túl régi." #: syncthing_gtk/app.py:664 msgid "Attempting to download recent, please wait..." msgstr "Kísérlet a legfrissebb letöltésére, türelem…" #: syncthing_gtk/app.py:670 msgid "" "Cannot authorize with daemon. Please, use WebUI to generate API key or " "disable password authentication." msgstr "Nem sikerült a hitelesítés a démonnal. A webes felületen lehet API kulcsot előállítani vagy kikapcsolni a jelszavas védelmet." #: syncthing_gtk/app.py:672 #, python-format msgid "" "Your syncthing daemon is too old.\n" "Please, upgrade syncthing package at least to version %s and try again." msgstr "A syncthing démon túl régi.\nFrissíteni kell a Syncthing csomagot legalább erre a verzióra: %s, majd újra lehet próbálkozni." #: syncthing_gtk/app.py:674 msgid "" "Sorry, connecting to HTTPS is not supported on this platform.\n" "Please, use WebUI to disable HTTPS try again." msgstr "Sajnos a HTTPS kapcsolódás nem támogatott ezen a platformon.\nA webes felületen lehet kikapcsolni a HTTPS-t." #: syncthing_gtk/app.py:677 msgid "Connection to daemon failed. Check your configuration and try again." msgstr "Nem sikerült a kapcsolódás a démonhoz. Javasolt ellenőrizni a konfigurációt, majd újra próbálkozni." #: syncthing_gtk/app.py:678 syncthing_gtk/app.py:1992 #: syncthing_gtk/editordialog.py:314 msgid "Error message:" msgstr "Hibaüzenet:" #: syncthing_gtk/app.py:763 msgid "Possible cause: Is there another web server running on Syncthing port?" msgstr "Lehetséges, hogy egy másik webszerver fut a Syncthing portján?" #: syncthing_gtk/app.py:689 msgid "More info" msgstr "További információ" #: syncthing_gtk/app.py:715 msgid "" "The configuration has been saved but not activated.\n" "Syncthing must restart to activate the new configuration." msgstr "A konfiguráció el lett mentve, de nem lett aktiválva.\nA Syncthinget újra kell indítani az konfiguráció életbelépéséhez." #: syncthing_gtk/app.py:717 msgid "_Restart" msgstr "Új_raindítás" #: syncthing_gtk/app.py:859 msgid "Incompatible" msgstr "Nem kompatibilis" #: syncthing_gtk/app.py:863 #, python-format msgid "" "Connecting to %s failed; the remote device speaks an older version of" " the protocol (%s) not compatible with this version" msgstr "Nem sikerült a kapcsolódás: %s. A távoli eszköz a protokoll régi verzióját (%s) használja, mely nem kompatibilis ezzel a verzióval." #: syncthing_gtk/app.py:784 #, python-format msgid "%(device)s wants to share folder \"%(folder)s\". Add new folder?" msgstr "%(device)s szeretne megosztani e mappát: „%(folder)s”. Hozzáadható a mappa?" #: syncthing_gtk/app.py:791 syncthing_gtk/app.py:813 msgid "_Add" msgstr "_Hozzáadás" #: syncthing_gtk/app.py:806 #, python-format msgid "" "Device \"%(name)s\" (%(device)s) at IP \"%(ip)s\" wants to " "connect. Add new device?" msgstr "„%(name)s” eszköz (%(device)s) csatlakozni szeretne a következő IP címről: „%(ip)s”. Hozzáadható az eszköz?" #: syncthing_gtk/app.py:814 msgid "_Ignore" msgstr "_Mellőz" #: syncthing_gtk/app.py:832 msgid "RAM Utilization" msgstr "Memóriahasználat" #: syncthing_gtk/app.py:833 msgid "CPU Utilization" msgstr "Processzorhasználat" #: syncthing_gtk/app.py:834 syncthing_gtk/app.py:1353 msgid "Download Rate" msgstr "Letöltési sebesség" #: syncthing_gtk/app.py:835 syncthing_gtk/app.py:1354 msgid "Upload Rate" msgstr "Feltöltési sebesség" #: syncthing_gtk/app.py:836 msgid "Announce Server" msgstr "Bejelentő kiszolgáló" #: syncthing_gtk/app.py:837 syncthing_gtk/app.py:1356 msgid "Version" msgstr "Verzió" #: syncthing_gtk/app.py:860 syncthing_gtk/editordialog.py:394 msgid "disabled" msgstr "letiltott" #: syncthing_gtk/app.py:862 msgid "Online" msgstr "Elérhető" #: syncthing_gtk/app.py:862 msgid "offline" msgstr "elérhetetlen" #: syncthing_gtk/app.py:864 #, python-format msgid "%(online)s/%(total)s online" msgstr "%(online)s/%(total)s elérhető" #: syncthing_gtk/app.py:891 syncthing_gtk/app.py:1357 #: syncthing_gtk/app.py:1382 msgid "Never" msgstr "Soha" #: syncthing_gtk/app.py:899 syncthing_gtk/app.py:1691 #: syncthing_gtk/app.py:1692 msgid "Paused" msgstr "Szünetel" #: syncthing_gtk/app.py:899 syncthing_gtk/app.py:924 syncthing_gtk/app.py:939 #: syncthing_gtk/infobox.py:60 msgid "Disconnected" msgstr "Kapcsolat bontva" #: syncthing_gtk/app.py:916 msgid "Connected" msgstr "Kapcsolódva" #: syncthing_gtk/app.py:945 syncthing_gtk/app.py:980 syncthing_gtk/app.py:1030 #: syncthing_gtk/app.py:1031 syncthing_gtk/app.py:1070 msgid "Up to Date" msgstr "Friss" #: syncthing_gtk/app.py:966 syncthing_gtk/app.py:967 syncthing_gtk/app.py:968 msgid "Files" msgstr "fájl" #: syncthing_gtk/app.py:980 syncthing_gtk/app.py:1068 msgid "Cluster out of sync" msgstr "Klaszter nincs szinkronban" #: syncthing_gtk/app.py:995 msgid "Stopped" msgstr "Leállítva" #: syncthing_gtk/app.py:998 syncthing_gtk/app.py:1005 msgid "Error" msgstr "Hiba" #: syncthing_gtk/app.py:1024 #, python-format msgid "Synchronizing '%s'" msgstr "'%s' szinkronizálása" #: syncthing_gtk/app.py:1026 #, python-format msgid "Synchronizing %s folders" msgstr "%s mappa szinkronizálása" #: syncthing_gtk/app.py:1035 syncthing_gtk/app.py:1036 msgid "All devices offline" msgstr "Minden eszköz elérhetetlen" #: syncthing_gtk/app.py:1040 syncthing_gtk/app.py:1041 msgid "Connecting to Syncthing daemon..." msgstr "Kapcsolódás a Syncthing démonhoz" #: syncthing_gtk/app.py:1079 msgid "Unshared" msgstr "Nincs megosztva" #: syncthing_gtk/app.py:1082 msgid "Offline" msgstr "Elérhetetlen" #: syncthing_gtk/app.py:1176 msgid "Hide Window" msgstr "Ablak elrejtése" #: syncthing_gtk/app.py:1190 app.glade:651 msgid "Show Window" msgstr "Ablak megjelenítése" #: syncthing_gtk/app.py:1239 msgid "Syncthing daemon doesn't appear to be running." msgstr "Nem úgy tűnik, hogy a Syncthing démon futna." #: syncthing_gtk/app.py:1240 msgid "Start it now?" msgstr "Indítható?" #: syncthing_gtk/app.py:1243 msgid "Always start daemon automatically" msgstr "A démon automatikus indítása mindig " #: syncthing_gtk/app.py:1292 msgid "Folder ID" msgstr "Mappaazonosító" #: syncthing_gtk/app.py:1293 msgid "Path" msgstr "Útvonal" #: syncthing_gtk/app.py:1294 msgid "Global State" msgstr "Globális állapot" #: syncthing_gtk/app.py:1295 msgid "Local State" msgstr "Helyi állapot" #: syncthing_gtk/app.py:1296 msgid "Out Of Sync" msgstr "Nincs szinkronban" #: syncthing_gtk/app.py:1297 msgid "Folder Type" msgstr "Mappatípus" #: syncthing_gtk/app.py:1298 msgid "Ignore Permissions" msgstr "Jogosultságok figyelmen kívül hagyása" #: syncthing_gtk/app.py:1299 msgid "Rescan Interval" msgstr "Átnézési intervallum" #: syncthing_gtk/app.py:1300 msgid "Shared With" msgstr "Megosztva ezekkel:" #: syncthing_gtk/app.py:1324 syncthing_gtk/app.py:1325 #: syncthing_gtk/app.py:1381 msgid "Yes" msgstr "Igen" #: syncthing_gtk/app.py:1324 syncthing_gtk/app.py:1325 #: syncthing_gtk/app.py:1381 msgid "No" msgstr "Nem" #: syncthing_gtk/app.py:1327 msgid "(watch)" msgstr "(watch)" #: syncthing_gtk/app.py:1341 msgid "Unused" msgstr "Nincs használatban" #: syncthing_gtk/app.py:1350 msgid "Address" msgstr "Cím" #: syncthing_gtk/app.py:1351 msgid "Synchronization" msgstr "Szinkronizálás" #: syncthing_gtk/app.py:1352 msgid "Compression" msgstr "Tömörítés" #: syncthing_gtk/app.py:1355 msgid "Introducer" msgstr "Bevezető" #: syncthing_gtk/app.py:1357 msgid "Last Seen" msgstr "Utoljára látva" #: syncthing_gtk/app.py:1378 device-edit.glade:22 msgid "All Data" msgstr "Minden adat" #: syncthing_gtk/app.py:1379 device-edit.glade:26 folder-edit.glade:78 msgid "Off" msgstr "Kikapcsolva" #: syncthing_gtk/app.py:1375 msgid "Send Only" msgstr "Csak küldés" #: syncthing_gtk/app.py:1375 msgid "Send & Receive" msgstr "Küldés és fogadás" #: syncthing_gtk/app.py:1447 msgid "Receive Only" msgstr "Csak fogadás" #: syncthing_gtk/app.py:1380 device-edit.glade:30 msgid "Metadata Only" msgstr "Csak metaadatok" #: syncthing_gtk/app.py:1522 msgid "Exiting." msgstr "Kilépés." #: syncthing_gtk/app.py:1523 msgid "Shutdown Syncthing daemon as well?" msgstr "A Syncthing démon szintén leállítható?" #: syncthing_gtk/app.py:1528 msgid "Always do same; Don't show this window again" msgstr "Mindig így történjen. Ne jelenjen meg újra ez az ablak." #: syncthing_gtk/app.py:1768 #, python-format msgid "Do you really want to permanently stop synchronizing directory '%s'?" msgstr "Valóban véglegesen leállítandó e mappa szinkronizálása: %s?" #: syncthing_gtk/app.py:1770 #, python-format msgid "Do you really want remove device '%s' from Syncthing?" msgstr "Valóban eltávolítandó ezen távoli eszköz a Syncthingből: %s?" #: syncthing_gtk/app.py:1991 msgid "Failed to start Syncthing daemon." msgstr "Nem sikerült elindítani a Syncthing démont." #: syncthing_gtk/app.py:1993 msgid "" "Please, check your installation or set new path to Syncthing daemon binary." msgstr "Ellenőrizni kell a telepítést vagy be kell állítani a Syncthing démon binárisának útvonalát." #: syncthing_gtk/daemonsettings.py:24 msgid "Syncthing Daemon Settings" msgstr "Syncthing démon beállításai" #: syncthing_gtk/deviceeditor.py:24 msgid "" "The entered device ID does not look valid. It should be a 52 character " "string consisting of letters and numbers, with spaces and dashes being " "optional." msgstr "A megadott eszközazonosító nem tűnik érvényesnek. Az azonosító 52 karakterből kell álljon, betűket és számokat tartalmazhat., opcionálisan szóközöket és kötőjeleket." #: syncthing_gtk/editordialog.py:312 msgid "Failed to load configuration from daemon." msgstr "Nem sikerült betölteni a démon beállításait." #: syncthing_gtk/editordialog.py:313 msgid "Try again." msgstr "Újrapróbálkozás" #: syncthing_gtk/editordialog.py:387 syncthing_gtk/editordialog.py:396 #, python-format msgid "%ss" msgstr "%ss" #: syncthing_gtk/editordialog.py:402 #, python-format msgid "%s%%" msgstr "%s%%" #: syncthing_gtk/editordialog.py:409 msgid "no limit" msgstr "nincs limitálva" #: syncthing_gtk/editordialog.py:411 #, python-format msgid "%s KiB/s" msgstr "%s KiB/s" #: syncthing_gtk/editordialog.py:418 msgid "never delete" msgstr "soha ne legyen törölve" #: syncthing_gtk/editordialog.py:420 #, python-format msgid "%s day" msgstr "%s nap" #: syncthing_gtk/editordialog.py:422 #, python-format msgid "%s days" msgstr "%s nap" #: syncthing_gtk/editordialog.py:455 msgid "Failed to save configuration." msgstr "Nem sikerült elmenteni a beállításokat." #: syncthing_gtk/finddaemondialog.py:24 find-daemon.glade:7 msgid "Can't invoke the daemon" msgstr "Nem sikerült hivatkozni a démonra" #: syncthing_gtk/finddaemondialog.py:26 msgid "Syncthing binary" msgstr "Syncthing bináris" #: syncthing_gtk/finddaemondialog.py:28 syncthing_gtk/finddaemondialog.py:37 msgid "Syncthing daemon binary cannot be found." msgstr "A Syncthing démon binárisát nem sikerült megtalálni." #: syncthing_gtk/finddaemondialog.py:29 #, python-format msgid "" "If you have Syncthing installed, please, set path to %s below or click on " "Download button to download latest Syncthing package." msgstr "Ha telepítve van már a Syncthing, alább kell megadni: %s, vagy a Letöltés gombbal indítható a lefrissebb Syncthing letöltése." #: syncthing_gtk/finddaemondialog.py:38 #, python-format msgid "If you have Syncthing installed, please, set path to %s below" msgstr "Ha telepítve van már a Syncthing, alább kell megadni: %s" #: syncthing_gtk/finddaemondialog.py:82 syncthing_gtk/wizard.py:411 msgid "Cannot download Syncthing daemon." msgstr "Nem lehet letölteni a Syncthing démont." #: syncthing_gtk/finddaemondialog.py:83 syncthing_gtk/wizard.py:412 #, python-format msgid "This platform (%s) is not supported" msgstr "Ez a platform (%s) nem támogatott." #: syncthing_gtk/finddaemondialog.py:100 msgid "Downloading..." msgstr "Letöltés…" #: syncthing_gtk/finddaemondialog.py:163 syncthing_gtk/stdownloader.py:251 #: syncthing_gtk/stdownloader.py:279 msgid "Download failed." msgstr "Letöltés nem sikerült." #: syncthing_gtk/finddaemondialog.py:185 syncthing_gtk/wizard.py:458 msgid "Download finished." msgstr "A letöltés befejeződött." #: syncthing_gtk/foldereditor.py:45 msgid "Select Folder for new Folder" msgstr "Mappa választása az új mappához." #: syncthing_gtk/ignoreeditor.py:44 msgid "File location:" msgstr "Fájl helye:" #: syncthing_gtk/notifications.py:120 #, python-format msgid "Unexpected folder ID sent from device \"%s\"." msgstr "Váratlan mappazonosítót küldött az eszköz: „%s” ." #: syncthing_gtk/notifications.py:124 #, python-format msgid "Device \"%s\" is trying to connect to syncthing daemon." msgstr "Kapcsolódni próbál ez az eszköz a Syncthing démonhoz: „%s”." #: syncthing_gtk/notifications.py:153 #, python-format msgid "Synchronization of folder '%s' is completed." msgstr "A mappa szinkronizálása befejeződött: „%s”." #: syncthing_gtk/notifications.py:114 syncthing_gtk/notifications.py:115 #, python-format msgid "Accept device \"%s\"" msgstr "Eszköz elfogadása: „%s”" #: syncthing_gtk/notifications.py:116 #, python-format msgid "Ignore device \"%s\"" msgstr "Eszköz figyelmen kívül hagyása: „%s”" #: syncthing_gtk/notifications.py:118 msgid "Unknown Device" msgstr "Ismeretlen eszköz" #: syncthing_gtk/notifications.py:161 syncthing_gtk/notifications.py:162 #, python-format msgid "Accept folder \"%s\"" msgstr "Mappa elfogadása: „%s”" #: syncthing_gtk/notifications.py:163 #, python-format msgid "Ignore folder \"%s\"" msgstr "Mappa figyelmen kívül hagyása: „%s”" #: syncthing_gtk/notifications.py:173 msgid "Folder rejected" msgstr "Visszautasított mappa" #: syncthing_gtk/notifications.py:174 #, python-format msgid "Unexpected folder \"%(folder)s\" sent from device \"%(device)s\"." msgstr "Az eszköz („%(device)s”) váratlan mappát küldött: „%(folder)s”" #: syncthing_gtk/notifications.py:207 #, python-format msgid "Completed synchronization in \"%s\"" msgstr "Szinkronizálás befejeződött: „%s”" #: syncthing_gtk/notifications.py:209 #, python-format msgid "Updates in folder \"%s\"" msgstr "Frissítések a mappában: „%s”" #: syncthing_gtk/notifications.py:160 #, python-format msgid "%(hostname)s: Downloaded '%(filename)s' to reflect remote changes." msgstr "%(hostname)s: A(z) „%(filename)s” fájl letöltve, a távoli változásokat követve." #: syncthing_gtk/notifications.py:165 #, python-format msgid "%(hostname)s: Deleted '%(filename)s' to reflect remote changes." msgstr "%(hostname)s: A(z) „%(filename)s” fájl törölve, a távoli változásokat követve." #: syncthing_gtk/notifications.py:168 #, python-format msgid "%(hostname)s: Downloaded %(updated)s files to reflect remote changes." msgstr "%(hostname)s: %(updated)s fájl letöltve, a távoli változásokat követve." #: syncthing_gtk/notifications.py:171 #, python-format msgid "%(hostname)s: Deleted %(deleted)s files to reflect remote changes." msgstr "%(hostname)s: %(deleted)s fájl törölve, a távoli változásokat követve." #: syncthing_gtk/notifications.py:175 #, python-format msgid "" "%(hostname)s: downloaded %(updated)s files and deleted %(deleted)s files to " "reflect remote changes." msgstr "%(hostname)s: %(updated)s fájl letöltve, és %(deleted)s fájl törölve, a távoli változásokat követve." #: syncthing_gtk/notifications.py:256 #, python-format msgid "Conflicting file in \"%s\"" msgstr "Konfliktusban álló fájl: „%s”" #: syncthing_gtk/notifications.py:257 #, python-format msgid "Conflict in path \"%s\" detected." msgstr "Konfliktus található az útvonalon: „%s”." #: syncthing_gtk/notifications.py:261 msgid "Open Conflicting file in filemanager" msgstr "Konfliktusban álló fájl megnyitása a fájlkezelőben" #: syncthing_gtk/notifications.py:337 msgid "An error occurred in Syncthing!" msgstr "Hiba történt a Synchtingben!" #: syncthing_gtk/statusicon.py:48 msgid "Syncthing" msgstr "Syncthing" #: syncthing_gtk/stdownloader.py:174 syncthing_gtk/stdownloader.py:217 #: syncthing_gtk/stdownloader.py:313 syncthing_gtk/stdownloader.py:344 msgid "Failed to determine latest Syncthing version." msgstr "Nem sikerült meghatározni a legfrissebb Syncthing verziót." #: syncthing_gtk/stdownloader.py:236 msgid "Failed to create temporary file." msgstr "Nem sikerült létrehozni az ideiglenes fájlt." #: syncthing_gtk/stdownloader.py:294 msgid "Downloaded file is corrupted." msgstr "A letöltött fájl sérült." #: syncthing_gtk/tools.py:192 #, python-format msgid "~%s hours ago" msgstr "~%s órával ezelőtt" #: syncthing_gtk/tools.py:194 #, python-format msgid "%s minutes ago" msgstr "%s perccel ezelőtt" #: syncthing_gtk/tools.py:196 #, python-format msgid "%s seconds ago" msgstr "%s másodperccel ezelőtt" #: syncthing_gtk/tools.py:197 msgid "just now" msgstr "épp most" #: syncthing_gtk/tools.py:199 #, python-format msgid "%s days ago" msgstr "%s napja" #: syncthing_gtk/tools.py:203 #, python-format msgid "in %s days" msgstr "%s nap múlva" #: syncthing_gtk/tools.py:205 #, python-format msgid "~%s hours from now" msgstr "~%s óra múlva" #: syncthing_gtk/tools.py:207 #, python-format msgid "%s minutes from now" msgstr "%s perc múlva" #: syncthing_gtk/tools.py:209 #, python-format msgid "%s seconds from now" msgstr "%s másodperc múlva" #: syncthing_gtk/tools.py:210 msgid "in a moment" msgstr "néhány pillanat múlva" #: syncthing_gtk/uisettingsdialog.py:58 msgid "UI Settings" msgstr "Felület beállításai" #: syncthing_gtk/uisettingsdialog.py:70 msgid "Unlimited" msgstr "Korlátozás nélkül" #: syncthing_gtk/uisettingsdialog.py:107 #, python-format msgid "Install %(package)s package to enable %(feature)s support" msgstr "%(feature)s szolgáltatásokhoz ezeket a csomagokat kell telepíteni: %(package)s" #: syncthing_gtk/uisettingsdialog.py:312 msgid "Browse for Syncthing binary" msgstr "Syncthing bináris tallózása" #: syncthing_gtk/wizard.py:53 msgid "First run wizard" msgstr "Elsőindítás-varázsló" #: syncthing_gtk/wizard.py:137 #, python-format msgid "Please, check error log and fill bug report on %s." msgstr "A hibajegyzék tanulmányozása után érdemes bejelenteni a hibát: %s." #: syncthing_gtk/wizard.py:141 msgid "Display error log" msgstr "Hibajegyzék megjelenítése" #: syncthing_gtk/wizard.py:215 msgid "Next" msgstr "Következő" #: syncthing_gtk/wizard.py:224 msgid "" "Continue this wizard to create a Syncthing configuration file or abort it to" " exit." msgstr "A varázsló folytatásával létre fog jönni a Syncthing konfigurációs fájl, vagy kilépéssel megszakad ez." #: syncthing_gtk/wizard.py:198 msgid "Welcome to Syncthing-GTK first run wizard!" msgstr "Üdvözlet a Syncthing-GTK elsőindítás-varázslójában!" #: syncthing_gtk/wizard.py:200 msgid "It looks like you never have used Syncthing." msgstr "Úgy tűnik, hogy még soha nem lett lett elindítva a Syncthing." #: syncthing_gtk/wizard.py:201 msgid "Initial configuration should be created." msgstr "Szükséges a kezdő beállítások létrehozása." #: syncthing_gtk/wizard.py:204 #, python-format msgid "" "If you already had Syncthing daemon configured, please, exit this wizard and" " check your %s folder" msgstr "Ha már konfigurálva van a Syncthing démon, javasolt kilépni ebből a varázslóból és ellenőrizni a mappát: %s" #: syncthing_gtk/wizard.py:220 msgid "Searching for Syncthing daemon." msgstr "Syncthing démon keresése" #: syncthing_gtk/wizard.py:222 syncthing_gtk/wizard.py:394 msgid "Please wait..." msgstr "Türelem…" #: syncthing_gtk/wizard.py:270 syncthing_gtk/wizard.py:287 msgid "Syncthing daemon not found." msgstr "Syncthing démon nem található." #: syncthing_gtk/wizard.py:271 msgid "Please, use package manager to install the Syncthing package." msgstr "Csomagkezelővel lehet telepíteni a Syncthing csomagot." #: syncthing_gtk/wizard.py:283 msgid "download latest binary" msgstr "friss bináris letöltése" #: syncthing_gtk/wizard.py:288 syncthing_gtk/wizard.py:302 #, python-format msgid "" "Please, use package manager to install the Syncthing package or " "%(download_link)s from Syncthing page and save it to your %(target)s " "directory." msgstr "Csomagkezelővel kell telepíteni a Syncthing csomagot vagy le lehet tölteni erről a címről: %(download_link)s és elhelyezni a mappában: %(target)s" #: syncthing_gtk/wizard.py:296 msgid "Syncthing daemon is too old." msgstr "A Syncthing démon túl régi." #: syncthing_gtk/wizard.py:297 #, python-format msgid "" "Syncthing-GTK needs Syncthing daemon %(min)s or newer, but only %(actual)s " "were found." msgstr "A Syncthing-GTK minimum %(min)s vagy újabb verziót igényel a Syncthing démonből, de a legfrissebb megtalált verziószám csak %(actual)s. " #: syncthing_gtk/wizard.py:309 msgid "Alternatively, Syncthing-GTK can download Syncthing binary" msgstr "Egyébként a Syncthing-GTK le tudja tölteni a Syncthing binárist" #: syncthing_gtk/wizard.py:310 #, python-format msgid "to %s and keep it up-to-date, but this option is meant as" msgstr "a %s helyre és képes is frissen tartani azt, de ez az végső megoldást és" #: syncthing_gtk/wizard.py:312 msgid "last resort and generally not suggested." msgstr "általánosságban nem javasolt." #: syncthing_gtk/wizard.py:315 msgid "_Download Syncthing binary" msgstr "Syncthing bináris _letöltése" #: syncthing_gtk/wizard.py:319 msgid "Auto_update downloaded binary" msgstr "Letöltött bináris automatikus _frissítése" #: syncthing_gtk/wizard.py:375 msgid "Syncthing daemon binary found." msgstr "A Syncthing démon binárisa nem található." #: syncthing_gtk/wizard.py:377 syncthing_gtk/wizard.py:460 msgid "Binary path:" msgstr "Bináris útvonala:" #: syncthing_gtk/wizard.py:378 msgid "Version:" msgstr "Verzió:" #: syncthing_gtk/wizard.py:393 msgid "Downloading Syncthing daemon." msgstr "Syncthing démon letöltése." #: syncthing_gtk/wizard.py:441 msgid "Failed to download Syncthing daemon package." msgstr "Nem sikerült letölteni a Syncthing démon csomagját." #: syncthing_gtk/wizard.py:472 msgid "Syncthing is generating RSA key and certificate." msgstr "A Syncthing RSA kulcsot és tanúsítványt generál." #: syncthing_gtk/wizard.py:473 msgid "This may take a while..." msgstr "Ez eltarthat egy ideig…" #: syncthing_gtk/wizard.py:515 msgid "Failed to generate keys" msgstr "Nem sikerült a kulcsok előállítása" #: syncthing_gtk/wizard.py:516 msgid "Syncthing daemon failed to generate RSA key or certificate." msgstr "A Syncthing démonnak nem sikerült RSA kulcsot vagy tanúsítványt előállítani." #: syncthing_gtk/wizard.py:526 msgid "WebUI setup" msgstr "Webfelület beállítás" #: syncthing_gtk/wizard.py:528 msgid "" "Syncthing can be managed remotely using WebUI and even if you are going to " "use Syncthing-GTK, WebUI needs to be enabled, as Syncthing-GTK uses it to " "communicate with the Syncthing daemon." msgstr "A Syncthing távolról a webes felülettel kezelhető és akkor is szükség van rá, ha a Syncthing-GTK-t használjuk, mivel a Syncthing-GTK azt használja a Syncthing démonnal való kommunikációra." #: syncthing_gtk/wizard.py:533 msgid "" "If you prefer to be able to manage Syncthing remotely, over the internet or " "on your local network, select listen on all interfaces and set " "username and password to protect Syncthing from unauthorized access." msgstr "Ha a Syncthinget távolról, az internetről vagy a helyi hálózatról is szeretnénk kezelni, válasszuk a figyelés minden interfészen opciót és adjunk meg egy felhasználói nevet és jelszót a Syncthinghez való idegen hozzáférések megakadályozására." #: syncthing_gtk/wizard.py:538 msgid "" "Otherwise, select listen on localhost, so only users and programs on " "this computer will be able to interact with Syncthing." msgstr "Egyébként válasszuk a figyelés localhoston opciót, ha azt szeretnénk, hogy csak az ezen számítógépen lévő felhasználók és programok érjek el a Syncthing-et." #: syncthing_gtk/wizard.py:544 msgid "WebUI Listen Addresses" msgstr "Webfelület címe" #: syncthing_gtk/wizard.py:545 msgid "Listen on _localhost" msgstr "Figyelés _localhoston" #: syncthing_gtk/wizard.py:547 msgid "Listen on _all interfaces" msgstr "Figyelés minden interfészen" #: syncthing_gtk/wizard.py:554 msgid "_Username" msgstr "_Felhasználói név" #: syncthing_gtk/wizard.py:555 msgid "_Password" msgstr "_Jelszó" #: syncthing_gtk/wizard.py:609 msgid "Saving settings..." msgstr "Beállítások mentése…" #: syncthing_gtk/wizard.py:610 msgid "Checking for available port..." msgstr "Elérhető portok ellenőrzése…" #: syncthing_gtk/wizard.py:631 msgid "Failed to find unused port for listening." msgstr "Nem sikerült használaton kívüli portokat találni a figyeléshez." #: syncthing_gtk/wizard.py:632 msgid "Please, check your firewall settings and try again." msgstr "Ellenőrizni kell a tűzfalbeállításokat és újra próbálkozni." #: syncthing_gtk/wizard.py:646 msgid "Saving..." msgstr "Mentés…" #: syncthing_gtk/wizard.py:678 msgid "Failed to load Syncthing configuration" msgstr "Nem sikerült betölteni a Syncthing konfigurációt" #: syncthing_gtk/wizard.py:705 msgid "Failed to modify Syncthing configuration" msgstr "Nem sikerült módosítani a Syncthing konfigurációt" #: syncthing_gtk/wizard.py:715 msgid "Failed to save Syncthing configuration" msgstr "Nem sikerült menteni a Syncthing konfigurációt" #: syncthing_gtk/wizard.py:729 msgid "Done." msgstr "Kész." #: syncthing_gtk/wizard.py:731 msgid "Syncthing has been successfully configured." msgstr "A Syncthing beállítása sikeres." #: syncthing_gtk/wizard.py:733 msgid "" "You can configure more details later, in UI Settings and Daemon " "Settings menus in main window of application." msgstr "A további részleteket később a program Felület beállításai és a Démon beállításai menüiben lehet beállítani." #: about.glade:7 msgid "About Syncthing-GTK" msgstr "Syncthing-GTK névjegye" #: about.glade:10 msgid "GUI and notification area icon for Syncthing" msgstr "A Syncthing grafikus felületének és értesítési területének ikonja" #: app.glade:239 app.glade:420 app.glade:802 msgid "Open _Web Interface" msgstr "_Webfelület megnyitása" #: app.glade:251 app.glade:424 app.glade:814 msgid "Display _Daemon Output" msgstr "_Démon kimenete" #: app.glade:280 app.glade:430 msgid "UI _Settings" msgstr "Felület beállításai" #: app.glade:325 app.glade:451 msgid "Add Shared _Folder" msgstr "Megosztott _mappa hozzáadása" #: app.glade:338 app.glade:455 msgid "Add _Device" msgstr "_Eszköz hozzáadása" #: app.glade:356 app.glade:461 msgid "Daemon _Settings" msgstr "Démon _beállításai" #: app.glade:371 app.glade:465 app.glade:588 app.glade:788 msgid "Show _ID" msgstr "_Azonosító megjelenítése" #: app.glade:391 app.glade:471 msgid "Sh_utdown Daemon" msgstr "Démon _leállítása" #: app.glade:404 app.glade:475 msgid "_Restart Daemon" msgstr "Démon _újraindítása" #: app.glade:436 msgid "_About" msgstr "_Névjegy" #: app.glade:440 msgid "_Quit" msgstr "_Kilépés" #: app.glade:490 msgid "Override Remote Changes" msgstr "Távoli módosítások felülírása" #: app.glade:519 msgid "Edit _Ignore Patterns" msgstr "Kihagyási _minták szerkesztése" #: app.glade:547 msgid "_Rescan" msgstr "Át_nézés" #: app.glade:559 msgid "_Browse" msgstr "_Tallózás" #: app.glade:611 msgid "Resume" msgstr "Folytatás" #: app.glade:641 msgid "Connecting to daemon..." msgstr "Csatlakozás a démonhoz…" #: app.glade:669 msgid "S_top Syncthing" msgstr "Syncthing _leállítása" #: app.glade:683 msgid "Resume Sync_thing" msgstr "Syncthing _folytatása" #: app.glade:695 daemon-settings.glade:335 msgid "_Incoming Rate Limit" msgstr "_Bejövő sebességkorlát" #: app.glade:709 app.glade:751 msgid "_Unlimited" msgstr "_Korlátozás nélkül" #: app.glade:718 app.glade:760 msgid "_Other" msgstr "_Egyéb" #: app.glade:737 msgid "_Outgoing Rate Limit" msgstr "_Kimenő sebességkorlát" #: daemon-output.glade:7 msgid "Daemon Output" msgstr "Démon kimenete" #: daemon-settings.glade:106 msgid "Sync Protocol Listen Addresses" msgstr "Szinkronizációs protokoll címe" #: daemon-settings.glade:136 msgid "Enable Local _Discovery" msgstr "Helyi felfedezés engedélyezése" #: daemon-settings.glade:153 msgid "Enable _UPnP" msgstr "_UPnP engedélyezése" #: daemon-settings.glade:171 msgid "Local Discovery _Port" msgstr "Helyi felfedezés _portja:" #: daemon-settings.glade:212 msgid "Outgoing _Rate Limit" msgstr "Kimenő sebességkorlát" #: daemon-settings.glade:229 msgid "Open browser with _WebUI when daemon is starting" msgstr "A webfelület megnyitása böngészőben a démon indításakor" #: daemon-settings.glade:246 msgid "Enable _Anonymous Usage Reporting" msgstr "Névtelen felhasználási adatok küldésének engedélyezése" #: daemon-settings.glade:262 msgid "Enable _Global Discovery" msgstr "_Globális felfedezés engedélyezése" #: daemon-settings.glade:281 msgid "Global Discovery _Servers" msgstr "Globális felfedezési kiszolgálók" #: device-edit.glade:102 msgid "Device _ID" msgstr "Eszköz_azonosító" #: device-edit.glade:134 msgid "Device _Name" msgstr "Eszköz_név" #: device-edit.glade:166 msgid "Shown instead of Device ID in the cluster status." msgstr "Megjelenítés az eszközazonosító helyett a klaszterállapotban." #: device-edit.glade:181 msgid "_Addresses" msgstr "_Címek" #: device-edit.glade:213 msgid "" "Enter comma separated \"ip:port\" addresses or \"dynamic\" to perform " "automatic discovery of the address." msgstr "Vesszővel elválasztott listában lehet megadni az \"ip:port\" címeket, ill. a \"dynamic\" kulcsszót az automatikus felfedezés végrehajtásához." #: device-edit.glade:242 msgid "Share _Folders" msgstr "Mappák _megosztása" #: device-edit.glade:276 msgid "Select the folders to share with this device" msgstr "Mappák kiválasztása ezen eszközzel való megosztáshoz" #: device-edit.glade:287 msgid "_Introducer" msgstr "_Bevezető" #: device-edit.glade:308 msgid "" "Any devices configured on an introducer device will be added to this device " "as well." msgstr "Minden, a bevezető eszközön beállított eszköz hozzá lesz adva ehhez az eszközhöz is." #: device-edit.glade:323 msgid "_Compression" msgstr "_Tömörítés" #: device-id.glade:14 msgid "Device Identification" msgstr "Eszközazonosító" #: device-id.glade:68 msgid "XYZ-123-ABC" msgstr "XYZ-123-ABC" #: find-daemon.glade:126 ui-settings.glade:821 msgid "_Browse..." msgstr "_Tallózás…" #: find-daemon.glade:179 msgid "_Download..." msgstr "_Letöltés…" #: folder-edit.glade:44 msgctxt "In File Pull Order combobox" msgid "Random" msgstr "Véletlenszerű" #: folder-edit.glade:48 msgctxt "In File Pull Order combobox" msgid "Alphabetic" msgstr "ABC sorrendben" #: folder-edit.glade:52 msgctxt "In File Pull Order combobox" msgid "Smallest First" msgstr "Kisebb először" #: folder-edit.glade:56 msgctxt "In File Pull Order combobox" msgid "Largest First" msgstr "Nagyobb először" #: folder-edit.glade:60 msgctxt "In File Pull Order combobox" msgid "Oldest First" msgstr "Régebbi először" #: folder-edit.glade:64 msgctxt "In File Pull Order combobox" msgid "Newest First" msgstr "Újabb először" #: folder-edit.glade:82 msgid "Simple" msgstr "Egyszerű" #: folder-edit.glade:86 msgid "Staggered" msgstr "Többszintű" #: folder-edit.glade:90 msgid "Trashcan" msgstr "Szemetes" #: folder-edit.glade:94 msgid "External" msgstr "Külső" #: folder-edit.glade:171 msgid "Folder _Label" msgstr "Mappacímke" #: folder-edit.glade:190 msgid "Generate Random" msgstr "Véletlenszerű előállítása" #: folder-edit.glade:202 msgid "Short identifier for the folder. Must be the same on all devices." msgstr "A mappa rövid azonosítója. Minden eszközön azonosnak kell lennie." #: folder-edit.glade:216 msgid "_Path" msgstr "Út_vonal" #: folder-edit.glade:234 msgid "" "Path to the folder on the local computer. Will be created if it does not " "exist." msgstr "A mappa elérési útja az eszközön. Amennyiben nem létezik, a program automatikusan létrehozza." #: folder-edit.glade:248 msgid "Rescan _Interval" msgstr "Átnézési _intervallum" #: folder-edit.glade:293 msgid "Monitor filesystem for _changes" msgstr "Fájlrendszer megfigyelése a _változásokért" #: folder-edit.glade:343 msgid "Browse..." msgstr "Tallózás…" #: folder-edit.glade:366 msgid "Folder _ID" msgstr "Mapp_aazonosító" #: folder-edit.glade:396 msgid "" "Optional descriptive label for the folder. Can be different on each device." msgstr "A mappa kiegészítő leírása. Minden eszközön különböző lehet." #: folder-edit.glade:418 msgid "_Send Only Folder" msgstr "Csak _mappa küldése" #: folder-edit.glade:439 msgid "" "Files are protected from changes made on other devices, but changes made on " "this device will be sent to the rest of the cluster." msgstr "A fájlok védve vannak a más eszközökön történt változásokkal szemben, de az ezen az eszközön történt változások érvényesek lesznek a többire." #: folder-edit.glade:453 msgid "_Receive Only Folder" msgstr "Csak _fogadó mappa" #: folder-edit.glade:474 msgid "" "Changes from other devices are applied to files on this device, but changes " "made on this device are not sent to the rest of the cluster.\n" msgstr "A többi eszköz módosításai alkalmazva lesznek ennek az eszköznek a fájljain, de az ezen az eszközön történt módosítások nem lesznek elküldve a fürt többi tagjának.\n" #: folder-edit.glade:456 msgid "_Folder Settings" msgstr "_Mappabeállítások" #: folder-edit.glade:476 msgid "Select the devices to share this folder with." msgstr "Eszközök, amelyekkel meg szeretnénk osztani a mappát" #: folder-edit.glade:514 msgid "Share With _Devices" msgstr "Megosztás más eszközzel" #: folder-edit.glade:535 msgid "Versioning _Mode" msgstr "Verziószámozási _módszer" #: folder-edit.glade:590 msgid "" "Files are moved to date stamped versions in a .stversions folder when " "replaced or deleted by syncthing." msgstr "Ha a Syncthing felülírja vagy törli a fájlokat, akkor azok a .stversions mappába lesznek áthelyezve, időbélyegzővel ellátva." #: folder-edit.glade:605 msgid "_Keep Versions" msgstr "_Verziók megtartása" #: folder-edit.glade:642 msgid "The number of old versions to keep, per file." msgstr "A megtartott régi verziók száma, fájlonként." #: folder-edit.glade:671 msgid "" "Files are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing. Versions are automatically deleted if they are older than the maximum age or exceed the number of files allowed in an interval.\n" "\n" "The following intervals are used: for the first hour a version is kept every 30 seconds, for the first day a version is kept every hour, for the first 30 days a version is kept every day, until the maximum age a version is kept every week." msgstr "Ha a Syncthing felülírja vagy törli a fájlokat, akkor azok a .stversions mappába lesznek áthelyezve, időbélyegzővel ellátva. A régi verziók automatikusan törlődnek, amennyiben öregebbek mint a maximum kor, vagy már több van belőlük mint az adott időszakban megtartható maximum.\n\nA következő intervallumok használatosak: egy régi verziót őrzünk meg az első órában minden 30 másodpercben, az első nap minden órában, az első 30 napban minden nap, egészen addig amíg el nem érjük a maximálisan megtartható verziók számát minden héten." #: folder-edit.glade:688 msgid "Ma_ximum Age" msgstr "Ma_ximális kor" #: folder-edit.glade:727 msgid "Versions _Path" msgstr "Verziók útvonala" #: folder-edit.glade:759 msgid "" "Path where versions should be stored (leave empty for the default " ".stversions folder)." msgstr "A verziók tárolására szolgáló elérési út (üresen hagyva az alapértelmezett .stversions mappa)." #: folder-edit.glade:787 msgid "" "Files are moved to .stversions folder when replaced or deleted by Syncthing" msgstr "Ha a Syncthing áthelyezi vagy törli a fájlokat, akkor azok a .stversions mappába lesznek áthelyezve." #: folder-edit.glade:801 msgid "Clean out _after" msgstr "Takarítás" #: folder-edit.glade:840 msgid "The number of days to keep files in the trash can." msgstr "A napok száma ameddig a fájlok meg lesznek tartva a szemetesben." #: folder-edit.glade:869 msgid "" "An external command handles the versioning. It has to remove the file from " "the synced folder." msgstr "Külső program kezeli a fájlverzió-követést. Az távolítja el a fájlt a szinkronizált mappából." #: folder-edit.glade:884 msgid "Command" msgstr "Parancs" #: folder-edit.glade:917 msgid "" "The first command line parameter is the folder path and the second parameter" " is the relative path in the folder." msgstr "Az első parancssori paraméter a mappa elérési útja, a második a relatív elérési út a mappában." #: folder-edit.glade:953 msgid "File _Versioning" msgstr "Fájlok verziókövetése" #: folder-edit.glade:982 msgid "Ignore P_ermissions" msgstr "Jogosultságok figyelmen kívül hagyása" #: folder-edit.glade:1003 msgid "" "File permission bits are ignored when looking for changes. Use on FAT " "filesystems." msgstr "Fájljogosultságok figyelmen kívül hagyása változások keresésekor. FAT fájlrendszerek használatakor hasznos." #: folder-edit.glade:1018 msgid "Minimum Free Disk Space" msgstr "Minimális szabad lemezterület" #: folder-edit.glade:1057 msgid "File Pull _Order" msgstr "Fájlküldési sorrend" #: folder-edit.glade:1103 ui-settings.glade:954 msgid "_Advanced" msgstr "_Haladó" #: ignore-editor.glade:8 msgid "Ignore Patterns" msgstr "Kihagyási minták" #: ignore-editor.glade:99 msgid "" "See Syncthing " "documentation for list of supported patterns" msgstr "A Syncthing dokumentációban található a támogatott minták listája" #: ignore-editor.glade:114 msgid "File location: " msgstr "Fájl helye:" #: ui-settings.glade:27 msgid "Lowest" msgstr "Legalacsonyabb" #: ui-settings.glade:31 msgid "Low" msgstr "Alacsony" #: ui-settings.glade:35 msgid "Normal" msgstr "Normál" #: ui-settings.glade:39 msgid "Above Normal" msgstr "Normáltól magasabb" #: ui-settings.glade:46 msgid "Syncthing-GTK Settings" msgstr "Syncthing-GTK beállítások" #: ui-settings.glade:27 msgid "Default" msgstr "Alapértelmezett" #: ui-settings.glade:35 msgid "White" msgstr "Fehér" #: ui-settings.glade:31 msgid "Black" msgstr "Fekete" #: ui-settings.glade:69 msgid "Please, restart Syncthing-GTK to apply all changed settings" msgstr "A Syncthing-GTK újraindítása után fognak érvényre lépni a megváltoztatott beállítások" #: ui-settings.glade:136 msgid "When starting and Syncthing daemon is not running..." msgstr "Indításkor ha a Syncthing démon nem fut…" #: ui-settings.glade:147 msgid "... _wait for daemon" msgstr "… _várakozzon a démonra" #: ui-settings.glade:164 msgid "... start daemon in _background" msgstr "… indítsa el a démont a _háttérben" #: ui-settings.glade:180 msgid "... _ask me what to do" msgstr "… _kérdezze meg, mi a teendő" #: ui-settings.glade:199 msgid "When exiting after daemon was started in background..." msgstr "Kilépéskor, ha a démon a háttérben volt elindítva…" #: ui-settings.glade:210 msgid "... terminate _daemon" msgstr "… állítsa le a _démont" #: ui-settings.glade:226 msgid "... leave daemon _running" msgstr "… hagyja a démont _futni" #: ui-settings.glade:242 msgid "... ask me w_hat to do" msgstr "… kérdezze meg, mi a _teendő" #: ui-settings.glade:258 msgid "Us_e traditional window header" msgstr "Hagyományos _ablakfejléc használata" #: ui-settings.glade:278 msgid "Display desktop notifications for..." msgstr "Asztali értesítések alkalmazása…" #: ui-settings.glade:289 msgid "... file updates" msgstr "… fájlfrissülés esetén" #: ui-settings.glade:304 msgid "... errors" msgstr "… hibák esetén" #: ui-settings.glade:319 msgid "... synchronization completion" msgstr "… szinkronizálás befejezésekor" #: ui-settings.glade:334 msgid "Start Syncthing-GTK when I login to my desktop" msgstr "Syncthing-GTK indítása az asztali környezetbe való bejelentkezéskor" #: ui-settings.glade:350 msgid "Minimize to _tray on start" msgstr "Indítás a _tálcán" #: ui-settings.glade:366 msgid "Use _icons in menu" msgstr "_Ikonok alkalmazása a menüben" #: ui-settings.glade:383 msgid "Display paths in directories panel" msgstr "Útvonalak megjelenítése a mappák panelen" #: ui-settings.glade:399 msgid "Force _dark theme" msgstr "_Sötét téma kényszerítése" #: ui-settings.glade:540 msgid "Tray icon style" msgstr "Tálcaikon stílusa" #: ui-settings.glade:553 msgid "Language" msgstr "Nyelv" #: ui-settings.glade:474 msgid "_Interface" msgstr "_Felület" #: ui-settings.glade:492 msgid "Integrate Syncthing with filemanagers" msgstr "Syncthing integrálása a fájlkezelőkbe" #: ui-settings.glade:507 msgid "Nemo (Cinamon Desktop)" msgstr "Nemo (Cinamon asztali környezet)" #: ui-settings.glade:524 msgid "Nautilus (Ubuntu/GNOME)" msgstr "Nautilus (Ubuntu/GNOME)" #: ui-settings.glade:540 msgid "Caja (MATE Desktop)" msgstr "Caja (MATE asztali környezet)" #: ui-settings.glade:579 msgid "" "Note: You may need to restart your filemanager after toggling " "integration." msgstr "Figyelem: Az integráció bekapcsolásához valószínűleg újra kell indítani a fájlkezelőket." #: ui-settings.glade:598 msgid "_Integration" msgstr "_Integráció" #: ui-settings.glade:627 msgid "Keep Syncthing binary up-to-date" msgstr "Syncthing bináris frissen tartása" #: ui-settings.glade:647 msgid "" "If enabled, Syncthing-GTK will automatically check for new daemon releases " "and replace binary with latest version." msgstr "Bekapcsolva a Syncthing-GTK automatikusan ellenőrzi a friss kiadásokat és lecserél a binárist a legfrissebb verzióval." #: ui-settings.glade:662 msgid "Daemon process priority" msgstr "Démon prioritása" #: ui-settings.glade:698 msgid "" "Priority will be used only if \"start daemon in background\" option " "is checked on \"Interface\" page." msgstr "A prioritás akkor lesz használva, ha a démon háttérben való indítása opció be lett kapcsolva az interfész oldalon." #: ui-settings.glade:713 msgid "Maximum number of CPU cores" msgstr "CPU magok maximális száma" #: ui-settings.glade:731 msgid "" "Sets the maximum number of CPU cores for daemon to use. This value will be " "used only if \"start daemon in background\" option is checked on " "\"Interface\" page." msgstr "Beállítja, hogy a démon legfeljebb mennyi CPU magot használhat. Ez az érték akkor lesz használva, ha a démon háttérben való indítása opció be lett kapcsolva az interfész oldalon." #: ui-settings.glade:786 msgid "Daemon" msgstr "Démon" #: ui-settings.glade:808 msgid "" "This binary will be started when syncthing daemon is not running and " "\"start daemon in background\" option is checked on " "\"Interface\" page." msgstr "Ez a bináris kerül indításra ha a Syncthing démon nem fut és, ha a démon háttérben való indítása opció be lett kapcsolva az interfész oldalon." #: ui-settings.glade:838 msgid "Syncthing binary location" msgstr "Syncthing bináris helye" #: ui-settings.glade:867 msgid "Daemon arguments and variables" msgstr "Démon argumentumai és változói" #: ui-settings.glade:897 msgid "" "Space-separated list of arguments and environment variables passed when starting above binary\n" "\n" "Use VARIABLE=\"value\" to set variable and -argument=\"value\" (with dash) for argument.\n" "\n" "If you need to pass commandline to different command (such as logger or ionice), separate prefixed arguments with exclamation mark \"!\"\n" "\n" "Example:\n" " STTRACE=\"all\" logger -t /var/log/syncthing.log ! -logflags=10" msgstr "Szóközzel elválasztott lista az argumentumokról és a környezetei változókról, melyek átadásra kerülnek a fenti binárisnak\n\nVáltozót a VÁLTOZÓ=\"érték\" szintaxissal lehet átadni, argumentumot pedig a -argumentum=\"érték\" (kötőjellel) módon.\n\nHa a parancssort különféle parancsoknak kell átadni (mint pl. a logger vagy az ionice), akkor az előtagos argumentumokat felkiáltó jellel \"!\" kell elválasztani.\n\nPélda:\nSTTRACE=\"all\" logger -t /var/log/syncthing.log ! -logflags=10" #: ui-settings.glade:921 msgid "" "Warning: Changing settings on this page may prevent you from using " "Syncthing-GTK" msgstr "Figyelem: Az ezen az oldalon lévő beállítások módosítása megakadályozhatja a Syncthing-GTK használatát." syncthing-gtk-0.9.4.4/locale/it/000077500000000000000000000000001352162771300163415ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/locale/it/LC_MESSAGES/000077500000000000000000000000001352162771300201265ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/locale/it/LC_MESSAGES/syncthing-gtk.mo000066400000000000000000000052421352162771300232570ustar00rootroot00000000000000*l;  )5 <Jh w  +2 ^l#  *   "       '4 HU\!o   ( #2 +V ,  )   # , B6 y  %&$  ")*' (  #!%s KiB/s%s day%s days%s days ago%s kB/s%s minutes ago%s seconds ago%s%%%ssAll DataCPU UtilizationCaja (MATE Desktop)CompressionDaemonDownload RateDownloaded file is corrupted.Error message:Metadata OnlyMinimum Free Disk SpaceMore infoNautilus (Ubuntu/GNOME)Nemo (Cinamon Desktop)NeverNoRAM UtilizationSyncthingSyncthing daemon is too old.Syncthing daemon not found.Syncthing has been successfully configured.Syncthing-GTKSyncthing-GTK SettingsThis platform (%s) is not supportedUI SettingsUpload RateVersionVersion:Welcome to Syncthing-GTK first run wizard!XYZ-123-ABCYesno limit~%s hours agoProject-Id-Version: syncthing-gtk Report-Msgid-Bugs-To: POT-Creation-Date: 2016-04-20 11:27+0200 PO-Revision-Date: 2017-09-22 23:33+0000 Last-Translator: kozec Language-Team: Italian (http://www.transifex.com/syncthing-gtk/syncthing-gtk/language/it/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: it Plural-Forms: nplurals=2; plural=(n != 1); %s KiB/s%s giorno%s giorni%s giorni fa%s kB/s%s minuti fa%s secondi fa%s%%%ssTutti i DatiUtilizzo CPUCaja (MATE Desktop)CompressioneDemoneVelocità DownloadIl file scaricato è danneggiato.Messaggio di errore:Solo i MetadatiMinimo Spazio Libero sul DiscoUlteriori infoNautilus (Ubuntu/GNOME)Nemo (Cinnamon Desktop)MaiNoUtilizzo RAMSyncthingIl demone di Syncthing è obsoleto.Impossibile trovare il demone di Syncthing.Syncthing è stato configurato con successo.Syncthing-GTKImpostazioni Syncthing-GTKQuesta piattaforma (%s) non è supportataImpostazioni UIVelocità UploadVersioneVersione:Benvenuti nella procedura guidata di primo avvio di Syncthing-GTK!XYZ-123-ABCSìnessun limite~%s ore fasyncthing-gtk-0.9.4.4/locale/it/LC_MESSAGES/syncthing-gtk.po000066400000000000000000001000141352162771300232530ustar00rootroot00000000000000# Syncthing-GTK # Copyright (C) 2014-2015 Kozec and contributors # This file is distributed under the same license as the Syncthing-GTK package. # # Translators: # Damtux, 2016 msgid "" msgstr "" "Project-Id-Version: syncthing-gtk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-04-20 11:27+0200\n" "PO-Revision-Date: 2017-09-22 23:33+0000\n" "Last-Translator: kozec \n" "Language-Team: Italian (http://www.transifex.com/syncthing-gtk/syncthing-gtk/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: syncthing_gtk/app.py:194 msgid "Syncthing-GTK started and running in notification area" msgstr "" #: syncthing_gtk/app.py:288 #, python-format msgid "%s kB/s" msgstr "%s kB/s" #: syncthing_gtk/app.py:302 syncthing_gtk/notifications.py:77 #: syncthing_gtk/wizard.py:53 msgid "Syncthing-GTK" msgstr "Syncthing-GTK" #: syncthing_gtk/app.py:363 syncthing_gtk/app.py:364 syncthing_gtk/app.py:942 msgid "Syncing" msgstr "" #: syncthing_gtk/app.py:366 syncthing_gtk/app.py:367 msgid "Scanning" msgstr "" #: syncthing_gtk/app.py:390 syncthing_gtk/app.py:652 msgid "Starting Syncthing daemon" msgstr "" #: syncthing_gtk/app.py:424 msgid "Allow Anonymous Usage Reporting?" msgstr "" #: syncthing_gtk/app.py:426 msgid "The encrypted usage report is sent daily." msgstr "" #: syncthing_gtk/app.py:427 msgid "It is used to track common platforms, folder sizes and app versions." msgstr "" #: syncthing_gtk/app.py:428 msgid "" "If the reported data set is changed you will be prompted with this dialog " "again." msgstr "" #: syncthing_gtk/app.py:430 msgid "The aggregated statistics are publicly available at" msgstr "" #: syncthing_gtk/app.py:486 msgid "Extracting update..." msgstr "" #: syncthing_gtk/app.py:491 msgid "Restarting daemon..." msgstr "" #: syncthing_gtk/app.py:507 #, python-format msgid "Failed to download upgrade: %s" msgstr "" #: syncthing_gtk/app.py:525 #, python-format msgid "Downloading Syncthing %s" msgstr "" #: syncthing_gtk/app.py:604 msgid "Connected to Syncthing daemon" msgstr "" #: syncthing_gtk/app.py:614 msgid "Connection to Syncthing daemon lost." msgstr "" #: syncthing_gtk/app.py:615 msgid "Syncthing is probably restarting or has been shut down." msgstr "" #: syncthing_gtk/app.py:617 msgid "Syncthing has been shut down." msgstr "" #: syncthing_gtk/app.py:621 syncthing_gtk/app.py:1499 msgid "Syncthing is restarting." msgstr "" #: syncthing_gtk/app.py:621 syncthing_gtk/app.py:1499 msgid "Please wait" msgstr "" #: syncthing_gtk/app.py:644 #, python-format msgid "Connecting to Syncthing daemon at %s..." msgstr "" #: syncthing_gtk/app.py:649 #, python-format msgid "Waiting for Syncthing daemon at %s..." msgstr "" #: syncthing_gtk/app.py:664 msgid "Your syncthing daemon is too old." msgstr "" #: syncthing_gtk/app.py:664 msgid "Attempting to download recent, please wait..." msgstr "" #: syncthing_gtk/app.py:670 msgid "" "Cannot authorize with daemon. Please, use WebUI to generate API key or " "disable password authentication." msgstr "" #: syncthing_gtk/app.py:672 #, python-format msgid "" "Your syncthing daemon is too old.\n" "Please, upgrade syncthing package at least to version %s and try again." msgstr "" #: syncthing_gtk/app.py:674 msgid "" "Sorry, connecting to HTTPS is not supported on this platform.\n" "Please, use WebUI to disable HTTPS try again." msgstr "" #: syncthing_gtk/app.py:677 msgid "Connection to daemon failed. Check your configuration and try again." msgstr "" #: syncthing_gtk/app.py:678 syncthing_gtk/app.py:1992 #: syncthing_gtk/editordialog.py:314 msgid "Error message:" msgstr "Messaggio di errore:" #: syncthing_gtk/app.py:689 msgid "More info" msgstr "Ulteriori info" #: syncthing_gtk/app.py:715 msgid "" "The configuration has been saved but not activated.\n" "Syncthing must restart to activate the new configuration." msgstr "" #: syncthing_gtk/app.py:717 msgid "_Restart" msgstr "" #: syncthing_gtk/app.py:784 #, python-format msgid "%(device)s wants to share folder \"%(folder)s\". Add new folder?" msgstr "" #: syncthing_gtk/app.py:791 syncthing_gtk/app.py:813 msgid "_Add" msgstr "" #: syncthing_gtk/app.py:806 #, python-format msgid "" "Device \"%(name)s\" (%(device)s) at IP \"%(ip)s\" wants to " "connect. Add new device?" msgstr "" #: syncthing_gtk/app.py:814 msgid "_Ignore" msgstr "" #: syncthing_gtk/app.py:832 msgid "RAM Utilization" msgstr "Utilizzo RAM" #: syncthing_gtk/app.py:833 msgid "CPU Utilization" msgstr "Utilizzo CPU" #: syncthing_gtk/app.py:834 syncthing_gtk/app.py:1353 msgid "Download Rate" msgstr "Velocità Download" #: syncthing_gtk/app.py:835 syncthing_gtk/app.py:1354 msgid "Upload Rate" msgstr "Velocità Upload" #: syncthing_gtk/app.py:836 msgid "Announce Server" msgstr "" #: syncthing_gtk/app.py:837 syncthing_gtk/app.py:1356 msgid "Version" msgstr "Versione" #: syncthing_gtk/app.py:860 syncthing_gtk/editordialog.py:394 msgid "disabled" msgstr "" #: syncthing_gtk/app.py:862 msgid "Online" msgstr "" #: syncthing_gtk/app.py:862 msgid "offline" msgstr "" #: syncthing_gtk/app.py:864 #, python-format msgid "%(online)s/%(total)s online" msgstr "" #: syncthing_gtk/app.py:891 syncthing_gtk/app.py:1357 #: syncthing_gtk/app.py:1382 msgid "Never" msgstr "Mai" #: syncthing_gtk/app.py:899 syncthing_gtk/app.py:1691 #: syncthing_gtk/app.py:1692 msgid "Paused" msgstr "" #: syncthing_gtk/app.py:899 syncthing_gtk/app.py:924 syncthing_gtk/app.py:939 #: syncthing_gtk/infobox.py:60 msgid "Disconnected" msgstr "" #: syncthing_gtk/app.py:916 msgid "Connected" msgstr "" #: syncthing_gtk/app.py:945 syncthing_gtk/app.py:980 syncthing_gtk/app.py:1030 #: syncthing_gtk/app.py:1031 syncthing_gtk/app.py:1070 msgid "Up to Date" msgstr "" #: syncthing_gtk/app.py:966 syncthing_gtk/app.py:967 syncthing_gtk/app.py:968 msgid "Files" msgstr "" #: syncthing_gtk/app.py:980 syncthing_gtk/app.py:1068 msgid "Cluster out of sync" msgstr "" #: syncthing_gtk/app.py:995 msgid "Stopped" msgstr "" #: syncthing_gtk/app.py:998 syncthing_gtk/app.py:1005 msgid "Error" msgstr "" #: syncthing_gtk/app.py:1024 #, python-format msgid "Synchronizing '%s'" msgstr "" #: syncthing_gtk/app.py:1026 #, python-format msgid "Synchronizing %s folders" msgstr "" #: syncthing_gtk/app.py:1035 syncthing_gtk/app.py:1036 msgid "All devices offline" msgstr "" #: syncthing_gtk/app.py:1040 syncthing_gtk/app.py:1041 msgid "Connecting to Syncthing daemon..." msgstr "" #: syncthing_gtk/app.py:1079 msgid "Unshared" msgstr "" #: syncthing_gtk/app.py:1082 msgid "Offline" msgstr "" #: syncthing_gtk/app.py:1176 msgid "Hide Window" msgstr "" #: syncthing_gtk/app.py:1190 app.glade:651 msgid "Show Window" msgstr "" #: syncthing_gtk/app.py:1239 msgid "Syncthing daemon doesn't appear to be running." msgstr "" #: syncthing_gtk/app.py:1240 msgid "Start it now?" msgstr "" #: syncthing_gtk/app.py:1243 msgid "Always start daemon automatically" msgstr "" #: syncthing_gtk/app.py:1292 msgid "Folder ID" msgstr "" #: syncthing_gtk/app.py:1293 msgid "Path" msgstr "" #: syncthing_gtk/app.py:1294 msgid "Global State" msgstr "" #: syncthing_gtk/app.py:1295 msgid "Local State" msgstr "" #: syncthing_gtk/app.py:1296 msgid "Out Of Sync" msgstr "" #: syncthing_gtk/app.py:1297 msgid "Folder Type" msgstr "" #: syncthing_gtk/app.py:1298 msgid "Ignore Permissions" msgstr "" #: syncthing_gtk/app.py:1299 msgid "Rescan Interval" msgstr "" #: syncthing_gtk/app.py:1300 msgid "Shared With" msgstr "" #: syncthing_gtk/app.py:1324 syncthing_gtk/app.py:1325 #: syncthing_gtk/app.py:1381 msgid "Yes" msgstr "Sì" #: syncthing_gtk/app.py:1324 syncthing_gtk/app.py:1325 #: syncthing_gtk/app.py:1381 msgid "No" msgstr "No" #: syncthing_gtk/app.py:1327 msgid "(watch)" msgstr "" #: syncthing_gtk/app.py:1341 msgid "Unused" msgstr "" #: syncthing_gtk/app.py:1350 msgid "Address" msgstr "" #: syncthing_gtk/app.py:1351 msgid "Synchronization" msgstr "" #: syncthing_gtk/app.py:1352 msgid "Compression" msgstr "Compressione" #: syncthing_gtk/app.py:1355 msgid "Introducer" msgstr "" #: syncthing_gtk/app.py:1357 msgid "Last Seen" msgstr "" #: syncthing_gtk/app.py:1378 device-edit.glade:22 msgid "All Data" msgstr "Tutti i Dati" #: syncthing_gtk/app.py:1379 device-edit.glade:26 folder-edit.glade:78 msgid "Off" msgstr "" #: syncthing_gtk/app.py:1375 msgid "Send Only" msgstr "" #: syncthing_gtk/app.py:1375 msgid "Send & Receive" msgstr "" #: syncthing_gtk/app.py:1380 device-edit.glade:30 msgid "Metadata Only" msgstr "Solo i Metadati" #: syncthing_gtk/app.py:1522 msgid "Exiting." msgstr "" #: syncthing_gtk/app.py:1523 msgid "Shutdown Syncthing daemon as well?" msgstr "" #: syncthing_gtk/app.py:1528 msgid "Always do same; Don't show this window again" msgstr "" #: syncthing_gtk/app.py:1768 #, python-format msgid "Do you really want to permanently stop synchronizing directory '%s'?" msgstr "" #: syncthing_gtk/app.py:1770 #, python-format msgid "Do you really want remove device '%s' from Syncthing?" msgstr "" #: syncthing_gtk/app.py:1838 msgid "Syncthing-Inotify Output" msgstr "" #: syncthing_gtk/app.py:1844 msgid "Syncthing-Inotify is unavailable or failed to start" msgstr "" #: syncthing_gtk/app.py:1991 msgid "Failed to start Syncthing daemon." msgstr "" #: syncthing_gtk/app.py:1993 msgid "" "Please, check your installation or set new path to Syncthing daemon binary." msgstr "" #: syncthing_gtk/daemonsettings.py:24 msgid "Syncthing Daemon Settings" msgstr "" #: syncthing_gtk/deviceeditor.py:24 msgid "" "The entered device ID does not look valid. It should be a 52 character " "string consisting of letters and numbers, with spaces and dashes being " "optional." msgstr "" #: syncthing_gtk/editordialog.py:312 msgid "Failed to load configuration from daemon." msgstr "" #: syncthing_gtk/editordialog.py:313 msgid "Try again." msgstr "" #: syncthing_gtk/editordialog.py:387 syncthing_gtk/editordialog.py:396 #, python-format msgid "%ss" msgstr "%ss" #: syncthing_gtk/editordialog.py:402 #, python-format msgid "%s%%" msgstr "%s%%" #: syncthing_gtk/editordialog.py:409 msgid "no limit" msgstr "nessun limite" #: syncthing_gtk/editordialog.py:411 #, python-format msgid "%s KiB/s" msgstr "%s KiB/s" #: syncthing_gtk/editordialog.py:418 msgid "never delete" msgstr "" #: syncthing_gtk/editordialog.py:420 #, python-format msgid "%s day" msgstr "%s giorno" #: syncthing_gtk/editordialog.py:422 #, python-format msgid "%s days" msgstr "%s giorni" #: syncthing_gtk/editordialog.py:455 msgid "Failed to save configuration." msgstr "" #: syncthing_gtk/finddaemondialog.py:24 find-daemon.glade:7 msgid "Can't invoke the daemon" msgstr "" #: syncthing_gtk/finddaemondialog.py:26 msgid "Syncthing binary" msgstr "" #: syncthing_gtk/finddaemondialog.py:28 syncthing_gtk/finddaemondialog.py:37 msgid "Syncthing daemon binary cannot be found." msgstr "" #: syncthing_gtk/finddaemondialog.py:29 #, python-format msgid "" "If you have Syncthing installed, please, set path to %s below or click on " "Download button to download latest Syncthing package." msgstr "" #: syncthing_gtk/finddaemondialog.py:38 #, python-format msgid "If you have Syncthing installed, please, set path to %s below" msgstr "" #: syncthing_gtk/finddaemondialog.py:82 syncthing_gtk/wizard.py:411 msgid "Cannot download Syncthing daemon." msgstr "" #: syncthing_gtk/finddaemondialog.py:83 syncthing_gtk/wizard.py:412 #, python-format msgid "This platform (%s) is not supported" msgstr "Questa piattaforma (%s) non è supportata" #: syncthing_gtk/finddaemondialog.py:100 msgid "Downloading..." msgstr "" #: syncthing_gtk/finddaemondialog.py:163 syncthing_gtk/stdownloader.py:251 #: syncthing_gtk/stdownloader.py:279 msgid "Download failed." msgstr "" #: syncthing_gtk/finddaemondialog.py:185 syncthing_gtk/wizard.py:458 msgid "Download finished." msgstr "" #: syncthing_gtk/foldereditor.py:45 msgid "Select Folder for new Folder" msgstr "" #: syncthing_gtk/foldereditor.py:166 syncthing_gtk/foldereditor.py:167 msgid "Please, install pyinotify package to use this feature" msgstr "" #: syncthing_gtk/ignoreeditor.py:44 msgid "File location:" msgstr "" #: syncthing_gtk/notifications.py:120 #, python-format msgid "Unexpected folder ID sent from device \"%s\"." msgstr "" #: syncthing_gtk/notifications.py:124 #, python-format msgid "Device \"%s\" is trying to connect to syncthing daemon." msgstr "" #: syncthing_gtk/notifications.py:153 #, python-format msgid "Synchronization of folder '%s' is completed." msgstr "" #: syncthing_gtk/notifications.py:160 #, python-format msgid "%(hostname)s: Downloaded '%(filename)s' to reflect remote changes." msgstr "" #: syncthing_gtk/notifications.py:165 #, python-format msgid "%(hostname)s: Deleted '%(filename)s' to reflect remote changes." msgstr "" #: syncthing_gtk/notifications.py:168 #, python-format msgid "%(hostname)s: Downloaded %(updated)s files to reflect remote changes." msgstr "" #: syncthing_gtk/notifications.py:171 #, python-format msgid "%(hostname)s: Deleted %(deleted)s files to reflect remote changes." msgstr "" #: syncthing_gtk/notifications.py:175 #, python-format msgid "" "%(hostname)s: downloaded %(updated)s files and deleted %(deleted)s files to " "reflect remote changes." msgstr "" #: syncthing_gtk/statusicon.py:48 msgid "Syncthing" msgstr "Syncthing" #: syncthing_gtk/stdownloader.py:174 syncthing_gtk/stdownloader.py:217 #: syncthing_gtk/stdownloader.py:313 syncthing_gtk/stdownloader.py:344 msgid "Failed to determine latest Syncthing version." msgstr "" #: syncthing_gtk/stdownloader.py:236 msgid "Failed to create temporaly file." msgstr "" #: syncthing_gtk/stdownloader.py:294 msgid "Downloaded file is corrupted." msgstr "Il file scaricato è danneggiato." #: syncthing_gtk/tools.py:192 #, python-format msgid "~%s hours ago" msgstr "~%s ore fa" #: syncthing_gtk/tools.py:194 #, python-format msgid "%s minutes ago" msgstr "%s minuti fa" #: syncthing_gtk/tools.py:196 #, python-format msgid "%s seconds ago" msgstr "%s secondi fa" #: syncthing_gtk/tools.py:197 msgid "just now" msgstr "" #: syncthing_gtk/tools.py:199 #, python-format msgid "%s days ago" msgstr "%s giorni fa" #: syncthing_gtk/tools.py:203 #, python-format msgid "in %s days" msgstr "" #: syncthing_gtk/tools.py:205 #, python-format msgid "~%s hours from now" msgstr "" #: syncthing_gtk/tools.py:207 #, python-format msgid "%s minutes from now" msgstr "" #: syncthing_gtk/tools.py:209 #, python-format msgid "%s seconds from now" msgstr "" #: syncthing_gtk/tools.py:210 msgid "in a moment" msgstr "" #: syncthing_gtk/uisettingsdialog.py:58 msgid "UI Settings" msgstr "Impostazioni UI" #: syncthing_gtk/uisettingsdialog.py:70 msgid "Unlimited" msgstr "" #: syncthing_gtk/uisettingsdialog.py:107 #, python-format msgid "Install %(package)s package to enable %(feature)s support" msgstr "" #: syncthing_gtk/uisettingsdialog.py:312 msgid "Browse for Syncthing binary" msgstr "" #: syncthing_gtk/wizard.py:53 msgid "First run wizard" msgstr "" #: syncthing_gtk/wizard.py:137 #, python-format msgid "Please, check error log and fill bug report on %s." msgstr "" #: syncthing_gtk/wizard.py:141 msgid "Display error log" msgstr "" #: syncthing_gtk/wizard.py:198 msgid "Welcome to Syncthing-GTK first run wizard!" msgstr "Benvenuti nella procedura guidata di primo avvio di Syncthing-GTK!" #: syncthing_gtk/wizard.py:200 msgid "It looks like you never have used Syncthing." msgstr "" #: syncthing_gtk/wizard.py:201 msgid "Initial configuration should be created." msgstr "" #: syncthing_gtk/wizard.py:202 msgid "" "Continue this wizard to create a Syncthing configuration file or abort it to exit." msgstr "" #: syncthing_gtk/wizard.py:204 #, python-format msgid "" "If you already had Syncthing daemon configured, please, exit this wizard and" " check your %s folder" msgstr "" #: syncthing_gtk/wizard.py:220 msgid "Searching for Syncthing daemon." msgstr "" #: syncthing_gtk/wizard.py:222 syncthing_gtk/wizard.py:394 msgid "Please wait..." msgstr "" #: syncthing_gtk/wizard.py:270 syncthing_gtk/wizard.py:287 msgid "Syncthing daemon not found." msgstr "Impossibile trovare il demone di Syncthing." #: syncthing_gtk/wizard.py:271 msgid "Please, use package manager to install the Syncthing package." msgstr "" #: syncthing_gtk/wizard.py:283 msgid "download latest binary" msgstr "" #: syncthing_gtk/wizard.py:288 syncthing_gtk/wizard.py:302 #, python-format msgid "" "Please, use package manager to install the Syncthing package or " "%(download_link)s from Syncthing page and save it to your %(target)s " "directory." msgstr "" #: syncthing_gtk/wizard.py:296 msgid "Syncthing daemon is too old." msgstr "Il demone di Syncthing è obsoleto." #: syncthing_gtk/wizard.py:297 #, python-format msgid "" "Syncthing-GTK needs Syncthing daemon %(min)s or newer, but only %(actual)s " "were found." msgstr "" #: syncthing_gtk/wizard.py:309 msgid "Alternatively, Syncthing-GTK can download Syncthing binary" msgstr "" #: syncthing_gtk/wizard.py:310 #, python-format msgid "to %s and keep it up-to-date, but this option is meant as" msgstr "" #: syncthing_gtk/wizard.py:312 msgid "last resort and generally not suggested." msgstr "" #: syncthing_gtk/wizard.py:315 msgid "_Download Syncthing binary" msgstr "" #: syncthing_gtk/wizard.py:319 msgid "Auto_update downloaded binary" msgstr "" #: syncthing_gtk/wizard.py:375 msgid "Syncthing daemon binary found." msgstr "" #: syncthing_gtk/wizard.py:377 syncthing_gtk/wizard.py:460 msgid "Binary path:" msgstr "" #: syncthing_gtk/wizard.py:378 msgid "Version:" msgstr "Versione:" #: syncthing_gtk/wizard.py:393 msgid "Downloading Syncthing daemon." msgstr "" #: syncthing_gtk/wizard.py:441 msgid "Failed to download Syncthing daemon package." msgstr "" #: syncthing_gtk/wizard.py:472 msgid "Syncthing is generating RSA key and certificate." msgstr "" #: syncthing_gtk/wizard.py:473 msgid "This may take a while..." msgstr "" #: syncthing_gtk/wizard.py:515 msgid "Failed to generate keys" msgstr "" #: syncthing_gtk/wizard.py:516 msgid "Syncthing daemon failed to generate RSA key or certificate." msgstr "" #: syncthing_gtk/wizard.py:526 msgid "WebUI setup" msgstr "" #: syncthing_gtk/wizard.py:528 msgid "" "Syncthing can be managed remotely using WebUI and even if you are going to " "use Syncthing-GTK, WebUI needs to be enabled, as Syncthing-GTK uses it to " "communicate with the Syncthing daemon." msgstr "" #: syncthing_gtk/wizard.py:533 msgid "" "If you prefer to be able to manage Syncthing remotely, over the internet or " "on your local network, select listen on all interfaces and set " "username and password to protect Syncthing from unauthorized access." msgstr "" #: syncthing_gtk/wizard.py:538 msgid "" "Otherwise, select listen on localhost, so only users and programs on " "this computer will be able to interact with Syncthing." msgstr "" #: syncthing_gtk/wizard.py:544 msgid "WebUI Listen Addresses" msgstr "" #: syncthing_gtk/wizard.py:545 msgid "Listen on _localhost" msgstr "" #: syncthing_gtk/wizard.py:547 msgid "Listen on _all interfaces" msgstr "" #: syncthing_gtk/wizard.py:554 msgid "_Username" msgstr "" #: syncthing_gtk/wizard.py:555 msgid "_Password" msgstr "" #: syncthing_gtk/wizard.py:609 msgid "Saving settings..." msgstr "" #: syncthing_gtk/wizard.py:610 msgid "Checking for available port..." msgstr "" #: syncthing_gtk/wizard.py:631 msgid "Failed to find unused port for listening." msgstr "" #: syncthing_gtk/wizard.py:632 msgid "Please, check your firewall settings and try again." msgstr "" #: syncthing_gtk/wizard.py:646 msgid "Saving..." msgstr "" #: syncthing_gtk/wizard.py:678 msgid "Failed to load Syncthing configuration" msgstr "" #: syncthing_gtk/wizard.py:705 msgid "Failed to modify Syncthing configuration" msgstr "" #: syncthing_gtk/wizard.py:715 msgid "Failed to save Syncthing configuration" msgstr "" #: syncthing_gtk/wizard.py:729 msgid "Done." msgstr "" #: syncthing_gtk/wizard.py:731 msgid "Syncthing has been successfully configured." msgstr "Syncthing è stato configurato con successo." #: syncthing_gtk/wizard.py:733 msgid "" "You can configure more details later, in UI Settings and Daemon " "Settings menus in main window of application." msgstr "" #: about.glade:7 msgid "About Syncthing-GTK" msgstr "" #: about.glade:10 msgid "GTK GUI and notification area icon for Syncthing" msgstr "" #: about.glade:12 msgid "GitHub" msgstr "" #: app.glade:239 app.glade:420 app.glade:802 msgid "Open _Web Interface" msgstr "" #: app.glade:251 app.glade:424 app.glade:814 msgid "Display _Daemon Output" msgstr "" #: app.glade:263 msgid "Display Syncthing-Inotify Output" msgstr "" #: app.glade:280 app.glade:430 msgid "UI _Settings" msgstr "" #: app.glade:325 app.glade:451 msgid "Add Shared _Folder" msgstr "" #: app.glade:338 app.glade:455 msgid "Add _Device" msgstr "" #: app.glade:356 app.glade:461 msgid "Daemon _Settings" msgstr "" #: app.glade:371 app.glade:465 app.glade:588 app.glade:788 msgid "Show _ID" msgstr "" #: app.glade:391 app.glade:471 msgid "Sh_utdown Daemon" msgstr "" #: app.glade:404 app.glade:475 msgid "_Restart Daemon" msgstr "" #: app.glade:436 msgid "_About" msgstr "" #: app.glade:440 msgid "_Quit" msgstr "" #: app.glade:490 msgid "Override Remote Changes" msgstr "" #: app.glade:519 msgid "Edit _Ignore Patterns" msgstr "" #: app.glade:547 msgid "_Rescan" msgstr "" #: app.glade:559 msgid "_Browse" msgstr "" #: app.glade:611 msgid "Resume" msgstr "" #: app.glade:641 msgid "Connecting to daemon..." msgstr "" #: app.glade:669 msgid "S_top Syncthing" msgstr "" #: app.glade:683 msgid "Resume Sync_thing" msgstr "" #: app.glade:695 daemon-settings.glade:335 msgid "_Incoming Rate Limit" msgstr "" #: app.glade:709 app.glade:751 msgid "_Unlimited" msgstr "" #: app.glade:718 app.glade:760 msgid "_Other" msgstr "" #: app.glade:737 msgid "_Outgoing Rate Limit" msgstr "" #: daemon-output.glade:7 msgid "Daemon Output" msgstr "" #: daemon-settings.glade:106 msgid "Sync Protocol Listen Addresses" msgstr "" #: daemon-settings.glade:136 msgid "Enable Local _Discovery" msgstr "" #: daemon-settings.glade:153 msgid "Enable _UPnP" msgstr "" #: daemon-settings.glade:171 msgid "Local Discovery _Port" msgstr "" #: daemon-settings.glade:212 msgid "Outgoing _Rate Limit" msgstr "" #: daemon-settings.glade:229 msgid "Open browser with _WebUI when daemon is starting" msgstr "" #: daemon-settings.glade:246 msgid "Enable _Anonymous Usage Reporting" msgstr "" #: daemon-settings.glade:262 msgid "Enable _Global Discovery" msgstr "" #: daemon-settings.glade:281 msgid "Global Discovery _Servers" msgstr "" #: device-edit.glade:102 msgid "Device _ID" msgstr "" #: device-edit.glade:134 msgid "Device _Name" msgstr "" #: device-edit.glade:166 msgid "Shown instead of Device ID in the cluster status." msgstr "" #: device-edit.glade:181 msgid "_Addresses" msgstr "" #: device-edit.glade:213 msgid "" "Enter comma separated \"ip:port\" addresses or \"dynamic\" to perform " "automatic discovery of the address." msgstr "" #: device-edit.glade:242 msgid "Share _Folders" msgstr "" #: device-edit.glade:276 msgid "Select the folders to share with this device" msgstr "" #: device-edit.glade:287 msgid "_Introducer" msgstr "" #: device-edit.glade:308 msgid "" "Any devices configured on an introducer device will be added to this device " "as well." msgstr "" #: device-edit.glade:323 msgid "_Compression" msgstr "" #: device-id.glade:14 msgid "Device Identification" msgstr "" #: device-id.glade:68 msgid "XYZ-123-ABC" msgstr "XYZ-123-ABC" #: find-daemon.glade:126 ui-settings.glade:821 msgid "_Browse..." msgstr "" #: find-daemon.glade:179 msgid "_Download..." msgstr "" #: folder-edit.glade:44 msgctxt "In File Pull Order combobox" msgid "Random" msgstr "" #: folder-edit.glade:48 msgctxt "In File Pull Order combobox" msgid "Alphabetic" msgstr "" #: folder-edit.glade:52 msgctxt "In File Pull Order combobox" msgid "Smallest First" msgstr "" #: folder-edit.glade:56 msgctxt "In File Pull Order combobox" msgid "Largest First" msgstr "" #: folder-edit.glade:60 msgctxt "In File Pull Order combobox" msgid "Oldest First" msgstr "" #: folder-edit.glade:64 msgctxt "In File Pull Order combobox" msgid "Newest First" msgstr "" #: folder-edit.glade:82 msgid "Simple" msgstr "" #: folder-edit.glade:86 msgid "Staggered" msgstr "" #: folder-edit.glade:90 msgid "Trashcan" msgstr "" #: folder-edit.glade:94 msgid "External" msgstr "" #: folder-edit.glade:171 msgid "Folder _Label" msgstr "" #: folder-edit.glade:202 msgid "Short identifier for the folder. Must be the same on all devices." msgstr "" #: folder-edit.glade:216 msgid "_Path" msgstr "" #: folder-edit.glade:234 msgid "" "Path to the folder on the local computer. Will be created if it does not " "exist." msgstr "" #: folder-edit.glade:248 msgid "Rescan _Interval" msgstr "" #: folder-edit.glade:293 msgid "Monitor filesystem for _changes" msgstr "" #: folder-edit.glade:314 msgid "" "If enabled, changed, created and delete files are synchronized immediately, as long as Syncthing-GTK is running.\n" "Note: Using this along with short Rescan Interval (<300s) may consume a lot of resources." msgstr "" #: folder-edit.glade:343 msgid "Browse..." msgstr "" #: folder-edit.glade:366 msgid "Folder _ID" msgstr "" #: folder-edit.glade:396 msgid "" "Optional descriptive label for the folder. Can be different on each device." msgstr "" #: folder-edit.glade:418 msgid "_Send Only Folder" msgstr "" #: folder-edit.glade:439 msgid "" "Files are protected from changes made on other devices, but changes made on " "this device will be sent to the rest of the cluster." msgstr "" #: folder-edit.glade:456 msgid "_Folder Settings" msgstr "" #: folder-edit.glade:476 msgid "Select the devices to share this folder with." msgstr "" #: folder-edit.glade:514 msgid "Share With _Devices" msgstr "" #: folder-edit.glade:535 msgid "Versioning _Mode" msgstr "" #: folder-edit.glade:590 msgid "" "Files are moved to date stamped versions in a .stversions folder when " "replaced or deleted by syncthing." msgstr "" #: folder-edit.glade:605 msgid "_Keep Versions" msgstr "" #: folder-edit.glade:642 msgid "The number of old versions to keep, per file." msgstr "" #: folder-edit.glade:671 msgid "" "Files are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing. Versions are automatically deleted if they are older than the maximum age or exceed the number of files allowed in an interval.\n" "\n" "The following intervals are used: for the first hour a version is kept every 30 seconds, for the first day a version is kept every hour, for the first 30 days a version is kept every day, until the maximum age a version is kept every week." msgstr "" #: folder-edit.glade:688 msgid "Ma_ximum Age" msgstr "" #: folder-edit.glade:727 msgid "Versions _Path" msgstr "" #: folder-edit.glade:759 msgid "" "Path where versions should be stored (leave empty for the default " ".stversions folder)." msgstr "" #: folder-edit.glade:787 msgid "" "Files are moved to .stversions folder when replaced or deleted by Syncthing" msgstr "" #: folder-edit.glade:801 msgid "Clean out _after" msgstr "" #: folder-edit.glade:840 msgid "The number of days to keep files in the trash can." msgstr "" #: folder-edit.glade:869 msgid "" "An external command handles the versioning. It has to remove the file from " "the synced folder." msgstr "" #: folder-edit.glade:884 msgid "Command" msgstr "" #: folder-edit.glade:917 msgid "" "The first command line parameter is the folder path and the second parameter" " is the relative path in the folder." msgstr "" #: folder-edit.glade:953 msgid "File _Versioning" msgstr "" #: folder-edit.glade:982 msgid "Ignore P_ermissions" msgstr "" #: folder-edit.glade:1003 msgid "" "File permission bits are ignored when looking for changes. Use on FAT " "filesystems." msgstr "" #: folder-edit.glade:1018 msgid "Minimum Free Disk Space" msgstr "Minimo Spazio Libero sul Disco" #: folder-edit.glade:1057 msgid "File Pull _Order" msgstr "" #: folder-edit.glade:1103 ui-settings.glade:954 msgid "_Advanced" msgstr "" #: ignore-editor.glade:8 msgid "Ignore Patterns" msgstr "" #: ignore-editor.glade:99 msgid "" "See Syncthing " "documentation for list of supported patterns" msgstr "" #: ignore-editor.glade:114 msgid "File location: " msgstr "" #: ui-settings.glade:27 msgid "Lowest" msgstr "" #: ui-settings.glade:31 msgid "Low" msgstr "" #: ui-settings.glade:35 msgid "Normal" msgstr "" #: ui-settings.glade:39 msgid "Above Normal" msgstr "" #: ui-settings.glade:46 msgid "Syncthing-GTK Settings" msgstr "Impostazioni Syncthing-GTK" #: ui-settings.glade:69 msgid "Please, restart Syncthing-GTK to apply all changed settings" msgstr "" #: ui-settings.glade:136 msgid "When starting and Syncthing daemon is not running..." msgstr "" #: ui-settings.glade:147 msgid "... _wait for daemon" msgstr "" #: ui-settings.glade:164 msgid "... start daemon in _background" msgstr "" #: ui-settings.glade:180 msgid "... _ask me what to do" msgstr "" #: ui-settings.glade:199 msgid "When exiting after daemon was started in background..." msgstr "" #: ui-settings.glade:210 msgid "... terminate _daemon" msgstr "" #: ui-settings.glade:226 msgid "... leave daemon _running" msgstr "" #: ui-settings.glade:242 msgid "... ask me w_hat to do" msgstr "" #: ui-settings.glade:258 msgid "Us_e traditional window header" msgstr "" #: ui-settings.glade:278 msgid "Display desktop notifications for..." msgstr "" #: ui-settings.glade:289 msgid "... file updates" msgstr "" #: ui-settings.glade:304 msgid "... errors" msgstr "" #: ui-settings.glade:319 msgid "... synchronization completion" msgstr "" #: ui-settings.glade:334 msgid "Start Syncthing-GTK when I login to my desktop" msgstr "" #: ui-settings.glade:350 msgid "Minimize to _tray on start" msgstr "" #: ui-settings.glade:366 msgid "Use _icons in menu" msgstr "" #: ui-settings.glade:383 msgid "Display paths in directories panel" msgstr "" #: ui-settings.glade:399 msgid "Force _dark theme" msgstr "" #: ui-settings.glade:474 msgid "_Interface" msgstr "" #: ui-settings.glade:492 msgid "Integrate Syncthing with filemanagers" msgstr "" #: ui-settings.glade:507 msgid "Nemo (Cinamon Desktop)" msgstr "Nemo (Cinnamon Desktop)" #: ui-settings.glade:524 msgid "Nautilus (Ubuntu/GNOME)" msgstr "Nautilus (Ubuntu/GNOME)" #: ui-settings.glade:540 msgid "Caja (MATE Desktop)" msgstr "Caja (MATE Desktop)" #: ui-settings.glade:579 msgid "" "Note: You may need to restart your filemanager after toggling " "integration." msgstr "" #: ui-settings.glade:598 msgid "_Integration" msgstr "" #: ui-settings.glade:627 msgid "Keep Syncthing binary up-to-date" msgstr "" #: ui-settings.glade:647 msgid "" "If enabled, Syncthing-GTK will automatically check for new daemon releases " "and replace binary with latest version." msgstr "" #: ui-settings.glade:662 msgid "Daemon process priority" msgstr "" #: ui-settings.glade:698 msgid "" "Priority will be used only if \"start daemon in background\" option " "is checked on \"Interface\" page." msgstr "" #: ui-settings.glade:713 msgid "Maximum number of CPU cores" msgstr "" #: ui-settings.glade:731 msgid "" "Sets the maximum number of CPU cores for daemon to use. This value will be " "used only if \"start daemon in background\" option is checked on " "\"Interface\" page." msgstr "" #: ui-settings.glade:786 msgid "Daemon" msgstr "Demone" #: ui-settings.glade:808 msgid "" "This binary will be started when syncthing daemon is not running and " "\"start daemon in background\" option is checked on " "\"Interface\" page." msgstr "" #: ui-settings.glade:838 msgid "Syncthing binary location" msgstr "" #: ui-settings.glade:867 msgid "Daemon arguments and variables" msgstr "" #: ui-settings.glade:897 msgid "" "Space-separated list of arguments and environment variables passed when starting above binary\n" "\n" "Use VARIABLE=\"value\" to set variable and -argument=\"value\" (with dash) for argument.\n" "\n" "If you need to pass commandline to different command (such as logger or ionice), separate prefixed arguments with exclamation mark \"!\"\n" "\n" "Example:\n" " STTRACE=\"all\" logger -t /var/log/syncthing.log ! -logflags=10" msgstr "" #: ui-settings.glade:921 msgid "" "Warning: Changing settings on this page may prevent you from using " "Syncthing-GTK" msgstr "" syncthing-gtk-0.9.4.4/locale/lt/000077500000000000000000000000001352162771300163445ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/locale/lt/LC_MESSAGES/000077500000000000000000000000001352162771300201315ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/locale/lt/LC_MESSAGES/syncthing-gtk.mo000066400000000000000000001046001352162771300232600ustar00rootroot00000000000000W >B?3EsBc`| + BM^xQW w     : ,8!!e!]!!T!-J"x" "" """"g#!m##### # ##'$!7$Y$$q$D$$ $$% %58%]n%% % % % &(&$?&d&"v&5&D&' '('9'L'j'''''!'( (e&(((((( (-(,)D))c))&)))()&*F*!d*****R*+K +gl++-.. ?. I. U. `.n.0... . .r.^/P)0az0=011x222&2)2(3()3"R3*u3(393%4 )4D44,y4 4 4445 5"5&5 -5:5 V5d555 55555566 660'6KX66 '737H7`7Oe7V7 8V8 j8v82838K8589;n99=::ox:::;;.;5;G;W; j;t;};v;<-1<,_<< <<O=`=t= =A= ==1=">;>kB>> J@.T@ @@@@@,@A(A;A CAMAgAxAA(NBwB.B;BCC:C+XC0C7CC DDV+D6DD3D3Em:E)EEpjF2F-Gt=t0u AuMuv-vHv]vLlv v v0v,w0w9ww yAy-zAz `z+kzz-zzz { {${B{X{u{/d|%|,|?|$'}L}g}*}/}H}%&~ L~Z~cs~5~ <)0f:Yn<u6 "ׂ 6? v $܃$&5.\;6ۄ6 IUZ+})  І چ "' ;&F m{ ) ԇ3 IS e$o / H\p$ SAol*F@0V:M9n]MQN+DG<FfW  th'(8[b;|Jg? NTE2S5<8(&E/c_CxakRrU1A>=0" P#^KwsPZ+JLI7,!`qI%.R31GT-$:C'?,U6=".O&v*Ved BmK6zHQ }! Y>) 59iX4Luj4/W3@-D2H\ OpB{#);y %7~%(device)s wants to share folder "%(folder)s". Add new folder?%(hostname)s: Deleted %(deleted)s files to reflect remote changes.%(hostname)s: Deleted '%(filename)s' to reflect remote changes.%(hostname)s: Downloaded %(updated)s files to reflect remote changes.%(hostname)s: Downloaded '%(filename)s' to reflect remote changes.%(hostname)s: downloaded %(updated)s files and deleted %(deleted)s files to reflect remote changes.%(online)s/%(total)s online%s KiB/s%s day%s days%s days ago%s kB/s%s minutes ago%s minutes from now%s seconds ago%s seconds from now%s%%%ss(watch)... _ask me what to do... _wait for daemon... ask me w_hat to do... errors... file updates... leave daemon _running... start daemon in _background... synchronization completion... terminate _daemonNote: You may need to restart your filemanager after toggling integration.Warning: Changing settings on this page may prevent you from using Syncthing-GTKAbout Syncthing-GTKAbove NormalAdd Shared _FolderAdd _DeviceAddressAll DataAll devices offlineAllow Anonymous Usage Reporting?Alternatively, Syncthing-GTK can download Syncthing binaryAlways do same; Don't show this window againAlways start daemon automaticallyAn external command handles the versioning. It has to remove the file from the synced folder.Announce ServerAny devices configured on an introducer device will be added to this device as well.Attempting to download recent, please wait...Auto_update downloaded binaryBinary path:Browse for Syncthing binaryBrowse...CPU UtilizationCaja (MATE Desktop)Can't invoke the daemonCannot authorize with daemon. Please, use WebUI to generate API key or disable password authentication.Cannot download Syncthing daemon.Checking for available port...Clean out _afterCluster out of syncCommandCompressionConnectedConnected to Syncthing daemonConnecting to Syncthing daemon at %s...Connecting to Syncthing daemon...Connecting to daemon...Connection to Syncthing daemon lost.Connection to daemon failed. Check your configuration and try again.DaemonDaemon OutputDaemon _SettingsDaemon arguments and variablesDaemon process priorityDevice "%s" is trying to connect to syncthing daemon.Device "%(name)s" (%(device)s) at IP "%(ip)s" wants to connect. Add new device?Device IdentificationDevice _IDDevice _NameDisconnectedDisplay Syncthing-Inotify OutputDisplay _Daemon OutputDisplay desktop notifications for...Display error logDisplay paths in directories panelDo you really want remove device '%s' from Syncthing?Do you really want to permanently stop synchronizing directory '%s'?Done.Download RateDownload failed.Download finished.Downloaded file is corrupted.Downloading Syncthing %sDownloading Syncthing daemon.Downloading...Edit _Ignore PatternsEnable Local _DiscoveryEnable _Anonymous Usage ReportingEnable _Global DiscoveryEnable _UPnPEnter comma separated "ip:port" addresses or "dynamic" to perform automatic discovery of the address.ErrorError message:Exiting.ExternalExtracting update...Failed to create temporaly file.Failed to determine latest Syncthing version.Failed to download Syncthing daemon package.Failed to download upgrade: %sFailed to find unused port for listening.Failed to generate keysFailed to load Syncthing configurationFailed to load configuration from daemon.Failed to modify Syncthing configurationFailed to save Syncthing configurationFailed to save configuration.Failed to start Syncthing daemon.File Pull _OrderFile _VersioningFile location:File location: File permission bits are ignored when looking for changes. Use on FAT filesystems.FilesFiles are moved to .stversions folder when replaced or deleted by SyncthingFiles are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing.Files are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing. Versions are automatically deleted if they are older than the maximum age or exceed the number of files allowed in an interval. The following intervals are used: for the first hour a version is kept every 30 seconds, for the first day a version is kept every hour, for the first 30 days a version is kept every day, until the maximum age a version is kept every week.Files are protected from changes made on other devices, but changes made on this device will be sent to the rest of the cluster.First run wizardFolder IDFolder TypeFolder _IDFolder _LabelForce _dark themeGTK GUI and notification area icon for SyncthingGitHubGlobal Discovery _ServersGlobal StateHide WindowIf enabled, Syncthing-GTK will automatically check for new daemon releases and replace binary with latest version.If enabled, changed, created and delete files are synchronized immediately, as long as Syncthing-GTK is running. Note: Using this along with short Rescan Interval (<300s) may consume a lot of resources.If the reported data set is changed you will be prompted with this dialog again.If you already had Syncthing daemon configured, please, exit this wizard and check your %s folderIf you have Syncthing installed, please, set path to %s belowIf you have Syncthing installed, please, set path to %s below or click on Download button to download latest Syncthing package.If you prefer to be able to manage Syncthing remotely, over the internet or on your local network, select listen on all interfaces and set username and password to protect Syncthing from unauthorized access.Ignore P_ermissionsIgnore PatternsIgnore PermissionsIn File Pull Order comboboxAlphabeticIn File Pull Order comboboxLargest FirstIn File Pull Order comboboxNewest FirstIn File Pull Order comboboxOldest FirstIn File Pull Order comboboxRandomIn File Pull Order comboboxSmallest FirstInitial configuration should be created.Install %(package)s package to enable %(feature)s supportIntegrate Syncthing with filemanagersIntroducerIt is used to track common platforms, folder sizes and app versions.It looks like you never have used Syncthing.Keep Syncthing binary up-to-dateLast SeenListen on _all interfacesListen on _localhostLocal Discovery _PortLocal StateLowLowestMa_ximum AgeMaximum number of CPU coresMetadata OnlyMinimize to _tray on startMinimum Free Disk SpaceMonitor filesystem for _changesMore infoNautilus (Ubuntu/GNOME)Nemo (Cinamon Desktop)NeverNoNormalOffOfflineOnlineOpen _Web InterfaceOpen browser with _WebUI when daemon is startingOptional descriptive label for the folder. Can be different on each device.Otherwise, select listen on localhost, so only users and programs on this computer will be able to interact with Syncthing.Out Of SyncOutgoing _Rate LimitOverride Remote ChangesPathPath to the folder on the local computer. Will be created if it does not exist.Path where versions should be stored (leave empty for the default .stversions folder).PausedPlease click %s to create a Syncthing configuration file or Quit to exitPlease waitPlease wait...Please, check error log and fill bug report on %s.Please, check your firewall settings and try again.Please, check your installation or set new path to Syncthing daemon binary.Please, install pyinotify package to use this featurePlease, restart Syncthing-GTK to apply all changed settingsPlease, use package manager to install the Syncthing package or %(download_link)s from Syncthing page and save it to your %(target)s directory.Please, use package manager to install the Syncthing package.Priority will be used only if "start daemon in background" option is checked on "Interface" page.RAM UtilizationRescan IntervalRescan _IntervalRestarting daemon...ResumeResume Sync_thingS_top SyncthingSaving settings...Saving...ScanningSearching for Syncthing daemon.See Syncthing documentation for list of supported patternsSelect Folder for new FolderSelect the devices to share this folder with.Select the folders to share with this deviceSend & ReceiveSend OnlySets the maximum number of CPU cores for daemon to use. This value will be used only if "start daemon in background" option is checked on "Interface" page.Sh_utdown DaemonShare With _DevicesShare _FoldersShared WithShort identifier for the folder. Must be the same on all devices.Show WindowShow _IDShown instead of Device ID in the cluster status.Shutdown Syncthing daemon as well?SimpleSorry, connecting to HTTPS is not supported on this platform. Please, use WebUI to disable HTTPS try again.Space-separated list of arguments and environment variables passed when starting above binary Use VARIABLE="value" to set variable and -argument="value" (with dash) for argument. If you need to pass commandline to different command (such as logger or ionice), separate prefixed arguments with exclamation mark "!" Example: STTRACE="all" logger -t /var/log/syncthing.log ! -logflags=10StaggeredStart Syncthing-GTK when I login to my desktopStart it now?Starting Syncthing daemonStoppedSync Protocol Listen AddressesSynchronizationSynchronization of folder '%s' is completed.Synchronizing %s foldersSynchronizing '%s'SyncingSyncthingSyncthing Daemon SettingsSyncthing binarySyncthing binary locationSyncthing can be managed remotely using WebUI and even if you are going to use Syncthing-GTK, WebUI needs to be enabled, as Syncthing-GTK uses it to communicate with the Syncthing daemon.Syncthing daemon binary cannot be found.Syncthing daemon binary found.Syncthing daemon doesn't appear to be running.Syncthing daemon failed to generate RSA key or certificate.Syncthing daemon is too old.Syncthing daemon not found.Syncthing has been shut down.Syncthing has been successfully configured.Syncthing is generating RSA key and certificate.Syncthing is probably restarting or has been shut down.Syncthing is restarting.Syncthing-GTKSyncthing-GTK SettingsSyncthing-GTK needs Syncthing daemon %(min)s or newer, but only %(actual)s were found.Syncthing-GTK started and running in notification areaSyncthing-Inotify OutputSyncthing-Inotify is unavailable or failed to startThe aggregated statistics are publicly available atThe configuration has been saved but not activated. Syncthing must restart to activate the new configuration.The encrypted usage report is sent daily.The entered device ID does not look valid. It should be a 52 character string consisting of letters and numbers, with spaces and dashes being optional.The first command line parameter is the folder path and the second parameter is the relative path in the folder.The number of days to keep files in the trash can.The number of old versions to keep, per file.This binary will be started when syncthing daemon is not running and "start daemon in background" option is checked on "Interface" page.This may take a while...This platform (%s) is not supportedTrashcanTry again.UI SettingsUI _SettingsUnexpected folder ID sent from device "%s".UnlimitedUnsharedUnusedUp to DateUpload RateUs_e traditional window headerUse _icons in menuVersionVersion:Versioning _ModeVersions _PathWaiting for Syncthing daemon at %s...WebUI Listen AddressesWebUI setupWelcome to Syncthing-GTK first run wizard!When exiting after daemon was started in background...When starting and Syncthing daemon is not running...XYZ-123-ABCYesYou can configure more details later, in UI Settings and Daemon Settings menus in main window of application.Your syncthing daemon is too old.Your syncthing daemon is too old. Please, upgrade syncthing package at least to version %s and try again._About_Add_Addresses_Advanced_Browse_Browse..._Compression_Download Syncthing binary_Download..._Folder Settings_Ignore_Incoming Rate Limit_Integration_Interface_Introducer_Keep Versions_Other_Outgoing Rate Limit_Password_Path_Quit_Rescan_Restart_Restart Daemon_Send Only Folder_Unlimited_Usernamedisableddownload latest binaryin %s daysin a momentjust nowlast resort and generally not suggested.never deleteno limitofflineto %s and keep it up-to-date, but this option is meant as~%s hours ago~%s hours from nowProject-Id-Version: syncthing-gtk Report-Msgid-Bugs-To: POT-Creation-Date: 2016-04-20 11:27+0200 PO-Revision-Date: 2017-09-22 17:09+0000 Last-Translator: Moo Language-Team: Lithuanian (http://www.transifex.com/syncthing-gtk/syncthing-gtk/language/lt/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: lt Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2); %(device)s nori bendrinti aplanką "%(folder)s". Pridėti naują aplanką?%(hostname)s: Ištrinta %(deleted)s failų, kad būtų atspindėti nuotoliniai pakeitimai.%(hostname)s: Ištrinta '%(filename)s', kad būtų atspindėti nuotoliniai pakeitimai.%(hostname)s: Atsisiųsta %(updated)s failų, kad būtų atspindėti nuotoliniai pakeitimai.%(hostname)s: Atsisiųsta '%(filename)s', kad būtų atspindėti nuotoliniai pakeitimai.%(hostname)s: atsisiųsta %(updated)s failų ir ištrinta %(deleted)s failų, kad būtų atspindėti nuotoliniai pakeitimai.%(online)s/%(total)s prisijungę%s KiB/s%s dienos%s dienųprieš %s dienų%s kB/sprieš %s minučiųpo %s minučiųprieš %s sekundžiųpo %s sekundžių%s%%%ss(stebėti)... kl_austi manęs ką daryti... laukti tarn_ybos... klausti manęs ką da_ryti... klaidoms... failų atnaujinimams... palikti tarnybą _vykdomą... paleisti tarny_bą fone... sinchronizavimo užbaigimui... baigti tarnybos _darbąPastaba: Po integravimo perjungimo, jums gali prireikti iš naujo paleisti savo failų tvarkytuvę.Įspėjimas: Šiame puslapyje esančių nustatymų pakeitimas gali jums neleisti naudotis Syncthing-GTKApie Syncthing-GTKAukštesnė už normaliąPridėti bendrinamą _aplankąPri_dėti įrenginįAdresasVisi duomenysVisi įrenginiai nepasiekiamiLeisti siųsti anonimines naudojimo ataskaitas?Kitu atveju, Syncthing-GTK gali atsisiųsti Syncthing dvejetainęVisada daryti tą patį; Daugiau neberodyti šio langoVisada automatiškai paleisti tarnybąIšorinė komanda apdoroja versijų sistemą. Ji turi pašalinti failą iš sinchronizuoto aplanko.Paskelbti serveriuBet kokie pristatančiame įrenginyje sukonfigūruoti įrenginiai, bus taip pat pridėti į šį įrenginį.Bandoma atsisiųsti naujausią, prašome palaukti...Automatiškai atna_ujinti atsisiųstą dvejetainęDvejetainės kelias:Naršyti Syncthing dvejetainęNaršyti...CPU panaudojimasCaja (MATE darbalaukis)Nepavyksta aktyvinti tarnybosNepavyksta gauti tarnybos įgaliojimo. Prašome naudoti saityno NS, kad sugeneruotumėte API raktą arba išjungtumėte tapatybės nustatymą slaptažodžiu.Nepavyksta atsisiųsti Syncthing tarnybos.Tikrinamas prieinamas prievadas...Išv_alyti poKlasteris nesinchronizuotasKomandaGlaudinimasPrisijungęsPrisijungta prie Syncthing tarnybosJungiamasi prie Syncthing tarnybos ties %s...Jungiamasi prie Syncthing tarnybos...Jungiamasi prie tarnybos...Prarastas ryšys su Syncthing tarnyba.Ryšys su tarnyba nepavyko. Patikrinkite savo konfigūraciją ir bandykite dar kartą.TarnybaTarnybos išvestisTarnybos nu_statymaiTarnybos argumentai ir kintamiejiTarnybos proceso pirmenybėĮrenginys "%s" bando prisijungti prie syncthing tarnybos.Įrenginys "%(name)s" (%(device)s), kurio IP adresas "%(ip)s" nori prisijungti. Pridėti naują įrenginį?Įrenginio atpažinimasĮrenginio _IDĮrenginio pavadi_nimasAtsijungęsRodyti Syncthing-Inotify išvestįRodyti _tarnybos išvestįRodyti darbalaukio pranešimus...Rodyti klaidų žurnaląRodyti kelius katalogų skydelyjeAr tikrai norite pašalinti įrenginį "%s" iš Syncthing?Ar tikrai norite negrįžtamai sustabdyti katalogo "%s" sinchronizavimą?Atlikta.Atsiuntimo spartaAtsiuntimas nepavyko.Atsiuntimas užbaigtas.Atsiųstas failas yra sugadintas.Atsiunčiama Syncthing %sAtsiunčiama Syncthing tarnyba.Atsiunčiama...Redaguoti nepaisymo šablonusĮjungti vietinį apti_kimąĮjungti _anoniminės naudojimo ataskaitos siuntimąĮjungti visuotinį aptikimąĮjungti _UPnPĮveskite kableliais atskirtus "ip:prievadas" adresus arba "dynamic", kad atliktumėte automatinį adreso aptikimą.KlaidaKlaidos pranešimas:Išeinama.IšorinėIšskleidžiamas atnaujinimas...Nepavyko sukurti laikinojo failo.Nepavyko nustatyti naujausios Syncthing versijos.Nepavyko atsisiųsti Syncthing tarnybos paketo.Nepavyko atsisiųsti atnaujinimo: %sNepavyko rasti nenaudojamo prievado klausymui.Nepavyko generuoti raktųNepavyko įkelti Syncthing konfigūracijos.Nepavyko iš tarnybos įkelti konfigūracijos.Nepavyko modifikuoti Syncthing konfigūracijosNepavyko įrašyti Syncthing konfigūracijosNepavyko irašyti konfigūracijos.Nepavyko paleisti Syncthing tarnybos.Failų siuntim_o tvarkaFailų _versijų sistemaFailo vieta:Failo vieta: Ieškant pakeitimų, yra nepaisoma failų leidimų bitų. Naudokite FAT failų sistemose.FailųFailai, kai Syncthing juos pakeičia ar ištrina, yra perkeliami į .stversions aplankąFailai, kai syncthing juos pakeičia ar ištrina, yra perkeliami į datomis pažymėtas versijas aplanke .stversions.Failai, kai syncthing juos pakeičia ar ištrina, yra perkeliami į datomis pažymėtas versijas aplanke .stversions. Versijos yra automatiškai ištrinamos, jeigu jos yra senesnės nei maksimalus amžius arba jei viršija intervale leidžiamą failų skaičių. Yra naudojami sekantys intervalai: pirmą valandą versija yra paliekama kas 30 sekundžių, pirmą dieną versija yra paliekama kas valandą, pirmas 30 dienų versija yra paliekama kasdieną, iki maksimalaus amžiaus versija yra paliekama kas savaitę.Failai yra apsaugoti nuo kituose įrenginiuose daromų pakeitimų, tačiau šiame įrenginyje padaryti pakeitimai bus siunčiami likusiam klasteriui.Pirmojo paleidimo vediklisAplanko IDAplanko tipasAplanko _IDAplanko _etiketėPriverstinai nau_doti tamsią temą GTK grafinė naudotojo sąsaja ir pranešimų srities piktograma, skirta SyncthingGitHubVisuotinio aptikimo _serveriaiVisuotinė būsenaSlėpti langąJei įjungta, Syncthing-GTK automatiškai tikrins naujas tarnybos laidas ir pakeis dvejetainę naujausia versija.Jei įjungta, pakeisti, sukurti ar ištrinti failai yra nedelsiant sinchronizuojami tol, kol yra vykdoma Syncthing-GTK. Pastaba: Šios ypatybės naudojimas kartu su trumpu Peržiūrėjimo intervalu (<300s) gali naudoti daug išteklių.Jeigu renkamų duomenų rinkinys pasikeis, jums vėl bus pateiktas šis dialogas.Jeigu jau buvote sukonfigūravę Syncthing tarnybą, prašome išeiti iš šio vediklio ir patikrinti savo %s aplankąJei turite įdiegę Syncthing, prašome žemiau nustatyti kelią į %sJei turite įdiegę Syncthing, prašome žemiau nustatyti kelią į %s arba spustelėti mygtuką Atsisiųsti, kad atsisiųstumėte naujausią Syncthing paketą.Jeigu teikiate pirmenybę galimybei valdyti Syncthing nuotoliniu būdu per internetą ar savo vietiniame tinkle, pasirinkite klausyti visose sąsajose ir nustatykite naudotojo vardą bei slaptažodį, kad apsaugotumėte Syncthing nuo nesankcionuotos prieigos.N_epaisyti leidimųNepaisymo šablonaiNepaisyti leidimųAbėcėlės tvarkaPirmiau didžiausiPirmiau naujausiPirmiau seniausiAtsitiktinėPirmiau mažiausiTurėtų būti sukurta pradinė konfigūracija.Įdiekite %(package)s paketą, kad įjungtumėte %(feature)s palaikymąIntegruoti Syncthing į failų tvarkytuvesPristatantisJi yra naudojama sekti paplitusias platformas, aplankų dydžius ir programos versijas.Atrodo, kad dar niekada nesate naudoję Syncthing.Išlaikyti Syncthing dvejetainę naujausios versijosPaskutinį kartą matytasKl_ausyti visose sąsajoseK_lausyti vietiniame serveryjeVietinio aptikimo _prievadasVietinė būsenaŽemaŽemiausiaMa_ksimalus amžiusDidžiausias procesoriaus branduolių skaičiusTik metaduomenysPaleidus, s_umažinti į dėkląMažiausiai laisvos vietos diskeStebėti failų sistemos _pakeitimusDaugiau informacijosNautilus (Ubuntu/GNOME)Nemo (Cinnamon darbalaukis)NiekadaNeNormaliIšjungtaNepasiekiamasPrisijungęsAtverti _saityno sąsająKai paleidžiama tarnyba, atverti naršyklę su _saityno naudotojo sąsaja Nebūtina aprašomoji aplanko etiketė. Kiekviename įrenginyje gali būti skirtinga.Kitu atveju, pasirinkite klausyti vietiniame serveryje, kad su Syncthing galėtų sąveikauti, tik šiame kompiuteryje esančios, programos ir naudotojai.NesinchronizuotaSiunčiamų duomenų spartos ap_ribojimasNustelbti nuotolinius pakeitimusKeliasKelias į aplanką vietiniame kompiuteryje. Jei aplanko nėra, jis bus sukurtas.Kelias, kuriame turėtų būti saugomos versijos (palikite tuščią numatytajam .stversions aplankui).PristabdytaPrašome spustelėti %s, kad sukurtumėte Syncthing konfigūracijos failą arba Išeiti, kad išeitumėtePrašome palauktiPrašome palaukti...Prašome patikrinti klaidų žurnalą ir užpildyti pranešimą apie klaidą, adresu %s.Prašome patikrinti savo užkardos nustatymus ir bandyti dar kartą.Prašome patikrinti savo įdiegimą arba nustatyti naują kelią į Syncthing tarnybos dvejetainę.Norėdami naudotis šia ypatybe, įdiekite pyinotify paketąPrašome iš naujo paleisti Syncthing-GTK, kad būtų pritaikyti visi pakeisti nustatymaiPrašome naudoti paketų tvarkytuvę, kad įdiegtumėte Syncthing paketą arba %(download_link)s iš Syncthing puslapio ir įrašykite ją į savo %(target)s katalogą.Prašome naudoti paketų tvarkytuvę, kad įdiegtumėte Syncthing paketą.Pirmenybė bus naudojama tik tuomet, jei "Sąsajos" puslapyje yra pažymėta parinktis "paleisti tarnybą fone".RAM panaudojimasPeržiūrėjimo intervalasPeržiūrėjimo _intervalasIš naujo paleidžiama tarnyba...TęstiTęsti Sync_thingS_tabdyti SyncthingĮrašomi nustatymai...Įrašoma...PeržiūrimaIeškoma Syncthing tarnybos.Norėdami pamatyti prieinamų šablonų sąrašą, žiūrėkite Syncthing dokumentacijąPasirinkite aplanką naujam aplankuiPasirinkite įrenginius, su kuriais bendrinsite šį aplanką.Pasirinkite aplankus, kuriuos bendrinsite su šiuo įrenginiuSiųsti ir gautiTik siųstiNustato didžiausią procesoriaus branduolių skaičių, tarnybai naudoti. Ši reikšmė bus naudojama tik tuomet, jei "Sąsajos" puslapyje yra pažymėta parinktis "paleisti tarnybą fone".S_tabdyti tarnybąBen_drinti su įrenginiaisBendrinami a_plankaiBendrinamas suTrumpas atpažinimas aplankui. Privalo būti vienodas visuose įrenginiuose.Rodyti langąRodyti _IDRodoma klasterio būsenoje vietoj įrenginio ID.Sustabdyti tuo pačiu ir Syncthing tarnybą?PaprastaAtleiskite, prisijungimas prie HTTPS šioje platformoje yra nepalaikomas. Prašome naudoti saityno naudotojo sąsają, kad išjungtumėte HTTPS ir bandykite dar kartą.Paleidžiant aukščiau nurodytą dvejetainę, jai perduodamų, tarpais atskirtų argumentų ir aplinkos kintamųjų sąrašas Naudokite KINTAMASIS="reikšmė", kad nustatytumėte kintamąjį ir -argumentas="reikšmė" (su brūkšneliu) argumentui nustatyti. Jeigu jums reikia perduoti komandų eilutę į kitą komandą (tokią kaip logger ar ionice), atskirkite argumentus su priešdeliu šauktuko ženklu "!" Pavyzdys: STTRACE="all" logger -t /var/log/syncthing.log ! -logflags=10PakopinėPaleisti Syncthing-GTK, kai aš prisijungiu prie savo darbalaukioPaleisti ją dabar?Paleidžiama Syncthing tarnybaSustabdytaSinchronizuoti protokolo klausymosi adresusSinchronizavimas"%s" aplanko sinchronizavimas yra užbaigtas.Sinchronizuojama %s aplankųSinchronizuojama "%s"SinchronizuojamaSyncthingSyncthing tarnybos nustatymaiSyncthing dvejetainėSyncthing dvejetainės vietaSyncthing gali būti valdoma nuotoliniu būdu, naudojant saityno naudotojo sąsają, ir netgi jei naudosite Syncthing-GTK, saityno naudotojo sąsaja turi būti įdiegta, kadangi Syncthing-GTK naudoja ją susisiekimui su Syncthing tarnyba.Nepavyko rasti Syncthing tarnybos dvejetainės.Syncthing tarnybos dvejetainė rasta.Atrodo, kad nėra vykdoma Syncthing tarnyba.Syncthing tarnybai nepavyko generuoti RSA rakto ar sertifikato.Syncthing tarnyba yra pernelyg sena.Syncthing tarnyba nerasta.Syncthing buvo sustabdyta.Syncthing buvo sėkmingai sukonfigūruota.Syncthing generuoja RSA raktą ir sertifikatą.Syncthing, tikriausiai, yra paleidžiama iš naujo arba buvo sustabdyta.Syncthing yra paleidžiama iš naujo.Syncthing-GTKSyncthing-GTK nustatymaiSyncthing-GTK reikia Syncthing tarnybos %(min)s arba naujesnės, tačiau buvo rasta tik %(actual)s.Syncthing-GTK paleista ir vykdoma pranešimų srityjeSyncthing-Inotify išvestisSyncthing-Inotify yra neprieinama arba ją nepavyko paleistiSurinkta statistika yra viešai prieinama adresuKonfigūracija buvo įrašyta, bet ne aktyvuota. Syncthing privalo būti paleista iš naujo, kad aktyvuotų naująją konfigūraciją.Užšifruota naudojimo ataskaita yra siunčiama kasdieną.Atrodo, kad įvestas įrenginio ID yra neteisingas. Tai turėtų būti 52 simbolių eilutė, susidedanti iš raidžių ir skaičių, su nebūtinais tarpais ir brūkšniais.Pirmasis komandų eilutės parametras yra aplanko kelias, o antrasis parametras yra santykinis kelias aplanke.Dienų skaičius, kiek laikyti failus šiukšlių dėžėje.Paliekamų senų versijų skaičius kiekvienam failui.Ši dvejetainė bus paleidžiama tuomet, kai syncthing tarnyba nėra vykdoma ir kai "Sąsajos" puslapyje yra pažymėta parinktis "paleisti tarnybą fone".Tai gali šiek tiek užtrukti...Ši platforma (%s) yra nepalaikomaŠiukšlių dėžėsBandykite dar kartą.Naudotojo sąsajos nustatymaiNaudotojo sąsajos _nustatymaiIš "%s" įrenginio išsiųstas netikėtas aplanko ID.NeribotasNebendrinamasNenaudotasAtnaujintaIšsiuntimo spartaNaud_oti tradicinę lango antraštęMeniu naudoti p_iktogramasVersijaVersija:Versijų sistemos veikse_naVersijų k_eliasLaukiama Syncthing tarnybos ties %s...Saityno naudotojo sąsajos adresų klausymasisSaityno NS sąrankaSveiki atvykę į Syncthing-GTK pirmojo paleidimo vediklį!Kai išeinama po to, kai tarnyba buvo paleista fone...Kai paleidžiama ir Syncthing tarnyba nėra vykdoma...XYZ-123-ABCTaipJūs galėsite vėliau konfigūruoti išsamesnius nustatymus pagrindinio programos lango Naudotojo sąsajos nustatymai ir Tarnybos nustatymai meniu.Jūsų syncthing tarnyba yra pernelyg sena.Jūsų syncthing tarnyba yra pernelyg sena. Prašome atnaujinti syncthing paketą bent iki %s versijos ir bandyti dar kartą._Apie_Pridėti_AdresaiIšplėstini_ai_Naršyti_Naršyti..._GlaudinimasAtsisiųsti Syncthing _dvejetainęAtsisiųs_ti...A_planko nustatymaiNepa_isytiGaunamų duomenų spartos apr_ibojimas_Integravimas_SąsajaPr_istatantisPali_kti versijų_KitaSiunčiamų duomenų spartos aprib_ojimasSla_ptažodis_Kelias_IšeitiPe_ržiūrėtiPaleisti iš nauj_oIš naujo paleisti ta_rnybą_Siųsti tik aplanką_NeribotaNa_udotojo vardasišjungtaatsisiųskite naujausią dvejetainępo %s dienųnetrukuską tikpaskutinė priemonė ir bendrai nėra siūloma.niekada neištrintibe apribojimųnepasiekiamasį %s palaikyti ją atnaujinama, tačiau ši parinktis yra siūloma kaipprieš ~%s valandųpo ~%s valandųsyncthing-gtk-0.9.4.4/locale/lt/LC_MESSAGES/syncthing-gtk.po000077500000000000000000001334541352162771300232770ustar00rootroot00000000000000# Syncthing-GTK # Copyright (C) 2014-2015 Kozec and contributors # This file is distributed under the same license as the Syncthing-GTK package. # # Translators: # kozec , 2016-2017 # Moo, 2015-2017 msgid "" msgstr "" "Project-Id-Version: syncthing-gtk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-04-20 11:27+0200\n" "PO-Revision-Date: 2017-09-22 17:09+0000\n" "Last-Translator: Moo\n" "Language-Team: Lithuanian (http://www.transifex.com/syncthing-gtk/syncthing-gtk/language/lt/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: lt\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: syncthing_gtk/app.py:194 msgid "Syncthing-GTK started and running in notification area" msgstr "Syncthing-GTK paleista ir vykdoma pranešimų srityje" #: syncthing_gtk/app.py:288 #, python-format msgid "%s kB/s" msgstr "%s kB/s" #: syncthing_gtk/app.py:302 syncthing_gtk/notifications.py:77 #: syncthing_gtk/wizard.py:53 msgid "Syncthing-GTK" msgstr "Syncthing-GTK" #: syncthing_gtk/app.py:363 syncthing_gtk/app.py:364 syncthing_gtk/app.py:942 msgid "Syncing" msgstr "Sinchronizuojama" #: syncthing_gtk/app.py:366 syncthing_gtk/app.py:367 msgid "Scanning" msgstr "Peržiūrima" #: syncthing_gtk/app.py:390 syncthing_gtk/app.py:652 msgid "Starting Syncthing daemon" msgstr "Paleidžiama Syncthing tarnyba" #: syncthing_gtk/app.py:424 msgid "Allow Anonymous Usage Reporting?" msgstr "Leisti siųsti anonimines naudojimo ataskaitas?" #: syncthing_gtk/app.py:426 msgid "The encrypted usage report is sent daily." msgstr "Užšifruota naudojimo ataskaita yra siunčiama kasdieną." #: syncthing_gtk/app.py:427 msgid "It is used to track common platforms, folder sizes and app versions." msgstr "Ji yra naudojama sekti paplitusias platformas, aplankų dydžius ir programos versijas." #: syncthing_gtk/app.py:428 msgid "" "If the reported data set is changed you will be prompted with this dialog " "again." msgstr "Jeigu renkamų duomenų rinkinys pasikeis, jums vėl bus pateiktas šis dialogas." #: syncthing_gtk/app.py:430 msgid "The aggregated statistics are publicly available at" msgstr "Surinkta statistika yra viešai prieinama adresu" #: syncthing_gtk/app.py:486 msgid "Extracting update..." msgstr "Išskleidžiamas atnaujinimas..." #: syncthing_gtk/app.py:491 msgid "Restarting daemon..." msgstr "Iš naujo paleidžiama tarnyba..." #: syncthing_gtk/app.py:507 #, python-format msgid "Failed to download upgrade: %s" msgstr "Nepavyko atsisiųsti atnaujinimo: %s" #: syncthing_gtk/app.py:525 #, python-format msgid "Downloading Syncthing %s" msgstr "Atsiunčiama Syncthing %s" #: syncthing_gtk/app.py:604 msgid "Connected to Syncthing daemon" msgstr "Prisijungta prie Syncthing tarnybos" #: syncthing_gtk/app.py:614 msgid "Connection to Syncthing daemon lost." msgstr "Prarastas ryšys su Syncthing tarnyba." #: syncthing_gtk/app.py:615 msgid "Syncthing is probably restarting or has been shut down." msgstr "Syncthing, tikriausiai, yra paleidžiama iš naujo arba buvo sustabdyta." #: syncthing_gtk/app.py:617 msgid "Syncthing has been shut down." msgstr "Syncthing buvo sustabdyta." #: syncthing_gtk/app.py:621 syncthing_gtk/app.py:1499 msgid "Syncthing is restarting." msgstr "Syncthing yra paleidžiama iš naujo." #: syncthing_gtk/app.py:621 syncthing_gtk/app.py:1499 msgid "Please wait" msgstr "Prašome palaukti" #: syncthing_gtk/app.py:644 #, python-format msgid "Connecting to Syncthing daemon at %s..." msgstr "Jungiamasi prie Syncthing tarnybos ties %s..." #: syncthing_gtk/app.py:649 #, python-format msgid "Waiting for Syncthing daemon at %s..." msgstr "Laukiama Syncthing tarnybos ties %s..." #: syncthing_gtk/app.py:664 msgid "Your syncthing daemon is too old." msgstr "Jūsų syncthing tarnyba yra pernelyg sena." #: syncthing_gtk/app.py:664 msgid "Attempting to download recent, please wait..." msgstr "Bandoma atsisiųsti naujausią, prašome palaukti..." #: syncthing_gtk/app.py:670 msgid "" "Cannot authorize with daemon. Please, use WebUI to generate API key or " "disable password authentication." msgstr "Nepavyksta gauti tarnybos įgaliojimo. Prašome naudoti saityno NS, kad sugeneruotumėte API raktą arba išjungtumėte tapatybės nustatymą slaptažodžiu." #: syncthing_gtk/app.py:672 #, python-format msgid "" "Your syncthing daemon is too old.\n" "Please, upgrade syncthing package at least to version %s and try again." msgstr "Jūsų syncthing tarnyba yra pernelyg sena.\nPrašome atnaujinti syncthing paketą bent iki %s versijos ir bandyti dar kartą." #: syncthing_gtk/app.py:674 msgid "" "Sorry, connecting to HTTPS is not supported on this platform.\n" "Please, use WebUI to disable HTTPS try again." msgstr "Atleiskite, prisijungimas prie HTTPS šioje platformoje yra nepalaikomas.\nPrašome naudoti saityno naudotojo sąsają, kad išjungtumėte HTTPS ir bandykite dar kartą." #: syncthing_gtk/app.py:677 msgid "Connection to daemon failed. Check your configuration and try again." msgstr "Ryšys su tarnyba nepavyko. Patikrinkite savo konfigūraciją ir bandykite dar kartą." #: syncthing_gtk/app.py:678 syncthing_gtk/app.py:1992 #: syncthing_gtk/editordialog.py:314 msgid "Error message:" msgstr "Klaidos pranešimas:" #: syncthing_gtk/app.py:689 msgid "More info" msgstr "Daugiau informacijos" #: syncthing_gtk/app.py:715 msgid "" "The configuration has been saved but not activated.\n" "Syncthing must restart to activate the new configuration." msgstr "Konfigūracija buvo įrašyta, bet ne aktyvuota.\nSyncthing privalo būti paleista iš naujo, kad aktyvuotų naująją konfigūraciją." #: syncthing_gtk/app.py:717 msgid "_Restart" msgstr "Paleisti iš nauj_o" #: syncthing_gtk/app.py:784 #, python-format msgid "%(device)s wants to share folder \"%(folder)s\". Add new folder?" msgstr "%(device)s nori bendrinti aplanką \"%(folder)s\". Pridėti naują aplanką?" #: syncthing_gtk/app.py:791 syncthing_gtk/app.py:813 msgid "_Add" msgstr "_Pridėti" #: syncthing_gtk/app.py:806 #, python-format msgid "" "Device \"%(name)s\" (%(device)s) at IP \"%(ip)s\" wants to " "connect. Add new device?" msgstr "Įrenginys \"%(name)s\" (%(device)s), kurio IP adresas \"%(ip)s\" nori prisijungti. Pridėti naują įrenginį?" #: syncthing_gtk/app.py:814 msgid "_Ignore" msgstr "Nepa_isyti" #: syncthing_gtk/app.py:832 msgid "RAM Utilization" msgstr "RAM panaudojimas" #: syncthing_gtk/app.py:833 msgid "CPU Utilization" msgstr "CPU panaudojimas" #: syncthing_gtk/app.py:834 syncthing_gtk/app.py:1353 msgid "Download Rate" msgstr "Atsiuntimo sparta" #: syncthing_gtk/app.py:835 syncthing_gtk/app.py:1354 msgid "Upload Rate" msgstr "Išsiuntimo sparta" #: syncthing_gtk/app.py:836 msgid "Announce Server" msgstr "Paskelbti serveriu" #: syncthing_gtk/app.py:837 syncthing_gtk/app.py:1356 msgid "Version" msgstr "Versija" #: syncthing_gtk/app.py:860 syncthing_gtk/editordialog.py:394 msgid "disabled" msgstr "išjungta" #: syncthing_gtk/app.py:862 msgid "Online" msgstr "Prisijungęs" #: syncthing_gtk/app.py:862 msgid "offline" msgstr "nepasiekiamas" #: syncthing_gtk/app.py:864 #, python-format msgid "%(online)s/%(total)s online" msgstr "%(online)s/%(total)s prisijungę" #: syncthing_gtk/app.py:891 syncthing_gtk/app.py:1357 #: syncthing_gtk/app.py:1382 msgid "Never" msgstr "Niekada" #: syncthing_gtk/app.py:899 syncthing_gtk/app.py:1691 #: syncthing_gtk/app.py:1692 msgid "Paused" msgstr "Pristabdyta" #: syncthing_gtk/app.py:899 syncthing_gtk/app.py:924 syncthing_gtk/app.py:939 #: syncthing_gtk/infobox.py:60 msgid "Disconnected" msgstr "Atsijungęs" #: syncthing_gtk/app.py:916 msgid "Connected" msgstr "Prisijungęs" #: syncthing_gtk/app.py:945 syncthing_gtk/app.py:980 syncthing_gtk/app.py:1030 #: syncthing_gtk/app.py:1031 syncthing_gtk/app.py:1070 msgid "Up to Date" msgstr "Atnaujinta" #: syncthing_gtk/app.py:966 syncthing_gtk/app.py:967 syncthing_gtk/app.py:968 msgid "Files" msgstr "Failų" #: syncthing_gtk/app.py:980 syncthing_gtk/app.py:1068 msgid "Cluster out of sync" msgstr "Klasteris nesinchronizuotas" #: syncthing_gtk/app.py:995 msgid "Stopped" msgstr "Sustabdyta" #: syncthing_gtk/app.py:998 syncthing_gtk/app.py:1005 msgid "Error" msgstr "Klaida" #: syncthing_gtk/app.py:1024 #, python-format msgid "Synchronizing '%s'" msgstr "Sinchronizuojama \"%s\"" #: syncthing_gtk/app.py:1026 #, python-format msgid "Synchronizing %s folders" msgstr "Sinchronizuojama %s aplankų" #: syncthing_gtk/app.py:1035 syncthing_gtk/app.py:1036 msgid "All devices offline" msgstr "Visi įrenginiai nepasiekiami" #: syncthing_gtk/app.py:1040 syncthing_gtk/app.py:1041 msgid "Connecting to Syncthing daemon..." msgstr "Jungiamasi prie Syncthing tarnybos..." #: syncthing_gtk/app.py:1079 msgid "Unshared" msgstr "Nebendrinamas" #: syncthing_gtk/app.py:1082 msgid "Offline" msgstr "Nepasiekiamas" #: syncthing_gtk/app.py:1176 msgid "Hide Window" msgstr "Slėpti langą" #: syncthing_gtk/app.py:1190 app.glade:651 msgid "Show Window" msgstr "Rodyti langą" #: syncthing_gtk/app.py:1239 msgid "Syncthing daemon doesn't appear to be running." msgstr "Atrodo, kad nėra vykdoma Syncthing tarnyba." #: syncthing_gtk/app.py:1240 msgid "Start it now?" msgstr "Paleisti ją dabar?" #: syncthing_gtk/app.py:1243 msgid "Always start daemon automatically" msgstr "Visada automatiškai paleisti tarnybą" #: syncthing_gtk/app.py:1292 msgid "Folder ID" msgstr "Aplanko ID" #: syncthing_gtk/app.py:1293 msgid "Path" msgstr "Kelias" #: syncthing_gtk/app.py:1294 msgid "Global State" msgstr "Visuotinė būsena" #: syncthing_gtk/app.py:1295 msgid "Local State" msgstr "Vietinė būsena" #: syncthing_gtk/app.py:1296 msgid "Out Of Sync" msgstr "Nesinchronizuota" #: syncthing_gtk/app.py:1297 msgid "Folder Type" msgstr "Aplanko tipas" #: syncthing_gtk/app.py:1298 msgid "Ignore Permissions" msgstr "Nepaisyti leidimų" #: syncthing_gtk/app.py:1299 msgid "Rescan Interval" msgstr "Peržiūrėjimo intervalas" #: syncthing_gtk/app.py:1300 msgid "Shared With" msgstr "Bendrinamas su" #: syncthing_gtk/app.py:1324 syncthing_gtk/app.py:1325 #: syncthing_gtk/app.py:1381 msgid "Yes" msgstr "Taip" #: syncthing_gtk/app.py:1324 syncthing_gtk/app.py:1325 #: syncthing_gtk/app.py:1381 msgid "No" msgstr "Ne" #: syncthing_gtk/app.py:1327 msgid "(watch)" msgstr "(stebėti)" #: syncthing_gtk/app.py:1341 msgid "Unused" msgstr "Nenaudotas" #: syncthing_gtk/app.py:1350 msgid "Address" msgstr "Adresas" #: syncthing_gtk/app.py:1351 msgid "Synchronization" msgstr "Sinchronizavimas" #: syncthing_gtk/app.py:1352 msgid "Compression" msgstr "Glaudinimas" #: syncthing_gtk/app.py:1355 msgid "Introducer" msgstr "Pristatantis" #: syncthing_gtk/app.py:1357 msgid "Last Seen" msgstr "Paskutinį kartą matytas" #: syncthing_gtk/app.py:1378 device-edit.glade:22 msgid "All Data" msgstr "Visi duomenys" #: syncthing_gtk/app.py:1379 device-edit.glade:26 folder-edit.glade:78 msgid "Off" msgstr "Išjungta" #: syncthing_gtk/app.py:1375 msgid "Send Only" msgstr "Tik siųsti" #: syncthing_gtk/app.py:1375 msgid "Send & Receive" msgstr "Siųsti ir gauti" #: syncthing_gtk/app.py:1380 device-edit.glade:30 msgid "Metadata Only" msgstr "Tik metaduomenys" #: syncthing_gtk/app.py:1522 msgid "Exiting." msgstr "Išeinama." #: syncthing_gtk/app.py:1523 msgid "Shutdown Syncthing daemon as well?" msgstr "Sustabdyti tuo pačiu ir Syncthing tarnybą?" #: syncthing_gtk/app.py:1528 msgid "Always do same; Don't show this window again" msgstr "Visada daryti tą patį; Daugiau neberodyti šio lango" #: syncthing_gtk/app.py:1768 #, python-format msgid "Do you really want to permanently stop synchronizing directory '%s'?" msgstr "Ar tikrai norite negrįžtamai sustabdyti katalogo \"%s\" sinchronizavimą?" #: syncthing_gtk/app.py:1770 #, python-format msgid "Do you really want remove device '%s' from Syncthing?" msgstr "Ar tikrai norite pašalinti įrenginį \"%s\" iš Syncthing?" #: syncthing_gtk/app.py:1838 msgid "Syncthing-Inotify Output" msgstr "Syncthing-Inotify išvestis" #: syncthing_gtk/app.py:1844 msgid "Syncthing-Inotify is unavailable or failed to start" msgstr "Syncthing-Inotify yra neprieinama arba ją nepavyko paleisti" #: syncthing_gtk/app.py:1991 msgid "Failed to start Syncthing daemon." msgstr "Nepavyko paleisti Syncthing tarnybos." #: syncthing_gtk/app.py:1993 msgid "" "Please, check your installation or set new path to Syncthing daemon binary." msgstr "Prašome patikrinti savo įdiegimą arba nustatyti naują kelią į Syncthing tarnybos dvejetainę." #: syncthing_gtk/daemonsettings.py:24 msgid "Syncthing Daemon Settings" msgstr "Syncthing tarnybos nustatymai" #: syncthing_gtk/deviceeditor.py:24 msgid "" "The entered device ID does not look valid. It should be a 52 character " "string consisting of letters and numbers, with spaces and dashes being " "optional." msgstr "Atrodo, kad įvestas įrenginio ID yra neteisingas. Tai turėtų būti 52 simbolių eilutė, susidedanti iš raidžių ir skaičių, su nebūtinais tarpais ir brūkšniais." #: syncthing_gtk/editordialog.py:312 msgid "Failed to load configuration from daemon." msgstr "Nepavyko iš tarnybos įkelti konfigūracijos." #: syncthing_gtk/editordialog.py:313 msgid "Try again." msgstr "Bandykite dar kartą." #: syncthing_gtk/editordialog.py:387 syncthing_gtk/editordialog.py:396 #, python-format msgid "%ss" msgstr "%ss" #: syncthing_gtk/editordialog.py:402 #, python-format msgid "%s%%" msgstr "%s%%" #: syncthing_gtk/editordialog.py:409 msgid "no limit" msgstr "be apribojimų" #: syncthing_gtk/editordialog.py:411 #, python-format msgid "%s KiB/s" msgstr "%s KiB/s" #: syncthing_gtk/editordialog.py:418 msgid "never delete" msgstr "niekada neištrinti" #: syncthing_gtk/editordialog.py:420 #, python-format msgid "%s day" msgstr "%s dienos" #: syncthing_gtk/editordialog.py:422 #, python-format msgid "%s days" msgstr "%s dienų" #: syncthing_gtk/editordialog.py:455 msgid "Failed to save configuration." msgstr "Nepavyko irašyti konfigūracijos." #: syncthing_gtk/finddaemondialog.py:24 find-daemon.glade:7 msgid "Can't invoke the daemon" msgstr "Nepavyksta aktyvinti tarnybos" #: syncthing_gtk/finddaemondialog.py:26 msgid "Syncthing binary" msgstr "Syncthing dvejetainė" #: syncthing_gtk/finddaemondialog.py:28 syncthing_gtk/finddaemondialog.py:37 msgid "Syncthing daemon binary cannot be found." msgstr "Nepavyko rasti Syncthing tarnybos dvejetainės." #: syncthing_gtk/finddaemondialog.py:29 #, python-format msgid "" "If you have Syncthing installed, please, set path to %s below or click on " "Download button to download latest Syncthing package." msgstr "Jei turite įdiegę Syncthing, prašome žemiau nustatyti kelią į %s arba spustelėti mygtuką Atsisiųsti, kad atsisiųstumėte naujausią Syncthing paketą." #: syncthing_gtk/finddaemondialog.py:38 #, python-format msgid "If you have Syncthing installed, please, set path to %s below" msgstr "Jei turite įdiegę Syncthing, prašome žemiau nustatyti kelią į %s" #: syncthing_gtk/finddaemondialog.py:82 syncthing_gtk/wizard.py:411 msgid "Cannot download Syncthing daemon." msgstr "Nepavyksta atsisiųsti Syncthing tarnybos." #: syncthing_gtk/finddaemondialog.py:83 syncthing_gtk/wizard.py:412 #, python-format msgid "This platform (%s) is not supported" msgstr "Ši platforma (%s) yra nepalaikoma" #: syncthing_gtk/finddaemondialog.py:100 msgid "Downloading..." msgstr "Atsiunčiama..." #: syncthing_gtk/finddaemondialog.py:163 syncthing_gtk/stdownloader.py:251 #: syncthing_gtk/stdownloader.py:279 msgid "Download failed." msgstr "Atsiuntimas nepavyko." #: syncthing_gtk/finddaemondialog.py:185 syncthing_gtk/wizard.py:458 msgid "Download finished." msgstr "Atsiuntimas užbaigtas." #: syncthing_gtk/foldereditor.py:45 msgid "Select Folder for new Folder" msgstr "Pasirinkite aplanką naujam aplankui" #: syncthing_gtk/foldereditor.py:166 syncthing_gtk/foldereditor.py:167 msgid "Please, install pyinotify package to use this feature" msgstr "Norėdami naudotis šia ypatybe, įdiekite pyinotify paketą" #: syncthing_gtk/ignoreeditor.py:44 msgid "File location:" msgstr "Failo vieta:" #: syncthing_gtk/notifications.py:120 #, python-format msgid "Unexpected folder ID sent from device \"%s\"." msgstr "Iš \"%s\" įrenginio išsiųstas netikėtas aplanko ID." #: syncthing_gtk/notifications.py:124 #, python-format msgid "Device \"%s\" is trying to connect to syncthing daemon." msgstr "Įrenginys \"%s\" bando prisijungti prie syncthing tarnybos." #: syncthing_gtk/notifications.py:153 #, python-format msgid "Synchronization of folder '%s' is completed." msgstr "\"%s\" aplanko sinchronizavimas yra užbaigtas." #: syncthing_gtk/notifications.py:160 #, python-format msgid "%(hostname)s: Downloaded '%(filename)s' to reflect remote changes." msgstr "%(hostname)s: Atsisiųsta '%(filename)s', kad būtų atspindėti nuotoliniai pakeitimai." #: syncthing_gtk/notifications.py:165 #, python-format msgid "%(hostname)s: Deleted '%(filename)s' to reflect remote changes." msgstr "%(hostname)s: Ištrinta '%(filename)s', kad būtų atspindėti nuotoliniai pakeitimai." #: syncthing_gtk/notifications.py:168 #, python-format msgid "%(hostname)s: Downloaded %(updated)s files to reflect remote changes." msgstr "%(hostname)s: Atsisiųsta %(updated)s failų, kad būtų atspindėti nuotoliniai pakeitimai." #: syncthing_gtk/notifications.py:171 #, python-format msgid "%(hostname)s: Deleted %(deleted)s files to reflect remote changes." msgstr "%(hostname)s: Ištrinta %(deleted)s failų, kad būtų atspindėti nuotoliniai pakeitimai." #: syncthing_gtk/notifications.py:175 #, python-format msgid "" "%(hostname)s: downloaded %(updated)s files and deleted %(deleted)s files to " "reflect remote changes." msgstr "%(hostname)s: atsisiųsta %(updated)s failų ir ištrinta %(deleted)s failų, kad būtų atspindėti nuotoliniai pakeitimai." #: syncthing_gtk/statusicon.py:48 msgid "Syncthing" msgstr "Syncthing" #: syncthing_gtk/stdownloader.py:174 syncthing_gtk/stdownloader.py:217 #: syncthing_gtk/stdownloader.py:313 syncthing_gtk/stdownloader.py:344 msgid "Failed to determine latest Syncthing version." msgstr "Nepavyko nustatyti naujausios Syncthing versijos." #: syncthing_gtk/stdownloader.py:236 msgid "Failed to create temporaly file." msgstr "Nepavyko sukurti laikinojo failo." #: syncthing_gtk/stdownloader.py:294 msgid "Downloaded file is corrupted." msgstr "Atsiųstas failas yra sugadintas." #: syncthing_gtk/tools.py:192 #, python-format msgid "~%s hours ago" msgstr "prieš ~%s valandų" #: syncthing_gtk/tools.py:194 #, python-format msgid "%s minutes ago" msgstr "prieš %s minučių" #: syncthing_gtk/tools.py:196 #, python-format msgid "%s seconds ago" msgstr "prieš %s sekundžių" #: syncthing_gtk/tools.py:197 msgid "just now" msgstr "ką tik" #: syncthing_gtk/tools.py:199 #, python-format msgid "%s days ago" msgstr "prieš %s dienų" #: syncthing_gtk/tools.py:203 #, python-format msgid "in %s days" msgstr "po %s dienų" #: syncthing_gtk/tools.py:205 #, python-format msgid "~%s hours from now" msgstr "po ~%s valandų" #: syncthing_gtk/tools.py:207 #, python-format msgid "%s minutes from now" msgstr "po %s minučių" #: syncthing_gtk/tools.py:209 #, python-format msgid "%s seconds from now" msgstr "po %s sekundžių" #: syncthing_gtk/tools.py:210 msgid "in a moment" msgstr "netrukus" #: syncthing_gtk/uisettingsdialog.py:58 msgid "UI Settings" msgstr "Naudotojo sąsajos nustatymai" #: syncthing_gtk/uisettingsdialog.py:70 msgid "Unlimited" msgstr "Neribotas" #: syncthing_gtk/uisettingsdialog.py:107 #, python-format msgid "Install %(package)s package to enable %(feature)s support" msgstr "Įdiekite %(package)s paketą, kad įjungtumėte %(feature)s palaikymą" #: syncthing_gtk/uisettingsdialog.py:312 msgid "Browse for Syncthing binary" msgstr "Naršyti Syncthing dvejetainę" #: syncthing_gtk/wizard.py:53 msgid "First run wizard" msgstr "Pirmojo paleidimo vediklis" #: syncthing_gtk/wizard.py:137 #, python-format msgid "Please, check error log and fill bug report on %s." msgstr "Prašome patikrinti klaidų žurnalą ir užpildyti pranešimą apie klaidą, adresu %s." #: syncthing_gtk/wizard.py:141 msgid "Display error log" msgstr "Rodyti klaidų žurnalą" #: syncthing_gtk/wizard.py:198 msgid "Welcome to Syncthing-GTK first run wizard!" msgstr "Sveiki atvykę į Syncthing-GTK pirmojo paleidimo vediklį!" #: syncthing_gtk/wizard.py:200 msgid "It looks like you never have used Syncthing." msgstr "Atrodo, kad dar niekada nesate naudoję Syncthing." #: syncthing_gtk/wizard.py:201 msgid "Initial configuration should be created." msgstr "Turėtų būti sukurta pradinė konfigūracija." #: syncthing_gtk/wizard.py:202 msgid "" "Please click %s to create a Syncthing configuration file or " "Quit to exit" msgstr "Prašome spustelėti %s, kad sukurtumėte Syncthing konfigūracijos failą arba Išeiti, kad išeitumėte" #: syncthing_gtk/wizard.py:204 #, python-format msgid "" "If you already had Syncthing daemon configured, please, exit this wizard and" " check your %s folder" msgstr "Jeigu jau buvote sukonfigūravę Syncthing tarnybą, prašome išeiti iš šio vediklio ir patikrinti savo %s aplanką" #: syncthing_gtk/wizard.py:220 msgid "Searching for Syncthing daemon." msgstr "Ieškoma Syncthing tarnybos." #: syncthing_gtk/wizard.py:222 syncthing_gtk/wizard.py:394 msgid "Please wait..." msgstr "Prašome palaukti..." #: syncthing_gtk/wizard.py:270 syncthing_gtk/wizard.py:287 msgid "Syncthing daemon not found." msgstr "Syncthing tarnyba nerasta." #: syncthing_gtk/wizard.py:271 msgid "Please, use package manager to install the Syncthing package." msgstr "Prašome naudoti paketų tvarkytuvę, kad įdiegtumėte Syncthing paketą." #: syncthing_gtk/wizard.py:283 msgid "download latest binary" msgstr "atsisiųskite naujausią dvejetainę" #: syncthing_gtk/wizard.py:288 syncthing_gtk/wizard.py:302 #, python-format msgid "" "Please, use package manager to install the Syncthing package or " "%(download_link)s from Syncthing page and save it to your %(target)s " "directory." msgstr "Prašome naudoti paketų tvarkytuvę, kad įdiegtumėte Syncthing paketą arba %(download_link)s iš Syncthing puslapio ir įrašykite ją į savo %(target)s katalogą." #: syncthing_gtk/wizard.py:296 msgid "Syncthing daemon is too old." msgstr "Syncthing tarnyba yra pernelyg sena." #: syncthing_gtk/wizard.py:297 #, python-format msgid "" "Syncthing-GTK needs Syncthing daemon %(min)s or newer, but only %(actual)s " "were found." msgstr "Syncthing-GTK reikia Syncthing tarnybos %(min)s arba naujesnės, tačiau buvo rasta tik %(actual)s." #: syncthing_gtk/wizard.py:309 msgid "Alternatively, Syncthing-GTK can download Syncthing binary" msgstr "Kitu atveju, Syncthing-GTK gali atsisiųsti Syncthing dvejetainę" #: syncthing_gtk/wizard.py:310 #, python-format msgid "to %s and keep it up-to-date, but this option is meant as" msgstr "į %s palaikyti ją atnaujinama, tačiau ši parinktis yra siūloma kaip" #: syncthing_gtk/wizard.py:312 msgid "last resort and generally not suggested." msgstr "paskutinė priemonė ir bendrai nėra siūloma." #: syncthing_gtk/wizard.py:315 msgid "_Download Syncthing binary" msgstr "Atsisiųsti Syncthing _dvejetainę" #: syncthing_gtk/wizard.py:319 msgid "Auto_update downloaded binary" msgstr "Automatiškai atna_ujinti atsisiųstą dvejetainę" #: syncthing_gtk/wizard.py:375 msgid "Syncthing daemon binary found." msgstr "Syncthing tarnybos dvejetainė rasta." #: syncthing_gtk/wizard.py:377 syncthing_gtk/wizard.py:460 msgid "Binary path:" msgstr "Dvejetainės kelias:" #: syncthing_gtk/wizard.py:378 msgid "Version:" msgstr "Versija:" #: syncthing_gtk/wizard.py:393 msgid "Downloading Syncthing daemon." msgstr "Atsiunčiama Syncthing tarnyba." #: syncthing_gtk/wizard.py:441 msgid "Failed to download Syncthing daemon package." msgstr "Nepavyko atsisiųsti Syncthing tarnybos paketo." #: syncthing_gtk/wizard.py:472 msgid "Syncthing is generating RSA key and certificate." msgstr "Syncthing generuoja RSA raktą ir sertifikatą." #: syncthing_gtk/wizard.py:473 msgid "This may take a while..." msgstr "Tai gali šiek tiek užtrukti..." #: syncthing_gtk/wizard.py:515 msgid "Failed to generate keys" msgstr "Nepavyko generuoti raktų" #: syncthing_gtk/wizard.py:516 msgid "Syncthing daemon failed to generate RSA key or certificate." msgstr "Syncthing tarnybai nepavyko generuoti RSA rakto ar sertifikato." #: syncthing_gtk/wizard.py:526 msgid "WebUI setup" msgstr "Saityno NS sąranka" #: syncthing_gtk/wizard.py:528 msgid "" "Syncthing can be managed remotely using WebUI and even if you are going to " "use Syncthing-GTK, WebUI needs to be enabled, as Syncthing-GTK uses it to " "communicate with the Syncthing daemon." msgstr "Syncthing gali būti valdoma nuotoliniu būdu, naudojant saityno naudotojo sąsają, ir netgi jei naudosite Syncthing-GTK, saityno naudotojo sąsaja turi būti įdiegta, kadangi Syncthing-GTK naudoja ją susisiekimui su Syncthing tarnyba." #: syncthing_gtk/wizard.py:533 msgid "" "If you prefer to be able to manage Syncthing remotely, over the internet or " "on your local network, select listen on all interfaces and set " "username and password to protect Syncthing from unauthorized access." msgstr "Jeigu teikiate pirmenybę galimybei valdyti Syncthing nuotoliniu būdu per internetą ar savo vietiniame tinkle, pasirinkite klausyti visose sąsajose ir nustatykite naudotojo vardą bei slaptažodį, kad apsaugotumėte Syncthing nuo nesankcionuotos prieigos." #: syncthing_gtk/wizard.py:538 msgid "" "Otherwise, select listen on localhost, so only users and programs on " "this computer will be able to interact with Syncthing." msgstr "Kitu atveju, pasirinkite klausyti vietiniame serveryje, kad su Syncthing galėtų sąveikauti, tik šiame kompiuteryje esančios, programos ir naudotojai." #: syncthing_gtk/wizard.py:544 msgid "WebUI Listen Addresses" msgstr "Saityno naudotojo sąsajos adresų klausymasis" #: syncthing_gtk/wizard.py:545 msgid "Listen on _localhost" msgstr "K_lausyti vietiniame serveryje" #: syncthing_gtk/wizard.py:547 msgid "Listen on _all interfaces" msgstr "Kl_ausyti visose sąsajose" #: syncthing_gtk/wizard.py:554 msgid "_Username" msgstr "Na_udotojo vardas" #: syncthing_gtk/wizard.py:555 msgid "_Password" msgstr "Sla_ptažodis" #: syncthing_gtk/wizard.py:609 msgid "Saving settings..." msgstr "Įrašomi nustatymai..." #: syncthing_gtk/wizard.py:610 msgid "Checking for available port..." msgstr "Tikrinamas prieinamas prievadas..." #: syncthing_gtk/wizard.py:631 msgid "Failed to find unused port for listening." msgstr "Nepavyko rasti nenaudojamo prievado klausymui." #: syncthing_gtk/wizard.py:632 msgid "Please, check your firewall settings and try again." msgstr "Prašome patikrinti savo užkardos nustatymus ir bandyti dar kartą." #: syncthing_gtk/wizard.py:646 msgid "Saving..." msgstr "Įrašoma..." #: syncthing_gtk/wizard.py:678 msgid "Failed to load Syncthing configuration" msgstr "Nepavyko įkelti Syncthing konfigūracijos." #: syncthing_gtk/wizard.py:705 msgid "Failed to modify Syncthing configuration" msgstr "Nepavyko modifikuoti Syncthing konfigūracijos" #: syncthing_gtk/wizard.py:715 msgid "Failed to save Syncthing configuration" msgstr "Nepavyko įrašyti Syncthing konfigūracijos" #: syncthing_gtk/wizard.py:729 msgid "Done." msgstr "Atlikta." #: syncthing_gtk/wizard.py:731 msgid "Syncthing has been successfully configured." msgstr "Syncthing buvo sėkmingai sukonfigūruota." #: syncthing_gtk/wizard.py:733 msgid "" "You can configure more details later, in UI Settings and Daemon " "Settings menus in main window of application." msgstr "Jūs galėsite vėliau konfigūruoti išsamesnius nustatymus pagrindinio programos lango Naudotojo sąsajos nustatymai ir Tarnybos nustatymai meniu." #: about.glade:7 msgid "About Syncthing-GTK" msgstr "Apie Syncthing-GTK" #: about.glade:10 msgid "GTK GUI and notification area icon for Syncthing" msgstr "GTK grafinė naudotojo sąsaja ir pranešimų srities piktograma, skirta Syncthing" #: about.glade:12 msgid "GitHub" msgstr "GitHub" #: app.glade:239 app.glade:420 app.glade:802 msgid "Open _Web Interface" msgstr "Atverti _saityno sąsają" #: app.glade:251 app.glade:424 app.glade:814 msgid "Display _Daemon Output" msgstr "Rodyti _tarnybos išvestį" #: app.glade:263 msgid "Display Syncthing-Inotify Output" msgstr "Rodyti Syncthing-Inotify išvestį" #: app.glade:280 app.glade:430 msgid "UI _Settings" msgstr "Naudotojo sąsajos _nustatymai" #: app.glade:325 app.glade:451 msgid "Add Shared _Folder" msgstr "Pridėti bendrinamą _aplanką" #: app.glade:338 app.glade:455 msgid "Add _Device" msgstr "Pri_dėti įrenginį" #: app.glade:356 app.glade:461 msgid "Daemon _Settings" msgstr "Tarnybos nu_statymai" #: app.glade:371 app.glade:465 app.glade:588 app.glade:788 msgid "Show _ID" msgstr "Rodyti _ID" #: app.glade:391 app.glade:471 msgid "Sh_utdown Daemon" msgstr "S_tabdyti tarnybą" #: app.glade:404 app.glade:475 msgid "_Restart Daemon" msgstr "Iš naujo paleisti ta_rnybą" #: app.glade:436 msgid "_About" msgstr "_Apie" #: app.glade:440 msgid "_Quit" msgstr "_Išeiti" #: app.glade:490 msgid "Override Remote Changes" msgstr "Nustelbti nuotolinius pakeitimus" #: app.glade:519 msgid "Edit _Ignore Patterns" msgstr "Redaguoti nepaisymo šablonus" #: app.glade:547 msgid "_Rescan" msgstr "Pe_ržiūrėti" #: app.glade:559 msgid "_Browse" msgstr "_Naršyti" #: app.glade:611 msgid "Resume" msgstr "Tęsti" #: app.glade:641 msgid "Connecting to daemon..." msgstr "Jungiamasi prie tarnybos..." #: app.glade:669 msgid "S_top Syncthing" msgstr "S_tabdyti Syncthing" #: app.glade:683 msgid "Resume Sync_thing" msgstr "Tęsti Sync_thing" #: app.glade:695 daemon-settings.glade:335 msgid "_Incoming Rate Limit" msgstr "Gaunamų duomenų spartos apr_ibojimas" #: app.glade:709 app.glade:751 msgid "_Unlimited" msgstr "_Neribota" #: app.glade:718 app.glade:760 msgid "_Other" msgstr "_Kita" #: app.glade:737 msgid "_Outgoing Rate Limit" msgstr "Siunčiamų duomenų spartos aprib_ojimas" #: daemon-output.glade:7 msgid "Daemon Output" msgstr "Tarnybos išvestis" #: daemon-settings.glade:106 msgid "Sync Protocol Listen Addresses" msgstr "Sinchronizuoti protokolo klausymosi adresus" #: daemon-settings.glade:136 msgid "Enable Local _Discovery" msgstr "Įjungti vietinį apti_kimą" #: daemon-settings.glade:153 msgid "Enable _UPnP" msgstr "Įjungti _UPnP" #: daemon-settings.glade:171 msgid "Local Discovery _Port" msgstr "Vietinio aptikimo _prievadas" #: daemon-settings.glade:212 msgid "Outgoing _Rate Limit" msgstr "Siunčiamų duomenų spartos ap_ribojimas" #: daemon-settings.glade:229 msgid "Open browser with _WebUI when daemon is starting" msgstr "Kai paleidžiama tarnyba, atverti naršyklę su _saityno naudotojo sąsaja " #: daemon-settings.glade:246 msgid "Enable _Anonymous Usage Reporting" msgstr "Įjungti _anoniminės naudojimo ataskaitos siuntimą" #: daemon-settings.glade:262 msgid "Enable _Global Discovery" msgstr "Įjungti visuotinį aptikimą" #: daemon-settings.glade:281 msgid "Global Discovery _Servers" msgstr "Visuotinio aptikimo _serveriai" #: device-edit.glade:102 msgid "Device _ID" msgstr "Įrenginio _ID" #: device-edit.glade:134 msgid "Device _Name" msgstr "Įrenginio pavadi_nimas" #: device-edit.glade:166 msgid "Shown instead of Device ID in the cluster status." msgstr "Rodoma klasterio būsenoje vietoj įrenginio ID." #: device-edit.glade:181 msgid "_Addresses" msgstr "_Adresai" #: device-edit.glade:213 msgid "" "Enter comma separated \"ip:port\" addresses or \"dynamic\" to perform " "automatic discovery of the address." msgstr "Įveskite kableliais atskirtus \"ip:prievadas\" adresus arba \"dynamic\", kad atliktumėte automatinį adreso aptikimą." #: device-edit.glade:242 msgid "Share _Folders" msgstr "Bendrinami a_plankai" #: device-edit.glade:276 msgid "Select the folders to share with this device" msgstr "Pasirinkite aplankus, kuriuos bendrinsite su šiuo įrenginiu" #: device-edit.glade:287 msgid "_Introducer" msgstr "Pr_istatantis" #: device-edit.glade:308 msgid "" "Any devices configured on an introducer device will be added to this device " "as well." msgstr "Bet kokie pristatančiame įrenginyje sukonfigūruoti įrenginiai, bus taip pat pridėti į šį įrenginį." #: device-edit.glade:323 msgid "_Compression" msgstr "_Glaudinimas" #: device-id.glade:14 msgid "Device Identification" msgstr "Įrenginio atpažinimas" #: device-id.glade:68 msgid "XYZ-123-ABC" msgstr "XYZ-123-ABC" #: find-daemon.glade:126 ui-settings.glade:821 msgid "_Browse..." msgstr "_Naršyti..." #: find-daemon.glade:179 msgid "_Download..." msgstr "Atsisiųs_ti..." #: folder-edit.glade:44 msgctxt "In File Pull Order combobox" msgid "Random" msgstr "Atsitiktinė" #: folder-edit.glade:48 msgctxt "In File Pull Order combobox" msgid "Alphabetic" msgstr "Abėcėlės tvarka" #: folder-edit.glade:52 msgctxt "In File Pull Order combobox" msgid "Smallest First" msgstr "Pirmiau mažiausi" #: folder-edit.glade:56 msgctxt "In File Pull Order combobox" msgid "Largest First" msgstr "Pirmiau didžiausi" #: folder-edit.glade:60 msgctxt "In File Pull Order combobox" msgid "Oldest First" msgstr "Pirmiau seniausi" #: folder-edit.glade:64 msgctxt "In File Pull Order combobox" msgid "Newest First" msgstr "Pirmiau naujausi" #: folder-edit.glade:82 msgid "Simple" msgstr "Paprasta" #: folder-edit.glade:86 msgid "Staggered" msgstr "Pakopinė" #: folder-edit.glade:90 msgid "Trashcan" msgstr "Šiukšlių dėžės" #: folder-edit.glade:94 msgid "External" msgstr "Išorinė" #: folder-edit.glade:171 msgid "Folder _Label" msgstr "Aplanko _etiketė" #: folder-edit.glade:202 msgid "Short identifier for the folder. Must be the same on all devices." msgstr "Trumpas atpažinimas aplankui. Privalo būti vienodas visuose įrenginiuose." #: folder-edit.glade:216 msgid "_Path" msgstr "_Kelias" #: folder-edit.glade:234 msgid "" "Path to the folder on the local computer. Will be created if it does not " "exist." msgstr "Kelias į aplanką vietiniame kompiuteryje. Jei aplanko nėra, jis bus sukurtas." #: folder-edit.glade:248 msgid "Rescan _Interval" msgstr "Peržiūrėjimo _intervalas" #: folder-edit.glade:293 msgid "Monitor filesystem for _changes" msgstr "Stebėti failų sistemos _pakeitimus" #: folder-edit.glade:314 msgid "" "If enabled, changed, created and delete files are synchronized immediately, as long as Syncthing-GTK is running.\n" "Note: Using this along with short Rescan Interval (<300s) may consume a lot of resources." msgstr "Jei įjungta, pakeisti, sukurti ar ištrinti failai yra nedelsiant sinchronizuojami tol, kol yra vykdoma Syncthing-GTK.\nPastaba: Šios ypatybės naudojimas kartu su trumpu Peržiūrėjimo intervalu (<300s) gali naudoti daug išteklių." #: folder-edit.glade:343 msgid "Browse..." msgstr "Naršyti..." #: folder-edit.glade:366 msgid "Folder _ID" msgstr "Aplanko _ID" #: folder-edit.glade:396 msgid "" "Optional descriptive label for the folder. Can be different on each device." msgstr "Nebūtina aprašomoji aplanko etiketė. Kiekviename įrenginyje gali būti skirtinga." #: folder-edit.glade:418 msgid "_Send Only Folder" msgstr "_Siųsti tik aplanką" #: folder-edit.glade:439 msgid "" "Files are protected from changes made on other devices, but changes made on " "this device will be sent to the rest of the cluster." msgstr "Failai yra apsaugoti nuo kituose įrenginiuose daromų pakeitimų, tačiau šiame įrenginyje padaryti pakeitimai bus siunčiami likusiam klasteriui." #: folder-edit.glade:456 msgid "_Folder Settings" msgstr "A_planko nustatymai" #: folder-edit.glade:476 msgid "Select the devices to share this folder with." msgstr "Pasirinkite įrenginius, su kuriais bendrinsite šį aplanką." #: folder-edit.glade:514 msgid "Share With _Devices" msgstr "Ben_drinti su įrenginiais" #: folder-edit.glade:535 msgid "Versioning _Mode" msgstr "Versijų sistemos veikse_na" #: folder-edit.glade:590 msgid "" "Files are moved to date stamped versions in a .stversions folder when " "replaced or deleted by syncthing." msgstr "Failai, kai syncthing juos pakeičia ar ištrina, yra perkeliami į datomis pažymėtas versijas aplanke .stversions." #: folder-edit.glade:605 msgid "_Keep Versions" msgstr "Pali_kti versijų" #: folder-edit.glade:642 msgid "The number of old versions to keep, per file." msgstr "Paliekamų senų versijų skaičius kiekvienam failui." #: folder-edit.glade:671 msgid "" "Files are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing. Versions are automatically deleted if they are older than the maximum age or exceed the number of files allowed in an interval.\n" "\n" "The following intervals are used: for the first hour a version is kept every 30 seconds, for the first day a version is kept every hour, for the first 30 days a version is kept every day, until the maximum age a version is kept every week." msgstr "Failai, kai syncthing juos pakeičia ar ištrina, yra perkeliami į datomis pažymėtas versijas aplanke .stversions. Versijos yra automatiškai ištrinamos, jeigu jos yra senesnės nei maksimalus amžius arba jei viršija intervale leidžiamą failų skaičių.\n\nYra naudojami sekantys intervalai: pirmą valandą versija yra paliekama kas 30 sekundžių, pirmą dieną versija yra paliekama kas valandą, pirmas 30 dienų versija yra paliekama kasdieną, iki maksimalaus amžiaus versija yra paliekama kas savaitę." #: folder-edit.glade:688 msgid "Ma_ximum Age" msgstr "Ma_ksimalus amžius" #: folder-edit.glade:727 msgid "Versions _Path" msgstr "Versijų k_elias" #: folder-edit.glade:759 msgid "" "Path where versions should be stored (leave empty for the default " ".stversions folder)." msgstr "Kelias, kuriame turėtų būti saugomos versijos (palikite tuščią numatytajam .stversions aplankui)." #: folder-edit.glade:787 msgid "" "Files are moved to .stversions folder when replaced or deleted by Syncthing" msgstr "Failai, kai Syncthing juos pakeičia ar ištrina, yra perkeliami į .stversions aplanką" #: folder-edit.glade:801 msgid "Clean out _after" msgstr "Išv_alyti po" #: folder-edit.glade:840 msgid "The number of days to keep files in the trash can." msgstr "Dienų skaičius, kiek laikyti failus šiukšlių dėžėje." #: folder-edit.glade:869 msgid "" "An external command handles the versioning. It has to remove the file from " "the synced folder." msgstr "Išorinė komanda apdoroja versijų sistemą. Ji turi pašalinti failą iš sinchronizuoto aplanko." #: folder-edit.glade:884 msgid "Command" msgstr "Komanda" #: folder-edit.glade:917 msgid "" "The first command line parameter is the folder path and the second parameter" " is the relative path in the folder." msgstr "Pirmasis komandų eilutės parametras yra aplanko kelias, o antrasis parametras yra santykinis kelias aplanke." #: folder-edit.glade:953 msgid "File _Versioning" msgstr "Failų _versijų sistema" #: folder-edit.glade:982 msgid "Ignore P_ermissions" msgstr "N_epaisyti leidimų" #: folder-edit.glade:1003 msgid "" "File permission bits are ignored when looking for changes. Use on FAT " "filesystems." msgstr "Ieškant pakeitimų, yra nepaisoma failų leidimų bitų. Naudokite FAT failų sistemose." #: folder-edit.glade:1018 msgid "Minimum Free Disk Space" msgstr "Mažiausiai laisvos vietos diske" #: folder-edit.glade:1057 msgid "File Pull _Order" msgstr "Failų siuntim_o tvarka" #: folder-edit.glade:1103 ui-settings.glade:954 msgid "_Advanced" msgstr "Išplėstini_ai" #: ignore-editor.glade:8 msgid "Ignore Patterns" msgstr "Nepaisymo šablonai" #: ignore-editor.glade:99 msgid "" "See Syncthing " "documentation for list of supported patterns" msgstr "Norėdami pamatyti prieinamų šablonų sąrašą, žiūrėkite Syncthing dokumentaciją" #: ignore-editor.glade:114 msgid "File location: " msgstr "Failo vieta: " #: ui-settings.glade:27 msgid "Lowest" msgstr "Žemiausia" #: ui-settings.glade:31 msgid "Low" msgstr "Žema" #: ui-settings.glade:35 msgid "Normal" msgstr "Normali" #: ui-settings.glade:39 msgid "Above Normal" msgstr "Aukštesnė už normalią" #: ui-settings.glade:46 msgid "Syncthing-GTK Settings" msgstr "Syncthing-GTK nustatymai" #: ui-settings.glade:69 msgid "Please, restart Syncthing-GTK to apply all changed settings" msgstr "Prašome iš naujo paleisti Syncthing-GTK, kad būtų pritaikyti visi pakeisti nustatymai" #: ui-settings.glade:136 msgid "When starting and Syncthing daemon is not running..." msgstr "Kai paleidžiama ir Syncthing tarnyba nėra vykdoma..." #: ui-settings.glade:147 msgid "... _wait for daemon" msgstr "... laukti tarn_ybos" #: ui-settings.glade:164 msgid "... start daemon in _background" msgstr "... paleisti tarny_bą fone" #: ui-settings.glade:180 msgid "... _ask me what to do" msgstr "... kl_austi manęs ką daryti" #: ui-settings.glade:199 msgid "When exiting after daemon was started in background..." msgstr "Kai išeinama po to, kai tarnyba buvo paleista fone..." #: ui-settings.glade:210 msgid "... terminate _daemon" msgstr "... baigti tarnybos _darbą" #: ui-settings.glade:226 msgid "... leave daemon _running" msgstr "... palikti tarnybą _vykdomą" #: ui-settings.glade:242 msgid "... ask me w_hat to do" msgstr "... klausti manęs ką da_ryti" #: ui-settings.glade:258 msgid "Us_e traditional window header" msgstr "Naud_oti tradicinę lango antraštę" #: ui-settings.glade:278 msgid "Display desktop notifications for..." msgstr "Rodyti darbalaukio pranešimus..." #: ui-settings.glade:289 msgid "... file updates" msgstr "... failų atnaujinimams" #: ui-settings.glade:304 msgid "... errors" msgstr "... klaidoms" #: ui-settings.glade:319 msgid "... synchronization completion" msgstr "... sinchronizavimo užbaigimui" #: ui-settings.glade:334 msgid "Start Syncthing-GTK when I login to my desktop" msgstr "Paleisti Syncthing-GTK, kai aš prisijungiu prie savo darbalaukio" #: ui-settings.glade:350 msgid "Minimize to _tray on start" msgstr "Paleidus, s_umažinti į dėklą" #: ui-settings.glade:366 msgid "Use _icons in menu" msgstr "Meniu naudoti p_iktogramas" #: ui-settings.glade:383 msgid "Display paths in directories panel" msgstr "Rodyti kelius katalogų skydelyje" #: ui-settings.glade:399 msgid "Force _dark theme" msgstr "Priverstinai nau_doti tamsią temą " #: ui-settings.glade:474 msgid "_Interface" msgstr "_Sąsaja" #: ui-settings.glade:492 msgid "Integrate Syncthing with filemanagers" msgstr "Integruoti Syncthing į failų tvarkytuves" #: ui-settings.glade:507 msgid "Nemo (Cinamon Desktop)" msgstr "Nemo (Cinnamon darbalaukis)" #: ui-settings.glade:524 msgid "Nautilus (Ubuntu/GNOME)" msgstr "Nautilus (Ubuntu/GNOME)" #: ui-settings.glade:540 msgid "Caja (MATE Desktop)" msgstr "Caja (MATE darbalaukis)" #: ui-settings.glade:579 msgid "" "Note: You may need to restart your filemanager after toggling " "integration." msgstr "Pastaba: Po integravimo perjungimo, jums gali prireikti iš naujo paleisti savo failų tvarkytuvę." #: ui-settings.glade:598 msgid "_Integration" msgstr "_Integravimas" #: ui-settings.glade:627 msgid "Keep Syncthing binary up-to-date" msgstr "Išlaikyti Syncthing dvejetainę naujausios versijos" #: ui-settings.glade:647 msgid "" "If enabled, Syncthing-GTK will automatically check for new daemon releases " "and replace binary with latest version." msgstr "Jei įjungta, Syncthing-GTK automatiškai tikrins naujas tarnybos laidas ir pakeis dvejetainę naujausia versija." #: ui-settings.glade:662 msgid "Daemon process priority" msgstr "Tarnybos proceso pirmenybė" #: ui-settings.glade:698 msgid "" "Priority will be used only if \"start daemon in background\" option " "is checked on \"Interface\" page." msgstr "Pirmenybė bus naudojama tik tuomet, jei \"Sąsajos\" puslapyje yra pažymėta parinktis \"paleisti tarnybą fone\"." #: ui-settings.glade:713 msgid "Maximum number of CPU cores" msgstr "Didžiausias procesoriaus branduolių skaičius" #: ui-settings.glade:731 msgid "" "Sets the maximum number of CPU cores for daemon to use. This value will be " "used only if \"start daemon in background\" option is checked on " "\"Interface\" page." msgstr "Nustato didžiausią procesoriaus branduolių skaičių, tarnybai naudoti. Ši reikšmė bus naudojama tik tuomet, jei \"Sąsajos\" puslapyje yra pažymėta parinktis \"paleisti tarnybą fone\"." #: ui-settings.glade:786 msgid "Daemon" msgstr "Tarnyba" #: ui-settings.glade:808 msgid "" "This binary will be started when syncthing daemon is not running and " "\"start daemon in background\" option is checked on " "\"Interface\" page." msgstr "Ši dvejetainė bus paleidžiama tuomet, kai syncthing tarnyba nėra vykdoma ir kai \"Sąsajos\" puslapyje yra pažymėta parinktis \"paleisti tarnybą fone\"." #: ui-settings.glade:838 msgid "Syncthing binary location" msgstr "Syncthing dvejetainės vieta" #: ui-settings.glade:867 msgid "Daemon arguments and variables" msgstr "Tarnybos argumentai ir kintamieji" #: ui-settings.glade:897 msgid "" "Space-separated list of arguments and environment variables passed when starting above binary\n" "\n" "Use VARIABLE=\"value\" to set variable and -argument=\"value\" (with dash) for argument.\n" "\n" "If you need to pass commandline to different command (such as logger or ionice), separate prefixed arguments with exclamation mark \"!\"\n" "\n" "Example:\n" " STTRACE=\"all\" logger -t /var/log/syncthing.log ! -logflags=10" msgstr "Paleidžiant aukščiau nurodytą dvejetainę, jai perduodamų, tarpais atskirtų argumentų ir aplinkos kintamųjų sąrašas\n\nNaudokite KINTAMASIS=\"reikšmė\", kad nustatytumėte kintamąjį ir -argumentas=\"reikšmė\" (su brūkšneliu) argumentui nustatyti.\n\nJeigu jums reikia perduoti komandų eilutę į kitą komandą (tokią kaip logger ar ionice), atskirkite argumentus su priešdeliu šauktuko ženklu \"!\"\n\nPavyzdys:\n STTRACE=\"all\" logger -t /var/log/syncthing.log ! -logflags=10" #: ui-settings.glade:921 msgid "" "Warning: Changing settings on this page may prevent you from using " "Syncthing-GTK" msgstr "Įspėjimas: Šiame puslapyje esančių nustatymų pakeitimas gali jums neleisti naudotis Syncthing-GTK" syncthing-gtk-0.9.4.4/locale/nl/000077500000000000000000000000001352162771300163365ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/locale/nl/LC_MESSAGES/000077500000000000000000000000001352162771300201235ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/locale/nl/LC_MESSAGES/syncthing-gtk.mo000066400000000000000000001065701352162771300232620ustar00rootroot00000000000000l| x>yB?E;Bc( D M T \ h p          !!&!@!`!!Q!W!?" S"`"s"" """" ":",&#!S#u#]##T$-X$$ $$$ $$$%g%!%%-&L&]&q&!y& &&& &&'''!''$'D(RT(( (((()5 )]B)) ) ) ))$)*")*5L*D** ****+6+T+c+y+!++ +e+?,E,T,],f, {,-,,,,)-@-&X-)-(-&--!.9.J.[.j.Rz..K.g//`11 1 1 2 2!212,C2p22 2 2r2P&3aw3=344u55555&5)5(#6(L6"u6*6 6(696%37 Y7Dd7,7 77 8 8$898 O8[8_8 f8s8 8888 889)9/94979>9B9J9$Q9v909K9: ::::O:V;o; v;;2;3;K;;D<<==FN=o=> >">2>C>X>_>q>> >>>v>>?-[?,?? ??y@@@ @A@ @A1A"BAeAklAA tC.~C CCCCC, D9DRDeD mDwDDDD(xEE.E;E+FHFdF+F0F7FG 0G>GVUG6G3GmH)HHpGI2I-IJJ#JJJ K K K=*K+hKK KKK KK KK LL%L.L?L%NLtL L*L6L4L.M 4M@M{DMM!NiNOO $O /O9O AO LOYO tOOOO O O OOOO OPPP)P1P:PJP \P gPqPzP P PP(P PPP9P 2Q@QSQ@RZ,SWSZSW:TtTU#U,U3UnMnbnxn nnn n nnn2nOo+nooTo8p"=p`p epsppp ppppp q*qEq+aq qqqqqqqqqq0q&r7;rPsrrJs`s!{ssQsYs Mt Xtdt-stBtStI8uuBvF^vv .w:wKwiww wwww wwwxx0x>x,yCyTy&z;z Pz ^zKjzz z9z{ 0{:{{}?} }~~&%~L~,[~~~~ ~~~1&*3Q?ŀ><J{%Ɓ a4w7;jrR;ń02Ѕ( 4IYDj3 #7(Fo$Ç4CD;Ĉ ȈԈ׈gFmeӊ ي  ;J[d ȋ  $5M bn ~ +Ō?[ kh"1XmJ6dp^Q^MjY`NfAKOaF_lY[? %A k)-"Q,$%7) GTjq! &_R}H|;Ib70;?</i,a*x$:3[>(V*1@PcgcE I:ov(<Sl='T\Gu8nBK9\ NC4>zS9r+{2&0 . `4 ]Zd#-V8UB W!UtE6+L eDFih3~P='R52yD#CJ]@O.XsfLHZ5bkgwMeW/%(device)s wants to share folder "%(folder)s". Add new folder?%(hostname)s: Deleted %(deleted)s files to reflect remote changes.%(hostname)s: Deleted '%(filename)s' to reflect remote changes.%(hostname)s: Downloaded %(updated)s files to reflect remote changes.%(hostname)s: Downloaded '%(filename)s' to reflect remote changes.%(hostname)s: downloaded %(updated)s files and deleted %(deleted)s files to reflect remote changes.%(online)s/%(total)s online%s KiB/s%s day%s days%s days ago%s kB/s%s minutes ago%s minutes from now%s seconds ago%s seconds from now%s%%%ss(watch)... _ask me what to do... _wait for daemon... ask me w_hat to do... errors... file updates... leave daemon _running... start daemon in _background... synchronization completion... terminate _daemonNote: You may need to restart your filemanager after toggling integration.Warning: Changing settings on this page may prevent you from using Syncthing-GTKAbout Syncthing-GTKAbove NormalAccept device "%s"Accept folder "%s"Add Shared _FolderAdd _DeviceAddressAll DataAll devices offlineAllow Anonymous Usage Reporting?Alternatively, Syncthing-GTK can download Syncthing binaryAlways do same; Don't show this window againAlways start daemon automaticallyAn error occurred in Syncthing!An external command handles the versioning. It has to remove the file from the synced folder.Announce ServerAny devices configured on an introducer device will be added to this device as well.Attempting to download recent, please wait...Auto_update downloaded binaryBinary path:BlackBrowse for Syncthing binaryBrowse...CPU UtilizationCaja (MATE Desktop)Can't invoke the daemonCannot authorize with daemon. Please, use WebUI to generate API key or disable password authentication.Cannot download Syncthing daemon.Changes from other devices are applied to files on this device, but changes made on this device are not sent to the rest of the cluster. Checking for available port...Clean out _afterCluster out of syncCommandCompleted synchronization in "%s"CompressionConflict in path "%s" detected.Conflicting file in "%s"ConnectedConnected to Syncthing daemonConnecting to %s failed; the remote device speaks an older version of the protocol (%s) not compatible with this versionConnecting to Syncthing daemon at %s...Connecting to Syncthing daemon...Connecting to daemon...Connection to Syncthing daemon lost.Connection to daemon failed. Check your configuration and try again.Continue this wizard to create a Syncthing configuration file or abort it to exit.DaemonDaemon OutputDaemon _SettingsDaemon arguments and variablesDaemon process priorityDefaultDevice "%s" is trying to connect to syncthing daemon.Device "%(name)s" (%(device)s) at IP "%(ip)s" wants to connect. Add new device?Device IdentificationDevice _IDDevice _NameDisconnectedDisplay _Daemon OutputDisplay desktop notifications for...Display error logDisplay paths in directories panelDo you really want remove device '%s' from Syncthing?Do you really want to permanently stop synchronizing directory '%s'?Done.Download RateDownload failed.Download finished.Downloaded file is corrupted.Downloading Syncthing %sDownloading Syncthing daemon.Downloading...Edit _Ignore PatternsEnable Local _DiscoveryEnable _Anonymous Usage ReportingEnable _Global DiscoveryEnable _UPnPEnter comma separated "ip:port" addresses or "dynamic" to perform automatic discovery of the address.ErrorError message:Exiting.ExternalExtracting update...Failed to create temporary file.Failed to determine latest Syncthing version.Failed to download Syncthing daemon package.Failed to download upgrade: %sFailed to find unused port for listening.Failed to generate keysFailed to load Syncthing configurationFailed to load configuration from daemon.Failed to modify Syncthing configurationFailed to save Syncthing configurationFailed to save configuration.Failed to start Syncthing daemon.File Pull _OrderFile _VersioningFile location:File location: File permission bits are ignored when looking for changes. Use on FAT filesystems.FilesFiles are moved to .stversions folder when replaced or deleted by SyncthingFiles are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing.Files are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing. Versions are automatically deleted if they are older than the maximum age or exceed the number of files allowed in an interval. The following intervals are used: for the first hour a version is kept every 30 seconds, for the first day a version is kept every hour, for the first 30 days a version is kept every day, until the maximum age a version is kept every week.Files are protected from changes made on other devices, but changes made on this device will be sent to the rest of the cluster.First run wizardFolder IDFolder TypeFolder _IDFolder _LabelFolder rejectedForce _dark themeGUI and notification area icon for SyncthingGenerate RandomGlobal Discovery _ServersGlobal StateHide WindowIf enabled, Syncthing-GTK will automatically check for new daemon releases and replace binary with latest version.If the reported data set is changed you will be prompted with this dialog again.If you already had Syncthing daemon configured, please, exit this wizard and check your %s folderIf you have Syncthing installed, please, set path to %s belowIf you have Syncthing installed, please, set path to %s below or click on Download button to download latest Syncthing package.If you prefer to be able to manage Syncthing remotely, over the internet or on your local network, select listen on all interfaces and set username and password to protect Syncthing from unauthorized access.Ignore P_ermissionsIgnore PatternsIgnore PermissionsIgnore device "%s"Ignore folder "%s"In File Pull Order comboboxAlphabeticIn File Pull Order comboboxLargest FirstIn File Pull Order comboboxNewest FirstIn File Pull Order comboboxOldest FirstIn File Pull Order comboboxRandomIn File Pull Order comboboxSmallest FirstIncompatibleInitial configuration should be created.Install %(package)s package to enable %(feature)s supportIntegrate Syncthing with filemanagersIntroducerIt is used to track common platforms, folder sizes and app versions.It looks like you never have used Syncthing.Keep Syncthing binary up-to-dateLanguageLast SeenListen on _all interfacesListen on _localhostLocal Discovery _PortLocal StateLowLowestMa_ximum AgeMaximum number of CPU coresMetadata OnlyMinimize to _tray on startMinimum Free Disk SpaceMonitor filesystem for _changesMore infoNautilus (Ubuntu/GNOME)Nemo (Cinamon Desktop)NeverNextNoNormalOffOfflineOnlineOpen Conflicting file in filemanagerOpen _Web InterfaceOpen browser with _WebUI when daemon is startingOptional descriptive label for the folder. Can be different on each device.Otherwise, select listen on localhost, so only users and programs on this computer will be able to interact with Syncthing.Out Of SyncOutgoing _Rate LimitOverride Remote ChangesPathPath to the folder on the local computer. Will be created if it does not exist.Path where versions should be stored (leave empty for the default .stversions folder).PausedPlease waitPlease wait...Please, check error log and fill bug report on %s.Please, check your firewall settings and try again.Please, check your installation or set new path to Syncthing daemon binary.Please, restart Syncthing-GTK to apply all changed settingsPlease, use package manager to install the Syncthing package or %(download_link)s from Syncthing page and save it to your %(target)s directory.Please, use package manager to install the Syncthing package.Possible cause: Is there another web server running on Syncthing port?Priority will be used only if "start daemon in background" option is checked on "Interface" page.RAM UtilizationReceive OnlyRescan IntervalRescan _IntervalRestarting daemon...ResumeResume Sync_thingS_top SyncthingSaving settings...Saving...ScanningSearching for Syncthing daemon.See Syncthing documentation for list of supported patternsSelect Folder for new FolderSelect the devices to share this folder with.Select the folders to share with this deviceSend & ReceiveSend OnlySets the maximum number of CPU cores for daemon to use. This value will be used only if "start daemon in background" option is checked on "Interface" page.Sh_utdown DaemonShare With _DevicesShare _FoldersShared WithShort identifier for the folder. Must be the same on all devices.Show WindowShow _IDShown instead of Device ID in the cluster status.Shutdown Syncthing daemon as well?SimpleSorry, connecting to HTTPS is not supported on this platform. Please, use WebUI to disable HTTPS try again.Space-separated list of arguments and environment variables passed when starting above binary Use VARIABLE="value" to set variable and -argument="value" (with dash) for argument. If you need to pass commandline to different command (such as logger or ionice), separate prefixed arguments with exclamation mark "!" Example: STTRACE="all" logger -t /var/log/syncthing.log ! -logflags=10StaggeredStart Syncthing-GTK when I login to my desktopStart it now?Starting Syncthing daemonStoppedSync Protocol Listen AddressesSynchronizationSynchronization of folder '%s' is completed.Synchronizing %s foldersSynchronizing '%s'SyncingSyncthingSyncthing Daemon SettingsSyncthing binarySyncthing binary locationSyncthing can be managed remotely using WebUI and even if you are going to use Syncthing-GTK, WebUI needs to be enabled, as Syncthing-GTK uses it to communicate with the Syncthing daemon.Syncthing daemon binary cannot be found.Syncthing daemon binary found.Syncthing daemon doesn't appear to be running.Syncthing daemon failed to generate RSA key or certificate.Syncthing daemon is too old.Syncthing daemon not found.Syncthing has been shut down.Syncthing has been successfully configured.Syncthing is generating RSA key and certificate.Syncthing is probably restarting or has been shut down.Syncthing is restarting.Syncthing-GTKSyncthing-GTK SettingsSyncthing-GTK needs Syncthing daemon %(min)s or newer, but only %(actual)s were found.Syncthing-GTK started and running in notification areaThe aggregated statistics are publicly available atThe configuration has been saved but not activated. Syncthing must restart to activate the new configuration.The encrypted usage report is sent daily.The entered device ID does not look valid. It should be a 52 character string consisting of letters and numbers, with spaces and dashes being optional.The first command line parameter is the folder path and the second parameter is the relative path in the folder.The number of days to keep files in the trash can.The number of old versions to keep, per file.This binary will be started when syncthing daemon is not running and "start daemon in background" option is checked on "Interface" page.This may take a while...This platform (%s) is not supportedTrashcanTray icon styleTry again.UI SettingsUI _SettingsUnexpected folder "%(folder)s" sent from device "%(device)s".Unexpected folder ID sent from device "%s".Unknown DeviceUnlimitedUnsharedUnusedUp to DateUpdates in folder "%s"Upload RateUs_e traditional window headerUse _icons in menuVersionVersion:Versioning _ModeVersions _PathWaiting for Syncthing daemon at %s...WebUI Listen AddressesWebUI setupWelcome to Syncthing-GTK first run wizard!When exiting after daemon was started in background...When starting and Syncthing daemon is not running...WhiteXYZ-123-ABCYesYou can configure more details later, in UI Settings and Daemon Settings menus in main window of application.Your Windows version doesn't supports cryptographic standards needed for Syncthing-GTK to check for Syncthing updates. Please, install this Windows update or disable update feature.Your syncthing daemon is too old.Your syncthing daemon is too old. Please, upgrade syncthing package at least to version %s and try again._About_Add_Addresses_Advanced_Browse_Browse..._Compression_Download Syncthing binary_Download..._Folder Settings_Ignore_Incoming Rate Limit_Integration_Interface_Introducer_Keep Versions_Other_Outgoing Rate Limit_Password_Path_Quit_Receive Only Folder_Rescan_Restart_Restart Daemon_Send Only Folder_Unlimited_Usernamedisableddownload latest binaryin %s daysin a momentjust nowlast resort and generally not suggested.never deleteno limitofflineto %s and keep it up-to-date, but this option is meant as~%s hours ago~%s hours from nowProject-Id-Version: syncthing-gtk Report-Msgid-Bugs-To: POT-Creation-Date: 2016-04-20 11:27+0200 PO-Revision-Date: 2019-08-04 10:39+0000 Last-Translator: Thomas De Rocker Language-Team: Dutch (http://www.transifex.com/syncthing-gtk/syncthing-gtk/language/nl/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: nl Plural-Forms: nplurals=2; plural=(n != 1); %(device)s wil map “%(folder)s” delen. Nieuwe map toevoegen?%(hostname)s: %(deleted)s bestanden verwijderd om wijzigingen op afstand te weerspiegelen.%(hostname)s: ‘%(filename)s’ verwijderd om wijzigingen op afstand te weerspiegelen.%(hostname)s: %(updated)s bestanden gedownload om wijzigingen op afstand te weerspiegelen.%(hostname)s: ‘%(filename)s’ gedownload om wijzigingen op afstand te weerspiegelen.%(hostname)s: %(updated)s bestanden gedownload en %(deleted)s verwijderd om wijzigingen op afstand te weerspiegelen.%(online)s/%(total)s online%s KiB/s%s dag%s dagen%s dagen geleden%s kB/s%s minuten geledenover %s minuten%s seconden geledenover %s seconden%s%%%ss(opvolgen)... mij _vragen wat er moet gebeuren... _wachten op daemon... mij vragen wat er moet _gebeuren... fouten... bestandsupdates... daemon laten d_raaien... daemon op de _achtergrond starten... voltooiing van synchronisatie... _daemon beëindigenOpmerking: Het kan zijn dat u uw bestandsbeheerder opnieuw moet starten na in-/uitschakelen van integratie.Waarschuwing: Instellingen op deze pagina wijzigen kan ertoe leiden dat Syncthing-GTK niet meer werktOver Syncthing-GTKBoven normaalApparaat "%s" accepterenMap "%s" accepterenGedeelde ma_p toevoegen_Apparaat toevoegenAdresAlle gegevensAlle apparaten offlineAnonieme gebruiksrapportage toestaan?Als alternatief kan Syncthing-GTK de Syncthing-binary downloadenAltijd hetzelfde doen; dit venster niet opnieuw weergevenDaemon altijd automatisch startenEr trad een fout op in Syncthing!Een externe opdracht regelt het versiebeheer. Hij moet het bestand verwijderen uit de gesynchroniseerde map.AankondigingsserverAlle apparaten geconfigureerd op een introductie-apparaat zullen ook aan dit apparaat toegevoegd worden.Proberen om recente versie te downloaden, even geduld...Gedownloade binary automatisch _bijwerkenPad naar binary:ZwartBladeren naar de Syncthing-binaryBladeren...CPU-gebruikCaja (MATE-desktop)Kan de daemon niet oproepenKan niet autoriseren met daemon. Gebruik de webinterface om een API-sleutel aan te maken of schakel wachtwoordauthenticatie uit.Kan Syncthing-daemon niet downloaden.Wijzigingen van andere apparaten worden toegepast op bestanden op dit apparaat, maar wijzigingen gemaakt op dit apparaat worden niet verzonden naar de rest van de cluster. Controleren op beschikbare poort...Opruimen naCluster niet meer gesynchroniseerdOpdrachtSynchronisatie in "%s" voltooidCompressieConflict gedetecteerd in pad "%s".Conflicterend bestand in "%s"VerbondenVerbonden met Syncthing-daemonVerbinden met %s mislukt; het extern apparaat gebruikt een oudere versie van het protocol (%s) die niet compatibel is met deze versieVerbinding maken met Syncthing-daemon op %s...Verbinden met Syncthing-daemon...Verbinding maken met daemon...Verbinding met Syncthing-daemon verbroken.Verbinding met daemon mislukt. Controleer uw configuratie en probeer het opnieuw.Ga door met deze wizard om een Syncthing-configuratiebestand aan te maken of annuleer om af te sluiten.DaemonDaemon-uitvoerDaemon-in_stellingenDaemon-argumenten en -variabelenDaemon-procesprioriteitStandaardApparaat “%s” probeert verbinding te maken met de Syncthing-daemon.Apparaat “%(name)s” (%(device)s) op IP-adres “%(ip)s” wil verbinding maken. Nieuw apparaat toevoegen?ApparaatidentificatieApparaat-_ID_Naam apparaatVerbinding verbroken_Daemon-uitvoer weergevenBureaubladmeldingen weergeven voor...Foutlog weergevenPaden weergeven in mapvensterWilt u apparaat ‘%s’ echt verwijderen uit Syncthing?Wilt u het synchroniseren van map ‘%s’ echt permanent stoppen?Klaar.DownloadsnelheidDownloaden mislukt.Downloaden voltooid.Gedownload bestand is beschadigd.Syncthing %s downloadenSyncthing-daemon wordt gedownload.Downloaden...Negeer_patronen bewerkenLokale ont_dekking inschakelen_Anonieme gebruiksrapportage inschakelen_Globale ontdekking inschakelen_UPnP inschakelenDoor komma's gescheiden "ip:poort"-adressen opgeven of "dynamic" om automatische ontdekking van het adres uit te voeren.FoutFoutbericht:Afsluiten.ExternUpdate uitpakken...Aanmaken van tijdelijk bestand mislukt.Bepalen van meest recente Syncthing-versie mislukt.Downloaden van Syncthing-daemon-pakket mislukt.Downloaden van upgrade mislukt: %sKon geen ongebruikte poort vinden voor luisteren.Aanmaken van sleutels misluktLaden van Syncthing-configuratie misluktLaden van configuratie uit daemon mislukt.Wijzigen van Syncthing-configuratie misluktOpslaan van Syncthing-configuratie misluktOpslaan van configuratie mislukt.Starten van Syncthing-daemon mislukt.Volgorde voor binnenhalen van bestandenVersiebeheerBestandslocatie:Bestandslocatie:Bits voor bestandsmachtigingen worden genegeerd bij het zoeken naar wijzigingen. Gebruik voor FAT-bestandssystemen.BestandenBestanden worden verplaatst naar de .stversions-map wanneer ze vervangen of verwijderd zijn door Syncthing.Bestanden worden verplaatst naar versies met tijdsaanduiding in een .stversions-map wanneer ze vervangen of verwijderd zijn door Syncthing.Bestanden worden verplaatst naar versies met tijdsaanduiding in een .stversions-map wanneer ze vervangen of verwijderd zijn door Syncthing. Versies worden automatisch verwijderd als deze ouder zijn dan de maximale leeftijd of als ze het maximaal aantal toegestane bestanden in een interval overschrijden. De volgende intervallen worden gebruikt: het eerste uur worden versies iedere 30 seconden bewaard, de eerste dag worden versies ieder uur bewaard, de eerste 30 dagen worden versies iedere dag bewaard, tot de maximale leeftijd worden versies iedere week bewaard.Bestanden zijn beschermd tegen wijzigingen die op andere apparaten gemaakt zijn, maar wijzigingen die op dit apparaat gemaakt zijn, worden naar de rest van de cluster verzonden.Eerste-start-wizardMap-IDMaptypeMap-_IDMap_labelMap geweigerd_Donker thema forcerenGUI en systeemvakpictogram voor SyncthingWillekeurig genererenGlobale ontdekkings_serversGlobale statusVenster verbergenIndien ingeschakeld zal Syncthing-GTK automatisch controleren op nieuwe daemon-releases en de binary vervangen door de laatste versie.Als de gerapporteerde dataset gewijzigd wordt, zal dit dialoogvenster opnieuw weergegeven worden.Als u Syncthing-daemon al geconfigureerd heeft, verlaat dan deze eerste hulp en controleer uw ‘%s’-map.Als u Syncthing al geïnstalleerd heeft, stel dan het pad naar %s hieronder inAls u Syncthing al geïnstalleerd heeft, stel dan het pad naar %s hieronder in of klik op de knop downloaden om het meest recente Syncthing-pakket te downloaden.Als u verkiest om Syncthing van op afstand over het internet of op uw lokale netwerk te beheren, selecteer dan luisteren op alle interfaces en stel een gebruikersnaam en wachtwoord in om Syncthing te beschermen tegen niet-geautoriseerde toegang.Machtigingen negerenNegeerpatronenMachtigingen negerenApparaat "%s" negerenMap "%s" negerenAlfabetischGrootste eerstNieuwste eerstOudste eerstWillekeurigKleinste eerstNiet compatibelEen initiële configuratie moet aangemaakt worden.Installeer pakket %(package)s om ondersteuning voor %(feature)s in te schakelenSyncthing integreren met bestandsbeheerdersIntroductie-apparaatHet wordt gebruikt om veelgebruikte platformen, mapgroottes en app-versies te volgenHet lijkt erop dat u Syncthing nog nooit gebruikt heeft.Syncthing-binary up-to-date houdenTaalLaatst gezienLuisteren op _alle interfacesLuisteren op _localhostLokale ontdekkings_poortLokale statusLaagLaagstMa_ximale leeftijdMaximaal aantal CPU-kernenAlleen metadataNaar sys_teemvak minimaliseren bij startenMinimale vrije schijfruimteBestandssysteem monitoren voor _wijzigingenMeer infoNautilus (Ubuntu/GNOME)Nemo (Cinnamon-desktop)NooitVolgendeNeeNormaalUitOfflineOnlineConflicterend bestand openen in bestandbeheerder_Webinterface openenBrowser met _webinterface openen bij starten van daemonOptioneel beschrijvend label voor de map. Kan op elk apparaat verschillend zijn.Anders selecteert u luisteren op localhost zodat alleen gebruikers en programma's op deze computer kunnen werken met SyncthingNiet gesynchroniseerdBeg_renzing uploadsnelheidExterne wijzigingen overschrijvenPadPad naar de map op de lokale computer. Wordt aangemaakt als het nog niet bestaat.Pad waar versies opgeslagen moeten worden (leeg laten voor de standaard .stversions-map).GepauzeerdEven geduldEven geduld...Controleer het foutlog en meld de fout op %s.Controleer de instellingen van uw firewall en probeer het opnieuw.Controleer uw installatie of stel een nieuw pad in naar de Syncthing-daemon-binary.Start Syncthing-GTK opnieuw om alle gewijzigde instellingen toe te passenGebruik uw pakketbeheerder om het Syncthing-pakket of %(download_link)s van de Syncthing-pagina te installeren en sla het op in uw ‘%(target)s’-map.Gebruik uw pakketbeheerder om het Syncthing-pakket te installeren.Mogelijke reden: draait er een andere webserver op de Syncthing-poort?Prioriteit zal alleen gebruikt worden als de optie "daemon op achtergrond starten" aangevinkt is op de "interface"-pagina.RAM-gebruikAlleen ontvangenInterval voor opnieuw scannen_Interval voor opnieuw scannenDaemon opnieuw starten...HervattenSyncthing herva_ttenSyncthing s_toppenInstellingen opslaan...Opslaan...ScannenZoeken naar Syncthing-daemon.Lees de Syncthing-documentatie voor een lijst van ondersteunde patronenMap kiezen voor nieuwe mapSelecteer de apparaten om deze map mee te delen.Selecteer de mappen die met dit apparaat gedeeld moeten wordenVerzenden en ontvangenAlleen verzendenStelt het maximaal aantal CPU-kernen in dat de daemon mag gebruiken. Deze waarde zal alleen gebruikt worden als de optie "daemon op de achtergrond starten" aangevinkt is op de "interface"-pagina.Daemon _uitschakelen_Delen met apparaten_Mappen delenGedeeld metKorte identificatiecode voor de map. Moet hetzelfde zijn op alle apparaten.Venster weergeven_ID weergevenWeergegeven in plaats van apparaat-ID in de clusterstatusSyncthing-daemon ook afsluiten?EenvoudigSorry, verbinden met HTTPS wordt niet ondersteund op dit platform. Gebruik de webinterface om HTTPS uit te schakelen en probeer het opnieuw.Spatie-gescheiden lijst van argumenten en omgevingsvariabelen die doorgegeven worden bij het starten van de binary hierboven Gebruik VARIABLE="waarde" om een variabele in te stellen en -argument="waarde" (met streepje) voor een argument. Als u opdrachtregel moet doorgeven aan een verschillende opdracht (zoals logger of ionice), scheid dan geprefixte argumenten met een uitroepteken "!" Voorbeeld:  STTRACE="all" logger -t /var/log/syncthing.log ! -logflags=10GespreidSyncthing-GTK starten wanneer ik mij aanmeld op mijn bureaubladNu starten?Syncthing-daemon startenGestoptSynchronisatieprotocol-luisteradressenSynchronisatieSynchronisatie van map ‘%s’ is voltooid.%s mappen synchroniseren‘%s’ synchroniserenSynchroniserenSyncthingSyncthing-daemon-instellingenSyncthing-binaryLocatie van syncthing-binarySyncthing kan beheerd worden op afstand via de webinterface. Ook als u Syncthing-GTK wilt gebruiken moet de webinterface ingeschakeld zijn, omdat Syncthing-GTK deze gebruikt om te communiceren met de Syncthing-daemon.Syncthing-daemon-binary kan niet gevonden worden.Syncthing-daemon-binary teruggevonden.Het lijkt erop dat de Syncthing-daemon niet draait.Syncthing-daemon kon geen RSA-sleutel of -certificaat aanmaken.Syncthing-daemon is te oud.Syncthing-daemon niet gevonden.Syncthing werd uitgeschakeld.Syncthing is geconfigureerd.Syncthing is een RSA-sleutel en -certificaat aan het aanmaken.Syncthing is waarschijnlijk opnieuw aan het starten of werd uitgeschakeld.Syncthing is opnieuw aan het starten.Syncthing-GTKSyncthing-GTK-instellingenSyncthing-GTK heeft Syncthing-daemon %(min)s of later nodig, maar enkel %(actual)s werd gevonden.Syncthing-GTK is gestart en draait in het systeemvakDe verzamelde statistieken zijn publiek beschikbaar op De configuratie werd opgeslagen maar nog niet ingeschakeld. Syncthing moet opnieuw starten om de nieuwe configuratie in te schakelen.Het versleutelde gebruiksrapport wordt dagelijks verzonden.De opgegeven apparaat-ID ziet er niet goed uit. Het moet een reeks van 52 of 56 tekens zijn, bestaande uit letters en cijfers, waarbij spaties en streepjes optioneel zijn.De eerste opdrachtregelparameter is het pad naar de map en de tweede parameter is het relatieve pad binnen de map.Het aantal dagen om bestanden in de prullenbak te bewaren. Het aantal te bewaren oude versies, per bestand.Deze binary zal gestart worden wanneer synchting-daemon niet actief is en de optie "daemon op de achtergrond starten" aangevinkt is op de "interface"-pagina.Dit kan even duren...Dit platform (%s) wordt niet ondersteundPrullenbakSysteemvakpictogram-stijlProbeer het opnieuw.UI-instellingenUI-in_stellingenOnverwachte map in "%(folder)s" verzonden van apparaat "%(device)s".Onverwachte map-ID verzonden van apparaat “%s”.Onbekend apparaatOnbegrensdNiet-gedeeldOngebruiktUp-to-dateUpdates in map "%s"UploadsnelheidTraditionele venster-hoofding g_ebruikenP_ictogrammen gebruiken in menuVersieVersie:Versiebeheer-modus_Pad voor versiesWachten op Syncthing-daemon op %s...WebUI-luisteradressenWebUI-instellingWelkom bij de eerste-start-wizard van Syncthing-GTK!Bij het afsluiten nadat de daemon op de achtergrond gestart werd...Als bij het opstarten de Syncthing-daemon niet actief is...WitXYZ-123-ABCJaU kunt later meer details configureren in de menu's UI-instellingen en daemon-instellingen in het hoofdvenster van de toepassing.Uw Windows-versie ondersteunt de cryptografische standaarden niet die Syncthing-GTK nodig heeft om te controleren op Syncthing-updates. Installeer deze Windows-update of schakel de update-functie uit.Uw syncthing-daemon is te oud.Uw syncthing-daemon is te oud. Werk uw syncthing-pakket bij naar ten minste versie %s en probeer het opnieuw._Over_Toevoegen_AdressenGe_avanceerd_Bladeren_Bladeren..._CompressieSyncthing-binary _downloaden_Downloaden..._Mapinstellingen_NegerenBegrenzing _downloadsnelheid_Integratie_Interface_Introductie-apparaatVersies _behouden_AndereBegrenzing upl_oadsnelheid_Wachtwoord_Pad_AfsluitenMap enkel ontvangen_Opnieuw scannenOpnieuw sta_rtenDaemon opnieuw sta_rtenMap enkel ver_zenden_OnbegrensdGebr_uikersnaamuitgeschakeldlaatste binary downloadenover %s dagenzometeenzojuistlaatste redmiddel en wordt niet aanbevolen.nooit verwijderengeen begrenzingofflinein %s en deze up-to-date houden, maar deze optie is bedoeld als~%s uur geledenover ~%s uursyncthing-gtk-0.9.4.4/locale/nl/LC_MESSAGES/syncthing-gtk.po000066400000000000000000001372441352162771300232670ustar00rootroot00000000000000# Syncthing-GTK # Copyright (C) 2014-2015 Kozec and contributors # This file is distributed under the same license as the Syncthing-GTK package. # # Translators: # Nathan Follens, 2016-2017 # Thomas De Rocker, 2018-2019 msgid "" msgstr "" "Project-Id-Version: syncthing-gtk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-04-20 11:27+0200\n" "PO-Revision-Date: 2019-08-04 10:39+0000\n" "Last-Translator: Thomas De Rocker\n" "Language-Team: Dutch (http://www.transifex.com/syncthing-gtk/syncthing-gtk/language/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: syncthing_gtk/app.py:194 msgid "Syncthing-GTK started and running in notification area" msgstr "Syncthing-GTK is gestart en draait in het systeemvak" #: syncthing_gtk/app.py:288 #, python-format msgid "%s kB/s" msgstr "%s kB/s" #: syncthing_gtk/app.py:302 syncthing_gtk/notifications.py:77 #: syncthing_gtk/wizard.py:53 msgid "Syncthing-GTK" msgstr "Syncthing-GTK" #: syncthing_gtk/app.py:363 syncthing_gtk/app.py:364 syncthing_gtk/app.py:942 msgid "Syncing" msgstr "Synchroniseren" #: syncthing_gtk/app.py:366 syncthing_gtk/app.py:367 msgid "Scanning" msgstr "Scannen" #: syncthing_gtk/app.py:390 syncthing_gtk/app.py:652 msgid "Starting Syncthing daemon" msgstr "Syncthing-daemon starten" #: syncthing_gtk/app.py:424 msgid "Allow Anonymous Usage Reporting?" msgstr "Anonieme gebruiksrapportage toestaan?" #: syncthing_gtk/app.py:426 msgid "The encrypted usage report is sent daily." msgstr "Het versleutelde gebruiksrapport wordt dagelijks verzonden." #: syncthing_gtk/app.py:427 msgid "It is used to track common platforms, folder sizes and app versions." msgstr "Het wordt gebruikt om veelgebruikte platformen, mapgroottes en app-versies te volgen" #: syncthing_gtk/app.py:428 msgid "" "If the reported data set is changed you will be prompted with this dialog " "again." msgstr "Als de gerapporteerde dataset gewijzigd wordt, zal dit dialoogvenster opnieuw weergegeven worden." #: syncthing_gtk/app.py:430 msgid "The aggregated statistics are publicly available at" msgstr "De verzamelde statistieken zijn publiek beschikbaar op " #: syncthing_gtk/app.py:552 #, python-format msgid "" "Your Windows version doesn't supports cryptographic standards needed\n" "for Syncthing-GTK to check for Syncthing updates.\n" "Please, install this Windows update or disable update feature." msgstr "Uw Windows-versie ondersteunt de cryptografische standaarden niet die Syncthing-GTK nodig heeft om te controleren op Syncthing-updates.\nInstalleer deze Windows-update of schakel de update-functie uit." #: syncthing_gtk/app.py:486 msgid "Extracting update..." msgstr "Update uitpakken..." #: syncthing_gtk/app.py:491 msgid "Restarting daemon..." msgstr "Daemon opnieuw starten..." #: syncthing_gtk/app.py:507 #, python-format msgid "Failed to download upgrade: %s" msgstr "Downloaden van upgrade mislukt: %s" #: syncthing_gtk/app.py:525 #, python-format msgid "Downloading Syncthing %s" msgstr "Syncthing %s downloaden" #: syncthing_gtk/app.py:604 msgid "Connected to Syncthing daemon" msgstr "Verbonden met Syncthing-daemon" #: syncthing_gtk/app.py:614 msgid "Connection to Syncthing daemon lost." msgstr "Verbinding met Syncthing-daemon verbroken." #: syncthing_gtk/app.py:615 msgid "Syncthing is probably restarting or has been shut down." msgstr "Syncthing is waarschijnlijk opnieuw aan het starten of werd uitgeschakeld." #: syncthing_gtk/app.py:617 msgid "Syncthing has been shut down." msgstr "Syncthing werd uitgeschakeld." #: syncthing_gtk/app.py:621 syncthing_gtk/app.py:1499 msgid "Syncthing is restarting." msgstr "Syncthing is opnieuw aan het starten." #: syncthing_gtk/app.py:621 syncthing_gtk/app.py:1499 msgid "Please wait" msgstr "Even geduld" #: syncthing_gtk/app.py:644 #, python-format msgid "Connecting to Syncthing daemon at %s..." msgstr "Verbinding maken met Syncthing-daemon op %s..." #: syncthing_gtk/app.py:649 #, python-format msgid "Waiting for Syncthing daemon at %s..." msgstr "Wachten op Syncthing-daemon op %s..." #: syncthing_gtk/app.py:664 msgid "Your syncthing daemon is too old." msgstr "Uw syncthing-daemon is te oud." #: syncthing_gtk/app.py:664 msgid "Attempting to download recent, please wait..." msgstr "Proberen om recente versie te downloaden, even geduld..." #: syncthing_gtk/app.py:670 msgid "" "Cannot authorize with daemon. Please, use WebUI to generate API key or " "disable password authentication." msgstr "Kan niet autoriseren met daemon. Gebruik de webinterface om een API-sleutel aan te maken of schakel wachtwoordauthenticatie uit." #: syncthing_gtk/app.py:672 #, python-format msgid "" "Your syncthing daemon is too old.\n" "Please, upgrade syncthing package at least to version %s and try again." msgstr "Uw syncthing-daemon is te oud.\nWerk uw syncthing-pakket bij naar ten minste versie %s en probeer het opnieuw." #: syncthing_gtk/app.py:674 msgid "" "Sorry, connecting to HTTPS is not supported on this platform.\n" "Please, use WebUI to disable HTTPS try again." msgstr "Sorry, verbinden met HTTPS wordt niet ondersteund op dit platform.\nGebruik de webinterface om HTTPS uit te schakelen en probeer het opnieuw." #: syncthing_gtk/app.py:677 msgid "Connection to daemon failed. Check your configuration and try again." msgstr "Verbinding met daemon mislukt. Controleer uw configuratie en probeer het opnieuw." #: syncthing_gtk/app.py:678 syncthing_gtk/app.py:1992 #: syncthing_gtk/editordialog.py:314 msgid "Error message:" msgstr "Foutbericht:" #: syncthing_gtk/app.py:763 msgid "Possible cause: Is there another web server running on Syncthing port?" msgstr "Mogelijke reden: draait er een andere webserver op de Syncthing-poort?" #: syncthing_gtk/app.py:689 msgid "More info" msgstr "Meer info" #: syncthing_gtk/app.py:715 msgid "" "The configuration has been saved but not activated.\n" "Syncthing must restart to activate the new configuration." msgstr "De configuratie werd opgeslagen maar nog niet ingeschakeld.\nSyncthing moet opnieuw starten om de nieuwe configuratie in te schakelen." #: syncthing_gtk/app.py:717 msgid "_Restart" msgstr "Opnieuw sta_rten" #: syncthing_gtk/app.py:859 msgid "Incompatible" msgstr "Niet compatibel" #: syncthing_gtk/app.py:863 #, python-format msgid "" "Connecting to %s failed; the remote device speaks an older version of" " the protocol (%s) not compatible with this version" msgstr "Verbinden met %s mislukt; het extern apparaat gebruikt een oudere versie van het protocol (%s) die niet compatibel is met deze versie" #: syncthing_gtk/app.py:784 #, python-format msgid "%(device)s wants to share folder \"%(folder)s\". Add new folder?" msgstr "%(device)s wil map “%(folder)s” delen. Nieuwe map toevoegen?" #: syncthing_gtk/app.py:791 syncthing_gtk/app.py:813 msgid "_Add" msgstr "_Toevoegen" #: syncthing_gtk/app.py:806 #, python-format msgid "" "Device \"%(name)s\" (%(device)s) at IP \"%(ip)s\" wants to " "connect. Add new device?" msgstr "Apparaat “%(name)s” (%(device)s) op IP-adres “%(ip)s” wil verbinding maken. Nieuw apparaat toevoegen?" #: syncthing_gtk/app.py:814 msgid "_Ignore" msgstr "_Negeren" #: syncthing_gtk/app.py:832 msgid "RAM Utilization" msgstr "RAM-gebruik" #: syncthing_gtk/app.py:833 msgid "CPU Utilization" msgstr "CPU-gebruik" #: syncthing_gtk/app.py:834 syncthing_gtk/app.py:1353 msgid "Download Rate" msgstr "Downloadsnelheid" #: syncthing_gtk/app.py:835 syncthing_gtk/app.py:1354 msgid "Upload Rate" msgstr "Uploadsnelheid" #: syncthing_gtk/app.py:836 msgid "Announce Server" msgstr "Aankondigingsserver" #: syncthing_gtk/app.py:837 syncthing_gtk/app.py:1356 msgid "Version" msgstr "Versie" #: syncthing_gtk/app.py:860 syncthing_gtk/editordialog.py:394 msgid "disabled" msgstr "uitgeschakeld" #: syncthing_gtk/app.py:862 msgid "Online" msgstr "Online" #: syncthing_gtk/app.py:862 msgid "offline" msgstr "offline" #: syncthing_gtk/app.py:864 #, python-format msgid "%(online)s/%(total)s online" msgstr "%(online)s/%(total)s online" #: syncthing_gtk/app.py:891 syncthing_gtk/app.py:1357 #: syncthing_gtk/app.py:1382 msgid "Never" msgstr "Nooit" #: syncthing_gtk/app.py:899 syncthing_gtk/app.py:1691 #: syncthing_gtk/app.py:1692 msgid "Paused" msgstr "Gepauzeerd" #: syncthing_gtk/app.py:899 syncthing_gtk/app.py:924 syncthing_gtk/app.py:939 #: syncthing_gtk/infobox.py:60 msgid "Disconnected" msgstr "Verbinding verbroken" #: syncthing_gtk/app.py:916 msgid "Connected" msgstr "Verbonden" #: syncthing_gtk/app.py:945 syncthing_gtk/app.py:980 syncthing_gtk/app.py:1030 #: syncthing_gtk/app.py:1031 syncthing_gtk/app.py:1070 msgid "Up to Date" msgstr "Up-to-date" #: syncthing_gtk/app.py:966 syncthing_gtk/app.py:967 syncthing_gtk/app.py:968 msgid "Files" msgstr "Bestanden" #: syncthing_gtk/app.py:980 syncthing_gtk/app.py:1068 msgid "Cluster out of sync" msgstr "Cluster niet meer gesynchroniseerd" #: syncthing_gtk/app.py:995 msgid "Stopped" msgstr "Gestopt" #: syncthing_gtk/app.py:998 syncthing_gtk/app.py:1005 msgid "Error" msgstr "Fout" #: syncthing_gtk/app.py:1024 #, python-format msgid "Synchronizing '%s'" msgstr "‘%s’ synchroniseren" #: syncthing_gtk/app.py:1026 #, python-format msgid "Synchronizing %s folders" msgstr "%s mappen synchroniseren" #: syncthing_gtk/app.py:1035 syncthing_gtk/app.py:1036 msgid "All devices offline" msgstr "Alle apparaten offline" #: syncthing_gtk/app.py:1040 syncthing_gtk/app.py:1041 msgid "Connecting to Syncthing daemon..." msgstr "Verbinden met Syncthing-daemon..." #: syncthing_gtk/app.py:1079 msgid "Unshared" msgstr "Niet-gedeeld" #: syncthing_gtk/app.py:1082 msgid "Offline" msgstr "Offline" #: syncthing_gtk/app.py:1176 msgid "Hide Window" msgstr "Venster verbergen" #: syncthing_gtk/app.py:1190 app.glade:651 msgid "Show Window" msgstr "Venster weergeven" #: syncthing_gtk/app.py:1239 msgid "Syncthing daemon doesn't appear to be running." msgstr "Het lijkt erop dat de Syncthing-daemon niet draait." #: syncthing_gtk/app.py:1240 msgid "Start it now?" msgstr "Nu starten?" #: syncthing_gtk/app.py:1243 msgid "Always start daemon automatically" msgstr "Daemon altijd automatisch starten" #: syncthing_gtk/app.py:1292 msgid "Folder ID" msgstr "Map-ID" #: syncthing_gtk/app.py:1293 msgid "Path" msgstr "Pad" #: syncthing_gtk/app.py:1294 msgid "Global State" msgstr "Globale status" #: syncthing_gtk/app.py:1295 msgid "Local State" msgstr "Lokale status" #: syncthing_gtk/app.py:1296 msgid "Out Of Sync" msgstr "Niet gesynchroniseerd" #: syncthing_gtk/app.py:1297 msgid "Folder Type" msgstr "Maptype" #: syncthing_gtk/app.py:1298 msgid "Ignore Permissions" msgstr "Machtigingen negeren" #: syncthing_gtk/app.py:1299 msgid "Rescan Interval" msgstr "Interval voor opnieuw scannen" #: syncthing_gtk/app.py:1300 msgid "Shared With" msgstr "Gedeeld met" #: syncthing_gtk/app.py:1324 syncthing_gtk/app.py:1325 #: syncthing_gtk/app.py:1381 msgid "Yes" msgstr "Ja" #: syncthing_gtk/app.py:1324 syncthing_gtk/app.py:1325 #: syncthing_gtk/app.py:1381 msgid "No" msgstr "Nee" #: syncthing_gtk/app.py:1327 msgid "(watch)" msgstr "(opvolgen)" #: syncthing_gtk/app.py:1341 msgid "Unused" msgstr "Ongebruikt" #: syncthing_gtk/app.py:1350 msgid "Address" msgstr "Adres" #: syncthing_gtk/app.py:1351 msgid "Synchronization" msgstr "Synchronisatie" #: syncthing_gtk/app.py:1352 msgid "Compression" msgstr "Compressie" #: syncthing_gtk/app.py:1355 msgid "Introducer" msgstr "Introductie-apparaat" #: syncthing_gtk/app.py:1357 msgid "Last Seen" msgstr "Laatst gezien" #: syncthing_gtk/app.py:1378 device-edit.glade:22 msgid "All Data" msgstr "Alle gegevens" #: syncthing_gtk/app.py:1379 device-edit.glade:26 folder-edit.glade:78 msgid "Off" msgstr "Uit" #: syncthing_gtk/app.py:1375 msgid "Send Only" msgstr "Alleen verzenden" #: syncthing_gtk/app.py:1375 msgid "Send & Receive" msgstr "Verzenden en ontvangen" #: syncthing_gtk/app.py:1447 msgid "Receive Only" msgstr "Alleen ontvangen" #: syncthing_gtk/app.py:1380 device-edit.glade:30 msgid "Metadata Only" msgstr "Alleen metadata" #: syncthing_gtk/app.py:1522 msgid "Exiting." msgstr "Afsluiten." #: syncthing_gtk/app.py:1523 msgid "Shutdown Syncthing daemon as well?" msgstr "Syncthing-daemon ook afsluiten?" #: syncthing_gtk/app.py:1528 msgid "Always do same; Don't show this window again" msgstr "Altijd hetzelfde doen; dit venster niet opnieuw weergeven" #: syncthing_gtk/app.py:1768 #, python-format msgid "Do you really want to permanently stop synchronizing directory '%s'?" msgstr "Wilt u het synchroniseren van map ‘%s’ echt permanent stoppen?" #: syncthing_gtk/app.py:1770 #, python-format msgid "Do you really want remove device '%s' from Syncthing?" msgstr "Wilt u apparaat ‘%s’ echt verwijderen uit Syncthing?" #: syncthing_gtk/app.py:1991 msgid "Failed to start Syncthing daemon." msgstr "Starten van Syncthing-daemon mislukt." #: syncthing_gtk/app.py:1993 msgid "" "Please, check your installation or set new path to Syncthing daemon binary." msgstr "Controleer uw installatie of stel een nieuw pad in naar de Syncthing-daemon-binary." #: syncthing_gtk/daemonsettings.py:24 msgid "Syncthing Daemon Settings" msgstr "Syncthing-daemon-instellingen" #: syncthing_gtk/deviceeditor.py:24 msgid "" "The entered device ID does not look valid. It should be a 52 character " "string consisting of letters and numbers, with spaces and dashes being " "optional." msgstr "De opgegeven apparaat-ID ziet er niet goed uit. Het moet een reeks van 52 of 56 tekens zijn, bestaande uit letters en cijfers, waarbij spaties en streepjes optioneel zijn." #: syncthing_gtk/editordialog.py:312 msgid "Failed to load configuration from daemon." msgstr "Laden van configuratie uit daemon mislukt." #: syncthing_gtk/editordialog.py:313 msgid "Try again." msgstr "Probeer het opnieuw." #: syncthing_gtk/editordialog.py:387 syncthing_gtk/editordialog.py:396 #, python-format msgid "%ss" msgstr "%ss" #: syncthing_gtk/editordialog.py:402 #, python-format msgid "%s%%" msgstr "%s%%" #: syncthing_gtk/editordialog.py:409 msgid "no limit" msgstr "geen begrenzing" #: syncthing_gtk/editordialog.py:411 #, python-format msgid "%s KiB/s" msgstr "%s KiB/s" #: syncthing_gtk/editordialog.py:418 msgid "never delete" msgstr "nooit verwijderen" #: syncthing_gtk/editordialog.py:420 #, python-format msgid "%s day" msgstr "%s dag" #: syncthing_gtk/editordialog.py:422 #, python-format msgid "%s days" msgstr "%s dagen" #: syncthing_gtk/editordialog.py:455 msgid "Failed to save configuration." msgstr "Opslaan van configuratie mislukt." #: syncthing_gtk/finddaemondialog.py:24 find-daemon.glade:7 msgid "Can't invoke the daemon" msgstr "Kan de daemon niet oproepen" #: syncthing_gtk/finddaemondialog.py:26 msgid "Syncthing binary" msgstr "Syncthing-binary" #: syncthing_gtk/finddaemondialog.py:28 syncthing_gtk/finddaemondialog.py:37 msgid "Syncthing daemon binary cannot be found." msgstr "Syncthing-daemon-binary kan niet gevonden worden." #: syncthing_gtk/finddaemondialog.py:29 #, python-format msgid "" "If you have Syncthing installed, please, set path to %s below or click on " "Download button to download latest Syncthing package." msgstr "Als u Syncthing al geïnstalleerd heeft, stel dan het pad naar %s hieronder in of klik op de knop downloaden om het meest recente Syncthing-pakket te downloaden." #: syncthing_gtk/finddaemondialog.py:38 #, python-format msgid "If you have Syncthing installed, please, set path to %s below" msgstr "Als u Syncthing al geïnstalleerd heeft, stel dan het pad naar %s hieronder in" #: syncthing_gtk/finddaemondialog.py:82 syncthing_gtk/wizard.py:411 msgid "Cannot download Syncthing daemon." msgstr "Kan Syncthing-daemon niet downloaden." #: syncthing_gtk/finddaemondialog.py:83 syncthing_gtk/wizard.py:412 #, python-format msgid "This platform (%s) is not supported" msgstr "Dit platform (%s) wordt niet ondersteund" #: syncthing_gtk/finddaemondialog.py:100 msgid "Downloading..." msgstr "Downloaden..." #: syncthing_gtk/finddaemondialog.py:163 syncthing_gtk/stdownloader.py:251 #: syncthing_gtk/stdownloader.py:279 msgid "Download failed." msgstr "Downloaden mislukt." #: syncthing_gtk/finddaemondialog.py:185 syncthing_gtk/wizard.py:458 msgid "Download finished." msgstr "Downloaden voltooid." #: syncthing_gtk/foldereditor.py:45 msgid "Select Folder for new Folder" msgstr "Map kiezen voor nieuwe map" #: syncthing_gtk/ignoreeditor.py:44 msgid "File location:" msgstr "Bestandslocatie:" #: syncthing_gtk/notifications.py:120 #, python-format msgid "Unexpected folder ID sent from device \"%s\"." msgstr "Onverwachte map-ID verzonden van apparaat “%s”." #: syncthing_gtk/notifications.py:124 #, python-format msgid "Device \"%s\" is trying to connect to syncthing daemon." msgstr "Apparaat “%s” probeert verbinding te maken met de Syncthing-daemon." #: syncthing_gtk/notifications.py:153 #, python-format msgid "Synchronization of folder '%s' is completed." msgstr "Synchronisatie van map ‘%s’ is voltooid." #: syncthing_gtk/notifications.py:114 syncthing_gtk/notifications.py:115 #, python-format msgid "Accept device \"%s\"" msgstr "Apparaat \"%s\" accepteren" #: syncthing_gtk/notifications.py:116 #, python-format msgid "Ignore device \"%s\"" msgstr "Apparaat \"%s\" negeren" #: syncthing_gtk/notifications.py:118 msgid "Unknown Device" msgstr "Onbekend apparaat" #: syncthing_gtk/notifications.py:161 syncthing_gtk/notifications.py:162 #, python-format msgid "Accept folder \"%s\"" msgstr "Map \"%s\" accepteren" #: syncthing_gtk/notifications.py:163 #, python-format msgid "Ignore folder \"%s\"" msgstr "Map \"%s\" negeren" #: syncthing_gtk/notifications.py:173 msgid "Folder rejected" msgstr "Map geweigerd" #: syncthing_gtk/notifications.py:174 #, python-format msgid "Unexpected folder \"%(folder)s\" sent from device \"%(device)s\"." msgstr "Onverwachte map in \"%(folder)s\" verzonden van apparaat \"%(device)s\"." #: syncthing_gtk/notifications.py:207 #, python-format msgid "Completed synchronization in \"%s\"" msgstr "Synchronisatie in \"%s\" voltooid" #: syncthing_gtk/notifications.py:209 #, python-format msgid "Updates in folder \"%s\"" msgstr "Updates in map \"%s\"" #: syncthing_gtk/notifications.py:160 #, python-format msgid "%(hostname)s: Downloaded '%(filename)s' to reflect remote changes." msgstr "%(hostname)s: ‘%(filename)s’ gedownload om wijzigingen op afstand te weerspiegelen." #: syncthing_gtk/notifications.py:165 #, python-format msgid "%(hostname)s: Deleted '%(filename)s' to reflect remote changes." msgstr "%(hostname)s: ‘%(filename)s’ verwijderd om wijzigingen op afstand te weerspiegelen." #: syncthing_gtk/notifications.py:168 #, python-format msgid "%(hostname)s: Downloaded %(updated)s files to reflect remote changes." msgstr "%(hostname)s: %(updated)s bestanden gedownload om wijzigingen op afstand te weerspiegelen." #: syncthing_gtk/notifications.py:171 #, python-format msgid "%(hostname)s: Deleted %(deleted)s files to reflect remote changes." msgstr "%(hostname)s: %(deleted)s bestanden verwijderd om wijzigingen op afstand te weerspiegelen." #: syncthing_gtk/notifications.py:175 #, python-format msgid "" "%(hostname)s: downloaded %(updated)s files and deleted %(deleted)s files to " "reflect remote changes." msgstr "%(hostname)s: %(updated)s bestanden gedownload en %(deleted)s verwijderd om wijzigingen op afstand te weerspiegelen." #: syncthing_gtk/notifications.py:256 #, python-format msgid "Conflicting file in \"%s\"" msgstr "Conflicterend bestand in \"%s\"" #: syncthing_gtk/notifications.py:257 #, python-format msgid "Conflict in path \"%s\" detected." msgstr "Conflict gedetecteerd in pad \"%s\"." #: syncthing_gtk/notifications.py:261 msgid "Open Conflicting file in filemanager" msgstr "Conflicterend bestand openen in bestandbeheerder" #: syncthing_gtk/notifications.py:337 msgid "An error occurred in Syncthing!" msgstr "Er trad een fout op in Syncthing!" #: syncthing_gtk/statusicon.py:48 msgid "Syncthing" msgstr "Syncthing" #: syncthing_gtk/stdownloader.py:174 syncthing_gtk/stdownloader.py:217 #: syncthing_gtk/stdownloader.py:313 syncthing_gtk/stdownloader.py:344 msgid "Failed to determine latest Syncthing version." msgstr "Bepalen van meest recente Syncthing-versie mislukt." #: syncthing_gtk/stdownloader.py:236 msgid "Failed to create temporary file." msgstr "Aanmaken van tijdelijk bestand mislukt." #: syncthing_gtk/stdownloader.py:294 msgid "Downloaded file is corrupted." msgstr "Gedownload bestand is beschadigd." #: syncthing_gtk/tools.py:192 #, python-format msgid "~%s hours ago" msgstr "~%s uur geleden" #: syncthing_gtk/tools.py:194 #, python-format msgid "%s minutes ago" msgstr "%s minuten geleden" #: syncthing_gtk/tools.py:196 #, python-format msgid "%s seconds ago" msgstr "%s seconden geleden" #: syncthing_gtk/tools.py:197 msgid "just now" msgstr "zojuist" #: syncthing_gtk/tools.py:199 #, python-format msgid "%s days ago" msgstr "%s dagen geleden" #: syncthing_gtk/tools.py:203 #, python-format msgid "in %s days" msgstr "over %s dagen" #: syncthing_gtk/tools.py:205 #, python-format msgid "~%s hours from now" msgstr "over ~%s uur" #: syncthing_gtk/tools.py:207 #, python-format msgid "%s minutes from now" msgstr "over %s minuten" #: syncthing_gtk/tools.py:209 #, python-format msgid "%s seconds from now" msgstr "over %s seconden" #: syncthing_gtk/tools.py:210 msgid "in a moment" msgstr "zometeen" #: syncthing_gtk/uisettingsdialog.py:58 msgid "UI Settings" msgstr "UI-instellingen" #: syncthing_gtk/uisettingsdialog.py:70 msgid "Unlimited" msgstr "Onbegrensd" #: syncthing_gtk/uisettingsdialog.py:107 #, python-format msgid "Install %(package)s package to enable %(feature)s support" msgstr "Installeer pakket %(package)s om ondersteuning voor %(feature)s in te schakelen" #: syncthing_gtk/uisettingsdialog.py:312 msgid "Browse for Syncthing binary" msgstr "Bladeren naar de Syncthing-binary" #: syncthing_gtk/wizard.py:53 msgid "First run wizard" msgstr "Eerste-start-wizard" #: syncthing_gtk/wizard.py:137 #, python-format msgid "Please, check error log and fill bug report on %s." msgstr "Controleer het foutlog en meld de fout op %s." #: syncthing_gtk/wizard.py:141 msgid "Display error log" msgstr "Foutlog weergeven" #: syncthing_gtk/wizard.py:215 msgid "Next" msgstr "Volgende" #: syncthing_gtk/wizard.py:224 msgid "" "Continue this wizard to create a Syncthing configuration file or abort it to" " exit." msgstr "Ga door met deze wizard om een Syncthing-configuratiebestand aan te maken of annuleer om af te sluiten." #: syncthing_gtk/wizard.py:198 msgid "Welcome to Syncthing-GTK first run wizard!" msgstr "Welkom bij de eerste-start-wizard van Syncthing-GTK!" #: syncthing_gtk/wizard.py:200 msgid "It looks like you never have used Syncthing." msgstr "Het lijkt erop dat u Syncthing nog nooit gebruikt heeft." #: syncthing_gtk/wizard.py:201 msgid "Initial configuration should be created." msgstr "Een initiële configuratie moet aangemaakt worden." #: syncthing_gtk/wizard.py:204 #, python-format msgid "" "If you already had Syncthing daemon configured, please, exit this wizard and" " check your %s folder" msgstr "Als u Syncthing-daemon al geconfigureerd heeft, verlaat dan deze eerste hulp en controleer uw ‘%s’-map." #: syncthing_gtk/wizard.py:220 msgid "Searching for Syncthing daemon." msgstr "Zoeken naar Syncthing-daemon." #: syncthing_gtk/wizard.py:222 syncthing_gtk/wizard.py:394 msgid "Please wait..." msgstr "Even geduld..." #: syncthing_gtk/wizard.py:270 syncthing_gtk/wizard.py:287 msgid "Syncthing daemon not found." msgstr "Syncthing-daemon niet gevonden." #: syncthing_gtk/wizard.py:271 msgid "Please, use package manager to install the Syncthing package." msgstr "Gebruik uw pakketbeheerder om het Syncthing-pakket te installeren." #: syncthing_gtk/wizard.py:283 msgid "download latest binary" msgstr "laatste binary downloaden" #: syncthing_gtk/wizard.py:288 syncthing_gtk/wizard.py:302 #, python-format msgid "" "Please, use package manager to install the Syncthing package or " "%(download_link)s from Syncthing page and save it to your %(target)s " "directory." msgstr "Gebruik uw pakketbeheerder om het Syncthing-pakket of %(download_link)s van de Syncthing-pagina te installeren en sla het op in uw ‘%(target)s’-map." #: syncthing_gtk/wizard.py:296 msgid "Syncthing daemon is too old." msgstr "Syncthing-daemon is te oud." #: syncthing_gtk/wizard.py:297 #, python-format msgid "" "Syncthing-GTK needs Syncthing daemon %(min)s or newer, but only %(actual)s " "were found." msgstr "Syncthing-GTK heeft Syncthing-daemon %(min)s of later nodig, maar enkel %(actual)s werd gevonden." #: syncthing_gtk/wizard.py:309 msgid "Alternatively, Syncthing-GTK can download Syncthing binary" msgstr "Als alternatief kan Syncthing-GTK de Syncthing-binary downloaden" #: syncthing_gtk/wizard.py:310 #, python-format msgid "to %s and keep it up-to-date, but this option is meant as" msgstr "in %s en deze up-to-date houden, maar deze optie is bedoeld als" #: syncthing_gtk/wizard.py:312 msgid "last resort and generally not suggested." msgstr "laatste redmiddel en wordt niet aanbevolen." #: syncthing_gtk/wizard.py:315 msgid "_Download Syncthing binary" msgstr "Syncthing-binary _downloaden" #: syncthing_gtk/wizard.py:319 msgid "Auto_update downloaded binary" msgstr "Gedownloade binary automatisch _bijwerken" #: syncthing_gtk/wizard.py:375 msgid "Syncthing daemon binary found." msgstr "Syncthing-daemon-binary teruggevonden." #: syncthing_gtk/wizard.py:377 syncthing_gtk/wizard.py:460 msgid "Binary path:" msgstr "Pad naar binary:" #: syncthing_gtk/wizard.py:378 msgid "Version:" msgstr "Versie:" #: syncthing_gtk/wizard.py:393 msgid "Downloading Syncthing daemon." msgstr "Syncthing-daemon wordt gedownload." #: syncthing_gtk/wizard.py:441 msgid "Failed to download Syncthing daemon package." msgstr "Downloaden van Syncthing-daemon-pakket mislukt." #: syncthing_gtk/wizard.py:472 msgid "Syncthing is generating RSA key and certificate." msgstr "Syncthing is een RSA-sleutel en -certificaat aan het aanmaken." #: syncthing_gtk/wizard.py:473 msgid "This may take a while..." msgstr "Dit kan even duren..." #: syncthing_gtk/wizard.py:515 msgid "Failed to generate keys" msgstr "Aanmaken van sleutels mislukt" #: syncthing_gtk/wizard.py:516 msgid "Syncthing daemon failed to generate RSA key or certificate." msgstr "Syncthing-daemon kon geen RSA-sleutel of -certificaat aanmaken." #: syncthing_gtk/wizard.py:526 msgid "WebUI setup" msgstr "WebUI-instelling" #: syncthing_gtk/wizard.py:528 msgid "" "Syncthing can be managed remotely using WebUI and even if you are going to " "use Syncthing-GTK, WebUI needs to be enabled, as Syncthing-GTK uses it to " "communicate with the Syncthing daemon." msgstr "Syncthing kan beheerd worden op afstand via de webinterface. Ook als u Syncthing-GTK wilt gebruiken moet de webinterface ingeschakeld zijn, omdat Syncthing-GTK deze gebruikt om te communiceren met de Syncthing-daemon." #: syncthing_gtk/wizard.py:533 msgid "" "If you prefer to be able to manage Syncthing remotely, over the internet or " "on your local network, select listen on all interfaces and set " "username and password to protect Syncthing from unauthorized access." msgstr "Als u verkiest om Syncthing van op afstand over het internet of op uw lokale netwerk te beheren, selecteer dan luisteren op alle interfaces en stel een gebruikersnaam en wachtwoord in om Syncthing te beschermen tegen niet-geautoriseerde toegang." #: syncthing_gtk/wizard.py:538 msgid "" "Otherwise, select listen on localhost, so only users and programs on " "this computer will be able to interact with Syncthing." msgstr "Anders selecteert u luisteren op localhost zodat alleen gebruikers en programma's op deze computer kunnen werken met Syncthing" #: syncthing_gtk/wizard.py:544 msgid "WebUI Listen Addresses" msgstr "WebUI-luisteradressen" #: syncthing_gtk/wizard.py:545 msgid "Listen on _localhost" msgstr "Luisteren op _localhost" #: syncthing_gtk/wizard.py:547 msgid "Listen on _all interfaces" msgstr "Luisteren op _alle interfaces" #: syncthing_gtk/wizard.py:554 msgid "_Username" msgstr "Gebr_uikersnaam" #: syncthing_gtk/wizard.py:555 msgid "_Password" msgstr "_Wachtwoord" #: syncthing_gtk/wizard.py:609 msgid "Saving settings..." msgstr "Instellingen opslaan..." #: syncthing_gtk/wizard.py:610 msgid "Checking for available port..." msgstr "Controleren op beschikbare poort..." #: syncthing_gtk/wizard.py:631 msgid "Failed to find unused port for listening." msgstr "Kon geen ongebruikte poort vinden voor luisteren." #: syncthing_gtk/wizard.py:632 msgid "Please, check your firewall settings and try again." msgstr "Controleer de instellingen van uw firewall en probeer het opnieuw." #: syncthing_gtk/wizard.py:646 msgid "Saving..." msgstr "Opslaan..." #: syncthing_gtk/wizard.py:678 msgid "Failed to load Syncthing configuration" msgstr "Laden van Syncthing-configuratie mislukt" #: syncthing_gtk/wizard.py:705 msgid "Failed to modify Syncthing configuration" msgstr "Wijzigen van Syncthing-configuratie mislukt" #: syncthing_gtk/wizard.py:715 msgid "Failed to save Syncthing configuration" msgstr "Opslaan van Syncthing-configuratie mislukt" #: syncthing_gtk/wizard.py:729 msgid "Done." msgstr "Klaar." #: syncthing_gtk/wizard.py:731 msgid "Syncthing has been successfully configured." msgstr "Syncthing is geconfigureerd." #: syncthing_gtk/wizard.py:733 msgid "" "You can configure more details later, in UI Settings and Daemon " "Settings menus in main window of application." msgstr "U kunt later meer details configureren in de menu's UI-instellingen en daemon-instellingen in het hoofdvenster van de toepassing." #: about.glade:7 msgid "About Syncthing-GTK" msgstr "Over Syncthing-GTK" #: about.glade:10 msgid "GUI and notification area icon for Syncthing" msgstr "GUI en systeemvakpictogram voor Syncthing" #: app.glade:239 app.glade:420 app.glade:802 msgid "Open _Web Interface" msgstr "_Webinterface openen" #: app.glade:251 app.glade:424 app.glade:814 msgid "Display _Daemon Output" msgstr "_Daemon-uitvoer weergeven" #: app.glade:280 app.glade:430 msgid "UI _Settings" msgstr "UI-in_stellingen" #: app.glade:325 app.glade:451 msgid "Add Shared _Folder" msgstr "Gedeelde ma_p toevoegen" #: app.glade:338 app.glade:455 msgid "Add _Device" msgstr "_Apparaat toevoegen" #: app.glade:356 app.glade:461 msgid "Daemon _Settings" msgstr "Daemon-in_stellingen" #: app.glade:371 app.glade:465 app.glade:588 app.glade:788 msgid "Show _ID" msgstr "_ID weergeven" #: app.glade:391 app.glade:471 msgid "Sh_utdown Daemon" msgstr "Daemon _uitschakelen" #: app.glade:404 app.glade:475 msgid "_Restart Daemon" msgstr "Daemon opnieuw sta_rten" #: app.glade:436 msgid "_About" msgstr "_Over" #: app.glade:440 msgid "_Quit" msgstr "_Afsluiten" #: app.glade:490 msgid "Override Remote Changes" msgstr "Externe wijzigingen overschrijven" #: app.glade:519 msgid "Edit _Ignore Patterns" msgstr "Negeer_patronen bewerken" #: app.glade:547 msgid "_Rescan" msgstr "_Opnieuw scannen" #: app.glade:559 msgid "_Browse" msgstr "_Bladeren" #: app.glade:611 msgid "Resume" msgstr "Hervatten" #: app.glade:641 msgid "Connecting to daemon..." msgstr "Verbinding maken met daemon..." #: app.glade:669 msgid "S_top Syncthing" msgstr "Syncthing s_toppen" #: app.glade:683 msgid "Resume Sync_thing" msgstr "Syncthing herva_tten" #: app.glade:695 daemon-settings.glade:335 msgid "_Incoming Rate Limit" msgstr "Begrenzing _downloadsnelheid" #: app.glade:709 app.glade:751 msgid "_Unlimited" msgstr "_Onbegrensd" #: app.glade:718 app.glade:760 msgid "_Other" msgstr "_Andere" #: app.glade:737 msgid "_Outgoing Rate Limit" msgstr "Begrenzing upl_oadsnelheid" #: daemon-output.glade:7 msgid "Daemon Output" msgstr "Daemon-uitvoer" #: daemon-settings.glade:106 msgid "Sync Protocol Listen Addresses" msgstr "Synchronisatieprotocol-luisteradressen" #: daemon-settings.glade:136 msgid "Enable Local _Discovery" msgstr "Lokale ont_dekking inschakelen" #: daemon-settings.glade:153 msgid "Enable _UPnP" msgstr "_UPnP inschakelen" #: daemon-settings.glade:171 msgid "Local Discovery _Port" msgstr "Lokale ontdekkings_poort" #: daemon-settings.glade:212 msgid "Outgoing _Rate Limit" msgstr "Beg_renzing uploadsnelheid" #: daemon-settings.glade:229 msgid "Open browser with _WebUI when daemon is starting" msgstr "Browser met _webinterface openen bij starten van daemon" #: daemon-settings.glade:246 msgid "Enable _Anonymous Usage Reporting" msgstr "_Anonieme gebruiksrapportage inschakelen" #: daemon-settings.glade:262 msgid "Enable _Global Discovery" msgstr "_Globale ontdekking inschakelen" #: daemon-settings.glade:281 msgid "Global Discovery _Servers" msgstr "Globale ontdekkings_servers" #: device-edit.glade:102 msgid "Device _ID" msgstr "Apparaat-_ID" #: device-edit.glade:134 msgid "Device _Name" msgstr "_Naam apparaat" #: device-edit.glade:166 msgid "Shown instead of Device ID in the cluster status." msgstr "Weergegeven in plaats van apparaat-ID in de clusterstatus" #: device-edit.glade:181 msgid "_Addresses" msgstr "_Adressen" #: device-edit.glade:213 msgid "" "Enter comma separated \"ip:port\" addresses or \"dynamic\" to perform " "automatic discovery of the address." msgstr "Door komma's gescheiden \"ip:poort\"-adressen opgeven of \"dynamic\" om automatische ontdekking van het adres uit te voeren." #: device-edit.glade:242 msgid "Share _Folders" msgstr "_Mappen delen" #: device-edit.glade:276 msgid "Select the folders to share with this device" msgstr "Selecteer de mappen die met dit apparaat gedeeld moeten worden" #: device-edit.glade:287 msgid "_Introducer" msgstr "_Introductie-apparaat" #: device-edit.glade:308 msgid "" "Any devices configured on an introducer device will be added to this device " "as well." msgstr "Alle apparaten geconfigureerd op een introductie-apparaat zullen ook aan dit apparaat toegevoegd worden." #: device-edit.glade:323 msgid "_Compression" msgstr "_Compressie" #: device-id.glade:14 msgid "Device Identification" msgstr "Apparaatidentificatie" #: device-id.glade:68 msgid "XYZ-123-ABC" msgstr "XYZ-123-ABC" #: find-daemon.glade:126 ui-settings.glade:821 msgid "_Browse..." msgstr "_Bladeren..." #: find-daemon.glade:179 msgid "_Download..." msgstr "_Downloaden..." #: folder-edit.glade:44 msgctxt "In File Pull Order combobox" msgid "Random" msgstr "Willekeurig" #: folder-edit.glade:48 msgctxt "In File Pull Order combobox" msgid "Alphabetic" msgstr "Alfabetisch" #: folder-edit.glade:52 msgctxt "In File Pull Order combobox" msgid "Smallest First" msgstr "Kleinste eerst" #: folder-edit.glade:56 msgctxt "In File Pull Order combobox" msgid "Largest First" msgstr "Grootste eerst" #: folder-edit.glade:60 msgctxt "In File Pull Order combobox" msgid "Oldest First" msgstr "Oudste eerst" #: folder-edit.glade:64 msgctxt "In File Pull Order combobox" msgid "Newest First" msgstr "Nieuwste eerst" #: folder-edit.glade:82 msgid "Simple" msgstr "Eenvoudig" #: folder-edit.glade:86 msgid "Staggered" msgstr "Gespreid" #: folder-edit.glade:90 msgid "Trashcan" msgstr "Prullenbak" #: folder-edit.glade:94 msgid "External" msgstr "Extern" #: folder-edit.glade:171 msgid "Folder _Label" msgstr "Map_label" #: folder-edit.glade:190 msgid "Generate Random" msgstr "Willekeurig genereren" #: folder-edit.glade:202 msgid "Short identifier for the folder. Must be the same on all devices." msgstr "Korte identificatiecode voor de map. Moet hetzelfde zijn op alle apparaten." #: folder-edit.glade:216 msgid "_Path" msgstr "_Pad" #: folder-edit.glade:234 msgid "" "Path to the folder on the local computer. Will be created if it does not " "exist." msgstr "Pad naar de map op de lokale computer. Wordt aangemaakt als het nog niet bestaat." #: folder-edit.glade:248 msgid "Rescan _Interval" msgstr "_Interval voor opnieuw scannen" #: folder-edit.glade:293 msgid "Monitor filesystem for _changes" msgstr "Bestandssysteem monitoren voor _wijzigingen" #: folder-edit.glade:343 msgid "Browse..." msgstr "Bladeren..." #: folder-edit.glade:366 msgid "Folder _ID" msgstr "Map-_ID" #: folder-edit.glade:396 msgid "" "Optional descriptive label for the folder. Can be different on each device." msgstr "Optioneel beschrijvend label voor de map. Kan op elk apparaat verschillend zijn." #: folder-edit.glade:418 msgid "_Send Only Folder" msgstr "Map enkel ver_zenden" #: folder-edit.glade:439 msgid "" "Files are protected from changes made on other devices, but changes made on " "this device will be sent to the rest of the cluster." msgstr "Bestanden zijn beschermd tegen wijzigingen die op andere apparaten gemaakt zijn, maar wijzigingen die op dit apparaat gemaakt zijn, worden naar de rest van de cluster verzonden." #: folder-edit.glade:453 msgid "_Receive Only Folder" msgstr "Map enkel ontvangen" #: folder-edit.glade:474 msgid "" "Changes from other devices are applied to files on this device, but changes " "made on this device are not sent to the rest of the cluster.\n" msgstr "Wijzigingen van andere apparaten worden toegepast op bestanden op dit apparaat, maar wijzigingen gemaakt op dit apparaat worden niet verzonden naar de rest van de cluster.\n" #: folder-edit.glade:456 msgid "_Folder Settings" msgstr "_Mapinstellingen" #: folder-edit.glade:476 msgid "Select the devices to share this folder with." msgstr "Selecteer de apparaten om deze map mee te delen." #: folder-edit.glade:514 msgid "Share With _Devices" msgstr "_Delen met apparaten" #: folder-edit.glade:535 msgid "Versioning _Mode" msgstr "Versiebeheer-modus" #: folder-edit.glade:590 msgid "" "Files are moved to date stamped versions in a .stversions folder when " "replaced or deleted by syncthing." msgstr "Bestanden worden verplaatst naar versies met tijdsaanduiding in een .stversions-map wanneer ze vervangen of verwijderd zijn door Syncthing." #: folder-edit.glade:605 msgid "_Keep Versions" msgstr "Versies _behouden" #: folder-edit.glade:642 msgid "The number of old versions to keep, per file." msgstr "Het aantal te bewaren oude versies, per bestand." #: folder-edit.glade:671 msgid "" "Files are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing. Versions are automatically deleted if they are older than the maximum age or exceed the number of files allowed in an interval.\n" "\n" "The following intervals are used: for the first hour a version is kept every 30 seconds, for the first day a version is kept every hour, for the first 30 days a version is kept every day, until the maximum age a version is kept every week." msgstr "Bestanden worden verplaatst naar versies met tijdsaanduiding in een .stversions-map wanneer ze vervangen of verwijderd zijn door Syncthing. Versies worden automatisch verwijderd als deze ouder zijn dan de maximale leeftijd of als ze het maximaal aantal toegestane bestanden in een interval overschrijden.\n\nDe volgende intervallen worden gebruikt: het eerste uur worden versies iedere 30 seconden bewaard, de eerste dag worden versies ieder uur bewaard, de eerste 30 dagen worden versies iedere dag bewaard, tot de maximale leeftijd worden versies iedere week bewaard." #: folder-edit.glade:688 msgid "Ma_ximum Age" msgstr "Ma_ximale leeftijd" #: folder-edit.glade:727 msgid "Versions _Path" msgstr "_Pad voor versies" #: folder-edit.glade:759 msgid "" "Path where versions should be stored (leave empty for the default " ".stversions folder)." msgstr "Pad waar versies opgeslagen moeten worden (leeg laten voor de standaard .stversions-map)." #: folder-edit.glade:787 msgid "" "Files are moved to .stversions folder when replaced or deleted by Syncthing" msgstr "Bestanden worden verplaatst naar de .stversions-map wanneer ze vervangen of verwijderd zijn door Syncthing." #: folder-edit.glade:801 msgid "Clean out _after" msgstr "Opruimen na" #: folder-edit.glade:840 msgid "The number of days to keep files in the trash can." msgstr "Het aantal dagen om bestanden in de prullenbak te bewaren. " #: folder-edit.glade:869 msgid "" "An external command handles the versioning. It has to remove the file from " "the synced folder." msgstr "Een externe opdracht regelt het versiebeheer. Hij moet het bestand verwijderen uit de gesynchroniseerde map." #: folder-edit.glade:884 msgid "Command" msgstr "Opdracht" #: folder-edit.glade:917 msgid "" "The first command line parameter is the folder path and the second parameter" " is the relative path in the folder." msgstr "De eerste opdrachtregelparameter is het pad naar de map en de tweede parameter is het relatieve pad binnen de map." #: folder-edit.glade:953 msgid "File _Versioning" msgstr "Versiebeheer" #: folder-edit.glade:982 msgid "Ignore P_ermissions" msgstr "Machtigingen negeren" #: folder-edit.glade:1003 msgid "" "File permission bits are ignored when looking for changes. Use on FAT " "filesystems." msgstr "Bits voor bestandsmachtigingen worden genegeerd bij het zoeken naar wijzigingen. Gebruik voor FAT-bestandssystemen." #: folder-edit.glade:1018 msgid "Minimum Free Disk Space" msgstr "Minimale vrije schijfruimte" #: folder-edit.glade:1057 msgid "File Pull _Order" msgstr "Volgorde voor binnenhalen van bestanden" #: folder-edit.glade:1103 ui-settings.glade:954 msgid "_Advanced" msgstr "Ge_avanceerd" #: ignore-editor.glade:8 msgid "Ignore Patterns" msgstr "Negeerpatronen" #: ignore-editor.glade:99 msgid "" "See Syncthing " "documentation for list of supported patterns" msgstr "Lees de Syncthing-documentatie voor een lijst van ondersteunde patronen" #: ignore-editor.glade:114 msgid "File location: " msgstr "Bestandslocatie:" #: ui-settings.glade:27 msgid "Lowest" msgstr "Laagst" #: ui-settings.glade:31 msgid "Low" msgstr "Laag" #: ui-settings.glade:35 msgid "Normal" msgstr "Normaal" #: ui-settings.glade:39 msgid "Above Normal" msgstr "Boven normaal" #: ui-settings.glade:46 msgid "Syncthing-GTK Settings" msgstr "Syncthing-GTK-instellingen" #: ui-settings.glade:27 msgid "Default" msgstr "Standaard" #: ui-settings.glade:35 msgid "White" msgstr "Wit" #: ui-settings.glade:31 msgid "Black" msgstr "Zwart" #: ui-settings.glade:69 msgid "Please, restart Syncthing-GTK to apply all changed settings" msgstr "Start Syncthing-GTK opnieuw om alle gewijzigde instellingen toe te passen" #: ui-settings.glade:136 msgid "When starting and Syncthing daemon is not running..." msgstr "Als bij het opstarten de Syncthing-daemon niet actief is..." #: ui-settings.glade:147 msgid "... _wait for daemon" msgstr "... _wachten op daemon" #: ui-settings.glade:164 msgid "... start daemon in _background" msgstr "... daemon op de _achtergrond starten" #: ui-settings.glade:180 msgid "... _ask me what to do" msgstr "... mij _vragen wat er moet gebeuren" #: ui-settings.glade:199 msgid "When exiting after daemon was started in background..." msgstr "Bij het afsluiten nadat de daemon op de achtergrond gestart werd..." #: ui-settings.glade:210 msgid "... terminate _daemon" msgstr "... _daemon beëindigen" #: ui-settings.glade:226 msgid "... leave daemon _running" msgstr "... daemon laten d_raaien" #: ui-settings.glade:242 msgid "... ask me w_hat to do" msgstr "... mij vragen wat er moet _gebeuren" #: ui-settings.glade:258 msgid "Us_e traditional window header" msgstr "Traditionele venster-hoofding g_ebruiken" #: ui-settings.glade:278 msgid "Display desktop notifications for..." msgstr "Bureaubladmeldingen weergeven voor..." #: ui-settings.glade:289 msgid "... file updates" msgstr "... bestandsupdates" #: ui-settings.glade:304 msgid "... errors" msgstr "... fouten" #: ui-settings.glade:319 msgid "... synchronization completion" msgstr "... voltooiing van synchronisatie" #: ui-settings.glade:334 msgid "Start Syncthing-GTK when I login to my desktop" msgstr "Syncthing-GTK starten wanneer ik mij aanmeld op mijn bureaublad" #: ui-settings.glade:350 msgid "Minimize to _tray on start" msgstr "Naar sys_teemvak minimaliseren bij starten" #: ui-settings.glade:366 msgid "Use _icons in menu" msgstr "P_ictogrammen gebruiken in menu" #: ui-settings.glade:383 msgid "Display paths in directories panel" msgstr "Paden weergeven in mapvenster" #: ui-settings.glade:399 msgid "Force _dark theme" msgstr "_Donker thema forceren" #: ui-settings.glade:540 msgid "Tray icon style" msgstr "Systeemvakpictogram-stijl" #: ui-settings.glade:553 msgid "Language" msgstr "Taal" #: ui-settings.glade:474 msgid "_Interface" msgstr "_Interface" #: ui-settings.glade:492 msgid "Integrate Syncthing with filemanagers" msgstr "Syncthing integreren met bestandsbeheerders" #: ui-settings.glade:507 msgid "Nemo (Cinamon Desktop)" msgstr "Nemo (Cinnamon-desktop)" #: ui-settings.glade:524 msgid "Nautilus (Ubuntu/GNOME)" msgstr "Nautilus (Ubuntu/GNOME)" #: ui-settings.glade:540 msgid "Caja (MATE Desktop)" msgstr "Caja (MATE-desktop)" #: ui-settings.glade:579 msgid "" "Note: You may need to restart your filemanager after toggling " "integration." msgstr "Opmerking: Het kan zijn dat u uw bestandsbeheerder opnieuw moet starten na in-/uitschakelen van integratie." #: ui-settings.glade:598 msgid "_Integration" msgstr "_Integratie" #: ui-settings.glade:627 msgid "Keep Syncthing binary up-to-date" msgstr "Syncthing-binary up-to-date houden" #: ui-settings.glade:647 msgid "" "If enabled, Syncthing-GTK will automatically check for new daemon releases " "and replace binary with latest version." msgstr "Indien ingeschakeld zal Syncthing-GTK automatisch controleren op nieuwe daemon-releases en de binary vervangen door de laatste versie." #: ui-settings.glade:662 msgid "Daemon process priority" msgstr "Daemon-procesprioriteit" #: ui-settings.glade:698 msgid "" "Priority will be used only if \"start daemon in background\" option " "is checked on \"Interface\" page." msgstr "Prioriteit zal alleen gebruikt worden als de optie \"daemon op achtergrond starten\" aangevinkt is op de \"interface\"-pagina." #: ui-settings.glade:713 msgid "Maximum number of CPU cores" msgstr "Maximaal aantal CPU-kernen" #: ui-settings.glade:731 msgid "" "Sets the maximum number of CPU cores for daemon to use. This value will be " "used only if \"start daemon in background\" option is checked on " "\"Interface\" page." msgstr "Stelt het maximaal aantal CPU-kernen in dat de daemon mag gebruiken. Deze waarde zal alleen gebruikt worden als de optie \"daemon op de achtergrond starten\" aangevinkt is op de \"interface\"-pagina." #: ui-settings.glade:786 msgid "Daemon" msgstr "Daemon" #: ui-settings.glade:808 msgid "" "This binary will be started when syncthing daemon is not running and " "\"start daemon in background\" option is checked on " "\"Interface\" page." msgstr "Deze binary zal gestart worden wanneer synchting-daemon niet actief is en de optie \"daemon op de achtergrond starten\" aangevinkt is op de \"interface\"-pagina." #: ui-settings.glade:838 msgid "Syncthing binary location" msgstr "Locatie van syncthing-binary" #: ui-settings.glade:867 msgid "Daemon arguments and variables" msgstr "Daemon-argumenten en -variabelen" #: ui-settings.glade:897 msgid "" "Space-separated list of arguments and environment variables passed when starting above binary\n" "\n" "Use VARIABLE=\"value\" to set variable and -argument=\"value\" (with dash) for argument.\n" "\n" "If you need to pass commandline to different command (such as logger or ionice), separate prefixed arguments with exclamation mark \"!\"\n" "\n" "Example:\n" " STTRACE=\"all\" logger -t /var/log/syncthing.log ! -logflags=10" msgstr "Spatie-gescheiden lijst van argumenten en omgevingsvariabelen die doorgegeven worden bij het starten van de binary hierboven\n\nGebruik VARIABLE=\"waarde\" om een variabele in te stellen en -argument=\"waarde\" (met streepje) voor een argument.\n\nAls u opdrachtregel moet doorgeven aan een verschillende opdracht (zoals logger of ionice), scheid dan geprefixte argumenten met een uitroepteken \"!\"\n\nVoorbeeld:\n  STTRACE=\"all\" logger -t /var/log/syncthing.log ! -logflags=10" #: ui-settings.glade:921 msgid "" "Warning: Changing settings on this page may prevent you from using " "Syncthing-GTK" msgstr "Waarschuwing: Instellingen op deze pagina wijzigen kan ertoe leiden dat Syncthing-GTK niet meer werkt" syncthing-gtk-0.9.4.4/locale/pl/000077500000000000000000000000001352162771300163405ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/locale/pl/LC_MESSAGES/000077500000000000000000000000001352162771300201255ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/locale/pl/LC_MESSAGES/syncthing-gtk.mo000066400000000000000000001023111352162771300232510ustar00rootroot00000000000000W >B?3EsBc`| + BM^xQW w     : ,8!!e!]!!T!-J"x" "" """"g#!m##### # ##'$!7$Y$$q$D$R$.% 5%C%T%s%5%]%& 5& @& M& Z&{&$&&"&5&D"'g' m'{''''''((!1(S( l(ey((((() )-<),j)))))&))*(I*&r**!**** +R+m+Ks+g+',.. . . . ..0./ / %/ 2/r>//P|0a0=/1m11222&3))3(S3(|3"3*3(394%V4 |4D4,4 4 5$5>5S5 i5u5y5 55 5555 66,6C6I6L6S6W6_6f60z6K66 z7777O7V8_8 f8r82838K8549;j99=6:ot:::;;*;1;C;S; f;p;y;v;<--<,[<< <<K=\=p= =A= ==1=">7>k>>> F@.P@ @@@@@,@ A$A7A ?AIAcAtAA(JBsB.B;BBC6C+TC0C7CC DDV'D6~DD3D3Em6E)EEpfF2F- G8GG#G H H H ,H+9H eHoHxH H HHHHHHH%HI 6I*BI6mI4I II{I!eJiJJJ J KK K %K2K MKZKkKsK K K KKKK KKKKKKL L +L5L>L UL `LlL(uL LLL9L LM"MI:OIOJOGPHaP_P Q&Q .Q8Q ?QKQ SQaQsQQQQ QQQQ QR""RER_R~RjRaR`SpSSSSS!S(S;T3QTTcT UfU5}U"UUUV V !V$-VRV)V"W ?WLWfW nW xWW'W"WW*XT1XdXXXYY2Y?KYqYYZ'Z :Z!GZiZ ZZ'Z:Z=[X[`[w[[[[[ [\#\'A\i\ \s\ ]] &] 1]=]-[]1])]"]6^#?^/c^0^4^/^&)_,P_}____X_1`S7`^``b ^c c c ccc1cc d#d 3d{>ddWekeGZff0ghh)h >hLh^hqhhh3hAh*i?i`Ni4i,ij&#jJjcjjj jj"jj1j!k#7k[knkkkkk kkkk>kElYll$m3m ImUSmjmnn*n0=n7nnKn2nL%oro4ps6p pppppqq'qAq Pq[qvq!q9r6Yrr rrrssssGs t t/*t+Zttt)uv2v#w8w Vw)aww(wwww xx.x@x^x/1y ay4y6yy z.z,Mz*zzBzz {{i*{@{{9{1*|\|6|}n}$~"5~X~~! +0 CQ5`  ""*>%Pv)0ǀ2 +7x;$nفHKR Y g t ˂$Ԃ  1$7\ do w  ˃ ؃ 'G Xc9k$ TApm*G@0V:M9o^NRN+EG<FgX  ui'(8\c;}Kh? OUE2S5<8(&F/d`CyblRsV1A>=0" P#>_KxtQ[+JLI7,!arJ%.S31HT-$:C'?,U6=".O&w*Wfe BnL6D{IQ ~! ZD) 59jY4Mvk4/W3@-2H] PqB|#);z %7%(device)s wants to share folder "%(folder)s". Add new folder?%(hostname)s: Deleted %(deleted)s files to reflect remote changes.%(hostname)s: Deleted '%(filename)s' to reflect remote changes.%(hostname)s: Downloaded %(updated)s files to reflect remote changes.%(hostname)s: Downloaded '%(filename)s' to reflect remote changes.%(hostname)s: downloaded %(updated)s files and deleted %(deleted)s files to reflect remote changes.%(online)s/%(total)s online%s KiB/s%s day%s days%s days ago%s kB/s%s minutes ago%s minutes from now%s seconds ago%s seconds from now%s%%%ss(watch)... _ask me what to do... _wait for daemon... ask me w_hat to do... errors... file updates... leave daemon _running... start daemon in _background... synchronization completion... terminate _daemonNote: You may need to restart your filemanager after toggling integration.Warning: Changing settings on this page may prevent you from using Syncthing-GTKAbout Syncthing-GTKAbove NormalAdd Shared _FolderAdd _DeviceAddressAll DataAll devices offlineAllow Anonymous Usage Reporting?Alternatively, Syncthing-GTK can download Syncthing binaryAlways do same; Don't show this window againAlways start daemon automaticallyAn external command handles the versioning. It has to remove the file from the synced folder.Announce ServerAny devices configured on an introducer device will be added to this device as well.Attempting to download recent, please wait...Auto_update downloaded binaryBinary path:Browse for Syncthing binaryBrowse...CPU UtilizationCaja (MATE Desktop)Can't invoke the daemonCannot authorize with daemon. Please, use WebUI to generate API key or disable password authentication.Cannot download Syncthing daemon.Checking for available port...Clean out _afterCluster out of syncCommandCompressionConnectedConnected to Syncthing daemonConnecting to Syncthing daemon at %s...Connecting to Syncthing daemon...Connecting to daemon...Connection to Syncthing daemon lost.Connection to daemon failed. Check your configuration and try again.Continue this wizard to create a Syncthing configuration file or abort it to exit.DaemonDaemon OutputDaemon _SettingsDaemon arguments and variablesDaemon process priorityDevice "%s" is trying to connect to syncthing daemon.Device "%(name)s" (%(device)s) at IP "%(ip)s" wants to connect. Add new device?Device IdentificationDevice _IDDevice _NameDisconnectedDisplay Syncthing-Inotify OutputDisplay _Daemon OutputDisplay desktop notifications for...Display error logDisplay paths in directories panelDo you really want remove device '%s' from Syncthing?Do you really want to permanently stop synchronizing directory '%s'?Done.Download RateDownload failed.Download finished.Downloaded file is corrupted.Downloading Syncthing %sDownloading Syncthing daemon.Downloading...Edit _Ignore PatternsEnable Local _DiscoveryEnable _Anonymous Usage ReportingEnable _Global DiscoveryEnable _UPnPEnter comma separated "ip:port" addresses or "dynamic" to perform automatic discovery of the address.ErrorError message:Exiting.ExternalExtracting update...Failed to create temporaly file.Failed to determine latest Syncthing version.Failed to download Syncthing daemon package.Failed to download upgrade: %sFailed to find unused port for listening.Failed to generate keysFailed to load Syncthing configurationFailed to load configuration from daemon.Failed to modify Syncthing configurationFailed to save Syncthing configurationFailed to save configuration.Failed to start Syncthing daemon.File Pull _OrderFile _VersioningFile location:File location: File permission bits are ignored when looking for changes. Use on FAT filesystems.FilesFiles are moved to .stversions folder when replaced or deleted by SyncthingFiles are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing.Files are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing. Versions are automatically deleted if they are older than the maximum age or exceed the number of files allowed in an interval. The following intervals are used: for the first hour a version is kept every 30 seconds, for the first day a version is kept every hour, for the first 30 days a version is kept every day, until the maximum age a version is kept every week.Files are protected from changes made on other devices, but changes made on this device will be sent to the rest of the cluster.First run wizardFolder IDFolder TypeFolder _IDFolder _LabelForce _dark themeGTK GUI and notification area icon for SyncthingGitHubGlobal Discovery _ServersGlobal StateHide WindowIf enabled, Syncthing-GTK will automatically check for new daemon releases and replace binary with latest version.If enabled, changed, created and delete files are synchronized immediately, as long as Syncthing-GTK is running. Note: Using this along with short Rescan Interval (<300s) may consume a lot of resources.If the reported data set is changed you will be prompted with this dialog again.If you already had Syncthing daemon configured, please, exit this wizard and check your %s folderIf you have Syncthing installed, please, set path to %s belowIf you have Syncthing installed, please, set path to %s below or click on Download button to download latest Syncthing package.If you prefer to be able to manage Syncthing remotely, over the internet or on your local network, select listen on all interfaces and set username and password to protect Syncthing from unauthorized access.Ignore P_ermissionsIgnore PatternsIgnore PermissionsIn File Pull Order comboboxAlphabeticIn File Pull Order comboboxLargest FirstIn File Pull Order comboboxNewest FirstIn File Pull Order comboboxOldest FirstIn File Pull Order comboboxRandomIn File Pull Order comboboxSmallest FirstInitial configuration should be created.Install %(package)s package to enable %(feature)s supportIntegrate Syncthing with filemanagersIntroducerIt is used to track common platforms, folder sizes and app versions.It looks like you never have used Syncthing.Keep Syncthing binary up-to-dateLast SeenListen on _all interfacesListen on _localhostLocal Discovery _PortLocal StateLowLowestMa_ximum AgeMaximum number of CPU coresMetadata OnlyMinimize to _tray on startMinimum Free Disk SpaceMonitor filesystem for _changesMore infoNautilus (Ubuntu/GNOME)Nemo (Cinamon Desktop)NeverNoNormalOffOfflineOnlineOpen _Web InterfaceOpen browser with _WebUI when daemon is startingOptional descriptive label for the folder. Can be different on each device.Otherwise, select listen on localhost, so only users and programs on this computer will be able to interact with Syncthing.Out Of SyncOutgoing _Rate LimitOverride Remote ChangesPathPath to the folder on the local computer. Will be created if it does not exist.Path where versions should be stored (leave empty for the default .stversions folder).PausedPlease waitPlease wait...Please, check error log and fill bug report on %s.Please, check your firewall settings and try again.Please, check your installation or set new path to Syncthing daemon binary.Please, install pyinotify package to use this featurePlease, restart Syncthing-GTK to apply all changed settingsPlease, use package manager to install the Syncthing package or %(download_link)s from Syncthing page and save it to your %(target)s directory.Please, use package manager to install the Syncthing package.Priority will be used only if "start daemon in background" option is checked on "Interface" page.RAM UtilizationRescan IntervalRescan _IntervalRestarting daemon...ResumeResume Sync_thingS_top SyncthingSaving settings...Saving...ScanningSearching for Syncthing daemon.See Syncthing documentation for list of supported patternsSelect Folder for new FolderSelect the devices to share this folder with.Select the folders to share with this deviceSend & ReceiveSend OnlySets the maximum number of CPU cores for daemon to use. This value will be used only if "start daemon in background" option is checked on "Interface" page.Sh_utdown DaemonShare With _DevicesShare _FoldersShared WithShort identifier for the folder. Must be the same on all devices.Show WindowShow _IDShown instead of Device ID in the cluster status.Shutdown Syncthing daemon as well?SimpleSorry, connecting to HTTPS is not supported on this platform. Please, use WebUI to disable HTTPS try again.Space-separated list of arguments and environment variables passed when starting above binary Use VARIABLE="value" to set variable and -argument="value" (with dash) for argument. If you need to pass commandline to different command (such as logger or ionice), separate prefixed arguments with exclamation mark "!" Example: STTRACE="all" logger -t /var/log/syncthing.log ! -logflags=10StaggeredStart Syncthing-GTK when I login to my desktopStart it now?Starting Syncthing daemonStoppedSync Protocol Listen AddressesSynchronizationSynchronization of folder '%s' is completed.Synchronizing %s foldersSynchronizing '%s'SyncingSyncthingSyncthing Daemon SettingsSyncthing binarySyncthing binary locationSyncthing can be managed remotely using WebUI and even if you are going to use Syncthing-GTK, WebUI needs to be enabled, as Syncthing-GTK uses it to communicate with the Syncthing daemon.Syncthing daemon binary cannot be found.Syncthing daemon binary found.Syncthing daemon doesn't appear to be running.Syncthing daemon failed to generate RSA key or certificate.Syncthing daemon is too old.Syncthing daemon not found.Syncthing has been shut down.Syncthing has been successfully configured.Syncthing is generating RSA key and certificate.Syncthing is probably restarting or has been shut down.Syncthing is restarting.Syncthing-GTKSyncthing-GTK SettingsSyncthing-GTK needs Syncthing daemon %(min)s or newer, but only %(actual)s were found.Syncthing-GTK started and running in notification areaSyncthing-Inotify OutputSyncthing-Inotify is unavailable or failed to startThe aggregated statistics are publicly available atThe configuration has been saved but not activated. Syncthing must restart to activate the new configuration.The encrypted usage report is sent daily.The entered device ID does not look valid. It should be a 52 character string consisting of letters and numbers, with spaces and dashes being optional.The first command line parameter is the folder path and the second parameter is the relative path in the folder.The number of days to keep files in the trash can.The number of old versions to keep, per file.This binary will be started when syncthing daemon is not running and "start daemon in background" option is checked on "Interface" page.This may take a while...This platform (%s) is not supportedTrashcanTry again.UI SettingsUI _SettingsUnexpected folder ID sent from device "%s".UnlimitedUnsharedUnusedUp to DateUpload RateUs_e traditional window headerUse _icons in menuVersionVersion:Versioning _ModeVersions _PathWaiting for Syncthing daemon at %s...WebUI Listen AddressesWebUI setupWelcome to Syncthing-GTK first run wizard!When exiting after daemon was started in background...When starting and Syncthing daemon is not running...XYZ-123-ABCYesYou can configure more details later, in UI Settings and Daemon Settings menus in main window of application.Your syncthing daemon is too old.Your syncthing daemon is too old. Please, upgrade syncthing package at least to version %s and try again._About_Add_Addresses_Advanced_Browse_Browse..._Compression_Download Syncthing binary_Download..._Folder Settings_Ignore_Incoming Rate Limit_Integration_Interface_Introducer_Keep Versions_Other_Outgoing Rate Limit_Password_Path_Quit_Rescan_Restart_Restart Daemon_Send Only Folder_Unlimited_Usernamedisableddownload latest binaryin %s daysin a momentjust nowlast resort and generally not suggested.never deleteno limitofflineto %s and keep it up-to-date, but this option is meant as~%s hours ago~%s hours from nowProject-Id-Version: syncthing-gtk Report-Msgid-Bugs-To: POT-Creation-Date: 2016-04-20 11:27+0200 PO-Revision-Date: 2018-08-29 07:20+0000 Last-Translator: xearonet Language-Team: Polish (http://www.transifex.com/syncthing-gtk/syncthing-gtk/language/pl/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: pl Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3); %(device)s chce współdzielić katalog "%(folder)s". Dodać nowy folder?%(hostname)s: Usunięto '%(deleted)s' aby zsynchronizować zdalne zmiany.%(hostname)s: Usunięto '%(filename)s' aby zsynchronizować zdalne zmiany.%(hostname)s: Pobrano '%(updated)s' aby zsynchronizować zdalne zmiany.%(hostname)s: Pobrano '%(filename)s' aby zsynchronizować zdalne zmiany.%(hostname)s: pobrano '%(updated)s' i usunięto %(deleted)s aby zsynchronizować zdalne zmiany.%(online)s/%(total)s online%s KB/s%s dzień%s dni%s dni temu%s kB/s%s minut temu%s minut od teraz%s sekund temu%s sekund od teraz%s%%%ss(obserwuj)... _zapytaj mnie co robić... _czekaj na demona... zapytaj mnie co _robić... błędów... zaktualizowanych plików... _pozostaw demona uruchomionego… _uruchom demona w tle... ukończenia synchronizacji… _zakończ demonaInformacja: Ponowne uruchomienie menedżera plików może być konieczne po włączeniu integracji.Ostrzeżenie: Zmiana ustawień na tej stronie mogą uniemożliwić używanie Syncthing-GTKO Syncthing-GTKPowyżej normalnegoDodaj współdzielony _FolderDodaj _UrządzenieAdresWszystkie daneWszystkie urządzenia są offlinePozwól na anonimowe statystyki użycia?Opcjonalnie, Syncthing-GTK może pobrać binarkę SyncthingRób zawsze to samo. Nie pokazuj ponownie tego oknaUruchamiaj demona automatycznieZewnętrzna komenda odpowiedzialna za wersjonowanie. Musi usuwać plik z synchronizowanego folderu.OdnajdywanieKażde urządzenie dodane na urządzeniu wprowadzającego będzie dodane również na tym urządzeniu.Próbuję pobrać nowszą wersję, proszę czekać...Auro_aktualizacja pobranej binarkiŚcieżka binarki:Poszukaj binarki SyncthingPrzeglądanie...Użycie CPUCaja (MATE)Nie mogę połączyć się z demonemNie można autoryzować połączenia z demonem. Proszę użyć interfejsu Web, żeby wygenerować klucz API lub wyłączyć uwierzytelnianie za pomocą hasła.Nie udało się pobrać demona Syncthing.Sprawdzanie dostępności portu...Oczyść _poGrupa niezsynchronizowanaKomendaKompresjaPołączonoPołączono z demonem SyncthingŁączenie z demonem Syncthing na %s...Łączenie do demona Syncthing....Łącznie do demona...Utracono połączenie z demonem Syncthing.Połączenie z demonem nie udane. Sprawdź swoją konfigurację i spróbuj ponownie.Kontynuuj z kreatorem, aby utworzyć plik konfiguracyjny Syncthing lub przerwij go, aby zakończyć.DemonWyjście demona_Ustawienia demonaZmienne oraz argumenty demonaPriorytet procesu demonaUrządzenie "%s" próbuje się połączyć do demona Syncthing.Urządzenie "%(name)s" (%(device)s) na IP "%(ip)s" chcę się połączyć. Dodać nowe urządzenie?Identyfikacja urządzenia_ID urządzenia_Nazwa urządzeniaRozłączonoPokaż wyjście Syncthing-InotifyPokaż wyjście _DemonaWyświetlaj powiadomienia dla...Pokaż log błędówWyświetl ścieżki w panelu katalogówCzy na pewno chcesz usunąć urządzanie '%s' z Syncthing?Czy chcesz na stałe przestać synchronizować katalog '%s' ?Gotowe.Prędkość pobieraniaNie udało się pobrać.Pobieranie ukończone.Pobrany plik jest uszkodzony.Pobieranie Syncthing %sPobieranie demona Syncthing.Pobieranie...Edytuj wzorce _IgnorowaniaWłącz lokalne _odnajdywanieWłącz _anonimowe raportowanie użyciaWłącz _globalne odnajdowanieWłącz _UPnPWprowadź rozdzielone przecinkiem adresy "ip:port" lub wpisz "dynamic" aby użyć automatycznego wykrywania adresu.BłądWiadomość błędu:Zamykanie.ZewnętrznyWypakowywanie aktualizacji...Nie udało się utworzyć pliku tymczasowego.Nie udało się ustalić wersji demona Syncthing.Nie udało się pobrać demona Syncthing.Błąd pobierania aktualizacji: %sNie udało się znaleźć wolnego portu dla nasłuchu.Nie udało się wygenerować kluczyNie udało się wczytać konfiguracji SyncthingNie udało się załadować konfiguracji demona.Nie udało się zmodyfikować konfiguracji SyncthingNie udało się zapisać konfiguracji SyncthingNie udało się zapisać konfiguracji.Nie udało się uruchomić demona Syncthing._Kolejność pobierania plików_Wersjonowanie plikuPołożenie pliku:Położenie pliku:Uprawnienia plików będą ignorowane przy szukaniu zmian. Użyj w systemie plików FAT.PlikiPliki są przenoszone do folderu .stversions, kiedy zmieni je lub usunie Syncthing.Pliki są datowane i przenoszone do folderu .stversions, kiedy zmieni je lub usunie syncthing.Pliki są datowane i przenoszone do folderu .stversions, kiedy zmieni je lub usunie syncthing. Wersje będą automatycznie kasowane jeśli przekroczą maksymalny wiek lub maksymalną liczbę plików w przedziale czasu. Używane są następujące interwały: w pierwszej godzinie pliku, nowa wersja co 30 sekund, w pierwszym dniu pliku, nowa wersja co 1 godzinę, w pierwszych 30 dniach pliku, nowa wersja co 1 dzień, później co tydzień aż do maksymalnego wieku pliku.Pliki są zabezpieczone przed zmianami zrobionymi na innych urządzeniach ale zmiany z tego urządzenia zostaną rozesłane na inne urządzenia w grupie.Asystent pierwszego uruchomieniaID folderuTyp folderu_ID folderu_Etykieta folderu_Wymuś ciemny motywIkona Syncthing dla GTK GUI i panelu powiadomieńGitHub_Serwery globalnego odnajdowaniaStatus globalnyUkryj oknoJeśli włączone, Syncthing-GTK będzie automatycznie sprawdzał nową wersję demona, jeśli znajdzie to go zaktualizuje.Jeśli włączone, zmiana, dodanie lub usunięcie plików, będzie natychmiast synchronizowane dopóki działa Syncthing-GTK. Notka: Używanie tego wraz z małym czasem skanowania (<300s) może zużywać dużo zasobów.Jeśli zbiór danych się zmieni zostaniesz o tym powiadomiony przez to okno dialogowe.Jeśli już posiadasz skonfigurowanego demona Syncthing, wyjdź z tego asystenta i sprawdź swój folder %sJeśli już zainstalowałeś Syncthing, poniżej ustaw ścieżkę do %sJeśli już zainstalowałeś Syncthing, poniżej ustaw ścieżkę do %s lub kliknij Download aby pobrać najnowszą wersję Syncthing.Jeśli chcesz zarządzać Syncthing przez internet lub LAN, zaznacz nasłuchuj na wszystkich interfejsach oraz ustaw użytkownika i hasło dla zabezpieczenia Syncthing przed nieautoryzowanym dostępem.Ignoruj _uprawnieniaWzorce ignorowaniaZignoruj uprawnieniaAlfabetycznieWiększe najpierwNajpierw najnowszeNajpierw najstarszeLosowyMniejsze najpierwPoczątkowa konfiguracja powinna zostać utworzona.Zainstaluj paczkę %(package)s aby włączyć funkcje %(feature)sZintegruj Syncthing z menedżerami plikówWprowadzającyJest używany do śledzenia platformy współdzielenia, rozmiarów folderów i wersji aplikacji.Wygląda na to, że nigdy nie używałeś Syncthing.Utrzymuj binarkę Syncthing zawsze aktualnąOstatnio widzianyNasłuchuj na _wszystkich interfejsachNasłuchuj na _localhost_Port lokalnego odnajdywaniaStatus lokalnyNiskiNajniższyMa_ksymalny wiekMaksymalna liczba rdzeni procesoraTylko metadaneMinimalizuj do _obszaru powiadomień przy starcieMinimalna ilość wolnego miejscaMonitoruj system plików dla _zmianWięcej informacjiNautilus (GNOME)Nemo (Cinnamon)NigdyNieNormalnyWyłączonoOfflineOnlineOtwórz interfejs _WebOtwórz przeglądarkę z interfejsem _Web kiedy demon startujeOpcjonalna nazwa dla folderu. Może być inna na każdym urządzeniu.W przeciwnym razie zaznacz nasłuchuj tylko lokalnie przez co tylko programy i użytkownicy na tym komputerze będą mogli komunikować się z Syncthing.NiezsynchronizowaneOgraniczenie prędkości _wysyłaniaNadpisz zdalne zmianyŚcieżkaŚcieżka do folderu na lokalnym komputerze. Jeśli nie istnieje, zostanie stworzony.Ścieżka, gdzie pliki wersji mają być przechowywane (zostaw puste dla domyślnego folderu .stversions).PauzaProszę czekaćProszę czekać...Sprawdź log błędów i wypełnij raport na %s.Proszę sprawdź ustawienia zapory i spróbuj ponownie.Sprawdź swoją instalację lub ustaw nową ścieżkę do demona Syncthing.Zainstaluj paczkę pyintify aby użyć tej funkcjiUruchom ponownie Syncthing-GTK aby zastosować wszystkie zmiany konfiguracjiUżyj menedżera paczek aby zainstalować Syncthing lub pobierz paczkę %(download_link)s ze strony Syncthing i zapisz w folderze %(target)s .Użyj menedżera paczek aby zainstalować Syncthing.Priorytet będzie użyty tylko jeśli zaznaczono opcję "uruchom demona w tle" na karcie "Interfejs".Użycie RAMInterwał skanowania_Interwał skanowaniaRestartowanie demona...WznówWznów Sync_thing_Zatrzymaj SyncthingZapisuje konfigurację...Zapisywanie...SkanowanieSzukanie demona Syncthing.Zobacz dokumentację Syncthing aby zobaczyć listę wspieranych wyrażeń.Wybierz folder dla nowego folderuWybierz urządzenie aby współdzielić z nim ten folder.Wybierz foldery do współdzielenia z tym urządzeniemWyślij i odbierzTylko wyślijUstaw maksymalną liczbę rdzeni procesora, których może używać demon. Ta wartość będzie użyta tylko jeśli zaznaczono opcję "uruchom demona w tle" na karcie "Interfejs"._Wyłącz demonaWspółdziel z _urządzeniem_Foldery współdzieloneWspółdzielony zKrótka nazwa folderu. Musi być taka sama na wszystkich urządzeniach.Pokaż oknoPokaż _IDPokaż zamiast ID urządzenia w statusie grupy.Czy wyłączyć również demona Syncthing?ProstyPrzepraszamy, ale połączenie po HTTPS nie jest możliwe na tej platformie. Proszę użyć interfejsu Web, żeby wyłączyć HTTPS i spróbować ponownie.Lista argumentów (oddzielonych spacją) oraz zmiennych środowiskowych zastosowanych przy starcie binarki Użyj składni ZMIENNA="wartość" aby ustawić zmienną oraz -argument="wartość" (z minusem) aby podać argument. Jeśli potrzebujesz podać polecenie do innej komendy (np. logger lub ionice), oddziel umieszczone argumenty wykrzyknikiem "!" Przykład: STTRACE="all" logger-t /var/log/syncthing.log ! -logflags=10RozbityUruchom Syncthing-GTK wraz z logowaniem do systemuUruchomić go teraz?Uruchamianie demona SyncthingZatrzymanoAdres nasłuchu protokołu synchronizacjiSynchronizacjaSynchronizacja folderu '%s' zakończona.Synchronizowanie %s folderówSynchronizowanie '%s'SynchronizowanieSyncthingUstawienia demona SyncthingBinarka SyncthingPołożenie binarki SyncthingSyncthing może być zarządzany zdalnie używając WebUI, nawet jeśli chcesz używać Syncthing-GTK. WebUI musi być aktywowane, ponieważ jest używane przez Syncthing-GTK do komunikacji z demonem Syncthing.Nie można odnaleźć binarki demona Syncthing.Nie znaleziono demona Syncthing.Prawdopodobnie demon Syncthing nie jest uruchomiony.Nie udało się wygenerować certyfikatu i klucza RSA.Demon Syncthing jest za stary.Nie znaleziono demona Syncthing.Syncthing został wyłączony.Syncthing został pomyślnie skonfigurowany.Syncthing generuje certyfikat i klucz RSA.Syncthing prawdopodobnie nie działa lub własnie się restartuje.Syncthing się restartuje.Syncthing-GTKUstawienia Syncthing-GTKSyncthing-GTK potrzebuje demona Syncthing w wersji %(min)s lub nowszego a znaleziono wersję %(actual)s .Syncthing-GTK jest uruchomiony i działa w obszarze powiadomieńWyjście Syncthing-InotifyNie dostępny lub nie można uruchomić Syncthing-InotifyZebrane statystyki będą publicznie dostępne naKonfiguracja została zapisana ale nie jest aktywna. Syncthing musi zostać uruchomiony ponownie aby aktywować nową konfigurację.Zaszyfrowany raport użycia jest wysyłany codziennie.Wprowadzony ID urządzenia wydaje się być błędny. ID powinien posiadać 52 znaki, litery i cyfry. Spacje i myślniki są opcjonalne.Pierwszy parametr w linii komend jest ścieżką folderu a drugi relatywną ścieżką wewnątrz tego folderu.Liczb dni trzymania plików w koszu.Liczba wersji pliku do zachowania.Ta binarka będzie uruchomiona jeśli demon syncthing nie działa oraz opcja "uruchom demona w tle" będzie zaznaczona na karcie "Interfejs".To zajmie chwilę...Platforma (%s) nie jest wspieranaKoszSpróbuj ponownie.Ustawienia UI_Ustawienia UINieoczekiwany ID folderu wysłany z urządzenia "%s".NielimitowaneNiewspółdzieloneNieużywaneAktualnyPrędkość wysyłaniaUżyj tradycyjnego nagłówka oknaPokaż _ikony w menuWersjaWersja:_Tryb wersjonowaniaŚcieżka _wersjiCzekanie na demona Syncthing na %s...Adres nasłuchu WebUIUstawienia WebUIWitaj w przewodniku startu Syncthing-GTK!Kiedy wychodzi a demon był uruchomiony w tle...Kiedy startuje ale demon Syncthing nie działa....XYZ-123-ABCTakWięcej ustawień możesz zmienić później w menu Ustawienia UI oraz Ustawienia demona w menu głównym.Twój demon Syncthing jest za stary.Twój demon Syncthing jest za stary. Zaktualizuj pakiet Syncthing do najnowszej wersji %s i spróbuj ponownie._O_Dodaj_Adres_Zaawansowane_Przeglądaj_Przeglądaj_Kompresja_Pobierz binarkę Syncthing_Pobieranie...Ustawienia _folderu_IgnorujOgraniczenie prędkości _pobierania_Integracja_Interfejs_Wprowadzający_Zachowuj wersje_InneOgraniczenie prędkości _wysyłania_Hasło_Ścieżka_Wyjdź_Przeskanuj_Restartuj_Restartuj demonaFolder tylko do _wysyłania_Nielimitowane_Użytkownikwyłączonopobierz ostatnią wersjęw ciągu %s dniza chwilęterazw ostateczności ale nie jest polecane.nigdy nie usuwajbez limituofflineaby %s i utrzymać to zaktualizowane, ta opcja to oznacza~%s godzin temu~%s godzin od terazsyncthing-gtk-0.9.4.4/locale/pl/LC_MESSAGES/syncthing-gtk.po000077500000000000000000001312101352162771300232570ustar00rootroot00000000000000# Syncthing-GTK # Copyright (C) 2014-2015 Kozec and contributors # This file is distributed under the same license as the Syncthing-GTK package. # # Translators: # xearonet, 2016-2017 # Marcin Mikołajczak , 2016-2017 # xearonet, 2018 msgid "" msgstr "" "Project-Id-Version: syncthing-gtk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-04-20 11:27+0200\n" "PO-Revision-Date: 2018-08-29 07:20+0000\n" "Last-Translator: xearonet\n" "Language-Team: Polish (http://www.transifex.com/syncthing-gtk/syncthing-gtk/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pl\n" "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" #: syncthing_gtk/app.py:194 msgid "Syncthing-GTK started and running in notification area" msgstr "Syncthing-GTK jest uruchomiony i działa w obszarze powiadomień" #: syncthing_gtk/app.py:288 #, python-format msgid "%s kB/s" msgstr "%s kB/s" #: syncthing_gtk/app.py:302 syncthing_gtk/notifications.py:77 #: syncthing_gtk/wizard.py:53 msgid "Syncthing-GTK" msgstr "Syncthing-GTK" #: syncthing_gtk/app.py:363 syncthing_gtk/app.py:364 syncthing_gtk/app.py:942 msgid "Syncing" msgstr "Synchronizowanie" #: syncthing_gtk/app.py:366 syncthing_gtk/app.py:367 msgid "Scanning" msgstr "Skanowanie" #: syncthing_gtk/app.py:390 syncthing_gtk/app.py:652 msgid "Starting Syncthing daemon" msgstr "Uruchamianie demona Syncthing" #: syncthing_gtk/app.py:424 msgid "Allow Anonymous Usage Reporting?" msgstr "Pozwól na anonimowe statystyki użycia?" #: syncthing_gtk/app.py:426 msgid "The encrypted usage report is sent daily." msgstr "Zaszyfrowany raport użycia jest wysyłany codziennie." #: syncthing_gtk/app.py:427 msgid "It is used to track common platforms, folder sizes and app versions." msgstr "Jest używany do śledzenia platformy współdzielenia, rozmiarów folderów i wersji aplikacji." #: syncthing_gtk/app.py:428 msgid "" "If the reported data set is changed you will be prompted with this dialog " "again." msgstr "Jeśli zbiór danych się zmieni zostaniesz o tym powiadomiony przez to okno dialogowe." #: syncthing_gtk/app.py:430 msgid "The aggregated statistics are publicly available at" msgstr "Zebrane statystyki będą publicznie dostępne na" #: syncthing_gtk/app.py:486 msgid "Extracting update..." msgstr "Wypakowywanie aktualizacji..." #: syncthing_gtk/app.py:491 msgid "Restarting daemon..." msgstr "Restartowanie demona..." #: syncthing_gtk/app.py:507 #, python-format msgid "Failed to download upgrade: %s" msgstr "Błąd pobierania aktualizacji: %s" #: syncthing_gtk/app.py:525 #, python-format msgid "Downloading Syncthing %s" msgstr "Pobieranie Syncthing %s" #: syncthing_gtk/app.py:604 msgid "Connected to Syncthing daemon" msgstr "Połączono z demonem Syncthing" #: syncthing_gtk/app.py:614 msgid "Connection to Syncthing daemon lost." msgstr "Utracono połączenie z demonem Syncthing." #: syncthing_gtk/app.py:615 msgid "Syncthing is probably restarting or has been shut down." msgstr "Syncthing prawdopodobnie nie działa lub własnie się restartuje." #: syncthing_gtk/app.py:617 msgid "Syncthing has been shut down." msgstr "Syncthing został wyłączony." #: syncthing_gtk/app.py:621 syncthing_gtk/app.py:1499 msgid "Syncthing is restarting." msgstr "Syncthing się restartuje." #: syncthing_gtk/app.py:621 syncthing_gtk/app.py:1499 msgid "Please wait" msgstr "Proszę czekać" #: syncthing_gtk/app.py:644 #, python-format msgid "Connecting to Syncthing daemon at %s..." msgstr "Łączenie z demonem Syncthing na %s..." #: syncthing_gtk/app.py:649 #, python-format msgid "Waiting for Syncthing daemon at %s..." msgstr "Czekanie na demona Syncthing na %s..." #: syncthing_gtk/app.py:664 msgid "Your syncthing daemon is too old." msgstr "Twój demon Syncthing jest za stary." #: syncthing_gtk/app.py:664 msgid "Attempting to download recent, please wait..." msgstr "Próbuję pobrać nowszą wersję, proszę czekać..." #: syncthing_gtk/app.py:670 msgid "" "Cannot authorize with daemon. Please, use WebUI to generate API key or " "disable password authentication." msgstr "Nie można autoryzować połączenia z demonem. Proszę użyć interfejsu Web, żeby wygenerować klucz API lub wyłączyć uwierzytelnianie za pomocą hasła." #: syncthing_gtk/app.py:672 #, python-format msgid "" "Your syncthing daemon is too old.\n" "Please, upgrade syncthing package at least to version %s and try again." msgstr "Twój demon Syncthing jest za stary.\nZaktualizuj pakiet Syncthing do najnowszej wersji %s i spróbuj ponownie." #: syncthing_gtk/app.py:674 msgid "" "Sorry, connecting to HTTPS is not supported on this platform.\n" "Please, use WebUI to disable HTTPS try again." msgstr "Przepraszamy, ale połączenie po HTTPS nie jest możliwe na tej platformie.\nProszę użyć interfejsu Web, żeby wyłączyć HTTPS i spróbować ponownie." #: syncthing_gtk/app.py:677 msgid "Connection to daemon failed. Check your configuration and try again." msgstr "Połączenie z demonem nie udane. Sprawdź swoją konfigurację i spróbuj ponownie." #: syncthing_gtk/app.py:678 syncthing_gtk/app.py:1992 #: syncthing_gtk/editordialog.py:314 msgid "Error message:" msgstr "Wiadomość błędu:" #: syncthing_gtk/app.py:689 msgid "More info" msgstr "Więcej informacji" #: syncthing_gtk/app.py:715 msgid "" "The configuration has been saved but not activated.\n" "Syncthing must restart to activate the new configuration." msgstr "Konfiguracja została zapisana ale nie jest aktywna.\nSyncthing musi zostać uruchomiony ponownie aby aktywować nową konfigurację." #: syncthing_gtk/app.py:717 msgid "_Restart" msgstr "_Restartuj" #: syncthing_gtk/app.py:784 #, python-format msgid "%(device)s wants to share folder \"%(folder)s\". Add new folder?" msgstr "%(device)s chce współdzielić katalog \"%(folder)s\". Dodać nowy folder?" #: syncthing_gtk/app.py:791 syncthing_gtk/app.py:813 msgid "_Add" msgstr "_Dodaj" #: syncthing_gtk/app.py:806 #, python-format msgid "" "Device \"%(name)s\" (%(device)s) at IP \"%(ip)s\" wants to " "connect. Add new device?" msgstr "Urządzenie \"%(name)s\" (%(device)s) na IP \"%(ip)s\" chcę się połączyć. Dodać nowe urządzenie?" #: syncthing_gtk/app.py:814 msgid "_Ignore" msgstr "_Ignoruj" #: syncthing_gtk/app.py:832 msgid "RAM Utilization" msgstr "Użycie RAM" #: syncthing_gtk/app.py:833 msgid "CPU Utilization" msgstr "Użycie CPU" #: syncthing_gtk/app.py:834 syncthing_gtk/app.py:1353 msgid "Download Rate" msgstr "Prędkość pobierania" #: syncthing_gtk/app.py:835 syncthing_gtk/app.py:1354 msgid "Upload Rate" msgstr "Prędkość wysyłania" #: syncthing_gtk/app.py:836 msgid "Announce Server" msgstr "Odnajdywanie" #: syncthing_gtk/app.py:837 syncthing_gtk/app.py:1356 msgid "Version" msgstr "Wersja" #: syncthing_gtk/app.py:860 syncthing_gtk/editordialog.py:394 msgid "disabled" msgstr "wyłączono" #: syncthing_gtk/app.py:862 msgid "Online" msgstr "Online" #: syncthing_gtk/app.py:862 msgid "offline" msgstr "offline" #: syncthing_gtk/app.py:864 #, python-format msgid "%(online)s/%(total)s online" msgstr "%(online)s/%(total)s online" #: syncthing_gtk/app.py:891 syncthing_gtk/app.py:1357 #: syncthing_gtk/app.py:1382 msgid "Never" msgstr "Nigdy" #: syncthing_gtk/app.py:899 syncthing_gtk/app.py:1691 #: syncthing_gtk/app.py:1692 msgid "Paused" msgstr "Pauza" #: syncthing_gtk/app.py:899 syncthing_gtk/app.py:924 syncthing_gtk/app.py:939 #: syncthing_gtk/infobox.py:60 msgid "Disconnected" msgstr "Rozłączono" #: syncthing_gtk/app.py:916 msgid "Connected" msgstr "Połączono" #: syncthing_gtk/app.py:945 syncthing_gtk/app.py:980 syncthing_gtk/app.py:1030 #: syncthing_gtk/app.py:1031 syncthing_gtk/app.py:1070 msgid "Up to Date" msgstr "Aktualny" #: syncthing_gtk/app.py:966 syncthing_gtk/app.py:967 syncthing_gtk/app.py:968 msgid "Files" msgstr "Pliki" #: syncthing_gtk/app.py:980 syncthing_gtk/app.py:1068 msgid "Cluster out of sync" msgstr "Grupa niezsynchronizowana" #: syncthing_gtk/app.py:995 msgid "Stopped" msgstr "Zatrzymano" #: syncthing_gtk/app.py:998 syncthing_gtk/app.py:1005 msgid "Error" msgstr "Błąd" #: syncthing_gtk/app.py:1024 #, python-format msgid "Synchronizing '%s'" msgstr "Synchronizowanie '%s'" #: syncthing_gtk/app.py:1026 #, python-format msgid "Synchronizing %s folders" msgstr "Synchronizowanie %s folderów" #: syncthing_gtk/app.py:1035 syncthing_gtk/app.py:1036 msgid "All devices offline" msgstr "Wszystkie urządzenia są offline" #: syncthing_gtk/app.py:1040 syncthing_gtk/app.py:1041 msgid "Connecting to Syncthing daemon..." msgstr "Łączenie do demona Syncthing...." #: syncthing_gtk/app.py:1079 msgid "Unshared" msgstr "Niewspółdzielone" #: syncthing_gtk/app.py:1082 msgid "Offline" msgstr "Offline" #: syncthing_gtk/app.py:1176 msgid "Hide Window" msgstr "Ukryj okno" #: syncthing_gtk/app.py:1190 app.glade:651 msgid "Show Window" msgstr "Pokaż okno" #: syncthing_gtk/app.py:1239 msgid "Syncthing daemon doesn't appear to be running." msgstr "Prawdopodobnie demon Syncthing nie jest uruchomiony." #: syncthing_gtk/app.py:1240 msgid "Start it now?" msgstr "Uruchomić go teraz?" #: syncthing_gtk/app.py:1243 msgid "Always start daemon automatically" msgstr "Uruchamiaj demona automatycznie" #: syncthing_gtk/app.py:1292 msgid "Folder ID" msgstr "ID folderu" #: syncthing_gtk/app.py:1293 msgid "Path" msgstr "Ścieżka" #: syncthing_gtk/app.py:1294 msgid "Global State" msgstr "Status globalny" #: syncthing_gtk/app.py:1295 msgid "Local State" msgstr "Status lokalny" #: syncthing_gtk/app.py:1296 msgid "Out Of Sync" msgstr "Niezsynchronizowane" #: syncthing_gtk/app.py:1297 msgid "Folder Type" msgstr "Typ folderu" #: syncthing_gtk/app.py:1298 msgid "Ignore Permissions" msgstr "Zignoruj uprawnienia" #: syncthing_gtk/app.py:1299 msgid "Rescan Interval" msgstr "Interwał skanowania" #: syncthing_gtk/app.py:1300 msgid "Shared With" msgstr "Współdzielony z" #: syncthing_gtk/app.py:1324 syncthing_gtk/app.py:1325 #: syncthing_gtk/app.py:1381 msgid "Yes" msgstr "Tak" #: syncthing_gtk/app.py:1324 syncthing_gtk/app.py:1325 #: syncthing_gtk/app.py:1381 msgid "No" msgstr "Nie" #: syncthing_gtk/app.py:1327 msgid "(watch)" msgstr "(obserwuj)" #: syncthing_gtk/app.py:1341 msgid "Unused" msgstr "Nieużywane" #: syncthing_gtk/app.py:1350 msgid "Address" msgstr "Adres" #: syncthing_gtk/app.py:1351 msgid "Synchronization" msgstr "Synchronizacja" #: syncthing_gtk/app.py:1352 msgid "Compression" msgstr "Kompresja" #: syncthing_gtk/app.py:1355 msgid "Introducer" msgstr "Wprowadzający" #: syncthing_gtk/app.py:1357 msgid "Last Seen" msgstr "Ostatnio widziany" #: syncthing_gtk/app.py:1378 device-edit.glade:22 msgid "All Data" msgstr "Wszystkie dane" #: syncthing_gtk/app.py:1379 device-edit.glade:26 folder-edit.glade:78 msgid "Off" msgstr "Wyłączono" #: syncthing_gtk/app.py:1375 msgid "Send Only" msgstr "Tylko wyślij" #: syncthing_gtk/app.py:1375 msgid "Send & Receive" msgstr "Wyślij i odbierz" #: syncthing_gtk/app.py:1380 device-edit.glade:30 msgid "Metadata Only" msgstr "Tylko metadane" #: syncthing_gtk/app.py:1522 msgid "Exiting." msgstr "Zamykanie." #: syncthing_gtk/app.py:1523 msgid "Shutdown Syncthing daemon as well?" msgstr "Czy wyłączyć również demona Syncthing?" #: syncthing_gtk/app.py:1528 msgid "Always do same; Don't show this window again" msgstr "Rób zawsze to samo. Nie pokazuj ponownie tego okna" #: syncthing_gtk/app.py:1768 #, python-format msgid "Do you really want to permanently stop synchronizing directory '%s'?" msgstr "Czy chcesz na stałe przestać synchronizować katalog '%s' ?" #: syncthing_gtk/app.py:1770 #, python-format msgid "Do you really want remove device '%s' from Syncthing?" msgstr "Czy na pewno chcesz usunąć urządzanie '%s' z Syncthing?" #: syncthing_gtk/app.py:1838 msgid "Syncthing-Inotify Output" msgstr "Wyjście Syncthing-Inotify" #: syncthing_gtk/app.py:1844 msgid "Syncthing-Inotify is unavailable or failed to start" msgstr "Nie dostępny lub nie można uruchomić Syncthing-Inotify" #: syncthing_gtk/app.py:1991 msgid "Failed to start Syncthing daemon." msgstr "Nie udało się uruchomić demona Syncthing." #: syncthing_gtk/app.py:1993 msgid "" "Please, check your installation or set new path to Syncthing daemon binary." msgstr "Sprawdź swoją instalację lub ustaw nową ścieżkę do demona Syncthing." #: syncthing_gtk/daemonsettings.py:24 msgid "Syncthing Daemon Settings" msgstr "Ustawienia demona Syncthing" #: syncthing_gtk/deviceeditor.py:24 msgid "" "The entered device ID does not look valid. It should be a 52 character " "string consisting of letters and numbers, with spaces and dashes being " "optional." msgstr "Wprowadzony ID urządzenia wydaje się być błędny. ID powinien posiadać 52 znaki, litery i cyfry. Spacje i myślniki są opcjonalne." #: syncthing_gtk/editordialog.py:312 msgid "Failed to load configuration from daemon." msgstr "Nie udało się załadować konfiguracji demona." #: syncthing_gtk/editordialog.py:313 msgid "Try again." msgstr "Spróbuj ponownie." #: syncthing_gtk/editordialog.py:387 syncthing_gtk/editordialog.py:396 #, python-format msgid "%ss" msgstr "%ss" #: syncthing_gtk/editordialog.py:402 #, python-format msgid "%s%%" msgstr "%s%%" #: syncthing_gtk/editordialog.py:409 msgid "no limit" msgstr "bez limitu" #: syncthing_gtk/editordialog.py:411 #, python-format msgid "%s KiB/s" msgstr "%s KB/s" #: syncthing_gtk/editordialog.py:418 msgid "never delete" msgstr "nigdy nie usuwaj" #: syncthing_gtk/editordialog.py:420 #, python-format msgid "%s day" msgstr "%s dzień" #: syncthing_gtk/editordialog.py:422 #, python-format msgid "%s days" msgstr "%s dni" #: syncthing_gtk/editordialog.py:455 msgid "Failed to save configuration." msgstr "Nie udało się zapisać konfiguracji." #: syncthing_gtk/finddaemondialog.py:24 find-daemon.glade:7 msgid "Can't invoke the daemon" msgstr "Nie mogę połączyć się z demonem" #: syncthing_gtk/finddaemondialog.py:26 msgid "Syncthing binary" msgstr "Binarka Syncthing" #: syncthing_gtk/finddaemondialog.py:28 syncthing_gtk/finddaemondialog.py:37 msgid "Syncthing daemon binary cannot be found." msgstr "Nie można odnaleźć binarki demona Syncthing." #: syncthing_gtk/finddaemondialog.py:29 #, python-format msgid "" "If you have Syncthing installed, please, set path to %s below or click on " "Download button to download latest Syncthing package." msgstr "Jeśli już zainstalowałeś Syncthing, poniżej ustaw ścieżkę do %s lub kliknij Download aby pobrać najnowszą wersję Syncthing." #: syncthing_gtk/finddaemondialog.py:38 #, python-format msgid "If you have Syncthing installed, please, set path to %s below" msgstr "Jeśli już zainstalowałeś Syncthing, poniżej ustaw ścieżkę do %s" #: syncthing_gtk/finddaemondialog.py:82 syncthing_gtk/wizard.py:411 msgid "Cannot download Syncthing daemon." msgstr "Nie udało się pobrać demona Syncthing." #: syncthing_gtk/finddaemondialog.py:83 syncthing_gtk/wizard.py:412 #, python-format msgid "This platform (%s) is not supported" msgstr "Platforma (%s) nie jest wspierana" #: syncthing_gtk/finddaemondialog.py:100 msgid "Downloading..." msgstr "Pobieranie..." #: syncthing_gtk/finddaemondialog.py:163 syncthing_gtk/stdownloader.py:251 #: syncthing_gtk/stdownloader.py:279 msgid "Download failed." msgstr "Nie udało się pobrać." #: syncthing_gtk/finddaemondialog.py:185 syncthing_gtk/wizard.py:458 msgid "Download finished." msgstr "Pobieranie ukończone." #: syncthing_gtk/foldereditor.py:45 msgid "Select Folder for new Folder" msgstr "Wybierz folder dla nowego folderu" #: syncthing_gtk/foldereditor.py:166 syncthing_gtk/foldereditor.py:167 msgid "Please, install pyinotify package to use this feature" msgstr "Zainstaluj paczkę pyintify aby użyć tej funkcji" #: syncthing_gtk/ignoreeditor.py:44 msgid "File location:" msgstr "Położenie pliku:" #: syncthing_gtk/notifications.py:120 #, python-format msgid "Unexpected folder ID sent from device \"%s\"." msgstr "Nieoczekiwany ID folderu wysłany z urządzenia \"%s\"." #: syncthing_gtk/notifications.py:124 #, python-format msgid "Device \"%s\" is trying to connect to syncthing daemon." msgstr "Urządzenie \"%s\" próbuje się połączyć do demona Syncthing." #: syncthing_gtk/notifications.py:153 #, python-format msgid "Synchronization of folder '%s' is completed." msgstr "Synchronizacja folderu '%s' zakończona." #: syncthing_gtk/notifications.py:160 #, python-format msgid "%(hostname)s: Downloaded '%(filename)s' to reflect remote changes." msgstr "%(hostname)s: Pobrano '%(filename)s' aby zsynchronizować zdalne zmiany." #: syncthing_gtk/notifications.py:165 #, python-format msgid "%(hostname)s: Deleted '%(filename)s' to reflect remote changes." msgstr "%(hostname)s: Usunięto '%(filename)s' aby zsynchronizować zdalne zmiany." #: syncthing_gtk/notifications.py:168 #, python-format msgid "%(hostname)s: Downloaded %(updated)s files to reflect remote changes." msgstr "%(hostname)s: Pobrano '%(updated)s' aby zsynchronizować zdalne zmiany." #: syncthing_gtk/notifications.py:171 #, python-format msgid "%(hostname)s: Deleted %(deleted)s files to reflect remote changes." msgstr "%(hostname)s: Usunięto '%(deleted)s' aby zsynchronizować zdalne zmiany." #: syncthing_gtk/notifications.py:175 #, python-format msgid "" "%(hostname)s: downloaded %(updated)s files and deleted %(deleted)s files to " "reflect remote changes." msgstr "%(hostname)s: pobrano '%(updated)s' i usunięto %(deleted)s aby zsynchronizować zdalne zmiany." #: syncthing_gtk/statusicon.py:48 msgid "Syncthing" msgstr "Syncthing" #: syncthing_gtk/stdownloader.py:174 syncthing_gtk/stdownloader.py:217 #: syncthing_gtk/stdownloader.py:313 syncthing_gtk/stdownloader.py:344 msgid "Failed to determine latest Syncthing version." msgstr "Nie udało się ustalić wersji demona Syncthing." #: syncthing_gtk/stdownloader.py:236 msgid "Failed to create temporaly file." msgstr "Nie udało się utworzyć pliku tymczasowego." #: syncthing_gtk/stdownloader.py:294 msgid "Downloaded file is corrupted." msgstr "Pobrany plik jest uszkodzony." #: syncthing_gtk/tools.py:192 #, python-format msgid "~%s hours ago" msgstr "~%s godzin temu" #: syncthing_gtk/tools.py:194 #, python-format msgid "%s minutes ago" msgstr "%s minut temu" #: syncthing_gtk/tools.py:196 #, python-format msgid "%s seconds ago" msgstr "%s sekund temu" #: syncthing_gtk/tools.py:197 msgid "just now" msgstr "teraz" #: syncthing_gtk/tools.py:199 #, python-format msgid "%s days ago" msgstr "%s dni temu" #: syncthing_gtk/tools.py:203 #, python-format msgid "in %s days" msgstr "w ciągu %s dni" #: syncthing_gtk/tools.py:205 #, python-format msgid "~%s hours from now" msgstr "~%s godzin od teraz" #: syncthing_gtk/tools.py:207 #, python-format msgid "%s minutes from now" msgstr "%s minut od teraz" #: syncthing_gtk/tools.py:209 #, python-format msgid "%s seconds from now" msgstr "%s sekund od teraz" #: syncthing_gtk/tools.py:210 msgid "in a moment" msgstr "za chwilę" #: syncthing_gtk/uisettingsdialog.py:58 msgid "UI Settings" msgstr "Ustawienia UI" #: syncthing_gtk/uisettingsdialog.py:70 msgid "Unlimited" msgstr "Nielimitowane" #: syncthing_gtk/uisettingsdialog.py:107 #, python-format msgid "Install %(package)s package to enable %(feature)s support" msgstr "Zainstaluj paczkę %(package)s aby włączyć funkcje %(feature)s" #: syncthing_gtk/uisettingsdialog.py:312 msgid "Browse for Syncthing binary" msgstr "Poszukaj binarki Syncthing" #: syncthing_gtk/wizard.py:53 msgid "First run wizard" msgstr "Asystent pierwszego uruchomienia" #: syncthing_gtk/wizard.py:137 #, python-format msgid "Please, check error log and fill bug report on %s." msgstr "Sprawdź log błędów i wypełnij raport na %s." #: syncthing_gtk/wizard.py:141 msgid "Display error log" msgstr "Pokaż log błędów" #: syncthing_gtk/wizard.py:198 msgid "Welcome to Syncthing-GTK first run wizard!" msgstr "Witaj w przewodniku startu Syncthing-GTK!" #: syncthing_gtk/wizard.py:200 msgid "It looks like you never have used Syncthing." msgstr "Wygląda na to, że nigdy nie używałeś Syncthing." #: syncthing_gtk/wizard.py:201 msgid "Initial configuration should be created." msgstr "Początkowa konfiguracja powinna zostać utworzona." #: syncthing_gtk/wizard.py:202 msgid "" "Continue this wizard to create a Syncthing configuration file or abort it to exit." msgstr "Kontynuuj z kreatorem, aby utworzyć plik konfiguracyjny Syncthing lub przerwij go, aby zakończyć." #: syncthing_gtk/wizard.py:204 #, python-format msgid "" "If you already had Syncthing daemon configured, please, exit this wizard and" " check your %s folder" msgstr "Jeśli już posiadasz skonfigurowanego demona Syncthing, wyjdź z tego asystenta i sprawdź swój folder %s" #: syncthing_gtk/wizard.py:220 msgid "Searching for Syncthing daemon." msgstr "Szukanie demona Syncthing." #: syncthing_gtk/wizard.py:222 syncthing_gtk/wizard.py:394 msgid "Please wait..." msgstr "Proszę czekać..." #: syncthing_gtk/wizard.py:270 syncthing_gtk/wizard.py:287 msgid "Syncthing daemon not found." msgstr "Nie znaleziono demona Syncthing." #: syncthing_gtk/wizard.py:271 msgid "Please, use package manager to install the Syncthing package." msgstr "Użyj menedżera paczek aby zainstalować Syncthing." #: syncthing_gtk/wizard.py:283 msgid "download latest binary" msgstr "pobierz ostatnią wersję" #: syncthing_gtk/wizard.py:288 syncthing_gtk/wizard.py:302 #, python-format msgid "" "Please, use package manager to install the Syncthing package or " "%(download_link)s from Syncthing page and save it to your %(target)s " "directory." msgstr "Użyj menedżera paczek aby zainstalować Syncthing lub pobierz paczkę %(download_link)s ze strony Syncthing i zapisz w folderze %(target)s ." #: syncthing_gtk/wizard.py:296 msgid "Syncthing daemon is too old." msgstr "Demon Syncthing jest za stary." #: syncthing_gtk/wizard.py:297 #, python-format msgid "" "Syncthing-GTK needs Syncthing daemon %(min)s or newer, but only %(actual)s " "were found." msgstr "Syncthing-GTK potrzebuje demona Syncthing w wersji %(min)s lub nowszego a znaleziono wersję %(actual)s ." #: syncthing_gtk/wizard.py:309 msgid "Alternatively, Syncthing-GTK can download Syncthing binary" msgstr "Opcjonalnie, Syncthing-GTK może pobrać binarkę Syncthing" #: syncthing_gtk/wizard.py:310 #, python-format msgid "to %s and keep it up-to-date, but this option is meant as" msgstr "aby %s i utrzymać to zaktualizowane, ta opcja to oznacza" #: syncthing_gtk/wizard.py:312 msgid "last resort and generally not suggested." msgstr "w ostateczności ale nie jest polecane." #: syncthing_gtk/wizard.py:315 msgid "_Download Syncthing binary" msgstr "_Pobierz binarkę Syncthing" #: syncthing_gtk/wizard.py:319 msgid "Auto_update downloaded binary" msgstr "Auro_aktualizacja pobranej binarki" #: syncthing_gtk/wizard.py:375 msgid "Syncthing daemon binary found." msgstr "Nie znaleziono demona Syncthing." #: syncthing_gtk/wizard.py:377 syncthing_gtk/wizard.py:460 msgid "Binary path:" msgstr "Ścieżka binarki:" #: syncthing_gtk/wizard.py:378 msgid "Version:" msgstr "Wersja:" #: syncthing_gtk/wizard.py:393 msgid "Downloading Syncthing daemon." msgstr "Pobieranie demona Syncthing." #: syncthing_gtk/wizard.py:441 msgid "Failed to download Syncthing daemon package." msgstr "Nie udało się pobrać demona Syncthing." #: syncthing_gtk/wizard.py:472 msgid "Syncthing is generating RSA key and certificate." msgstr "Syncthing generuje certyfikat i klucz RSA." #: syncthing_gtk/wizard.py:473 msgid "This may take a while..." msgstr "To zajmie chwilę..." #: syncthing_gtk/wizard.py:515 msgid "Failed to generate keys" msgstr "Nie udało się wygenerować kluczy" #: syncthing_gtk/wizard.py:516 msgid "Syncthing daemon failed to generate RSA key or certificate." msgstr "Nie udało się wygenerować certyfikatu i klucza RSA." #: syncthing_gtk/wizard.py:526 msgid "WebUI setup" msgstr "Ustawienia WebUI" #: syncthing_gtk/wizard.py:528 msgid "" "Syncthing can be managed remotely using WebUI and even if you are going to " "use Syncthing-GTK, WebUI needs to be enabled, as Syncthing-GTK uses it to " "communicate with the Syncthing daemon." msgstr "Syncthing może być zarządzany zdalnie używając WebUI, nawet jeśli chcesz używać Syncthing-GTK. WebUI musi być aktywowane, ponieważ jest używane przez Syncthing-GTK do komunikacji z demonem Syncthing." #: syncthing_gtk/wizard.py:533 msgid "" "If you prefer to be able to manage Syncthing remotely, over the internet or " "on your local network, select listen on all interfaces and set " "username and password to protect Syncthing from unauthorized access." msgstr "Jeśli chcesz zarządzać Syncthing przez internet lub LAN, zaznacz nasłuchuj na wszystkich interfejsach oraz ustaw użytkownika i hasło dla zabezpieczenia Syncthing przed nieautoryzowanym dostępem." #: syncthing_gtk/wizard.py:538 msgid "" "Otherwise, select listen on localhost, so only users and programs on " "this computer will be able to interact with Syncthing." msgstr "W przeciwnym razie zaznacz nasłuchuj tylko lokalnie przez co tylko programy i użytkownicy na tym komputerze będą mogli komunikować się z Syncthing." #: syncthing_gtk/wizard.py:544 msgid "WebUI Listen Addresses" msgstr "Adres nasłuchu WebUI" #: syncthing_gtk/wizard.py:545 msgid "Listen on _localhost" msgstr "Nasłuchuj na _localhost" #: syncthing_gtk/wizard.py:547 msgid "Listen on _all interfaces" msgstr "Nasłuchuj na _wszystkich interfejsach" #: syncthing_gtk/wizard.py:554 msgid "_Username" msgstr "_Użytkownik" #: syncthing_gtk/wizard.py:555 msgid "_Password" msgstr "_Hasło" #: syncthing_gtk/wizard.py:609 msgid "Saving settings..." msgstr "Zapisuje konfigurację..." #: syncthing_gtk/wizard.py:610 msgid "Checking for available port..." msgstr "Sprawdzanie dostępności portu..." #: syncthing_gtk/wizard.py:631 msgid "Failed to find unused port for listening." msgstr "Nie udało się znaleźć wolnego portu dla nasłuchu." #: syncthing_gtk/wizard.py:632 msgid "Please, check your firewall settings and try again." msgstr "Proszę sprawdź ustawienia zapory i spróbuj ponownie." #: syncthing_gtk/wizard.py:646 msgid "Saving..." msgstr "Zapisywanie..." #: syncthing_gtk/wizard.py:678 msgid "Failed to load Syncthing configuration" msgstr "Nie udało się wczytać konfiguracji Syncthing" #: syncthing_gtk/wizard.py:705 msgid "Failed to modify Syncthing configuration" msgstr "Nie udało się zmodyfikować konfiguracji Syncthing" #: syncthing_gtk/wizard.py:715 msgid "Failed to save Syncthing configuration" msgstr "Nie udało się zapisać konfiguracji Syncthing" #: syncthing_gtk/wizard.py:729 msgid "Done." msgstr "Gotowe." #: syncthing_gtk/wizard.py:731 msgid "Syncthing has been successfully configured." msgstr "Syncthing został pomyślnie skonfigurowany." #: syncthing_gtk/wizard.py:733 msgid "" "You can configure more details later, in UI Settings and Daemon " "Settings menus in main window of application." msgstr "Więcej ustawień możesz zmienić później w menu Ustawienia UI oraz Ustawienia demona w menu głównym." #: about.glade:7 msgid "About Syncthing-GTK" msgstr "O Syncthing-GTK" #: about.glade:10 msgid "GTK GUI and notification area icon for Syncthing" msgstr "Ikona Syncthing dla GTK GUI i panelu powiadomień" #: about.glade:12 msgid "GitHub" msgstr "GitHub" #: app.glade:239 app.glade:420 app.glade:802 msgid "Open _Web Interface" msgstr "Otwórz interfejs _Web" #: app.glade:251 app.glade:424 app.glade:814 msgid "Display _Daemon Output" msgstr "Pokaż wyjście _Demona" #: app.glade:263 msgid "Display Syncthing-Inotify Output" msgstr "Pokaż wyjście Syncthing-Inotify" #: app.glade:280 app.glade:430 msgid "UI _Settings" msgstr "_Ustawienia UI" #: app.glade:325 app.glade:451 msgid "Add Shared _Folder" msgstr "Dodaj współdzielony _Folder" #: app.glade:338 app.glade:455 msgid "Add _Device" msgstr "Dodaj _Urządzenie" #: app.glade:356 app.glade:461 msgid "Daemon _Settings" msgstr "_Ustawienia demona" #: app.glade:371 app.glade:465 app.glade:588 app.glade:788 msgid "Show _ID" msgstr "Pokaż _ID" #: app.glade:391 app.glade:471 msgid "Sh_utdown Daemon" msgstr "_Wyłącz demona" #: app.glade:404 app.glade:475 msgid "_Restart Daemon" msgstr "_Restartuj demona" #: app.glade:436 msgid "_About" msgstr "_O" #: app.glade:440 msgid "_Quit" msgstr "_Wyjdź" #: app.glade:490 msgid "Override Remote Changes" msgstr "Nadpisz zdalne zmiany" #: app.glade:519 msgid "Edit _Ignore Patterns" msgstr "Edytuj wzorce _Ignorowania" #: app.glade:547 msgid "_Rescan" msgstr "_Przeskanuj" #: app.glade:559 msgid "_Browse" msgstr "_Przeglądaj" #: app.glade:611 msgid "Resume" msgstr "Wznów" #: app.glade:641 msgid "Connecting to daemon..." msgstr "Łącznie do demona..." #: app.glade:669 msgid "S_top Syncthing" msgstr "_Zatrzymaj Syncthing" #: app.glade:683 msgid "Resume Sync_thing" msgstr "Wznów Sync_thing" #: app.glade:695 daemon-settings.glade:335 msgid "_Incoming Rate Limit" msgstr "Ograniczenie prędkości _pobierania" #: app.glade:709 app.glade:751 msgid "_Unlimited" msgstr "_Nielimitowane" #: app.glade:718 app.glade:760 msgid "_Other" msgstr "_Inne" #: app.glade:737 msgid "_Outgoing Rate Limit" msgstr "Ograniczenie prędkości _wysyłania" #: daemon-output.glade:7 msgid "Daemon Output" msgstr "Wyjście demona" #: daemon-settings.glade:106 msgid "Sync Protocol Listen Addresses" msgstr "Adres nasłuchu protokołu synchronizacji" #: daemon-settings.glade:136 msgid "Enable Local _Discovery" msgstr "Włącz lokalne _odnajdywanie" #: daemon-settings.glade:153 msgid "Enable _UPnP" msgstr "Włącz _UPnP" #: daemon-settings.glade:171 msgid "Local Discovery _Port" msgstr "_Port lokalnego odnajdywania" #: daemon-settings.glade:212 msgid "Outgoing _Rate Limit" msgstr "Ograniczenie prędkości _wysyłania" #: daemon-settings.glade:229 msgid "Open browser with _WebUI when daemon is starting" msgstr "Otwórz przeglądarkę z interfejsem _Web kiedy demon startuje" #: daemon-settings.glade:246 msgid "Enable _Anonymous Usage Reporting" msgstr "Włącz _anonimowe raportowanie użycia" #: daemon-settings.glade:262 msgid "Enable _Global Discovery" msgstr "Włącz _globalne odnajdowanie" #: daemon-settings.glade:281 msgid "Global Discovery _Servers" msgstr "_Serwery globalnego odnajdowania" #: device-edit.glade:102 msgid "Device _ID" msgstr "_ID urządzenia" #: device-edit.glade:134 msgid "Device _Name" msgstr "_Nazwa urządzenia" #: device-edit.glade:166 msgid "Shown instead of Device ID in the cluster status." msgstr "Pokaż zamiast ID urządzenia w statusie grupy." #: device-edit.glade:181 msgid "_Addresses" msgstr "_Adres" #: device-edit.glade:213 msgid "" "Enter comma separated \"ip:port\" addresses or \"dynamic\" to perform " "automatic discovery of the address." msgstr "Wprowadź rozdzielone przecinkiem adresy \"ip:port\" lub wpisz \"dynamic\" aby użyć automatycznego wykrywania adresu." #: device-edit.glade:242 msgid "Share _Folders" msgstr "_Foldery współdzielone" #: device-edit.glade:276 msgid "Select the folders to share with this device" msgstr "Wybierz foldery do współdzielenia z tym urządzeniem" #: device-edit.glade:287 msgid "_Introducer" msgstr "_Wprowadzający" #: device-edit.glade:308 msgid "" "Any devices configured on an introducer device will be added to this device " "as well." msgstr "Każde urządzenie dodane na urządzeniu wprowadzającego będzie dodane również na tym urządzeniu." #: device-edit.glade:323 msgid "_Compression" msgstr "_Kompresja" #: device-id.glade:14 msgid "Device Identification" msgstr "Identyfikacja urządzenia" #: device-id.glade:68 msgid "XYZ-123-ABC" msgstr "XYZ-123-ABC" #: find-daemon.glade:126 ui-settings.glade:821 msgid "_Browse..." msgstr "_Przeglądaj" #: find-daemon.glade:179 msgid "_Download..." msgstr "_Pobieranie..." #: folder-edit.glade:44 msgctxt "In File Pull Order combobox" msgid "Random" msgstr "Losowy" #: folder-edit.glade:48 msgctxt "In File Pull Order combobox" msgid "Alphabetic" msgstr "Alfabetycznie" #: folder-edit.glade:52 msgctxt "In File Pull Order combobox" msgid "Smallest First" msgstr "Mniejsze najpierw" #: folder-edit.glade:56 msgctxt "In File Pull Order combobox" msgid "Largest First" msgstr "Większe najpierw" #: folder-edit.glade:60 msgctxt "In File Pull Order combobox" msgid "Oldest First" msgstr "Najpierw najstarsze" #: folder-edit.glade:64 msgctxt "In File Pull Order combobox" msgid "Newest First" msgstr "Najpierw najnowsze" #: folder-edit.glade:82 msgid "Simple" msgstr "Prosty" #: folder-edit.glade:86 msgid "Staggered" msgstr "Rozbity" #: folder-edit.glade:90 msgid "Trashcan" msgstr "Kosz" #: folder-edit.glade:94 msgid "External" msgstr "Zewnętrzny" #: folder-edit.glade:171 msgid "Folder _Label" msgstr "_Etykieta folderu" #: folder-edit.glade:202 msgid "Short identifier for the folder. Must be the same on all devices." msgstr "Krótka nazwa folderu. Musi być taka sama na wszystkich urządzeniach." #: folder-edit.glade:216 msgid "_Path" msgstr "_Ścieżka" #: folder-edit.glade:234 msgid "" "Path to the folder on the local computer. Will be created if it does not " "exist." msgstr "Ścieżka do folderu na lokalnym komputerze. Jeśli nie istnieje, zostanie stworzony." #: folder-edit.glade:248 msgid "Rescan _Interval" msgstr "_Interwał skanowania" #: folder-edit.glade:293 msgid "Monitor filesystem for _changes" msgstr "Monitoruj system plików dla _zmian" #: folder-edit.glade:314 msgid "" "If enabled, changed, created and delete files are synchronized immediately, as long as Syncthing-GTK is running.\n" "Note: Using this along with short Rescan Interval (<300s) may consume a lot of resources." msgstr "Jeśli włączone, zmiana, dodanie lub usunięcie plików, będzie natychmiast synchronizowane dopóki działa Syncthing-GTK.\nNotka: Używanie tego wraz z małym czasem skanowania (<300s) może zużywać dużo zasobów." #: folder-edit.glade:343 msgid "Browse..." msgstr "Przeglądanie..." #: folder-edit.glade:366 msgid "Folder _ID" msgstr "_ID folderu" #: folder-edit.glade:396 msgid "" "Optional descriptive label for the folder. Can be different on each device." msgstr "Opcjonalna nazwa dla folderu. Może być inna na każdym urządzeniu." #: folder-edit.glade:418 msgid "_Send Only Folder" msgstr "Folder tylko do _wysyłania" #: folder-edit.glade:439 msgid "" "Files are protected from changes made on other devices, but changes made on " "this device will be sent to the rest of the cluster." msgstr "Pliki są zabezpieczone przed zmianami zrobionymi na innych urządzeniach ale zmiany z tego urządzenia zostaną rozesłane na inne urządzenia w grupie." #: folder-edit.glade:456 msgid "_Folder Settings" msgstr "Ustawienia _folderu" #: folder-edit.glade:476 msgid "Select the devices to share this folder with." msgstr "Wybierz urządzenie aby współdzielić z nim ten folder." #: folder-edit.glade:514 msgid "Share With _Devices" msgstr "Współdziel z _urządzeniem" #: folder-edit.glade:535 msgid "Versioning _Mode" msgstr "_Tryb wersjonowania" #: folder-edit.glade:590 msgid "" "Files are moved to date stamped versions in a .stversions folder when " "replaced or deleted by syncthing." msgstr "Pliki są datowane i przenoszone do folderu .stversions, kiedy zmieni je lub usunie syncthing." #: folder-edit.glade:605 msgid "_Keep Versions" msgstr "_Zachowuj wersje" #: folder-edit.glade:642 msgid "The number of old versions to keep, per file." msgstr "Liczba wersji pliku do zachowania." #: folder-edit.glade:671 msgid "" "Files are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing. Versions are automatically deleted if they are older than the maximum age or exceed the number of files allowed in an interval.\n" "\n" "The following intervals are used: for the first hour a version is kept every 30 seconds, for the first day a version is kept every hour, for the first 30 days a version is kept every day, until the maximum age a version is kept every week." msgstr "Pliki są datowane i przenoszone do folderu .stversions, kiedy zmieni je lub usunie syncthing. Wersje będą automatycznie kasowane jeśli przekroczą maksymalny wiek lub maksymalną liczbę plików w przedziale czasu.\n\nUżywane są następujące interwały: w pierwszej godzinie pliku, nowa wersja co 30 sekund, w pierwszym dniu pliku, nowa wersja co 1 godzinę, w pierwszych 30 dniach pliku, nowa wersja co 1 dzień, później co tydzień aż do maksymalnego wieku pliku." #: folder-edit.glade:688 msgid "Ma_ximum Age" msgstr "Ma_ksymalny wiek" #: folder-edit.glade:727 msgid "Versions _Path" msgstr "Ścieżka _wersji" #: folder-edit.glade:759 msgid "" "Path where versions should be stored (leave empty for the default " ".stversions folder)." msgstr "Ścieżka, gdzie pliki wersji mają być przechowywane (zostaw puste dla domyślnego folderu .stversions)." #: folder-edit.glade:787 msgid "" "Files are moved to .stversions folder when replaced or deleted by Syncthing" msgstr "Pliki są przenoszone do folderu .stversions, kiedy zmieni je lub usunie Syncthing." #: folder-edit.glade:801 msgid "Clean out _after" msgstr "Oczyść _po" #: folder-edit.glade:840 msgid "The number of days to keep files in the trash can." msgstr "Liczb dni trzymania plików w koszu." #: folder-edit.glade:869 msgid "" "An external command handles the versioning. It has to remove the file from " "the synced folder." msgstr "Zewnętrzna komenda odpowiedzialna za wersjonowanie. Musi usuwać plik z synchronizowanego folderu." #: folder-edit.glade:884 msgid "Command" msgstr "Komenda" #: folder-edit.glade:917 msgid "" "The first command line parameter is the folder path and the second parameter" " is the relative path in the folder." msgstr "Pierwszy parametr w linii komend jest ścieżką folderu a drugi relatywną ścieżką wewnątrz tego folderu." #: folder-edit.glade:953 msgid "File _Versioning" msgstr "_Wersjonowanie pliku" #: folder-edit.glade:982 msgid "Ignore P_ermissions" msgstr "Ignoruj _uprawnienia" #: folder-edit.glade:1003 msgid "" "File permission bits are ignored when looking for changes. Use on FAT " "filesystems." msgstr "Uprawnienia plików będą ignorowane przy szukaniu zmian. Użyj w systemie plików FAT." #: folder-edit.glade:1018 msgid "Minimum Free Disk Space" msgstr "Minimalna ilość wolnego miejsca" #: folder-edit.glade:1057 msgid "File Pull _Order" msgstr "_Kolejność pobierania plików" #: folder-edit.glade:1103 ui-settings.glade:954 msgid "_Advanced" msgstr "_Zaawansowane" #: ignore-editor.glade:8 msgid "Ignore Patterns" msgstr "Wzorce ignorowania" #: ignore-editor.glade:99 msgid "" "See Syncthing " "documentation for list of supported patterns" msgstr "Zobacz dokumentację Syncthing aby zobaczyć listę wspieranych wyrażeń." #: ignore-editor.glade:114 msgid "File location: " msgstr "Położenie pliku:" #: ui-settings.glade:27 msgid "Lowest" msgstr "Najniższy" #: ui-settings.glade:31 msgid "Low" msgstr "Niski" #: ui-settings.glade:35 msgid "Normal" msgstr "Normalny" #: ui-settings.glade:39 msgid "Above Normal" msgstr "Powyżej normalnego" #: ui-settings.glade:46 msgid "Syncthing-GTK Settings" msgstr "Ustawienia Syncthing-GTK" #: ui-settings.glade:69 msgid "Please, restart Syncthing-GTK to apply all changed settings" msgstr "Uruchom ponownie Syncthing-GTK aby zastosować wszystkie zmiany konfiguracji" #: ui-settings.glade:136 msgid "When starting and Syncthing daemon is not running..." msgstr "Kiedy startuje ale demon Syncthing nie działa...." #: ui-settings.glade:147 msgid "... _wait for daemon" msgstr "... _czekaj na demona" #: ui-settings.glade:164 msgid "... start daemon in _background" msgstr "… _uruchom demona w tle" #: ui-settings.glade:180 msgid "... _ask me what to do" msgstr "... _zapytaj mnie co robić" #: ui-settings.glade:199 msgid "When exiting after daemon was started in background..." msgstr "Kiedy wychodzi a demon był uruchomiony w tle..." #: ui-settings.glade:210 msgid "... terminate _daemon" msgstr "… _zakończ demona" #: ui-settings.glade:226 msgid "... leave daemon _running" msgstr "... _pozostaw demona uruchomionego" #: ui-settings.glade:242 msgid "... ask me w_hat to do" msgstr "... zapytaj mnie co _robić" #: ui-settings.glade:258 msgid "Us_e traditional window header" msgstr "Użyj tradycyjnego nagłówka okna" #: ui-settings.glade:278 msgid "Display desktop notifications for..." msgstr "Wyświetlaj powiadomienia dla..." #: ui-settings.glade:289 msgid "... file updates" msgstr "... zaktualizowanych plików" #: ui-settings.glade:304 msgid "... errors" msgstr "... błędów" #: ui-settings.glade:319 msgid "... synchronization completion" msgstr "... ukończenia synchronizacji" #: ui-settings.glade:334 msgid "Start Syncthing-GTK when I login to my desktop" msgstr "Uruchom Syncthing-GTK wraz z logowaniem do systemu" #: ui-settings.glade:350 msgid "Minimize to _tray on start" msgstr "Minimalizuj do _obszaru powiadomień przy starcie" #: ui-settings.glade:366 msgid "Use _icons in menu" msgstr "Pokaż _ikony w menu" #: ui-settings.glade:383 msgid "Display paths in directories panel" msgstr "Wyświetl ścieżki w panelu katalogów" #: ui-settings.glade:399 msgid "Force _dark theme" msgstr "_Wymuś ciemny motyw" #: ui-settings.glade:474 msgid "_Interface" msgstr "_Interfejs" #: ui-settings.glade:492 msgid "Integrate Syncthing with filemanagers" msgstr "Zintegruj Syncthing z menedżerami plików" #: ui-settings.glade:507 msgid "Nemo (Cinamon Desktop)" msgstr "Nemo (Cinnamon)" #: ui-settings.glade:524 msgid "Nautilus (Ubuntu/GNOME)" msgstr "Nautilus (GNOME)" #: ui-settings.glade:540 msgid "Caja (MATE Desktop)" msgstr "Caja (MATE)" #: ui-settings.glade:579 msgid "" "Note: You may need to restart your filemanager after toggling " "integration." msgstr "Informacja: Ponowne uruchomienie menedżera plików może być konieczne po włączeniu integracji." #: ui-settings.glade:598 msgid "_Integration" msgstr "_Integracja" #: ui-settings.glade:627 msgid "Keep Syncthing binary up-to-date" msgstr "Utrzymuj binarkę Syncthing zawsze aktualną" #: ui-settings.glade:647 msgid "" "If enabled, Syncthing-GTK will automatically check for new daemon releases " "and replace binary with latest version." msgstr "Jeśli włączone, Syncthing-GTK będzie automatycznie sprawdzał nową wersję demona, jeśli znajdzie to go zaktualizuje." #: ui-settings.glade:662 msgid "Daemon process priority" msgstr "Priorytet procesu demona" #: ui-settings.glade:698 msgid "" "Priority will be used only if \"start daemon in background\" option " "is checked on \"Interface\" page." msgstr "Priorytet będzie użyty tylko jeśli zaznaczono opcję \"uruchom demona w tle\" na karcie \"Interfejs\"." #: ui-settings.glade:713 msgid "Maximum number of CPU cores" msgstr "Maksymalna liczba rdzeni procesora" #: ui-settings.glade:731 msgid "" "Sets the maximum number of CPU cores for daemon to use. This value will be " "used only if \"start daemon in background\" option is checked on " "\"Interface\" page." msgstr "Ustaw maksymalną liczbę rdzeni procesora, których może używać demon. Ta wartość będzie użyta tylko jeśli zaznaczono opcję \"uruchom demona w tle\" na karcie \"Interfejs\"." #: ui-settings.glade:786 msgid "Daemon" msgstr "Demon" #: ui-settings.glade:808 msgid "" "This binary will be started when syncthing daemon is not running and " "\"start daemon in background\" option is checked on " "\"Interface\" page." msgstr "Ta binarka będzie uruchomiona jeśli demon syncthing nie działa oraz opcja \"uruchom demona w tle\" będzie zaznaczona na karcie \"Interfejs\"." #: ui-settings.glade:838 msgid "Syncthing binary location" msgstr "Położenie binarki Syncthing" #: ui-settings.glade:867 msgid "Daemon arguments and variables" msgstr "Zmienne oraz argumenty demona" #: ui-settings.glade:897 msgid "" "Space-separated list of arguments and environment variables passed when starting above binary\n" "\n" "Use VARIABLE=\"value\" to set variable and -argument=\"value\" (with dash) for argument.\n" "\n" "If you need to pass commandline to different command (such as logger or ionice), separate prefixed arguments with exclamation mark \"!\"\n" "\n" "Example:\n" " STTRACE=\"all\" logger -t /var/log/syncthing.log ! -logflags=10" msgstr "Lista argumentów (oddzielonych spacją) oraz zmiennych środowiskowych zastosowanych przy starcie binarki\n\nUżyj składni ZMIENNA=\"wartość\" aby ustawić zmienną oraz -argument=\"wartość\" (z minusem) aby podać argument.\n\nJeśli potrzebujesz podać polecenie do innej komendy (np. logger lub ionice), oddziel umieszczone argumenty wykrzyknikiem \"!\"\n\nPrzykład:\nSTTRACE=\"all\" logger-t /var/log/syncthing.log ! -logflags=10" #: ui-settings.glade:921 msgid "" "Warning: Changing settings on this page may prevent you from using " "Syncthing-GTK" msgstr "Ostrzeżenie: Zmiana ustawień na tej stronie mogą uniemożliwić używanie Syncthing-GTK" syncthing-gtk-0.9.4.4/locale/pt/000077500000000000000000000000001352162771300163505ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/locale/pt/LC_MESSAGES/000077500000000000000000000000001352162771300201355ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/locale/pt/LC_MESSAGES/syncthing-gtk.mo000066400000000000000000001022701352162771300232650ustar00rootroot00000000000000Q ,0>1p &; R]nQW/   : ,H!u]T -Z      g!!}!!!!! ! !"'"!G"i"$"D"" "##0#5H#]~## # # $ $8$$O$t$"$5$D$$% *%8%I%\%z%%%%%!%& )&e6&&&&&& &-&,''T')s''&')'((&/(V(!t(((((R(*)K0)g|))+>, O, Y, e, p,~,0,,, , ,r,n-P9.a.=.*//000&0)0(1(91"b1*1(191%2 92DD2,2 2 2223 &32363 =3J3 f3t333 33344 4444#4074Kh44 75C5X5p5Ou5V56 #6/62>63q6K656;'7c7=7o1888888899 #9-969vV99-9,:E: T:^:;;-; <;AH; ;;1;";;k;g< >. > <>J>d>l>>,>>>> >? ?1?K?(@0@.O@;~@@@@+A0=A7nAA AAVA6;BrB3B3BmB)aCCp#D2D-DDE#EE E E E+E "F,F5F gMggg4ygg$gghh4h:h?h Fh Ph ]hgh>|hQh iii#iiF jpQjjjjBjH7kdk<kO"lrlBmEm mmmn7n?nRncn n n!nn#;o5_o@oo oopp&p qVq uq qq)+rUr]rr t@tt!tu4uRu'buuu u u(uu& v3v=w,Uw2wVw& x&3xZxsxCx;xy -y ;y|\y@y*z:EzEzgz;.{j{j|Zl|<|}}&}~~~;~3Y~ ~~ ~ ~~(~~ 5,K%x @?>@ *Al  + 5 ?L lw# ̂ ׂ# 5? P[q   ΃ ك 1 # 1 ;BH3K,<&1 G~F2(mBqf,N@&> 0)5M}L+ =tW?U;y;u:94IQ66R%A/CC /"sV1Z9D'_ #)(:X oj $I20$+7!ve LJ\H@--EzBT47.*%ibwY.K ]dGlA*8g`HE#Pk'|?5aN" xQr8<![OcMp^h{J3>=OPSn DF%(device)s wants to share folder "%(folder)s". Add new folder?%(online)s/%(total)s online%s KiB/s%s day%s days%s days ago%s kB/s%s minutes ago%s minutes from now%s seconds ago%s seconds from now%s%%%ss(watch)... _ask me what to do... _wait for daemon... ask me w_hat to do... errors... file updates... leave daemon _running... start daemon in _background... synchronization completion... terminate _daemonNote: You may need to restart your filemanager after toggling integration.Warning: Changing settings on this page may prevent you from using Syncthing-GTKAbout Syncthing-GTKAbove NormalAdd Shared _FolderAdd _DeviceAddressAll DataAll devices offlineAllow Anonymous Usage Reporting?Alternatively, Syncthing-GTK can download Syncthing binaryAlways do same; Don't show this window againAlways start daemon automaticallyAn external command handles the versioning. It has to remove the file from the synced folder.Announce ServerAny devices configured on an introducer device will be added to this device as well.Attempting to download recent, please wait...Auto_update downloaded binaryBinary path:Browse for Syncthing binaryBrowse...CPU UtilizationCaja (MATE Desktop)Can't invoke the daemonCannot authorize with daemon. Please, use WebUI to generate API key or disable password authentication.Cannot download Syncthing daemon.Checking for available port...Clean out _afterCluster out of syncCommandCompressionConnectedConnected to Syncthing daemonConnecting to Syncthing daemon at %s...Connecting to Syncthing daemon...Connecting to daemon...Connection to Syncthing daemon lost.Connection to daemon failed. Check your configuration and try again.DaemonDaemon OutputDaemon _SettingsDaemon arguments and variablesDaemon process priorityDevice "%s" is trying to connect to syncthing daemon.Device "%(name)s" (%(device)s) at IP "%(ip)s" wants to connect. Add new device?Device IdentificationDevice _IDDevice _NameDisconnectedDisplay Syncthing-Inotify OutputDisplay _Daemon OutputDisplay desktop notifications for...Display error logDisplay paths in directories panelDo you really want remove device '%s' from Syncthing?Do you really want to permanently stop synchronizing directory '%s'?Done.Download RateDownload failed.Download finished.Downloaded file is corrupted.Downloading Syncthing %sDownloading Syncthing daemon.Downloading...Edit _Ignore PatternsEnable Local _DiscoveryEnable _Anonymous Usage ReportingEnable _Global DiscoveryEnable _UPnPEnter comma separated "ip:port" addresses or "dynamic" to perform automatic discovery of the address.ErrorError message:Exiting.ExternalExtracting update...Failed to create temporaly file.Failed to determine latest Syncthing version.Failed to download Syncthing daemon package.Failed to download upgrade: %sFailed to find unused port for listening.Failed to generate keysFailed to load Syncthing configurationFailed to load configuration from daemon.Failed to modify Syncthing configurationFailed to save Syncthing configurationFailed to save configuration.Failed to start Syncthing daemon.File Pull _OrderFile _VersioningFile location:File location: File permission bits are ignored when looking for changes. Use on FAT filesystems.FilesFiles are moved to .stversions folder when replaced or deleted by SyncthingFiles are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing.Files are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing. Versions are automatically deleted if they are older than the maximum age or exceed the number of files allowed in an interval. The following intervals are used: for the first hour a version is kept every 30 seconds, for the first day a version is kept every hour, for the first 30 days a version is kept every day, until the maximum age a version is kept every week.Files are protected from changes made on other devices, but changes made on this device will be sent to the rest of the cluster.First run wizardFolder IDFolder TypeFolder _IDFolder _LabelForce _dark themeGTK GUI and notification area icon for SyncthingGitHubGlobal Discovery _ServersGlobal StateHide WindowIf enabled, Syncthing-GTK will automatically check for new daemon releases and replace binary with latest version.If enabled, changed, created and delete files are synchronized immediately, as long as Syncthing-GTK is running. Note: Using this along with short Rescan Interval (<300s) may consume a lot of resources.If the reported data set is changed you will be prompted with this dialog again.If you already had Syncthing daemon configured, please, exit this wizard and check your %s folderIf you have Syncthing installed, please, set path to %s belowIf you have Syncthing installed, please, set path to %s below or click on Download button to download latest Syncthing package.If you prefer to be able to manage Syncthing remotely, over the internet or on your local network, select listen on all interfaces and set username and password to protect Syncthing from unauthorized access.Ignore P_ermissionsIgnore PatternsIgnore PermissionsIn File Pull Order comboboxAlphabeticIn File Pull Order comboboxLargest FirstIn File Pull Order comboboxNewest FirstIn File Pull Order comboboxOldest FirstIn File Pull Order comboboxRandomIn File Pull Order comboboxSmallest FirstInitial configuration should be created.Install %(package)s package to enable %(feature)s supportIntegrate Syncthing with filemanagersIntroducerIt is used to track common platforms, folder sizes and app versions.It looks like you never have used Syncthing.Keep Syncthing binary up-to-dateLast SeenListen on _all interfacesListen on _localhostLocal Discovery _PortLocal StateLowLowestMa_ximum AgeMaximum number of CPU coresMetadata OnlyMinimize to _tray on startMinimum Free Disk SpaceMonitor filesystem for _changesMore infoNautilus (Ubuntu/GNOME)Nemo (Cinamon Desktop)NeverNoNormalOffOfflineOnlineOpen _Web InterfaceOpen browser with _WebUI when daemon is startingOptional descriptive label for the folder. Can be different on each device.Otherwise, select listen on localhost, so only users and programs on this computer will be able to interact with Syncthing.Out Of SyncOutgoing _Rate LimitOverride Remote ChangesPathPath to the folder on the local computer. Will be created if it does not exist.Path where versions should be stored (leave empty for the default .stversions folder).PausedPlease waitPlease wait...Please, check error log and fill bug report on %s.Please, check your firewall settings and try again.Please, check your installation or set new path to Syncthing daemon binary.Please, install pyinotify package to use this featurePlease, restart Syncthing-GTK to apply all changed settingsPlease, use package manager to install the Syncthing package or %(download_link)s from Syncthing page and save it to your %(target)s directory.Please, use package manager to install the Syncthing package.Priority will be used only if "start daemon in background" option is checked on "Interface" page.RAM UtilizationRescan IntervalRescan _IntervalRestarting daemon...ResumeResume Sync_thingS_top SyncthingSaving settings...Saving...ScanningSearching for Syncthing daemon.See Syncthing documentation for list of supported patternsSelect Folder for new FolderSelect the devices to share this folder with.Select the folders to share with this deviceSend & ReceiveSend OnlySets the maximum number of CPU cores for daemon to use. This value will be used only if "start daemon in background" option is checked on "Interface" page.Sh_utdown DaemonShare With _DevicesShare _FoldersShared WithShort identifier for the folder. Must be the same on all devices.Show WindowShow _IDShown instead of Device ID in the cluster status.Shutdown Syncthing daemon as well?SimpleSorry, connecting to HTTPS is not supported on this platform. Please, use WebUI to disable HTTPS try again.Space-separated list of arguments and environment variables passed when starting above binary Use VARIABLE="value" to set variable and -argument="value" (with dash) for argument. If you need to pass commandline to different command (such as logger or ionice), separate prefixed arguments with exclamation mark "!" Example: STTRACE="all" logger -t /var/log/syncthing.log ! -logflags=10StaggeredStart Syncthing-GTK when I login to my desktopStart it now?Starting Syncthing daemonStoppedSync Protocol Listen AddressesSynchronizationSynchronization of folder '%s' is completed.Synchronizing %s foldersSynchronizing '%s'SyncingSyncthingSyncthing Daemon SettingsSyncthing binarySyncthing binary locationSyncthing can be managed remotely using WebUI and even if you are going to use Syncthing-GTK, WebUI needs to be enabled, as Syncthing-GTK uses it to communicate with the Syncthing daemon.Syncthing daemon binary cannot be found.Syncthing daemon binary found.Syncthing daemon doesn't appear to be running.Syncthing daemon failed to generate RSA key or certificate.Syncthing daemon is too old.Syncthing daemon not found.Syncthing has been shut down.Syncthing has been successfully configured.Syncthing is generating RSA key and certificate.Syncthing is probably restarting or has been shut down.Syncthing is restarting.Syncthing-GTKSyncthing-GTK SettingsSyncthing-GTK needs Syncthing daemon %(min)s or newer, but only %(actual)s were found.Syncthing-GTK started and running in notification areaSyncthing-Inotify OutputSyncthing-Inotify is unavailable or failed to startThe aggregated statistics are publicly available atThe configuration has been saved but not activated. Syncthing must restart to activate the new configuration.The encrypted usage report is sent daily.The entered device ID does not look valid. It should be a 52 character string consisting of letters and numbers, with spaces and dashes being optional.The first command line parameter is the folder path and the second parameter is the relative path in the folder.The number of days to keep files in the trash can.The number of old versions to keep, per file.This binary will be started when syncthing daemon is not running and "start daemon in background" option is checked on "Interface" page.This may take a while...This platform (%s) is not supportedTrashcanTry again.UI SettingsUI _SettingsUnexpected folder ID sent from device "%s".UnlimitedUnsharedUnusedUp to DateUpload RateUs_e traditional window headerUse _icons in menuVersionVersion:Versioning _ModeVersions _PathWaiting for Syncthing daemon at %s...WebUI Listen AddressesWebUI setupWelcome to Syncthing-GTK first run wizard!When exiting after daemon was started in background...When starting and Syncthing daemon is not running...XYZ-123-ABCYesYou can configure more details later, in UI Settings and Daemon Settings menus in main window of application.Your syncthing daemon is too old.Your syncthing daemon is too old. Please, upgrade syncthing package at least to version %s and try again._About_Add_Addresses_Advanced_Browse_Browse..._Compression_Download Syncthing binary_Download..._Folder Settings_Ignore_Incoming Rate Limit_Integration_Interface_Introducer_Keep Versions_Other_Outgoing Rate Limit_Password_Path_Quit_Rescan_Restart_Restart Daemon_Send Only Folder_Unlimited_Usernamedisableddownload latest binaryin %s daysin a momentjust nowlast resort and generally not suggested.never deleteno limitofflineto %s and keep it up-to-date, but this option is meant as~%s hours ago~%s hours from nowProject-Id-Version: syncthing-gtk Report-Msgid-Bugs-To: POT-Creation-Date: 2016-04-20 11:27+0200 PO-Revision-Date: 2017-09-23 02:19+0000 Last-Translator: kozec Language-Team: Portuguese (Brazil) (http://www.transifex.com/syncthing-gtk/syncthing-gtk/language/pt_BR/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: pt_BR Plural-Forms: nplurals=2; plural=(n > 1); %(device)s quer compartilhar a pasta "%(folder)s". Adicionar nova pasta?%(online)s/%(total)s conectados%s KiB/s%s dia%s dias%s dias atrás%s kB/s%s minutos atrás%s minutos a partir de agora%s segundos atrás%s segundos a partir de agora%s%%%ss(monitorada)... pergunte-me o que f_azer...aguardar pelo serviço... pergunte-me o que fa_zer...erros...arquivos atualizados...deixar o serviço _rodando...iniciar o serviço em plano de fundo...sincronização terminada...encerrar o serviçoNota: Você pode precisar reiniciar seu gerenciador de arquivos após mudar essa opção.Tenha cuidado! Mudar essas configurações pode te impedir de usar o Syncthing-GTK.Sobre o Syncthing-GTKAcima do normalAdicionar _pasta compartilhadaAdicionar _dispositivoEndereçosTodos os dadosTodos dispositivos desconectadosEnviar relatórios anônimos de uso?Alternativamente, Syncthing-GTK pode baixar o binário do Syncthing.Sempre; Não mostrar essa tela novamente.Sempre iniciar o serviço automaticamenteUm comando externo controla o versionamento. Ele tem que remover o arquivo da pasta sincronizada.Servidores de descoberta globalQuaisquer dispositivos configurados em um apresentador também serão adicionados a este dispositivo.Tentando baixar os mais recentes. Por favor, espere...Binário para atualização baixadoCaminho do binário:Explorar pelo binário do SyncthingExplorar...Uso de CPUCaja (MATE Desktop)Incapaz de chamar o serviçoNão autorizado pelo serviço. Por favor, use a Interface Web para gerar uma chave da API ou desabilite a autenticação por senha.Incapaz de baixar o serviço do Syncthing.Em busca de porta disponívelLimp_ar depois deGrupo de dispositivos fora de sincroniaComandoCompressãoConectadoConectado ao serviço do SyncthingConectando ao serviço do Syncthing às %s...Conectando ao serviço do Syncthing...Conectando com o serviço...Conexão com o serviço do Syncthing perdida.A conexão com o serviço do Syncthing falhou. Confira suas configurações e tente novamente.ServiçoRelatório de eventos do serviçoConfigurações do _serviçoArgumentos e variáveis do serviçoPrioridade do serviçoDispositivo "%s" tenta se conectar ao serviço do Syncthing.Dispositivo "%(name)s" (%(device)s) no IP "%(ip)s" quer se conectar. Adicionar novo dispositivo?Identificação de dispositivo_ID do dispositivo_Nome do dispositivoDesconectadoExibir relatório de eventos do Syncthing-InotifyExibir relatório _de eventos do serviçoExibir notificações na área de trabalho para...Exibir registro de errosExibir caminho no painel de pastasQuer mesmo remover o dispositivo '%s' do Syncthing?Quer mesmo para de sincronizar a pasta '%s' permanentemente?Feito.Velocidade de recepçãoFalha de download.Download terminado.O arquivo transferido está corrompido.Baixando Syncthing %sBaixando serviço do Syncthing.Baixando...Ed_itar filtrosHabilitar _descoberta localHabilitar Relatórios _anônimos de usoHabilitar descoberta _globalHabilitar _UPnPInsira endereços ("tcp://ip:porta", "tcp://host:porta") separados por vírgula ou "dynamic" para executar a descoberta automática do endereço.ErroMensagem de erro:Saindo.ExternoDescompactando atualizaçãoFalha em criar arquivo temporário.Falha em determinar a versão mais recente do Syncthing.Falha em baixar o serviço do Syncthing.Falha em baixar a atualização: %sFalha em encontrar uma porta livre para escutar.Falha em gerar as chavesFalha em carregar as configurações do SyncthingFalha em carregar as configurações do serviço.Falha em modificar as configurações do Syncthing.Falta em salvar as configurações do SyncthingFalha em salvar a configuração.Falha em iniciar o serviço do Syncthing.Ordem de retirada do arquivo_Versionamento de arquivosLocalização do arquivo:Localização do arquivo:Os bits de permissão de um arquivo são ignorados durante as verificações. Use em sistemas de arquivo FAT.ArquivosOs arquivos são movidos para a pasta .stversions quando substituídos ou apagados pelo Syncthing.Os arquivos são renomeados com suas datas na pasta .stversions após serem substituídos ou removidos pelo Syncthing.Os arquivos são renomeados com suas datas na pasta .stversions após serem substituídos ou removidos pelo Syncthing. As versões são automaticamente apagadas se elas são mais antigas do que a idade máxima ou excederem o número de arquivos permitido em um intervalo. São utilizados os seguintes intervalos: na primeira hora é guardada uma versão a cada 30 segundos, no primeiro dia é guardada uma versão a cada hora, nos primeiros 30 dias é guardada uma versão por dia e, até que atinja a idade máxima, é guardada uma versão por semana.Os arquivos estão protegidos contra alterações feitas em outros dispositivos, mas alterações feitas neste são enviadas aos outros.Assistente de primeira execuçãoID da pastaTipo de pasta_ID da pastaRótulo da pastaForçar _tema escuroGTK GUI e ícone da área de notificações para o SyncthingGitHub_Servidores de descoberta globalEstado globalOcultar janelaSe habilitado, Syncthing-GTK procurará automaticamente por novas versões do serviço e o atualizará com a mais recente.Se habilitado, arquivos criados e apagados são sincronizados imediatamente, desde que o Syncthing-GTK esteja rodando. Nota: Usar essa opção junto com um Intervalo entre verificações curto (menor do que 300s) pode consumir muitos recursos.Caso o formato dos dados seja alterado, seu consentimento será pedido novamente.Se o serviço do Syncthing já está configurado, por favor, saia desse assistente e confira sua pasta %sSe o Syncthing já está instalado, por favor, configure o caminho para %sSe você já tiver o Syncthing instalado, por favor, informe o caminho para o %s ou clique no botão Baixar para obter a sua versão mais recente.Se você prefere ser capaz de controlar o Syncthing remotamente, tanto pela internet quando si rede interna, selecione escutar em todas as interfaces e configure nome de usuário e seren senha para evitar acessos não autorizados.Ignorar p_ermissõesFiltrosIgnorar permissõesAlfabéticaMaior primeiroMais novo primeiroMais antigo primeiroAleatóriaMenor primeiroA configuração inicial precisa ser executada.Instalar pacote %(package)s para habilitar o suporte a %(feature)sIntegrar Syncthing com gerenciadores de arquivosApresentadorÉ utilizado para rastrear plataformas, tamanhos de pastas e versões da aplicação.Parece que você nunca usou o Syncthing.Manter o binário do Syncthing atualizadoVisto pela última vezEscutar em tod_as as interfacesEscutar em _localhost_Porta de descoberta localEstado localBaixaBaixíssimaIdade má_ximaMáximo de núcleos de CUSomente metadadosMinimizar para a área de no_tificações ao iniciarEspaço livre mínimo no discoMonitorar os arquivos por mudan_çasMais informaçõesNautilus (Ubuntu/GNOME)Nemo (Cinamon Desktop)NuncaNãoNormalDesligadaDesconectadoConectadoAbrir Interface _webQuando o serviço iniciar, abrir a interface _web no navegadorRótulo descritivo opcional para a pasta. Pode ser diferente em cada dispositivo.Caso contrário, selecione escutar em localhost para que apenas usuários e programas nesse computador sem capazes de interagir com o Synching.Fora de sincroniaLimite de velocidade de _envioSobrescrever modificações remotasCaminho da pastaCaminho para a pasta na máquina local. Será criado caso não exista.O caminho onde as versões serão salvas (deixe vazio para usar a pasta padrão .stversions dentro desta pasta).Em pausaPor favor, aguardePor favor, aguarde...Por favor, confira o registro de erros e abre um relatório em %s.Por favor, confira as configurações de seu firewall e tente novamente.Por favor, confira sua instalação ou configure um novo caminho para salvar o serviço do SyncthingPor favor, instale o pynotify para usar essa funcionalidade.Por favor, reinicie o Syncthing-GTK para aplicar as configurações modificadasPor favor, use o gerenciador de pacotes para instalar o Syncthing ou %(download_link)s do site do Syncthing e o salve no diretório %(target)s.Por favor, use o gerenciador de pacotes para instalar o Syncthing.Prioridade será aplicada apenas se a opção "iniciar serviço em segundo plano" estiver habilitada nas opções de "Interface".Uso de RAMIntervalo entre verificações_Intervalo entre verificaçõesReiniciando serviço...RetomarRetomar Sync_thingParar Sync_thingSalvando configurações...Salvando...VerificandoEm busca do serviço do SyncthingVeja a documentação do Syncthing para a lista de filtros suportadosEscolha a pasta a ser compartilhadaEscolha os dispositivos com que compartilhar a pasta.Selecione as pastas a serem compartilhadas com este dispositivo.Enviar & ReceberApenas envioMáximo de núcleos de CPU usados pelo serviço. Esse valor será usado apenas se a opção "iniciar serviço em segundo plano" estiver habilitada nas opções de "Interface".Desligar o serviçoCompartilhar com _dispositivosCompartilhar _pastas com o dispositivoCompartilhada comIdentificador obrigatório da pasta. Deve ser igual em todos os dispositivos do grupo.Exibir janelaExibir _IDMostrado no lugar do ID do dispositivo no indicador de estado do grupo. Será atualizado para o nome que o dispositivo divulga, caso seja deixado em branco.Desligar o serviço do Syncthing também?SimplesPerdão. Conectar-se via HTTPS não é suportado nessa plataforma. Por favor, use a Interface web para desabilitar novamente o HTTPS.Lista de argumentos e variáveis de ambiente separados por espaço, quando acima do binário Use VARIABLE="value" para configurar uma variável -argument="value" (com hífen) para um argumento. Se você precisa passar uma linha de comandos para outro, (como o logger ou o ionice), separe os argumentos prefixados com um sinal de exclamacão. Exemplo: STTRACE="all" logger -t /var/log/syncthing.log ! -logflags=10EscalonadoIniciar o Syncthing-GTK quando eu me autenticar nesse computadorIniciar agora?Iniciando o serviço do SyncthingParadoEndereços de escuta do protocolo de sincronizaçãoSincronizaçãoSincronização da pasta '%s' completa.Sincronizando %s pastasSincronizando '%s'SincronizandoSyncthingConfigurações do serviço do SyncthingBinário do SyncthingLocalização do binário do SyncthingO serviço do Syncthing pode ser controlado remotamente usando a Interface web e mesmo se você for usar o Syncthing-GTK, a Interface web precisa estar habilitada, já que o Syncthing-GTK a usa para se comunicar com o serviço.O arquivo do serviço do Syncthing não pôde ser encontrado.Arquivo do serviço do Syncthing encontrado.O serviço do Syncthing não parece estar rodando.O serviço do SYncthing falhou em gerar a chave RSA ou o certificado de verificação.Serviço do Syncthing é muito antigo.Serviço do Syncthing não encontrado.Syncthing foi desligado.O Syncthing foi configurado.Syncthing está gerando a chave RSA e o certificado de validação.Syncthing provavelmente está reiniciando ou foi desligado.Syncthing está reiniciando.Syncthing-GTKConfigurações do Syncthing-GTKO Syncthing-GTK precisa do serviço do Syncthing na versão %(min)s ou mais recente, mas apenas a %(actual)s foi encontrada.Syncthing-GTK iniciou e está rodando na área de notificaçõesRelatório de eventos do Syncthing-InotifySyncthing-Inotify está indisponível ou falhou em iniciarAs estatísticas agregadas estão disponíveis no endereço seguinte:As configurações foram salvas, mas não estão ativas. O Syncthing precisa reiniciar para ativá-las.O relatório de uso é criptografado e enviado diariamente.A ID de dispositivo fornecida não parece válida. Ela deveria ter 52 carateres e ser composta de letras e números, com espaços e traços opcionais.O primeiro argumento da linha de comando é o caminho da pasta e o segundo é o caminho relativo à pasta.O número de dias em que são mantidos os arquivos da lixeira. Zero significa para sempre.O número de versões antigas a serem mantidas, por arquivo.Esse binário será iniciado quando o serviço do Synching não estiver rodando e a opção "iniciar serviço em segundo plano" estiver habilitada nas opções de "Interface".Isso pode demorar um pouco...Essa plataforma (%s) não é suportadaLixeiraTente de novo.Configurações da interfaceConfiguraçõe_s da interfaceID inesperado de pasta enviado do dispositivo "%s".IlimitadoPrivadaNão usadoEm sincroniaVelocidade de envioUsar o cab_eçalho de janela tradicionalUsar ícones no men_uVersãoVersão:Versionamento de arquivosCaminho das _versõesÀ espera do serviço do Syncthing às %s...Endereços de escuta da Interface webConfigurações da Interface webBem vindo ao assistente de primeira execução do Syncthing-GTK!Ao sair, se o serviço tiver sido iniciado em plano de fundo...Ao iniciar, se o serviço do Syncthing não estiver rodando...XYZ-123-ABCSimVocê pode configurar mais detalhes depois, nos botões para as Configurações de interface e as Configurações do serviço na janela principal desse aplicativo.Seu serviço do Syncthing é muito antigo.Seu serviço do Syncthing é muito antigo. Por favor, atualize o serviço do Syncthing ao menos para a versão %s e tente novamente._Sobre_Adicionar_EndereçosConfigurações _avançadasE_xplorarE_xplorar_Compressão_Baixar o binário do Syncthing_Baixar...Con_figurações da pasta_IgnorarL_imite de velocidade de recepção_Integração_Interface_Apresentador_Manter versões_OutroLimite de velocidade de _envio_SenhaCaminho da _pasta_EncerrarVe_rificar agora_Reiniciar_Reiniciar o serviçoPasta ape_nas de envioI_limitadoNome de _usuáriodesabilitadobaixe binário mais recenteem %s diasnum momentoquase agoraúltimo recurso e geralmente não é recomendada.nunca removerilimitadodesconectadopara %s e mantê-lo atualizado, mas essa opção é oferecida como~%s horas atrás~%s horas a partir de agorasyncthing-gtk-0.9.4.4/locale/pt/LC_MESSAGES/syncthing-gtk.po000077500000000000000000001322071352162771300232760ustar00rootroot00000000000000# Syncthing-GTK # Copyright (C) 2014-2015 Kozec and contributors # This file is distributed under the same license as the Syncthing-GTK package. # # Translators: # Robson Sobral, 2016-2017 msgid "" msgstr "" "Project-Id-Version: syncthing-gtk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-04-20 11:27+0200\n" "PO-Revision-Date: 2017-09-23 02:19+0000\n" "Last-Translator: kozec \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/syncthing-gtk/syncthing-gtk/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: syncthing_gtk/app.py:194 msgid "Syncthing-GTK started and running in notification area" msgstr "Syncthing-GTK iniciou e está rodando na área de notificações" #: syncthing_gtk/app.py:288 #, python-format msgid "%s kB/s" msgstr "%s kB/s" #: syncthing_gtk/app.py:302 syncthing_gtk/notifications.py:77 #: syncthing_gtk/wizard.py:53 msgid "Syncthing-GTK" msgstr "Syncthing-GTK" #: syncthing_gtk/app.py:363 syncthing_gtk/app.py:364 syncthing_gtk/app.py:942 msgid "Syncing" msgstr "Sincronizando" #: syncthing_gtk/app.py:366 syncthing_gtk/app.py:367 msgid "Scanning" msgstr "Verificando" #: syncthing_gtk/app.py:390 syncthing_gtk/app.py:652 msgid "Starting Syncthing daemon" msgstr "Iniciando o serviço do Syncthing" #: syncthing_gtk/app.py:424 msgid "Allow Anonymous Usage Reporting?" msgstr "Enviar relatórios anônimos de uso?" #: syncthing_gtk/app.py:426 msgid "The encrypted usage report is sent daily." msgstr "O relatório de uso é criptografado e enviado diariamente." #: syncthing_gtk/app.py:427 msgid "It is used to track common platforms, folder sizes and app versions." msgstr "É utilizado para rastrear plataformas, tamanhos de pastas e versões da aplicação." #: syncthing_gtk/app.py:428 msgid "" "If the reported data set is changed you will be prompted with this dialog " "again." msgstr "Caso o formato dos dados seja alterado, seu consentimento será pedido novamente." #: syncthing_gtk/app.py:430 msgid "The aggregated statistics are publicly available at" msgstr "As estatísticas agregadas estão disponíveis no endereço seguinte:" #: syncthing_gtk/app.py:486 msgid "Extracting update..." msgstr "Descompactando atualização" #: syncthing_gtk/app.py:491 msgid "Restarting daemon..." msgstr "Reiniciando serviço..." #: syncthing_gtk/app.py:507 #, python-format msgid "Failed to download upgrade: %s" msgstr "Falha em baixar a atualização: %s" #: syncthing_gtk/app.py:525 #, python-format msgid "Downloading Syncthing %s" msgstr "Baixando Syncthing %s" #: syncthing_gtk/app.py:604 msgid "Connected to Syncthing daemon" msgstr "Conectado ao serviço do Syncthing" #: syncthing_gtk/app.py:614 msgid "Connection to Syncthing daemon lost." msgstr "Conexão com o serviço do Syncthing perdida." #: syncthing_gtk/app.py:615 msgid "Syncthing is probably restarting or has been shut down." msgstr "Syncthing provavelmente está reiniciando ou foi desligado." #: syncthing_gtk/app.py:617 msgid "Syncthing has been shut down." msgstr "Syncthing foi desligado." #: syncthing_gtk/app.py:621 syncthing_gtk/app.py:1499 msgid "Syncthing is restarting." msgstr "Syncthing está reiniciando." #: syncthing_gtk/app.py:621 syncthing_gtk/app.py:1499 msgid "Please wait" msgstr "Por favor, aguarde" #: syncthing_gtk/app.py:644 #, python-format msgid "Connecting to Syncthing daemon at %s..." msgstr "Conectando ao serviço do Syncthing às %s..." #: syncthing_gtk/app.py:649 #, python-format msgid "Waiting for Syncthing daemon at %s..." msgstr "À espera do serviço do Syncthing às %s..." #: syncthing_gtk/app.py:664 msgid "Your syncthing daemon is too old." msgstr "Seu serviço do Syncthing é muito antigo." #: syncthing_gtk/app.py:664 msgid "Attempting to download recent, please wait..." msgstr "Tentando baixar os mais recentes. Por favor, espere..." #: syncthing_gtk/app.py:670 msgid "" "Cannot authorize with daemon. Please, use WebUI to generate API key or " "disable password authentication." msgstr "Não autorizado pelo serviço. Por favor, use a Interface Web para gerar uma chave da API ou desabilite a autenticação por senha." #: syncthing_gtk/app.py:672 #, python-format msgid "" "Your syncthing daemon is too old.\n" "Please, upgrade syncthing package at least to version %s and try again." msgstr "Seu serviço do Syncthing é muito antigo.\nPor favor, atualize o serviço do Syncthing ao menos para a versão %s e tente novamente." #: syncthing_gtk/app.py:674 msgid "" "Sorry, connecting to HTTPS is not supported on this platform.\n" "Please, use WebUI to disable HTTPS try again." msgstr "Perdão. Conectar-se via HTTPS não é suportado nessa plataforma.\nPor favor, use a Interface web para desabilitar novamente o HTTPS." #: syncthing_gtk/app.py:677 msgid "Connection to daemon failed. Check your configuration and try again." msgstr "A conexão com o serviço do Syncthing falhou. Confira suas configurações e tente novamente." #: syncthing_gtk/app.py:678 syncthing_gtk/app.py:1992 #: syncthing_gtk/editordialog.py:314 msgid "Error message:" msgstr "Mensagem de erro:" #: syncthing_gtk/app.py:689 msgid "More info" msgstr "Mais informações" #: syncthing_gtk/app.py:715 msgid "" "The configuration has been saved but not activated.\n" "Syncthing must restart to activate the new configuration." msgstr "As configurações foram salvas, mas não estão ativas.\nO Syncthing precisa reiniciar para ativá-las." #: syncthing_gtk/app.py:717 msgid "_Restart" msgstr "_Reiniciar" #: syncthing_gtk/app.py:784 #, python-format msgid "%(device)s wants to share folder \"%(folder)s\". Add new folder?" msgstr "%(device)s quer compartilhar a pasta \"%(folder)s\". Adicionar nova pasta?" #: syncthing_gtk/app.py:791 syncthing_gtk/app.py:813 msgid "_Add" msgstr "_Adicionar" #: syncthing_gtk/app.py:806 #, python-format msgid "" "Device \"%(name)s\" (%(device)s) at IP \"%(ip)s\" wants to " "connect. Add new device?" msgstr "Dispositivo \"%(name)s\" (%(device)s) no IP \"%(ip)s\" quer se conectar. Adicionar novo dispositivo?" #: syncthing_gtk/app.py:814 msgid "_Ignore" msgstr "_Ignorar" #: syncthing_gtk/app.py:832 msgid "RAM Utilization" msgstr "Uso de RAM" #: syncthing_gtk/app.py:833 msgid "CPU Utilization" msgstr "Uso de CPU" #: syncthing_gtk/app.py:834 syncthing_gtk/app.py:1353 msgid "Download Rate" msgstr "Velocidade de recepção" #: syncthing_gtk/app.py:835 syncthing_gtk/app.py:1354 msgid "Upload Rate" msgstr "Velocidade de envio" #: syncthing_gtk/app.py:836 msgid "Announce Server" msgstr "Servidores de descoberta global" #: syncthing_gtk/app.py:837 syncthing_gtk/app.py:1356 msgid "Version" msgstr "Versão" #: syncthing_gtk/app.py:860 syncthing_gtk/editordialog.py:394 msgid "disabled" msgstr "desabilitado" #: syncthing_gtk/app.py:862 msgid "Online" msgstr "Conectado" #: syncthing_gtk/app.py:862 msgid "offline" msgstr "desconectado" #: syncthing_gtk/app.py:864 #, python-format msgid "%(online)s/%(total)s online" msgstr "%(online)s/%(total)s conectados" #: syncthing_gtk/app.py:891 syncthing_gtk/app.py:1357 #: syncthing_gtk/app.py:1382 msgid "Never" msgstr "Nunca" #: syncthing_gtk/app.py:899 syncthing_gtk/app.py:1691 #: syncthing_gtk/app.py:1692 msgid "Paused" msgstr "Em pausa" #: syncthing_gtk/app.py:899 syncthing_gtk/app.py:924 syncthing_gtk/app.py:939 #: syncthing_gtk/infobox.py:60 msgid "Disconnected" msgstr "Desconectado" #: syncthing_gtk/app.py:916 msgid "Connected" msgstr "Conectado" #: syncthing_gtk/app.py:945 syncthing_gtk/app.py:980 syncthing_gtk/app.py:1030 #: syncthing_gtk/app.py:1031 syncthing_gtk/app.py:1070 msgid "Up to Date" msgstr "Em sincronia" #: syncthing_gtk/app.py:966 syncthing_gtk/app.py:967 syncthing_gtk/app.py:968 msgid "Files" msgstr "Arquivos" #: syncthing_gtk/app.py:980 syncthing_gtk/app.py:1068 msgid "Cluster out of sync" msgstr "Grupo de dispositivos fora de sincronia" #: syncthing_gtk/app.py:995 msgid "Stopped" msgstr "Parado" #: syncthing_gtk/app.py:998 syncthing_gtk/app.py:1005 msgid "Error" msgstr "Erro" #: syncthing_gtk/app.py:1024 #, python-format msgid "Synchronizing '%s'" msgstr "Sincronizando '%s'" #: syncthing_gtk/app.py:1026 #, python-format msgid "Synchronizing %s folders" msgstr "Sincronizando %s pastas" #: syncthing_gtk/app.py:1035 syncthing_gtk/app.py:1036 msgid "All devices offline" msgstr "Todos dispositivos desconectados" #: syncthing_gtk/app.py:1040 syncthing_gtk/app.py:1041 msgid "Connecting to Syncthing daemon..." msgstr "Conectando ao serviço do Syncthing..." #: syncthing_gtk/app.py:1079 msgid "Unshared" msgstr "Privada" #: syncthing_gtk/app.py:1082 msgid "Offline" msgstr "Desconectado" #: syncthing_gtk/app.py:1176 msgid "Hide Window" msgstr "Ocultar janela" #: syncthing_gtk/app.py:1190 app.glade:651 msgid "Show Window" msgstr "Exibir janela" #: syncthing_gtk/app.py:1239 msgid "Syncthing daemon doesn't appear to be running." msgstr "O serviço do Syncthing não parece estar rodando." #: syncthing_gtk/app.py:1240 msgid "Start it now?" msgstr "Iniciar agora?" #: syncthing_gtk/app.py:1243 msgid "Always start daemon automatically" msgstr "Sempre iniciar o serviço automaticamente" #: syncthing_gtk/app.py:1292 msgid "Folder ID" msgstr "ID da pasta" #: syncthing_gtk/app.py:1293 msgid "Path" msgstr "Caminho da pasta" #: syncthing_gtk/app.py:1294 msgid "Global State" msgstr "Estado global" #: syncthing_gtk/app.py:1295 msgid "Local State" msgstr "Estado local" #: syncthing_gtk/app.py:1296 msgid "Out Of Sync" msgstr "Fora de sincronia" #: syncthing_gtk/app.py:1297 msgid "Folder Type" msgstr "Tipo de pasta" #: syncthing_gtk/app.py:1298 msgid "Ignore Permissions" msgstr "Ignorar permissões" #: syncthing_gtk/app.py:1299 msgid "Rescan Interval" msgstr "Intervalo entre verificações" #: syncthing_gtk/app.py:1300 msgid "Shared With" msgstr "Compartilhada com" #: syncthing_gtk/app.py:1324 syncthing_gtk/app.py:1325 #: syncthing_gtk/app.py:1381 msgid "Yes" msgstr "Sim" #: syncthing_gtk/app.py:1324 syncthing_gtk/app.py:1325 #: syncthing_gtk/app.py:1381 msgid "No" msgstr "Não" #: syncthing_gtk/app.py:1327 msgid "(watch)" msgstr "(monitorada)" #: syncthing_gtk/app.py:1341 msgid "Unused" msgstr "Não usado" #: syncthing_gtk/app.py:1350 msgid "Address" msgstr "Endereços" #: syncthing_gtk/app.py:1351 msgid "Synchronization" msgstr "Sincronização" #: syncthing_gtk/app.py:1352 msgid "Compression" msgstr "Compressão" #: syncthing_gtk/app.py:1355 msgid "Introducer" msgstr "Apresentador" #: syncthing_gtk/app.py:1357 msgid "Last Seen" msgstr "Visto pela última vez" #: syncthing_gtk/app.py:1378 device-edit.glade:22 msgid "All Data" msgstr "Todos os dados" #: syncthing_gtk/app.py:1379 device-edit.glade:26 folder-edit.glade:78 msgid "Off" msgstr "Desligada" #: syncthing_gtk/app.py:1375 msgid "Send Only" msgstr "Apenas envio" #: syncthing_gtk/app.py:1375 msgid "Send & Receive" msgstr "Enviar & Receber" #: syncthing_gtk/app.py:1380 device-edit.glade:30 msgid "Metadata Only" msgstr "Somente metadados" #: syncthing_gtk/app.py:1522 msgid "Exiting." msgstr "Saindo." #: syncthing_gtk/app.py:1523 msgid "Shutdown Syncthing daemon as well?" msgstr "Desligar o serviço do Syncthing também?" #: syncthing_gtk/app.py:1528 msgid "Always do same; Don't show this window again" msgstr "Sempre; Não mostrar essa tela novamente." #: syncthing_gtk/app.py:1768 #, python-format msgid "Do you really want to permanently stop synchronizing directory '%s'?" msgstr "Quer mesmo para de sincronizar a pasta '%s' permanentemente?" #: syncthing_gtk/app.py:1770 #, python-format msgid "Do you really want remove device '%s' from Syncthing?" msgstr "Quer mesmo remover o dispositivo '%s' do Syncthing?" #: syncthing_gtk/app.py:1838 msgid "Syncthing-Inotify Output" msgstr "Relatório de eventos do Syncthing-Inotify" #: syncthing_gtk/app.py:1844 msgid "Syncthing-Inotify is unavailable or failed to start" msgstr "Syncthing-Inotify está indisponível ou falhou em iniciar" #: syncthing_gtk/app.py:1991 msgid "Failed to start Syncthing daemon." msgstr "Falha em iniciar o serviço do Syncthing." #: syncthing_gtk/app.py:1993 msgid "" "Please, check your installation or set new path to Syncthing daemon binary." msgstr "Por favor, confira sua instalação ou configure um novo caminho para salvar o serviço do Syncthing" #: syncthing_gtk/daemonsettings.py:24 msgid "Syncthing Daemon Settings" msgstr "Configurações do serviço do Syncthing" #: syncthing_gtk/deviceeditor.py:24 msgid "" "The entered device ID does not look valid. It should be a 52 character " "string consisting of letters and numbers, with spaces and dashes being " "optional." msgstr "A ID de dispositivo fornecida não parece válida. Ela deveria ter 52 carateres e ser composta de letras e números, com espaços e traços opcionais." #: syncthing_gtk/editordialog.py:312 msgid "Failed to load configuration from daemon." msgstr "Falha em carregar as configurações do serviço." #: syncthing_gtk/editordialog.py:313 msgid "Try again." msgstr "Tente de novo." #: syncthing_gtk/editordialog.py:387 syncthing_gtk/editordialog.py:396 #, python-format msgid "%ss" msgstr "%ss" #: syncthing_gtk/editordialog.py:402 #, python-format msgid "%s%%" msgstr "%s%%" #: syncthing_gtk/editordialog.py:409 msgid "no limit" msgstr "ilimitado" #: syncthing_gtk/editordialog.py:411 #, python-format msgid "%s KiB/s" msgstr "%s KiB/s" #: syncthing_gtk/editordialog.py:418 msgid "never delete" msgstr "nunca remover" #: syncthing_gtk/editordialog.py:420 #, python-format msgid "%s day" msgstr "%s dia" #: syncthing_gtk/editordialog.py:422 #, python-format msgid "%s days" msgstr "%s dias" #: syncthing_gtk/editordialog.py:455 msgid "Failed to save configuration." msgstr "Falha em salvar a configuração." #: syncthing_gtk/finddaemondialog.py:24 find-daemon.glade:7 msgid "Can't invoke the daemon" msgstr "Incapaz de chamar o serviço" #: syncthing_gtk/finddaemondialog.py:26 msgid "Syncthing binary" msgstr "Binário do Syncthing" #: syncthing_gtk/finddaemondialog.py:28 syncthing_gtk/finddaemondialog.py:37 msgid "Syncthing daemon binary cannot be found." msgstr "O arquivo do serviço do Syncthing não pôde ser encontrado." #: syncthing_gtk/finddaemondialog.py:29 #, python-format msgid "" "If you have Syncthing installed, please, set path to %s below or click on " "Download button to download latest Syncthing package." msgstr "Se você já tiver o Syncthing instalado, por favor, informe o caminho para o %s ou clique no botão Baixar para obter a sua versão mais recente." #: syncthing_gtk/finddaemondialog.py:38 #, python-format msgid "If you have Syncthing installed, please, set path to %s below" msgstr "Se o Syncthing já está instalado, por favor, configure o caminho para %s" #: syncthing_gtk/finddaemondialog.py:82 syncthing_gtk/wizard.py:411 msgid "Cannot download Syncthing daemon." msgstr "Incapaz de baixar o serviço do Syncthing." #: syncthing_gtk/finddaemondialog.py:83 syncthing_gtk/wizard.py:412 #, python-format msgid "This platform (%s) is not supported" msgstr "Essa plataforma (%s) não é suportada" #: syncthing_gtk/finddaemondialog.py:100 msgid "Downloading..." msgstr "Baixando..." #: syncthing_gtk/finddaemondialog.py:163 syncthing_gtk/stdownloader.py:251 #: syncthing_gtk/stdownloader.py:279 msgid "Download failed." msgstr "Falha de download." #: syncthing_gtk/finddaemondialog.py:185 syncthing_gtk/wizard.py:458 msgid "Download finished." msgstr "Download terminado." #: syncthing_gtk/foldereditor.py:45 msgid "Select Folder for new Folder" msgstr "Escolha a pasta a ser compartilhada" #: syncthing_gtk/foldereditor.py:166 syncthing_gtk/foldereditor.py:167 msgid "Please, install pyinotify package to use this feature" msgstr "Por favor, instale o pynotify para usar essa funcionalidade." #: syncthing_gtk/ignoreeditor.py:44 msgid "File location:" msgstr "Localização do arquivo:" #: syncthing_gtk/notifications.py:120 #, python-format msgid "Unexpected folder ID sent from device \"%s\"." msgstr "ID inesperado de pasta enviado do dispositivo \"%s\"." #: syncthing_gtk/notifications.py:124 #, python-format msgid "Device \"%s\" is trying to connect to syncthing daemon." msgstr "Dispositivo \"%s\" tenta se conectar ao serviço do Syncthing." #: syncthing_gtk/notifications.py:153 #, python-format msgid "Synchronization of folder '%s' is completed." msgstr "Sincronização da pasta '%s' completa." #: syncthing_gtk/notifications.py:160 #, python-format msgid "%(hostname)s: Downloaded '%(filename)s' to reflect remote changes." msgstr "" #: syncthing_gtk/notifications.py:165 #, python-format msgid "%(hostname)s: Deleted '%(filename)s' to reflect remote changes." msgstr "" #: syncthing_gtk/notifications.py:168 #, python-format msgid "%(hostname)s: Downloaded %(updated)s files to reflect remote changes." msgstr "" #: syncthing_gtk/notifications.py:171 #, python-format msgid "%(hostname)s: Deleted %(deleted)s files to reflect remote changes." msgstr "" #: syncthing_gtk/notifications.py:175 #, python-format msgid "" "%(hostname)s: downloaded %(updated)s files and deleted %(deleted)s files to " "reflect remote changes." msgstr "" #: syncthing_gtk/statusicon.py:48 msgid "Syncthing" msgstr "Syncthing" #: syncthing_gtk/stdownloader.py:174 syncthing_gtk/stdownloader.py:217 #: syncthing_gtk/stdownloader.py:313 syncthing_gtk/stdownloader.py:344 msgid "Failed to determine latest Syncthing version." msgstr "Falha em determinar a versão mais recente do Syncthing." #: syncthing_gtk/stdownloader.py:236 msgid "Failed to create temporaly file." msgstr "Falha em criar arquivo temporário." #: syncthing_gtk/stdownloader.py:294 msgid "Downloaded file is corrupted." msgstr "O arquivo transferido está corrompido." #: syncthing_gtk/tools.py:192 #, python-format msgid "~%s hours ago" msgstr "~%s horas atrás" #: syncthing_gtk/tools.py:194 #, python-format msgid "%s minutes ago" msgstr "%s minutos atrás" #: syncthing_gtk/tools.py:196 #, python-format msgid "%s seconds ago" msgstr "%s segundos atrás" #: syncthing_gtk/tools.py:197 msgid "just now" msgstr "quase agora" #: syncthing_gtk/tools.py:199 #, python-format msgid "%s days ago" msgstr "%s dias atrás" #: syncthing_gtk/tools.py:203 #, python-format msgid "in %s days" msgstr "em %s dias" #: syncthing_gtk/tools.py:205 #, python-format msgid "~%s hours from now" msgstr "~%s horas a partir de agora" #: syncthing_gtk/tools.py:207 #, python-format msgid "%s minutes from now" msgstr "%s minutos a partir de agora" #: syncthing_gtk/tools.py:209 #, python-format msgid "%s seconds from now" msgstr "%s segundos a partir de agora" #: syncthing_gtk/tools.py:210 msgid "in a moment" msgstr "num momento" #: syncthing_gtk/uisettingsdialog.py:58 msgid "UI Settings" msgstr "Configurações da interface" #: syncthing_gtk/uisettingsdialog.py:70 msgid "Unlimited" msgstr "Ilimitado" #: syncthing_gtk/uisettingsdialog.py:107 #, python-format msgid "Install %(package)s package to enable %(feature)s support" msgstr "Instalar pacote %(package)s para habilitar o suporte a %(feature)s" #: syncthing_gtk/uisettingsdialog.py:312 msgid "Browse for Syncthing binary" msgstr "Explorar pelo binário do Syncthing" #: syncthing_gtk/wizard.py:53 msgid "First run wizard" msgstr "Assistente de primeira execução" #: syncthing_gtk/wizard.py:137 #, python-format msgid "Please, check error log and fill bug report on %s." msgstr "Por favor, confira o registro de erros e abre um relatório em %s." #: syncthing_gtk/wizard.py:141 msgid "Display error log" msgstr "Exibir registro de erros" #: syncthing_gtk/wizard.py:198 msgid "Welcome to Syncthing-GTK first run wizard!" msgstr "Bem vindo ao assistente de primeira execução do Syncthing-GTK!" #: syncthing_gtk/wizard.py:200 msgid "It looks like you never have used Syncthing." msgstr "Parece que você nunca usou o Syncthing." #: syncthing_gtk/wizard.py:201 msgid "Initial configuration should be created." msgstr "A configuração inicial precisa ser executada." #: syncthing_gtk/wizard.py:202 msgid "" "Continue this wizard to create a Syncthing configuration file or abort it to exit." msgstr "" #: syncthing_gtk/wizard.py:204 #, python-format msgid "" "If you already had Syncthing daemon configured, please, exit this wizard and" " check your %s folder" msgstr "Se o serviço do Syncthing já está configurado, por favor, saia desse assistente e confira sua pasta %s" #: syncthing_gtk/wizard.py:220 msgid "Searching for Syncthing daemon." msgstr "Em busca do serviço do Syncthing" #: syncthing_gtk/wizard.py:222 syncthing_gtk/wizard.py:394 msgid "Please wait..." msgstr "Por favor, aguarde..." #: syncthing_gtk/wizard.py:270 syncthing_gtk/wizard.py:287 msgid "Syncthing daemon not found." msgstr "Serviço do Syncthing não encontrado." #: syncthing_gtk/wizard.py:271 msgid "Please, use package manager to install the Syncthing package." msgstr "Por favor, use o gerenciador de pacotes para instalar o Syncthing." #: syncthing_gtk/wizard.py:283 msgid "download latest binary" msgstr "baixe binário mais recente" #: syncthing_gtk/wizard.py:288 syncthing_gtk/wizard.py:302 #, python-format msgid "" "Please, use package manager to install the Syncthing package or " "%(download_link)s from Syncthing page and save it to your %(target)s " "directory." msgstr "Por favor, use o gerenciador de pacotes para instalar o Syncthing ou %(download_link)s do site do Syncthing e o salve no diretório %(target)s." #: syncthing_gtk/wizard.py:296 msgid "Syncthing daemon is too old." msgstr "Serviço do Syncthing é muito antigo." #: syncthing_gtk/wizard.py:297 #, python-format msgid "" "Syncthing-GTK needs Syncthing daemon %(min)s or newer, but only %(actual)s " "were found." msgstr "O Syncthing-GTK precisa do serviço do Syncthing na versão %(min)s ou mais recente, mas apenas a %(actual)s foi encontrada." #: syncthing_gtk/wizard.py:309 msgid "Alternatively, Syncthing-GTK can download Syncthing binary" msgstr "Alternativamente, Syncthing-GTK pode baixar o binário do Syncthing." #: syncthing_gtk/wizard.py:310 #, python-format msgid "to %s and keep it up-to-date, but this option is meant as" msgstr "para %s e mantê-lo atualizado, mas essa opção é oferecida como" #: syncthing_gtk/wizard.py:312 msgid "last resort and generally not suggested." msgstr "último recurso e geralmente não é recomendada." #: syncthing_gtk/wizard.py:315 msgid "_Download Syncthing binary" msgstr "_Baixar o binário do Syncthing" #: syncthing_gtk/wizard.py:319 msgid "Auto_update downloaded binary" msgstr "Binário para atualização baixado" #: syncthing_gtk/wizard.py:375 msgid "Syncthing daemon binary found." msgstr "Arquivo do serviço do Syncthing encontrado." #: syncthing_gtk/wizard.py:377 syncthing_gtk/wizard.py:460 msgid "Binary path:" msgstr "Caminho do binário:" #: syncthing_gtk/wizard.py:378 msgid "Version:" msgstr "Versão:" #: syncthing_gtk/wizard.py:393 msgid "Downloading Syncthing daemon." msgstr "Baixando serviço do Syncthing." #: syncthing_gtk/wizard.py:441 msgid "Failed to download Syncthing daemon package." msgstr "Falha em baixar o serviço do Syncthing." #: syncthing_gtk/wizard.py:472 msgid "Syncthing is generating RSA key and certificate." msgstr "Syncthing está gerando a chave RSA e o certificado de validação." #: syncthing_gtk/wizard.py:473 msgid "This may take a while..." msgstr "Isso pode demorar um pouco..." #: syncthing_gtk/wizard.py:515 msgid "Failed to generate keys" msgstr "Falha em gerar as chaves" #: syncthing_gtk/wizard.py:516 msgid "Syncthing daemon failed to generate RSA key or certificate." msgstr "O serviço do SYncthing falhou em gerar a chave RSA ou o certificado de verificação." #: syncthing_gtk/wizard.py:526 msgid "WebUI setup" msgstr "Configurações da Interface web" #: syncthing_gtk/wizard.py:528 msgid "" "Syncthing can be managed remotely using WebUI and even if you are going to " "use Syncthing-GTK, WebUI needs to be enabled, as Syncthing-GTK uses it to " "communicate with the Syncthing daemon." msgstr "O serviço do Syncthing pode ser controlado remotamente usando a Interface web e mesmo se você for usar o Syncthing-GTK, a Interface web precisa estar habilitada, já que o Syncthing-GTK a usa para se comunicar com o serviço." #: syncthing_gtk/wizard.py:533 msgid "" "If you prefer to be able to manage Syncthing remotely, over the internet or " "on your local network, select listen on all interfaces and set " "username and password to protect Syncthing from unauthorized access." msgstr "Se você prefere ser capaz de controlar o Syncthing remotamente, tanto pela internet quando si rede interna, selecione escutar em todas as interfaces e configure nome de usuário e seren senha para evitar acessos não autorizados." #: syncthing_gtk/wizard.py:538 msgid "" "Otherwise, select listen on localhost, so only users and programs on " "this computer will be able to interact with Syncthing." msgstr "Caso contrário, selecione escutar em localhost para que apenas usuários e programas nesse computador sem capazes de interagir com o Synching." #: syncthing_gtk/wizard.py:544 msgid "WebUI Listen Addresses" msgstr "Endereços de escuta da Interface web" #: syncthing_gtk/wizard.py:545 msgid "Listen on _localhost" msgstr "Escutar em _localhost" #: syncthing_gtk/wizard.py:547 msgid "Listen on _all interfaces" msgstr "Escutar em tod_as as interfaces" #: syncthing_gtk/wizard.py:554 msgid "_Username" msgstr "Nome de _usuário" #: syncthing_gtk/wizard.py:555 msgid "_Password" msgstr "_Senha" #: syncthing_gtk/wizard.py:609 msgid "Saving settings..." msgstr "Salvando configurações..." #: syncthing_gtk/wizard.py:610 msgid "Checking for available port..." msgstr "Em busca de porta disponível" #: syncthing_gtk/wizard.py:631 msgid "Failed to find unused port for listening." msgstr "Falha em encontrar uma porta livre para escutar." #: syncthing_gtk/wizard.py:632 msgid "Please, check your firewall settings and try again." msgstr "Por favor, confira as configurações de seu firewall e tente novamente." #: syncthing_gtk/wizard.py:646 msgid "Saving..." msgstr "Salvando..." #: syncthing_gtk/wizard.py:678 msgid "Failed to load Syncthing configuration" msgstr "Falha em carregar as configurações do Syncthing" #: syncthing_gtk/wizard.py:705 msgid "Failed to modify Syncthing configuration" msgstr "Falha em modificar as configurações do Syncthing." #: syncthing_gtk/wizard.py:715 msgid "Failed to save Syncthing configuration" msgstr "Falta em salvar as configurações do Syncthing" #: syncthing_gtk/wizard.py:729 msgid "Done." msgstr "Feito." #: syncthing_gtk/wizard.py:731 msgid "Syncthing has been successfully configured." msgstr "O Syncthing foi configurado." #: syncthing_gtk/wizard.py:733 msgid "" "You can configure more details later, in UI Settings and Daemon " "Settings menus in main window of application." msgstr "Você pode configurar mais detalhes depois, nos botões para as Configurações de interface e as Configurações do serviço na janela principal desse aplicativo." #: about.glade:7 msgid "About Syncthing-GTK" msgstr "Sobre o Syncthing-GTK" #: about.glade:10 msgid "GTK GUI and notification area icon for Syncthing" msgstr "GTK GUI e ícone da área de notificações para o Syncthing" #: about.glade:12 msgid "GitHub" msgstr "GitHub" #: app.glade:239 app.glade:420 app.glade:802 msgid "Open _Web Interface" msgstr "Abrir Interface _web" #: app.glade:251 app.glade:424 app.glade:814 msgid "Display _Daemon Output" msgstr "Exibir relatório _de eventos do serviço" #: app.glade:263 msgid "Display Syncthing-Inotify Output" msgstr "Exibir relatório de eventos do Syncthing-Inotify" #: app.glade:280 app.glade:430 msgid "UI _Settings" msgstr "Configuraçõe_s da interface" #: app.glade:325 app.glade:451 msgid "Add Shared _Folder" msgstr "Adicionar _pasta compartilhada" #: app.glade:338 app.glade:455 msgid "Add _Device" msgstr "Adicionar _dispositivo" #: app.glade:356 app.glade:461 msgid "Daemon _Settings" msgstr "Configurações do _serviço" #: app.glade:371 app.glade:465 app.glade:588 app.glade:788 msgid "Show _ID" msgstr "Exibir _ID" #: app.glade:391 app.glade:471 msgid "Sh_utdown Daemon" msgstr "Desligar o serviço" #: app.glade:404 app.glade:475 msgid "_Restart Daemon" msgstr "_Reiniciar o serviço" #: app.glade:436 msgid "_About" msgstr "_Sobre" #: app.glade:440 msgid "_Quit" msgstr "_Encerrar" #: app.glade:490 msgid "Override Remote Changes" msgstr "Sobrescrever modificações remotas" #: app.glade:519 msgid "Edit _Ignore Patterns" msgstr "Ed_itar filtros" #: app.glade:547 msgid "_Rescan" msgstr "Ve_rificar agora" #: app.glade:559 msgid "_Browse" msgstr "E_xplorar" #: app.glade:611 msgid "Resume" msgstr "Retomar" #: app.glade:641 msgid "Connecting to daemon..." msgstr "Conectando com o serviço..." #: app.glade:669 msgid "S_top Syncthing" msgstr "Parar Sync_thing" #: app.glade:683 msgid "Resume Sync_thing" msgstr "Retomar Sync_thing" #: app.glade:695 daemon-settings.glade:335 msgid "_Incoming Rate Limit" msgstr "L_imite de velocidade de recepção" #: app.glade:709 app.glade:751 msgid "_Unlimited" msgstr "I_limitado" #: app.glade:718 app.glade:760 msgid "_Other" msgstr "_Outro" #: app.glade:737 msgid "_Outgoing Rate Limit" msgstr "Limite de velocidade de _envio" #: daemon-output.glade:7 msgid "Daemon Output" msgstr "Relatório de eventos do serviço" #: daemon-settings.glade:106 msgid "Sync Protocol Listen Addresses" msgstr "Endereços de escuta do protocolo de sincronização" #: daemon-settings.glade:136 msgid "Enable Local _Discovery" msgstr "Habilitar _descoberta local" #: daemon-settings.glade:153 msgid "Enable _UPnP" msgstr "Habilitar _UPnP" #: daemon-settings.glade:171 msgid "Local Discovery _Port" msgstr "_Porta de descoberta local" #: daemon-settings.glade:212 msgid "Outgoing _Rate Limit" msgstr "Limite de velocidade de _envio" #: daemon-settings.glade:229 msgid "Open browser with _WebUI when daemon is starting" msgstr "Quando o serviço iniciar, abrir a interface _web no navegador" #: daemon-settings.glade:246 msgid "Enable _Anonymous Usage Reporting" msgstr "Habilitar Relatórios _anônimos de uso" #: daemon-settings.glade:262 msgid "Enable _Global Discovery" msgstr "Habilitar descoberta _global" #: daemon-settings.glade:281 msgid "Global Discovery _Servers" msgstr "_Servidores de descoberta global" #: device-edit.glade:102 msgid "Device _ID" msgstr "_ID do dispositivo" #: device-edit.glade:134 msgid "Device _Name" msgstr "_Nome do dispositivo" #: device-edit.glade:166 msgid "Shown instead of Device ID in the cluster status." msgstr "Mostrado no lugar do ID do dispositivo no indicador de estado do grupo. Será atualizado para o nome que o dispositivo divulga, caso seja deixado em branco." #: device-edit.glade:181 msgid "_Addresses" msgstr "_Endereços" #: device-edit.glade:213 msgid "" "Enter comma separated \"ip:port\" addresses or \"dynamic\" to perform " "automatic discovery of the address." msgstr "Insira endereços (\"tcp://ip:porta\", \"tcp://host:porta\") separados por vírgula ou \"dynamic\" para executar a descoberta automática do endereço." #: device-edit.glade:242 msgid "Share _Folders" msgstr "Compartilhar _pastas com o dispositivo" #: device-edit.glade:276 msgid "Select the folders to share with this device" msgstr "Selecione as pastas a serem compartilhadas com este dispositivo." #: device-edit.glade:287 msgid "_Introducer" msgstr "_Apresentador" #: device-edit.glade:308 msgid "" "Any devices configured on an introducer device will be added to this device " "as well." msgstr "Quaisquer dispositivos configurados em um apresentador também serão adicionados a este dispositivo." #: device-edit.glade:323 msgid "_Compression" msgstr "_Compressão" #: device-id.glade:14 msgid "Device Identification" msgstr "Identificação de dispositivo" #: device-id.glade:68 msgid "XYZ-123-ABC" msgstr "XYZ-123-ABC" #: find-daemon.glade:126 ui-settings.glade:821 msgid "_Browse..." msgstr "E_xplorar" #: find-daemon.glade:179 msgid "_Download..." msgstr "_Baixar..." #: folder-edit.glade:44 msgctxt "In File Pull Order combobox" msgid "Random" msgstr "Aleatória" #: folder-edit.glade:48 msgctxt "In File Pull Order combobox" msgid "Alphabetic" msgstr "Alfabética" #: folder-edit.glade:52 msgctxt "In File Pull Order combobox" msgid "Smallest First" msgstr "Menor primeiro" #: folder-edit.glade:56 msgctxt "In File Pull Order combobox" msgid "Largest First" msgstr "Maior primeiro" #: folder-edit.glade:60 msgctxt "In File Pull Order combobox" msgid "Oldest First" msgstr "Mais antigo primeiro" #: folder-edit.glade:64 msgctxt "In File Pull Order combobox" msgid "Newest First" msgstr "Mais novo primeiro" #: folder-edit.glade:82 msgid "Simple" msgstr "Simples" #: folder-edit.glade:86 msgid "Staggered" msgstr "Escalonado" #: folder-edit.glade:90 msgid "Trashcan" msgstr "Lixeira" #: folder-edit.glade:94 msgid "External" msgstr "Externo" #: folder-edit.glade:171 msgid "Folder _Label" msgstr "Rótulo da pasta" #: folder-edit.glade:202 msgid "Short identifier for the folder. Must be the same on all devices." msgstr "Identificador obrigatório da pasta. Deve ser igual em todos os dispositivos do grupo." #: folder-edit.glade:216 msgid "_Path" msgstr "Caminho da _pasta" #: folder-edit.glade:234 msgid "" "Path to the folder on the local computer. Will be created if it does not " "exist." msgstr "Caminho para a pasta na máquina local. Será criado caso não exista." #: folder-edit.glade:248 msgid "Rescan _Interval" msgstr "_Intervalo entre verificações" #: folder-edit.glade:293 msgid "Monitor filesystem for _changes" msgstr "Monitorar os arquivos por mudan_ças" #: folder-edit.glade:314 msgid "" "If enabled, changed, created and delete files are synchronized immediately, as long as Syncthing-GTK is running.\n" "Note: Using this along with short Rescan Interval (<300s) may consume a lot of resources." msgstr "Se habilitado, arquivos criados e apagados são sincronizados imediatamente, desde que o Syncthing-GTK esteja rodando.\nNota: Usar essa opção junto com um Intervalo entre verificações curto (menor do que 300s) pode consumir muitos recursos." #: folder-edit.glade:343 msgid "Browse..." msgstr "Explorar..." #: folder-edit.glade:366 msgid "Folder _ID" msgstr "_ID da pasta" #: folder-edit.glade:396 msgid "" "Optional descriptive label for the folder. Can be different on each device." msgstr "Rótulo descritivo opcional para a pasta. Pode ser diferente em cada dispositivo." #: folder-edit.glade:418 msgid "_Send Only Folder" msgstr "Pasta ape_nas de envio" #: folder-edit.glade:439 msgid "" "Files are protected from changes made on other devices, but changes made on " "this device will be sent to the rest of the cluster." msgstr "Os arquivos estão protegidos contra alterações feitas em outros dispositivos, mas alterações feitas neste são enviadas aos outros." #: folder-edit.glade:456 msgid "_Folder Settings" msgstr "Con_figurações da pasta" #: folder-edit.glade:476 msgid "Select the devices to share this folder with." msgstr "Escolha os dispositivos com que compartilhar a pasta." #: folder-edit.glade:514 msgid "Share With _Devices" msgstr "Compartilhar com _dispositivos" #: folder-edit.glade:535 msgid "Versioning _Mode" msgstr "Versionamento de arquivos" #: folder-edit.glade:590 msgid "" "Files are moved to date stamped versions in a .stversions folder when " "replaced or deleted by syncthing." msgstr "Os arquivos são renomeados com suas datas na pasta .stversions após serem substituídos ou removidos pelo Syncthing." #: folder-edit.glade:605 msgid "_Keep Versions" msgstr "_Manter versões" #: folder-edit.glade:642 msgid "The number of old versions to keep, per file." msgstr "O número de versões antigas a serem mantidas, por arquivo." #: folder-edit.glade:671 msgid "" "Files are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing. Versions are automatically deleted if they are older than the maximum age or exceed the number of files allowed in an interval.\n" "\n" "The following intervals are used: for the first hour a version is kept every 30 seconds, for the first day a version is kept every hour, for the first 30 days a version is kept every day, until the maximum age a version is kept every week." msgstr "Os arquivos são renomeados com suas datas na pasta .stversions após serem substituídos ou removidos pelo Syncthing. As versões são automaticamente apagadas se elas são mais antigas do que a idade máxima ou excederem o número de arquivos permitido em um intervalo.\n\nSão utilizados os seguintes intervalos: na primeira hora é guardada uma versão a cada 30 segundos, no primeiro dia é guardada uma versão a cada hora, nos primeiros 30 dias é guardada uma versão por dia e, até que atinja a idade máxima, é guardada uma versão por semana." #: folder-edit.glade:688 msgid "Ma_ximum Age" msgstr "Idade má_xima" #: folder-edit.glade:727 msgid "Versions _Path" msgstr "Caminho das _versões" #: folder-edit.glade:759 msgid "" "Path where versions should be stored (leave empty for the default " ".stversions folder)." msgstr "O caminho onde as versões serão salvas (deixe vazio para usar a pasta padrão .stversions dentro desta pasta)." #: folder-edit.glade:787 msgid "" "Files are moved to .stversions folder when replaced or deleted by Syncthing" msgstr "Os arquivos são movidos para a pasta .stversions quando substituídos ou apagados pelo Syncthing." #: folder-edit.glade:801 msgid "Clean out _after" msgstr "Limp_ar depois de" #: folder-edit.glade:840 msgid "The number of days to keep files in the trash can." msgstr "O número de dias em que são mantidos os arquivos da lixeira. Zero significa para sempre." #: folder-edit.glade:869 msgid "" "An external command handles the versioning. It has to remove the file from " "the synced folder." msgstr "Um comando externo controla o versionamento. Ele tem que remover o arquivo da pasta sincronizada." #: folder-edit.glade:884 msgid "Command" msgstr "Comando" #: folder-edit.glade:917 msgid "" "The first command line parameter is the folder path and the second parameter" " is the relative path in the folder." msgstr "O primeiro argumento da linha de comando é o caminho da pasta e o segundo é o caminho relativo à pasta." #: folder-edit.glade:953 msgid "File _Versioning" msgstr "_Versionamento de arquivos" #: folder-edit.glade:982 msgid "Ignore P_ermissions" msgstr "Ignorar p_ermissões" #: folder-edit.glade:1003 msgid "" "File permission bits are ignored when looking for changes. Use on FAT " "filesystems." msgstr "Os bits de permissão de um arquivo são ignorados durante as verificações. Use em sistemas de arquivo FAT." #: folder-edit.glade:1018 msgid "Minimum Free Disk Space" msgstr "Espaço livre mínimo no disco" #: folder-edit.glade:1057 msgid "File Pull _Order" msgstr "Ordem de retirada do arquivo" #: folder-edit.glade:1103 ui-settings.glade:954 msgid "_Advanced" msgstr "Configurações _avançadas" #: ignore-editor.glade:8 msgid "Ignore Patterns" msgstr "Filtros" #: ignore-editor.glade:99 msgid "" "See Syncthing " "documentation for list of supported patterns" msgstr "Veja a documentação do Syncthing para a lista de filtros suportados" #: ignore-editor.glade:114 msgid "File location: " msgstr "Localização do arquivo:" #: ui-settings.glade:27 msgid "Lowest" msgstr "Baixíssima" #: ui-settings.glade:31 msgid "Low" msgstr "Baixa" #: ui-settings.glade:35 msgid "Normal" msgstr "Normal" #: ui-settings.glade:39 msgid "Above Normal" msgstr "Acima do normal" #: ui-settings.glade:46 msgid "Syncthing-GTK Settings" msgstr "Configurações do Syncthing-GTK" #: ui-settings.glade:69 msgid "Please, restart Syncthing-GTK to apply all changed settings" msgstr "Por favor, reinicie o Syncthing-GTK para aplicar as configurações modificadas" #: ui-settings.glade:136 msgid "When starting and Syncthing daemon is not running..." msgstr "Ao iniciar, se o serviço do Syncthing não estiver rodando..." #: ui-settings.glade:147 msgid "... _wait for daemon" msgstr "...aguardar pelo serviço" #: ui-settings.glade:164 msgid "... start daemon in _background" msgstr "...iniciar o serviço em plano de fundo" #: ui-settings.glade:180 msgid "... _ask me what to do" msgstr "... pergunte-me o que f_azer" #: ui-settings.glade:199 msgid "When exiting after daemon was started in background..." msgstr "Ao sair, se o serviço tiver sido iniciado em plano de fundo..." #: ui-settings.glade:210 msgid "... terminate _daemon" msgstr "...encerrar o serviço" #: ui-settings.glade:226 msgid "... leave daemon _running" msgstr "...deixar o serviço _rodando" #: ui-settings.glade:242 msgid "... ask me w_hat to do" msgstr "... pergunte-me o que fa_zer" #: ui-settings.glade:258 msgid "Us_e traditional window header" msgstr "Usar o cab_eçalho de janela tradicional" #: ui-settings.glade:278 msgid "Display desktop notifications for..." msgstr "Exibir notificações na área de trabalho para..." #: ui-settings.glade:289 msgid "... file updates" msgstr "...arquivos atualizados" #: ui-settings.glade:304 msgid "... errors" msgstr "...erros" #: ui-settings.glade:319 msgid "... synchronization completion" msgstr "...sincronização terminada" #: ui-settings.glade:334 msgid "Start Syncthing-GTK when I login to my desktop" msgstr "Iniciar o Syncthing-GTK quando eu me autenticar nesse computador" #: ui-settings.glade:350 msgid "Minimize to _tray on start" msgstr "Minimizar para a área de no_tificações ao iniciar" #: ui-settings.glade:366 msgid "Use _icons in menu" msgstr "Usar ícones no men_u" #: ui-settings.glade:383 msgid "Display paths in directories panel" msgstr "Exibir caminho no painel de pastas" #: ui-settings.glade:399 msgid "Force _dark theme" msgstr "Forçar _tema escuro" #: ui-settings.glade:474 msgid "_Interface" msgstr "_Interface" #: ui-settings.glade:492 msgid "Integrate Syncthing with filemanagers" msgstr "Integrar Syncthing com gerenciadores de arquivos" #: ui-settings.glade:507 msgid "Nemo (Cinamon Desktop)" msgstr "Nemo (Cinamon Desktop)" #: ui-settings.glade:524 msgid "Nautilus (Ubuntu/GNOME)" msgstr "Nautilus (Ubuntu/GNOME)" #: ui-settings.glade:540 msgid "Caja (MATE Desktop)" msgstr "Caja (MATE Desktop)" #: ui-settings.glade:579 msgid "" "Note: You may need to restart your filemanager after toggling " "integration." msgstr "Nota: Você pode precisar reiniciar seu gerenciador de arquivos após mudar essa opção." #: ui-settings.glade:598 msgid "_Integration" msgstr "_Integração" #: ui-settings.glade:627 msgid "Keep Syncthing binary up-to-date" msgstr "Manter o binário do Syncthing atualizado" #: ui-settings.glade:647 msgid "" "If enabled, Syncthing-GTK will automatically check for new daemon releases " "and replace binary with latest version." msgstr "Se habilitado, Syncthing-GTK procurará automaticamente por novas versões do serviço e o atualizará com a mais recente." #: ui-settings.glade:662 msgid "Daemon process priority" msgstr "Prioridade do serviço" #: ui-settings.glade:698 msgid "" "Priority will be used only if \"start daemon in background\" option " "is checked on \"Interface\" page." msgstr "Prioridade será aplicada apenas se a opção \"iniciar serviço em segundo plano\" estiver habilitada nas opções de \"Interface\"." #: ui-settings.glade:713 msgid "Maximum number of CPU cores" msgstr "Máximo de núcleos de CU" #: ui-settings.glade:731 msgid "" "Sets the maximum number of CPU cores for daemon to use. This value will be " "used only if \"start daemon in background\" option is checked on " "\"Interface\" page." msgstr "Máximo de núcleos de CPU usados pelo serviço. Esse valor será usado apenas se a opção \"iniciar serviço em segundo plano\" estiver habilitada nas opções de \"Interface\"." #: ui-settings.glade:786 msgid "Daemon" msgstr "Serviço" #: ui-settings.glade:808 msgid "" "This binary will be started when syncthing daemon is not running and " "\"start daemon in background\" option is checked on " "\"Interface\" page." msgstr "Esse binário será iniciado quando o serviço do Synching não estiver rodando e a opção \"iniciar serviço em segundo plano\" estiver habilitada nas opções de \"Interface\"." #: ui-settings.glade:838 msgid "Syncthing binary location" msgstr "Localização do binário do Syncthing" #: ui-settings.glade:867 msgid "Daemon arguments and variables" msgstr "Argumentos e variáveis do serviço" #: ui-settings.glade:897 msgid "" "Space-separated list of arguments and environment variables passed when starting above binary\n" "\n" "Use VARIABLE=\"value\" to set variable and -argument=\"value\" (with dash) for argument.\n" "\n" "If you need to pass commandline to different command (such as logger or ionice), separate prefixed arguments with exclamation mark \"!\"\n" "\n" "Example:\n" " STTRACE=\"all\" logger -t /var/log/syncthing.log ! -logflags=10" msgstr "Lista de argumentos e variáveis de ambiente separados por espaço, quando acima do binário\n\nUse VARIABLE=\"value\" para configurar uma variável -argument=\"value\" (com hífen) para um argumento.\n\n\nSe você precisa passar uma linha de comandos para outro, (como o logger ou o ionice), separe os argumentos prefixados com um sinal de exclamacão.\n\nExemplo:\nSTTRACE=\"all\" logger -t /var/log/syncthing.log ! -logflags=10" #: ui-settings.glade:921 msgid "" "Warning: Changing settings on this page may prevent you from using " "Syncthing-GTK" msgstr "Tenha cuidado! Mudar essas configurações pode te impedir de usar o Syncthing-GTK." syncthing-gtk-0.9.4.4/locale/ru/000077500000000000000000000000001352162771300163535ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/locale/ru/LC_MESSAGES/000077500000000000000000000000001352162771300201405ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/locale/ru/LC_MESSAGES/syncthing-gtk.mo000066400000000000000000001240021352162771300232650ustar00rootroot00000000000000Q ,0>1p &; R]nQW/   : ,H!u]T -Z      g!!}!!!!! ! !"'"!G"i"$"D"" "##0#5H#]~## # # $ $8$$O$t$"$5$D$$% *%8%I%\%z%%%%%!%& )&e6&&&&&& &-&,''T')s''&')'((&/(V(!t(((((R(*)K0)g|))+>, O, Y, e, p,~,0,,, , ,r,n-P9.a.=.*//000&0)0(1(91"b1*1(191%2 92DD2,2 2 2223 &32363 =3J3 f3t333 33344 4444#4074Kh44 75C5X5p5Ou5V56 #6/62>63q6K656;'7c7=7o1888888899 #9-969vV99-9,:E: T:^:;;-; <;AH; ;;1;";;k;g< >. > <>J>d>l>>,>>>> >? ?1?K?(@0@.O@;~@@@@+A0=A7nAA AAVA6;BrB3B3BmB)aCCp#D2D-DDE#EE E E E+E "F,F5F zGRz!zzzzz{{'{ 6{)C{Wm{{9Z|#})}>}!~:~m~+(F)okyHMIʃ!)˄)!AV v(؅!8kv_9ևFW *&!Qs`+7ċӋ͌$K׏##BfY{Ր>(/Xx )Ǒ5K@f>Kb2+'"9 =FU)ڕ  3[Ɩ"U;j|ژWhtV?@(i"|'(ǝQB\y M֞1$ V c*q2!. \9`L DPU+O{=T ft  .-3aw  ) /&EGl ΥE H Tamy" $3+֧3K,<&1 G~F2(mBqf,N@&> 0)5M}L+ =tW?U;y;u:94IQ66R%A/CC /"sV1Z9D'_ #)(:X oj $I20$+7!ve LJ\H@--EzBT47.*%ibwY.K ]dGlA*8g`HE#Pk'|?5aN" xQr8<![OcMp^h{J3>=OPSn DF%(device)s wants to share folder "%(folder)s". Add new folder?%(online)s/%(total)s online%s KiB/s%s day%s days%s days ago%s kB/s%s minutes ago%s minutes from now%s seconds ago%s seconds from now%s%%%ss(watch)... _ask me what to do... _wait for daemon... ask me w_hat to do... errors... file updates... leave daemon _running... start daemon in _background... synchronization completion... terminate _daemonNote: You may need to restart your filemanager after toggling integration.Warning: Changing settings on this page may prevent you from using Syncthing-GTKAbout Syncthing-GTKAbove NormalAdd Shared _FolderAdd _DeviceAddressAll DataAll devices offlineAllow Anonymous Usage Reporting?Alternatively, Syncthing-GTK can download Syncthing binaryAlways do same; Don't show this window againAlways start daemon automaticallyAn external command handles the versioning. It has to remove the file from the synced folder.Announce ServerAny devices configured on an introducer device will be added to this device as well.Attempting to download recent, please wait...Auto_update downloaded binaryBinary path:Browse for Syncthing binaryBrowse...CPU UtilizationCaja (MATE Desktop)Can't invoke the daemonCannot authorize with daemon. Please, use WebUI to generate API key or disable password authentication.Cannot download Syncthing daemon.Checking for available port...Clean out _afterCluster out of syncCommandCompressionConnectedConnected to Syncthing daemonConnecting to Syncthing daemon at %s...Connecting to Syncthing daemon...Connecting to daemon...Connection to Syncthing daemon lost.Connection to daemon failed. Check your configuration and try again.DaemonDaemon OutputDaemon _SettingsDaemon arguments and variablesDaemon process priorityDevice "%s" is trying to connect to syncthing daemon.Device "%(name)s" (%(device)s) at IP "%(ip)s" wants to connect. Add new device?Device IdentificationDevice _IDDevice _NameDisconnectedDisplay Syncthing-Inotify OutputDisplay _Daemon OutputDisplay desktop notifications for...Display error logDisplay paths in directories panelDo you really want remove device '%s' from Syncthing?Do you really want to permanently stop synchronizing directory '%s'?Done.Download RateDownload failed.Download finished.Downloaded file is corrupted.Downloading Syncthing %sDownloading Syncthing daemon.Downloading...Edit _Ignore PatternsEnable Local _DiscoveryEnable _Anonymous Usage ReportingEnable _Global DiscoveryEnable _UPnPEnter comma separated "ip:port" addresses or "dynamic" to perform automatic discovery of the address.ErrorError message:Exiting.ExternalExtracting update...Failed to create temporaly file.Failed to determine latest Syncthing version.Failed to download Syncthing daemon package.Failed to download upgrade: %sFailed to find unused port for listening.Failed to generate keysFailed to load Syncthing configurationFailed to load configuration from daemon.Failed to modify Syncthing configurationFailed to save Syncthing configurationFailed to save configuration.Failed to start Syncthing daemon.File Pull _OrderFile _VersioningFile location:File location: File permission bits are ignored when looking for changes. Use on FAT filesystems.FilesFiles are moved to .stversions folder when replaced or deleted by SyncthingFiles are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing.Files are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing. Versions are automatically deleted if they are older than the maximum age or exceed the number of files allowed in an interval. The following intervals are used: for the first hour a version is kept every 30 seconds, for the first day a version is kept every hour, for the first 30 days a version is kept every day, until the maximum age a version is kept every week.Files are protected from changes made on other devices, but changes made on this device will be sent to the rest of the cluster.First run wizardFolder IDFolder TypeFolder _IDFolder _LabelForce _dark themeGTK GUI and notification area icon for SyncthingGitHubGlobal Discovery _ServersGlobal StateHide WindowIf enabled, Syncthing-GTK will automatically check for new daemon releases and replace binary with latest version.If enabled, changed, created and delete files are synchronized immediately, as long as Syncthing-GTK is running. Note: Using this along with short Rescan Interval (<300s) may consume a lot of resources.If the reported data set is changed you will be prompted with this dialog again.If you already had Syncthing daemon configured, please, exit this wizard and check your %s folderIf you have Syncthing installed, please, set path to %s belowIf you have Syncthing installed, please, set path to %s below or click on Download button to download latest Syncthing package.If you prefer to be able to manage Syncthing remotely, over the internet or on your local network, select listen on all interfaces and set username and password to protect Syncthing from unauthorized access.Ignore P_ermissionsIgnore PatternsIgnore PermissionsIn File Pull Order comboboxAlphabeticIn File Pull Order comboboxLargest FirstIn File Pull Order comboboxNewest FirstIn File Pull Order comboboxOldest FirstIn File Pull Order comboboxRandomIn File Pull Order comboboxSmallest FirstInitial configuration should be created.Install %(package)s package to enable %(feature)s supportIntegrate Syncthing with filemanagersIntroducerIt is used to track common platforms, folder sizes and app versions.It looks like you never have used Syncthing.Keep Syncthing binary up-to-dateLast SeenListen on _all interfacesListen on _localhostLocal Discovery _PortLocal StateLowLowestMa_ximum AgeMaximum number of CPU coresMetadata OnlyMinimize to _tray on startMinimum Free Disk SpaceMonitor filesystem for _changesMore infoNautilus (Ubuntu/GNOME)Nemo (Cinamon Desktop)NeverNoNormalOffOfflineOnlineOpen _Web InterfaceOpen browser with _WebUI when daemon is startingOptional descriptive label for the folder. Can be different on each device.Otherwise, select listen on localhost, so only users and programs on this computer will be able to interact with Syncthing.Out Of SyncOutgoing _Rate LimitOverride Remote ChangesPathPath to the folder on the local computer. Will be created if it does not exist.Path where versions should be stored (leave empty for the default .stversions folder).PausedPlease waitPlease wait...Please, check error log and fill bug report on %s.Please, check your firewall settings and try again.Please, check your installation or set new path to Syncthing daemon binary.Please, install pyinotify package to use this featurePlease, restart Syncthing-GTK to apply all changed settingsPlease, use package manager to install the Syncthing package or %(download_link)s from Syncthing page and save it to your %(target)s directory.Please, use package manager to install the Syncthing package.Priority will be used only if "start daemon in background" option is checked on "Interface" page.RAM UtilizationRescan IntervalRescan _IntervalRestarting daemon...ResumeResume Sync_thingS_top SyncthingSaving settings...Saving...ScanningSearching for Syncthing daemon.See Syncthing documentation for list of supported patternsSelect Folder for new FolderSelect the devices to share this folder with.Select the folders to share with this deviceSend & ReceiveSend OnlySets the maximum number of CPU cores for daemon to use. This value will be used only if "start daemon in background" option is checked on "Interface" page.Sh_utdown DaemonShare With _DevicesShare _FoldersShared WithShort identifier for the folder. Must be the same on all devices.Show WindowShow _IDShown instead of Device ID in the cluster status.Shutdown Syncthing daemon as well?SimpleSorry, connecting to HTTPS is not supported on this platform. Please, use WebUI to disable HTTPS try again.Space-separated list of arguments and environment variables passed when starting above binary Use VARIABLE="value" to set variable and -argument="value" (with dash) for argument. If you need to pass commandline to different command (such as logger or ionice), separate prefixed arguments with exclamation mark "!" Example: STTRACE="all" logger -t /var/log/syncthing.log ! -logflags=10StaggeredStart Syncthing-GTK when I login to my desktopStart it now?Starting Syncthing daemonStoppedSync Protocol Listen AddressesSynchronizationSynchronization of folder '%s' is completed.Synchronizing %s foldersSynchronizing '%s'SyncingSyncthingSyncthing Daemon SettingsSyncthing binarySyncthing binary locationSyncthing can be managed remotely using WebUI and even if you are going to use Syncthing-GTK, WebUI needs to be enabled, as Syncthing-GTK uses it to communicate with the Syncthing daemon.Syncthing daemon binary cannot be found.Syncthing daemon binary found.Syncthing daemon doesn't appear to be running.Syncthing daemon failed to generate RSA key or certificate.Syncthing daemon is too old.Syncthing daemon not found.Syncthing has been shut down.Syncthing has been successfully configured.Syncthing is generating RSA key and certificate.Syncthing is probably restarting or has been shut down.Syncthing is restarting.Syncthing-GTKSyncthing-GTK SettingsSyncthing-GTK needs Syncthing daemon %(min)s or newer, but only %(actual)s were found.Syncthing-GTK started and running in notification areaSyncthing-Inotify OutputSyncthing-Inotify is unavailable or failed to startThe aggregated statistics are publicly available atThe configuration has been saved but not activated. Syncthing must restart to activate the new configuration.The encrypted usage report is sent daily.The entered device ID does not look valid. It should be a 52 character string consisting of letters and numbers, with spaces and dashes being optional.The first command line parameter is the folder path and the second parameter is the relative path in the folder.The number of days to keep files in the trash can.The number of old versions to keep, per file.This binary will be started when syncthing daemon is not running and "start daemon in background" option is checked on "Interface" page.This may take a while...This platform (%s) is not supportedTrashcanTry again.UI SettingsUI _SettingsUnexpected folder ID sent from device "%s".UnlimitedUnsharedUnusedUp to DateUpload RateUs_e traditional window headerUse _icons in menuVersionVersion:Versioning _ModeVersions _PathWaiting for Syncthing daemon at %s...WebUI Listen AddressesWebUI setupWelcome to Syncthing-GTK first run wizard!When exiting after daemon was started in background...When starting and Syncthing daemon is not running...XYZ-123-ABCYesYou can configure more details later, in UI Settings and Daemon Settings menus in main window of application.Your syncthing daemon is too old.Your syncthing daemon is too old. Please, upgrade syncthing package at least to version %s and try again._About_Add_Addresses_Advanced_Browse_Browse..._Compression_Download Syncthing binary_Download..._Folder Settings_Ignore_Incoming Rate Limit_Integration_Interface_Introducer_Keep Versions_Other_Outgoing Rate Limit_Password_Path_Quit_Rescan_Restart_Restart Daemon_Send Only Folder_Unlimited_Usernamedisableddownload latest binaryin %s daysin a momentjust nowlast resort and generally not suggested.never deleteno limitofflineto %s and keep it up-to-date, but this option is meant as~%s hours ago~%s hours from nowProject-Id-Version: syncthing-gtk Report-Msgid-Bugs-To: POT-Creation-Date: 2016-04-20 11:27+0200 PO-Revision-Date: 2017-09-22 22:53+0000 Last-Translator: kozec Language-Team: Russian (http://www.transifex.com/syncthing-gtk/syncthing-gtk/language/ru/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: ru Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3); %(device)s хочет предоставить доступ к папке "%(folder)s". Добавить новую папку?%(online)s/%(total)s онлайн%s кБ/с%s день%s дней%s дней назад%s кБ/с%s минут назад%s минут с этого момента%s секунд назад%s секунд с этого момента%s%%%ss(отслеживается)... _спросить меня, что делать... _ждать пока запустится демон... спросить меня, что делать... при появлении ошибки... при изменении файлов... пусть служба продолжает работать... запускать демон в фоновом режиме... при завершении синхронизации... прекратить работу _демонаПримечание: Вам, возможно, потребуется перезапустить файловый менеджер после включения интеграции.Предупреждение: Изменение этих настроек может препятствовать работе Syncthing-GTKО Syncthing-GTKВыше нормыДобавить новую _папку_Добавить устройствоАдресВсе данныеВсе устройства в оффлайнРазрешить анонимную отправку статистики о работе программы?В качестве альтернативы, Syncthing-GTK может загрузить бинарный файл SyncthingВсегда делать так. Не показывать окно снова.Запускать демон автоматически?Внешняя команда для управления версиями. Она должна удалить файл из синхронизированной папки.Анонс сервераЛюбые устройства, настроенные на introducer устройствах будут добавлены к этому устройству.Пытаюсь загрузить недавнее, пожалуйста, подождите ...Автоматическая загрузка бинарного файла программыПуть к программе:Указать расположение для Syncthing-программы Обзор...Загрузка процессораCaja (MATE Desktop)Не удаётся запустить демонНевозможно авторизоваться у демона. Пожалуйста, используйте WebUI для генерации ключа API или отключите проверку подлинности пароля.Не удаётся скачать демон Syncthing.Поиск доступных портов…Очищать _послеКластер не синхронизированКомандаСжатиеОнлайнСоединение с демоном SyncthingПодключение к демону Syncthing на %s...Подключение к демону Syncthing…Подключение к демону…Соединение с демоном Syncthing потеряно.Подключение к демону не удалось. Проверьте конфигурацию и повторите попытку.ДемонЛог демона_Настройки демонаАргументы и переменные демонаПриоритет процесса демонаУстройство "%s" пытается подключиться к Демону Syncthing .Устройство "%(name)s" (%(device)s) с IP-адресом "%(ip)s" ожидает соединения. Добавить новое устройство?Идентификация устройстваID устройстваИмя устройстваОффлайнПоказать лог Syncthing-Inotify_Показать лог демонаПоказывать оповещения на рабочем столе...Показать лог ошибокОтображать путь к каталогам на панелиВы действительно хотите удалить устройство '%s' из Syncthing?Вы действительно хотите навсегда остановить синхронизацию каталога '% s'?Готово.Скорость загрузкиЗагрузка не удалась.Загрузка завершена.Загруженный файл повреждён.Загрузка Syncthing %sЗагружается демон Syncthing.Загружается…Редактировать шаблоны игнорированияВключить локальное обнаружениеВключить _анонимную отправку статистики о работе программыВключить глобальное обнаружениеВключить _UPnPЧерез запятую введите "IP: port" адресов или "dynamic" для выполнения автоматического обнаружения адреса.ОшибкаСообщение об ошибке:Выход.ВнешниеРаспаковка обновления ...Не удалось создать временные файлы.Не удалось найти самую последнюю версию Syncthing.Не удалось скачать демон Syncthing.Ошибка загрузки обновления: %sНе удалось найти неиспользуемые портыНе удалось создать ключиНе удалось загрузить конфигурацию SyncthingНевозможно загрузить конфигурацию демона.Не удалось модифицировать настройки SyncthingНе удалось сохранить конфигурацию SyncthingНе удалось сохранить конфигурацию.Не удалось запустить демон Syncthing._Порядок получения файлов_Версионирование файловРасположение файла:Расположение файла: Игнорировать биты доступа у файлов при поиске изменений. Используйте для файловых систем FAT.Файл(ов)Файлы перемещаются в папку .stversions, когда заменены или удалены SyncthingЗаменённые и удалённые файлы будут помечаться датой и перемещаться в папку .stversions.Файлы перемещаются в соответствии с версией в папку .versions при замене или удалении syncthing. Версии автоматически удаляются, если они старше максимального возраста или превышают допустимое количество файлов в интервале. Используются следующие интервалы: в течение первого часа версия сохраняется каждые 30 секунд, в течение первого дня версия хранится каждый час, в течение первых 30 дней версия хранится каждый день, до максимального времени версия хранится за каждую неделя.Файлы защищены от изменений, сделанных на других устройствах, но изменения, сделанные на этом устройстве, будут отправлены в остальные части кластера.Мастер первого запускаID папкиТип папки_ID папки_Метка папкиПринудительно использовать тёмную темуGTK GUI и иконка в области уведомлений для SyncthingGitHubСервера глобального обнаруженияГлобальное состояниеСкрыть окноЕсли включено Syncthing-GTK будет автоматически проверять наличие новых версий демона и обновлять его.Если этот параметр включен, изменённые, созданные и удалённые файлы синхронизируются немедленно, до тех пор, пока Syncthing-GTK работает. Примечание: Использование этого вместе с коротким интервалом сканирования (<300 с) может потреблять много ресурсов.Если набор данных отправляемого отчёта изменится вам будет предложен этот диалог снова.Если у вас уже был настроена демон Syncthing, пожалуйста, выйдите из этого мастера и проверьте папку %sЕсли вы установили Syncthing, пожалуйста, установите путь к % s нижеЕсли вы установили Syncthing, пожалуйста, установите путь к % s ниже или нажмите на кнопку Скачать , чтобы загрузить последнюю версию пакета Syncthing.Если вы предпочитаете управлять Syncthing удалённо через Интернет или в локальной сети, выберите слушать на всех интерфейсах и установите имя пользователя и пароль для защиты Syncthing от несанкционированного доступа.Игнорировать права _доступаИгнорировать шаблоныИгнорировать разрешенияПо алфавитуСперва более большиеСперва более новыеСперва более старыеСлучайноСперва более маленькиеПервоначальная конфигурация должна быть создана.Установите пакет %(package)s, для включения поддержки %(feature)sИнтегрировать Syncthing с файловыми менеджерамиIntroducerИспользуется для отслеживания общих платформ, размеров папок и версии приложения.Похоже, что вы никогда не использовали Syncthing.Держать демон Syncthing в актуальном состоянииПоследний просмотрСписок всех _интерфейсовСписок _локальных хостов_Порт локального обнаруженияЛокальное состояниеНизкийОчень низкийМаксимальное _времяМаксимальное количество ядер процессораТолько метаданныеСворачивать в _трей при запускеМинимум свободного места на дискеМониторинг изменений файловой системыБольше информацииNautilus (Ubuntu/GNOME)Nemo (Cinamon Desktop)НикогдаНетНормальныйОтключенОффлайнОнлайн_Открыть веб-интерфейсОткрывать в браузере _WebUI, когда служба стартуетНеобязательная метка для описания папки. Может быть разной на каждом устройстве.В противном случае выберите слушать на локальном хосте, так что, только пользователи и программы на этом компьютере могли иметь возможность взаимодействовать с Syncthing.Не синхронизированЛимит скорости _отдачиПерезаписать удалённые измененияРасположениеПуть к папке на компьютере. Если папка не существует, она будет создана.Место, где хранятся версии (если пусто, то в каталоге .stversions).ПриостановленПожалуйста, подождитеПожалуйста, подожите…Пожалуйста, проверьте лог ошибок и сделайте баг-репорт в %s.Пожалуйста, проверьте настройки вашего межсетевого экрана и попробуйте снова.Пожалуйста, проверьте правильность установки или установите новый путь к двоичного файлу Syncthing.Пожалуйста, установите пакет pyinotify для использования данной опцииПожалуйста, перезапустите Syncthing-GTK для вступления в силу изменений настроекПожалуйста, используйте менеджер пакетов для установки пакета или %(download_link)s для загрузки из Syncthing страницы и сохраните в каталоге %(target)s.Пожалуйста, используйте пакетный менеджер для установки пакета Syncthing.Приоритет будет отдаваться только тогда, когда отмечена опция "прекратить работу демона" на странице "Интерфейс".Использование ОЗУИнтервал сканированияИнтервал сканированияПерезапуск демонаПродолжитьПродолжить Sync_thing_Остановка службыСохранение настроек…Сохранение…СканированиеПоиск демона SyncthingСм Документация Syncthing для списка поддерживаемых шаблоновВыберите папку для новой папкиВыберите устройства, для которых эта папка будет доступна:Выберите папку для открытия общего доступа для этого устройстваРассылать и получать измененияРассылать изменения, но не получать ихУстанавливает максимальное количество процессорных ядер которые могут использоваться службой. Это значение будет использовано только если выбрана опция "запускать демон в фоновом режиме" на странице "Интерфейс"._Отключить демон_Общий доступПредоставленные _папкиСовместный доступКороткий идентификатор папки. Должен быть одинаковым на всех устройствах.Показать окно_Показать IDБудет показываться вместо ID в списке всех устройств.Желаете отключить демон Syncthing?ПростойК сожалению, подключение к HTTPS не поддерживается на этой платформе. Пожалуйста, используйте WebUI, чтобы отключить HTTPS, и повторите попытку.Разделённый пробелами список аргументов и переменных окружений, который передаётся при запуске программы Используйте VARIABLE="value", чтобы установить переменную, и -argument="value" (с тире), чтобы установить аргумент. Если вам нужно передать вывод командной строки в другую команду (например, logger или ionice), используйте перед аргументом восклицательный знак "!" Например: STTRACE="all" logger -t /var/log/syncthing.log ! -logflags=10В шахматном порядкеЗапускать Syncthing-GTK при запуске компьютераЗапустить снова?Запуск демона SyncthingОстановленИспользуемый адрес и протокол для синхронизацииСинхронизацияСинхронизация папки '%s' завершена.Синхронизация %s папкиСинхронизация '%s'СинхронизацияSyncthingНастройки демона SyncthingSyncthing-программаРасположение программы SyncthingSyncthing может управляться дистанционно с помощью WebUI, но даже если вы собираетесь использовать Syncthing-GTK, WebUI должен быть включен, так как Syncthing-GTK использует его для связи с демоном Syncthing.Бинарный файл Syncthing-демон не найденБинарный файл демона Syncthing найден.Демон Syncthing, по всей видимости не запущен.Демону Syncthing не удалось создать RSA ключ или сертификатВаш демон Syncthing устарел.Демон Syncthing не найден.Syncthing был выключен.Syncthing успешно сконфигурирован.Syncthing создал RSA ключ и сертификат.Syncthing , вероятно, перезапускается или выключен.Syncthing перезапускается.Syncthing-GTKНастройки Syncthing-GTKSyncthing-GTK требуется демон Syncthing версии %(min)s или новее, найдена только версия %(actual)s.Syncthing-GTK запущен и находится в области уведомленийЛог Syncthing-InotifySyncthing-Inotify не доступна или не удалось запуститьСобранные статистические данные являются общедоступнымиКонфигурация была сохранена, но не активирована. Syncthing необходимо перезапустить, чтобы активировать новую конфигурацию.Статистика отправляется в зашифрованном виде на ежедневной основе.Введенный идентификатор устройства не подходит. Он должен быть 52 строчных символа, состоять из букв и цифр, пробелы и тире являются необязательными.Первый параметр командной строки это путь к папке, а второй параметр относительный путь к папке.Количество дней, в течение которых файлы сохраняются в корзине.Сколько версий каждого файла сможет храниться.Файл программы запускается, когда демон Syncthing не работает, и опция "служба стартует в фоновом режиме" отмечена на странице "Интерфейс".Это может занять некоторое время...Эта платформа (%s) не поддерживаетсяУдалённыеПопробовать снова.Настройки интерфейса_Настройки интерфейсаПолучен неизвестный ID папки с устройства "%s".Не ограниченоНеобщедоступноНе используетсяСинхронизированоСкорость отдачиИспользовать традиционный заголовок окнаИспользовать иконки в менюВерсияВерсия:Режим _версионированияПуть к версииОжидание демона Syncthing на %s…Список адресов WebUIНастройка веб-интерфейсаДобро пожаловать в мастер первого запуска Syncthing-GTK!При выходе, если демон был запущен в фоновом режиме...При запуске и не запущенной службе Syncthing...XYZ-123-ABCДаВы можете настроить более подробную информацию позже, в Настройки интерфейса и Настройки службы меню в главном окне приложения.Ваш демон Syncthing устарел.Ваш демон Syncthing устарел. Пожалуйста, обновите Syncthing пакет, по крайней мере, до версии %s и повторите попытку._О программе_Добавить_Адреса_Дополнительно_Обзор_Обзор…_Сжатие_Загрузка Syncthing-программы_Загрузка_Настройки папки_ИгнорироватьЛимит скорости _загрузки_ИнтеграцияИнтерфейс_Introducer_Хранить версий_Другое_Лимит скорости отдачи_Пароль_Путь_Выйти_Пересканировать_Перезапуск_Перезапустить демон_Рассылать изменения, но не получать их_Неограничено_Имя_пользователяОтключитьзагружена последняя версия программы%s днейсейчаспрямо сейчасПоследнее средство, которое, как правило, не рекомендуется.Никогда не удалятьне ограниченоОффлайнв %s и поддерживать его в актуальном состоянии, но это и так подразумевается%s часов назад~%s часов с этого моментаsyncthing-gtk-0.9.4.4/locale/ru/LC_MESSAGES/syncthing-gtk.po000077500000000000000000001540121352162771300232770ustar00rootroot00000000000000# Syncthing-GTK # Copyright (C) 2014-2015 Kozec and contributors # This file is distributed under the same license as the Syncthing-GTK package. # # Translators: # Anton Midyukov , 2016 # landergate, 2017 # landergate, 2017 msgid "" msgstr "" "Project-Id-Version: syncthing-gtk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-04-20 11:27+0200\n" "PO-Revision-Date: 2017-09-22 22:53+0000\n" "Last-Translator: kozec \n" "Language-Team: Russian (http://www.transifex.com/syncthing-gtk/syncthing-gtk/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ru\n" "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" #: syncthing_gtk/app.py:194 msgid "Syncthing-GTK started and running in notification area" msgstr "Syncthing-GTK запущен и находится в области уведомлений" #: syncthing_gtk/app.py:288 #, python-format msgid "%s kB/s" msgstr "%s кБ/с" #: syncthing_gtk/app.py:302 syncthing_gtk/notifications.py:77 #: syncthing_gtk/wizard.py:53 msgid "Syncthing-GTK" msgstr "Syncthing-GTK" #: syncthing_gtk/app.py:363 syncthing_gtk/app.py:364 syncthing_gtk/app.py:942 msgid "Syncing" msgstr "Синхронизация" #: syncthing_gtk/app.py:366 syncthing_gtk/app.py:367 msgid "Scanning" msgstr "Сканирование" #: syncthing_gtk/app.py:390 syncthing_gtk/app.py:652 msgid "Starting Syncthing daemon" msgstr "Запуск демона Syncthing" #: syncthing_gtk/app.py:424 msgid "Allow Anonymous Usage Reporting?" msgstr "Разрешить анонимную отправку статистики о работе программы?" #: syncthing_gtk/app.py:426 msgid "The encrypted usage report is sent daily." msgstr "Статистика отправляется в зашифрованном виде на ежедневной основе." #: syncthing_gtk/app.py:427 msgid "It is used to track common platforms, folder sizes and app versions." msgstr "Используется для отслеживания общих платформ, размеров папок и версии приложения." #: syncthing_gtk/app.py:428 msgid "" "If the reported data set is changed you will be prompted with this dialog " "again." msgstr "Если набор данных отправляемого отчёта изменится вам будет предложен этот диалог снова." #: syncthing_gtk/app.py:430 msgid "The aggregated statistics are publicly available at" msgstr "Собранные статистические данные являются общедоступными" #: syncthing_gtk/app.py:486 msgid "Extracting update..." msgstr "Распаковка обновления ..." #: syncthing_gtk/app.py:491 msgid "Restarting daemon..." msgstr "Перезапуск демона" #: syncthing_gtk/app.py:507 #, python-format msgid "Failed to download upgrade: %s" msgstr "Ошибка загрузки обновления: %s" #: syncthing_gtk/app.py:525 #, python-format msgid "Downloading Syncthing %s" msgstr "Загрузка Syncthing %s" #: syncthing_gtk/app.py:604 msgid "Connected to Syncthing daemon" msgstr "Соединение с демоном Syncthing" #: syncthing_gtk/app.py:614 msgid "Connection to Syncthing daemon lost." msgstr "Соединение с демоном Syncthing потеряно." #: syncthing_gtk/app.py:615 msgid "Syncthing is probably restarting or has been shut down." msgstr "Syncthing , вероятно, перезапускается или выключен." #: syncthing_gtk/app.py:617 msgid "Syncthing has been shut down." msgstr "Syncthing был выключен." #: syncthing_gtk/app.py:621 syncthing_gtk/app.py:1499 msgid "Syncthing is restarting." msgstr "Syncthing перезапускается." #: syncthing_gtk/app.py:621 syncthing_gtk/app.py:1499 msgid "Please wait" msgstr "Пожалуйста, подождите" #: syncthing_gtk/app.py:644 #, python-format msgid "Connecting to Syncthing daemon at %s..." msgstr "Подключение к демону Syncthing на %s..." #: syncthing_gtk/app.py:649 #, python-format msgid "Waiting for Syncthing daemon at %s..." msgstr "Ожидание демона Syncthing на %s…" #: syncthing_gtk/app.py:664 msgid "Your syncthing daemon is too old." msgstr "Ваш демон Syncthing устарел." #: syncthing_gtk/app.py:664 msgid "Attempting to download recent, please wait..." msgstr "Пытаюсь загрузить недавнее, пожалуйста, подождите ..." #: syncthing_gtk/app.py:670 msgid "" "Cannot authorize with daemon. Please, use WebUI to generate API key or " "disable password authentication." msgstr "Невозможно авторизоваться у демона. Пожалуйста, используйте WebUI для генерации ключа API или отключите проверку подлинности пароля." #: syncthing_gtk/app.py:672 #, python-format msgid "" "Your syncthing daemon is too old.\n" "Please, upgrade syncthing package at least to version %s and try again." msgstr "Ваш демон Syncthing устарел.\nПожалуйста, обновите Syncthing пакет, по крайней мере, до версии %s и повторите попытку." #: syncthing_gtk/app.py:674 msgid "" "Sorry, connecting to HTTPS is not supported on this platform.\n" "Please, use WebUI to disable HTTPS try again." msgstr "К сожалению, подключение к HTTPS не поддерживается на этой платформе.\nПожалуйста, используйте WebUI, чтобы отключить HTTPS, и повторите попытку." #: syncthing_gtk/app.py:677 msgid "Connection to daemon failed. Check your configuration and try again." msgstr "Подключение к демону не удалось. Проверьте конфигурацию и повторите попытку." #: syncthing_gtk/app.py:678 syncthing_gtk/app.py:1992 #: syncthing_gtk/editordialog.py:314 msgid "Error message:" msgstr "Сообщение об ошибке:" #: syncthing_gtk/app.py:689 msgid "More info" msgstr "Больше информации" #: syncthing_gtk/app.py:715 msgid "" "The configuration has been saved but not activated.\n" "Syncthing must restart to activate the new configuration." msgstr "Конфигурация была сохранена, но не активирована.\nSyncthing необходимо перезапустить, чтобы активировать новую конфигурацию." #: syncthing_gtk/app.py:717 msgid "_Restart" msgstr "_Перезапуск" #: syncthing_gtk/app.py:784 #, python-format msgid "%(device)s wants to share folder \"%(folder)s\". Add new folder?" msgstr "%(device)s хочет предоставить доступ к папке \"%(folder)s\". Добавить новую папку?" #: syncthing_gtk/app.py:791 syncthing_gtk/app.py:813 msgid "_Add" msgstr "_Добавить" #: syncthing_gtk/app.py:806 #, python-format msgid "" "Device \"%(name)s\" (%(device)s) at IP \"%(ip)s\" wants to " "connect. Add new device?" msgstr "Устройство \"%(name)s\" (%(device)s) с IP-адресом \"%(ip)s\" ожидает соединения. Добавить новое устройство?" #: syncthing_gtk/app.py:814 msgid "_Ignore" msgstr "_Игнорировать" #: syncthing_gtk/app.py:832 msgid "RAM Utilization" msgstr "Использование ОЗУ" #: syncthing_gtk/app.py:833 msgid "CPU Utilization" msgstr "Загрузка процессора" #: syncthing_gtk/app.py:834 syncthing_gtk/app.py:1353 msgid "Download Rate" msgstr "Скорость загрузки" #: syncthing_gtk/app.py:835 syncthing_gtk/app.py:1354 msgid "Upload Rate" msgstr "Скорость отдачи" #: syncthing_gtk/app.py:836 msgid "Announce Server" msgstr "Анонс сервера" #: syncthing_gtk/app.py:837 syncthing_gtk/app.py:1356 msgid "Version" msgstr "Версия" #: syncthing_gtk/app.py:860 syncthing_gtk/editordialog.py:394 msgid "disabled" msgstr "Отключить" #: syncthing_gtk/app.py:862 msgid "Online" msgstr "Онлайн" #: syncthing_gtk/app.py:862 msgid "offline" msgstr "Оффлайн" #: syncthing_gtk/app.py:864 #, python-format msgid "%(online)s/%(total)s online" msgstr "%(online)s/%(total)s онлайн" #: syncthing_gtk/app.py:891 syncthing_gtk/app.py:1357 #: syncthing_gtk/app.py:1382 msgid "Never" msgstr "Никогда" #: syncthing_gtk/app.py:899 syncthing_gtk/app.py:1691 #: syncthing_gtk/app.py:1692 msgid "Paused" msgstr "Приостановлен" #: syncthing_gtk/app.py:899 syncthing_gtk/app.py:924 syncthing_gtk/app.py:939 #: syncthing_gtk/infobox.py:60 msgid "Disconnected" msgstr "Оффлайн" #: syncthing_gtk/app.py:916 msgid "Connected" msgstr "Онлайн" #: syncthing_gtk/app.py:945 syncthing_gtk/app.py:980 syncthing_gtk/app.py:1030 #: syncthing_gtk/app.py:1031 syncthing_gtk/app.py:1070 msgid "Up to Date" msgstr "Синхронизировано" #: syncthing_gtk/app.py:966 syncthing_gtk/app.py:967 syncthing_gtk/app.py:968 msgid "Files" msgstr "Файл(ов)" #: syncthing_gtk/app.py:980 syncthing_gtk/app.py:1068 msgid "Cluster out of sync" msgstr "Кластер не синхронизирован" #: syncthing_gtk/app.py:995 msgid "Stopped" msgstr "Остановлен" #: syncthing_gtk/app.py:998 syncthing_gtk/app.py:1005 msgid "Error" msgstr "Ошибка" #: syncthing_gtk/app.py:1024 #, python-format msgid "Synchronizing '%s'" msgstr "Синхронизация '%s'" #: syncthing_gtk/app.py:1026 #, python-format msgid "Synchronizing %s folders" msgstr "Синхронизация %s папки" #: syncthing_gtk/app.py:1035 syncthing_gtk/app.py:1036 msgid "All devices offline" msgstr "Все устройства в оффлайн" #: syncthing_gtk/app.py:1040 syncthing_gtk/app.py:1041 msgid "Connecting to Syncthing daemon..." msgstr "Подключение к демону Syncthing…" #: syncthing_gtk/app.py:1079 msgid "Unshared" msgstr "Необщедоступно" #: syncthing_gtk/app.py:1082 msgid "Offline" msgstr "Оффлайн" #: syncthing_gtk/app.py:1176 msgid "Hide Window" msgstr "Скрыть окно" #: syncthing_gtk/app.py:1190 app.glade:651 msgid "Show Window" msgstr "Показать окно" #: syncthing_gtk/app.py:1239 msgid "Syncthing daemon doesn't appear to be running." msgstr "Демон Syncthing, по всей видимости не запущен." #: syncthing_gtk/app.py:1240 msgid "Start it now?" msgstr "Запустить снова?" #: syncthing_gtk/app.py:1243 msgid "Always start daemon automatically" msgstr "Запускать демон автоматически?" #: syncthing_gtk/app.py:1292 msgid "Folder ID" msgstr "ID папки" #: syncthing_gtk/app.py:1293 msgid "Path" msgstr "Расположение" #: syncthing_gtk/app.py:1294 msgid "Global State" msgstr "Глобальное состояние" #: syncthing_gtk/app.py:1295 msgid "Local State" msgstr "Локальное состояние" #: syncthing_gtk/app.py:1296 msgid "Out Of Sync" msgstr "Не синхронизирован" #: syncthing_gtk/app.py:1297 msgid "Folder Type" msgstr "Тип папки" #: syncthing_gtk/app.py:1298 msgid "Ignore Permissions" msgstr "Игнорировать разрешения" #: syncthing_gtk/app.py:1299 msgid "Rescan Interval" msgstr "Интервал сканирования" #: syncthing_gtk/app.py:1300 msgid "Shared With" msgstr "Совместный доступ" #: syncthing_gtk/app.py:1324 syncthing_gtk/app.py:1325 #: syncthing_gtk/app.py:1381 msgid "Yes" msgstr "Да" #: syncthing_gtk/app.py:1324 syncthing_gtk/app.py:1325 #: syncthing_gtk/app.py:1381 msgid "No" msgstr "Нет" #: syncthing_gtk/app.py:1327 msgid "(watch)" msgstr "(отслеживается)" #: syncthing_gtk/app.py:1341 msgid "Unused" msgstr "Не используется" #: syncthing_gtk/app.py:1350 msgid "Address" msgstr "Адрес" #: syncthing_gtk/app.py:1351 msgid "Synchronization" msgstr "Синхронизация" #: syncthing_gtk/app.py:1352 msgid "Compression" msgstr "Сжатие" #: syncthing_gtk/app.py:1355 msgid "Introducer" msgstr "Introducer" #: syncthing_gtk/app.py:1357 msgid "Last Seen" msgstr "Последний просмотр" #: syncthing_gtk/app.py:1378 device-edit.glade:22 msgid "All Data" msgstr "Все данные" #: syncthing_gtk/app.py:1379 device-edit.glade:26 folder-edit.glade:78 msgid "Off" msgstr "Отключен" #: syncthing_gtk/app.py:1375 msgid "Send Only" msgstr "Рассылать изменения, но не получать их" #: syncthing_gtk/app.py:1375 msgid "Send & Receive" msgstr "Рассылать и получать изменения" #: syncthing_gtk/app.py:1380 device-edit.glade:30 msgid "Metadata Only" msgstr "Только метаданные" #: syncthing_gtk/app.py:1522 msgid "Exiting." msgstr "Выход." #: syncthing_gtk/app.py:1523 msgid "Shutdown Syncthing daemon as well?" msgstr "Желаете отключить демон Syncthing?" #: syncthing_gtk/app.py:1528 msgid "Always do same; Don't show this window again" msgstr "Всегда делать так. Не показывать окно снова." #: syncthing_gtk/app.py:1768 #, python-format msgid "Do you really want to permanently stop synchronizing directory '%s'?" msgstr "Вы действительно хотите навсегда остановить синхронизацию каталога '% s'?" #: syncthing_gtk/app.py:1770 #, python-format msgid "Do you really want remove device '%s' from Syncthing?" msgstr "Вы действительно хотите удалить устройство '%s' из Syncthing?" #: syncthing_gtk/app.py:1838 msgid "Syncthing-Inotify Output" msgstr "Лог Syncthing-Inotify" #: syncthing_gtk/app.py:1844 msgid "Syncthing-Inotify is unavailable or failed to start" msgstr "Syncthing-Inotify не доступна или не удалось запустить" #: syncthing_gtk/app.py:1991 msgid "Failed to start Syncthing daemon." msgstr "Не удалось запустить демон Syncthing." #: syncthing_gtk/app.py:1993 msgid "" "Please, check your installation or set new path to Syncthing daemon binary." msgstr "Пожалуйста, проверьте правильность установки или установите новый путь к двоичного файлу Syncthing." #: syncthing_gtk/daemonsettings.py:24 msgid "Syncthing Daemon Settings" msgstr "Настройки демона Syncthing" #: syncthing_gtk/deviceeditor.py:24 msgid "" "The entered device ID does not look valid. It should be a 52 character " "string consisting of letters and numbers, with spaces and dashes being " "optional." msgstr "Введенный идентификатор устройства не подходит. Он должен быть 52 строчных символа, состоять из букв и цифр, пробелы и тире являются необязательными." #: syncthing_gtk/editordialog.py:312 msgid "Failed to load configuration from daemon." msgstr "Невозможно загрузить конфигурацию демона." #: syncthing_gtk/editordialog.py:313 msgid "Try again." msgstr "Попробовать снова." #: syncthing_gtk/editordialog.py:387 syncthing_gtk/editordialog.py:396 #, python-format msgid "%ss" msgstr "%ss" #: syncthing_gtk/editordialog.py:402 #, python-format msgid "%s%%" msgstr "%s%%" #: syncthing_gtk/editordialog.py:409 msgid "no limit" msgstr "не ограничено" #: syncthing_gtk/editordialog.py:411 #, python-format msgid "%s KiB/s" msgstr "%s кБ/с" #: syncthing_gtk/editordialog.py:418 msgid "never delete" msgstr "Никогда не удалять" #: syncthing_gtk/editordialog.py:420 #, python-format msgid "%s day" msgstr "%s день" #: syncthing_gtk/editordialog.py:422 #, python-format msgid "%s days" msgstr "%s дней" #: syncthing_gtk/editordialog.py:455 msgid "Failed to save configuration." msgstr "Не удалось сохранить конфигурацию." #: syncthing_gtk/finddaemondialog.py:24 find-daemon.glade:7 msgid "Can't invoke the daemon" msgstr "Не удаётся запустить демон" #: syncthing_gtk/finddaemondialog.py:26 msgid "Syncthing binary" msgstr "Syncthing-программа" #: syncthing_gtk/finddaemondialog.py:28 syncthing_gtk/finddaemondialog.py:37 msgid "Syncthing daemon binary cannot be found." msgstr "Бинарный файл Syncthing-демон не найден" #: syncthing_gtk/finddaemondialog.py:29 #, python-format msgid "" "If you have Syncthing installed, please, set path to %s below or click on " "Download button to download latest Syncthing package." msgstr "Если вы установили Syncthing, пожалуйста, установите путь к % s ниже или нажмите на кнопку Скачать , чтобы загрузить последнюю версию пакета Syncthing." #: syncthing_gtk/finddaemondialog.py:38 #, python-format msgid "If you have Syncthing installed, please, set path to %s below" msgstr "Если вы установили Syncthing, пожалуйста, установите путь к % s ниже" #: syncthing_gtk/finddaemondialog.py:82 syncthing_gtk/wizard.py:411 msgid "Cannot download Syncthing daemon." msgstr "Не удаётся скачать демон Syncthing." #: syncthing_gtk/finddaemondialog.py:83 syncthing_gtk/wizard.py:412 #, python-format msgid "This platform (%s) is not supported" msgstr "Эта платформа (%s) не поддерживается" #: syncthing_gtk/finddaemondialog.py:100 msgid "Downloading..." msgstr "Загружается…" #: syncthing_gtk/finddaemondialog.py:163 syncthing_gtk/stdownloader.py:251 #: syncthing_gtk/stdownloader.py:279 msgid "Download failed." msgstr "Загрузка не удалась." #: syncthing_gtk/finddaemondialog.py:185 syncthing_gtk/wizard.py:458 msgid "Download finished." msgstr "Загрузка завершена." #: syncthing_gtk/foldereditor.py:45 msgid "Select Folder for new Folder" msgstr "Выберите папку для новой папки" #: syncthing_gtk/foldereditor.py:166 syncthing_gtk/foldereditor.py:167 msgid "Please, install pyinotify package to use this feature" msgstr "Пожалуйста, установите пакет pyinotify для использования данной опции" #: syncthing_gtk/ignoreeditor.py:44 msgid "File location:" msgstr "Расположение файла:" #: syncthing_gtk/notifications.py:120 #, python-format msgid "Unexpected folder ID sent from device \"%s\"." msgstr "Получен неизвестный ID папки с устройства \"%s\"." #: syncthing_gtk/notifications.py:124 #, python-format msgid "Device \"%s\" is trying to connect to syncthing daemon." msgstr "Устройство \"%s\" пытается подключиться к Демону Syncthing ." #: syncthing_gtk/notifications.py:153 #, python-format msgid "Synchronization of folder '%s' is completed." msgstr "Синхронизация папки '%s' завершена." #: syncthing_gtk/notifications.py:160 #, python-format msgid "%(hostname)s: Downloaded '%(filename)s' to reflect remote changes." msgstr "" #: syncthing_gtk/notifications.py:165 #, python-format msgid "%(hostname)s: Deleted '%(filename)s' to reflect remote changes." msgstr "" #: syncthing_gtk/notifications.py:168 #, python-format msgid "%(hostname)s: Downloaded %(updated)s files to reflect remote changes." msgstr "" #: syncthing_gtk/notifications.py:171 #, python-format msgid "%(hostname)s: Deleted %(deleted)s files to reflect remote changes." msgstr "" #: syncthing_gtk/notifications.py:175 #, python-format msgid "" "%(hostname)s: downloaded %(updated)s files and deleted %(deleted)s files to " "reflect remote changes." msgstr "" #: syncthing_gtk/statusicon.py:48 msgid "Syncthing" msgstr "Syncthing" #: syncthing_gtk/stdownloader.py:174 syncthing_gtk/stdownloader.py:217 #: syncthing_gtk/stdownloader.py:313 syncthing_gtk/stdownloader.py:344 msgid "Failed to determine latest Syncthing version." msgstr "Не удалось найти самую последнюю версию Syncthing." #: syncthing_gtk/stdownloader.py:236 msgid "Failed to create temporaly file." msgstr "Не удалось создать временные файлы." #: syncthing_gtk/stdownloader.py:294 msgid "Downloaded file is corrupted." msgstr "Загруженный файл повреждён." #: syncthing_gtk/tools.py:192 #, python-format msgid "~%s hours ago" msgstr "%s часов назад" #: syncthing_gtk/tools.py:194 #, python-format msgid "%s minutes ago" msgstr "%s минут назад" #: syncthing_gtk/tools.py:196 #, python-format msgid "%s seconds ago" msgstr "%s секунд назад" #: syncthing_gtk/tools.py:197 msgid "just now" msgstr "прямо сейчас" #: syncthing_gtk/tools.py:199 #, python-format msgid "%s days ago" msgstr "%s дней назад" #: syncthing_gtk/tools.py:203 #, python-format msgid "in %s days" msgstr "%s дней" #: syncthing_gtk/tools.py:205 #, python-format msgid "~%s hours from now" msgstr "~%s часов с этого момента" #: syncthing_gtk/tools.py:207 #, python-format msgid "%s minutes from now" msgstr "%s минут с этого момента" #: syncthing_gtk/tools.py:209 #, python-format msgid "%s seconds from now" msgstr "%s секунд с этого момента" #: syncthing_gtk/tools.py:210 msgid "in a moment" msgstr "сейчас" #: syncthing_gtk/uisettingsdialog.py:58 msgid "UI Settings" msgstr "Настройки интерфейса" #: syncthing_gtk/uisettingsdialog.py:70 msgid "Unlimited" msgstr "Не ограничено" #: syncthing_gtk/uisettingsdialog.py:107 #, python-format msgid "Install %(package)s package to enable %(feature)s support" msgstr "Установите пакет %(package)s, для включения поддержки %(feature)s" #: syncthing_gtk/uisettingsdialog.py:312 msgid "Browse for Syncthing binary" msgstr "Указать расположение для Syncthing-программы " #: syncthing_gtk/wizard.py:53 msgid "First run wizard" msgstr "Мастер первого запуска" #: syncthing_gtk/wizard.py:137 #, python-format msgid "Please, check error log and fill bug report on %s." msgstr "Пожалуйста, проверьте лог ошибок и сделайте баг-репорт в %s." #: syncthing_gtk/wizard.py:141 msgid "Display error log" msgstr "Показать лог ошибок" #: syncthing_gtk/wizard.py:198 msgid "Welcome to Syncthing-GTK first run wizard!" msgstr "Добро пожаловать в мастер первого запуска Syncthing-GTK!" #: syncthing_gtk/wizard.py:200 msgid "It looks like you never have used Syncthing." msgstr "Похоже, что вы никогда не использовали Syncthing." #: syncthing_gtk/wizard.py:201 msgid "Initial configuration should be created." msgstr "Первоначальная конфигурация должна быть создана." #: syncthing_gtk/wizard.py:202 msgid "" "Continue this wizard to create a Syncthing configuration file or abort it to exit." msgstr "" #: syncthing_gtk/wizard.py:204 #, python-format msgid "" "If you already had Syncthing daemon configured, please, exit this wizard and" " check your %s folder" msgstr "Если у вас уже был настроена демон Syncthing, пожалуйста, выйдите из этого мастера и проверьте папку %s" #: syncthing_gtk/wizard.py:220 msgid "Searching for Syncthing daemon." msgstr "Поиск демона Syncthing" #: syncthing_gtk/wizard.py:222 syncthing_gtk/wizard.py:394 msgid "Please wait..." msgstr "Пожалуйста, подожите…" #: syncthing_gtk/wizard.py:270 syncthing_gtk/wizard.py:287 msgid "Syncthing daemon not found." msgstr "Демон Syncthing не найден." #: syncthing_gtk/wizard.py:271 msgid "Please, use package manager to install the Syncthing package." msgstr "Пожалуйста, используйте пакетный менеджер для установки пакета Syncthing." #: syncthing_gtk/wizard.py:283 msgid "download latest binary" msgstr "загружена последняя версия программы" #: syncthing_gtk/wizard.py:288 syncthing_gtk/wizard.py:302 #, python-format msgid "" "Please, use package manager to install the Syncthing package or " "%(download_link)s from Syncthing page and save it to your %(target)s " "directory." msgstr "Пожалуйста, используйте менеджер пакетов для установки пакета или %(download_link)s для загрузки из Syncthing страницы и сохраните в каталоге %(target)s." #: syncthing_gtk/wizard.py:296 msgid "Syncthing daemon is too old." msgstr "Ваш демон Syncthing устарел." #: syncthing_gtk/wizard.py:297 #, python-format msgid "" "Syncthing-GTK needs Syncthing daemon %(min)s or newer, but only %(actual)s " "were found." msgstr "Syncthing-GTK требуется демон Syncthing версии %(min)s или новее, найдена только версия %(actual)s." #: syncthing_gtk/wizard.py:309 msgid "Alternatively, Syncthing-GTK can download Syncthing binary" msgstr "В качестве альтернативы, Syncthing-GTK может загрузить бинарный файл Syncthing" #: syncthing_gtk/wizard.py:310 #, python-format msgid "to %s and keep it up-to-date, but this option is meant as" msgstr "в %s и поддерживать его в актуальном состоянии, но это и так подразумевается" #: syncthing_gtk/wizard.py:312 msgid "last resort and generally not suggested." msgstr "Последнее средство, которое, как правило, не рекомендуется." #: syncthing_gtk/wizard.py:315 msgid "_Download Syncthing binary" msgstr "_Загрузка Syncthing-программы" #: syncthing_gtk/wizard.py:319 msgid "Auto_update downloaded binary" msgstr "Автоматическая загрузка бинарного файла программы" #: syncthing_gtk/wizard.py:375 msgid "Syncthing daemon binary found." msgstr "Бинарный файл демона Syncthing найден." #: syncthing_gtk/wizard.py:377 syncthing_gtk/wizard.py:460 msgid "Binary path:" msgstr "Путь к программе:" #: syncthing_gtk/wizard.py:378 msgid "Version:" msgstr "Версия:" #: syncthing_gtk/wizard.py:393 msgid "Downloading Syncthing daemon." msgstr "Загружается демон Syncthing." #: syncthing_gtk/wizard.py:441 msgid "Failed to download Syncthing daemon package." msgstr "Не удалось скачать демон Syncthing." #: syncthing_gtk/wizard.py:472 msgid "Syncthing is generating RSA key and certificate." msgstr "Syncthing создал RSA ключ и сертификат." #: syncthing_gtk/wizard.py:473 msgid "This may take a while..." msgstr "Это может занять некоторое время..." #: syncthing_gtk/wizard.py:515 msgid "Failed to generate keys" msgstr "Не удалось создать ключи" #: syncthing_gtk/wizard.py:516 msgid "Syncthing daemon failed to generate RSA key or certificate." msgstr "Демону Syncthing не удалось создать RSA ключ или сертификат" #: syncthing_gtk/wizard.py:526 msgid "WebUI setup" msgstr "Настройка веб-интерфейса" #: syncthing_gtk/wizard.py:528 msgid "" "Syncthing can be managed remotely using WebUI and even if you are going to " "use Syncthing-GTK, WebUI needs to be enabled, as Syncthing-GTK uses it to " "communicate with the Syncthing daemon." msgstr "Syncthing может управляться дистанционно с помощью WebUI, но даже если вы собираетесь использовать Syncthing-GTK, WebUI должен быть включен, так как Syncthing-GTK использует его для связи с демоном Syncthing." #: syncthing_gtk/wizard.py:533 msgid "" "If you prefer to be able to manage Syncthing remotely, over the internet or " "on your local network, select listen on all interfaces and set " "username and password to protect Syncthing from unauthorized access." msgstr "Если вы предпочитаете управлять Syncthing удалённо через Интернет или в локальной сети, выберите слушать на всех интерфейсах и установите имя пользователя и пароль для защиты Syncthing от несанкционированного доступа." #: syncthing_gtk/wizard.py:538 msgid "" "Otherwise, select listen on localhost, so only users and programs on " "this computer will be able to interact with Syncthing." msgstr "В противном случае выберите слушать на локальном хосте, так что, только пользователи и программы на этом компьютере могли иметь возможность взаимодействовать с Syncthing." #: syncthing_gtk/wizard.py:544 msgid "WebUI Listen Addresses" msgstr "Список адресов WebUI" #: syncthing_gtk/wizard.py:545 msgid "Listen on _localhost" msgstr "Список _локальных хостов" #: syncthing_gtk/wizard.py:547 msgid "Listen on _all interfaces" msgstr "Список всех _интерфейсов" #: syncthing_gtk/wizard.py:554 msgid "_Username" msgstr "_Имя_пользователя" #: syncthing_gtk/wizard.py:555 msgid "_Password" msgstr "_Пароль" #: syncthing_gtk/wizard.py:609 msgid "Saving settings..." msgstr "Сохранение настроек…" #: syncthing_gtk/wizard.py:610 msgid "Checking for available port..." msgstr "Поиск доступных портов…" #: syncthing_gtk/wizard.py:631 msgid "Failed to find unused port for listening." msgstr "Не удалось найти неиспользуемые порты" #: syncthing_gtk/wizard.py:632 msgid "Please, check your firewall settings and try again." msgstr "Пожалуйста, проверьте настройки вашего межсетевого экрана и попробуйте снова." #: syncthing_gtk/wizard.py:646 msgid "Saving..." msgstr "Сохранение…" #: syncthing_gtk/wizard.py:678 msgid "Failed to load Syncthing configuration" msgstr "Не удалось загрузить конфигурацию Syncthing" #: syncthing_gtk/wizard.py:705 msgid "Failed to modify Syncthing configuration" msgstr "Не удалось модифицировать настройки Syncthing" #: syncthing_gtk/wizard.py:715 msgid "Failed to save Syncthing configuration" msgstr "Не удалось сохранить конфигурацию Syncthing" #: syncthing_gtk/wizard.py:729 msgid "Done." msgstr "Готово." #: syncthing_gtk/wizard.py:731 msgid "Syncthing has been successfully configured." msgstr "Syncthing успешно сконфигурирован." #: syncthing_gtk/wizard.py:733 msgid "" "You can configure more details later, in UI Settings and Daemon " "Settings menus in main window of application." msgstr "Вы можете настроить более подробную информацию позже, в Настройки интерфейса и Настройки службы меню в главном окне приложения." #: about.glade:7 msgid "About Syncthing-GTK" msgstr "О Syncthing-GTK" #: about.glade:10 msgid "GTK GUI and notification area icon for Syncthing" msgstr "GTK GUI и иконка в области уведомлений для Syncthing" #: about.glade:12 msgid "GitHub" msgstr "GitHub" #: app.glade:239 app.glade:420 app.glade:802 msgid "Open _Web Interface" msgstr "_Открыть веб-интерфейс" #: app.glade:251 app.glade:424 app.glade:814 msgid "Display _Daemon Output" msgstr "_Показать лог демона" #: app.glade:263 msgid "Display Syncthing-Inotify Output" msgstr "Показать лог Syncthing-Inotify" #: app.glade:280 app.glade:430 msgid "UI _Settings" msgstr "_Настройки интерфейса" #: app.glade:325 app.glade:451 msgid "Add Shared _Folder" msgstr "Добавить новую _папку" #: app.glade:338 app.glade:455 msgid "Add _Device" msgstr "_Добавить устройство" #: app.glade:356 app.glade:461 msgid "Daemon _Settings" msgstr "_Настройки демона" #: app.glade:371 app.glade:465 app.glade:588 app.glade:788 msgid "Show _ID" msgstr "_Показать ID" #: app.glade:391 app.glade:471 msgid "Sh_utdown Daemon" msgstr "_Отключить демон" #: app.glade:404 app.glade:475 msgid "_Restart Daemon" msgstr "_Перезапустить демон" #: app.glade:436 msgid "_About" msgstr "_О программе" #: app.glade:440 msgid "_Quit" msgstr "_Выйти" #: app.glade:490 msgid "Override Remote Changes" msgstr "Перезаписать удалённые изменения" #: app.glade:519 msgid "Edit _Ignore Patterns" msgstr "Редактировать шаблоны игнорирования" #: app.glade:547 msgid "_Rescan" msgstr "_Пересканировать" #: app.glade:559 msgid "_Browse" msgstr "_Обзор" #: app.glade:611 msgid "Resume" msgstr "Продолжить" #: app.glade:641 msgid "Connecting to daemon..." msgstr "Подключение к демону…" #: app.glade:669 msgid "S_top Syncthing" msgstr "_Остановка службы" #: app.glade:683 msgid "Resume Sync_thing" msgstr "Продолжить Sync_thing" #: app.glade:695 daemon-settings.glade:335 msgid "_Incoming Rate Limit" msgstr "Лимит скорости _загрузки" #: app.glade:709 app.glade:751 msgid "_Unlimited" msgstr "_Неограничено" #: app.glade:718 app.glade:760 msgid "_Other" msgstr "_Другое" #: app.glade:737 msgid "_Outgoing Rate Limit" msgstr "_Лимит скорости отдачи" #: daemon-output.glade:7 msgid "Daemon Output" msgstr "Лог демона" #: daemon-settings.glade:106 msgid "Sync Protocol Listen Addresses" msgstr "Используемый адрес и протокол для синхронизации" #: daemon-settings.glade:136 msgid "Enable Local _Discovery" msgstr "Включить локальное обнаружение" #: daemon-settings.glade:153 msgid "Enable _UPnP" msgstr "Включить _UPnP" #: daemon-settings.glade:171 msgid "Local Discovery _Port" msgstr "_Порт локального обнаружения" #: daemon-settings.glade:212 msgid "Outgoing _Rate Limit" msgstr "Лимит скорости _отдачи" #: daemon-settings.glade:229 msgid "Open browser with _WebUI when daemon is starting" msgstr "Открывать в браузере _WebUI, когда служба стартует" #: daemon-settings.glade:246 msgid "Enable _Anonymous Usage Reporting" msgstr "Включить _анонимную отправку статистики о работе программы" #: daemon-settings.glade:262 msgid "Enable _Global Discovery" msgstr "Включить глобальное обнаружение" #: daemon-settings.glade:281 msgid "Global Discovery _Servers" msgstr "Сервера глобального обнаружения" #: device-edit.glade:102 msgid "Device _ID" msgstr "ID устройства" #: device-edit.glade:134 msgid "Device _Name" msgstr "Имя устройства" #: device-edit.glade:166 msgid "Shown instead of Device ID in the cluster status." msgstr "Будет показываться вместо ID в списке всех устройств." #: device-edit.glade:181 msgid "_Addresses" msgstr "_Адреса" #: device-edit.glade:213 msgid "" "Enter comma separated \"ip:port\" addresses or \"dynamic\" to perform " "automatic discovery of the address." msgstr "Через запятую введите \"IP: port\" адресов или \"dynamic\" для выполнения автоматического обнаружения адреса." #: device-edit.glade:242 msgid "Share _Folders" msgstr "Предоставленные _папки" #: device-edit.glade:276 msgid "Select the folders to share with this device" msgstr "Выберите папку для открытия общего доступа для этого устройства" #: device-edit.glade:287 msgid "_Introducer" msgstr "_Introducer" #: device-edit.glade:308 msgid "" "Any devices configured on an introducer device will be added to this device " "as well." msgstr "Любые устройства, настроенные на introducer устройствах будут добавлены к этому устройству." #: device-edit.glade:323 msgid "_Compression" msgstr "_Сжатие" #: device-id.glade:14 msgid "Device Identification" msgstr "Идентификация устройства" #: device-id.glade:68 msgid "XYZ-123-ABC" msgstr "XYZ-123-ABC" #: find-daemon.glade:126 ui-settings.glade:821 msgid "_Browse..." msgstr "_Обзор…" #: find-daemon.glade:179 msgid "_Download..." msgstr "_Загрузка" #: folder-edit.glade:44 msgctxt "In File Pull Order combobox" msgid "Random" msgstr "Случайно" #: folder-edit.glade:48 msgctxt "In File Pull Order combobox" msgid "Alphabetic" msgstr "По алфавиту" #: folder-edit.glade:52 msgctxt "In File Pull Order combobox" msgid "Smallest First" msgstr "Сперва более маленькие" #: folder-edit.glade:56 msgctxt "In File Pull Order combobox" msgid "Largest First" msgstr "Сперва более большие" #: folder-edit.glade:60 msgctxt "In File Pull Order combobox" msgid "Oldest First" msgstr "Сперва более старые" #: folder-edit.glade:64 msgctxt "In File Pull Order combobox" msgid "Newest First" msgstr "Сперва более новые" #: folder-edit.glade:82 msgid "Simple" msgstr "Простой" #: folder-edit.glade:86 msgid "Staggered" msgstr "В шахматном порядке" #: folder-edit.glade:90 msgid "Trashcan" msgstr "Удалённые" #: folder-edit.glade:94 msgid "External" msgstr "Внешние" #: folder-edit.glade:171 msgid "Folder _Label" msgstr "_Метка папки" #: folder-edit.glade:202 msgid "Short identifier for the folder. Must be the same on all devices." msgstr "Короткий идентификатор папки. Должен быть одинаковым на всех устройствах." #: folder-edit.glade:216 msgid "_Path" msgstr "_Путь" #: folder-edit.glade:234 msgid "" "Path to the folder on the local computer. Will be created if it does not " "exist." msgstr "Путь к папке на компьютере. Если папка не существует, она будет создана." #: folder-edit.glade:248 msgid "Rescan _Interval" msgstr "Интервал сканирования" #: folder-edit.glade:293 msgid "Monitor filesystem for _changes" msgstr "Мониторинг изменений файловой системы" #: folder-edit.glade:314 msgid "" "If enabled, changed, created and delete files are synchronized immediately, as long as Syncthing-GTK is running.\n" "Note: Using this along with short Rescan Interval (<300s) may consume a lot of resources." msgstr "Если этот параметр включен, изменённые, созданные и удалённые файлы синхронизируются немедленно, до тех пор, пока Syncthing-GTK работает.\nПримечание: Использование этого вместе с коротким интервалом сканирования (<300 с) может потреблять много ресурсов." #: folder-edit.glade:343 msgid "Browse..." msgstr "Обзор..." #: folder-edit.glade:366 msgid "Folder _ID" msgstr "_ID папки" #: folder-edit.glade:396 msgid "" "Optional descriptive label for the folder. Can be different on each device." msgstr "Необязательная метка для описания папки. Может быть разной на каждом устройстве." #: folder-edit.glade:418 msgid "_Send Only Folder" msgstr "_Рассылать изменения, но не получать их" #: folder-edit.glade:439 msgid "" "Files are protected from changes made on other devices, but changes made on " "this device will be sent to the rest of the cluster." msgstr "Файлы защищены от изменений, сделанных на других устройствах, но изменения, сделанные на этом устройстве, будут отправлены в остальные части кластера." #: folder-edit.glade:456 msgid "_Folder Settings" msgstr "_Настройки папки" #: folder-edit.glade:476 msgid "Select the devices to share this folder with." msgstr "Выберите устройства, для которых эта папка будет доступна:" #: folder-edit.glade:514 msgid "Share With _Devices" msgstr "_Общий доступ" #: folder-edit.glade:535 msgid "Versioning _Mode" msgstr "Режим _версионирования" #: folder-edit.glade:590 msgid "" "Files are moved to date stamped versions in a .stversions folder when " "replaced or deleted by syncthing." msgstr "Заменённые и удалённые файлы будут помечаться датой и перемещаться в папку .stversions." #: folder-edit.glade:605 msgid "_Keep Versions" msgstr "_Хранить версий" #: folder-edit.glade:642 msgid "The number of old versions to keep, per file." msgstr "Сколько версий каждого файла сможет храниться." #: folder-edit.glade:671 msgid "" "Files are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing. Versions are automatically deleted if they are older than the maximum age or exceed the number of files allowed in an interval.\n" "\n" "The following intervals are used: for the first hour a version is kept every 30 seconds, for the first day a version is kept every hour, for the first 30 days a version is kept every day, until the maximum age a version is kept every week." msgstr "Файлы перемещаются в соответствии с версией в папку .versions при замене или удалении syncthing. Версии автоматически удаляются, если они старше максимального возраста или превышают допустимое количество файлов в интервале.\n\nИспользуются следующие интервалы: в течение первого часа версия сохраняется каждые 30 секунд, в течение первого дня версия хранится каждый час, в течение первых 30 дней версия хранится каждый день, до максимального времени версия хранится за каждую неделя." #: folder-edit.glade:688 msgid "Ma_ximum Age" msgstr "Максимальное _время" #: folder-edit.glade:727 msgid "Versions _Path" msgstr "Путь к версии" #: folder-edit.glade:759 msgid "" "Path where versions should be stored (leave empty for the default " ".stversions folder)." msgstr "Место, где хранятся версии (если пусто, то в каталоге .stversions)." #: folder-edit.glade:787 msgid "" "Files are moved to .stversions folder when replaced or deleted by Syncthing" msgstr "Файлы перемещаются в папку .stversions, когда заменены или удалены Syncthing" #: folder-edit.glade:801 msgid "Clean out _after" msgstr "Очищать _после" #: folder-edit.glade:840 msgid "The number of days to keep files in the trash can." msgstr "Количество дней, в течение которых файлы сохраняются в корзине." #: folder-edit.glade:869 msgid "" "An external command handles the versioning. It has to remove the file from " "the synced folder." msgstr "Внешняя команда для управления версиями. Она должна удалить файл из синхронизированной папки." #: folder-edit.glade:884 msgid "Command" msgstr "Команда" #: folder-edit.glade:917 msgid "" "The first command line parameter is the folder path and the second parameter" " is the relative path in the folder." msgstr "Первый параметр командной строки это путь к папке, а второй параметр относительный путь к папке." #: folder-edit.glade:953 msgid "File _Versioning" msgstr "_Версионирование файлов" #: folder-edit.glade:982 msgid "Ignore P_ermissions" msgstr "Игнорировать права _доступа" #: folder-edit.glade:1003 msgid "" "File permission bits are ignored when looking for changes. Use on FAT " "filesystems." msgstr "Игнорировать биты доступа у файлов при поиске изменений. Используйте для файловых систем FAT." #: folder-edit.glade:1018 msgid "Minimum Free Disk Space" msgstr "Минимум свободного места на диске" #: folder-edit.glade:1057 msgid "File Pull _Order" msgstr "_Порядок получения файлов" #: folder-edit.glade:1103 ui-settings.glade:954 msgid "_Advanced" msgstr "_Дополнительно" #: ignore-editor.glade:8 msgid "Ignore Patterns" msgstr "Игнорировать шаблоны" #: ignore-editor.glade:99 msgid "" "See Syncthing " "documentation for list of supported patterns" msgstr "См Документация Syncthing для списка поддерживаемых шаблонов" #: ignore-editor.glade:114 msgid "File location: " msgstr "Расположение файла: " #: ui-settings.glade:27 msgid "Lowest" msgstr "Очень низкий" #: ui-settings.glade:31 msgid "Low" msgstr "Низкий" #: ui-settings.glade:35 msgid "Normal" msgstr "Нормальный" #: ui-settings.glade:39 msgid "Above Normal" msgstr "Выше нормы" #: ui-settings.glade:46 msgid "Syncthing-GTK Settings" msgstr "Настройки Syncthing-GTK" #: ui-settings.glade:69 msgid "Please, restart Syncthing-GTK to apply all changed settings" msgstr "Пожалуйста, перезапустите Syncthing-GTK для вступления в силу изменений настроек" #: ui-settings.glade:136 msgid "When starting and Syncthing daemon is not running..." msgstr "При запуске и не запущенной службе Syncthing..." #: ui-settings.glade:147 msgid "... _wait for daemon" msgstr "... _ждать пока запустится демон" #: ui-settings.glade:164 msgid "... start daemon in _background" msgstr "... запускать демон в фоновом режиме" #: ui-settings.glade:180 msgid "... _ask me what to do" msgstr "... _спросить меня, что делать" #: ui-settings.glade:199 msgid "When exiting after daemon was started in background..." msgstr "При выходе, если демон был запущен в фоновом режиме..." #: ui-settings.glade:210 msgid "... terminate _daemon" msgstr "... прекратить работу _демона" #: ui-settings.glade:226 msgid "... leave daemon _running" msgstr "... пусть служба продолжает работать" #: ui-settings.glade:242 msgid "... ask me w_hat to do" msgstr "... спросить меня, что делать" #: ui-settings.glade:258 msgid "Us_e traditional window header" msgstr "Использовать традиционный заголовок окна" #: ui-settings.glade:278 msgid "Display desktop notifications for..." msgstr "Показывать оповещения на рабочем столе..." #: ui-settings.glade:289 msgid "... file updates" msgstr "... при изменении файлов" #: ui-settings.glade:304 msgid "... errors" msgstr "... при появлении ошибки" #: ui-settings.glade:319 msgid "... synchronization completion" msgstr "... при завершении синхронизации" #: ui-settings.glade:334 msgid "Start Syncthing-GTK when I login to my desktop" msgstr "Запускать Syncthing-GTK при запуске компьютера" #: ui-settings.glade:350 msgid "Minimize to _tray on start" msgstr "Сворачивать в _трей при запуске" #: ui-settings.glade:366 msgid "Use _icons in menu" msgstr "Использовать иконки в меню" #: ui-settings.glade:383 msgid "Display paths in directories panel" msgstr "Отображать путь к каталогам на панели" #: ui-settings.glade:399 msgid "Force _dark theme" msgstr "Принудительно использовать тёмную тему" #: ui-settings.glade:474 msgid "_Interface" msgstr "Интерфейс" #: ui-settings.glade:492 msgid "Integrate Syncthing with filemanagers" msgstr "Интегрировать Syncthing с файловыми менеджерами" #: ui-settings.glade:507 msgid "Nemo (Cinamon Desktop)" msgstr "Nemo (Cinamon Desktop)" #: ui-settings.glade:524 msgid "Nautilus (Ubuntu/GNOME)" msgstr "Nautilus (Ubuntu/GNOME)" #: ui-settings.glade:540 msgid "Caja (MATE Desktop)" msgstr "Caja (MATE Desktop)" #: ui-settings.glade:579 msgid "" "Note: You may need to restart your filemanager after toggling " "integration." msgstr "Примечание: Вам, возможно, потребуется перезапустить файловый менеджер после включения интеграции." #: ui-settings.glade:598 msgid "_Integration" msgstr "_Интеграция" #: ui-settings.glade:627 msgid "Keep Syncthing binary up-to-date" msgstr "Держать демон Syncthing в актуальном состоянии" #: ui-settings.glade:647 msgid "" "If enabled, Syncthing-GTK will automatically check for new daemon releases " "and replace binary with latest version." msgstr "Если включено Syncthing-GTK будет автоматически проверять наличие новых версий демона и обновлять его." #: ui-settings.glade:662 msgid "Daemon process priority" msgstr "Приоритет процесса демона" #: ui-settings.glade:698 msgid "" "Priority will be used only if \"start daemon in background\" option " "is checked on \"Interface\" page." msgstr "Приоритет будет отдаваться только тогда, когда отмечена опция \"прекратить работу демона\" на странице \"Интерфейс\"." #: ui-settings.glade:713 msgid "Maximum number of CPU cores" msgstr "Максимальное количество ядер процессора" #: ui-settings.glade:731 msgid "" "Sets the maximum number of CPU cores for daemon to use. This value will be " "used only if \"start daemon in background\" option is checked on " "\"Interface\" page." msgstr "Устанавливает максимальное количество процессорных ядер которые могут использоваться службой. Это значение будет использовано только если выбрана опция \"запускать демон в фоновом режиме\" на странице \"Интерфейс\"." #: ui-settings.glade:786 msgid "Daemon" msgstr "Демон" #: ui-settings.glade:808 msgid "" "This binary will be started when syncthing daemon is not running and " "\"start daemon in background\" option is checked on " "\"Interface\" page." msgstr "Файл программы запускается, когда демон Syncthing не работает, и опция \"служба стартует в фоновом режиме\" отмечена на странице \"Интерфейс\"." #: ui-settings.glade:838 msgid "Syncthing binary location" msgstr "Расположение программы Syncthing" #: ui-settings.glade:867 msgid "Daemon arguments and variables" msgstr "Аргументы и переменные демона" #: ui-settings.glade:897 msgid "" "Space-separated list of arguments and environment variables passed when starting above binary\n" "\n" "Use VARIABLE=\"value\" to set variable and -argument=\"value\" (with dash) for argument.\n" "\n" "If you need to pass commandline to different command (such as logger or ionice), separate prefixed arguments with exclamation mark \"!\"\n" "\n" "Example:\n" " STTRACE=\"all\" logger -t /var/log/syncthing.log ! -logflags=10" msgstr "Разделённый пробелами список аргументов и переменных окружений, который передаётся при запуске программы\n\nИспользуйте VARIABLE=\"value\", чтобы установить переменную, и -argument=\"value\" (с тире), чтобы установить аргумент.\n\nЕсли вам нужно передать вывод командной строки в другую команду (например, logger или ionice), используйте перед аргументом восклицательный знак \"!\"\n\nНапример:\nSTTRACE=\"all\" logger -t /var/log/syncthing.log ! -logflags=10" #: ui-settings.glade:921 msgid "" "Warning: Changing settings on this page may prevent you from using " "Syncthing-GTK" msgstr "Предупреждение: Изменение этих настроек может препятствовать работе Syncthing-GTK" syncthing-gtk-0.9.4.4/locale/sk/000077500000000000000000000000001352162771300163425ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/locale/sk/LC_MESSAGES/000077500000000000000000000000001352162771300201275ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/locale/sk/LC_MESSAGES/syncthing-gtk.mo000066400000000000000000001066761352162771300232750ustar00rootroot00000000000000l| x>yB?E;Bc( D M T \ h p          !!&!@!`!!Q!W!?" S"`"s"" """" ":",&#!S#u#]##T$-X$$ $$$ $$$%g%!%%-&L&]&q&!y& &&& &&'''!''$'D(RT(( (((()5 )]B)) ) ) ))$)*")*5L*D** ****+6+T+c+y+!++ +e+?,E,T,],f, {,-,,,,)-@-&X-)-(-&--!.9.J.[.j.Rz..K.g//`11 1 1 2 2!212,C2p22 2 2r2P&3aw3=344u55555&5)5(#6(L6"u6*6 6(696%37 Y7Dd7,7 77 8 8$898 O8[8_8 f8s8 8888 889)9/94979>9B9J9$Q9v909K9: ::::O:V;o; v;;2;3;K;;D<<==FN=o=> >">2>C>X>_>q>> >>>v>>?-[?,?? ??y@@@ @A@ @A1A"BAeAklAA tC.~C CCCCC, D9DRDeD mDwDDDD(xEE.E;E+FHFdF+F0F7FG 0G>GVUG6G3GmH)HHpGI2I-IJJ#JJJ K K K=*K+hKK KKK KK KK LL%L.L?L%NLtL L*L6L4L.M 4M@M{DMM!NiNOO $O /O9O AO LOYO tOOOO O O OOOO OPPP)P1P:PJP \P gPqPzP P PP(P PPP9P 2Q@QSQ^?SFSDSF*TDqT_TU2U;UCUKUZUbU tUU UUU UU!UU UV"V =V^V~ViVWVWWgWoWWWWWWW,X71X7iX"XX_X7Y{JY;YZZ$Z#,ZPZ_ZuZZZ"*[M[[ [[\# \ D\!N\p\ \ \W\*]$9]$^]-]T]K^R^Y^i^(}^^ ^0^p^k___ ____$`5&`7\`````!`aa:aIa*ga,a"aaa}bbbbb)b1 c"| "~3,~`~r~ ~~~.~~( 8B_x)i06;Z)r,;Ɂ -kF<6y&6׃ZH>0o) 'HPk E* ' 2 ?K\s#ȇχׇ&#46E5|3 q !* 2 @J Ze z  ȋ Ջ !(/7 Tbq  ŌЌ *1 @KDSh"1XmJ6dp^Q^MjY`NfAKOaF_lY[? %A k)-"Q,$%7) GTjq! &_R}H|;Ib70;?</i,a*x$:3[>(V*1@PcgcE I:ov(<Sl='T\Gu8nBK9\ NC4>zS9r+{2&0 . `4 ]Zd#-V8UB W!UtE6+L eDFih3~P='R52yD#CJ]@O.XsfLHZ5bkgwMeW/%(device)s wants to share folder "%(folder)s". Add new folder?%(hostname)s: Deleted %(deleted)s files to reflect remote changes.%(hostname)s: Deleted '%(filename)s' to reflect remote changes.%(hostname)s: Downloaded %(updated)s files to reflect remote changes.%(hostname)s: Downloaded '%(filename)s' to reflect remote changes.%(hostname)s: downloaded %(updated)s files and deleted %(deleted)s files to reflect remote changes.%(online)s/%(total)s online%s KiB/s%s day%s days%s days ago%s kB/s%s minutes ago%s minutes from now%s seconds ago%s seconds from now%s%%%ss(watch)... _ask me what to do... _wait for daemon... ask me w_hat to do... errors... file updates... leave daemon _running... start daemon in _background... synchronization completion... terminate _daemonNote: You may need to restart your filemanager after toggling integration.Warning: Changing settings on this page may prevent you from using Syncthing-GTKAbout Syncthing-GTKAbove NormalAccept device "%s"Accept folder "%s"Add Shared _FolderAdd _DeviceAddressAll DataAll devices offlineAllow Anonymous Usage Reporting?Alternatively, Syncthing-GTK can download Syncthing binaryAlways do same; Don't show this window againAlways start daemon automaticallyAn error occurred in Syncthing!An external command handles the versioning. It has to remove the file from the synced folder.Announce ServerAny devices configured on an introducer device will be added to this device as well.Attempting to download recent, please wait...Auto_update downloaded binaryBinary path:BlackBrowse for Syncthing binaryBrowse...CPU UtilizationCaja (MATE Desktop)Can't invoke the daemonCannot authorize with daemon. Please, use WebUI to generate API key or disable password authentication.Cannot download Syncthing daemon.Changes from other devices are applied to files on this device, but changes made on this device are not sent to the rest of the cluster. Checking for available port...Clean out _afterCluster out of syncCommandCompleted synchronization in "%s"CompressionConflict in path "%s" detected.Conflicting file in "%s"ConnectedConnected to Syncthing daemonConnecting to %s failed; the remote device speaks an older version of the protocol (%s) not compatible with this versionConnecting to Syncthing daemon at %s...Connecting to Syncthing daemon...Connecting to daemon...Connection to Syncthing daemon lost.Connection to daemon failed. Check your configuration and try again.Continue this wizard to create a Syncthing configuration file or abort it to exit.DaemonDaemon OutputDaemon _SettingsDaemon arguments and variablesDaemon process priorityDefaultDevice "%s" is trying to connect to syncthing daemon.Device "%(name)s" (%(device)s) at IP "%(ip)s" wants to connect. Add new device?Device IdentificationDevice _IDDevice _NameDisconnectedDisplay _Daemon OutputDisplay desktop notifications for...Display error logDisplay paths in directories panelDo you really want remove device '%s' from Syncthing?Do you really want to permanently stop synchronizing directory '%s'?Done.Download RateDownload failed.Download finished.Downloaded file is corrupted.Downloading Syncthing %sDownloading Syncthing daemon.Downloading...Edit _Ignore PatternsEnable Local _DiscoveryEnable _Anonymous Usage ReportingEnable _Global DiscoveryEnable _UPnPEnter comma separated "ip:port" addresses or "dynamic" to perform automatic discovery of the address.ErrorError message:Exiting.ExternalExtracting update...Failed to create temporary file.Failed to determine latest Syncthing version.Failed to download Syncthing daemon package.Failed to download upgrade: %sFailed to find unused port for listening.Failed to generate keysFailed to load Syncthing configurationFailed to load configuration from daemon.Failed to modify Syncthing configurationFailed to save Syncthing configurationFailed to save configuration.Failed to start Syncthing daemon.File Pull _OrderFile _VersioningFile location:File location: File permission bits are ignored when looking for changes. Use on FAT filesystems.FilesFiles are moved to .stversions folder when replaced or deleted by SyncthingFiles are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing.Files are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing. Versions are automatically deleted if they are older than the maximum age or exceed the number of files allowed in an interval. The following intervals are used: for the first hour a version is kept every 30 seconds, for the first day a version is kept every hour, for the first 30 days a version is kept every day, until the maximum age a version is kept every week.Files are protected from changes made on other devices, but changes made on this device will be sent to the rest of the cluster.First run wizardFolder IDFolder TypeFolder _IDFolder _LabelFolder rejectedForce _dark themeGUI and notification area icon for SyncthingGenerate RandomGlobal Discovery _ServersGlobal StateHide WindowIf enabled, Syncthing-GTK will automatically check for new daemon releases and replace binary with latest version.If the reported data set is changed you will be prompted with this dialog again.If you already had Syncthing daemon configured, please, exit this wizard and check your %s folderIf you have Syncthing installed, please, set path to %s belowIf you have Syncthing installed, please, set path to %s below or click on Download button to download latest Syncthing package.If you prefer to be able to manage Syncthing remotely, over the internet or on your local network, select listen on all interfaces and set username and password to protect Syncthing from unauthorized access.Ignore P_ermissionsIgnore PatternsIgnore PermissionsIgnore device "%s"Ignore folder "%s"In File Pull Order comboboxAlphabeticIn File Pull Order comboboxLargest FirstIn File Pull Order comboboxNewest FirstIn File Pull Order comboboxOldest FirstIn File Pull Order comboboxRandomIn File Pull Order comboboxSmallest FirstIncompatibleInitial configuration should be created.Install %(package)s package to enable %(feature)s supportIntegrate Syncthing with filemanagersIntroducerIt is used to track common platforms, folder sizes and app versions.It looks like you never have used Syncthing.Keep Syncthing binary up-to-dateLanguageLast SeenListen on _all interfacesListen on _localhostLocal Discovery _PortLocal StateLowLowestMa_ximum AgeMaximum number of CPU coresMetadata OnlyMinimize to _tray on startMinimum Free Disk SpaceMonitor filesystem for _changesMore infoNautilus (Ubuntu/GNOME)Nemo (Cinamon Desktop)NeverNextNoNormalOffOfflineOnlineOpen Conflicting file in filemanagerOpen _Web InterfaceOpen browser with _WebUI when daemon is startingOptional descriptive label for the folder. Can be different on each device.Otherwise, select listen on localhost, so only users and programs on this computer will be able to interact with Syncthing.Out Of SyncOutgoing _Rate LimitOverride Remote ChangesPathPath to the folder on the local computer. Will be created if it does not exist.Path where versions should be stored (leave empty for the default .stversions folder).PausedPlease waitPlease wait...Please, check error log and fill bug report on %s.Please, check your firewall settings and try again.Please, check your installation or set new path to Syncthing daemon binary.Please, restart Syncthing-GTK to apply all changed settingsPlease, use package manager to install the Syncthing package or %(download_link)s from Syncthing page and save it to your %(target)s directory.Please, use package manager to install the Syncthing package.Possible cause: Is there another web server running on Syncthing port?Priority will be used only if "start daemon in background" option is checked on "Interface" page.RAM UtilizationReceive OnlyRescan IntervalRescan _IntervalRestarting daemon...ResumeResume Sync_thingS_top SyncthingSaving settings...Saving...ScanningSearching for Syncthing daemon.See Syncthing documentation for list of supported patternsSelect Folder for new FolderSelect the devices to share this folder with.Select the folders to share with this deviceSend & ReceiveSend OnlySets the maximum number of CPU cores for daemon to use. This value will be used only if "start daemon in background" option is checked on "Interface" page.Sh_utdown DaemonShare With _DevicesShare _FoldersShared WithShort identifier for the folder. Must be the same on all devices.Show WindowShow _IDShown instead of Device ID in the cluster status.Shutdown Syncthing daemon as well?SimpleSorry, connecting to HTTPS is not supported on this platform. Please, use WebUI to disable HTTPS try again.Space-separated list of arguments and environment variables passed when starting above binary Use VARIABLE="value" to set variable and -argument="value" (with dash) for argument. If you need to pass commandline to different command (such as logger or ionice), separate prefixed arguments with exclamation mark "!" Example: STTRACE="all" logger -t /var/log/syncthing.log ! -logflags=10StaggeredStart Syncthing-GTK when I login to my desktopStart it now?Starting Syncthing daemonStoppedSync Protocol Listen AddressesSynchronizationSynchronization of folder '%s' is completed.Synchronizing %s foldersSynchronizing '%s'SyncingSyncthingSyncthing Daemon SettingsSyncthing binarySyncthing binary locationSyncthing can be managed remotely using WebUI and even if you are going to use Syncthing-GTK, WebUI needs to be enabled, as Syncthing-GTK uses it to communicate with the Syncthing daemon.Syncthing daemon binary cannot be found.Syncthing daemon binary found.Syncthing daemon doesn't appear to be running.Syncthing daemon failed to generate RSA key or certificate.Syncthing daemon is too old.Syncthing daemon not found.Syncthing has been shut down.Syncthing has been successfully configured.Syncthing is generating RSA key and certificate.Syncthing is probably restarting or has been shut down.Syncthing is restarting.Syncthing-GTKSyncthing-GTK SettingsSyncthing-GTK needs Syncthing daemon %(min)s or newer, but only %(actual)s were found.Syncthing-GTK started and running in notification areaThe aggregated statistics are publicly available atThe configuration has been saved but not activated. Syncthing must restart to activate the new configuration.The encrypted usage report is sent daily.The entered device ID does not look valid. It should be a 52 character string consisting of letters and numbers, with spaces and dashes being optional.The first command line parameter is the folder path and the second parameter is the relative path in the folder.The number of days to keep files in the trash can.The number of old versions to keep, per file.This binary will be started when syncthing daemon is not running and "start daemon in background" option is checked on "Interface" page.This may take a while...This platform (%s) is not supportedTrashcanTray icon styleTry again.UI SettingsUI _SettingsUnexpected folder "%(folder)s" sent from device "%(device)s".Unexpected folder ID sent from device "%s".Unknown DeviceUnlimitedUnsharedUnusedUp to DateUpdates in folder "%s"Upload RateUs_e traditional window headerUse _icons in menuVersionVersion:Versioning _ModeVersions _PathWaiting for Syncthing daemon at %s...WebUI Listen AddressesWebUI setupWelcome to Syncthing-GTK first run wizard!When exiting after daemon was started in background...When starting and Syncthing daemon is not running...WhiteXYZ-123-ABCYesYou can configure more details later, in UI Settings and Daemon Settings menus in main window of application.Your Windows version doesn't supports cryptographic standards needed for Syncthing-GTK to check for Syncthing updates. Please, install this Windows update or disable update feature.Your syncthing daemon is too old.Your syncthing daemon is too old. Please, upgrade syncthing package at least to version %s and try again._About_Add_Addresses_Advanced_Browse_Browse..._Compression_Download Syncthing binary_Download..._Folder Settings_Ignore_Incoming Rate Limit_Integration_Interface_Introducer_Keep Versions_Other_Outgoing Rate Limit_Password_Path_Quit_Receive Only Folder_Rescan_Restart_Restart Daemon_Send Only Folder_Unlimited_Usernamedisableddownload latest binaryin %s daysin a momentjust nowlast resort and generally not suggested.never deleteno limitofflineto %s and keep it up-to-date, but this option is meant as~%s hours ago~%s hours from nowProject-Id-Version: syncthing-gtk Report-Msgid-Bugs-To: POT-Creation-Date: 2016-04-20 11:27+0200 PO-Revision-Date: 2019-08-04 18:52+0000 Last-Translator: kozec Language-Team: Slovak (http://www.transifex.com/syncthing-gtk/syncthing-gtk/language/sk/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: sk Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3); Zariadenie %(device)s chce zdieľať adresár "%(folder)s". Pridať nový zdieľaný adresár?%(hostname)s: %(deleted)s súborov bolo zmazaných na inom zariadení.%(hostname)s: Súbor '%(filename)s' bol zmazaný na inom zariadení.%(hostname)s: %(updated)s súborov bolo zmenených na inom zariadení.%(hostname)s: Súbor '%(filename)s' bol zmenený na inom zariadení.%(hostname)s: %(updated)s súborov bolo zmenených a %(deleted)s zmazaných na inom zariadení.%(online)s/%(total)s online%s KiB/s%s deň%s dnípred %s dňami%s kB/spred %s minútamiza %s minútpred %s sekundamiza %s sekúnd%s%%%ss(sledované)... opýtať s_a... čakať na _spustenie démona... opýtať _sa... chyby... zmenené súbory... ponechať démo_na spusteného... spustiť démona na _pozadí... dokončenie synchronizácie... ukončiť _démonaPoznámka: Po zmene týchto nastavení môže byť nutné reštartovať Vášho správcu súborov.Varovanie: Zmena nastavení na tejto stránke môže znefunkčniť Syncthing-GTKO Syncthing-GTKVysokáAkceptovať zariadenie "%s"Akceptovať adresár "%s"Pridať Zdieľaný _AdresárPri_dať ZariadenieAdresaVšetkoVšetky zariadenia sú offlinePovoliť anonymné hlásenia o používaní?Alternatívne, Syncthing-GTK môže stiahnuť SyncthingVždy ukončiť démona a toto okno viac nezobrazovať.Vždy automaticky spustiť démonaChyba v Syncthing!Externý skript, ktorý spravuje verzionovanie. Skript musí odstrániť aktualizovaný súbor.Ohlasovací serverVšetky zariadenia pridané na zariadení s povolenou funkciou Uvádzač budú automaticky pridané aj na tomto zariadení.Prebieha sťahovanie aktuálnej verzie, prosím čakajte...A_utomaticky aktualizovaťCesta:ČiernyVyhľadať súbor démona SyncthingPrehliadať...Vyťaženie procesoraCaja (MATE Desktop)Nemôžem vyvolať démona.Nepodarilo sa autentifikovať s démonom. Prosím, použite WebUI a vygenerujte API kľúč, alebo zakážte autentifikáciu heslom.Nepodarilo sa stiahnuť Syncthing.Zmeny z ostatných zariadení budú aplikované lokálne, ale zmeny na tomto zariadení odosielané ostatným zariadeniam nebudú. Hľadá sa voľný port...Vymaz_ať poCluster nie je synchronizovanýSkriptSynchronizácia v "%s" dokončená.KompresiaDetekovaný konflikt v ceste "%s"Konflikt v adresári "%s"PripojenéPripojené k démonovi SyncthingNepodarilo sa spojiť s %s; Zariadenie komunikuje starou verziou protokolu (%s).Pripájanie k démonovi Syncthing na %s...Pripájanie k démonovi Sycnthing...Pripájanie k démonovi Sycnthing...Spojenie s démonom Syncthing bolo stratené.Pripojenie k démonovi sa nepodarilo. Skontrolujte konfiguráciu a skúste to znova.Pokračovaním v sprievodcovi sa vytvorí nová konfigurácia pre Synthing.DémonVýstup DémonaNa_stavenia DémonaArgumenty démona a premenné prostrediaPriorita procesu démonaPôvodnýK démonu sa pokúša pripojiť zariadenie "%s".Zariadenie "%(name)s" (%(device)s) na adrese "%(ip)s" sa chce pripojiť. Pridať nové zariadenie?Identifikácia Zariadenia_ID Zariadenia_Názov ZariadeniaOdpojenéZobraziť Výstup _DémonaZobraziť notifikácie pre...Zobraziť chybový logZobraziť cesty v zozname adresárovChcete naozaj odstrániť '%s' zo zoznamu zariadení?Chcete naozaj ukončiť synchronizáciu adresára '%s'?Hotovo.Rýchlosť sťahovaniaSťahovanie zlyhalo.Sťahovanie dokončené.Stiahnutý súbor je poškodený.Sťahuje sa Syncthing %sSťahuje sa démon Syncthing.Sťahuje sa...Upraviť _Ignorované SúboryPovoliť Vyhľa_dávanie v Lokálnej SietiPovoliť _Anonymné Hlásenia o PoužívaníPovoliť _Globálne VyhľadávaniePovoliť _UPNPZadajte čiarkami oddelený zoznam adries v tvare "adresa:port" alebo zadajte "dynamic" pre povolenie automatického vyhľadávania adresy.ChybaChybové hlásenie:Syncthing-GTK sa vypína.Externý skriptRozbaľuje sa aktualizácia...Nepodarilo sa vytvoriť dočasný súbor.Nepodarilo sa určiť aktuálnu verziu Syncthing.Nepodarilo sa stiahnuť Syncthing.Sťahovanie aktualizácie zlyhalo: %sNepodarilo sa nájsť voľný TCP port.Generovanie kľúčov zlyhaloNepodarilo sa načítať konfiguráciu SyncthingNepodarilo sa načítať konfiguráciu démona.Nepodarilo sa upraviť konfiguráciu SyncthingNepodarilo sa uložiť konfiguráciu SyncthingKonfiguráciu sa nepodarilo uložiť.Nepodarilo sa spustiť démona Syncthing.P_oradie SťahovaniaVerzionovanie _SúborovUmiestnenie súboru:Umiestnenie súboru:Zmeny v prístupových právach nebudú sledované. Povoľte na súborovom systéme FAT.SúboryPrepísané alebo zmazané súbory sú presunuté do adresára ".stversions"Súbory sú označené časovou známkou a presunuté do adresára ".stversions" namiesto prepísania pri prijatí zmien z iného zariadenia.Súbory sú označené časovou známkou a presunuté do adresára ".stversions" namiesto prepísania pri prijatí zmien z iného zariadenia. Staré verzie sú automaticky vymazané, ak sú staršie, než zadaný vek alebo je prekročený maximálny počet zachovaných verzií. Použité sú nasledujúce intervaly: z mladších, než jedna hodina sa zachová jedna verzia každých 30 sekúnd, z mladších, než jeden deň jedna verzia každú hodinu a po dobu tridsať dní sa zachováva jedna verzia za každý deň. Staršie súbory sú zachovávané v týždňových intervaloch, až kým nie sú zmazané po dosiahnutí maximálneho veku.Súbory v adresári len na odosielanie sú chránené proti prepísaniu zmenami na ostatných zariadeniach. Iba zmeny na tomto zariadení budú odosielané ostatným zariadeniam.Sprievodca prvým spustenímID adresáraTyp adresára_ID AdresáraOznačenie _AdresáraAdresár odmietnutý.Vynútiť t_mavú témuGUI a notifikačná ikona pre SyncthingGenerovať NáhodnéAdresa _Serveru pre Globálne VyhľadávanieGlobálny stavSkryť oknoSyncthing-GTK bude automaticky kontrolovať novú verziu démona a aktualizovať ho s poslednou verziou.Ak sa rozsah zbieraných údajov v budúcnosti zmení, budete na zmenu upozornený opätovným zobrazením tohto dialógu.Ak už máte Syncthing nakonfigurovaný, prosím, ukončite sprievodcu a skontrolujte konfiguráciu v adresári %s.Ak máte nainštalovaný balíček Syncthing, prosím, nastavte cestu k %s.Ak máte nainštalovaný Syncthing, prosím, nastavte cestu k %s, alebo kliknutím na tlačidlo Stiahnuť stiahnite aktuálnu verziu.Ak plánujete spravovať Syncthing vzdialene, cez Internet alebo v rámci miestnej siete, zvoľte počúvať na všetkých rozhraniach a nastavte používateľské meno a heslo na ochranu pred neautorizovaným prístupom.Ignorovať Prístupo_vé PrávaIgnorované SúboryNesynchronizovať prístupové právaIgnorovať zariadenie "%s"Ignorovať adresár "%s"AbecednéOd NajväčšiehoOd NanovšiehoOd NajstaršiehoNáhodnéOd NajmenšiehoNekompatibilnéJe preto potrebné prejsť úvodnú konfiguráciu.Prosím, nainštalujte balíček %(package)s ak potrebujete podporu %(feature)sIntegrovať Syncthing so správcami súborovUvádzačSú používané na získavanie štatistík o platformách, veľkostiach zdieľaných adresárov a verziách aplikácie.Vyzerá to tak, že ste Syncthing ešte nepouźívali.Udržovať Syncthing aktuálneJazykNaposledy pripojenéPočúvať n_a všetkých rozhraniachPočúvať _lokálne_Port pre Vyhľadávanie v Lokálnej SietiLokálny stavMaláNajnižšiaMa_ximálny Vek SúboruMaximálny počet využitých jadier procesoraIba metadátaPri spustení minimalizovať do oznamovacej oblas_tiMinimum Volného Miesta na DiskuMonitorovať _zmeny súborového systémuĎalšie informácieNautilus (Ubuntu/GNOME)Nemo (Cinamon Desktop)NikdyĎalejNieNormálnaVypnutéOfflineOnlineZobraziť konfliktný súbor v správcovy súborovOtvoriť _Webové RozhranieOtvoriť WebUI vo webovom prehliadači pri spustení démonaVoliteľné označenie alebo popis adresára. Môže byť iné na každom zariadení.V opačnom prípade môžete zvoliť počúvať lokálne. Iba užívatelia a programy s prístupom k tomuto počítaču budú môcť pracovať so Syncthing. NesynchronizovanéLimit _Rýchlosti OdosielaniaPrepísať Vzdialené ZmenyCestaCesta k adresáru na tomto počítači. Ak zadáte neexistujúci adresár, automaticky sa vytvorí.Cesta, pod ktorou sa zachované verzie uložia. Nechajte prázdne pre použitie prednastaveného adresára ".stversions"PozastavenéProsím, počkajte...Prosím, počkajte...Prosím, prezrite si chybový log a zvážte vytvorenie hlásenia o chybe na %s.Prosím, skontrolujte nastavenia brány firewall a skúste to znova.Prosím, skontrolujte, či je nainštalovaný alebo nastavte novú cestu k súboru.Prosím, reštartujte Syncthing-GTK aby sa aplikovali všetky zmeny v nastaveniachProsím, použite správcu balíčkov a nainštalujte balíček Syncthing alebo %(download_link)s a rozbaľte ho do adresára %(target)s.Prosím, použite správcu balíčkov a nainštalujte balíček Syncthing.Nebeží na porte Syncthing iný web server?Priorita bude použitá iba ak bude povolená možnosť spustiť démona na pozadí".Využitie RAMIba prijímanieInterval skenovania_Interval SkenovaniaReštartuje sa démon...ObnoviťObnoviť Synct_thingZas_taviť SyncthingNastavenia sa ukladajú...Ukladá sa...SkenovanieHľadá sa démon SyncthingNavštívte dokumentáciu Syncthing pre zoznam podporovaných vzorcovVyberte adresár pre nový adresárVyberte zariadenia, s ktorými sa bude tento adresár synchronizovať.Vyberte adresáre, ktoré budú synchronizované s týmto zariadenímOdosielanie i príjemLen odosielanieNastavuje maximálny počet jadier procesora, ktoré bude démon používať. Nastavenie bude použité iba ak bude povolená možnosť spustiť démona na pozadí".Vyp_núť DémonaZdieľať so Zaria_deniamiNazdieľať _AdresáreZdieľané sKrátky identifikátor adresára. Musí byť rovnaký na všetkých zariadeniach.Zobraziť oknoZobraziť _IDZobrazené namiesto ID v zozname zariadeníVypnúť aj démona Syncthing?JednoduchéPripojenie cez HTTPS na tejto platforme nie je podporované. Prosím, použite WebUI, zakážte HTTPS a skúste to znova.Seznam parametrů a proměnných prostředí, které se použijí při spouštění démona. Oddělujte mezerou. Zadejte PREMENNA="hodnota" pro definování proměnné a -parametr="hodnota" pro zadání parametru. Pokud potřebujete celý příkazový řádek prodat jinému příkazu (například do logger nebo ionice), oddělte parametry příkazu a parametry démona vykřičníkem. Příklad: STTRACE="all" logger -t /var/log/syncthing.log ! -logflags=10PostupnéAutomaticky spustiť Syncthing-GTK pri prihláseníSpustiť démona?Spúšťa sa démon SyncthingZastavenýAdresa pre Sync ProtokolSynchronizáciaSynchronizácia adresára '%s' je dokončená.Synchronizuje sa %s adresárovSynchronizuje sa '%s'SynchronizáciaSyncthingNastavenia Démona SyncthingSúbor démona SyncthingUmiestnenie démona SyncthingSyncthing je možné spravovať vzdialene pomocou WebUI a i v prípade, ak chcete používať výhradne Syncthing-GTK, WebUI musí byť povolené, nakoľko ho Syncthing-GTK používa na komunikáciu s démonom.Súbor démona Syncthing nebol nájdený.Démon Syncthing bol nájdený.Démon Syncthing pravdepodobne nie je spustený.Syncthing nevygeneroval RSA kľúč alebo certifikát.Démon Syncthing je zastaralý.Démon Syncthing sa nenašiel.Syncthing bol vypnutý.Konfigurácia Syncthing bola dokončená.Syncthing generuje RSA klúč a certifikát.Syncthing sa pravdepodobne reštartuje, alebo bol vypnutý.Syncthing sa reštartuje.Syncthing GTKNastavenia Syncthing-GTKSyncthing-GTK potrebuje Syncthingvo verzii %(min)s alebo novšej, ale nájdená bola iba verzia %(actual)s.Syncthing-GTK je spustený a beží v notifikačnej oblasti.Súhrn získaných štatistík je verejne dostupný naKonfigurácia bola uložená, ale nie je aktivovaná. Pre aktivovanie konfigurácie je potrebné reštartovať Syncthing.Šifrované dáta o používaní sú zasielané denne.Zadané ID pravdepodobne nie je správne. Správne ID má 52 alfanumerických znakov nepovinne oddelených medzerami a pomlčkami.Prvý parameter skriptu je cesta k synchronizovanému adresáru a druhý je cesta k súboru relatívna k ceste synchronizovaného adresára.Počet dní, po ktoré sa majú súbory v odpadkovom koši zachovávať.Počet posledných verzií súboru, ktoré sa majú zachovať.Tento súbor bude spustený, ak pri spustení nebude bežať démon Syncthing a možnosť spustiť démona na pozadí" bude povolená.Táto operácia môže chvíľu trvať...Platforma %s nieje podporovaná.SmetiakŠtýl notifikačnej ikonySkúste to znovu neskôr.Nastavenia UINa_stavenia UIZariadenie "%(device)s" poslalo neočakávaný adresár "%(folder)s".Zariadenie "%s" poslalo neočakávané ID.Neznáme zariadenieBez limituNezdieľanéNepoužitéSynchronizovanéZmeny v adresáry "%s"Rýchlosť odosielaniaPoužiť tradičné záhlavi_e oknaZobrazovať _ikony v menuVerziaVerzia:Mód VerzionovaniaCesta _k VerziámČakanie na démona Syncthing na %s...Adresa pre WebUINastavenie WebUIVíta Vás sprievodca prvým spustením Syncthing-GTK.Pri ukončení, ak bol démon spustený na pozadí...Pri štarte, ak démon Syncthing nieje spustený...BielyXYZ-123-ABCÁnoĎalšie nastavenia môžete dodatočne nastaviť pomocou položiek menu Nastavenia UI a Nastavenia Démona v hlavnom okne aplikácie.Vaša verzia Windows nepodporuje kryptografické funkcie, ktoré Syncthing-GTK potrebuje na kontrolu a aktualizovanie Syncthing. Prosím, nainštalujte túto aktualizáciu Windows alebo vypnite aktualizácie Syncthing.Démon Syncthing je zastaralý.Démon Syncthing je zastaralý. Prosím, aktualizujte balíček syncthing aspoň na verziu %s a skúste to znova._O programePrid_ať_Adresy_Rozšírené_Otvoriť_Vyhľadať...._Kompresia_Stiahnuť Syncthing_Stiahnuť...Nastavenia Adre_sára_IgnorovaťL_imit Rýchlosti Sťahovania_Integrácia_RozhranieU_vádzač_Zachovať Verzie_InáLimit Rýchlosti _Odosielania_Heslo_Cesta_KoniecDo ad_resára iba prijímaťP_reskenovať_Reštartovať_Reštartovať DémonaZ Adresára len Odosielať_Bez limitu_Užívateľské menozakázanýstiahnite aktuálnu verziuza %s dníza momentterazposledná možnosť a nie je doporučená.nikdy nemazaťbez limituofflinedo %s a udržovať ho aktuálne, ale táto možnosť je myslená akopred asi %s hodinamiza asi %s hodínsyncthing-gtk-0.9.4.4/locale/sk/LC_MESSAGES/syncthing-gtk.po000077500000000000000000001374051352162771300232750ustar00rootroot00000000000000# Syncthing-GTK # Copyright (C) 2014-2015 Kozec and contributors # This file is distributed under the same license as the Syncthing-GTK package. # # Translators: # Jose Riha , 2017 # kozec , 2015-2019 msgid "" msgstr "" "Project-Id-Version: syncthing-gtk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-04-20 11:27+0200\n" "PO-Revision-Date: 2019-08-04 18:52+0000\n" "Last-Translator: kozec \n" "Language-Team: Slovak (http://www.transifex.com/syncthing-gtk/syncthing-gtk/language/sk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sk\n" "Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\n" #: syncthing_gtk/app.py:194 msgid "Syncthing-GTK started and running in notification area" msgstr "Syncthing-GTK je spustený a beží v notifikačnej oblasti." #: syncthing_gtk/app.py:288 #, python-format msgid "%s kB/s" msgstr "%s kB/s" #: syncthing_gtk/app.py:302 syncthing_gtk/notifications.py:77 #: syncthing_gtk/wizard.py:53 msgid "Syncthing-GTK" msgstr "Syncthing GTK" #: syncthing_gtk/app.py:363 syncthing_gtk/app.py:364 syncthing_gtk/app.py:942 msgid "Syncing" msgstr "Synchronizácia" #: syncthing_gtk/app.py:366 syncthing_gtk/app.py:367 msgid "Scanning" msgstr "Skenovanie" #: syncthing_gtk/app.py:390 syncthing_gtk/app.py:652 msgid "Starting Syncthing daemon" msgstr "Spúšťa sa démon Syncthing" #: syncthing_gtk/app.py:424 msgid "Allow Anonymous Usage Reporting?" msgstr "Povoliť anonymné hlásenia o používaní?" #: syncthing_gtk/app.py:426 msgid "The encrypted usage report is sent daily." msgstr "Šifrované dáta o používaní sú zasielané denne." #: syncthing_gtk/app.py:427 msgid "It is used to track common platforms, folder sizes and app versions." msgstr "Sú používané na získavanie štatistík o platformách, veľkostiach zdieľaných adresárov a verziách aplikácie." #: syncthing_gtk/app.py:428 msgid "" "If the reported data set is changed you will be prompted with this dialog " "again." msgstr "Ak sa rozsah zbieraných údajov v budúcnosti zmení, budete na zmenu upozornený opätovným zobrazením tohto dialógu." #: syncthing_gtk/app.py:430 msgid "The aggregated statistics are publicly available at" msgstr "Súhrn získaných štatistík je verejne dostupný na" #: syncthing_gtk/app.py:552 #, python-format msgid "" "Your Windows version doesn't supports cryptographic standards needed\n" "for Syncthing-GTK to check for Syncthing updates.\n" "Please, install this Windows update or disable update feature." msgstr "Vaša verzia Windows nepodporuje kryptografické funkcie, ktoré\nSyncthing-GTK potrebuje na kontrolu a aktualizovanie Syncthing.\nProsím, nainštalujte túto aktualizáciu Windows alebo vypnite aktualizácie Syncthing." #: syncthing_gtk/app.py:486 msgid "Extracting update..." msgstr "Rozbaľuje sa aktualizácia..." #: syncthing_gtk/app.py:491 msgid "Restarting daemon..." msgstr "Reštartuje sa démon..." #: syncthing_gtk/app.py:507 #, python-format msgid "Failed to download upgrade: %s" msgstr "Sťahovanie aktualizácie zlyhalo: %s" #: syncthing_gtk/app.py:525 #, python-format msgid "Downloading Syncthing %s" msgstr "Sťahuje sa Syncthing %s" #: syncthing_gtk/app.py:604 msgid "Connected to Syncthing daemon" msgstr "Pripojené k démonovi Syncthing" #: syncthing_gtk/app.py:614 msgid "Connection to Syncthing daemon lost." msgstr "Spojenie s démonom Syncthing bolo stratené." #: syncthing_gtk/app.py:615 msgid "Syncthing is probably restarting or has been shut down." msgstr "Syncthing sa pravdepodobne reštartuje, alebo bol vypnutý." #: syncthing_gtk/app.py:617 msgid "Syncthing has been shut down." msgstr "Syncthing bol vypnutý." #: syncthing_gtk/app.py:621 syncthing_gtk/app.py:1499 msgid "Syncthing is restarting." msgstr "Syncthing sa reštartuje." #: syncthing_gtk/app.py:621 syncthing_gtk/app.py:1499 msgid "Please wait" msgstr "Prosím, počkajte..." #: syncthing_gtk/app.py:644 #, python-format msgid "Connecting to Syncthing daemon at %s..." msgstr "Pripájanie k démonovi Syncthing na %s..." #: syncthing_gtk/app.py:649 #, python-format msgid "Waiting for Syncthing daemon at %s..." msgstr "Čakanie na démona Syncthing na %s..." #: syncthing_gtk/app.py:664 msgid "Your syncthing daemon is too old." msgstr "Démon Syncthing je zastaralý." #: syncthing_gtk/app.py:664 msgid "Attempting to download recent, please wait..." msgstr "Prebieha sťahovanie aktuálnej verzie, prosím čakajte..." #: syncthing_gtk/app.py:670 msgid "" "Cannot authorize with daemon. Please, use WebUI to generate API key or " "disable password authentication." msgstr "Nepodarilo sa autentifikovať s démonom. Prosím, použite WebUI a vygenerujte API kľúč, alebo zakážte autentifikáciu heslom." #: syncthing_gtk/app.py:672 #, python-format msgid "" "Your syncthing daemon is too old.\n" "Please, upgrade syncthing package at least to version %s and try again." msgstr "Démon Syncthing je zastaralý.\nProsím, aktualizujte balíček syncthing aspoň na verziu %s a skúste to znova." #: syncthing_gtk/app.py:674 msgid "" "Sorry, connecting to HTTPS is not supported on this platform.\n" "Please, use WebUI to disable HTTPS try again." msgstr "Pripojenie cez HTTPS na tejto platforme nie je podporované.\nProsím, použite WebUI, zakážte HTTPS a skúste to znova." #: syncthing_gtk/app.py:677 msgid "Connection to daemon failed. Check your configuration and try again." msgstr "Pripojenie k démonovi sa nepodarilo. Skontrolujte konfiguráciu a skúste to znova." #: syncthing_gtk/app.py:678 syncthing_gtk/app.py:1992 #: syncthing_gtk/editordialog.py:314 msgid "Error message:" msgstr "Chybové hlásenie:" #: syncthing_gtk/app.py:763 msgid "Possible cause: Is there another web server running on Syncthing port?" msgstr "Nebeží na porte Syncthing iný web server?" #: syncthing_gtk/app.py:689 msgid "More info" msgstr "Ďalšie informácie" #: syncthing_gtk/app.py:715 msgid "" "The configuration has been saved but not activated.\n" "Syncthing must restart to activate the new configuration." msgstr "Konfigurácia bola uložená, ale nie je aktivovaná.\nPre aktivovanie konfigurácie je potrebné reštartovať Syncthing." #: syncthing_gtk/app.py:717 msgid "_Restart" msgstr "_Reštartovať" #: syncthing_gtk/app.py:859 msgid "Incompatible" msgstr "Nekompatibilné" #: syncthing_gtk/app.py:863 #, python-format msgid "" "Connecting to %s failed; the remote device speaks an older version of" " the protocol (%s) not compatible with this version" msgstr "Nepodarilo sa spojiť s %s; Zariadenie komunikuje starou verziou protokolu (%s)." #: syncthing_gtk/app.py:784 #, python-format msgid "%(device)s wants to share folder \"%(folder)s\". Add new folder?" msgstr "Zariadenie %(device)s chce zdieľať adresár \"%(folder)s\". Pridať nový zdieľaný adresár?" #: syncthing_gtk/app.py:791 syncthing_gtk/app.py:813 msgid "_Add" msgstr "Prid_ať" #: syncthing_gtk/app.py:806 #, python-format msgid "" "Device \"%(name)s\" (%(device)s) at IP \"%(ip)s\" wants to " "connect. Add new device?" msgstr "Zariadenie \"%(name)s\" (%(device)s) na adrese \"%(ip)s\" sa chce pripojiť. Pridať nové zariadenie?" #: syncthing_gtk/app.py:814 msgid "_Ignore" msgstr "_Ignorovať" #: syncthing_gtk/app.py:832 msgid "RAM Utilization" msgstr "Využitie RAM" #: syncthing_gtk/app.py:833 msgid "CPU Utilization" msgstr "Vyťaženie procesora" #: syncthing_gtk/app.py:834 syncthing_gtk/app.py:1353 msgid "Download Rate" msgstr "Rýchlosť sťahovania" #: syncthing_gtk/app.py:835 syncthing_gtk/app.py:1354 msgid "Upload Rate" msgstr "Rýchlosť odosielania" #: syncthing_gtk/app.py:836 msgid "Announce Server" msgstr "Ohlasovací server" #: syncthing_gtk/app.py:837 syncthing_gtk/app.py:1356 msgid "Version" msgstr "Verzia" #: syncthing_gtk/app.py:860 syncthing_gtk/editordialog.py:394 msgid "disabled" msgstr "zakázaný" #: syncthing_gtk/app.py:862 msgid "Online" msgstr "Online" #: syncthing_gtk/app.py:862 msgid "offline" msgstr "offline" #: syncthing_gtk/app.py:864 #, python-format msgid "%(online)s/%(total)s online" msgstr "%(online)s/%(total)s online" #: syncthing_gtk/app.py:891 syncthing_gtk/app.py:1357 #: syncthing_gtk/app.py:1382 msgid "Never" msgstr "Nikdy" #: syncthing_gtk/app.py:899 syncthing_gtk/app.py:1691 #: syncthing_gtk/app.py:1692 msgid "Paused" msgstr "Pozastavené" #: syncthing_gtk/app.py:899 syncthing_gtk/app.py:924 syncthing_gtk/app.py:939 #: syncthing_gtk/infobox.py:60 msgid "Disconnected" msgstr "Odpojené" #: syncthing_gtk/app.py:916 msgid "Connected" msgstr "Pripojené" #: syncthing_gtk/app.py:945 syncthing_gtk/app.py:980 syncthing_gtk/app.py:1030 #: syncthing_gtk/app.py:1031 syncthing_gtk/app.py:1070 msgid "Up to Date" msgstr "Synchronizované" #: syncthing_gtk/app.py:966 syncthing_gtk/app.py:967 syncthing_gtk/app.py:968 msgid "Files" msgstr "Súbory" #: syncthing_gtk/app.py:980 syncthing_gtk/app.py:1068 msgid "Cluster out of sync" msgstr "Cluster nie je synchronizovaný" #: syncthing_gtk/app.py:995 msgid "Stopped" msgstr "Zastavený" #: syncthing_gtk/app.py:998 syncthing_gtk/app.py:1005 msgid "Error" msgstr "Chyba" #: syncthing_gtk/app.py:1024 #, python-format msgid "Synchronizing '%s'" msgstr "Synchronizuje sa '%s'" #: syncthing_gtk/app.py:1026 #, python-format msgid "Synchronizing %s folders" msgstr "Synchronizuje sa %s adresárov" #: syncthing_gtk/app.py:1035 syncthing_gtk/app.py:1036 msgid "All devices offline" msgstr "Všetky zariadenia sú offline" #: syncthing_gtk/app.py:1040 syncthing_gtk/app.py:1041 msgid "Connecting to Syncthing daemon..." msgstr "Pripájanie k démonovi Sycnthing..." #: syncthing_gtk/app.py:1079 msgid "Unshared" msgstr "Nezdieľané" #: syncthing_gtk/app.py:1082 msgid "Offline" msgstr "Offline" #: syncthing_gtk/app.py:1176 msgid "Hide Window" msgstr "Skryť okno" #: syncthing_gtk/app.py:1190 app.glade:651 msgid "Show Window" msgstr "Zobraziť okno" #: syncthing_gtk/app.py:1239 msgid "Syncthing daemon doesn't appear to be running." msgstr "Démon Syncthing pravdepodobne nie je spustený." #: syncthing_gtk/app.py:1240 msgid "Start it now?" msgstr "Spustiť démona?" #: syncthing_gtk/app.py:1243 msgid "Always start daemon automatically" msgstr "Vždy automaticky spustiť démona" #: syncthing_gtk/app.py:1292 msgid "Folder ID" msgstr "ID adresára" #: syncthing_gtk/app.py:1293 msgid "Path" msgstr "Cesta" #: syncthing_gtk/app.py:1294 msgid "Global State" msgstr "Globálny stav" #: syncthing_gtk/app.py:1295 msgid "Local State" msgstr "Lokálny stav" #: syncthing_gtk/app.py:1296 msgid "Out Of Sync" msgstr "Nesynchronizované" #: syncthing_gtk/app.py:1297 msgid "Folder Type" msgstr "Typ adresára" #: syncthing_gtk/app.py:1298 msgid "Ignore Permissions" msgstr "Nesynchronizovať prístupové práva" #: syncthing_gtk/app.py:1299 msgid "Rescan Interval" msgstr "Interval skenovania" #: syncthing_gtk/app.py:1300 msgid "Shared With" msgstr "Zdieľané s" #: syncthing_gtk/app.py:1324 syncthing_gtk/app.py:1325 #: syncthing_gtk/app.py:1381 msgid "Yes" msgstr "Áno" #: syncthing_gtk/app.py:1324 syncthing_gtk/app.py:1325 #: syncthing_gtk/app.py:1381 msgid "No" msgstr "Nie" #: syncthing_gtk/app.py:1327 msgid "(watch)" msgstr "(sledované)" #: syncthing_gtk/app.py:1341 msgid "Unused" msgstr "Nepoužité" #: syncthing_gtk/app.py:1350 msgid "Address" msgstr "Adresa" #: syncthing_gtk/app.py:1351 msgid "Synchronization" msgstr "Synchronizácia" #: syncthing_gtk/app.py:1352 msgid "Compression" msgstr "Kompresia" #: syncthing_gtk/app.py:1355 msgid "Introducer" msgstr "Uvádzač" #: syncthing_gtk/app.py:1357 msgid "Last Seen" msgstr "Naposledy pripojené" #: syncthing_gtk/app.py:1378 device-edit.glade:22 msgid "All Data" msgstr "Všetko" #: syncthing_gtk/app.py:1379 device-edit.glade:26 folder-edit.glade:78 msgid "Off" msgstr "Vypnuté" #: syncthing_gtk/app.py:1375 msgid "Send Only" msgstr "Len odosielanie" #: syncthing_gtk/app.py:1375 msgid "Send & Receive" msgstr "Odosielanie i príjem" #: syncthing_gtk/app.py:1447 msgid "Receive Only" msgstr "Iba prijímanie" #: syncthing_gtk/app.py:1380 device-edit.glade:30 msgid "Metadata Only" msgstr "Iba metadáta" #: syncthing_gtk/app.py:1522 msgid "Exiting." msgstr "Syncthing-GTK sa vypína." #: syncthing_gtk/app.py:1523 msgid "Shutdown Syncthing daemon as well?" msgstr "Vypnúť aj démona Syncthing?" #: syncthing_gtk/app.py:1528 msgid "Always do same; Don't show this window again" msgstr "Vždy ukončiť démona a toto okno viac nezobrazovať." #: syncthing_gtk/app.py:1768 #, python-format msgid "Do you really want to permanently stop synchronizing directory '%s'?" msgstr "Chcete naozaj ukončiť synchronizáciu adresára '%s'?" #: syncthing_gtk/app.py:1770 #, python-format msgid "Do you really want remove device '%s' from Syncthing?" msgstr "Chcete naozaj odstrániť '%s' zo zoznamu zariadení?" #: syncthing_gtk/app.py:1991 msgid "Failed to start Syncthing daemon." msgstr "Nepodarilo sa spustiť démona Syncthing." #: syncthing_gtk/app.py:1993 msgid "" "Please, check your installation or set new path to Syncthing daemon binary." msgstr "Prosím, skontrolujte, či je nainštalovaný alebo nastavte novú cestu k súboru." #: syncthing_gtk/daemonsettings.py:24 msgid "Syncthing Daemon Settings" msgstr "Nastavenia Démona Syncthing" #: syncthing_gtk/deviceeditor.py:24 msgid "" "The entered device ID does not look valid. It should be a 52 character " "string consisting of letters and numbers, with spaces and dashes being " "optional." msgstr "Zadané ID pravdepodobne nie je správne. Správne ID má 52 alfanumerických znakov nepovinne oddelených medzerami a pomlčkami." #: syncthing_gtk/editordialog.py:312 msgid "Failed to load configuration from daemon." msgstr "Nepodarilo sa načítať konfiguráciu démona." #: syncthing_gtk/editordialog.py:313 msgid "Try again." msgstr "Skúste to znovu neskôr." #: syncthing_gtk/editordialog.py:387 syncthing_gtk/editordialog.py:396 #, python-format msgid "%ss" msgstr "%ss" #: syncthing_gtk/editordialog.py:402 #, python-format msgid "%s%%" msgstr "%s%%" #: syncthing_gtk/editordialog.py:409 msgid "no limit" msgstr "bez limitu" #: syncthing_gtk/editordialog.py:411 #, python-format msgid "%s KiB/s" msgstr "%s KiB/s" #: syncthing_gtk/editordialog.py:418 msgid "never delete" msgstr "nikdy nemazať" #: syncthing_gtk/editordialog.py:420 #, python-format msgid "%s day" msgstr "%s deň" #: syncthing_gtk/editordialog.py:422 #, python-format msgid "%s days" msgstr "%s dní" #: syncthing_gtk/editordialog.py:455 msgid "Failed to save configuration." msgstr "Konfiguráciu sa nepodarilo uložiť." #: syncthing_gtk/finddaemondialog.py:24 find-daemon.glade:7 msgid "Can't invoke the daemon" msgstr "Nemôžem vyvolať démona." #: syncthing_gtk/finddaemondialog.py:26 msgid "Syncthing binary" msgstr "Súbor démona Syncthing" #: syncthing_gtk/finddaemondialog.py:28 syncthing_gtk/finddaemondialog.py:37 msgid "Syncthing daemon binary cannot be found." msgstr "Súbor démona Syncthing nebol nájdený." #: syncthing_gtk/finddaemondialog.py:29 #, python-format msgid "" "If you have Syncthing installed, please, set path to %s below or click on " "Download button to download latest Syncthing package." msgstr "Ak máte nainštalovaný Syncthing, prosím, nastavte cestu k %s, alebo kliknutím na tlačidlo Stiahnuť stiahnite aktuálnu verziu." #: syncthing_gtk/finddaemondialog.py:38 #, python-format msgid "If you have Syncthing installed, please, set path to %s below" msgstr "Ak máte nainštalovaný balíček Syncthing, prosím, nastavte cestu k %s." #: syncthing_gtk/finddaemondialog.py:82 syncthing_gtk/wizard.py:411 msgid "Cannot download Syncthing daemon." msgstr "Nepodarilo sa stiahnuť Syncthing." #: syncthing_gtk/finddaemondialog.py:83 syncthing_gtk/wizard.py:412 #, python-format msgid "This platform (%s) is not supported" msgstr "Platforma %s nieje podporovaná." #: syncthing_gtk/finddaemondialog.py:100 msgid "Downloading..." msgstr "Sťahuje sa..." #: syncthing_gtk/finddaemondialog.py:163 syncthing_gtk/stdownloader.py:251 #: syncthing_gtk/stdownloader.py:279 msgid "Download failed." msgstr "Sťahovanie zlyhalo." #: syncthing_gtk/finddaemondialog.py:185 syncthing_gtk/wizard.py:458 msgid "Download finished." msgstr "Sťahovanie dokončené." #: syncthing_gtk/foldereditor.py:45 msgid "Select Folder for new Folder" msgstr "Vyberte adresár pre nový adresár" #: syncthing_gtk/ignoreeditor.py:44 msgid "File location:" msgstr "Umiestnenie súboru:" #: syncthing_gtk/notifications.py:120 #, python-format msgid "Unexpected folder ID sent from device \"%s\"." msgstr "Zariadenie \"%s\" poslalo neočakávané ID." #: syncthing_gtk/notifications.py:124 #, python-format msgid "Device \"%s\" is trying to connect to syncthing daemon." msgstr "K démonu sa pokúša pripojiť zariadenie \"%s\"." #: syncthing_gtk/notifications.py:153 #, python-format msgid "Synchronization of folder '%s' is completed." msgstr "Synchronizácia adresára '%s' je dokončená." #: syncthing_gtk/notifications.py:114 syncthing_gtk/notifications.py:115 #, python-format msgid "Accept device \"%s\"" msgstr "Akceptovať zariadenie \"%s\"" #: syncthing_gtk/notifications.py:116 #, python-format msgid "Ignore device \"%s\"" msgstr "Ignorovať zariadenie \"%s\"" #: syncthing_gtk/notifications.py:118 msgid "Unknown Device" msgstr "Neznáme zariadenie" #: syncthing_gtk/notifications.py:161 syncthing_gtk/notifications.py:162 #, python-format msgid "Accept folder \"%s\"" msgstr "Akceptovať adresár \"%s\"" #: syncthing_gtk/notifications.py:163 #, python-format msgid "Ignore folder \"%s\"" msgstr "Ignorovať adresár \"%s\"" #: syncthing_gtk/notifications.py:173 msgid "Folder rejected" msgstr "Adresár odmietnutý." #: syncthing_gtk/notifications.py:174 #, python-format msgid "Unexpected folder \"%(folder)s\" sent from device \"%(device)s\"." msgstr "Zariadenie \"%(device)s\" poslalo neočakávaný adresár \"%(folder)s\"." #: syncthing_gtk/notifications.py:207 #, python-format msgid "Completed synchronization in \"%s\"" msgstr "Synchronizácia v \"%s\" dokončená." #: syncthing_gtk/notifications.py:209 #, python-format msgid "Updates in folder \"%s\"" msgstr "Zmeny v adresáry \"%s\"" #: syncthing_gtk/notifications.py:160 #, python-format msgid "%(hostname)s: Downloaded '%(filename)s' to reflect remote changes." msgstr "%(hostname)s: Súbor '%(filename)s' bol zmenený na inom zariadení." #: syncthing_gtk/notifications.py:165 #, python-format msgid "%(hostname)s: Deleted '%(filename)s' to reflect remote changes." msgstr "%(hostname)s: Súbor '%(filename)s' bol zmazaný na inom zariadení." #: syncthing_gtk/notifications.py:168 #, python-format msgid "%(hostname)s: Downloaded %(updated)s files to reflect remote changes." msgstr "%(hostname)s: %(updated)s súborov bolo zmenených na inom zariadení." #: syncthing_gtk/notifications.py:171 #, python-format msgid "%(hostname)s: Deleted %(deleted)s files to reflect remote changes." msgstr "%(hostname)s: %(deleted)s súborov bolo zmazaných na inom zariadení." #: syncthing_gtk/notifications.py:175 #, python-format msgid "" "%(hostname)s: downloaded %(updated)s files and deleted %(deleted)s files to " "reflect remote changes." msgstr "%(hostname)s: %(updated)s súborov bolo zmenených a %(deleted)s zmazaných na inom zariadení." #: syncthing_gtk/notifications.py:256 #, python-format msgid "Conflicting file in \"%s\"" msgstr "Konflikt v adresári \"%s\"" #: syncthing_gtk/notifications.py:257 #, python-format msgid "Conflict in path \"%s\" detected." msgstr "Detekovaný konflikt v ceste \"%s\"" #: syncthing_gtk/notifications.py:261 msgid "Open Conflicting file in filemanager" msgstr "Zobraziť konfliktný súbor v správcovy súborov" #: syncthing_gtk/notifications.py:337 msgid "An error occurred in Syncthing!" msgstr "Chyba v Syncthing!" #: syncthing_gtk/statusicon.py:48 msgid "Syncthing" msgstr "Syncthing" #: syncthing_gtk/stdownloader.py:174 syncthing_gtk/stdownloader.py:217 #: syncthing_gtk/stdownloader.py:313 syncthing_gtk/stdownloader.py:344 msgid "Failed to determine latest Syncthing version." msgstr "Nepodarilo sa určiť aktuálnu verziu Syncthing." #: syncthing_gtk/stdownloader.py:236 msgid "Failed to create temporary file." msgstr "Nepodarilo sa vytvoriť dočasný súbor." #: syncthing_gtk/stdownloader.py:294 msgid "Downloaded file is corrupted." msgstr "Stiahnutý súbor je poškodený." #: syncthing_gtk/tools.py:192 #, python-format msgid "~%s hours ago" msgstr "pred asi %s hodinami" #: syncthing_gtk/tools.py:194 #, python-format msgid "%s minutes ago" msgstr "pred %s minútami" #: syncthing_gtk/tools.py:196 #, python-format msgid "%s seconds ago" msgstr "pred %s sekundami" #: syncthing_gtk/tools.py:197 msgid "just now" msgstr "teraz" #: syncthing_gtk/tools.py:199 #, python-format msgid "%s days ago" msgstr "pred %s dňami" #: syncthing_gtk/tools.py:203 #, python-format msgid "in %s days" msgstr "za %s dní" #: syncthing_gtk/tools.py:205 #, python-format msgid "~%s hours from now" msgstr "za asi %s hodín" #: syncthing_gtk/tools.py:207 #, python-format msgid "%s minutes from now" msgstr "za %s minút" #: syncthing_gtk/tools.py:209 #, python-format msgid "%s seconds from now" msgstr "za %s sekúnd" #: syncthing_gtk/tools.py:210 msgid "in a moment" msgstr "za moment" #: syncthing_gtk/uisettingsdialog.py:58 msgid "UI Settings" msgstr "Nastavenia UI" #: syncthing_gtk/uisettingsdialog.py:70 msgid "Unlimited" msgstr "Bez limitu" #: syncthing_gtk/uisettingsdialog.py:107 #, python-format msgid "Install %(package)s package to enable %(feature)s support" msgstr "Prosím, nainštalujte balíček %(package)s ak potrebujete podporu %(feature)s" #: syncthing_gtk/uisettingsdialog.py:312 msgid "Browse for Syncthing binary" msgstr "Vyhľadať súbor démona Syncthing" #: syncthing_gtk/wizard.py:53 msgid "First run wizard" msgstr "Sprievodca prvým spustením" #: syncthing_gtk/wizard.py:137 #, python-format msgid "Please, check error log and fill bug report on %s." msgstr "Prosím, prezrite si chybový log a zvážte vytvorenie hlásenia o chybe na %s." #: syncthing_gtk/wizard.py:141 msgid "Display error log" msgstr "Zobraziť chybový log" #: syncthing_gtk/wizard.py:215 msgid "Next" msgstr "Ďalej" #: syncthing_gtk/wizard.py:224 msgid "" "Continue this wizard to create a Syncthing configuration file or abort it to" " exit." msgstr "Pokračovaním v sprievodcovi sa vytvorí nová konfigurácia pre Synthing." #: syncthing_gtk/wizard.py:198 msgid "Welcome to Syncthing-GTK first run wizard!" msgstr "Víta Vás sprievodca prvým spustením Syncthing-GTK." #: syncthing_gtk/wizard.py:200 msgid "It looks like you never have used Syncthing." msgstr "Vyzerá to tak, že ste Syncthing ešte nepouźívali." #: syncthing_gtk/wizard.py:201 msgid "Initial configuration should be created." msgstr "Je preto potrebné prejsť úvodnú konfiguráciu." #: syncthing_gtk/wizard.py:204 #, python-format msgid "" "If you already had Syncthing daemon configured, please, exit this wizard and" " check your %s folder" msgstr "Ak už máte Syncthing nakonfigurovaný, prosím, ukončite sprievodcu a skontrolujte konfiguráciu v adresári %s." #: syncthing_gtk/wizard.py:220 msgid "Searching for Syncthing daemon." msgstr "Hľadá sa démon Syncthing" #: syncthing_gtk/wizard.py:222 syncthing_gtk/wizard.py:394 msgid "Please wait..." msgstr "Prosím, počkajte..." #: syncthing_gtk/wizard.py:270 syncthing_gtk/wizard.py:287 msgid "Syncthing daemon not found." msgstr "Démon Syncthing sa nenašiel." #: syncthing_gtk/wizard.py:271 msgid "Please, use package manager to install the Syncthing package." msgstr "Prosím, použite správcu balíčkov a nainštalujte balíček Syncthing." #: syncthing_gtk/wizard.py:283 msgid "download latest binary" msgstr "stiahnite aktuálnu verziu" #: syncthing_gtk/wizard.py:288 syncthing_gtk/wizard.py:302 #, python-format msgid "" "Please, use package manager to install the Syncthing package or " "%(download_link)s from Syncthing page and save it to your %(target)s " "directory." msgstr "Prosím, použite správcu balíčkov a nainštalujte balíček Syncthing alebo %(download_link)s a rozbaľte ho do adresára %(target)s." #: syncthing_gtk/wizard.py:296 msgid "Syncthing daemon is too old." msgstr "Démon Syncthing je zastaralý." #: syncthing_gtk/wizard.py:297 #, python-format msgid "" "Syncthing-GTK needs Syncthing daemon %(min)s or newer, but only %(actual)s " "were found." msgstr "Syncthing-GTK potrebuje Syncthingvo verzii %(min)s alebo novšej, ale nájdená bola iba verzia %(actual)s." #: syncthing_gtk/wizard.py:309 msgid "Alternatively, Syncthing-GTK can download Syncthing binary" msgstr "Alternatívne, Syncthing-GTK môže stiahnuť Syncthing" #: syncthing_gtk/wizard.py:310 #, python-format msgid "to %s and keep it up-to-date, but this option is meant as" msgstr "do %s a udržovať ho aktuálne, ale táto možnosť je myslená ako" #: syncthing_gtk/wizard.py:312 msgid "last resort and generally not suggested." msgstr "posledná možnosť a nie je doporučená." #: syncthing_gtk/wizard.py:315 msgid "_Download Syncthing binary" msgstr "_Stiahnuť Syncthing" #: syncthing_gtk/wizard.py:319 msgid "Auto_update downloaded binary" msgstr "A_utomaticky aktualizovať" #: syncthing_gtk/wizard.py:375 msgid "Syncthing daemon binary found." msgstr "Démon Syncthing bol nájdený." #: syncthing_gtk/wizard.py:377 syncthing_gtk/wizard.py:460 msgid "Binary path:" msgstr "Cesta:" #: syncthing_gtk/wizard.py:378 msgid "Version:" msgstr "Verzia:" #: syncthing_gtk/wizard.py:393 msgid "Downloading Syncthing daemon." msgstr "Sťahuje sa démon Syncthing." #: syncthing_gtk/wizard.py:441 msgid "Failed to download Syncthing daemon package." msgstr "Nepodarilo sa stiahnuť Syncthing." #: syncthing_gtk/wizard.py:472 msgid "Syncthing is generating RSA key and certificate." msgstr "Syncthing generuje RSA klúč a certifikát." #: syncthing_gtk/wizard.py:473 msgid "This may take a while..." msgstr "Táto operácia môže chvíľu trvať..." #: syncthing_gtk/wizard.py:515 msgid "Failed to generate keys" msgstr "Generovanie kľúčov zlyhalo" #: syncthing_gtk/wizard.py:516 msgid "Syncthing daemon failed to generate RSA key or certificate." msgstr "Syncthing nevygeneroval RSA kľúč alebo certifikát." #: syncthing_gtk/wizard.py:526 msgid "WebUI setup" msgstr "Nastavenie WebUI" #: syncthing_gtk/wizard.py:528 msgid "" "Syncthing can be managed remotely using WebUI and even if you are going to " "use Syncthing-GTK, WebUI needs to be enabled, as Syncthing-GTK uses it to " "communicate with the Syncthing daemon." msgstr "Syncthing je možné spravovať vzdialene pomocou WebUI a i v prípade, ak chcete používať výhradne Syncthing-GTK, WebUI musí byť povolené, nakoľko ho Syncthing-GTK používa na komunikáciu s démonom." #: syncthing_gtk/wizard.py:533 msgid "" "If you prefer to be able to manage Syncthing remotely, over the internet or " "on your local network, select listen on all interfaces and set " "username and password to protect Syncthing from unauthorized access." msgstr "Ak plánujete spravovať Syncthing vzdialene, cez Internet alebo v rámci miestnej siete, zvoľte počúvať na všetkých rozhraniach a nastavte používateľské meno a heslo na ochranu pred neautorizovaným prístupom." #: syncthing_gtk/wizard.py:538 msgid "" "Otherwise, select listen on localhost, so only users and programs on " "this computer will be able to interact with Syncthing." msgstr "V opačnom prípade môžete zvoliť počúvať lokálne. Iba užívatelia a programy s prístupom k tomuto počítaču budú môcť pracovať so Syncthing. " #: syncthing_gtk/wizard.py:544 msgid "WebUI Listen Addresses" msgstr "Adresa pre WebUI" #: syncthing_gtk/wizard.py:545 msgid "Listen on _localhost" msgstr "Počúvať _lokálne" #: syncthing_gtk/wizard.py:547 msgid "Listen on _all interfaces" msgstr "Počúvať n_a všetkých rozhraniach" #: syncthing_gtk/wizard.py:554 msgid "_Username" msgstr "_Užívateľské meno" #: syncthing_gtk/wizard.py:555 msgid "_Password" msgstr "_Heslo" #: syncthing_gtk/wizard.py:609 msgid "Saving settings..." msgstr "Nastavenia sa ukladajú..." #: syncthing_gtk/wizard.py:610 msgid "Checking for available port..." msgstr "Hľadá sa voľný port..." #: syncthing_gtk/wizard.py:631 msgid "Failed to find unused port for listening." msgstr "Nepodarilo sa nájsť voľný TCP port." #: syncthing_gtk/wizard.py:632 msgid "Please, check your firewall settings and try again." msgstr "Prosím, skontrolujte nastavenia brány firewall a skúste to znova." #: syncthing_gtk/wizard.py:646 msgid "Saving..." msgstr "Ukladá sa..." #: syncthing_gtk/wizard.py:678 msgid "Failed to load Syncthing configuration" msgstr "Nepodarilo sa načítať konfiguráciu Syncthing" #: syncthing_gtk/wizard.py:705 msgid "Failed to modify Syncthing configuration" msgstr "Nepodarilo sa upraviť konfiguráciu Syncthing" #: syncthing_gtk/wizard.py:715 msgid "Failed to save Syncthing configuration" msgstr "Nepodarilo sa uložiť konfiguráciu Syncthing" #: syncthing_gtk/wizard.py:729 msgid "Done." msgstr "Hotovo." #: syncthing_gtk/wizard.py:731 msgid "Syncthing has been successfully configured." msgstr "Konfigurácia Syncthing bola dokončená." #: syncthing_gtk/wizard.py:733 msgid "" "You can configure more details later, in UI Settings and Daemon " "Settings menus in main window of application." msgstr "Ďalšie nastavenia môžete dodatočne nastaviť pomocou položiek menu Nastavenia UI a Nastavenia Démona v hlavnom okne aplikácie." #: about.glade:7 msgid "About Syncthing-GTK" msgstr "O Syncthing-GTK" #: about.glade:10 msgid "GUI and notification area icon for Syncthing" msgstr "GUI a notifikačná ikona pre Syncthing" #: app.glade:239 app.glade:420 app.glade:802 msgid "Open _Web Interface" msgstr "Otvoriť _Webové Rozhranie" #: app.glade:251 app.glade:424 app.glade:814 msgid "Display _Daemon Output" msgstr "Zobraziť Výstup _Démona" #: app.glade:280 app.glade:430 msgid "UI _Settings" msgstr "Na_stavenia UI" #: app.glade:325 app.glade:451 msgid "Add Shared _Folder" msgstr "Pridať Zdieľaný _Adresár" #: app.glade:338 app.glade:455 msgid "Add _Device" msgstr "Pri_dať Zariadenie" #: app.glade:356 app.glade:461 msgid "Daemon _Settings" msgstr "Na_stavenia Démona" #: app.glade:371 app.glade:465 app.glade:588 app.glade:788 msgid "Show _ID" msgstr "Zobraziť _ID" #: app.glade:391 app.glade:471 msgid "Sh_utdown Daemon" msgstr "Vyp_núť Démona" #: app.glade:404 app.glade:475 msgid "_Restart Daemon" msgstr "_Reštartovať Démona" #: app.glade:436 msgid "_About" msgstr "_O programe" #: app.glade:440 msgid "_Quit" msgstr "_Koniec" #: app.glade:490 msgid "Override Remote Changes" msgstr "Prepísať Vzdialené Zmeny" #: app.glade:519 msgid "Edit _Ignore Patterns" msgstr "Upraviť _Ignorované Súbory" #: app.glade:547 msgid "_Rescan" msgstr "P_reskenovať" #: app.glade:559 msgid "_Browse" msgstr "_Otvoriť" #: app.glade:611 msgid "Resume" msgstr "Obnoviť" #: app.glade:641 msgid "Connecting to daemon..." msgstr "Pripájanie k démonovi Sycnthing..." #: app.glade:669 msgid "S_top Syncthing" msgstr "Zas_taviť Syncthing" #: app.glade:683 msgid "Resume Sync_thing" msgstr "Obnoviť Synct_thing" #: app.glade:695 daemon-settings.glade:335 msgid "_Incoming Rate Limit" msgstr "L_imit Rýchlosti Sťahovania" #: app.glade:709 app.glade:751 msgid "_Unlimited" msgstr "_Bez limitu" #: app.glade:718 app.glade:760 msgid "_Other" msgstr "_Iná" #: app.glade:737 msgid "_Outgoing Rate Limit" msgstr "Limit Rýchlosti _Odosielania" #: daemon-output.glade:7 msgid "Daemon Output" msgstr "Výstup Démona" #: daemon-settings.glade:106 msgid "Sync Protocol Listen Addresses" msgstr "Adresa pre Sync Protokol" #: daemon-settings.glade:136 msgid "Enable Local _Discovery" msgstr "Povoliť Vyhľa_dávanie v Lokálnej Sieti" #: daemon-settings.glade:153 msgid "Enable _UPnP" msgstr "Povoliť _UPNP" #: daemon-settings.glade:171 msgid "Local Discovery _Port" msgstr "_Port pre Vyhľadávanie v Lokálnej Sieti" #: daemon-settings.glade:212 msgid "Outgoing _Rate Limit" msgstr "Limit _Rýchlosti Odosielania" #: daemon-settings.glade:229 msgid "Open browser with _WebUI when daemon is starting" msgstr "Otvoriť WebUI vo webovom prehliadači pri spustení démona" #: daemon-settings.glade:246 msgid "Enable _Anonymous Usage Reporting" msgstr "Povoliť _Anonymné Hlásenia o Používaní" #: daemon-settings.glade:262 msgid "Enable _Global Discovery" msgstr "Povoliť _Globálne Vyhľadávanie" #: daemon-settings.glade:281 msgid "Global Discovery _Servers" msgstr "Adresa _Serveru pre Globálne Vyhľadávanie" #: device-edit.glade:102 msgid "Device _ID" msgstr "_ID Zariadenia" #: device-edit.glade:134 msgid "Device _Name" msgstr "_Názov Zariadenia" #: device-edit.glade:166 msgid "Shown instead of Device ID in the cluster status." msgstr "Zobrazené namiesto ID v zozname zariadení" #: device-edit.glade:181 msgid "_Addresses" msgstr "_Adresy" #: device-edit.glade:213 msgid "" "Enter comma separated \"ip:port\" addresses or \"dynamic\" to perform " "automatic discovery of the address." msgstr "Zadajte čiarkami oddelený zoznam adries v tvare \"adresa:port\" alebo zadajte \"dynamic\" pre povolenie automatického vyhľadávania adresy." #: device-edit.glade:242 msgid "Share _Folders" msgstr "Nazdieľať _Adresáre" #: device-edit.glade:276 msgid "Select the folders to share with this device" msgstr "Vyberte adresáre, ktoré budú synchronizované s týmto zariadením" #: device-edit.glade:287 msgid "_Introducer" msgstr "U_vádzač" #: device-edit.glade:308 msgid "" "Any devices configured on an introducer device will be added to this device " "as well." msgstr "Všetky zariadenia pridané na zariadení s povolenou funkciou Uvádzač budú automaticky pridané aj na tomto zariadení." #: device-edit.glade:323 msgid "_Compression" msgstr "_Kompresia" #: device-id.glade:14 msgid "Device Identification" msgstr "Identifikácia Zariadenia" #: device-id.glade:68 msgid "XYZ-123-ABC" msgstr "XYZ-123-ABC" #: find-daemon.glade:126 ui-settings.glade:821 msgid "_Browse..." msgstr "_Vyhľadať...." #: find-daemon.glade:179 msgid "_Download..." msgstr "_Stiahnuť..." #: folder-edit.glade:44 msgctxt "In File Pull Order combobox" msgid "Random" msgstr "Náhodné" #: folder-edit.glade:48 msgctxt "In File Pull Order combobox" msgid "Alphabetic" msgstr "Abecedné" #: folder-edit.glade:52 msgctxt "In File Pull Order combobox" msgid "Smallest First" msgstr "Od Najmenšieho" #: folder-edit.glade:56 msgctxt "In File Pull Order combobox" msgid "Largest First" msgstr "Od Najväčšieho" #: folder-edit.glade:60 msgctxt "In File Pull Order combobox" msgid "Oldest First" msgstr "Od Najstaršieho" #: folder-edit.glade:64 msgctxt "In File Pull Order combobox" msgid "Newest First" msgstr "Od Nanovšieho" #: folder-edit.glade:82 msgid "Simple" msgstr "Jednoduché" #: folder-edit.glade:86 msgid "Staggered" msgstr "Postupné" #: folder-edit.glade:90 msgid "Trashcan" msgstr "Smetiak" #: folder-edit.glade:94 msgid "External" msgstr "Externý skript" #: folder-edit.glade:171 msgid "Folder _Label" msgstr "Označenie _Adresára" #: folder-edit.glade:190 msgid "Generate Random" msgstr "Generovať Náhodné" #: folder-edit.glade:202 msgid "Short identifier for the folder. Must be the same on all devices." msgstr "Krátky identifikátor adresára. Musí byť rovnaký na všetkých zariadeniach." #: folder-edit.glade:216 msgid "_Path" msgstr "_Cesta" #: folder-edit.glade:234 msgid "" "Path to the folder on the local computer. Will be created if it does not " "exist." msgstr "Cesta k adresáru na tomto počítači. Ak zadáte neexistujúci adresár, automaticky sa vytvorí." #: folder-edit.glade:248 msgid "Rescan _Interval" msgstr "_Interval Skenovania" #: folder-edit.glade:293 msgid "Monitor filesystem for _changes" msgstr "Monitorovať _zmeny súborového systému" #: folder-edit.glade:343 msgid "Browse..." msgstr "Prehliadať..." #: folder-edit.glade:366 msgid "Folder _ID" msgstr "_ID Adresára" #: folder-edit.glade:396 msgid "" "Optional descriptive label for the folder. Can be different on each device." msgstr "Voliteľné označenie alebo popis adresára. Môže byť iné na každom zariadení." #: folder-edit.glade:418 msgid "_Send Only Folder" msgstr "Z Adresára len Odosielať" #: folder-edit.glade:439 msgid "" "Files are protected from changes made on other devices, but changes made on " "this device will be sent to the rest of the cluster." msgstr "Súbory v adresári len na odosielanie sú chránené proti prepísaniu zmenami na ostatných zariadeniach. Iba zmeny na tomto zariadení budú odosielané ostatným zariadeniam." #: folder-edit.glade:453 msgid "_Receive Only Folder" msgstr "Do ad_resára iba prijímať" #: folder-edit.glade:474 msgid "" "Changes from other devices are applied to files on this device, but changes " "made on this device are not sent to the rest of the cluster.\n" msgstr "Zmeny z ostatných zariadení budú aplikované lokálne, ale zmeny na tomto zariadení odosielané ostatným zariadeniam nebudú.\n" #: folder-edit.glade:456 msgid "_Folder Settings" msgstr "Nastavenia Adre_sára" #: folder-edit.glade:476 msgid "Select the devices to share this folder with." msgstr "Vyberte zariadenia, s ktorými sa bude tento adresár synchronizovať." #: folder-edit.glade:514 msgid "Share With _Devices" msgstr "Zdieľať so Zaria_deniami" #: folder-edit.glade:535 msgid "Versioning _Mode" msgstr "Mód Verzionovania" #: folder-edit.glade:590 msgid "" "Files are moved to date stamped versions in a .stversions folder when " "replaced or deleted by syncthing." msgstr "Súbory sú označené časovou známkou a presunuté do adresára \".stversions\" namiesto prepísania pri prijatí zmien z iného zariadenia." #: folder-edit.glade:605 msgid "_Keep Versions" msgstr "_Zachovať Verzie" #: folder-edit.glade:642 msgid "The number of old versions to keep, per file." msgstr "Počet posledných verzií súboru, ktoré sa majú zachovať." #: folder-edit.glade:671 msgid "" "Files are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing. Versions are automatically deleted if they are older than the maximum age or exceed the number of files allowed in an interval.\n" "\n" "The following intervals are used: for the first hour a version is kept every 30 seconds, for the first day a version is kept every hour, for the first 30 days a version is kept every day, until the maximum age a version is kept every week." msgstr "Súbory sú označené časovou známkou a presunuté do adresára \".stversions\" namiesto prepísania pri prijatí zmien z iného zariadenia. Staré verzie sú automaticky vymazané, ak sú staršie, než zadaný vek alebo je prekročený maximálny počet zachovaných verzií.\n\nPoužité sú nasledujúce intervaly: z mladších, než jedna hodina sa zachová jedna verzia každých 30 sekúnd, z mladších, než jeden deň jedna verzia každú hodinu a po dobu tridsať dní sa zachováva jedna verzia za každý deň. Staršie súbory sú zachovávané v týždňových intervaloch, až kým nie sú zmazané po dosiahnutí maximálneho veku." #: folder-edit.glade:688 msgid "Ma_ximum Age" msgstr "Ma_ximálny Vek Súboru" #: folder-edit.glade:727 msgid "Versions _Path" msgstr "Cesta _k Verziám" #: folder-edit.glade:759 msgid "" "Path where versions should be stored (leave empty for the default " ".stversions folder)." msgstr "Cesta, pod ktorou sa zachované verzie uložia. Nechajte prázdne pre použitie prednastaveného adresára \".stversions\"" #: folder-edit.glade:787 msgid "" "Files are moved to .stversions folder when replaced or deleted by Syncthing" msgstr "Prepísané alebo zmazané súbory sú presunuté do adresára \".stversions\"" #: folder-edit.glade:801 msgid "Clean out _after" msgstr "Vymaz_ať po" #: folder-edit.glade:840 msgid "The number of days to keep files in the trash can." msgstr "Počet dní, po ktoré sa majú súbory v odpadkovom koši zachovávať." #: folder-edit.glade:869 msgid "" "An external command handles the versioning. It has to remove the file from " "the synced folder." msgstr "Externý skript, ktorý spravuje verzionovanie. Skript musí odstrániť aktualizovaný súbor." #: folder-edit.glade:884 msgid "Command" msgstr "Skript" #: folder-edit.glade:917 msgid "" "The first command line parameter is the folder path and the second parameter" " is the relative path in the folder." msgstr "Prvý parameter skriptu je cesta k synchronizovanému adresáru a druhý je cesta k súboru relatívna k ceste synchronizovaného adresára." #: folder-edit.glade:953 msgid "File _Versioning" msgstr "Verzionovanie _Súborov" #: folder-edit.glade:982 msgid "Ignore P_ermissions" msgstr "Ignorovať Prístupo_vé Práva" #: folder-edit.glade:1003 msgid "" "File permission bits are ignored when looking for changes. Use on FAT " "filesystems." msgstr "Zmeny v prístupových právach nebudú sledované. Povoľte na súborovom systéme FAT." #: folder-edit.glade:1018 msgid "Minimum Free Disk Space" msgstr "Minimum Volného Miesta na Disku" #: folder-edit.glade:1057 msgid "File Pull _Order" msgstr "P_oradie Sťahovania" #: folder-edit.glade:1103 ui-settings.glade:954 msgid "_Advanced" msgstr "_Rozšírené" #: ignore-editor.glade:8 msgid "Ignore Patterns" msgstr "Ignorované Súbory" #: ignore-editor.glade:99 msgid "" "See Syncthing " "documentation for list of supported patterns" msgstr "Navštívte dokumentáciu Syncthing pre zoznam podporovaných vzorcov" #: ignore-editor.glade:114 msgid "File location: " msgstr "Umiestnenie súboru:" #: ui-settings.glade:27 msgid "Lowest" msgstr "Najnižšia" #: ui-settings.glade:31 msgid "Low" msgstr "Malá" #: ui-settings.glade:35 msgid "Normal" msgstr "Normálna" #: ui-settings.glade:39 msgid "Above Normal" msgstr "Vysoká" #: ui-settings.glade:46 msgid "Syncthing-GTK Settings" msgstr "Nastavenia Syncthing-GTK" #: ui-settings.glade:27 msgid "Default" msgstr "Pôvodný" #: ui-settings.glade:35 msgid "White" msgstr "Biely" #: ui-settings.glade:31 msgid "Black" msgstr "Čierny" #: ui-settings.glade:69 msgid "Please, restart Syncthing-GTK to apply all changed settings" msgstr "Prosím, reštartujte Syncthing-GTK aby sa aplikovali všetky zmeny v nastaveniach" #: ui-settings.glade:136 msgid "When starting and Syncthing daemon is not running..." msgstr "Pri štarte, ak démon Syncthing nieje spustený..." #: ui-settings.glade:147 msgid "... _wait for daemon" msgstr "... čakať na _spustenie démona" #: ui-settings.glade:164 msgid "... start daemon in _background" msgstr "... spustiť démona na _pozadí" #: ui-settings.glade:180 msgid "... _ask me what to do" msgstr "... opýtať s_a" #: ui-settings.glade:199 msgid "When exiting after daemon was started in background..." msgstr "Pri ukončení, ak bol démon spustený na pozadí..." #: ui-settings.glade:210 msgid "... terminate _daemon" msgstr "... ukončiť _démona" #: ui-settings.glade:226 msgid "... leave daemon _running" msgstr "... ponechať démo_na spusteného" #: ui-settings.glade:242 msgid "... ask me w_hat to do" msgstr "... opýtať _sa" #: ui-settings.glade:258 msgid "Us_e traditional window header" msgstr "Použiť tradičné záhlavi_e okna" #: ui-settings.glade:278 msgid "Display desktop notifications for..." msgstr "Zobraziť notifikácie pre..." #: ui-settings.glade:289 msgid "... file updates" msgstr "... zmenené súbory" #: ui-settings.glade:304 msgid "... errors" msgstr "... chyby" #: ui-settings.glade:319 msgid "... synchronization completion" msgstr "... dokončenie synchronizácie" #: ui-settings.glade:334 msgid "Start Syncthing-GTK when I login to my desktop" msgstr "Automaticky spustiť Syncthing-GTK pri prihlásení" #: ui-settings.glade:350 msgid "Minimize to _tray on start" msgstr "Pri spustení minimalizovať do oznamovacej oblas_ti" #: ui-settings.glade:366 msgid "Use _icons in menu" msgstr "Zobrazovať _ikony v menu" #: ui-settings.glade:383 msgid "Display paths in directories panel" msgstr "Zobraziť cesty v zozname adresárov" #: ui-settings.glade:399 msgid "Force _dark theme" msgstr "Vynútiť t_mavú tému" #: ui-settings.glade:540 msgid "Tray icon style" msgstr "Štýl notifikačnej ikony" #: ui-settings.glade:553 msgid "Language" msgstr "Jazyk" #: ui-settings.glade:474 msgid "_Interface" msgstr "_Rozhranie" #: ui-settings.glade:492 msgid "Integrate Syncthing with filemanagers" msgstr "Integrovať Syncthing so správcami súborov" #: ui-settings.glade:507 msgid "Nemo (Cinamon Desktop)" msgstr "Nemo (Cinamon Desktop)" #: ui-settings.glade:524 msgid "Nautilus (Ubuntu/GNOME)" msgstr "Nautilus (Ubuntu/GNOME)" #: ui-settings.glade:540 msgid "Caja (MATE Desktop)" msgstr "Caja (MATE Desktop)" #: ui-settings.glade:579 msgid "" "Note: You may need to restart your filemanager after toggling " "integration." msgstr "Poznámka: Po zmene týchto nastavení môže byť nutné reštartovať Vášho správcu súborov." #: ui-settings.glade:598 msgid "_Integration" msgstr "_Integrácia" #: ui-settings.glade:627 msgid "Keep Syncthing binary up-to-date" msgstr "Udržovať Syncthing aktuálne" #: ui-settings.glade:647 msgid "" "If enabled, Syncthing-GTK will automatically check for new daemon releases " "and replace binary with latest version." msgstr "Syncthing-GTK bude automaticky kontrolovať novú verziu démona a aktualizovať ho s poslednou verziou." #: ui-settings.glade:662 msgid "Daemon process priority" msgstr "Priorita procesu démona" #: ui-settings.glade:698 msgid "" "Priority will be used only if \"start daemon in background\" option " "is checked on \"Interface\" page." msgstr "Priorita bude použitá iba ak bude povolená možnosť spustiť démona na pozadí\"." #: ui-settings.glade:713 msgid "Maximum number of CPU cores" msgstr "Maximálny počet využitých jadier procesora" #: ui-settings.glade:731 msgid "" "Sets the maximum number of CPU cores for daemon to use. This value will be " "used only if \"start daemon in background\" option is checked on " "\"Interface\" page." msgstr "Nastavuje maximálny počet jadier procesora, ktoré bude démon používať. Nastavenie bude použité iba ak bude povolená možnosť spustiť démona na pozadí\"." #: ui-settings.glade:786 msgid "Daemon" msgstr "Démon" #: ui-settings.glade:808 msgid "" "This binary will be started when syncthing daemon is not running and " "\"start daemon in background\" option is checked on " "\"Interface\" page." msgstr "Tento súbor bude spustený, ak pri spustení nebude bežať démon Syncthing a možnosť spustiť démona na pozadí\" bude povolená." #: ui-settings.glade:838 msgid "Syncthing binary location" msgstr "Umiestnenie démona Syncthing" #: ui-settings.glade:867 msgid "Daemon arguments and variables" msgstr "Argumenty démona a premenné prostredia" #: ui-settings.glade:897 msgid "" "Space-separated list of arguments and environment variables passed when starting above binary\n" "\n" "Use VARIABLE=\"value\" to set variable and -argument=\"value\" (with dash) for argument.\n" "\n" "If you need to pass commandline to different command (such as logger or ionice), separate prefixed arguments with exclamation mark \"!\"\n" "\n" "Example:\n" " STTRACE=\"all\" logger -t /var/log/syncthing.log ! -logflags=10" msgstr "Seznam parametrů a proměnných prostředí, které se použijí při spouštění démona. Oddělujte mezerou.\n\nZadejte PREMENNA=\"hodnota\" pro definování proměnné a -parametr=\"hodnota\" pro zadání parametru.\n\nPokud potřebujete celý příkazový řádek prodat jinému příkazu (například do logger nebo ionice), oddělte parametry příkazu a parametry démona vykřičníkem.\n\nPříklad:\nSTTRACE=\"all\" logger -t /var/log/syncthing.log ! -logflags=10" #: ui-settings.glade:921 msgid "" "Warning: Changing settings on this page may prevent you from using " "Syncthing-GTK" msgstr "Varovanie: Zmena nastavení na tejto stránke môže znefunkčniť Syncthing-GTK" syncthing-gtk-0.9.4.4/locale/vi/000077500000000000000000000000001352162771300163435ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/locale/vi/LC_MESSAGES/000077500000000000000000000000001352162771300201305ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/locale/vi/LC_MESSAGES/syncthing-gtk.mo000066400000000000000000000761571352162771300232760ustar00rootroot00000000000000. `>a %)1H] tQ Q^ q} :,!+]MT-> \i g!3Ut  '!$7D\      4 $K p " 5 D  ! &!4!E!X!v!!!!!!! " %"e2"""""" "-",##P#)o##&#)#($&+$R$!p$$$R$%K %gV%%'( )( 3(>(P( j( w(r((P)a*=t**9+,$,4,(G,9p,%, ,D,, - M- n-x--- --- -- - .&. F.P.h........0.. j/v//O/V/ :0F02U030K051>1=1o 2|2222222 23 3v*33-3,34444 4A5 E5Q51Z5"55k5 "6.,6 [6i6666,6677 7%7?7P7j7(&8O8.n8;8889+090\9799 99V:6Z::3:3:m;);;pB<2<-<==#== = = > >>(> /> :>F>e>x>>>%>> >*>6 ?4C? x??{?!@i&@@@ @ @@ @ @@ @@A A #A .A:AIA PAZA`AfAnAwA A AAA A AA(A BB9B TBbBuBLD#`DDDDDDDDDEEE"8E[E {EE4E<EF /FqPFFFF GG),G*VGNG;G/ HRER(^R>R0R'RS5>StSSrS TnTTz-UW"dX XXX%XXXYYoZ~7[L[\\]]]"^F)^7p^^w^77_7o__&_"_`!`5` <`J`b`{`&`;` `aa 2a?aFaVa\ala{aCaab!bbcby/c c c@c;dj=dBddJeeff!f)fg(g:g Tg bg%ngg&'h2Nh>hhiiijNjbjtj@j+j jjk;kk*k $l20l cl)pl ll l l%lm$,mQm9?n3yn>nNn);o(eoo'o3oEp!Fp hpvphp?p9q>Uq9qqF]rrds-s>"tat$|Q|KH!+*xRu69fEU-T"$<Y G\4#J. n_lS ;:}@BZ8-* X$ Cw2c,M?I0],Lv{A%&3d/Fq.>Oa(zi! &D1`P#"espN 5h|kr  '^W'b %[=+)7~V()yoj mg tQ%(device)s wants to share folder "%(folder)s". Add new folder?%(online)s/%(total)s online%s day%s days%s days ago%s kB/s%s minutes ago%s minutes from now%s seconds ago%s seconds from now%ss(watch)... _ask me what to do... _wait for daemon... ask me w_hat to do... errors... file updates... leave daemon _running... start daemon in _background... synchronization completion... terminate _daemonNote: You may need to restart your filemanager after toggling integration.Above NormalAdd Shared _FolderAdd _DeviceAddressAll DataAll devices offlineAllow Anonymous Usage Reporting?Alternatively, Syncthing-GTK can download Syncthing binaryAlways do same; Don't show this window againAlways start daemon automaticallyAn external command handles the versioning. It has to remove the file from the synced folder.Announce ServerAny devices configured on an introducer device will be added to this device as well.Attempting to download recent, please wait...Auto_update downloaded binaryBinary path:Browse for Syncthing binaryBrowse...CPU UtilizationCaja (MATE Desktop)Can't invoke the daemonCannot authorize with daemon. Please, use WebUI to generate API key or disable password authentication.Cannot download Syncthing daemon.Checking for available port...Clean out _afterCluster out of syncCommandCompressionConnectedConnected to Syncthing daemonConnecting to Syncthing daemon at %s...Connecting to Syncthing daemon...Connecting to daemon...Connection to Syncthing daemon lost.Connection to daemon failed. Check your configuration and try again.Daemon OutputDaemon _SettingsDaemon process priorityDevice IdentificationDevice _IDDevice _NameDisconnectedDisplay Syncthing-Inotify OutputDisplay _Daemon OutputDisplay desktop notifications for...Display error logDisplay paths in directories panelDo you really want remove device '%s' from Syncthing?Do you really want to permanently stop synchronizing directory '%s'?Done.Download RateDownload failed.Download finished.Downloaded file is corrupted.Downloading Syncthing %sDownloading Syncthing daemon.Downloading...Edit _Ignore PatternsEnable Local _DiscoveryEnable _Anonymous Usage ReportingEnable _Global DiscoveryEnable _UPnPEnter comma separated "ip:port" addresses or "dynamic" to perform automatic discovery of the address.ErrorError message:Exiting.ExternalExtracting update...Failed to create temporaly file.Failed to determine latest Syncthing version.Failed to download Syncthing daemon package.Failed to download upgrade: %sFailed to find unused port for listening.Failed to generate keysFailed to load Syncthing configurationFailed to load configuration from daemon.Failed to modify Syncthing configurationFailed to save Syncthing configurationFailed to save configuration.Failed to start Syncthing daemon.File location:File location: File permission bits are ignored when looking for changes. Use on FAT filesystems.FilesFiles are moved to .stversions folder when replaced or deleted by SyncthingFiles are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing.Files are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing. Versions are automatically deleted if they are older than the maximum age or exceed the number of files allowed in an interval. The following intervals are used: for the first hour a version is kept every 30 seconds, for the first day a version is kept every hour, for the first 30 days a version is kept every day, until the maximum age a version is kept every week.Files are protected from changes made on other devices, but changes made on this device will be sent to the rest of the cluster.First run wizardFolder IDFolder _IDForce _dark themeGlobal Discovery _ServersGlobal StateHide WindowIf enabled, Syncthing-GTK will automatically check for new daemon releases and replace binary with latest version.If enabled, changed, created and delete files are synchronized immediately, as long as Syncthing-GTK is running. Note: Using this along with short Rescan Interval (<300s) may consume a lot of resources.If the reported data set is changed you will be prompted with this dialog again.If you already had Syncthing daemon configured, please, exit this wizard and check your %s folderIf you have Syncthing installed, please, set path to %s belowIf you have Syncthing installed, please, set path to %s below or click on Download button to download latest Syncthing package.If you prefer to be able to manage Syncthing remotely, over the internet or on your local network, select listen on all interfaces and set username and password to protect Syncthing from unauthorized access.Ignore P_ermissionsIgnore PatternsIgnore PermissionsInitial configuration should be created.Install %(package)s package to enable %(feature)s supportIntegrate Syncthing with filemanagersIntroducerIt is used to track common platforms, folder sizes and app versions.It looks like you never have used Syncthing.Keep Syncthing binary up-to-dateLast SeenListen on _all interfacesListen on _localhostLocal Discovery _PortLocal StateLowLowestMa_ximum AgeMaximum number of CPU coresMetadata OnlyMinimize to _tray on startMonitor filesystem for _changesMore infoNautilus (Ubuntu/GNOME)Nemo (Cinamon Desktop)NeverNoNormalOffOfflineOnlineOpen _Web InterfaceOpen browser with _WebUI when daemon is startingOtherwise, select listen on localhost, so only users and programs on this computer will be able to interact with Syncthing.Out Of SyncOverride Remote ChangesPathPath to the folder on the local computer. Will be created if it does not exist.Path where versions should be stored (leave empty for the default .stversions folder).Please waitPlease wait...Please, check error log and fill bug report on %s.Please, check your firewall settings and try again.Please, check your installation or set new path to Syncthing daemon binary.Please, install pyinotify package to use this featurePlease, use package manager to install the Syncthing package or %(download_link)s from Syncthing page and save it to your %(target)s directory.Please, use package manager to install the Syncthing package.Priority will be used only if "start daemon in background" option is checked on "Interface" page.RAM UtilizationRescan IntervalRescan _IntervalRestarting daemon...Resume Sync_thingS_top SyncthingSaving settings...Saving...ScanningSearching for Syncthing daemon.See Syncthing documentation for list of supported patternsSelect Folder for new FolderSelect the devices to share this folder with.Select the folders to share with this deviceSets the maximum number of CPU cores for daemon to use. This value will be used only if "start daemon in background" option is checked on "Interface" page.Sh_utdown DaemonShare With _DevicesShare _FoldersShared WithShort identifier for the folder. Must be the same on all devices.Show WindowShow _IDShown instead of Device ID in the cluster status.Shutdown Syncthing daemon as well?SimpleSorry, connecting to HTTPS is not supported on this platform. Please, use WebUI to disable HTTPS try again.StaggeredStart Syncthing-GTK when I login to my desktopStart it now?Starting Syncthing daemonStoppedSync Protocol Listen AddressesSynchronizationSynchronization of folder '%s' is completed.Synchronizing %s foldersSynchronizing '%s'SyncingSyncthingSyncthing Daemon SettingsSyncthing binarySyncthing binary locationSyncthing can be managed remotely using WebUI and even if you are going to use Syncthing-GTK, WebUI needs to be enabled, as Syncthing-GTK uses it to communicate with the Syncthing daemon.Syncthing daemon binary cannot be found.Syncthing daemon binary found.Syncthing daemon doesn't appear to be running.Syncthing daemon failed to generate RSA key or certificate.Syncthing daemon is too old.Syncthing daemon not found.Syncthing has been shut down.Syncthing has been successfully configured.Syncthing is generating RSA key and certificate.Syncthing is probably restarting or has been shut down.Syncthing is restarting.Syncthing-GTKSyncthing-GTK SettingsSyncthing-GTK needs Syncthing daemon %(min)s or newer, but only %(actual)s were found.Syncthing-GTK started and running in notification areaSyncthing-Inotify OutputSyncthing-Inotify is unavailable or failed to startThe aggregated statistics are publicly available atThe configuration has been saved but not activated. Syncthing must restart to activate the new configuration.The encrypted usage report is sent daily.The entered device ID does not look valid. It should be a 52 character string consisting of letters and numbers, with spaces and dashes being optional.The first command line parameter is the folder path and the second parameter is the relative path in the folder.The number of days to keep files in the trash can.The number of old versions to keep, per file.This binary will be started when syncthing daemon is not running and "start daemon in background" option is checked on "Interface" page.This may take a while...This platform (%s) is not supportedTrashcanTry again.UI SettingsUI _SettingsUnlimitedUnsharedUnusedUp to DateUpload RateUs_e traditional window headerUse _icons in menuVersionVersion:Versions _PathWaiting for Syncthing daemon at %s...WebUI Listen AddressesWebUI setupWelcome to Syncthing-GTK first run wizard!When exiting after daemon was started in background...When starting and Syncthing daemon is not running...XYZ-123-ABCYesYou can configure more details later, in UI Settings and Daemon Settings menus in main window of application.Your syncthing daemon is too old.Your syncthing daemon is too old. Please, upgrade syncthing package at least to version %s and try again._About_Add_Addresses_Advanced_Browse_Browse..._Compression_Download Syncthing binary_Download..._Ignore_Incoming Rate Limit_Integration_Interface_Introducer_Keep Versions_Other_Password_Path_Quit_Rescan_Restart_Restart Daemon_Unlimited_Usernamedisableddownload latest binaryin %s daysin a momentjust nowlast resort and generally not suggested.never deleteofflineto %s and keep it up-to-date, but this option is meant as~%s hours ago~%s hours from nowProject-Id-Version: syncthing-gtk Report-Msgid-Bugs-To: POT-Creation-Date: 2016-04-20 11:27+0200 PO-Revision-Date: 2017-09-22 18:48+0000 Last-Translator: kozec Language-Team: Vietnamese (http://www.transifex.com/syncthing-gtk/syncthing-gtk/language/vi/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: vi Plural-Forms: nplurals=1; plural=0; %(device)s muốn chia sẻ thư mục "%(folder)s". Thêm thư mục mới?%(online)s/%(total)s trực tuyến%s ngày%s ngày%s ngày trước%s kB/s%s phút trước%s phút kể từ lúc này%s giây trước%s giây kể từ lúc này%ss(xem)... _hỏi tôi phải làm gì... _đợi chương trình nền... hỏi tôi p-hải làm gì... lỗi... cập nhật tập tin... để chương trình nền _tiếp tục chạy... khởi động chương trình trong _chế độ nền ... hoàn tất đồng bộ... tắt _chương trình nềnGhi chú: Có thể bạn sẽ cần khởi động lại trình quản lý tập tin sau khi tích hợp.Hơn mức b.thườngThêm thư mục _đã ch.sẻThêm _thiết bịĐịa chỉT.cả dữ liệuTất cả th.bị đều ngoại tuyếnCho phép báo cáo sử dụng ẩn danh?Hoặc là Syncthing-GTK có thể tải về chương trình chạy SyncthingLuôn làm như vậy; Đừng hiện cửa sổ này nữaLuôn tự khởi động chương trình nềnMột lệnh ngoại vi chịu trách nhiệm phiên bản hoá. Nó phải loại bỏ tập tin ra khỏi thư mục đã đồng bộ.Máy chủ th.báoBất kỳ thiết bị nào liên kết với thiết bị giới thiệu cũng sẽ được thêm vào.Đang thử tải về tập tin gần đây, xin chờ...Tự động_cập nhật ch.trình chạy đã tải xuốngĐ.dẫn ch.trình chạy:Tìm tập tin chạy SyncthingDuyệt tìm...Mức s.dụng CPUCaja (MATE Desktop)Không thể gọi ch.trình nềnKhông thể xác minh bằng chương trình nền. Xin dùng WebUI để tạo khoá API hoặc tắt xác minh mật khẩu.Không thể tải chương trình nền Syncthing.Đang kiểm tra cổng còn trống...Xoá sạch _sauCụm mất đồng bộLệnhNénĐã kết nốiĐã kết nối đến ch.trình nền SyncthingĐang k.nối đến ch.trình nền Syncthing được %s...Đang kết nối đến ch.trình nền Syncthing...Đang k.nối với ch.trình nền...Mất kết nối đến ch.trình nền Syncthing.Kết nối đến chương trình nền thất bại. Hãy kiểm tra cấu hình và thử lại.Đầu ra ch.trình nềnCài đặt _ch.trình nềnĐộ ưu tiên của q.trình chạy nềnDanh tính thiết bịID _thiết bịTên _thiết bịĐã ngắt k.nốiHiển thị đầu ra Syncthing-InotifyHiển thị _đầu ra chương trình nềnHiển thị th.báo trên desktop cho...Hiển thị nhật ký lỗiHiện đ.dẫn trong danh sách th.mụcCó chắc là bạn muốn xoá thiết bị '%s' khỏi Syncthing?Có chắc là bạn muốn ngừng vĩnh viễn đồng bộ thư mục '%s'?Xong.T.độ tải xuốngTải xuống thất bại.Tải xuống hoàn tất.Tập tin đã tải xuống bị lỗi.Đang tải Syncthing %sĐang tải chương trình nền Syncthing.Đang tải xuống...Chỉnh sửa _các q.luật bỏ quaBật dò tìm _cục bộBật _báo cáo sử dụng ẩn danhBật _dò tìm toàn cầuBật _UPnPNhập các địa chỉ ngăn cách bởi dấu phẩy "ip:port" hoặc "dynamic" để tiến hành dò tìm địa chỉ tự động.LỗiThông điệp báo lỗi:Đang thoát.Kiểu ngoại viĐang giải nén cập nhật...Tạo tập tin tạm thất bại.Thất bại khi x.định ph.bản Syncthing mới nhất.Tải gói chương trình nền Syncthing thất bại.Thất bại khi tải bản nâng cấp: %sKhông tìm thấy cổng nào còn trống để lắng nghe.Tạo khoá thất bạiKhông thể tải cấu hình SyncthingThất bại khi tải cấu hình từ chương trình nền.Không thể chỉnh sửa cấu hình SyncthingKhông thể lưu cấu hình SyncthingLưu cấu hình thất bại.Thất bại khi kh.chạy ch.trình nền Syncthing.Vị trí tập tin:Vị trí tập tin:Các ph.tử g.phép tập tin sẽ được bỏ qua khi t.kiếm th.đổi. Dùng trên h.thống tập tin FAT.Tập tinCác tập tin sẽ được chuyển tới th.mục .stversions khi bị th.thế hoặc xoá bởi SyncthingCác tập tin sẽ được chuyển tới các ph.bản được đ.dấu ngày tháng trong th.mục .stversions khi bị th.thế hoặc xoá bởi Syncthing.Các tập tin sẽ được chuyển tới các ph.bản được đ.dấu ngày tháng trong th.mục .stversions khi bị th.thế hoặc xoá bởi Syncthing. Các ph.bản sẽ tự động được xoá nếu chúng cũ hơn th.hạn tối đa hoặc vượt quá số tập tin cho phép trong một khoảng th.gian. Các khoảng th.gian sau đây được s.dụng: một phiên bản, trong giờ đầu tiên, được giữ lại mỗi 30 giây, trong ngày đầu tiên là mỗi giờ, trong 30 ngày đầu tiên là mỗi ngày, cho đến khi th.hạn tối đa mỗi ph.bản được giữ lại là mỗi tuần.Các tập tin sẽ được b.vệ khỏi những th.đổi trên các th.bị khác, nhưng những th.đổi trên th.bị này sẽ được chuyển tới các máy cụm còn lại.Hỗ trợ lần chạy ban đầuID thư mụcID _thư mụcBắt dùng _phông nền tốiCác máy chủ dò tìm _toàn cầuTr.thái toàn cầuẨn cửa sổNếu bật, Syncthing-GTK sẽ tự động k.tra bản phát hành ch.trình nền mới và thay thế ch.trình chạy với ph.bản mới nhất.Khi bật, các tập tin bị th.đổi, tạo mới và xoá sẽ được đồng bộ ngay lập tức, miễn là Syncthing-GTK còn h.động. Ghi chú: Dùng chế độ này với khoảng th.gian quét lại ngắn (<300 giây) có thể tiêu thụ khá nhiều t.nguyên máy.Nếu bộ dữ liệu báo cáo có gì th.đổi, bạn sẽ được nhắc nhở thông qua h.thoại này.Nếu bạn đã chỉnh cấu hình ch.trình nền Syncthing thì hãy thoát mục hỗ trợ này và k.tra thư mục %s.Nếu đã cài đặt Syncthing, hãy đưa đ.dẫn đến %s bên dướiNếu đã cài đặt Syncthing, hãy đưa đ.dẫn đến %s bên dưới hoặc nhấp vào nút Tải xuống để tải gói Syncthing mới nhất.Nếu bạn muốn quản lý Syncthing từ xa thông qua mạng toàn cầu hoặc cục bộ, hãy chọn lắng nghe trên tất cả giao diện đồng thời đặt tên người dùng và mật khẩu để bảo vệ Syncthing khỏi bị truy cập trái phép.Bỏ qua c-ác giấy phépBỏ qua các q.luậtBỏ qua các g.phépĐã tạo cấu hình ban đầu.Cài đặt gói %(package)s để kích hoạt hỗ trợ %(feature)sTích hợp Syncthing với các trình q.lý tập tinThiết bị g.thiệuNó được dùng để th.thập s.liệu về các HĐH phổ biến, kích cỡ th.mục và ph.bản ứng dụng.Có vẻ như bạn chưa từng sử dụng Syncthing.Giữ cho ch.trình chạy Syncthing luôn cập nhậtThấy lần cuốiLắng nghe trên _tất cả g.diệnLắng nghe trên _máy cục bộCổng _dò tìm cục bộTr.thái cục bộThấpThấp nhấtTh_ời hạn tối đaSố nhân CPU tối đaChỉ siêu dữ liệuThu nhỏ vào _khay khi khởi chạyKiểm soát các thay đổi của _hệ thống tập tinTh.tin thêmNautilus (Ubuntu/GNOME)Nemo (Cinamon Desktop)Chưa từngKhôngBình thườngTắtNgoại tuyếnTrực tuyếnMở _giao diện webMở trình duyệt với _WebUI khi ch.trình nền khởi độngNếu không, bạn hãy chọn lắng nghe trên máy cục bộ để chỉ những người dùng và ch.trình trên máy này có thể tương tác với SyncthingMất đồng bộGhi đè các thay đổi từ xaĐường dẫnĐường dẫn đến thư mục trên máy cục bộ. Sẽ tạo mới nếu chưa hiện hữu.Đường dẫn nơi các ph.bản được lưu trữ (th.mục mặc định sẽ là .stversions nếu để trống).Xin chờXin chờ...Hãy k.tra nhật ký lỗi và điền vào báo cáo trên %s.Hãy kiểm tra cài đặt tường lửa và thử lại.Xin k.tra lại cài đặt hoặc tạo đ.dẫn mới đến tập tin chạy ch.trình nền Syncthing.Hãy cài đặt gói pyinotify để sử dụng tính năng nàyHãy sử dụng trình quản lý gói để cài đặt gói Syncthing hoặc %(download_link)s từ trang chủ Syncthing và lưu nó vào thư mục %(target)s.Hãy sử dụng trình quản lý gói để cài đặt gói Syncthing. Độ ưu tiên sẽ chỉ được dùng nếu như tuỳ chọn "khởi động chương trình ở chế độ nền" được đánh dấu trên trang "Giao diện".Mức s.dụng RAMKhoảng th.gian quét lạiKhoảng thời gian _quét lạiĐang kh.động lại ch.trình nền...Tiếp tục Sync_thingD_ừng SyncthingĐang lưu cài đặt...Đang lưu...Đang quétĐang tìm ch.trình nền Syncthing.Xem Tài liệu Syncthing để biết danh sách các quy luật được hỗ trợ.Chọn thư mục cho thư mục mớiChọn các th.bị để chia sẻ th.mục này.Chọn các thư mục để chia sẻ với thiết bị nàyĐặt số nhân CPU tối đa cho ch.trình nền s.dụng. G.trị này sẽ chỉ được dùng nếu như t.chọn "khởi động chương trình ở chế độ nền" được đánh dấu trên trang "Giao diện".T_ắt chương trình nềnChia sẻ với _các th.bịChia sẻ _thư mụcĐã ch.sẻ vớiTên tắt cho thư mục. Phải trùng khớp trên tất cả thiết bị.Hiện cửa sổHiển thị _IDHiển thị thay cho ID thiết bị trong trạng thái cụm.Tắt cả chương trình nền Syncthing?Đơn giảnXin lỗi, việc kết nối đến HTTPS không được hỗ trợ trên hệ điều hành này. Hãy dùng WebUI để tắt HTTPS và thử lại.Theo thời gianKhởi chạy Syncthing-GTK khi tôi đ.nhập vào desktopKhởi chạy ngay?Đang kh.động ch.trình nền SyncthingĐã ngưngĐồng bộ các đ.chỉ lắng nghe giao thứcĐồng bộHoàn tất đồng bộ thư mục '%s'.Đang đồng bộ %s thư mụcĐang đồng bộ '%s'Đang đ.bộSyncthingCài đặt ch.trình nền SyncthingTập tin chạy SyncthingVị trí ch.trình chạy SyncthingSyncthing có thể được kiểm soát từ xa bằng WebUI và ngay cả khi bạn sử dụng Syncthing-GTK, WebUI cần được kích hoạt vì Syncthing-GTK sẽ dùng nó để liên lạc với chương trình nền Syncthing.Không thấy tập tin chạy ch.trình nền Syncthing.Tìm thấy ch.trình chạy nền của Syncthing.Có vẻ như ch.trình nền Syncthing không hoạt động.Ch.trình nền Syncthing thất bại khi tạo khoá và chứng nhận RSA.Chương trình nền Syncthing quá cũ.Không thấy ch.trình nền Syncthing.Đã tắt Syncthing.Đã hoàn tất cấu hình Syncthing.Syncthing đang tạo khoá và chứng nhận RSA.Có lẽ Syncthing đang kh.động lại hoặc nó đã bị tắt.Syncthing đang kh.động lại.Syncthing-GTKCài đặt Syncthing-GTKSyncthing-GTK cần ch.trình nền Syncthing %(min)s hoặc mới hơn, nhưng chỉ thấy %(actual)s.Syncthing-GTK đã k.động và chạy trong khu vực th.báoĐầu ra Syncthing-InotifyKhông có Syncthing-Inotify hoặc nó kh.chạy thất bạiThống kê tổng hợp được đăng công khai trênCấu hình đã được lưu nhưng chưa được kích hoạt. Syncthing phải khởi động lại để kích hoạt cấu hình mới.Báo cáo s.dụng đã mã hoá sẽ được gửi đi hằng ngày.ID thiết bị đã nhập không hợp lệ. Nó phải là một chuỗi từ 52 ký tự, bao gồm chữ cái và các con số, với khoảng trắng và gạch ngang là tuỳ chọn.Tham số dòng lệnh đầu tiên là đường dẫn thư mục và tham số thứ hai là đường dẫn tương đối trong thư mục.Số ngày giữ tập tin trong thùng rác.Số phiên bản cũ cần giữ lại với mỗi tập tin.Ch.trình chạy này sẽ được k.hoạt khi ch.trình nền Syncthing không chạy và t.chọn "khởi chạy chương trình ở chế độ nền" được đánh dấu trên trang "Giao diện".Tiến trình có thể hơi lâu...HĐH này (%s) không được hỗ trợKiểu thùng rácThử lại.Cài đặt UICài đặt _UIKhông giới hạnChưa ch.sẻChưa s.dụngĐã cập nhậtT.độ tải lênS_ử dụng đầu đề cửa sổ truyền thốngSử dụng _các b.tượng trong trình đơnPhiên bảnPhiên bản:Đ.dẫn đến _các ph.bảnĐang chờ ch.trình nền Syncthing được %s...Các đ.chỉ lắng nghe WebUIThiết lập WebUIChào mừng đến với h.trợ lần chạy b.đầu của Syncthing-GTK!Khi thoát sau khi chương trình được khởi động ở chế độ nền...Khi khởi động và chương trình nền Syncthing không chạy...XYZ-123-ABCCóSau này bạn có thể cấu hình chi tiết hơn trong các trình đơn Cài đặt UICài đặt chương trình nền trên cửa sổ chính của ứng dụng.Chương trình nền Syncthing này quá cũ.Chương trình nền Syncthing này quá cũ. Ít nhất hãy nâng cấp gói Syncthing lên phiên bản %s và thử lại._Thông tin về_Thêm_Các địa chỉ_Nâng cao_Tìm kiếm_Tìm kiếm..._Nén_Tải chương trình chạy Syncthing_Tải xuống..._Bỏ qua_Giới hạn t.độ đầu vào_Tích hợp_Giao diện_Thiết bị giới thiệu_Giữ lại các ph.bản_Khác_Mật khẩu_Đường dẫn_Thoát_Quét lại_Khởi động lại_Kh.động lại ch.trình nền_Không giới hạn_Tên người dùngđã tắttải tập tin chạy mới nhấttrong %s ngàytrong chốc látchỉ mới đâyb.pháp bất đắc dĩ và thường không nên dùng.không b.giờ xoángoại tuyếnđến %s và cập nhật nó, nhưng tuỳ chọn này chỉ là~%s giờ trước~%s giờ kể từ lúc nàysyncthing-gtk-0.9.4.4/locale/vi/LC_MESSAGES/syncthing-gtk.po000066400000000000000000001323331352162771300232660ustar00rootroot00000000000000# Syncthing-GTK # Copyright (C) 2014-2015 Kozec and contributors # This file is distributed under the same license as the Syncthing-GTK package. # # Translators: # dd721411 , 2015-2016 # kozec , 2016 msgid "" msgstr "" "Project-Id-Version: syncthing-gtk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-04-20 11:27+0200\n" "PO-Revision-Date: 2017-09-22 18:48+0000\n" "Last-Translator: kozec \n" "Language-Team: Vietnamese (http://www.transifex.com/syncthing-gtk/syncthing-gtk/language/vi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: vi\n" "Plural-Forms: nplurals=1; plural=0;\n" #: syncthing_gtk/app.py:194 msgid "Syncthing-GTK started and running in notification area" msgstr "Syncthing-GTK đã k.động và chạy trong khu vực th.báo" #: syncthing_gtk/app.py:288 #, python-format msgid "%s kB/s" msgstr "%s kB/s" #: syncthing_gtk/app.py:302 syncthing_gtk/notifications.py:77 #: syncthing_gtk/wizard.py:53 msgid "Syncthing-GTK" msgstr "Syncthing-GTK" #: syncthing_gtk/app.py:363 syncthing_gtk/app.py:364 syncthing_gtk/app.py:942 msgid "Syncing" msgstr "Đang đ.bộ" #: syncthing_gtk/app.py:366 syncthing_gtk/app.py:367 msgid "Scanning" msgstr "Đang quét" #: syncthing_gtk/app.py:390 syncthing_gtk/app.py:652 msgid "Starting Syncthing daemon" msgstr "Đang kh.động ch.trình nền Syncthing" #: syncthing_gtk/app.py:424 msgid "Allow Anonymous Usage Reporting?" msgstr "Cho phép báo cáo sử dụng ẩn danh?" #: syncthing_gtk/app.py:426 msgid "The encrypted usage report is sent daily." msgstr "Báo cáo s.dụng đã mã hoá sẽ được gửi đi hằng ngày." #: syncthing_gtk/app.py:427 msgid "It is used to track common platforms, folder sizes and app versions." msgstr "Nó được dùng để th.thập s.liệu về các HĐH phổ biến, kích cỡ th.mục và ph.bản ứng dụng." #: syncthing_gtk/app.py:428 msgid "" "If the reported data set is changed you will be prompted with this dialog " "again." msgstr "Nếu bộ dữ liệu báo cáo có gì th.đổi, bạn sẽ được nhắc nhở thông qua h.thoại này." #: syncthing_gtk/app.py:430 msgid "The aggregated statistics are publicly available at" msgstr "Thống kê tổng hợp được đăng công khai trên" #: syncthing_gtk/app.py:486 msgid "Extracting update..." msgstr "Đang giải nén cập nhật..." #: syncthing_gtk/app.py:491 msgid "Restarting daemon..." msgstr "Đang kh.động lại ch.trình nền..." #: syncthing_gtk/app.py:507 #, python-format msgid "Failed to download upgrade: %s" msgstr "Thất bại khi tải bản nâng cấp: %s" #: syncthing_gtk/app.py:525 #, python-format msgid "Downloading Syncthing %s" msgstr "Đang tải Syncthing %s" #: syncthing_gtk/app.py:604 msgid "Connected to Syncthing daemon" msgstr "Đã kết nối đến ch.trình nền Syncthing" #: syncthing_gtk/app.py:614 msgid "Connection to Syncthing daemon lost." msgstr "Mất kết nối đến ch.trình nền Syncthing." #: syncthing_gtk/app.py:615 msgid "Syncthing is probably restarting or has been shut down." msgstr "Có lẽ Syncthing đang kh.động lại hoặc nó đã bị tắt." #: syncthing_gtk/app.py:617 msgid "Syncthing has been shut down." msgstr "Đã tắt Syncthing." #: syncthing_gtk/app.py:621 syncthing_gtk/app.py:1499 msgid "Syncthing is restarting." msgstr "Syncthing đang kh.động lại." #: syncthing_gtk/app.py:621 syncthing_gtk/app.py:1499 msgid "Please wait" msgstr "Xin chờ" #: syncthing_gtk/app.py:644 #, python-format msgid "Connecting to Syncthing daemon at %s..." msgstr "Đang k.nối đến ch.trình nền Syncthing được %s..." #: syncthing_gtk/app.py:649 #, python-format msgid "Waiting for Syncthing daemon at %s..." msgstr "Đang chờ ch.trình nền Syncthing được %s..." #: syncthing_gtk/app.py:664 msgid "Your syncthing daemon is too old." msgstr "Chương trình nền Syncthing này quá cũ." #: syncthing_gtk/app.py:664 msgid "Attempting to download recent, please wait..." msgstr "Đang thử tải về tập tin gần đây, xin chờ..." #: syncthing_gtk/app.py:670 msgid "" "Cannot authorize with daemon. Please, use WebUI to generate API key or " "disable password authentication." msgstr "Không thể xác minh bằng chương trình nền. Xin dùng WebUI để tạo khoá API hoặc tắt xác minh mật khẩu." #: syncthing_gtk/app.py:672 #, python-format msgid "" "Your syncthing daemon is too old.\n" "Please, upgrade syncthing package at least to version %s and try again." msgstr "Chương trình nền Syncthing này quá cũ.\nÍt nhất hãy nâng cấp gói Syncthing lên phiên bản %s và thử lại." #: syncthing_gtk/app.py:674 msgid "" "Sorry, connecting to HTTPS is not supported on this platform.\n" "Please, use WebUI to disable HTTPS try again." msgstr "Xin lỗi, việc kết nối đến HTTPS không được hỗ trợ trên hệ điều hành này.\nHãy dùng WebUI để tắt HTTPS và thử lại." #: syncthing_gtk/app.py:677 msgid "Connection to daemon failed. Check your configuration and try again." msgstr "Kết nối đến chương trình nền thất bại. Hãy kiểm tra cấu hình và thử lại." #: syncthing_gtk/app.py:678 syncthing_gtk/app.py:1992 #: syncthing_gtk/editordialog.py:314 msgid "Error message:" msgstr "Thông điệp báo lỗi:" #: syncthing_gtk/app.py:689 msgid "More info" msgstr "Th.tin thêm" #: syncthing_gtk/app.py:715 msgid "" "The configuration has been saved but not activated.\n" "Syncthing must restart to activate the new configuration." msgstr "Cấu hình đã được lưu nhưng chưa được kích hoạt.\nSyncthing phải khởi động lại để kích hoạt cấu hình mới." #: syncthing_gtk/app.py:717 msgid "_Restart" msgstr "_Khởi động lại" #: syncthing_gtk/app.py:784 #, python-format msgid "%(device)s wants to share folder \"%(folder)s\". Add new folder?" msgstr "%(device)s muốn chia sẻ thư mục \"%(folder)s\". Thêm thư mục mới?" #: syncthing_gtk/app.py:791 syncthing_gtk/app.py:813 msgid "_Add" msgstr "_Thêm" #: syncthing_gtk/app.py:806 #, python-format msgid "" "Device \"%(name)s\" (%(device)s) at IP \"%(ip)s\" wants to " "connect. Add new device?" msgstr "" #: syncthing_gtk/app.py:814 msgid "_Ignore" msgstr "_Bỏ qua" #: syncthing_gtk/app.py:832 msgid "RAM Utilization" msgstr "Mức s.dụng RAM" #: syncthing_gtk/app.py:833 msgid "CPU Utilization" msgstr "Mức s.dụng CPU" #: syncthing_gtk/app.py:834 syncthing_gtk/app.py:1353 msgid "Download Rate" msgstr "T.độ tải xuống" #: syncthing_gtk/app.py:835 syncthing_gtk/app.py:1354 msgid "Upload Rate" msgstr "T.độ tải lên" #: syncthing_gtk/app.py:836 msgid "Announce Server" msgstr "Máy chủ th.báo" #: syncthing_gtk/app.py:837 syncthing_gtk/app.py:1356 msgid "Version" msgstr "Phiên bản" #: syncthing_gtk/app.py:860 syncthing_gtk/editordialog.py:394 msgid "disabled" msgstr "đã tắt" #: syncthing_gtk/app.py:862 msgid "Online" msgstr "Trực tuyến" #: syncthing_gtk/app.py:862 msgid "offline" msgstr "ngoại tuyến" #: syncthing_gtk/app.py:864 #, python-format msgid "%(online)s/%(total)s online" msgstr "%(online)s/%(total)s trực tuyến" #: syncthing_gtk/app.py:891 syncthing_gtk/app.py:1357 #: syncthing_gtk/app.py:1382 msgid "Never" msgstr "Chưa từng" #: syncthing_gtk/app.py:899 syncthing_gtk/app.py:1691 #: syncthing_gtk/app.py:1692 msgid "Paused" msgstr "" #: syncthing_gtk/app.py:899 syncthing_gtk/app.py:924 syncthing_gtk/app.py:939 #: syncthing_gtk/infobox.py:60 msgid "Disconnected" msgstr "Đã ngắt k.nối" #: syncthing_gtk/app.py:916 msgid "Connected" msgstr "Đã kết nối" #: syncthing_gtk/app.py:945 syncthing_gtk/app.py:980 syncthing_gtk/app.py:1030 #: syncthing_gtk/app.py:1031 syncthing_gtk/app.py:1070 msgid "Up to Date" msgstr "Đã cập nhật" #: syncthing_gtk/app.py:966 syncthing_gtk/app.py:967 syncthing_gtk/app.py:968 msgid "Files" msgstr "Tập tin" #: syncthing_gtk/app.py:980 syncthing_gtk/app.py:1068 msgid "Cluster out of sync" msgstr "Cụm mất đồng bộ" #: syncthing_gtk/app.py:995 msgid "Stopped" msgstr "Đã ngưng" #: syncthing_gtk/app.py:998 syncthing_gtk/app.py:1005 msgid "Error" msgstr "Lỗi" #: syncthing_gtk/app.py:1024 #, python-format msgid "Synchronizing '%s'" msgstr "Đang đồng bộ '%s'" #: syncthing_gtk/app.py:1026 #, python-format msgid "Synchronizing %s folders" msgstr "Đang đồng bộ %s thư mục" #: syncthing_gtk/app.py:1035 syncthing_gtk/app.py:1036 msgid "All devices offline" msgstr "Tất cả th.bị đều ngoại tuyến" #: syncthing_gtk/app.py:1040 syncthing_gtk/app.py:1041 msgid "Connecting to Syncthing daemon..." msgstr "Đang kết nối đến ch.trình nền Syncthing..." #: syncthing_gtk/app.py:1079 msgid "Unshared" msgstr "Chưa ch.sẻ" #: syncthing_gtk/app.py:1082 msgid "Offline" msgstr "Ngoại tuyến" #: syncthing_gtk/app.py:1176 msgid "Hide Window" msgstr "Ẩn cửa sổ" #: syncthing_gtk/app.py:1190 app.glade:651 msgid "Show Window" msgstr "Hiện cửa sổ" #: syncthing_gtk/app.py:1239 msgid "Syncthing daemon doesn't appear to be running." msgstr "Có vẻ như ch.trình nền Syncthing không hoạt động." #: syncthing_gtk/app.py:1240 msgid "Start it now?" msgstr "Khởi chạy ngay?" #: syncthing_gtk/app.py:1243 msgid "Always start daemon automatically" msgstr "Luôn tự khởi động chương trình nền" #: syncthing_gtk/app.py:1292 msgid "Folder ID" msgstr "ID thư mục" #: syncthing_gtk/app.py:1293 msgid "Path" msgstr "Đường dẫn" #: syncthing_gtk/app.py:1294 msgid "Global State" msgstr "Tr.thái toàn cầu" #: syncthing_gtk/app.py:1295 msgid "Local State" msgstr "Tr.thái cục bộ" #: syncthing_gtk/app.py:1296 msgid "Out Of Sync" msgstr "Mất đồng bộ" #: syncthing_gtk/app.py:1297 msgid "Folder Type" msgstr "" #: syncthing_gtk/app.py:1298 msgid "Ignore Permissions" msgstr "Bỏ qua các g.phép" #: syncthing_gtk/app.py:1299 msgid "Rescan Interval" msgstr "Khoảng th.gian quét lại" #: syncthing_gtk/app.py:1300 msgid "Shared With" msgstr "Đã ch.sẻ với" #: syncthing_gtk/app.py:1324 syncthing_gtk/app.py:1325 #: syncthing_gtk/app.py:1381 msgid "Yes" msgstr "Có" #: syncthing_gtk/app.py:1324 syncthing_gtk/app.py:1325 #: syncthing_gtk/app.py:1381 msgid "No" msgstr "Không" #: syncthing_gtk/app.py:1327 msgid "(watch)" msgstr "(xem)" #: syncthing_gtk/app.py:1341 msgid "Unused" msgstr "Chưa s.dụng" #: syncthing_gtk/app.py:1350 msgid "Address" msgstr "Địa chỉ" #: syncthing_gtk/app.py:1351 msgid "Synchronization" msgstr "Đồng bộ" #: syncthing_gtk/app.py:1352 msgid "Compression" msgstr "Nén" #: syncthing_gtk/app.py:1355 msgid "Introducer" msgstr "Thiết bị g.thiệu" #: syncthing_gtk/app.py:1357 msgid "Last Seen" msgstr "Thấy lần cuối" #: syncthing_gtk/app.py:1378 device-edit.glade:22 msgid "All Data" msgstr "T.cả dữ liệu" #: syncthing_gtk/app.py:1379 device-edit.glade:26 folder-edit.glade:78 msgid "Off" msgstr "Tắt" #: syncthing_gtk/app.py:1375 msgid "Send Only" msgstr "" #: syncthing_gtk/app.py:1375 msgid "Send & Receive" msgstr "" #: syncthing_gtk/app.py:1380 device-edit.glade:30 msgid "Metadata Only" msgstr "Chỉ siêu dữ liệu" #: syncthing_gtk/app.py:1522 msgid "Exiting." msgstr "Đang thoát." #: syncthing_gtk/app.py:1523 msgid "Shutdown Syncthing daemon as well?" msgstr "Tắt cả chương trình nền Syncthing?" #: syncthing_gtk/app.py:1528 msgid "Always do same; Don't show this window again" msgstr "Luôn làm như vậy; Đừng hiện cửa sổ này nữa" #: syncthing_gtk/app.py:1768 #, python-format msgid "Do you really want to permanently stop synchronizing directory '%s'?" msgstr "Có chắc là bạn muốn ngừng vĩnh viễn đồng bộ thư mục '%s'?" #: syncthing_gtk/app.py:1770 #, python-format msgid "Do you really want remove device '%s' from Syncthing?" msgstr "Có chắc là bạn muốn xoá thiết bị '%s' khỏi Syncthing?" #: syncthing_gtk/app.py:1838 msgid "Syncthing-Inotify Output" msgstr "Đầu ra Syncthing-Inotify" #: syncthing_gtk/app.py:1844 msgid "Syncthing-Inotify is unavailable or failed to start" msgstr "Không có Syncthing-Inotify hoặc nó kh.chạy thất bại" #: syncthing_gtk/app.py:1991 msgid "Failed to start Syncthing daemon." msgstr "Thất bại khi kh.chạy ch.trình nền Syncthing." #: syncthing_gtk/app.py:1993 msgid "" "Please, check your installation or set new path to Syncthing daemon binary." msgstr "Xin k.tra lại cài đặt hoặc tạo đ.dẫn mới đến tập tin chạy ch.trình nền Syncthing." #: syncthing_gtk/daemonsettings.py:24 msgid "Syncthing Daemon Settings" msgstr "Cài đặt ch.trình nền Syncthing" #: syncthing_gtk/deviceeditor.py:24 msgid "" "The entered device ID does not look valid. It should be a 52 character " "string consisting of letters and numbers, with spaces and dashes being " "optional." msgstr "ID thiết bị đã nhập không hợp lệ. Nó phải là một chuỗi từ 52 ký tự, bao gồm chữ cái và các con số, với khoảng trắng và gạch ngang là tuỳ chọn." #: syncthing_gtk/editordialog.py:312 msgid "Failed to load configuration from daemon." msgstr "Thất bại khi tải cấu hình từ chương trình nền." #: syncthing_gtk/editordialog.py:313 msgid "Try again." msgstr "Thử lại." #: syncthing_gtk/editordialog.py:387 syncthing_gtk/editordialog.py:396 #, python-format msgid "%ss" msgstr "%ss" #: syncthing_gtk/editordialog.py:402 #, python-format msgid "%s%%" msgstr "" #: syncthing_gtk/editordialog.py:409 msgid "no limit" msgstr "" #: syncthing_gtk/editordialog.py:411 #, python-format msgid "%s KiB/s" msgstr "" #: syncthing_gtk/editordialog.py:418 msgid "never delete" msgstr "không b.giờ xoá" #: syncthing_gtk/editordialog.py:420 #, python-format msgid "%s day" msgstr "%s ngày" #: syncthing_gtk/editordialog.py:422 #, python-format msgid "%s days" msgstr "%s ngày" #: syncthing_gtk/editordialog.py:455 msgid "Failed to save configuration." msgstr "Lưu cấu hình thất bại." #: syncthing_gtk/finddaemondialog.py:24 find-daemon.glade:7 msgid "Can't invoke the daemon" msgstr "Không thể gọi ch.trình nền" #: syncthing_gtk/finddaemondialog.py:26 msgid "Syncthing binary" msgstr "Tập tin chạy Syncthing" #: syncthing_gtk/finddaemondialog.py:28 syncthing_gtk/finddaemondialog.py:37 msgid "Syncthing daemon binary cannot be found." msgstr "Không thấy tập tin chạy ch.trình nền Syncthing." #: syncthing_gtk/finddaemondialog.py:29 #, python-format msgid "" "If you have Syncthing installed, please, set path to %s below or click on " "Download button to download latest Syncthing package." msgstr "Nếu đã cài đặt Syncthing, hãy đưa đ.dẫn đến %s bên dưới hoặc nhấp vào nút Tải xuống để tải gói Syncthing mới nhất." #: syncthing_gtk/finddaemondialog.py:38 #, python-format msgid "If you have Syncthing installed, please, set path to %s below" msgstr "Nếu đã cài đặt Syncthing, hãy đưa đ.dẫn đến %s bên dưới" #: syncthing_gtk/finddaemondialog.py:82 syncthing_gtk/wizard.py:411 msgid "Cannot download Syncthing daemon." msgstr "Không thể tải chương trình nền Syncthing." #: syncthing_gtk/finddaemondialog.py:83 syncthing_gtk/wizard.py:412 #, python-format msgid "This platform (%s) is not supported" msgstr "HĐH này (%s) không được hỗ trợ" #: syncthing_gtk/finddaemondialog.py:100 msgid "Downloading..." msgstr "Đang tải xuống..." #: syncthing_gtk/finddaemondialog.py:163 syncthing_gtk/stdownloader.py:251 #: syncthing_gtk/stdownloader.py:279 msgid "Download failed." msgstr "Tải xuống thất bại." #: syncthing_gtk/finddaemondialog.py:185 syncthing_gtk/wizard.py:458 msgid "Download finished." msgstr "Tải xuống hoàn tất." #: syncthing_gtk/foldereditor.py:45 msgid "Select Folder for new Folder" msgstr "Chọn thư mục cho thư mục mới" #: syncthing_gtk/foldereditor.py:166 syncthing_gtk/foldereditor.py:167 msgid "Please, install pyinotify package to use this feature" msgstr "Hãy cài đặt gói pyinotify để sử dụng tính năng này" #: syncthing_gtk/ignoreeditor.py:44 msgid "File location:" msgstr "Vị trí tập tin:" #: syncthing_gtk/notifications.py:120 #, python-format msgid "Unexpected folder ID sent from device \"%s\"." msgstr "" #: syncthing_gtk/notifications.py:124 #, python-format msgid "Device \"%s\" is trying to connect to syncthing daemon." msgstr "" #: syncthing_gtk/notifications.py:153 #, python-format msgid "Synchronization of folder '%s' is completed." msgstr "Hoàn tất đồng bộ thư mục '%s'." #: syncthing_gtk/notifications.py:160 #, python-format msgid "%(hostname)s: Downloaded '%(filename)s' to reflect remote changes." msgstr "" #: syncthing_gtk/notifications.py:165 #, python-format msgid "%(hostname)s: Deleted '%(filename)s' to reflect remote changes." msgstr "" #: syncthing_gtk/notifications.py:168 #, python-format msgid "%(hostname)s: Downloaded %(updated)s files to reflect remote changes." msgstr "" #: syncthing_gtk/notifications.py:171 #, python-format msgid "%(hostname)s: Deleted %(deleted)s files to reflect remote changes." msgstr "" #: syncthing_gtk/notifications.py:175 #, python-format msgid "" "%(hostname)s: downloaded %(updated)s files and deleted %(deleted)s files to " "reflect remote changes." msgstr "" #: syncthing_gtk/statusicon.py:48 msgid "Syncthing" msgstr "Syncthing" #: syncthing_gtk/stdownloader.py:174 syncthing_gtk/stdownloader.py:217 #: syncthing_gtk/stdownloader.py:313 syncthing_gtk/stdownloader.py:344 msgid "Failed to determine latest Syncthing version." msgstr "Thất bại khi x.định ph.bản Syncthing mới nhất." #: syncthing_gtk/stdownloader.py:236 msgid "Failed to create temporaly file." msgstr "Tạo tập tin tạm thất bại." #: syncthing_gtk/stdownloader.py:294 msgid "Downloaded file is corrupted." msgstr "Tập tin đã tải xuống bị lỗi." #: syncthing_gtk/tools.py:192 #, python-format msgid "~%s hours ago" msgstr "~%s giờ trước" #: syncthing_gtk/tools.py:194 #, python-format msgid "%s minutes ago" msgstr "%s phút trước" #: syncthing_gtk/tools.py:196 #, python-format msgid "%s seconds ago" msgstr "%s giây trước" #: syncthing_gtk/tools.py:197 msgid "just now" msgstr "chỉ mới đây" #: syncthing_gtk/tools.py:199 #, python-format msgid "%s days ago" msgstr "%s ngày trước" #: syncthing_gtk/tools.py:203 #, python-format msgid "in %s days" msgstr "trong %s ngày" #: syncthing_gtk/tools.py:205 #, python-format msgid "~%s hours from now" msgstr "~%s giờ kể từ lúc này" #: syncthing_gtk/tools.py:207 #, python-format msgid "%s minutes from now" msgstr "%s phút kể từ lúc này" #: syncthing_gtk/tools.py:209 #, python-format msgid "%s seconds from now" msgstr "%s giây kể từ lúc này" #: syncthing_gtk/tools.py:210 msgid "in a moment" msgstr "trong chốc lát" #: syncthing_gtk/uisettingsdialog.py:58 msgid "UI Settings" msgstr "Cài đặt UI" #: syncthing_gtk/uisettingsdialog.py:70 msgid "Unlimited" msgstr "Không giới hạn" #: syncthing_gtk/uisettingsdialog.py:107 #, python-format msgid "Install %(package)s package to enable %(feature)s support" msgstr "Cài đặt gói %(package)s để kích hoạt hỗ trợ %(feature)s" #: syncthing_gtk/uisettingsdialog.py:312 msgid "Browse for Syncthing binary" msgstr "Tìm tập tin chạy Syncthing" #: syncthing_gtk/wizard.py:53 msgid "First run wizard" msgstr "Hỗ trợ lần chạy ban đầu" #: syncthing_gtk/wizard.py:137 #, python-format msgid "Please, check error log and fill bug report on %s." msgstr "Hãy k.tra nhật ký lỗi và điền vào báo cáo trên %s." #: syncthing_gtk/wizard.py:141 msgid "Display error log" msgstr "Hiển thị nhật ký lỗi" #: syncthing_gtk/wizard.py:198 msgid "Welcome to Syncthing-GTK first run wizard!" msgstr "Chào mừng đến với h.trợ lần chạy b.đầu của Syncthing-GTK!" #: syncthing_gtk/wizard.py:200 msgid "It looks like you never have used Syncthing." msgstr "Có vẻ như bạn chưa từng sử dụng Syncthing." #: syncthing_gtk/wizard.py:201 msgid "Initial configuration should be created." msgstr "Đã tạo cấu hình ban đầu." #: syncthing_gtk/wizard.py:202 msgid "" "Continue this wizard to create a Syncthing configuration file or abort it to exit." msgstr "" #: syncthing_gtk/wizard.py:204 #, python-format msgid "" "If you already had Syncthing daemon configured, please, exit this wizard and" " check your %s folder" msgstr "Nếu bạn đã chỉnh cấu hình ch.trình nền Syncthing thì hãy thoát mục hỗ trợ này và k.tra thư mục %s." #: syncthing_gtk/wizard.py:220 msgid "Searching for Syncthing daemon." msgstr "Đang tìm ch.trình nền Syncthing." #: syncthing_gtk/wizard.py:222 syncthing_gtk/wizard.py:394 msgid "Please wait..." msgstr "Xin chờ..." #: syncthing_gtk/wizard.py:270 syncthing_gtk/wizard.py:287 msgid "Syncthing daemon not found." msgstr "Không thấy ch.trình nền Syncthing." #: syncthing_gtk/wizard.py:271 msgid "Please, use package manager to install the Syncthing package." msgstr "Hãy sử dụng trình quản lý gói để cài đặt gói Syncthing. " #: syncthing_gtk/wizard.py:283 msgid "download latest binary" msgstr "tải tập tin chạy mới nhất" #: syncthing_gtk/wizard.py:288 syncthing_gtk/wizard.py:302 #, python-format msgid "" "Please, use package manager to install the Syncthing package or " "%(download_link)s from Syncthing page and save it to your %(target)s " "directory." msgstr "Hãy sử dụng trình quản lý gói để cài đặt gói Syncthing hoặc %(download_link)s từ trang chủ Syncthing và lưu nó vào thư mục %(target)s." #: syncthing_gtk/wizard.py:296 msgid "Syncthing daemon is too old." msgstr "Chương trình nền Syncthing quá cũ." #: syncthing_gtk/wizard.py:297 #, python-format msgid "" "Syncthing-GTK needs Syncthing daemon %(min)s or newer, but only %(actual)s " "were found." msgstr "Syncthing-GTK cần ch.trình nền Syncthing %(min)s hoặc mới hơn, nhưng chỉ thấy %(actual)s." #: syncthing_gtk/wizard.py:309 msgid "Alternatively, Syncthing-GTK can download Syncthing binary" msgstr "Hoặc là Syncthing-GTK có thể tải về chương trình chạy Syncthing" #: syncthing_gtk/wizard.py:310 #, python-format msgid "to %s and keep it up-to-date, but this option is meant as" msgstr "đến %s và cập nhật nó, nhưng tuỳ chọn này chỉ là" #: syncthing_gtk/wizard.py:312 msgid "last resort and generally not suggested." msgstr "b.pháp bất đắc dĩ và thường không nên dùng." #: syncthing_gtk/wizard.py:315 msgid "_Download Syncthing binary" msgstr "_Tải chương trình chạy Syncthing" #: syncthing_gtk/wizard.py:319 msgid "Auto_update downloaded binary" msgstr "Tự động_cập nhật ch.trình chạy đã tải xuống" #: syncthing_gtk/wizard.py:375 msgid "Syncthing daemon binary found." msgstr "Tìm thấy ch.trình chạy nền của Syncthing." #: syncthing_gtk/wizard.py:377 syncthing_gtk/wizard.py:460 msgid "Binary path:" msgstr "Đ.dẫn ch.trình chạy:" #: syncthing_gtk/wizard.py:378 msgid "Version:" msgstr "Phiên bản:" #: syncthing_gtk/wizard.py:393 msgid "Downloading Syncthing daemon." msgstr "Đang tải chương trình nền Syncthing." #: syncthing_gtk/wizard.py:441 msgid "Failed to download Syncthing daemon package." msgstr "Tải gói chương trình nền Syncthing thất bại." #: syncthing_gtk/wizard.py:472 msgid "Syncthing is generating RSA key and certificate." msgstr "Syncthing đang tạo khoá và chứng nhận RSA." #: syncthing_gtk/wizard.py:473 msgid "This may take a while..." msgstr "Tiến trình có thể hơi lâu..." #: syncthing_gtk/wizard.py:515 msgid "Failed to generate keys" msgstr "Tạo khoá thất bại" #: syncthing_gtk/wizard.py:516 msgid "Syncthing daemon failed to generate RSA key or certificate." msgstr "Ch.trình nền Syncthing thất bại khi tạo khoá và chứng nhận RSA." #: syncthing_gtk/wizard.py:526 msgid "WebUI setup" msgstr "Thiết lập WebUI" #: syncthing_gtk/wizard.py:528 msgid "" "Syncthing can be managed remotely using WebUI and even if you are going to " "use Syncthing-GTK, WebUI needs to be enabled, as Syncthing-GTK uses it to " "communicate with the Syncthing daemon." msgstr "Syncthing có thể được kiểm soát từ xa bằng WebUI và ngay cả khi bạn sử dụng Syncthing-GTK, WebUI cần được kích hoạt vì Syncthing-GTK sẽ dùng nó để liên lạc với chương trình nền Syncthing." #: syncthing_gtk/wizard.py:533 msgid "" "If you prefer to be able to manage Syncthing remotely, over the internet or " "on your local network, select listen on all interfaces and set " "username and password to protect Syncthing from unauthorized access." msgstr "Nếu bạn muốn quản lý Syncthing từ xa thông qua mạng toàn cầu hoặc cục bộ, hãy chọn lắng nghe trên tất cả giao diện đồng thời đặt tên người dùng và mật khẩu để bảo vệ Syncthing khỏi bị truy cập trái phép." #: syncthing_gtk/wizard.py:538 msgid "" "Otherwise, select listen on localhost, so only users and programs on " "this computer will be able to interact with Syncthing." msgstr "Nếu không, bạn hãy chọn lắng nghe trên máy cục bộ để chỉ những người dùng và ch.trình trên máy này có thể tương tác với Syncthing" #: syncthing_gtk/wizard.py:544 msgid "WebUI Listen Addresses" msgstr "Các đ.chỉ lắng nghe WebUI" #: syncthing_gtk/wizard.py:545 msgid "Listen on _localhost" msgstr "Lắng nghe trên _máy cục bộ" #: syncthing_gtk/wizard.py:547 msgid "Listen on _all interfaces" msgstr "Lắng nghe trên _tất cả g.diện" #: syncthing_gtk/wizard.py:554 msgid "_Username" msgstr "_Tên người dùng" #: syncthing_gtk/wizard.py:555 msgid "_Password" msgstr "_Mật khẩu" #: syncthing_gtk/wizard.py:609 msgid "Saving settings..." msgstr "Đang lưu cài đặt..." #: syncthing_gtk/wizard.py:610 msgid "Checking for available port..." msgstr "Đang kiểm tra cổng còn trống..." #: syncthing_gtk/wizard.py:631 msgid "Failed to find unused port for listening." msgstr "Không tìm thấy cổng nào còn trống để lắng nghe." #: syncthing_gtk/wizard.py:632 msgid "Please, check your firewall settings and try again." msgstr "Hãy kiểm tra cài đặt tường lửa và thử lại." #: syncthing_gtk/wizard.py:646 msgid "Saving..." msgstr "Đang lưu..." #: syncthing_gtk/wizard.py:678 msgid "Failed to load Syncthing configuration" msgstr "Không thể tải cấu hình Syncthing" #: syncthing_gtk/wizard.py:705 msgid "Failed to modify Syncthing configuration" msgstr "Không thể chỉnh sửa cấu hình Syncthing" #: syncthing_gtk/wizard.py:715 msgid "Failed to save Syncthing configuration" msgstr "Không thể lưu cấu hình Syncthing" #: syncthing_gtk/wizard.py:729 msgid "Done." msgstr "Xong." #: syncthing_gtk/wizard.py:731 msgid "Syncthing has been successfully configured." msgstr "Đã hoàn tất cấu hình Syncthing." #: syncthing_gtk/wizard.py:733 msgid "" "You can configure more details later, in UI Settings and Daemon " "Settings menus in main window of application." msgstr "Sau này bạn có thể cấu hình chi tiết hơn trong các trình đơn Cài đặt UICài đặt chương trình nền trên cửa sổ chính của ứng dụng." #: about.glade:7 msgid "About Syncthing-GTK" msgstr "" #: about.glade:10 msgid "GTK GUI and notification area icon for Syncthing" msgstr "" #: about.glade:12 msgid "GitHub" msgstr "" #: app.glade:239 app.glade:420 app.glade:802 msgid "Open _Web Interface" msgstr "Mở _giao diện web" #: app.glade:251 app.glade:424 app.glade:814 msgid "Display _Daemon Output" msgstr "Hiển thị _đầu ra chương trình nền" #: app.glade:263 msgid "Display Syncthing-Inotify Output" msgstr "Hiển thị đầu ra Syncthing-Inotify" #: app.glade:280 app.glade:430 msgid "UI _Settings" msgstr "Cài đặt _UI" #: app.glade:325 app.glade:451 msgid "Add Shared _Folder" msgstr "Thêm thư mục _đã ch.sẻ" #: app.glade:338 app.glade:455 msgid "Add _Device" msgstr "Thêm _thiết bị" #: app.glade:356 app.glade:461 msgid "Daemon _Settings" msgstr "Cài đặt _ch.trình nền" #: app.glade:371 app.glade:465 app.glade:588 app.glade:788 msgid "Show _ID" msgstr "Hiển thị _ID" #: app.glade:391 app.glade:471 msgid "Sh_utdown Daemon" msgstr "T_ắt chương trình nền" #: app.glade:404 app.glade:475 msgid "_Restart Daemon" msgstr "_Kh.động lại ch.trình nền" #: app.glade:436 msgid "_About" msgstr "_Thông tin về" #: app.glade:440 msgid "_Quit" msgstr "_Thoát" #: app.glade:490 msgid "Override Remote Changes" msgstr "Ghi đè các thay đổi từ xa" #: app.glade:519 msgid "Edit _Ignore Patterns" msgstr "Chỉnh sửa _các q.luật bỏ qua" #: app.glade:547 msgid "_Rescan" msgstr "_Quét lại" #: app.glade:559 msgid "_Browse" msgstr "_Tìm kiếm" #: app.glade:611 msgid "Resume" msgstr "" #: app.glade:641 msgid "Connecting to daemon..." msgstr "Đang k.nối với ch.trình nền..." #: app.glade:669 msgid "S_top Syncthing" msgstr "D_ừng Syncthing" #: app.glade:683 msgid "Resume Sync_thing" msgstr "Tiếp tục Sync_thing" #: app.glade:695 daemon-settings.glade:335 msgid "_Incoming Rate Limit" msgstr "_Giới hạn t.độ đầu vào" #: app.glade:709 app.glade:751 msgid "_Unlimited" msgstr "_Không giới hạn" #: app.glade:718 app.glade:760 msgid "_Other" msgstr "_Khác" #: app.glade:737 msgid "_Outgoing Rate Limit" msgstr "" #: daemon-output.glade:7 msgid "Daemon Output" msgstr "Đầu ra ch.trình nền" #: daemon-settings.glade:106 msgid "Sync Protocol Listen Addresses" msgstr "Đồng bộ các đ.chỉ lắng nghe giao thức" #: daemon-settings.glade:136 msgid "Enable Local _Discovery" msgstr "Bật dò tìm _cục bộ" #: daemon-settings.glade:153 msgid "Enable _UPnP" msgstr "Bật _UPnP" #: daemon-settings.glade:171 msgid "Local Discovery _Port" msgstr "Cổng _dò tìm cục bộ" #: daemon-settings.glade:212 msgid "Outgoing _Rate Limit" msgstr "" #: daemon-settings.glade:229 msgid "Open browser with _WebUI when daemon is starting" msgstr "Mở trình duyệt với _WebUI khi ch.trình nền khởi động" #: daemon-settings.glade:246 msgid "Enable _Anonymous Usage Reporting" msgstr "Bật _báo cáo sử dụng ẩn danh" #: daemon-settings.glade:262 msgid "Enable _Global Discovery" msgstr "Bật _dò tìm toàn cầu" #: daemon-settings.glade:281 msgid "Global Discovery _Servers" msgstr "Các máy chủ dò tìm _toàn cầu" #: device-edit.glade:102 msgid "Device _ID" msgstr "ID _thiết bị" #: device-edit.glade:134 msgid "Device _Name" msgstr "Tên _thiết bị" #: device-edit.glade:166 msgid "Shown instead of Device ID in the cluster status." msgstr "Hiển thị thay cho ID thiết bị trong trạng thái cụm." #: device-edit.glade:181 msgid "_Addresses" msgstr "_Các địa chỉ" #: device-edit.glade:213 msgid "" "Enter comma separated \"ip:port\" addresses or \"dynamic\" to perform " "automatic discovery of the address." msgstr "Nhập các địa chỉ ngăn cách bởi dấu phẩy \"ip:port\" hoặc \"dynamic\" để tiến hành dò tìm địa chỉ tự động." #: device-edit.glade:242 msgid "Share _Folders" msgstr "Chia sẻ _thư mục" #: device-edit.glade:276 msgid "Select the folders to share with this device" msgstr "Chọn các thư mục để chia sẻ với thiết bị này" #: device-edit.glade:287 msgid "_Introducer" msgstr "_Thiết bị giới thiệu" #: device-edit.glade:308 msgid "" "Any devices configured on an introducer device will be added to this device " "as well." msgstr "Bất kỳ thiết bị nào liên kết với thiết bị giới thiệu cũng sẽ được thêm vào." #: device-edit.glade:323 msgid "_Compression" msgstr "_Nén" #: device-id.glade:14 msgid "Device Identification" msgstr "Danh tính thiết bị" #: device-id.glade:68 msgid "XYZ-123-ABC" msgstr "XYZ-123-ABC" #: find-daemon.glade:126 ui-settings.glade:821 msgid "_Browse..." msgstr "_Tìm kiếm..." #: find-daemon.glade:179 msgid "_Download..." msgstr "_Tải xuống..." #: folder-edit.glade:44 msgctxt "In File Pull Order combobox" msgid "Random" msgstr "" #: folder-edit.glade:48 msgctxt "In File Pull Order combobox" msgid "Alphabetic" msgstr "" #: folder-edit.glade:52 msgctxt "In File Pull Order combobox" msgid "Smallest First" msgstr "" #: folder-edit.glade:56 msgctxt "In File Pull Order combobox" msgid "Largest First" msgstr "" #: folder-edit.glade:60 msgctxt "In File Pull Order combobox" msgid "Oldest First" msgstr "" #: folder-edit.glade:64 msgctxt "In File Pull Order combobox" msgid "Newest First" msgstr "" #: folder-edit.glade:82 msgid "Simple" msgstr "Đơn giản" #: folder-edit.glade:86 msgid "Staggered" msgstr "Theo thời gian" #: folder-edit.glade:90 msgid "Trashcan" msgstr "Kiểu thùng rác" #: folder-edit.glade:94 msgid "External" msgstr "Kiểu ngoại vi" #: folder-edit.glade:171 msgid "Folder _Label" msgstr "" #: folder-edit.glade:202 msgid "Short identifier for the folder. Must be the same on all devices." msgstr "Tên tắt cho thư mục. Phải trùng khớp trên tất cả thiết bị." #: folder-edit.glade:216 msgid "_Path" msgstr "_Đường dẫn" #: folder-edit.glade:234 msgid "" "Path to the folder on the local computer. Will be created if it does not " "exist." msgstr "Đường dẫn đến thư mục trên máy cục bộ. Sẽ tạo mới nếu chưa hiện hữu." #: folder-edit.glade:248 msgid "Rescan _Interval" msgstr "Khoảng thời gian _quét lại" #: folder-edit.glade:293 msgid "Monitor filesystem for _changes" msgstr "Kiểm soát các thay đổi của _hệ thống tập tin" #: folder-edit.glade:314 msgid "" "If enabled, changed, created and delete files are synchronized immediately, as long as Syncthing-GTK is running.\n" "Note: Using this along with short Rescan Interval (<300s) may consume a lot of resources." msgstr "Khi bật, các tập tin bị th.đổi, tạo mới và xoá sẽ được đồng bộ ngay lập tức, miễn là Syncthing-GTK còn h.động.\nGhi chú: Dùng chế độ này với khoảng th.gian quét lại ngắn (<300 giây) có thể tiêu thụ khá nhiều t.nguyên máy." #: folder-edit.glade:343 msgid "Browse..." msgstr "Duyệt tìm..." #: folder-edit.glade:366 msgid "Folder _ID" msgstr "ID _thư mục" #: folder-edit.glade:396 msgid "" "Optional descriptive label for the folder. Can be different on each device." msgstr "" #: folder-edit.glade:418 msgid "_Send Only Folder" msgstr "" #: folder-edit.glade:439 msgid "" "Files are protected from changes made on other devices, but changes made on " "this device will be sent to the rest of the cluster." msgstr "Các tập tin sẽ được b.vệ khỏi những th.đổi trên các th.bị khác, nhưng những th.đổi trên th.bị này sẽ được chuyển tới các máy cụm còn lại." #: folder-edit.glade:456 msgid "_Folder Settings" msgstr "" #: folder-edit.glade:476 msgid "Select the devices to share this folder with." msgstr "Chọn các th.bị để chia sẻ th.mục này." #: folder-edit.glade:514 msgid "Share With _Devices" msgstr "Chia sẻ với _các th.bị" #: folder-edit.glade:535 msgid "Versioning _Mode" msgstr "" #: folder-edit.glade:590 msgid "" "Files are moved to date stamped versions in a .stversions folder when " "replaced or deleted by syncthing." msgstr "Các tập tin sẽ được chuyển tới các ph.bản được đ.dấu ngày tháng trong th.mục .stversions khi bị th.thế hoặc xoá bởi Syncthing." #: folder-edit.glade:605 msgid "_Keep Versions" msgstr "_Giữ lại các ph.bản" #: folder-edit.glade:642 msgid "The number of old versions to keep, per file." msgstr "Số phiên bản cũ cần giữ lại với mỗi tập tin." #: folder-edit.glade:671 msgid "" "Files are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing. Versions are automatically deleted if they are older than the maximum age or exceed the number of files allowed in an interval.\n" "\n" "The following intervals are used: for the first hour a version is kept every 30 seconds, for the first day a version is kept every hour, for the first 30 days a version is kept every day, until the maximum age a version is kept every week." msgstr "Các tập tin sẽ được chuyển tới các ph.bản được đ.dấu ngày tháng trong th.mục .stversions khi bị th.thế hoặc xoá bởi Syncthing. Các ph.bản sẽ tự động được xoá nếu chúng cũ hơn th.hạn tối đa hoặc vượt quá số tập tin cho phép trong một khoảng th.gian.\n\nCác khoảng th.gian sau đây được s.dụng: một phiên bản, trong giờ đầu tiên, được giữ lại mỗi 30 giây, trong ngày đầu tiên là mỗi giờ, trong 30 ngày đầu tiên là mỗi ngày, cho đến khi th.hạn tối đa mỗi ph.bản được giữ lại là mỗi tuần." #: folder-edit.glade:688 msgid "Ma_ximum Age" msgstr "Th_ời hạn tối đa" #: folder-edit.glade:727 msgid "Versions _Path" msgstr "Đ.dẫn đến _các ph.bản" #: folder-edit.glade:759 msgid "" "Path where versions should be stored (leave empty for the default " ".stversions folder)." msgstr "Đường dẫn nơi các ph.bản được lưu trữ (th.mục mặc định sẽ là .stversions nếu để trống)." #: folder-edit.glade:787 msgid "" "Files are moved to .stversions folder when replaced or deleted by Syncthing" msgstr "Các tập tin sẽ được chuyển tới th.mục .stversions khi bị th.thế hoặc xoá bởi Syncthing" #: folder-edit.glade:801 msgid "Clean out _after" msgstr "Xoá sạch _sau" #: folder-edit.glade:840 msgid "The number of days to keep files in the trash can." msgstr "Số ngày giữ tập tin trong thùng rác." #: folder-edit.glade:869 msgid "" "An external command handles the versioning. It has to remove the file from " "the synced folder." msgstr "Một lệnh ngoại vi chịu trách nhiệm phiên bản hoá. Nó phải loại bỏ tập tin ra khỏi thư mục đã đồng bộ." #: folder-edit.glade:884 msgid "Command" msgstr "Lệnh" #: folder-edit.glade:917 msgid "" "The first command line parameter is the folder path and the second parameter" " is the relative path in the folder." msgstr "Tham số dòng lệnh đầu tiên là đường dẫn thư mục và tham số thứ hai là đường dẫn tương đối trong thư mục." #: folder-edit.glade:953 msgid "File _Versioning" msgstr "" #: folder-edit.glade:982 msgid "Ignore P_ermissions" msgstr "Bỏ qua c-ác giấy phép" #: folder-edit.glade:1003 msgid "" "File permission bits are ignored when looking for changes. Use on FAT " "filesystems." msgstr "Các ph.tử g.phép tập tin sẽ được bỏ qua khi t.kiếm th.đổi. Dùng trên h.thống tập tin FAT." #: folder-edit.glade:1018 msgid "Minimum Free Disk Space" msgstr "" #: folder-edit.glade:1057 msgid "File Pull _Order" msgstr "" #: folder-edit.glade:1103 ui-settings.glade:954 msgid "_Advanced" msgstr "_Nâng cao" #: ignore-editor.glade:8 msgid "Ignore Patterns" msgstr "Bỏ qua các q.luật" #: ignore-editor.glade:99 msgid "" "See Syncthing " "documentation for list of supported patterns" msgstr "Xem Tài liệu Syncthing để biết danh sách các quy luật được hỗ trợ." #: ignore-editor.glade:114 msgid "File location: " msgstr "Vị trí tập tin:" #: ui-settings.glade:27 msgid "Lowest" msgstr "Thấp nhất" #: ui-settings.glade:31 msgid "Low" msgstr "Thấp" #: ui-settings.glade:35 msgid "Normal" msgstr "Bình thường" #: ui-settings.glade:39 msgid "Above Normal" msgstr "Hơn mức b.thường" #: ui-settings.glade:46 msgid "Syncthing-GTK Settings" msgstr "Cài đặt Syncthing-GTK" #: ui-settings.glade:69 msgid "Please, restart Syncthing-GTK to apply all changed settings" msgstr "" #: ui-settings.glade:136 msgid "When starting and Syncthing daemon is not running..." msgstr "Khi khởi động và chương trình nền Syncthing không chạy..." #: ui-settings.glade:147 msgid "... _wait for daemon" msgstr "... _đợi chương trình nền" #: ui-settings.glade:164 msgid "... start daemon in _background" msgstr "... khởi động chương trình trong _chế độ nền " #: ui-settings.glade:180 msgid "... _ask me what to do" msgstr "... _hỏi tôi phải làm gì" #: ui-settings.glade:199 msgid "When exiting after daemon was started in background..." msgstr "Khi thoát sau khi chương trình được khởi động ở chế độ nền..." #: ui-settings.glade:210 msgid "... terminate _daemon" msgstr "... tắt _chương trình nền" #: ui-settings.glade:226 msgid "... leave daemon _running" msgstr "... để chương trình nền _tiếp tục chạy" #: ui-settings.glade:242 msgid "... ask me w_hat to do" msgstr "... hỏi tôi p-hải làm gì" #: ui-settings.glade:258 msgid "Us_e traditional window header" msgstr "S_ử dụng đầu đề cửa sổ truyền thống" #: ui-settings.glade:278 msgid "Display desktop notifications for..." msgstr "Hiển thị th.báo trên desktop cho..." #: ui-settings.glade:289 msgid "... file updates" msgstr "... cập nhật tập tin" #: ui-settings.glade:304 msgid "... errors" msgstr "... lỗi" #: ui-settings.glade:319 msgid "... synchronization completion" msgstr "... hoàn tất đồng bộ" #: ui-settings.glade:334 msgid "Start Syncthing-GTK when I login to my desktop" msgstr "Khởi chạy Syncthing-GTK khi tôi đ.nhập vào desktop" #: ui-settings.glade:350 msgid "Minimize to _tray on start" msgstr "Thu nhỏ vào _khay khi khởi chạy" #: ui-settings.glade:366 msgid "Use _icons in menu" msgstr "Sử dụng _các b.tượng trong trình đơn" #: ui-settings.glade:383 msgid "Display paths in directories panel" msgstr "Hiện đ.dẫn trong danh sách th.mục" #: ui-settings.glade:399 msgid "Force _dark theme" msgstr "Bắt dùng _phông nền tối" #: ui-settings.glade:474 msgid "_Interface" msgstr "_Giao diện" #: ui-settings.glade:492 msgid "Integrate Syncthing with filemanagers" msgstr "Tích hợp Syncthing với các trình q.lý tập tin" #: ui-settings.glade:507 msgid "Nemo (Cinamon Desktop)" msgstr "Nemo (Cinamon Desktop)" #: ui-settings.glade:524 msgid "Nautilus (Ubuntu/GNOME)" msgstr "Nautilus (Ubuntu/GNOME)" #: ui-settings.glade:540 msgid "Caja (MATE Desktop)" msgstr "Caja (MATE Desktop)" #: ui-settings.glade:579 msgid "" "Note: You may need to restart your filemanager after toggling " "integration." msgstr "Ghi chú: Có thể bạn sẽ cần khởi động lại trình quản lý tập tin sau khi tích hợp." #: ui-settings.glade:598 msgid "_Integration" msgstr "_Tích hợp" #: ui-settings.glade:627 msgid "Keep Syncthing binary up-to-date" msgstr "Giữ cho ch.trình chạy Syncthing luôn cập nhật" #: ui-settings.glade:647 msgid "" "If enabled, Syncthing-GTK will automatically check for new daemon releases " "and replace binary with latest version." msgstr "Nếu bật, Syncthing-GTK sẽ tự động k.tra bản phát hành ch.trình nền mới và thay thế ch.trình chạy với ph.bản mới nhất." #: ui-settings.glade:662 msgid "Daemon process priority" msgstr "Độ ưu tiên của q.trình chạy nền" #: ui-settings.glade:698 msgid "" "Priority will be used only if \"start daemon in background\" option " "is checked on \"Interface\" page." msgstr "Độ ưu tiên sẽ chỉ được dùng nếu như tuỳ chọn \"khởi động chương trình ở chế độ nền\" được đánh dấu trên trang \"Giao diện\"." #: ui-settings.glade:713 msgid "Maximum number of CPU cores" msgstr "Số nhân CPU tối đa" #: ui-settings.glade:731 msgid "" "Sets the maximum number of CPU cores for daemon to use. This value will be " "used only if \"start daemon in background\" option is checked on " "\"Interface\" page." msgstr "Đặt số nhân CPU tối đa cho ch.trình nền s.dụng. G.trị này sẽ chỉ được dùng nếu như t.chọn \"khởi động chương trình ở chế độ nền\" được đánh dấu trên trang \"Giao diện\"." #: ui-settings.glade:786 msgid "Daemon" msgstr "" #: ui-settings.glade:808 msgid "" "This binary will be started when syncthing daemon is not running and " "\"start daemon in background\" option is checked on " "\"Interface\" page." msgstr "Ch.trình chạy này sẽ được k.hoạt khi ch.trình nền Syncthing không chạy và t.chọn \"khởi chạy chương trình ở chế độ nền\" được đánh dấu trên trang \"Giao diện\"." #: ui-settings.glade:838 msgid "Syncthing binary location" msgstr "Vị trí ch.trình chạy Syncthing" #: ui-settings.glade:867 msgid "Daemon arguments and variables" msgstr "" #: ui-settings.glade:897 msgid "" "Space-separated list of arguments and environment variables passed when starting above binary\n" "\n" "Use VARIABLE=\"value\" to set variable and -argument=\"value\" (with dash) for argument.\n" "\n" "If you need to pass commandline to different command (such as logger or ionice), separate prefixed arguments with exclamation mark \"!\"\n" "\n" "Example:\n" " STTRACE=\"all\" logger -t /var/log/syncthing.log ! -logflags=10" msgstr "" #: ui-settings.glade:921 msgid "" "Warning: Changing settings on this page may prevent you from using " "Syncthing-GTK" msgstr "" syncthing-gtk-0.9.4.4/locale/zh_CN/000077500000000000000000000000001352162771300167265ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/locale/zh_CN/LC_MESSAGES/000077500000000000000000000000001352162771300205135ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/locale/zh_CN/LC_MESSAGES/syncthing-gtk.mo000066400000000000000000000773771352162771300236660ustar00rootroot00000000000000W >B?3EsBc`| + BM^xQW w     : ,8!!e!]!!T!-J"x" "" """"g#!m##### # ##'$!7$Y$$q$D$R$.% 5%C%T%s%5%]%& 5& @& M& Z&{&$&&"&5&D"'g' m'{''''''((!1(S( l(ey((((() )-<),j)))))&))*(I*&r**!**** +R+m+Ks+g+',.. . . . ..0./ / %/ 2/r>//P|0a0=/1m11222&3))3(S3(|3"3*3(394%V4 |4D4,4 4 5$5>5S5 i5u5y5 55 5555 66,6C6I6L6S6W6_6f60z6K66 z7777O7V8_8 f8r82838K8549;j99=6:ot:::;;*;1;C;S; f;p;y;v;<--<,[<< <<K=\=p= =A= ==1=">7>k>>> F@.P@ @@@@@,@ A$A7A ?AIAcAtAA(JBsB.B;BBC6C+TC0C7CC DDV'D6~DD3D3Em6E)EEpfF2F- G8GG#G H H H ,H+9H eHoHxH H HHHHHHH%HI 6I*BI6mI4I II{I!eJiJJJ J KK K %K2K MKZKkKsK K K KKKK KKKKKKL L +L5L>L UL `LlL(uL LLL9L LMMHNF OBSOFOBOe PPPPP PPPP PQQ#Q 'Q4QOQjQ QQ&Q#QQQPRRiRR RRR S SS'3S=[S3SSTSATKQT*T(TT& U 1U ;UIU_U`xU&UVV2VBVIV PV#ZV/~V)VV/V?'WMgW WWWWX:$Xc_X X XX XXY3YOYbY4Y2Y Y YZZ#Z?Z&YZZZZZZ ZdZd[k[{[[[[*[/[\*7\b\u\$\\\\& ]1]H]_]o]J]]T]r&^^x`` aa )a7aKa+baaa a aqa;bNc]Rc;ccrd'e 8e Ee Re_eoeeeee2e$e fK$f%pf)f ffff gg#g*gAg Ygfggg gggghhhhh$h,7hHdhph i(i?iRiQYiUi j j j6"j*YjVj)j9k?k5kql tl llllllll m&moAmm*m$mn $n.nnno o?$o do qo-|o)ooZo6pq,qr#.r Rr\rur&|rrr r rr s#sCs4s2!t"Tt9wt"t#ttu-/u1]uu uu]u5*v`v-yv!vMv0wHw]w$.x*Sx~xy>y Yy cy my wy2y y y y y yy z(z /z9zPz,azz z1z0z8{ J{V{Z{){`| s| ~| | | | | |$| || }} ,} 7} B}P} a}l} } } }} }}} } } ~~ 6~ D~N~*U~ ~ ~~4~~~$ TApm*G@0V:M9o^NRN+EG<FgX  ui'(8\c;}Kh? OUE2S5<8(&F/d`CyblRsV1A>=0" P#>_KxtQ[+JLI7,!arJ%.S31HT-$:C'?,U6=".O&w*Wfe BnL6D{IQ ~! ZD) 59jY4Mvk4/W3@-2H] PqB|#);z %7%(device)s wants to share folder "%(folder)s". Add new folder?%(hostname)s: Deleted %(deleted)s files to reflect remote changes.%(hostname)s: Deleted '%(filename)s' to reflect remote changes.%(hostname)s: Downloaded %(updated)s files to reflect remote changes.%(hostname)s: Downloaded '%(filename)s' to reflect remote changes.%(hostname)s: downloaded %(updated)s files and deleted %(deleted)s files to reflect remote changes.%(online)s/%(total)s online%s KiB/s%s day%s days%s days ago%s kB/s%s minutes ago%s minutes from now%s seconds ago%s seconds from now%s%%%ss(watch)... _ask me what to do... _wait for daemon... ask me w_hat to do... errors... file updates... leave daemon _running... start daemon in _background... synchronization completion... terminate _daemonNote: You may need to restart your filemanager after toggling integration.Warning: Changing settings on this page may prevent you from using Syncthing-GTKAbout Syncthing-GTKAbove NormalAdd Shared _FolderAdd _DeviceAddressAll DataAll devices offlineAllow Anonymous Usage Reporting?Alternatively, Syncthing-GTK can download Syncthing binaryAlways do same; Don't show this window againAlways start daemon automaticallyAn external command handles the versioning. It has to remove the file from the synced folder.Announce ServerAny devices configured on an introducer device will be added to this device as well.Attempting to download recent, please wait...Auto_update downloaded binaryBinary path:Browse for Syncthing binaryBrowse...CPU UtilizationCaja (MATE Desktop)Can't invoke the daemonCannot authorize with daemon. Please, use WebUI to generate API key or disable password authentication.Cannot download Syncthing daemon.Checking for available port...Clean out _afterCluster out of syncCommandCompressionConnectedConnected to Syncthing daemonConnecting to Syncthing daemon at %s...Connecting to Syncthing daemon...Connecting to daemon...Connection to Syncthing daemon lost.Connection to daemon failed. Check your configuration and try again.Continue this wizard to create a Syncthing configuration file or abort it to exit.DaemonDaemon OutputDaemon _SettingsDaemon arguments and variablesDaemon process priorityDevice "%s" is trying to connect to syncthing daemon.Device "%(name)s" (%(device)s) at IP "%(ip)s" wants to connect. Add new device?Device IdentificationDevice _IDDevice _NameDisconnectedDisplay Syncthing-Inotify OutputDisplay _Daemon OutputDisplay desktop notifications for...Display error logDisplay paths in directories panelDo you really want remove device '%s' from Syncthing?Do you really want to permanently stop synchronizing directory '%s'?Done.Download RateDownload failed.Download finished.Downloaded file is corrupted.Downloading Syncthing %sDownloading Syncthing daemon.Downloading...Edit _Ignore PatternsEnable Local _DiscoveryEnable _Anonymous Usage ReportingEnable _Global DiscoveryEnable _UPnPEnter comma separated "ip:port" addresses or "dynamic" to perform automatic discovery of the address.ErrorError message:Exiting.ExternalExtracting update...Failed to create temporaly file.Failed to determine latest Syncthing version.Failed to download Syncthing daemon package.Failed to download upgrade: %sFailed to find unused port for listening.Failed to generate keysFailed to load Syncthing configurationFailed to load configuration from daemon.Failed to modify Syncthing configurationFailed to save Syncthing configurationFailed to save configuration.Failed to start Syncthing daemon.File Pull _OrderFile _VersioningFile location:File location: File permission bits are ignored when looking for changes. Use on FAT filesystems.FilesFiles are moved to .stversions folder when replaced or deleted by SyncthingFiles are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing.Files are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing. Versions are automatically deleted if they are older than the maximum age or exceed the number of files allowed in an interval. The following intervals are used: for the first hour a version is kept every 30 seconds, for the first day a version is kept every hour, for the first 30 days a version is kept every day, until the maximum age a version is kept every week.Files are protected from changes made on other devices, but changes made on this device will be sent to the rest of the cluster.First run wizardFolder IDFolder TypeFolder _IDFolder _LabelForce _dark themeGTK GUI and notification area icon for SyncthingGitHubGlobal Discovery _ServersGlobal StateHide WindowIf enabled, Syncthing-GTK will automatically check for new daemon releases and replace binary with latest version.If enabled, changed, created and delete files are synchronized immediately, as long as Syncthing-GTK is running. Note: Using this along with short Rescan Interval (<300s) may consume a lot of resources.If the reported data set is changed you will be prompted with this dialog again.If you already had Syncthing daemon configured, please, exit this wizard and check your %s folderIf you have Syncthing installed, please, set path to %s belowIf you have Syncthing installed, please, set path to %s below or click on Download button to download latest Syncthing package.If you prefer to be able to manage Syncthing remotely, over the internet or on your local network, select listen on all interfaces and set username and password to protect Syncthing from unauthorized access.Ignore P_ermissionsIgnore PatternsIgnore PermissionsIn File Pull Order comboboxAlphabeticIn File Pull Order comboboxLargest FirstIn File Pull Order comboboxNewest FirstIn File Pull Order comboboxOldest FirstIn File Pull Order comboboxRandomIn File Pull Order comboboxSmallest FirstInitial configuration should be created.Install %(package)s package to enable %(feature)s supportIntegrate Syncthing with filemanagersIntroducerIt is used to track common platforms, folder sizes and app versions.It looks like you never have used Syncthing.Keep Syncthing binary up-to-dateLast SeenListen on _all interfacesListen on _localhostLocal Discovery _PortLocal StateLowLowestMa_ximum AgeMaximum number of CPU coresMetadata OnlyMinimize to _tray on startMinimum Free Disk SpaceMonitor filesystem for _changesMore infoNautilus (Ubuntu/GNOME)Nemo (Cinamon Desktop)NeverNoNormalOffOfflineOnlineOpen _Web InterfaceOpen browser with _WebUI when daemon is startingOptional descriptive label for the folder. Can be different on each device.Otherwise, select listen on localhost, so only users and programs on this computer will be able to interact with Syncthing.Out Of SyncOutgoing _Rate LimitOverride Remote ChangesPathPath to the folder on the local computer. Will be created if it does not exist.Path where versions should be stored (leave empty for the default .stversions folder).PausedPlease waitPlease wait...Please, check error log and fill bug report on %s.Please, check your firewall settings and try again.Please, check your installation or set new path to Syncthing daemon binary.Please, install pyinotify package to use this featurePlease, restart Syncthing-GTK to apply all changed settingsPlease, use package manager to install the Syncthing package or %(download_link)s from Syncthing page and save it to your %(target)s directory.Please, use package manager to install the Syncthing package.Priority will be used only if "start daemon in background" option is checked on "Interface" page.RAM UtilizationRescan IntervalRescan _IntervalRestarting daemon...ResumeResume Sync_thingS_top SyncthingSaving settings...Saving...ScanningSearching for Syncthing daemon.See Syncthing documentation for list of supported patternsSelect Folder for new FolderSelect the devices to share this folder with.Select the folders to share with this deviceSend & ReceiveSend OnlySets the maximum number of CPU cores for daemon to use. This value will be used only if "start daemon in background" option is checked on "Interface" page.Sh_utdown DaemonShare With _DevicesShare _FoldersShared WithShort identifier for the folder. Must be the same on all devices.Show WindowShow _IDShown instead of Device ID in the cluster status.Shutdown Syncthing daemon as well?SimpleSorry, connecting to HTTPS is not supported on this platform. Please, use WebUI to disable HTTPS try again.Space-separated list of arguments and environment variables passed when starting above binary Use VARIABLE="value" to set variable and -argument="value" (with dash) for argument. If you need to pass commandline to different command (such as logger or ionice), separate prefixed arguments with exclamation mark "!" Example: STTRACE="all" logger -t /var/log/syncthing.log ! -logflags=10StaggeredStart Syncthing-GTK when I login to my desktopStart it now?Starting Syncthing daemonStoppedSync Protocol Listen AddressesSynchronizationSynchronization of folder '%s' is completed.Synchronizing %s foldersSynchronizing '%s'SyncingSyncthingSyncthing Daemon SettingsSyncthing binarySyncthing binary locationSyncthing can be managed remotely using WebUI and even if you are going to use Syncthing-GTK, WebUI needs to be enabled, as Syncthing-GTK uses it to communicate with the Syncthing daemon.Syncthing daemon binary cannot be found.Syncthing daemon binary found.Syncthing daemon doesn't appear to be running.Syncthing daemon failed to generate RSA key or certificate.Syncthing daemon is too old.Syncthing daemon not found.Syncthing has been shut down.Syncthing has been successfully configured.Syncthing is generating RSA key and certificate.Syncthing is probably restarting or has been shut down.Syncthing is restarting.Syncthing-GTKSyncthing-GTK SettingsSyncthing-GTK needs Syncthing daemon %(min)s or newer, but only %(actual)s were found.Syncthing-GTK started and running in notification areaSyncthing-Inotify OutputSyncthing-Inotify is unavailable or failed to startThe aggregated statistics are publicly available atThe configuration has been saved but not activated. Syncthing must restart to activate the new configuration.The encrypted usage report is sent daily.The entered device ID does not look valid. It should be a 52 character string consisting of letters and numbers, with spaces and dashes being optional.The first command line parameter is the folder path and the second parameter is the relative path in the folder.The number of days to keep files in the trash can.The number of old versions to keep, per file.This binary will be started when syncthing daemon is not running and "start daemon in background" option is checked on "Interface" page.This may take a while...This platform (%s) is not supportedTrashcanTry again.UI SettingsUI _SettingsUnexpected folder ID sent from device "%s".UnlimitedUnsharedUnusedUp to DateUpload RateUs_e traditional window headerUse _icons in menuVersionVersion:Versioning _ModeVersions _PathWaiting for Syncthing daemon at %s...WebUI Listen AddressesWebUI setupWelcome to Syncthing-GTK first run wizard!When exiting after daemon was started in background...When starting and Syncthing daemon is not running...XYZ-123-ABCYesYou can configure more details later, in UI Settings and Daemon Settings menus in main window of application.Your syncthing daemon is too old.Your syncthing daemon is too old. Please, upgrade syncthing package at least to version %s and try again._About_Add_Addresses_Advanced_Browse_Browse..._Compression_Download Syncthing binary_Download..._Folder Settings_Ignore_Incoming Rate Limit_Integration_Interface_Introducer_Keep Versions_Other_Outgoing Rate Limit_Password_Path_Quit_Rescan_Restart_Restart Daemon_Send Only Folder_Unlimited_Usernamedisableddownload latest binaryin %s daysin a momentjust nowlast resort and generally not suggested.never deleteno limitofflineto %s and keep it up-to-date, but this option is meant as~%s hours ago~%s hours from nowProject-Id-Version: syncthing-gtk Report-Msgid-Bugs-To: POT-Creation-Date: 2016-04-20 11:27+0200 PO-Revision-Date: 2018-08-24 17:12+0000 Last-Translator: Dz Chen Language-Team: Chinese (China) (http://www.transifex.com/syncthing-gtk/syncthing-gtk/language/zh_CN/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: zh_CN Plural-Forms: nplurals=1; plural=0; %(device)s 想要分享文件夹“%(folder)s”。添加新文件夹?%(hostname)s:已删除 %(deleted)s 个文件以反映远程更改。%(hostname)s:已删除“%(filename)s”以反映远程更改。%(hostname)s:已下载 %(updated)s 个文件以反映远程更改。%(hostname)s:已下载“%(filename)s”以反映远程更改。%(hostname)s:已下载 %(updated)s 个文件、删除 %(deleted)s 个文件以反映远程更改。%(online)s/%(total)s 在线%s KiB/s%s 天%s 天%s 天之前%s kB/s%s 分钟之前从现在起的 ~%s 分钟%s 秒之前从现在起的 ~%s 秒%s%%%ss(监视)... 询问我做什么(_A)... 等待守护程序(_W)... 询问我做什么(_H)... 错误... 文件更新... 离开并让守护程序运行(_R)... 在后台启动守护程序(_B)... 同步完成... 终止守护程序(_D)提示: 您可能需要在切换集成后重启您的文件管理器。警告: 此页面上的设置更改可能会禁止您使用 Syncthing-GTK关于 Syncthing-GTK高于正常添加共享文件夹(_F)添加设备(_D)地址所有数据所有设备已离线允许发送匿名使用情况报告?另外,Syncthing-GTK 可以下载 Syncthing 二进制文件始终采取相同操作;不要再显示此窗口始终自动启动守护程序处理文件版本控制的外部命令。它将从同步文件夹中移除文件。公告服务器在介绍人设备上配置的任何设备都也将会添加到此设备。正在尝试下载最近的,请稍候...自动更新下载的二进制文件(_U)二进制文件路径:浏览查找 Syncthing 二进制文件浏览...CPU 使用率Caja(MATE 桌面)无法调用守护程序无法授权于守护程序。请使用 WebUI 来生成 API 密钥或禁用密码身份验证。无法下载 Syncthing 守护程序。正在检查可用端口...该时间后清除:群集未同步命令压缩已连接已连接到 Syncthing 守护程序正在连接到 Syncthing 守护程序于 %s...正在连接到 Syncthing 守护程序...正在连接到守护程序...到 Syncthing 守护程序的连接已丢失。连接到守护程序失败。请检查您的配置后重试。继续此向导以创建 Syncthing 配置文件或者中止向导以退出。守护程序守护程序输出守护程序设置(_S)守护程序参数和变量守护程序进程优先级设备“%s”正尝试连接到 syncthing 守护程序。位于IP "%(ip)s" 的设备 "%(name)s" (%(device)s) 想要连接。添加新设备?设备标识设备 _ID设备名称(_N)已断开显示 Syncthing-Inotify 输出显示守护程序输出(_D)显示桌面通知用于...显示错误日志在目录面板中显示路径您真的要从 Syncthing 移除设备“%s”吗?您真的要永久停止同步目录“%s”吗?完成。下载速度下载失败。下载已完成。下载的文件已损坏。正在下载 Syncthing %s正在下载 Syncthing 守护程序。正在下载...编辑忽略模式(_I)启用本地发现(_D)启用匿名使用报告(_A)启用全局发现(_G)启用 _UPnP输入逗号分隔的 "ip:port" 设置地址列表或者 "dynamic" 来执行地址的自动发现。错误错误信息:正在退出。外部正在提取更新...创建临时文件失败。确定最新的 Syncthing 版本失败。下载 Syncthing 守护程序软件包失败。下载更新失败:%s查找用于监听的未用端口失败。生成密钥失败加载 Syncthing 配置失败从守护程序加载配置失败。修改 Syncthing 配置失败保存 Syncthing 配置失败保存配置失败。启动 Syncthing 守护程序失败。文件拉取顺序(_O)文件版本控制(_V)文件未知:文件位置:当寻找更改时忽略文件的权限位。用在 FAT 文件系统上。文件当通过 Syncthing 替代或删除文件时文件被移动到 .stversions 文件夹当文件通过 syncthing 被替代或删除时移动到 .stversions 文件夹并加上日期戳作为版本号。当文件通过 syncthing 被替代或删除时移动到 .stversions 文件夹并加上日期戳作为版本号。旧版本会自动删除如果它们老于最长存在时间或者超过在间隔中允许的文件数量。 使用间隔如下:对于最近一小时的版本,每 30 秒保存一个;对于最近一天的版本,每一小时保存一个;对于最近 30 天的版本,每天保存一个;对于超过 30 天又小于最大寿命的版本,每 周保存一个。文件已防止其它设备上所做的更改,但此设备上所做的更改将被发送到群集里的其余设备。首次运行向导文件夹 ID文件夹类型文件夹 _ID文件夹标签(_L)强制黑色主题(_D)Syncthing 的 GTK GUI 和通知区域图标GitHub全局发现服务器(_S)全局状态隐藏窗口如果启用,Syncthing-GTK 将自动检查新的守护程序发布并替换二进制文件为最新的版本。如果启用,只要 Syncthing-GTk 在运行中,更改的、创建的和删除的文件都将立即同步。 注意:使用此选项连同较短的扫描间隔 (<300s) 可能占用很多资源。如果要报告的数据集有更改,您将再次收到此对话框提示。如果您已配置过 Syncthing 守护程序,请退出该向导并检查您的 %s 文件夹如果您已安装了 Syncthing,在 %s 下面设置路径如果您已安装了 Syncthing,在 %s 下面设置路径或者点击 下载 按钮以下载最新的 Syncthing 软件包。如果您更喜欢通过互联网或本地网络上远程管理 Syncthing,选择 监听所有接口 并设置用户名和密码以防止 Syncthing 未经授权的访问。忽略权限(_E)忽略模式忽略权限字母顺序大文件优先新文件优先旧文件优先随机小文件优先应当创建初始配置。安装 %(package)s 包以启用 %(feature)s 支持集成 Syncthing 到文件管理器介绍人它用于追踪您使用的通用平台、文件夹大小和应用版本。看起来您从未用过 Syncthing。保持 Syncthing 二进制文件为最新最后出现监听所有接口(_A)监听本地主机(_L)本地发现端口(_P)本地状态低最低最长存在时间(_X)最大 CPU 核心数量仅元数据启动时最小化到托盘(_T)最低可用磁盘空间监控文件系统的更改(_C)更多信息Nautilus (Ubuntu/GNOME)Nemo(Cinamon 桌面)从不否正常关闭离线在线打开 _Web 界面守护程序启动时打开 _WebUI 浏览页可选的文件夹说明性标签。在不同设备上可以不一致。否则,选择 监听本地主机,如此只有位于本机的用户和程序能与 Syncthing 交互。未同步传出速度限制(_R)替代远程更改路径本地计算机上的文件夹路径。文件夹将被创建如果它不存在。保留版本应该保存的路径(留空表示默认的 .stversions 文件夹)。已暂停请稍候请稍候...请检查错误日志并在 %s 上填写 bug 报告。请检查您的防火墙设置后重试。请检查您的安装或设置到 Syncthing 守护程序二进制文件的新路径。请安装 pyinotify 包以使用该功能请重启 Syncthing-GTK 来应用所有已更改的设置请使用包管理器来安装 Syncthing 软件包或者从 Syncthing 页面 %(download_link)s 下载并保存到您的 %(target)s 目录。请使用包管理器来安装 Syncthing 软件包。优先级只在“在后台启动守护程序”选项在“界面”页面上已选中时使用。RAM 使用量扫描间隔扫描间隔(_I)正在重启守护程序继续恢复 Sync_thing停止 Syncthing(_T)正在保存设置...正在保存...正在扫描正在搜索 Syncthing 守护程序。查看 Syncthing 文档 获取支持模式的列表选择新文件夹选择此文件夹要共享给的设备。选择共享给此设备的文件夹发送与接收只发送设置用于守护程序使用的 CPU 核心最大数量。此数值只在“在后台启动守护程序”选项在“界面”页面上已选中时使用。关闭守护程序(_U)共享给设备(_D)共享文件夹(_F)共享给文件夹的短标识符。必须在全部设备上都相同。显示窗口显示 _ID显示以替代群集状态里的设备 ID。同时也关闭 Syncthing 守护程序?简单抱歉,此平台上不支持连接到 HTTPS。 请使用 WebUI 禁用 HTTPS 后重试。当使用上面的二进制文件时,以空格分隔的参数列表和环境变量将会被传递 使用 VARIABLE="value" 来设置变量和 -argument="value"(带短划线)来设置参数。 如果您需要传递不同的命令到命令行(比如 logger 或 ionice),请单独前插带半角感叹号标识“!”的参数。 示例: STTRACE="all" logger -t /var/log/syncthing.log ! -logflags=10阶段当我登录到桌面时启动 Syncthing-GTK现在启动吗?正在启动 Syncthing 守护程序已停止同步协议监听地址同步文件夹“%s”的同步已完成。正在同步 %s 个文件夹正在同步“%s”正在同步SyncthingSyncthing 守护程序设置Syncthing 二进制文件Syncthing 二进制文件位置Syncthing 能使用 WebUI 远程管理而且即使您要使用 Syncthing-GTK,需要启用 WebUI,因为 Syncthing-GTK 使用它来与 Syncthing 守护程序通信。Syncthing 守护程序二进制文件无法找到。已找到 Syncthing 守护程序二进制文件。Syncthing 似乎没有在运行。Syncthing 守护程序生成 RSA 密钥或证书失败。Syncthing 守护程序太旧了。未找到 Syncthing 守护程序。Syncthing 已被关闭。Syncthing 已成功配置。Syncthing 正在生成 RSA 密钥和证书。Syncthing 可能正在重启或者已被关闭。Syncthing 正在重启。Syncthing-GTKSyncthing-GTK 设置Syncthing-GTK 需要 Syncthing 守护程序 %(min)s 或更新,但只找到了 %(actual)s。Syncthing-GTK 已启动且正在通知区域中运行Syncthing-Inotify 输出Syncthing-Inotify 无法使用或启动失败该汇总统计数据会公布于配置已保存但未激活。 Syncthing 必须重启以激活新的配置。加密过的使用情况报告会每天发送。输入的设备 ID 似乎无效。设备 ID 必须为包含字母和数字的长度为 52 的字符串,可包含空格和短划线。第一个命令行参数是文件夹路径,第二个参数是文件夹里的相关路径。在垃圾站中文件的保留天数每个文件要保留的旧版本数量。此二进制文件将被启动当 syncthing 守护程序未在运行且“在后台启动守护程序”选项在“界面”页面中已选中。这可能要花一点时间...不支持此平台(%s)垃圾桶重试。UI 设置UI 设置(_S)从设备“%s”发来了意外的文件夹 ID。无限制未共享未使用已是最新 上传速度使用传统标题栏(_E)在菜单中使用图标(_I)版本版本:版本控制模式(_M)版本路径(_P)正在等待 Syncthing 守护程序于 %s...WebUI 监听地址WebUI 设置欢迎来到 Syncthing-GTK 首次运行向导!当守护程序已在后台启动后退出时...当启动中且 Syncthing 守护程序未在运行时...XYZ-123-ABC是您可以在之后配置更多详细设置,使用位于应用程序的主窗口的 UI 设置守护程序设置 菜单。您的 Syncthing 守护程序太旧了。您的 syncthing 守护程序太老了。 请更新 syncthing 包至少到版本 %s 后重试。关于(_A)添加(_A)地址(_A)高级(_A)浏览(_B)浏览(_B)...压缩(_C)下载 Syncthing 二进制文件(_D)下载(_D)...文件夹设置(_F)忽略(_I)传入速度限制(_I)集成(_I)界面(_I)介绍人(_I)保留版本(_K)其它(_O)传出速度限制(_O)密码(_P)路径(_P)退出(_Q)重新扫描(_R)重启(_R)重启守护程序(_R)只发送的文件夹(_S)无限制(_U)用户名(_U)已禁用下载最新的二进制文件在 %s 天内一会儿刚刚最后的方法且一般不建议使用。从不删除无限制离线到 %s 并保持为最新,但此选项旨在作为~%s 小时之前从现在起的 ~%s 小时syncthing-gtk-0.9.4.4/locale/zh_CN/LC_MESSAGES/syncthing-gtk.po000077500000000000000000001262371352162771300236620ustar00rootroot00000000000000# Syncthing-GTK # Copyright (C) 2014-2015 Kozec and contributors # This file is distributed under the same license as the Syncthing-GTK package. # # Translators: # Dz Chen , 2016-2018 # kozec , 2017 msgid "" msgstr "" "Project-Id-Version: syncthing-gtk\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-04-20 11:27+0200\n" "PO-Revision-Date: 2018-08-24 17:12+0000\n" "Last-Translator: Dz Chen \n" "Language-Team: Chinese (China) (http://www.transifex.com/syncthing-gtk/syncthing-gtk/language/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" #: syncthing_gtk/app.py:194 msgid "Syncthing-GTK started and running in notification area" msgstr "Syncthing-GTK 已启动且正在通知区域中运行" #: syncthing_gtk/app.py:288 #, python-format msgid "%s kB/s" msgstr "%s kB/s" #: syncthing_gtk/app.py:302 syncthing_gtk/notifications.py:77 #: syncthing_gtk/wizard.py:53 msgid "Syncthing-GTK" msgstr "Syncthing-GTK" #: syncthing_gtk/app.py:363 syncthing_gtk/app.py:364 syncthing_gtk/app.py:942 msgid "Syncing" msgstr "正在同步" #: syncthing_gtk/app.py:366 syncthing_gtk/app.py:367 msgid "Scanning" msgstr "正在扫描" #: syncthing_gtk/app.py:390 syncthing_gtk/app.py:652 msgid "Starting Syncthing daemon" msgstr "正在启动 Syncthing 守护程序" #: syncthing_gtk/app.py:424 msgid "Allow Anonymous Usage Reporting?" msgstr "允许发送匿名使用情况报告?" #: syncthing_gtk/app.py:426 msgid "The encrypted usage report is sent daily." msgstr "加密过的使用情况报告会每天发送。" #: syncthing_gtk/app.py:427 msgid "It is used to track common platforms, folder sizes and app versions." msgstr "它用于追踪您使用的通用平台、文件夹大小和应用版本。" #: syncthing_gtk/app.py:428 msgid "" "If the reported data set is changed you will be prompted with this dialog " "again." msgstr "如果要报告的数据集有更改,您将再次收到此对话框提示。" #: syncthing_gtk/app.py:430 msgid "The aggregated statistics are publicly available at" msgstr "该汇总统计数据会公布于" #: syncthing_gtk/app.py:486 msgid "Extracting update..." msgstr "正在提取更新..." #: syncthing_gtk/app.py:491 msgid "Restarting daemon..." msgstr "正在重启守护程序" #: syncthing_gtk/app.py:507 #, python-format msgid "Failed to download upgrade: %s" msgstr "下载更新失败:%s" #: syncthing_gtk/app.py:525 #, python-format msgid "Downloading Syncthing %s" msgstr "正在下载 Syncthing %s" #: syncthing_gtk/app.py:604 msgid "Connected to Syncthing daemon" msgstr "已连接到 Syncthing 守护程序" #: syncthing_gtk/app.py:614 msgid "Connection to Syncthing daemon lost." msgstr "到 Syncthing 守护程序的连接已丢失。" #: syncthing_gtk/app.py:615 msgid "Syncthing is probably restarting or has been shut down." msgstr "Syncthing 可能正在重启或者已被关闭。" #: syncthing_gtk/app.py:617 msgid "Syncthing has been shut down." msgstr "Syncthing 已被关闭。" #: syncthing_gtk/app.py:621 syncthing_gtk/app.py:1499 msgid "Syncthing is restarting." msgstr "Syncthing 正在重启。" #: syncthing_gtk/app.py:621 syncthing_gtk/app.py:1499 msgid "Please wait" msgstr "请稍候" #: syncthing_gtk/app.py:644 #, python-format msgid "Connecting to Syncthing daemon at %s..." msgstr "正在连接到 Syncthing 守护程序于 %s..." #: syncthing_gtk/app.py:649 #, python-format msgid "Waiting for Syncthing daemon at %s..." msgstr "正在等待 Syncthing 守护程序于 %s..." #: syncthing_gtk/app.py:664 msgid "Your syncthing daemon is too old." msgstr "您的 Syncthing 守护程序太旧了。" #: syncthing_gtk/app.py:664 msgid "Attempting to download recent, please wait..." msgstr "正在尝试下载最近的,请稍候..." #: syncthing_gtk/app.py:670 msgid "" "Cannot authorize with daemon. Please, use WebUI to generate API key or " "disable password authentication." msgstr "无法授权于守护程序。请使用 WebUI 来生成 API 密钥或禁用密码身份验证。" #: syncthing_gtk/app.py:672 #, python-format msgid "" "Your syncthing daemon is too old.\n" "Please, upgrade syncthing package at least to version %s and try again." msgstr "您的 syncthing 守护程序太老了。\n请更新 syncthing 包至少到版本 %s 后重试。" #: syncthing_gtk/app.py:674 msgid "" "Sorry, connecting to HTTPS is not supported on this platform.\n" "Please, use WebUI to disable HTTPS try again." msgstr "抱歉,此平台上不支持连接到 HTTPS。\n请使用 WebUI 禁用 HTTPS 后重试。" #: syncthing_gtk/app.py:677 msgid "Connection to daemon failed. Check your configuration and try again." msgstr "连接到守护程序失败。请检查您的配置后重试。" #: syncthing_gtk/app.py:678 syncthing_gtk/app.py:1992 #: syncthing_gtk/editordialog.py:314 msgid "Error message:" msgstr "错误信息:" #: syncthing_gtk/app.py:689 msgid "More info" msgstr "更多信息" #: syncthing_gtk/app.py:715 msgid "" "The configuration has been saved but not activated.\n" "Syncthing must restart to activate the new configuration." msgstr "配置已保存但未激活。\nSyncthing 必须重启以激活新的配置。" #: syncthing_gtk/app.py:717 msgid "_Restart" msgstr "重启(_R)" #: syncthing_gtk/app.py:784 #, python-format msgid "%(device)s wants to share folder \"%(folder)s\". Add new folder?" msgstr "%(device)s 想要分享文件夹“%(folder)s”。添加新文件夹?" #: syncthing_gtk/app.py:791 syncthing_gtk/app.py:813 msgid "_Add" msgstr "添加(_A)" #: syncthing_gtk/app.py:806 #, python-format msgid "" "Device \"%(name)s\" (%(device)s) at IP \"%(ip)s\" wants to " "connect. Add new device?" msgstr "位于IP \"%(ip)s\" 的设备 \"%(name)s\" (%(device)s) 想要连接。添加新设备?" #: syncthing_gtk/app.py:814 msgid "_Ignore" msgstr "忽略(_I)" #: syncthing_gtk/app.py:832 msgid "RAM Utilization" msgstr "RAM 使用量" #: syncthing_gtk/app.py:833 msgid "CPU Utilization" msgstr "CPU 使用率" #: syncthing_gtk/app.py:834 syncthing_gtk/app.py:1353 msgid "Download Rate" msgstr "下载速度" #: syncthing_gtk/app.py:835 syncthing_gtk/app.py:1354 msgid "Upload Rate" msgstr "上传速度" #: syncthing_gtk/app.py:836 msgid "Announce Server" msgstr "公告服务器" #: syncthing_gtk/app.py:837 syncthing_gtk/app.py:1356 msgid "Version" msgstr "版本" #: syncthing_gtk/app.py:860 syncthing_gtk/editordialog.py:394 msgid "disabled" msgstr "已禁用" #: syncthing_gtk/app.py:862 msgid "Online" msgstr "在线" #: syncthing_gtk/app.py:862 msgid "offline" msgstr "离线" #: syncthing_gtk/app.py:864 #, python-format msgid "%(online)s/%(total)s online" msgstr "%(online)s/%(total)s 在线" #: syncthing_gtk/app.py:891 syncthing_gtk/app.py:1357 #: syncthing_gtk/app.py:1382 msgid "Never" msgstr "从不" #: syncthing_gtk/app.py:899 syncthing_gtk/app.py:1691 #: syncthing_gtk/app.py:1692 msgid "Paused" msgstr "已暂停" #: syncthing_gtk/app.py:899 syncthing_gtk/app.py:924 syncthing_gtk/app.py:939 #: syncthing_gtk/infobox.py:60 msgid "Disconnected" msgstr "已断开" #: syncthing_gtk/app.py:916 msgid "Connected" msgstr "已连接" #: syncthing_gtk/app.py:945 syncthing_gtk/app.py:980 syncthing_gtk/app.py:1030 #: syncthing_gtk/app.py:1031 syncthing_gtk/app.py:1070 msgid "Up to Date" msgstr "已是最新 " #: syncthing_gtk/app.py:966 syncthing_gtk/app.py:967 syncthing_gtk/app.py:968 msgid "Files" msgstr "文件" #: syncthing_gtk/app.py:980 syncthing_gtk/app.py:1068 msgid "Cluster out of sync" msgstr "群集未同步" #: syncthing_gtk/app.py:995 msgid "Stopped" msgstr "已停止" #: syncthing_gtk/app.py:998 syncthing_gtk/app.py:1005 msgid "Error" msgstr "错误" #: syncthing_gtk/app.py:1024 #, python-format msgid "Synchronizing '%s'" msgstr "正在同步“%s”" #: syncthing_gtk/app.py:1026 #, python-format msgid "Synchronizing %s folders" msgstr "正在同步 %s 个文件夹" #: syncthing_gtk/app.py:1035 syncthing_gtk/app.py:1036 msgid "All devices offline" msgstr "所有设备已离线" #: syncthing_gtk/app.py:1040 syncthing_gtk/app.py:1041 msgid "Connecting to Syncthing daemon..." msgstr "正在连接到 Syncthing 守护程序..." #: syncthing_gtk/app.py:1079 msgid "Unshared" msgstr "未共享" #: syncthing_gtk/app.py:1082 msgid "Offline" msgstr "离线" #: syncthing_gtk/app.py:1176 msgid "Hide Window" msgstr "隐藏窗口" #: syncthing_gtk/app.py:1190 app.glade:651 msgid "Show Window" msgstr "显示窗口" #: syncthing_gtk/app.py:1239 msgid "Syncthing daemon doesn't appear to be running." msgstr "Syncthing 似乎没有在运行。" #: syncthing_gtk/app.py:1240 msgid "Start it now?" msgstr "现在启动吗?" #: syncthing_gtk/app.py:1243 msgid "Always start daemon automatically" msgstr "始终自动启动守护程序" #: syncthing_gtk/app.py:1292 msgid "Folder ID" msgstr "文件夹 ID" #: syncthing_gtk/app.py:1293 msgid "Path" msgstr "路径" #: syncthing_gtk/app.py:1294 msgid "Global State" msgstr "全局状态" #: syncthing_gtk/app.py:1295 msgid "Local State" msgstr "本地状态" #: syncthing_gtk/app.py:1296 msgid "Out Of Sync" msgstr "未同步" #: syncthing_gtk/app.py:1297 msgid "Folder Type" msgstr "文件夹类型" #: syncthing_gtk/app.py:1298 msgid "Ignore Permissions" msgstr "忽略权限" #: syncthing_gtk/app.py:1299 msgid "Rescan Interval" msgstr "扫描间隔" #: syncthing_gtk/app.py:1300 msgid "Shared With" msgstr "共享给" #: syncthing_gtk/app.py:1324 syncthing_gtk/app.py:1325 #: syncthing_gtk/app.py:1381 msgid "Yes" msgstr "是" #: syncthing_gtk/app.py:1324 syncthing_gtk/app.py:1325 #: syncthing_gtk/app.py:1381 msgid "No" msgstr "否" #: syncthing_gtk/app.py:1327 msgid "(watch)" msgstr "(监视)" #: syncthing_gtk/app.py:1341 msgid "Unused" msgstr "未使用" #: syncthing_gtk/app.py:1350 msgid "Address" msgstr "地址" #: syncthing_gtk/app.py:1351 msgid "Synchronization" msgstr "同步" #: syncthing_gtk/app.py:1352 msgid "Compression" msgstr "压缩" #: syncthing_gtk/app.py:1355 msgid "Introducer" msgstr "介绍人" #: syncthing_gtk/app.py:1357 msgid "Last Seen" msgstr "最后出现" #: syncthing_gtk/app.py:1378 device-edit.glade:22 msgid "All Data" msgstr "所有数据" #: syncthing_gtk/app.py:1379 device-edit.glade:26 folder-edit.glade:78 msgid "Off" msgstr "关闭" #: syncthing_gtk/app.py:1375 msgid "Send Only" msgstr "只发送" #: syncthing_gtk/app.py:1375 msgid "Send & Receive" msgstr "发送与接收" #: syncthing_gtk/app.py:1380 device-edit.glade:30 msgid "Metadata Only" msgstr "仅元数据" #: syncthing_gtk/app.py:1522 msgid "Exiting." msgstr "正在退出。" #: syncthing_gtk/app.py:1523 msgid "Shutdown Syncthing daemon as well?" msgstr "同时也关闭 Syncthing 守护程序?" #: syncthing_gtk/app.py:1528 msgid "Always do same; Don't show this window again" msgstr "始终采取相同操作;不要再显示此窗口" #: syncthing_gtk/app.py:1768 #, python-format msgid "Do you really want to permanently stop synchronizing directory '%s'?" msgstr "您真的要永久停止同步目录“%s”吗?" #: syncthing_gtk/app.py:1770 #, python-format msgid "Do you really want remove device '%s' from Syncthing?" msgstr "您真的要从 Syncthing 移除设备“%s”吗?" #: syncthing_gtk/app.py:1838 msgid "Syncthing-Inotify Output" msgstr "Syncthing-Inotify 输出" #: syncthing_gtk/app.py:1844 msgid "Syncthing-Inotify is unavailable or failed to start" msgstr "Syncthing-Inotify 无法使用或启动失败" #: syncthing_gtk/app.py:1991 msgid "Failed to start Syncthing daemon." msgstr "启动 Syncthing 守护程序失败。" #: syncthing_gtk/app.py:1993 msgid "" "Please, check your installation or set new path to Syncthing daemon binary." msgstr "请检查您的安装或设置到 Syncthing 守护程序二进制文件的新路径。" #: syncthing_gtk/daemonsettings.py:24 msgid "Syncthing Daemon Settings" msgstr "Syncthing 守护程序设置" #: syncthing_gtk/deviceeditor.py:24 msgid "" "The entered device ID does not look valid. It should be a 52 character " "string consisting of letters and numbers, with spaces and dashes being " "optional." msgstr "输入的设备 ID 似乎无效。设备 ID 必须为包含字母和数字的长度为 52 的字符串,可包含空格和短划线。" #: syncthing_gtk/editordialog.py:312 msgid "Failed to load configuration from daemon." msgstr "从守护程序加载配置失败。" #: syncthing_gtk/editordialog.py:313 msgid "Try again." msgstr "重试。" #: syncthing_gtk/editordialog.py:387 syncthing_gtk/editordialog.py:396 #, python-format msgid "%ss" msgstr "%ss" #: syncthing_gtk/editordialog.py:402 #, python-format msgid "%s%%" msgstr "%s%%" #: syncthing_gtk/editordialog.py:409 msgid "no limit" msgstr "无限制" #: syncthing_gtk/editordialog.py:411 #, python-format msgid "%s KiB/s" msgstr "%s KiB/s" #: syncthing_gtk/editordialog.py:418 msgid "never delete" msgstr "从不删除" #: syncthing_gtk/editordialog.py:420 #, python-format msgid "%s day" msgstr "%s 天" #: syncthing_gtk/editordialog.py:422 #, python-format msgid "%s days" msgstr "%s 天" #: syncthing_gtk/editordialog.py:455 msgid "Failed to save configuration." msgstr "保存配置失败。" #: syncthing_gtk/finddaemondialog.py:24 find-daemon.glade:7 msgid "Can't invoke the daemon" msgstr "无法调用守护程序" #: syncthing_gtk/finddaemondialog.py:26 msgid "Syncthing binary" msgstr "Syncthing 二进制文件" #: syncthing_gtk/finddaemondialog.py:28 syncthing_gtk/finddaemondialog.py:37 msgid "Syncthing daemon binary cannot be found." msgstr "Syncthing 守护程序二进制文件无法找到。" #: syncthing_gtk/finddaemondialog.py:29 #, python-format msgid "" "If you have Syncthing installed, please, set path to %s below or click on " "Download button to download latest Syncthing package." msgstr "如果您已安装了 Syncthing,在 %s 下面设置路径或者点击 下载 按钮以下载最新的 Syncthing 软件包。" #: syncthing_gtk/finddaemondialog.py:38 #, python-format msgid "If you have Syncthing installed, please, set path to %s below" msgstr "如果您已安装了 Syncthing,在 %s 下面设置路径" #: syncthing_gtk/finddaemondialog.py:82 syncthing_gtk/wizard.py:411 msgid "Cannot download Syncthing daemon." msgstr "无法下载 Syncthing 守护程序。" #: syncthing_gtk/finddaemondialog.py:83 syncthing_gtk/wizard.py:412 #, python-format msgid "This platform (%s) is not supported" msgstr "不支持此平台(%s)" #: syncthing_gtk/finddaemondialog.py:100 msgid "Downloading..." msgstr "正在下载..." #: syncthing_gtk/finddaemondialog.py:163 syncthing_gtk/stdownloader.py:251 #: syncthing_gtk/stdownloader.py:279 msgid "Download failed." msgstr "下载失败。" #: syncthing_gtk/finddaemondialog.py:185 syncthing_gtk/wizard.py:458 msgid "Download finished." msgstr "下载已完成。" #: syncthing_gtk/foldereditor.py:45 msgid "Select Folder for new Folder" msgstr "选择新文件夹" #: syncthing_gtk/foldereditor.py:166 syncthing_gtk/foldereditor.py:167 msgid "Please, install pyinotify package to use this feature" msgstr "请安装 pyinotify 包以使用该功能" #: syncthing_gtk/ignoreeditor.py:44 msgid "File location:" msgstr "文件未知:" #: syncthing_gtk/notifications.py:120 #, python-format msgid "Unexpected folder ID sent from device \"%s\"." msgstr "从设备“%s”发来了意外的文件夹 ID。" #: syncthing_gtk/notifications.py:124 #, python-format msgid "Device \"%s\" is trying to connect to syncthing daemon." msgstr "设备“%s”正尝试连接到 syncthing 守护程序。" #: syncthing_gtk/notifications.py:153 #, python-format msgid "Synchronization of folder '%s' is completed." msgstr "文件夹“%s”的同步已完成。" #: syncthing_gtk/notifications.py:160 #, python-format msgid "%(hostname)s: Downloaded '%(filename)s' to reflect remote changes." msgstr "%(hostname)s:已下载“%(filename)s”以反映远程更改。" #: syncthing_gtk/notifications.py:165 #, python-format msgid "%(hostname)s: Deleted '%(filename)s' to reflect remote changes." msgstr "%(hostname)s:已删除“%(filename)s”以反映远程更改。" #: syncthing_gtk/notifications.py:168 #, python-format msgid "%(hostname)s: Downloaded %(updated)s files to reflect remote changes." msgstr "%(hostname)s:已下载 %(updated)s 个文件以反映远程更改。" #: syncthing_gtk/notifications.py:171 #, python-format msgid "%(hostname)s: Deleted %(deleted)s files to reflect remote changes." msgstr "%(hostname)s:已删除 %(deleted)s 个文件以反映远程更改。" #: syncthing_gtk/notifications.py:175 #, python-format msgid "" "%(hostname)s: downloaded %(updated)s files and deleted %(deleted)s files to " "reflect remote changes." msgstr "%(hostname)s:已下载 %(updated)s 个文件、删除 %(deleted)s 个文件以反映远程更改。" #: syncthing_gtk/statusicon.py:48 msgid "Syncthing" msgstr "Syncthing" #: syncthing_gtk/stdownloader.py:174 syncthing_gtk/stdownloader.py:217 #: syncthing_gtk/stdownloader.py:313 syncthing_gtk/stdownloader.py:344 msgid "Failed to determine latest Syncthing version." msgstr "确定最新的 Syncthing 版本失败。" #: syncthing_gtk/stdownloader.py:236 msgid "Failed to create temporaly file." msgstr "创建临时文件失败。" #: syncthing_gtk/stdownloader.py:294 msgid "Downloaded file is corrupted." msgstr "下载的文件已损坏。" #: syncthing_gtk/tools.py:192 #, python-format msgid "~%s hours ago" msgstr "~%s 小时之前" #: syncthing_gtk/tools.py:194 #, python-format msgid "%s minutes ago" msgstr "%s 分钟之前" #: syncthing_gtk/tools.py:196 #, python-format msgid "%s seconds ago" msgstr "%s 秒之前" #: syncthing_gtk/tools.py:197 msgid "just now" msgstr "刚刚" #: syncthing_gtk/tools.py:199 #, python-format msgid "%s days ago" msgstr "%s 天之前" #: syncthing_gtk/tools.py:203 #, python-format msgid "in %s days" msgstr "在 %s 天内" #: syncthing_gtk/tools.py:205 #, python-format msgid "~%s hours from now" msgstr "从现在起的 ~%s 小时" #: syncthing_gtk/tools.py:207 #, python-format msgid "%s minutes from now" msgstr "从现在起的 ~%s 分钟" #: syncthing_gtk/tools.py:209 #, python-format msgid "%s seconds from now" msgstr "从现在起的 ~%s 秒" #: syncthing_gtk/tools.py:210 msgid "in a moment" msgstr "一会儿" #: syncthing_gtk/uisettingsdialog.py:58 msgid "UI Settings" msgstr "UI 设置" #: syncthing_gtk/uisettingsdialog.py:70 msgid "Unlimited" msgstr "无限制" #: syncthing_gtk/uisettingsdialog.py:107 #, python-format msgid "Install %(package)s package to enable %(feature)s support" msgstr "安装 %(package)s 包以启用 %(feature)s 支持" #: syncthing_gtk/uisettingsdialog.py:312 msgid "Browse for Syncthing binary" msgstr "浏览查找 Syncthing 二进制文件" #: syncthing_gtk/wizard.py:53 msgid "First run wizard" msgstr "首次运行向导" #: syncthing_gtk/wizard.py:137 #, python-format msgid "Please, check error log and fill bug report on %s." msgstr "请检查错误日志并在 %s 上填写 bug 报告。" #: syncthing_gtk/wizard.py:141 msgid "Display error log" msgstr "显示错误日志" #: syncthing_gtk/wizard.py:198 msgid "Welcome to Syncthing-GTK first run wizard!" msgstr "欢迎来到 Syncthing-GTK 首次运行向导!" #: syncthing_gtk/wizard.py:200 msgid "It looks like you never have used Syncthing." msgstr "看起来您从未用过 Syncthing。" #: syncthing_gtk/wizard.py:201 msgid "Initial configuration should be created." msgstr "应当创建初始配置。" #: syncthing_gtk/wizard.py:202 msgid "" "Continue this wizard to create a Syncthing configuration file or abort it to exit." msgstr "继续此向导以创建 Syncthing 配置文件或者中止向导以退出。" #: syncthing_gtk/wizard.py:204 #, python-format msgid "" "If you already had Syncthing daemon configured, please, exit this wizard and" " check your %s folder" msgstr "如果您已配置过 Syncthing 守护程序,请退出该向导并检查您的 %s 文件夹" #: syncthing_gtk/wizard.py:220 msgid "Searching for Syncthing daemon." msgstr "正在搜索 Syncthing 守护程序。" #: syncthing_gtk/wizard.py:222 syncthing_gtk/wizard.py:394 msgid "Please wait..." msgstr "请稍候..." #: syncthing_gtk/wizard.py:270 syncthing_gtk/wizard.py:287 msgid "Syncthing daemon not found." msgstr "未找到 Syncthing 守护程序。" #: syncthing_gtk/wizard.py:271 msgid "Please, use package manager to install the Syncthing package." msgstr "请使用包管理器来安装 Syncthing 软件包。" #: syncthing_gtk/wizard.py:283 msgid "download latest binary" msgstr "下载最新的二进制文件" #: syncthing_gtk/wizard.py:288 syncthing_gtk/wizard.py:302 #, python-format msgid "" "Please, use package manager to install the Syncthing package or " "%(download_link)s from Syncthing page and save it to your %(target)s " "directory." msgstr "请使用包管理器来安装 Syncthing 软件包或者从 Syncthing 页面 %(download_link)s 下载并保存到您的 %(target)s 目录。" #: syncthing_gtk/wizard.py:296 msgid "Syncthing daemon is too old." msgstr "Syncthing 守护程序太旧了。" #: syncthing_gtk/wizard.py:297 #, python-format msgid "" "Syncthing-GTK needs Syncthing daemon %(min)s or newer, but only %(actual)s " "were found." msgstr "Syncthing-GTK 需要 Syncthing 守护程序 %(min)s 或更新,但只找到了 %(actual)s。" #: syncthing_gtk/wizard.py:309 msgid "Alternatively, Syncthing-GTK can download Syncthing binary" msgstr "另外,Syncthing-GTK 可以下载 Syncthing 二进制文件" #: syncthing_gtk/wizard.py:310 #, python-format msgid "to %s and keep it up-to-date, but this option is meant as" msgstr "到 %s 并保持为最新,但此选项旨在作为" #: syncthing_gtk/wizard.py:312 msgid "last resort and generally not suggested." msgstr "最后的方法且一般不建议使用。" #: syncthing_gtk/wizard.py:315 msgid "_Download Syncthing binary" msgstr "下载 Syncthing 二进制文件(_D)" #: syncthing_gtk/wizard.py:319 msgid "Auto_update downloaded binary" msgstr "自动更新下载的二进制文件(_U)" #: syncthing_gtk/wizard.py:375 msgid "Syncthing daemon binary found." msgstr "已找到 Syncthing 守护程序二进制文件。" #: syncthing_gtk/wizard.py:377 syncthing_gtk/wizard.py:460 msgid "Binary path:" msgstr "二进制文件路径:" #: syncthing_gtk/wizard.py:378 msgid "Version:" msgstr "版本:" #: syncthing_gtk/wizard.py:393 msgid "Downloading Syncthing daemon." msgstr "正在下载 Syncthing 守护程序。" #: syncthing_gtk/wizard.py:441 msgid "Failed to download Syncthing daemon package." msgstr "下载 Syncthing 守护程序软件包失败。" #: syncthing_gtk/wizard.py:472 msgid "Syncthing is generating RSA key and certificate." msgstr "Syncthing 正在生成 RSA 密钥和证书。" #: syncthing_gtk/wizard.py:473 msgid "This may take a while..." msgstr "这可能要花一点时间..." #: syncthing_gtk/wizard.py:515 msgid "Failed to generate keys" msgstr "生成密钥失败" #: syncthing_gtk/wizard.py:516 msgid "Syncthing daemon failed to generate RSA key or certificate." msgstr "Syncthing 守护程序生成 RSA 密钥或证书失败。" #: syncthing_gtk/wizard.py:526 msgid "WebUI setup" msgstr "WebUI 设置" #: syncthing_gtk/wizard.py:528 msgid "" "Syncthing can be managed remotely using WebUI and even if you are going to " "use Syncthing-GTK, WebUI needs to be enabled, as Syncthing-GTK uses it to " "communicate with the Syncthing daemon." msgstr "Syncthing 能使用 WebUI 远程管理而且即使您要使用 Syncthing-GTK,需要启用 WebUI,因为 Syncthing-GTK 使用它来与 Syncthing 守护程序通信。" #: syncthing_gtk/wizard.py:533 msgid "" "If you prefer to be able to manage Syncthing remotely, over the internet or " "on your local network, select listen on all interfaces and set " "username and password to protect Syncthing from unauthorized access." msgstr "如果您更喜欢通过互联网或本地网络上远程管理 Syncthing,选择 监听所有接口 并设置用户名和密码以防止 Syncthing 未经授权的访问。" #: syncthing_gtk/wizard.py:538 msgid "" "Otherwise, select listen on localhost, so only users and programs on " "this computer will be able to interact with Syncthing." msgstr "否则,选择 监听本地主机,如此只有位于本机的用户和程序能与 Syncthing 交互。" #: syncthing_gtk/wizard.py:544 msgid "WebUI Listen Addresses" msgstr "WebUI 监听地址" #: syncthing_gtk/wizard.py:545 msgid "Listen on _localhost" msgstr "监听本地主机(_L)" #: syncthing_gtk/wizard.py:547 msgid "Listen on _all interfaces" msgstr "监听所有接口(_A)" #: syncthing_gtk/wizard.py:554 msgid "_Username" msgstr "用户名(_U)" #: syncthing_gtk/wizard.py:555 msgid "_Password" msgstr "密码(_P)" #: syncthing_gtk/wizard.py:609 msgid "Saving settings..." msgstr "正在保存设置..." #: syncthing_gtk/wizard.py:610 msgid "Checking for available port..." msgstr "正在检查可用端口..." #: syncthing_gtk/wizard.py:631 msgid "Failed to find unused port for listening." msgstr "查找用于监听的未用端口失败。" #: syncthing_gtk/wizard.py:632 msgid "Please, check your firewall settings and try again." msgstr "请检查您的防火墙设置后重试。" #: syncthing_gtk/wizard.py:646 msgid "Saving..." msgstr "正在保存..." #: syncthing_gtk/wizard.py:678 msgid "Failed to load Syncthing configuration" msgstr "加载 Syncthing 配置失败" #: syncthing_gtk/wizard.py:705 msgid "Failed to modify Syncthing configuration" msgstr "修改 Syncthing 配置失败" #: syncthing_gtk/wizard.py:715 msgid "Failed to save Syncthing configuration" msgstr "保存 Syncthing 配置失败" #: syncthing_gtk/wizard.py:729 msgid "Done." msgstr "完成。" #: syncthing_gtk/wizard.py:731 msgid "Syncthing has been successfully configured." msgstr "Syncthing 已成功配置。" #: syncthing_gtk/wizard.py:733 msgid "" "You can configure more details later, in UI Settings and Daemon " "Settings menus in main window of application." msgstr "您可以在之后配置更多详细设置,使用位于应用程序的主窗口的 UI 设置守护程序设置 菜单。" #: about.glade:7 msgid "About Syncthing-GTK" msgstr "关于 Syncthing-GTK" #: about.glade:10 msgid "GTK GUI and notification area icon for Syncthing" msgstr "Syncthing 的 GTK GUI 和通知区域图标" #: about.glade:12 msgid "GitHub" msgstr "GitHub" #: app.glade:239 app.glade:420 app.glade:802 msgid "Open _Web Interface" msgstr "打开 _Web 界面" #: app.glade:251 app.glade:424 app.glade:814 msgid "Display _Daemon Output" msgstr "显示守护程序输出(_D)" #: app.glade:263 msgid "Display Syncthing-Inotify Output" msgstr "显示 Syncthing-Inotify 输出" #: app.glade:280 app.glade:430 msgid "UI _Settings" msgstr "UI 设置(_S)" #: app.glade:325 app.glade:451 msgid "Add Shared _Folder" msgstr "添加共享文件夹(_F)" #: app.glade:338 app.glade:455 msgid "Add _Device" msgstr "添加设备(_D)" #: app.glade:356 app.glade:461 msgid "Daemon _Settings" msgstr "守护程序设置(_S)" #: app.glade:371 app.glade:465 app.glade:588 app.glade:788 msgid "Show _ID" msgstr "显示 _ID" #: app.glade:391 app.glade:471 msgid "Sh_utdown Daemon" msgstr "关闭守护程序(_U)" #: app.glade:404 app.glade:475 msgid "_Restart Daemon" msgstr "重启守护程序(_R)" #: app.glade:436 msgid "_About" msgstr "关于(_A)" #: app.glade:440 msgid "_Quit" msgstr "退出(_Q)" #: app.glade:490 msgid "Override Remote Changes" msgstr "替代远程更改" #: app.glade:519 msgid "Edit _Ignore Patterns" msgstr "编辑忽略模式(_I)" #: app.glade:547 msgid "_Rescan" msgstr "重新扫描(_R)" #: app.glade:559 msgid "_Browse" msgstr "浏览(_B)" #: app.glade:611 msgid "Resume" msgstr "继续" #: app.glade:641 msgid "Connecting to daemon..." msgstr "正在连接到守护程序..." #: app.glade:669 msgid "S_top Syncthing" msgstr "停止 Syncthing(_T)" #: app.glade:683 msgid "Resume Sync_thing" msgstr "恢复 Sync_thing" #: app.glade:695 daemon-settings.glade:335 msgid "_Incoming Rate Limit" msgstr "传入速度限制(_I)" #: app.glade:709 app.glade:751 msgid "_Unlimited" msgstr "无限制(_U)" #: app.glade:718 app.glade:760 msgid "_Other" msgstr "其它(_O)" #: app.glade:737 msgid "_Outgoing Rate Limit" msgstr "传出速度限制(_O)" #: daemon-output.glade:7 msgid "Daemon Output" msgstr "守护程序输出" #: daemon-settings.glade:106 msgid "Sync Protocol Listen Addresses" msgstr "同步协议监听地址" #: daemon-settings.glade:136 msgid "Enable Local _Discovery" msgstr "启用本地发现(_D)" #: daemon-settings.glade:153 msgid "Enable _UPnP" msgstr "启用 _UPnP" #: daemon-settings.glade:171 msgid "Local Discovery _Port" msgstr "本地发现端口(_P)" #: daemon-settings.glade:212 msgid "Outgoing _Rate Limit" msgstr "传出速度限制(_R)" #: daemon-settings.glade:229 msgid "Open browser with _WebUI when daemon is starting" msgstr "守护程序启动时打开 _WebUI 浏览页" #: daemon-settings.glade:246 msgid "Enable _Anonymous Usage Reporting" msgstr "启用匿名使用报告(_A)" #: daemon-settings.glade:262 msgid "Enable _Global Discovery" msgstr "启用全局发现(_G)" #: daemon-settings.glade:281 msgid "Global Discovery _Servers" msgstr "全局发现服务器(_S)" #: device-edit.glade:102 msgid "Device _ID" msgstr "设备 _ID" #: device-edit.glade:134 msgid "Device _Name" msgstr "设备名称(_N)" #: device-edit.glade:166 msgid "Shown instead of Device ID in the cluster status." msgstr "显示以替代群集状态里的设备 ID。" #: device-edit.glade:181 msgid "_Addresses" msgstr "地址(_A)" #: device-edit.glade:213 msgid "" "Enter comma separated \"ip:port\" addresses or \"dynamic\" to perform " "automatic discovery of the address." msgstr "输入逗号分隔的 \"ip:port\" 设置地址列表或者 \"dynamic\" 来执行地址的自动发现。" #: device-edit.glade:242 msgid "Share _Folders" msgstr "共享文件夹(_F)" #: device-edit.glade:276 msgid "Select the folders to share with this device" msgstr "选择共享给此设备的文件夹" #: device-edit.glade:287 msgid "_Introducer" msgstr "介绍人(_I)" #: device-edit.glade:308 msgid "" "Any devices configured on an introducer device will be added to this device " "as well." msgstr "在介绍人设备上配置的任何设备都也将会添加到此设备。" #: device-edit.glade:323 msgid "_Compression" msgstr "压缩(_C)" #: device-id.glade:14 msgid "Device Identification" msgstr "设备标识" #: device-id.glade:68 msgid "XYZ-123-ABC" msgstr "XYZ-123-ABC" #: find-daemon.glade:126 ui-settings.glade:821 msgid "_Browse..." msgstr "浏览(_B)..." #: find-daemon.glade:179 msgid "_Download..." msgstr "下载(_D)..." #: folder-edit.glade:44 msgctxt "In File Pull Order combobox" msgid "Random" msgstr "随机" #: folder-edit.glade:48 msgctxt "In File Pull Order combobox" msgid "Alphabetic" msgstr "字母顺序" #: folder-edit.glade:52 msgctxt "In File Pull Order combobox" msgid "Smallest First" msgstr "小文件优先" #: folder-edit.glade:56 msgctxt "In File Pull Order combobox" msgid "Largest First" msgstr "大文件优先" #: folder-edit.glade:60 msgctxt "In File Pull Order combobox" msgid "Oldest First" msgstr "旧文件优先" #: folder-edit.glade:64 msgctxt "In File Pull Order combobox" msgid "Newest First" msgstr "新文件优先" #: folder-edit.glade:82 msgid "Simple" msgstr "简单" #: folder-edit.glade:86 msgid "Staggered" msgstr "阶段" #: folder-edit.glade:90 msgid "Trashcan" msgstr "垃圾桶" #: folder-edit.glade:94 msgid "External" msgstr "外部" #: folder-edit.glade:171 msgid "Folder _Label" msgstr "文件夹标签(_L)" #: folder-edit.glade:202 msgid "Short identifier for the folder. Must be the same on all devices." msgstr "文件夹的短标识符。必须在全部设备上都相同。" #: folder-edit.glade:216 msgid "_Path" msgstr "路径(_P)" #: folder-edit.glade:234 msgid "" "Path to the folder on the local computer. Will be created if it does not " "exist." msgstr "本地计算机上的文件夹路径。文件夹将被创建如果它不存在。" #: folder-edit.glade:248 msgid "Rescan _Interval" msgstr "扫描间隔(_I)" #: folder-edit.glade:293 msgid "Monitor filesystem for _changes" msgstr "监控文件系统的更改(_C)" #: folder-edit.glade:314 msgid "" "If enabled, changed, created and delete files are synchronized immediately, as long as Syncthing-GTK is running.\n" "Note: Using this along with short Rescan Interval (<300s) may consume a lot of resources." msgstr "如果启用,只要 Syncthing-GTk 在运行中,更改的、创建的和删除的文件都将立即同步。\n注意:使用此选项连同较短的扫描间隔 (<300s) 可能占用很多资源。" #: folder-edit.glade:343 msgid "Browse..." msgstr "浏览..." #: folder-edit.glade:366 msgid "Folder _ID" msgstr "文件夹 _ID" #: folder-edit.glade:396 msgid "" "Optional descriptive label for the folder. Can be different on each device." msgstr "可选的文件夹说明性标签。在不同设备上可以不一致。" #: folder-edit.glade:418 msgid "_Send Only Folder" msgstr "只发送的文件夹(_S)" #: folder-edit.glade:439 msgid "" "Files are protected from changes made on other devices, but changes made on " "this device will be sent to the rest of the cluster." msgstr "文件已防止其它设备上所做的更改,但此设备上所做的更改将被发送到群集里的其余设备。" #: folder-edit.glade:456 msgid "_Folder Settings" msgstr "文件夹设置(_F)" #: folder-edit.glade:476 msgid "Select the devices to share this folder with." msgstr "选择此文件夹要共享给的设备。" #: folder-edit.glade:514 msgid "Share With _Devices" msgstr "共享给设备(_D)" #: folder-edit.glade:535 msgid "Versioning _Mode" msgstr "版本控制模式(_M)" #: folder-edit.glade:590 msgid "" "Files are moved to date stamped versions in a .stversions folder when " "replaced or deleted by syncthing." msgstr "当文件通过 syncthing 被替代或删除时移动到 .stversions 文件夹并加上日期戳作为版本号。" #: folder-edit.glade:605 msgid "_Keep Versions" msgstr "保留版本(_K)" #: folder-edit.glade:642 msgid "The number of old versions to keep, per file." msgstr "每个文件要保留的旧版本数量。" #: folder-edit.glade:671 msgid "" "Files are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing. Versions are automatically deleted if they are older than the maximum age or exceed the number of files allowed in an interval.\n" "\n" "The following intervals are used: for the first hour a version is kept every 30 seconds, for the first day a version is kept every hour, for the first 30 days a version is kept every day, until the maximum age a version is kept every week." msgstr "当文件通过 syncthing 被替代或删除时移动到 .stversions 文件夹并加上日期戳作为版本号。旧版本会自动删除如果它们老于最长存在时间或者超过在间隔中允许的文件数量。\n\n使用间隔如下:对于最近一小时的版本,每 30 秒保存一个;对于最近一天的版本,每一小时保存一个;对于最近 30 天的版本,每天保存一个;对于超过 30 天又小于最大寿命的版本,每 周保存一个。" #: folder-edit.glade:688 msgid "Ma_ximum Age" msgstr "最长存在时间(_X)" #: folder-edit.glade:727 msgid "Versions _Path" msgstr "版本路径(_P)" #: folder-edit.glade:759 msgid "" "Path where versions should be stored (leave empty for the default " ".stversions folder)." msgstr "保留版本应该保存的路径(留空表示默认的 .stversions 文件夹)。" #: folder-edit.glade:787 msgid "" "Files are moved to .stversions folder when replaced or deleted by Syncthing" msgstr "当通过 Syncthing 替代或删除文件时文件被移动到 .stversions 文件夹" #: folder-edit.glade:801 msgid "Clean out _after" msgstr "该时间后清除:" #: folder-edit.glade:840 msgid "The number of days to keep files in the trash can." msgstr "在垃圾站中文件的保留天数" #: folder-edit.glade:869 msgid "" "An external command handles the versioning. It has to remove the file from " "the synced folder." msgstr "处理文件版本控制的外部命令。它将从同步文件夹中移除文件。" #: folder-edit.glade:884 msgid "Command" msgstr "命令" #: folder-edit.glade:917 msgid "" "The first command line parameter is the folder path and the second parameter" " is the relative path in the folder." msgstr "第一个命令行参数是文件夹路径,第二个参数是文件夹里的相关路径。" #: folder-edit.glade:953 msgid "File _Versioning" msgstr "文件版本控制(_V)" #: folder-edit.glade:982 msgid "Ignore P_ermissions" msgstr "忽略权限(_E)" #: folder-edit.glade:1003 msgid "" "File permission bits are ignored when looking for changes. Use on FAT " "filesystems." msgstr "当寻找更改时忽略文件的权限位。用在 FAT 文件系统上。" #: folder-edit.glade:1018 msgid "Minimum Free Disk Space" msgstr "最低可用磁盘空间" #: folder-edit.glade:1057 msgid "File Pull _Order" msgstr "文件拉取顺序(_O)" #: folder-edit.glade:1103 ui-settings.glade:954 msgid "_Advanced" msgstr "高级(_A)" #: ignore-editor.glade:8 msgid "Ignore Patterns" msgstr "忽略模式" #: ignore-editor.glade:99 msgid "" "See Syncthing " "documentation for list of supported patterns" msgstr "查看 Syncthing 文档 获取支持模式的列表" #: ignore-editor.glade:114 msgid "File location: " msgstr "文件位置:" #: ui-settings.glade:27 msgid "Lowest" msgstr "最低" #: ui-settings.glade:31 msgid "Low" msgstr "低" #: ui-settings.glade:35 msgid "Normal" msgstr "正常" #: ui-settings.glade:39 msgid "Above Normal" msgstr "高于正常" #: ui-settings.glade:46 msgid "Syncthing-GTK Settings" msgstr "Syncthing-GTK 设置" #: ui-settings.glade:69 msgid "Please, restart Syncthing-GTK to apply all changed settings" msgstr "请重启 Syncthing-GTK 来应用所有已更改的设置" #: ui-settings.glade:136 msgid "When starting and Syncthing daemon is not running..." msgstr "当启动中且 Syncthing 守护程序未在运行时..." #: ui-settings.glade:147 msgid "... _wait for daemon" msgstr "... 等待守护程序(_W)" #: ui-settings.glade:164 msgid "... start daemon in _background" msgstr "... 在后台启动守护程序(_B)" #: ui-settings.glade:180 msgid "... _ask me what to do" msgstr "... 询问我做什么(_A)" #: ui-settings.glade:199 msgid "When exiting after daemon was started in background..." msgstr "当守护程序已在后台启动后退出时..." #: ui-settings.glade:210 msgid "... terminate _daemon" msgstr "... 终止守护程序(_D)" #: ui-settings.glade:226 msgid "... leave daemon _running" msgstr "... 离开并让守护程序运行(_R)" #: ui-settings.glade:242 msgid "... ask me w_hat to do" msgstr "... 询问我做什么(_H)" #: ui-settings.glade:258 msgid "Us_e traditional window header" msgstr "使用传统标题栏(_E)" #: ui-settings.glade:278 msgid "Display desktop notifications for..." msgstr "显示桌面通知用于..." #: ui-settings.glade:289 msgid "... file updates" msgstr "... 文件更新" #: ui-settings.glade:304 msgid "... errors" msgstr "... 错误" #: ui-settings.glade:319 msgid "... synchronization completion" msgstr "... 同步完成" #: ui-settings.glade:334 msgid "Start Syncthing-GTK when I login to my desktop" msgstr "当我登录到桌面时启动 Syncthing-GTK" #: ui-settings.glade:350 msgid "Minimize to _tray on start" msgstr "启动时最小化到托盘(_T)" #: ui-settings.glade:366 msgid "Use _icons in menu" msgstr "在菜单中使用图标(_I)" #: ui-settings.glade:383 msgid "Display paths in directories panel" msgstr "在目录面板中显示路径" #: ui-settings.glade:399 msgid "Force _dark theme" msgstr "强制黑色主题(_D)" #: ui-settings.glade:474 msgid "_Interface" msgstr "界面(_I)" #: ui-settings.glade:492 msgid "Integrate Syncthing with filemanagers" msgstr "集成 Syncthing 到文件管理器" #: ui-settings.glade:507 msgid "Nemo (Cinamon Desktop)" msgstr "Nemo(Cinamon 桌面)" #: ui-settings.glade:524 msgid "Nautilus (Ubuntu/GNOME)" msgstr "Nautilus (Ubuntu/GNOME)" #: ui-settings.glade:540 msgid "Caja (MATE Desktop)" msgstr "Caja(MATE 桌面)" #: ui-settings.glade:579 msgid "" "Note: You may need to restart your filemanager after toggling " "integration." msgstr "提示: 您可能需要在切换集成后重启您的文件管理器。" #: ui-settings.glade:598 msgid "_Integration" msgstr "集成(_I)" #: ui-settings.glade:627 msgid "Keep Syncthing binary up-to-date" msgstr "保持 Syncthing 二进制文件为最新" #: ui-settings.glade:647 msgid "" "If enabled, Syncthing-GTK will automatically check for new daemon releases " "and replace binary with latest version." msgstr "如果启用,Syncthing-GTK 将自动检查新的守护程序发布并替换二进制文件为最新的版本。" #: ui-settings.glade:662 msgid "Daemon process priority" msgstr "守护程序进程优先级" #: ui-settings.glade:698 msgid "" "Priority will be used only if \"start daemon in background\" option " "is checked on \"Interface\" page." msgstr "优先级只在“在后台启动守护程序”选项在“界面”页面上已选中时使用。" #: ui-settings.glade:713 msgid "Maximum number of CPU cores" msgstr "最大 CPU 核心数量" #: ui-settings.glade:731 msgid "" "Sets the maximum number of CPU cores for daemon to use. This value will be " "used only if \"start daemon in background\" option is checked on " "\"Interface\" page." msgstr "设置用于守护程序使用的 CPU 核心最大数量。此数值只在“在后台启动守护程序”选项在“界面”页面上已选中时使用。" #: ui-settings.glade:786 msgid "Daemon" msgstr "守护程序" #: ui-settings.glade:808 msgid "" "This binary will be started when syncthing daemon is not running and " "\"start daemon in background\" option is checked on " "\"Interface\" page." msgstr "此二进制文件将被启动当 syncthing 守护程序未在运行且“在后台启动守护程序”选项在“界面”页面中已选中。" #: ui-settings.glade:838 msgid "Syncthing binary location" msgstr "Syncthing 二进制文件位置" #: ui-settings.glade:867 msgid "Daemon arguments and variables" msgstr "守护程序参数和变量" #: ui-settings.glade:897 msgid "" "Space-separated list of arguments and environment variables passed when starting above binary\n" "\n" "Use VARIABLE=\"value\" to set variable and -argument=\"value\" (with dash) for argument.\n" "\n" "If you need to pass commandline to different command (such as logger or ionice), separate prefixed arguments with exclamation mark \"!\"\n" "\n" "Example:\n" " STTRACE=\"all\" logger -t /var/log/syncthing.log ! -logflags=10" msgstr "当使用上面的二进制文件时,以空格分隔的参数列表和环境变量将会被传递\n\n使用 VARIABLE=\"value\" 来设置变量和 -argument=\"value\"(带短划线)来设置参数。\n\n如果您需要传递不同的命令到命令行(比如 logger 或 ionice),请单独前插带半角感叹号标识“!”的参数。\n\n示例:\nSTTRACE=\"all\" logger -t /var/log/syncthing.log ! -logflags=10" #: ui-settings.glade:921 msgid "" "Warning: Changing settings on this page may prevent you from using " "Syncthing-GTK" msgstr "警告: 此页面上的设置更改可能会禁止您使用 Syncthing-GTK" syncthing-gtk-0.9.4.4/me.kozec.syncthingtk.appdata.xml000066400000000000000000000076471352162771300227160ustar00rootroot00000000000000 me.kozec.syncthingtk syncthing-gtk Syncthing GTK GUI and notification area icon for Syncthing kozec

Supported Syncthing features:

  • Everything what WebUI can display
  • Adding/editing/deleting nodes
  • Adding/editing/deleting repositories
  • Restart/shutdown server
  • Editing daemon settings

Additional features:

  • First run wizard for initial configuration
  • Running Syncthing daemon in background
  • Half-automatic setup for new nodes and repositories
  • Nautilus (a.k.a. Files), Nemo and Caja integration
  • Desktop notifications
ModernToolkit GPL-2.0 CC0-1.0 https://github.com/syncthing/syncthing-gtk/ https://github.com/syncthing/syncthing-gtk/issues https://liberapay.com/kozec https://www.transifex.com/syncthing-gtk/syncthing-gtk/ Main Application Window http://i.imgur.com/RTRgRdC.png moderate

Changes:

  • Fixed support for write-only folder :)

Changes:

  • Added support for write-only folder

Changes:

  • Improved desktop notifications and added buttons for quick responses (thanks @bebehei)
  • Improved display on small displays

Fixes:

  • Fixes for better compatibility with NixOS
  • Added missing dependencies to AppImage

Syncthing v0.14.47 and later supports filesystem monitoring by itself, so monitoring by Syncthing-GTK is no longer needed and got removed.

Your setting should be converted automatically when Syncthing-GTK starts up and you can configure monitoring done by Syncthing in same dialog as monitoring done by Syncthing-GTK before. In other words, it's a change you shouldn't notice.

Changes:

  • Warning message is displayed in terminal when status icon cannot be used
  • Added --nofinddaemon option to setup.py
  • Removed Autostart option on Gnome

Fixes:

  • Replaced deprecated configuration values (thanks @AudriusButkevicius)
  • Missing icons when starting from syncthing-gtk.py script.
  • AppImage now includes everything...
syncthing-gtk.desktop
syncthing-gtk-0.9.4.4/scripts/000077500000000000000000000000001352162771300161555ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/scripts/appimage-AppRun.sh000077500000000000000000000030731352162771300215050ustar00rootroot00000000000000#!/bin/bash export PATH=${APPDIR}:${APPDIR}/usr/bin:$PATH export LD_LIBRARY_PATH=${APPDIR}/usr/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH=${APPDIR}/usr/lib64:$LD_LIBRARY_PATH export GI_TYPELIB_PATH=${APPDIR}/usr/lib/girepository-1.0 export PYTHONPATH=${APPDIR}/usr/lib/python2.7/site-packages:$PYTHONPATH export PYTHONPATH=${APPDIR}/usr/lib64/python2.7/site-packages:$PYTHONPATH function dependency_check_failed() { # This checks 4 different ways to open error message in addition to # throwing it to screen directly echo "$1" >&2 [ -e /usr/bin/zenity ] && run_and_die /usr/bin/zenity --no-wrap --error --text "$1" [ -e /usr/bin/yad ] && run_and_die /usr/bin/yad --error --text "$1" echo "$1" > /tmp/depcheck.$$.txt [ -e /usr/bin/Xdialog ] && run_and_die /usr/bin/Xdialog --textbox /tmp/depcheck.$$.txt 10 100 [ -e /usr/bin/xdg ] && run_and_die /usr/bin/xdg-open /tmp/depcheck.$$.txt exit 1 } function run_and_die() { "$@" exit 1 } # Start if [ "x$1" == "xbash" ] ; then cd "${APPDIR}" bash else # Check dependencies 1st python2 -c "pass" \ || dependency_check_failed "Please, install python package using" python2 -c 'import gi; gi.require_version("Gtk", "3.0"); from gi.repository import Gtk' \ || dependency_check_failed "Syncthing-GTK requires GTK and gobject-introspection packages.\n Please, install GTK3 and gobject-introspection packages using your package manager" python2 -c 'import cairo;' \ || dependency_check_failed "Cairo library is missing.\n Please, install cairo package using your package manager" python2 ${APPDIR}/usr/bin/syncthing-gtk $@ fi syncthing-gtk-0.9.4.4/scripts/syncthing-gtk000066400000000000000000000022171352162771300206730ustar00rootroot00000000000000#!/usr/bin/env python2 import sys, os, gi if __name__ == "__main__": systempath = "/usr/share/syncthing-gtk" installpath = os.path.join(os.path.dirname(os.path.realpath(__file__)), '..', 'share', 'syncthing-gtk') localpath = "/usr/local/share/syncthing-gtk" paths = (systempath, localpath, installpath) localedir = None # let gettext to decide for path in paths: if os.path.exists(path): localedir = os.path.join(path, '..', 'locale') break else: raise IOError("Could not find files in %r", paths) gi.require_version('Gtk', '3.0') gi.require_version('Rsvg', '2.0') from syncthing_gtk.tools import init_logging, init_locale init_locale(localedir) init_logging() if "APPDIR" in os.environ: # Running as AppImage from gi.repository import Gtk Gtk.IconTheme.get_default().prepend_search_path(os.environ["APPDIR"]) Gtk.IconTheme.get_default().prepend_search_path(os.environ["APPDIR"] + "/usr/share/icons/hicolor/32x32/apps") Gtk.IconTheme.get_default().prepend_search_path(os.environ["APPDIR"] + "/usr/share/icons/hicolor/32x32/status") from syncthing_gtk.app import App App(path, os.path.join(path, "icons")).run(sys.argv) syncthing-gtk-0.9.4.4/scripts/syncthing-gtk-exe.py000066400000000000000000000047601352162771300221060ustar00rootroot00000000000000#!/c/Python27/python.exe # Note: this one is used by Windows import sys, os, _winreg if __name__ == "__main__": portable = False if "--portable" in sys.argv: sys.argv.remove("--portable") portable = True if portable: # Running from current directory path = "." data_path = os.path.join(os.getcwd(), "data") config_dir = os.path.join(data_path, "syncthing-gtk") if not os.path.exists(config_dir): print "creating", config_dir os.makedirs(config_dir) os.environ["LOCALAPPDATA"] = data_path os.environ["APPDATA"] = data_path os.environ["XDG_CONFIG_HOME"] = data_path else: # Running from /program files path = "." if not os.path.exists("./app.glade"): # Usually from syncthing_gtk.tools import get_install_path path = get_install_path() os.chdir(path) os.environ["PATH"] = path import gi, cairo gi.require_version('Gtk', '3.0') gi.require_version('Rsvg', '2.0') from syncthing_gtk.tools import init_logging, init_locale from syncthing_gtk.windows import ( enable_localization, fix_localized_system_error_messages, override_menu_borders ) from syncthing_gtk.configuration import Configuration init_logging() config = Configuration() # Force dark theme if reqested if config["force_dark_theme"]: os.environ["GTK_THEME"] = "Adwaita:dark" if config["language"] not in ("", "None", None): os.environ["LANGUAGE"] = config["language"] enable_localization() init_locale(os.path.join(path, "locale")) # Tell cx_Freeze that I really need this library gi.require_foreign('cairo') if portable: # Enable portable mode from syncthing_gtk.tools import make_portable make_portable() # Initialize stuff if portable: # Override syncthing_binary value in _Configuration class from syncthing_gtk.configuration import _Configuration _Configuration.WINDOWS_OVERRIDE["syncthing_binary"] = (str, ".\\data\\syncthing.exe") # Fix various windows-only problems fix_localized_system_error_messages() override_menu_borders() from gi.repository import Gtk Gtk.IconTheme.get_default().prepend_search_path(os.path.abspath(os.path.join(os.getcwd(), "icons", "32x32", "apps"))) Gtk.IconTheme.get_default().prepend_search_path(os.path.abspath(os.path.join(os.getcwd(), "icons", "32x32", "status"))) Gtk.IconTheme.get_default().prepend_search_path(os.path.abspath(os.path.join(os.getcwd(), "icons"))) from syncthing_gtk.app import App if portable: App("./", "./icons").run(sys.argv) else: App(path, os.path.join(path, "icons")).run(sys.argv) syncthing-gtk-0.9.4.4/scripts/syncthing-plugin-caja.py000066400000000000000000000011551352162771300227270ustar00rootroot00000000000000#!/usr/bin/env python2 """ Caja plugin for Syncthing-GTK See syncthing_gtk/nautilusplugin.py for more info """ from gi.repository import Caja # Setting this environment variable will prevent __init__ in # syncthing_gtk package from loading stuff that depends on GTK3-only # features. It probably breaks other modules in most horrible ways, # but they are not going to be used anyway import os os.environ["GTK2APP"] = "1" from syncthing_gtk.nautilusplugin import NautiluslikeExtension NautiluslikeExtension.set_plugin_module(Caja) class CajaNautilus(NautiluslikeExtension, Caja.InfoProvider, Caja.MenuProvider): pass syncthing-gtk-0.9.4.4/scripts/syncthing-plugin-nautilus.py000066400000000000000000000005561352162771300237010ustar00rootroot00000000000000#!/usr/bin/env python2 """ Nautilus plugin for Syncthing-GTK See syncthing_gtk/nautilusplugin.py for more info """ from gi.repository import Nautilus from syncthing_gtk.nautilusplugin import NautiluslikeExtension NautiluslikeExtension.set_plugin_module(Nautilus) class SyncthingNautilus(NautiluslikeExtension, Nautilus.InfoProvider, Nautilus.MenuProvider): pass syncthing-gtk-0.9.4.4/scripts/syncthing-plugin-nemo.py000066400000000000000000000005261352162771300227700ustar00rootroot00000000000000#!/usr/bin/env python2 """ Nemo plugin for Syncthing-GTK See syncthing_gtk/nautilusplugin.py for more info """ from gi.repository import Nemo from syncthing_gtk.nautilusplugin import NautiluslikeExtension NautiluslikeExtension.set_plugin_module(Nemo) class SyncthingNemo(NautiluslikeExtension, Nemo.InfoProvider, Nemo.MenuProvider): pass syncthing-gtk-0.9.4.4/setup.py000077500000000000000000000075271352162771300162160ustar00rootroot00000000000000#!/usr/bin/env python2 from distutils.core import setup from distutils.command.build_py import build_py from subprocess import Popen, PIPE import glob, os APP_ICON_SIZES = (16, 24, 32, 64, 128, 256) SI_ICON_SIZES = (16, 24, 32) def get_version(): """ Returns current package version using git-describe or examining path. If both methods fails, returns 'unknown'. """ try: p = Popen(['git', 'describe', '--tags', '--match', 'v*'], stdout=PIPE) version = p.communicate()[0].strip("\n\r \t") if p.returncode != 0: raise Exception("git-describe failed") return version except: pass # Git-describe method failed, try to guess from working directory name path = os.getcwd().split(os.path.sep) version = 'unknown' while len(path): # Find path component that matches 'syncthing-gui-vX.Y.Z' if path[-1].startswith("syncthing-gui-") or path[-1].startswith("syncthing-gtk-"): version = path[-1].split("-")[-1] if not version.startswith("v"): version = "v%s" % (version,) break path = path[0:-1] return version class BuildPyEx(build_py): """ Little extension to install command; Allows --nostdownloader argument """ user_options = build_py.user_options + [ # Note to self: use # # ./setup.py build_py --nostdownloader install # to enable this option # ('nostdownloader', None, 'prevents installing StDownloader module; disables autoupdate capability'), ('nofinddaemon', None, 'prevents installing FindDaemonDialog module; always uses only default path to syncthig binary'), ] def run(self): build_py.run(self) def initialize_options(self): build_py.initialize_options(self) self.nostdownloader = False self.nofinddaemon = False @staticmethod def _remove_module(modules, to_remove): for i in modules: if i[1] == to_remove: modules.remove(i) return def find_package_modules(self, package, package_dir): rv = build_py.find_package_modules(self, package, package_dir) if self.nostdownloader: BuildPyEx._remove_module(rv, "stdownloader") if self.nofinddaemon: BuildPyEx._remove_module(rv, "finddaemondialog") return rv def find_mos(parent, lst=[]): for f in os.listdir(parent): fp = os.path.join(parent, f) if os.path.isdir(fp): find_mos(fp, lst) elif fp.endswith(".mo"): lst += [ fp ] return lst if __name__ == "__main__" : data_files = [ ('share/syncthing-gtk', glob.glob("glade/*.glade") ), ('share/syncthing-gtk', glob.glob("scripts/syncthing-plugin-*.py") ), ('share/syncthing-gtk/icons', [ "icons/%s.svg" % x for x in ( 'add_node', 'add_repo', 'address', 'announce', 'clock', 'compress', 'cpu', 'dl_rate', 'eye', 'folder', 'global', 'home', 'ignore', 'lock', 'ram', 'shared', 'show_id', 'show_id', 'sync', 'thumb_up', 'up_rate', 'version', 'rescan' )] + [ "icons/%s.png" % x for x in ( 'restart', 'settings', 'shutdown', "st-gtk-logo" )]), ('share/man/man1', glob.glob("doc/*") ), ('share/icons/hicolor/64x64/emblems', glob.glob("icons/emblem-*.png") ), ('share/pixmaps', ["icons/syncthing-gtk.png"]), ('share/applications', ['syncthing-gtk.desktop'] ), ('share/metainfo', ['me.kozec.syncthingtk.appdata.xml'] ), ] + [ ( 'share/icons/hicolor/%sx%s/apps' % (size,size), glob.glob("icons/%sx%s/apps/*" % (size,size)) ) for size in APP_ICON_SIZES ] + [ ( 'share/icons/hicolor/%sx%s/status' % (size,size), glob.glob("icons/%sx%s/status/*" % (size,size)) ) for size in SI_ICON_SIZES ] + [ ("share/" + os.path.split(x)[0], (x,)) for x in find_mos("locale/") ] setup( name = 'syncthing-gtk', version = get_version(), description = 'GTK3 GUI for Syncthing', url = 'https://github.com/syncthing/syncthing-gtk', packages = ['syncthing_gtk'], install_requires = ( 'python-dateutil', 'bcrypt', ), data_files = data_files, scripts = [ "scripts/syncthing-gtk" ], cmdclass = { 'build_py': BuildPyEx }, ) syncthing-gtk-0.9.4.4/syncthing-gtk-full.nsis000066400000000000000000000053461352162771300211250ustar00rootroot00000000000000# Required plugins: NSISdl, ZipDLL, FindProcDLL (by hnedka) ## Initial stuff !include MUI2.nsh !define APP_NAME SyncthingGTK !define MUI_FINISHPAGE_RUN "$INSTDIR\syncthing-gtk.exe" !include "build\version.nsh" OutFile "${APP_NAME}-${VERSION}-full-installer.exe" InstallDir $PROGRAMFILES\${APP_NAME} Name "Syncthing-GTK" !insertmacro MUI_PAGE_WELCOME !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_PAGE_FINISH !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_INSTFILES !insertmacro MUI_UNPAGE_FINISH !insertmacro MUI_LANGUAGE "English" !macro ExitST-GTK push $1 ReadRegStr $1 HKCU SOFTWARE\${APP_NAME} 'InstallPath' DetailPrint "Asking Syncthing-GTK to quit..." ExecWait "$1\syncthing-gtk.exe --quit" FindProcDLL::WaitProcEnd "syncthing-gtk.exe" -1 pop $1 !macroend # Install Section # Check if app is already running FindProcDLL::FindProc "syncthing-gtk.exe" IntCmp $R0 1 0 NotRunning !insertmacro ExitST-GTK NotRunning: # Set output path SetOutPath $INSTDIR # Install everything File /r build\exe.win32-2.7\* # Write out installation location WriteRegStr HKCU SOFTWARE\${APP_NAME} 'InstallPath' '$INSTDIR' # Create shortcut SetShellVarContext all CreateShortCut "$SMPROGRAMS\Syncthing GTK.lnk" "$INSTDIR\syncthing-gtk.exe" "" # Create uninstaller WriteUninstaller $INSTDIR\uninstaller.exe WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\SyncthingGTK" \ "DisplayName" "Syncthing GTK" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\SyncthingGTK" \ "UninstallString" "$INSTDIR\uninstaller.exe" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\SyncthingGTK" \ "DisplayIcon" "$INSTDIR\uninstaller.exe" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\SyncthingGTK" \ "Publisher" "Kozec" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\SyncthingGTK" \ "URLInfoAbout" "https://github.com/kozec/syncthing-gui/" WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\SyncthingGTK" \ "NoRepair" 1 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\SyncthingGTK" \ "NoModify" 1 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\SyncthingGTK" \ "DisplayIcon" "$INSTDIR\icons\st-logo-128.ico" SectionEnd # Uninstall Section "Uninstall" FindProcDLL::FindProc "syncthing-gtk.exe" IntCmp $R0 1 0 NotRunning !insertmacro ExitST-GTK NotRunning: # Remove files Delete $INSTDIR\uninstaller.exe Delete $INSTDIR\* RMDir /r $INSTDIR # Remove shortcut SetShellVarContext all Delete "$SMPROGRAMS\Syncthing GTK.lnk" # Remove uninstall entry DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\SyncthingGTK" SectionEnd syncthing-gtk-0.9.4.4/syncthing-gtk.desktop000066400000000000000000000002421352162771300206500ustar00rootroot00000000000000[Desktop Entry] Name=Syncthing GTK GenericName=Syncthing GTK Comment=GUI for Syncthing Exec=syncthing-gtk Type=Application Icon=syncthing-gtk Categories=Network; syncthing-gtk-0.9.4.4/syncthing-gtk.nsis000066400000000000000000000065621352162771300201660ustar00rootroot00000000000000# Required plugins: NSISdl, ZipDLL, FindProcDLL (by hnedka) # Initial stuff !include MUI2.nsh !define APP_NAME SyncthingGTK !define LIBRARIES_FILE "syncthing-gtk-windows-libraries-0.8.2.zip" !define LIBRARIES_URL "http://kozec.com/${LIBRARIES_FILE}" !define MUI_FINISHPAGE_RUN "$INSTDIR\syncthing-gtk.exe" !include "build\version.nsh" OutFile "${APP_NAME}-${VERSION}-installer.exe" InstallDir $PROGRAMFILES\${APP_NAME} Name "Syncthing-GTK" !insertmacro MUI_PAGE_WELCOME !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_PAGE_FINISH !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_INSTFILES !insertmacro MUI_UNPAGE_FINISH !insertmacro MUI_LANGUAGE "English" !macro ExitST-GTK push $1 ReadRegStr $1 HKCU SOFTWARE\${APP_NAME} 'InstallPath' DetailPrint "Asking Syncthing-GTK to quit..." ExecWait "$1\syncthing-gtk.exe --quit" FindProcDLL::WaitProcEnd "syncthing-gtk.exe" -1 pop $1 !macroend # Install Section # Check if app is already running FindProcDLL::FindProc "syncthing-gtk.exe" IntCmp $R0 1 0 NotRunning !insertmacro ExitST-GTK NotRunning: # Set output path SetOutPath $INSTDIR # Install good stuff File build\exe.win32-2.7\syncthing-gtk.exe File build\exe.win32-2.7\syncthing-gtk-console.exe File build\exe.win32-2.7\library.zip File build\exe.win32-2.7\*.glade File build\exe.win32-2.7\__version__ File /r build\exe.win32-2.7\icons # Check if random file that should be part of libraries zip exists # and download&extract zip if not IfFileExists $INSTDIR\share\locale\vi\LC_MESSAGES\gtk30.mo SkipDownload DoDownload DoDownload: NSISdl::download ${LIBRARIES_URL} $TEMP\${LIBRARIES_FILE} ZipDLL::extractall $TEMP\${LIBRARIES_FILE} $INSTDIR SkipDownload: # Write out installation location WriteRegStr HKCU SOFTWARE\${APP_NAME} 'InstallPath' '$INSTDIR' # Create shortcut SetShellVarContext all CreateShortCut "$SMPROGRAMS\Syncthing GTK.lnk" "$INSTDIR\syncthing-gtk.exe" "" # Create uninstaller WriteUninstaller $INSTDIR\uninstaller.exe WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\SyncthingGTK" \ "DisplayName" "Syncthing GTK" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\SyncthingGTK" \ "UninstallString" "$INSTDIR\uninstaller.exe" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\SyncthingGTK" \ "DisplayIcon" "$INSTDIR\uninstaller.exe" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\SyncthingGTK" \ "Publisher" "Kozec" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\SyncthingGTK" \ "URLInfoAbout" "https://github.com/kozec/syncthing-gui/" WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\SyncthingGTK" \ "NoRepair" 1 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\SyncthingGTK" \ "NoModify" 1 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\SyncthingGTK" \ "DisplayIcon" "$INSTDIR\icons\st-logo-128.ico" SectionEnd # Uninstall Section "Uninstall" FindProcDLL::FindProc "syncthing-gtk.exe" IntCmp $R0 1 0 NotRunning !insertmacro ExitST-GTK NotRunning: # Remove files Delete $INSTDIR\uninstaller.exe Delete $INSTDIR\* RMDir /r $INSTDIR # Remove shortcut SetShellVarContext all Delete "$SMPROGRAMS\Syncthing GTK.lnk" # Remove uninstall entry DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\SyncthingGTK" SectionEnd syncthing-gtk-0.9.4.4/syncthing-gtk.nuspec000066400000000000000000000032221352162771300204750ustar00rootroot00000000000000 syncthing-gtk Syncthing GTK syncthing,kozec GeoffreyFrogeye,kozec GUI and notification area icon for Syncthing GTK3 & python based GUI and notification area icon for [Syncthing](http://syncthing.net/), that is an open, trustworthy and decentralized syncing service. Supported Syncthing features: - Everything what WebUI can display - Adding / editing / deleting nodes - Adding / editing / deleting repositories - Restart / shutdown server - Editing daemon settings Additional features: - First run wizard for initial configuration - Running Syncthing daemon in background - Half-automatic setup for new nodes and repositories - Desktop notifications https://github.com/syncthing/syncthing-gtk syncthing-gtk admin https://cdn.rawgit.com/syncthing/syncthing-gtk/379492b914cf1e9e317e3488a2147fdb8b55f4ab/icons/st-logo-128.png https://github.com/syncthing/syncthing-gtk/blob/master/LICENSE false syncthing-gtk-0.9.4.4/syncthing-gtk.py000077500000000000000000000025411352162771300176360ustar00rootroot00000000000000#!/usr/bin/env python2 import os, sys, gi if __name__ == "__main__": gi.require_version('Gtk', '3.0') gi.require_version('Rsvg', '2.0') from syncthing_gtk.tools import init_logging, init_locale, IS_WINDOWS init_logging() if IS_WINDOWS: from syncthing_gtk.windows import ( enable_localization, fix_localized_system_error_messages, override_menu_borders ) from syncthing_gtk.configuration import Configuration config = Configuration() if config["force_dark_theme"]: os.environ["GTK_THEME"] = "Adwaita:dark" if config["language"] not in ("", "None", None): os.environ["LANGUAGE"] = config["language"] enable_localization() init_locale("locale/") if IS_WINDOWS: from syncthing_gtk.windows import enable_localization fix_localized_system_error_messages() override_menu_borders() from gi.repository import Gtk Gtk.IconTheme.get_default().prepend_search_path(os.path.abspath(os.path.join(os.getcwd(), "icons", "32x32", "apps"))) Gtk.IconTheme.get_default().prepend_search_path(os.path.abspath(os.path.join(os.getcwd(), "icons"))) from gi.repository import Gtk Gtk.IconTheme.get_default().prepend_search_path(os.path.join(os.getcwd(), "icons")) Gtk.IconTheme.get_default().prepend_search_path(os.path.join(os.getcwd(), "icons/32x32/status")) from syncthing_gtk.app import App App("./glade", "./icons").run(sys.argv) syncthing-gtk-0.9.4.4/syncthing_gtk/000077500000000000000000000000001352162771300173415ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/syncthing_gtk/__init__.py000066400000000000000000000000341352162771300214470ustar00rootroot00000000000000#!/usr/bin/env python2 pass syncthing-gtk-0.9.4.4/syncthing_gtk/aboutdialog.py000066400000000000000000000036341352162771300222130ustar00rootroot00000000000000#!/usr/bin/env python2 """ Syncthing-GTK - About dialog """ from __future__ import unicode_literals from syncthing_gtk.tools import IS_WINDOWS from syncthing_gtk.uibuilder import UIBuilder import os class AboutDialog(object): """ Standard looking about dialog """ def __init__(self, app, gladepath, iconpath): self.gladepath = gladepath self.iconpath = iconpath self.setup_widgets(app) def show(self, parent=None): if not parent is None: self.dialog.set_transient_for(parent) self.dialog.show() def run(self, *a): self.dialog.run() def close(self): if hasattr(self, "dialog"): self.dialog.set_visible(False) self.dialog.destroy() def setup_widgets(self, app): self.builder = UIBuilder() # Fix icon path self.builder.replace_icon_path("icons/", self.iconpath) # Load glade file self.builder.add_from_file(os.path.join(self.gladepath, "about.glade")) self.builder.connect_signals(self) self.dialog = self.builder.get_object("dialog") # Get app version app_ver = "unknown" try: if IS_WINDOWS: # pkg_resources will not work on cx_Frozen package from syncthing_gtk.tools import get_install_path with open(os.path.join(get_install_path(), "__version__"), "r") as vfile: app_ver = vfile.read().strip(" \t\r\n") else: import pkg_resources, syncthing_gtk if syncthing_gtk.__file__.startswith(pkg_resources.require("syncthing-gtk")[0].location): app_ver = pkg_resources.require("syncthing-gtk")[0].version except: # pkg_resources is not available or __version__ file missing # There is no reason to crash on this. pass # Get daemon version try: daemon_ver = app.daemon.get_version() app_ver = "%s (Daemon %s)" % (app_ver, daemon_ver) except: # App is None or daemon version is not yet known pass # Display versions in UI self.builder.get_object("lblVersion").set_label(app_ver) def on_dialog_response(self, *a): self.close() syncthing-gtk-0.9.4.4/syncthing_gtk/app.py000066400000000000000000002410031352162771300204730ustar00rootroot00000000000000#!/usr/bin/env python2 """ Syncthing-GTK - App Main application window """ from __future__ import unicode_literals import itertools import signal from gi.repository import Gtk, Gio, Gdk, GLib, GdkPixbuf from syncthing_gtk.tools import _ from syncthing_gtk.tools import ( IS_UNITY, IS_GNOME, IS_I3, IS_MATE, IS_XFCE, IS_WINDOWS, IS_XP, set_logging_level, generate_folder_id, sizeof_fmt, check_daemon_running, compare_version, can_upgrade_binary ) from syncthing_gtk.daemon import Daemon, TLSErrorException, InvalidConfigurationException from syncthing_gtk.notifications import Notifications, HAS_DESKTOP_NOTIFY from syncthing_gtk.statusicon import get_status_icon, StatusIconDummy from syncthing_gtk.daemonoutputdialog import DaemonOutputDialog from syncthing_gtk.deviceeditor import DeviceEditorDialog from syncthing_gtk.foldereditor import FolderEditorDialog from syncthing_gtk.tools import parse_config_arguments from syncthing_gtk.configuration import Configuration from syncthing_gtk.daemonprocess import DaemonProcess from syncthing_gtk.timermanager import TimerManager from syncthing_gtk.uibuilder import UIBuilder from syncthing_gtk.identicon import IdentIcon from syncthing_gtk.infobox import InfoBox from syncthing_gtk.ribar import RIBar try: from syncthing_gtk.stdownloader import StDownloader except ImportError: StDownloader = None from datetime import datetime import os, webbrowser, sys, time, logging, shutil, re log = logging.getLogger("App") # Internal version used by updater (if enabled) INTERNAL_VERSION = "v0.9.4.4" # Minimal Syncthing version supported by App MIN_ST_VERSION = "0.14.50" COLOR_DEVICE = "#707070" # Dark-gray COLOR_DEVICE_SYNCING = "#2A89C8" # Blue COLOR_DEVICE_CONNECTED = "#2AAB61" # Green COLOR_DEVICE_OFFLINE = COLOR_DEVICE # Dark-gray COLOR_DEVICE_ERROR = "#87000B" # Red COLOR_OWN_DEVICE = "#C0C0C0" # Light-gray COLOR_FOLDER = "#9246B1" # Dark-purple COLOR_FOLDER_SYNCING = COLOR_DEVICE_SYNCING # Blue COLOR_FOLDER_SCANNING = COLOR_DEVICE_SYNCING # Blue COLOR_FOLDER_IDLE = COLOR_DEVICE_CONNECTED # Green COLOR_FOLDER_STOPPED = COLOR_DEVICE_ERROR # Red COLOR_FOLDER_OFFLINE = COLOR_DEVICE_OFFLINE # Dark-gray COLOR_NEW = COLOR_OWN_DEVICE # Light-gray SI_FRAMES = 12 # Number of animation frames for status icon # Response IDs RESPONSE_RESTART = 256 RESPONSE_FIX_ADD_FOLDER = 257 RESPONSE_FIX_IGNORE_FOLDER = 258 RESPONSE_FIX_ADD_DEVICE = 259 RESPONSE_FIX_IGNORE_DEV = 260 RESPONSE_QUIT = 261 RESPONSE_START_DAEMON = 271 RESPONSE_SLAIN_DAEMON = 272 RESPONSE_SPARE_DAEMON = 273 RESPONSE_UR_ALLOW = 274 RESPONSE_UR_FORBID = 275 # RI's REFRESH_INTERVAL_DEFAULT = 1 REFRESH_INTERVAL_TRAY = 5 # If daemon dies twice in this interval, broken settings are assumed RESTART_TOO_FREQUENT_INTERVAL = 5 UPDATE_CHECK_INTERVAL = 12 * 60 * 60 # Speed values in outcoming/incoming speed limit menus SPEED_LIMIT_VALUES = [ 10, 25, 50, 75, 100, 200, 500, 750, 1000, 2000, 5000 ] class App(Gtk.Application, TimerManager): """ Main application / window. Hide parameter controlls if app should be minimized to status icon after start. """ def __init__(self, gladepath="/usr/share/syncthing-gtk", iconpath="/usr/share/syncthing-gtk/icons"): Gtk.Application.__init__(self, application_id="me.kozec.syncthingtk", flags=Gio.ApplicationFlags.HANDLES_COMMAND_LINE) TimerManager.__init__(self) # Setup Gtk.Application self.setup_commandline() # Set variables self.gladepath = gladepath self.iconpath = iconpath self.builder = None self.rightclick_box = None self.config = Configuration() self.process = None self.hide_window = self.config["minimize_on_start"] self.show_status_icon = True self.exit_after_wizard = False self.last_restart_time = 0.0 # Can be changed by --force-update=vX.Y.Z argument self.force_update_version = None # Determine if header bar should be shown # User setting is not visible under Unity/Gnome self.use_headerbar = ( not IS_UNITY and (not self.config["use_old_header"] or IS_GNOME) and (Gtk.get_major_version(), Gtk.get_minor_version()) >= (3, 10) ) self.daemon = None # Created by setup_connection method # If enabled (by -o argument), daemon output is captured and printed # to stdout self.dump_daemon_output = None self.notifications = None # connect_dialog may be displayed during initial communication # or if daemon shuts down. self.connect_dialog = None # Used when upgrading from incompatible version self.restart_after_update = None self.dark_color = None # RGBA. None by default, changes with dark themes self.recv_limit = -1 # Used mainly to prevent menu handlers from recursing self.send_limit = -1 # -//- self.ur_question_shown = False # Used to prevent showing 'Do you want usage reporting' # question more than once until ST-GTK is restarted. self.home_dir_override = None # If set by '--home' self.wizard = None self.widgets = {} self.error_boxes = [] self.error_messages = set([]) # Holds set of already displayed error messages self.folders = {} self.devices = {} self.open_boxes = set([]) # Holds set of expanded device/folder boxes self.devices_never_loaded = True self.folders_never_loaded = True self.sync_animation = 0 self.editor_device = None self.editor_folder = None def do_startup(self, *a): Gtk.Application.do_startup(self, *a) self.setup_signal_handlers() self.setup_widgets() self.setup_actions() self.setup_statusicon() def setup_signal_handlers(self): def sigint(*a): print("\n*break*") sys.exit(0) def sigterm(*a): log.error("SIGTERM recieved, exiting...") self.quit() signal.signal(signal.SIGINT, sigint) signal.signal(signal.SIGTERM, sigterm) def do_local_options(self, trash, lo): self.parse_local_options(lo.contains) return -1 def parse_local_options(self, is_option): """ Test for expected options using specified method """ set_logging_level(is_option("verbose"), is_option("debug") ) if is_option("header"): self.use_headerbar = False if is_option("window"): self.hide_window = False if is_option("minimized"): self.hide_window = True if is_option("dump"): self.dump_daemon_output = True if is_option("no-status-icon"): self.show_status_icon = False if is_option("wizard"): self.exit_after_wizard = True self.show_wizard() elif is_option("about"): from syncthing_gtk.aboutdialog import AboutDialog ad = AboutDialog(self, self.gladepath, self.iconpath) ad.run([]) sys.exit(0) def do_command_line(self, cl): Gtk.Application.do_command_line(self, cl) new_glib = GLib.glib_version >= (2, 40, 0) if new_glib: if cl.get_options_dict().contains("quit"): self.cb_exit() return 0 if cl.get_options_dict().contains("home"): self.home_dir_override = cl.get_options_dict().lookup_value("home").get_string() if not StDownloader is None: if cl.get_options_dict().contains("force-update"): self.force_update_version = \ cl.get_options_dict().lookup_value("force-update").get_string() if not self.force_update_version.startswith("v"): self.force_update_version = "v%s" % (self.force_update_version,) if cl.get_options_dict().contains("add-repo"): path = os.path.abspath(os.path.expanduser( cl.get_options_dict().lookup_value("add-repo").get_string())) self.show_add_folder_dialog(path) if cl.get_options_dict().contains("remove-repo"): path = os.path.abspath(os.path.expanduser( cl.get_options_dict().lookup_value("remove-repo").get_string())) self.show_remove_folder_dialog(path) else: # Fallback for old GTK without option parsing if "-h" in sys.argv or "--help" in sys.argv: sys.stdout.write("Usage:\n") sys.stdout.write(" %s [arguments]\n" % (sys.argv[0],)) sys.stdout.write("Arguments:\n") for o in self.arguments: # Don't display hidden and unsupported parameters if not o.long_name in ("force-update", "quit"): sys.stdout.write(" -%s, --%s %s\n" % ( chr(o.short_name), o.long_name.ljust(10), o.description)) sys.exit(0) def is_option(name): # Emulating Gtk.Application.do_local_options for o in self.arguments: if o.long_name == name: if "-%s" % (chr(o.short_name),) in sys.argv: return True if "--%s" % (o.long_name,) in sys.argv: return True return False self.parse_local_options(is_option) if self.daemon == None: if self.wizard == None: if self.setup_connection(): self.daemon.reconnect() self.activate() return 0 def do_activate(self, *a): if self.hide_window: log.info("") log.info(_("Syncthing-GTK started and running in notification area")) if not self.daemon is None: self.daemon.set_refresh_interval(REFRESH_INTERVAL_TRAY) else: if self.wizard is None: # Show main window self.cb_statusicon_click() self.hide_window = False def setup_commandline(self): new_glib = GLib.glib_version >= (2, 40, 0) def aso(long_name, short_name, description, arg=GLib.OptionArg.NONE, flags=GLib.OptionFlags.IN_MAIN): """ add_simple_option, adds program argument in simple way """ o = GLib.OptionEntry() o.long_name = long_name o.short_name = short_name o.description = description o.flags = flags o.arg = arg if new_glib: self.add_main_option_entries([o]) else: self.arguments.append(o) if new_glib: # Guess who doesn't support option parsing... self.connect('handle-local-options', self.do_local_options) else: self.arguments = [] aso("window", b"w", "Display window (don't start minimized)") aso("minimized",b"m", "Hide window (start minimized)") aso("header", b"s", "Use classic window header") aso("quit", b"q", "Quit running instance (if any)") aso("verbose", b"v", "Be verbose") aso("debug", b"d", "Be more verbose (debug mode)") aso("wizard", b"1", "Run 'first start wizard' and exit") aso("about", b"a", "Display about dialog and exit") aso("dump", b"o", "Redirect captured daemon output to stdout") aso("home", 0, "Overrides default syncthing configuration directory", GLib.OptionArg.STRING) aso("add-repo", 0, "Opens 'add repository' dialog with specified path prefilled", GLib.OptionArg.STRING) aso("remove-repo", 0, "If there is repository assigned with specified path, opens 'remove repository' dialog", GLib.OptionArg.STRING) aso("no-status-icon", 0, "Don't show a tray status icon") if not StDownloader is None: aso("force-update", 0, "Force updater to download specific daemon version", GLib.OptionArg.STRING, GLib.OptionFlags.HIDDEN) def setup_actions(self): def add_simple_action(name, callback): action = Gio.SimpleAction.new(name, None) action.connect('activate', callback) self.add_action(action) return action add_simple_action('webui', self.cb_menu_webui) add_simple_action('daemon_output', self.cb_menu_daemon_output).set_enabled(False) add_simple_action('preferences', self.cb_menu_ui_settings) add_simple_action('about', self.cb_about) add_simple_action('quit', self.cb_exit) add_simple_action('add_folder', self.cb_menu_add_folder) add_simple_action('add_device', self.cb_menu_add_device) add_simple_action('daemon_preferences', self.cb_menu_daemon_settings) add_simple_action('show_id', self.cb_menu_show_id) add_simple_action('daemon_shutdown', self.cb_menu_shutdown) add_simple_action('daemon_restart', self.cb_menu_restart) def setup_widgets(self): self.builder = UIBuilder() # Set conditions for UIBuilder old_gtk = ((Gtk.get_major_version(), Gtk.get_minor_version()) < (3, 12)) and not IS_WINDOWS icons_in_menu = self.config["icons_in_menu"] if self.use_headerbar: self.builder.enable_condition("header_bar") if not self.use_headerbar: self.builder.enable_condition("traditional_header") if IS_WINDOWS: self.builder.enable_condition("is_windows") if IS_GNOME: self.builder.enable_condition("is_gnome") if old_gtk: self.builder.enable_condition("old_gtk") if icons_in_menu: self.builder.enable_condition("icons_in_menu") # Fix icon path self.builder.replace_icon_path("icons/", self.iconpath) # Load glade file self.builder.add_from_file(os.path.join(self.gladepath, "app.glade")) self.builder.connect_signals(self) # Dunno how to do this from glade if self.use_headerbar and IS_GNOME: self.set_app_menu(self["app-menu"]) # Create speedlimit submenus for incoming and outcoming speeds L_MEH = [("menu-si-sendlimit", self.cb_menu_sendlimit), ("menu-si-recvlimit", self.cb_menu_recvlimit)] for limitmenu, eventhandler in L_MEH: submenu = self["%s-sub" % (limitmenu,)] for speed in SPEED_LIMIT_VALUES: menuitem = Gtk.CheckMenuItem(_("%s kB/s") % (speed,)) item_id = "%s-%s" % (limitmenu, speed) menuitem.connect('activate', eventhandler, speed) self[item_id] = menuitem submenu.add(menuitem) self[limitmenu].show_all() if not old_gtk: if not self["edit-menu-icon"] is None: if not Gtk.IconTheme.get_default().has_icon(self["edit-menu-icon"].get_icon_name()[0]): # If requested icon is not found in default theme, replace it with emblem-system-symbolic self["edit-menu-icon"].set_from_icon_name("emblem-system-symbolic", self["edit-menu-icon"].get_icon_name()[1]) # Set window title in way that even Gnome can understand icon = os.path.join(self.iconpath, "syncthing-gtk.png") self["window"].set_title(_("Syncthing-GTK")) self["window"].set_wmclass("Syncthing GTK", "Syncthing GTK") if os.path.exists(icon): self["window"].set_icon(GdkPixbuf.Pixbuf.new_from_file(icon)) self.add_window(self["window"]) def setup_statusicon(self): if self.show_status_icon: self.statusicon = get_status_icon(self.iconpath, self["si-menu"]) else: self.statusicon = StatusIconDummy(self.iconpath, self["si-menu"]) self.statusicon.connect("clicked", self.cb_statusicon_click) self.statusicon.connect("notify::active", self.cb_statusicon_notify_active) self.cb_statusicon_notify_active() def setup_connection(self): # Create Daemon instance (loads and parses config) try: if self.home_dir_override: self.daemon = Daemon(os.path.join(self.home_dir_override, "config.xml")) else: self.daemon = Daemon() except InvalidConfigurationException as e: # Syncthing is not configured, most likely never launched. # Run wizard. if IS_XP: # Wizard can't run on old Windows versions. Instead of # it, 'Give me daemon executable' dialog is shown self.cb_daemon_startup_failed(None, "Syncthing is not configured or configuration file cannot be found.") return False self.hide() self.show_wizard() return False except TLSErrorException as e: # This is pretty-much fatal. Display error message and bail out. self.cb_syncthing_con_error(self.daemon, Daemon.UNKNOWN, str(e), e) return False if HAS_DESKTOP_NOTIFY: if self.config["notification_for_update"] or self.config["notification_for_error"]: self.notifications = Notifications(self, self.daemon) # Connect signals self.daemon.connect("config-out-of-sync", self.cb_syncthing_config_oos) self.daemon.connect("config-saved", self.cb_syncthing_config_saved) self.daemon.connect("connected", self.cb_syncthing_connected) self.daemon.connect("connection-error", self.cb_syncthing_con_error) self.daemon.connect("disconnected", self.cb_syncthing_disconnected) self.daemon.connect("error", self.cb_syncthing_error) self.daemon.connect("config-loaded", self.cb_config_loaded) self.daemon.connect("folder-rejected", self.cb_syncthing_folder_rejected) self.daemon.connect("device-rejected", self.cb_syncthing_device_rejected) self.daemon.connect("my-id-changed", self.cb_syncthing_my_id_changed) self.daemon.connect("device-added", self.cb_syncthing_device_added) self.daemon.connect("device-data-changed", self.cb_syncthing_device_data_changed) self.daemon.connect("last-seen-changed", self.cb_syncthing_last_seen_changed) self.daemon.connect("device-connected", self.cb_syncthing_device_state_changed, True) self.daemon.connect("device-disconnected", self.cb_syncthing_device_state_changed, False) self.daemon.connect("device-paused", self.cb_syncthing_device_paused_resumed, True) self.daemon.connect("device-resumed", self.cb_syncthing_device_paused_resumed, False) self.daemon.connect("device-sync-started", self.cb_syncthing_device_sync_progress) self.daemon.connect("device-sync-progress", self.cb_syncthing_device_sync_progress) self.daemon.connect("device-sync-finished", self.cb_syncthing_device_sync_progress, 1.0) self.daemon.connect("folder-added", self.cb_syncthing_folder_added) self.daemon.connect("folder-error", self.cb_syncthing_folder_error) self.daemon.connect("folder-data-changed", self.cb_syncthing_folder_data_changed) self.daemon.connect("folder-data-failed", self.cb_syncthing_folder_state_changed, 0.0, COLOR_NEW, "") self.daemon.connect("folder-sync-started", self.cb_syncthing_folder_state_changed, 0.0, COLOR_FOLDER_SYNCING, _("Syncing")) self.daemon.connect("folder-sync-progress", self.cb_syncthing_folder_state_changed, COLOR_FOLDER_SYNCING, _("Syncing")) self.daemon.connect("folder-sync-finished", self.cb_syncthing_folder_up_to_date) self.daemon.connect("folder-scan-started", self.cb_syncthing_folder_state_changed, 1.0, COLOR_FOLDER_SCANNING, _("Scanning")) self.daemon.connect("folder-scan-progress", self.cb_syncthing_folder_state_changed, COLOR_FOLDER_SCANNING, _("Scanning")) self.daemon.connect("folder-scan-finished", self.cb_syncthing_folder_up_to_date) self.daemon.connect("folder-stopped", self.cb_syncthing_folder_stopped) self.daemon.connect("system-data-updated", self.cb_syncthing_system_data) return True def show_wizard(self): from syncthing_gtk.wizard import Wizard self.wizard = Wizard(self.gladepath, self.iconpath, self.config) self.wizard.connect('cancel', self.cb_wizard_finished) self.wizard.connect('close', self.cb_wizard_finished) self.wizard.show() def start_daemon_ui(self): """ Does same thing as start_daemon. Additionally displays 'Starting Daemon' message and swaps menu items in notification icon menu. """ # Swap menu items in notification menu self["menu-si-shutdown"].set_visible(True) self["menu-si-resume"].set_visible(False) # Display message self.close_connect_dialog() self.display_connect_dialog(_("Starting Syncthing daemon")) # Start daemon self.start_daemon() def start_daemon(self): if self.process is None: if IS_WINDOWS: from syncthing_gtk.windows import is_shutting_down if is_shutting_down(): log.warning("Not starting daemon: System shutdown detected") return self.ct_process() self.lookup_action('daemon_output').set_enabled(True) self["menu-si-daemon-output"].set_sensitive(True) def ct_process(self): """ Sets self.process, adds related handlers and starts daemon. Just so I don't have to write same code all over the place. """ cmdline = [self.config["syncthing_binary"], "-no-browser"] vars, preargs, args = parse_config_arguments(self.config["syncthing_arguments"]) cmdline = preargs + cmdline + args if self.home_dir_override: cmdline += [ "-home" , self.home_dir_override ] self.process = DaemonProcess(cmdline, self.config["daemon_priority"], self.config["max_cpus"], env=vars) self.process.connect('failed', self.cb_daemon_startup_failed) self.process.connect('exit', self.cb_daemon_exit) if self.dump_daemon_output: self.process.connect('line', self.cb_daemon_line_captured) self.process.start() def ask_for_ur(self, *a): if self.ur_question_shown: # Don't ask twice until ST-GTK restart return markup = "".join([ "%s" % (_("Allow Anonymous Usage Reporting?"),), "\n", _("The encrypted usage report is sent daily."), " ", _("It is used to track common platforms, folder sizes and app versions."), " ", _("If the reported data set is changed you will be prompted with this dialog again."), "\n", _("The aggregated statistics are publicly available at"), " ", "https://data.syncthing.net.", "." ]) r = RIBar(markup, Gtk.MessageType.QUESTION) r.add_button(RIBar.build_button("gtk-yes", use_stock=True), RESPONSE_UR_ALLOW) r.add_button(RIBar.build_button("gtk-no", use_stock=True), RESPONSE_UR_FORBID) self.show_info_box(r) self.ur_question_shown = True # User response is handled in App.cb_infobar_response def check_for_upgrade(self, *a): if StDownloader is None: # Can't, someone stole my updater module :( return self.cancel_timer("updatecheck") if not self.config["st_autoupdate"]: # Disabled, don't even bother log.info("updatecheck: disabled") return if self.process == None: # Upgrading if executable is not launched by Syncthing-GTK # may fail in too many ways. log.warning("Skipping updatecheck: Daemon not launched by me") return if self.force_update_version is None: if (datetime.now() - self.config["last_updatecheck"]).total_seconds() < UPDATE_CHECK_INTERVAL: # Too soon, check again in 10 minutes self.timer("updatecheck", 60 * 10, self.check_for_upgrade) log.info("updatecheck: too soon") return log.info("Checking for updates...") # Prepare target = "%s.new" % (self.config["syncthing_binary"],) # Check for write access to parent directory if not can_upgrade_binary(self.config["syncthing_binary"]): self.cb_syncthing_error(None, "Warning: No write access to daemon binary; Skipping update check.") return # Determine platform suffix, tag = StDownloader.determine_platform() if suffix is None or tag is None: # Shouldn't really happen at this point log.warning("Cannot update: Unsupported platform") return # Define callbacks # Define callbacks def cb_cu_error(sd, e, message): # Version check failed. Try it again later if "WinHttp" in str(e) and "SECURE_FAILURE" in str(e) and self["infobar"] == None: message = _("Your Windows version doesn't supports cryptographic standards needed\n" "for Syncthing-GTK to check for Syncthing updates.\n" "Please, install this Windows update or disable update feature." ) % { 'url': "https://support.microsoft.com/en-us/help/3140245/" } r = RIBar(message, Gtk.MessageType.WARNING) self["infobar"] = r self.show_info_box(r) else: self.timer("updatecheck", 1 * 60 * 60, self.check_for_upgrade) def cb_cu_progress(sd, progress, pb): pb.set_fraction(progress) def cb_cu_extract_start(sd, l, pb): l.set_text(_("Extracting update...")) pb.set_fraction(0.0) def cb_cu_extract_finished(sd, r, l, pb): pb.hide() l.set_text(_("Restarting daemon...")) if self.daemon.is_connected(): self.daemon.restart() else: # Happens when updating from unsupported version if not self.process is None: self.process.kill() else: self.start_daemon() self.set_status(False) self.restart() self.timer(None, 2, r.close) def cb_cu_download_fail(sd, exception, message, r): log.error("Download failed: %s", exception) r.close() self.cb_syncthing_error(None, _("Failed to download upgrade: %s") % (message)) return cb_cu_error() def cb_cu_version(sd, version): needs_upgrade = False try: needs_upgrade = not compare_version(self.daemon.get_version(), version) except Exception: # May happen if connection to daemon is lost while version # check is running return cb_cu_error() if not self.force_update_version is None: needs_upgrade = True self.force_update_version = None log.info("Updatecheck: needs_upgrade = %s", needs_upgrade) self.config["last_updatecheck"] = datetime.now() if needs_upgrade: pb = Gtk.ProgressBar() l = Gtk.Label(_("Downloading Syncthing %s") % (version,)) l.set_alignment(0, 0.5) box = Gtk.VBox() box.pack_start(l, True, True, 0) box.pack_start(pb, False, True, 1) box.show_all() r = RIBar(box, Gtk.MessageType.INFO) r.disable_close_button() self.show_info_box(r) sd.connect("error", cb_cu_download_fail, r) sd.connect("download-progress", cb_cu_progress, pb) sd.connect("extraction-progress", cb_cu_progress, pb) sd.connect("download-finished", cb_cu_extract_start, l, pb) sd.connect("extraction-finished", cb_cu_extract_finished, r, l, pb) sd.download() else: # No upgrade is needed. Schedule another check on later time self.timer("updatecheck", UPDATE_CHECK_INTERVAL, self.check_for_upgrade) # Check version sd = StDownloader(target, tag) sd.connect("error", cb_cu_error) sd.connect("version", cb_cu_version) if self.force_update_version is None: sd.get_version() else: sd.force_version(self.force_update_version) def swap_updated_binary(self): """ Switches newly downloaded binary with old one. Called while daemon is restarting after upgrade is downloaded. """ log.info("Found .new file, updating daemon binary") bin = self.config["syncthing_binary"] old_bin = bin + ".old" new_bin = bin + ".new" # Move old from way try: shutil.move(bin, old_bin) except Exception as e: log.warning("Failed to upgrade daemon binary: Failed to rename old binary") log.warning(e) return # Place new try: shutil.move(new_bin, bin) except Exception as e: log.warning("Failed to upgrade daemon binary: Failed to rename new binary") log.warning(e) # Return old back to place try: shutil.move(old_bin, bin) except Exception as e: # This really shouldn't happen, in more than one sense log.error("Failed to upgrade daemon binary: Failed to rename backup") log.exception(e) return # Remove old try: os.unlink(old_bin) except Exception as e: # Not exactly fatal log.warning("Failed to remove backup binary during backup") log.warning(e) def cb_syncthing_connected(self, *a): self.clear() self.close_connect_dialog() self.set_status(True) self["edit-menu-button"].set_sensitive(True) self["menu-si-shutdown"].set_sensitive(True) self["menu-si-show-id"].set_sensitive(True) self["menu-si-recvlimit"].set_sensitive(True) self["menu-si-sendlimit"].set_sensitive(True) if IS_WINDOWS and not self.use_headerbar: # Stupid way to reconfigure window content and keep windows # decorations visible on Windows r = RIBar( _("Connected to Syncthing daemon"), Gtk.MessageType.INFO ) self.show_info_box(r) self.cb_infobar_close(r) def cb_syncthing_disconnected(self, daemon, reason, message): # if reason == Daemon.UNEXPECTED message = "%s %s" % ( _("Connection to Syncthing daemon lost."), _("Syncthing is probably restarting or has been shut down.")) if reason == Daemon.SHUTDOWN: message = _("Syncthing has been shut down.") self["menu-si-shutdown"].set_visible(False) self["menu-si-resume"].set_visible(True) elif reason == Daemon.RESTART: message = "%s %s..." % (_("Syncthing is restarting."), _("Please wait")) self.display_connect_dialog(message, quit_button = reason != Daemon.RESTART) if reason == Daemon.SHUTDOWN: # Add 'Start daemon again' button to dialog self.connect_dialog.add_button("Start Again", RESPONSE_START_DAEMON) elif reason == Daemon.RESTART: # Nothing, just preventing next branch from running pass elif IS_WINDOWS and not self.process is None: # Restart daemon process if connection is lost on Windows self.process.kill() self.process = None self.start_daemon() self.set_status(False) self.restart() def cb_syncthing_con_error(self, daemon, reason, message, exception): if reason == Daemon.REFUSED: # If connection is refused, handler just displays dialog with "please wait" message # and lets Daemon object to retry connection if self.connect_dialog == None: if check_daemon_running(): # Daemon is running, wait for it self.display_connect_dialog(_("Connecting to Syncthing daemon at %s...") % (self.daemon.get_webui_url(),)) else: # Daemon is probably not there, give user option to start it if self.config["autostart_daemon"] == 0: # ... unless he already decided once forever ... self.display_connect_dialog(_("Waiting for Syncthing daemon at %s...") % (self.daemon.get_webui_url(),)) elif self.config["autostart_daemon"] == 1: # ... or already gave permission ... self.display_connect_dialog(_("Starting Syncthing daemon")) self.start_daemon() else: self.display_run_daemon_dialog() self.set_status(False) elif reason == Daemon.OLD_VERSION and self.config["st_autoupdate"] and not self.process is None and not StDownloader is None: # Daemon is too old, but autoupdater is enabled and I have control of deamon. # Try to update. from .configuration import LONG_AGO self.config["last_updatecheck"] = LONG_AGO self.restart_after_update = True self.close_connect_dialog() self.display_connect_dialog(_("Your syncthing daemon is too old.") + "\n" + _("Attempting to download recent, please wait...")) self.set_status(False) self.check_for_upgrade() else: # All other errors are fatal for now. Error dialog is displayed and program exits. if reason == Daemon.NOT_AUTHORIZED: message = _("Cannot authorize with daemon. Please, use WebUI to generate API key or disable password authentication.") elif reason == Daemon.OLD_VERSION: message = _("Your syncthing daemon is too old.\nPlease, upgrade syncthing package at least to version %s and try again.") % (self.daemon.get_min_version(),) elif reason == Daemon.TLS_UNSUPPORTED: message = _("Sorry, connecting to HTTPS is not supported on this platform.\nPlease, use WebUI to disable HTTPS try again.") else: # Daemon.UNKNOWN message = "%s\n\n%s %s" % ( _("Connection to daemon failed. Check your configuration and try again."), _("Error message:"), str(message) ) if "Not found" in str(message): # Special case that has usual explanation message = "%s\n%s" % ( message, _("Possible cause: Is there another web server running on Syncthing port?") ) d = Gtk.MessageDialog( self["window"], Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, Gtk.MessageType.ERROR, Gtk.ButtonsType.CLOSE, message ) if not exception is None and hasattr(exception, 'full_response'): # Anything derived from HTTPError, where full server # response is attached ex = Gtk.Expander(label=_("More info")) tbuf = Gtk.TextBuffer() try: tbuf.set_text(u'Server response:\n\'%s\'' % (exception.full_response,)) except Exception: # May happen when full_response can't be decoded try: tbuf.set_text(u'Server response:\n\'%s\'' % ((exception.full_response,),)) except Exception: # Shouldn't really happen tbuf.set_text("") tview = Gtk.TextView(buffer=tbuf) swin = Gtk.ScrolledWindow() swin.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC) swin.add_with_viewport(tview) swin.set_size_request(300, 400) ex.add(swin) d.get_message_area().pack_end(ex, True, True, 1) ex.show_all() d.run() d.hide() d.destroy() self.quit() def cb_syncthing_config_oos(self, *a): if self["infobar"] == None: r = RIBar( _("The configuration has been saved but not activated.\nSyncthing must restart to activate the new configuration."), Gtk.MessageType.WARNING, ( RIBar.build_button(_("_Restart"), "view-refresh"), RESPONSE_RESTART) ) self["infobar"] = r self.show_info_box(r) def cb_syncthing_config_saved(self, *a): # Refresh daemon data from UI log.debug("Config saved") self.refresh() def cb_config_loaded(self, daemon, config): # Called after connection to daemon is initialized; # Used to change indicating UI components self.recv_limit = config["options"]["maxRecvKbps"] self.send_limit = config["options"]["maxSendKbps"] L_MEV = [("menu-si-sendlimit", self.send_limit), ("menu-si-recvlimit", self.recv_limit)] for limitmenu, value in L_MEV: other = True for speed in [0] + SPEED_LIMIT_VALUES: menuitem = self["%s-%s" % (limitmenu, speed)] menuitem.set_active(speed == value) if speed == value: other = False self["%s-other" % (limitmenu,)].set_active(other) if config["options"]["urAccepted"] == 0: # User did not responded to usage reporting yet. Ask self.ask_for_ur() if "use_inotify" in self.config: from syncthing_gtk.configuration import migrate_fs_watch if migrate_fs_watch(self.config, config): self.daemon.write_config(config, lambda *a: False) self.config.save() log.info("Filesystem watcher configuration migrated") def cb_syncthing_error(self, daemon, message): """ Handles errors reported by syncthing daemon """ # Daemon argument is not used RE_IP_PORT = re.compile(r"([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+)") if "remote device speaks an older version of the protocol" in message: # This one needs special treatment because remote port changes # every time when this is reported. id = re.search("to ([-0-9A-Za-z]+)", message) version = re.search("protocol \(([^\)]+)\)", message) if not id or not version: # Invalid format return id = display_id = id.group(1) version = version.group(1) if id in self.devices: device = self.devices[id] display_id = device.get_title() device.set_color_hex(COLOR_DEVICE_ERROR) device.set_status(_("Incompatible"), 0) device.show_value("version") device["version"] = version message = _("Connecting to %s failed; the remote device speaks an older version of the protocol (%s) not compatible with this version") % ( display_id, version) while RE_IP_PORT.search(message): # Strip any IP:port pairs in message to only IP. Port usually # changes with each error message ip, port = RE_IP_PORT.search(message).groups() message = message.replace("%s:%s" % (ip, port), ip) if message in self.error_messages: # Same error is already displayed log.info("(repeated) %s", message) return log.info(message) if "Unexpected folder ID" in message: # Handled by event, don't display twice return severity = Gtk.MessageType.WARNING if "Stopping folder" in message: severity = Gtk.MessageType.ERROR self.error_messages.add(message) bar = RIBar(message, severity) bar.connect("response", self.cb_error_response, message) self.show_error_box(bar) def cb_error_response(self, bar, response, message): # Remove closed error message from self.error_messages list, # so it can re-appear if message in self.error_messages: self.error_messages.remove(message) def cb_syncthing_folder_rejected(self, daemon, nid, rid, label): if (nid, rid) in self.error_messages: # Store as error message and don't display twice return self.error_messages.add((nid, rid)) device, can_fix = nid, False if nid in self.devices: device = self.devices[nid].get_title() can_fix = True markup = _('%(device)s wants to share folder "%(folder)s". Add new folder?') % { 'device' : "%s" % device, 'folder' : "%s" % (label or rid) } r = RIBar("", Gtk.MessageType.WARNING,) r.get_label().set_markup(markup) if can_fix: r.add_button(RIBar.build_button(_("_Ignore")), RESPONSE_FIX_IGNORE_FOLDER) r.add_button(RIBar.build_button(_("_Add")), RESPONSE_FIX_ADD_FOLDER) self.show_error_box(r, {"nid" : nid, "rid" : rid, "label" : label } ) def cb_syncthing_device_rejected(self, daemon, nid, name, address): # Remove port from address, it's random by default anyway if "[" in address: # IPv6 address address = address.split("]:")[0] + "]" else: # IPv4 address = address.split(":")[0] if (nid, address) in self.error_messages: # Store as error message and don't display twice return self.error_messages.add((nid, address)) markup = _('Device "%(name)s" (%(device)s) at IP "%(ip)s" wants to connect. Add new device?') % { 'name' : name, 'device' : "%s" % nid, 'ip' : "%s" % address } r = RIBar("", Gtk.MessageType.WARNING,) r.get_label().set_markup(markup) r.add_button(RIBar.build_button(_("_Add")), RESPONSE_FIX_ADD_DEVICE) r.add_button(RIBar.build_button(_("_Ignore")), RESPONSE_FIX_IGNORE_DEV) self.show_error_box(r, {"nid" : nid, "name" : name, "address" : address} ) def cb_syncthing_my_id_changed(self, daemon, device_id): if device_id in self.devices: device = self.devices[device_id] # Move my device to top self["devicelist"].reorder_child(device, 0) # Modify header & color device.set_status("") device.invert_header(True) device.set_color_hex(COLOR_OWN_DEVICE) if self.use_headerbar: self["header"].set_subtitle(device.get_title()) else: self["server-name"].set_markup("%s" % (device.get_title(),)) # Modify values device.clear_values() device.add_value("ram", "ram.svg", _("RAM Utilization"), "") device.add_value("cpu", "cpu.svg", _("CPU Utilization"), "") device.add_value("inbps", "dl_rate.svg", _("Download Rate"), "0 B/s (0 B)") device.add_value("outbps", "up_rate.svg", _("Upload Rate"), "0 B/s (0 B)") device.add_value("announce", "announce.svg", _("Announce Server"), "") device.add_value("version", "version.svg", _("Version"), None) device.show_all() # Expand my own device box right after startup if self.devices_never_loaded: self.open_boxes.add(device["id"]) device.set_open(True) self.devices_never_loaded = True # Remove my own device from "Shared with" value in all shared directories # ( https://github.com/syncthing/syncthing/issues/915 ) for folder in self.folders: f = self.folders[folder] if device in f["devices"]: f["shared"] = ", ".join([ n.get_title() for n in f["devices"] if n != device ]) # Check for new version, if enabled self.check_for_upgrade() def cb_syncthing_system_data(self, daemon, mem, cpu, d_failed, d_total): if self.daemon.get_my_id() in self.devices: # Update my device display device = self.devices[self.daemon.get_my_id()] device["ram"] = sizeof_fmt(mem) device["cpu"] = "%3.2f%%" % (cpu) if d_total == 0: device["announce"] = _("disabled") else: device["announce"] = "%s/%s" % (d_total - d_failed, d_total) def cb_syncthing_device_added(self, daemon, nid, name, used, data): self.show_device(nid, name, data["compression"], data["introducer"] if "introducer" in data else False, used ) def cb_syncthing_device_data_changed(self, daemon, nid, address, client_version, inbps, outbps, inbytes, outbytes): if nid in self.devices: # Should be always device = self.devices[nid] # Update strings device["address"] = address if client_version not in ("?", None): device["version"] = client_version # Update rates device['inbps'] = "%s/s (%s)" % (sizeof_fmt(inbps), sizeof_fmt(inbytes)) device['outbps'] = "%s/s (%s)" % (sizeof_fmt(outbps), sizeof_fmt(outbytes)) def cb_syncthing_last_seen_changed(self, daemon, nid, dt): if nid in self.devices: # Should be always device = self.devices[nid] if dt is None: device['last-seen'] = _("Never") else: dtf = dt.strftime("%Y-%m-%d %H:%M") device['last-seen'] = str(dtf) def cb_syncthing_device_paused_resumed(self, daemon, nid, paused): if nid in self.devices: # Should be always device = self.devices[nid] device.set_status(_("Paused") if paused else _("Disconnected")) device.set_color_hex(COLOR_DEVICE_OFFLINE) device["online"] = False device["connected"] = False # Update visible values device.hide_values("sync", "inbps", "outbps", "version") device.show_values("last-seen") self.update_folders() self.set_status(True) def cb_syncthing_device_state_changed(self, daemon, nid, connected): if nid in self.devices: # Should be always device = self.devices[nid] if device["connected"] != connected: device["connected"] = connected if connected: # Update color & header device.set_status(_("Connected")) device.set_color_hex(COLOR_DEVICE_CONNECTED) device["online"] = True # Update visible values device.show_values("sync", "inbps", "oubps", "version") device.hide_values("last-seen") else: # Update color & header device.set_status(_("Disconnected")) device.set_color_hex(COLOR_DEVICE_OFFLINE) device["online"] = False # Update visible values device.hide_values("sync", "inbps", "outbps", "version") device.show_values("last-seen") self.update_folders() self.set_status(True) def cb_syncthing_device_sync_progress(self, daemon, device_id, sync): if device_id in self.devices: device = self.devices[device_id] device["sync"] = "%3.f%%" % (sync * 100.0) if not device["connected"]: device.set_color_hex(COLOR_DEVICE_OFFLINE) device.set_status(_("Disconnected")) elif sync >= 0.0 and sync < 0.99: device.set_color_hex(COLOR_DEVICE_SYNCING) device.set_status(_("Syncing"), sync) else: device.set_color_hex(COLOR_DEVICE_CONNECTED) device.set_status(_("Up to Date")) def cb_syncthing_folder_added(self, daemon, rid, r): self.show_folder( rid, r["label"], r["path"], r["type"], r["ignorePerms"], r["rescanIntervalS"], r["fsWatcherEnabled"], sorted( [ self.devices[n["deviceID"]] for n in r["devices"] if n["deviceID"] in self.devices ], key=lambda x : x.get_title().lower() ) ) def cb_syncthing_folder_data_changed(self, daemon, rid, data): if rid in self.folders: # Should be always folder = self.folders[rid] global_files = data["globalFiles"] + data["globalSymlinks"] local_files = data["localFiles"] + data["localSymlinks"] need_files = data["needFiles"] + data["needSymlinks"] + data.get("receiveOnlyTotalItems", 0) need_bytes = data["needBytes"] + data.get("receiveOnlyChangedBytes", 0) folder["global"] = "%s %s, %s" % (global_files, _("Files"), sizeof_fmt(data["globalBytes"])) folder["local"] = "%s %s, %s" % (local_files, _("Files"), sizeof_fmt(data["localBytes"])) folder["oos"] = "%s %s, %s" % (need_files, _("Files"), sizeof_fmt(need_bytes)) if folder["folder_type_s"] in ("sendonly", "receiveonly"): can_override = (need_files > 0) if can_override != folder["can_override"]: folder["can_override"] = can_override folder["override_title"] = (_("Cluster out of sync") if folder["folder_type_s"] == "sendonly" else _("Local changes")) self.cb_syncthing_folder_up_to_date(None, rid) def cb_syncthing_folder_up_to_date(self, daemon, rid): if rid in self.folders: # Should be always folder = self.folders[rid] title = _("Up to Date") if folder["can_override"]: title = folder["override_title"] self.cb_syncthing_folder_state_changed(daemon, rid, 1.0, COLOR_FOLDER_IDLE, title) def cb_syncthing_folder_state_changed(self, daemon, rid, percentage, color, text): if rid in self.folders: # Should be always folder = self.folders[rid] folder.set_color_hex(color) folder.set_status(text, percentage) self.update_folders() self.set_status(True) def cb_syncthing_folder_stopped(self, daemon, rid, message): if rid in self.folders: # Should be always folder = self.folders[rid] folder.set_color_hex(COLOR_FOLDER_STOPPED) folder.set_status(_("Stopped"), 0) # Color, theme-based icon is used here. It's intentional and # supposed to draw attention folder.add_value("error", "dialog-error", _("Error"), message) folder.show_value('error') def cb_syncthing_folder_error(self, daemon, rid, errors): if rid in self.folders: # Should be always folder = self.folders[rid] message = "%(path)s: %(error)s" % errors[-1] folder.add_value("error", "dialog-error", _("Error"), message) folder.show_value('error') def any_device_online(self): """ Returns True if there is at least one device connected to daemon """ for box in self.devices.values(): if box["online"] and box["id"] != self.daemon.get_my_id(): return True return False def set_status(self, is_connected): """ Sets icon and text on first line of popup menu """ if is_connected: if self.daemon.syncing(): # Daemon is online and at work sr = self.daemon.get_syncing_list() if len(sr) == 1: self["menu-si-status"].set_label(_("Synchronizing '%s'") % (sr[0],)) else: self["menu-si-status"].set_label(_("Synchronizing %s folders") % (len(sr),)) self.animate_status() elif self.any_device_online(): # Daemon is online and idle self.statusicon.set("si-%s-idle" % (self.config['icon_theme'],), _("Up to Date")) self["menu-si-status"].set_label(_("Up to Date")) self.cancel_timer("icon") else: # Daemon is online, but there is no remote device connected self.statusicon.set("si-%s-unknown" % (self.config['icon_theme'],), _("All devices offline")) self["menu-si-status"].set_label(_("All devices offline")) self.cancel_timer("icon") else: # Still connecting to syncthing daemon self.statusicon.set("si-%s-unknown" % (self.config['icon_theme'],), _("Connecting to Syncthing daemon...")) self["menu-si-status"].set_label(_("Connecting to Syncthing daemon...")) self.cancel_timer("icon") def animate_status(self): """ Handles icon animation """ if self.timer_active("icon"): # Already animating return self.statusicon.set("si-%s-%s" % (self.config['icon_theme'], self.sync_animation,)) if self.config["animate_icon"]: self.sync_animation += 1 if self.sync_animation >= SI_FRAMES: self.sync_animation = 0 self.timer("icon", 0.1, self.animate_status) def update_folders(self): """ Sets status of any 'idle' folder that has no devices online to 'offline' and back if one of devices got connected. """ for rid in self.folders: online = False folder = self.folders[rid] for device in folder["devices"]: online = online or device["online"] if online and folder.compare_color_hex(COLOR_FOLDER_OFFLINE): # Folder was marked as offline but is back online now if folder["can_override"]: folder.set_status(folder["override_title"]) else: folder.set_status(_("Up to Date")) folder.set_color_hex(COLOR_FOLDER_IDLE) elif not online and folder.compare_color_hex(COLOR_FOLDER_SCANNING): # Folder is offline and in Scanning state folder.set_color_hex(COLOR_FOLDER_OFFLINE) elif not online and folder.compare_color_hex(COLOR_FOLDER_IDLE): # Folder is offline and in Idle state (not scanning) if len([ d for d in folder["devices"] if d["id"] != self.daemon.get_my_id()]) == 0: # No device to share folder with folder.set_status(_("Unshared")) else: # Folder is shared, but all devices are offline folder.set_status(_("Offline")) folder.set_color_hex(COLOR_FOLDER_OFFLINE) def show_error_box(self, ribar, additional_data={}): self.show_info_box(ribar, additional_data) self.error_boxes.append(ribar) def show_info_box(self, ribar, additional_data=None): self["content"].pack_start(ribar, False, False, 0) self["content"].reorder_child(ribar, 0 if self.use_headerbar else 1) ribar.connect("close", self.cb_infobar_close) ribar.connect("response", self.cb_infobar_response, additional_data) ribar.show() ribar.set_reveal_child(True) def fatal_error(self, text): # TODO: Better way to handle this log.error(text) d = Gtk.MessageDialog( None, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, Gtk.MessageType.ERROR, Gtk.ButtonsType.CLOSE, text ) d.run() d.hide() d.destroy() self.quit() def get_folder_n_path(self, path): """ Returns tuple of ID of folder containing specified path and relative path in that folder, or (None, None) if specified path doesn't belongs anywhere """ for folder_id in self.folders: f = self.folders[folder_id] relpath = os.path.relpath(path, f["norm_path"]) if not relpath.startswith("../") and relpath != "..": return (folder_id, relpath) return (None, None) def __getitem__(self, name): """ Convince method that allows widgets to be accessed via self["widget"] """ if name in self.widgets: return self.widgets[name] return self.builder.get_object(name) def __setitem__(self, name, item): """ Convince method that allows widgets to be accessed via self["widget"] """ self.widgets[name] = item def __contains__(self, name): """ Returns True if there is such widget """ if name in self.widgets: return True return self.builder.get_object(name) != None def hilight(self, boxes): to_hilight = set() for box in boxes: if box["id"] in self.folders: for d in box["devices"]: if d["id"] != self.daemon.get_my_id(): to_hilight.add(d) to_hilight.add(box) if box["id"] in self.devices and box["id"] != self.daemon.get_my_id(): for f in self.folders.values(): if box in f["devices"]: to_hilight.add(f) to_hilight.add(box) for box in itertools.chain(self.devices.values(), self.folders.values()): box.set_hilight(box in to_hilight) def is_visible(self): """ Returns True if main window is visible """ return self["window"].is_visible() def show(self): """ Shows main window or brings it to front, if is already visible. If connection to daemon is not established, shows 'Connecting' dialog as well. """ if not self.daemon is None: self.daemon.set_refresh_interval(REFRESH_INTERVAL_DEFAULT) self.daemon.request_events() if not self["window"].is_visible(): self["window"].show() if IS_WINDOWS and not self.config["window_position"] is None: scr = Gdk.Screen.get_default() self.config["window_position"] = ( min(self.config["window_position"][0], scr.width() - 300), min(self.config["window_position"][1], scr.height() - 100) ) self["window"].move(*self.config["window_position"] ) if self.connect_dialog != None: self.connect_dialog.show() else: self["window"].present() self["menu-si-show"].set_label(_("Hide Window")) def hide(self): """ Hides main windows and 'Connecting' dialog, if displayed """ if self.connect_dialog != None: self.connect_dialog.hide() if IS_WINDOWS: x, y = self["window"].get_position() if x < 0 : x = 0 if y < 0 : y = 0 # Yes, it is possible for window to have negative position # on Windows... self.config["window_position"] = (x, y) self["window"].hide() self["menu-si-show"].set_label(_("Show Window")) if not self.daemon is None: self.daemon.set_refresh_interval(REFRESH_INTERVAL_TRAY) def display_connect_dialog(self, message, quit_button=True): """ Displays 'Be patient, i'm trying to connect here' dialog, or updates it's message if said dialog is already displayed. """ if self.connect_dialog == None: log.debug("Creating connect_dialog") self.connect_dialog = Gtk.MessageDialog( self["window"], Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, Gtk.MessageType.INFO, 0, "-") if quit_button: self.connect_dialog.add_button("gtk-quit", RESPONSE_QUIT) # There is only one response available on this dialog self.connect_dialog.connect("response", self.cb_connect_dialog_response, None) if self.is_visible(): self.connect_dialog.show_all() def set_label(d, message): """ Small, recursive helper function to set label somehwere deep in dialog """ for c in d.get_children(): if isinstance(c, Gtk.Container): if set_label(c, message): return True elif isinstance(c, Gtk.Label): c.set_markup(message) return True return False log.verbose("Setting connect_dialog label %s" % message[0:15]) set_label(self.connect_dialog.get_content_area(), message) def display_run_daemon_dialog(self): """ Displays 'Syncthing is not running, should I start it for you?' dialog. """ if self.connect_dialog == None: # Don't override already existing dialog log.debug("Creating run_daemon_dialog") self.connect_dialog = Gtk.MessageDialog( self["window"], Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, Gtk.MessageType.INFO, 0, "%s\n%s" % ( _("Syncthing daemon doesn't appear to be running."), _("Start it now?") ) ) cb = Gtk.CheckButton(_("Always start daemon automatically")) self.connect_dialog.get_content_area().pack_end(cb, False, False, 2) self.connect_dialog.add_button("_Start", RESPONSE_START_DAEMON) self.connect_dialog.add_button("gtk-quit", RESPONSE_QUIT) # There is only one response available on this dialog self.connect_dialog.connect("response", self.cb_connect_dialog_response, cb) if self.is_visible(): self.connect_dialog.show_all() else: cb.show() # Keep this one visible, even if dialog is not # Update notification icon menu so user can start daemon from there self["menu-si-shutdown"].set_visible(False) self["menu-si-resume"].set_visible(True) def close_connect_dialog(self): if self.connect_dialog != None: self.connect_dialog.hide() self.connect_dialog.destroy() self.connect_dialog = None if IS_WINDOWS: # Force windows position on Windows - GTK 3.18 moves # window to corner when connect_dialog disappears for # some unexplainable reason x, y = self["window"].get_position() def move_back(): self["window"].move(x, y) GLib.idle_add(move_back) def show_folder(self, id, label, path, folder_type, ignore_perms, rescan_interval, fswatcher_enabled, shared): """ Shared is expected to be list """ assert type(folder_type) != bool display_path = path if IS_WINDOWS: if display_path.lower().replace("\\", "/").startswith(os.path.expanduser("~").lower()): display_path = "~%s" % display_path[len(os.path.expanduser("~")):] title = id if self.config["folder_as_path"]: title = display_path if label not in (None, ""): title = label if id in self.folders: # Reuse existing box box = self.folders[id] box.set_title(title) else: # Create new box box = InfoBox(self, title, Gtk.Image.new_from_icon_name("drive-harddisk", Gtk.IconSize.LARGE_TOOLBAR)) # Add visible lines box.add_value("id", "version.svg", _("Folder ID"), id) box.add_value("path", "folder.svg", _("Path")) box.add_value("global", "global.svg", _("Global State"), "? items, ?B") box.add_value("local", "home.svg", _("Local State"), "? items, ?B") box.add_value("oos", "dl_rate.svg", _("Out Of Sync"), "? items, ?B") box.add_value("folder_type", "lock.svg", _("Folder Type")) box.add_value("ignore", "ignore.svg", _("Ignore Permissions")) box.add_value("rescan", "rescan.svg", _("Rescan Interval")) box.add_value("shared", "shared.svg", _("Shared With")) # Add hidden stuff box.add_hidden_value("folder_type_s", folder_type) box.add_hidden_value("override_title", "") box.add_hidden_value("can_override", False) box.add_hidden_value("devices", shared) box.add_hidden_value("norm_path", os.path.abspath(os.path.expanduser(path))) box.add_hidden_value("label", label) # Setup display & signal box.set_status("Unknown") if not self.dark_color is None: box.set_dark_color(*self.dark_color) box.set_color_hex(COLOR_FOLDER) box.set_vexpand(False) GLib.idle_add(box.show_all) # Window border will dissapear without this on Windows self["folderlist"].pack_start(box, False, False, 3) box.set_open(id in self.open_boxes or self.folders_never_loaded) box.connect('right-click', self.cb_popup_menu_folder) box.connect('doubleclick', self.cb_browse_folder) box.connect('enter-notify-event', self.cb_box_mouse_enter) box.connect('leave-notify-event', self.cb_box_mouse_leave) self.folders[id] = box self.folders_never_loaded = False # Set values box.set_value("id", id) box.set_value("path", display_path) if folder_type == "receiveonly": box.set_value("folder_type", _("Receive Only")) elif folder_type == "sendonly": box.set_value("folder_type", _("Send Only")) else: box.set_value("folder_type", _("Send & Receive")) box.set_value("ignore", _("Yes") if ignore_perms else _("No")) box.set_value("rescan", "%s s%s" % ( rescan_interval, " " + _("(watch)") if fswatcher_enabled else "" )) box.set_value("shared", ", ".join([ n.get_title() for n in shared ])) box.set_value("can_override", False) box.set_visible("id", self.config["folder_as_path"] or label not in (None, "")) box.set_visible("ignore", ignore_perms) return box def show_device(self, id, name, compression, introducer, used): if name in (None, ""): # Show first block from ID if name is unset name = id.split("-")[0] if not used: name = "%s (%s)" % (name, _("Unused")) if id in self.devices: # Reuse existing box box = self.devices[id] box.set_title(name) else: # Create new box box = InfoBox(self, name, IdentIcon(id)) # Add visible lines box.add_value("address", "address.svg", _("Address"), None) box.add_value("sync", "sync.svg", _("Synchronization"), "0%", visible=False) box.add_value("compress", "compress.svg", _("Compression")) box.add_value("inbps", "dl_rate.svg", _("Download Rate"), "0 B/s (0 B)", visible=False) box.add_value("outbps", "up_rate.svg", _("Upload Rate"), "0 B/s (0 B)", visible=False) box.add_value("introducer", "thumb_up.svg", _("Introducer")) box.add_value("version", "version.svg", _("Version"), None, visible=False) box.add_value('last-seen', "clock.svg", _("Last Seen"), _("Never")) # Add hidden stuff box.add_hidden_value("id", id) box.add_hidden_value("connected", False) box.add_hidden_value("completion", {}) box.add_hidden_value("time", 0) box.add_hidden_value("online", False) # Setup display & signal if not self.dark_color is None: box.set_dark_color(*self.dark_color) box.set_color_hex(COLOR_DEVICE) box.set_vexpand(False) box.set_open(id in self.open_boxes) box.get_icon().set_size_request(22, 22) GLib.idle_add(box.show_all) # Window border will dissapear without this on Windows self["devicelist"].pack_start(box, False, False, 3) box.connect('right-click', self.cb_popup_menu_device) box.connect('enter-notify-event', self.cb_box_mouse_enter) box.connect('leave-notify-event', self.cb_box_mouse_leave) self.devices[id] = box # Set values if compression in (True, "always"): box.set_value("compress", _("All Data")) elif compression in (False, "never"): box.set_value("compress", _("Off")) else: box.set_value("compress", _("Metadata Only")) box.set_value("introducer", _("Yes") if introducer else _("No")) box.set_value('last-seen', _("Never")) return box def clear(self): """ Clears folder and device lists. """ for i in ('devicelist', 'folderlist'): for c in [] + self[i].get_children(): self[i].remove(c) c.destroy() self.devices = {} self.folders = {} def restart(self): """ Removes everything, restets all data and reconnects to daemon. """ self["edit-menu-button"].set_sensitive(False) self["menu-si-shutdown"].set_sensitive(False) self["menu-si-show-id"].set_sensitive(False) self["menu-si-recvlimit"].set_sensitive(False) self["menu-si-sendlimit"].set_sensitive(False) if not self["infobar"] is None: self.cb_infobar_close(self["infobar"]) for r in self.error_boxes: r.get_parent().remove(r) r.destroy() self.error_boxes = [] self.error_messages = set([]) self.cancel_all() # timers self.daemon.reconnect() def refresh(self): """ Similar to restart(). Re-requests all data from daemon, without disconnecting. Then refreshes all UI widgets. Looks cleaner & prevents UI from blinking. """ log.debug("Reloading config...") self.daemon.reload_config() def change_setting_async(self, setting_name, value, retry_on_error=False, restart=True): """ Asynchronously changes one value in daemon configuration and optionally restarts daemon. This will: - call daemon.read_config() to read configuration from daemon - change value in received YAML document - call daemon.write_config() to post configuration back - call daemon.restart() Everthing will be done asynchronously and will be repeated until succeed, if retry_on_error is set to True. Even if retry_on_error is False, error in write_config will be only logged. It is possible to change nested setting using '/' as separator. That may cause error if parent setting node is not present and this error will not cause retrying process as well. If value is callable, it's called instead of setting it. In such case, callable is called as: value(config_node_as_dict, setting_name) """ # ^^ Longest comment in entire project # Callbacks def csnr_error(e, trash, setting_name, value, retry_on_error): """ Error handler for change_setting_async method """ log.error("change_setting_async: Failed to read configuration: %s", e) if retry_on_error: log.error("Retrying...") self.change_setting_async(setting_name, value, retry_on_error, restart) else: log.error("Giving up.") def csnr_save_error(e, *a): """ Another error handler for change_setting_async method. This one just reports failure. """ log.error("change_setting_async: Failed to store configuration: %s", e) log.error("Giving up.") def csnr_config_read(config, setting_name, value, retry_on_error): """ Handler for change_setting_async Modifies received config and post it back. """ c, setting = config, setting_name while "/" in setting: key, setting = setting.split("/", 1) c = c[key] if hasattr(value, '__call__'): value(c, setting) else: c[setting] = value self.daemon.write_config(config, csnr_config_saved, csnr_save_error, setting_name, value) def csnr_config_saved(setting_name, value): """ Handler for change_setting_async Reports good stuff and restarts daemon. """ log.verbose("Configuration value '%s' set to '%s'", setting_name, value) if restart: message = "%s %s..." % (_("Syncthing is restarting."), _("Please wait")) self.display_connect_dialog(message) self.set_status(False) self.restart() GLib.idle_add(self.daemon.restart) # Call self.daemon.read_config(csnr_config_read, csnr_error, setting_name, value, retry_on_error) def add_ignored(self, ignore_type, value): def cb(target, trash): if ignore_type not in target: target[ignore_type] = [] target[ignore_type].append(value) self.change_setting_async(ignore_type, cb, restart=False) def quit(self, *a): if self.process != None: if IS_WINDOWS: # Always kill subprocess on windows self.process.kill() self.process = None elif self.config["autokill_daemon"] == 2: # Ask d = Gtk.MessageDialog( self["window"], Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, Gtk.MessageType.INFO, 0, "%s\n%s" % ( _("Exiting."), _("Shutdown Syncthing daemon as well?") ) ) d.add_button("gtk-yes", RESPONSE_SLAIN_DAEMON) d.add_button("gtk-no", RESPONSE_SPARE_DAEMON) cb = Gtk.CheckButton(_("Always do same; Don't show this window again")) d.get_content_area().pack_end(cb, False, False, 2) d.connect("response", self.cb_kill_daemon_response, cb) d.show_all() return elif self.config["autokill_daemon"] == 1: # Yes self.process.terminate() self.process = None Gtk.Application.quit(self) def show_add_folder_dialog(self, path=None): """ Waits for daemon to connect and shows 'add folder' dialog, optionally with pre-filled path entry. """ handler_id = None def have_config(*a): """ One-time handler for config-loaded signal """ if not handler_id is None: self.daemon.handler_disconnect(handler_id) self.show() e = FolderEditorDialog(self, True, None, path) e.call_after_loaded(e.fill_folder_id, generate_folder_id(), False) e.load() e.show(self["window"]) if self.daemon.is_connected(): have_config() else: handler_id = self.daemon.connect("config-loaded", have_config) def show_remove_folder_dialog(self, path): """ Waits for daemon to connect, then searches for folder id assigned with specified path and shows 'remove folder' dialog, it such id is found. If id is not found, does nothing. """ handler_id = None def have_config(*a): """ One-time handler for config-loaded signal """ if not handler_id is None: self.daemon.handler_disconnect(handler_id) for rid in self.folders: if self.folders[rid]["path"] == path: name = self.folders[rid].get_title() self.show() self.check_delete("folder", rid, name) return log.warning("Failed to remove directory for path '%s': No such folder", path) if self.daemon.is_connected(): have_config() else: handler_id = self.daemon.connect("config-loaded", have_config) def get_local_device(self): """ Returns box with local device data. May return None if connection to daemon is yet to be made or local device info is not yet known. """ if self.daemon.get_my_id() in self.devices: return self.devices[self.daemon.get_my_id()] return None def get_local_name(self): """ Returns name of local device. If connection to daemon is yet to be made or local device info is not yet known, returns local hostname. """ ld = self.get_local_device() if ld: return ld.get_title() if "HOSTNAME" in os.environ: return os.environ["HOSTNAME"] # Fallbacks to "local" when return "local" # --- Callbacks --- def cb_exit(self, *a): self.statusicon.hide() self.quit() def cb_about(self, *a): from syncthing_gtk.aboutdialog import AboutDialog AboutDialog(self, self.gladepath, self.iconpath).show(self["window"]) def cb_delete_event(self, *e): # Hide main window self.hide() return True def cb_realized(self, widget, *a): context = widget.get_style_context() color = context.get_background_color(Gtk.StateFlags.SELECTED) # Dark color: Gdk.RGBA(red=0.223529, green=0.247059, blue=0.247059, alpha=1.000000) # Light color: Gdk.RGBA(red=0.929412, green=0.929412, blue=0.929412, alpha=1.000000) light_color = False for c in list(color)[0:3]: if c > 0.75: light_color = True if not light_color: # Set dark color based on current window background self.dark_color = (color.red, color.green, color.blue, 1.0) # Recolor all boxes for box in self.folders.values(): box.set_dark_color(*self.dark_color) for box in self.devices.values(): box.set_dark_color(*self.dark_color) def cb_box_mouse_enter(self, box, *a): self.hilight([box]) def cb_box_mouse_leave(self, *a): self.hilight([]) def cb_menu_show_id(self, *a): from syncthing_gtk.iddialog import IDDialog d = IDDialog(self, self.daemon.get_my_id()) d.show(self["window"]) def cb_menu_add_folder(self, event, *a): """ Handler for 'Add folder' menu item """ self.show_add_folder_dialog() def cb_menu_add_device(self, event, *a): """ Handler for 'Add device' menu item """ self.open_editor_device() def cb_menu_daemon_settings(self, event, *a): """ Handler for 'Daemon Settings' menu item """ from syncthing_gtk.daemonsettings import DaemonSettingsDialog e = DaemonSettingsDialog(self) e.load() e.show(self["window"]) def cb_menu_ui_settings(self, event, *a): """ Handler for 'UI Settings' menu item """ from syncthing_gtk.uisettingsdialog import UISettingsDialog e = UISettingsDialog(self) e.load() e.show(self["window"]) def cb_menu_recvlimit(self, menuitem, speed=0): if menuitem.get_active() and self.recv_limit != speed: self.change_setting_async("options/maxRecvKbps", speed) def cb_menu_sendlimit(self, menuitem, speed=0): if menuitem.get_active() and self.send_limit != speed: self.change_setting_async("options/maxSendKbps", speed) def cb_menu_recvlimit_other(self, menuitem): return self.cb_menu_limit_other(menuitem, self.recv_limit) def cb_menu_sendlimit_other(self, menuitem): return self.cb_menu_limit_other(menuitem, self.send_limit) def cb_menu_limit_other(self, menuitem, speed): # Common for cb_menu_recvlimit_other and cb_menu_sendlimit_other # # Removes checkbox, if speed is not considered as 'other' # Displays configuration dialog # Detect if checkbox was changed by user checked_by_user = ( (speed in [0] + SPEED_LIMIT_VALUES and menuitem.get_active()) or (not speed in [0] + SPEED_LIMIT_VALUES and not menuitem.get_active()) ) if checked_by_user: # Display daemon settings dialog and (un)check box back to # its correct state self.cb_menu_daemon_settings(None) menuitem.set_active(not menuitem.get_active()) def cb_popup_menu_folder(self, box, button, time): self.rightclick_box = box if box["can_override"]: self["menu-popup-override"].set_visible(box["folder_type_s"] == "sendonly") self["menu-popup-revert"].set_visible(box["folder_type_s"] == "receiveonly") self["menu-separator-override"].set_visible(box["can_override"]) else: self["menu-popup-override"].set_visible(False) self["menu-popup-revert"].set_visible(False) self["menu-separator-override"].set_visible(False) self["popup-menu-folder"].popup(None, None, None, None, button, time) def cb_popup_menu_device(self, box, button, time): self.rightclick_box = box # Display 'edit device' and 'delete device' menu items on # everything but my own node b = box["id"] != self.daemon.get_my_id() self["menu-popup-edit-device"].set_visible(b) self["menu-popup-delete-device"].set_visible(b) self["menu-popup-pause-device"].set_visible(box.get_status() != _("Paused")) self["menu-popup-resume-device"].set_visible(box.get_status() == _("Paused")) self["popup-menu-device"].popup(None, None, None, None, button, time) def cb_menu_popup(self, source, menu): """ Handler for ubuntu-only toolbar buttons """ menu.popup(None, None, None, None, 0, 0) def cb_menu_popup_edit_folder(self, *a): """ Handler for 'edit' context menu item """ # Editing folder self.open_editor(FolderEditorDialog, self.rightclick_box["id"]) def cb_menu_popup_edit_ignored(self, *a): """ Handler for 'edit ignore patterns' context menu item """ from syncthing_gtk.ignoreeditor import IgnoreEditor e = IgnoreEditor(self, self.rightclick_box["id"], self.rightclick_box["path"], ) e.load() e.show(self["window"]) def cb_menu_popup_edit_device(self, *a): """ Handler for other 'edit' context menu item """ # Editing device self.open_editor_device(self.rightclick_box["id"]) def cb_menu_popup_browse_folder(self, *a): """ Handler for 'browse' folder context menu item """ self.cb_browse_folder(self.rightclick_box) def cb_browse_folder(self, box, *a): """ Handler for 'browse' action """ path = os.path.expanduser(box["path"]) if IS_WINDOWS: # Don't attempt anything, use registry settigns on Windows # (defaults to Windows Explorer) path = path.replace("/", "\\") os.startfile(path, self.config["file_browser"]) else: # Try to use any of following, known commands to # display directory contents for x in ('xdg-open', 'gnome-open', 'kde-open'): if os.path.exists("/usr/bin/%s" % x): os.system( ("/usr/bin/%s '%s' &" % (x, path)).encode('utf-8') ) break def cb_menu_popup_delete_folder(self, *a): """ Handler for 'delete' folder context menu item """ # Editing folder self.check_delete("folder", self.rightclick_box["id"], self.rightclick_box.get_title()) def cb_menu_popup_rescan_folder(self, *a): """ Handler for 'rescan' context menu item """ log.info("Rescan folder %s", self.rightclick_box["id"]) self.daemon.rescan(self.rightclick_box["id"]) def cb_menu_popup_override(self, *a): """ Handler for 'override' context menu item """ log.info("Override folder %s", self.rightclick_box["id"]) self.daemon.override(self.rightclick_box["id"]) def cb_menu_popup_revert(self, *a): """ Handler for 'override local' context menu item """ log.info("Revert folder %s", self.rightclick_box["id"]) self.daemon.revert(self.rightclick_box["id"]) def cb_menu_popup_delete_device(self, *a): """ Handler for other 'edit' context menu item """ self.check_delete("device", self.rightclick_box["id"], self.rightclick_box.get_title()) def cb_menu_popup_pause_device(self, *a): """ Handler for 'resume device' context menu item """ self.daemon.pause(self.rightclick_box["id"]) def cb_menu_popup_resume_device(self, *a): """ Handler for 'resume device' context menu item """ self.daemon.resume(self.rightclick_box["id"]) def check_delete(self, mode, id, name): """ Asks user if he really wants to do what he just asked to do """ msg = _("Do you really want to permanently stop synchronizing directory '%s'?") if mode == "device": msg = _("Do you really want remove device '%s' from Syncthing?") d = Gtk.MessageDialog( self["window"], Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, Gtk.MessageType.QUESTION, Gtk.ButtonsType.YES_NO, msg % name ) r = d.run() d.hide() d.destroy() if r == Gtk.ResponseType.YES: # Load config from server (to have something to delete from) self.daemon.read_config(self.cb_delete_config_loaded, None, mode, id) def cb_delete_config_loaded(self, config, mode, id): """ Callback called when user decides to _really_ delete something and configuration is loaded from server. """ if mode == "folder": config["folders"] = [ x for x in config["folders"] if x["id"] != id ] if id in self.folders: self.folders[id].get_parent().remove(self.folders[id]) else: # device config["devices"] = [ x for x in config["devices"] if x["deviceID"] != id ] if id in self.devices: self.devices[id].get_parent().remove(self.devices[id]) self.daemon.write_config(config, lambda *a: a) def open_editor(self, cls, id): e = cls(self, False, id) e.load() e.show(self["window"]) def open_editor_device(self, id=None, name=None): # Close a previously opened deviceeditor if self.editor_device: self.editor_device.close() self.editor_device = DeviceEditorDialog(self, id not in self.devices, id) if name and id not in self.devices: self.editor_device.call_after_loaded(self.editor_device["vname"].set_text, name) self.editor_device.load() self.editor_device.show(self["window"]) def open_editor_folder(self, id=None, label=None, nid=None): # Close a previously opened deviceeditor if self.editor_folder: self.editor_folder.close() self.editor_folder = FolderEditorDialog(self, id not in self.folders, id) # Find folder with matching ID ... if id in self.folders: # ... if found, show edit dialog and pre-select # matching device self.editor_folder.call_after_loaded(self.editor_folder.mark_device, nid) else: # If there is no matching folder, prefill 'new folder' # dialog and let user to save it self.editor_folder.call_after_loaded(self.editor_folder.mark_device, nid) self.editor_folder.call_after_loaded(self.editor_folder.fill_folder_id, id) if label: self.editor_folder.call_after_loaded(self.editor_folder["vlabel"].set_text, label) self.editor_folder.load() self.editor_folder.show(self["window"]) def cb_menu_popup_show_id(self, *a): """ Handler for 'show id' context menu item """ # Available only for devices from syncthing_gtk.iddialog import IDDialog d = IDDialog(self, self.rightclick_box["id"]) d.show(self["window"]) def cb_menu_restart(self, event, *a): """ Handler for 'Restart' menu item """ self.daemon.restart() def cb_menu_shutdown(self, event, *a): """ Handler for 'Shutdown' menu item """ self.process = None # Prevent app from restarting daemon self.daemon.shutdown() def cb_menu_resume(self, event, *a): """ Handler for 'Resume' menu item """ self.start_daemon_ui() def cb_menu_webui(self, *a): """ Handler for 'Open WebUI' menu item """ log.info("Opening '%s' in browser", self.daemon.get_webui_url()) webbrowser.open(self.daemon.get_webui_url()) def cb_menu_daemon_output(self, *a): if self.process != None: d = DaemonOutputDialog(self, self.process) d.show(None) def cb_statusicon_click(self, *a): """ Called when user clicks on status icon """ # Hide / show main window if self.is_visible(): self.hide() else: self.show() def cb_statusicon_notify_active(self, *a): """ Called when the status icon changes its "inaccessible for sure" state """ # Show main window if the status icon thinks that no icon is visible to the user if not self.statusicon.get_active(): if not (IS_GNOME or IS_I3 or IS_MATE or IS_XFCE): # Gnome sometimes lag on this, but always ends displaying icon later # ... and i3 as well # ... oh gods :'( self.show() def cb_infobar_close(self, bar): if bar == self["infobar"]: self["infobar"] = None bar.close() if bar in self.error_boxes: self.error_boxes.remove(bar) def cb_infobar_response(self, bar, response_id, additional_data={}): # TODO: Split this, I don't like handling different things in # one method if response_id == RESPONSE_RESTART: # Restart self.daemon.restart() elif response_id == RESPONSE_FIX_ADD_FOLDER: # Give up if there is no device with matching ID if additional_data["nid"] in self.devices: self.open_editor_folder(additional_data['rid'], additional_data['label'], additional_data['nid']) elif response_id == RESPONSE_FIX_IGNORE_FOLDER: # Ignore unknown folder self.add_ignored("ignoredFolders", additional_data['rid']) elif response_id == RESPONSE_FIX_ADD_DEVICE: self.open_editor_device(additional_data['nid'], additional_data['name']) elif response_id == RESPONSE_FIX_IGNORE_DEV: # Ignore unknown device self.add_ignored("ignoredDevices", additional_data['nid']) elif response_id == RESPONSE_UR_ALLOW: # Allow Usage reporting self.change_setting_async("options/urAccepted", 1) elif response_id == RESPONSE_UR_FORBID: # Allow Usage reporting self.change_setting_async("options/urAccepted", -1) self.cb_infobar_close(bar) def cb_open_closed(self, box): """ Called from InfoBox when user opens or closes bottom part """ if box.is_open(): self.open_boxes.add(box["id"]) else: self.open_boxes.discard(box["id"]) def cb_connect_dialog_response(self, dialog, response, checkbox): # Common for 'Daemon is not running' and 'Connecting to daemon...' if response == RESPONSE_START_DAEMON: self.start_daemon_ui() if not checkbox is None and checkbox.get_active(): self.config["autostart_daemon"] = 1 else: # if response <= 0 or response == RESPONSE_QUIT: self.cb_exit() def cb_kill_daemon_response(self, dialog, response, checkbox): if response == RESPONSE_SLAIN_DAEMON: if not self.process is None: self.process.terminate() self.process = None if checkbox.get_active(): self.config["autokill_daemon"] = (1 if response == RESPONSE_SLAIN_DAEMON else 0) self.process = None self.cb_exit() def cb_wizard_finished(self, wizard, *a): self.wizard = None if wizard.is_finished() and not self.exit_after_wizard: # Good, try connecting again wizard.hide() wizard.destroy() self.show() if self.process: self.process.kill() self.cb_daemon_exit(self.process, 0) if self.setup_connection(): self.daemon.reconnect() else: self.quit() def cb_daemon_line_captured(self, daemon, line): sys.stdout.write(line) sys.stdout.write("\n") sys.stdout.flush() def cb_daemon_exit(self, proc, error_code): if proc == self.process: # Whatever happens, if daemon dies while it shouldn't, # restart it... if time.time() - self.last_restart_time < RESTART_TOO_FREQUENT_INTERVAL: # ... unless it keeps restarting self.cb_daemon_startup_failed(proc, "Daemon exits too fast") return self.last_restart_time = time.time() if not StDownloader is None and self.config["st_autoupdate"] and os.path.exists(self.config["syncthing_binary"] + ".new"): # New daemon version is downloaded and ready to use. # Switch to this version before restarting self.swap_updated_binary() if self.restart_after_update: self.restart_after_update = False self.restart() self.ct_process() def cb_daemon_startup_failed(self, proc, exception): """ Check if daemon binary exists. If not, ask user where did he put it """ # Prepare FindDaemonDialog instance where user can # set new path for syncthing_binary try: from syncthing_gtk.finddaemondialog import FindDaemonDialog d = FindDaemonDialog(self) except ImportError: d = None if d is None: # FindDaemonDialog can be disabled by setup.py; If that's the case, # setting is reset to default and 1st run wizard is started self.config["syncthing_binary"] = self.config.get_default_value("syncthing_binary") self.config.save() self.hide() self.show_wizard() self.wizard.only_page(1) else: d.load() d.set_transient_for(self["window"] if self.connect_dialog is None else self.connect_dialog) # If binary exists, assume that something is completely wrong, # and change error message if os.path.exists(self.config["syncthing_binary"]): d.set_message("%s\n%s %s\n\n%s" % ( _("Failed to start Syncthing daemon."), _("Error message:"), str(exception), _("Please, check your installation or set new path to Syncthing daemon binary."), )) d.hide_download_button() # Let dialog run and try running syncthing again if new # syncthing_binary is acquired r = d.run() d.destroy() if r == FindDaemonDialog.RESPONSE_SAVED: self.cb_daemon_exit(self.process, -1) else: self.quit() syncthing-gtk-0.9.4.4/syncthing_gtk/configuration.py000066400000000000000000000157211352162771300225700ustar00rootroot00000000000000#!/usr/bin/env python2 """ Syncthing-GTK - Configuration Configuration object implementation; Uses JSON. Config file is by default in ~/.config/syncthing-gtk/config.json or other ~/.config equivalent """ from __future__ import unicode_literals from datetime import datetime from syncthing_gtk.tools import IS_WINDOWS, get_config_dir, is_portable import dateutil.parser import os, sys, json, logging log = logging.getLogger("Configuration") LONG_AGO = datetime.fromtimestamp(1) class _Configuration(object): """ Configuration object implementation. Use like dict to save / access values """ # Dict with keys that are required in configuration file # and default values for those keys. # Format: key : (type, default) REQUIRED_KEYS = { "autostart_daemon" : (int, 2), # 0 - wait for daemon, 1 - autostart, 2 - ask "autokill_daemon" : (int, 2), # 0 - never kill, 1 - always kill, 2 - ask "daemon_priority" : (int, 0), # uses nice values "max_cpus" : (int, 0), # 0 for all cpus "syncthing_binary" : (str, "/usr/bin/syncthing"), "syncthing_arguments" : (str, ""), "minimize_on_start" : (bool, False), "folder_as_path" : (bool, True), "use_old_header" : (bool, False), "icons_in_menu" : (bool, True), "animate_icon" : (bool, True), "notification_for_update" : (bool, True), "notification_for_folder" : (bool, False), "notification_for_error" : (bool, True), "st_autoupdate" : (bool, False), "last_updatecheck" : (datetime, LONG_AGO), "window_position" : (tuple, None), "infobox_style" : (str, 'font_weight="bold" font_size="large"'), "icon_theme" : (str, 'syncthing'), "force_dark_theme" : (bool, False), # Windows-only "language" : (str, ""), # Windows-only "file_browser" : (str, "explore"), # Windows-only } # Overrides some default values on Windows WINDOWS_OVERRIDE = { "syncthing_binary" : (str, "C:\\Program Files\\Syncthing\\syncthing.exe"), "autokill_daemon" : (int, 1), "use_old_header" : (bool, False), "st_autoupdate" : (bool, True), } def __init__(self): try: self.load() except Exception as e: log.warning("Failed to load configuration; Creating new one.") log.warning("Reason: %s", (e,)) self.create() # Convert objects serialized as string back to object self.convert_values() # Check if everything is in place, add default value # where value is missing if self.check_values(): # check_values returns True if any default value is added log.info("Saving configuration...") self.save() def load(self): # Check & create directory if not os.path.exists(self.get_config_dir()): try: os.makedirs(self.get_config_dir()) except Exception as e: log.error("Cannot create configuration directory") log.exception(e) sys.exit(1) # Load json with open(self.get_config_file(), "r") as conf: self.values = json.loads(conf.read()) def get_default_value(self, key): if IS_WINDOWS: return self.WINDOWS_OVERRIDE.get(key, self.REQUIRED_KEYS[key])[-1] return self.REQUIRED_KEYS[key][-1] def get_config_dir(self): return os.path.join(get_config_dir(), "syncthing-gtk") def get_config_file(self): return os.path.join(self.get_config_dir(), "config.json") def create(self): """ Creates new, empty configuration """ self.values = {} self.check_values() self.save() def check_values(self): """ Check if all required values are in place and fill by default whatever is missing. Returns True if anything gets changed. """ needs_to_save = False for key in Configuration.REQUIRED_KEYS: tp, default = Configuration.REQUIRED_KEYS[key] if not self.check_type(key, tp): log.verbose("Configuration key %s is missing. Using default", key) if IS_WINDOWS and key in Configuration.WINDOWS_OVERRIDE: tp, default = Configuration.WINDOWS_OVERRIDE[key] self.values[key] = default needs_to_save = True return needs_to_save def convert_values(self): """ Converts all objects serialized as string back to object """ for key in Configuration.REQUIRED_KEYS: if key in self.values: tp, trash = Configuration.REQUIRED_KEYS[key] try: if tp == datetime and type(self.values[key]) in (str, unicode): # Parse datetime self.values[key] = dateutil.parser.parse(self.values[key]) elif tp == tuple and type(self.values[key]) == list: # Convert list to tuple self.values[key] = tuple(self.values[key]) elif tp == bool and type(self.values[key]) in (int, long): # Convert bools self.values[key] = bool(self.values[key]) except Exception as e: log.warning("Failed to parse configuration value '%s'. Using default.", key) log.warning(e) # Value will be re-created by check_values method del self.values[key] def check_type(self, key, tp): """ Returns True if value is set and type match. Auto-converts objects serialized as string back to objects """ if not key in self.values: return False # Handle special cases if type(self.values[key]) in (str, unicode) and tp in (str, unicode): return True if tp in (tuple,) and self.values[key] == None: return True # Return value return type(self.values[key]) == tp def save(self): """ Saves configuration file """ with open(self.get_config_file(), "w") as conf: conf.write( json.dumps( self.values, sort_keys=True, indent=4, separators=(',', ': '), default=serializer ) ) def __iter__(self): for k in self.values: yield k def get(self, key): return self.values[key] def set(self, key, value): self.values[key] = value self.save() __getitem__ = get __setitem__ = set def __delitem__(self, key): del self.values[key] def __contains__(self, key): """ Returns true if there is such value """ return key in self.values def serializer(obj): """ Handles serialization where json can't do it by itself """ if hasattr(obj, "isoformat"): # datetime object return obj.isoformat() raise TypeError("Can't serialize object of type %s" % (type(obj),)) def Configuration(*a, **b): if IS_WINDOWS and not is_portable(): from syncthing_gtk.windows import WinConfiguration return WinConfiguration(*a, **b) return _Configuration(*a, **b) Configuration.REQUIRED_KEYS = _Configuration.REQUIRED_KEYS Configuration.WINDOWS_OVERRIDE = _Configuration.WINDOWS_OVERRIDE def migrate_fs_watch(stgtk_config, st_config): """ Migrates filesystem watch config from ST-GTK configuration to Syncthing configuration and posts it to daemon. Returns True if anything was changed. Called automatically if old fs watch setting is found in ST-GTK config. """ # TODO: This can be removed later if "use_inotify" not in stgtk_config: return False changed = False folder_by_id = { x["id"]: x for x in st_config['folders'] } for rid in stgtk_config["use_inotify"]: if rid in folder_by_id: folder_by_id[rid]["fsWatcherDelayS"] = 10 folder_by_id[rid]["fsWatcherEnabled"] = True changed = True del stgtk_config["use_inotify"] return changed syncthing-gtk-0.9.4.4/syncthing_gtk/daemon.py000066400000000000000000001443011352162771300211610ustar00rootroot00000000000000#!/usr/bin/env python2 """ Syncthing-GTK - Daemon Class interfacing with syncthing daemon Create instance, connect singal handlers and call daemon.reconnect() """ from __future__ import unicode_literals from gi.repository import Gio, GLib, GObject from syncthing_gtk.timermanager import TimerManager from syncthing_gtk.tools import parsetime, get_header, compare_version from syncthing_gtk.tools import get_config_dir from dateutil import tz from xml.dom import minidom from datetime import datetime import json, os, sys, time, logging, urllib log = logging.getLogger("Daemon") # Minimal version supported by Daemon class MIN_VERSION = "0.14" # Random constant used as key when adding headers to returned data in # REST requests; Anything goes, as long as it isn't string HTTP_HEADERS = int(65513) # Last-seen values before this date are translated to never NEVER = datetime(1971, 1, 1, 1, 1, 1, tzinfo=tz.tzlocal()) class Daemon(GObject.GObject, TimerManager): """ Object for interacting with syncthing daemon. List of signals: config-out-of-sync () Emitted when daemon synchronization gets out of sync and daemon needs to be restarted. config-saved () Emitted when daemon saves configuration without need for restarting. connected () Emitted when connection to daemon is initiated, before configuration is loaded and parsed. disconnected (reason, message) Emitted after connection to daemon is lost. Connection can be reinitiated by calling reconnect() reason : Daemon.SHUTDOWN if connection is closed after calling shutdown() Daemon.RESTART if connection is closed after calling restart() Daemon.UNEXPECTED for all other cases message: generated error message config-loaded(config) Emitted while connection do daemon is being created, when configuration is loaded from daemon. config: decoded /rest/config YAML file connection-error (reason, message, exception) Emitted if connection to daemon fails. reason: Daemon.REFUSED if connection is refused and daemon probably offline. Connection will be retried automaticaly. Daemon.UNKNOWN for all other problems. Connection can be reinitiated by calling reconnect() in this case. message: generated error message exception: Exeception that caused problem or None my-id-changed (my_id, replaced) Emitted when ID is retrieved from device or when ID changes after client connects to another device my_id: ID of device that is instance connected to. error (message) Emitted every time when daemon generates error readable by WebUI (/rest/errors call) message: Error message sent by daemon folder-rejected(device_id, folder_id, label) Emitted when daemon detects unexpected folder from known device. device_id: id of device that send unexpected folder id folder_id: id of unexpected folder label: label of unexpected folder or None device-rejected(device_id, device_name, address) Emitted when daemon detects connection from unknown device device_id: device id device_name: device name address: address which connection come from device-added (id, name, used, data) Emited when new device is loaded from configuration id: id of loaded device name: name of loaded device (may be None) used: true if there is any folder shared with this device data: dict with rest of device data device-connected (id) Emitted when daemon connects to remote device id: id of device device-disconnected (id) Emitted when daemon loses connection to remote device id: id of device device-discovered (id, addresses) # TODO: What this event does? id: id of device addresses: list of device addresses device-data-changed (id, address, version, inbps, outbps, inbytes, outbytes) Emitted when device data changes id: id of device address: address of remote device version: daemon version of remote device inbps: download rate outbps: upload rate inbytes: total number of bytes downloaded outbytes: total number of bytes uploaded last-seen-changed (id, last_seen) Emitted when daemon reported 'last seen' value for device changes or when is this value received for first time id: id of device last_seen: datetime object or None, if device was never seen device-paused (id): Emitted when synchronization with device is paused id: id of folder device-resumed (id): Emitted when synchronization with device is resumed id: id of folder device-sync-started (id, progress): Emitted after device synchronization is started id: id of folder progress: synchronization progress (0.0 to 1.0) device-sync-progress (id, progress): Emitted repeatedly while device is being synchronized id: id of folder progress: synchronization progress (0.0 to 1.0) device-sync-finished (id): Emitted after device synchronization is finished id: id of folder folder-added (id, data) Emitted when new folder is loaded from configuration id: id of loaded folder data: dict with rest of folder data folder-error (id, errors) Emitted when when a folder cannot be successfully synchronized id: id of loaded folder errors: list with errors folder-data-changed (id, data): Emitted when change in folder data (/rest/model call) is detected and successfully loaded. id: id of folder data: dict with loaded data folder-data-failed (id): Emitted when daemon fails to load folder data (/rest/model call), most likely because folder was just added and syncthing daemon needs to be restarted id: id of folder folder-scan-progress (id, progress): Emitted repeatedly while folder is being scanned id: id of folder progress: scan progress (0.0 to 1.0) folder-sync-progress (id, progress): Emitted repeatedly while folder is being synchronized id: id of folder progress: synchronization progress (0.0 to 1.0) folder-sync-finished (id): Emitted after folder synchronization is finished id: id of folder folder-scan-started (id): Emitted after folder scan is started id: id of folder folder-scan-finished (id): Emitted after folder scan is finished id: id of folder folder-stopped (id, message): Emitted when folder enters 'stopped' state. No 'folder-sync', 'folder-sync-progress' and 'folder-scan-started' events are emitted after folder enters this state, until reconnect() is called. id: id of folder message: error message item-started (folder_id, filename, time): Emitted when synchronization of file starts folder_id: id of folder that contains file filename: synchronized file time: event timestamp item-updated (folder_id, filename, time): Emited when change in local file is detected (LocalIndexUpdated event) folder_id: id of folder that contains file filename: updated file time: event timestamp startup-complete(): Emited when daemon initialization is complete. system-data-updated (ram_ussage, cpu_ussage, d_failed, d_total) Emitted every time when system information is received from daemon. ram_ussage: memory ussage in bytes cpu_ussage: CPU ussage in percent (0.0 to 100.0) d_failed: Number of discovery servers that daemon failed to connect to d_total: Total number of discovery servers """ __gsignals__ = { b"config-out-of-sync" : (GObject.SIGNAL_RUN_FIRST, None, ()), b"config-saved" : (GObject.SIGNAL_RUN_FIRST, None, ()), b"connected" : (GObject.SIGNAL_RUN_FIRST, None, ()), b"disconnected" : (GObject.SIGNAL_RUN_FIRST, None, (int, object)), b"config-loaded" : (GObject.SIGNAL_RUN_FIRST, None, (object,)), b"connection-error" : (GObject.SIGNAL_RUN_FIRST, None, (int, object, object)), b"error" : (GObject.SIGNAL_RUN_FIRST, None, (object,)), b"folder-rejected" : (GObject.SIGNAL_RUN_FIRST, None, (object,object,object)), b"device-rejected" : (GObject.SIGNAL_RUN_FIRST, None, (object,object,object)), b"my-id-changed" : (GObject.SIGNAL_RUN_FIRST, None, (object,)), b"device-added" : (GObject.SIGNAL_RUN_FIRST, None, (object, object, bool, object)), b"device-connected" : (GObject.SIGNAL_RUN_FIRST, None, (object,)), b"device-disconnected" : (GObject.SIGNAL_RUN_FIRST, None, (object,)), b"device-discovered" : (GObject.SIGNAL_RUN_FIRST, None, (object,object,)), b"device-data-changed" : (GObject.SIGNAL_RUN_FIRST, None, (object, object, object, float, float, object, object)), b"last-seen-changed" : (GObject.SIGNAL_RUN_FIRST, None, (object, object)), b"device-paused" : (GObject.SIGNAL_RUN_FIRST, None, (object,)), b"device-resumed" : (GObject.SIGNAL_RUN_FIRST, None, (object,)), b"device-sync-started" : (GObject.SIGNAL_RUN_FIRST, None, (object, float)), b"device-sync-progress" : (GObject.SIGNAL_RUN_FIRST, None, (object, float)), b"device-sync-finished" : (GObject.SIGNAL_RUN_FIRST, None, (object,)), b"folder-added" : (GObject.SIGNAL_RUN_FIRST, None, (object, object)), b"folder-error" : (GObject.SIGNAL_RUN_FIRST, None, (object, object)), b"folder-data-changed" : (GObject.SIGNAL_RUN_FIRST, None, (object, object)), b"folder-data-failed" : (GObject.SIGNAL_RUN_FIRST, None, (object,)), b"folder-sync-finished" : (GObject.SIGNAL_RUN_FIRST, None, (object,)), b"folder-sync-progress" : (GObject.SIGNAL_RUN_FIRST, None, (object, float)), b"folder-sync-started" : (GObject.SIGNAL_RUN_FIRST, None, (object,)), b"folder-scan-finished" : (GObject.SIGNAL_RUN_FIRST, None, (object,)), b"folder-scan-started" : (GObject.SIGNAL_RUN_FIRST, None, (object,)), b"folder-scan-progress" : (GObject.SIGNAL_RUN_FIRST, None, (object, float)), b"folder-stopped" : (GObject.SIGNAL_RUN_FIRST, None, (object,object)), b"item-started" : (GObject.SIGNAL_RUN_FIRST, None, (object,object,object)), b"item-updated" : (GObject.SIGNAL_RUN_FIRST, None, (object,object,object)), b"startup-complete" : (GObject.SIGNAL_RUN_FIRST, None, ()), b"system-data-updated" : (GObject.SIGNAL_RUN_FIRST, None, (int, float, int, int)), } # Constants for 'reason' parameter of disconnected event UNEXPECTED = 0 # connection closed by daemon SHUTDOWN = 1 RESTART = 2 # Constants for 'reason' parameter of connection-error event REFUSED = 1 NOT_AUTHORIZED = 2 OLD_VERSION = 3 TLS_UNSUPPORTED = 4 UNKNOWN = 255 def __init__(self, syncthing_configxml=None): GObject.GObject.__init__(self) TimerManager.__init__(self) self._CSRFtoken = None self._address = None self._api_key = None self._connected = False self._refresh_interval = 1 # seconds self._configxml = syncthing_configxml # syncing_folders holds set of folders that are being synchronized self._syncing_folders = set() # stopped_folders holds set of folders in 'stopped' state # No 'folder-sync', 'folder-sync-progress' and 'folder-scan-started' # events are emitted after folder enters this state self._stopped_folders = set() # syncing_devices does same thing, only for devices self._syncing_devices = set() # and once again, for folders in 'Scanning' state self._scanning_folders = set() # device_data stores data needed to compute transfer speeds # and synchronization state self._device_data = {} # folder_devices stores list of devices assigned to folder self._folder_devices = {} # last_seen holds last_seen value for each folder, preventing firing # last-seen-changed event with same values twice self._last_seen = {} # last_error_time is used to discard repeating errors self._last_error_time = None # Time is taken for first event # last_id is id of last event received from daemon self._last_id = 0 # Epoch is increased when reconnect() method is called; It is # used to discard responses for old REST requests self._epoch = 1 self._instance_id = None self._my_id = None self._read_config() ### Internal stuff ### def _read_config(self): # Read syncthing config to get connection url if not self._configxml: self._configxml = os.path.join(get_config_dir(), "syncthing", "config.xml") if not os.path.exists(self._configxml) and os.path.exists(os.path.expanduser("~/snap/syncthing/common/syncthing")): # Special case for syncthing in snap package self._configxml = os.path.expanduser("~/snap/syncthing/common/syncthing/config.xml") try: log.debug("Reading syncthing config %s", self._configxml) with open(self._configxml, "r") as f: config = f.read() except Exception as e: raise InvalidConfigurationException("Failed to read daemon configuration: %s" % e) try: xml = minidom.parseString(config) except Exception as e: raise InvalidConfigurationException("Failed to parse daemon configuration: %s" % e) tls = "false" try: tls = xml.getElementsByTagName("configuration")[0] \ .getElementsByTagName("gui")[0].getAttribute("tls") except Exception as e: pass self._tls = False self._cert = None if tls.lower() == "true": self._tls = True try: self._cert = Gio.TlsCertificate.new_from_file( os.path.join(get_config_dir(), "syncthing", "https-cert.pem")) except Exception as e: log.exception(e) raise TLSErrorException("Failed to load daemon certificate") try: self._address = xml.getElementsByTagName("configuration")[0] \ .getElementsByTagName("gui")[0] \ .getElementsByTagName("address")[0] \ .firstChild.nodeValue if self._address.startswith("0.0.0.0"): addr, port = self._address.split(":", 1) self._address = "127.0.0.1:%s" % (port,) log.debug("WebUI listens on 0.0.0.0, connecting to 127.0.0.1 instead") except Exception as e: log.exception(e) raise InvalidConfigurationException("Required configuration node not found in daemon config file") try: self._api_key = xml.getElementsByTagName("configuration")[0] \ .getElementsByTagName("gui")[0] \ .getElementsByTagName("apikey")[0] \ .firstChild.nodeValue except Exception as e: # API key can be none pass def override_config(self, address, api_key): """ Can be used to override settings loaded from config file. api_key can be None. """ self._address = address self.api_key = api_key def _get_device_data(self, nid): """ Returns dict with device data, creating it if needed """ if not nid in self._device_data: self._device_data[nid] = { "inBytesTotal" : 0, "outBytesTotal" : 0, "inbps" : 0, "outbps" : 0 , "clientVersion" : "?", "address": "", "completion" : {}, "connected" : False, } return self._device_data[nid] def _request_config(self, *a): """ Request settings from syncthing daemon """ RESTRequest(self, "system/config", self._syncthing_cb_config, self._syncthing_cb_config_error).start() def _request_folder_data(self, folder_id): id_enc = urllib.quote(folder_id.encode('utf-8')) RESTRequest(self, "db/status?folder=%s" % (id_enc,), self._syncthing_cb_folder_data, self._syncthing_cb_folder_data_failed, folder_id).start() def _request_last_seen(self, *a): """ Request 'last seen' values for all devices """ RESTRequest(self, "stats/device", self._syncthing_cb_last_seen).ignore_error().start() def _parse_dev_n_folders(self, config): """ Parses devices and folders from configuration and emits associated events. """ # Pre-parse folders to detect unused devices device_folders = {} for r in config["folders"]: rid = r["id"] for n in r["devices"]: nid = n["deviceID"] if not nid in device_folders : device_folders[nid] = [] device_folders[nid].append(rid) # Parse devices for n in sorted(config["devices"], key=lambda x : x["name"].lower()): nid = n["deviceID"] self._get_device_data(nid) # Creates dict with device data used = (nid in device_folders) and (len(device_folders[nid]) > 0) self.emit("device-added", nid, n["name"], used, n) # Parse folders for r in sorted(config["folders"], key=lambda x : x["id"].lower()): rid = r["id"] self._syncing_folders.add(rid) self._folder_devices[rid] = [ n["deviceID"] for n in r["devices"] ] self.emit("folder-added", rid, r) self._request_folder_data(rid) ### Callbacks ### def _syncthing_cb_shutdown(self, data, reason): """ Callback for 'shutdown' AND 'restart' request """ if 'ok' in data: if self._connected: self._connected = False self._epoch += 1 self.emit("disconnected", reason, "") self.cancel_all() def _syncthing_cb_errors(self, errors): if errors["errors"] is not None: for e in errors["errors"]: if "time" in e: # TODO: Remove this next time support for older daemon is dropped t = parsetime(e["time"]) msg = e["error"] elif "when" in e: t = parsetime(e["when"]) msg = e["message"] else: # Can't decode this continue if t > self._last_error_time: self.emit("error", msg) self._last_error_time = t r = RESTRequest(self, "system/error", self._syncthing_cb_errors) self.timer("errors", self._refresh_interval * 5, r.start) def _syncthing_cb_connections(self, data, prev_time): now = time.time() td = now - prev_time cons = data["connections"] # Use my own device for totals, if it is already known # It it is not known, just skip totals for now if not self._my_id is None: cons[self._my_id] = data["total"] for id in cons: # Load device data nid = id device_data = self._get_device_data(nid) # Compute rates try: cons[id]["inbps"] = max(0.0, (cons[id]["inBytesTotal"] - device_data["inBytesTotal"]) / td); cons[id]["outbps"] = max(0.0, (cons[id]["outBytesTotal"] - device_data["outBytesTotal"]) / td); except Exception: cons[id]["inbps"] = 0.0 cons[id]["outbps"] = 0.0 # Store updated device_data for key in cons[id]: if not key in ('clientVersion', 'connected'): # Don't want copy those if cons[id][key] != "": # Happens for 'total' device_data[key] = cons[id][key] if "clientVersion" in cons[id] and cons[id]["clientVersion"] != "": device_data["clientVersion"] = cons[id]["clientVersion"] if cons[id]["paused"]: # Send "device-paused" signal if device needed device_data["connected"] = False self.emit("device-paused", nid) else: # Send "device-connected" signal, if device was disconnected until now if cons[id]["connected"]: if not device_data["connected"] and nid != self._my_id: device_data["connected"] = True self.emit("device-connected", nid) # Send "device-data-changed" signal self.emit("device-data-changed", nid, device_data["address"], device_data["clientVersion"], device_data["inbps"], device_data["outbps"], device_data["inBytesTotal"], device_data["outBytesTotal"]) # ... repeat until pronounced dead r = RESTRequest(self, "system/connections", self._syncthing_cb_connections, None, now) self.timer("conns", self._refresh_interval * 5, r.start) def _syncthing_cb_last_seen(self, data): for nid in data: if nid != HTTP_HEADERS: t = parsetime(data[nid]["lastSeen"]) if t < NEVER: t = None if not nid in self._last_seen or self._last_seen[nid] != t: self._last_seen[nid] = t self.emit('last-seen-changed', nid, t) def _syncthing_cb_completion(self, data): nid = data["device"] rid = data["folder"] # Store acquired value device = self._get_device_data(nid) device["completion"][rid] = float(data["completion"]) # Recompute stuff total = 100.0 * len(device["completion"]) sync = 0.0 if total > 0.0: sync = sum(device["completion"].values()) / total if sync <= 0 or sync >= 100: # Not syncing if nid in self._syncing_devices: self._syncing_devices.discard(nid) self.emit("device-sync-finished", nid) else: # Syncing if not nid in self._syncing_devices: self._syncing_devices.add(nid) self.emit("device-sync-started", nid, sync) else: self.emit("device-sync-progress", nid, sync) def _syncthing_cb_system(self, data): if "myID" not in data: # Invalid response r = RESTRequest(self, "system/status", self._syncthing_cb_system) log.warning("Invalid response received for rest/system/status request") self.timer("system", self._refresh_interval * 5, r.start) return if self._my_id != data["myID"]: if self._my_id != None: # Can myID be ever changed? log.warning("My ID has been changed on the fly") self._my_id = data["myID"] self.emit('my-id-changed', self._my_id) version = get_header(data[HTTP_HEADERS], "X-Syncthing-Version") if version: self._syncthing_cb_version_known(version) else: RESTRequest(self, "system/version", self._syncthing_cb_version).start() d_failed, d_total = 0, 0 if "discoveryEnabled" in data and data["discoveryEnabled"]: d_total = data["discoveryMethods"] d_failed = len(data["discoveryErrors"]) if "startTime" in data: if self._instance_id is None: self._instance_id = data["startTime"] else: if self._instance_id != data["startTime"]: return self._instance_replaced() self.emit('system-data-updated', data["sys"], float(data["cpuPercent"]), d_failed, d_total) r = RESTRequest(self, "system/status", self._syncthing_cb_system) self.timer("system", self._refresh_interval * 5, r.start) def _instance_replaced(self): """ Called when it is detected that syncthing daemon instance is no longer same as we talked to before """ log.warning("Daemon instance was replaced unexpectedly. Disconnecting from daemon.") self._disconnected(message="Daemon instance replaced unexpectedly") def _disconnected(self, reason=UNEXPECTED, message=""): """ Called to prepare and emit "disconnected" signal """ self._my_id = None if self._connected: self._connected = False self._epoch += 1 self.emit("disconnected", reason, message) self.cancel_all() def _syncthing_cb_version(self, data): if "version" in data: # New since https://github.com/syncthing/syncthing/commit/d7956dd4957fa6eee5971c072fd7181015fa876c version = data["version"] else: version = data["data"] self._syncthing_cb_version_known(version) def _syncthing_cb_version_known(self, version): """ Called when version is received from daemon, either by calling /rest/version or from X-Syncthing-Version header. """ if not compare_version(version, MIN_VERSION): # Syncting version too low. Cancel everything and report error self.cancel_all() self._epoch += 1 msg = "daemon is too old" self.emit("connection-error", Daemon.OLD_VERSION, msg, Exception(msg)) return if self._my_id != None: device = self._get_device_data(self._my_id) if version != device["clientVersion"]: device["clientVersion"] = version self.emit("device-data-changed", self._my_id, None, device["clientVersion"], device["inbps"], device["outbps"], device["inBytesTotal"], device["outBytesTotal"]) def _syncthing_cb_folder_data(self, data, rid): state = data['state'] if state in ('error', 'stopped'): if not rid in self._stopped_folders: self._stopped_folders.add(rid) reason = data["invalid"] or data["error"] self.emit("folder-stopped", rid, reason) self.emit('folder-data-changed', rid, data) p = 0.0 if state == "syncing": if float(data["globalBytes"]) > 0.0: p = float(data["inSyncBytes"]) / float(data["globalBytes"]) self._folder_state_changed(rid, state, p) def _syncthing_cb_folder_data_failed(self, exception, request, rid): self.emit('folder-data-failed', rid) def _syncthing_cb_config(self, config): """ Called when configuration is loaded from syncthing daemon. After configuration is successfully parsed, app starts querying for events """ if not self._connected: self._connected = True self.emit('connected') self._parse_dev_n_folders(config) EventPollLoop(self).start() RESTRequest(self, "system/config/insync", self._syncthing_cb_config_in_sync).start() RESTRequest(self, "system/connections", self._syncthing_cb_connections, None, time.time()).start() RESTRequest(self, "system/status", self._syncthing_cb_system).start() self._request_last_seen() self.check_config() self.emit('config-loaded', config) def _syncthing_cb_config_error(self, exception, command): self.cancel_all() if isinstance(exception, GLib.GError): if exception.code in (0, 39, 34, 45): # Connection Refused / Cannot connect to destination # It usually means that daemon is not yet fully started or not running at all. epoch = self._epoch self.emit("connection-error", Daemon.REFUSED, exception.message, exception) if epoch == self._epoch: r = RESTRequest(self, "system/config", self._syncthing_cb_config, self._syncthing_cb_config_error) self.timer("config", self._refresh_interval, r.start) return elif isinstance(exception, HTTPAuthException): self.emit("connection-error", Daemon.NOT_AUTHORIZED, exception.message, exception) return elif isinstance(exception, HTTPCode): # HTTP 404 may acually mean old daemon version version = get_header(exception.headers, "X-Syncthing-Version") if version != None and not compare_version(version, MIN_VERSION): self._epoch += 1 msg = "daemon is too old" self.emit("connection-error", Daemon.OLD_VERSION, msg, Exception(msg)) else: self.emit("connection-error", Daemon.UNKNOWN, exception.message, exception) return elif isinstance(exception, TLSUnsupportedException): self.emit("connection-error", Daemon.TLS_UNSUPPORTED, exception.message, exception) return elif isinstance(exception, ConnectionRestarted): # Happens on Windows. Just try again. GLib.idle_add(self._request_config) return elif isinstance(exception, TLSUnsupportedException): self.emit("connection-error", Daemon.TLS_UNSUPPORTED, exception.message, exception) return self.emit("connection-error", Daemon.UNKNOWN, exception.message, exception) def _syncthing_cb_config_in_sync(self, data): """ Handler for config/sync response. Emits 'config-out-of-sync' if configuration is not in sync. """ if "configInSync" in data: if not data["configInSync"]: # Not in sync... self.emit("config-out-of-sync") def _folder_state_changed(self, rid, state, progress): """ Emits event according to last known and new state. """ if state != "syncing" and rid in self._syncing_folders: self._syncing_folders.discard(rid) if not rid in self._stopped_folders: self.emit("folder-sync-finished", rid) if state != "scanning" and rid in self._scanning_folders: self._scanning_folders.discard(rid) if not rid in self._stopped_folders: self.emit("folder-scan-finished", rid) if state == "syncing": if not rid in self._stopped_folders: if rid in self._syncing_folders: self.emit("folder-sync-progress", rid, progress) else: self._syncing_folders.add(rid) self.emit("folder-sync-started", rid) elif state == "scanning": if not rid in self._stopped_folders: if not rid in self._scanning_folders: self._scanning_folders.add(rid) self.emit("folder-scan-started", rid) def _on_event(self, e): eType = e["type"] if eType in ("Ping", "Starting"): # Just ignore ignore those pass elif eType == "StartupComplete": self.emit("startup-complete") elif eType == "StateChanged": state = e["data"]["to"] rid = e["data"]["folder"] self._folder_state_changed(rid, state, 0) elif eType in ("RemoteIndexUpdated"): pass elif eType == "DeviceConnected": nid = e["data"]["id"] self.emit("device-connected", nid) elif eType == "DeviceDisconnected": nid = e["data"]["id"] self.emit("device-disconnected", nid) elif eType == "DeviceDiscovered": nid = e["data"]["device"] addresses = e["data"]["addrs"] self.emit("device-discovered", nid, addresses) elif eType == "DevicePaused": nid = e["data"]["device"] self.emit("device-paused", nid) elif eType == "DeviceResumed": nid = e["data"]["device"] self.emit("device-resumed", nid) self._request_last_seen() elif eType == "FolderRejected": nid = e["data"]["device"] rid = e["data"]["folder"] label = e["data"]["folderLabel"] if "folderLabel" in e["data"] else None self.emit("folder-rejected", nid, rid, label) elif eType == "DeviceRejected": nid = e["data"]["device"] name = e["data"]["name"] address = e["data"]["address"] self.emit("device-rejected", nid, name, address) elif eType == "FolderScanProgress": rid = e["data"]["folder"] total = float(e["data"]["total"]) if total > 0: # ^^ just in case status = float(e["data"]["current"]) / total self.emit("folder-scan-progress", rid, status) elif eType == "ItemStarted": rid = e["data"]["folder"] filename = e["data"]["item"] t = parsetime(e["time"]) self.emit("item-started", rid, filename, t) elif eType == "FolderCompletion": self._syncthing_cb_completion(e["data"]) elif eType == "FolderSummary": rid = e["data"]["folder"] self._syncthing_cb_folder_data(e["data"]["summary"], rid) elif eType == "FolderErrors": rid = e["data"]["folder"] self.emit("folder-error", rid, e["data"]["errors"]) elif eType == "ConfigSaved": self.emit("config-saved") elif eType == "ItemFinished": rid = e["data"]["folder"] if e["data"]["error"] is None: filename = e["data"]["item"] t = parsetime(e["time"]) self.emit("item-updated", rid, filename, t) elif eType in ("ItemFinished", "DownloadProgress", "RelayStateChanged", "LocalIndexUpdated", "ListenAddressesChanged", "LoginAttempt"): # Not handled pass else: log.warning("Unhandled event type: %s", e) ### External stuff ### def reconnect(self): """ Cancel all pending requests, throw away all data and (re)connect. Should be called from glib loop """ self.close() GLib.idle_add(self._request_config) def reload_config(self, callback=None, error_callback=None): """ Reloads config from syncthing daemon. Calling this will cause or may cause emiting following events with reloaded data: - folder-added - device-added - config-out-of-sync """ def reload_config_cb(config): self._parse_dev_n_folders(config) if not callback is None: callback() RESTRequest(self, "system/config/insync", self._syncthing_cb_config_in_sync).start() RESTRequest(self, "system/config", reload_config_cb, error_callback).start() def close(self): """ Terminates everything, cancel all pending requests, throws away data. Works like reconnect(), but without reconnecting. """ self._my_id = None self._instance_id = None self._connected = False self._syncing_folders = set() self._stopped_folders = set() self._syncing_devices = set() self._scanning_folders = set() self._device_data = {} self._folder_devices = {} self._last_id = 0 self._last_seen = {} self.cancel_all() self._epoch += 1 def check_config(self): """ Check if configuration is in sync. Should cause 'config-out-of-sync' event to be raised ASAP. """ RESTRequest(self, "system/config/insync", self._syncthing_cb_config_in_sync).start() def read_config(self, callback, error_callback=None, *calbackdata): """ Asynchronously reads last configuration version from daemon (even if this version is not currently used). Calls callback(config) with data decoded from json on success, error_callback(exception) on failure """ RESTRequest(self, "system/config", callback, error_callback, *calbackdata).start() def write_config(self, config, callback, error_callback=None, *calbackdata): """ Asynchronously POSTs new configuration to daemon. Calls callback() on success, error_callback(exception) on failure. Should cause 'config-out-of-sync' event to be raised ASAP. """ def run_before(data, *a): self.check_config() callback(*calbackdata) RESTPOSTRequest(self, "system/config", config, run_before, error_callback, *calbackdata).start() def read_stignore(self, folder_id, callback, error_callback=None, *calbackdata): """ Asynchronously reads .stignore data from from daemon. Calls callback(text) with .stignore content on success, error_callback(exception) on failure """ def r_filter(data, *a): if "ignore" in data and not data["ignore"] is None: callback("\n".join(data["ignore"]).strip(" \t\n"), *a) else: callback("", *a) id_enc = urllib.quote(folder_id.encode('utf-8')) RESTRequest(self, "db/ignores?folder=%s" % (id_enc,), r_filter, error_callback, *calbackdata).start() def write_stignore(self, folder_id, text, callback, error_callback=None, *calbackdata): """ Asynchronously POSTs .stignore to daemon. Calls callback() with on success, error_callback(exception) on failure. """ data = { 'ignore': text.split("\n") } id_enc = urllib.quote(folder_id.encode('utf-8')) RESTPOSTRequest(self, "db/ignores?folder=%s" % (id_enc,), data, callback, error_callback, *calbackdata).start() def restart(self): """ Asks daemon to restart. If sucesfull, call will cause 'disconnected' event with Daemon.RESTART reason to be fired """ RESTPOSTRequest(self, "system/restart", {}, self._syncthing_cb_shutdown, None, Daemon.RESTART).start() def shutdown(self): """ Asks daemon to shutdown. If sucesfull, call will cause 'disconnected' event with Daemon.SHUTDOWN reason to be fired """ RESTPOSTRequest(self, "system/shutdown", {}, self._syncthing_cb_shutdown, None, Daemon.SHUTDOWN).start() def syncing(self): """ Returns true if any folder is being synchronized right now """ return len(self._syncing_folders) > 0 def get_api_key(self): """ Returns API key used for communication with daemon. May return None """ return self._api_key def get_min_version(self): """ Returns minimal syncthing daemon version that daemon instance can handle. """ return MIN_VERSION def get_syncing_list(self): """ Returns list of ids of foldersitories that are being synchronized right now. """ return list(self._syncing_folders) def get_my_id(self): """ Returns ID of device that is instance connected to. May return None to indicate that ID is not yet known """ return self._my_id def get_version(self): """ Returns daemon version or "unknown" if daemon version is not yet known """ if self._my_id == None: return "unknown" device = self._get_device_data(self._my_id) if "clientVersion" in device: return device["clientVersion"] return "unknown" def get_webui_url(self): """ Returns webiu url in http(s)://127.0.0.1:8080 format """ return "%s://%s" % ( "https" if self._tls else "http", self._address ) def get_address(self): """ Returns tuple address on which daemon listens on. """ return self._address def is_connected(self): """ Returns True if daemon is known to be alive """ return self._connected def pause(self, device_id): """ Pauses synchronization with specified device """ RESTPOSTRequest(self, "system/pause?device=%s" % (device_id,), {}, lambda *a: a, lambda *a: log.error(a), device_id).start() def resume(self, device_id): """ Resumes synchronization with specified device """ RESTPOSTRequest(self, "system/resume?device=%s" % (device_id,), {}, lambda *a: a, lambda *a: log.error(a), device_id).start() def rescan(self, folder_id, path=None): """ Asks daemon to rescan entire folder or specified path """ if path is None: id_enc = urllib.quote(folder_id.encode('utf-8')) RESTPOSTRequest(self, "db/scan?folder=%s" % (id_enc,), {}, lambda *a: a, lambda *a: log.error(a), folder_id).start() else: url = "db/scan?folder=%s&sub=%s" % ( urllib.quote(folder_id.encode('utf-8')), urllib.quote(path.encode('utf-8')) ) RESTPOSTRequest(self, url, {}, lambda *a: a, lambda *a: log.error(a), folder_id).start() def override(self, folder_id): """ Asks daemon to override remote changes made in specified folder """ id_enc = urllib.quote(folder_id.encode('utf-8')) RESTPOSTRequest(self, "db/override?folder=%s" % (id_enc,), {}, lambda *a: a, lambda *a: log.error(a), folder_id).start() def revert(self, folder_id): """ Asks daemon to revert local changes made in specified folder """ id_enc = urllib.quote(folder_id.encode('utf-8')) RESTPOSTRequest(self, "db/revert?folder=%s" % (id_enc,), {}, lambda *a: a, lambda *a: log.error(a), folder_id).start() def request_events(self): """ No longer needed. """ pass def set_refresh_interval(self, i): """ Sets interval used mainly by event querying timer """ self._refresh_interval = i log.verbose("Set refresh interval to %s", i) class RESTRequest(Gio.SocketClient): """ REST over HTTP(s) request. Handles everything and calls callback with response received. It is assumed that response will always be JSON-encoded and it is automatically decoded. If request fails and error_callback is not set, it is automatically repeated. Callback signatures: callback(json_data, callback_data... ) error_callback(exception, command, callback_data... ) """ def __init__(self, parent, command, callback, error_callback=None, *callback_data): Gio.SocketClient.__init__(self, tls=parent._tls) self._callback = callback self._error_callback = error_callback self._command = command self._parent = parent self._connection = None self._callback_data = callback_data or () if parent._tls: GObject.Object.connect(self, "event", self._socket_event) def _connected(self, _self, results): """ Called after TCP connection is initiated """ try: self._connection = self.connect_to_service_finish(results) if self._connection == None: raise Exception("Unknown error") except Exception as e: log.exception(e) if hasattr(e, "domain") and e.domain == "g-tls-error-quark": e = TLSUnsupportedException(e.message) self._error(e) return if self._epoch != self._parent._epoch: # Too late, throw it away self._connection.close(None) log.verbose("Discarded old connection for %s", self._command) return if self._parent._CSRFtoken is None and self._parent._api_key is None: # Request CSRF token first log.verbose("Requesting cookie") get_str = "\r\n".join([ "GET / HTTP/1.0", "Host: %s" % self._parent._address, (("X-API-Key: %s" % self._parent._api_key) if not self._parent._api_key is None else "X-nothing: x"), "Connection: close", "", "", ]).encode("utf-8") else: self._send_request() def _send_request(self): get_str = self._format_request() try: self._connection.get_output_stream().write_all(get_str, None) except Exception as e: self._error(e) return self._connection.get_input_stream().read_bytes_async(102400, 1, None, self._response) def _parse_csrf(self, response): for d in response: if d.startswith("Set-Cookie:"): for c in d.split(":", 1)[1].split(";"): if c.strip().startswith("CSRF-Token-"): self._CSRFtoken = c.strip(" \r\n") log.verbose("Got new cookie: %s", self._CSRFtoken) break if self._CSRFtoken != None: break def _format_request(self): """ Formats HTTP request (GET /xyz HTTP/1.0... ) before sending it to daemon """ return "\r\n".join([ "GET /rest/%s HTTP/1.0" % self._command, "Host: %s" % self._parent._address, "Cookie: %s" % self._parent._CSRFtoken, (("X-%s" % self._parent._CSRFtoken.replace("=", ": ")) if self._parent._CSRFtoken else "X-nothing: x"), (("X-API-Key: %s" % self._parent._api_key) if not self._parent._api_key is None else "X-nothing2: x"), "Connection: close", "", "" ]).encode("utf-8") def _response(self, stream, results): try: response = stream.read_bytes_finish(results) if response == None: raise Exception("No data received") except Exception as e: self._connection.close(None) self._error(e) return if self._epoch != self._parent._epoch: # Too late, throw it away self._connection.close(None) log.verbose("Discarded old response for %s", self._command) return # Repeat read_bytes_async until entire response is read into buffer self._buffer.append(response.get_data()) if response.get_size() > 0: self._connection.get_input_stream().read_bytes_async(102400, 1, None, self._response) return self._connection.close(None) response, self._buffer = (b"".join(self._buffer)).decode("utf-8"), [] if self._parent._CSRFtoken is None and self._parent._api_key is None: # I wanna cookie! self._parse_csrf(response.split("\n")) if self._parent._CSRFtoken == None: # This is pretty fatal and likely to fail again, # so request is not repeated automatically if self._error_callback == None: log.error("Request '%s' failed: Error: failed to get CSRF cookie from daemon", self._command) else: self._error(Exception("Failed to get CSRF cookie")) return # Repeat request with acquired cookie self.start() return # Split headers from response headers, response = self._split_headers(response) if headers is None: return # Parse response and call callback try: rdata = json.loads(response) except IndexError: # No data rdata = { } except ValueError: # Not a JSON rdata = {'data' : response } if type(rdata) == dict: rdata[HTTP_HEADERS] = headers self._callback(rdata, *self._callback_data) def _split_headers(self, buffer): try: headers, response = buffer.split(b"\r\n\r\n", 1) headers = headers.split(b"\r\n") code = int(headers[0].split(b" ")[1]) if code == 401: self._error(HTTPAuthException(buffer)) return None, None elif code == 404: self._error(HTTPCode(404, "Not found", buffer, headers)) return None, None elif code != 200: self._error(HTTPCode(code, response, buffer, headers)) return None, None except Exception as e: # That probably wasn't HTTP import traceback traceback.print_exc() self._error(InvalidHTTPResponse(buffer)) return None, None return headers, response def _error(self, exception): """ Error handler for _response method """ if self._connection: self._connection.close(None) self._connection = None if self._error_callback: if self._epoch != self._parent._epoch: exception = ConnectionRestarted() self._error_callback(exception, self._command, *self._callback_data) elif self._epoch == self._parent._epoch: try: log.error("Request '%s' failed (%s); Repeating...", self._command, exception) except UnicodeDecodeError: # Windows... log.error("Request '%s' failed; Repeating...", self._command) self._parent.timer(str(self), 1, self.start) def _socket_event(self, _self, event, connectable, con): """ Setups TSL certificate if HTTPS is used """ if event == Gio.SocketClientEvent.TLS_HANDSHAKING: con.connect("accept-certificate", self._accept_certificate) def _accept_certificate(self, con, peer_cert, errors): """ Check if server presents expected certificate and accept connection """ return peer_cert.is_same(self._parent._cert) def ignore_error(self): """ Causes RESTRequest to ignore any error - no callback is called and request is *not* autorepeated. Returns self. """ self._error_callback = lambda *a: True return self def start(self): if self._parent._address.startswith("127.0.0.1"): self.set_enable_proxy(False) self._epoch = self._parent._epoch self._buffer = [] self.connect_to_host_async(self._parent._address, 0, None, self._connected) return self class RESTPOSTRequest(RESTRequest): """ Similar to RESTRequest, but this one uses HTTP POST and sends data """ def __init__(self, parent, command, data, callback, error_callback=None, *callback_data): RESTRequest.__init__(self, parent, command, callback, error_callback, *callback_data) self._data = data def _format_request(self): """ Formats POST request before sending it to daemon """ json_str = json.dumps(self._data) return "\r\n".join([ "POST /rest/%s HTTP/1.0" % self._command, "Host: %s" % self._parent._address, "Cookie: %s" % self._parent._CSRFtoken, (("X-%s" % self._parent._CSRFtoken.replace("=", ": ")) if self._parent._CSRFtoken else "X-nothing: x"), (("X-API-Key: %s" % self._parent._api_key) if not self._parent._api_key is None else "X-nothing2: x"), "Content-Length: %s" % len(json_str), "Content-Type: application/json", "Connection: close", "", json_str ]).encode("utf-8") class EventPollLoop(RESTRequest): """ Event polling 'loop' continuously polls events from daemon using one HTTP(s) connection. If connection is broken, EventPollLoop reconnects automatically. 'Loop' is canceled automatically when parent _epoch is increased. """ def __init__(self, parent): RESTRequest.__init__(self, parent, "events", None, None) self._last_event_id = -1 def _format_request(self): """ Event request is as special as it gets, with HTTP/1.1, connection held and continuously requesting more and more data. """ if self._last_event_id < 0: url = "/rest/events?limit=1" else: url = "/rest/events?since=%s" % (self._last_event_id,) return "\r\n".join([ "GET %s HTTP/1.1" % url, "Host: %s" % self._parent._address, "Cookie: %s" % self._parent._CSRFtoken, (("X-%s" % self._parent._CSRFtoken.replace("=", ": ")) if self._parent._CSRFtoken else "X-nothing: x"), (("X-API-Key: %s" % self._parent._api_key) if not self._parent._api_key is None else "X-nothing2: x"), "Cache-Control: no-cache", "Connection: keep-alive", "Pragma: no-cache", "", "" ]).encode("utf-8") def _error(self, exception): if self._connection: self._connection.close(None) if self._epoch == self._parent._epoch: if isinstance(exception, GLib.GError): if exception.code in (0, 39, 34): # Connection terminated unexpectedly, Connection Refused self._parent._disconnected(message=str(exception)) return self._parent.timer(None, 1, self.start) def start(self): RESTRequest.start(self) self._buffer = b"" def _response(self, stream, results): if self._parent._CSRFtoken is None and self._parent._api_key is None: return RESTRequest._response(self, stream, results) try: response = stream.read_bytes_finish(results) if response == None: raise Exception("No data received") except Exception as e: return self._error(e) if self._epoch != self._parent._epoch: self._connection.close(None) return buffer = response.get_data() assert type(buffer) == str headers, response = self._split_headers(buffer) if headers is None: return headers = { x : y.strip() for (x,y) in [ h.split(":", 1) for h in headers if ":" in h ] } if "Transfer-Encoding" not in headers or headers["Transfer-Encoding"] != "chunked": # Something just went horribly wrong self._error(InvalidHTTPResponse(buffer)) return self._buffer = response self._chunk_size = -1 self._parse_chunk() def _chunk(self, stream, results): try: response = stream.read_bytes_finish(results) if response == None: raise Exception("nothing") except Exception as e: return self._error(e) if self._epoch != self._parent._epoch: self._connection.close(None) return data = response.get_data() if len(data) == 0: # Connection broken self._connection.close(None) return self.start() self._buffer += data self._parse_chunk() def _resend_request(self): """ Sends another request using same connection """ self._chunk_size = -1 get_str = "\r\n".join([ "GET /rest/events?since=%s HTTP/1.1" % (self._last_event_id,), "Host: %s" % self._parent._address, (("X-API-Key: %s" % self._parent._api_key) if not self._parent._api_key is None else "X-nothing: x"), "", "", ]).encode("utf-8") try: self._connection.get_output_stream().write_all(get_str, None) except Exception as e: self._connection.close(None) return self.start() self._connection.get_input_stream().read_bytes_async(10, 1, None, self._chunk) def _parse_chunk(self): if self._chunk_size < 0: try: # Try to decode chunk. May raise exception if only very few bytes # have been read so far size_str, rest = self._buffer.split(b"\r\n", 1) self._chunk_size = int(size_str, 16) self._buffer = rest if self._chunk_size < 1: # Zero-sized chunk means end of transfer return self._resend_request() self._chunk_size += 2 # 2b for following \r\n except (ValueError, IndexError): self._chunk_size = -1 self._connection.get_input_stream().read_bytes_async(100, 1, None, self._chunk) return retrieved = len(self._buffer) if retrieved < self._chunk_size: self._connection.get_input_stream().read_bytes_async(self._chunk_size - retrieved, 1, None, self._chunk) return response, self._buffer = self._buffer[0:retrieved], self._buffer[retrieved:] try: events = json.loads(response) except Exception: # Invalid response self._connection.close(None) return self.start() for event in events: if self._last_event_id >= 0 and event["id"] != self._last_event_id + 1: # Event IDs are not continuous, something just went horribly wrong # There is only one case when this is expected: When connection # to daemon is lost and ST-GTK unknowingly reconnects to # different instance. return self._parent._instance_replaced() self._last_event_id = event["id"] self._parent._on_event(event) sys.stdout.flush() self._resend_request() class InvalidConfigurationException(RuntimeError): pass class TLSUnsupportedException(RuntimeError): pass class TLSErrorException(RuntimeError): pass class HTTPError(RuntimeError): def __init__(self, message, full_response): RuntimeError.__init__(self, message) self.full_response = full_response class InvalidHTTPResponse(HTTPError): def __init__(self, full_response): HTTPError.__init__(self, "Invalid HTTP response", full_response) class HTTPCode(HTTPError): def __init__(self, code, message, full_response, headers = []): HTTPError.__init__(self, "HTTP error %s : %s" % (code, message), full_response) self.code = code self.message = message self.headers = headers def __str__(self): if self.message is None: return "HTTP/%s" % (self.code,) else: return "HTTP/%s: %s" % (self.code, self.message) class HTTPAuthException(HTTPCode): def __init__(self, full_response): HTTPCode.__init__(self, 401, None, full_response) def __str__(self): return "HTTP/401 Unauthorized" class ConnectionRestarted(Exception): def __init__(self): Exception.__init__(self, "Connection was restarted after request") if __name__ == "__main__": # Small thing for testing from .tools import init_logging, set_logging_level init_logging() set_logging_level(True, True) daemon = Daemon() daemon.connect('connected', lambda *a: sys.stdout.write("*** connected ***\n")) daemon.connect('disconnected', lambda *a: sys.stdout.write("*** disconnected ***\n")) daemon.reconnect() GLib.MainLoop().run() syncthing-gtk-0.9.4.4/syncthing_gtk/daemonoutputdialog.py000066400000000000000000000033401352162771300236170ustar00rootroot00000000000000#!/usr/bin/env python2 """ Syncthing-GTK - DaemonOutputDialog Displays output from daemon subprocess """ from __future__ import unicode_literals from syncthing_gtk.uibuilder import UIBuilder import os class DaemonOutputDialog(object): """ Displays output from daemon subprocess """ def __init__(self, app, proc): self.proc = proc self.app = app self.setup_widgets() self.handler = 0 def __getitem__(self, name): """ Convince method that allows widgets to be accessed via self["widget"] """ return self.builder.get_object(name) def show_with_lines(self, lines, parent=None): if not parent is None: self["dialog"].set_transient_for(parent) self["dialog"].show_all() self["tvOutput"].get_buffer().set_text("\n".join(lines)) def show(self, parent=None, title=None): if parent is None: self["dialog"].set_modal(False) else: self["dialog"].set_transient_for(parent) if not title is None: self["dialog"].set_title(title) self["dialog"].show_all() self["tvOutput"].get_buffer().set_text("\n".join(self.proc.get_output())) self.handler = self.proc.connect('line', self.cb_line) def close(self, *a): if self.handler > 0: self.proc.disconnect(self.handler) self["dialog"].hide() self["dialog"].destroy() def setup_widgets(self): # Load glade file self.builder = UIBuilder() self.builder.add_from_file(os.path.join(self.app.gladepath, "daemon-output.glade")) self.builder.connect_signals(self) self["tvOutput"].connect('size-allocate', self.scroll) def cb_line(self, proc, line): b = self["tvOutput"].get_buffer() b.insert(b.get_iter_at_offset(-1), "\n%s" % (line,)) def scroll(self, *a): adj = self["sw"].get_vadjustment() adj.set_value( adj.get_upper() - adj.get_page_size()) syncthing-gtk-0.9.4.4/syncthing_gtk/daemonprocess.py000066400000000000000000000137371352162771300225700ustar00rootroot00000000000000#!/usr/bin/env python2 """ Syncthing-GTK - DaemonProcess Runs syncthing daemon process as subprocess of application """ from __future__ import unicode_literals from gi.repository import Gio, GLib, GObject from syncthing_gtk.tools import IS_WINDOWS from collections import deque import os, logging log = logging.getLogger("DaemonProcess") HAS_SUBPROCESS = hasattr(Gio, "Subprocess") if IS_WINDOWS: # POpen is used on Windows from subprocess import Popen, PIPE, STARTUPINFO, STARTF_USESHOWWINDOW from syncthing_gtk.windows import WinPopenReader, nice_to_priority_class elif not HAS_SUBPROCESS: # Gio.Subprocess is not available in Gio < 3.12 from subprocess import Popen, PIPE class DaemonProcess(GObject.GObject): __gsignals__ = { # line(text) - emitted when process outputs full line b"line" : (GObject.SIGNAL_RUN_FIRST, None, (object,)), # exit(code) - emitted when process exits b"exit" : (GObject.SIGNAL_RUN_FIRST, None, (int,)), # failed(exception) - emitted if process fails to start b"failed" : (GObject.SIGNAL_RUN_FIRST, None, (object,)), } SCROLLBACK_SIZE = 500 # Maximum number of output lines stored in memory PRIORITY_LOWEST = 19 PRIORITY_LOW = 10 PRIORITY_NORMAL = 0 PRIORITY_HIGH = -10 PRIORITY_HIGHEST = -20 def __init__(self, cmdline, priority=PRIORITY_NORMAL, max_cpus=0, env={}): """ cmdline should be list of arguments """ GObject.GObject.__init__(self) self.cmdline = cmdline self.priority = priority self.env = { x:env[x] for x in env } self.env["STNORESTART"] = "1" # see syncthing --help self.env["STNOUPGRADE"] = "1" if max_cpus > 0: self.env["GOMAXPROCS"] = str(max_cpus) self._proc = None def start(self): for x in self.env: os.environ[x] = self.env[x] try: self._cancel = Gio.Cancellable() if IS_WINDOWS: # Windows sinfo = STARTUPINFO() sinfo.dwFlags = STARTF_USESHOWWINDOW sinfo.wShowWindow = 0 cflags = nice_to_priority_class(self.priority) self._proc = Popen(self.cmdline, stdin=PIPE, stdout=PIPE, stderr=PIPE, startupinfo=sinfo, creationflags=cflags) self._stdout = WinPopenReader(self._proc.stdout) self._check = GLib.timeout_add_seconds(1, self._cb_check_alive) elif HAS_SUBPROCESS: # New Gio flags = Gio.SubprocessFlags.STDOUT_PIPE | Gio.SubprocessFlags.STDERR_MERGE if self.priority == 0: self._proc = Gio.Subprocess.new(self.cmdline, flags) else: # I just really do hope that there is no distro w/out nice command self._proc = Gio.Subprocess.new([ "nice", "-n", "%s" % self.priority ] + self.cmdline, flags) self._proc.wait_check_async(None, self._cb_finished) self._stdout = self._proc.get_stdout_pipe() else: # Gio < 3.12 - Gio.Subprocess is missing :( if self.priority == 0: self._proc = Popen(self.cmdline, stdout=PIPE) else: # still hoping self._proc = Popen([ "nice", "-n", "%s" % self.priority ], stdout=PIPE) self._stdout = Gio.UnixInputStream.new(self._proc.stdout.fileno(), False) self._check = GLib.timeout_add_seconds(1, self._cb_check_alive) except Exception as e: # Startup failed self.emit("failed", e) return self._lines = deque([], DaemonProcess.SCROLLBACK_SIZE) self._buffer = "" self._stdout.read_bytes_async(256, 0, self._cancel, self._cb_read, ()) def _cb_read(self, pipe, results, *a): """ Handler for read_bytes_async """ try: response = pipe.read_bytes_finish(results) except Exception as e: if not self._cancel.is_cancelled(): log.exception(e) GLib.idle_add(pipe.read_bytes_async, 256, 1, None, self._cb_read) return response = response.get_data().decode('utf-8') self._buffer = "%s%s" % (self._buffer, response) while "\n" in self._buffer: line, self._buffer = self._buffer.split("\n", 1) self._lines.append(line) self.emit('line', line) if not self._cancel.is_cancelled(): GLib.idle_add(pipe.read_bytes_async, 256, 1, None, self._cb_read, ()) def _cb_check_alive(self, *a): """ Repeatedly check if process is still alive. Called only on windows """ if self._proc == None: # Never started or killed really fast self.emit('exit', 1) self._cancel.cancel() if IS_WINDOWS: self._stdout.close() return False self._proc.poll() if self._proc.returncode is None: # Repeat until finished or canceled return (not self._cancel.is_cancelled()) # Child just died :) self.emit('exit', self._proc.returncode) self._cancel.cancel() if IS_WINDOWS: self._stdout.close() return False def _cb_finished(self, proc, results): """ Callback for wait_check_async. With Gio < 3.12, timer and _cb_check_alive is used. """ try: proc.wait_check_finish(results) log.info("Subprocess finished with code %s", proc.get_exit_status()) except GLib.GError: # Exited with exit code log.info("Subprocess exited with code %s", proc.get_exit_status()) if proc.get_exit_status() == 127: # Command not found self.emit("failed", Exception("Command not found")) else: self.emit('exit', proc.get_exit_status()) if IS_WINDOWS: self._stdout.close() self._cancel.cancel() def terminate(self): """ Terminates process (sends SIGTERM) """ if not self._proc is None: if IS_WINDOWS: # Windows self._proc.terminate() elif HAS_SUBPROCESS: # Gio.Subprocess self._proc.send_signal(15) else: # subprocess.Popen self._proc.terminate() self._proc = None if IS_WINDOWS: self._stdout.close() self._cancel.cancel() def kill(self): """ Kills process (sends SIGTERM) """ if not self._proc is None: if IS_WINDOWS: # Windows - can't actually kill self._proc.terminate() elif HAS_SUBPROCESS: # Gio.Subprocess self._proc.force_exit() else: # subprocess.Popen self._proc.kill() self._proc = None if IS_WINDOWS: self._stdout.close() self._cancel.cancel() def get_output(self): """ Returns process output as iterable list of lines """ return self._lines def get_commandline(self): """ Returns commandline used to start process """ return self.cmdline syncthing-gtk-0.9.4.4/syncthing_gtk/daemonsettings.py000066400000000000000000000062561352162771300227500ustar00rootroot00000000000000#!/usr/bin/env python2 """ Syncthing-GTK - DaemonSettingsDialog Universal dialog handler for all Syncthing settings and editing """ from __future__ import unicode_literals from syncthing_gtk.editordialog import EditorDialog, strip_v from syncthing_gtk.tools import _ # gettext function VALUES = [ "vlistenAddresses", "vlocalAnnounceEnabled", "vupnpEnabled", "vstartBrowser", "vmaxSendKbpsEnabled", "vmaxSendKbps", "vmaxRecvKbpsEnabled", "vmaxRecvKbps", "vurAccepted", "vlocalAnnouncePort", "vglobalAnnounceEnabled", "vglobalAnnounceServers" ] class DaemonSettingsDialog(EditorDialog): def __init__(self, app): EditorDialog.__init__(self, app, "daemon-settings.glade", _("Syncthing Daemon Settings")) #@Overrides def get_value(self, key): if key == "listenAddresses": return ", ".join([ strip_v(x) for x in self.values[key]]) elif key == "globalAnnounceServers": return ", ".join([ strip_v(x) for x in self.values["globalAnnounceServers"]]) elif key == "urAccepted": return (self.values["urAccepted"] == 1) elif key == "maxSendKbpsEnabled": return (self.values["maxSendKbps"] != 0) elif key == "maxRecvKbpsEnabled": return (self.values["maxRecvKbps"] != 0) else: return EditorDialog.get_value(self, key) #@Overrides def set_value(self, key, value): if key == "listenAddresses": self.values[key] = [ x.strip(" \t") for x in value.split(",") ] elif key == "globalAnnounceServers": self.values[key] = [ x.strip(" \t") for x in value.split(",") ] elif key == "urAccepted": self.values[key] = 1 if value else -1 elif key == "maxSendKbpsEnabled": if value: if self.values["maxSendKbps"] <= 0: self.values["maxSendKbps"] = 1 self.find_widget_by_id("vmaxSendKbps").get_adjustment().set_value(self.values["maxSendKbps"]) else: self.values["maxSendKbps"] = 0 self.find_widget_by_id("vmaxSendKbps").get_adjustment().set_value(self.values["maxSendKbps"]) elif key == "maxRecvKbpsEnabled": if value: if self.values["maxRecvKbps"] <= 0: self.values["maxRecvKbps"] = 1 self.find_widget_by_id("vmaxRecvKbps").get_adjustment().set_value(self.values["maxRecvKbps"]) else: self.values["maxRecvKbps"] = 0 self.find_widget_by_id("vmaxRecvKbps").get_adjustment().set_value(self.values["maxRecvKbps"]) else: return EditorDialog.set_value(self, key, value) #@Overrides def on_data_loaded(self): self.values = self.config["options"] self.checks = {} return self.display_values(VALUES) #@Overrides def update_special_widgets(self, *a): self["vmaxSendKbps"].set_sensitive(self.get_value("maxSendKbpsEnabled")) self["vmaxRecvKbps"].set_sensitive(self.get_value("maxRecvKbpsEnabled")) self["lblvlocalAnnouncePort"].set_sensitive(self.get_value("localAnnounceEnabled")) self["vlocalAnnouncePort"].set_sensitive(self.get_value("localAnnounceEnabled")) self["lblvglobalAnnounceServers"].set_sensitive(self.get_value("globalAnnounceEnabled")) self["lblvglobalAnnounceServers"].set_sensitive(self.get_value("globalAnnounceEnabled")) #@Overrides def on_save_requested(self): self.store_values(VALUES) # Post configuration back to daemon self.post_config() #@Overrides def on_saved(self): self.close() syncthing-gtk-0.9.4.4/syncthing_gtk/deviceeditor.py000066400000000000000000000112541352162771300223640ustar00rootroot00000000000000#!/usr/bin/env python2 """ Syncthing-GTK - DeviceEditorDialog Universal dialog handler for all Syncthing settings and editing """ from __future__ import unicode_literals from gi.repository import Gtk from syncthing_gtk.tools import check_device_id from syncthing_gtk.tools import _ # gettext function from syncthing_gtk.editordialog import EditorDialog, strip_v import logging log = logging.getLogger("DeviceEditor") COLOR_NEW = "#A0A0A0" VALUES = [ "vdeviceID", "vname", "vaddresses", "vcompression", "vfolders", "vintroducer" ] class DeviceEditorDialog(EditorDialog): MESSAGES = { # Displayed when device id is invalid "vdeviceID" : _("The entered device ID does not look valid. It " "should be a 52 character string consisting of letters and " "numbers, with spaces and dashes being optional."), } def __init__(self, app, is_new, id=None): EditorDialog.__init__(self, app, "device-edit.glade", "New Device" if is_new else "Edit Device" ) self.id = id self.is_new = is_new #@Overrides def get_value(self, key): if key == "addresses": return ",".join([ strip_v(x) for x in self.values[key]]) elif key == "deviceID": return EditorDialog.get_value(self, key).strip(" \r\n\t") elif key == "compression": val = EditorDialog.get_value(self, key) # For syncthing <= 0.10.25 if val in (True, "true"): return "always" elif val in (False, "false"): return "never" else: return val else: return EditorDialog.get_value(self, key) #@Overrides def set_value(self, key, value): if key == "addresses": self.values[key] = [ strip_v(x) for x in value.split(",") ] else: return EditorDialog.set_value(self, key, value) #@Overrides def on_data_loaded(self): try: if self.is_new: self.values = { strip_v(x) : "" for x in VALUES } self.set_value("addresses", "dynamic") self.set_value("compression", "metadata") self.checks = { "vdeviceID" : check_device_id, } if self.id != None: # Pre-fill device id, if provided self.set_value("deviceID", self.id) else: self.values = [ x for x in self.config["devices"] if x["deviceID"] == self.id ][0] except KeyError as e: # ID not found in configuration. This is practically impossible, # so it's handled only by self-closing dialog. log.exception(e) self.close() return return self.display_values(VALUES) #@Overrides def display_value(self, key, w): if key == "vfolders": # Even more special case rids = [ ] # Get list of folders that share this device for r in self.config["folders"]: for n in r["devices"]: if n["deviceID"] == self.id and r["id"] not in rids: rids.append(r["id"]) # Create CheckButtons for folder in reversed(sorted(self.app.folders.values(), key=lambda x : x["id"])): b = Gtk.CheckButton(folder["path"], False) b.set_tooltip_text(folder["id"]) self["vfolders"].pack_start(b, False, False, 0) b.set_active(folder["id"] in rids) self["vfolders"].show_all() else: EditorDialog.display_value(self, key, w) #@Overrides def update_special_widgets(self, *a): self["vdeviceID"].set_sensitive(self.is_new) #@Overrides def on_save_requested(self): self.store_values(VALUES) if self.is_new: # Add new dict to configuration (edited dict is already there) self.config["devices"].append(self.values) # Post configuration back to daemon self.post_config() #@Overrides def store_value(self, key, w): if key == "vaddresses": addresses = [ x.strip() if "://" in x or x.strip() == "dynamic" else "tcp://%s" % (x.strip(),) for x in w.get_text().split(",") ] self.set_value("addresses", ",".join(addresses)) elif key == "vfolders": # Generate dict of { folder_id : bool } where bool is True if # folder should be shared with this device folders = {} for b in self["vfolders"].get_children(): folders[b.get_tooltip_text()] = b.get_active() # Go over all Folders//Devices/ keys in config # and set them as needed nid = self.get_value("deviceID") for r in self.config["folders"]: rid = r["id"] found = False for n in r["devices"]: if n["deviceID"] == nid: if not rid in folders or not folders[rid]: # Remove this / key (unshare folder with device) r["devices"].remove(n) break found = True if (not found) and (rid in folders) and folders[rid]: # Add new / key (share folder with device) r["devices"].append({ "addresses" : None, "deviceID" : nid, "name" : "", "certName" : "", "compression" : "metadata" }) else: EditorDialog.store_value(self, key, w) #@Overrides def on_saved(self): self.close() syncthing-gtk-0.9.4.4/syncthing_gtk/editordialog.py000066400000000000000000000364461352162771300223760ustar00rootroot00000000000000#!/usr/bin/env python2 """ Syncthing-GTK - EditorDialog Base class and universal handler for all Syncthing settings and editing """ from __future__ import unicode_literals from gi.repository import Gtk, Gdk, GObject, GLib from syncthing_gtk.tools import ints from syncthing_gtk.tools import _ # gettext function from syncthing_gtk.daemon import ConnectionRestarted from syncthing_gtk.uibuilder import UIBuilder import os, logging log = logging.getLogger("EditorDialog") class EditorDialog(GObject.GObject): """ Universal dialog handler for all Syncthing settings and editing Signals: close() emitted after dialog is closed loaded() Emitted after dialog loads and parses configuration data """ __gsignals__ = { b"close" : (GObject.SIGNAL_RUN_FIRST, None, ()), b"loaded" : (GObject.SIGNAL_RUN_FIRST, None, ()), } # Should be overridden by subclass MESSAGES = {} SETTING_NEEDS_RESTART = [] RESTART_NEEDED_WIDGET = "lblRestartNeeded" def __init__(self, app, gladefile, title): GObject.GObject.__init__(self) self.app = app self.config = None self._loading = False self.values = None self.checks = {} # Stores original label value while error message is displayed. self.original_labels={} # Used by get_widget_id self.widget_to_id = {} self.setup_widgets(gladefile, title) # Move entire dialog content to ScrolledWindow if screen height # is too small if Gdk.Screen.get_default().height() < 900: if not self["editor-content"] is None: parent = self["editor-content"].get_parent() if isinstance(parent, Gtk.Notebook): order, labels = [], {} for c in [] + parent.get_children(): labels[c] = parent.get_tab_label(c) order.append(c) parent.remove(c) for c in order: sw = Gtk.ScrolledWindow() sw.add_with_viewport(c) parent.append_page(sw, labels[c]) else: sw = Gtk.ScrolledWindow() parent.remove(self["editor-content"]) sw.add_with_viewport(self["editor-content"]) parent.pack_start(sw, True, True, 0) self["editor"].resize(self["editor"].get_size()[0], Gdk.Screen.get_default().height() * 2 / 3) def load(self): """ Loads configuration data and pre-fills values to fields """ self._loading = True self.load_data() def __getitem__(self, name): """ Convience method that allows widgets to be accessed via self["widget"] """ return self.builder.get_object(name) def __contains__(self, name): """ Returns true if there is such widget """ return self.builder.get_object(name) != None def get_widget_id(self, w): """ Returns glade file ID for specified widget or None, if widget is not known. """ if not w in self.widget_to_id: return None return self.widget_to_id[w] def find_widget_by_id(self, id, parent=None): """ Recursively searches for widget with specified ID """ if parent == None: if id in self: return self[id] # Do things fast if possible parent = self["editor"] for c in parent.get_children(): if hasattr(c, "get_id"): if c.get_id() == id: return c if isinstance(c, Gtk.Container): r = self.find_widget_by_id(id, c) if not r is None: return r return None def show(self, parent=None): if not parent is None: self["editor"].set_transient_for(parent) self["editor"].set_modal(True) self["editor"].show_all() def present(self, values=[]): self["editor"].present() for v in values: if not self[v] is None and self[v].get_sensitive(): self[v].grab_focus() return def close(self): self.emit("close") self["editor"].hide() self["editor"].destroy() def setup_widgets(self, gladefile, title): # Load glade file self.builder = UIBuilder() self.builder.add_from_file(os.path.join(self.app.gladepath, gladefile)) self.builder.connect_signals(self) self["editor"].set_title(title) # Disable everything until configuration is loaded self["editor"].set_sensitive(False) def get_burried_value(self, key, vals, default, convert=lambda a:a): """ Returns value stored deeper in element tree. Method is called recursively for every tree level. If value is not found, default is returned. """ if type(key) != list: # Parse key, split by '/' return self.get_burried_value(key.split("/"), vals, default, convert) try: if len(key) > 1: tkey, key = key[0], key[1:] return self.get_burried_value(key, vals[tkey], default, convert) return convert(vals[key[0]]) except Exception: return default def get_value(self, key): """ Returns value from configuration. Usually returns self.values[key], but overriding methods can handle some special cases """ if key in self.values: return self.values[key] else: log.warning("get_value: Value %s not found", key) raise ValueNotFoundError(key) def set_value(self, key, value): """ Stores value to configuration, handling some special cases in overriding methods """ if key in self.values: self.values[key] = value else: raise ValueNotFoundError(key) def create_dicts(self, parent, keys): """ Creates structure of nested dicts, if they are not in place already. """ if not type(keys) == list: keys = list(keys) if len(keys) == 0 : return # Done key, rest = keys[0], keys[1:] if not key in parent : parent[key] = {} if parent[key] in ("", None ): parent[key] = {} self.create_dicts(parent[key], rest) def load_data(self): self.app.daemon.read_config(self.cb_data_loaded, self.cb_data_failed) def display_error_message(self, value_id): """ Changes text on associated label to error message """ wid = "lbl%s" % (value_id,) # widget id if value_id in self.original_labels: # Already done return if not value_id in self.MESSAGES: # Nothing to show return self.original_labels[value_id] = self[wid].get_label() self[wid].set_markup('%s' % (self.MESSAGES[value_id],)) def hide_error_message(self, value_id): """ Changes text on associated label back to normal text """ wid = "lbl%s" % (value_id,) # widget id if value_id in self.original_labels: self[wid].set_label(self.original_labels[value_id]) del self.original_labels[value_id] def cb_data_loaded(self, config): """ Used as handler in load_data """ self.config = config if self.on_data_loaded(): self.update_special_widgets() # Enable dialog self["editor"].set_sensitive(True) self._loading = False # Brag self.emit("loaded") def on_data_loaded(self, config): """ Called from cb_data_loaded, should be overridden by subclass. Should return True to indicate that everything is OK, false on error. """ raise RuntimeError("Override this!") def display_values(self, values): """ Iterates over all known configuration values and sets UI elements using unholy method. Returns True. """ for key in values: widget = self.find_widget_by_id(key) self.widget_to_id[widget] = key if not key is None: try: self.display_value(key, widget) except ValueNotFoundError: # Value not found, probably old daemon version log.warning("display_values: Value %s not found", key) widget.set_sensitive(False) GLib.idle_add(self.present, values) return True def display_value(self, key, w): """ Sets value on UI element for single key. May be overridden by subclass to handle special values. """ if isinstance(w, Gtk.SpinButton): w.get_adjustment().set_value(ints(self.get_value(strip_v(key)))) elif isinstance(w, Gtk.Entry): w.set_text(unicode(self.get_value(strip_v(key)))) elif isinstance(w, Gtk.ComboBox): val = self.get_value(strip_v(key)) m = w.get_model() for i in xrange(0, len(m)): if str(val) == str(m[i][0]).strip(): w.set_active(i) break else: w.set_active(0) elif isinstance(w, Gtk.CheckButton): w.set_active(self.get_value(strip_v(key))) else: log.warning("display_value: %s class cannot handle widget %s, key %s", self.__class__.__name__, w, key) if not w is None: w.set_sensitive(False) def ui_value_changed(self, w, *a): """ Handler for widget that controls state of other widgets """ key = self.get_widget_id(w) if not self._loading: if key in self.SETTING_NEEDS_RESTART: self[self.RESTART_NEEDED_WIDGET].set_visible(True) if key != None: if isinstance(w, Gtk.CheckButton): self.set_value(strip_v(key), w.get_active()) self.update_special_widgets() if isinstance(w, Gtk.ComboBox): self.set_value(strip_v(key), str(w.get_model()[w.get_active()][0]).strip()) self.update_special_widgets() def update_special_widgets(self, *a): """ Enables/disables special widgets. Does nothing by default, but may be overridden by subclasses """ if self.mode == "folder-edit": self["vID"].set_sensitive(self.id is None) v = self.get_value("Versioning") if v == "": if self["rvVersioning"].get_reveal_child(): self["rvVersioning"].set_reveal_child(False) else: self["bxVersioningSimple"].set_visible(self.get_value("Versioning") == "simple") self["bxVersioningStaggered"].set_visible(self.get_value("Versioning") == "staggered") if not self["rvVersioning"].get_reveal_child(): self["rvVersioning"].set_reveal_child(True) elif self.mode == "device-edit": self["vDeviceID"].set_sensitive(self.is_new) self["vAddresses"].set_sensitive(self.id != self.app.daemon.get_my_id()) elif self.mode == "daemon-settings": self["vMaxSendKbps"].set_sensitive(self.get_value("MaxSendKbpsEnabled")) self["lblvLocalAnnPort"].set_sensitive(self.get_value("LocalAnnEnabled")) self["vLocalAnnPort"].set_sensitive(self.get_value("LocalAnnEnabled")) self["lblvGlobalAnnServer"].set_sensitive(self.get_value("GlobalAnnEnabled")) self["vGlobalAnnServer"].set_sensitive(self.get_value("GlobalAnnEnabled")) def cb_data_failed(self, exception, *a): """ Failed to load configuration. This shouldn't happen unless daemon dies exactly when user clicks to edit menu. Handled by simple error message. """ # All other errors are fatal for now. Error dialog is displayed and program exits. d = Gtk.MessageDialog( self["editor"], Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, Gtk.MessageType.ERROR, Gtk.ButtonsType.CLOSE, "%s %s\n\n%s %s" % ( _("Failed to load configuration from daemon."), _("Try again."), _("Error message:"), str(exception) ) ) d.run() self.close() def cb_btClose_clicked(self, *a): self.close() def cb_check_value(self, *a): self["btSave"].set_sensitive(True) for x in self.checks: value = self[x].get_text().strip() if len(value) == 0: # Empty value in field if self.checks[x](value): # ... but empty value is OK self.hide_error_message(x) else: self["btSave"].set_sensitive(False) self.hide_error_message(x) elif not self.checks[x](value): # Invalid value in any field self["btSave"].set_sensitive(False) self.display_error_message(x) else: self.hide_error_message(x) def cb_btSave_clicked(self, *a): """ Calls on_save_requested to do actual work """ self.on_save_requested() def on_save_requested(self, config): """ Should be overridden by subclass. Should return True to indicate that everything is OK, false on error. """ raise RuntimeError("Override this!") def store_values(self, values): """ 'values' parameter should be same as display_values received. Iterates over values configuration values and puts stuff from UI back to self.values dict Returns True. """ for key in values: widget = self.find_widget_by_id(key) if not key is None: try: self.store_value(key, widget) except ValueNotFoundError: pass return True def store_value(self, key, w): """ Loads single value from UI element to self.values dict. May be overriden by subclass to handle special values. """ if isinstance(w, Gtk.SpinButton): self.set_value(strip_v(key), int(w.get_adjustment().get_value())) elif isinstance(w, Gtk.Entry): self.set_value(strip_v(key), w.get_text().decode("utf-8")) elif isinstance(w, Gtk.CheckButton): self.set_value(strip_v(key), w.get_active()) elif isinstance(w, Gtk.ComboBox): self.set_value(strip_v(key), str(w.get_model()[w.get_active()][0]).strip()) # else nothing, unknown widget class cannot be read def cb_format_value_s(self, spinner): """ Formats spinner value """ spinner.get_buffer().set_text(_("%ss") % (int(spinner.get_adjustment().get_value()),), -1) return True def cb_format_value_s_or_disabed(self, spinner): """ Formats spinner value """ val = int(spinner.get_adjustment().get_value()) if val < 1: spinner.get_buffer().set_text(_("disabled"), -1) else: spinner.get_buffer().set_text(_("%ss") % (val,), -1) return True def cb_format_value_percent(self, spinner): """ Formats spinner value """ val = int(spinner.get_adjustment().get_value()) spinner.get_buffer().set_text(_("%s%%") % (val,), -1) return True def cb_format_value_kibps_or_no_limit(self, spinner): """ Formats spinner value """ val = int(spinner.get_adjustment().get_value()) if val < 1: spinner.get_buffer().set_text(_("no limit"), -1) else: spinner.get_buffer().set_text(_("%s KiB/s") % (val,), -1) return True def cb_format_value_days(self, spinner): """ Formats spinner value """ v = int(spinner.get_adjustment().get_value()) if v == 0: spinner.get_buffer().set_text(_("never delete"), -1) elif v == 1: spinner.get_buffer().set_text(_("%s day") % (v,), -1) else: spinner.get_buffer().set_text(_("%s days") % (v,), -1) return True def post_config(self): """ Posts edited configuration back to daemon """ self["editor"].set_sensitive(False) self.app.daemon.write_config(self.config, self.syncthing_cb_post_config, self.syncthing_cb_post_error) def syncthing_cb_post_config(self, *a): # No return value for this call, let's hope for the best log.info("Configuration (probably) saved") # Close editor self["editor"].set_sensitive(True) self.on_saved() def on_saved(self): """ Should be overridden by subclass. Called after post_config saves configuration. """ raise RuntimeError("Override this!") def syncthing_cb_post_error(self, exception, *a): # TODO: Unified error message if isinstance(exception, ConnectionRestarted): # Should be ok, this restart is triggered # by App handler for 'config-saved' event. return self.syncthing_cb_post_config() message = "%s\n%s" % ( _("Failed to save configuration."), str(exception) ) if hasattr(exception, "full_response"): try: fr = unicode(exception.full_response)[0:1024] except UnicodeError: # ... localized error strings on windows are usually # in anything but unicode :( fr = str(repr(exception.full_response))[0:1024] message += "\n\n" + fr d = Gtk.MessageDialog( self["editor"], Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, Gtk.MessageType.INFO, Gtk.ButtonsType.CLOSE, message ) d.run() d.hide() d.destroy() self["editor"].set_sensitive(True) def call_after_loaded(self, callback, *data): """ Calls callback when 'loaded' event is emitted """ self.connect("loaded", # lambda below throws 'event_source' argument and # calls callback with rest of arguments lambda obj, callback, *a : callback(*a), callback, *data ) """ Strips 'v' prefix used in widget IDs """ strip_v = lambda x: x[1:] if x.startswith("v") else x class ValueNotFoundError(KeyError): pass syncthing-gtk-0.9.4.4/syncthing_gtk/fakerevealer.py000066400000000000000000000016441352162771300223540ustar00rootroot00000000000000from __future__ import unicode_literals from gi.repository import Gtk import logging log = logging.getLogger("FakeRevealer") class FakeRevealer(Gtk.HBox): """ Gtk.Revealer compatible widget that will not cause window border disappearing bug on Windows. """ def __init__(self): Gtk.HBox.__init__(self) self._reveal = True def add(self, child): Gtk.HBox.add(self, child) child.set_visible(self._reveal) def get_reveal_child(self): return self._reveal def set_reveal_child(self, b): self._reveal = b if len(self.get_children()) > 0: self.get_children()[0].set_visible(b) def get_child_revealed(self): return self._reveal def get_transition_duration(self): return 1 def set_transition_duration(self, d): """ You wish... """ pass def get_transition_type(self): return Gtk.Revealer.TransitionType.NONE def set_transition_type(self, t): """ Nobody gives orders to ME! """ pass syncthing-gtk-0.9.4.4/syncthing_gtk/finddaemondialog.py000066400000000000000000000132601352162771300232010ustar00rootroot00000000000000#!/usr/bin/env python2 """ Syncthing-GTK - 1st run wizard Basically runs syncthing daemon with -generate option and setups some values afterwards. """ from __future__ import unicode_literals from syncthing_gtk.editordialog import EditorDialog from syncthing_gtk.stdownloader import StDownloader from syncthing_gtk.tools import IS_WINDOWS, IS_XP from syncthing_gtk.tools import _ # gettext function from syncthing_gtk.uisettingsdialog import UISettingsDialog, browse_for_binary import os, platform VALUES = [ "vsyncthing_binary" ] class FindDaemonDialog(EditorDialog): RESPONSE_SAVED = 1 RESPONSE_QUIT = 2 def __init__(self, app): EditorDialog.__init__(self, app, "find-daemon.glade", _("Can't invoke the daemon")) self.app = app exe = "syncthing.exe" if IS_WINDOWS else _("Syncthing binary") self["lblMessage"].set_markup("%s\n%s" % ( _("Syncthing daemon binary cannot be found."), _("If you have Syncthing installed, please, set path to " "%s below or click on Download " "button to download latest Syncthing package.") % (exe,) )) if IS_XP or StDownloader is None: # Downloading is not offered on XP (github will not talk to it) # or if StDownloader module is not packaged self["lblMessage"].set_markup("%s\n%s" % ( _("Syncthing daemon binary cannot be found."), _("If you have Syncthing installed, please, set path to " "%s below") % (exe,) )) self.hide_download_button() ### Dialog emulation def set_transient_for(self, parent): self["editor"].set_transient_for(parent) def set_message(self, m): self["lblMessage"].set_markup(m) def hide_download_button(self): self["btDownload"].set_visible(False) def run(self): return self["editor"].run() def destroy(self): self.close() ### UI callbacks def cb_btBrowse_clicked(self, *a): """ Display file browser dialog to browse for syncthing binary """ browse_for_binary(self["editor"], self, "vsyncthing_binary") def cb_btDownload_clicked(self, *a): """ Disable half of dialog and start downloading syncthing package """ # Determine which syncthing to use suffix, tag = StDownloader.determine_platform() # Report error on unsupported platforms if suffix is None or tag is None: # Disable download button self["btDownload"].set_sensitive(False) # Set message pd = "%s %s" % ( platform.uname()[0], # OS platform.uname()[4]) # architecture self["lblDownloadProgress"].set_markup("%s %s" % ( _("Cannot download Syncthing daemon."), _("This platform (%s) is not supported") % (pd,), )) return # Determine target file & directory self.target = os.path.join( os.path.expanduser(StDownloader.get_target_folder()), "syncthing%s" % (suffix,) ) # Create downloader and connect events sd = StDownloader(self.target, tag) sd.connect("error", self.cb_download_error) sd.connect("version", self.cb_version) sd.connect("download-progress", self.cb_progress) sd.connect("download-finished", self.cb_extract_start) sd.connect("extraction-progress", self.cb_progress) sd.connect("extraction-finished", self.cb_extract_finished) # Display message and start downloading self["lblDownloadProgress"].set_markup(_("Downloading...")) self["btDownload"].set_visible(False) self["pbDownload"].set_visible(True) self["vsyncthing_binary"].set_sensitive(False) self["btBrowse"].set_sensitive(False) self["btSave"].set_sensitive(False) sd.get_version() def cb_btQuit_clicked(self, *a): """ Handler for 'Quit' button """ self["editor"].response(FindDaemonDialog.RESPONSE_QUIT) def cb_bt_ui_settings_clicked(self, *a): """ Handler for 'UI Settings' button """ e = UISettingsDialog(self.app) e.connect('close', self.cb_ui_settings_closed) e.load() e.show(self["window"]) def cb_ui_settings_closed(self, *a): self.load() ### EditorDialog overrides #@Overrides def load_data(self): # Don't load data from syncthing daemon, it knows nothing... copy = { k : self.app.config[k] for k in self.app.config } self.cb_data_loaded(copy) self.cb_check_value() #@Overrides def on_data_loaded(self): self.values = self.config self.checks = {} return self.display_values(VALUES) #@Overrides def update_special_widgets(self, *a): pass #@Overrides def on_save_requested(self): self.store_values(VALUES) # Save data to configuration file for k in self.values: self.app.config[k] = self.values[k] # Report work done self.syncthing_cb_post_config() #@Overrides def on_saved(self): self["editor"].response(FindDaemonDialog.RESPONSE_SAVED) ### Downloader callbacks def cb_download_error(self, downloader, error, message): """ Called when download fails. User can click 'Download' to try it again. """ self["lblDownloadProgress"].set_markup(_("Download failed.")) self["btDownload"].set_visible(True) self["pbDownload"].set_visible(False) self["vsyncthing_binary"].set_sensitive(True) self["btBrowse"].set_sensitive(True) self["btSave"].set_sensitive(True) def cb_version(self, downloader, version): self["lblDownloadProgress"].set_markup("Downloading %s..." % (version, )) downloader.download() def cb_extract_start(self, *a): self["lblDownloadProgress"].set_markup("Extracting...") def cb_progress(self, downloader, progress): self["pbDownload"].set_fraction(progress) def cb_extract_finished(self, downloader, *a): """ Called after extraction is finished """ self["vsyncthing_binary"].set_sensitive(True) self["btBrowse"].set_sensitive(True) self["vsyncthing_binary"].set_text(downloader.get_target()) self["lblDownloadProgress"].set_markup("" + _("Download finished.") + "") self["pbDownload"].set_visible(False) self["btSave"].set_sensitive(True) syncthing-gtk-0.9.4.4/syncthing_gtk/foldereditor.py000066400000000000000000000242321352162771300224000ustar00rootroot00000000000000#!/usr/bin/env python2 """ Syncthing-GTK - FolderEditorDialog Universal dialog handler for all Syncthing settings and editing """ from __future__ import unicode_literals from gi.repository import Gtk from syncthing_gtk.tools import _ # gettext function from syncthing_gtk.tools import generate_folder_id from syncthing_gtk.editordialog import EditorDialog, strip_v import os, re, logging log = logging.getLogger("FolderEditor") COLOR_NEW = "#A0A0A0" # Regexp to generate folder id from filename RE_GEN_ID = re.compile("([a-zA-Z0-9\-\._]{1,64}).*") VALUES = [ "vlabel", "vid", "vpath", "vreadOnly", "vreceiveOnly", "vignorePerms", "vdevices", "vversioning", "vkeepVersions", "vrescanIntervalS", "vmaxAge", "vversionsPath", "vfsWatcherEnabled", "vcleanoutDays", "vcommand", "vorder", "vminDiskFreePct" ] VERSIONING_TYPES = {'simple', 'staggered', 'trashcan', 'external'} class FolderEditorDialog(EditorDialog): def __init__(self, app, is_new, id=None, path=None): EditorDialog.__init__(self, app, "folder-edit.glade", "New Shared Folder" if is_new else "Edit Shared Folder" ) self.id = id self.path = path self.is_new = is_new def on_btBrowse_clicked(self, *a): """ Display folder browser dialog to browse for folder... folder. Oh god, this new terminology sucks... """ if not self.is_new: return # Prepare dialog d = Gtk.FileChooserDialog( _("Select Folder for new Folder"), # fuck me... self["editor"], Gtk.FileChooserAction.SELECT_FOLDER, (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, Gtk.STOCK_OK, Gtk.ResponseType.OK)) # Set default path to home directory d.set_current_folder(os.path.expanduser("~")) # Get response if d.run() == Gtk.ResponseType.OK: self["vpath"].set_text(d.get_filename()) if len(self["vid"].get_text().strip()) == 0: # ID is empty, fill it with last path element try: lpl = os.path.split(d.get_filename())[-1] id = RE_GEN_ID.search(lpl).group(0).lower() self["vid"].set_text(id) except AttributeError: # Can't regexp anything pass d.destroy() def on_vid_icon_press(self, *a): if self["vid"].get_sensitive(): self["vid"].set_text(generate_folder_id()) #@Overrides def get_value(self, key): if key == "keepVersions": return self.get_burried_value("versioning/params/keep", self.values, 0, int) elif key == "maxAge": return self.get_burried_value("versioning/params/maxAge", self.values, 0, int) / 86400 # seconds to days elif key == "cleanoutDays": return self.get_burried_value("versioning/params/cleanoutDays", self.values, 0, int) elif key == "command": return self.get_burried_value("versioning/params/command", self.values, "") elif key == "versionsPath": return self.get_burried_value("versioning/params/versionsPath", self.values, "") elif key == "readOnly": return self.get_burried_value("type", self.values, "") in ("readonly", "sendonly") elif key == "receiveOnly": return self.get_burried_value("type", self.values, "") in ("receiveonly") elif key == "versioning": return self.get_burried_value("versioning/type", self.values, "") else: return EditorDialog.get_value(self, key) #@Overrides def set_value(self, key, value): if key == "versioning": # Create structure if needed self.create_dicts(self.values, ("versioning", "type")) self.values["versioning"]["type"] = value elif key == "keepVersions": # Create structure if needed self.create_dicts(self.values, ("versioning", "params", "keep")) self.values["versioning"]["params"]["keep"] = str(int(value)) elif key == "cleanoutDays": # Create structure if needed self.create_dicts(self.values, ("versioning", "params", "cleanoutDays")) self.values["versioning"]["params"]["cleanoutDays"] = str(int(value)) elif key == "maxAge": # Create structure if needed self.create_dicts(self.values, ("versioning", "params", "maxAge")) self.values["versioning"]["params"]["maxAge"] = str(int(value) * 86400) # days to seconds elif key == "command": # Create structure if needed self.create_dicts(self.values, ("versioning", "params", "command")) self.values["versioning"]["params"]["command"] = value elif key == "versionsPath": # Create structure if needed self.create_dicts(self.values, ("versioning", "params", "versionsPath")) self.values["versioning"]["params"]["versionsPath"] = value elif key in ("readOnly", "receiveonly"): if self["vreadOnly"].get_active(): self.values["type"] = "sendonly" elif self["vreceiveOnly"].get_active(): self.values["type"] = "receiveonly" else: self.values["type"] = "sendreceive" else: EditorDialog.set_value(self, key, value) #@Overrides def on_data_loaded(self): try: if self.is_new: self.values = { strip_v(x) : "" for x in VALUES } self.checks = { "vid" : self.check_folder_id, "vpath" : self.check_path, "vcommand" : self.check_command, } if self.id != None: try: v = [ x for x in self.config["folders"] if x["id"] == self.id ][0] self.values = v self.is_new = False except IndexError: pass if not self.path is None: self.set_value("path", self.path) self["vpath"].set_sensitive(False) self.set_value("versioning", "simple") self.set_value("rescanIntervalS", 30) self.set_value("keepVersions", 10) else: try: self.values = [ x for x in self.config["folders"] if x["id"] == self.id ][0] except IndexError: # Unknown ID. May happen in rather crazy case when user deletes folder # and tries to add new before daemon is able to process everything. self.is_new = True return self.on_data_loaded() self.checks = { "vcommand" : self.check_command, } self["vpath"].set_sensitive(False) self["btBrowse"].set_sensitive(False) except KeyError as e: # ID not found in configuration. This is practicaly impossible, # so it's handled only by self-closing dialog. log.exception(e) self.close() return False return self.display_values(VALUES) #@Overrides def display_value(self, key, w): if key == "vdevices": # Very special case nids = [ n["deviceID"] for n in self.get_value("devices") ] for device in self.app.devices.values(): if device["id"] != self.app.daemon.get_my_id(): b = Gtk.CheckButton(device.get_title(), False) b.set_tooltip_text(device["id"]) self["vdevices"].pack_start(b, False, False, 0) b.set_active(device["id"] in nids) self["vdevices"].show_all() else: EditorDialog.display_value(self, key, w) #@Overrides def update_special_widgets(self, *a): self["vid"].set_sensitive(self.id is None) v = self.get_value("versioning") if v == "": if self["rvversioning"].get_reveal_child(): self["rvversioning"].set_reveal_child(False) else: for x in VERSIONING_TYPES: self["bxVersioning_" + x].set_visible(self.get_value("versioning") == x) if not self["rvversioning"].get_reveal_child(): self["rvversioning"].set_reveal_child(True) #@Overrides def on_save_requested(self): self.store_values(VALUES) if self.is_new: # Add new dict to configuration (edited dict is already there) self.config["folders"].append(self.values) # Post configuration back to daemon self.post_config() #@Overrides def store_value(self, key, w): if key == "vdevices": # Still very special case devices = [ { "deviceID" : b.get_tooltip_text(), } for b in self["vdevices"].get_children() if b.get_active() ] self.set_value("devices", devices) else: EditorDialog.store_value(self, key, w) #@Overrides def on_saved(self): self.close() # If new folder/device was added, show dummy item UI, so user will # see that something happen even before daemon gets restarted if self.is_new: folder_type = "sendreceive" if self.get_value("readOnly"): folder_type = "readonly" elif self.get_value("receiveOnly"): folder_type = "receiveonly" box = self.app.show_folder( self.get_value("id"), self.get_value("label"), self.get_value("path"), folder_type, self.get_value("ignorePerms"), self.get_value("rescanIntervalS"), self.get_value("fsWatcherEnabled"), sorted( [ self.app.devices[n["deviceID"]] for n in self.get_value("devices") ], key=lambda x : x.get_title().lower() ) ) box.set_color_hex(COLOR_NEW) else: self.app.daemon.reload_config() #@Overrides def ui_value_changed(self, w, *a): EditorDialog.ui_value_changed(self, w, *a) self.cb_check_value(w, *a) def check_folder_id(self, value): if len(value.strip()) == 0: # Empty value return False if value in self.app.folders: # Duplicate folder id return False return True def check_path(self, value): # Any non-empty path is OK return len(value.strip()) > 0 def check_command(self, value): # Any non-empty command is OK return self.get_value("versioning") != "external" or len(value.strip()) > 0 def fill_folder_id(self, rid, readonly=True): """ Pre-fills folder Id for new-folder dialog """ self["vid"].set_text(rid) self.id = rid self.update_special_widgets() self["vid"].set_sensitive(not readonly) def on_folder_type_toggled(self, cb, *a): """ Ensures that only one folder type checkbox is checked """ if cb.get_active(): for x in ("vreadOnly", "vreceiveOnly"): if self[x] != cb and self[x].get_active(): self[x].set_active(False) def on_vfsWatcherEnabled_toggled(self, cb, *a): # Called when checkbox value changes to automatically change rescan interval if self._loading: return vrescanIntervalS = self.builder.get_object("vrescanIntervalS") interval = vrescanIntervalS.get_value() if cb.get_active(): # fswatch enabled, increase rescan interval if interval < 720: vrescanIntervalS.set_value(interval * 60) else: # fswatch disabled, return rescan interval back if interval > 300: vrescanIntervalS.set_value(interval / 60) def mark_device(self, nid): """ Marks (checks) checkbox for specified device """ if "vdevices" in self: # ... only if there are checkboxes here for child in self["vdevices"].get_children(): if child.get_tooltip_text() == nid: l = child.get_children()[0] # Label in checkbox l.set_markup("%s" % (l.get_label())) child.set_active(True) syncthing-gtk-0.9.4.4/syncthing_gtk/iddialog.py000066400000000000000000000070271352162771300214750ustar00rootroot00000000000000#!/usr/bin/env python2 """ Syncthing-GTK - IDDialog Dialog with Device ID and generated QR code """ from __future__ import unicode_literals from gi.repository import Gio, GLib from .tools import IS_WINDOWS from syncthing_gtk.uibuilder import UIBuilder import urllib2, httplib, ssl import os, tempfile, logging log = logging.getLogger("IDDialog") class IDDialog(object): """ Dialog with Device ID and generated QR code """ def __init__(self, app, device_id): self.app = app self.device_id = device_id self.setup_widgets() self.ssl_ctx = create_ssl_context() self.load_data() def __getitem__(self, name): """ Convince method that allows widgets to be accessed via self["widget"] """ return self.builder.get_object(name) def show(self, parent=None): if not parent is None: self["dialog"].set_transient_for(parent) self["dialog"].show_all() def close(self): self["dialog"].hide() self["dialog"].destroy() def setup_widgets(self): # Load glade file self.builder = UIBuilder() self.builder.add_from_file(os.path.join(self.app.gladepath, "device-id.glade")) self.builder.connect_signals(self) self["vID"].set_text(self.device_id) def load_data(self): """ Loads QR code from Syncthing daemon """ if IS_WINDOWS: return self.load_data_urllib() uri = "%s/qr/?text=%s" % (self.app.daemon.get_webui_url(), self.device_id) io = Gio.file_new_for_uri(uri) io.load_contents_async(None, self.cb_syncthing_qr, ()) def load_data_urllib(self): """ Loads QR code from Syncthing daemon """ uri = "%s/qr/?text=%s" % (self.app.daemon.get_webui_url(), self.device_id) api_key = self.app.daemon.get_api_key() opener = urllib2.build_opener(DummyHTTPSHandler(self.ssl_ctx)) if not api_key is None: opener.addheaders = [("X-API-Key", api_key)] a = opener.open(uri) data = a.read() tf = tempfile.NamedTemporaryFile("wb", suffix=".png", delete=False) tf.write(data) tf.close() self["vQR"].set_from_file(tf.name) os.unlink(tf.name) def cb_btClose_clicked(self, *a): self.close() def cb_syncthing_qr(self, io, results, *a): """ Called when QR code is loaded or operation fails. Image is then displayed in dialog, failure is silently ignored. """ try: ok, contents, etag = io.load_contents_finish(results) if ok: # QR is loaded, save it to temp file and let GTK to handle # rest tf = tempfile.NamedTemporaryFile("wb", suffix=".png", delete=False) tf.write(contents) tf.close() self["vQR"].set_from_file(tf.name) os.unlink(tf.name) except GLib.Error as e: if e.code in [14, 15]: # Unauthorized. Grab CSRF token from daemon and try again log.warning("Failed to load image using glib. Retrying with urllib2.") self.load_data_urllib() except Exception as e: log.exception(e) return finally: del io def create_ssl_context(): """ May return NULL if ssl is not available """ if hasattr(ssl, "create_default_context"): ctx = ssl.create_default_context() ctx.check_hostname = False ctx.verify_mode = ssl.CERT_NONE else: log.warning("SSL is not available, cannot verify server certificate.") class DummyHTTPSHandler(urllib2.HTTPSHandler): """ Dummy HTTPS handler that ignores certificate errors. This in unsafe, but used ONLY for QR code images. """ def __init__(self, ctx): urllib2.HTTPSHandler.__init__(self) self.ctx = ctx def https_open(self, req): return self.do_open(self.getConnection, req) def getConnection(self, host, timeout=300): if not self.ctx is None: return httplib.HTTPSConnection(host, context=self.ctx) return True syncthing-gtk-0.9.4.4/syncthing_gtk/identicon.py000066400000000000000000000042101352162771300216640ustar00rootroot00000000000000#!/usr/bin/env python2 """ Syncthing-GTK - Ident Icon Custom widget derived from Gtk.DrawingArea. Draws Ident Icon on transparent background. Most of drawing code is ported from https://github.com/syncthing/syncthing/blob/master/gui/scripts/syncthing/core/directives/identiconDirective.js""" from __future__ import unicode_literals from gi.repository import Gtk from syncthing_gtk.infobox import InfoBox import re class IdentIcon(Gtk.DrawingArea): def __init__(self, device_id): Gtk.DrawingArea.__init__(self) self.value = re.sub(r'[\W_]', "", device_id, 1) self.color = (1, 1, 0.95, 1) # icon color, rgba self.size = 5 def set_color_hex(self, hx): """ Expects AABBCC or #AABBCC format """ self.set_color(*InfoBox.hex2color(hx)) def set_color(self, r, g, b, a): """ Expects floats """ self.color = (r, g, b, a) self.queue_draw() def do_get_preferred_width(self): # Icon scales to whatever you give, but preferred # size is always 22x22 return (22, 22) def do_get_preferred_height(self): # Rectangle... return self.do_get_preferred_width() def do_get_request_mode(self): return Gtk.SizeRequestMode.CONSTANT_SIZE def do_draw(self, cr): def fill_rect_at(row, col): cr.rectangle( offset_x + (col * rect_size), offset_y + (row * rect_size), rect_size, rect_size ) cr.fill() def should_fill_rect_at(row, col): return not (ord(self.value[row + col * self.size]) % 2) def should_mirror_rect_at(row, col): return not (self.size % 2 and col == middle_col) def mirror_col_for(col): return self.size - col - 1 # Prepare stuff allocation = self.get_allocation() rect_size = min(allocation.width, allocation.height) / self.size offset_x = (allocation.width / 2) - (rect_size * self.size / 2) offset_y = (allocation.height / 2) - (rect_size * self.size / 2) middle_col = self.size / 2 # Set color cr.set_source_rgba(*self.color) # Do drawing for row in xrange(0, self.size): for col in xrange(0, middle_col + 1): if should_fill_rect_at(row, col): fill_rect_at(row, col) if should_mirror_rect_at(row, col): fill_rect_at(row, mirror_col_for(col)) syncthing-gtk-0.9.4.4/syncthing_gtk/ignoreeditor.py000066400000000000000000000051371352162771300224130ustar00rootroot00000000000000#!/usr/bin/env python2 """ Syncthing-GTK - Ignore Pattern Editor """ from __future__ import unicode_literals from syncthing_gtk.tools import _ # gettext function from syncthing_gtk.uibuilder import UIBuilder import os, logging log = logging.getLogger("IgnoreEditor") class IgnoreEditor(object): """ Standard looking about dialog """ def __init__(self, app, rid, file_location): # Store stuff self.app = app self.rid = rid self.file_location = file_location # Load UI self.setup_widgets() def __getitem__(self, name): """ Convince method that allows widgets to be accessed via self["widget"] """ return self.builder.get_object(name) def show(self, parent=None): if not parent is None: self["dialog"].set_transient_for(parent) self["dialog"].show_all() def close(self, *a): self["dialog"].set_visible(False) self["dialog"].destroy() def setup_widgets(self): # Load glade file self.builder = UIBuilder() self.builder.add_from_file(os.path.join(self.app.gladepath, "ignore-editor.glade")) self.builder.connect_signals(self) self["lblLocation"].set_markup( '%s %s' % ( _("File location:"), os.path.join(os.path.expanduser(self.file_location), ".stignore"), os.path.join(self.file_location, ".stignore") ) ) def on_dialog_response(self, *a): self.close() def cb_btClose_clicked(self, *a): self.close() def on_lblLocation_activate_link(self, *a): # Called when user clicks on file location link. Clicking there # should open .stignore file in default text editor, allowing # user to edit it there. Saving file from this dialog afterwards # would overwrite his changes, so dialog closes itself to # prevent that from happening self.close() def btSave_clicked_cb(self, *a): start_iter = self["tbPatterns"].get_start_iter() end_iter = self["tbPatterns"].get_end_iter() text = self["tbPatterns"].get_text(start_iter, end_iter, True) self["tvPatterns"].set_sensitive(False) self["btSave"].set_sensitive(False) # TODO: Expect error and create appropriate callback for it self.app.daemon.write_stignore(self.rid, text, self.close, self.close) def load(self): self.app.daemon.read_stignore(self.rid, self.cb_data_loaded, self.cb_data_failed) def cb_data_failed(self, *a): # This should be next to impossible, so simply closing dialog # should be enough of "solution" log.error("Failed to load .stignore data: %s", a) self.close() def cb_data_loaded(self, text): self["tbPatterns"].set_text(text) self["tvPatterns"].grab_focus() self["tvPatterns"].set_sensitive(True) self["btSave"].set_sensitive(True) syncthing-gtk-0.9.4.4/syncthing_gtk/infobox.py000066400000000000000000000432241352162771300213640ustar00rootroot00000000000000#!/usr/bin/env python2 """ Syncthing-GTK - InfoBox Colorful, expandable widget displaying folder/device data """ from __future__ import unicode_literals from gi.repository import Gtk, Gdk, GLib, GObject, Pango, Rsvg from syncthing_gtk.ribar import RevealerClass from syncthing_gtk.tools import _ # gettext function import os, logging, math log = logging.getLogger("InfoBox") COLOR_CHANGE_TIMER = 10 # ms COLOR_CHANGE_STEP = 0.05 HILIGHT_INTENSITY = 0.3 # 0.0 to 1.0 DARKEN_FACTOR = 0.75 # 0.0 to 1.0 svg_cache = {} class InfoBox(Gtk.Container): """ Expandable widget displaying folder/device data """ __gtype_name__ = "InfoBox" __gsignals__ = { # right-click(button, time) b"right-click" : (GObject.SIGNAL_RUN_FIRST, None, (int, int)), # doubleclick, no arguments b"doubleclick" : (GObject.SIGNAL_RUN_FIRST, None, () ) } ### Initialization def __init__(self, app, title, icon): # Variables self.app = app self.child = None self.header = None self.str_title = None self.str_status = None self.header_inverted = False self.values = {} self.icons = {} self.value_widgets = {} self.hilight = False self.hilight_factor = 0.0 self.timer_enabled = False self.icon = icon self.color = (1, 0, 1, 1) # rgba self.background = (1, 1, 1, 1) # rgba self.dark_color = None # Overrides background if set self.text_color = (0, 0, 0, 1) # rgba (text color) self.real_color = self.color # set color + hilight self.border_width = 2 self.children = [self.header, self.child] # Initialization Gtk.Container.__init__(self) self.init_header() self.init_grid() # Settings self.set_title(title) self.set_status(_("Disconnected")) def init_header(self): # Create widgets eb = Gtk.EventBox() self.title = Gtk.Label() self.status = Gtk.Label() hbox = Gtk.HBox() # Set values self.title.set_alignment(0.0, 0.5) self.status.set_alignment(1.0, 0.5) self.title.set_ellipsize(Pango.EllipsizeMode.START) hbox.set_spacing(4) # Connect signals eb.connect("realize", self.set_header_cursor) eb.connect("button-release-event", self.on_header_click) eb.connect('enter-notify-event', self.on_enter_notify) eb.connect('leave-notify-event', self.on_leave_notify) # Pack together hbox.pack_start(self.icon, False, False, 0) hbox.pack_start(self.title, True, True, 0) hbox.pack_start(self.status, False, False, 0) hbox.override_background_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(*self.color)) eb.add(hbox) # Update stuff self.header_box = hbox self.header = eb self.header.set_parent(self) self.children = [self.header, self.child] def init_grid(self): # Create widgets self.grid = Gtk.Grid() self.rev = RevealerClass() align = Gtk.Alignment() self.eb = Gtk.EventBox() # Set values self.grid.set_row_spacing(1) self.grid.set_column_spacing(3) self.rev.set_reveal_child(False) align.set_padding(2, 2, 5, 5) self.eb.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(*self.background)) self.grid.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(*self.background)) # Connect signals self.eb.connect("button-release-event", self.on_grid_release) self.eb.connect("button-press-event", self.on_grid_click) self.eb.connect('enter-notify-event', self.on_enter_notify) self.eb.connect('leave-notify-event', self.on_leave_notify) # Pack together align.add(self.grid) self.eb.add(align) self.rev.add(self.eb) self.add(self.rev) ### GtkWidget-related stuff def do_add(self, widget): if not widget is None: if self.child is None: self.child = widget self.children = [self.header, self.child] widget.set_parent(self) def do_remove(self, widget): if self.child == widget: self.child = None self.children = [self.header, self.child] widget.unparent() def do_child_type(self): return(Gtk.Widget.get_type()) def do_forall(self, include_internals, callback, *callback_parameters): if not callback is None: if hasattr(self, 'children'): # No idea why this happens... for c in self.children: if not c is None: callback(c, *callback_parameters) def do_get_request_mode(self): return(Gtk.SizeRequestMode.CONSTANT_SIZE) def do_get_preferred_height(self): mw, nw, mh, nh = self.get_preferred_size() return(mh, nh) def do_get_preferred_width(self): mw, nw, mh, nh = self.get_preferred_size() return(mw, nw) def get_preferred_size(self): """ Returns (min_width, nat_width, min_height, nat_height) """ min_width, nat_width = 0, 0 min_height, nat_height = 0, 0 # Use max of preferred widths from children; # Use sum of preferred height from children. for c in self.children: if not c is None: if c != self.rev or self.rev.get_reveal_child() or self.rev.get_child_revealed(): mw, nw = c.get_preferred_width() mh, nh = c.get_preferred_height() min_width = max(min_width, mw) nat_width = max(nat_width, nw) min_height = min_height + mh nat_height = nat_height + nh # Add border size min_width += self.border_width * 2 # Left + right border nat_width += self.border_width * 2 min_height += self.border_width * 3 # Top + below header + bottom nat_height += self.border_width * 3 return(min_width, nat_width, min_height, nat_height) def do_size_allocate(self, allocation): child_allocation = Gdk.Rectangle() child_allocation.x = self.border_width child_allocation.y = self.border_width self.set_allocation(allocation) if self.get_has_window(): if self.get_realized(): self.get_window().move_resize(allocation.x, allocation.y, allocation.width, allocation.height) # Allocate children as VBox does, always use all available width for c in self.children: if not c is None: if c.get_visible(): min_size, nat_size = c.get_preferred_size() child_allocation.width = allocation.width - (self.border_width * 2) child_allocation.height = min_size.height # TODO: Handle child that has window (where would i get it?) c.size_allocate(child_allocation) child_allocation.y += child_allocation.height + self.border_width def do_realize(self): allocation = self.get_allocation() attr = Gdk.WindowAttr() attr.window_type = Gdk.WindowType.CHILD attr.x = allocation.x attr.y = allocation.y attr.width = allocation.width attr.height = allocation.height attr.visual = self.get_visual() attr.event_mask = self.get_events() | Gdk.EventMask.EXPOSURE_MASK WAT = Gdk.WindowAttributesType mask = WAT.X | WAT.Y | WAT.VISUAL window = Gdk.Window(self.get_parent_window(), attr, mask) window.set_decorations(0) self.set_window(window) self.register_window(window) self.set_realized(True) def do_draw(self, cr): allocation = self.get_allocation() header_al = self.children[0].get_allocation() # Border cr.set_source_rgba(*self.real_color) cr.move_to(0, self.border_width / 2.0) cr.line_to(0, allocation.height) cr.line_to(allocation.width, allocation.height) cr.line_to(allocation.width, self.border_width / 2.0) cr.set_line_width(self.border_width * 2) # Half of border is rendered outside of widget cr.stroke() # Background if not self.background is None: # Use set background color cr.set_source_rgba(*self.background) cr.rectangle( self.border_width, self.border_width, allocation.width - (2 * self.border_width), allocation.height - (2 * self.border_width) ) cr.fill() # Header cr.set_source_rgba(*self.real_color) cr.rectangle(self.border_width / 2.0, 0, allocation.width - self.border_width, header_al.height + (2 * self.border_width)) cr.fill() for c in self.children: if not c is None: self.propagate_draw(c, cr) ### InfoBox logic def set_header_cursor(self, eb, *a): """ Sets cursor over top part of infobox to hand """ eb.get_window().set_cursor(Gdk.Cursor(Gdk.CursorType.HAND1)) def on_header_click(self, eventbox, event): """ Hides or reveals everything below header Displays popup menu on right click """ if event.button == 1: # left self.rev.set_reveal_child(not self.rev.get_reveal_child()) self.app.cb_open_closed(self) elif event.button == 3: # right self.emit('right-click', event.button, 0) def on_grid_release(self, eventbox, event): """ Displays popup menu on right click """ if event.button == 3: # right self.emit('right-click', event.button, 0) def on_grid_click(self, eventbox, event): """ Emits 'doubleclick' signal """ if event.button == 1: # Left if event.type == Gdk.EventType.DOUBLE_BUTTON_PRESS: self.emit('doubleclick') def hilight_timer(self, *a): """ Called repeatedly while color is changing """ if self.hilight and self.hilight_factor < 1.0: self.hilight_factor = min(1.0, self.hilight_factor + COLOR_CHANGE_STEP) elif not self.hilight and self.hilight_factor > 0.0: self.hilight_factor = max(0.0, self.hilight_factor - COLOR_CHANGE_STEP) else: self.timer_enabled = False self.recolor() return self.timer_enabled def recolor(self, *a): """ Called to computes actual color every time when self.color or self.hilight_factor changes. """ if self.dark_color is None: self.real_color = tuple([ min(1.0, x + HILIGHT_INTENSITY * math.sin(self.hilight_factor)) for x in self.color]) else: # Darken colors when dark background is enabled self.real_color = tuple([ min(1.0, DARKEN_FACTOR * (x + HILIGHT_INTENSITY * math.sin(self.hilight_factor))) for x in self.color]) gdkcol = Gdk.RGBA(*self.real_color) self.header.override_background_color(Gtk.StateType.NORMAL, gdkcol) try: self.header.get_children()[0].override_background_color(Gtk.StateFlags.NORMAL, gdkcol) except IndexError: # Happens when recolor is called before header widget is created pass self.queue_draw() ### Translated events def on_enter_notify(self, eb, event, *data): self.emit("enter-notify-event", None, *data) def on_leave_notify(self, eb, event, *data): self.emit("leave-notify-event", None, *data) ### Methods def set_title(self, t): self.str_title = t inverted = self.header_inverted and self.dark_color is None col = "black" if inverted else "white" self.title.set_markup('%s' % ( col, self.app.config["infobox_style"], t )) def get_title(self): return self.str_title def get_icon(self): """ Returns icon widget """ return self.icon def set_icon(self, icon): """ Sets new icon. Expects widget as parameter """ self.header_box.remove(self.icon) self.header_box.pack_start(icon, False, False, 0) self.header_box.reorder_child(icon, 0) self.header_box.show_all() self.icon = icon def set_hilight(self, h): if self.hilight != h: self.hilight = h if not self.timer_enabled: GLib.timeout_add(COLOR_CHANGE_TIMER, self.hilight_timer) self.timer_enabled = True def invert_header(self, e): self.header_inverted = e self.set_title(self.str_title) def set_status(self, t, percentage=0.0): if percentage > 0.0 and percentage < 1.0: percent = percentage * 100.0 self.status.set_markup('%s (%.f%%)' % ( self.app.config["infobox_style"], t, percent)) log.debug("%s state changed to %s (%s%%)", self.str_title, t, percent) else: self.status.set_markup('%s' % ( self.app.config["infobox_style"], t)) if self.str_status != t: log.debug("%s state changed to %s", self.str_title, t) self.str_status = t def get_status(self): return self.str_status @classmethod def hex2color(self, hx): """ Converts color from AABBCC or #AABBCC format to tuple of floats """ hx = hx.lstrip('#') l = len(hx) color = [ float(int(hx[i:i+l//3], 16)) / 255.0 for i in range(0, l, l//3) ] while len(color) < 4: color.append(1.0) return color def set_color_hex(self, hx): """ Expects AABBCC or #AABBCC format """ self.set_color(*InfoBox.hex2color(hx)) def set_color(self, r, g, b, a): """ Expects floats """ self.color = (r, g, b, a) self.recolor() def compare_color_hex(self, hx): """ Returns True if specified color is same as color currently used. Expects AABBCC or #AABBCC format """ return self.compare_color(*InfoBox.hex2color(hx)) def compare_color(self, r, g, b, a): """ Returns True if specified color is same as color currently used. Expects floats. """ return (self.color == (r, g, b, a)) def set_dark_color(self, r, g, b, a): """ Overrides background color, inverts icon colors and darkens some borders """ # Override background self.background = self.dark_color = (r, g, b, a) self.set_bg_color(*self.background) # Recolor existing widgets self.text_color = (1, 1, 1, 1) col = Gdk.RGBA(*self.text_color) for key in self.value_widgets: for w in self.value_widgets[key]: if isinstance(w, Gtk.Image): if (Gtk.get_major_version(), Gtk.get_minor_version()) <= (3, 10): # Mint.... v1 = GObject.Value(int, 0) v2 = GObject.Value(int, 0) self.grid.child_get_property(w, "left-attach", v1) self.grid.child_get_property(w, "top-attach", v2) la, ta = v1.get_int(), v2.get_int() else: la = self.grid.child_get_property(w, "left-attach") ta = self.grid.child_get_property(w, "top-attach") vis = not w.get_no_show_all() wIcon = self._prepare_icon(self.icons[key]) w.get_parent().remove(w) self.grid.attach(wIcon, la, ta, 1, 1) if not vis: wIcon.set_no_show_all(True) wIcon.set_visible(False) wValue, trash, wTitle = self.value_widgets[key] self.value_widgets[key] = (wValue, wIcon, wTitle) else: w.override_color(Gtk.StateFlags.NORMAL, col) # Recolor borders self.recolor() # Recolor header self.set_title(self.str_title) def set_bg_color(self, r, g, b, a): """ Expects floats """ if self.dark_color == None: self.background = (r, g, b, a) col = Gdk.RGBA(r, g, b, a) for key in self.value_widgets: for w in self.value_widgets[key ]: w.override_background_color(Gtk.StateFlags.NORMAL, col) self.eb.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(*self.background)) self.grid.override_background_color(Gtk.StateType.NORMAL, col) def set_border(self, width): self.border_width = width self.queue_resize() def set_open(self, b): self.rev.set_reveal_child(b) def is_open(self): """ Returns True if box is open """ return self.rev.get_reveal_child() def _prepare_icon(self, icon): if icon.endswith(".svg"): # Icon is svg file key = icon if self.dark_color is None else icon + "-dark" if not key in svg_cache: if not self.dark_color is None: # Recolor svg for dark theme with open(os.path.join(self.app.iconpath, icon), "r") as f: svg_source = f.read() svg_source = svg_source.replace('fill:rgb(0%,0%,0%)', 'fill:rgb(100%,100%,100%)') svg = Rsvg.Handle.new_from_data(svg_source.encode("utf-8")) else: # Load svg directly svg = Rsvg.Handle.new_from_file(os.path.join(self.app.iconpath, icon)) pixbuf = svg.get_pixbuf() svg_cache[key] = pixbuf return Gtk.Image.new_from_pixbuf(svg_cache[key]) elif "." in icon: # Icon is other image file (png) return Gtk.Image.new_from_file(os.path.join(self.app.iconpath, icon)) else: # Icon is theme icon name return Gtk.Image.new_from_icon_name(icon, 1) def add_value(self, key, icon, title, value="", visible=True): """ Adds new line with provided properties """ wIcon = self._prepare_icon(icon) wTitle, wValue = Gtk.Label(), Gtk.Label() self.value_widgets[key] = (wValue, wIcon, wTitle) self.set_value(key, value) self.icons[key] = icon wTitle.set_text(title) wTitle.set_alignment(0.0, 0.5) wValue.set_alignment(1.0, 0.5) wValue.set_ellipsize(Pango.EllipsizeMode.START) wTitle.set_property("expand", True) line = len(self.value_widgets) self.grid.attach(wIcon, 0, line, 1, 1) self.grid.attach_next_to(wTitle, wIcon, Gtk.PositionType.RIGHT, 1, 1) self.grid.attach_next_to(wValue, wTitle, Gtk.PositionType.RIGHT, 1, 1) for w in self.value_widgets[key]: w.override_background_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(*self.background)) w.override_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(*self.text_color)) if not visible: w.set_no_show_all(True) def clear_values(self): """ Removes all lines from UI, effectively making all values hidden """ for ch in [ ] + self.grid.get_children(): self.grid.remove(ch) self.value_widgets = {} def add_hidden_value(self, key, value): """ Adds value that is saved, but not shown on UI """ self.set_value(key, value) def set_value(self, key, value): """ Updates already existing value """ self.values[key] = value if key in self.value_widgets: if value is None: self.value_widgets[key][0].set_text("?") else: self.value_widgets[key][0].set_text(value) def hide_value(self, key): """ Hides value added by add_value """ if key in self.value_widgets: for w in self.value_widgets[key]: w.set_no_show_all(True) w.set_visible(False) def show_value(self, key): """ Shows value added by add_value """ if key in self.value_widgets: for w in self.value_widgets[key]: w.set_no_show_all(False) w.set_visible(True) def set_visible(self, key, show): """ Sets value visibility """ if show: self.show_value(key) else: self.hide_value(key) def hide_values(self, *keys): """ Same as hide_value, but for multiple keys at once """ for k in keys: self.hide_value(k) def show_values(self, *keys): """ Same as show_value, but for multiple keys at once """ for k in keys: self.show_value(k) def get_value(self, key): return self.values[key] def __getitem__(self, key): """ Shortcut to get_value """ return self.values[key] def __setitem__(self, key, value): """ Shortcut to set_value. Creates new hidden_value if key doesn't exist """ self.set_value(key, value) syncthing-gtk-0.9.4.4/syncthing_gtk/nautilusplugin.py000066400000000000000000000261451352162771300230060ustar00rootroot00000000000000#!/usr/bin/env python2 """ Nautilus plugin for Syncthing. This program is part of Syncthing-GTK, but can be used independently with small modification """ from __future__ import unicode_literals from gi.repository import GObject from syncthing_gtk.tools import init_logging, set_logging_level from syncthing_gtk.daemon import Daemon import os, logging, urllib log = logging.getLogger("SyncthingPlugin") # Output options VERBOSE = True DEBUG = False # Magic numbers STATE_IDLE = 1 STATE_SYNCING = 2 STATE_OFFLINE = 3 STATE_STOPPED = 4 class NautiluslikeExtension(GObject.GObject): _plugin_module = None def __init__(self): # Prepare stuff init_logging() set_logging_level(VERBOSE, DEBUG) log.info("Initializing...") # ready field is set to True while connection to Syncthing # daemon is maintained. self.ready = False try: self.daemon = Daemon() except Exception as e: # Syncthing is not configured, most likely never launched. log.error("%s", e) log.error("Failed to read Syncthing configuration.") return # List of known repos + their states self.repos = {} self.rid_to_path = {} self.path_to_rid = {} # Dict of known repos -> set of associated devices self.rid_to_dev = {} # Set of online devices self.online_nids = set() # Set of online repos (at least one associated device connected) self.onlide_rids = set() # List (cache) for folders that are known to be placed below # some syncthing repo self.subfolders = set() # List (cache) for files that plugin were asked about self.files = {} self.downloads = set() # Connect to Daemon object signals self.daemon.connect("connected", self.cb_connected) self.daemon.connect("connection-error", self.cb_syncthing_con_error) self.daemon.connect("disconnected", self.cb_syncthing_disconnected) self.daemon.connect("device-connected", self.cb_device_connected) self.daemon.connect("device-disconnected", self.cb_device_disconnected) self.daemon.connect("folder-added", self.cb_syncthing_folder_added) self.daemon.connect("folder-sync-started", self.cb_syncthing_folder_state_changed, STATE_SYNCING) self.daemon.connect("folder-sync-finished", self.cb_syncthing_folder_state_changed, STATE_IDLE) self.daemon.connect("folder-stopped", self.cb_syncthing_folder_stopped) self.daemon.connect("item-started", self.cb_syncthing_item_started) self.daemon.connect("item-updated", self.cb_syncthing_item_updated) log.info("Initialized.") # Let Daemon object connect to Syncthing self.daemon.set_refresh_interval(20) self.daemon.reconnect() ### Internal stuff def _clear_emblems(self): """ Clear emblems on all files that had emblem added """ for path in self.files: self._invalidate(path) def _clear_emblems_in_dir(self, path): """ Same as _clear_emblems, but only for one directory and its subdirectories. """ for f in self.files: if f.startswith(path + os.path.sep) or f == path : self._invalidate(f) def _invalidate(self, path): """ Forces Nautilus to re-read emblems on specified file """ if path in self.files: file = self.files[path] file.invalidate_extension_info() def _get_parent_repo_state(self, path): """ If file belongs to any known repository, returns state of if. Returns None otherwise. """ # TODO: Probably convert to absolute paths and check for '/' at # end. It shouldn't be needed, in theory. for x in self.repos: if path.startswith(x + os.path.sep): return self.repos[x] return None def _get_path(self, file): """ Returns path for provided FileInfo object """ if hasattr(file, "get_location"): if not file.get_location().get_path() is None: return file.get_location().get_path().decode('utf-8') return urllib.unquote(file.get_uri().replace("file://", "")) ### Daemon callbacks def cb_connected(self, *a): """ Called when connection to Syncthing daemon is created. Clears list of known folders and all caches. Also asks Nautilus to clear all emblems. """ self.repos = {} self.rid_to_dev = {} self.online_nids = set() self.onlide_rids = set() self.subfolders = set() self.downloads = set() self._clear_emblems() self.ready = True log.info("Connected to Syncthing daemon") def cb_device_connected(self, daemon, nid): self.online_nids.add(nid) # Mark any repo attached to this device online for rid in self.rid_to_dev: if not rid in self.onlide_rids: if nid in self.rid_to_dev[rid]: log.debug("Repo '%s' now online", rid) self.onlide_rids.add(rid) if self.repos[self.rid_to_path[rid]] == STATE_OFFLINE: self.repos[self.rid_to_path[rid]] = STATE_IDLE self._clear_emblems_in_dir(self.rid_to_path[rid]) def cb_device_disconnected(self, daemon, nid): self.online_nids.remove(nid) # Check for all online repos attached to this device for rid in self.rid_to_dev: if rid in self.onlide_rids: # Check if repo is attached to any other, online device if len([ x for x in self.rid_to_dev[rid] if x in self.online_nids ]) == 0: # Nope log.debug("Repo '%s' now offline", rid) self.onlide_rids.remove(rid) self.repos[self.rid_to_path[rid]] = STATE_OFFLINE self._clear_emblems_in_dir(self.rid_to_path[rid]) def cb_syncthing_folder_added(self, daemon, rid, r): """ Called when folder is readed from configuration (by syncthing daemon, not locally). Adds path to list of known repositories and asks Nautilus to re-read emblem. """ path = os.path.expanduser(r["path"]) if path.endswith(os.path.sep): path = path.rstrip("/") self.rid_to_path[rid] = path self.path_to_rid[path] = rid self.repos[path] = STATE_OFFLINE self._invalidate(path) # Store repo id in dict of associated devices self.rid_to_dev[rid] = set() for d in r['devices']: self.rid_to_dev[rid].add(d['deviceID']) def cb_syncthing_con_error(self, *a): pass def cb_syncthing_disconnected(self, *a): """ Called when connection to Syncthing daemon is lost or Daemon object fails to (re)connect. Check if connection was already finished before and clears up stuff in that case. """ if self.ready: log.info("Connection to Syncthing daemon lost") self.ready = False self._clear_emblems() self.daemon.reconnect() def cb_syncthing_folder_state_changed(self, daemon, rid, state): """ Called when folder synchronization starts or stops """ if rid in self.rid_to_path: path = self.rid_to_path[rid] if self.repos[path] != STATE_OFFLINE: self.repos[path] = state log.debug("State of %s changed to %s", path, state) self._invalidate(path) # Invalidate all files in repository as well self._clear_emblems_in_dir(path) def cb_syncthing_folder_stopped(self, daemon, rid, *a): """ Called when synchronization error is detected """ self.cb_syncthing_folder_state_changed(daemon, rid, STATE_STOPPED) def cb_syncthing_item_started(self, daemon, rid, filename, *a): """ Called when file download starts """ if rid in self.rid_to_path: path = self.rid_to_path[rid] filepath = os.path.join(path, filename) log.debug("Download started %s", filepath) self.downloads.add(filepath) self._invalidate(filepath) placeholderpath = os.path.join(path, ".syncthing.%s.tmp" % filename) if placeholderpath in self.files: self._invalidate(placeholderpath) def cb_syncthing_item_updated(self, daemon, rid, filename, *a): """ Called after file is downloaded """ if rid in self.rid_to_path: path = self.rid_to_path[rid] filepath = os.path.join(path, filename) log.debug("Download finished %s", filepath) if filepath in self.downloads: self.downloads.remove(filepath) self._invalidate(filepath) ### InfoProvider stuff def update_file_info(self, file): # TODO: This remembers every file user ever saw in Nautilus. # There *has* to be memory efficient alternative... path = self._get_path(file) pathonly, filename = os.path.split(path) self.files[path] = file if not self.ready: return NautiluslikeExtension._plugin_module.OperationResult.COMPLETE # Check if folder is one of repositories managed by syncthing if path in self.downloads: file.add_emblem("syncthing-active") if filename.startswith(".syncthing.") and filename.endswith(".tmp"): # Check for placeholder files realpath = os.path.join(pathonly, filename[11:-4]) if realpath in self.downloads: file.add_emblem("syncthing-active") return NautiluslikeExtension._plugin_module.OperationResult.COMPLETE elif path in self.repos: # Determine what emblem should be used state = self.repos[path] if state == STATE_IDLE: # File manager probably shouldn't care about folder being scanned file.add_emblem("syncthing") elif state == STATE_STOPPED: file.add_emblem("syncthing-error") elif state == STATE_SYNCING: file.add_emblem("syncthing-active") else: # Default (i-have-no-idea-what-happened) state file.add_emblem("syncthing-offline") else: state = self._get_parent_repo_state(path) if state is None: # _get_parent_repo_state returns None if file doesn't # belongs to repo pass elif state in (STATE_IDLE, STATE_SYNCING): # File manager probably shouldn't care about folder being scanned file.add_emblem("syncthing") else: # Default (i-have-no-idea-what-happened) state file.add_emblem("syncthing-offline") return NautiluslikeExtension._plugin_module.OperationResult.COMPLETE ### MenuProvider stuff def get_file_items(self, window, sel_items): if len(sel_items) == 1: # Display context menu only if one item is selected and # that item is directory return self.get_background_items(window, sel_items[0]) return [] def cb_remove_repo_menu(self, menuitem, path): if path in self.path_to_rid: path = os.path.abspath(os.path.expanduser(path)) path = path.replace("'", "\'") os.system("syncthing-gtk --remove-repo '%s' &" % path) def cb_add_repo_menu(self, menuitem, path): path = os.path.abspath(os.path.expanduser(path)) path = path.replace("'", "\'") os.system("syncthing-gtk --add-repo '%s' &" % path) def get_background_items(self, window, item): if not item.is_directory(): # Context menu is enabled only for directories # (file can't be used as repo) return [] path = self._get_path(item).rstrip("/") if path in self.repos: # Folder is already repository. # Add 'remove from ST' item menu = NautiluslikeExtension._plugin_module.MenuItem( name='STPlugin::remove_repo', label='Remove Directory from Syncthing', tip='Remove selected directory from Syncthing', icon='syncthing-offline') menu.connect('activate', self.cb_remove_repo_menu, path) return [menu] elif self._get_parent_repo_state(path) is None: # Folder doesn't belongs to any repository. # Add 'add to ST' item menu = NautiluslikeExtension._plugin_module.MenuItem( name='STPlugin::add_repo', label='Synchronize with Syncthing', tip='Add selected directory to Syncthing', icon='syncthing') menu.connect('activate', self.cb_add_repo_menu, path) return [menu] # Folder belongs to some repository. # Don't add anything return [] @staticmethod def set_plugin_module(m): NautiluslikeExtension._plugin_module = m syncthing-gtk-0.9.4.4/syncthing_gtk/notifications.py000066400000000000000000000272171352162771300225750ustar00rootroot00000000000000#!/usr/bin/env python2 """ Syncthing-GTK - Notifications Listens to syncing events on daemon and displays desktop notifications. """ from __future__ import unicode_literals from syncthing_gtk.tools import IS_WINDOWS, IS_GNOME DELAY = 5 # Display notification only after no file is downloaded for seconds ICON_DEF = "syncthing-gtk" ICON_ERR = "syncthing-gtk-error" HAS_DESKTOP_NOTIFY = False Notifications = None try: if not IS_WINDOWS: import gi gi.require_version('Notify', '0.7') from gi.repository import Notify HAS_DESKTOP_NOTIFY = True except ImportError: pass if HAS_DESKTOP_NOTIFY: from syncthing_gtk.timermanager import TimerManager from syncthing_gtk.tools import _ # gettext function import os, logging log = logging.getLogger("Notifications") class STNotification(): """ Basic class to track a notification and update its text """ ACT_DEFAULT = "default" ACT_IGNORE = "IGNORE" ACT_ACCEPT = "ACCEPT" app = None n = None id = None label = None def __init__(self, app, id, label=None): self.app = app self.id = id self.set_label(label) def set_label(self, label): self.label = label def clean(self): pass def close_notification(self): try: self.n.close_notification() except Exception: # If I can't close the notification, I don't care pass def cb_notification_closed(self, notif): self.n = None self.clean() def supports(self, caps, supported=True, unsupported=False): if IS_GNOME: return unsupported else: return supported def addactions(self, n, actions=[], clear=True): if not self.supports("actions"): return if clear: n.clear_actions() for act, label, cb, data in actions: n.add_action(act, label, cb, data) def show(self, n): try: n.show() except Exception: # Ignore all errors here, there is no way I can handle # everything what can be broken with notifications... pass def push(self, summary, body=None, **kwargs): icon = kwargs.get('icon', ICON_DEF) urg = kwargs.get('urg') actions = kwargs.get('actions', []) if not self.n: self.n = Notify.Notification.new(summary, body, icon) self.n.connect("closed", self.cb_notification_closed), else: self.n.update(summary, body, icon) if urg: self.n.set_urgency(urg) self.addactions(self.n, actions) self.show(self.n) class STNotificationDevice(STNotification): """Notification class to track a notification, which is related to a syncthing device""" def cb_accept(self, n, action, user_data): self.app.open_editor_device(self.id, self.label) def cb_ignore(self, n, action, user_data): self.app.add_ignored("ignoredDevices", self.id) def rejected(self): label_fb = self.label or self.id actions = [ (self.ACT_DEFAULT, _('Accept device "%s"') % label_fb, self.cb_accept, None), (self.ACT_ACCEPT, _('Accept device "%s"') % label_fb, self.cb_accept, None), (self.ACT_IGNORE, _('Ignore device "%s"') % label_fb, self.cb_ignore, None), ] summary = _("Unknown Device") body = _('Device "%s" is trying to connect to syncthing daemon.' % self.label) self.push(summary, body, actions=actions, urg=Notify.Urgency.CRITICAL) class STNotificationFolder(STNotification, TimerManager): """Notification class to track a notification, which is related to a syncthing folder""" syncing = False updated = set([]) deleted = set([]) updating = set([]) conflict = set([]) timer_id = "display" timer_delay = DELAY def __init__(self, app, id, label=None): TimerManager.__init__(self) STNotification.__init__(self, app, id, label) def set_label(self, label): if label: self.label = label elif self.id in self.app.folders: self.label = self.app.folders[self.id]["label"] def clean(self): self.syncing = False self.cancel_timer(self.timer_id) self.updated.clear() self.deleted.clear() self.updating.clear() def cb_accept(self, n, action, user_data): self.app.open_editor_folder(self.id, self.label, user_data) def cb_ignore(self, n, action, user_data): self.app.add_ignored("ignoredFolders", self.id) def rejected(self, nid): device = self.app.devices[nid].get_title() label_fb = self.label or self.id actions = [ (self.ACT_DEFAULT, _('Accept folder "%s"') % label_fb, self.cb_accept, nid), (self.ACT_ACCEPT, _('Accept folder "%s"') % label_fb, self.cb_accept, nid), (self.ACT_IGNORE, _('Ignore folder "%s"') % label_fb, self.cb_ignore, nid), ] markup_dev = self.supports("body-markup", "%s" % device, device) markup_fol = self.supports("body-markup", "%s" % label_fb, label_fb) summary = _("Folder rejected") body = _('Unexpected folder "%(folder)s" sent from device "%(device)s".') % { 'device' : markup_dev, 'folder' : markup_fol } self.push(summary, body, actions=actions, urg=Notify.Urgency.CRITICAL) def add_path(self, path, itm_finished=True): path_full = os.path.join(self.app.folders[self.id]["norm_path"], path) if itm_finished: if ".sync-conflict" in path and os.path.exists(path_full): # Updated or new conflict self.sync_conflict(path) elif path in self.updating: if os.path.exists(path_full): self.updated.add(path) else: self.deleted.add(path) self.updating.remove(path) if not self.timer_active(self.timer_id): self.timer(self.timer_id, self.timer_delay, self.display) else: self.updating.add(path) def display(self, finished=False): summary = "" body = "" filename = "" if finished: summary = _('Completed synchronization in "%s"') % (self.label or self.id) else: summary = _('Updates in folder "%s"') % (self.label or self.id) if len(self.updated) == 1 and len(self.deleted) == 0: f_path = os.path.join(self.app.folders[self.id]["norm_path"], self.updated.pop()) filename = os.path.split(f_path)[-1] self.supports("body-hyperlinks", "%s" % (f_path.encode('unicode-escape'), filename), f_path) body = _("%(hostname)s: Downloaded '%(filename)s' to reflect remote changes.") elif len(self.updated) == 0 and len(self.deleted) == 1: f_path = os.path.join(self.app.folders[self.id]["norm_path"], self.deleted.pop()) filename = os.path.split(f_path)[-1] body = _("%(hostname)s: Deleted '%(filename)s' to reflect remote changes.") elif len(self.deleted) == 0 and len(self.updated) > 0: body = _("%(hostname)s: Downloaded %(updated)s files to reflect remote changes.") elif len(self.updated) == 0 and len(self.deleted) > 0: body = _("%(hostname)s: Deleted %(deleted)s files to reflect remote changes.") elif len(self.deleted) > 0 and len(self.updated) > 0: body = _("%(hostname)s: downloaded %(updated)s files and deleted %(deleted)s files to reflect remote changes.") elif len(self.conflict) > 0: # If we reached this point, there are only sync-conflicts updated # we don't want to have another notification return body = body % { 'hostname' : self.app.get_local_name(), 'updated' : len(self.updated), 'deleted' : len(self.deleted), 'filename' : (filename), } self.push(summary, body) def set_progress(self, progress): if progress < 1.0: self.syncing = True def finished(self): if len(self.deleted) + len(self.updating) + len(self.updated) > 0 \ or self.syncing: self.display(True) def sync_conflict(self, path): path_full = os.path.join(self.app.folders[self.id]["norm_path"], path) summary = _('Conflicting file in "%s"') % (self.label or self.id) text = _('Conflict in path "%s" detected.') % path_full n = Notify.Notification.new(summary, text, ICON_ERR) n.set_urgency(Notify.Urgency.CRITICAL) n.add_action(self.ACT_DEFAULT, _("Open Conflicting file in filemanager"), self.cb_open_conflict, path_full) n.connect("closed", self.cb_sync_conflict_closed), self.conflict.add(n) self.show(n) def cb_sync_conflict_closed(self, notif): self.conflict.remove(notif) def cb_open_conflict(self, n, action, user_data): if user_data and os.path.exists(user_data): dirname = os.path.dirname(user_data) self.app.cb_browse_folder({'path': dirname}) class NotificationsCls(): """ Watches for filesystem changes and reports them to daemon """ def __init__(self, app, daemon): Notify.init("Syncthing GTK") # Prepare stuff self.app = app self.daemon = daemon self.notify_folders = {} self.notify_devices = {} # Make deep connection with daemon self.signals = [ self.daemon.connect("connected", self.cb_syncthing_connected) ] if self.app.config["notification_for_error"]: self.signals += [ self.daemon.connect("error", self.cb_syncthing_error), self.daemon.connect("folder-rejected", self.cb_syncthing_folder_rejected), self.daemon.connect("device-rejected", self.cb_syncthing_device_rejected) ] log.verbose("Error notifications enabled") if self.app.config["notification_for_update"]: self.signals += [ self.daemon.connect('item-started', self.cb_syncthing_item_started), self.daemon.connect('item-updated', self.cb_syncthing_item_updated), ] log.verbose("File update notifications enabled") if self.app.config["notification_for_folder"]: self.signals += [ self.daemon.connect('folder-sync-progress', self.cb_syncthing_folder_progress), self.daemon.connect('folder-sync-finished', self.cb_syncthing_folder_finished) ] log.verbose("Folder notifications enabled") def get_folder(self, folder_id, label=None): if folder_id not in self.notify_folders: self.notify_folders[folder_id] = STNotificationFolder(self.app, folder_id, label) return self.notify_folders[folder_id] def get_device(self, device_id, label=None): if device_id not in self.notify_devices: self.notify_devices[device_id] = STNotificationDevice(self.app, device_id, label) return self.notify_devices[device_id] def clear_notifications(self): # Clear download list and close related notifications for dct in [self.notify_devices, self.notify_folders]: for obj in dct.values(): obj.close_notification() dct = {} def kill(self, *a): """ Removes all event handlers and frees some stuff """ for s in self.signals: self.daemon.handler_disconnect(s) self.clear_notifications() log.info("Notifications killed") def cb_syncthing_connected(self, *a): self.clear_notifications() def cb_syncthing_error(self, daemon, message): summary = _('An error occurred in Syncthing!') n = Notify.Notification.new(summary, None, ICON_ERR) n.set_urgency(Notify.Urgency.CRITICAL) try: n.show() except Exception: pass def cb_syncthing_folder_rejected(self, daemon, device_id, folder_id, label): if device_id not in self.app.devices: return n = self.get_folder(folder_id, label) n.rejected(device_id) def cb_syncthing_device_rejected(self, daemon, nid, name, address): n = self.get_device(nid, name) n.rejected() def cb_syncthing_item_started(self, daemon, folder_id, path, time): n = self.get_folder(folder_id) n.add_path(path, itm_finished=False) def cb_syncthing_item_updated(self, daemon, folder_id, path, *a): n = self.get_folder(folder_id) n.add_path(path) def cb_syncthing_folder_progress(self, daemon, folder_id, progress): n = self.get_folder(folder_id) n.set_progress(progress) def cb_syncthing_folder_finished(self, daemon, folder_id): n = self.get_folder(folder_id) n.finished() # Notifications is set to class only if libnotify is available Notifications = NotificationsCls """ Events emitted when file is changed on remote node: ItemStarted repo_name, path, time LocalIndexUpdated (item-updated) repo_name, path, time """ syncthing-gtk-0.9.4.4/syncthing_gtk/ribar.py000066400000000000000000000104501352162771300210120ustar00rootroot00000000000000#!/usr/bin/env python2 """ Syncthing-GTK - RIBar Infobar wrapped in Revealer, for greater justice """ from __future__ import unicode_literals from gi.repository import Gtk, GLib, GObject RevealerClass = None if hasattr(Gtk, "Revealer"): RevealerClass = Gtk.Revealer else: from syncthing_gtk.fakerevealer import FakeRevealer RevealerClass = FakeRevealer class RIBar(RevealerClass): """ Infobar wrapped in Revealer Signals: Everything from Gtk.Revealer, plus: close() emitted when the user dismisses the info bar response(response_id) Emitted when an action widget (button) is clicked """ __gsignals__ = { b"response" : (GObject.SIGNAL_RUN_FIRST, None, (int,)), b"close" : (GObject.SIGNAL_RUN_FIRST, None, ()), } ### Initialization def __init__(self, label, message_type=Gtk.MessageType.INFO, *buttons): """ ... where label can be Gtk.Widget or str and buttons are tuples of (Gtk.Button, response_id) """ # Init RevealerClass.__init__(self) self._infobar = Gtk.InfoBar() self._values = {} self._label = None # Icon icon_name = "dialog-information" if message_type == Gtk.MessageType.ERROR: icon_name = "dialog-error" elif message_type == Gtk.MessageType.WARNING: icon_name = "dialog-warning" icon = Gtk.Image() icon.set_from_icon_name(icon_name, Gtk.IconSize.DIALOG) self._infobar.get_content_area().pack_start(icon, False, False, 1) # Label if isinstance(label, Gtk.Widget): self._infobar.get_content_area().pack_start(label, True, True, 0) self._label = label else: self._label = Gtk.Label() self._label.set_size_request(300, -1) self._label.set_markup(label) self._label.set_alignment(0, 0.5) self._label.set_line_wrap(True) self._infobar.get_content_area().add(self._label) # Buttons for button, response_id in buttons: self.add_button(button, response_id) # Signals self._infobar.connect("close", self._cb_close) self._infobar.connect("response", self._cb_response) # Settings self._infobar.set_message_type(message_type) if hasattr(self._infobar, "set_show_close_button"): # GTK >3.8 self._infobar.set_show_close_button(True) else: self.add_button(Gtk.Button("X"), 0) self.set_reveal_child(False) # Packing self.add(self._infobar) self.show_all() def _cb_close(self, ib): self.emit("close") def _cb_response(self, ib, response_id): self.emit("response", response_id) def disable_close_button(self): if hasattr(self._infobar, "set_show_close_button"): self._infobar.set_show_close_button(False) def add_widget(self, widget, expand=False, fill=True): self._infobar.get_content_area().pack_start(widget, expand, fill, 1) widget.show() def add_button(self, button, response_id): self._infobar.add_action_widget(button, response_id) self._infobar.show_all() def get_label(self): """ Returns label widget """ return self._label def close_on_close(self): """ Setups revealer so it will be automaticaly closed, removed and destroyed when user clicks to any button, including 'X' """ self.connect("close", self.close) self.connect("response", self.close) def close(self, *a): """ Closes revealer (with animation), removes it from parent and calls destroy() """ self.set_reveal_child(False) GLib.timeout_add(self.get_transition_duration() + 50, self._cb_destroy) def _cb_destroy(self, *a): """ Callback used by _cb_close method """ if not self.get_parent() is None: self.get_parent().remove(self) self.destroy() def set_value(self, key, value): """ Stores some metadata """ self._values[key] = value def get_value(self, key): """ Retrieves some metadata """ return self._values[key] def __getitem__(self, key): """ Shortcut to get_value """ return self._values[key] def __setitem__(self, key, value): """ Shortcut to set_value """ self.set_value(key, value) @staticmethod def build_button(label, icon_name=None, icon_widget=None, use_stock=False): """ Builds button situable for action area """ b = Gtk.Button.new_from_stock(label) if use_stock \ else Gtk.Button.new_with_label(label) b.set_use_underline(True) if not icon_name is None: icon_widget = Gtk.Image() icon_widget.set_from_icon_name(icon_name, Gtk.IconSize.BUTTON) if not icon_widget is None: b.set_image(icon_widget) b.set_always_show_image(True) return b syncthing-gtk-0.9.4.4/syncthing_gtk/statusicon.py000066400000000000000000000457221352162771300221210ustar00rootroot00000000000000#!/usr/bin/env python2 # -*- coding: utf-8 -*- """ Syncthing-GTK - StatusIcon """ from __future__ import unicode_literals import locale import os import sys import logging from gi.repository import GObject from gi.repository import GLib from gi.repository import Gtk from syncthing_gtk.tools import IS_UNITY, IS_KDE, IS_CINNAMON, IS_LXQT from syncthing_gtk.tools import _ # gettext function log = logging.getLogger("StatusIcon") # | KDE5 | MATE | Unity | Cinnamon | Cairo-Dock (classic) | Cairo-Dock (modern) | KDE4 | #----------------+-----------------+-----------+------------+------------+----------------------+---------------------+-----------+ # StatusIconKDE4 | excellent | usable³ | very good⁵ | usable³ | usable³ | excellent | excellent | # StatusIconQt5 | very good (KF5) | - | - | - | - | - | - | # StatusIconAppI | good² | none | excellent | none | none | excellent | good² | # StatusIconGTK3 | none | excellent | none | very good¹ | very good¹ | none | good⁴ | # # Notes: # - StatusIconQt5: # - It's pretty unstable and leads to crashes # - Only tested on Qt 5.4 which only supports Qt5 through a KDE frameworks plugin # - StatusIconAppIndicator does not implement any fallback (but the original libappindicator did) # - Markers: # ¹ Icon cropped # ² Does not support left-click # ³ It works, but looks ugly and does not support left-click # ⁴ Does not support icon states # ⁵ For some menu items the standard GTK icons are used instead of the monotone ones class StatusIcon(GObject.GObject): """ Base class for all status icon backends """ TRAY_TITLE = _("Syncthing") __gsignals__ = { b"clicked": (GObject.SIGNAL_RUN_FIRST, None, ()), } __gproperties__ = { b"active": ( GObject.TYPE_BOOLEAN, "is the icon user-visible?", "does the icon back-end think that anything is might be shown to the user?", True, GObject.PARAM_READWRITE ) } def __init__(self, icon_path, popupmenu, force=False): GObject.GObject.__init__(self) self.__icon_path = os.path.normpath(os.path.abspath(icon_path)) self.__popupmenu = popupmenu self.__active = True self.__visible = False self.__hidden = False self.__icon = "si-syncthing-unknown" self.__text = "" self.__force = force def get_active(self): """ Return whether there is at least a chance that the icon might be shown to the user If this returns `False` then the icon will definetely not be shown, but if it returns `True` it doesn't have to be visible... Note: This value is not directly influenced by calling `hide()` and `show()`. @return {bool} """ return self.get_property("active") def set(self, icon=None, text=None): """ Set the status icon image and descriptive text If either of these are `None` their previous value will be used. @param {String} icon The name of the icon to show (i.e. `si-syncthing-idle`) @param {String} text Some text that indicates what the application is currently doing (generally this be used for the tooltip) """ if IS_KDE and isinstance(self, StatusIconDBus) and not icon.startswith("si-syncthing"): # KDE seems to be the only platform that has proper support for icon states # (all other implementations just hide the icon completely when its passive) self.__visible = False elif not icon.endswith("-0"): # si-syncthing-0 # Ignore first syncing icon state to prevent the icon from flickering # into the main notification bar during initialization self.__visible = True if self.__hidden: self._set_visible(False) else: self._set_visible(self.__visible) def hide(self): """ Hide the icon This method tries its best to ensure the icon is hidden, but there are no guarantees as to how use well its going to work. """ self.__hidden = True self._set_visible(False) def show(self): """ Show a previously hidden icon This method tries its best to ensure the icon is hidden, but there are no guarantees as to how use well its going to work. """ self.__hidden = False self._set_visible(self.__visible) def _is_forced(self): return self.__force def _on_click(self, *a): self.emit("clicked") def _get_icon(self, icon=None): """ @internal Use `set()` instead. """ if icon: self.__icon = icon return self.__icon def _get_text(self, text=None): """ @internal Use `set()` instead. """ if text: self.__text = text return self.__text def _get_popupmenu(self): """ @internal """ return self.__popupmenu def _set_visible(self, visible): """ @internal """ pass def do_get_property(self, property): if property.name == "active": return self.__active else: raise AttributeError("Unknown property %s" % property.name) def do_set_property(self, property, value): if property.name == "active": self.__active = value else: raise AttributeError("unknown property %s" % property.name) class StatusIconDummy(StatusIcon): """ Dummy status icon implementation that does nothing """ def __init__(self, *args, **kwargs): StatusIcon.__init__(self, *args, **kwargs) # Pretty unlikely that this will be visible... self.set_property("active", False) if IS_UNITY or IS_KDE: log.warning("Failed to load modules required for status icon. " "Please, make sure libappindicator package and python " "bindings are installed.") else: log.warning("Failed to load modules required for status icon") def set(self, icon=None, text=None): StatusIcon.set(self, icon, text) self._get_icon(icon) self._get_text(text) class StatusIconGTK3(StatusIcon): """ Gtk.StatusIcon based status icon backend """ def __init__(self, *args, **kwargs): StatusIcon.__init__(self, *args, **kwargs) if not self._is_forced(): if IS_UNITY: # Unity fakes SysTray support but actually hides all icons... raise NotImplementedError if IS_KDE: # While the GTK backend works fine on KDE 4, the StatusIconKDE4 backend will achieve better # results and should be available on any standard KDE 4 installation # (since several KDE applications depend on it) raise NotImplementedError self._tray = Gtk.StatusIcon() self._tray.connect("activate", self._on_click) self._tray.connect("popup-menu", self._on_rclick) self._tray.connect("notify::embedded", self._on_embedded_change) self._tray.set_visible(True) self._tray.set_name("syncthing-gtk") self._tray.set_title(self.TRAY_TITLE) # self._tray.is_embedded() must be called asynchronously # See: http://stackoverflow.com/a/6365904/277882 GLib.idle_add(self._on_embedded_change) def set(self, icon=None, text=None): StatusIcon.set(self, icon, text) self._tray.set_from_icon_name(self._get_icon(icon)) self._tray.set_tooltip_text(self._get_text(text)) def _on_embedded_change(self, *args): # Without an icon update at this point GTK might consider the icon embedded and visible even through # it can't actually be seen... self._tray.set_from_icon_name(self._get_icon()) # An invisible tray icon will never be embedded but it also should not be replaced # by a fallback icon is_embedded = self._tray.is_embedded() or not self._tray.get_visible() # On some desktops, above check fails but tray is always visible is_embedded = is_embedded or IS_LXQT or IS_CINNAMON if is_embedded != self.get_property("active"): self.set_property("active", is_embedded) def _on_rclick(self, si, button, time): self._get_popupmenu().popup(None, None, None, None, button, time) def _set_visible(self, active): StatusIcon._set_visible(self, active) self._tray.set_visible(active) class StatusIconDBus(StatusIcon): pass class StatusIconQt(StatusIconDBus): """ Base implementation for all Qt-based backends that provides GMenu to QMenu conversion services """ def _make_qt_action(self, menu_child_gtk, menu_qt): # This is a separate function to make sure that the Qt callback function are executed # in the correct `locale()` context and do net trigger events on the wrong Gtk menu item # Create menu item action = self._qt_types["QAction"](menu_qt) # Convert item to separator if appropriate action.setSeparator(isinstance(menu_child_gtk, Gtk.SeparatorMenuItem)) # Copy sensitivity def set_sensitive(*args): action.setEnabled(menu_child_gtk.is_sensitive()) menu_child_gtk.connect("notify::sensitive", set_sensitive) set_sensitive() # Copy checkbox state if isinstance(menu_child_gtk, Gtk.CheckMenuItem): action.setCheckable(True) def _set_visible(*args): action.setChecked(menu_child_gtk.get_active()) menu_child_gtk.connect("notify::active", _set_visible) _set_visible() # Copy icon if isinstance(menu_child_gtk, Gtk.ImageMenuItem): def set_image(*args): image = menu_child_gtk.get_image() if image and image.get_storage_type() == Gtk.ImageType.PIXBUF: # Converting GdkPixbufs to QIcons might be a bit inefficient this way, # but it requires only very little code and looks very stable png_buffer = image.get_pixbuf().save_to_bufferv("png", [], [])[1] image = self._qt_types["QImage"].fromData(png_buffer) pixmap = self._qt_types["QPixmap"].fromImage(image) action.setIcon(self._qt_types["QIcon"](pixmap)) elif image: icon_name = None if image.get_storage_type() == Gtk.ImageType.ICON_NAME: icon_name = image.get_icon_name()[0] if image.get_storage_type() == Gtk.ImageType.STOCK: icon_name = image.get_stock()[0] action.setIcon(self._get_icon_by_name(icon_name)) else: action.setIcon(self._get_icon_by_name(None)) menu_child_gtk.connect("notify::image", set_image) set_image() # Set label def set_label(*args): label = menu_child_gtk.get_label() if isinstance(menu_child_gtk, Gtk.ImageMenuItem) and menu_child_gtk.get_use_stock(): label = Gtk.stock_lookup(label).label if isinstance(label, str): label = label.decode(locale.getpreferredencoding()) if menu_child_gtk.get_use_underline(): label = label.replace("_", "&") action.setText(label) menu_child_gtk.connect("notify::label", set_label) set_label() # Add submenus def set_popupmenu(*args): action.setMenu(self._get_popupmenu(menu_child_gtk.get_submenu())) menu_child_gtk.connect("notify::popupmenu", set_popupmenu) set_popupmenu() # Hook up Qt signals to their GTK counterparts action.triggered.connect(lambda *a: menu_child_gtk.emit("activate")) return action def _get_icon_by_name(self, icon_name): if icon_name: icon_file = self._gtk_icon_theme.lookup_icon(icon_name, 48, 0) if not icon_file: log.info("Skipping unknown icon file: %s" % (icon_name)) return self._qt_types["QIcon"]() icon_path = icon_file.get_filename() if not icon_path: return self._qt_types["QIcon"]() icon_dir, icon_basename = os.path.split(os.path.realpath(icon_path)) # If we don't resolve all icon names (i.e.: realpath) before passing them to Qt # SOME OF THEM will be dropped (especially if their name started with "gtk-" originally) icon_name = os.path.splitext(icon_basename)[0] # Make sure that Qt can find this icon by its name, by adding # the directory to the icon theme search path # This extra step is required because we have to set the application # style to "motif" during Qt initialization if icon_dir not in self._qt_types["QIcon"].themeSearchPaths(): theme_search_paths = self._qt_types["QIcon"].themeSearchPaths() theme_search_paths.prepend(icon_dir) self._qt_types["QIcon"].setThemeSearchPaths(theme_search_paths) return self._qt_types["QIcon"].fromTheme(icon_name, self._qt_types["QIcon"](icon_path)) return self._qt_types["QIcon"]() def _set_qt_types(self, **kwargs): self._gtk_icon_theme = Gtk.IconTheme.get_default() self._qt_types = kwargs def _get_popupmenu(self, menu_gtk=False): menu_gtk = menu_gtk if menu_gtk is not False else StatusIcon._get_popupmenu(self) if not menu_gtk: return None menu_qt = self._qt_types["QMenu"]() for menu_child_gtk in menu_gtk.get_children(): menu_qt.addAction(self._make_qt_action(menu_child_gtk, menu_qt)) return menu_qt class StatusIconKDE4(StatusIconQt): """ PyKDE5.kdeui.KStatusNotifierItem based status icon backend """ def __init__(self, *args, **kwargs): StatusIcon.__init__(self, *args, **kwargs) try: import PyQt4.Qt as qt import PyQt4.QtGui as qtgui import PyKDE4.kdeui as kdeui self._set_qt_types( QAction = qtgui.QAction, QMenu = kdeui.KMenu, QIcon = qtgui.QIcon, QImage = qtgui.QImage, QPixmap = qtgui.QPixmap ) self._status_active = kdeui.KStatusNotifierItem.Active self._status_passive = kdeui.KStatusNotifierItem.Passive except ImportError: raise NotImplementedError if b"GNOME_DESKTOP_SESSION_ID" in os.environ: del os.environ[b"GNOME_DESKTOP_SESSION_ID"] # Create Qt GUI application (required by the KdeUI libraries) # We force "--style=motif" here to prevent Qt to load platform theme # integration libraries for "Gtk+" style that cause GTK 3 to abort like this: # Gtk-ERROR **: GTK+ 2.x symbols detected. Using GTK+ 2.x and GTK+ 3 in the same process is not supported self._qt_app = qt.QApplication([sys.argv[0], "--style=motif"]) # Keep reference to KMenu object to prevent SegFault... self._kde_menu = self._get_popupmenu() self._tray = kdeui.KStatusNotifierItem("syncthing-gtk", None) self._tray.setStandardActionsEnabled(False) # Prevent KDE quit item from showing self._tray.setContextMenu(self._kde_menu) self._tray.setCategory(kdeui.KStatusNotifierItem.ApplicationStatus) self._tray.setTitle(self.TRAY_TITLE) self._tray.activateRequested.connect(self._on_click) def _set_visible(self, active): StatusIcon._set_visible(self, active) self._tray.setStatus(self._status_active if active else self._status_passive) def set(self, icon=None, text=""): StatusIcon.set(self, icon, text) self._tray.setIconByName(self._get_icon(icon)) self._tray.setToolTip(self._get_icon(icon), self._get_text(text), "") class StatusIconAppIndicator(StatusIconDBus): """ Unity's AppIndicator3.Indicator based status icon backend """ def __init__(self, *args, **kwargs): StatusIcon.__init__(self, *args, **kwargs) try: import gi gi.require_version('AppIndicator3', '0.1') from gi.repository import AppIndicator3 as appindicator self._status_active = appindicator.IndicatorStatus.ACTIVE self._status_passive = appindicator.IndicatorStatus.PASSIVE except (ImportError, ValueError): raise NotImplementedError category = appindicator.IndicatorCategory.APPLICATION_STATUS # Whatever icon is set here will be used as a tooltip icon during the entire time to icon is shown self._tray = appindicator.Indicator.new("syncthing-gtk", self._get_icon(), category) self._tray.set_menu(self._get_popupmenu()) self._tray.set_title(self.TRAY_TITLE) def _set_visible(self, active): StatusIcon._set_visible(self, active) self._tray.set_status(self._status_active if active else self._status_passive) def set(self, icon=None, text=None): StatusIcon.set(self, icon, text) self._tray.set_icon_full(self._get_icon(icon), self._get_text(text)) class StatusIconProxy(StatusIcon): def __init__(self, *args, **kwargs): StatusIcon.__init__(self, *args, **kwargs) self._arguments = (args, kwargs) self._status_fb = None self._status_gtk = None self.set("si-syncthing-unknown", "") # Do not ever force-show indicators when they do not think they'll work if "force" in self._arguments[1]: del self._arguments[1]["force"] try: # Try loading GTK native status icon self._status_gtk = StatusIconGTK3(*args, **kwargs) self._status_gtk.connect(b"clicked", self._on_click) self._status_gtk.connect(b"notify::active", self._on_notify_active_gtk) self._on_notify_active_gtk() log.info("Using backend StatusIconGTK3 (primary)") except NotImplementedError: # Directly load fallback implementation self._load_fallback() def _on_click(self, *args): self.emit(b"clicked") def _on_notify_active_gtk(self, *args): if self._status_fb: # Hide fallback icon if GTK icon is active and vice-versa if self._status_gtk.get_active(): self._status_fb.hide() else: self._status_fb.show() elif not self._status_gtk.get_active(): # Load fallback implementation self._load_fallback() def _on_notify_active_fb(self, *args): active = False if self._status_gtk and self._status_gtk.get_active(): active = True if self._status_fb and self._status_fb.get_active(): active = True self.set_property("active", active) def _load_fallback(self): if IS_UNITY or IS_KDE: status_icon_backends = [StatusIconAppIndicator, StatusIconKDE4, StatusIconDummy] else: status_icon_backends = [StatusIconKDE4, StatusIconAppIndicator, StatusIconDummy] if not self._status_fb: for StatusIconBackend in status_icon_backends: try: self._status_fb = StatusIconBackend(*self._arguments[0], **self._arguments[1]) self._status_fb.connect(b"clicked", self._on_click) self._status_fb.connect(b"notify::active", self._on_notify_active_fb) self._on_notify_active_fb() log.warning("StatusIcon: Using backend %s (fallback)" % StatusIconBackend.__name__) break except NotImplementedError: continue # At least the dummy backend should have been loaded at this point... assert self._status_fb # Update fallback icon self.set(self._icon, self._text) def set(self, icon=None, text=None): self._icon = icon self._text = text if self._status_gtk: self._status_gtk.set(icon, text) if self._status_fb: self._status_fb.set(icon, text) def hide(self): if self._status_gtk: self._status_gtk.hide() if self._status_fb: self._status_fb.hide() def show(self): if self._status_gtk: self._status_gtk.show() if self._status_fb: self._status_fb.show() def get_status_icon(*args, **kwargs): # Try selecting backend based on environment variable if "SYNCTHING_STATUS_BACKEND" in os.environ: kwargs["force"] = True status_icon_backend_name = "StatusIcon%s" % (os.environ.get("SYNCTHING_STATUS_BACKEND")) if status_icon_backend_name in globals(): try: status_icon = globals()[status_icon_backend_name](*args, **kwargs) log.info("StatusIcon: Using requested backend %s" % (status_icon_backend_name)) return status_icon except NotImplementedError: log.error("StatusIcon: Requested backend %s is not supported" % (status_icon_backend_name)) else: log.error("StatusIcon: Requested backend %s does not exist" % (status_icon_backend_name)) return StatusIconDummy(*args, **kwargs) # Use proxy backend to determine the correct backend while the application is running return StatusIconProxy(*args, **kwargs) syncthing-gtk-0.9.4.4/syncthing_gtk/stdownloader.py000066400000000000000000000334771352162771300224360ustar00rootroot00000000000000#!/usr/bin/env python2 """ Syncthing-GTK - StDownloader Instance of this class can download, extract and save syncthing daemon to given location. """ from __future__ import unicode_literals from gi.repository import GLib, Gio, GObject from syncthing_gtk.tools import get_config_dir, compare_version from syncthing_gtk.tools import IS_WINDOWS, is_portable from syncthing_gtk.tools import _ # gettext function import os, json, platform import tempfile, tarfile, zipfile, logging log = logging.getLogger("StDownloader") CHUNK_SIZE = 102400 class StDownloader(GObject.GObject): ST_GTK_URL = "https://api.github.com/repos/syncthing/syncthing-gtk/git/refs/tags" ST_URL = "https://api.github.com/repos/syncthing/syncthing/releases" """ Downloads, extracts and saves syncthing daemon to given location. # Create instance sd = StDownloader("/tmp/syncthing.x86", "linux-386") # Connect to singals sd.connect(... ... ... # Determine version sd.get_version() # (somewhere in 'version' signal callback) sd.download() Signals: version(version) emitted after current syncthing version is determined. Version argument is string. download-starting() emitted when download of package is starting download-progress(progress) emitted during download. Progress goes from 0.0 to 1.0 download-finished() emitted when download is finished extraction-progress(progress) emitted during extraction. Progress goes from 0.0 to 1.0 extraction-finished() emitted when extraction is finished and daemon binary saved (i.e. when all work is done) error(exception, message): Emited on error. Either exception or message can be None """ __gsignals__ = { b"version" : (GObject.SIGNAL_RUN_FIRST, None, (object,)), b"download-starting" : (GObject.SIGNAL_RUN_FIRST, None, ()), b"download-progress" : (GObject.SIGNAL_RUN_FIRST, None, (float,)), b"download-finished" : (GObject.SIGNAL_RUN_FIRST, None, ()), b"extraction-progress" : (GObject.SIGNAL_RUN_FIRST, None, (float,)), b"extraction-finished" : (GObject.SIGNAL_RUN_FIRST, None, ()), b"error" : (GObject.SIGNAL_RUN_FIRST, None, (object,object)), } def __init__(self, target, platform): """ Target - ~/.local/bin/syncthing or similar target location for daemon binary Platform - linux-386, windows-adm64 or other suffix used on syncthing releases page. """ GObject.GObject.__init__(self) self.target = target self.platform = platform # Latest Syncthing version known to be compatible with # Syncthing-GTK. This is just hardcoded minimal version, # actual value will be determined later self.latest_compat = "v0.11.0" self.forced = None self.version = None self.dll_url = None self.dll_size = None @staticmethod def get_target_folder(*a): """ Returns target directory where Syncthing binary will be downloaded. That's %APPDATA%/syncthing on Windows or one of ~/bin, ~/.bin or ~/.local/bin, whatever already exists. If none of folders are existing on Linux, ~/.local/bin will be created. Path will contain ~ on Linux and needs to be expanded. """ if IS_WINDOWS: if is_portable(): return ".\\data" return os.path.join(get_config_dir(), "syncthing") for p in ("~/bin", "~/.bin"): if os.path.exists(os.path.expanduser(p)): return p return "~/.local/bin" def get_version(self): """ Determines latest usable version and prepares stuff needed for download. Emits 'version' signal on success. Handler for 'version' signal should call download method. """ uri = StDownloader.ST_GTK_URL f = Gio.File.new_for_uri(uri) f.load_contents_async(None, self._cb_read_compatibility, None) def get_target(self): """ Returns download target """ return self.target def force_version(self, version): self.latest_compat = version self.forced = version log.verbose("STDownloader: Forced Syncthing version: %s", self.latest_compat) uri = StDownloader.ST_URL f = Gio.File.new_for_uri(uri) f.load_contents_async(None, self._cb_read_latest, None) def _cb_read_compatibility(self, f, result, buffer, *a): # Extract compatibility info from version tags in response from syncthing_gtk.app import INTERNAL_VERSION try: success, data, etag = f.load_contents_finish(result) if not success: raise Exception("Gio download failed") data = json.loads(data) tags_by_commit = {} commits_by_version = {} # Go over all tags and store them in form that is # easier to work with for tag in data: name = tag["ref"].split("/")[-1] sha = tag["object"]["sha"] if name.startswith("v"): commits_by_version[name] = sha if not sha in tags_by_commit: tags_by_commit[sha] = [] tags_by_commit[sha].append(name) # Determine last Syncthing-GTK version that is not newer # than INTERNAL_VERSION and last Syncthing release supported # by it for version in sorted(commits_by_version.keys()): if not compare_version(INTERNAL_VERSION, version): # Newer than internal log.verbose("STDownloader: Ignoring newer Syncthing-GTK version %s", version) else: for tag in tags_by_commit[commits_by_version[version]]: if tag.startswith("Syncthing_"): # ST-GTK version has ST version attached. # Check if this is newer than last known # compatible version st_ver = tag.split("_")[-1] if compare_version(st_ver, self.latest_compat): log.verbose("STDownloader: Got newer compatible Syncthing version %s", st_ver) self.latest_compat = st_ver log.verbose("STDownloader: Latest compatible Syncthing version: %s", self.latest_compat) except Exception as e: log.exception(e) self.emit("error", e, _("Failed to determine latest Syncthing version.")) return # After latest compatible ST version is determined, determine # latest actually existing version. This should be usually same, # but checking is better than downloading non-existant file. uri = StDownloader.ST_URL f = Gio.File.new_for_uri(uri) f.load_contents_async(None, self._cb_read_latest, None) def _cb_read_latest(self, f, result, buffer, *a): # Extract release version from response from syncthing_gtk.app import MIN_ST_VERSION latest_ver = None try: success, data, etag = f.load_contents_finish(result) if not success: raise Exception("Gio download failed") # Go over all available versions until compatible one # is found data = json.loads(data) for release in data: version = release["tag_name"] if latest_ver is None: latest_ver = version if compare_version(self.latest_compat, version) and (self.forced or compare_version(version, MIN_ST_VERSION)): # compatible log.verbose("STDownloader: Found compatible Syncthing version: %s", version) self.version = version for asset in release["assets"]: if self.platform in asset["name"]: self.dll_url = asset["browser_download_url"] self.dll_size = int(asset["size"]) log.debug("STDownloader: URL: %s", self.dll_url) break break else: log.verbose("STDownloader: Ignoring too new Syncthing version: %s", version) del f if self.dll_url is None: raise Exception("No release to download") except Exception as e: log.exception(e) self.emit("error", e, _("Failed to determine latest Syncthing version.")) return # Check if latest version is not larger than latest supported if latest_ver != self.version: log.info("Not using latest, unsupported Syncthing version %s; Using %s instead", latest_ver, self.version) # Everything is done, emit version signal self.emit("version", self.version) def download(self): try: suffix = ".%s" % (".".join(self.dll_url.split(".")[-2:]),) if suffix.endswith(".zip") : suffix = ".zip" tmpfile = tempfile.NamedTemporaryFile(mode="wb", prefix="syncthing-package.", suffix=suffix, delete=False) except Exception as e: log.exception(e) self.emit("error", e, _("Failed to create temporary file.")) return f = Gio.File.new_for_uri(self.dll_url) f.read_async(GLib.PRIORITY_DEFAULT, None, self._cb_open_archive, (tmpfile,)) self.emit("download-starting") def _cb_open_archive(self, f, result, data): (tmpfile,) = data stream = None try: stream = f.read_finish(result) del f except Exception as e: log.exception(e) self.emit("error", e, _("Download failed.")) return stream.read_bytes_async(CHUNK_SIZE, GLib.PRIORITY_DEFAULT, None, self._cb_download, (tmpfile, 0)) def _cb_download(self, stream, result, data): (tmpfile, downloaded) = data try: # Get response from async call response = stream.read_bytes_finish(result) if response == None: raise Exception("No data received") # 0b of data read indicates end of file if response.get_size() > 0: # Not EOF. Write buffer to disk and download some more downloaded += response.get_size() tmpfile.write(response.get_data()) stream.read_bytes_async(CHUNK_SIZE, GLib.PRIORITY_DEFAULT, None, self._cb_download, (tmpfile, downloaded)) self.emit("download-progress", float(downloaded) / float(self.dll_size)) else: # EOF. Re-open tmpfile as tar and prepare to extract # binary self.emit("download-finished") stream.close(None) tmpfile.close() GLib.idle_add(self._open_archive, tmpfile.name) except Exception as e: log.exception(e) self.emit("error", e, _("Download failed.")) return def _open_archive(self, archive_name): try: # Determine archive format archive = None if tarfile.is_tarfile(archive_name): # Open TAR archive = tarfile.open(archive_name, "r", bufsize=CHUNK_SIZE * 2) elif zipfile.is_zipfile(archive_name): # Open ZIP archive = ZipThatPretendsToBeTar(archive_name, "r") else: # Unrecognized format self.emit("error", None, _("Downloaded file is corrupted.")) # Find binary inside for pathname in archive.getnames(): # Strip initial 'syncthing-platform-vXYZ' from path path = pathname.replace("\\", "/").split("/")[1:] if len(path) < 1 : continue filename = path[0] if filename in ("syncthing", "syncthing.exe"): # Last sanity check, then just open files # and start extracting tinfo = archive.getmember(pathname) log.debug("Extracting '%s'..." % (pathname,)) if tinfo.isfile(): compressed = archive.extractfile(pathname) try: os.makedirs(os.path.split(self.target)[0]) except Exception: pass output = open(self.target, "wb") GLib.idle_add(self._extract, (archive, compressed, output, 0, tinfo.size)) return except Exception as e: log.exception(e) self.emit("error", e, _("Failed to determine latest Syncthing version.")) return def _extract(self, data): (archive, compressed, output, extracted, ex_size) = data try: buffer = compressed.read(CHUNK_SIZE) read_size = len(buffer) if read_size == CHUNK_SIZE: # Need some more output.write(buffer) extracted += read_size GLib.idle_add(self._extract, (archive, compressed, output, extracted, ex_size)) self.emit("extraction-progress", float(extracted) / float(ex_size)) else: # End of file # Write rest, if any if read_size > 0: output.write(buffer) # Change file mode to 0755 if hasattr(os, "fchmod"): # ... on Unix os.fchmod(output.fileno(), 0o755) output.close() archive.close() compressed.close() self.emit("extraction-progress", 1.0) self.emit("extraction-finished") except Exception as e: log.exception(e) self.emit("error", e, _("Failed to determine latest Syncthing version.")) return return False @staticmethod def determine_platform(): """ Determines what syncthing package should be downloaded. Returns tuple (suffix, tag), where suffix is file extension and tag platform identification used on syncthing releases page. Returns (None, None) if package cannot be determined. """ suffix, tag = None, None if platform.system().lower().startswith("linux"): if platform.machine() in ("i386", "i586", "i686"): # Not sure, if anything but i686 is actually used suffix, tag = ".x86", "linux-386" elif platform.machine() == "x86_64": # Who in the world calls x86_64 'amd' anyway? suffix, tag = ".x64", "linux-amd64" elif platform.machine().lower() in ("armv5", "armv6", "armv7"): # TODO: This should work, but I don't have any way # to test this right now suffix = platform.machine().lower() tag = "linux-%s" % (suffix,) elif platform.system().lower().startswith("windows"): if platform.machine() == "AMD64": suffix, tag = ".exe", "windows-amd64" else: # I just hope that MS will not release ARM Windows for # next 50 years... suffix, tag = ".exe", "windows-386" for x in ("freebsd", "solaris", "openbsd"): # Syncthing-GTK should work on those as well... if platform.system().lower().startswith(x): if platform.machine() in ("i386", "i586", "i686"): suffix, tag = ".x86", "%s-386" % (x,) elif platform.machine() in ("amd64", "x86_64"): suffix, tag = ".x64", "%s-amd64" % (x,) return (suffix, tag) class ZipThatPretendsToBeTar(zipfile.ZipFile): """ Because ZipFile and TarFile are _almost_ the same -_- """ def __init__(self, filename, mode): zipfile.ZipFile.__init__(self, filename, mode) def getnames(self): """ Return the members as a list of their names. """ return self.namelist() def getmember(self, name): """ Return a TarInfo object for member name. If name can not be found in the archive, KeyError is raised """ return ZipThatPretendsToBeTar.ZipInfo(self, name) def extractfile(self, name): return self.open(name, "r") class ZipInfo: def __init__(self, zipfile, name): info = zipfile.getinfo(name) for x in dir(info): if not (x.startswith("_") or x.endswith("_")): setattr(self, x, getattr(info, x)) self.size = self.file_size def isfile(self, *a): # I don't exactly expect anything but files in ZIP... return True syncthing-gtk-0.9.4.4/syncthing_gtk/timermanager.py000066400000000000000000000031501352162771300223650ustar00rootroot00000000000000#!/usr/bin/env python2 """ Syncthing-GTK - Timer manager Simple abstract class for named, cancelable timers """ from __future__ import unicode_literals from gi.repository import GLib class TimerManager(object): def __init__(self): self._timers = {} def timer(self, name, delay, callback, *data, **kwdata): """ Runs callback after specified number of seconds. Uses GLib.timeout_add_seconds with small wrapping to allow named timers to be canceled by reset() call """ method = GLib.timeout_add_seconds if delay < 1 and delay > 0: method = GLib.timeout_add delay = delay * 1000.0 if name is None: # No wrapping is needed, call GLib directly method(delay, callback, *data, **kwdata) else: if name in self._timers: # Cancel old timer GLib.source_remove(self._timers[name]) # Create new one self._timers[name] = method(delay, self._callback, name, callback, *data, **kwdata) def timer_active(self, name): """ Returns True if named timer is active """ return (name in self._timers) def cancel_timer(self, name): """ Cancels named timer. Returns True on success, False if there is no such timer. """ if name in self._timers: GLib.source_remove(self._timers[name]) del self._timers[name] return True return False def cancel_all(self): """ Cancels all active timers """ for x in self._timers: GLib.source_remove(self._timers[x]) self._timers = {} def _callback(self, name, callback, *data, **kwdata): """ Removes name from list of active timers and calls real callback. """ del self._timers[name] callback(*data, **kwdata) return False syncthing-gtk-0.9.4.4/syncthing_gtk/tools.py000066400000000000000000000375061352162771300210660ustar00rootroot00000000000000#!/usr/bin/env python2 """ Syncthing-GTK - tools Various stuff that I don't care to fit anywhere else. """ from __future__ import unicode_literals from base64 import b32decode from datetime import tzinfo, timedelta from subprocess import Popen from dateutil import parser import re, os, sys, random, string, platform, logging, shlex, gettext, __main__ log = logging.getLogger("tools.py") IS_WINDOWS = sys.platform in ('win32', 'win64') IS_XP = IS_WINDOWS and platform.release() in ("XP", "2000", "2003") IS_GNOME, IS_UNITY, IS_KDE, IS_CINNAMON = [False] * 4 IS_XFCE, IS_MATE, IS_I3, IS_LXQT = [False] * 4 if "XDG_CURRENT_DESKTOP" in os.environ: desktops = os.environ["XDG_CURRENT_DESKTOP"].split(":") IS_UNITY = ("Unity" in desktops) if not IS_UNITY: IS_GNOME = ("GNOME" in desktops) or ("GNOME-Flashback" in desktops) or ("GNOME-Fallback" in desktops) IS_KDE = ("KDE" in desktops) IS_CINNAMON = ("X-Cinnamon" in desktops) IS_MATE = ("MATE" in desktops) IS_XFCE = ("XFCE" in desktops) IS_I3 = ("i3" in desktops) IS_LXQT = ("LXQt" in desktops) if os.environ.get("DESKTOP_SESSION") == "gnome": # Fedora... IS_GNOME = True if os.environ.get("DESKTOP_STARTUP_ID", "").startswith("i3/"): IS_I3 = True LUHN_ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567" # Characters valid in device id VERSION_NUMBER = re.compile(r"^v?([0-9\.]*).*") LOG_FORMAT = "%(levelname)s %(name)-13s %(message)s" GETTEXT_DOMAIN = "syncthing-gtk" # used by "_" function DESKTOP_FILE = """[Desktop Entry] Name=%s Exec=%s Icon=%s Comment=%s X-GNOME-Autostart-enabled=true Hidden=false Type=Application """ portable_mode_enabled = False if IS_WINDOWS: # On Windows, WMI and pywin32 libraries are reqired import wmi, _winreg """ Localization lambdas """ _ = lambda a: _uc(gettext.gettext(a)) _uc = lambda b: b if type(b) == unicode else b.decode("utf-8") def luhn_b32generate(s): """ Returns a check digit for the string s which should be composed of characters from LUHN_ALPHABET """ factor, sum, n = 1, 0, len(LUHN_ALPHABET) for c in s: try: codepoint = LUHN_ALPHABET.index(c) except ValueError: raise ValueError("Digit %s is not valid" % (c,)) addend = factor * codepoint factor = 1 if factor == 2 else 2 addend = (addend // n) + (addend % n) sum += addend remainder = sum % n checkcodepoint = (n - remainder) % n return LUHN_ALPHABET[checkcodepoint] def check_device_id(nid): """ Returns True if device id is valid """ # Based on nodeid.go nid = nid.strip("== \t").upper() \ .replace("0", "O") \ .replace("1", "I") \ .replace("8", "B") \ .replace("-", "") \ .replace(" ", "") if len(nid) == 56: for i in xrange(0, 4): p = nid[i*14:((i+1)*14)-1] try: l = luhn_b32generate(p) except Exception as e: log.exception(e) return False g = "%s%s" % (p, l) if g != nid[i*14:(i+1)*14]: return False return True elif len(nid) == 52: try: b32decode("%s====" % (nid,)) return True except Exception: return False else: # Wrong length return False def sizeof_fmt(size): for x in ('B','kB','MB','GB','TB'): if size < 1024.0: if x in ('B', 'kB'): return "%3.0f %s" % (size, x) return "%3.2f %s" % (size, x) size /= 1024.0 def ints(s): """ Works as int(), but returns 0 for None, False and empty string """ if s is None : return 0 if s == False: return 0 if hasattr(s, "__len__"): if len(s) == 0 : return 0 return int(s) def get_header(headers, key): """ Returns value of single header parsed from headers array or None if header is not found """ if not key.endswith(":"): key = "%s:" % (key,) for h in headers: if h.startswith(key): return h.split(" ", 1)[-1] return None class Timezone(tzinfo): def __init__(self, hours, minutes): if hours >= 0: self.name = "+%s:%s" % (hours, minutes) else: self.name = "+%s:%s" % (hours, minutes) self.delta = timedelta(minutes=minutes, hours=hours) def __str__(self): return "" % (self.name,) def utcoffset(self, dt): return self.delta def tzname(self, dt): return self.name def dst(self, dt): return timedelta(0) def parsetime(m): """ Parses time received from Syncthing daemon """ try: return parser.parse(m) except ValueError: raise ValueError("Failed to parse '%s' as time" % m) def parse_config_arguments(lst): """ Parses list of arguments and variables set in configuration Returns tuple of (variables_dict, prefix_arguments, arguments_list) """ vars, preargs, args = {}, [], [] split = shlex.split(lst, False, False) args_target = preargs if "!" in split else args for i in split: if "=" in i and not i.startswith("-"): # Environment variable k, v = i.split("=", 1) vars[k] = v continue elif i == "!": args_target = args elif len(i.strip()) > 0: # Argument args_target.append(i.strip()) return vars, preargs, args def delta_to_string(d): """ Returns approximate, human-readable and potentially localized string from specified timedelta object """ # Negative time, 'some time ago' if d.days == -1: d = - d if d.seconds > 3600: return _("~%s hours ago") % (int(d.seconds / 3600),) if d.seconds > 60: return _("%s minutes ago") % (int(d.seconds / 60),) if d.seconds > 5: return _("%s seconds ago") % (d.seconds,) return _("just now") if d.days < -1: return _("%s days ago") % (-d.days,) # Positive time, 'in XY minutes' if d.days > 0: return _("in %s days") % (d.days,) if d.seconds > 3600: return _("~%s hours from now") % (int(d.seconds / 3600),) if d.seconds > 60: return _("%s minutes from now") % (int(d.seconds / 60),) if d.seconds > 5: return _("%s seconds from now") % (d.seconds,) return _("in a moment") def init_logging(): """ Initializes logging, sets custom logging format and adds one logging level with name and method to call. """ logging.basicConfig(format=LOG_FORMAT) # Rename levels logging.addLevelName(10, "D") # Debug logging.addLevelName(20, "I") # Info logging.addLevelName(30, "W") # Warning logging.addLevelName(40, "E") # Error # Create additional, "verbose" level logging.addLevelName(15, "V") # Verbose # Add 'logging.verbose' method def verbose(self, msg, *args, **kwargs): return self.log(15, msg, *args, **kwargs) logging.Logger.verbose = verbose # Wrap Logger._log in something that can handle utf-8 exceptions old_log = logging.Logger._log def _log(self, level, msg, args, exc_info=None, extra=None): args = tuple([ (c if type(c) is unicode else str(c).decode("utf-8")) for c in args ]) msg = msg if type(msg) is unicode else str(msg).decode("utf-8") old_log(self, level, msg, args, exc_info, extra) logging.Logger._log = _log def make_portable(): """ Set's IS_PORTABLE flag to True. Has to be called before everything else. """ global portable_mode_enabled log.warning("Portable mode enabled") portable_mode_enabled = True def is_portable(): """ Returns True after make_portable() is called. """ global portable_mode_enabled return portable_mode_enabled _localedir = None def init_locale(localedir=None): """ Initializes gettext-related stuff """ global _localedir _localedir = localedir gettext.bindtextdomain(GETTEXT_DOMAIN, localedir) gettext.bind_textdomain_codeset(GETTEXT_DOMAIN, "utf-8") gettext.textdomain(GETTEXT_DOMAIN) def get_locale_dir(): """ Returns localedir passed to init_locale or None """ global _localedir return _localedir def set_logging_level(verbose, debug): """ Sets logging level """ logger = logging.getLogger() if debug: # everything logger.setLevel(0) elif verbose: # everything but debug logger.setLevel(11) else: # INFO and worse logger.setLevel(20) if (debug or verbose) and IS_WINDOWS: # Windows executable has no console to output to, so output is # written to logfile as well import tempfile logfile = tempfile.NamedTemporaryFile(delete=False, prefix="Syncthing-GTK-", suffix=".log") logfile.close() h = logging.FileHandler(logfile.name) h.setFormatter(logging.Formatter(LOG_FORMAT)) logging.getLogger().addHandler(h) def check_daemon_running(): """ Returns True if syncthing daemon is running """ if not IS_WINDOWS: # Unix if not "USER" in os.environ: # Unlikely return False # signal 0 doesn't kill anything, but killall exits with 1 if # named process is not found p = Popen(["killall", "-u", os.environ["USER"], "-q", "-s", "0", "syncthing"]) p.communicate() return p.returncode == 0 else: # Windows if not "USERNAME" in os.environ: # Much more likely os.environ["USERNAME"] = "" proclist = wmi.WMI().ExecQuery('select * from Win32_Process where Name LIKE "syncthing.exe"') try: proclist = list(proclist) for p in proclist: p_user = p.ExecMethod_('GetOwner').Properties_('User').Value if p_user == os.environ["USERNAME"]: return True except Exception: # Can't get or parse list, something is horribly broken here return False return False def parse_version(ver): """ Parses ver as version string, returning integer. Only first 6 components are recognized; If version string uses less than 6 components, it's zero-paded from right (1.0 -> 1.0.0.0.0.0). Maximum recognized value for component is 255. If version string includes non-numeric character, part of string starting with this character is discarded. If version string starts with 'v', 'v' is ignored. """ comps = VERSION_NUMBER.match(ver).group(1).split(".") if comps[0] == "": if ver == "unknown-dev": # Exception for non-tagged releases. # See https://github.com/syncthing/syncthing-gtk/issues/133 return parse_version("v9999.99") # Not even single number in version string return 0 while len(comps) < 6: comps.append("0") res = 0 for i in xrange(0, 6): res += min(255, int(comps[i])) << ((5-i) * 8) return res def compare_version(a, b): """ Parses a and b as version strings. Returns True, if a >= b Returns False, if b > a """ return parse_version(a) >= parse_version(b) def get_config_dir(): """ Returns ~/.config, %APPDATA% or whatever has user set as configuration directory. """ if is_portable(): return os.environ["XDG_CONFIG_HOME"] if IS_WINDOWS and not IS_XP: try: from . import windows return windows.get_unicode_home() except Exception: pass from gi.repository import GLib confdir = GLib.get_user_config_dir() if confdir is None or IS_XP: if IS_WINDOWS: if "LOCALAPPDATA" in os.environ: # W7 and later confdir = os.environ["LOCALAPPDATA"] elif "APPDATA" in os.environ: # XP from ctypes import cdll os_encoding = 'cp' + str(cdll.kernel32.GetACP()) confdir = os.environ["APPDATA"].decode(os_encoding) else: # 95? :D confdir = os.path.expanduser("~/.config") else: # Linux confdir = os.path.expanduser("~/.config") return confdir get_install_path = None if IS_WINDOWS: def _get_install_path(): """ Returns installation path from registry. Available only on Windows """ if is_portable(): return os.environ["XDG_CONFIG_HOME"] try: key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, "Software\\SyncthingGTK") path, keytype = _winreg.QueryValueEx(key, "InstallPath") path = str(path) _winreg.CloseKey(key) return path except WindowsError: # This is really shouldn't happen. Use executable path. os.path.dirname(sys.executable) get_install_path = _get_install_path def get_executable(): """ Returns filename of executable that was used to launch program. """ if IS_WINDOWS: return os.path.join(get_install_path(), "syncthing-gtk.exe") else: executable = __main__.__file__.decode("utf-8") if not os.path.isabs(executable): cwd = os.getcwd().decode("utf-8") executable = os.path.normpath(os.path.join(cwd, executable)) if executable.endswith(".py"): executable = "/usr/bin/env python2 %s" % (executable,) return executable def is_ran_on_startup(program_name): """ Returns True if specified program is set to be ran on startup, either by XDG autostart or by windows registry. Only name (desktop filename or registry key) is checked. """ if IS_WINDOWS: # Check if there is value for application in ...\Run try: key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run") trash, keytype = _winreg.QueryValueEx(key, program_name) _winreg.CloseKey(key) return keytype in (_winreg.REG_SZ, _winreg.REG_EXPAND_SZ, _winreg.REG_MULTI_SZ) except WindowsError: # Key not found return False else: # Check if there application.desktop file exists desktopfile = os.path.join(get_config_dir(), "autostart", "%s.desktop" % (program_name,)) if not os.path.exists(desktopfile): return False # Check if desktop file is not marked as hidden # (stupid way, but should work) is_entry = False with open(desktopfile, "r") as f: for line in f.readlines(): line = line.strip(" \r\t\n").lower() if line == "[desktop entry]": is_entry = True continue if "=" in line: key, value = line.split("=", 1) if key.strip(" ") == "hidden": if value.strip(" ") == "true": # Desktop file is 'hidden', i.e. disabled return False # File is present and not hidden - autostart is enabled return is_entry def set_run_on_startup(enabled, program_name, executable, icon="", description=""): """ Sets or unsets program to be ran on startup, either by XDG autostart or by windows registry. 'Description' parameter is ignored on Windows. Returns True on success. """ if is_ran_on_startup(program_name) == enabled: # Don't do anything if value is already set return if IS_WINDOWS: # Create/delete value for application in ...\Run key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, _winreg.KEY_ALL_ACCESS) if enabled: _winreg.SetValueEx(key, program_name, 0, _winreg.REG_SZ, '"%s"' % (executable,)) else: _winreg.DeleteValue(key, program_name) _winreg.CloseKey(key) else: # Create/delete application.desktop with provided values, # removing any hidding parameters desktopfile = os.path.join(get_config_dir(), "autostart", "%s.desktop" % (program_name,)) if enabled: try: os.makedirs(os.path.join(get_config_dir(), "autostart"), mode=0700) except Exception: # Already exists pass try: with open(desktopfile, "w") as f: desktop_contents = DESKTOP_FILE % (program_name, executable, icon, description) f.write(desktop_contents.encode('utf-8')) except Exception as e: # IO errors or out of disk space... Not really # expected, but may happen log.warning("Failed to create autostart entry: %s", e) return False else: try: if os.path.exists(desktopfile): os.unlink(desktopfile) except Exception as e: # IO or access error log.warning("Failed to remove autostart entry: %s", e) return False return True def can_upgrade_binary(binary_path): """ Returns True if binary seems to be writable and placed in writable directory. Result may be wrong on Windows, but it's still more accurate that os.access, that responds with complete fabulation -- https://mail.python.org/pipermail/python-list/2011-May/604395.html """ if IS_WINDOWS: # Try to open file in same directory. It's not good idea trying # to open very same file as Windows throws IOError if file is # already open somewhere else (i.e. it's binary that is running) try: path = binary_path + ".new" if os.path.exists(path): f = open(path, "r+b") f.close() else: f = open(path, "wb") f.close() os.unlink(path) # return Maybe return True except Exception as e: log.exception(e) return False else: # Life is just simpler on Unix if not os.access(binary_path, os.W_OK): return False path = os.path.split(binary_path)[0] if not os.access(path, os.W_OK): return False return True def generate_folder_id(): """ Returns new, randomly generated folder ID in a1bc2-x9y7z format """ return "-".join(( ("".join(random.choice(string.ascii_lowercase + string.digits) for _ in range(5))) for _ in range(2) )) syncthing-gtk-0.9.4.4/syncthing_gtk/uibuilder.py000066400000000000000000000153521352162771300217050ustar00rootroot00000000000000#!/usr/bin/env python2 """ Syncthing-GTK - tools Wrapper around GTKBuilder. Allows using conditional () tags in glade files. Usage: - Crete instance - Enable conditions (enable_condition call) - Call add_from_file or add_from_string method - Continue as usual """ from __future__ import unicode_literals from gi.repository import Gtk from xml.dom import minidom from .tools import GETTEXT_DOMAIN, IS_WINDOWS from syncthing_gtk.tools import get_locale_dir from syncthing_gtk.tools import _ # gettext function import logging log = logging.getLogger("UIBuilder") class UIBuilder(Gtk.Builder): def __init__(self): Gtk.Builder.__init__(self) self.set_translation_domain(GETTEXT_DOMAIN) self.conditions = set([]) self.icon_paths = [] self.xml = None def add_from_file(self, filename): """ Builds UI from file """ log.debug("Loading glade file %s", filename) if len(self.conditions) == 0 and not IS_WINDOWS and get_locale_dir() is None: # There is no need to do any magic in this case; Just use # Gtk.Builder directly Gtk.Builder.add_from_file(self, filename) else: with open(filename, "r") as f: self.add_from_string(f.read()) def add_from_string(self, string): """ Builds UI from string """ self.xml = minidom.parseString(string) self._build() def add_from_resource(self, *a): raise RuntimeError("add_from_resource is not supported") def enable_condition(self, *conds): """ Enables condition. Conditions are case-insensitive """ for c in conds: log.debug("Enabled: %s", c) self.conditions.add(c) def disable_condition(self, *conds): """ Disables condition. Conditions are case-insensitive """ for c in conds: log.debug("Disabled: %s", c) self.conditions.remove(c) def condition_met(self, cond): """ Returns True if condition is met. Empty condition is True. Spaces at begining or end of expressions are stripped. Supports simple |, & and ! operators, but no parenthesis. (I just hope I'd never have to use them) """ if "|" in cond: for sub in cond.split("|", 1): if self.condition_met(sub): return True return False if "&" in cond: for sub in cond.split("&", 1): if not self.condition_met(sub): return False return True if cond.strip().startswith("!"): return not self.condition_met(cond.strip()[1:]) return cond.strip() in self.conditions def replace_icon_path(self, prefix, replace_with): """ All path replaceaments defined using this method are applied by _build method on anything that remotely resembles icon path. """ if not prefix.endswith("/"): prefix = "%s/" % (prefix,) if not replace_with.endswith("/"): replace_with = "%s/" % (replace_with,) self.icon_paths.append((prefix, replace_with)) def _build(self): """ Fun part starts here. Recursively walks through entire DOM tree, removes all tags replacing them with child nodes if when condition is met and fixes icon paths, if required. """ log.debug("Enabled conditions: %s", self.conditions) self._replace_icon_paths(self.xml.documentElement) self._find_conditions(self.xml.documentElement) if IS_WINDOWS or get_locale_dir() is not None: self._find_translatables() # Now this will convert parsed DOM tree back to XML and fed it # to Gtk.Builder XML parser. # God probably kills kitten every time when method is called... Gtk.Builder.add_from_string(self, self.xml.toxml("utf-8")) def _find_translatables(self, node=None): """ Fuck GTK devs. With cacti. https://bugzilla.gnome.org/show_bug.cgi?id=574520 """ if node is None: node = self.xml.documentElement for child in node.childNodes: if child.nodeType == child.ELEMENT_NODE: if child.tagName.lower() in ("property", "col"): if child.getAttribute("translatable") == "yes": self._translate(child) else: self._find_translatables(child) def _translate(self, node): for child in node.childNodes: if child.nodeType == child.TEXT_NODE: child.nodeValue = _(child.nodeValue) def _replace_icon_paths(self, node): """ Recursive part for _build - icon paths """ for child in node.childNodes: if child.nodeType == child.ELEMENT_NODE: self._replace_icon_paths(child) if child.tagName.lower() == "property": if child.getAttribute("name") == "pixbuf": # GtkImage, pixbuf path self._check_icon_path(child) elif child.getAttribute("name") == "icon": # window or dialog, icon path self._check_icon_path(child) def _find_conditions(self, node): """ Recursive part for _build - tags """ for child in node.childNodes: if child.nodeType == child.ELEMENT_NODE: self._find_conditions(child) if child.tagName.lower() == "if": self._solve_if_element(child) elif child.getAttribute("if") != "": condition = child.getAttribute("if") if not self.condition_met(condition): log.debug("Removed '%s' by attribute: %s", child.tagName, condition) node.removeChild(child) else: child.removeAttribute("if") def _solve_if_element(self, element): """ Reads "condition" attribute and decides if condition is met Conditions are case-insensitive """ condition = element.getAttribute("condition").lower().strip() if self.condition_met(condition): # Merge child nodes in place of this IF element # Remove ELSE elements, if any log.debug("Allowed node %s", condition) for elseem in getElementsByTagNameCI(element, "else"): element.removeChild(elseem) merge_with_parent(element, element) else: # Remove this element, but merge ELSE elemnets, if any log.debug("Removed node %s", condition) for elseem in getElementsByTagNameCI(element, "else"): merge_with_parent(elseem, element) element.parentNode.removeChild(element) def _check_icon_path(self, element): def replace(path): """ If specified path begins with one of replaceament prefixes, returns path with modified prefix. """ for prefix, replace_with in self.icon_paths: if path.startswith(prefix): return "%s%s" % (replace_with, path[len(prefix):]) return path for n in element.childNodes: if n.nodeType == n.TEXT_NODE: n.data = replace(n.data) return def getElementsByTagNameCI(node, tagname): """ Returns all elements with matching tag; Compares in case-insensitive way. """ tagname = tagname.lower() return [ child for child in node.childNodes if (child.nodeType == child.ELEMENT_NODE and child.tagName.lower() == tagname) ] def merge_with_parent(element, insert_before): """ Merges child nodes with parent node """ for child in element.childNodes: if child.nodeType == child.ELEMENT_NODE: element.removeChild(child) insert_before.parentNode.appendChild(child) insert_before.parentNode.insertBefore(child, insert_before) element.parentNode.removeChild(element) syncthing-gtk-0.9.4.4/syncthing_gtk/uisettingsdialog.py000066400000000000000000000273641352162771300233050ustar00rootroot00000000000000#!/usr/bin/env python2 """ Syncthing-GTK - DaemonSettingsDialog Universal dialog handler for all Syncthing settings and editing """ from __future__ import unicode_literals from gi.repository import Gtk from syncthing_gtk.tools import ( IS_UNITY, IS_GNOME, IS_WINDOWS, set_run_on_startup, is_ran_on_startup, get_config_dir, get_executable ) from syncthing_gtk.notifications import Notifications, HAS_DESKTOP_NOTIFY from syncthing_gtk.editordialog import EditorDialog from syncthing_gtk.tools import _ # gettext function from syncthing_gtk.configuration import LONG_AGO try: from syncthing_gtk.stdownloader import StDownloader except ImportError: StDownloader = None import os, logging log = logging.getLogger("UISettingsDialog") VALUES = [ "vautostart_daemon", "vautokill_daemon", "vminimize_on_start", "vautostart", "vuse_old_header", "vicons_in_menu", "vforce_dark_theme", "vdaemon_priority", "vfolder_as_path", "vnotification_for_update", "vnotification_for_folder", "vnotification_for_error", "vst_autoupdate", "vsyncthing_binary", "vsyncthing_arguments", "vmax_cpus", "vicon_theme", "vlanguage" ] # Values for filemanager integration. Key is ID of checkbox widget FM_DATA = { "fmcb_nemo" : ( "nemo/extensions-3.0/libnemo-python.so", # python plugin location, relative to /usr/lib "Nemo python bindings", # name or description of required package "syncthing-plugin-nemo", # plugin script filename, without extension "nemo-python/extensions", # script folder, relative to XDG_DATA_HOME "Nemo" # name ), "fmcb_nautilus" : ( "nautilus/extensions-3.0/libnautilus-python.so", "Nautilus python bindings", "syncthing-plugin-nautilus", "nautilus-python/extensions", "Nautilus" ), "fmcb_caja" : ( "caja/extensions-2.0/libcaja-python.so", "Caja python bindings", "syncthing-plugin-caja", "caja-python/extensions", "Caja" ) } class UISettingsDialog(EditorDialog): SETTING_NEEDS_RESTART = [ "vuse_old_header", "vforce_dark_theme", "vicons_in_menu", "vicon_theme", "vlanguage" ] def __init__(self, app): EditorDialog.__init__(self, app, "ui-settings.glade", _("UI Settings")) self.app = app def run(self): return self["dialog"].run() def cb_btBrowse_clicked(self, *a): """ Display file browser dialog to browse for syncthing binary """ browse_for_binary(self["editor"], self, "vsyncthing_binary") def cb_vmax_cpus_value_changed(self, sb): if sb.get_adjustment().get_value() == 0: sb.set_text(_("Unlimited")) #@Overrides def load_data(self): # Don't load data from syncthing daemon, it knows nothing... copy = { k : self.app.config[k] for k in self.app.config } if IS_UNITY or IS_GNOME: self["vuse_old_header"].set_visible(False) self["vuse_old_header"].set_no_show_all(True) self["vicons_in_menu"].set_visible(False) self["vicons_in_menu"].set_no_show_all(True) if IS_GNOME: self["vautostart"].set_visible(False) self["vautostart"].set_no_show_all(True) if not HAS_DESKTOP_NOTIFY: # Disable notifications settings if required # library is not available self["lblNotifications"].set_sensitive(False) self["vnotification_for_update"].set_sensitive(False) self["vnotification_for_folder"].set_sensitive(False) self["vnotification_for_error"].set_sensitive(False) if IS_WINDOWS: # Leave daemon running causes weird bugs on Windows, # so only one option is enabled there self["rbOnExitLeave"].set_sensitive(False) self["rbOnExitAsk"].set_sensitive(False) self["rbOnExitTerminate"].set_active(True) self["vforce_dark_theme"].set_visible(True) self["lbl_vlanguage"].set_visible(True) self["vlanguage"].set_visible(True) # Check for filemanager python bindings current state of plugins status = [] for widget_id in FM_DATA: so_file, package, plugin, location, name = FM_DATA[widget_id] if not get_fm_source_path(plugin) is None: if library_exists(so_file): self[widget_id].set_sensitive(True) self[widget_id].set_active( os.path.exists(get_fm_target_path(plugin, location)) ) else: log.warning("Cannot find %s required to support %s", so_file, name) status.append(_("Install %(package)s package to enable %(feature)s support") % { 'package' : package, 'feature' : name }) else: log.warning("Cannot find %s.py required to support %s", plugin, name) self["fmLblIntegrationStatus"].set_text("\n".join(status)) if StDownloader is None: for name in ("vst_autoupdate", "lblAutoupdate", "lblsyncthing_binary", "lblsyncthing_binary2", "vsyncthing_binary", "btBrowse"): self[name].set_visible(False) self.cb_data_loaded(copy) self.cb_check_value() #@Overrides def display_value(self, key, w): if key == "vautostart_daemon": value = self.get_value(key[1:]) if value == 0: self["rbOnStartWait"].set_active(True) elif value == 1: self["rbOnStartRun"].set_active(True) else: self["rbOnStartAsk"].set_active(True) elif key == "vautokill_daemon": value = self.get_value(key[1:]) if value == 1: self["rbOnExitTerminate"].set_active(True) elif value == 0: self["rbOnExitLeave"].set_active(True) else: self["rbOnExitAsk"].set_active(True) else: return EditorDialog.display_value(self, key, w) #@Overrides def store_value(self, key, w): if key == "vautostart_daemon": if self["rbOnStartWait"].get_active() : self.set_value(key[1:], 0) elif self["rbOnStartRun"].get_active() : self.set_value(key[1:], 1) else: return self.set_value(key[1:], 2) # vOnStartAsk elif key == "vautokill_daemon": if self["rbOnExitTerminate"].get_active() : return self.set_value(key[1:], 1) elif self["rbOnExitLeave"].get_active() : return self.set_value(key[1:], 0) else: return self.set_value(key[1:], 2) # vOnExitAsk elif key == "vst_autoupdate": # Reset updatecheck timer when autoupdate is turned on if self["vst_autoupdate"].get_active(): self.values["last_updatecheck"] = LONG_AGO return EditorDialog.store_value(self, key, w) else: return EditorDialog.store_value(self, key, w) #@Overrides def set_value(self, key, value): if key == "autostart": set_run_on_startup(value, "Syncthing-GTK", get_executable(), "/usr/share/syncthing-gtk/icons/st-logo-128.png", "GUI for Syncthing") elif key == "daemon_priority": return EditorDialog.set_value(self, key, int(value)) else: return EditorDialog.set_value(self, key, value) #@Overrides def get_value(self, key): if key == "autostart": return is_ran_on_startup("Syncthing-GTK") else: return EditorDialog.get_value(self, key) #@Overrides def on_data_loaded(self): self.values = self.config self.checks = { "vsyncthing_binary" : lambda p : os.path.isfile(p) and os.access(p, os.X_OK) } return self.display_values(VALUES) #@Overrides def update_special_widgets(self, *a): pass #@Overrides def on_save_requested(self): self.store_values(VALUES) # Save data to configuration file for k in self.values: self.app.config[k] = self.values[k] # Create / delete fm integration scripts for widget_id in FM_DATA: so_file, package, plugin, location, name = FM_DATA[widget_id] if self[widget_id].get_sensitive() and self[widget_id].get_active(): # Should be enabled. Check if script is in place and create it if not source = get_fm_source_path(plugin) target = get_fm_target_path(plugin, location) if not source is None and not os.path.exists(target): try: # Create directory first os.makedirs(os.path.dirname(target)) except Exception as e: # Ignore "file already exists" error pass try: if is_file_or_symlink(target): os.unlink(target) os.symlink(source, target) log.info("Created symlink '%s' -> '%s'", source, target) except Exception as e: log.error("Failed to symlink '%s' -> '%s'", source, target) log.error(e) else: # Should be disabled. Remove redundant scripts for extension in ("py", "pyc", "pyo"): target = get_fm_target_path(plugin, location, extension) if is_file_or_symlink(target): try: os.unlink(target) log.info("Removed '%s'", target) except Exception as e: log.error("Failed to remove '%s'", target) log.error(e) # Report work done self.syncthing_cb_post_config() #@Overrides def on_saved(self): self.close() # Recreate Notifications object if needed if HAS_DESKTOP_NOTIFY: if not self.app.notifications is None: self.app.notifications.kill() self.app.notifications = None if self.app.config["notification_for_update"] or self.app.config["notification_for_error"]: self.app.notifications = Notifications(self.app, self.app.daemon) # Restart or cancel updatecheck self.app.check_for_upgrade() # Update directory boxes to reflect change in 'folder_as_path' for rid in self.app.folders: box = self.app.folders[rid] title = box["path"] if self.app.config["folder_as_path"] else rid box.set_visible("id", self.app.config["folder_as_path"]) box.set_title(title) def library_exists(name): """ Checks if there is specified so file installed in one of known prefixes """ PREFIXES = [ "/usr/lib64", # Fedora "/usr/lib", "/usr/local/lib/", "/usr/x86_64-pc-linux-gnu/lib/", "/usr/i686-pc-linux-gnu/lib/", "/usr/lib/x86_64-linux-gnu/", "/usr/lib/i386-linux-gnu/", ] for prefix in PREFIXES: if os.path.exists(os.path.join(prefix, name)): return True return False def get_fm_target_path(plugin, location, extension="py"): """ Returns full path to plugin file in filemanager plugins directory """ datahome = os.path.expanduser("~/.local/share") if "XDG_DATA_HOME" in os.environ: datahome = os.environ["XDG_DATA_HOME"] return os.path.join(datahome, location, "%s.%s" % (plugin, extension)) def get_fm_source_path(plugin): """ Returns path to location where plugin file is installed """ filename = "%s.py" % (plugin,) paths = ( # Relative path used while developing or when running # ST-GTK without installation "./scripts/", # Default installation path "/usr/share/syncthing-gtk", # Not-so default installation path "/usr/local/share/syncthing-gtk", ) for path in paths: fn = os.path.abspath(os.path.join(path, filename)) if os.path.exists(fn): return fn return None def is_file_or_symlink(path): """ Returns True if specified file exists, even as broken symlink. (os.path.exists() returns False for broken symlinks) """ if os.path.exists(path): return True try: os.readlink(path) return True except: pass return False def browse_for_binary(parent_window, settings_dialog, value): """ Display file browser dialog to browse for syncthing binary. Used here and by FindDaemonDialog as well. """ # Prepare dialog d = Gtk.FileChooserDialog( _("Browse for Syncthing binary"), parent_window, Gtk.FileChooserAction.OPEN, (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, Gtk.STOCK_OK, Gtk.ResponseType.OK)) # Prepare filter f = Gtk.FileFilter() if IS_WINDOWS: f.set_name("Executables") f.add_pattern("*.exe") else: f.set_name("Binaries") f.add_mime_type("application/x-executable") f.add_mime_type("application/x-shellscript") d.add_filter(f) # Set default path confdir = os.path.join(get_config_dir(), "syncthing") prevvalue = str(settings_dialog[value].get_text()).strip() if prevvalue and os.path.exists(os.path.split(prevvalue)[0]): d.set_current_folder(os.path.split(prevvalue)[0]) elif os.path.exists(confdir): d.set_current_folder(confdir) elif IS_WINDOWS: if "CommonProgramFiles" in os.environ: d.set_current_folder(os.environ["CommonProgramFiles"]) elif os.path.exists("C:\\Program Files"): d.set_current_folder("C:\\Program Files") # Else nothing, just start whatever you like else: d.set_current_folder("/usr/bin") # Get response if d.run() == Gtk.ResponseType.OK: settings_dialog[value].set_text(d.get_filename()) d.destroy() syncthing-gtk-0.9.4.4/syncthing_gtk/windows.py000066400000000000000000000147561352162771300214220ustar00rootroot00000000000000#!/usr/bin/env python2 """ Syncthing-GTK - Windows related stuff. """ from __future__ import unicode_literals from syncthing_gtk.tools import get_config_dir from gi.repository import GLib, Gtk, Gdk import os, sys, logging, codecs, msvcrt, win32pipe, win32api, _winreg import win32process from win32com.shell import shell, shellcon log = logging.getLogger("windows.py") SM_SHUTTINGDOWN = 0x2000 def fix_localized_system_error_messages(): """ Python has trouble decoding messages like 'S?bor, ktor? u? existuje, sa ned? vytvori:' as they are encoded in some crazy, Windows-specific, locale-specific, day-in-week-specific encoding. This simply eats exceptions caused by 'ascii' codec and replaces non-decodable characters by question mark. """ def handle_error(error): return (u'?', error.end) codecs.register_error("strict", handle_error) def enable_localization(): """ Updates environment variables with windows locale. """ loc = "en" try: import locale loc = locale.getdefaultlocale()[0] except Exception: pass if not 'LANGUAGE' in os.environ: os.environ['LANGUAGE'] = loc def is_shutting_down(): """ Returns True if Windows initiated shutdown process """ return (win32api.GetSystemMetrics(SM_SHUTTINGDOWN) != 0) def nice_to_priority_class(nice): """ Converts nice value to windows priority class """ if nice <= -20: # PRIORITY_HIGHEST return win32process.HIGH_PRIORITY_CLASS, if nice <= -10: # PRIORITY_HIGH return win32process.ABOVE_NORMAL_PRIORITY_CLASS if nice >= 10: # PRIORITY_LOW return win32process.BELOW_NORMAL_PRIORITY_CLASS if nice >= 19: # PRIORITY_LOWEST return win32process.IDLE_PRIORITY_CLASS # PRIORITY_NORMAL return win32process.NORMAL_PRIORITY_CLASS def override_menu_borders(): """ Loads custom CSS to create borders around popup menus """ style_provider = Gtk.CssProvider() style_provider.load_from_data(b""" .menu { border-image: linear-gradient(to top, alpha(@borders, 0.80), alpha(@borders, 0.60) 33%, alpha(@borders, 0.50) 66%, alpha(@borders, 0.15)) 2 2 2 2/ 2px 2px 2px 2px; } .menubar .menu { border-image: linear-gradient(to top, alpha(@borders, 0.80), alpha(@borders, 0.60) 33%, alpha(@borders, 0.50) 66%, transparent 99%) 2 2 2 2/ 2px 2px 2px 2px; } """) Gtk.StyleContext.add_provider_for_screen( Gdk.Screen.get_default(), style_provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION ) def get_unicode_home(): return shell.SHGetFolderPath(0, shellcon.CSIDL_LOCAL_APPDATA, None, 0) class WinPopenReader: """ Reads from PIPE using GLib timers or idle_add. Emulates part of UnixInputStream, but its in no way even close to complete emulation. This is only way that I found so far to have pipe and hidden console window on Windows. """ def __init__(self, pipe): # Prepare stuff self._pipe = pipe self._waits_for_read = None self._buffer = "" self._buffer_size = 32 self._closed = False self._osfhandle = msvcrt.get_osfhandle(self._pipe.fileno()) # Start reading GLib.idle_add(self._peek) def _peek(self): if self._closed: return False # Check if there is anything to read and read if available (read, nAvail, nMessage) = win32pipe.PeekNamedPipe(self._osfhandle, 0) if nAvail >= self._buffer_size: data = self._pipe.read(self._buffer_size) self._buffer += data # If there is read_async callback and buffer has some data, # send them right away if not self._waits_for_read is None and len(self._buffer) > 0: r = WinPopenReader.Results(self._buffer) self._buffer = "" callback, data = self._waits_for_read self._waits_for_read = None callback(self, r, *data) GLib.idle_add(self._peek) return False GLib.timeout_add_seconds(1, self._peek) return False def read_bytes_async(self, size, trash, cancel, callback, data=()): if self._waits_for_read != None: raise Exception("Already reading") self._buffer_size = size self._waits_for_read = (callback, data) def read_bytes_finish(self, results): return results def close(self): self._closed = True class Results: """ Also serves as response object """ def __init__(self, data): self._data = data def get_data(self): return self._data def WinConfiguration(): from syncthing_gtk.configuration import _Configuration from syncthing_gtk.configuration import serializer class _WinConfiguration(_Configuration): """ Configuration implementation for Windows - stores values in registry """ #@ Overrides def load(self): self.values = {} r = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, "Software\\SyncthingGTK") for key in _Configuration.REQUIRED_KEYS: tp, trash = _Configuration.REQUIRED_KEYS[key] try: self.values[key] = self._read(r, key, tp) except WindowsError: # Not found pass _winreg.CloseKey(r) #@ Overrides def save(self): r = _winreg.CreateKey(_winreg.HKEY_CURRENT_USER, "Software\\SyncthingGTK") for key in _Configuration.REQUIRED_KEYS: tp, trash = _Configuration.REQUIRED_KEYS[key] value = self.values[key] self._store(r, key, tp, value) _winreg.CloseKey(r) def _store(self, r, name, tp, value): """ Stores value in registry, handling special types """ if tp in (unicode, str): _winreg.SetValueEx(r, name, 0, _winreg.REG_SZ, str(value)) elif tp in (int, bool): value = int(value) if value > 0xFFFF: raise ValueError("Overflow") if value < 0: # This basicaly prevents storing anything >0xFFFF to registry. # Luckily, that shouldn't be needed, largest thing stored as int is 20 value = 0xFFFF + (-value) _winreg.SetValueEx(r, name, 0, _winreg.REG_DWORD, int(value)) elif tp in (list, tuple): if not value is None: # None is default value for window_position _winreg.SetValueEx(r, "%s_size" % (name,), 0, _winreg.REG_DWORD, len(value)) for i in xrange(0, len(value)): self._store(r, "%s_%s" % (name, i), type(value[i]), value[i]) else: _winreg.SetValueEx(r, name, 0, _winreg.REG_SZ, serializer(value)) def _read(self, r, name, tp): """ Reads value from registry, handling special types """ if tp in (list, tuple): size, trash = _winreg.QueryValueEx(r, "%s_size" % (name,)) value = [] for i in xrange(0, size): value.append(self._read(r, "%s_%s" % (name, i), None)) return value else: value, keytype = _winreg.QueryValueEx(r, name) if type(value) == int and value > 0xFFFF: value = - (value - 0xFFFF) return value return _WinConfiguration() syncthing-gtk-0.9.4.4/syncthing_gtk/wizard.py000066400000000000000000000666001352162771300212230ustar00rootroot00000000000000#!/usr/bin/env python2 """ Syncthing-GTK - 1st run wizard Basically runs Syncthing daemon with -generate option and setups some values afterwards. """ from __future__ import unicode_literals from gi.repository import Gtk, GLib, GdkPixbuf from syncthing_gtk.daemonoutputdialog import DaemonOutputDialog from syncthing_gtk.daemonprocess import DaemonProcess from syncthing_gtk.configuration import Configuration from syncthing_gtk.tools import get_config_dir, IS_WINDOWS, is_portable from syncthing_gtk.tools import can_upgrade_binary, compare_version from syncthing_gtk.tools import _ # gettext function try: from syncthing_gtk.stdownloader import StDownloader except ImportError: StDownloader = None import os, socket, random, string, bcrypt import logging, traceback, platform from xml.dom import minidom log = logging.getLogger("Wizard") DEFAULT_PORT = 8080 MAX_PORT = 8100 class Wizard(Gtk.Assistant): def __init__(self, gladepath="/usr/share/syncthing-gtk", iconpath="/usr/share/syncthing-gtk/icons", config=None): # Init Gtk.Assistant.__init__(self) if not config is None: self.config = config else: self.config = Configuration() self.gladepath = gladepath self.iconpath = iconpath self.syncthing_options = {} self.lines = [] # Daemon and wizard output, # maybe for error reports self.finished = False self.connect("prepare", self.prepare_page) # Find syncthing configuration directory self.st_configdir = os.path.join(get_config_dir(), "syncthing") self.st_configfile = os.path.join(get_config_dir(), "syncthing", "config.xml") # Window setup self.set_position(Gtk.WindowPosition.CENTER) self.set_size_request(720, -1) self.set_default_size(720, 300) self.set_deletable(True) if IS_WINDOWS: self.set_icon_list([GdkPixbuf.Pixbuf.new_from_file("icons/32x32/apps/syncthing-gtk.png")]) else: self.set_icon_name("syncthing-gtk") self.set_title("%s %s" % (_("Syncthing-GTK"), _("First run wizard"))) # Add "Quit" button self.quit_button = Gtk.Button.new_from_stock("gtk-quit") self.add_action_widget(self.quit_button) self.quit_button.set_visible(True) self.quit_button.connect("clicked", lambda *a : self.emit("cancel")) # Pages self.add_page(IntroPage(self)) self.add_page(FindDaemonPage()) self.add_page(GenerateKeysPage()) self.add_page(HttpSettingsPage()) self.add_page(SaveSettingsPage()) self.add_page(LastPage()) def add_page(self, page): """ Adds page derived from custom Page class """ index = self.append_page(page) page.parent = self self.set_page_type(page, page.TYPE) self.set_page_title(page, _(page.TITLE) + " ") return index def insert(self, page): """ Inserts new page after currently displayed. """ index = self.get_current_page() index = self.insert_page(page, index + 1) page.parent = self self.set_page_type(page, page.TYPE) self.set_page_title(page, _(page.TITLE) + " ") return index def insert_and_go(self, page): """ Inserts new page after currently displayed and switches to it. """ index = self.insert(page) self.set_current_page(index) return index def only_page(self, page): for r in xrange(1, page): self.remove_page(r) while self.get_n_pages() > 3: self.remove_page(self.get_n_pages() - 2) self.set_current_page(1) def prepare_page(self, another_self, page): """ Called before page is displayed """ self.commit() # Prevents back button from being displayed page.prepare() def find_widget(self, compare_fn, parent=None): """ Recursively searches for widget, returning first one for which compare_fn(widget) returns True """ if parent is None : parent = self for w in parent.get_children(): if compare_fn(w): return w if isinstance(w, Gtk.Container): r = self.find_widget(compare_fn, w) if not r is None: return r return None def output_line(self, line): """ Called for every line that wizard or daemon process outputs """ self.lines.append(line) log.info(line) def error(self, page, title, message, display_bugreport_link): """ Called from pages on error. Removes everything from page and creates error message. """ for c in [] + page.get_children() : page.remove(c) # Title l_title = WrappedLabel("%s" % (title,)) l_title.props.margin_bottom = 15 page.attach(l_title, 0, 0, 2, 1) # Message l_message = WrappedLabel(message) l_message.props.margin_bottom = 15 page.attach(l_message, 0, 1, 2, 1) # Bugreport link if display_bugreport_link: github_link = 'GitHub' l_bugreport = WrappedLabel( _("Please, check error log and fill bug report on %s.") % (github_link,) ) page.attach(l_bugreport, 0, 2, 2, 1) # 'Display error log' button button = Gtk.Button(_("Display error log")) button.props.margin_top = 25 page.attach(button, 1, 3, 2, 1) button.connect("clicked", lambda *a : self.show_output()) page.show_all() return page def show_output(self, *a): """ Displays DaemonOutput window with error messages captured during key generation. """ d = DaemonOutputDialog(self, None) d.show_with_lines(self.lines, self) def is_finished(self): """ Returns True if user finished entire wizard """ return self.finished def run(self, *a): self.show() self.connect('cancel', Gtk.main_quit) self.connect('close', Gtk.main_quit) Gtk.main() class WrappedLabel(Gtk.Label): def __init__(self, markup): Gtk.Label.__init__(self) self.set_justify(Gtk.Justification.LEFT) self.set_line_wrap(True) self.set_markup(markup) self.set_alignment(0, 0.5) # @AbstractClass class Page(Gtk.Grid): # TYPE = # TITLE = def __init__(self, dialog=None): Gtk.Grid.__init__(self) self.dialog = dialog self.parent = None self.init_page() self.show_all() def prepare(self): """ Sets page as complete by default """ self.parent.set_page_complete(self, True) def init_page(self): """ Initialize the page """ raise NotImplementedError() class IntroPage(Page): TYPE = Gtk.AssistantPageType.INTRO TITLE = "Intro" def init_page(self): """ First, intro page. Just static text that explains what's going on """ config_folder = "~/.config/syncthing" config_folder_link = '%s' % ( os.path.expanduser(config_folder), config_folder) next_label = _("Next") try: # Hacky way to determine label on 'Next' button all_buttons = [ b for b in self.dialog.quit_button.get_parent().get_children() if isinstance(b, Gtk.Button) and b is not self.dialog.quit_button ] # order is 'apply, next, back, finish, cancel' next_label = all_buttons[1].get_label().decode("utf-8").replace("_", "") except: pass # TODO: Temporal solution, remove later changed_line = _("Continue this wizard to create a Syncthing configuration file or abort it to exit.") if "%s" in changed_line: changed_line = changed_line % (next_label,) self.attach(WrappedLabel( "" + _("Welcome to Syncthing-GTK first run wizard!") + "" + "\n\n" + _("It looks like you never have used Syncthing.") + " " + _("Initial configuration should be created.") + " " + changed_line + "\n\n" + (_("If you already had Syncthing daemon configured, please, " "exit this wizard and check your %s folder") % config_folder_link ) ), 0, 0, 1, 1) class FindDaemonPage(Page): # Next page, "Download Daemon" is displayed only if needed. # When that happens, it becomes page with longest title and wizard # window changes size to accommodate this change. And i don't like # that. # To prevent this 'window jumping', padding is added here, so # this page is always one with longest name. TITLE = "Find Daemon" TYPE = Gtk.AssistantPageType.PROGRESS def init_page(self): """ Displayed while Syncthing binary is being searched for """ self.label = WrappedLabel( "" + _("Searching for Syncthing daemon.") + "" + "\n\n" + _("Please wait...") ) self.paths = [] self.version_string = "v0.0" self.ignored_version = None self.attach(self.label, 0, 0, 1, 1) def prepare(self): default_path, default_binary = os.path.split( self.parent.config.get_default_value("syncthing_binary")) self.paths = [] if default_path: self.paths += [ default_path ] self.paths += [ "./" ] self.paths += [ os.path.expanduser("~/.local/bin") ] self.paths += [ self.parent.st_configdir ] if is_portable(): self.paths += [ ".\\data" ] if StDownloader is None: self.binaries = ["syncthing"] else: suffix, trash = StDownloader.determine_platform() self.binaries = ["syncthing", "syncthing%s" % (suffix,)] if suffix == "x64": # Allow 32bit binary on 64bit self.binaries += ["syncthing.x86"] if default_binary not in self.binaries: self.binaries = [ default_binary ] + self.binaries if IS_WINDOWS: self.paths += [ "c:/Program Files/syncthing", "c:/Program Files (x86)/syncthing", self.parent.st_configdir ] self.binaries = ("syncthing.exe",) if "PATH" in os.environ: self.paths += os.environ["PATH"].split(":") log.info("Searching for syncthing binary...") GLib.idle_add(self.search) def search(self): """ Called repeatedly through GLib.idle_add, until binary is found or all possible paths are tried. """ try: path, self.paths = self.paths[0], self.paths[1:] except IndexError: # Out of possible paths. Not found if IS_WINDOWS: # On Windows, don't say anything and download Syncthing # directly self.parent.insert_and_go(DownloadSTPage()) return False elif StDownloader is None: # On Linux with updater disabled, generate and # display error page title = _("Syncthing daemon not found.") message = _("Please, use package manager to install the Syncthing package.") page = self.parent.error(self, title, message, False) page.show_all() return False else: # On Linux with updater generate similar display error # and offer download from syncthing_gtk.app import MIN_ST_VERSION target_folder_link = '%s' % ( os.path.expanduser(StDownloader.get_target_folder()), StDownloader.get_target_folder()) dll_link = '' + \ _('download latest binary') + '' message, title = "", None if self.ignored_version == None: # No binary was found title = _("Syncthing daemon not found.") message += _("Please, use package manager to install the Syncthing package " "or %(download_link)s from Syncthing page and save it to your " "%(target)s directory.") % { 'download_link' : dll_link, 'target' : target_folder_link } else: # Binary was found, but it was too old to be ussable title = _("Syncthing daemon is too old.") message += _("Syncthing-GTK needs Syncthing daemon %(min)s or newer, but only %(actual)s were found.") % { 'min' : MIN_ST_VERSION, 'actual' : self.ignored_version } message += "\n" message += _("Please, use package manager to install the Syncthing package " "or %(download_link)s from Syncthing page and save it to your " "%(target)s directory.") % { 'download_link' : dll_link, 'target' : target_folder_link } message += "\n\n" message += _("Alternatively, Syncthing-GTK can download Syncthing binary") + " " message += _("to %s and keep it up-to-date, but this option is meant as") % \ (target_folder_link,) + " " message += _("last resort and generally not suggested.") page = self.parent.error(self, title, message, False) # Attach [ ] Download Syncthing checkbox cb = Gtk.CheckButton(_("_Download Syncthing binary"), use_underline=True) cb.connect("toggled", lambda cb, *a : self.parent.set_page_complete(page, cb.get_active())) page.attach(cb, 0, 2, 2, 1) # Attach [ ] Autoupdate checkbox cb = Gtk.CheckButton(_("Auto_update downloaded binary"), use_underline=True) cb.connect("toggled", lambda cb, *a : self.parent.config.set("st_autoupdate", cb.get_active())) page.attach(cb, 0, 3, 2, 1) page.show_all() # Add Download page self.parent.insert(DownloadSTPage()) return False for bin in self.binaries: bin_path = os.path.join(path, bin) log.info(" ... %s", bin_path) if os.path.isfile(bin_path): if os.access(bin_path, os.X_OK): # File exists and is executable, run it and parse # version string from output log.info("Binary found in %s", bin_path) if IS_WINDOWS: bin_path = bin_path.replace("/", "\\") p = DaemonProcess([ bin_path, '-version' ]) p.connect('line', self.cb_process_output) p.connect('exit', self.cb_process_exit) p.connect('failed', self.cb_process_exit) p.start() return False else: log.info("Binary in %s is not not executable", bin_path) return True def cb_process_output(self, process, line): """ Called when daemon binary outputs line while it's being asked for version string. """ try: # Parse version string v = line.split(" ")[1] if v.startswith("v"): self.version_string = v except Exception: # Not line with version string, probably some other output pass def cb_process_exit(self, process, *a): """ Called after daemon binary outputs version and exits """ from syncthing_gtk.app import MIN_ST_VERSION bin_path = process.get_commandline()[0] if compare_version(self.version_string, MIN_ST_VERSION): # Daemon binary exists, is executable and meets # version requirements. That's good, btw. self.parent.config["syncthing_binary"] = bin_path if not can_upgrade_binary(bin_path): # Don't try enable auto-update if binary is in # non-writable location (auto-update is enabled # by default on Windows only) self.parent.config["st_autoupdate"] = False self.parent.set_page_complete(self, True) self.label.set_markup( "" + _("Syncthing daemon binary found.") + "" + "\n\n" + _("Binary path:") + " " + bin_path + "\n" + _("Version:") + " " + self.version_string ) else: # Found daemon binary too old to be ussable. # Just ignore it and try to find better one. log.info("Binary in %s is too old", bin_path) self.ignored_version = self.version_string GLib.idle_add(self.search) class DownloadSTPage(Page): TYPE = Gtk.AssistantPageType.PROGRESS TITLE = "Download Daemon" def init_page(self): """ Displayed while wizard downloads and extracts daemon """ self.label = WrappedLabel("" + _("Downloading Syncthing daemon.") + "") self.version = WrappedLabel(_("Please wait...")) self.pb = Gtk.ProgressBar() self.label.props.margin_bottom = 15 self.target = None self.attach(self.label, 0, 0, 1, 1) self.attach(self.version, 0, 1, 1, 1) self.attach(self.pb, 0, 2, 1, 1) def prepare(self): # Determine which Syncthing to use suffix, tag = StDownloader.determine_platform() # Report error on unsupported platforms if suffix is None or tag is None: pd = "%s %s %s" % ( platform.uname()[0], platform.uname()[2], # OS, version platform.uname()[4]) # architecture self.parent.error(self, _("Cannot download Syncthing daemon."), _("This platform (%s) is not supported") % (pd,), False) return # Determine target file & directory self.target = os.path.join( os.path.expanduser(StDownloader.get_target_folder()), "syncthing%s" % (suffix,) ) # Create downloader and connect events self.sd = StDownloader(self.target, tag) self.sd.connect("error", self.on_download_error) self.sd.connect("version", self.on_version) self.sd.connect("download-progress", self.on_progress) self.sd.connect("download-finished", self.on_extract_start) self.sd.connect("extraction-progress", self.on_progress) self.sd.connect("extraction-finished", self.on_extract_finished) # Start downloading self.sd.get_version() def on_download_error(self, downloader, error, message): """ Called when download fails. This is fatal for now, user can only observe message, cry and quit program. """ message = "%s\n%s" % ( str(error) if not error is None else "", message if not message is None else "" ) self.parent.error(self, _("Failed to download Syncthing daemon package."), message, False) return def on_version(self, dowloader, version): self.version.set_markup("Downloading %s..." % (version, )) dowloader.download() def on_extract_start(self, *a): self.version.set_markup("Extracting...") def on_progress(self, dowloader, progress): self.pb.set_fraction(progress) def on_extract_finished(self, *a): """ Called after extraction is finished """ # Everything done. Praise supernatural entities... self.label.set_markup("" + _("Download finished.") + "") self.parent.config["syncthing_binary"] = self.target self.version.set_markup(_("Binary path:") + " " + self.target) self.pb.set_visible(False) self.parent.set_page_complete(self, True) class GenerateKeysPage(Page): TYPE = Gtk.AssistantPageType.PROGRESS TITLE = "Generate Keys" def init_page(self): """ Displayed while Syncthing binary is being searched for """ self.label = WrappedLabel( "%s\n\n%s" % ( _("Syncthing is generating RSA key and certificate."), _("This may take a while...") ) ) self.attach(self.label, 0, 0, 1, 1) def prepare(self): GLib.idle_add(self.start_binary) def start_binary(self): """ Starts Syncthing binary with -generate parameter and waits until key generation is finished """ self.parent.output_line("syncthing-gtk: Configuration directory: '%s'" % (self.parent.st_configdir,)) # Create it, if needed try: os.makedirs(self.parent.st_configdir) except Exception as e: self.parent.output_line("syncthing-gtk: Failed to create configuration directory") self.parent.output_line("syncthing-gtk: %s" % (str(e),)) # Run syncthing -generate self.parent.output_line("syncthing-gtk: Syncthing configuration directory: %s" % (self.parent.st_configdir,)) self.process = DaemonProcess([ self.parent.config["syncthing_binary"], '-generate=%s' % self.parent.st_configdir ]) self.process.connect('line', lambda proc, line : self.parent.output_line(line)) self.process.connect('exit', self.cb_daemon_exit) self.process.connect('failed', self.cb_daemon_start_failed) self.process.start() return False def cb_daemon_start_failed(self, dproc, exception): self.parent.output_line("syncthing-gtk: Daemon startup failed") self.parent.output_line("syncthing-gtk: %s" % (str(exception),)) self.cb_daemon_exit(dproc, -1) def cb_daemon_exit(self, dproc, exit_code): """ Called when Syncthing finishes """ if exit_code == 0: # Finished without problem, advance to next page self.parent.set_page_complete(self, True) self.parent.next_page() else: self.parent.error(self, _("Failed to generate keys"), _("Syncthing daemon failed to generate RSA key or certificate."), True) class HttpSettingsPage(Page): TYPE = Gtk.AssistantPageType.CONTENT TITLE = "Setup WebUI" def init_page(self): """ Permits user to set WebUI settings """ # Wall of text label = WrappedLabel( "" + _("WebUI setup") + "" + "\n\n" + _("Syncthing can be managed remotely using WebUI and " "even if you are going to use Syncthing-GTK, WebUI needs " "to be enabled, as Syncthing-GTK uses it to communicate " "with the Syncthing daemon.") + "\n\n" + _("If you prefer to be able to manage Syncthing remotely, " "over the internet or on your local network, select listen " "on all interfaces and set username and password to " "protect Syncthing from unauthorized access.") + "\n" + _("Otherwise, select listen on localhost, so only " "users and programs on this computer will be able to " "interact with Syncthing.") + "\n" ) # Radiobuttons lbl_radios = WrappedLabel("" + _("WebUI Listen Addresses") + "") self.rb_localhost = Gtk.RadioButton(label=_("Listen on _localhost")) self.rb_all_intfs = Gtk.RadioButton.new_from_widget(self.rb_localhost) self.rb_all_intfs.set_label(_("Listen on _all interfaces")) for x in (self.rb_localhost, self.rb_all_intfs): x.set_use_underline(True) x.set_property('margin-left', 15) # Username & password input boxes self.tx_username = Gtk.Entry() self.tx_password = Gtk.Entry() self.lbl_username = WrappedLabel(_("_Username")) self.lbl_password = WrappedLabel(_("_Password")) self.lbl_username.set_mnemonic_widget(self.tx_username) self.lbl_password.set_mnemonic_widget(self.tx_password) self.tx_password.set_visibility(False) self.tx_password.props.caps_lock_warning = True for x in (self.lbl_username, self.lbl_password): x.set_use_underline(True) x.set_property('margin-left', 45) x.set_property('margin-bottom', 5) for x in (self.tx_username, self.tx_password): x.set_property('margin-bottom', 5) # Connect signals for x in (self.rb_localhost, self.rb_all_intfs): x.connect("toggled", self.cb_stuff_changed) for x in (self.tx_username, self.tx_password): x.connect("changed", self.cb_stuff_changed) x.connect("delete-text", self.cb_stuff_changed) x.connect("insert-text", self.cb_stuff_changed) # Attach everything self.attach(label, 0, 0, 3, 1) self.attach(lbl_radios, 0, 1, 3, 1) self.attach(self.rb_localhost, 0, 2, 2, 1) self.attach(self.rb_all_intfs, 0, 3, 2, 1) self.attach(self.lbl_username, 0, 4, 1, 1) self.attach(self.lbl_password, 0, 5, 1, 1) self.attach(self.tx_username, 1, 4, 2, 1) self.attach(self.tx_password, 1, 5, 2, 1) def cb_stuff_changed(self, *a): """ Called every time user changes anything on this page """ # Enable / disable username & password input boxes for x in (self.tx_username, self.tx_password, self.lbl_username, self.lbl_password): x.set_sensitive(self.rb_all_intfs.get_active()) # Set page as 'complete' and store settings # if either localhost is selected, or username & password is filled values_ok = self.rb_localhost.get_active() or (len(self.tx_username.get_text().strip()) and len(self.tx_password.get_text().strip())) self.parent.set_page_complete(self, values_ok) if values_ok: if self.rb_localhost.get_active(): self.parent.syncthing_options["listen_ip"] = "127.0.0.1" else: self.parent.syncthing_options["listen_ip"] = "0.0.0.0" self.parent.syncthing_options["user"] = str(self.tx_username.get_text()) self.parent.syncthing_options["password"] = str(self.tx_password.get_text()) def prepare(self): # Refresh UI self.cb_stuff_changed() class SaveSettingsPage(Page): TYPE = Gtk.AssistantPageType.PROGRESS TITLE = "Save Settings" def init_page(self): """ Displayed while settings are being saved """ self.label = WrappedLabel("" + _("Saving settings...") + "" + "\n\n") self.status = Gtk.Label(_("Checking for available port...")) self.attach(self.label, 0, 0, 1, 1) self.attach(self.status, 0, 1, 1, 1) def prepare(self): GLib.idle_add(self.check_port, DEFAULT_PORT) def check_port(self, port): """ Tries to open TCP port to check it availability. It this fails, checks next ports, until MAX_PORT is reached. When MAX_PORT is reached, it's safe to assume that something completely wrong is happening and an error should be displayed. """ if port >= MAX_PORT: # Remove config.xml that I just created try: os.unlink(self.parent.st_configfile) except Exception as e: self.parent.output_line("syncthing-gtk: %s" % (str(e),)) self.parent.error(self, _("Failed to find unused port for listening."), _("Please, check your firewall settings and try again."), False) return s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.bind((self.parent.syncthing_options["listen_ip"], port)) s.listen(0.1) s.close() # Good, port is available self.parent.output_line("syncthing-gtk: chosen port %s" % (port,)) self.port = port self.parent.syncthing_options["port"] = str(port) self.status.set_markup(_("Saving...")) GLib.idle_add(self.save_settings) except socket.error: # Address already in use (or some crazy error) self.parent.output_line("syncthing-gtk: port %s is not available" % (port,)) GLib.idle_add(self.check_port, port + 1) finally: del s def ct_textnode(self, xml, parent, name, value): """ Helper method """ el = xml.createElement(name) text = xml.createTextNode(value) el.appendChild(text) parent.appendChild(el) def save_settings(self): """ Loads&parses XML, changes some values and writes it back. No backup is created as this wizard is expected to be ran only if there is no config in first place. """ # Generate API key self.apikey = "".join(random.choice(string.ascii_lowercase + string.digits) for _ in range(30)) log.debug("Generated apikey %s", self.apikey) xml = None try: # Load XML file with open(self.parent.st_configfile, "r") as conf_file: config = conf_file.read() xml = minidom.parseString(config) except Exception as e: self.parent.output_line("syncthing-gtk: %s" % (traceback.format_exc(),)) self.parent.error(self, _("Failed to load Syncthing configuration"), str(e), True) return False try: # Prepare elements gui = xml.getElementsByTagName("configuration")[0] \ .getElementsByTagName("gui")[0] au = xml.getElementsByTagName("configuration")[0] \ .getElementsByTagName("options")[0] \ .getElementsByTagName("autoUpgradeIntervalH")[0] while gui.firstChild != None: gui.removeChild(gui.firstChild) # Update data self.ct_textnode(xml, gui, "address", "%s:%s" % ( self.parent.syncthing_options["listen_ip"], self.parent.syncthing_options["port"], )) self.ct_textnode(xml, gui, "user", self.parent.syncthing_options["user"]) self.ct_textnode(xml, gui, "password", bcrypt.hashpw( str(self.parent.syncthing_options["password"]).encode("utf-8"), bcrypt.gensalt() )) self.ct_textnode(xml, gui, "apikey", self.apikey) gui.setAttribute("enabled", "true") gui.setAttribute("tls", "false") au.firstChild.replaceWholeText("0") except Exception as e: self.parent.output_line("syncthing-gtk: %s" % (traceback.format_exc(),)) self.parent.error(self, _("Failed to modify Syncthing configuration"), str(e), True) return False try: # Write XML back to file with open(self.parent.st_configfile, "w") as f: f.write(xml.toxml().encode("utf-8")) except Exception as e: self.parent.output_line("syncthing-gtk: %s" % (traceback.format_exc(),)) self.parent.error(self, _("Failed to save Syncthing configuration"), str(e), True) return False self.parent.set_page_complete(self, True) self.parent.next_page() return False class LastPage(GenerateKeysPage): TYPE = Gtk.AssistantPageType.SUMMARY TITLE = "Finish" def init_page(self): """ Well, it's last page. """ label = WrappedLabel( "" + _("Done.") + "" + "\n\n" + _("Syncthing has been successfully configured.") + "\n" + _("You can configure more details later, in " "UI Settings and Daemon Settings menus " "in main window of application.") ) self.attach(label, 0, 0, 1, 1) def prepare(self): # Configure main app to manage Syncthing daemon by default self.parent.config["autostart_daemon"] = 1 self.parent.config["autokill_daemon"] = 1 self.parent.config["minimize_on_start"] = False if IS_WINDOWS: self.parent.config["use_old_header"] = True self.parent.quit_button.get_parent().remove(self.parent.quit_button) self.parent.finished = True syncthing-gtk-0.9.4.4/tools/000077500000000000000000000000001352162771300156265ustar00rootroot00000000000000syncthing-gtk-0.9.4.4/tools/chocolateyInstall.ps1000066400000000000000000000003321352162771300217320ustar00rootroot00000000000000$packageName = 'syncthing-gtk' $installerType = 'EXE' $url = '' $silentArgs = '/S' $validExitCodes = @(0) Install-ChocolateyPackage "$packageName" "$installerType" "$silentArgs" "$url" -validExitCodes $validExitCodes syncthing-gtk-0.9.4.4/tools/chocolateyUninstall.ps1000066400000000000000000000006341352162771300223020ustar00rootroot00000000000000$packageName = 'syncthing-gtk' $installerType = 'EXE' $silentArgs = '/S' $path = "$env:ProgramFiles\SyncthingGTK" $path86 = "${env:ProgramFiles(x86)}\SyncthingGTK" if (Test-Path $path) { Uninstall-ChocolateyPackage $packageName $installerType $silentArgs "$path\uninstaller.exe" } if (Test-Path $path86) { Uninstall-ChocolateyPackage $packageName $installerType $silentArgs "$path86\uninstaller.exe" }