From 9f2e1358d2c028c941b8be825522dd3351333710 Mon Sep 17 00:00:00 2001 From: Julien Valroff Date: Sun, 11 Jul 2010 09:01:25 +0200 Subject: Imported Upstream version 0.3.0 --- PKG-INFO | 2 +- data/rapid-photo-downloader.desktop | 2 +- po/cs.po | 1393 +++---- po/de.po | 1576 ++++---- po/es.po | 1432 ++++---- po/fi.po | 1545 ++++---- po/fr.po | 1473 ++++---- po/it.po | 1562 ++++---- po/nl.po | 1564 ++++---- po/pl.po | 1572 ++++---- po/rapid-photo-downloader.pot | 1195 +++--- po/ru.po | 1699 +++++---- po/sv.po | 4 +- po/uk.po | 1548 ++++---- rapid/ChangeLog | 131 + rapid/INSTALL | 16 +- rapid/common.py | 44 + rapid/config.py | 26 +- rapid/dropshadow.py | 174 + rapid/filmstrip.py | 117 + rapid/glade3/filmstrip-100x75.xpm | 106 - rapid/glade3/image-missing.svg | 94 - rapid/glade3/photo.png | Bin 0 -> 6135 bytes rapid/glade3/photo24.png | Bin 0 -> 528 bytes rapid/glade3/photo_shadow.png | Bin 0 -> 6659 bytes rapid/glade3/photo_small_shadow.png | Bin 0 -> 1711 bytes rapid/glade3/rapid-photo-downloader-about.png | Bin 8084 -> 0 bytes .../rapid-photo-downloader-download-pending.svg | 187 + ...apid-photo-downloader-downloaded-with-error.svg | 350 ++ ...id-photo-downloader-downloaded-with-warning.svg | 351 ++ rapid/glade3/rapid-photo-downloader-downloaded.svg | 295 ++ rapid/glade3/rapid-photo-downloader-jobcode.svg | 265 ++ rapid/glade3/rapid-photo-downloader.svg | 2673 ++++++++++++++ rapid/glade3/rapid.glade | 434 ++- rapid/glade3/video.png | Bin 0 -> 6683 bytes rapid/glade3/video.svg | 1638 --------- rapid/glade3/video24.png | Bin 0 -> 736 bytes rapid/glade3/video_shadow.png | Bin 0 -> 7317 bytes rapid/glade3/video_small_shadow.png | Bin 0 -> 2647 bytes rapid/idletube.py | 24 +- rapid/media.py | 216 +- rapid/metadata.py | 34 + rapid/problemnotification.py | 427 +++ rapid/rapid.py | 3876 ++++++++++++++------ rapid/renamesubfolderprefs.py | 216 +- rapid/videometadata.py | 63 +- setup.py | 17 +- 47 files changed, 18020 insertions(+), 10321 deletions(-) create mode 100755 rapid/dropshadow.py create mode 100755 rapid/filmstrip.py delete mode 100644 rapid/glade3/filmstrip-100x75.xpm delete mode 100644 rapid/glade3/image-missing.svg create mode 100644 rapid/glade3/photo.png create mode 100644 rapid/glade3/photo24.png create mode 100644 rapid/glade3/photo_shadow.png create mode 100644 rapid/glade3/photo_small_shadow.png delete mode 100644 rapid/glade3/rapid-photo-downloader-about.png create mode 100644 rapid/glade3/rapid-photo-downloader-download-pending.svg create mode 100644 rapid/glade3/rapid-photo-downloader-downloaded-with-error.svg create mode 100644 rapid/glade3/rapid-photo-downloader-downloaded-with-warning.svg create mode 100644 rapid/glade3/rapid-photo-downloader-downloaded.svg create mode 100644 rapid/glade3/rapid-photo-downloader-jobcode.svg create mode 100644 rapid/glade3/rapid-photo-downloader.svg create mode 100644 rapid/glade3/video.png delete mode 100644 rapid/glade3/video.svg create mode 100644 rapid/glade3/video24.png create mode 100644 rapid/glade3/video_shadow.png create mode 100644 rapid/glade3/video_small_shadow.png create mode 100755 rapid/problemnotification.py diff --git a/PKG-INFO b/PKG-INFO index bfb5ec5..74a37a7 100644 --- a/PKG-INFO +++ b/PKG-INFO @@ -1,6 +1,6 @@ Metadata-Version: 1.0 Name: rapid-photo-downloader -Version: 0.2.3 +Version: 0.3.0 Summary: Rapid Photo Downloader for Linux Home-page: http://www.damonlynch.net/rapid Author: Damon Lynch diff --git a/data/rapid-photo-downloader.desktop b/data/rapid-photo-downloader.desktop index 7d23906..470eca2 100644 --- a/data/rapid-photo-downloader.desktop +++ b/data/rapid-photo-downloader.desktop @@ -2,7 +2,7 @@ Version=1.0 Name=Rapid Photo Downloader GenericName=Rapid Photo Downloader -Comment=Download photos from cameras, memory cards and Portable Storage Devices +Comment=Download photos and videos from cameras, memory cards and Portable Storage Devices Exec=rapid-photo-downloader Icon=rapid-photo-downloader MimeType=x-content/image-dcf; diff --git a/po/cs.po b/po/cs.po index 7a071e0..a4cccd7 100644 --- a/po/cs.po +++ b/po/cs.po @@ -7,204 +7,204 @@ msgid "" msgstr "" "Project-Id-Version: rapid\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2010-05-27 22:33-0500\n" -"PO-Revision-Date: 2010-05-28 04:56+0000\n" -"Last-Translator: Damon Lynch \n" +"POT-Creation-Date: 2010-07-02 22:51-0500\n" +"PO-Revision-Date: 2010-07-03 04:32+0000\n" +"Last-Translator: Konki \n" "Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-05-28 19:08+0000\n" +"X-Launchpad-Export-Date: 2010-07-04 23:56+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Translators: if neccessary, for guidance in how to translate this program, you may see http://damonlynch.net/translate.html -#: rapid/rapid.py:104 rapid/rapid.py:4447 rapid/glade3/rapid.glade.h:72 +#: rapid/rapid.py:122 rapid/rapid.py:6181 rapid/glade3/rapid.glade.h:71 msgid "Rapid Photo Downloader" msgstr "Rapid Photo Downloader" -#: rapid/rapid.py:394 +#: rapid/rapid.py:449 msgid "New York" msgstr "New York" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Manila" msgstr "Manila" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Prague" msgstr "Praha" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Helsinki" msgstr "Helsinki" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Wellington" msgstr "Wellington" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Tehran" msgstr "Teherán" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Kampala" msgstr "Kampala" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Paris" msgstr "Paříž" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Berlin" msgstr "Berlín" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Sydney" msgstr "Sydney" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Budapest" msgstr "Budapešť" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Rome" msgstr "Řím" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Moscow" msgstr "Moskva" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Delhi" msgstr "Dílí" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Warsaw" msgstr "Varšava" -#: rapid/rapid.py:398 +#: rapid/rapid.py:453 msgid "Jakarta" msgstr "Jakarta" -#: rapid/rapid.py:398 +#: rapid/rapid.py:453 msgid "Madrid" msgstr "Madrid" -#: rapid/rapid.py:398 +#: rapid/rapid.py:453 msgid "Stockholm" msgstr "Stockholm" -#: rapid/rapid.py:425 +#: rapid/rapid.py:486 msgid "Invalid Downloads Today value.\n" msgstr "Hodnota dnešní stahování je invalidní.\n" -#: rapid/rapid.py:426 +#: rapid/rapid.py:487 msgid "Resetting value to zero.\n" msgstr "Resetování hodnoty na nulu.\n" -#: rapid/rapid.py:465 +#: rapid/rapid.py:526 msgid "'Start of day' preference value is corrupted.\n" msgstr "Hodnota nastavení 'Začátek dne' je poškozena.\n" -#: rapid/rapid.py:466 +#: rapid/rapid.py:527 msgid "Resetting to midnight.\n" msgstr "Resetování do půlnoci.\n" -#: rapid/rapid.py:492 +#: rapid/rapid.py:553 msgid "Error in Photo Rename preferences" msgstr "Chyba v nastavení přejmenování fotografií" -#: rapid/rapid.py:523 rapid/rapid.py:1567 +#: rapid/rapid.py:584 rapid/rapid.py:1689 msgid "Sorry,these preferences contain an error:\n" msgstr "Promiňte, v nastavení je chyba:\n" -#: rapid/rapid.py:534 +#: rapid/rapid.py:595 msgid "Resetting to default values." msgstr "Resetování na výchozí hodnoty." #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:609 rapid/renamesubfolderprefs.py:196 +#: rapid/rapid.py:670 rapid/renamesubfolderprefs.py:198 msgid "Job code" msgstr "Pracovní kód" -#: rapid/rapid.py:677 +#: rapid/rapid.py:738 msgid "Error in Video Rename preferences" msgstr "Chyba v nastavení přejmenování videí" -#: rapid/rapid.py:695 +#: rapid/rapid.py:756 msgid "Error in Photo Download Subfolders preferences" msgstr "" -#: rapid/rapid.py:712 +#: rapid/rapid.py:773 msgid "Error in Video Download Subfolders preferences" msgstr "" -#: rapid/rapid.py:745 rapid/rapid.py:1492 +#: rapid/rapid.py:806 rapid/rapid.py:1539 msgid "photos and videos" msgstr "fotografie a videa" -#: rapid/rapid.py:747 rapid/rapid.py:1502 rapid/rapid.py:1782 +#: rapid/rapid.py:808 rapid/rapid.py:1549 rapid/rapid.py:1658 msgid "photos" msgstr "fotografie" -#: rapid/rapid.py:880 +#: rapid/rapid.py:943 msgid "Select a folder to download photos to" msgstr "Vyberte složku do které mají být obrázky staženy" -#: rapid/rapid.py:898 +#: rapid/rapid.py:961 msgid "Select a folder to download videos to" -msgstr "" +msgstr "Zvolte adresář do kterého se bude stahovat video" -#: rapid/rapid.py:980 +#: rapid/rapid.py:1043 #, python-format msgid "Select a folder containing %(file_types)s" msgstr "" -#: rapid/rapid.py:1002 +#: rapid/rapid.py:1065 #, python-format msgid "Select a folder in which to backup %(file_types)s" msgstr "" #. Translators: please do not modify or leave out html formatting tags like and . These are used to format the text the users sees -#: rapid/rapid.py:1095 +#: rapid/rapid.py:1146 msgid "" "Warning: There is insufficient metadata to fully generate the " "name. Please use other renaming options." msgstr "" -#: rapid/rapid.py:1129 +#: rapid/rapid.py:1182 msgid "" "Warning: There is insufficient metadata to fully generate " "subfolders. Please use other subfolder naming options." msgstr "" #. Translators: you should not modify or leave out the %s. This is a code used by the programming language python to insert a value that thes user will see -#: rapid/rapid.py:1133 +#: rapid/rapid.py:1186 #, python-format msgid "Example: %s" msgstr "Příklad: %s" -#: rapid/rapid.py:1159 +#: rapid/rapid.py:1212 msgid "" "Downloads today value not updated, as a download is currently occurring" msgstr "" "Hodnota Dnešní stahování není aktualizována, v současné době dochází ke " "stažení" -#: rapid/rapid.py:1175 +#: rapid/rapid.py:1228 msgid "Stored number value not updated, as a download is currently occurring" msgstr "" "Hodnota Skladované číslo není aktualizována, v současné době dochází ke " "stažení" -#: rapid/rapid.py:1205 +#: rapid/rapid.py:1258 #, python-format msgid "" "The %(filetype)s subfolder preferences had some unnecessary values removed." msgstr "" #. Preferences list is now empty -#: rapid/rapid.py:1210 +#: rapid/rapid.py:1263 #, python-format msgid "" "The %(filetype)s subfolder preferences entered are invalid and cannot be " @@ -213,59 +213,93 @@ msgid "" msgstr "" #. check subfolder preferences for bad values -#: rapid/rapid.py:1224 rapid/rapid.py:1504 rapid/rapid.py:2533 +#: rapid/rapid.py:1277 rapid/rapid.py:1551 msgid "photo" msgstr "fotografie" -#: rapid/rapid.py:1225 rapid/rapid.py:1499 rapid/rapid.py:2541 +#: rapid/rapid.py:1278 rapid/rapid.py:1546 msgid "video" msgstr "video" #. Translators: this value is used as an example device when automatic backup device detection is enabled. You should translate this. -#: rapid/rapid.py:1468 +#: rapid/rapid.py:1515 msgid "externaldrive1" msgstr "externídisk1" #. Translators: this value is used as an example device when automatic backup device detection is enabled. You should translate this. -#: rapid/rapid.py:1470 +#: rapid/rapid.py:1517 msgid "externaldrive2" msgstr "externídisk2" -#: rapid/rapid.py:1494 rapid/rapid.py:1780 +#: rapid/rapid.py:1541 rapid/rapid.py:1656 msgid "photos or videos" msgstr "fotografie či videa" -#: rapid/rapid.py:1497 +#: rapid/rapid.py:1544 msgid "videos" msgstr "videa" +#: rapid/rapid.py:1556 +#, python-format +msgid "" +"%(date)s\n" +"%(time)s" +msgstr "" + +#: rapid/rapid.py:1558 +#, python-format +msgid "%(date)s %(time)s" +msgstr "" + +#: rapid/rapid.py:1561 +#, python-format +msgid "%(hour)s:%(minute)s:%(second)s:%(subsecond)s" +msgstr "" + +#: rapid/rapid.py:1568 +#, python-format +msgid "%(date)s %(hour)s:%(minute)s:%(second)s:%(subsecond)s" +msgstr "" + +#: rapid/rapid.py:1596 rapid/rapid.py:2242 +msgid "subfolder and filename" +msgstr "" + +#: rapid/rapid.py:1598 rapid/rapid.py:2244 +msgid "filename" +msgstr "" + +#: rapid/rapid.py:1600 rapid/rapid.py:2246 +msgid "subfolder" +msgstr "" + #. This refers to when a device like a hard drive is having its contents scanned, #. looking for photos or videos. It is visible initially in the progress bar for each device -#. (which normally holds "x of y photos"). +#. (which normally holds "x photos and videos"). #. It maybe displayed only briefly if the contents of the device being scanned is small. -#: rapid/rapid.py:1556 +#: rapid/rapid.py:1672 msgid "scanning..." msgstr "skenování..." -#: rapid/rapid.py:1663 +#: rapid/rapid.py:1783 msgid "The following download path could not be created:\n" msgstr "" -#: rapid/rapid.py:1664 +#: rapid/rapid.py:1784 #, python-format msgid "%(path)s: " msgstr "" -#: rapid/rapid.py:1665 rapid/rapid.py:1666 rapid/rapid.py:1681 -#: rapid/rapid.py:1682 rapid/rapid.py:2364 rapid/rapid.py:2367 +#: rapid/rapid.py:1785 rapid/rapid.py:1786 rapid/rapid.py:1801 +#: rapid/rapid.py:1802 rapid/rapid.py:2063 rapid/rapid.py:2066 msgid "Download cannot proceed" msgstr "Stahování nemůže pokračovat" -#: rapid/rapid.py:1679 rapid/rapid.py:3381 +#: rapid/rapid.py:1799 rapid/rapid.py:4846 msgid "There is an error in the program preferences." msgstr "Vyskytla se chyba v nastavení programu." -#: rapid/rapid.py:1680 +#: rapid/rapid.py:1800 msgid "" "\n" "Please check preferences, restart the program, and try again." @@ -277,9 +311,9 @@ msgstr "" #. It refers to the actual number of photos that can be copied. For example, the user might see the following: #. '0 of 512 photos' or '0 of 10 videos' or '0 of 202 photos and videos'. #. This particular text is displayed to the user before the download has started. -#: rapid/rapid.py:1791 +#: rapid/rapid.py:1974 #, python-format -msgid "0 of %(number)s %(filetypes)s" +msgid "%(number)s %(filetypes)s" msgstr "" #. Translators: as you have already seen, the text can contain values that should not be modified or left out by you, for example %s. @@ -288,444 +322,418 @@ msgstr "" #. %(number)s should be left exactly as is: 'number' should not be translated. The same applies to %(device)s: 'device' should #. not be translated. Generally speaking, if translating the sentence requires it, you can move items like '%(xyz)s' around #. in a sentence, but you should never modify them or leave them out. -#: rapid/rapid.py:1803 +#: rapid/rapid.py:1985 #, python-format msgid "Device scan complete: found %(number)s %(filetypes)s on %(device)s" msgstr "" "Sken zařízení kompletní: nalezeno %(number)s %(filetypes)s na %(device)s" -#: rapid/rapid.py:1810 +#: rapid/rapid.py:1992 #, python-format msgid "Device scan complete: no %(filetypes)s found on %(device)s" msgstr "" -#: rapid/rapid.py:1844 -#, python-format -msgid "%(filetype)s filename could not be generated" -msgstr "" +#. This message informs the user that the device (e.g. camera, hard drive or memory card) was automatically unmounted and they can now remove it +#: rapid/rapid.py:2013 +msgid "The device can now be safely removed" +msgstr "Zařízení nyní nemůže být bezpečně vymazáno" -#. '%(source)s' and '%(problem)s' are two more examples of text that should not be modified or left out -#: rapid/rapid.py:1846 +#: rapid/rapid.py:2019 #, python-format -msgid "" -"Source: %(source)s\n" -"Problem: %(problem)s" -msgstr "" -"Zdroj: %(source)s\n" -"Problém: %(problem)s" +msgid "%(noFiles)s %(filetypes)s downloaded" +msgstr "%(noFiles)s %(filetypes)s staženo" -#: rapid/rapid.py:1850 +#: rapid/rapid.py:2022 #, python-format -msgid "" -"%(filetype)s filename could not be properly generated. Check to ensure there " -"is sufficient metadata." +msgid "%(noFiles)s %(filetypes)s failed to download" msgstr "" -#: rapid/rapid.py:1851 -#, python-format -msgid "" -"Source: %(source)s\n" -"Partially generated filename: %(newname)s\n" -"Destination: %(destination)s\n" -"Problem: %(problem)s" -msgstr "" -"Zdroj: %(source)s\n" -"Částečně vygenerovaný název souboru: %(newname)s\n" -"Destinace: %(destination)s\n" -"Problém: %(problem)s" +#: rapid/rapid.py:2028 rapid/rapid.py:5627 +msgid "warnings" +msgstr "varování" + +#: rapid/rapid.py:2030 rapid/rapid.py:5631 +msgid "errors" +msgstr "chyby" -#: rapid/rapid.py:1859 rapid/rapid.py:1864 rapid/rapid.py:1883 -#: rapid/rapid.py:2207 +#: rapid/rapid.py:2057 #, python-format -msgid "" -"Source: %(source)s\n" -"Destination: %(destination)s" -msgstr "" -"Zdroj: %(source)s\n" -"Destinace: %(destination)s" +msgid "Source: %s\n" +msgstr "Zdroj: %s\n" -#: rapid/rapid.py:1861 +#: rapid/rapid.py:2059 #, python-format -msgid "Unique identifier '%s' added" -msgstr "Unikátní identifikátor '%s' přidán" +msgid "Device: %s\n" +msgstr "Zařízení: %s\n" -#: rapid/rapid.py:1869 rapid/rapid.py:2270 +#: rapid/rapid.py:2060 #, python-format -msgid "Source: %(source)s" -msgstr "Zdroj: %(source)s" +msgid "Destination: %s" +msgstr "Destinace: %s" -#: rapid/rapid.py:1877 rapid/rapid.py:1882 -msgid "Download copying error" -msgstr "Chyba kopírování obrázků" +#: rapid/rapid.py:2061 rapid/rapid.py:2064 +msgid "Could not create temporary download directory" +msgstr "Nelze vytvořit dočasný stahovací adresář" -#: rapid/rapid.py:1878 -#, python-format -msgid "" -"Source: %(source)s\n" -"Destination: %(destination)s\n" -"Error: %(errorno)s %(strerror)s" +#: rapid/rapid.py:2064 +msgid "Error:" +msgstr "Chyba:" + +#: rapid/rapid.py:2088 +msgid "Backup path does not exist" msgstr "" -"Zdroj: %(source)s\n" -"Destinace: %(destination)s\n" -"Chyba: %(errorno)s %(strerror)s" -#: rapid/rapid.py:1880 rapid/rapid.py:1885 +#: rapid/rapid.py:2089 #, python-format -msgid "The %(filetype)s was not copied." +msgid "The path %s could not be created" msgstr "" -#: rapid/rapid.py:1889 -msgid "" -"Photos detected with the same filenames, but taken at different times:" +#: rapid/rapid.py:2090 +msgid "No backups can occur" msgstr "" -#: rapid/rapid.py:1890 +#: rapid/rapid.py:2117 #, python-format msgid "" -"First photo: %(image1)s %(image1_date_time)s:%(image1_subseconds)s\n" -"Second photo: %(image2)s %(image2_date_time)s:%(image2_subseconds)s" +"Source: %(source)s\n" +"Destination: %(destination)s\n" +"%(problem)s" msgstr "" -#: rapid/rapid.py:1914 rapid/rapid.py:1927 +#: rapid/rapid.py:2146 rapid/rapid.py:2492 rapid/rapid.py:2527 +#: rapid/rapid.py:2555 rapid/rapid.py:2586 rapid/rapid.py:2605 #, python-format -msgid "Could not open %(filetype)s" +msgid "" +"Source: %(source)s\n" +"Destination: %(destination)s" msgstr "" +"Zdroj: %(source)s\n" +"Destinace: %(destination)s" -#: rapid/rapid.py:1915 rapid/rapid.py:1928 -#, python-format -msgid "Source: %s" -msgstr "Zdroj: %s" - -#: rapid/rapid.py:1950 -#, python-format -msgid "%(filetype)s has no metadata" -msgstr "%(filetype)s nemá metadata" +#. hopefully inst will never be None, but just to be safe... +#: rapid/rapid.py:2161 +msgid "Please check your system and try again." +msgstr "" -#: rapid/rapid.py:1951 -#, python-format -msgid "" -"Metadata is essential for generating subfolder and/or file names.\n" -"Source: %s" +#: rapid/rapid.py:2181 +msgid "Photos detected with the same filenames, but taken at different times" msgstr "" -#: rapid/rapid.py:1962 -msgid "" -"Subfolder name could not be properly generated. Check to ensure there is " -"sufficient metadata." +#: rapid/rapid.py:2221 +msgid "Photo has already been downloaded" msgstr "" -#: rapid/rapid.py:1963 +#: rapid/rapid.py:2222 rapid/rapid.py:2621 #, python-format -msgid "" -"Subfolder: %(subfolder)s\n" -"File: %(file)s\n" -"Problem: %(problem)s" -msgstr "" +msgid "Source: %(source)s" +msgstr "Zdroj: %(source)s" #. A new day, according the user's preferences of what time a day begins, has started -#: rapid/rapid.py:2147 +#: rapid/rapid.py:2420 msgid "New day has started - resetting 'Downloads Today' sequence number" msgstr "Nový den začal - resetování 'Dnešní stahování' sekvenční číslo" -#: rapid/rapid.py:2206 +#: rapid/rapid.py:2491 #, python-format msgid "Backup of %(file_type)s already exists" -msgstr "" +msgstr "Záloha %(file_type)s již existuje" -#: rapid/rapid.py:2210 +#: rapid/rapid.py:2495 #, python-format msgid "Backup %(file_type)s overwritten" msgstr "Záloha %(file_type)s přepsána" -#: rapid/rapid.py:2215 +#: rapid/rapid.py:2499 #, python-format msgid "%(file_type)s not backed up to %(volume)s" msgstr "" -#: rapid/rapid.py:2217 +#: rapid/rapid.py:2501 #, python-format msgid "%(file_type)s not backed up" -msgstr "" +msgstr "%(file_type)s nebyl zálohován" -#: rapid/rapid.py:2243 rapid/rapid.py:2260 +#: rapid/rapid.py:2524 rapid/rapid.py:2552 rapid/rapid.py:2585 +#: rapid/rapid.py:2604 msgid "Backing up error" msgstr "Chyba zálohování" -#: rapid/rapid.py:2244 +#: rapid/rapid.py:2525 rapid/rapid.py:2553 #, python-format msgid "Destination directory could not be created: %(directory)s\n" msgstr "Adresář destinace nelze vytvořit: %(directory)s\n" -#: rapid/rapid.py:2246 +#: rapid/rapid.py:2529 rapid/rapid.py:2588 #, python-format -msgid "" -"Source: %(source)s\n" -"Destination: %(destination)s\n" +msgid "Error: %(inst)s" msgstr "" -"Zdroj: %(source)s\n" -"Destinace: %(destination)s\n" -#: rapid/rapid.py:2248 -#, python-format -msgid "Error: %(errno)s %(strerror)s" -msgstr "Chyba: %(errno)s %(strerror)s" - -#: rapid/rapid.py:2249 rapid/rapid.py:2263 +#: rapid/rapid.py:2530 rapid/rapid.py:2558 rapid/rapid.py:2589 +#: rapid/rapid.py:2608 #, python-format msgid "The %(file_type)s was not backed up." msgstr "" -#: rapid/rapid.py:2261 +#: rapid/rapid.py:2557 rapid/rapid.py:2607 #, python-format -msgid "" -"Source: %(source)s\n" -"Destination: %(destination)s\n" -"Error: %(errno)s %(strerror)s" -msgstr "" -"Zdroj: %(source)s\n" -"Destinace: %(destination)s\n" -"Chyba: %(errno)s %(strerror)s" +msgid "Error: %(errno)s %(strerror)s" +msgstr "Chyba: %(errno)s %(strerror)s" -#: rapid/rapid.py:2269 +#: rapid/rapid.py:2620 #, python-format msgid "%(file_type)s could not be backed up" msgstr "" -#: rapid/rapid.py:2272 +#: rapid/rapid.py:2623 msgid "No suitable backup volume was found" msgstr "" -#: rapid/rapid.py:2274 +#: rapid/rapid.py:2625 msgid "A backup location was not found" msgstr "Umístění zálohy nenalezeno" -#. This message informs the user that the device (e.g. camera, hard drive or memory card) was automatically unmounted and they can now remove it -#: rapid/rapid.py:2288 -msgid "The device can now be safely removed" -msgstr "Zařízení nyní nemůže být bezpečně vymazáno" - -#: rapid/rapid.py:2294 -#, python-format -msgid "%(noFiles)s %(filetypes)s downloaded" -msgstr "%(noFiles)s %(filetypes)s staženo" - -#: rapid/rapid.py:2297 -#, python-format -msgid "%(noFiles)s %(filetypes)s skipped" -msgstr "%(noFiles)s %(filetypes)s přeskočeno" - -#: rapid/rapid.py:2303 rapid/rapid.py:4027 -msgid "warnings" -msgstr "varování" - -#: rapid/rapid.py:2305 rapid/rapid.py:4029 -msgid "errors" -msgstr "chyby" - -#: rapid/rapid.py:2331 rapid/rapid.py:2823 rapid/rapid.py:2838 -msgid "Photo thumbnail could not be extracted" -msgstr "" - -#: rapid/rapid.py:2358 -#, python-format -msgid "Source: %s\n" -msgstr "Zdroj: %s\n" - -#: rapid/rapid.py:2360 -#, python-format -msgid "Device: %s\n" -msgstr "" - -#: rapid/rapid.py:2361 -#, python-format -msgid "Destination: %s" -msgstr "Destinace: %s" - -#: rapid/rapid.py:2362 rapid/rapid.py:2365 -msgid "Could not create temporary download directory" -msgstr "Nelze vytvořit dočasný stahovací adresář" - -#: rapid/rapid.py:2365 -msgid "Error:" -msgstr "Chyba:" - -#: rapid/rapid.py:2382 +#: rapid/rapid.py:2679 #, python-format msgid "This device has no %(types_searched_for)s to download from." msgstr "" -#: rapid/rapid.py:2417 +#: rapid/rapid.py:2733 #, python-format msgid "Download has started from %s" msgstr "Stahování začalo z %s" -#: rapid/rapid.py:2434 -msgid "Backup path does not exist" -msgstr "" - -#: rapid/rapid.py:2435 +#: rapid/rapid.py:2736 #, python-format -msgid "The path %s could not be created" -msgstr "" - -#: rapid/rapid.py:2436 rapid/rapid.py:2444 -msgid "No backups can occur" -msgstr "" - -#: rapid/rapid.py:2442 -msgid "Backup device missing" -msgstr "Zálohovací zařízení chybí" - -#: rapid/rapid.py:2443 -msgid "No backup device was automatically detected" -msgstr "" - -#: rapid/rapid.py:2534 rapid/rapid.py:3343 rapid/rapid.py:3345 -msgid "Photo" -msgstr "Fotografie" - -#: rapid/rapid.py:2535 -msgid "Photo skipped" +msgid "Attempting to download %s files" msgstr "" -#: rapid/rapid.py:2536 -msgid "Photo already exists" -msgstr "" - -#: rapid/rapid.py:2542 rapid/rapid.py:3343 -msgid "Video" -msgstr "Video" - -#: rapid/rapid.py:2543 -msgid "Video skipped" -msgstr "" - -#: rapid/rapid.py:2544 -msgid "Video already exists" +#. reset the progress bar to update the status of this download attempt +#: rapid/rapid.py:2769 rapid/rapid.py:2836 +#, python-format +msgid "%(number)s of %(total)s %(filetypes)s" msgstr "" -#: rapid/rapid.py:2592 +#: rapid/rapid.py:2832 #, python-format -msgid "%(number)s of %(total)s %(filetypes)s" +msgid "%(number)s of %(total)s %(filetypes)s (%(remaining)s remaining)" msgstr "" -#: rapid/rapid.py:2607 rapid/rapid.py:2611 +#: rapid/rapid.py:2857 rapid/rapid.py:2861 msgid "Could not delete photo or video from device" -msgstr "" +msgstr "Nelze odstranit fotografie či video ze zařízení" -#: rapid/rapid.py:2608 +#: rapid/rapid.py:2858 #, python-format msgid "" "Photo: %(source)s\n" "Error: %(errno)s %(strerror)s" msgstr "" -#: rapid/rapid.py:2612 +#: rapid/rapid.py:2862 #, python-format msgid "Photo: %(source)s" msgstr "Fotografie: %(source)s" -#: rapid/rapid.py:2614 +#: rapid/rapid.py:2864 #, python-format msgid "Deleted %(number)i %(filetypes)s from device" msgstr "" -#: rapid/rapid.py:2624 +#: rapid/rapid.py:2871 #, python-format msgid "Download complete from %s" msgstr "Stahování kompletní z %s" #. Device refers to a thing like a camera, memory card in its reader, external hard drive, Portable Storage Device, etc. -#: rapid/rapid.py:2700 +#: rapid/rapid.py:2993 rapid/rapid.py:3466 msgid "Device" msgstr "Zařízení" #. Size refers to the total size of images on the device, typically in MB or GB -#: rapid/rapid.py:2705 +#: rapid/rapid.py:2998 rapid/rapid.py:3455 msgid "Size" msgstr "Velikost" -#: rapid/rapid.py:2708 +#: rapid/rapid.py:3001 msgid "Download Progress" msgstr "Průběh stahování" -#: rapid/rapid.py:2824 rapid/rapid.py:2839 -msgid "It may be corrupted" -msgstr "Toto může být poškozeno" +#: rapid/rapid.py:3089 +msgid "Downloading From Cameras" +msgstr "" -#: rapid/rapid.py:2869 +#: rapid/rapid.py:3095 +msgid "Downloading directly from a camera may work poorly or not at all" +msgstr "" + +#: rapid/rapid.py:3096 +msgid "" +"Downloading from a card reader always works and is generally much faster. It " +"is strongly recommended to use a card reader." +msgstr "" + +#: rapid/rapid.py:3110 +msgid "_Show this message again" +msgstr "" + +#: rapid/rapid.py:3145 msgid "Device Detected" msgstr "Zařízení detekováno" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2878 +#: rapid/rapid.py:3154 msgid "" "Should this device or partition be used to download photos or videos from?" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2897 +#: rapid/rapid.py:3173 msgid "_Remember this choice" msgstr "_Zapamatovat si tuto volbu" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2934 +#: rapid/rapid.py:3210 #, python-format msgid "%s selected for downloading from" msgstr "%s vybráno pro stažení" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2937 +#: rapid/rapid.py:3213 msgid "This device or partition will always be used to download from" msgstr "Toto zařízení či oddíl bude vždy použito pro stažení" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2940 +#: rapid/rapid.py:3216 #, python-format msgid "%s rejected as a download device" msgstr "%s odmítnuto jako stahovací zařízení" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2943 +#: rapid/rapid.py:3219 msgid "This device or partition will never be used to download from" msgstr "Toto zařízení či oddíl nebude použito pro stažení" -#: rapid/rapid.py:2950 +#: rapid/rapid.py:3226 msgid "Remove all Job Codes?" msgstr "Odstranit všechny pracovní kódy?" -#: rapid/rapid.py:2967 +#: rapid/rapid.py:3243 msgid "Should all Job Codes be removed?" msgstr "Chcete odstranit všechny pracovní kódy?" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:2995 +#: rapid/rapid.py:3271 msgid "Enter a Job Code" msgstr "Vložte pracovní kód" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:3013 -msgid "Enter a new job code, or select a previous one." -msgstr "Vložte nový pracovní kód, nebo vyberte předchozí." +#: rapid/rapid.py:3290 +msgid "Enter a new Job Code, or select a previous one" +msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:3016 -msgid "Enter a new job code." -msgstr "Vložte nový pracovní kód." +#: rapid/rapid.py:3293 +msgid "Enter a new Job Code" +msgstr "" -#: rapid/rapid.py:3021 +#: rapid/rapid.py:3298 rapid/rapid.py:4417 msgid "Job Code:" msgstr "Pracovní kód:" -#: rapid/rapid.py:3068 +#: rapid/rapid.py:3345 msgid "Job Code entered" msgstr "Pracovní kód vložen" -#: rapid/rapid.py:3070 +#: rapid/rapid.py:3347 msgid "Job Code not entered" msgstr "Pracovní kód nebyl vložen" -#: rapid/rapid.py:3330 +#: rapid/rapid.py:3401 +msgid "Status" +msgstr "" + +#: rapid/rapid.py:3409 +msgid "Type" +msgstr "" + +#: rapid/rapid.py:3418 rapid/rapid.py:4808 rapid/rapid.py:4810 +msgid "Photo" +msgstr "Fotografie" + +#: rapid/rapid.py:3420 +msgid "File" +msgstr "" + +#: rapid/rapid.py:3435 +msgid "Job Code" +msgstr "" + +#: rapid/rapid.py:3445 +msgid "Date" +msgstr "" + +#: rapid/rapid.py:3477 rapid/renamesubfolderprefs.py:194 +msgid "Filename" +msgstr "Jméno souboru" + +#: rapid/rapid.py:3488 +msgid "Path" +msgstr "" + +#: rapid/rapid.py:3843 +#, python-format +msgid "%(filetype)s was downloaded successfully" +msgstr "" + +#: rapid/rapid.py:3845 +#, python-format +msgid "%(filetype)s was not downloaded" +msgstr "" + +#: rapid/rapid.py:3847 +#, python-format +msgid "%(filetype)s was downloaded with warnings" +msgstr "" + +#: rapid/rapid.py:3849 +#, python-format +msgid "%(filetype)s was downloaded but there were problems backing up" +msgstr "" + +#: rapid/rapid.py:3851 +#, python-format +msgid "%(filetype)s was neither downloaded nor backed up" +msgstr "" + +#: rapid/rapid.py:3853 +#, python-format +msgid "%(filetype)s is ready to be downloaded" +msgstr "" + +#: rapid/rapid.py:3855 +#, python-format +msgid "%(filetype)s is about to be downloaded" +msgstr "" + +#: rapid/rapid.py:3857 +#, python-format +msgid "%(filetype)s will be downloaded with warnings" +msgstr "" + +#: rapid/rapid.py:3859 +#, python-format +msgid "%(filetype)s cannot be downloaded" +msgstr "" + +#: rapid/rapid.py:4240 +msgid "Preview" +msgstr "" + +#: rapid/rapid.py:4439 +msgid "Enter a new Job Code and press Enter, or select an existing Job Code" +msgstr "" + +#: rapid/rapid.py:4795 #, python-format msgid "" "Sorry, this device location does not exist:\n" @@ -734,81 +742,90 @@ msgid "" "Please resolve the problem, or modify your preferences." msgstr "" -#: rapid/rapid.py:3334 +#: rapid/rapid.py:4799 msgid "Problem with Device Location Folder" msgstr "" -#: rapid/rapid.py:3350 +#: rapid/rapid.py:4808 +msgid "Video" +msgstr "Video" + +#: rapid/rapid.py:4815 #, python-format msgid "The %(file_type)s Download Folder does not exist.\n" msgstr "" -#: rapid/rapid.py:3359 +#: rapid/rapid.py:4824 #, python-format msgid "The %(file_type)s Download Folder exists but cannot be written to.\n" msgstr "" -#: rapid/rapid.py:3364 +#: rapid/rapid.py:4829 msgid "" "Sorry, problems were encountered with your download folders. Please fix the " "problems or modify the preferences.\n" "\n" msgstr "" -#: rapid/rapid.py:3367 +#: rapid/rapid.py:4832 msgid "Problem with Download Folder" msgstr "Problém se stahovací složkou" -#: rapid/rapid.py:3369 +#: rapid/rapid.py:4834 msgid "Problem with Download Folders" msgstr "" -#: rapid/rapid.py:3382 +#: rapid/rapid.py:4847 msgid "Some preferences will be reset." msgstr "Některé nastavení bylo resetováno." -#: rapid/rapid.py:3416 +#: rapid/rapid.py:4880 +msgid "Displaying warning about downloading directly from camera" +msgstr "" + +#: rapid/rapid.py:4890 #, python-format msgid "Prompting whether to use %s" msgstr "Výzva pro použití %s" -#: rapid/rapid.py:3444 +#: rapid/rapid.py:4917 msgid "Prompting for Job Code" msgstr "Výzva pro pracovní kód" -#: rapid/rapid.py:3448 +#: rapid/rapid.py:4921 msgid "Already prompting for Job Code, do not prompt again" msgstr "Výzva k pracovnímu kódu již existuje, nevyzívejte znovu" -#: rapid/rapid.py:3463 -msgid "Starting downloads that have been waiting for a Job Code" -msgstr "Stahování začne po vložení pracovního kódu" - -#: rapid/rapid.py:3467 +#: rapid/rapid.py:4938 msgid "Starting downloads" msgstr "Stahování začíná" -#: rapid/rapid.py:3482 +#. autostart is true +#: rapid/rapid.py:4942 +msgid "Starting downloads that have been waiting for a Job Code" +msgstr "Stahování začne po vložení pracovního kódu" + +#: rapid/rapid.py:4984 #, python-format msgid "Creating photo download folder %(folder)s" msgstr "" -#: rapid/rapid.py:3487 +#: rapid/rapid.py:4989 #, python-format msgid "Failed to create default photo download folder %(folder)s" msgstr "" -#: rapid/rapid.py:3491 +#: rapid/rapid.py:4993 #, python-format msgid "Creating video download folder %(folder)s" msgstr "" -#: rapid/rapid.py:3496 +#: rapid/rapid.py:4998 #, python-format msgid "Failed to create default video download folder %(folder)s" msgstr "" -#: rapid/rapid.py:3521 +#: rapid/rapid.py:5023 msgid "" "A newer version of this program was previously run on this computer.\n" "\n" @@ -816,7 +833,7 @@ msgstr "" "Novější verze této aplikace na tomto počítači již byla spuštěna.\n" "\n" -#: rapid/rapid.py:3523 +#: rapid/rapid.py:5025 msgid "" "Program preferences appear to be valid, but please check them to ensure " "correct operation." @@ -824,15 +841,15 @@ msgstr "" "Nastavení programu se zdá být validní, ale zkontrolujte bezpečnou opravnou " "operaci." -#: rapid/rapid.py:3525 +#: rapid/rapid.py:5027 msgid "Sorry, some preferences are invalid and will be reset." msgstr "Promiňte, nastavení je invalidní a muselo být resetováno." -#: rapid/rapid.py:3526 +#: rapid/rapid.py:5028 msgid "Warning:" msgstr "Varování:" -#: rapid/rapid.py:3531 +#: rapid/rapid.py:5033 msgid "" "This version of the program is newer than the previously run version. " "Checking preferences." @@ -840,11 +857,11 @@ msgstr "" "Tato verze tohoto programu již na tomto počítači byla nainstalována. " "Kontrola nastavení." -#: rapid/rapid.py:3538 +#: rapid/rapid.py:5040 msgid "Preferences were modified." msgstr "Nastavení bylo modifikováno." -#: rapid/rapid.py:3539 +#: rapid/rapid.py:5041 msgid "" "This version of the program uses different preferences than the old version. " "Your preferences have been updated.\n" @@ -856,11 +873,11 @@ msgstr "" "\n" "Prosím zkontrolujte bezpečnou opravnou operaci." -#: rapid/rapid.py:3543 +#: rapid/rapid.py:5045 msgid "No preferences needed to be changed." msgstr "Žádné nastavení nebylo změněno." -#: rapid/rapid.py:3545 +#: rapid/rapid.py:5047 msgid "" "This version of the program uses different preferences than the old version. " "Some of your previous preferences were invalid, and could not be updated. " @@ -869,516 +886,536 @@ msgstr "" "Tato verze programu využívá uživatelsky jiné nastavení než ta předchozí. " "Některé nastavení je invalidní a nelze aktualizovat. Je tedy resetováno." -#: rapid/rapid.py:3555 +#: rapid/rapid.py:5057 msgid "Problem using pynotify." msgstr "Problém používání pynotify." -#: rapid/rapid.py:3571 +#: rapid/rapid.py:5073 msgid "Failed to receive pynotify server capabilities." msgstr "Přijetí schopností pynotify serveru selhalo." -#: rapid/rapid.py:3580 +#: rapid/rapid.py:5084 msgid "" "Warning: desktop environment notification server is incorrectly configured." msgstr "" "Varování: notifikační server prostředí plochy je špatně nakonfigurován." -#: rapid/rapid.py:3626 +#: rapid/rapid.py:5132 msgid "and" msgstr "a" -#: rapid/rapid.py:3631 +#: rapid/rapid.py:5137 msgid "Using backup devices" msgstr "Používání zálohovacích zařízení" -#: rapid/rapid.py:3633 +#: rapid/rapid.py:5139 msgid "Using backup device" msgstr "Používání zálohovacího zařízení" -#: rapid/rapid.py:3635 +#: rapid/rapid.py:5141 msgid "No backup devices detected" msgstr "Zálohovací zařízení nebylo detekováno" -#: rapid/rapid.py:3674 rapid/rapid.py:3831 +#: rapid/rapid.py:5188 rapid/rapid.py:5350 #, python-format msgid "Device %(device)s (%(path)s) ignored" msgstr "Zařízení %(device)s (%(path)s) ignorováno" -#: rapid/rapid.py:3790 +#: rapid/rapid.py:5309 #, python-format msgid "Detected %(device)s with path %(path)s" msgstr "Detekováno %(device)s s %(path)s cestami" -#: rapid/rapid.py:3794 +#: rapid/rapid.py:5313 msgid "Automatically start download is true" msgstr "Automatický start stahování je povolen" -#: rapid/rapid.py:3796 +#: rapid/rapid.py:5315 msgid "Automatically start download is false" msgstr "Automatický start stahování je zakázán" -#: rapid/rapid.py:3849 +#: rapid/rapid.py:5368 msgid "Using manually specified path" msgstr "Používání manuálně specifikované cesty" -#: rapid/rapid.py:3857 +#: rapid/rapid.py:5376 rapid/rapid.py:5417 #, python-format msgid "Backing up to %(path)s" msgstr "" -#: rapid/rapid.py:3968 rapid/rapid.py:4017 +#. the user is trying to backup to a device that is currently being downloaded from..... we don't normally allow that, but what to do? +#: rapid/rapid.py:5441 +#, python-format +msgid "Warning: backup device %(device)s is currently being downloaded from" +msgstr "" + +#: rapid/rapid.py:5458 +msgid "D_ownload Selected" +msgstr "" + +#: rapid/rapid.py:5550 rapid/rapid.py:5599 msgid "All downloads complete" msgstr "Všechna stahování kompletní" -#: rapid/rapid.py:3982 +#: rapid/rapid.py:5564 msgid "MB/s" msgstr "MB/s" -#: rapid/rapid.py:3992 +#: rapid/rapid.py:5574 msgid "About 1 second remaining" msgstr "Zbývá 1 sekunda" -#: rapid/rapid.py:3994 +#: rapid/rapid.py:5576 #, python-format msgid "About %i seconds remaining" msgstr "Zbývá %i sekund" -#: rapid/rapid.py:3996 +#: rapid/rapid.py:5578 msgid "About 1 minute remaining" msgstr "Zbývá 1 minuta" #. Translators: in the text '%(minutes)i:%(seconds)02i', only the : should be translated, if needed. #. '%(minutes)i' and '%(seconds)02i' should not be modified or left out. They are used to format and display the amount #. of time the download has remainging, e.g. 'About 5:36 minutes remaining' -#: rapid/rapid.py:4001 +#: rapid/rapid.py:5583 #, python-format msgid "About %(minutes)i:%(seconds)02i minutes remaining" msgstr "Zbývá %(minutes)i:%(seconds)02i minut" -#: rapid/rapid.py:4019 -msgid "photos downloaded" +#: rapid/rapid.py:5602 rapid/rapid.py:5608 rapid/rapid.py:5614 +#: rapid/rapid.py:5620 rapid/rapid.py:5625 rapid/rapid.py:5629 +#, python-format +msgid "%(number)s %(numberdownloaded)s" msgstr "" -#: rapid/rapid.py:4021 -msgid "photos skipped" +#: rapid/rapid.py:5604 rapid/rapid.py:5616 +#, python-format +msgid "%(filetype)s downloaded" msgstr "" -#: rapid/rapid.py:4023 -msgid "videos downloaded" +#: rapid/rapid.py:5610 rapid/rapid.py:5622 +#, python-format +msgid "%(filetype)s failed to download" msgstr "" -#: rapid/rapid.py:4025 -msgid "videos skipped" +#: rapid/rapid.py:5789 +msgid "_Resume" msgstr "" -#. This text will be displayed to the user on the Download / Pause button. -#. Please note the space at the end of the label - it is needed to meet the Gnome Human Interface Guidelines -#: rapid/rapid.py:4125 -msgid "_Download " -msgstr "_Stažení " +#: rapid/rapid.py:5792 +msgid "_Download All" +msgstr "" #. This text will be displayed to the user on the Download / Pause button. -#: rapid/rapid.py:4135 +#: rapid/rapid.py:5801 msgid "_Pause" msgstr "_Pozastavit" -#: rapid/rapid.py:4209 -msgid "Preferences were changed." -msgstr "Nastavení změněno" +#: rapid/rapid.py:5914 +msgid "Download device settings preferences were changed." +msgstr "" + +#: rapid/rapid.py:5926 +msgid "Backup preferences were changed." +msgstr "" + +#: rapid/rapid.py:5932 +msgid "Subfolder and filename preferences were changed." +msgstr "" -#: rapid/rapid.py:4407 +#: rapid/rapid.py:5943 +msgid "Download folder preferences were changed." +msgstr "" + +#: rapid/rapid.py:6141 msgid "Goodbye" msgstr "Hezký den" #. Translators: this text is displayed to the user when they request information on the command line options. #. The text %default should not be modified or left out. -#: rapid/rapid.py:4418 +#: rapid/rapid.py:6152 #, python-format msgid "" "display program information on the command line as the program runs " "(default: %default)" msgstr "zobrazit informace o programu na příkazové řádce (default: %default)" -#: rapid/rapid.py:4419 +#: rapid/rapid.py:6153 msgid "only output errors to the command line" msgstr "pouze výstup chyb do příkazové řádky" #. image file extensions are recognized RAW files plus TIFF and JPG -#: rapid/rapid.py:4421 +#: rapid/rapid.py:6155 msgid "list photo and video file extensions the program recognizes and exit" msgstr "" -#: rapid/rapid.py:4422 +#: rapid/rapid.py:6156 msgid "reset all program settings and preferences and exit" msgstr "" -#: rapid/rapid.py:4431 +#: rapid/rapid.py:6165 msgid "Photos:" msgstr "" -#: rapid/rapid.py:4431 +#: rapid/rapid.py:6165 msgid "Videos:" msgstr "" -#: rapid/rapid.py:4436 +#: rapid/rapid.py:6170 #, python-format msgid "and %s" msgstr "a %s" -#: rapid/rapid.py:4444 +#: rapid/rapid.py:6178 msgid "All settings and preferences have been reset" msgstr "" #. Which volume management code is being used (GIO or GnomeVFS) -#: rapid/rapid.py:4448 rapid/rapid.py:4449 rapid/rapid.py:4451 -#: rapid/rapid.py:4456 rapid/rapid.py:4460 +#: rapid/rapid.py:6182 rapid/rapid.py:6183 rapid/rapid.py:6185 +#: rapid/rapid.py:6190 rapid/rapid.py:6194 msgid "Using" msgstr "Používání" -#: rapid/rapid.py:4453 +#: rapid/rapid.py:6187 msgid "\n" msgstr "\n" #. this application is already running -#: rapid/rapid.py:4477 +#: rapid/rapid.py:6211 #, python-format msgid "%s is already running" msgstr "%s není připraven k používání" -#: rapid/renamesubfolderprefs.py:190 +#: rapid/renamesubfolderprefs.py:192 msgid "Date time" msgstr "Datum a čas" -#: rapid/renamesubfolderprefs.py:191 +#: rapid/renamesubfolderprefs.py:193 msgid "Text" msgstr "Text" -#: rapid/renamesubfolderprefs.py:192 -msgid "Filename" -msgstr "Jméno souboru" - -#: rapid/renamesubfolderprefs.py:193 +#: rapid/renamesubfolderprefs.py:195 msgid "Metadata" msgstr "Metadata" -#: rapid/renamesubfolderprefs.py:194 +#: rapid/renamesubfolderprefs.py:196 msgid "Sequences" msgstr "Sekvence" -#: rapid/renamesubfolderprefs.py:197 +#: rapid/renamesubfolderprefs.py:199 msgid "Image date" msgstr "Datum obrázku" -#: rapid/renamesubfolderprefs.py:198 +#: rapid/renamesubfolderprefs.py:200 msgid "Video date" msgstr "" -#: rapid/renamesubfolderprefs.py:199 +#: rapid/renamesubfolderprefs.py:201 msgid "Today" msgstr "Dnes" -#: rapid/renamesubfolderprefs.py:200 +#: rapid/renamesubfolderprefs.py:202 msgid "Yesterday" msgstr "Včerejšek" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:202 +#: rapid/renamesubfolderprefs.py:204 msgid "Name + extension" msgstr "Jméno + koncovka" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:204 +#: rapid/renamesubfolderprefs.py:206 msgid "Name" msgstr "Název" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:206 +#: rapid/renamesubfolderprefs.py:208 msgid "Extension" msgstr "Koncovka" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:208 +#: rapid/renamesubfolderprefs.py:210 msgid "Image number" msgstr "Číslo obrázku" -#: rapid/renamesubfolderprefs.py:209 +#: rapid/renamesubfolderprefs.py:211 msgid "Video number" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:211 +#: rapid/renamesubfolderprefs.py:213 msgid "Aperture" msgstr "Clona" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:213 +#: rapid/renamesubfolderprefs.py:215 msgid "ISO" msgstr "ISO" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:215 +#: rapid/renamesubfolderprefs.py:217 msgid "Exposure time" msgstr "Čas expozice" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:217 +#: rapid/renamesubfolderprefs.py:219 msgid "Focal length" msgstr "Vzdálenost ohniska" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:219 +#: rapid/renamesubfolderprefs.py:221 msgid "Camera make" msgstr "Vytvoření fotoaparátu" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:221 +#: rapid/renamesubfolderprefs.py:223 msgid "Camera model" msgstr "Druh fotoaparátu" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:223 +#: rapid/renamesubfolderprefs.py:225 msgid "Short camera model" msgstr "Krátký druh kamery" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:225 +#: rapid/renamesubfolderprefs.py:227 msgid "Hyphenated short camera model" msgstr "Model kamery v označení odděleném pomlčkou" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:227 +#: rapid/renamesubfolderprefs.py:229 msgid "Serial number" msgstr "Sériové číslo" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:229 +#: rapid/renamesubfolderprefs.py:231 msgid "Shutter count" msgstr "Číslo snímku" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:231 +#: rapid/renamesubfolderprefs.py:233 msgid "Owner name" msgstr "Vlastníkovo jméno" -#: rapid/renamesubfolderprefs.py:232 +#: rapid/renamesubfolderprefs.py:234 msgid "Codec" msgstr "" -#: rapid/renamesubfolderprefs.py:233 +#: rapid/renamesubfolderprefs.py:235 msgid "Width" msgstr "" -#: rapid/renamesubfolderprefs.py:234 +#: rapid/renamesubfolderprefs.py:236 msgid "Height" msgstr "" -#: rapid/renamesubfolderprefs.py:235 +#: rapid/renamesubfolderprefs.py:237 msgid "Length" msgstr "" -#: rapid/renamesubfolderprefs.py:236 +#: rapid/renamesubfolderprefs.py:238 msgid "Frames Per Second" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:238 +#: rapid/renamesubfolderprefs.py:240 msgid "Downloads today" msgstr "Dnešní stahování" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:240 +#: rapid/renamesubfolderprefs.py:242 msgid "Session number" msgstr "Číslo této relace" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:242 +#: rapid/renamesubfolderprefs.py:244 msgid "Subfolder number" msgstr "Číslo podsložky" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:244 +#: rapid/renamesubfolderprefs.py:246 msgid "Stored number" msgstr "Uskladněné číslo" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequenceletters -#: rapid/renamesubfolderprefs.py:246 +#: rapid/renamesubfolderprefs.py:248 msgid "Sequence letter" msgstr "Zpráva sekvence" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:248 +#: rapid/renamesubfolderprefs.py:250 msgid "All digits" msgstr "Všechny číslice" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:250 +#: rapid/renamesubfolderprefs.py:252 msgid "Last digit" msgstr "Poslední číslice" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:252 +#: rapid/renamesubfolderprefs.py:254 msgid "Last 2 digits" msgstr "Poslední 2 číslice" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:254 +#: rapid/renamesubfolderprefs.py:256 msgid "Last 3 digits" msgstr "Poslední 3 číslice" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:256 +#: rapid/renamesubfolderprefs.py:258 msgid "Last 4 digits" msgstr "Poslední 4 číslice" #. Translators: please not the capitalization of this text, and keep it the same if your language features capitalization -#: rapid/renamesubfolderprefs.py:258 +#: rapid/renamesubfolderprefs.py:260 msgid "Original Case" msgstr "Originální obal" #. Translators: please not the capitalization of this text, and keep it the same if your language features capitalization -#: rapid/renamesubfolderprefs.py:260 +#: rapid/renamesubfolderprefs.py:262 msgid "UPPERCASE" msgstr "Velká písmena (ABCDEFG)" #. Translators: please not the capitalization of this text, and keep it the same if your language features capitalization -#: rapid/renamesubfolderprefs.py:262 +#: rapid/renamesubfolderprefs.py:264 msgid "lowercase" msgstr "Malá písmena (abcdefg)" -#: rapid/renamesubfolderprefs.py:263 +#: rapid/renamesubfolderprefs.py:265 msgid "One digit" msgstr "Jedna číslice" -#: rapid/renamesubfolderprefs.py:264 +#: rapid/renamesubfolderprefs.py:266 msgid "Two digits" msgstr "Dvě číslice" -#: rapid/renamesubfolderprefs.py:265 +#: rapid/renamesubfolderprefs.py:267 msgid "Three digits" msgstr "Tři číslice" -#: rapid/renamesubfolderprefs.py:266 +#: rapid/renamesubfolderprefs.py:268 msgid "Four digits" msgstr "Čtyři číslice" -#: rapid/renamesubfolderprefs.py:267 +#: rapid/renamesubfolderprefs.py:269 msgid "Five digits" msgstr "Pět číslic" -#: rapid/renamesubfolderprefs.py:268 +#: rapid/renamesubfolderprefs.py:270 msgid "Six digits" msgstr "Šest číslic" -#: rapid/renamesubfolderprefs.py:269 +#: rapid/renamesubfolderprefs.py:271 msgid "Seven digits" msgstr "Sedm číslic" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:271 +#: rapid/renamesubfolderprefs.py:273 msgid "Subseconds" msgstr "Milisekundy" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:273 +#: rapid/renamesubfolderprefs.py:275 msgid "YYYYMMDD" msgstr "RRRRMMDD" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:275 +#: rapid/renamesubfolderprefs.py:277 msgid "YYYY-MM-DD" msgstr "RRRR-MM-DD" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:277 +#: rapid/renamesubfolderprefs.py:279 msgid "YYMMDD" msgstr "RRMMDD" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:279 +#: rapid/renamesubfolderprefs.py:281 msgid "YY-MM-DD" msgstr "RR-MM-DD" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:281 +#: rapid/renamesubfolderprefs.py:283 msgid "MMDDYYYY" msgstr "MMDDRRRR" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:283 +#: rapid/renamesubfolderprefs.py:285 msgid "MMDDYY" msgstr "MMDDRR" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:285 +#: rapid/renamesubfolderprefs.py:287 msgid "MMDD" msgstr "MMDD" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:287 +#: rapid/renamesubfolderprefs.py:289 msgid "DDMMYYYY" msgstr "DDMMRRRR" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:289 +#: rapid/renamesubfolderprefs.py:291 msgid "DDMMYY" msgstr "DDMMRR" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:291 +#: rapid/renamesubfolderprefs.py:293 msgid "YYYY" msgstr "RRRR" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:293 +#: rapid/renamesubfolderprefs.py:295 msgid "YY" msgstr "RR" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:295 +#: rapid/renamesubfolderprefs.py:297 msgid "MM" msgstr "MM" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:297 +#: rapid/renamesubfolderprefs.py:299 msgid "DD" msgstr "DD" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:299 +#: rapid/renamesubfolderprefs.py:301 msgid "HHMMSS" msgstr "HHMMSS" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:301 +#: rapid/renamesubfolderprefs.py:303 msgid "HHMM" msgstr "HHMM" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:303 +#: rapid/renamesubfolderprefs.py:305 msgid "HH-MM-SS" msgstr "HH-MM-SS" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:305 +#: rapid/renamesubfolderprefs.py:307 msgid "HH-MM" msgstr "HH-MM" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:307 +#: rapid/renamesubfolderprefs.py:309 msgid "HH" msgstr "HH" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:309 +#: rapid/renamesubfolderprefs.py:311 msgid "MM (minutes)" msgstr "MM (minuty)" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:311 +#: rapid/renamesubfolderprefs.py:313 msgid "SS" msgstr "SS" -#: rapid/renamesubfolderprefs.py:794 +#: rapid/renamesubfolderprefs.py:796 #, python-format msgid "" "Preference key '%(key)s' is invalid.\n" @@ -1387,64 +1424,26 @@ msgstr "" "Klíč nastavení '%(key)s' je invalidní\n" "Předpokládáno %(value)s" -#: rapid/renamesubfolderprefs.py:801 +#: rapid/renamesubfolderprefs.py:803 #, python-format msgid "Preference value '%(value)s' is invalid" msgstr "Hodnota nastavení '%(value)s' je invalidní" -#: rapid/renamesubfolderprefs.py:805 +#: rapid/renamesubfolderprefs.py:807 msgid "These preferences are not well formed:" msgstr "Tato nastavení nejsou správně utvořena:" -#: rapid/renamesubfolderprefs.py:934 -msgid "Subsecond metadata not present in photo" -msgstr "" - -#: rapid/renamesubfolderprefs.py:941 -#, python-format -msgid "%s metadata is not present" -msgstr "" - -#: rapid/renamesubfolderprefs.py:960 rapid/renamesubfolderprefs.py:968 -#: rapid/renamesubfolderprefs.py:977 -#, python-format -msgid "Error in date time component. Value %s appears invalid" -msgstr "Chyba v časovém komponentu. Hodnota %s se zdá invalidní" - -#: rapid/renamesubfolderprefs.py:1004 -msgid "extension was specified but filename does not have an extension" -msgstr "" - -#: rapid/renamesubfolderprefs.py:1008 -msgid "image or video number was specified but filename has no number" -msgstr "" - -#: rapid/renamesubfolderprefs.py:1081 -#, python-format -msgid "%s metadata is not present in photo" -msgstr "" - -#: rapid/renamesubfolderprefs.py:1194 -#, python-format -msgid "error generating name with component %s" -msgstr "chyba vygenerování jména s komponentem %s" - -#: rapid/renamesubfolderprefs.py:1450 -#, python-format -msgid "%s metadata is not present in video" -msgstr "" - -#: rapid/renamesubfolderprefs.py:1546 +#: rapid/renamesubfolderprefs.py:1517 #, python-format msgid "Subfolder preferences should not start with a %s" msgstr "Nastavení podsložky nemělo začít %s" -#: rapid/renamesubfolderprefs.py:1548 +#: rapid/renamesubfolderprefs.py:1519 #, python-format msgid "Subfolder preferences should not end with a %s" msgstr "Nastavení podsložky nemělo končit %s" -#: rapid/renamesubfolderprefs.py:1552 +#: rapid/renamesubfolderprefs.py:1523 #, python-format msgid "Subfolder preferences should not contain two %s one after the other" msgstr "Nastavení podsložky by nemělo obsahovat dvě %s za sebou" @@ -1494,118 +1493,114 @@ msgid "Job Codes" msgstr "Pracovní kódy" #: rapid/glade3/rapid.glade.h:12 -msgid "Missing Backup Devices" -msgstr "Chybějící zálohovací zařízení" - -#: rapid/glade3/rapid.glade.h:13 msgid "Photo Rename" msgstr "" -#: rapid/glade3/rapid.glade.h:14 +#: rapid/glade3/rapid.glade.h:13 msgid "Photo and Video Name Conflicts" msgstr "" -#: rapid/glade3/rapid.glade.h:15 +#: rapid/glade3/rapid.glade.h:14 msgid "Program Automation" msgstr "Automatizace programu" -#: rapid/glade3/rapid.glade.h:16 +#: rapid/glade3/rapid.glade.h:15 msgid "Sequence Numbers" msgstr "Sekvenční čísla" -#: rapid/glade3/rapid.glade.h:17 +#: rapid/glade3/rapid.glade.h:16 msgid "/media/externaldrive/Photos" msgstr "/media/externaldrive/Photos" -#: rapid/glade3/rapid.glade.h:18 +#: rapid/glade3/rapid.glade.h:17 msgid "Example: /home/user/Pictures" msgstr "" -#: rapid/glade3/rapid.glade.h:19 +#: rapid/glade3/rapid.glade.h:18 msgid "Example:" msgstr "Příklad:" -#: rapid/glade3/rapid.glade.h:20 +#: rapid/glade3/rapid.glade.h:19 msgid "New:" msgstr "Nový:" -#: rapid/glade3/rapid.glade.h:21 +#: rapid/glade3/rapid.glade.h:20 msgid "Original:" msgstr "Originál:" -#: rapid/glade3/rapid.glade.h:22 +#: rapid/glade3/rapid.glade.h:21 msgid "Automation" msgstr "Automatizace" -#: rapid/glade3/rapid.glade.h:23 +#: rapid/glade3/rapid.glade.h:22 msgid "Backup\t" msgstr "Záloha\t" -#: rapid/glade3/rapid.glade.h:24 +#: rapid/glade3/rapid.glade.h:23 msgid "Devices" msgstr "" -#: rapid/glade3/rapid.glade.h:25 +#: rapid/glade3/rapid.glade.h:24 msgid "Error Handling" msgstr "Chybová obsluha" -#: rapid/glade3/rapid.glade.h:26 +#: rapid/glade3/rapid.glade.h:25 msgid "Job Codes" msgstr "Pracovní kódy" -#: rapid/glade3/rapid.glade.h:27 +#: rapid/glade3/rapid.glade.h:26 msgid "Photo Download Folders" msgstr "" -#: rapid/glade3/rapid.glade.h:28 +#: rapid/glade3/rapid.glade.h:27 msgid "Photo Rename\t" msgstr "" -#: rapid/glade3/rapid.glade.h:29 +#: rapid/glade3/rapid.glade.h:28 msgid "Rename Options" msgstr "Možnosti přejmenování" -#: rapid/glade3/rapid.glade.h:30 +#: rapid/glade3/rapid.glade.h:29 msgid "Video Download Folders" msgstr "" -#: rapid/glade3/rapid.glade.h:31 +#: rapid/glade3/rapid.glade.h:30 msgid "Video Rename\t" msgstr "" -#: rapid/glade3/rapid.glade.h:32 +#: rapid/glade3/rapid.glade.h:31 msgid "Add unique identifier" msgstr "Přidat unikátní identifikátor" -#: rapid/glade3/rapid.glade.h:33 +#: rapid/glade3/rapid.glade.h:32 msgid "Automatically detect Portable Storage Devices" msgstr "Automatická detekce kapesních paměťových zařízení" -#: rapid/glade3/rapid.glade.h:34 +#: rapid/glade3/rapid.glade.h:33 msgid "Automatically detect backup devices" msgstr "Automatická detekce zálohovacích zařízení" -#: rapid/glade3/rapid.glade.h:35 +#: rapid/glade3/rapid.glade.h:34 msgid "Automatically detect devices" msgstr "" -#: rapid/glade3/rapid.glade.h:36 +#: rapid/glade3/rapid.glade.h:35 msgid "Automation" msgstr "Automatizace" -#: rapid/glade3/rapid.glade.h:37 +#: rapid/glade3/rapid.glade.h:36 msgid "Backup" msgstr "Záloha" -#: rapid/glade3/rapid.glade.h:38 +#: rapid/glade3/rapid.glade.h:37 msgid "Backup location:" msgstr "Umístění zálohy:" -#: rapid/glade3/rapid.glade.h:39 +#: rapid/glade3/rapid.glade.h:38 msgid "Backup photos and videos when downloading" msgstr "" -#: rapid/glade3/rapid.glade.h:40 +#: rapid/glade3/rapid.glade.h:39 msgid "" "Choose the download folder. Subfolders for the downloaded photos will be " "automatically created in this folder using the structure specified below." @@ -1613,34 +1608,29 @@ msgstr "" "Vyberte složku stahování. Podsložky pro stahované obrázky budou vytvořeny " "automaticky v této složce s použitím struktury specifikované níže." -#: rapid/glade3/rapid.glade.h:41 +#: rapid/glade3/rapid.glade.h:40 msgid "" "Choose the download folder. Subfolders for the downloaded videos will be " "automatically created in this folder using the structure specified below." msgstr "" -#: rapid/glade3/rapid.glade.h:42 -msgid "" -"Choose whether to skip downloading the file, or to add a unique indentifier." -msgstr "" - -#: rapid/glade3/rapid.glade.h:43 +#: rapid/glade3/rapid.glade.h:41 msgid "Copyright Damon Lynch 2007-10" msgstr "Copyright Damon Lynch 2007-10" -#: rapid/glade3/rapid.glade.h:44 +#: rapid/glade3/rapid.glade.h:42 msgid "Day start:" msgstr "Začátek dne:" -#: rapid/glade3/rapid.glade.h:45 +#: rapid/glade3/rapid.glade.h:43 msgid "Delete photos and videos from device upon download completion" msgstr "" -#: rapid/glade3/rapid.glade.h:46 +#: rapid/glade3/rapid.glade.h:44 msgid "Devices" msgstr "" -#: rapid/glade3/rapid.glade.h:47 +#: rapid/glade3/rapid.glade.h:45 msgid "" "Devices are from where to download photos and videos, such as cameras, " "memory cards or Portable Storage Devices.\n" @@ -1653,42 +1643,42 @@ msgid "" "reader." msgstr "" -#: rapid/glade3/rapid.glade.h:52 +#: rapid/glade3/rapid.glade.h:50 msgid "Download / Pause" msgstr "Stahování / Pauza" -#: rapid/glade3/rapid.glade.h:53 +#: rapid/glade3/rapid.glade.h:51 msgid "Download folder:" msgstr "Složka stahování:" -#: rapid/glade3/rapid.glade.h:54 +#: rapid/glade3/rapid.glade.h:52 msgid "Downloads today:" msgstr "Dnešní stahování:" -#: rapid/glade3/rapid.glade.h:55 +#: rapid/glade3/rapid.glade.h:53 msgid "Error Handling" msgstr "Chybová obsluha" -#: rapid/glade3/rapid.glade.h:56 +#: rapid/glade3/rapid.glade.h:54 msgid "Error Log" msgstr "Chybový záznam" -#: rapid/glade3/rapid.glade.h:57 +#: rapid/glade3/rapid.glade.h:55 msgid "Exit program if download completes without any warnings or errors" msgstr "" -#: rapid/glade3/rapid.glade.h:58 +#: rapid/glade3/rapid.glade.h:56 msgid "If you disable automatic detection, choose the exact backup location." msgstr "" "Máte-li zapnutou automatickou detekci, vyberte přesnou lokaci zálohy." -#: rapid/glade3/rapid.glade.h:59 +#: rapid/glade3/rapid.glade.h:57 msgid "" "If you disable automatic detection, choose the exact location of the images " "and videos." msgstr "" -#: rapid/glade3/rapid.glade.h:60 +#: rapid/glade3/rapid.glade.h:58 msgid "" "If you enable automatic detection of Portable Storage Devices, the entire " "device will be scanned for images. On large devices, this could take some " @@ -1698,47 +1688,51 @@ msgstr "" "budou z tohoto zařízení hledány obrázky. Na zařízeních s větší kapacitou to " "bude trvat déle." -#: rapid/glade3/rapid.glade.h:61 -msgid "Ignore" -msgstr "Ignoruj" - -#: rapid/glade3/rapid.glade.h:62 +#: rapid/glade3/rapid.glade.h:59 msgid "Import your photos and videos efficiently and reliably" msgstr "" -#: rapid/glade3/rapid.glade.h:63 +#: rapid/glade3/rapid.glade.h:60 msgid "Job Codes" msgstr "Pracovní kódy" -#: rapid/glade3/rapid.glade.h:64 +#: rapid/glade3/rapid.glade.h:61 msgid "Location:" msgstr "" -#: rapid/glade3/rapid.glade.h:65 +#: rapid/glade3/rapid.glade.h:62 msgid "Overwrite" msgstr "Přepsat" -#: rapid/glade3/rapid.glade.h:66 +#: rapid/glade3/rapid.glade.h:63 +msgid "P_review Columns" +msgstr "" + +#: rapid/glade3/rapid.glade.h:64 msgid "Photo Folders" msgstr "" -#: rapid/glade3/rapid.glade.h:67 +#: rapid/glade3/rapid.glade.h:65 msgid "Photo Rename" msgstr "" -#: rapid/glade3/rapid.glade.h:68 +#: rapid/glade3/rapid.glade.h:66 msgid "Photo backup folder name:" msgstr "" -#: rapid/glade3/rapid.glade.h:69 +#: rapid/glade3/rapid.glade.h:67 msgid "Preferences: Rapid Photo Downloader" msgstr "Nastavení: Rapid Photo Downloader" -#: rapid/glade3/rapid.glade.h:71 +#: rapid/glade3/rapid.glade.h:68 +msgid "Preview _Folders" +msgstr "" + +#: rapid/glade3/rapid.glade.h:70 msgid "R_emove All" msgstr "O_dstranit vše" -#: rapid/glade3/rapid.glade.h:73 +#: rapid/glade3/rapid.glade.h:72 msgid "" "Rapid Photo Downloader is free software; you can redistribute it and/or " "modify it under the terms of the GNU General Public License as published by " @@ -1766,33 +1760,49 @@ msgstr "" "Downloader. Pokud ji neobržíte napište na: Free Software Foundation, Inc, 51 " "Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." -#: rapid/glade3/rapid.glade.h:78 +#: rapid/glade3/rapid.glade.h:77 msgid "Rename Options" msgstr "Možnosti přejmenování" +#: rapid/glade3/rapid.glade.h:78 +msgid "Se_lect None" +msgstr "" + #: rapid/glade3/rapid.glade.h:79 -msgid "Report a warning" -msgstr "Nahlásit varování" +msgid "Select All Pho_tos" +msgstr "" #: rapid/glade3/rapid.glade.h:80 -msgid "Report an error" -msgstr "Nahlásit chybu" +msgid "Select All Vi_deos" +msgstr "" #: rapid/glade3/rapid.glade.h:81 +msgid "Select All Wit_h Job Code" +msgstr "" + +#: rapid/glade3/rapid.glade.h:82 +msgid "Select All Without _Job Code" +msgstr "" + +#: rapid/glade3/rapid.glade.h:83 +msgid "Select _All" +msgstr "" + +#: rapid/glade3/rapid.glade.h:84 msgid "Skip" msgstr "Vynechat" -#: rapid/glade3/rapid.glade.h:82 +#: rapid/glade3/rapid.glade.h:85 msgid "Skip download" msgstr "Vynechat stahování" -#: rapid/glade3/rapid.glade.h:83 +#: rapid/glade3/rapid.glade.h:86 msgid "" "Sorry, video downloading functionality disabled. To download videos, please " "install the kaa metadata package for python." msgstr "" -#: rapid/glade3/rapid.glade.h:84 +#: rapid/glade3/rapid.glade.h:87 msgid "" "Specify the folder in which backups are stored on the device. \n" "\n" @@ -1801,7 +1811,7 @@ msgid "" "a folder in it with one of these names." msgstr "" -#: rapid/glade3/rapid.glade.h:87 +#: rapid/glade3/rapid.glade.h:90 msgid "" "Specify the time in 24 hour format at which the Downloads today " "sequence number should be reset." @@ -1809,113 +1819,131 @@ msgstr "" "Specifikujte čas ve 24 hodinovém formátu aby mohlo být resetováno sekvenční " "číslo v Dnešní stahování." -#: rapid/glade3/rapid.glade.h:88 -msgid "" -"Specify what to do when a photo or video of the same name has already been " -"downloaded or backed up." -msgstr "" - -#: rapid/glade3/rapid.glade.h:89 -msgid "Specify what to do when there are no backup devices." -msgstr "" -"Specifikujte co se má dít, když když nejsou nalezena žádná zálohovací " -"zařízení." - -#: rapid/glade3/rapid.glade.h:90 +#: rapid/glade3/rapid.glade.h:91 msgid "" "Specify whether photo, video and folder names should have any characters " "removed that are not allowed by other operating systems." msgstr "" -#: rapid/glade3/rapid.glade.h:91 +#: rapid/glade3/rapid.glade.h:92 msgid "Start downloading at program startup" msgstr "Start stahování při startu programu" -#: rapid/glade3/rapid.glade.h:92 +#: rapid/glade3/rapid.glade.h:93 msgid "Start downloading upon device insertion" msgstr "" -#: rapid/glade3/rapid.glade.h:93 +#: rapid/glade3/rapid.glade.h:94 msgid "Stored number:" msgstr "Uskladněné číslo:" -#: rapid/glade3/rapid.glade.h:94 +#: rapid/glade3/rapid.glade.h:95 msgid "Strip incompatible characters" msgstr "Odstranit nekompatibilní znaky" -#: rapid/glade3/rapid.glade.h:95 +#: rapid/glade3/rapid.glade.h:96 msgid "Synchronize RAW + JPEG sequence numbers" msgstr "Synchronizovat sekvenční čísla RAW + JPEG" -#: rapid/glade3/rapid.glade.h:96 +#: rapid/glade3/rapid.glade.h:97 msgid "Unmount (\"eject\") device upon download completion" msgstr "" -#: rapid/glade3/rapid.glade.h:97 +#: rapid/glade3/rapid.glade.h:98 msgid "Video Folders" msgstr "" -#: rapid/glade3/rapid.glade.h:98 +#: rapid/glade3/rapid.glade.h:99 msgid "Video Rename" msgstr "" -#: rapid/glade3/rapid.glade.h:99 +#: rapid/glade3/rapid.glade.h:100 msgid "Video backup folder name:" msgstr "" -#: rapid/glade3/rapid.glade.h:100 +#: rapid/glade3/rapid.glade.h:101 +msgid "" +"When a photo or video of the same name has already been downloaded, choose " +"whether to skip downloading the file, or to add a unique indentifier." +msgstr "" + +#: rapid/glade3/rapid.glade.h:102 msgid "" "When backing up, choose whether to overwrite a file on the backup device " "that has the same name, or skip backing it up." msgstr "" -#: rapid/glade3/rapid.glade.h:101 +#: rapid/glade3/rapid.glade.h:103 msgid "" "You can have your photos and videos backed up to multiple locations as they " "are downloaded, e.g. external hard drives." msgstr "" -#: rapid/glade3/rapid.glade.h:102 +#: rapid/glade3/rapid.glade.h:104 msgid "_Add..." msgstr "_Přidat..." -#: rapid/glade3/rapid.glade.h:103 +#: rapid/glade3/rapid.glade.h:105 msgid "_Clear Completed Downloads" msgstr "_Vyčistit kompletní stahování" -#: rapid/glade3/rapid.glade.h:104 +#: rapid/glade3/rapid.glade.h:106 +msgid "_Device" +msgstr "" + +#: rapid/glade3/rapid.glade.h:107 msgid "_Error Log" msgstr "_Záznam chyb" -#: rapid/glade3/rapid.glade.h:105 +#: rapid/glade3/rapid.glade.h:108 +msgid "_File" +msgstr "" + +#: rapid/glade3/rapid.glade.h:109 +msgid "_Filename" +msgstr "" + +#: rapid/glade3/rapid.glade.h:110 msgid "_Get Help Online..." msgstr "_Nápověda online..." -#: rapid/glade3/rapid.glade.h:106 +#: rapid/glade3/rapid.glade.h:111 msgid "_Help" msgstr "_Nápověda" -#: rapid/glade3/rapid.glade.h:107 +#: rapid/glade3/rapid.glade.h:112 msgid "_Make a Donation..." msgstr "_Dejte příspěvek..." -#: rapid/glade3/rapid.glade.h:108 -msgid "_Photos" -msgstr "_Fotografie" +#: rapid/glade3/rapid.glade.h:113 +msgid "_Path" +msgstr "" -#: rapid/glade3/rapid.glade.h:109 +#: rapid/glade3/rapid.glade.h:114 +msgid "_Preview" +msgstr "" + +#: rapid/glade3/rapid.glade.h:115 msgid "_Report a Problem..." msgstr "_Ohlásit problém..." -#: rapid/glade3/rapid.glade.h:110 -msgid "_Thumbnails" -msgstr "_Náhledy" +#: rapid/glade3/rapid.glade.h:116 +msgid "_Select" +msgstr "" -#: rapid/glade3/rapid.glade.h:111 +#: rapid/glade3/rapid.glade.h:117 +msgid "_Size" +msgstr "" + +#: rapid/glade3/rapid.glade.h:118 msgid "_Translate this Application..." msgstr "_Přeložit tuto aplikaci..." -#: rapid/glade3/rapid.glade.h:112 +#: rapid/glade3/rapid.glade.h:119 +msgid "_Type" +msgstr "" + +#: rapid/glade3/rapid.glade.h:120 msgid "_View" msgstr "_Zobrazení" @@ -1950,9 +1978,20 @@ msgstr "_Zobrazení" #~ msgid "%s images downloaded" #~ msgstr "%s obrázků staženo" +#, python-format +#~ msgid "Source: %s" +#~ msgstr "Zdroj: %s" + +#, python-format +#~ msgid "Unique identifier '%s' added" +#~ msgstr "Unikátní identifikátor '%s' přidán" + #~ msgid "The image was not copied." #~ msgstr "Obrázek nebyl okopírován." +#~ msgid "Backup device missing" +#~ msgstr "Zálohovací zařízení chybí" + #~ msgid "No backup device was detected." #~ msgstr "Zálohovací zařízení nebylo detekováno." @@ -1965,15 +2004,30 @@ msgstr "_Zobrazení" #~ msgid "images skipped" #~ msgstr "obrázky přeskočeny" +#~ msgid "_Download " +#~ msgstr "_Stažení " + #~ msgid "images downloaded" #~ msgstr "obrázky staženy" +#~ msgid "Download copying error" +#~ msgstr "Chyba kopírování obrázků" + +#~ msgid "_Photos" +#~ msgstr "_Fotografie" + +#~ msgid "_Thumbnails" +#~ msgstr "_Náhledy" + #~ msgid "Image location:" #~ msgstr "Umístění obrázku:" #~ msgid "Image Rename" #~ msgstr "Přejmenování obrázku" +#~ msgid "Ignore" +#~ msgstr "Ignoruj" + #~ msgid "Copyright Damon Lynch 2007-09" #~ msgstr "Copyright Damon Lynch 2007-09" @@ -1995,6 +2049,12 @@ msgstr "_Zobrazení" #~ msgid "Example: /home/user/photos" #~ msgstr "Příklad: /home/user/photos" +#~ msgid "Report an error" +#~ msgstr "Nahlásit chybu" + +#~ msgid "Report a warning" +#~ msgstr "Nahlásit varování" + #~ msgid "Error in Download Subfolder preferences" #~ msgstr "Chyba v nastavení stahovací podsložky" @@ -2008,6 +2068,9 @@ msgstr "_Zobrazení" #~ msgid "Image has no thumbnail" #~ msgstr "Obrázek nemá náhled" +#~ msgid "Preferences were changed." +#~ msgstr "Nastavení změněno" + #~ msgid "Image Name Conflicts" #~ msgstr "Konflikt jmen obrázků" @@ -2023,6 +2086,13 @@ msgstr "_Zobrazení" #~ msgid "Image Devices" #~ msgstr "Obrázková zařízení" +#~ msgid "Missing Backup Devices" +#~ msgstr "Chybějící zálohovací zařízení" + +#, python-format +#~ msgid "error generating name with component %s" +#~ msgstr "chyba vygenerování jména s komponentem %s" + #~ msgid "Image Devices" #~ msgstr "Obrázková zařízení" @@ -2041,6 +2111,14 @@ msgstr "_Zobrazení" #~ msgid "Exit program after completion of successful download" #~ msgstr "Odejít z programu když bude stahování hotovo" +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Problem: %(problem)s" +#~ msgstr "" +#~ "Zdroj: %(source)s\n" +#~ "Problém: %(problem)s" + #, python-format #~ msgid "" #~ "Source: %(source)s\n" @@ -2051,6 +2129,16 @@ msgstr "_Zobrazení" #~ "Destinace: %(destination)s\n" #~ "Problém: %(problem)s" +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Destination: %(destination)s\n" +#~ "Error: %(errno)s %(strerror)s" +#~ msgstr "" +#~ "Zdroj: %(source)s\n" +#~ "Destinace: %(destination)s\n" +#~ "Chyba: %(errno)s %(strerror)s" + #, python-format #~ msgid "" #~ "Destination directory could not be created\n" @@ -2061,6 +2149,16 @@ msgstr "_Zobrazení" #~ "%(directory)s\n" #~ "Chyba: %(errno)s %(strerror)s" +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Destination: %(destination)s\n" +#~ "Error: %(errorno)s %(strerror)s" +#~ msgstr "" +#~ "Zdroj: %(source)s\n" +#~ "Destinace: %(destination)s\n" +#~ "Chyba: %(errorno)s %(strerror)s" + #, python-format #~ msgid "" #~ "Subfolder: %(subfolder)s\n" @@ -2090,6 +2188,9 @@ msgstr "_Zobrazení" #~ "lze vygenerovat název. Pokud chcete obrázek přejmenovat použijte nastavení " #~ "přejmenování." +#~ msgid "It may be corrupted" +#~ msgstr "Toto může být poškozeno" + #~ msgid "" #~ "Warning: There is insufficient image metadata to fully generate " #~ "subfolders. Please use other subfolder naming options." @@ -2119,9 +2220,18 @@ msgstr "_Zobrazení" #~ "Metadata jsou základy pro generování podsložek / jmen obrázků.\n" #~ "Zdroj: %s" +#, python-format +#~ msgid "Error in date time component. Value %s appears invalid" +#~ msgstr "Chyba v časovém komponentu. Hodnota %s se zdá invalidní" + #~ msgid "Subsecond metadata not present in image" #~ msgstr "Metadata subsekund neprezentují obrázek" +#~ msgid "Specify what to do when there are no backup devices." +#~ msgstr "" +#~ "Specifikujte co se má dít, když když nejsou nalezena žádná zálohovací " +#~ "zařízení." + #~ msgid "" #~ "The subfolder preferences entered are invalid and cannot be used.\n" #~ "They will be reset to their default values." @@ -2192,9 +2302,15 @@ msgstr "_Zobrazení" #~ msgid "Image has no metadata" #~ msgstr "Obrázek nemá metadata" +#~ msgid "Enter a new job code." +#~ msgstr "Vložte nový pracovní kód." + #~ msgid "Should this device or partition be used to download images from?" #~ msgstr "Máte zařízení či oddíl určený ke stažení?" +#~ msgid "Enter a new job code, or select a previous one." +#~ msgstr "Vložte nový pracovní kód, nebo vyberte předchozí." + #~ msgid "" #~ "Specify the folder in which backups are stored on the device. \n" #~ "\n" @@ -2261,6 +2377,26 @@ msgstr "_Zobrazení" #~ msgid "Image device: %s\n" #~ msgstr "Obrázkové zařízení: %s\n" +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Partially generated filename: %(newname)s\n" +#~ "Destination: %(destination)s\n" +#~ "Problem: %(problem)s" +#~ msgstr "" +#~ "Zdroj: %(source)s\n" +#~ "Částečně vygenerovaný název souboru: %(newname)s\n" +#~ "Destinace: %(destination)s\n" +#~ "Problém: %(problem)s" + +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Destination: %(destination)s\n" +#~ msgstr "" +#~ "Zdroj: %(source)s\n" +#~ "Destinace: %(destination)s\n" + #~ msgid "Problem with Image Location Folder" #~ msgstr "Problém s lokací obrázkové složky" @@ -2289,3 +2425,18 @@ msgstr "_Zobrazení" #~ "%(path)s\n" #~ "\n" #~ "Prosím vyřešte problém či upravte nastavení." + +#, python-format +#~ msgid "%(filetype)s has no metadata" +#~ msgstr "%(filetype)s nemá metadata" + +#, python-format +#~ msgid "%(noFiles)s %(filetypes)s skipped" +#~ msgstr "%(noFiles)s %(filetypes)s přeskočeno" + +#, python-format +#~ msgid "Could not open %(filetype)s" +#~ msgstr "Nemohu otevřít %(filetype)s" + +#~ msgid "No backup device was automatically detected" +#~ msgstr "Automaticky nebylo detekováno žádné zálohovací zařízení" diff --git a/po/de.po b/po/de.po index 5d66ac9..c4df95b 100644 --- a/po/de.po +++ b/po/de.po @@ -7,160 +7,160 @@ msgid "" msgstr "" "Project-Id-Version: rapid\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2010-05-27 22:33-0500\n" -"PO-Revision-Date: 2010-05-28 04:58+0000\n" +"POT-Creation-Date: 2010-07-02 22:51-0500\n" +"PO-Revision-Date: 2010-07-06 20:01+0000\n" "Last-Translator: Damon Lynch \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-05-28 19:08+0000\n" +"X-Launchpad-Export-Date: 2010-07-09 17:32+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Translators: if neccessary, for guidance in how to translate this program, you may see http://damonlynch.net/translate.html -#: rapid/rapid.py:104 rapid/rapid.py:4447 rapid/glade3/rapid.glade.h:72 +#: rapid/rapid.py:122 rapid/rapid.py:6181 rapid/glade3/rapid.glade.h:71 msgid "Rapid Photo Downloader" msgstr "Rapid Photo Downloader" -#: rapid/rapid.py:394 +#: rapid/rapid.py:449 msgid "New York" msgstr "New York" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Manila" msgstr "Manila" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Prague" msgstr "Prag" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Helsinki" msgstr "Helsinki" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Wellington" msgstr "Wellington" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Tehran" msgstr "Teheran" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Kampala" msgstr "Kampala" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Paris" msgstr "Paris" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Berlin" msgstr "Berlin" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Sydney" msgstr "Sydney" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Budapest" msgstr "Budapest" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Rome" msgstr "Rom" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Moscow" msgstr "Moskau" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Delhi" msgstr "Delhi" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Warsaw" msgstr "Warschau" -#: rapid/rapid.py:398 +#: rapid/rapid.py:453 msgid "Jakarta" msgstr "Jakarta" -#: rapid/rapid.py:398 +#: rapid/rapid.py:453 msgid "Madrid" msgstr "Madrid" -#: rapid/rapid.py:398 +#: rapid/rapid.py:453 msgid "Stockholm" msgstr "Stockholm" -#: rapid/rapid.py:425 +#: rapid/rapid.py:486 msgid "Invalid Downloads Today value.\n" msgstr "Anzahl der ungültigen Downloads von heute.\n" -#: rapid/rapid.py:426 +#: rapid/rapid.py:487 msgid "Resetting value to zero.\n" msgstr "Wert wird auf Null zurückgesetzt.\n" -#: rapid/rapid.py:465 +#: rapid/rapid.py:526 msgid "'Start of day' preference value is corrupted.\n" msgstr "Der Vorgabewert für 'Start des Tages' ist ungültig.\n" -#: rapid/rapid.py:466 +#: rapid/rapid.py:527 msgid "Resetting to midnight.\n" msgstr "Die Zeit wird auf Mitternacht zurückgesetzt.\n" -#: rapid/rapid.py:492 +#: rapid/rapid.py:553 msgid "Error in Photo Rename preferences" msgstr "Fehler in den Vorgaben zur Umbennennung von Bildern" -#: rapid/rapid.py:523 rapid/rapid.py:1567 +#: rapid/rapid.py:584 rapid/rapid.py:1689 msgid "Sorry,these preferences contain an error:\n" msgstr "Entschuldigung, diese Voreinstellungen enthalten einen Fehler:\n" -#: rapid/rapid.py:534 +#: rapid/rapid.py:595 msgid "Resetting to default values." msgstr "Die Voreinstellungen werden auf die Standardwerte zurückgesetzt." #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:609 rapid/renamesubfolderprefs.py:196 +#: rapid/rapid.py:670 rapid/renamesubfolderprefs.py:198 msgid "Job code" msgstr "Auftragsbezeichnung" -#: rapid/rapid.py:677 +#: rapid/rapid.py:738 msgid "Error in Video Rename preferences" msgstr "Fehler in den Vorgaben zur Umbennennung von Filmen" -#: rapid/rapid.py:695 +#: rapid/rapid.py:756 msgid "Error in Photo Download Subfolders preferences" msgstr "Fehler in den Vorgaben für Bilder-Downloadunterordner" -#: rapid/rapid.py:712 +#: rapid/rapid.py:773 msgid "Error in Video Download Subfolders preferences" msgstr "Fehler in den Vorgaben zur Filme-Downloadunterordner" -#: rapid/rapid.py:745 rapid/rapid.py:1492 +#: rapid/rapid.py:806 rapid/rapid.py:1539 msgid "photos and videos" msgstr "BIlder und Filme" -#: rapid/rapid.py:747 rapid/rapid.py:1502 rapid/rapid.py:1782 +#: rapid/rapid.py:808 rapid/rapid.py:1549 rapid/rapid.py:1658 msgid "photos" msgstr "Bilder" -#: rapid/rapid.py:880 +#: rapid/rapid.py:943 msgid "Select a folder to download photos to" msgstr "Wählen Sie ein Verzeichnis für den Download der Bilder" -#: rapid/rapid.py:898 +#: rapid/rapid.py:961 msgid "Select a folder to download videos to" msgstr "Wählen Sie einen Ordner für den Download von Filmen" -#: rapid/rapid.py:980 +#: rapid/rapid.py:1043 #, python-format msgid "Select a folder containing %(file_types)s" msgstr "Wählen Sie einen Ordner welcher %(file_types)s enthält" -#: rapid/rapid.py:1002 +#: rapid/rapid.py:1065 #, python-format msgid "Select a folder in which to backup %(file_types)s" msgstr "" @@ -168,7 +168,7 @@ msgstr "" "erstellt werden soll" #. Translators: please do not modify or leave out html formatting tags like and . These are used to format the text the users sees -#: rapid/rapid.py:1095 +#: rapid/rapid.py:1146 msgid "" "Warning: There is insufficient metadata to fully generate the " "name. Please use other renaming options." @@ -176,7 +176,7 @@ msgstr "" "Warnung: There is insufficient metadata to fully generate the " "name. Please use other renaming options." -#: rapid/rapid.py:1129 +#: rapid/rapid.py:1182 msgid "" "Warning: There is insufficient metadata to fully generate " "subfolders. Please use other subfolder naming options." @@ -186,25 +186,25 @@ msgstr "" "Benennung der Unterordner." #. Translators: you should not modify or leave out the %s. This is a code used by the programming language python to insert a value that thes user will see -#: rapid/rapid.py:1133 +#: rapid/rapid.py:1186 #, python-format msgid "Example: %s" msgstr "Beispiel: %s" -#: rapid/rapid.py:1159 +#: rapid/rapid.py:1212 msgid "" "Downloads today value not updated, as a download is currently occurring" msgstr "" "Der Wert für heutige Downloads wurde nicht aktualisiert, da gerade ein " "Download stattfindet" -#: rapid/rapid.py:1175 +#: rapid/rapid.py:1228 msgid "Stored number value not updated, as a download is currently occurring" msgstr "" "Der Wert für gespeicherte Anzahl wurde nicht aktualisiert, da gerade ein " "Download stattfindet" -#: rapid/rapid.py:1205 +#: rapid/rapid.py:1258 #, python-format msgid "" "The %(filetype)s subfolder preferences had some unnecessary values removed." @@ -213,7 +213,7 @@ msgstr "" "entfernt." #. Preferences list is now empty -#: rapid/rapid.py:1210 +#: rapid/rapid.py:1263 #, python-format msgid "" "The %(filetype)s subfolder preferences entered are invalid and cannot be " @@ -225,59 +225,95 @@ msgstr "" "Sie werden auf die Standardwerte zurückgesetzt." #. check subfolder preferences for bad values -#: rapid/rapid.py:1224 rapid/rapid.py:1504 rapid/rapid.py:2533 +#: rapid/rapid.py:1277 rapid/rapid.py:1551 msgid "photo" msgstr "Bild" -#: rapid/rapid.py:1225 rapid/rapid.py:1499 rapid/rapid.py:2541 +#: rapid/rapid.py:1278 rapid/rapid.py:1546 msgid "video" msgstr "Film" #. Translators: this value is used as an example device when automatic backup device detection is enabled. You should translate this. -#: rapid/rapid.py:1468 +#: rapid/rapid.py:1515 msgid "externaldrive1" msgstr "ExternesLaufwerk1" #. Translators: this value is used as an example device when automatic backup device detection is enabled. You should translate this. -#: rapid/rapid.py:1470 +#: rapid/rapid.py:1517 msgid "externaldrive2" msgstr "ExternesLaufwerk2" -#: rapid/rapid.py:1494 rapid/rapid.py:1780 +#: rapid/rapid.py:1541 rapid/rapid.py:1656 msgid "photos or videos" msgstr "Bilder oder Filme" -#: rapid/rapid.py:1497 +#: rapid/rapid.py:1544 msgid "videos" msgstr "Filme" +#: rapid/rapid.py:1556 +#, python-format +msgid "" +"%(date)s\n" +"%(time)s" +msgstr "" +"%(date)s\n" +"%(time)s" + +#: rapid/rapid.py:1558 +#, python-format +msgid "%(date)s %(time)s" +msgstr "%(date)s %(time)s" + +#: rapid/rapid.py:1561 +#, python-format +msgid "%(hour)s:%(minute)s:%(second)s:%(subsecond)s" +msgstr "%(hour)s:%(minute)s:%(second)s:%(subsecond)s" + +#: rapid/rapid.py:1568 +#, python-format +msgid "%(date)s %(hour)s:%(minute)s:%(second)s:%(subsecond)s" +msgstr "%(date)s %(hour)s:%(minute)s:%(second)s:%(subsecond)s" + +#: rapid/rapid.py:1596 rapid/rapid.py:2242 +msgid "subfolder and filename" +msgstr "Unterordner und Dateiname" + +#: rapid/rapid.py:1598 rapid/rapid.py:2244 +msgid "filename" +msgstr "Dateiname" + +#: rapid/rapid.py:1600 rapid/rapid.py:2246 +msgid "subfolder" +msgstr "Unterordner" + #. This refers to when a device like a hard drive is having its contents scanned, #. looking for photos or videos. It is visible initially in the progress bar for each device -#. (which normally holds "x of y photos"). +#. (which normally holds "x photos and videos"). #. It maybe displayed only briefly if the contents of the device being scanned is small. -#: rapid/rapid.py:1556 +#: rapid/rapid.py:1672 msgid "scanning..." msgstr "Überprüfe Laufwerke ..." -#: rapid/rapid.py:1663 +#: rapid/rapid.py:1783 msgid "The following download path could not be created:\n" msgstr "Der folgende Downloadpfad konnte nicht erstellt werden::\n" -#: rapid/rapid.py:1664 +#: rapid/rapid.py:1784 #, python-format msgid "%(path)s: " msgstr "%(path)s: " -#: rapid/rapid.py:1665 rapid/rapid.py:1666 rapid/rapid.py:1681 -#: rapid/rapid.py:1682 rapid/rapid.py:2364 rapid/rapid.py:2367 +#: rapid/rapid.py:1785 rapid/rapid.py:1786 rapid/rapid.py:1801 +#: rapid/rapid.py:1802 rapid/rapid.py:2063 rapid/rapid.py:2066 msgid "Download cannot proceed" msgstr "Der Download kann nicht weitergeführt werden" -#: rapid/rapid.py:1679 rapid/rapid.py:3381 +#: rapid/rapid.py:1799 rapid/rapid.py:4846 msgid "There is an error in the program preferences." msgstr "Fehler in den Programmvoreinstellungen." -#: rapid/rapid.py:1680 +#: rapid/rapid.py:1800 msgid "" "\n" "Please check preferences, restart the program, and try again." @@ -290,10 +326,10 @@ msgstr "" #. It refers to the actual number of photos that can be copied. For example, the user might see the following: #. '0 of 512 photos' or '0 of 10 videos' or '0 of 202 photos and videos'. #. This particular text is displayed to the user before the download has started. -#: rapid/rapid.py:1791 +#: rapid/rapid.py:1974 #, python-format -msgid "0 of %(number)s %(filetypes)s" -msgstr "0 von %(number)s %(filetypes)s" +msgid "%(number)s %(filetypes)s" +msgstr "%(number)s %(filetypes)s" #. Translators: as you have already seen, the text can contain values that should not be modified or left out by you, for example %s. #. This text is another example of that, but it is is a little more complex. Here there are two values which will be displayed @@ -301,351 +337,216 @@ msgstr "0 von %(number)s %(filetypes)s" #. %(number)s should be left exactly as is: 'number' should not be translated. The same applies to %(device)s: 'device' should #. not be translated. Generally speaking, if translating the sentence requires it, you can move items like '%(xyz)s' around #. in a sentence, but you should never modify them or leave them out. -#: rapid/rapid.py:1803 +#: rapid/rapid.py:1985 #, python-format msgid "Device scan complete: found %(number)s %(filetypes)s on %(device)s" msgstr "" "Durchsuchen der Laufwerke abgeschlossen: %(number)s %(filetypes)s gefunden " "auf %(device)s" -#: rapid/rapid.py:1810 +#: rapid/rapid.py:1992 #, python-format msgid "Device scan complete: no %(filetypes)s found on %(device)s" msgstr "" "Durchsuchen der Laufwerke abgeschlossen: Keine %(filetypes)s gefunden auf " "%(device)s" -#: rapid/rapid.py:1844 -#, python-format -msgid "%(filetype)s filename could not be generated" -msgstr "%(filetype)s Dateiname konnte nicht erstellt werden" +#. This message informs the user that the device (e.g. camera, hard drive or memory card) was automatically unmounted and they can now remove it +#: rapid/rapid.py:2013 +msgid "The device can now be safely removed" +msgstr "Das Laufwerk kann nun entfernt werden" -#. '%(source)s' and '%(problem)s' are two more examples of text that should not be modified or left out -#: rapid/rapid.py:1846 +#: rapid/rapid.py:2019 #, python-format -msgid "" -"Source: %(source)s\n" -"Problem: %(problem)s" -msgstr "" -"Quelle: %(source)s\n" -"Problem: %(problem)s" +msgid "%(noFiles)s %(filetypes)s downloaded" +msgstr "%(noFiles)s %(filetypes)s heruntergeladen" -#: rapid/rapid.py:1850 +#: rapid/rapid.py:2022 #, python-format -msgid "" -"%(filetype)s filename could not be properly generated. Check to ensure there " -"is sufficient metadata." -msgstr "" -"%(filetype)s Dateiname konnte nicht richtig erstellt werden. Bitte " -"überprüfen Sie die Vollständigkeit der Metadaten." +msgid "%(noFiles)s %(filetypes)s failed to download" +msgstr "%(noFiles)s %(filetypes)s konnten nicht heruntergeladen werden" -#: rapid/rapid.py:1851 +#: rapid/rapid.py:2028 rapid/rapid.py:5627 +msgid "warnings" +msgstr "Warnungen" + +#: rapid/rapid.py:2030 rapid/rapid.py:5631 +msgid "errors" +msgstr "Fehler" + +#: rapid/rapid.py:2057 #, python-format -msgid "" -"Source: %(source)s\n" -"Partially generated filename: %(newname)s\n" -"Destination: %(destination)s\n" -"Problem: %(problem)s" -msgstr "" -"Quelle: %(source)s\n" -"Teilweise erstellter Dateiname: %(newname)s\n" -"Ziel: %(destination)s\n" -"Problem: %(problem)s" +msgid "Source: %s\n" +msgstr "Quelle: %s\n" -#: rapid/rapid.py:1859 rapid/rapid.py:1864 rapid/rapid.py:1883 -#: rapid/rapid.py:2207 +#: rapid/rapid.py:2059 #, python-format -msgid "" -"Source: %(source)s\n" -"Destination: %(destination)s" -msgstr "" -"Quelle: %(source)s\n" -"Ziel: %(destination)s" +msgid "Device: %s\n" +msgstr "Laufwerk: %s\n" -#: rapid/rapid.py:1861 +#: rapid/rapid.py:2060 #, python-format -msgid "Unique identifier '%s' added" -msgstr "Die eindeutige Bezeichnung '%s' wurde hinzugefügt" +msgid "Destination: %s" +msgstr "Ziel: %s" + +#: rapid/rapid.py:2061 rapid/rapid.py:2064 +msgid "Could not create temporary download directory" +msgstr "Temporäres Download-Verzeichnis konnte nicht erstellt werden" + +#: rapid/rapid.py:2064 +msgid "Error:" +msgstr "Fehler:" -#: rapid/rapid.py:1869 rapid/rapid.py:2270 +#: rapid/rapid.py:2088 +msgid "Backup path does not exist" +msgstr "Der Pfad zum Sicherungsverzeichnis ist ungültig" + +#: rapid/rapid.py:2089 #, python-format -msgid "Source: %(source)s" -msgstr "Quelle: %(source)s" +msgid "The path %s could not be created" +msgstr "Der Pfad %s konnte nicht erstellt werden" -#: rapid/rapid.py:1877 rapid/rapid.py:1882 -msgid "Download copying error" -msgstr "Fehler beim Kopieren" +#: rapid/rapid.py:2090 +msgid "No backups can occur" +msgstr "Es können keine Sicherungskopien erstellt werden" -#: rapid/rapid.py:1878 +#: rapid/rapid.py:2117 #, python-format msgid "" "Source: %(source)s\n" "Destination: %(destination)s\n" -"Error: %(errorno)s %(strerror)s" +"%(problem)s" msgstr "" "Quelle: %(source)s\n" "Ziel: %(destination)s\n" -"Fehler: %(errorno)s %(strerror)s" - -#: rapid/rapid.py:1880 rapid/rapid.py:1885 -#, python-format -msgid "The %(filetype)s was not copied." -msgstr "Die %(filetype)s wurde nicht kopiert." - -#: rapid/rapid.py:1889 -msgid "" -"Photos detected with the same filenames, but taken at different times:" -msgstr "" -"Bilder mit identischen Dateinamen aber unterschiedlichen Aufnahmezeiten " -"wurden gefunden:" +"%(problem)s" -#: rapid/rapid.py:1890 +#: rapid/rapid.py:2146 rapid/rapid.py:2492 rapid/rapid.py:2527 +#: rapid/rapid.py:2555 rapid/rapid.py:2586 rapid/rapid.py:2605 #, python-format msgid "" -"First photo: %(image1)s %(image1_date_time)s:%(image1_subseconds)s\n" -"Second photo: %(image2)s %(image2_date_time)s:%(image2_subseconds)s" +"Source: %(source)s\n" +"Destination: %(destination)s" msgstr "" -"Erstes Bild: %(image1)s %(image1_date_time)s:%(image1_subseconds)s\n" -"Zweites Bild: %(image2)s %(image2_date_time)s:%(image2_subseconds)s" - -#: rapid/rapid.py:1914 rapid/rapid.py:1927 -#, python-format -msgid "Could not open %(filetype)s" -msgstr "Konnte %(filetype)s nicht öffnen" - -#: rapid/rapid.py:1915 rapid/rapid.py:1928 -#, python-format -msgid "Source: %s" -msgstr "Quelle: %s" +"Quelle: %(source)s\n" +"Ziel: %(destination)s" -#: rapid/rapid.py:1950 -#, python-format -msgid "%(filetype)s has no metadata" -msgstr "%(filetype)s enthält keine Metadaten" +#. hopefully inst will never be None, but just to be safe... +#: rapid/rapid.py:2161 +msgid "Please check your system and try again." +msgstr "Bitte überprüfen Sie Ihr System und versuchen Sie es erneut" -#: rapid/rapid.py:1951 -#, python-format -msgid "" -"Metadata is essential for generating subfolder and/or file names.\n" -"Source: %s" +#: rapid/rapid.py:2181 +msgid "Photos detected with the same filenames, but taken at different times" msgstr "" -"Metadata sind notwendig für die Erstellung von Unterordnern und/oder " -"Dateinamen.\n" -"Quelle: %s" +"Bilder mit gleichem Dateinamen aber unterschiedlichen Aufnahmezeiten gefunden" -#: rapid/rapid.py:1962 -msgid "" -"Subfolder name could not be properly generated. Check to ensure there is " -"sufficient metadata." -msgstr "" -"Die Namen der Unterordner konnten nicht erstellt werden. Bitte überprüfen " -"Sie die Vollständigkeit der metadaten." +#: rapid/rapid.py:2221 +msgid "Photo has already been downloaded" +msgstr "Das Bild wurde bereits heruntergeladen" -#: rapid/rapid.py:1963 +#: rapid/rapid.py:2222 rapid/rapid.py:2621 #, python-format -msgid "" -"Subfolder: %(subfolder)s\n" -"File: %(file)s\n" -"Problem: %(problem)s" -msgstr "" -"Unterordner: %(subfolder)s\n" -"Datei: %(file)s\n" -"Problem: %(problem)s" +msgid "Source: %(source)s" +msgstr "Quelle: %(source)s" #. A new day, according the user's preferences of what time a day begins, has started -#: rapid/rapid.py:2147 +#: rapid/rapid.py:2420 msgid "New day has started - resetting 'Downloads Today' sequence number" msgstr "" "Ein neuer Tag hat begonnen - die Anzahl der 'Downloads Heute' wird " "zurückgesetzt" -#: rapid/rapid.py:2206 +#: rapid/rapid.py:2491 #, python-format msgid "Backup of %(file_type)s already exists" msgstr "Sicherungskopie von %(file_type)s exisiert bereits" -#: rapid/rapid.py:2210 +#: rapid/rapid.py:2495 #, python-format msgid "Backup %(file_type)s overwritten" msgstr "Sicherungskopie %(file_type)s wurde überschrieben" -#: rapid/rapid.py:2215 +#: rapid/rapid.py:2499 #, python-format msgid "%(file_type)s not backed up to %(volume)s" msgstr "%(file_type)s konnte nicht auf %(volume)s gesichert werden" -#: rapid/rapid.py:2217 +#: rapid/rapid.py:2501 #, python-format msgid "%(file_type)s not backed up" msgstr "%(file_type)s wurde nicht gesichert" -#: rapid/rapid.py:2243 rapid/rapid.py:2260 +#: rapid/rapid.py:2524 rapid/rapid.py:2552 rapid/rapid.py:2585 +#: rapid/rapid.py:2604 msgid "Backing up error" msgstr "Fehler beim Erstellen der Sicherungskopie" -#: rapid/rapid.py:2244 +#: rapid/rapid.py:2525 rapid/rapid.py:2553 #, python-format msgid "Destination directory could not be created: %(directory)s\n" msgstr "Das Zielverzeichnis konnte nicht erstellt werden: %(directory)s\n" -#: rapid/rapid.py:2246 -#, python-format -msgid "" -"Source: %(source)s\n" -"Destination: %(destination)s\n" -msgstr "" -"Quelle: %(source)s\n" -"Ziel: %(destination)s\n" - -#: rapid/rapid.py:2248 +#: rapid/rapid.py:2529 rapid/rapid.py:2588 #, python-format -msgid "Error: %(errno)s %(strerror)s" -msgstr "Fehler: %(errno)s %(strerror)s" +msgid "Error: %(inst)s" +msgstr "Fehler: %(inst)s" -#: rapid/rapid.py:2249 rapid/rapid.py:2263 +#: rapid/rapid.py:2530 rapid/rapid.py:2558 rapid/rapid.py:2589 +#: rapid/rapid.py:2608 #, python-format msgid "The %(file_type)s was not backed up." msgstr "%(file_type)s wurde nicht gesichert." -#: rapid/rapid.py:2261 +#: rapid/rapid.py:2557 rapid/rapid.py:2607 #, python-format -msgid "" -"Source: %(source)s\n" -"Destination: %(destination)s\n" -"Error: %(errno)s %(strerror)s" -msgstr "" -"Quelle: %(source)s\n" -"Ziel: %(destination)s\n" -"Fehler: %(errno)s %(strerror)s" +msgid "Error: %(errno)s %(strerror)s" +msgstr "Fehler: %(errno)s %(strerror)s" -#: rapid/rapid.py:2269 +#: rapid/rapid.py:2620 #, python-format msgid "%(file_type)s could not be backed up" msgstr "%(file_type)s konnte nicht gesichert werden" -#: rapid/rapid.py:2272 +#: rapid/rapid.py:2623 msgid "No suitable backup volume was found" msgstr "Es wurde kein verwendbares Sicherungslaufwerk gefunden" -#: rapid/rapid.py:2274 +#: rapid/rapid.py:2625 msgid "A backup location was not found" msgstr "Es wurde kein Sicherungsverzeichnis gefunden" -#. This message informs the user that the device (e.g. camera, hard drive or memory card) was automatically unmounted and they can now remove it -#: rapid/rapid.py:2288 -msgid "The device can now be safely removed" -msgstr "Das Laufwerk kann nun entfernt werden" - -#: rapid/rapid.py:2294 -#, python-format -msgid "%(noFiles)s %(filetypes)s downloaded" -msgstr "%(noFiles)s %(filetypes)s heruntergeladen" - -#: rapid/rapid.py:2297 -#, python-format -msgid "%(noFiles)s %(filetypes)s skipped" -msgstr "%(noFiles)s %(filetypes)s übersprungen" - -#: rapid/rapid.py:2303 rapid/rapid.py:4027 -msgid "warnings" -msgstr "Warnungen" - -#: rapid/rapid.py:2305 rapid/rapid.py:4029 -msgid "errors" -msgstr "Fehler" - -#: rapid/rapid.py:2331 rapid/rapid.py:2823 rapid/rapid.py:2838 -msgid "Photo thumbnail could not be extracted" -msgstr "Das Vorschaubild konnte nicht angezeigt werden" - -#: rapid/rapid.py:2358 -#, python-format -msgid "Source: %s\n" -msgstr "Quelle: %s\n" - -#: rapid/rapid.py:2360 -#, python-format -msgid "Device: %s\n" -msgstr "Laufwerk: %s\n" - -#: rapid/rapid.py:2361 -#, python-format -msgid "Destination: %s" -msgstr "Ziel: %s" - -#: rapid/rapid.py:2362 rapid/rapid.py:2365 -msgid "Could not create temporary download directory" -msgstr "Temporäres Download-Verzeichnis konnte nicht erstellt werden" - -#: rapid/rapid.py:2365 -msgid "Error:" -msgstr "Fehler:" - -#: rapid/rapid.py:2382 +#: rapid/rapid.py:2679 #, python-format msgid "This device has no %(types_searched_for)s to download from." msgstr "Das Laufwerk enthält keine %(types_searched_for)s zum Herunterladen" -#: rapid/rapid.py:2417 +#: rapid/rapid.py:2733 #, python-format msgid "Download has started from %s" msgstr "Der Download von %s hat begonnen" -#: rapid/rapid.py:2434 -msgid "Backup path does not exist" -msgstr "Der Pfad zum Sicherungsverzeichnis ist ungültig" - -#: rapid/rapid.py:2435 +#: rapid/rapid.py:2736 #, python-format -msgid "The path %s could not be created" -msgstr "Der Pfad %s konnte nicht erstellt werden" - -#: rapid/rapid.py:2436 rapid/rapid.py:2444 -msgid "No backups can occur" -msgstr "Es können keine Sicherungskopien erstellt werden" - -#: rapid/rapid.py:2442 -msgid "Backup device missing" -msgstr "Das Laufwerk für die Sicherungskopien fehlt" +msgid "Attempting to download %s files" +msgstr "Versuche %s Dateien herunterzuladen" -#: rapid/rapid.py:2443 -msgid "No backup device was automatically detected" -msgstr "Es wurde kein Sicherungslaufwerk automatisch erkannt" - -#: rapid/rapid.py:2534 rapid/rapid.py:3343 rapid/rapid.py:3345 -msgid "Photo" -msgstr "Bild" - -#: rapid/rapid.py:2535 -msgid "Photo skipped" -msgstr "Bild übersprungen" - -#: rapid/rapid.py:2536 -msgid "Photo already exists" -msgstr "Das Bild exisiert bereits" - -#: rapid/rapid.py:2542 rapid/rapid.py:3343 -msgid "Video" -msgstr "Film" - -#: rapid/rapid.py:2543 -msgid "Video skipped" -msgstr "Film übersprungen" - -#: rapid/rapid.py:2544 -msgid "Video already exists" -msgstr "Der Film exisiert bereits" - -#: rapid/rapid.py:2592 +#. reset the progress bar to update the status of this download attempt +#: rapid/rapid.py:2769 rapid/rapid.py:2836 #, python-format msgid "%(number)s of %(total)s %(filetypes)s" msgstr "%(number)s von %(total)s %(filetypes)s" -#: rapid/rapid.py:2607 rapid/rapid.py:2611 +#: rapid/rapid.py:2832 +#, python-format +msgid "%(number)s of %(total)s %(filetypes)s (%(remaining)s remaining)" +msgstr "%(number)s of %(total)s %(filetypes)s (%(remaining)s verbleibend)" + +#: rapid/rapid.py:2857 rapid/rapid.py:2861 msgid "Could not delete photo or video from device" msgstr "Es konnten von dem Laufwerk keine Bilder oder Filme gelöscht werden" -#: rapid/rapid.py:2608 +#: rapid/rapid.py:2858 #, python-format msgid "" "Photo: %(source)s\n" @@ -654,45 +555,63 @@ msgstr "" "Bild: %(source)s\n" "Fehler: %(errno)s %(strerror)s" -#: rapid/rapid.py:2612 +#: rapid/rapid.py:2862 #, python-format msgid "Photo: %(source)s" msgstr "Bild: %(source)s" -#: rapid/rapid.py:2614 +#: rapid/rapid.py:2864 #, python-format msgid "Deleted %(number)i %(filetypes)s from device" msgstr "%(number)i %(filetypes)s vom Laufwerk gelöscht" -#: rapid/rapid.py:2624 +#: rapid/rapid.py:2871 #, python-format msgid "Download complete from %s" msgstr "Download von %s abgeschlossen" #. Device refers to a thing like a camera, memory card in its reader, external hard drive, Portable Storage Device, etc. -#: rapid/rapid.py:2700 +#: rapid/rapid.py:2993 rapid/rapid.py:3466 msgid "Device" msgstr "Laufwerk" #. Size refers to the total size of images on the device, typically in MB or GB -#: rapid/rapid.py:2705 +#: rapid/rapid.py:2998 rapid/rapid.py:3455 msgid "Size" msgstr "Grösse" -#: rapid/rapid.py:2708 +#: rapid/rapid.py:3001 msgid "Download Progress" msgstr "Fortschritt im Download" -#: rapid/rapid.py:2824 rapid/rapid.py:2839 -msgid "It may be corrupted" -msgstr "Es könnte defekt sein" +#: rapid/rapid.py:3089 +msgid "Downloading From Cameras" +msgstr "Bilder werden von der Kamera heruntergeladen" -#: rapid/rapid.py:2869 +#: rapid/rapid.py:3095 +msgid "Downloading directly from a camera may work poorly or not at all" +msgstr "" +"Das direkte Herunterladen von der Kamera kann unter Umständen schlecht oder " +"gar nicht funktionieren" + +#: rapid/rapid.py:3096 +msgid "" +"Downloading from a card reader always works and is generally much faster. It " +"is strongly recommended to use a card reader." +msgstr "" +"Das Herunterladen über einen Kartenleser generell gut und ist normalerweise " +"auch viel schneller. Dies ist die dringend empfohlene Methode." + +#: rapid/rapid.py:3110 +msgid "_Show this message again" +msgstr "_Meldung erneut anzeigen" + +#: rapid/rapid.py:3145 msgid "Device Detected" msgstr "Laufwerk gefunden" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2878 +#: rapid/rapid.py:3154 msgid "" "Should this device or partition be used to download photos or videos from?" msgstr "" @@ -700,70 +619,161 @@ msgstr "" "Filmen verwendet werden?" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2897 +#: rapid/rapid.py:3173 msgid "_Remember this choice" msgstr "_Auswahl merken" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2934 +#: rapid/rapid.py:3210 #, python-format msgid "%s selected for downloading from" msgstr "%s wurde zum Herunterladen ausgewählt" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2937 +#: rapid/rapid.py:3213 msgid "This device or partition will always be used to download from" msgstr "Von diesem Laufwerk oder dieser Partition wird immer heruntergeladen" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2940 +#: rapid/rapid.py:3216 #, python-format msgid "%s rejected as a download device" msgstr "%s wurde als Laufwerk zum Herunterladen abgelehnt" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2943 +#: rapid/rapid.py:3219 msgid "This device or partition will never be used to download from" msgstr "Von diesem Laufwerk oder dieser Partition wird nie heruntergeladen" -#: rapid/rapid.py:2950 +#: rapid/rapid.py:3226 msgid "Remove all Job Codes?" msgstr "Alle Auftragsbezeichnungen löschen?" -#: rapid/rapid.py:2967 +#: rapid/rapid.py:3243 msgid "Should all Job Codes be removed?" msgstr "Sollen alle Auftragsbezeichnungen gelöscht werden?" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:2995 +#: rapid/rapid.py:3271 msgid "Enter a Job Code" msgstr "Geben Sie eine Auftragsbezeichnung ein" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:3013 -msgid "Enter a new job code, or select a previous one." +#: rapid/rapid.py:3290 +msgid "Enter a new Job Code, or select a previous one" msgstr "" -"Geben Sie eine neue Auftragsbezeichnung an oder wählen Sie eine bereits " -"bestehende." +"Geben Sie eine neue Auftragsbezeichung ein oder wählen Sie eine bestehende " +"aus" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:3016 -msgid "Enter a new job code." -msgstr "Geben Sie eine neue Auftragsbezeichnung an." +#: rapid/rapid.py:3293 +msgid "Enter a new Job Code" +msgstr "Geben Sie eine neue Auftragsbezeichung ein" -#: rapid/rapid.py:3021 +#: rapid/rapid.py:3298 rapid/rapid.py:4417 msgid "Job Code:" msgstr "Auftragsbezeichnung:" -#: rapid/rapid.py:3068 +#: rapid/rapid.py:3345 msgid "Job Code entered" msgstr "Auftragsbezeichnung eingegeben" -#: rapid/rapid.py:3070 +#: rapid/rapid.py:3347 msgid "Job Code not entered" msgstr "Keine Auftragsbezeichnung angegeben" -#: rapid/rapid.py:3330 +#: rapid/rapid.py:3401 +msgid "Status" +msgstr "Status" + +#: rapid/rapid.py:3409 +msgid "Type" +msgstr "Typ" + +#: rapid/rapid.py:3418 rapid/rapid.py:4808 rapid/rapid.py:4810 +msgid "Photo" +msgstr "Bild" + +#: rapid/rapid.py:3420 +msgid "File" +msgstr "Datei" + +#: rapid/rapid.py:3435 +msgid "Job Code" +msgstr "Auftragsbezeichnung" + +#: rapid/rapid.py:3445 +msgid "Date" +msgstr "Datum" + +#: rapid/rapid.py:3477 rapid/renamesubfolderprefs.py:194 +msgid "Filename" +msgstr "Dateiname" + +#: rapid/rapid.py:3488 +msgid "Path" +msgstr "Pfad" + +#: rapid/rapid.py:3843 +#, python-format +msgid "%(filetype)s was downloaded successfully" +msgstr "%(filetype)s wurde erfolgreich heruntergeladen" + +#: rapid/rapid.py:3845 +#, python-format +msgid "%(filetype)s was not downloaded" +msgstr "%(filetype)s wurde nicht heruntergeladen" + +#: rapid/rapid.py:3847 +#, python-format +msgid "%(filetype)s was downloaded with warnings" +msgstr "%(filetype)s wurde mit Warnungen heruntergeladen" + +#: rapid/rapid.py:3849 +#, python-format +msgid "%(filetype)s was downloaded but there were problems backing up" +msgstr "" +"%(filetype)s wurde heruntergeladen, beim Erstellen der Sicherungskopie " +"traten aber Fehler auf" + +#: rapid/rapid.py:3851 +#, python-format +msgid "%(filetype)s was neither downloaded nor backed up" +msgstr "" +"%(filetype)s wurde weder heruntergeladen noch wurde eine Sicherungskopie " +"erstellt" + +#: rapid/rapid.py:3853 +#, python-format +msgid "%(filetype)s is ready to be downloaded" +msgstr "%(filetype)s ist bereit zum Herunterladen" + +#: rapid/rapid.py:3855 +#, python-format +msgid "%(filetype)s is about to be downloaded" +msgstr "%(filetype)s wird weruntergeladen" + +#: rapid/rapid.py:3857 +#, python-format +msgid "%(filetype)s will be downloaded with warnings" +msgstr "%(filetype)s wird mit Warnungen weruntergeladen" + +#: rapid/rapid.py:3859 +#, python-format +msgid "%(filetype)s cannot be downloaded" +msgstr "%(filetype)s kann nicht heruntergeladen werden" + +#: rapid/rapid.py:4240 +msgid "Preview" +msgstr "Vorschau" + +#: rapid/rapid.py:4439 +msgid "Enter a new Job Code and press Enter, or select an existing Job Code" +msgstr "" +"Geben Sie eine neue Auftragsbezeichnung ein und drücken Sie EINGABE oder " +"selektieren Sie eine bestehende Auftragsbezeichnung" + +#: rapid/rapid.py:4795 #, python-format msgid "" "Sorry, this device location does not exist:\n" @@ -776,22 +786,26 @@ msgstr "" "\n" "Beheben Sie das Problem oder ändern Sie die Voreinstellungen." -#: rapid/rapid.py:3334 +#: rapid/rapid.py:4799 msgid "Problem with Device Location Folder" msgstr "Probleme mit dem Laufwerk oder Verzeichnis" -#: rapid/rapid.py:3350 +#: rapid/rapid.py:4808 +msgid "Video" +msgstr "Film" + +#: rapid/rapid.py:4815 #, python-format msgid "The %(file_type)s Download Folder does not exist.\n" msgstr "Das %(file_type)s Downloadverzeichnis existiert nicht.\n" -#: rapid/rapid.py:3359 +#: rapid/rapid.py:4824 #, python-format msgid "The %(file_type)s Download Folder exists but cannot be written to.\n" msgstr "" "Das %(file_type)s Downloadverzeichnis existiert, ist aber schreibgeschützt.\n" -#: rapid/rapid.py:3364 +#: rapid/rapid.py:4829 msgid "" "Sorry, problems were encountered with your download folders. Please fix the " "problems or modify the preferences.\n" @@ -801,65 +815,72 @@ msgstr "" "oder passen Sie die Voreinstellungen an.\n" "\n" -#: rapid/rapid.py:3367 +#: rapid/rapid.py:4832 msgid "Problem with Download Folder" msgstr "Problem mit dem Dowanloadverzeichnis" -#: rapid/rapid.py:3369 +#: rapid/rapid.py:4834 msgid "Problem with Download Folders" msgstr "Probleme mit den Downloadverzeichnissen" -#: rapid/rapid.py:3382 +#: rapid/rapid.py:4847 msgid "Some preferences will be reset." msgstr "Einige Voreinstellungen werden zurückgesetzt." -#: rapid/rapid.py:3416 +#: rapid/rapid.py:4880 +msgid "Displaying warning about downloading directly from camera" +msgstr "" +"Eine Warnung betreffend das direkte Herunterladen von der Kamera wird " +"angezeigt" + +#: rapid/rapid.py:4890 #, python-format msgid "Prompting whether to use %s" msgstr "Abfrage, ob %s zu benutzen ist" -#: rapid/rapid.py:3444 +#: rapid/rapid.py:4917 msgid "Prompting for Job Code" msgstr "Frage nach der Auftragsbezeichnung" -#: rapid/rapid.py:3448 +#: rapid/rapid.py:4921 msgid "Already prompting for Job Code, do not prompt again" msgstr "Auftragsbezeichnung wurde schon abgefragt, nicht wieder fragen" -#: rapid/rapid.py:3463 +#: rapid/rapid.py:4938 +msgid "Starting downloads" +msgstr "Beginne mit den Downloads" + +#. autostart is true +#: rapid/rapid.py:4942 msgid "Starting downloads that have been waiting for a Job Code" msgstr "" "Beginne mit den Dowaloads welche auf eine Auftragsbezeichnung gewartet haben" -#: rapid/rapid.py:3467 -msgid "Starting downloads" -msgstr "Beginne mit den Downloads" - -#: rapid/rapid.py:3482 +#: rapid/rapid.py:4984 #, python-format msgid "Creating photo download folder %(folder)s" msgstr "%(folder)s für das Herunterladen der Bilder erstellt" -#: rapid/rapid.py:3487 +#: rapid/rapid.py:4989 #, python-format msgid "Failed to create default photo download folder %(folder)s" msgstr "" "%(folder)s konnte als Standardverzeichnis zum Herunterladen der Bilder nicht " "erstellt werden" -#: rapid/rapid.py:3491 +#: rapid/rapid.py:4993 #, python-format msgid "Creating video download folder %(folder)s" msgstr "%(folder)s für das Herunterladen der Filme erstellt" -#: rapid/rapid.py:3496 +#: rapid/rapid.py:4998 #, python-format msgid "Failed to create default video download folder %(folder)s" msgstr "" "%(folder)s konnte als Standardverzeichnis zum Herunterladen der Filme nicht " "erstellt werden" -#: rapid/rapid.py:3521 +#: rapid/rapid.py:5023 msgid "" "A newer version of this program was previously run on this computer.\n" "\n" @@ -868,7 +889,7 @@ msgstr "" "aufgerufen.\n" "\n" -#: rapid/rapid.py:3523 +#: rapid/rapid.py:5025 msgid "" "Program preferences appear to be valid, but please check them to ensure " "correct operation." @@ -876,17 +897,17 @@ msgstr "" "Die Programmvoreinstellungen scheinen gültig zu sein, aber bitte überprüfen " "Sie diese, um einen problemlosen Programmablauf zu gewährleisten." -#: rapid/rapid.py:3525 +#: rapid/rapid.py:5027 msgid "Sorry, some preferences are invalid and will be reset." msgstr "" "Einige Voreinstellungen sind ungültig, sie werden auf die Standardwerte " "zurückgesetzt." -#: rapid/rapid.py:3526 +#: rapid/rapid.py:5028 msgid "Warning:" msgstr "Warnung:" -#: rapid/rapid.py:3531 +#: rapid/rapid.py:5033 msgid "" "This version of the program is newer than the previously run version. " "Checking preferences." @@ -894,11 +915,11 @@ msgstr "" "Diese Version des Programms ist neuer als bis bisherige. Die " "Voreinstellungen werden überprüft." -#: rapid/rapid.py:3538 +#: rapid/rapid.py:5040 msgid "Preferences were modified." msgstr "Die Voreinstellungen wurden geändert." -#: rapid/rapid.py:3539 +#: rapid/rapid.py:5041 msgid "" "This version of the program uses different preferences than the old version. " "Your preferences have been updated.\n" @@ -909,11 +930,11 @@ msgstr "" "Voreinstellungen wurden angepasst\n" "Bitte überprüfen Sie diese." -#: rapid/rapid.py:3543 +#: rapid/rapid.py:5045 msgid "No preferences needed to be changed." msgstr "Es mussten keine Voreinstellungen angepasst werden." -#: rapid/rapid.py:3545 +#: rapid/rapid.py:5047 msgid "" "This version of the program uses different preferences than the old version. " "Some of your previous preferences were invalid, and could not be updated. " @@ -923,130 +944,155 @@ msgstr "" "bisherige Version. Einige der bestehenden Einstellungen sind ungültig und " "werden auf die Standardwerte zurückgesetzt." -#: rapid/rapid.py:3555 +#: rapid/rapid.py:5057 msgid "Problem using pynotify." msgstr "Bei der Verwendung von pynotify ist ein Problem aufgetreten." -#: rapid/rapid.py:3571 +#: rapid/rapid.py:5073 msgid "Failed to receive pynotify server capabilities." msgstr "Die Werte des pynotify Servers konnten nicht abgefragt werden." -#: rapid/rapid.py:3580 +#: rapid/rapid.py:5084 msgid "" "Warning: desktop environment notification server is incorrectly configured." msgstr "" "Warnung: Der Desktop-Benachrichtigungsdienst ist falsch konfiguriert." -#: rapid/rapid.py:3626 +#: rapid/rapid.py:5132 msgid "and" msgstr "und" -#: rapid/rapid.py:3631 +#: rapid/rapid.py:5137 msgid "Using backup devices" msgstr "Die Sicherungslaufwerke werden verwendet" -#: rapid/rapid.py:3633 +#: rapid/rapid.py:5139 msgid "Using backup device" msgstr "Das Sicherungslaufwerk wird verwendet" -#: rapid/rapid.py:3635 +#: rapid/rapid.py:5141 msgid "No backup devices detected" msgstr "Es wurden keine Sicherungslaufwerke gefunden" -#: rapid/rapid.py:3674 rapid/rapid.py:3831 +#: rapid/rapid.py:5188 rapid/rapid.py:5350 #, python-format msgid "Device %(device)s (%(path)s) ignored" msgstr "Laufwerk %(device)s (%(path)s) ignoriert" -#: rapid/rapid.py:3790 +#: rapid/rapid.py:5309 #, python-format msgid "Detected %(device)s with path %(path)s" msgstr "Die %(device)s gefunden auf Pfad %(path)s" -#: rapid/rapid.py:3794 +#: rapid/rapid.py:5313 msgid "Automatically start download is true" msgstr "Der automatische Downloadbeginn ist eingeschaltet" -#: rapid/rapid.py:3796 +#: rapid/rapid.py:5315 msgid "Automatically start download is false" msgstr "Der automatische Downloadbeginn ist ausgeschaltet" -#: rapid/rapid.py:3849 +#: rapid/rapid.py:5368 msgid "Using manually specified path" msgstr "Verwende den manuell eingegebenen Pfad" -#: rapid/rapid.py:3857 +#: rapid/rapid.py:5376 rapid/rapid.py:5417 #, python-format msgid "Backing up to %(path)s" msgstr "Sicherungskopieren in %(path)s erstellen" -#: rapid/rapid.py:3968 rapid/rapid.py:4017 +#. the user is trying to backup to a device that is currently being downloaded from..... we don't normally allow that, but what to do? +#: rapid/rapid.py:5441 +#, python-format +msgid "Warning: backup device %(device)s is currently being downloaded from" +msgstr "" +"Vorsicht: Vom Sicherungslaufwerk %(device)s findet ein Download statt" + +#: rapid/rapid.py:5458 +msgid "D_ownload Selected" +msgstr "_Herunterladen ausgewählt" + +#: rapid/rapid.py:5550 rapid/rapid.py:5599 msgid "All downloads complete" msgstr "Alle Downloads sind abgeschlossen" -#: rapid/rapid.py:3982 +#: rapid/rapid.py:5564 msgid "MB/s" msgstr "MB/s" -#: rapid/rapid.py:3992 +#: rapid/rapid.py:5574 msgid "About 1 second remaining" msgstr "Etwa 1 Sekunde verbleibend" -#: rapid/rapid.py:3994 +#: rapid/rapid.py:5576 #, python-format msgid "About %i seconds remaining" msgstr "Etwa %i Sekunden verbleibend" -#: rapid/rapid.py:3996 +#: rapid/rapid.py:5578 msgid "About 1 minute remaining" msgstr "Etwa 1 Minute verbleibend" #. Translators: in the text '%(minutes)i:%(seconds)02i', only the : should be translated, if needed. #. '%(minutes)i' and '%(seconds)02i' should not be modified or left out. They are used to format and display the amount #. of time the download has remainging, e.g. 'About 5:36 minutes remaining' -#: rapid/rapid.py:4001 +#: rapid/rapid.py:5583 #, python-format msgid "About %(minutes)i:%(seconds)02i minutes remaining" msgstr "Etwa %(minutes)i:%(seconds)02i Minuten verbleibend" -#: rapid/rapid.py:4019 -msgid "photos downloaded" -msgstr "Bilder heruntergeladen" +#: rapid/rapid.py:5602 rapid/rapid.py:5608 rapid/rapid.py:5614 +#: rapid/rapid.py:5620 rapid/rapid.py:5625 rapid/rapid.py:5629 +#, python-format +msgid "%(number)s %(numberdownloaded)s" +msgstr "%(number)s %(numberdownloaded)s" -#: rapid/rapid.py:4021 -msgid "photos skipped" -msgstr "Bilder übersprungen" +#: rapid/rapid.py:5604 rapid/rapid.py:5616 +#, python-format +msgid "%(filetype)s downloaded" +msgstr "%(filetype)s heruntergeladen" -#: rapid/rapid.py:4023 -msgid "videos downloaded" -msgstr "Filme heruntergeladen" +#: rapid/rapid.py:5610 rapid/rapid.py:5622 +#, python-format +msgid "%(filetype)s failed to download" +msgstr "%(filetype)s konnten nicht heruntergeladen werden" -#: rapid/rapid.py:4025 -msgid "videos skipped" -msgstr "Filme übersprungen" +#: rapid/rapid.py:5789 +msgid "_Resume" +msgstr "_Fortsetzen" -#. This text will be displayed to the user on the Download / Pause button. -#. Please note the space at the end of the label - it is needed to meet the Gnome Human Interface Guidelines -#: rapid/rapid.py:4125 -msgid "_Download " -msgstr "_Download " +#: rapid/rapid.py:5792 +msgid "_Download All" +msgstr "_Alle Herunterladen" #. This text will be displayed to the user on the Download / Pause button. -#: rapid/rapid.py:4135 +#: rapid/rapid.py:5801 msgid "_Pause" msgstr "_Pause" -#: rapid/rapid.py:4209 -msgid "Preferences were changed." -msgstr "Die Voreinstellungen wurden geändert." +#: rapid/rapid.py:5914 +msgid "Download device settings preferences were changed." +msgstr "Die Benutzervorgaben für Quellaufwerke wurden geändert." + +#: rapid/rapid.py:5926 +msgid "Backup preferences were changed." +msgstr "Die Benutzervorgaben für Sicherungslaufwerke wurden geändert." -#: rapid/rapid.py:4407 +#: rapid/rapid.py:5932 +msgid "Subfolder and filename preferences were changed." +msgstr "Die Benutzervorgaben für Unterordner und Dateinamen wurden geändert." + +#: rapid/rapid.py:5943 +msgid "Download folder preferences were changed." +msgstr "Die Benutzervorgaben für Downloadordner wurden geändert." + +#: rapid/rapid.py:6141 msgid "Goodbye" msgstr "Auf Wiedersehen" #. Translators: this text is displayed to the user when they request information on the command line options. #. The text %default should not be modified or left out. -#: rapid/rapid.py:4418 +#: rapid/rapid.py:6152 #, python-format msgid "" "display program information on the command line as the program runs " @@ -1055,388 +1101,384 @@ msgstr "" "Zeige die Programminformationen an, wenn das Programm aus der Kommandozeile " "aufgerufen wurde (Voreinstellung: %default)" -#: rapid/rapid.py:4419 +#: rapid/rapid.py:6153 msgid "only output errors to the command line" msgstr "Zeige Fehlermeldungen nur auf der Kommandozeile an" #. image file extensions are recognized RAW files plus TIFF and JPG -#: rapid/rapid.py:4421 +#: rapid/rapid.py:6155 msgid "list photo and video file extensions the program recognizes and exit" msgstr "" "Anzeigen der Dateitypen für Bilder und Filme anzeigen, welche das Programm " "erkennt und beenden" -#: rapid/rapid.py:4422 +#: rapid/rapid.py:6156 msgid "reset all program settings and preferences and exit" msgstr "Alle Einstellungen auf Standardwerte zurücksetzten und beenden" -#: rapid/rapid.py:4431 +#: rapid/rapid.py:6165 msgid "Photos:" msgstr "Bilder:" -#: rapid/rapid.py:4431 +#: rapid/rapid.py:6165 msgid "Videos:" msgstr "Filme:" -#: rapid/rapid.py:4436 +#: rapid/rapid.py:6170 #, python-format msgid "and %s" msgstr "und %s" -#: rapid/rapid.py:4444 +#: rapid/rapid.py:6178 msgid "All settings and preferences have been reset" msgstr "Alle Einstellungen wurden zurückgesetzt" #. Which volume management code is being used (GIO or GnomeVFS) -#: rapid/rapid.py:4448 rapid/rapid.py:4449 rapid/rapid.py:4451 -#: rapid/rapid.py:4456 rapid/rapid.py:4460 +#: rapid/rapid.py:6182 rapid/rapid.py:6183 rapid/rapid.py:6185 +#: rapid/rapid.py:6190 rapid/rapid.py:6194 msgid "Using" msgstr "Verwende" -#: rapid/rapid.py:4453 +#: rapid/rapid.py:6187 msgid "\n" msgstr "\n" #. this application is already running -#: rapid/rapid.py:4477 +#: rapid/rapid.py:6211 #, python-format msgid "%s is already running" msgstr "%s wird bereits ausgeführt" -#: rapid/renamesubfolderprefs.py:190 +#: rapid/renamesubfolderprefs.py:192 msgid "Date time" msgstr "Datum Zeit" -#: rapid/renamesubfolderprefs.py:191 +#: rapid/renamesubfolderprefs.py:193 msgid "Text" msgstr "Text" -#: rapid/renamesubfolderprefs.py:192 -msgid "Filename" -msgstr "Dateiname" - -#: rapid/renamesubfolderprefs.py:193 +#: rapid/renamesubfolderprefs.py:195 msgid "Metadata" msgstr "Metadaten" -#: rapid/renamesubfolderprefs.py:194 +#: rapid/renamesubfolderprefs.py:196 msgid "Sequences" msgstr "Sequenzen" -#: rapid/renamesubfolderprefs.py:197 +#: rapid/renamesubfolderprefs.py:199 msgid "Image date" msgstr "Bilddatum" -#: rapid/renamesubfolderprefs.py:198 +#: rapid/renamesubfolderprefs.py:200 msgid "Video date" msgstr "Film Datum" -#: rapid/renamesubfolderprefs.py:199 +#: rapid/renamesubfolderprefs.py:201 msgid "Today" msgstr "Heute" -#: rapid/renamesubfolderprefs.py:200 +#: rapid/renamesubfolderprefs.py:202 msgid "Yesterday" msgstr "Gestern" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:202 +#: rapid/renamesubfolderprefs.py:204 msgid "Name + extension" msgstr "Name + Erweiterung" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:204 +#: rapid/renamesubfolderprefs.py:206 msgid "Name" msgstr "Name" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:206 +#: rapid/renamesubfolderprefs.py:208 msgid "Extension" msgstr "Erweiterung" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:208 +#: rapid/renamesubfolderprefs.py:210 msgid "Image number" msgstr "Bildnummer" -#: rapid/renamesubfolderprefs.py:209 +#: rapid/renamesubfolderprefs.py:211 msgid "Video number" msgstr "Film Nummer" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:211 +#: rapid/renamesubfolderprefs.py:213 msgid "Aperture" msgstr "Blende" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:213 +#: rapid/renamesubfolderprefs.py:215 msgid "ISO" msgstr "ISO-Wert" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:215 +#: rapid/renamesubfolderprefs.py:217 msgid "Exposure time" msgstr "Belichtungszeit" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:217 +#: rapid/renamesubfolderprefs.py:219 msgid "Focal length" msgstr "Brennweite" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:219 +#: rapid/renamesubfolderprefs.py:221 msgid "Camera make" msgstr "Kamerahersteller" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:221 +#: rapid/renamesubfolderprefs.py:223 msgid "Camera model" msgstr "Kameramodell" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:223 +#: rapid/renamesubfolderprefs.py:225 msgid "Short camera model" msgstr "Kameramodell (kurz)" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:225 +#: rapid/renamesubfolderprefs.py:227 msgid "Hyphenated short camera model" msgstr "Kameramodell (kurz, Bindestriche)" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:227 +#: rapid/renamesubfolderprefs.py:229 msgid "Serial number" msgstr "Seriennummer" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:229 +#: rapid/renamesubfolderprefs.py:231 msgid "Shutter count" msgstr "Anzahl der Auslösungen" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:231 +#: rapid/renamesubfolderprefs.py:233 msgid "Owner name" msgstr "Name des Eigentümers" -#: rapid/renamesubfolderprefs.py:232 +#: rapid/renamesubfolderprefs.py:234 msgid "Codec" msgstr "Codec" -#: rapid/renamesubfolderprefs.py:233 +#: rapid/renamesubfolderprefs.py:235 msgid "Width" msgstr "Breite" -#: rapid/renamesubfolderprefs.py:234 +#: rapid/renamesubfolderprefs.py:236 msgid "Height" msgstr "Höhe" -#: rapid/renamesubfolderprefs.py:235 +#: rapid/renamesubfolderprefs.py:237 msgid "Length" msgstr "Länge" -#: rapid/renamesubfolderprefs.py:236 +#: rapid/renamesubfolderprefs.py:238 msgid "Frames Per Second" msgstr "Bilder pro Sekunde" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:238 +#: rapid/renamesubfolderprefs.py:240 msgid "Downloads today" msgstr "Downloads heute" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:240 +#: rapid/renamesubfolderprefs.py:242 msgid "Session number" msgstr "Sitzungsnummer" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:242 +#: rapid/renamesubfolderprefs.py:244 msgid "Subfolder number" msgstr "Nummer des Unterverzeichnisses" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:244 +#: rapid/renamesubfolderprefs.py:246 msgid "Stored number" msgstr "Gespeicherte Nummer" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequenceletters -#: rapid/renamesubfolderprefs.py:246 +#: rapid/renamesubfolderprefs.py:248 msgid "Sequence letter" msgstr "Vorlaufender Buchstabe" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:248 +#: rapid/renamesubfolderprefs.py:250 msgid "All digits" msgstr "Alle Ziffern" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:250 +#: rapid/renamesubfolderprefs.py:252 msgid "Last digit" msgstr "Letzte Ziffer" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:252 +#: rapid/renamesubfolderprefs.py:254 msgid "Last 2 digits" msgstr "Letzte 2 Ziffern" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:254 +#: rapid/renamesubfolderprefs.py:256 msgid "Last 3 digits" msgstr "Letzte 3 Ziffern" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:256 +#: rapid/renamesubfolderprefs.py:258 msgid "Last 4 digits" msgstr "Letze 4 Ziffern" #. Translators: please not the capitalization of this text, and keep it the same if your language features capitalization -#: rapid/renamesubfolderprefs.py:258 +#: rapid/renamesubfolderprefs.py:260 msgid "Original Case" msgstr "Ursprüngliche Schreibweise" #. Translators: please not the capitalization of this text, and keep it the same if your language features capitalization -#: rapid/renamesubfolderprefs.py:260 +#: rapid/renamesubfolderprefs.py:262 msgid "UPPERCASE" msgstr "GROSSBUCHSTABEN" #. Translators: please not the capitalization of this text, and keep it the same if your language features capitalization -#: rapid/renamesubfolderprefs.py:262 +#: rapid/renamesubfolderprefs.py:264 msgid "lowercase" msgstr "kleinschreibung" -#: rapid/renamesubfolderprefs.py:263 +#: rapid/renamesubfolderprefs.py:265 msgid "One digit" msgstr "Eine Ziffer" -#: rapid/renamesubfolderprefs.py:264 +#: rapid/renamesubfolderprefs.py:266 msgid "Two digits" msgstr "Zwei Ziffern" -#: rapid/renamesubfolderprefs.py:265 +#: rapid/renamesubfolderprefs.py:267 msgid "Three digits" msgstr "Drei Ziffern" -#: rapid/renamesubfolderprefs.py:266 +#: rapid/renamesubfolderprefs.py:268 msgid "Four digits" msgstr "Vier Ziffern" -#: rapid/renamesubfolderprefs.py:267 +#: rapid/renamesubfolderprefs.py:269 msgid "Five digits" msgstr "Fünf Ziffern" -#: rapid/renamesubfolderprefs.py:268 +#: rapid/renamesubfolderprefs.py:270 msgid "Six digits" msgstr "Sechs Ziffern" -#: rapid/renamesubfolderprefs.py:269 +#: rapid/renamesubfolderprefs.py:271 msgid "Seven digits" msgstr "Sieben Ziffern" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:271 +#: rapid/renamesubfolderprefs.py:273 msgid "Subseconds" msgstr "Hundertstelsekunden" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:273 +#: rapid/renamesubfolderprefs.py:275 msgid "YYYYMMDD" msgstr "JJJJMMTT" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:275 +#: rapid/renamesubfolderprefs.py:277 msgid "YYYY-MM-DD" msgstr "JJJJ-MM-TT" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:277 +#: rapid/renamesubfolderprefs.py:279 msgid "YYMMDD" msgstr "JJMMTT" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:279 +#: rapid/renamesubfolderprefs.py:281 msgid "YY-MM-DD" msgstr "JJ-MM-TT" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:281 +#: rapid/renamesubfolderprefs.py:283 msgid "MMDDYYYY" msgstr "MMTTJJJJ" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:283 +#: rapid/renamesubfolderprefs.py:285 msgid "MMDDYY" msgstr "MMTTJJ" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:285 +#: rapid/renamesubfolderprefs.py:287 msgid "MMDD" msgstr "MMTT" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:287 +#: rapid/renamesubfolderprefs.py:289 msgid "DDMMYYYY" msgstr "TTMMJJJJ" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:289 +#: rapid/renamesubfolderprefs.py:291 msgid "DDMMYY" msgstr "TTMMJJ" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:291 +#: rapid/renamesubfolderprefs.py:293 msgid "YYYY" msgstr "JJJJ" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:293 +#: rapid/renamesubfolderprefs.py:295 msgid "YY" msgstr "JJ" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:295 +#: rapid/renamesubfolderprefs.py:297 msgid "MM" msgstr "MM" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:297 +#: rapid/renamesubfolderprefs.py:299 msgid "DD" msgstr "TT" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:299 +#: rapid/renamesubfolderprefs.py:301 msgid "HHMMSS" msgstr "HHMMSS" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:301 +#: rapid/renamesubfolderprefs.py:303 msgid "HHMM" msgstr "HHMM" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:303 +#: rapid/renamesubfolderprefs.py:305 msgid "HH-MM-SS" msgstr "HH-MM-SS" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:305 +#: rapid/renamesubfolderprefs.py:307 msgid "HH-MM" msgstr "HH-MM" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:307 +#: rapid/renamesubfolderprefs.py:309 msgid "HH" msgstr "HH" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:309 +#: rapid/renamesubfolderprefs.py:311 msgid "MM (minutes)" msgstr "MM (Minuten)" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:311 +#: rapid/renamesubfolderprefs.py:313 msgid "SS" msgstr "SS" -#: rapid/renamesubfolderprefs.py:794 +#: rapid/renamesubfolderprefs.py:796 #, python-format msgid "" "Preference key '%(key)s' is invalid.\n" @@ -1445,67 +1487,26 @@ msgstr "" "Voreingestellter Schlüssel '%(key)s' ist ungültig.\n" "Erwarteter Wert %(value)s" -#: rapid/renamesubfolderprefs.py:801 +#: rapid/renamesubfolderprefs.py:803 #, python-format msgid "Preference value '%(value)s' is invalid" msgstr "Voreingestellter Wert '%(value)s' ist ungültig" -#: rapid/renamesubfolderprefs.py:805 +#: rapid/renamesubfolderprefs.py:807 msgid "These preferences are not well formed:" msgstr "Diese Voreinstellungen sind falsch formatiert:" -#: rapid/renamesubfolderprefs.py:934 -msgid "Subsecond metadata not present in photo" -msgstr "Hundertstelssekunden Metadaten sind nicht vorhanden" - -#: rapid/renamesubfolderprefs.py:941 -#, python-format -msgid "%s metadata is not present" -msgstr "%s Metadaten sind nicht vorhanden" - -#: rapid/renamesubfolderprefs.py:960 rapid/renamesubfolderprefs.py:968 -#: rapid/renamesubfolderprefs.py:977 -#, python-format -msgid "Error in date time component. Value %s appears invalid" -msgstr "" -"Fehler in den Datum/Zeit Informationen. Der Wert %s scheint ungültig zu sein" - -#: rapid/renamesubfolderprefs.py:1004 -msgid "extension was specified but filename does not have an extension" -msgstr "Ein Dateityp wurde angegeben aber der Dateiname enthält keinen Typen" - -#: rapid/renamesubfolderprefs.py:1008 -msgid "image or video number was specified but filename has no number" -msgstr "" -"Eine Bild- oder Filmnummer wurde angegeben, aber der Dateiname enthält keine " -"Nummer" - -#: rapid/renamesubfolderprefs.py:1081 -#, python-format -msgid "%s metadata is not present in photo" -msgstr "%s Metadaten existieren im Bild nicht" - -#: rapid/renamesubfolderprefs.py:1194 -#, python-format -msgid "error generating name with component %s" -msgstr "Ein Fehler ist aufgetreten bei der Erstellung des Namens mit %s" - -#: rapid/renamesubfolderprefs.py:1450 -#, python-format -msgid "%s metadata is not present in video" -msgstr "%s Metadaten existieren im Film nicht" - -#: rapid/renamesubfolderprefs.py:1546 +#: rapid/renamesubfolderprefs.py:1517 #, python-format msgid "Subfolder preferences should not start with a %s" msgstr "Die Unterverzeichnisvoreinstellungen sollten nicht mit %s beginnen" -#: rapid/renamesubfolderprefs.py:1548 +#: rapid/renamesubfolderprefs.py:1519 #, python-format msgid "Subfolder preferences should not end with a %s" msgstr "Die Unterverzeichnisvoreinstellungen sollten nicht mit %s enden" -#: rapid/renamesubfolderprefs.py:1552 +#: rapid/renamesubfolderprefs.py:1523 #, python-format msgid "Subfolder preferences should not contain two %s one after the other" msgstr "" @@ -1557,119 +1558,115 @@ msgid "Job Codes" msgstr "Auftragsbezeichnungen" #: rapid/glade3/rapid.glade.h:12 -msgid "Missing Backup Devices" -msgstr "Fehlende Sicherungslaufwerke" - -#: rapid/glade3/rapid.glade.h:13 msgid "Photo Rename" msgstr "Umbenennen von Bildern" -#: rapid/glade3/rapid.glade.h:14 +#: rapid/glade3/rapid.glade.h:13 msgid "Photo and Video Name Conflicts" msgstr "Namenskonflikte Bilder und Filme" -#: rapid/glade3/rapid.glade.h:15 +#: rapid/glade3/rapid.glade.h:14 msgid "Program Automation" msgstr "Programm Automatisierung" -#: rapid/glade3/rapid.glade.h:16 +#: rapid/glade3/rapid.glade.h:15 msgid "Sequence Numbers" msgstr "Sequenznummern" -#: rapid/glade3/rapid.glade.h:17 +#: rapid/glade3/rapid.glade.h:16 msgid "/media/externaldrive/Photos" msgstr "/medium/externeslaufwerk/Fotos" -#: rapid/glade3/rapid.glade.h:18 +#: rapid/glade3/rapid.glade.h:17 msgid "Example: /home/user/Pictures" msgstr "Beispiel: /home/user/Bilder" -#: rapid/glade3/rapid.glade.h:19 +#: rapid/glade3/rapid.glade.h:18 msgid "Example:" msgstr "Beispiel:" -#: rapid/glade3/rapid.glade.h:20 +#: rapid/glade3/rapid.glade.h:19 msgid "New:" msgstr "Neu:" -#: rapid/glade3/rapid.glade.h:21 +#: rapid/glade3/rapid.glade.h:20 msgid "Original:" msgstr "Original:" -#: rapid/glade3/rapid.glade.h:22 +#: rapid/glade3/rapid.glade.h:21 msgid "Automation" msgstr "Automatisierung" -#: rapid/glade3/rapid.glade.h:23 +#: rapid/glade3/rapid.glade.h:22 msgid "Backup\t" msgstr "Datensicherung\t" -#: rapid/glade3/rapid.glade.h:24 +#: rapid/glade3/rapid.glade.h:23 msgid "Devices" msgstr "Laufwerke" -#: rapid/glade3/rapid.glade.h:25 +#: rapid/glade3/rapid.glade.h:24 msgid "Error Handling" msgstr "Fehlerbehandlung" -#: rapid/glade3/rapid.glade.h:26 +#: rapid/glade3/rapid.glade.h:25 msgid "Job Codes" msgstr "Auftragsbezeichnungen" -#: rapid/glade3/rapid.glade.h:27 +#: rapid/glade3/rapid.glade.h:26 msgid "Photo Download Folders" msgstr "Bilder Download Ordner" -#: rapid/glade3/rapid.glade.h:28 +#: rapid/glade3/rapid.glade.h:27 msgid "Photo Rename\t" msgstr "Bilder Umbenennen\t" -#: rapid/glade3/rapid.glade.h:29 +#: rapid/glade3/rapid.glade.h:28 msgid "Rename Options" msgstr "" "Einstellungen zur Umbenennung" -#: rapid/glade3/rapid.glade.h:30 +#: rapid/glade3/rapid.glade.h:29 msgid "Video Download Folders" msgstr "Film Download Ordner" -#: rapid/glade3/rapid.glade.h:31 +#: rapid/glade3/rapid.glade.h:30 msgid "Video Rename\t" msgstr "Filme Umbenennen\t" -#: rapid/glade3/rapid.glade.h:32 +#: rapid/glade3/rapid.glade.h:31 msgid "Add unique identifier" msgstr "Füge eine eindeutige Information hinzu" -#: rapid/glade3/rapid.glade.h:33 +#: rapid/glade3/rapid.glade.h:32 msgid "Automatically detect Portable Storage Devices" msgstr "Suche automatisch nach portablen Laufwerken" -#: rapid/glade3/rapid.glade.h:34 +#: rapid/glade3/rapid.glade.h:33 msgid "Automatically detect backup devices" msgstr "Suche automatisch nach Backuplaufwerken" -#: rapid/glade3/rapid.glade.h:35 +#: rapid/glade3/rapid.glade.h:34 msgid "Automatically detect devices" msgstr "Automatisch erkannte Laufwerke" -#: rapid/glade3/rapid.glade.h:36 +#: rapid/glade3/rapid.glade.h:35 msgid "Automation" msgstr "Automatisierung" -#: rapid/glade3/rapid.glade.h:37 +#: rapid/glade3/rapid.glade.h:36 msgid "Backup" msgstr "Datensicherung" -#: rapid/glade3/rapid.glade.h:38 +#: rapid/glade3/rapid.glade.h:37 msgid "Backup location:" msgstr "Ziel der Datensicherung" -#: rapid/glade3/rapid.glade.h:39 +#: rapid/glade3/rapid.glade.h:38 msgid "Backup photos and videos when downloading" msgstr "Sicherungskopien während dem Herunterladen erstellen" -#: rapid/glade3/rapid.glade.h:40 +#: rapid/glade3/rapid.glade.h:39 msgid "" "Choose the download folder. Subfolders for the downloaded photos will be " "automatically created in this folder using the structure specified below." @@ -1677,7 +1674,7 @@ msgstr "" "Wählen Sie das Downloadverzeichnis. Unterverzeichnisse werden je nach " "gewählten Voreinstellungen automatisch erzeugt." -#: rapid/glade3/rapid.glade.h:41 +#: rapid/glade3/rapid.glade.h:40 msgid "" "Choose the download folder. Subfolders for the downloaded videos will be " "automatically created in this folder using the structure specified below." @@ -1685,31 +1682,24 @@ msgstr "" "Wählen Sie den Download Ordner. Unterordner für die Filme werden automatisch " "basierend auf der unten angefügten Struktur erstellt." -#: rapid/glade3/rapid.glade.h:42 -msgid "" -"Choose whether to skip downloading the file, or to add a unique indentifier." -msgstr "" -"Wählen Sie, ob der Download übersprungen oder eine eindeutige Bezeichnung " -"angefügt werden soll." - -#: rapid/glade3/rapid.glade.h:43 +#: rapid/glade3/rapid.glade.h:41 msgid "Copyright Damon Lynch 2007-10" msgstr "Copyright Damon Lynch Oktober 2007-2010" -#: rapid/glade3/rapid.glade.h:44 +#: rapid/glade3/rapid.glade.h:42 msgid "Day start:" msgstr "Beginn des Tages:" -#: rapid/glade3/rapid.glade.h:45 +#: rapid/glade3/rapid.glade.h:43 msgid "Delete photos and videos from device upon download completion" msgstr "" "Bilder und Filme nach vollständigem Download auf dem Laufwerk löschen" -#: rapid/glade3/rapid.glade.h:46 +#: rapid/glade3/rapid.glade.h:44 msgid "Devices" msgstr "Laufwerke" -#: rapid/glade3/rapid.glade.h:47 +#: rapid/glade3/rapid.glade.h:45 msgid "" "Devices are from where to download photos and videos, such as cameras, " "memory cards or Portable Storage Devices.\n" @@ -1731,39 +1721,39 @@ msgstr "" "stellen Sie 'PTP Modus' ein. Sollte das nicht möglich sein, so verwenden Sie " "bitte Speicherkarten." -#: rapid/glade3/rapid.glade.h:52 +#: rapid/glade3/rapid.glade.h:50 msgid "Download / Pause" msgstr "Download / Pause" -#: rapid/glade3/rapid.glade.h:53 +#: rapid/glade3/rapid.glade.h:51 msgid "Download folder:" msgstr "Downloadverzeichnis:" -#: rapid/glade3/rapid.glade.h:54 +#: rapid/glade3/rapid.glade.h:52 msgid "Downloads today:" msgstr "Downloads heute:" -#: rapid/glade3/rapid.glade.h:55 +#: rapid/glade3/rapid.glade.h:53 msgid "Error Handling" msgstr "Fehlerbehandlung" -#: rapid/glade3/rapid.glade.h:56 +#: rapid/glade3/rapid.glade.h:54 msgid "Error Log" msgstr "Fehlerprotokoll" -#: rapid/glade3/rapid.glade.h:57 +#: rapid/glade3/rapid.glade.h:55 msgid "Exit program if download completes without any warnings or errors" msgstr "" "Programm beenden falls das Herunterladen ohne Fehler oder Warnungen " "abgeschlossen wird." -#: rapid/glade3/rapid.glade.h:58 +#: rapid/glade3/rapid.glade.h:56 msgid "If you disable automatic detection, choose the exact backup location." msgstr "" "Wählen Sie das genaue Verzeichnis für die Datensicherung, falls die " "automatische Erkennung ausgeschaltet ist." -#: rapid/glade3/rapid.glade.h:59 +#: rapid/glade3/rapid.glade.h:57 msgid "" "If you disable automatic detection, choose the exact location of the images " "and videos." @@ -1771,7 +1761,7 @@ msgstr "" "Falls Sie die automatische Erkennung von Laufwerken ausschalten, geben Sie " "bitte den genauen Pfad zu den Bildern oder Filmen an." -#: rapid/glade3/rapid.glade.h:60 +#: rapid/glade3/rapid.glade.h:58 msgid "" "If you enable automatic detection of Portable Storage Devices, the entire " "device will be scanned for images. On large devices, this could take some " @@ -1781,47 +1771,51 @@ msgstr "" "das gesamte Laufwerk nach Bildern durchsucht. Bei sehr grossen Datenträgern " "kann dies eine Weile dauern." -#: rapid/glade3/rapid.glade.h:61 -msgid "Ignore" -msgstr "Ignorieren" - -#: rapid/glade3/rapid.glade.h:62 +#: rapid/glade3/rapid.glade.h:59 msgid "Import your photos and videos efficiently and reliably" msgstr "Importieren Sie Ihre Bilder und Filme schnell und zuverlässig" -#: rapid/glade3/rapid.glade.h:63 +#: rapid/glade3/rapid.glade.h:60 msgid "Job Codes" msgstr "Auftragsbezeichnungen" -#: rapid/glade3/rapid.glade.h:64 +#: rapid/glade3/rapid.glade.h:61 msgid "Location:" msgstr "Ort:" -#: rapid/glade3/rapid.glade.h:65 +#: rapid/glade3/rapid.glade.h:62 msgid "Overwrite" msgstr "Überschreibe" -#: rapid/glade3/rapid.glade.h:66 +#: rapid/glade3/rapid.glade.h:63 +msgid "P_review Columns" +msgstr "Spalten anzeigen" + +#: rapid/glade3/rapid.glade.h:64 msgid "Photo Folders" msgstr "Bilder Verzeichnisse" -#: rapid/glade3/rapid.glade.h:67 +#: rapid/glade3/rapid.glade.h:65 msgid "Photo Rename" msgstr "Bilder Umbenennen" -#: rapid/glade3/rapid.glade.h:68 +#: rapid/glade3/rapid.glade.h:66 msgid "Photo backup folder name:" msgstr "Ordner für Sicherungskopien der Bilder:" -#: rapid/glade3/rapid.glade.h:69 +#: rapid/glade3/rapid.glade.h:67 msgid "Preferences: Rapid Photo Downloader" msgstr "Voreinstellungen: Rapid Photo Downloader" -#: rapid/glade3/rapid.glade.h:71 +#: rapid/glade3/rapid.glade.h:68 +msgid "Preview _Folders" +msgstr "Order anzeigen" + +#: rapid/glade3/rapid.glade.h:70 msgid "R_emove All" msgstr "_Alle entfernen" -#: rapid/glade3/rapid.glade.h:73 +#: rapid/glade3/rapid.glade.h:72 msgid "" "Rapid Photo Downloader is free software; you can redistribute it and/or " "modify it under the terms of the GNU General Public License as published by " @@ -1851,27 +1845,43 @@ msgstr "" "Rapid Photo Downloader; if not, write to the Free Software Foundation, Inc., " "51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." -#: rapid/glade3/rapid.glade.h:78 +#: rapid/glade3/rapid.glade.h:77 msgid "Rename Options" msgstr "Optionen für die Umbenennung" +#: rapid/glade3/rapid.glade.h:78 +msgid "Se_lect None" +msgstr "Keine Auswahl" + #: rapid/glade3/rapid.glade.h:79 -msgid "Report a warning" -msgstr "Warnung anzeigen" +msgid "Select All Pho_tos" +msgstr "Alle Bilder auswählen" #: rapid/glade3/rapid.glade.h:80 -msgid "Report an error" -msgstr "Fehler anzeigen" +msgid "Select All Vi_deos" +msgstr "Alle Filme auswählen" #: rapid/glade3/rapid.glade.h:81 +msgid "Select All Wit_h Job Code" +msgstr "Alle mit Auftragsbezeichnung auswählen" + +#: rapid/glade3/rapid.glade.h:82 +msgid "Select All Without _Job Code" +msgstr "Alle ohne Auftragsbezeichnung auswählen" + +#: rapid/glade3/rapid.glade.h:83 +msgid "Select _All" +msgstr "_Alles auswählen" + +#: rapid/glade3/rapid.glade.h:84 msgid "Skip" msgstr "Überspringen" -#: rapid/glade3/rapid.glade.h:82 +#: rapid/glade3/rapid.glade.h:85 msgid "Skip download" msgstr "Überspringe Download" -#: rapid/glade3/rapid.glade.h:83 +#: rapid/glade3/rapid.glade.h:86 msgid "" "Sorry, video downloading functionality disabled. To download videos, please " "install the kaa metadata package for python." @@ -1880,7 +1890,7 @@ msgstr "" "ermöglichen muss zunächst das Paket kaa metadata für Python " "installiert werden." -#: rapid/glade3/rapid.glade.h:84 +#: rapid/glade3/rapid.glade.h:87 msgid "" "Specify the folder in which backups are stored on the device. \n" "\n" @@ -1895,7 +1905,7 @@ msgstr "" "Sicherungskopien verwendet wird. Erstellen Sie auf jedem Laufwerk, welches " "für Sicherungskopien verwendet wird, einen Ordner mit diesem Namen." -#: rapid/glade3/rapid.glade.h:87 +#: rapid/glade3/rapid.glade.h:90 msgid "" "Specify the time in 24 hour format at which the Downloads today " "sequence number should be reset." @@ -1903,21 +1913,7 @@ msgstr "" "Geben Sie die Zeit im 24-Stunden Format an, wann die Sequenznummer in " "Downloads heute zurückgesetzt werden soll." -#: rapid/glade3/rapid.glade.h:88 -msgid "" -"Specify what to do when a photo or video of the same name has already been " -"downloaded or backed up." -msgstr "" -"Geben Sie an was zu tun ist, falls im Download- oder Sicherungsverzeichnis " -"bereits eine Datei mit demselben Namen exisiert." - -#: rapid/glade3/rapid.glade.h:89 -msgid "Specify what to do when there are no backup devices." -msgstr "" -"Geben Sie an was geschehen soll, falls keine Sicherungslaufwerke vorhanden " -"sind." - -#: rapid/glade3/rapid.glade.h:90 +#: rapid/glade3/rapid.glade.h:91 msgid "" "Specify whether photo, video and folder names should have any characters " "removed that are not allowed by other operating systems." @@ -1925,44 +1921,53 @@ msgstr "" "Geben Sie ab, ob Zeichen in Namen oder Ordnern, welche auf einem anderen " "Betriebssystem nicht gültig sind, entfernt werden sollen." -#: rapid/glade3/rapid.glade.h:91 +#: rapid/glade3/rapid.glade.h:92 msgid "Start downloading at program startup" msgstr "Beginn des Downloads bei Programmstart" -#: rapid/glade3/rapid.glade.h:92 +#: rapid/glade3/rapid.glade.h:93 msgid "Start downloading upon device insertion" msgstr "Mit dem Herunterladen beginnen, sobald ein Laufwerk verfügbar ist" -#: rapid/glade3/rapid.glade.h:93 +#: rapid/glade3/rapid.glade.h:94 msgid "Stored number:" msgstr "Gespeicherte Nummer" -#: rapid/glade3/rapid.glade.h:94 +#: rapid/glade3/rapid.glade.h:95 msgid "Strip incompatible characters" msgstr "Entferne nicht kompatible Zeichen" -#: rapid/glade3/rapid.glade.h:95 +#: rapid/glade3/rapid.glade.h:96 msgid "Synchronize RAW + JPEG sequence numbers" msgstr "Synchronisiere RAW + JPEG Sequenznummern" -#: rapid/glade3/rapid.glade.h:96 +#: rapid/glade3/rapid.glade.h:97 msgid "Unmount (\"eject\") device upon download completion" msgstr "" "Unmount (\"Auswerfen\") des Laufwerkes, sobald das Herunterladen beendet ist" -#: rapid/glade3/rapid.glade.h:97 +#: rapid/glade3/rapid.glade.h:98 msgid "Video Folders" msgstr "Filme Ordner" -#: rapid/glade3/rapid.glade.h:98 +#: rapid/glade3/rapid.glade.h:99 msgid "Video Rename" msgstr "Filme Umbenennen" -#: rapid/glade3/rapid.glade.h:99 +#: rapid/glade3/rapid.glade.h:100 msgid "Video backup folder name:" msgstr "Sicherungsordner für Filme:" -#: rapid/glade3/rapid.glade.h:100 +#: rapid/glade3/rapid.glade.h:101 +msgid "" +"When a photo or video of the same name has already been downloaded, choose " +"whether to skip downloading the file, or to add a unique indentifier." +msgstr "" +"Bitte wählen Sie aus, was zu tun ist, wenn ein Bild oder ein Film bereits " +"heruntergeladen wurde, entweder Datei überspringen oder eine eindeutige " +"Bezeichnung anfügen." + +#: rapid/glade3/rapid.glade.h:102 msgid "" "When backing up, choose whether to overwrite a file on the backup device " "that has the same name, or skip backing it up." @@ -1970,7 +1975,7 @@ msgstr "" "Bitte geben Sie an was geschehen soll, falls bei der Sicherung bereits eine " "Datei mit demselben Namen vorhanden ist, Überspringen oder Überschreiben." -#: rapid/glade3/rapid.glade.h:101 +#: rapid/glade3/rapid.glade.h:103 msgid "" "You can have your photos and videos backed up to multiple locations as they " "are downloaded, e.g. external hard drives." @@ -1978,47 +1983,71 @@ msgstr "" "Bilder und Filme können während dem Herunterladen an mehrere Orte gesichert " "werden, z.B. auf externe Laufwerke." -#: rapid/glade3/rapid.glade.h:102 +#: rapid/glade3/rapid.glade.h:104 msgid "_Add..." msgstr "_Hinzufügen …" -#: rapid/glade3/rapid.glade.h:103 +#: rapid/glade3/rapid.glade.h:105 msgid "_Clear Completed Downloads" msgstr "_Heruntergeladene Dateien nicht mehr anzeigen" -#: rapid/glade3/rapid.glade.h:104 +#: rapid/glade3/rapid.glade.h:106 +msgid "_Device" +msgstr "_Laufwerk" + +#: rapid/glade3/rapid.glade.h:107 msgid "_Error Log" msgstr "_Fehlerprotokoll" -#: rapid/glade3/rapid.glade.h:105 +#: rapid/glade3/rapid.glade.h:108 +msgid "_File" +msgstr "_Datei" + +#: rapid/glade3/rapid.glade.h:109 +msgid "_Filename" +msgstr "_Dateiname" + +#: rapid/glade3/rapid.glade.h:110 msgid "_Get Help Online..." msgstr "_Online Hilfe ..." -#: rapid/glade3/rapid.glade.h:106 +#: rapid/glade3/rapid.glade.h:111 msgid "_Help" msgstr "_Hilfe" -#: rapid/glade3/rapid.glade.h:107 +#: rapid/glade3/rapid.glade.h:112 msgid "_Make a Donation..." msgstr "_Machen Sie eine Spende" -#: rapid/glade3/rapid.glade.h:108 -msgid "_Photos" -msgstr "_Fotos" +#: rapid/glade3/rapid.glade.h:113 +msgid "_Path" +msgstr "_Pfad" -#: rapid/glade3/rapid.glade.h:109 +#: rapid/glade3/rapid.glade.h:114 +msgid "_Preview" +msgstr "_Vorschau" + +#: rapid/glade3/rapid.glade.h:115 msgid "_Report a Problem..." msgstr "_Problemmeldung" -#: rapid/glade3/rapid.glade.h:110 -msgid "_Thumbnails" -msgstr "_Vorschaubilder" +#: rapid/glade3/rapid.glade.h:116 +msgid "_Select" +msgstr "_Auswahl" -#: rapid/glade3/rapid.glade.h:111 +#: rapid/glade3/rapid.glade.h:117 +msgid "_Size" +msgstr "_Grösse" + +#: rapid/glade3/rapid.glade.h:118 msgid "_Translate this Application..." msgstr "_Übersetzung der Applikation" -#: rapid/glade3/rapid.glade.h:112 +#: rapid/glade3/rapid.glade.h:119 +msgid "_Type" +msgstr "_Typ" + +#: rapid/glade3/rapid.glade.h:120 msgid "_View" msgstr "_Ansicht" @@ -2042,9 +2071,20 @@ msgstr "_Ansicht" #~ msgid "Image has no metadata" #~ msgstr "Das Bild enthält keine Metadaten" +#, python-format +#~ msgid "Source: %s" +#~ msgstr "Quelle: %s" + #~ msgid "Backup image already exists" #~ msgstr "Die Sicherungskopie besteht bereits" +#~ msgid "Download copying error" +#~ msgstr "Fehler beim Kopieren" + +#, python-format +#~ msgid "Unique identifier '%s' added" +#~ msgstr "Die eindeutige Bezeichnung '%s' wurde hinzugefügt" + #, python-format #~ msgid "%s images skipped" #~ msgstr "%s Bilder übersprungen" @@ -2053,6 +2093,9 @@ msgstr "_Ansicht" #~ msgid "%s images downloaded" #~ msgstr "%s Bilder heruntergeladen" +#~ msgid "Backup device missing" +#~ msgstr "Das Laufwerk für die Sicherungskopien fehlt" + #~ msgid "Image overwritten" #~ msgstr "Bilddatei überschrieben" @@ -2075,6 +2118,9 @@ msgstr "_Ansicht" #~ msgid "Thumbnail cannot be displayed" #~ msgstr "Vorschaubild kann nicht angezeigt werden" +#~ msgid "It may be corrupted" +#~ msgstr "Es könnte defekt sein" + #, python-format #~ msgid "Device scan complete: found %(number)s images on %(device)s" #~ msgstr "" @@ -2096,6 +2142,16 @@ msgstr "_Ansicht" #~ msgstr "" #~ "Überprüfung der Laufwerke abgeschlossen: Keine Bilder gefunden auf %s" +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Destination: %(destination)s\n" +#~ "Error: %(errorno)s %(strerror)s" +#~ msgstr "" +#~ "Quelle: %(source)s\n" +#~ "Ziel: %(destination)s\n" +#~ "Fehler: %(errorno)s %(strerror)s" + #, python-format #~ msgid "" #~ "Destination directory could not be created\n" @@ -2106,6 +2162,19 @@ msgstr "_Ansicht" #~ "%(directory)s\n" #~ "Fehler: %(errno)s %(strerror)s" +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Destination: %(destination)s\n" +#~ "Error: %(errno)s %(strerror)s" +#~ msgstr "" +#~ "Quelle: %(source)s\n" +#~ "Ziel: %(destination)s\n" +#~ "Fehler: %(errno)s %(strerror)s" + +#~ msgid "_Download " +#~ msgstr "_Download " + #~ msgid "Subsecond metadata not present in image" #~ msgstr "Das Bild enthält keine Hunderstelsekunden-Informationen" @@ -2113,6 +2182,11 @@ msgstr "_Ansicht" #~ msgid "%s metadata is not present in image" #~ msgstr "%s Metadaten sind im Bild nicht vorhanden" +#, python-format +#~ msgid "Error in date time component. Value %s appears invalid" +#~ msgstr "" +#~ "Fehler in den Datum/Zeit Informationen. Der Wert %s scheint ungültig zu sein" + #~ msgid "image number was specified but image filename has no number" #~ msgstr "" #~ "Eine Bildnummer wurde angegeben, aber der Dateiname enthält keine Nummer" @@ -2120,9 +2194,20 @@ msgstr "_Ansicht" #~ msgid "Image Devices" #~ msgstr "Laufwerke mit Bilddaten" +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Problem: %(problem)s" +#~ msgstr "" +#~ "Quelle: %(source)s\n" +#~ "Problem: %(problem)s" + #~ msgid "Image Rename" #~ msgstr "Umbenennung von Bildern" +#~ msgid "Missing Backup Devices" +#~ msgstr "Fehlende Sicherungslaufwerke" + #~ msgid "Image Devices" #~ msgstr "Laufwerke" @@ -2169,6 +2254,11 @@ msgstr "_Ansicht" #~ msgid "Image location:" #~ msgstr "Bilder Quelle:" +#~ msgid "Specify what to do when there are no backup devices." +#~ msgstr "" +#~ "Geben Sie an was geschehen soll, falls keine Sicherungslaufwerke vorhanden " +#~ "sind." + #~ msgid "" #~ "Specify whether image and folder names should have any characters removed " #~ "that are not allowed by other operating systems." @@ -2189,9 +2279,18 @@ msgstr "_Ansicht" #~ msgid "Start downloading upon image device insertion" #~ msgstr "Beginn des Downloads beim Einfügen von Bilderlaufwerken" +#~ msgid "_Photos" +#~ msgstr "_Fotos" + +#~ msgid "_Thumbnails" +#~ msgstr "_Vorschaubilder" + #~ msgid "No backup device was detected." #~ msgstr "Das Laufwerk für die Sicherungskopien konnte nicht gefunden werden." +#~ msgid "Preferences were changed." +#~ msgstr "Die Voreinstellungen wurden geändert." + #~ msgid "images skipped" #~ msgstr "Bilder übersprungen" @@ -2202,6 +2301,10 @@ msgstr "_Ansicht" #~ msgstr "" #~ "Erweiterung wurde angegeben, aber der Dateiname enthält keine Erweiterung" +#, python-format +#~ msgid "error generating name with component %s" +#~ msgstr "Ein Fehler ist aufgetreten bei der Erstellung des Namens mit %s" + #~ msgid "Example: /home/user/photos" #~ msgstr "Beispiel: /home/user/Fotos" @@ -2218,6 +2321,15 @@ msgstr "_Ansicht" #~ "Sie können Bilder während des Herunterladens an mehrere Orten sichern, z.B. " #~ "auf externe Festplatten." +#~ msgid "Report an error" +#~ msgstr "Fehler anzeigen" + +#~ msgid "Report a warning" +#~ msgstr "Warnung anzeigen" + +#~ msgid "Ignore" +#~ msgstr "Ignorieren" + #~ msgid "" #~ "Specify what to do when an image of the same name has already been " #~ "downloaded or backed up." @@ -2240,6 +2352,14 @@ msgstr "_Ansicht" #~ msgid "Image Name Conflicts" #~ msgstr "Konflikte der Bildernamen" +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Destination: %(destination)s\n" +#~ msgstr "" +#~ "Quelle: %(source)s\n" +#~ "Ziel: %(destination)s\n" + #~ msgid "" #~ "Warning: There is insufficient image metadata to fully generate " #~ "the name. Please use other renaming options." @@ -2253,6 +2373,18 @@ msgstr "_Ansicht" #~ msgstr "" #~ "Bilder mit gleichem Dateinamen aber abweichender Aufnahmezeit gefunden:" +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Partially generated filename: %(newname)s\n" +#~ "Destination: %(destination)s\n" +#~ "Problem: %(problem)s" +#~ msgstr "" +#~ "Quelle: %(source)s\n" +#~ "Teilweise erstellter Dateiname: %(newname)s\n" +#~ "Ziel: %(destination)s\n" +#~ "Problem: %(problem)s" + #, python-format #~ msgid "" #~ "First image: %(image1)s %(image1_date_time)s:%(image1_subseconds)s\n" @@ -2275,6 +2407,14 @@ msgstr "_Ansicht" #~ msgid "Deleted %i images from image device" #~ msgstr "%i Bilder auf dem Laufwerk gelöscht" +#~ msgid "Enter a new job code, or select a previous one." +#~ msgstr "" +#~ "Geben Sie eine neue Auftragsbezeichnung an oder wählen Sie eine bereits " +#~ "bestehende." + +#~ msgid "Enter a new job code." +#~ msgstr "Geben Sie eine neue Auftragsbezeichnung an." + #~ msgid "Problem with Image Location Folder" #~ msgstr "Problem mit dem Bildverzeichnis" @@ -2407,3 +2547,141 @@ msgstr "_Ansicht" #~ "Laufwerk für Sicherungskopien verwendet wird oder nicht. Bitte erstellen Sie " #~ "auf jedem Laufwerk, welches Sie zur Datensicherung verwenden wollen, ein " #~ "Verzeichnis mit diesem Namen." + +#, python-format +#~ msgid "0 of %(number)s %(filetypes)s" +#~ msgstr "0 von %(number)s %(filetypes)s" + +#, python-format +#~ msgid "%(filetype)s has no metadata" +#~ msgstr "%(filetype)s enthält keine Metadaten" + +#~ msgid "Photo skipped" +#~ msgstr "Bild übersprungen" + +#~ msgid "Video already exists" +#~ msgstr "Der Film exisiert bereits" + +#~ msgid "Photo already exists" +#~ msgstr "Das Bild exisiert bereits" + +#~ msgid "Video skipped" +#~ msgstr "Film übersprungen" + +#~ msgid "videos skipped" +#~ msgstr "Filme übersprungen" + +#~ msgid "videos downloaded" +#~ msgstr "Filme heruntergeladen" + +#~ msgid "photos skipped" +#~ msgstr "Bilder übersprungen" + +#~ msgid "photos downloaded" +#~ msgstr "Bilder heruntergeladen" + +#, python-format +#~ msgid "" +#~ "First photo: %(image1)s %(image1_date_time)s:%(image1_subseconds)s\n" +#~ "Second photo: %(image2)s %(image2_date_time)s:%(image2_subseconds)s" +#~ msgstr "" +#~ "Erstes Bild: %(image1)s %(image1_date_time)s:%(image1_subseconds)s\n" +#~ "Zweites Bild: %(image2)s %(image2_date_time)s:%(image2_subseconds)s" + +#~ msgid "" +#~ "Photos detected with the same filenames, but taken at different times:" +#~ msgstr "" +#~ "Bilder mit identischen Dateinamen aber unterschiedlichen Aufnahmezeiten " +#~ "wurden gefunden:" + +#, python-format +#~ msgid "%(filetype)s filename could not be generated" +#~ msgstr "%(filetype)s Dateiname konnte nicht erstellt werden" + +#, python-format +#~ msgid "" +#~ "%(filetype)s filename could not be properly generated. Check to ensure there " +#~ "is sufficient metadata." +#~ msgstr "" +#~ "%(filetype)s Dateiname konnte nicht richtig erstellt werden. Bitte " +#~ "überprüfen Sie die Vollständigkeit der Metadaten." + +#, python-format +#~ msgid "" +#~ "Subfolder: %(subfolder)s\n" +#~ "File: %(file)s\n" +#~ "Problem: %(problem)s" +#~ msgstr "" +#~ "Unterordner: %(subfolder)s\n" +#~ "Datei: %(file)s\n" +#~ "Problem: %(problem)s" + +#, python-format +#~ msgid "" +#~ "Metadata is essential for generating subfolder and/or file names.\n" +#~ "Source: %s" +#~ msgstr "" +#~ "Metadata sind notwendig für die Erstellung von Unterordnern und/oder " +#~ "Dateinamen.\n" +#~ "Quelle: %s" + +#~ msgid "" +#~ "Subfolder name could not be properly generated. Check to ensure there is " +#~ "sufficient metadata." +#~ msgstr "" +#~ "Die Namen der Unterordner konnten nicht erstellt werden. Bitte überprüfen " +#~ "Sie die Vollständigkeit der metadaten." + +#, python-format +#~ msgid "%(noFiles)s %(filetypes)s skipped" +#~ msgstr "%(noFiles)s %(filetypes)s übersprungen" + +#~ msgid "Photo thumbnail could not be extracted" +#~ msgstr "Das Vorschaubild konnte nicht angezeigt werden" + +#~ msgid "No backup device was automatically detected" +#~ msgstr "Es wurde kein Sicherungslaufwerk automatisch erkannt" + +#~ msgid "image or video number was specified but filename has no number" +#~ msgstr "" +#~ "Eine Bild- oder Filmnummer wurde angegeben, aber der Dateiname enthält keine " +#~ "Nummer" + +#, python-format +#~ msgid "%s metadata is not present in photo" +#~ msgstr "%s Metadaten existieren im Bild nicht" + +#~ msgid "extension was specified but filename does not have an extension" +#~ msgstr "Ein Dateityp wurde angegeben aber der Dateiname enthält keinen Typen" + +#~ msgid "Subsecond metadata not present in photo" +#~ msgstr "Hundertstelssekunden Metadaten sind nicht vorhanden" + +#, python-format +#~ msgid "%s metadata is not present in video" +#~ msgstr "%s Metadaten existieren im Film nicht" + +#, python-format +#~ msgid "%s metadata is not present" +#~ msgstr "%s Metadaten sind nicht vorhanden" + +#~ msgid "" +#~ "Choose whether to skip downloading the file, or to add a unique indentifier." +#~ msgstr "" +#~ "Wählen Sie, ob der Download übersprungen oder eine eindeutige Bezeichnung " +#~ "angefügt werden soll." + +#~ msgid "" +#~ "Specify what to do when a photo or video of the same name has already been " +#~ "downloaded or backed up." +#~ msgstr "" +#~ "Geben Sie an was zu tun ist, falls im Download- oder Sicherungsverzeichnis " +#~ "bereits eine Datei mit demselben Namen exisiert." + +#, python-format +#~ msgid "Could not open %(filetype)s" +#~ msgstr "Konnte %(filetype)s nicht öffnen" + +#, python-format +#~ msgid "The %(filetype)s was not copied." +#~ msgstr "Die %(filetype)s wurde nicht kopiert." diff --git a/po/es.po b/po/es.po index e4431ce..e8e8002 100644 --- a/po/es.po +++ b/po/es.po @@ -7,160 +7,160 @@ msgid "" msgstr "" "Project-Id-Version: rapid\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2010-05-27 22:33-0500\n" -"PO-Revision-Date: 2010-06-03 19:24+0000\n" -"Last-Translator: Toni Lähdekorpi \n" +"POT-Creation-Date: 2010-07-02 22:51-0500\n" +"PO-Revision-Date: 2010-07-07 08:55+0000\n" +"Last-Translator: Jose Luis Navarro \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-06-06 17:56+0000\n" +"X-Launchpad-Export-Date: 2010-07-09 17:32+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Translators: if neccessary, for guidance in how to translate this program, you may see http://damonlynch.net/translate.html -#: rapid/rapid.py:104 rapid/rapid.py:4447 rapid/glade3/rapid.glade.h:72 +#: rapid/rapid.py:122 rapid/rapid.py:6181 rapid/glade3/rapid.glade.h:71 msgid "Rapid Photo Downloader" msgstr "Rapid Photo Downloader" -#: rapid/rapid.py:394 +#: rapid/rapid.py:449 msgid "New York" msgstr "Nueva York" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Manila" msgstr "Manila" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Prague" msgstr "Praga" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Helsinki" msgstr "Helsinki" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Wellington" msgstr "Wellington" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Tehran" msgstr "Teherán" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Kampala" msgstr "Kampala" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Paris" msgstr "París" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Berlin" msgstr "Berlín" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Sydney" msgstr "Sídney" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Budapest" msgstr "Budapest" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Rome" msgstr "Roma" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Moscow" msgstr "Moscú" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Delhi" msgstr "Delhi" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Warsaw" msgstr "Varsovia" -#: rapid/rapid.py:398 +#: rapid/rapid.py:453 msgid "Jakarta" msgstr "Jakarta" -#: rapid/rapid.py:398 +#: rapid/rapid.py:453 msgid "Madrid" msgstr "Madrid" -#: rapid/rapid.py:398 +#: rapid/rapid.py:453 msgid "Stockholm" msgstr "Estocolmo" -#: rapid/rapid.py:425 +#: rapid/rapid.py:486 msgid "Invalid Downloads Today value.\n" msgstr "Valor inválido de descargas de hoy.\n" -#: rapid/rapid.py:426 +#: rapid/rapid.py:487 msgid "Resetting value to zero.\n" msgstr "Restableciendo valor a cero.\n" -#: rapid/rapid.py:465 +#: rapid/rapid.py:526 msgid "'Start of day' preference value is corrupted.\n" msgstr "Valor preferencial de 'Inicio del día' corrupto.\n" -#: rapid/rapid.py:466 +#: rapid/rapid.py:527 msgid "Resetting to midnight.\n" msgstr "Restableciendo a medianoche.\n" -#: rapid/rapid.py:492 +#: rapid/rapid.py:553 msgid "Error in Photo Rename preferences" -msgstr "" +msgstr "Error en las preferencias de renombrado de fotos" -#: rapid/rapid.py:523 rapid/rapid.py:1567 +#: rapid/rapid.py:584 rapid/rapid.py:1689 msgid "Sorry,these preferences contain an error:\n" msgstr "Lo siento, pero estas preferencias contienen un error:\n" -#: rapid/rapid.py:534 +#: rapid/rapid.py:595 msgid "Resetting to default values." msgstr "Restableciendo a los valores por defecto." #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:609 rapid/renamesubfolderprefs.py:196 +#: rapid/rapid.py:670 rapid/renamesubfolderprefs.py:198 msgid "Job code" msgstr "Código de trabajo" -#: rapid/rapid.py:677 +#: rapid/rapid.py:738 msgid "Error in Video Rename preferences" -msgstr "" +msgstr "Error en las preferencias de renombrado de vídeos" -#: rapid/rapid.py:695 +#: rapid/rapid.py:756 msgid "Error in Photo Download Subfolders preferences" msgstr "" -#: rapid/rapid.py:712 +#: rapid/rapid.py:773 msgid "Error in Video Download Subfolders preferences" msgstr "" -#: rapid/rapid.py:745 rapid/rapid.py:1492 +#: rapid/rapid.py:806 rapid/rapid.py:1539 msgid "photos and videos" msgstr "fotos y videos" -#: rapid/rapid.py:747 rapid/rapid.py:1502 rapid/rapid.py:1782 +#: rapid/rapid.py:808 rapid/rapid.py:1549 rapid/rapid.py:1658 msgid "photos" msgstr "fotos" -#: rapid/rapid.py:880 +#: rapid/rapid.py:943 msgid "Select a folder to download photos to" msgstr "Selecciona un directorio donde descargar las fotos" -#: rapid/rapid.py:898 +#: rapid/rapid.py:961 msgid "Select a folder to download videos to" msgstr "Selecciona un directorio donde descargar los videos" -#: rapid/rapid.py:980 +#: rapid/rapid.py:1043 #, python-format msgid "Select a folder containing %(file_types)s" msgstr "Selecciona un directorio conteniendo %(file_types)s" -#: rapid/rapid.py:1002 +#: rapid/rapid.py:1065 #, python-format msgid "Select a folder in which to backup %(file_types)s" msgstr "" @@ -168,45 +168,45 @@ msgstr "" "%(file_types)s" #. Translators: please do not modify or leave out html formatting tags like and . These are used to format the text the users sees -#: rapid/rapid.py:1095 +#: rapid/rapid.py:1146 msgid "" "Warning: There is insufficient metadata to fully generate the " "name. Please use other renaming options." msgstr "" -#: rapid/rapid.py:1129 +#: rapid/rapid.py:1182 msgid "" "Warning: There is insufficient metadata to fully generate " "subfolders. Please use other subfolder naming options." msgstr "" #. Translators: you should not modify or leave out the %s. This is a code used by the programming language python to insert a value that thes user will see -#: rapid/rapid.py:1133 +#: rapid/rapid.py:1186 #, python-format msgid "Example: %s" msgstr "Ejemplo: %s" -#: rapid/rapid.py:1159 +#: rapid/rapid.py:1212 msgid "" "Downloads today value not updated, as a download is currently occurring" msgstr "" "El número de descargas de hoy no se actualizó, pues se está haciendo una " "descarga actualmente." -#: rapid/rapid.py:1175 +#: rapid/rapid.py:1228 msgid "Stored number value not updated, as a download is currently occurring" msgstr "" "El número de almacenados no se actualizó, pues se está haciendo una descarga " "actualmente." -#: rapid/rapid.py:1205 +#: rapid/rapid.py:1258 #, python-format msgid "" "The %(filetype)s subfolder preferences had some unnecessary values removed." msgstr "" #. Preferences list is now empty -#: rapid/rapid.py:1210 +#: rapid/rapid.py:1263 #, python-format msgid "" "The %(filetype)s subfolder preferences entered are invalid and cannot be " @@ -215,59 +215,95 @@ msgid "" msgstr "" #. check subfolder preferences for bad values -#: rapid/rapid.py:1224 rapid/rapid.py:1504 rapid/rapid.py:2533 +#: rapid/rapid.py:1277 rapid/rapid.py:1551 msgid "photo" msgstr "foto" -#: rapid/rapid.py:1225 rapid/rapid.py:1499 rapid/rapid.py:2541 +#: rapid/rapid.py:1278 rapid/rapid.py:1546 msgid "video" msgstr "vídeo" #. Translators: this value is used as an example device when automatic backup device detection is enabled. You should translate this. -#: rapid/rapid.py:1468 +#: rapid/rapid.py:1515 msgid "externaldrive1" msgstr "dispositivoexterno1" #. Translators: this value is used as an example device when automatic backup device detection is enabled. You should translate this. -#: rapid/rapid.py:1470 +#: rapid/rapid.py:1517 msgid "externaldrive2" msgstr "dispositivoexterno2" -#: rapid/rapid.py:1494 rapid/rapid.py:1780 +#: rapid/rapid.py:1541 rapid/rapid.py:1656 msgid "photos or videos" msgstr "fotos y vídeos" -#: rapid/rapid.py:1497 +#: rapid/rapid.py:1544 msgid "videos" msgstr "vídeos" +#: rapid/rapid.py:1556 +#, python-format +msgid "" +"%(date)s\n" +"%(time)s" +msgstr "" +"%(date)s\n" +"%(time)s" + +#: rapid/rapid.py:1558 +#, python-format +msgid "%(date)s %(time)s" +msgstr "%(date)s %(time)s" + +#: rapid/rapid.py:1561 +#, python-format +msgid "%(hour)s:%(minute)s:%(second)s:%(subsecond)s" +msgstr "%(hour)s:%(minute)s:%(second)s:%(subsecond)s" + +#: rapid/rapid.py:1568 +#, python-format +msgid "%(date)s %(hour)s:%(minute)s:%(second)s:%(subsecond)s" +msgstr "%(date)s %(hour)s:%(minute)s:%(second)s:%(subsecond)s" + +#: rapid/rapid.py:1596 rapid/rapid.py:2242 +msgid "subfolder and filename" +msgstr "" + +#: rapid/rapid.py:1598 rapid/rapid.py:2244 +msgid "filename" +msgstr "nombre de archivo" + +#: rapid/rapid.py:1600 rapid/rapid.py:2246 +msgid "subfolder" +msgstr "" + #. This refers to when a device like a hard drive is having its contents scanned, #. looking for photos or videos. It is visible initially in the progress bar for each device -#. (which normally holds "x of y photos"). +#. (which normally holds "x photos and videos"). #. It maybe displayed only briefly if the contents of the device being scanned is small. -#: rapid/rapid.py:1556 +#: rapid/rapid.py:1672 msgid "scanning..." msgstr "explorando..." -#: rapid/rapid.py:1663 +#: rapid/rapid.py:1783 msgid "The following download path could not be created:\n" msgstr "" -#: rapid/rapid.py:1664 +#: rapid/rapid.py:1784 #, python-format msgid "%(path)s: " msgstr "%(path)s: " -#: rapid/rapid.py:1665 rapid/rapid.py:1666 rapid/rapid.py:1681 -#: rapid/rapid.py:1682 rapid/rapid.py:2364 rapid/rapid.py:2367 +#: rapid/rapid.py:1785 rapid/rapid.py:1786 rapid/rapid.py:1801 +#: rapid/rapid.py:1802 rapid/rapid.py:2063 rapid/rapid.py:2066 msgid "Download cannot proceed" msgstr "No se puede proceder con la descarga" -#: rapid/rapid.py:1679 rapid/rapid.py:3381 +#: rapid/rapid.py:1799 rapid/rapid.py:4846 msgid "There is an error in the program preferences." msgstr "Hay un error en las preferencis del programa." -#: rapid/rapid.py:1680 +#: rapid/rapid.py:1800 msgid "" "\n" "Please check preferences, restart the program, and try again." @@ -279,10 +315,10 @@ msgstr "" #. It refers to the actual number of photos that can be copied. For example, the user might see the following: #. '0 of 512 photos' or '0 of 10 videos' or '0 of 202 photos and videos'. #. This particular text is displayed to the user before the download has started. -#: rapid/rapid.py:1791 +#: rapid/rapid.py:1974 #, python-format -msgid "0 of %(number)s %(filetypes)s" -msgstr "0 de %(number)s %(filetypes)s" +msgid "%(number)s %(filetypes)s" +msgstr "%(number)s %(filetypes)s" #. Translators: as you have already seen, the text can contain values that should not be modified or left out by you, for example %s. #. This text is another example of that, but it is is a little more complex. Here there are two values which will be displayed @@ -290,451 +326,428 @@ msgstr "0 de %(number)s %(filetypes)s" #. %(number)s should be left exactly as is: 'number' should not be translated. The same applies to %(device)s: 'device' should #. not be translated. Generally speaking, if translating the sentence requires it, you can move items like '%(xyz)s' around #. in a sentence, but you should never modify them or leave them out. -#: rapid/rapid.py:1803 +#: rapid/rapid.py:1985 #, python-format msgid "Device scan complete: found %(number)s %(filetypes)s on %(device)s" msgstr "" "Escaneo del dispositivo completo: se encontro %(number)s %(filetypes)s en " "%(device)s" -#: rapid/rapid.py:1810 +#: rapid/rapid.py:1992 #, python-format msgid "Device scan complete: no %(filetypes)s found on %(device)s" msgstr "" "Escaneo del dispositivo completo: no se encuentran %(filetypes)s en " "%(device)s" -#: rapid/rapid.py:1844 -#, python-format -msgid "%(filetype)s filename could not be generated" -msgstr "" +#. This message informs the user that the device (e.g. camera, hard drive or memory card) was automatically unmounted and they can now remove it +#: rapid/rapid.py:2013 +msgid "The device can now be safely removed" +msgstr "El dispositivo ya se puede extraer de forma segura" -#. '%(source)s' and '%(problem)s' are two more examples of text that should not be modified or left out -#: rapid/rapid.py:1846 +#: rapid/rapid.py:2019 #, python-format -msgid "" -"Source: %(source)s\n" -"Problem: %(problem)s" -msgstr "" -"Origen: %(source)s\n" -"Problema: %(problem)s" +msgid "%(noFiles)s %(filetypes)s downloaded" +msgstr "%(noFiles)s %(filetypes)s descargados" -#: rapid/rapid.py:1850 +#: rapid/rapid.py:2022 #, python-format -msgid "" -"%(filetype)s filename could not be properly generated. Check to ensure there " -"is sufficient metadata." +msgid "%(noFiles)s %(filetypes)s failed to download" msgstr "" -#: rapid/rapid.py:1851 -#, python-format -msgid "" -"Source: %(source)s\n" -"Partially generated filename: %(newname)s\n" -"Destination: %(destination)s\n" -"Problem: %(problem)s" -msgstr "" -"Origen: %(source)s\n" -"Archivo generado parcialmente: %(newname)s\n" -"Destino: %(destination)s\n" -"Problema: %(problem)s" +#: rapid/rapid.py:2028 rapid/rapid.py:5627 +msgid "warnings" +msgstr "avisos" + +#: rapid/rapid.py:2030 rapid/rapid.py:5631 +msgid "errors" +msgstr "errores" -#: rapid/rapid.py:1859 rapid/rapid.py:1864 rapid/rapid.py:1883 -#: rapid/rapid.py:2207 +#: rapid/rapid.py:2057 #, python-format -msgid "" -"Source: %(source)s\n" -"Destination: %(destination)s" -msgstr "" -"Origen: %(source)s\n" -"Destino: %(destination)s" +msgid "Source: %s\n" +msgstr "Origen: %s\n" -#: rapid/rapid.py:1861 +#: rapid/rapid.py:2059 #, python-format -msgid "Unique identifier '%s' added" -msgstr "Identificador único '%s' agregado" +msgid "Device: %s\n" +msgstr "Dispositivo: %s\n" -#: rapid/rapid.py:1869 rapid/rapid.py:2270 +#: rapid/rapid.py:2060 #, python-format -msgid "Source: %(source)s" -msgstr "Origen: %(source)s" +msgid "Destination: %s" +msgstr "Destino: %s" -#: rapid/rapid.py:1877 rapid/rapid.py:1882 -msgid "Download copying error" -msgstr "Error al copiar la descarga" +#: rapid/rapid.py:2061 rapid/rapid.py:2064 +msgid "Could not create temporary download directory" +msgstr "No se pudo crear el directorio de descarga temporal" -#: rapid/rapid.py:1878 -#, python-format -msgid "" -"Source: %(source)s\n" -"Destination: %(destination)s\n" -"Error: %(errorno)s %(strerror)s" +#: rapid/rapid.py:2064 +msgid "Error:" +msgstr "Error:" + +#: rapid/rapid.py:2088 +msgid "Backup path does not exist" msgstr "" -"Origen: %(source)s\n" -"Destino: %(destination)s\n" -"Error: %(errorno)s %(strerror)s" -#: rapid/rapid.py:1880 rapid/rapid.py:1885 +#: rapid/rapid.py:2089 #, python-format -msgid "The %(filetype)s was not copied." +msgid "The path %s could not be created" msgstr "" -#: rapid/rapid.py:1889 -msgid "" -"Photos detected with the same filenames, but taken at different times:" +#: rapid/rapid.py:2090 +msgid "No backups can occur" msgstr "" -#: rapid/rapid.py:1890 +#: rapid/rapid.py:2117 #, python-format msgid "" -"First photo: %(image1)s %(image1_date_time)s:%(image1_subseconds)s\n" -"Second photo: %(image2)s %(image2_date_time)s:%(image2_subseconds)s" +"Source: %(source)s\n" +"Destination: %(destination)s\n" +"%(problem)s" msgstr "" -"Primera foto: %(image1)s %(image1_date_time)s:%(image1_subseconds)s\n" -"Segunda foto: %(image2)s %(image2_date_time)s:%(image2_subseconds)s" +"Origen: %(source)s\n" +"Destino: %(destination)s\n" +"%(problem)s" -#: rapid/rapid.py:1914 rapid/rapid.py:1927 +#: rapid/rapid.py:2146 rapid/rapid.py:2492 rapid/rapid.py:2527 +#: rapid/rapid.py:2555 rapid/rapid.py:2586 rapid/rapid.py:2605 #, python-format -msgid "Could not open %(filetype)s" +msgid "" +"Source: %(source)s\n" +"Destination: %(destination)s" msgstr "" +"Origen: %(source)s\n" +"Destino: %(destination)s" -#: rapid/rapid.py:1915 rapid/rapid.py:1928 -#, python-format -msgid "Source: %s" -msgstr "Origen: %s" - -#: rapid/rapid.py:1950 -#, python-format -msgid "%(filetype)s has no metadata" +#. hopefully inst will never be None, but just to be safe... +#: rapid/rapid.py:2161 +msgid "Please check your system and try again." msgstr "" -#: rapid/rapid.py:1951 -#, python-format -msgid "" -"Metadata is essential for generating subfolder and/or file names.\n" -"Source: %s" +#: rapid/rapid.py:2181 +msgid "Photos detected with the same filenames, but taken at different times" msgstr "" -#: rapid/rapid.py:1962 -msgid "" -"Subfolder name could not be properly generated. Check to ensure there is " -"sufficient metadata." +#: rapid/rapid.py:2221 +msgid "Photo has already been downloaded" msgstr "" -#: rapid/rapid.py:1963 +#: rapid/rapid.py:2222 rapid/rapid.py:2621 #, python-format -msgid "" -"Subfolder: %(subfolder)s\n" -"File: %(file)s\n" -"Problem: %(problem)s" -msgstr "" +msgid "Source: %(source)s" +msgstr "Origen: %(source)s" #. A new day, according the user's preferences of what time a day begins, has started -#: rapid/rapid.py:2147 +#: rapid/rapid.py:2420 msgid "New day has started - resetting 'Downloads Today' sequence number" msgstr "" "Ha empezado un nuevo día - restableciendo los números de secuencia de " "'Descargas del día'" -#: rapid/rapid.py:2206 +#: rapid/rapid.py:2491 #, python-format msgid "Backup of %(file_type)s already exists" msgstr "" -#: rapid/rapid.py:2210 +#: rapid/rapid.py:2495 #, python-format msgid "Backup %(file_type)s overwritten" msgstr "" -#: rapid/rapid.py:2215 +#: rapid/rapid.py:2499 #, python-format msgid "%(file_type)s not backed up to %(volume)s" msgstr "" -#: rapid/rapid.py:2217 +#: rapid/rapid.py:2501 #, python-format msgid "%(file_type)s not backed up" msgstr "" -#: rapid/rapid.py:2243 rapid/rapid.py:2260 +#: rapid/rapid.py:2524 rapid/rapid.py:2552 rapid/rapid.py:2585 +#: rapid/rapid.py:2604 msgid "Backing up error" msgstr "Error en copia de seguridad" -#: rapid/rapid.py:2244 +#: rapid/rapid.py:2525 rapid/rapid.py:2553 #, python-format msgid "Destination directory could not be created: %(directory)s\n" msgstr "El directorio de destino no puede ser creado: %(directory)s\n" -#: rapid/rapid.py:2246 -#, python-format -msgid "" -"Source: %(source)s\n" -"Destination: %(destination)s\n" -msgstr "" -"Origen: %(source)s\n" -"Destino: %(destination)s\n" - -#: rapid/rapid.py:2248 +#: rapid/rapid.py:2529 rapid/rapid.py:2588 #, python-format -msgid "Error: %(errno)s %(strerror)s" -msgstr "Error: %(errno)s %(strerror)s" +msgid "Error: %(inst)s" +msgstr "Error: %(inst)s" -#: rapid/rapid.py:2249 rapid/rapid.py:2263 +#: rapid/rapid.py:2530 rapid/rapid.py:2558 rapid/rapid.py:2589 +#: rapid/rapid.py:2608 #, python-format msgid "The %(file_type)s was not backed up." msgstr "" -#: rapid/rapid.py:2261 +#: rapid/rapid.py:2557 rapid/rapid.py:2607 #, python-format -msgid "" -"Source: %(source)s\n" -"Destination: %(destination)s\n" -"Error: %(errno)s %(strerror)s" -msgstr "" -"Origen: %(source)s\n" -"Destino: %(destination)s\n" -"Error: %(errno)s %(strerror)s" +msgid "Error: %(errno)s %(strerror)s" +msgstr "Error: %(errno)s %(strerror)s" -#: rapid/rapid.py:2269 +#: rapid/rapid.py:2620 #, python-format msgid "%(file_type)s could not be backed up" msgstr "" -#: rapid/rapid.py:2272 +#: rapid/rapid.py:2623 msgid "No suitable backup volume was found" msgstr "" -#: rapid/rapid.py:2274 +#: rapid/rapid.py:2625 msgid "A backup location was not found" msgstr "" -#. This message informs the user that the device (e.g. camera, hard drive or memory card) was automatically unmounted and they can now remove it -#: rapid/rapid.py:2288 -msgid "The device can now be safely removed" -msgstr "El dispositivo ya se puede extraer de forma segura" - -#: rapid/rapid.py:2294 -#, python-format -msgid "%(noFiles)s %(filetypes)s downloaded" -msgstr "" - -#: rapid/rapid.py:2297 -#, python-format -msgid "%(noFiles)s %(filetypes)s skipped" -msgstr "" - -#: rapid/rapid.py:2303 rapid/rapid.py:4027 -msgid "warnings" -msgstr "avisos" - -#: rapid/rapid.py:2305 rapid/rapid.py:4029 -msgid "errors" -msgstr "errores" - -#: rapid/rapid.py:2331 rapid/rapid.py:2823 rapid/rapid.py:2838 -msgid "Photo thumbnail could not be extracted" -msgstr "" - -#: rapid/rapid.py:2358 -#, python-format -msgid "Source: %s\n" -msgstr "Origen: %s\n" - -#: rapid/rapid.py:2360 -#, python-format -msgid "Device: %s\n" -msgstr "Dispositivo: %s\n" - -#: rapid/rapid.py:2361 -#, python-format -msgid "Destination: %s" -msgstr "Destino: %s" - -#: rapid/rapid.py:2362 rapid/rapid.py:2365 -msgid "Could not create temporary download directory" -msgstr "No se pudo crear el directorio de descarga temporal" - -#: rapid/rapid.py:2365 -msgid "Error:" -msgstr "Error:" - -#: rapid/rapid.py:2382 +#: rapid/rapid.py:2679 #, python-format msgid "This device has no %(types_searched_for)s to download from." msgstr "" -#: rapid/rapid.py:2417 +#: rapid/rapid.py:2733 #, python-format msgid "Download has started from %s" msgstr "La descarga empezó desde %s" -#: rapid/rapid.py:2434 -msgid "Backup path does not exist" -msgstr "" - -#: rapid/rapid.py:2435 +#: rapid/rapid.py:2736 #, python-format -msgid "The path %s could not be created" -msgstr "" - -#: rapid/rapid.py:2436 rapid/rapid.py:2444 -msgid "No backups can occur" -msgstr "" - -#: rapid/rapid.py:2442 -msgid "Backup device missing" -msgstr "Dispositivo de respaldo perdido" - -#: rapid/rapid.py:2443 -msgid "No backup device was automatically detected" +msgid "Attempting to download %s files" msgstr "" -#: rapid/rapid.py:2534 rapid/rapid.py:3343 rapid/rapid.py:3345 -msgid "Photo" -msgstr "Foto" - -#: rapid/rapid.py:2535 -msgid "Photo skipped" -msgstr "" - -#: rapid/rapid.py:2536 -msgid "Photo already exists" -msgstr "Foto ya existe" - -#: rapid/rapid.py:2542 rapid/rapid.py:3343 -msgid "Video" -msgstr "Video" - -#: rapid/rapid.py:2543 -msgid "Video skipped" -msgstr "Video saltado" - -#: rapid/rapid.py:2544 -msgid "Video already exists" -msgstr "Video ya existe" - -#: rapid/rapid.py:2592 +#. reset the progress bar to update the status of this download attempt +#: rapid/rapid.py:2769 rapid/rapid.py:2836 #, python-format msgid "%(number)s of %(total)s %(filetypes)s" -msgstr "" +msgstr "%(number)s de %(total)s %(filetypes)s" -#: rapid/rapid.py:2607 rapid/rapid.py:2611 +#: rapid/rapid.py:2832 +#, python-format +msgid "%(number)s of %(total)s %(filetypes)s (%(remaining)s remaining)" +msgstr "%(number)s de %(total)s %(filetypes)s (%(remaining)s restantes)" + +#: rapid/rapid.py:2857 rapid/rapid.py:2861 msgid "Could not delete photo or video from device" msgstr "" -#: rapid/rapid.py:2608 +#: rapid/rapid.py:2858 #, python-format msgid "" "Photo: %(source)s\n" "Error: %(errno)s %(strerror)s" msgstr "" +"Foto: %(source)s\n" +"Error: %(errno)s %(strerror)s" -#: rapid/rapid.py:2612 +#: rapid/rapid.py:2862 #, python-format msgid "Photo: %(source)s" -msgstr "" +msgstr "Foto: %(source)s" -#: rapid/rapid.py:2614 +#: rapid/rapid.py:2864 #, python-format msgid "Deleted %(number)i %(filetypes)s from device" msgstr "" -#: rapid/rapid.py:2624 +#: rapid/rapid.py:2871 #, python-format msgid "Download complete from %s" msgstr "Descarga completa desde %s" #. Device refers to a thing like a camera, memory card in its reader, external hard drive, Portable Storage Device, etc. -#: rapid/rapid.py:2700 +#: rapid/rapid.py:2993 rapid/rapid.py:3466 msgid "Device" msgstr "Dispositivo" #. Size refers to the total size of images on the device, typically in MB or GB -#: rapid/rapid.py:2705 +#: rapid/rapid.py:2998 rapid/rapid.py:3455 msgid "Size" msgstr "Tamaño" -#: rapid/rapid.py:2708 +#: rapid/rapid.py:3001 msgid "Download Progress" msgstr "Progreso de descarga" -#: rapid/rapid.py:2824 rapid/rapid.py:2839 -msgid "It may be corrupted" -msgstr "Puede estar corrupta" +#: rapid/rapid.py:3089 +msgid "Downloading From Cameras" +msgstr "Descargando desde las camaras" + +#: rapid/rapid.py:3095 +msgid "Downloading directly from a camera may work poorly or not at all" +msgstr "" -#: rapid/rapid.py:2869 +#: rapid/rapid.py:3096 +msgid "" +"Downloading from a card reader always works and is generally much faster. It " +"is strongly recommended to use a card reader." +msgstr "" + +#: rapid/rapid.py:3110 +msgid "_Show this message again" +msgstr "_Mostrar este mensaje de nuevo" + +#: rapid/rapid.py:3145 msgid "Device Detected" msgstr "Dispositivo detectado" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2878 +#: rapid/rapid.py:3154 msgid "" "Should this device or partition be used to download photos or videos from?" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2897 +#: rapid/rapid.py:3173 msgid "_Remember this choice" msgstr "_Recordar esta elección" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2934 +#: rapid/rapid.py:3210 #, python-format msgid "%s selected for downloading from" msgstr "%s seleccionado para descargar de" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2937 +#: rapid/rapid.py:3213 msgid "This device or partition will always be used to download from" msgstr "Siempre se descargará de este dispositivo o partición" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2940 +#: rapid/rapid.py:3216 #, python-format msgid "%s rejected as a download device" msgstr "%s rechazado como dispositivo de descarga" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2943 +#: rapid/rapid.py:3219 msgid "This device or partition will never be used to download from" msgstr "Jamás se descargará de este dispositivo o partición" -#: rapid/rapid.py:2950 +#: rapid/rapid.py:3226 msgid "Remove all Job Codes?" msgstr "¿Borrar todos los Códigos de Trabajo?" -#: rapid/rapid.py:2967 +#: rapid/rapid.py:3243 msgid "Should all Job Codes be removed?" msgstr "¿Deberían ser removidos todos los Codigos de Trabajo?" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:2995 +#: rapid/rapid.py:3271 msgid "Enter a Job Code" msgstr "Ingrese un Código de trabajo" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:3013 -msgid "Enter a new job code, or select a previous one." -msgstr "Entre un nuevo código de trabajo o seleccione uno previo." +#: rapid/rapid.py:3290 +msgid "Enter a new Job Code, or select a previous one" +msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:3016 -msgid "Enter a new job code." -msgstr "Entre un nuevo código de trabajo." +#: rapid/rapid.py:3293 +msgid "Enter a new Job Code" +msgstr "" -#: rapid/rapid.py:3021 +#: rapid/rapid.py:3298 rapid/rapid.py:4417 msgid "Job Code:" msgstr "Código de trabajo:" -#: rapid/rapid.py:3068 +#: rapid/rapid.py:3345 msgid "Job Code entered" msgstr "Código de trabajo ingresado" -#: rapid/rapid.py:3070 +#: rapid/rapid.py:3347 msgid "Job Code not entered" msgstr "Código de trabajo no introducido" -#: rapid/rapid.py:3330 +#: rapid/rapid.py:3401 +msgid "Status" +msgstr "Estado" + +#: rapid/rapid.py:3409 +msgid "Type" +msgstr "Tipo" + +#: rapid/rapid.py:3418 rapid/rapid.py:4808 rapid/rapid.py:4810 +msgid "Photo" +msgstr "Foto" + +#: rapid/rapid.py:3420 +msgid "File" +msgstr "Archivo" + +#: rapid/rapid.py:3435 +msgid "Job Code" +msgstr "" + +#: rapid/rapid.py:3445 +msgid "Date" +msgstr "Fecha" + +#: rapid/rapid.py:3477 rapid/renamesubfolderprefs.py:194 +msgid "Filename" +msgstr "Nombre de archivo" + +#: rapid/rapid.py:3488 +msgid "Path" +msgstr "Ruta" + +#: rapid/rapid.py:3843 +#, python-format +msgid "%(filetype)s was downloaded successfully" +msgstr "" + +#: rapid/rapid.py:3845 +#, python-format +msgid "%(filetype)s was not downloaded" +msgstr "" + +#: rapid/rapid.py:3847 +#, python-format +msgid "%(filetype)s was downloaded with warnings" +msgstr "" + +#: rapid/rapid.py:3849 +#, python-format +msgid "%(filetype)s was downloaded but there were problems backing up" +msgstr "" + +#: rapid/rapid.py:3851 +#, python-format +msgid "%(filetype)s was neither downloaded nor backed up" +msgstr "" + +#: rapid/rapid.py:3853 +#, python-format +msgid "%(filetype)s is ready to be downloaded" +msgstr "" + +#: rapid/rapid.py:3855 +#, python-format +msgid "%(filetype)s is about to be downloaded" +msgstr "" + +#: rapid/rapid.py:3857 +#, python-format +msgid "%(filetype)s will be downloaded with warnings" +msgstr "" + +#: rapid/rapid.py:3859 +#, python-format +msgid "%(filetype)s cannot be downloaded" +msgstr "" + +#: rapid/rapid.py:4240 +msgid "Preview" +msgstr "Vista previa" + +#: rapid/rapid.py:4439 +msgid "Enter a new Job Code and press Enter, or select an existing Job Code" +msgstr "" + +#: rapid/rapid.py:4795 #, python-format msgid "" "Sorry, this device location does not exist:\n" @@ -743,81 +756,90 @@ msgid "" "Please resolve the problem, or modify your preferences." msgstr "" -#: rapid/rapid.py:3334 +#: rapid/rapid.py:4799 msgid "Problem with Device Location Folder" msgstr "" -#: rapid/rapid.py:3350 +#: rapid/rapid.py:4808 +msgid "Video" +msgstr "Video" + +#: rapid/rapid.py:4815 #, python-format msgid "The %(file_type)s Download Folder does not exist.\n" msgstr "" -#: rapid/rapid.py:3359 +#: rapid/rapid.py:4824 #, python-format msgid "The %(file_type)s Download Folder exists but cannot be written to.\n" msgstr "" -#: rapid/rapid.py:3364 +#: rapid/rapid.py:4829 msgid "" "Sorry, problems were encountered with your download folders. Please fix the " "problems or modify the preferences.\n" "\n" msgstr "" -#: rapid/rapid.py:3367 +#: rapid/rapid.py:4832 msgid "Problem with Download Folder" msgstr "Problema con la Carpeta de Descarga" -#: rapid/rapid.py:3369 +#: rapid/rapid.py:4834 msgid "Problem with Download Folders" msgstr "" -#: rapid/rapid.py:3382 +#: rapid/rapid.py:4847 msgid "Some preferences will be reset." msgstr "Algunas preferencias serán restablecidas." -#: rapid/rapid.py:3416 +#: rapid/rapid.py:4880 +msgid "Displaying warning about downloading directly from camera" +msgstr "" + +#: rapid/rapid.py:4890 #, python-format msgid "Prompting whether to use %s" msgstr "Preguntando si usar o no %s" -#: rapid/rapid.py:3444 +#: rapid/rapid.py:4917 msgid "Prompting for Job Code" msgstr "Pidiendo un Código de trabajo" -#: rapid/rapid.py:3448 +#: rapid/rapid.py:4921 msgid "Already prompting for Job Code, do not prompt again" msgstr "Preguntando por código de trabajo, no volver a preguntar" -#: rapid/rapid.py:3463 -msgid "Starting downloads that have been waiting for a Job Code" -msgstr "Iniciando descargas que han sido esperadas por un Código de trabajo" - -#: rapid/rapid.py:3467 +#: rapid/rapid.py:4938 msgid "Starting downloads" msgstr "Iniciando descargas" -#: rapid/rapid.py:3482 +#. autostart is true +#: rapid/rapid.py:4942 +msgid "Starting downloads that have been waiting for a Job Code" +msgstr "Iniciando descargas que han sido esperadas por un Código de trabajo" + +#: rapid/rapid.py:4984 #, python-format msgid "Creating photo download folder %(folder)s" msgstr "" -#: rapid/rapid.py:3487 +#: rapid/rapid.py:4989 #, python-format msgid "Failed to create default photo download folder %(folder)s" msgstr "" -#: rapid/rapid.py:3491 +#: rapid/rapid.py:4993 #, python-format msgid "Creating video download folder %(folder)s" msgstr "" -#: rapid/rapid.py:3496 +#: rapid/rapid.py:4998 #, python-format msgid "Failed to create default video download folder %(folder)s" msgstr "" -#: rapid/rapid.py:3521 +#: rapid/rapid.py:5023 msgid "" "A newer version of this program was previously run on this computer.\n" "\n" @@ -825,7 +847,7 @@ msgstr "" "Una versión mas nueva de este programa fue ejecutada antes en este equipo.\n" "\n" -#: rapid/rapid.py:3523 +#: rapid/rapid.py:5025 msgid "" "Program preferences appear to be valid, but please check them to ensure " "correct operation." @@ -833,15 +855,15 @@ msgstr "" "Las preferencias del programa parecen ser válidas, pero por favor revise a " "fin de garantizar el correcto funcionamiento." -#: rapid/rapid.py:3525 +#: rapid/rapid.py:5027 msgid "Sorry, some preferences are invalid and will be reset." msgstr "Lo siento, algunas preferencias son invalidas y serán restablecidas" -#: rapid/rapid.py:3526 +#: rapid/rapid.py:5028 msgid "Warning:" msgstr "Aviso:" -#: rapid/rapid.py:3531 +#: rapid/rapid.py:5033 msgid "" "This version of the program is newer than the previously run version. " "Checking preferences." @@ -849,11 +871,11 @@ msgstr "" "Esta versión del programa es más reciente que la versión previamente " "ejecutada. Compruebe las preferencias." -#: rapid/rapid.py:3538 +#: rapid/rapid.py:5040 msgid "Preferences were modified." msgstr "Las preferencias fueron modificadas." -#: rapid/rapid.py:3539 +#: rapid/rapid.py:5041 msgid "" "This version of the program uses different preferences than the old version. " "Your preferences have been updated.\n" @@ -865,11 +887,11 @@ msgstr "" "\n" "Por favor, compruebe el correcto funcionamiento." -#: rapid/rapid.py:3543 +#: rapid/rapid.py:5045 msgid "No preferences needed to be changed." msgstr "Ninguna preferencia necesita ser cambiada." -#: rapid/rapid.py:3545 +#: rapid/rapid.py:5047 msgid "" "This version of the program uses different preferences than the old version. " "Some of your previous preferences were invalid, and could not be updated. " @@ -879,131 +901,155 @@ msgstr "" "Algunas de sus preferencias anteriores no eran válidas, y no pueden ser " "actualizadas, por lo que serán restablecidas." -#: rapid/rapid.py:3555 +#: rapid/rapid.py:5057 msgid "Problem using pynotify." msgstr "Problema usando pynotify." -#: rapid/rapid.py:3571 +#: rapid/rapid.py:5073 msgid "Failed to receive pynotify server capabilities." msgstr "Fallo al recibir capacidades del servidor pynotify" -#: rapid/rapid.py:3580 +#: rapid/rapid.py:5084 msgid "" "Warning: desktop environment notification server is incorrectly configured." msgstr "" "Advertencia: el servidor de notificaciones del entorno de escritorio no está " "configurado correctamente." -#: rapid/rapid.py:3626 +#: rapid/rapid.py:5132 msgid "and" msgstr "y" -#: rapid/rapid.py:3631 +#: rapid/rapid.py:5137 msgid "Using backup devices" msgstr "Usando dispositivo de copia de seguridad" -#: rapid/rapid.py:3633 +#: rapid/rapid.py:5139 msgid "Using backup device" msgstr "Usando dispositivo de copia de seguridad" -#: rapid/rapid.py:3635 +#: rapid/rapid.py:5141 msgid "No backup devices detected" msgstr "Dispositivos de copia de seguridad no detectados" -#: rapid/rapid.py:3674 rapid/rapid.py:3831 +#: rapid/rapid.py:5188 rapid/rapid.py:5350 #, python-format msgid "Device %(device)s (%(path)s) ignored" msgstr "Dispositivo %(device)s (%(path)s) ignorado" -#: rapid/rapid.py:3790 +#: rapid/rapid.py:5309 #, python-format msgid "Detected %(device)s with path %(path)s" msgstr "Detectado %(device)s con ruta %(path)s" -#: rapid/rapid.py:3794 +#: rapid/rapid.py:5313 msgid "Automatically start download is true" msgstr "Iniciar automaticamente la descarga está activa" -#: rapid/rapid.py:3796 +#: rapid/rapid.py:5315 msgid "Automatically start download is false" msgstr "Iniciar automaticamente la descarga está desactivada" -#: rapid/rapid.py:3849 +#: rapid/rapid.py:5368 msgid "Using manually specified path" msgstr "Usando manualmente la ruta especifica" -#: rapid/rapid.py:3857 +#: rapid/rapid.py:5376 rapid/rapid.py:5417 #, python-format msgid "Backing up to %(path)s" msgstr "" -#: rapid/rapid.py:3968 rapid/rapid.py:4017 +#. the user is trying to backup to a device that is currently being downloaded from..... we don't normally allow that, but what to do? +#: rapid/rapid.py:5441 +#, python-format +msgid "Warning: backup device %(device)s is currently being downloaded from" +msgstr "" + +#: rapid/rapid.py:5458 +msgid "D_ownload Selected" +msgstr "" + +#: rapid/rapid.py:5550 rapid/rapid.py:5599 msgid "All downloads complete" msgstr "Todas las descargas completadas" -#: rapid/rapid.py:3982 +#: rapid/rapid.py:5564 msgid "MB/s" msgstr "MB/s" -#: rapid/rapid.py:3992 +#: rapid/rapid.py:5574 msgid "About 1 second remaining" msgstr "Aproximadamente 1 segundo restante" -#: rapid/rapid.py:3994 +#: rapid/rapid.py:5576 #, python-format msgid "About %i seconds remaining" msgstr "Aproximadamente %i segundos restantes" -#: rapid/rapid.py:3996 +#: rapid/rapid.py:5578 msgid "About 1 minute remaining" msgstr "Aproximadamente 1 minuto restante" #. Translators: in the text '%(minutes)i:%(seconds)02i', only the : should be translated, if needed. #. '%(minutes)i' and '%(seconds)02i' should not be modified or left out. They are used to format and display the amount #. of time the download has remainging, e.g. 'About 5:36 minutes remaining' -#: rapid/rapid.py:4001 +#: rapid/rapid.py:5583 #, python-format msgid "About %(minutes)i:%(seconds)02i minutes remaining" msgstr "Resta cerca de %(minutes)i:%(seconds)02i minutos" -#: rapid/rapid.py:4019 -msgid "photos downloaded" -msgstr "fotos descargadas" +#: rapid/rapid.py:5602 rapid/rapid.py:5608 rapid/rapid.py:5614 +#: rapid/rapid.py:5620 rapid/rapid.py:5625 rapid/rapid.py:5629 +#, python-format +msgid "%(number)s %(numberdownloaded)s" +msgstr "%(number)s %(numberdownloaded)s" -#: rapid/rapid.py:4021 -msgid "photos skipped" -msgstr "fotos saltadas" +#: rapid/rapid.py:5604 rapid/rapid.py:5616 +#, python-format +msgid "%(filetype)s downloaded" +msgstr "%(filetype)s descargados" -#: rapid/rapid.py:4023 -msgid "videos downloaded" -msgstr "videos descargados" +#: rapid/rapid.py:5610 rapid/rapid.py:5622 +#, python-format +msgid "%(filetype)s failed to download" +msgstr "" -#: rapid/rapid.py:4025 -msgid "videos skipped" -msgstr "videos saltados" +#: rapid/rapid.py:5789 +msgid "_Resume" +msgstr "_Reanudar" -#. This text will be displayed to the user on the Download / Pause button. -#. Please note the space at the end of the label - it is needed to meet the Gnome Human Interface Guidelines -#: rapid/rapid.py:4125 -msgid "_Download " -msgstr "_Descargar " +#: rapid/rapid.py:5792 +msgid "_Download All" +msgstr "_Descargar tod" #. This text will be displayed to the user on the Download / Pause button. -#: rapid/rapid.py:4135 +#: rapid/rapid.py:5801 msgid "_Pause" msgstr "_Pausar" -#: rapid/rapid.py:4209 -msgid "Preferences were changed." -msgstr "Las preferencias fueron cambiadas." +#: rapid/rapid.py:5914 +msgid "Download device settings preferences were changed." +msgstr "" -#: rapid/rapid.py:4407 +#: rapid/rapid.py:5926 +msgid "Backup preferences were changed." +msgstr "" + +#: rapid/rapid.py:5932 +msgid "Subfolder and filename preferences were changed." +msgstr "" + +#: rapid/rapid.py:5943 +msgid "Download folder preferences were changed." +msgstr "" + +#: rapid/rapid.py:6141 msgid "Goodbye" msgstr "Adiós" #. Translators: this text is displayed to the user when they request information on the command line options. #. The text %default should not be modified or left out. -#: rapid/rapid.py:4418 +#: rapid/rapid.py:6152 #, python-format msgid "" "display program information on the command line as the program runs " @@ -1012,386 +1058,382 @@ msgstr "" "mostrar la información del programa en la línea de comandos de como se " "ejecuta el programa (por defecto: %default)" -#: rapid/rapid.py:4419 +#: rapid/rapid.py:6153 msgid "only output errors to the command line" msgstr "solo errores de salida en la línea de comando" #. image file extensions are recognized RAW files plus TIFF and JPG -#: rapid/rapid.py:4421 +#: rapid/rapid.py:6155 msgid "list photo and video file extensions the program recognizes and exit" msgstr "" -#: rapid/rapid.py:4422 +#: rapid/rapid.py:6156 msgid "reset all program settings and preferences and exit" msgstr "" -#: rapid/rapid.py:4431 +#: rapid/rapid.py:6165 msgid "Photos:" msgstr "Fotos:" -#: rapid/rapid.py:4431 +#: rapid/rapid.py:6165 msgid "Videos:" msgstr "Videos:" -#: rapid/rapid.py:4436 +#: rapid/rapid.py:6170 #, python-format msgid "and %s" msgstr "y %s" -#: rapid/rapid.py:4444 +#: rapid/rapid.py:6178 msgid "All settings and preferences have been reset" msgstr "" #. Which volume management code is being used (GIO or GnomeVFS) -#: rapid/rapid.py:4448 rapid/rapid.py:4449 rapid/rapid.py:4451 -#: rapid/rapid.py:4456 rapid/rapid.py:4460 +#: rapid/rapid.py:6182 rapid/rapid.py:6183 rapid/rapid.py:6185 +#: rapid/rapid.py:6190 rapid/rapid.py:6194 msgid "Using" msgstr "Usando" -#: rapid/rapid.py:4453 +#: rapid/rapid.py:6187 msgid "\n" msgstr "\n" #. this application is already running -#: rapid/rapid.py:4477 +#: rapid/rapid.py:6211 #, python-format msgid "%s is already running" msgstr "%s ya se está ejecutando" -#: rapid/renamesubfolderprefs.py:190 +#: rapid/renamesubfolderprefs.py:192 msgid "Date time" msgstr "Fecha" -#: rapid/renamesubfolderprefs.py:191 +#: rapid/renamesubfolderprefs.py:193 msgid "Text" msgstr "Texto" -#: rapid/renamesubfolderprefs.py:192 -msgid "Filename" -msgstr "Nombre de archivo" - -#: rapid/renamesubfolderprefs.py:193 +#: rapid/renamesubfolderprefs.py:195 msgid "Metadata" msgstr "Metadatos" -#: rapid/renamesubfolderprefs.py:194 +#: rapid/renamesubfolderprefs.py:196 msgid "Sequences" msgstr "Secuencias" -#: rapid/renamesubfolderprefs.py:197 +#: rapid/renamesubfolderprefs.py:199 msgid "Image date" msgstr "Fecha de la imagen" -#: rapid/renamesubfolderprefs.py:198 +#: rapid/renamesubfolderprefs.py:200 msgid "Video date" msgstr "" -#: rapid/renamesubfolderprefs.py:199 +#: rapid/renamesubfolderprefs.py:201 msgid "Today" msgstr "Hoy" -#: rapid/renamesubfolderprefs.py:200 +#: rapid/renamesubfolderprefs.py:202 msgid "Yesterday" msgstr "Ayer" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:202 +#: rapid/renamesubfolderprefs.py:204 msgid "Name + extension" msgstr "Nombre + extensión" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:204 +#: rapid/renamesubfolderprefs.py:206 msgid "Name" msgstr "Nombre" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:206 +#: rapid/renamesubfolderprefs.py:208 msgid "Extension" msgstr "Extensión" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:208 +#: rapid/renamesubfolderprefs.py:210 msgid "Image number" msgstr "Número de imagen" -#: rapid/renamesubfolderprefs.py:209 +#: rapid/renamesubfolderprefs.py:211 msgid "Video number" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:211 +#: rapid/renamesubfolderprefs.py:213 msgid "Aperture" msgstr "Apertura" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:213 +#: rapid/renamesubfolderprefs.py:215 msgid "ISO" msgstr "ISO" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:215 +#: rapid/renamesubfolderprefs.py:217 msgid "Exposure time" msgstr "Tiempo de exposición" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:217 +#: rapid/renamesubfolderprefs.py:219 msgid "Focal length" msgstr "Longitud focal" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:219 +#: rapid/renamesubfolderprefs.py:221 msgid "Camera make" msgstr "Marca cámara" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:221 +#: rapid/renamesubfolderprefs.py:223 msgid "Camera model" msgstr "Modelo de la camara" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:223 +#: rapid/renamesubfolderprefs.py:225 msgid "Short camera model" msgstr "Modelo corto de cámara" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:225 +#: rapid/renamesubfolderprefs.py:227 msgid "Hyphenated short camera model" msgstr "Modelo de cámara con guión corto" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:227 +#: rapid/renamesubfolderprefs.py:229 msgid "Serial number" msgstr "Número de serie" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:229 +#: rapid/renamesubfolderprefs.py:231 msgid "Shutter count" msgstr "Obturador contador" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:231 +#: rapid/renamesubfolderprefs.py:233 msgid "Owner name" msgstr "Nombre propietario" -#: rapid/renamesubfolderprefs.py:232 +#: rapid/renamesubfolderprefs.py:234 msgid "Codec" msgstr "Códec" -#: rapid/renamesubfolderprefs.py:233 +#: rapid/renamesubfolderprefs.py:235 msgid "Width" msgstr "Ancho" -#: rapid/renamesubfolderprefs.py:234 +#: rapid/renamesubfolderprefs.py:236 msgid "Height" msgstr "Alto" -#: rapid/renamesubfolderprefs.py:235 +#: rapid/renamesubfolderprefs.py:237 msgid "Length" msgstr "Duración" -#: rapid/renamesubfolderprefs.py:236 +#: rapid/renamesubfolderprefs.py:238 msgid "Frames Per Second" msgstr "Cuadros por Segundo" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:238 +#: rapid/renamesubfolderprefs.py:240 msgid "Downloads today" msgstr "Descargas de hoy" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:240 +#: rapid/renamesubfolderprefs.py:242 msgid "Session number" msgstr "Número de sesión" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:242 +#: rapid/renamesubfolderprefs.py:244 msgid "Subfolder number" msgstr "Número de subcarpeta" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:244 +#: rapid/renamesubfolderprefs.py:246 msgid "Stored number" msgstr "Número almacenado" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequenceletters -#: rapid/renamesubfolderprefs.py:246 +#: rapid/renamesubfolderprefs.py:248 msgid "Sequence letter" msgstr "Letra de secuencia" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:248 +#: rapid/renamesubfolderprefs.py:250 msgid "All digits" msgstr "Todos los digitos" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:250 +#: rapid/renamesubfolderprefs.py:252 msgid "Last digit" msgstr "Último dígito" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:252 +#: rapid/renamesubfolderprefs.py:254 msgid "Last 2 digits" msgstr "Últimos 2 dígitos" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:254 +#: rapid/renamesubfolderprefs.py:256 msgid "Last 3 digits" msgstr "Últimos 3 dígitos" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:256 +#: rapid/renamesubfolderprefs.py:258 msgid "Last 4 digits" msgstr "Últimos 4 dígitos" #. Translators: please not the capitalization of this text, and keep it the same if your language features capitalization -#: rapid/renamesubfolderprefs.py:258 +#: rapid/renamesubfolderprefs.py:260 msgid "Original Case" msgstr "Mantener original" #. Translators: please not the capitalization of this text, and keep it the same if your language features capitalization -#: rapid/renamesubfolderprefs.py:260 +#: rapid/renamesubfolderprefs.py:262 msgid "UPPERCASE" msgstr "MAYÚSCULAS" #. Translators: please not the capitalization of this text, and keep it the same if your language features capitalization -#: rapid/renamesubfolderprefs.py:262 +#: rapid/renamesubfolderprefs.py:264 msgid "lowercase" msgstr "minúsculas" -#: rapid/renamesubfolderprefs.py:263 +#: rapid/renamesubfolderprefs.py:265 msgid "One digit" msgstr "Un dígito" -#: rapid/renamesubfolderprefs.py:264 +#: rapid/renamesubfolderprefs.py:266 msgid "Two digits" msgstr "Dos dígitos" -#: rapid/renamesubfolderprefs.py:265 +#: rapid/renamesubfolderprefs.py:267 msgid "Three digits" msgstr "Tres dígitos" -#: rapid/renamesubfolderprefs.py:266 +#: rapid/renamesubfolderprefs.py:268 msgid "Four digits" msgstr "Cuatro dígitos" -#: rapid/renamesubfolderprefs.py:267 +#: rapid/renamesubfolderprefs.py:269 msgid "Five digits" msgstr "Cinco dígitos" -#: rapid/renamesubfolderprefs.py:268 +#: rapid/renamesubfolderprefs.py:270 msgid "Six digits" msgstr "Seis dígitos" -#: rapid/renamesubfolderprefs.py:269 +#: rapid/renamesubfolderprefs.py:271 msgid "Seven digits" msgstr "Siete digitos" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:271 +#: rapid/renamesubfolderprefs.py:273 msgid "Subseconds" msgstr "Sub-segundos" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:273 +#: rapid/renamesubfolderprefs.py:275 msgid "YYYYMMDD" msgstr "AAAAMMDD" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:275 +#: rapid/renamesubfolderprefs.py:277 msgid "YYYY-MM-DD" msgstr "AAAA-MM-DD" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:277 +#: rapid/renamesubfolderprefs.py:279 msgid "YYMMDD" msgstr "AAMMDD" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:279 +#: rapid/renamesubfolderprefs.py:281 msgid "YY-MM-DD" msgstr "AA-MM-DD" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:281 +#: rapid/renamesubfolderprefs.py:283 msgid "MMDDYYYY" msgstr "MMDDAAAA" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:283 +#: rapid/renamesubfolderprefs.py:285 msgid "MMDDYY" msgstr "MMDDAA" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:285 +#: rapid/renamesubfolderprefs.py:287 msgid "MMDD" msgstr "MMDD" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:287 +#: rapid/renamesubfolderprefs.py:289 msgid "DDMMYYYY" msgstr "DDMMAAAA" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:289 +#: rapid/renamesubfolderprefs.py:291 msgid "DDMMYY" msgstr "DDMMAA" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:291 +#: rapid/renamesubfolderprefs.py:293 msgid "YYYY" msgstr "AAAA" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:293 +#: rapid/renamesubfolderprefs.py:295 msgid "YY" msgstr "AA" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:295 +#: rapid/renamesubfolderprefs.py:297 msgid "MM" msgstr "MM" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:297 +#: rapid/renamesubfolderprefs.py:299 msgid "DD" msgstr "DD" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:299 +#: rapid/renamesubfolderprefs.py:301 msgid "HHMMSS" msgstr "HHMMSS" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:301 +#: rapid/renamesubfolderprefs.py:303 msgid "HHMM" msgstr "HHMM" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:303 +#: rapid/renamesubfolderprefs.py:305 msgid "HH-MM-SS" msgstr "HH-MM-SS" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:305 +#: rapid/renamesubfolderprefs.py:307 msgid "HH-MM" msgstr "HH-MM" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:307 +#: rapid/renamesubfolderprefs.py:309 msgid "HH" msgstr "HH" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:309 +#: rapid/renamesubfolderprefs.py:311 msgid "MM (minutes)" msgstr "MM (minutos)" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:311 +#: rapid/renamesubfolderprefs.py:313 msgid "SS" msgstr "SS" -#: rapid/renamesubfolderprefs.py:794 +#: rapid/renamesubfolderprefs.py:796 #, python-format msgid "" "Preference key '%(key)s' is invalid.\n" @@ -1400,64 +1442,26 @@ msgstr "" "Clave preferida '%(key)s' es inválida.\n" "Esperado uno de %(value)s" -#: rapid/renamesubfolderprefs.py:801 +#: rapid/renamesubfolderprefs.py:803 #, python-format msgid "Preference value '%(value)s' is invalid" msgstr "Valor '%(value)s' es inválido" -#: rapid/renamesubfolderprefs.py:805 +#: rapid/renamesubfolderprefs.py:807 msgid "These preferences are not well formed:" msgstr "Estas preferencias no están bien formadas:" -#: rapid/renamesubfolderprefs.py:934 -msgid "Subsecond metadata not present in photo" -msgstr "" - -#: rapid/renamesubfolderprefs.py:941 -#, python-format -msgid "%s metadata is not present" -msgstr "" - -#: rapid/renamesubfolderprefs.py:960 rapid/renamesubfolderprefs.py:968 -#: rapid/renamesubfolderprefs.py:977 -#, python-format -msgid "Error in date time component. Value %s appears invalid" -msgstr "Error en el campo de fecha. El valor %s parece inválido" - -#: rapid/renamesubfolderprefs.py:1004 -msgid "extension was specified but filename does not have an extension" -msgstr "" - -#: rapid/renamesubfolderprefs.py:1008 -msgid "image or video number was specified but filename has no number" -msgstr "" - -#: rapid/renamesubfolderprefs.py:1081 -#, python-format -msgid "%s metadata is not present in photo" -msgstr "" - -#: rapid/renamesubfolderprefs.py:1194 -#, python-format -msgid "error generating name with component %s" -msgstr "Error generando nombre con componente %s" - -#: rapid/renamesubfolderprefs.py:1450 -#, python-format -msgid "%s metadata is not present in video" -msgstr "" - -#: rapid/renamesubfolderprefs.py:1546 +#: rapid/renamesubfolderprefs.py:1517 #, python-format msgid "Subfolder preferences should not start with a %s" msgstr "Preferencias de subcarpeta no debería empezar con una %s" -#: rapid/renamesubfolderprefs.py:1548 +#: rapid/renamesubfolderprefs.py:1519 #, python-format msgid "Subfolder preferences should not end with a %s" msgstr "Preferencias de subcarpeta no debería terminar con una %s" -#: rapid/renamesubfolderprefs.py:1552 +#: rapid/renamesubfolderprefs.py:1523 #, python-format msgid "Subfolder preferences should not contain two %s one after the other" msgstr "" @@ -1508,118 +1512,114 @@ msgid "Job Codes" msgstr "Códigos de trabajo" #: rapid/glade3/rapid.glade.h:12 -msgid "Missing Backup Devices" -msgstr "Dispositivo de respaldo perdido" - -#: rapid/glade3/rapid.glade.h:13 msgid "Photo Rename" msgstr "" -#: rapid/glade3/rapid.glade.h:14 +#: rapid/glade3/rapid.glade.h:13 msgid "Photo and Video Name Conflicts" msgstr "" -#: rapid/glade3/rapid.glade.h:15 +#: rapid/glade3/rapid.glade.h:14 msgid "Program Automation" msgstr "Automatización de programa" -#: rapid/glade3/rapid.glade.h:16 +#: rapid/glade3/rapid.glade.h:15 msgid "Sequence Numbers" msgstr "Números de secuencia" -#: rapid/glade3/rapid.glade.h:17 +#: rapid/glade3/rapid.glade.h:16 msgid "/media/externaldrive/Photos" msgstr "/media/externaldrive/Imágenes" -#: rapid/glade3/rapid.glade.h:18 +#: rapid/glade3/rapid.glade.h:17 msgid "Example: /home/user/Pictures" msgstr "Ejemplo: /home/user/Pictures" -#: rapid/glade3/rapid.glade.h:19 +#: rapid/glade3/rapid.glade.h:18 msgid "Example:" msgstr "Ejemplo:" -#: rapid/glade3/rapid.glade.h:20 +#: rapid/glade3/rapid.glade.h:19 msgid "New:" msgstr "Nuevo:" -#: rapid/glade3/rapid.glade.h:21 +#: rapid/glade3/rapid.glade.h:20 msgid "Original:" msgstr "Original:" -#: rapid/glade3/rapid.glade.h:22 +#: rapid/glade3/rapid.glade.h:21 msgid "Automation" msgstr "Automatización" -#: rapid/glade3/rapid.glade.h:23 +#: rapid/glade3/rapid.glade.h:22 msgid "Backup\t" msgstr "Respaldo\t" -#: rapid/glade3/rapid.glade.h:24 +#: rapid/glade3/rapid.glade.h:23 msgid "Devices" -msgstr "" +msgstr "Dispositivos" -#: rapid/glade3/rapid.glade.h:25 +#: rapid/glade3/rapid.glade.h:24 msgid "Error Handling" msgstr "Manejo de errores" -#: rapid/glade3/rapid.glade.h:26 +#: rapid/glade3/rapid.glade.h:25 msgid "Job Codes" msgstr "Códigos de trabajo" -#: rapid/glade3/rapid.glade.h:27 +#: rapid/glade3/rapid.glade.h:26 msgid "Photo Download Folders" msgstr "" -#: rapid/glade3/rapid.glade.h:28 +#: rapid/glade3/rapid.glade.h:27 msgid "Photo Rename\t" msgstr "" -#: rapid/glade3/rapid.glade.h:29 +#: rapid/glade3/rapid.glade.h:28 msgid "Rename Options" msgstr "Opciones de renombre" -#: rapid/glade3/rapid.glade.h:30 +#: rapid/glade3/rapid.glade.h:29 msgid "Video Download Folders" msgstr "" -#: rapid/glade3/rapid.glade.h:31 +#: rapid/glade3/rapid.glade.h:30 msgid "Video Rename\t" msgstr "" -#: rapid/glade3/rapid.glade.h:32 +#: rapid/glade3/rapid.glade.h:31 msgid "Add unique identifier" msgstr "Agregar identificador único" -#: rapid/glade3/rapid.glade.h:33 +#: rapid/glade3/rapid.glade.h:32 msgid "Automatically detect Portable Storage Devices" msgstr "Detectar automáticamente dispositivos de almacenamiento portables" -#: rapid/glade3/rapid.glade.h:34 +#: rapid/glade3/rapid.glade.h:33 msgid "Automatically detect backup devices" msgstr "Detectar automáticamente dispositivos de respaldo" -#: rapid/glade3/rapid.glade.h:35 +#: rapid/glade3/rapid.glade.h:34 msgid "Automatically detect devices" -msgstr "" +msgstr "Detectar dispositivos automaticamente" -#: rapid/glade3/rapid.glade.h:36 +#: rapid/glade3/rapid.glade.h:35 msgid "Automation" msgstr "Automatización" -#: rapid/glade3/rapid.glade.h:37 +#: rapid/glade3/rapid.glade.h:36 msgid "Backup" msgstr "Respaldo" -#: rapid/glade3/rapid.glade.h:38 +#: rapid/glade3/rapid.glade.h:37 msgid "Backup location:" msgstr "Ruta de respaldo:" -#: rapid/glade3/rapid.glade.h:39 +#: rapid/glade3/rapid.glade.h:38 msgid "Backup photos and videos when downloading" msgstr "" -#: rapid/glade3/rapid.glade.h:40 +#: rapid/glade3/rapid.glade.h:39 msgid "" "Choose the download folder. Subfolders for the downloaded photos will be " "automatically created in this folder using the structure specified below." @@ -1628,34 +1628,29 @@ msgstr "" "serán creadas automáticamente en la carpeta usando la estructura " "especificada abajo." -#: rapid/glade3/rapid.glade.h:41 +#: rapid/glade3/rapid.glade.h:40 msgid "" "Choose the download folder. Subfolders for the downloaded videos will be " "automatically created in this folder using the structure specified below." msgstr "" -#: rapid/glade3/rapid.glade.h:42 -msgid "" -"Choose whether to skip downloading the file, or to add a unique indentifier." -msgstr "" - -#: rapid/glade3/rapid.glade.h:43 +#: rapid/glade3/rapid.glade.h:41 msgid "Copyright Damon Lynch 2007-10" msgstr "Copyright Damon Lynch 2007-10" -#: rapid/glade3/rapid.glade.h:44 +#: rapid/glade3/rapid.glade.h:42 msgid "Day start:" msgstr "Día de inicio:" -#: rapid/glade3/rapid.glade.h:45 +#: rapid/glade3/rapid.glade.h:43 msgid "Delete photos and videos from device upon download completion" msgstr "" -#: rapid/glade3/rapid.glade.h:46 +#: rapid/glade3/rapid.glade.h:44 msgid "Devices" msgstr "Dispositivos" -#: rapid/glade3/rapid.glade.h:47 +#: rapid/glade3/rapid.glade.h:45 msgid "" "Devices are from where to download photos and videos, such as cameras, " "memory cards or Portable Storage Devices.\n" @@ -1668,42 +1663,42 @@ msgid "" "reader." msgstr "" -#: rapid/glade3/rapid.glade.h:52 +#: rapid/glade3/rapid.glade.h:50 msgid "Download / Pause" msgstr "Descargar / Pausar" -#: rapid/glade3/rapid.glade.h:53 +#: rapid/glade3/rapid.glade.h:51 msgid "Download folder:" msgstr "Carpeta de descarga:" -#: rapid/glade3/rapid.glade.h:54 +#: rapid/glade3/rapid.glade.h:52 msgid "Downloads today:" msgstr "Descargas de hoy:" -#: rapid/glade3/rapid.glade.h:55 +#: rapid/glade3/rapid.glade.h:53 msgid "Error Handling" msgstr "Manejo de errores" -#: rapid/glade3/rapid.glade.h:56 +#: rapid/glade3/rapid.glade.h:54 msgid "Error Log" msgstr "Registro de error" -#: rapid/glade3/rapid.glade.h:57 +#: rapid/glade3/rapid.glade.h:55 msgid "Exit program if download completes without any warnings or errors" msgstr "" -#: rapid/glade3/rapid.glade.h:58 +#: rapid/glade3/rapid.glade.h:56 msgid "If you disable automatic detection, choose the exact backup location." msgstr "" "Si desactiva la detección automática, seleccione la ruta exacta de respaldo." -#: rapid/glade3/rapid.glade.h:59 +#: rapid/glade3/rapid.glade.h:57 msgid "" "If you disable automatic detection, choose the exact location of the images " "and videos." msgstr "" -#: rapid/glade3/rapid.glade.h:60 +#: rapid/glade3/rapid.glade.h:58 msgid "" "If you enable automatic detection of Portable Storage Devices, the entire " "device will be scanned for images. On large devices, this could take some " @@ -1713,47 +1708,51 @@ msgstr "" "portátil, será revisado completamente en busca de imágenes. En dispositivos " "grandes, esto puede tomar algún tiempo." -#: rapid/glade3/rapid.glade.h:61 -msgid "Ignore" -msgstr "Ignorar" - -#: rapid/glade3/rapid.glade.h:62 +#: rapid/glade3/rapid.glade.h:59 msgid "Import your photos and videos efficiently and reliably" msgstr "" -#: rapid/glade3/rapid.glade.h:63 +#: rapid/glade3/rapid.glade.h:60 msgid "Job Codes" msgstr "Códigos de trabajo" -#: rapid/glade3/rapid.glade.h:64 +#: rapid/glade3/rapid.glade.h:61 msgid "Location:" msgstr "Ubicación:" -#: rapid/glade3/rapid.glade.h:65 +#: rapid/glade3/rapid.glade.h:62 msgid "Overwrite" msgstr "Sobreescribir" -#: rapid/glade3/rapid.glade.h:66 +#: rapid/glade3/rapid.glade.h:63 +msgid "P_review Columns" +msgstr "" + +#: rapid/glade3/rapid.glade.h:64 msgid "Photo Folders" msgstr "" -#: rapid/glade3/rapid.glade.h:67 +#: rapid/glade3/rapid.glade.h:65 msgid "Photo Rename" msgstr "" -#: rapid/glade3/rapid.glade.h:68 +#: rapid/glade3/rapid.glade.h:66 msgid "Photo backup folder name:" msgstr "" -#: rapid/glade3/rapid.glade.h:69 +#: rapid/glade3/rapid.glade.h:67 msgid "Preferences: Rapid Photo Downloader" msgstr "Preferencias: Rapid Photo Downloader" -#: rapid/glade3/rapid.glade.h:71 +#: rapid/glade3/rapid.glade.h:68 +msgid "Preview _Folders" +msgstr "" + +#: rapid/glade3/rapid.glade.h:70 msgid "R_emove All" msgstr "R_emover todo" -#: rapid/glade3/rapid.glade.h:73 +#: rapid/glade3/rapid.glade.h:72 msgid "" "Rapid Photo Downloader is free software; you can redistribute it and/or " "modify it under the terms of the GNU General Public License as published by " @@ -1783,33 +1782,49 @@ msgstr "" "con Rapid Photo Downloader; si no, escriba a la Free Software Foundation, " "Inc,51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, EE. UU." -#: rapid/glade3/rapid.glade.h:78 +#: rapid/glade3/rapid.glade.h:77 msgid "Rename Options" msgstr "Opciones de renombre" +#: rapid/glade3/rapid.glade.h:78 +msgid "Se_lect None" +msgstr "" + #: rapid/glade3/rapid.glade.h:79 -msgid "Report a warning" -msgstr "Reportar un aviso" +msgid "Select All Pho_tos" +msgstr "Seleccionar todas las fo_tos" #: rapid/glade3/rapid.glade.h:80 -msgid "Report an error" -msgstr "Reportar un error" +msgid "Select All Vi_deos" +msgstr "Seleccionar todos los ví_deos" #: rapid/glade3/rapid.glade.h:81 +msgid "Select All Wit_h Job Code" +msgstr "" + +#: rapid/glade3/rapid.glade.h:82 +msgid "Select All Without _Job Code" +msgstr "" + +#: rapid/glade3/rapid.glade.h:83 +msgid "Select _All" +msgstr "Seleccionar _todo" + +#: rapid/glade3/rapid.glade.h:84 msgid "Skip" msgstr "Saltar" -#: rapid/glade3/rapid.glade.h:82 +#: rapid/glade3/rapid.glade.h:85 msgid "Skip download" msgstr "Saltar descarga" -#: rapid/glade3/rapid.glade.h:83 +#: rapid/glade3/rapid.glade.h:86 msgid "" "Sorry, video downloading functionality disabled. To download videos, please " "install the kaa metadata package for python." msgstr "" -#: rapid/glade3/rapid.glade.h:84 +#: rapid/glade3/rapid.glade.h:87 msgid "" "Specify the folder in which backups are stored on the device. \n" "\n" @@ -1818,7 +1833,7 @@ msgid "" "a folder in it with one of these names." msgstr "" -#: rapid/glade3/rapid.glade.h:87 +#: rapid/glade3/rapid.glade.h:90 msgid "" "Specify the time in 24 hour format at which the Downloads today " "sequence number should be reset." @@ -1826,111 +1841,131 @@ msgstr "" "Especifique la hora en formato de 24 horas en la que el numero de secuencia " "de las Descargas de hoy , debe ser restablecido." -#: rapid/glade3/rapid.glade.h:88 -msgid "" -"Specify what to do when a photo or video of the same name has already been " -"downloaded or backed up." -msgstr "" - -#: rapid/glade3/rapid.glade.h:89 -msgid "Specify what to do when there are no backup devices." -msgstr "Especificar que hacer cuando no hay dispositivos de respaldo." - -#: rapid/glade3/rapid.glade.h:90 +#: rapid/glade3/rapid.glade.h:91 msgid "" "Specify whether photo, video and folder names should have any characters " "removed that are not allowed by other operating systems." msgstr "" -#: rapid/glade3/rapid.glade.h:91 +#: rapid/glade3/rapid.glade.h:92 msgid "Start downloading at program startup" msgstr "Empezar descargas al iniciar el programa" -#: rapid/glade3/rapid.glade.h:92 +#: rapid/glade3/rapid.glade.h:93 msgid "Start downloading upon device insertion" msgstr "" -#: rapid/glade3/rapid.glade.h:93 +#: rapid/glade3/rapid.glade.h:94 msgid "Stored number:" msgstr "Número almacenado:" -#: rapid/glade3/rapid.glade.h:94 +#: rapid/glade3/rapid.glade.h:95 msgid "Strip incompatible characters" msgstr "Quitar carácteres incompatibles" -#: rapid/glade3/rapid.glade.h:95 +#: rapid/glade3/rapid.glade.h:96 msgid "Synchronize RAW + JPEG sequence numbers" msgstr "Sincronizar números de secuencia de RAW + JPEG" -#: rapid/glade3/rapid.glade.h:96 +#: rapid/glade3/rapid.glade.h:97 msgid "Unmount (\"eject\") device upon download completion" msgstr "" -#: rapid/glade3/rapid.glade.h:97 +#: rapid/glade3/rapid.glade.h:98 msgid "Video Folders" msgstr "" -#: rapid/glade3/rapid.glade.h:98 +#: rapid/glade3/rapid.glade.h:99 msgid "Video Rename" msgstr "" -#: rapid/glade3/rapid.glade.h:99 +#: rapid/glade3/rapid.glade.h:100 msgid "Video backup folder name:" msgstr "" -#: rapid/glade3/rapid.glade.h:100 +#: rapid/glade3/rapid.glade.h:101 +msgid "" +"When a photo or video of the same name has already been downloaded, choose " +"whether to skip downloading the file, or to add a unique indentifier." +msgstr "" + +#: rapid/glade3/rapid.glade.h:102 msgid "" "When backing up, choose whether to overwrite a file on the backup device " "that has the same name, or skip backing it up." msgstr "" -#: rapid/glade3/rapid.glade.h:101 +#: rapid/glade3/rapid.glade.h:103 msgid "" "You can have your photos and videos backed up to multiple locations as they " "are downloaded, e.g. external hard drives." msgstr "" -#: rapid/glade3/rapid.glade.h:102 +#: rapid/glade3/rapid.glade.h:104 msgid "_Add..." msgstr "_Añadir…" -#: rapid/glade3/rapid.glade.h:103 +#: rapid/glade3/rapid.glade.h:105 msgid "_Clear Completed Downloads" msgstr "_Limpiar descargas completadas" -#: rapid/glade3/rapid.glade.h:104 +#: rapid/glade3/rapid.glade.h:106 +msgid "_Device" +msgstr "_Dispositivo" + +#: rapid/glade3/rapid.glade.h:107 msgid "_Error Log" msgstr "_Registro de errores" -#: rapid/glade3/rapid.glade.h:105 +#: rapid/glade3/rapid.glade.h:108 +msgid "_File" +msgstr "_Archivo" + +#: rapid/glade3/rapid.glade.h:109 +msgid "_Filename" +msgstr "Nombre de _archivo" + +#: rapid/glade3/rapid.glade.h:110 msgid "_Get Help Online..." msgstr "_Conseguir ayuda online" -#: rapid/glade3/rapid.glade.h:106 +#: rapid/glade3/rapid.glade.h:111 msgid "_Help" msgstr "Ay_uda" -#: rapid/glade3/rapid.glade.h:107 +#: rapid/glade3/rapid.glade.h:112 msgid "_Make a Donation..." msgstr "_Hacer una donación" -#: rapid/glade3/rapid.glade.h:108 -msgid "_Photos" -msgstr "_Fotos" +#: rapid/glade3/rapid.glade.h:113 +msgid "_Path" +msgstr "" -#: rapid/glade3/rapid.glade.h:109 +#: rapid/glade3/rapid.glade.h:114 +msgid "_Preview" +msgstr "Vista _previa" + +#: rapid/glade3/rapid.glade.h:115 msgid "_Report a Problem..." msgstr "_Reportar problema..." -#: rapid/glade3/rapid.glade.h:110 -msgid "_Thumbnails" -msgstr "_Miniaturas" +#: rapid/glade3/rapid.glade.h:116 +msgid "_Select" +msgstr "_Seleccionar" -#: rapid/glade3/rapid.glade.h:111 +#: rapid/glade3/rapid.glade.h:117 +msgid "_Size" +msgstr "_Tamaño" + +#: rapid/glade3/rapid.glade.h:118 msgid "_Translate this Application..." msgstr "_Traducir esta aplicación..." -#: rapid/glade3/rapid.glade.h:112 +#: rapid/glade3/rapid.glade.h:119 +msgid "_Type" +msgstr "_Tipo" + +#: rapid/glade3/rapid.glade.h:120 msgid "_View" msgstr "_Ver" @@ -1963,6 +1998,16 @@ msgstr "_Ver" #~ msgid "Image already exists" #~ msgstr "La imagen ya existe" +#, python-format +#~ msgid "Source: %s" +#~ msgstr "Origen: %s" + +#~ msgid "_Photos" +#~ msgstr "_Fotos" + +#~ msgid "_Thumbnails" +#~ msgstr "_Miniaturas" + #~ msgid "Unmount (\"eject\") image device upon download completion" #~ msgstr "" #~ "Desmontar (\"expulsar\") el dispositivo de imagenes una vez completada la " @@ -1979,9 +2024,22 @@ msgstr "_Ver" #~ "Exploración del dispositivo completada: encontradas %(number)s imágenes en " #~ "%(device)s" +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Destination: %(destination)s\n" +#~ "Error: %(errno)s %(strerror)s" +#~ msgstr "" +#~ "Origen: %(source)s\n" +#~ "Destino: %(destination)s\n" +#~ "Error: %(errno)s %(strerror)s" + #~ msgid "Image skipped" #~ msgstr "Imagen saltada" +#~ msgid "_Download " +#~ msgstr "_Descargar " + #~ msgid "images downloaded" #~ msgstr "imagenes descargadas" @@ -1995,6 +2053,14 @@ msgstr "_Ver" #~ "Destino: %(destination)s\n" #~ "Problema: %(problem)s" +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Problem: %(problem)s" +#~ msgstr "" +#~ "Origen: %(source)s\n" +#~ "Problema: %(problem)s" + #, python-format #~ msgid "" #~ "Subfolder: %(subfolder)s\n" @@ -2019,6 +2085,16 @@ msgstr "_Ver" #~ "%(directory)s\n" #~ "Error: %(errno)s %(strerror)s" +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Destination: %(destination)s\n" +#~ "Error: %(errorno)s %(strerror)s" +#~ msgstr "" +#~ "Origen: %(source)s\n" +#~ "Destino: %(destination)s\n" +#~ "Error: %(errorno)s %(strerror)s" + #, python-format #~ msgid "%(number)s of %(total)s images copied" #~ msgstr "%(number)s de %(total)s imágenes copiadas" @@ -2026,15 +2102,31 @@ msgstr "_Ver" #~ msgid "Error in Image Rename preferences" #~ msgstr "Error en las preferencias de Renombrar Imagen" +#~ msgid "Backup device missing" +#~ msgstr "Dispositivo de respaldo perdido" + #~ msgid "No backup device was detected." #~ msgstr "No se detectó un dispositivo de respaldo." +#~ msgid "Download copying error" +#~ msgstr "Error al copiar la descarga" + +#, python-format +#~ msgid "Unique identifier '%s' added" +#~ msgstr "Identificador único '%s' agregado" + #~ msgid "Thumbnail cannot be displayed" #~ msgstr "Miniatura no puede mostrarse" +#~ msgid "It may be corrupted" +#~ msgstr "Puede estar corrupta" + #~ msgid "images skipped" #~ msgstr "Imágenes saltadas" +#~ msgid "Preferences were changed." +#~ msgstr "Las preferencias fueron cambiadas." + #~ msgid "Subsecond metadata not present in image" #~ msgstr "Metadato de sub-segundos no esta presente en la imagen" @@ -2048,6 +2140,13 @@ msgstr "_Ver" #~ msgid "Image Devices" #~ msgstr "Dispositivos de imagen" +#~ msgid "Missing Backup Devices" +#~ msgstr "Dispositivo de respaldo perdido" + +#, python-format +#~ msgid "Error in date time component. Value %s appears invalid" +#~ msgstr "Error en el campo de fecha. El valor %s parece inválido" + #~ msgid "Example: /home/user/photos" #~ msgstr "Ejemplo: /home/user/photos" @@ -2060,9 +2159,15 @@ msgstr "_Ver" #~ msgid "Exit program after completion of successful download" #~ msgstr "Salir del programa al completar exitosamente la descarga" +#~ msgid "Ignore" +#~ msgstr "Ignorar" + #~ msgid "Image Rename" #~ msgstr "Renombrar imagen" +#~ msgid "Report an error" +#~ msgstr "Reportar un error" + #~ msgid "Select a folder in which to backup images" #~ msgstr "Seleccione una carpeta para respaldar las imágenes" @@ -2091,10 +2196,20 @@ msgstr "_Ver" #~ msgid "Image Devices" #~ msgstr "Dispositivos de imagen" +#~ msgid "Report a warning" +#~ msgstr "Reportar un aviso" + +#~ msgid "Specify what to do when there are no backup devices." +#~ msgstr "Especificar que hacer cuando no hay dispositivos de respaldo." + #~ msgid "image number was specified but image filename has no number" #~ msgstr "" #~ "Número de imagen fue especificado, pero el nombre de la imagen no lo tiene" +#, python-format +#~ msgid "error generating name with component %s" +#~ msgstr "Error generando nombre con componente %s" + #~ msgid "This device has no images to download from." #~ msgstr "El dispositivo no tiene imágenes para descargar." @@ -2190,6 +2305,12 @@ msgstr "_Ver" #~ "configurarla en modo PTP. Si esto no es posible, considere usar un lector de " #~ "tarjetas." +#~ msgid "Enter a new job code, or select a previous one." +#~ msgstr "Entre un nuevo código de trabajo o seleccione uno previo." + +#~ msgid "Enter a new job code." +#~ msgstr "Entre un nuevo código de trabajo." + #~ msgid "Should this device or partition be used to download images from?" #~ msgstr "¿Deberían bajarse imágenes de este dispositivo o partición?" @@ -2297,6 +2418,14 @@ msgstr "_Ver" #~ msgid "Image device: %s\n" #~ msgstr "Dispositivo de imagen: %s\n" +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Destination: %(destination)s\n" +#~ msgstr "" +#~ "Origen: %(source)s\n" +#~ "Destino: %(destination)s\n" + #, python-format #~ msgid "" #~ "Sorry, this image location does not exist:\n" @@ -2309,6 +2438,18 @@ msgstr "_Ver" #~ "\n" #~ "Por favor, resuelva el problema, o modifique sus preferencias." +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Partially generated filename: %(newname)s\n" +#~ "Destination: %(destination)s\n" +#~ "Problem: %(problem)s" +#~ msgstr "" +#~ "Origen: %(source)s\n" +#~ "Archivo generado parcialmente: %(newname)s\n" +#~ "Destino: %(destination)s\n" +#~ "Problema: %(problem)s" + #~ msgid "Image filename could not be generated" #~ msgstr "No se pudo generar el nombre del archivo de imagen" @@ -2321,3 +2462,36 @@ msgstr "_Ver" #~ msgstr "" #~ "Puede tener respaldos de sus fotos en múltiples ubicaciones, por ejemplo: " #~ "discos duros externos." + +#, python-format +#~ msgid "" +#~ "First photo: %(image1)s %(image1_date_time)s:%(image1_subseconds)s\n" +#~ "Second photo: %(image2)s %(image2_date_time)s:%(image2_subseconds)s" +#~ msgstr "" +#~ "Primera foto: %(image1)s %(image1_date_time)s:%(image1_subseconds)s\n" +#~ "Segunda foto: %(image2)s %(image2_date_time)s:%(image2_subseconds)s" + +#~ msgid "Photo already exists" +#~ msgstr "Foto ya existe" + +#~ msgid "Video skipped" +#~ msgstr "Video saltado" + +#~ msgid "Video already exists" +#~ msgstr "Video ya existe" + +#~ msgid "photos skipped" +#~ msgstr "fotos saltadas" + +#~ msgid "photos downloaded" +#~ msgstr "fotos descargadas" + +#~ msgid "videos downloaded" +#~ msgstr "videos descargados" + +#~ msgid "videos skipped" +#~ msgstr "videos saltados" + +#, python-format +#~ msgid "0 of %(number)s %(filetypes)s" +#~ msgstr "0 de %(number)s %(filetypes)s" diff --git a/po/fi.po b/po/fi.po index c57921f..484814d 100644 --- a/po/fi.po +++ b/po/fi.po @@ -7,166 +7,166 @@ msgid "" msgstr "" "Project-Id-Version: rapid\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2010-05-27 22:33-0500\n" -"PO-Revision-Date: 2010-06-03 19:27+0000\n" -"Last-Translator: Toni Lähdekorpi \n" +"POT-Creation-Date: 2010-07-02 22:51-0500\n" +"PO-Revision-Date: 2010-07-05 00:43+0000\n" +"Last-Translator: Mikko Ruohola \n" "Language-Team: Finnish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-06-06 17:56+0000\n" +"X-Launchpad-Export-Date: 2010-07-06 19:08+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Translators: if neccessary, for guidance in how to translate this program, you may see http://damonlynch.net/translate.html -#: rapid/rapid.py:104 rapid/rapid.py:4447 rapid/glade3/rapid.glade.h:72 +#: rapid/rapid.py:122 rapid/rapid.py:6181 rapid/glade3/rapid.glade.h:71 msgid "Rapid Photo Downloader" msgstr "Nopea kuvien lataus" -#: rapid/rapid.py:394 +#: rapid/rapid.py:449 msgid "New York" msgstr "New York" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Manila" msgstr "Manila" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Prague" msgstr "Praha" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Helsinki" msgstr "Helsinki" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Wellington" msgstr "Wellington" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Tehran" msgstr "Teheran" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Kampala" msgstr "Guatemala" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Paris" msgstr "Pariisi" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Berlin" msgstr "Berliini" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Sydney" msgstr "Sydney" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Budapest" msgstr "Budapest" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Rome" msgstr "Rooma" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Moscow" msgstr "Moskova" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Delhi" msgstr "Delhi" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Warsaw" msgstr "Varsova" -#: rapid/rapid.py:398 +#: rapid/rapid.py:453 msgid "Jakarta" msgstr "Jakarta" -#: rapid/rapid.py:398 +#: rapid/rapid.py:453 msgid "Madrid" msgstr "Madrid" -#: rapid/rapid.py:398 +#: rapid/rapid.py:453 msgid "Stockholm" msgstr "Tukholma" -#: rapid/rapid.py:425 +#: rapid/rapid.py:486 msgid "Invalid Downloads Today value.\n" msgstr "Virheelliset lataukset tänään\n" -#: rapid/rapid.py:426 +#: rapid/rapid.py:487 msgid "Resetting value to zero.\n" msgstr "Palautetaan arvo nollaan.\n" -#: rapid/rapid.py:465 +#: rapid/rapid.py:526 msgid "'Start of day' preference value is corrupted.\n" msgstr "'Päivän alku'-asetuksen arvo on virheellinen.\n" -#: rapid/rapid.py:466 +#: rapid/rapid.py:527 msgid "Resetting to midnight.\n" msgstr "Palautetaan keskiyöhön.\n" -#: rapid/rapid.py:492 +#: rapid/rapid.py:553 msgid "Error in Photo Rename preferences" msgstr "Virhe kuvien uudelleennimeämisen määrityksissä" -#: rapid/rapid.py:523 rapid/rapid.py:1567 +#: rapid/rapid.py:584 rapid/rapid.py:1689 msgid "Sorry,these preferences contain an error:\n" msgstr "Anteeksi, näissä määrityksissä on virhe:\n" -#: rapid/rapid.py:534 +#: rapid/rapid.py:595 msgid "Resetting to default values." msgstr "Palautetaan oletusarvot." #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:609 rapid/renamesubfolderprefs.py:196 +#: rapid/rapid.py:670 rapid/renamesubfolderprefs.py:198 msgid "Job code" msgstr "Työkoodi" -#: rapid/rapid.py:677 +#: rapid/rapid.py:738 msgid "Error in Video Rename preferences" msgstr "Virhe videoiden uudelleennimeämisen määrityksissä" -#: rapid/rapid.py:695 +#: rapid/rapid.py:756 msgid "Error in Photo Download Subfolders preferences" msgstr "Virhe kuvien latauksen alikansion määrityksissä" -#: rapid/rapid.py:712 +#: rapid/rapid.py:773 msgid "Error in Video Download Subfolders preferences" msgstr "Virhe videoiden latauksen alikansion määrityksissä" -#: rapid/rapid.py:745 rapid/rapid.py:1492 +#: rapid/rapid.py:806 rapid/rapid.py:1539 msgid "photos and videos" msgstr "kuvat ja videot" -#: rapid/rapid.py:747 rapid/rapid.py:1502 rapid/rapid.py:1782 +#: rapid/rapid.py:808 rapid/rapid.py:1549 rapid/rapid.py:1658 msgid "photos" msgstr "kuvat" -#: rapid/rapid.py:880 +#: rapid/rapid.py:943 msgid "Select a folder to download photos to" msgstr "Valitse kansio johon kuvat ladataan" -#: rapid/rapid.py:898 +#: rapid/rapid.py:961 msgid "Select a folder to download videos to" msgstr "valitse johon videot ladataan" -#: rapid/rapid.py:980 +#: rapid/rapid.py:1043 #, python-format msgid "Select a folder containing %(file_types)s" msgstr "valitse kansio joka sisältää %(file_types)s tiedostoja" -#: rapid/rapid.py:1002 +#: rapid/rapid.py:1065 #, python-format msgid "Select a folder in which to backup %(file_types)s" msgstr "valitse kansio johon varmuuskopioidaan %(file_types)s tiedostoja" #. Translators: please do not modify or leave out html formatting tags like and . These are used to format the text the users sees -#: rapid/rapid.py:1095 +#: rapid/rapid.py:1146 msgid "" "Warning: There is insufficient metadata to fully generate the " "name. Please use other renaming options." @@ -174,7 +174,7 @@ msgstr "" "Varoitus: Tiedostossa ei ole riittävästi metatietoja nimen " "luomiseksi. Käytä muita uudelleennimeämis valintoja." -#: rapid/rapid.py:1129 +#: rapid/rapid.py:1182 msgid "" "Warning: There is insufficient metadata to fully generate " "subfolders. Please use other subfolder naming options." @@ -183,29 +183,29 @@ msgstr "" "luomiseksi. Käytä muita alikansion nimeämisvalintoja." #. Translators: you should not modify or leave out the %s. This is a code used by the programming language python to insert a value that thes user will see -#: rapid/rapid.py:1133 +#: rapid/rapid.py:1186 #, python-format msgid "Example: %s" msgstr "Esimerkki: %s" -#: rapid/rapid.py:1159 +#: rapid/rapid.py:1212 msgid "" "Downloads today value not updated, as a download is currently occurring" msgstr "" "Latauksia tänään arvoa ei päivitetty, koska lataus on edelleen kesken" -#: rapid/rapid.py:1175 +#: rapid/rapid.py:1228 msgid "Stored number value not updated, as a download is currently occurring" msgstr "Tallennettua numeroa ei päivitetty, koska lataus on edelleen kesken" -#: rapid/rapid.py:1205 +#: rapid/rapid.py:1258 #, python-format msgid "" "The %(filetype)s subfolder preferences had some unnecessary values removed." msgstr "%(filetype)s alikansioasetuksista poistettiin turhia arvoja." #. Preferences list is now empty -#: rapid/rapid.py:1210 +#: rapid/rapid.py:1263 #, python-format msgid "" "The %(filetype)s subfolder preferences entered are invalid and cannot be " @@ -217,59 +217,95 @@ msgstr "" "Asetukset palautetaan oletusarvoihin." #. check subfolder preferences for bad values -#: rapid/rapid.py:1224 rapid/rapid.py:1504 rapid/rapid.py:2533 +#: rapid/rapid.py:1277 rapid/rapid.py:1551 msgid "photo" msgstr "kuva" -#: rapid/rapid.py:1225 rapid/rapid.py:1499 rapid/rapid.py:2541 +#: rapid/rapid.py:1278 rapid/rapid.py:1546 msgid "video" msgstr "video" #. Translators: this value is used as an example device when automatic backup device detection is enabled. You should translate this. -#: rapid/rapid.py:1468 +#: rapid/rapid.py:1515 msgid "externaldrive1" msgstr "ulkoinenasema1" #. Translators: this value is used as an example device when automatic backup device detection is enabled. You should translate this. -#: rapid/rapid.py:1470 +#: rapid/rapid.py:1517 msgid "externaldrive2" msgstr "ulkoinenasema2" -#: rapid/rapid.py:1494 rapid/rapid.py:1780 +#: rapid/rapid.py:1541 rapid/rapid.py:1656 msgid "photos or videos" msgstr "kuvat ja videot" -#: rapid/rapid.py:1497 +#: rapid/rapid.py:1544 msgid "videos" msgstr "videot" +#: rapid/rapid.py:1556 +#, python-format +msgid "" +"%(date)s\n" +"%(time)s" +msgstr "" +"%(date)s\n" +"%(time)s" + +#: rapid/rapid.py:1558 +#, python-format +msgid "%(date)s %(time)s" +msgstr "%(date)s %(time)s" + +#: rapid/rapid.py:1561 +#, python-format +msgid "%(hour)s:%(minute)s:%(second)s:%(subsecond)s" +msgstr "%(hour)s:%(minute)s:%(second)s:%(subsecond)s" + +#: rapid/rapid.py:1568 +#, python-format +msgid "%(date)s %(hour)s:%(minute)s:%(second)s:%(subsecond)s" +msgstr "%(date)s %(hour)s:%(minute)s:%(second)s:%(subsecond)s" + +#: rapid/rapid.py:1596 rapid/rapid.py:2242 +msgid "subfolder and filename" +msgstr "alikansio ja tiedstonimi" + +#: rapid/rapid.py:1598 rapid/rapid.py:2244 +msgid "filename" +msgstr "tiedostonimi" + +#: rapid/rapid.py:1600 rapid/rapid.py:2246 +msgid "subfolder" +msgstr "alikansio" + #. This refers to when a device like a hard drive is having its contents scanned, #. looking for photos or videos. It is visible initially in the progress bar for each device -#. (which normally holds "x of y photos"). +#. (which normally holds "x photos and videos"). #. It maybe displayed only briefly if the contents of the device being scanned is small. -#: rapid/rapid.py:1556 +#: rapid/rapid.py:1672 msgid "scanning..." msgstr "etsii..." -#: rapid/rapid.py:1663 +#: rapid/rapid.py:1783 msgid "The following download path could not be created:\n" msgstr "Seuraavaa latauspolkua ei voitu luoda:\n" -#: rapid/rapid.py:1664 +#: rapid/rapid.py:1784 #, python-format msgid "%(path)s: " msgstr "%(path)s: " -#: rapid/rapid.py:1665 rapid/rapid.py:1666 rapid/rapid.py:1681 -#: rapid/rapid.py:1682 rapid/rapid.py:2364 rapid/rapid.py:2367 +#: rapid/rapid.py:1785 rapid/rapid.py:1786 rapid/rapid.py:1801 +#: rapid/rapid.py:1802 rapid/rapid.py:2063 rapid/rapid.py:2066 msgid "Download cannot proceed" msgstr "Latausta ei voida jatkaa" -#: rapid/rapid.py:1679 rapid/rapid.py:3381 +#: rapid/rapid.py:1799 rapid/rapid.py:4846 msgid "There is an error in the program preferences." msgstr "Ohjelman asetuksissa on virhe." -#: rapid/rapid.py:1680 +#: rapid/rapid.py:1800 msgid "" "\n" "Please check preferences, restart the program, and try again." @@ -282,9 +318,9 @@ msgstr "" #. It refers to the actual number of photos that can be copied. For example, the user might see the following: #. '0 of 512 photos' or '0 of 10 videos' or '0 of 202 photos and videos'. #. This particular text is displayed to the user before the download has started. -#: rapid/rapid.py:1791 +#: rapid/rapid.py:1974 #, python-format -msgid "0 of %(number)s %(filetypes)s" +msgid "%(number)s %(filetypes)s" msgstr "%(number)s %(filetypes)s" #. Translators: as you have already seen, the text can contain values that should not be modified or left out by you, for example %s. @@ -293,344 +329,211 @@ msgstr "%(number)s %(filetypes)s" #. %(number)s should be left exactly as is: 'number' should not be translated. The same applies to %(device)s: 'device' should #. not be translated. Generally speaking, if translating the sentence requires it, you can move items like '%(xyz)s' around #. in a sentence, but you should never modify them or leave them out. -#: rapid/rapid.py:1803 +#: rapid/rapid.py:1985 #, python-format msgid "Device scan complete: found %(number)s %(filetypes)s on %(device)s" msgstr "" "Laitteiden haku on valmis: löytyi %(number)s %(filetypes)s, %(device)s " "laitteessa" -#: rapid/rapid.py:1810 +#: rapid/rapid.py:1992 #, python-format msgid "Device scan complete: no %(filetypes)s found on %(device)s" msgstr "Laite haku valmis: ei %(filetypes)s löytynyt %(device)s laitteesta" -#: rapid/rapid.py:1844 -#, python-format -msgid "%(filetype)s filename could not be generated" -msgstr "%(filetype)s tiedostonimeä ei voitu luoda" +#. This message informs the user that the device (e.g. camera, hard drive or memory card) was automatically unmounted and they can now remove it +#: rapid/rapid.py:2013 +msgid "The device can now be safely removed" +msgstr "Laite voidaan turvallisesti poistaa" -#. '%(source)s' and '%(problem)s' are two more examples of text that should not be modified or left out -#: rapid/rapid.py:1846 +#: rapid/rapid.py:2019 #, python-format -msgid "" -"Source: %(source)s\n" -"Problem: %(problem)s" -msgstr "" -"Lähde: %(source)s\n" -"Ongelma: %(problem)s" +msgid "%(noFiles)s %(filetypes)s downloaded" +msgstr "%(noFiles)s %(filetypes)s ladattu" -#: rapid/rapid.py:1850 +#: rapid/rapid.py:2022 #, python-format -msgid "" -"%(filetype)s filename could not be properly generated. Check to ensure there " -"is sufficient metadata." -msgstr "" -"%(filetype)s tiedostonimeä ei voitu luoda oikein. Tarkista metatietojen " -"riittävyys." +msgid "%(noFiles)s %(filetypes)s failed to download" +msgstr "%(noFiles)s %(filetypes)s ei voitu ladata" -#: rapid/rapid.py:1851 +#: rapid/rapid.py:2028 rapid/rapid.py:5627 +msgid "warnings" +msgstr "varoitukset" + +#: rapid/rapid.py:2030 rapid/rapid.py:5631 +msgid "errors" +msgstr "virheet" + +#: rapid/rapid.py:2057 #, python-format -msgid "" -"Source: %(source)s\n" -"Partially generated filename: %(newname)s\n" -"Destination: %(destination)s\n" -"Problem: %(problem)s" -msgstr "" -"Lähde: %(source)s\n" -"Osittain luotu tiedostonimi: %(newname)s\n" -"Kohde: %(destination)s\n" -"Ongelma: %(problem)s" +msgid "Source: %s\n" +msgstr "Lähde: %s\n" -#: rapid/rapid.py:1859 rapid/rapid.py:1864 rapid/rapid.py:1883 -#: rapid/rapid.py:2207 +#: rapid/rapid.py:2059 #, python-format -msgid "" -"Source: %(source)s\n" -"Destination: %(destination)s" -msgstr "" -"Lähde: %(source)s\n" -"Kohde: %(destination)s" +msgid "Device: %s\n" +msgstr "Laite: %s\n" -#: rapid/rapid.py:1861 +#: rapid/rapid.py:2060 #, python-format -msgid "Unique identifier '%s' added" -msgstr "Yksilöinti '%s' lisätty" +msgid "Destination: %s" +msgstr "Kohde: %s" + +#: rapid/rapid.py:2061 rapid/rapid.py:2064 +msgid "Could not create temporary download directory" +msgstr "Väliaikaista latauskansiota ei voitu luoda" -#: rapid/rapid.py:1869 rapid/rapid.py:2270 +#: rapid/rapid.py:2064 +msgid "Error:" +msgstr "Virhe:" + +#: rapid/rapid.py:2088 +msgid "Backup path does not exist" +msgstr "Varmuuskopiokansio ei ole olemassa" + +#: rapid/rapid.py:2089 #, python-format -msgid "Source: %(source)s" -msgstr "Lähde: %(source)s" +msgid "The path %s could not be created" +msgstr "%s kansiota ei voitu luoda" -#: rapid/rapid.py:1877 rapid/rapid.py:1882 -msgid "Download copying error" -msgstr "Kopiointivirhe" +#: rapid/rapid.py:2090 +msgid "No backups can occur" +msgstr "Varmuuskopioita ei pysty tekemään" -#: rapid/rapid.py:1878 +#: rapid/rapid.py:2117 #, python-format msgid "" "Source: %(source)s\n" "Destination: %(destination)s\n" -"Error: %(errorno)s %(strerror)s" +"%(problem)s" msgstr "" "Lähde: %(source)s\n" "Kohde: %(destination)s\n" -"Virhe: %(errorno)s %(strerror)s" +"%(problem)s" -#: rapid/rapid.py:1880 rapid/rapid.py:1885 +#: rapid/rapid.py:2146 rapid/rapid.py:2492 rapid/rapid.py:2527 +#: rapid/rapid.py:2555 rapid/rapid.py:2586 rapid/rapid.py:2605 #, python-format -msgid "The %(filetype)s was not copied." -msgstr "%(filetype)s ei kopioitu" - -#: rapid/rapid.py:1889 msgid "" -"Photos detected with the same filenames, but taken at different times:" -msgstr "" -"Kuvia samalla tiedostonimellä löydetty, mutta kuvat on otettu eri aikoina:" - -#: rapid/rapid.py:1890 -#, python-format -msgid "" -"First photo: %(image1)s %(image1_date_time)s:%(image1_subseconds)s\n" -"Second photo: %(image2)s %(image2_date_time)s:%(image2_subseconds)s" +"Source: %(source)s\n" +"Destination: %(destination)s" msgstr "" -"Ensimmäinen kuva: %(image1)s %(image1_date_time)s:%(image1_subseconds)s\n" -"Toinen kuva: %(image2)s %(image2_date_time)s:%(image2_subseconds)s" - -#: rapid/rapid.py:1914 rapid/rapid.py:1927 -#, python-format -msgid "Could not open %(filetype)s" -msgstr "%(filetype)s avaaminen epäonnistui" - -#: rapid/rapid.py:1915 rapid/rapid.py:1928 -#, python-format -msgid "Source: %s" -msgstr "Lähde: %s" +"Lähde: %(source)s\n" +"Kohde: %(destination)s" -#: rapid/rapid.py:1950 -#, python-format -msgid "%(filetype)s has no metadata" -msgstr "%(filetype)s ei sisällä metatietoja" +#. hopefully inst will never be None, but just to be safe... +#: rapid/rapid.py:2161 +msgid "Please check your system and try again." +msgstr "Tarkista järjestelmäsi ja yritä uudelleen." -#: rapid/rapid.py:1951 -#, python-format -msgid "" -"Metadata is essential for generating subfolder and/or file names.\n" -"Source: %s" -msgstr "" -"Metatiedot ovat välttämättömiä alikansioiden ja/tai tiedostonimien " -"luomiseksi.\n" -"Lähde: %s" +#: rapid/rapid.py:2181 +msgid "Photos detected with the same filenames, but taken at different times" +msgstr "Saman niminen kuva havaittu, mutta kuvat on otettu eri aikaan" -#: rapid/rapid.py:1962 -msgid "" -"Subfolder name could not be properly generated. Check to ensure there is " -"sufficient metadata." -msgstr "Alikansion nimeä ei voitu luoda. Tarkista metatietojen riittävyys." +#: rapid/rapid.py:2221 +msgid "Photo has already been downloaded" +msgstr "Kuva on jo ladattu" -#: rapid/rapid.py:1963 +#: rapid/rapid.py:2222 rapid/rapid.py:2621 #, python-format -msgid "" -"Subfolder: %(subfolder)s\n" -"File: %(file)s\n" -"Problem: %(problem)s" -msgstr "" -"Alikansio: %(subfolder)s\n" -"Tiedosto: %(file)s\n" -"Ongelma: %(problem)s" +msgid "Source: %(source)s" +msgstr "Lähde: %(source)s" #. A new day, according the user's preferences of what time a day begins, has started -#: rapid/rapid.py:2147 +#: rapid/rapid.py:2420 msgid "New day has started - resetting 'Downloads Today' sequence number" msgstr "Uusi päivä on alkanut - Palautetaan 'Latauksia Tänään' luku" -#: rapid/rapid.py:2206 +#: rapid/rapid.py:2491 #, python-format msgid "Backup of %(file_type)s already exists" msgstr "%(file_type)s varmuuskopio on jo olemassa" -#: rapid/rapid.py:2210 +#: rapid/rapid.py:2495 #, python-format msgid "Backup %(file_type)s overwritten" msgstr "%(file_type)s Varmuuskopio ylikirjoitettiin" -#: rapid/rapid.py:2215 +#: rapid/rapid.py:2499 #, python-format msgid "%(file_type)s not backed up to %(volume)s" msgstr "%(file_type)s-tiedostoja ei varmuuskopioitu kohteeseen %(volume)s" -#: rapid/rapid.py:2217 +#: rapid/rapid.py:2501 #, python-format msgid "%(file_type)s not backed up" msgstr "%(file_type)s ei varmuuskopioida" -#: rapid/rapid.py:2243 rapid/rapid.py:2260 +#: rapid/rapid.py:2524 rapid/rapid.py:2552 rapid/rapid.py:2585 +#: rapid/rapid.py:2604 msgid "Backing up error" msgstr "Varmuuskopiointi virhe" -#: rapid/rapid.py:2244 +#: rapid/rapid.py:2525 rapid/rapid.py:2553 #, python-format msgid "Destination directory could not be created: %(directory)s\n" msgstr "Kohdekansiota ei voitu luoda: %(directory)s\n" -#: rapid/rapid.py:2246 -#, python-format -msgid "" -"Source: %(source)s\n" -"Destination: %(destination)s\n" -msgstr "" -"Lähde: %(source)s\n" -"Kohde: %(destination)s\n" - -#: rapid/rapid.py:2248 +#: rapid/rapid.py:2529 rapid/rapid.py:2588 #, python-format -msgid "Error: %(errno)s %(strerror)s" -msgstr "Virhe: %(errno)s %(strerror)s" +msgid "Error: %(inst)s" +msgstr "Virhe: %(inst)s" -#: rapid/rapid.py:2249 rapid/rapid.py:2263 +#: rapid/rapid.py:2530 rapid/rapid.py:2558 rapid/rapid.py:2589 +#: rapid/rapid.py:2608 #, python-format msgid "The %(file_type)s was not backed up." msgstr "%(file_type)s ei varmuuskopioitu" -#: rapid/rapid.py:2261 +#: rapid/rapid.py:2557 rapid/rapid.py:2607 #, python-format -msgid "" -"Source: %(source)s\n" -"Destination: %(destination)s\n" -"Error: %(errno)s %(strerror)s" -msgstr "" -"Lähde: %(source)s\n" -"Kohde: %(destination)s\n" -"Virhe: %(errno)s %(strerror)s" +msgid "Error: %(errno)s %(strerror)s" +msgstr "Virhe: %(errno)s %(strerror)s" -#: rapid/rapid.py:2269 +#: rapid/rapid.py:2620 #, python-format msgid "%(file_type)s could not be backed up" msgstr "%(file_type)s ei voitu varmuuskopioda" -#: rapid/rapid.py:2272 +#: rapid/rapid.py:2623 msgid "No suitable backup volume was found" msgstr "ei löydetty sopivaa varmuuskopiolaitetta" -#: rapid/rapid.py:2274 +#: rapid/rapid.py:2625 msgid "A backup location was not found" msgstr "varmuuskopiosijaintia ei löytynyt" -#. This message informs the user that the device (e.g. camera, hard drive or memory card) was automatically unmounted and they can now remove it -#: rapid/rapid.py:2288 -msgid "The device can now be safely removed" -msgstr "Laite voidaan turvallisesti poistaa" - -#: rapid/rapid.py:2294 -#, python-format -msgid "%(noFiles)s %(filetypes)s downloaded" -msgstr "%(noFiles)s %(filetypes)s ladattu" - -#: rapid/rapid.py:2297 -#, python-format -msgid "%(noFiles)s %(filetypes)s skipped" -msgstr "%(noFiles)s %(filetypes)s ohitettu" - -#: rapid/rapid.py:2303 rapid/rapid.py:4027 -msgid "warnings" -msgstr "varoitukset" - -#: rapid/rapid.py:2305 rapid/rapid.py:4029 -msgid "errors" -msgstr "virheet" - -#: rapid/rapid.py:2331 rapid/rapid.py:2823 rapid/rapid.py:2838 -msgid "Photo thumbnail could not be extracted" -msgstr "Kuvan esikatselukuvaa ei saatu" - -#: rapid/rapid.py:2358 -#, python-format -msgid "Source: %s\n" -msgstr "Lähde: %s\n" - -#: rapid/rapid.py:2360 -#, python-format -msgid "Device: %s\n" -msgstr "Laite: %s\n" - -#: rapid/rapid.py:2361 -#, python-format -msgid "Destination: %s" -msgstr "Kohde: %s" - -#: rapid/rapid.py:2362 rapid/rapid.py:2365 -msgid "Could not create temporary download directory" -msgstr "Väliaikaista latauskansiota ei voitu luoda" - -#: rapid/rapid.py:2365 -msgid "Error:" -msgstr "Virhe:" - -#: rapid/rapid.py:2382 +#: rapid/rapid.py:2679 #, python-format msgid "This device has no %(types_searched_for)s to download from." msgstr "Tällä laitteella ei ole %(types_searched_for)s ladattavaksi." -#: rapid/rapid.py:2417 +#: rapid/rapid.py:2733 #, python-format msgid "Download has started from %s" msgstr "Lataus lähteestä %s on alkanut" -#: rapid/rapid.py:2434 -msgid "Backup path does not exist" -msgstr "Varmuuskopiokansio ei ole olemassa" - -#: rapid/rapid.py:2435 +#: rapid/rapid.py:2736 #, python-format -msgid "The path %s could not be created" -msgstr "%s kansiota ei voitu luoda" - -#: rapid/rapid.py:2436 rapid/rapid.py:2444 -msgid "No backups can occur" -msgstr "Varmuuskopioita ei pysty tekemään" - -#: rapid/rapid.py:2442 -msgid "Backup device missing" -msgstr "Varmuuskopiolaite puuttuu" - -#: rapid/rapid.py:2443 -msgid "No backup device was automatically detected" -msgstr "Varmuuskopiolaitetta ei löydetty automaattisesti" - -#: rapid/rapid.py:2534 rapid/rapid.py:3343 rapid/rapid.py:3345 -msgid "Photo" -msgstr "Kuva" - -#: rapid/rapid.py:2535 -msgid "Photo skipped" -msgstr "Kuva ohitettu" - -#: rapid/rapid.py:2536 -msgid "Photo already exists" -msgstr "Kuva on jo olemassa" +msgid "Attempting to download %s files" +msgstr "Yritetään ladata %s tiedostoa" -#: rapid/rapid.py:2542 rapid/rapid.py:3343 -msgid "Video" -msgstr "Video" - -#: rapid/rapid.py:2543 -msgid "Video skipped" -msgstr "Video ohitettiin" - -#: rapid/rapid.py:2544 -msgid "Video already exists" -msgstr "Video on jo olemassa" - -#: rapid/rapid.py:2592 +#. reset the progress bar to update the status of this download attempt +#: rapid/rapid.py:2769 rapid/rapid.py:2836 #, python-format msgid "%(number)s of %(total)s %(filetypes)s" msgstr "%(number)s/%(total)s %(filetypes)s" -#: rapid/rapid.py:2607 rapid/rapid.py:2611 +#: rapid/rapid.py:2832 +#, python-format +msgid "%(number)s of %(total)s %(filetypes)s (%(remaining)s remaining)" +msgstr "" + +#: rapid/rapid.py:2857 rapid/rapid.py:2861 msgid "Could not delete photo or video from device" msgstr "videota tai kuvaa ei voitu poistaa laitteesta" -#: rapid/rapid.py:2608 +#: rapid/rapid.py:2858 #, python-format msgid "" "Photo: %(source)s\n" @@ -639,112 +542,213 @@ msgstr "" "Kuva: %(source)s\n" "Virhe: %(errno)s %(strerror)s" -#: rapid/rapid.py:2612 +#: rapid/rapid.py:2862 #, python-format msgid "Photo: %(source)s" msgstr "Kuva: %(source)s" -#: rapid/rapid.py:2614 +#: rapid/rapid.py:2864 #, python-format msgid "Deleted %(number)i %(filetypes)s from device" msgstr "poistettiin %(number)i %(filetypes)s laitteesta" -#: rapid/rapid.py:2624 +#: rapid/rapid.py:2871 #, python-format msgid "Download complete from %s" msgstr "Lataus lähteestä %s valmis" #. Device refers to a thing like a camera, memory card in its reader, external hard drive, Portable Storage Device, etc. -#: rapid/rapid.py:2700 +#: rapid/rapid.py:2993 rapid/rapid.py:3466 msgid "Device" msgstr "Laite" #. Size refers to the total size of images on the device, typically in MB or GB -#: rapid/rapid.py:2705 +#: rapid/rapid.py:2998 rapid/rapid.py:3455 msgid "Size" msgstr "Koko" -#: rapid/rapid.py:2708 +#: rapid/rapid.py:3001 msgid "Download Progress" msgstr "Latauksen edistyminen" -#: rapid/rapid.py:2824 rapid/rapid.py:2839 -msgid "It may be corrupted" -msgstr "Se voi olla vahingoittunut" +#: rapid/rapid.py:3089 +msgid "Downloading From Cameras" +msgstr "Lataa kameroista" + +#: rapid/rapid.py:3095 +msgid "Downloading directly from a camera may work poorly or not at all" +msgstr "Lataa suoraan kamerasta. Voi toimia huonosti tai ei ollenkaan" + +#: rapid/rapid.py:3096 +msgid "" +"Downloading from a card reader always works and is generally much faster. It " +"is strongly recommended to use a card reader." +msgstr "" +"Lataaminen muistikortinlukijasta toimii aina ja on yleisesti paljon " +"nopeampaa. On suositeltavaa käyttää muistikortinlukijaa." -#: rapid/rapid.py:2869 +#: rapid/rapid.py:3110 +msgid "_Show this message again" +msgstr "_Näytä tämä viesti uudestaan" + +#: rapid/rapid.py:3145 msgid "Device Detected" msgstr "Laite havaittu" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2878 +#: rapid/rapid.py:3154 msgid "" "Should this device or partition be used to download photos or videos from?" msgstr "Tulisiko tätä laitetta tai osiota käyttää kuvalaitteena?" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2897 +#: rapid/rapid.py:3173 msgid "_Remember this choice" msgstr "_Muista tämä valinta" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2934 +#: rapid/rapid.py:3210 #, python-format msgid "%s selected for downloading from" msgstr "%s valittu ladattavaksi" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2937 +#: rapid/rapid.py:3213 msgid "This device or partition will always be used to download from" msgstr "Tätä laitetta tai osiota tullaan aina käyttämään kuvien lataamiseen" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2940 +#: rapid/rapid.py:3216 #, python-format msgid "%s rejected as a download device" msgstr "%s laitetta ei hyväksytty latauslaitteeksi" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2943 +#: rapid/rapid.py:3219 msgid "This device or partition will never be used to download from" msgstr "Tästä laitteesta tai osiosta ei ladata koskaan" -#: rapid/rapid.py:2950 +#: rapid/rapid.py:3226 msgid "Remove all Job Codes?" msgstr "Poista kaikki työkoodit?" -#: rapid/rapid.py:2967 +#: rapid/rapid.py:3243 msgid "Should all Job Codes be removed?" msgstr "Tulisiko kaikki työkoodit poistaa?" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:2995 +#: rapid/rapid.py:3271 msgid "Enter a Job Code" msgstr "Syöta työkoodi" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:3013 -msgid "Enter a new job code, or select a previous one." -msgstr "Anna uusi työkoodi tai valitse aikaisempi." +#: rapid/rapid.py:3290 +msgid "Enter a new Job Code, or select a previous one" +msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:3016 -msgid "Enter a new job code." -msgstr "Anna uusi työkoodi." +#: rapid/rapid.py:3293 +msgid "Enter a new Job Code" +msgstr "" -#: rapid/rapid.py:3021 +#: rapid/rapid.py:3298 rapid/rapid.py:4417 msgid "Job Code:" msgstr "Työkoodi:" -#: rapid/rapid.py:3068 +#: rapid/rapid.py:3345 msgid "Job Code entered" msgstr "Työkoodi syötetty" -#: rapid/rapid.py:3070 +#: rapid/rapid.py:3347 msgid "Job Code not entered" msgstr "Työkoodia ei annettu" -#: rapid/rapid.py:3330 +#: rapid/rapid.py:3401 +msgid "Status" +msgstr "" + +#: rapid/rapid.py:3409 +msgid "Type" +msgstr "" + +#: rapid/rapid.py:3418 rapid/rapid.py:4808 rapid/rapid.py:4810 +msgid "Photo" +msgstr "Kuva" + +#: rapid/rapid.py:3420 +msgid "File" +msgstr "" + +#: rapid/rapid.py:3435 +msgid "Job Code" +msgstr "" + +#: rapid/rapid.py:3445 +msgid "Date" +msgstr "" + +#: rapid/rapid.py:3477 rapid/renamesubfolderprefs.py:194 +msgid "Filename" +msgstr "Tiedostonimi" + +#: rapid/rapid.py:3488 +msgid "Path" +msgstr "" + +#: rapid/rapid.py:3843 +#, python-format +msgid "%(filetype)s was downloaded successfully" +msgstr "" + +#: rapid/rapid.py:3845 +#, python-format +msgid "%(filetype)s was not downloaded" +msgstr "" + +#: rapid/rapid.py:3847 +#, python-format +msgid "%(filetype)s was downloaded with warnings" +msgstr "" + +#: rapid/rapid.py:3849 +#, python-format +msgid "%(filetype)s was downloaded but there were problems backing up" +msgstr "" + +#: rapid/rapid.py:3851 +#, python-format +msgid "%(filetype)s was neither downloaded nor backed up" +msgstr "" + +#: rapid/rapid.py:3853 +#, python-format +msgid "%(filetype)s is ready to be downloaded" +msgstr "" + +#: rapid/rapid.py:3855 +#, python-format +msgid "%(filetype)s is about to be downloaded" +msgstr "" + +#: rapid/rapid.py:3857 +#, python-format +msgid "%(filetype)s will be downloaded with warnings" +msgstr "" + +#: rapid/rapid.py:3859 +#, python-format +msgid "%(filetype)s cannot be downloaded" +msgstr "" + +#: rapid/rapid.py:4240 +msgid "Preview" +msgstr "" + +#: rapid/rapid.py:4439 +msgid "Enter a new Job Code and press Enter, or select an existing Job Code" +msgstr "" + +#: rapid/rapid.py:4795 #, python-format msgid "" "Sorry, this device location does not exist:\n" @@ -755,22 +759,26 @@ msgstr "" "Tätä laitteen sijaintia ei ole:\n" "%(path)s" -#: rapid/rapid.py:3334 +#: rapid/rapid.py:4799 msgid "Problem with Device Location Folder" msgstr "Ongelma laitteen sijaintikansiossa" -#: rapid/rapid.py:3350 +#: rapid/rapid.py:4808 +msgid "Video" +msgstr "Video" + +#: rapid/rapid.py:4815 #, python-format msgid "The %(file_type)s Download Folder does not exist.\n" msgstr "%(file_type)s-latauskansiota ei ole olemassa.\n" -#: rapid/rapid.py:3359 +#: rapid/rapid.py:4824 #, python-format msgid "The %(file_type)s Download Folder exists but cannot be written to.\n" msgstr "" "%(file_type)s-latauskansio on olemassa, mutta siihen ei voida kirjoittaa.\n" -#: rapid/rapid.py:3364 +#: rapid/rapid.py:4829 msgid "" "Sorry, problems were encountered with your download folders. Please fix the " "problems or modify the preferences.\n" @@ -780,60 +788,65 @@ msgstr "" "muokkaa määrityksiä.\n" "\n" -#: rapid/rapid.py:3367 +#: rapid/rapid.py:4832 msgid "Problem with Download Folder" msgstr "Ongelma Latauskansiossa" -#: rapid/rapid.py:3369 +#: rapid/rapid.py:4834 msgid "Problem with Download Folders" msgstr "Ongelma latauskansioiden kanssa" -#: rapid/rapid.py:3382 +#: rapid/rapid.py:4847 msgid "Some preferences will be reset." msgstr "Jotkin asetukset palautetaan." -#: rapid/rapid.py:3416 +#: rapid/rapid.py:4880 +msgid "Displaying warning about downloading directly from camera" +msgstr "" + +#: rapid/rapid.py:4890 #, python-format msgid "Prompting whether to use %s" msgstr "Kysyy tulisiko käyttää laitetta %s" -#: rapid/rapid.py:3444 +#: rapid/rapid.py:4917 msgid "Prompting for Job Code" msgstr "Kysyy työkoodia" -#: rapid/rapid.py:3448 +#: rapid/rapid.py:4921 msgid "Already prompting for Job Code, do not prompt again" msgstr "Työkoodia pyydetään jo, älä pyydä uudestaan" -#: rapid/rapid.py:3463 -msgid "Starting downloads that have been waiting for a Job Code" -msgstr "Työkoodia odottaneet lataukset käynnistetään" - -#: rapid/rapid.py:3467 +#: rapid/rapid.py:4938 msgid "Starting downloads" msgstr "Käynnistetään latauksia" -#: rapid/rapid.py:3482 +#. autostart is true +#: rapid/rapid.py:4942 +msgid "Starting downloads that have been waiting for a Job Code" +msgstr "Työkoodia odottaneet lataukset käynnistetään" + +#: rapid/rapid.py:4984 #, python-format msgid "Creating photo download folder %(folder)s" msgstr "Luodaan kuvien latauskansio %(folder)s" -#: rapid/rapid.py:3487 +#: rapid/rapid.py:4989 #, python-format msgid "Failed to create default photo download folder %(folder)s" msgstr "Kuvien oletuslatauskansion %(folder)s luonti epäonnistui" -#: rapid/rapid.py:3491 +#: rapid/rapid.py:4993 #, python-format msgid "Creating video download folder %(folder)s" msgstr "Luodaan videoiden latauskansio %(folder)s" -#: rapid/rapid.py:3496 +#: rapid/rapid.py:4998 #, python-format msgid "Failed to create default video download folder %(folder)s" msgstr "Videolatausten oletuskansion %(folder)s luonti epäonnistui" -#: rapid/rapid.py:3521 +#: rapid/rapid.py:5023 msgid "" "A newer version of this program was previously run on this computer.\n" "\n" @@ -841,35 +854,35 @@ msgstr "" "Ohjelman uudempaa versiota on käytetty tässä tietokoneessa.\n" "\n" -#: rapid/rapid.py:3523 +#: rapid/rapid.py:5025 msgid "" "Program preferences appear to be valid, but please check them to ensure " "correct operation." msgstr "" "Ohjelma on kelpaava, mutta ole hyvä ja tarkista että ohjelma toimii oikein." -#: rapid/rapid.py:3525 +#: rapid/rapid.py:5027 msgid "Sorry, some preferences are invalid and will be reset." msgstr "" "Anteeksi, jotkin asetukset ovat virheellisiä ja ne palautetaan " "oletusarvoihin." -#: rapid/rapid.py:3526 +#: rapid/rapid.py:5028 msgid "Warning:" msgstr "Varoitus:" -#: rapid/rapid.py:3531 +#: rapid/rapid.py:5033 msgid "" "This version of the program is newer than the previously run version. " "Checking preferences." msgstr "" "Tämä ohjelma on uudempi kuin aikaisemmin käytetty. Tarkista asetukset." -#: rapid/rapid.py:3538 +#: rapid/rapid.py:5040 msgid "Preferences were modified." msgstr "Asetuksia on muokattu." -#: rapid/rapid.py:3539 +#: rapid/rapid.py:5041 msgid "" "This version of the program uses different preferences than the old version. " "Your preferences have been updated.\n" @@ -881,11 +894,11 @@ msgstr "" "\n" "Ole hyvä ja tarkista ne varmistaaksesi ohjelman toiminta." -#: rapid/rapid.py:3543 +#: rapid/rapid.py:5045 msgid "No preferences needed to be changed." msgstr "Asetuksia ei tarvinnut muuttaa." -#: rapid/rapid.py:3545 +#: rapid/rapid.py:5047 msgid "" "This version of the program uses different preferences than the old version. " "Some of your previous preferences were invalid, and could not be updated. " @@ -895,129 +908,153 @@ msgstr "" "asetuksistasi olivat virheellisiä ja niitä ei voitu päivittää. Ne " "palautetaan oletuksiin." -#: rapid/rapid.py:3555 +#: rapid/rapid.py:5057 msgid "Problem using pynotify." msgstr "Ongelmia pynotifyn käytössä." -#: rapid/rapid.py:3571 +#: rapid/rapid.py:5073 msgid "Failed to receive pynotify server capabilities." msgstr "Ei saanut pynotify-palvelimen ominaisuuksia." -#: rapid/rapid.py:3580 +#: rapid/rapid.py:5084 msgid "" "Warning: desktop environment notification server is incorrectly configured." msgstr "Varoitus: Työpöytäympäristön ilmoituspalvelu on väärin asennettu." -#: rapid/rapid.py:3626 +#: rapid/rapid.py:5132 msgid "and" msgstr "ja" -#: rapid/rapid.py:3631 +#: rapid/rapid.py:5137 msgid "Using backup devices" msgstr "Käyttää varmuuskopiolaitteita" -#: rapid/rapid.py:3633 +#: rapid/rapid.py:5139 msgid "Using backup device" msgstr "Käyttää varmuuskopiolaitetta" -#: rapid/rapid.py:3635 +#: rapid/rapid.py:5141 msgid "No backup devices detected" msgstr "Varmuuskopiolaitetta ei löytynyt" -#: rapid/rapid.py:3674 rapid/rapid.py:3831 +#: rapid/rapid.py:5188 rapid/rapid.py:5350 #, python-format msgid "Device %(device)s (%(path)s) ignored" msgstr "Laite %(device)s (%(path)s) ohitettu" -#: rapid/rapid.py:3790 +#: rapid/rapid.py:5309 #, python-format msgid "Detected %(device)s with path %(path)s" msgstr "Löytyi %(device)s laitetta polusta %(path)s" -#: rapid/rapid.py:3794 +#: rapid/rapid.py:5313 msgid "Automatically start download is true" msgstr "Automaattinen latauksen aloitus on päällä" -#: rapid/rapid.py:3796 +#: rapid/rapid.py:5315 msgid "Automatically start download is false" msgstr "Automaattinen latauksen aloitus on pois päältä" -#: rapid/rapid.py:3849 +#: rapid/rapid.py:5368 msgid "Using manually specified path" msgstr "Käytetään käsin valittua polkua" -#: rapid/rapid.py:3857 +#: rapid/rapid.py:5376 rapid/rapid.py:5417 #, python-format msgid "Backing up to %(path)s" msgstr "Varmuuskopioidaan kohteeseen %(path)s" -#: rapid/rapid.py:3968 rapid/rapid.py:4017 +#. the user is trying to backup to a device that is currently being downloaded from..... we don't normally allow that, but what to do? +#: rapid/rapid.py:5441 +#, python-format +msgid "Warning: backup device %(device)s is currently being downloaded from" +msgstr "" + +#: rapid/rapid.py:5458 +msgid "D_ownload Selected" +msgstr "" + +#: rapid/rapid.py:5550 rapid/rapid.py:5599 msgid "All downloads complete" msgstr "Kaikki lataukset valmiita" -#: rapid/rapid.py:3982 +#: rapid/rapid.py:5564 msgid "MB/s" msgstr "Mt/s" -#: rapid/rapid.py:3992 +#: rapid/rapid.py:5574 msgid "About 1 second remaining" msgstr "Noin 1 sekunti jäljellä" -#: rapid/rapid.py:3994 +#: rapid/rapid.py:5576 #, python-format msgid "About %i seconds remaining" msgstr "Noin %i sekuntia jäljellä" -#: rapid/rapid.py:3996 +#: rapid/rapid.py:5578 msgid "About 1 minute remaining" msgstr "Noin 1 minuutti jäljellä" #. Translators: in the text '%(minutes)i:%(seconds)02i', only the : should be translated, if needed. #. '%(minutes)i' and '%(seconds)02i' should not be modified or left out. They are used to format and display the amount #. of time the download has remainging, e.g. 'About 5:36 minutes remaining' -#: rapid/rapid.py:4001 +#: rapid/rapid.py:5583 #, python-format msgid "About %(minutes)i:%(seconds)02i minutes remaining" msgstr "Noin %(minutes)i:%(seconds)02i minuuttia jäljellä" -#: rapid/rapid.py:4019 -msgid "photos downloaded" -msgstr "kuvaa ladattu" +#: rapid/rapid.py:5602 rapid/rapid.py:5608 rapid/rapid.py:5614 +#: rapid/rapid.py:5620 rapid/rapid.py:5625 rapid/rapid.py:5629 +#, python-format +msgid "%(number)s %(numberdownloaded)s" +msgstr "" -#: rapid/rapid.py:4021 -msgid "photos skipped" -msgstr "kuvaa ohitettu" +#: rapid/rapid.py:5604 rapid/rapid.py:5616 +#, python-format +msgid "%(filetype)s downloaded" +msgstr "" -#: rapid/rapid.py:4023 -msgid "videos downloaded" -msgstr "videota ladattu" +#: rapid/rapid.py:5610 rapid/rapid.py:5622 +#, python-format +msgid "%(filetype)s failed to download" +msgstr "" -#: rapid/rapid.py:4025 -msgid "videos skipped" -msgstr "videota ohitettu" +#: rapid/rapid.py:5789 +msgid "_Resume" +msgstr "" -#. This text will be displayed to the user on the Download / Pause button. -#. Please note the space at the end of the label - it is needed to meet the Gnome Human Interface Guidelines -#: rapid/rapid.py:4125 -msgid "_Download " -msgstr "_Lataa " +#: rapid/rapid.py:5792 +msgid "_Download All" +msgstr "" #. This text will be displayed to the user on the Download / Pause button. -#: rapid/rapid.py:4135 +#: rapid/rapid.py:5801 msgid "_Pause" msgstr "_Keskeytä" -#: rapid/rapid.py:4209 -msgid "Preferences were changed." -msgstr "Asetuksia muutettiin." +#: rapid/rapid.py:5914 +msgid "Download device settings preferences were changed." +msgstr "" + +#: rapid/rapid.py:5926 +msgid "Backup preferences were changed." +msgstr "" -#: rapid/rapid.py:4407 +#: rapid/rapid.py:5932 +msgid "Subfolder and filename preferences were changed." +msgstr "" + +#: rapid/rapid.py:5943 +msgid "Download folder preferences were changed." +msgstr "" + +#: rapid/rapid.py:6141 msgid "Goodbye" msgstr "Näkemiin" #. Translators: this text is displayed to the user when they request information on the command line options. #. The text %default should not be modified or left out. -#: rapid/rapid.py:4418 +#: rapid/rapid.py:6152 #, python-format msgid "" "display program information on the command line as the program runs " @@ -1026,387 +1063,383 @@ msgstr "" "näytä ohjelman tiedot komentorivillä kun ohjelma käynnistetään (oletus: " "%default)" -#: rapid/rapid.py:4419 +#: rapid/rapid.py:6153 msgid "only output errors to the command line" msgstr "tulosta vain virheet komentoriville" #. image file extensions are recognized RAW files plus TIFF and JPG -#: rapid/rapid.py:4421 +#: rapid/rapid.py:6155 msgid "list photo and video file extensions the program recognizes and exit" msgstr "" "listaa kuva- ja videotiedostopäätteitä joita ohjelma tunnistaa ja poistu" -#: rapid/rapid.py:4422 +#: rapid/rapid.py:6156 msgid "reset all program settings and preferences and exit" msgstr "tyhjennä kaikki ohjelman asetukset ja määritykset, ja poistu" -#: rapid/rapid.py:4431 +#: rapid/rapid.py:6165 msgid "Photos:" msgstr "Kuvat:" -#: rapid/rapid.py:4431 +#: rapid/rapid.py:6165 msgid "Videos:" msgstr "Videot:" -#: rapid/rapid.py:4436 +#: rapid/rapid.py:6170 #, python-format msgid "and %s" msgstr "ja %s" -#: rapid/rapid.py:4444 +#: rapid/rapid.py:6178 msgid "All settings and preferences have been reset" msgstr "Kaikki asetukset ja määritykset tyhjennetty" #. Which volume management code is being used (GIO or GnomeVFS) -#: rapid/rapid.py:4448 rapid/rapid.py:4449 rapid/rapid.py:4451 -#: rapid/rapid.py:4456 rapid/rapid.py:4460 +#: rapid/rapid.py:6182 rapid/rapid.py:6183 rapid/rapid.py:6185 +#: rapid/rapid.py:6190 rapid/rapid.py:6194 msgid "Using" msgstr "Käyttäen" -#: rapid/rapid.py:4453 +#: rapid/rapid.py:6187 msgid "\n" msgstr "\n" #. this application is already running -#: rapid/rapid.py:4477 +#: rapid/rapid.py:6211 #, python-format msgid "%s is already running" msgstr "%s on jo käynnissä" -#: rapid/renamesubfolderprefs.py:190 +#: rapid/renamesubfolderprefs.py:192 msgid "Date time" msgstr "Ajankohta" -#: rapid/renamesubfolderprefs.py:191 +#: rapid/renamesubfolderprefs.py:193 msgid "Text" msgstr "Teksti" -#: rapid/renamesubfolderprefs.py:192 -msgid "Filename" -msgstr "Tiedostonimi" - -#: rapid/renamesubfolderprefs.py:193 +#: rapid/renamesubfolderprefs.py:195 msgid "Metadata" msgstr "Metatieto" -#: rapid/renamesubfolderprefs.py:194 +#: rapid/renamesubfolderprefs.py:196 msgid "Sequences" msgstr "Numeroinnit" -#: rapid/renamesubfolderprefs.py:197 +#: rapid/renamesubfolderprefs.py:199 msgid "Image date" msgstr "Kuvan päivämäärä" -#: rapid/renamesubfolderprefs.py:198 +#: rapid/renamesubfolderprefs.py:200 msgid "Video date" msgstr "Videon päivämäärä" -#: rapid/renamesubfolderprefs.py:199 +#: rapid/renamesubfolderprefs.py:201 msgid "Today" msgstr "Tänään" -#: rapid/renamesubfolderprefs.py:200 +#: rapid/renamesubfolderprefs.py:202 msgid "Yesterday" msgstr "Huomenna" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:202 +#: rapid/renamesubfolderprefs.py:204 msgid "Name + extension" msgstr "Nimi + pääte" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:204 +#: rapid/renamesubfolderprefs.py:206 msgid "Name" msgstr "Nimi" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:206 +#: rapid/renamesubfolderprefs.py:208 msgid "Extension" msgstr "Tiedostopääte" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:208 +#: rapid/renamesubfolderprefs.py:210 msgid "Image number" msgstr "Kuvan numero" -#: rapid/renamesubfolderprefs.py:209 +#: rapid/renamesubfolderprefs.py:211 msgid "Video number" msgstr "Videon numero" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:211 +#: rapid/renamesubfolderprefs.py:213 msgid "Aperture" msgstr "Aukko" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:213 +#: rapid/renamesubfolderprefs.py:215 msgid "ISO" msgstr "Herkkyys" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:215 +#: rapid/renamesubfolderprefs.py:217 msgid "Exposure time" msgstr "Valotusaika" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:217 +#: rapid/renamesubfolderprefs.py:219 msgid "Focal length" msgstr "Polttoväli" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:219 +#: rapid/renamesubfolderprefs.py:221 msgid "Camera make" msgstr "Kameran merkki" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:221 +#: rapid/renamesubfolderprefs.py:223 msgid "Camera model" msgstr "Kameran malli" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:223 +#: rapid/renamesubfolderprefs.py:225 msgid "Short camera model" msgstr "Lyhyt kameramalli" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:225 +#: rapid/renamesubfolderprefs.py:227 msgid "Hyphenated short camera model" msgstr "Tavutettu lyhyt kameran malli" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:227 +#: rapid/renamesubfolderprefs.py:229 msgid "Serial number" msgstr "Sarjanumero" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:229 +#: rapid/renamesubfolderprefs.py:231 msgid "Shutter count" msgstr "Suljinlaskuri" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:231 +#: rapid/renamesubfolderprefs.py:233 msgid "Owner name" msgstr "Omistajan nimi" -#: rapid/renamesubfolderprefs.py:232 +#: rapid/renamesubfolderprefs.py:234 msgid "Codec" msgstr "Koodekki" -#: rapid/renamesubfolderprefs.py:233 +#: rapid/renamesubfolderprefs.py:235 msgid "Width" msgstr "Leveys" -#: rapid/renamesubfolderprefs.py:234 +#: rapid/renamesubfolderprefs.py:236 msgid "Height" msgstr "Korkeus" -#: rapid/renamesubfolderprefs.py:235 +#: rapid/renamesubfolderprefs.py:237 msgid "Length" msgstr "Pituus" -#: rapid/renamesubfolderprefs.py:236 +#: rapid/renamesubfolderprefs.py:238 msgid "Frames Per Second" msgstr "Kuvataajuus" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:238 +#: rapid/renamesubfolderprefs.py:240 msgid "Downloads today" msgstr "Latauksia tänään" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:240 +#: rapid/renamesubfolderprefs.py:242 msgid "Session number" msgstr "Istuntonumero" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:242 +#: rapid/renamesubfolderprefs.py:244 msgid "Subfolder number" msgstr "Alikansion numero" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:244 +#: rapid/renamesubfolderprefs.py:246 msgid "Stored number" msgstr "Tallennettu numero" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequenceletters -#: rapid/renamesubfolderprefs.py:246 +#: rapid/renamesubfolderprefs.py:248 msgid "Sequence letter" msgstr "Kirjainsarja" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:248 +#: rapid/renamesubfolderprefs.py:250 msgid "All digits" msgstr "Kaikki numerot" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:250 +#: rapid/renamesubfolderprefs.py:252 msgid "Last digit" msgstr "Viimeinen numero" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:252 +#: rapid/renamesubfolderprefs.py:254 msgid "Last 2 digits" msgstr "Kaksi viimeistä numeroa" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:254 +#: rapid/renamesubfolderprefs.py:256 msgid "Last 3 digits" msgstr "Kolme viimeistä numeroa" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:256 +#: rapid/renamesubfolderprefs.py:258 msgid "Last 4 digits" msgstr "Neljä viimeistä numeroa" #. Translators: please not the capitalization of this text, and keep it the same if your language features capitalization -#: rapid/renamesubfolderprefs.py:258 +#: rapid/renamesubfolderprefs.py:260 msgid "Original Case" msgstr "Alkuperäinen kirjoitusasu" #. Translators: please not the capitalization of this text, and keep it the same if your language features capitalization -#: rapid/renamesubfolderprefs.py:260 +#: rapid/renamesubfolderprefs.py:262 msgid "UPPERCASE" msgstr "ISOT KIRJAIMET" #. Translators: please not the capitalization of this text, and keep it the same if your language features capitalization -#: rapid/renamesubfolderprefs.py:262 +#: rapid/renamesubfolderprefs.py:264 msgid "lowercase" msgstr "pienet kirjaimet" -#: rapid/renamesubfolderprefs.py:263 +#: rapid/renamesubfolderprefs.py:265 msgid "One digit" msgstr "Yksi numero" -#: rapid/renamesubfolderprefs.py:264 +#: rapid/renamesubfolderprefs.py:266 msgid "Two digits" msgstr "Kaksi numeroa" -#: rapid/renamesubfolderprefs.py:265 +#: rapid/renamesubfolderprefs.py:267 msgid "Three digits" msgstr "Kolme numeroa" -#: rapid/renamesubfolderprefs.py:266 +#: rapid/renamesubfolderprefs.py:268 msgid "Four digits" msgstr "Neljä numeroa" -#: rapid/renamesubfolderprefs.py:267 +#: rapid/renamesubfolderprefs.py:269 msgid "Five digits" msgstr "Viisi numeroa" -#: rapid/renamesubfolderprefs.py:268 +#: rapid/renamesubfolderprefs.py:270 msgid "Six digits" msgstr "Kuusi numeroa" -#: rapid/renamesubfolderprefs.py:269 +#: rapid/renamesubfolderprefs.py:271 msgid "Seven digits" msgstr "Seitsemän numeroa" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:271 +#: rapid/renamesubfolderprefs.py:273 msgid "Subseconds" msgstr "sekunnin osat" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:273 +#: rapid/renamesubfolderprefs.py:275 msgid "YYYYMMDD" msgstr "VVVVKKPP" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:275 +#: rapid/renamesubfolderprefs.py:277 msgid "YYYY-MM-DD" msgstr "VVVV-KK-PP" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:277 +#: rapid/renamesubfolderprefs.py:279 msgid "YYMMDD" msgstr "VVKKPP" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:279 +#: rapid/renamesubfolderprefs.py:281 msgid "YY-MM-DD" msgstr "VV-KK-PP" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:281 +#: rapid/renamesubfolderprefs.py:283 msgid "MMDDYYYY" msgstr "KKPPVVVV" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:283 +#: rapid/renamesubfolderprefs.py:285 msgid "MMDDYY" msgstr "KKPPVV" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:285 +#: rapid/renamesubfolderprefs.py:287 msgid "MMDD" msgstr "KKPP" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:287 +#: rapid/renamesubfolderprefs.py:289 msgid "DDMMYYYY" msgstr "PPKKVVVV" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:289 +#: rapid/renamesubfolderprefs.py:291 msgid "DDMMYY" msgstr "PPKKVV" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:291 +#: rapid/renamesubfolderprefs.py:293 msgid "YYYY" msgstr "VVVV" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:293 +#: rapid/renamesubfolderprefs.py:295 msgid "YY" msgstr "VV" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:295 +#: rapid/renamesubfolderprefs.py:297 msgid "MM" msgstr "KK" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:297 +#: rapid/renamesubfolderprefs.py:299 msgid "DD" msgstr "PP" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:299 +#: rapid/renamesubfolderprefs.py:301 msgid "HHMMSS" msgstr "hhmmss" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:301 +#: rapid/renamesubfolderprefs.py:303 msgid "HHMM" msgstr "hhmm" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:303 +#: rapid/renamesubfolderprefs.py:305 msgid "HH-MM-SS" msgstr "TT-MM-SS" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:305 +#: rapid/renamesubfolderprefs.py:307 msgid "HH-MM" msgstr "TT-MM" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:307 +#: rapid/renamesubfolderprefs.py:309 msgid "HH" msgstr "TT" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:309 +#: rapid/renamesubfolderprefs.py:311 msgid "MM (minutes)" msgstr "MM" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:311 +#: rapid/renamesubfolderprefs.py:313 msgid "SS" msgstr "SS" -#: rapid/renamesubfolderprefs.py:794 +#: rapid/renamesubfolderprefs.py:796 #, python-format msgid "" "Preference key '%(key)s' is invalid.\n" @@ -1415,65 +1448,26 @@ msgstr "" "Asetus '%(key)s' on virheellinen.\n" "Tulisi olla yksi näistä %(value)s" -#: rapid/renamesubfolderprefs.py:801 +#: rapid/renamesubfolderprefs.py:803 #, python-format msgid "Preference value '%(value)s' is invalid" msgstr "Asetuksen arvo '%(value)s' on virheellinen" -#: rapid/renamesubfolderprefs.py:805 +#: rapid/renamesubfolderprefs.py:807 msgid "These preferences are not well formed:" msgstr "Nämä asetukset eivät ole oikeassa muodossa:" -#: rapid/renamesubfolderprefs.py:934 -msgid "Subsecond metadata not present in photo" -msgstr "Metatiedot eivät sisällä sekunnin osia kuvassa." - -#: rapid/renamesubfolderprefs.py:941 -#, python-format -msgid "%s metadata is not present" -msgstr "%s metatietoa ei ole" - -#: rapid/renamesubfolderprefs.py:960 rapid/renamesubfolderprefs.py:968 -#: rapid/renamesubfolderprefs.py:977 -#, python-format -msgid "Error in date time component. Value %s appears invalid" -msgstr "Virhe aikamäärityksessä. Arvo %s näyttää virheelliseltä" - -#: rapid/renamesubfolderprefs.py:1004 -msgid "extension was specified but filename does not have an extension" -msgstr "pääte määritetty, mutta tiedostonimessä ei ole päätettä" - -#: rapid/renamesubfolderprefs.py:1008 -msgid "image or video number was specified but filename has no number" -msgstr "" -"kuvan tai videon numero määritetty, mutta tiedostonimessä ei ole numeroa" - -#: rapid/renamesubfolderprefs.py:1081 -#, python-format -msgid "%s metadata is not present in photo" -msgstr "%s metatietoa ei ole kuvassa" - -#: rapid/renamesubfolderprefs.py:1194 -#, python-format -msgid "error generating name with component %s" -msgstr "virhe luotaessa nimeä osalla %s" - -#: rapid/renamesubfolderprefs.py:1450 -#, python-format -msgid "%s metadata is not present in video" -msgstr "%s metatietoa ei ole videossa" - -#: rapid/renamesubfolderprefs.py:1546 +#: rapid/renamesubfolderprefs.py:1517 #, python-format msgid "Subfolder preferences should not start with a %s" msgstr "Alikansioiiden asetusten ei tulisi alkaa %s" -#: rapid/renamesubfolderprefs.py:1548 +#: rapid/renamesubfolderprefs.py:1519 #, python-format msgid "Subfolder preferences should not end with a %s" msgstr "Alikansioiden asetusten ei tulisi loppua %s" -#: rapid/renamesubfolderprefs.py:1552 +#: rapid/renamesubfolderprefs.py:1523 #, python-format msgid "Subfolder preferences should not contain two %s one after the other" msgstr "Alikansioiden asetusten ei tulisi sisältää kahta vierekkäistä %s" @@ -1523,122 +1517,118 @@ msgid "Job Codes" msgstr "Työkoodit" #: rapid/glade3/rapid.glade.h:12 -msgid "Missing Backup Devices" -msgstr "Puuttuvat varmusskopiolaitteet" - -#: rapid/glade3/rapid.glade.h:13 msgid "Photo Rename" msgstr "Kuvan Uudelleennimeäminen" -#: rapid/glade3/rapid.glade.h:14 +#: rapid/glade3/rapid.glade.h:13 msgid "Photo and Video Name Conflicts" msgstr "Kuva- ja videonimien ristiriidat" -#: rapid/glade3/rapid.glade.h:15 +#: rapid/glade3/rapid.glade.h:14 msgid "Program Automation" msgstr "Ohjelman automatiikka" -#: rapid/glade3/rapid.glade.h:16 +#: rapid/glade3/rapid.glade.h:15 msgid "Sequence Numbers" msgstr "Numeroinnit" -#: rapid/glade3/rapid.glade.h:17 +#: rapid/glade3/rapid.glade.h:16 msgid "/media/externaldrive/Photos" msgstr "/media/ulkoinenlevy/Kuvat" -#: rapid/glade3/rapid.glade.h:18 +#: rapid/glade3/rapid.glade.h:17 msgid "Example: /home/user/Pictures" msgstr "Esimerkki: /home/user/Kuvat" -#: rapid/glade3/rapid.glade.h:19 +#: rapid/glade3/rapid.glade.h:18 msgid "Example:" msgstr "Esimerkki" -#: rapid/glade3/rapid.glade.h:20 +#: rapid/glade3/rapid.glade.h:19 msgid "New:" msgstr "Uusi:" -#: rapid/glade3/rapid.glade.h:21 +#: rapid/glade3/rapid.glade.h:20 msgid "Original:" msgstr "Alkuperäinen:" -#: rapid/glade3/rapid.glade.h:22 +#: rapid/glade3/rapid.glade.h:21 msgid "Automation" msgstr "Automatisointi" -#: rapid/glade3/rapid.glade.h:23 +#: rapid/glade3/rapid.glade.h:22 msgid "Backup\t" msgstr "Varmuuskopio\t" -#: rapid/glade3/rapid.glade.h:24 +#: rapid/glade3/rapid.glade.h:23 msgid "Devices" msgstr "Laitteet" -#: rapid/glade3/rapid.glade.h:25 +#: rapid/glade3/rapid.glade.h:24 msgid "Error Handling" msgstr "Virheenkäsittely" -#: rapid/glade3/rapid.glade.h:26 +#: rapid/glade3/rapid.glade.h:25 msgid "Job Codes" msgstr "Työkoodit" -#: rapid/glade3/rapid.glade.h:27 +#: rapid/glade3/rapid.glade.h:26 msgid "Photo Download Folders" msgstr "Kuvien latauskansiot" -#: rapid/glade3/rapid.glade.h:28 +#: rapid/glade3/rapid.glade.h:27 msgid "Photo Rename\t" msgstr "" "Kuvan uudelleenimeäminen\t" -#: rapid/glade3/rapid.glade.h:29 +#: rapid/glade3/rapid.glade.h:28 msgid "Rename Options" msgstr "" "Uudelleennimeämis valinnat" -#: rapid/glade3/rapid.glade.h:30 +#: rapid/glade3/rapid.glade.h:29 msgid "Video Download Folders" msgstr "" "Videoiden latauskansiot" -#: rapid/glade3/rapid.glade.h:31 +#: rapid/glade3/rapid.glade.h:30 msgid "Video Rename\t" msgstr "" "Videon uudelleenimeäminen\t" -#: rapid/glade3/rapid.glade.h:32 +#: rapid/glade3/rapid.glade.h:31 msgid "Add unique identifier" msgstr "Lisää yksilöllinen tunniste" -#: rapid/glade3/rapid.glade.h:33 +#: rapid/glade3/rapid.glade.h:32 msgid "Automatically detect Portable Storage Devices" msgstr "Tunnista automaattisesti ulkoiset tallennuslaitteet" -#: rapid/glade3/rapid.glade.h:34 +#: rapid/glade3/rapid.glade.h:33 msgid "Automatically detect backup devices" msgstr "Tunnista automaattisesti varmuuskopiolaitteet" -#: rapid/glade3/rapid.glade.h:35 +#: rapid/glade3/rapid.glade.h:34 msgid "Automatically detect devices" msgstr "Tunnista laitteet automaattisesti" -#: rapid/glade3/rapid.glade.h:36 +#: rapid/glade3/rapid.glade.h:35 msgid "Automation" msgstr "Automatisointi" -#: rapid/glade3/rapid.glade.h:37 +#: rapid/glade3/rapid.glade.h:36 msgid "Backup" msgstr "Varmuuskopio" -#: rapid/glade3/rapid.glade.h:38 +#: rapid/glade3/rapid.glade.h:37 msgid "Backup location:" msgstr "Varmuuskopioiden sijainti:" -#: rapid/glade3/rapid.glade.h:39 +#: rapid/glade3/rapid.glade.h:38 msgid "Backup photos and videos when downloading" msgstr "Barmuuskopioi kuvat ja videot ladattaessa" -#: rapid/glade3/rapid.glade.h:40 +#: rapid/glade3/rapid.glade.h:39 msgid "" "Choose the download folder. Subfolders for the downloaded photos will be " "automatically created in this folder using the structure specified below." @@ -1646,7 +1636,7 @@ msgstr "" "Valitse latauskansio. Alikansiot ladatuille kuville tehdään automaattisesti " "tähän kansioon käyttäen alla määriteltyä rakennetta käyttäen." -#: rapid/glade3/rapid.glade.h:41 +#: rapid/glade3/rapid.glade.h:40 msgid "" "Choose the download folder. Subfolders for the downloaded videos will be " "automatically created in this folder using the structure specified below." @@ -1654,30 +1644,23 @@ msgstr "" "Valitse latauskansio. Alikansiot ladattuja videoita varten luodaan tähän " "hakemistoon automaattisesti, käyttäen alla määritettyä rakennetta." -#: rapid/glade3/rapid.glade.h:42 -msgid "" -"Choose whether to skip downloading the file, or to add a unique indentifier." -msgstr "" -"Valitse ohitetaanko tiedoston lataus vai lisätäänkö siihen yksilöllinen " -"tunniste." - -#: rapid/glade3/rapid.glade.h:43 +#: rapid/glade3/rapid.glade.h:41 msgid "Copyright Damon Lynch 2007-10" msgstr "Copyright Damon Lynch 2007-10" -#: rapid/glade3/rapid.glade.h:44 +#: rapid/glade3/rapid.glade.h:42 msgid "Day start:" msgstr "Päivän alku:" -#: rapid/glade3/rapid.glade.h:45 +#: rapid/glade3/rapid.glade.h:43 msgid "Delete photos and videos from device upon download completion" msgstr "Poista kuvat ja videot laitteesta latauksen valmistuttua" -#: rapid/glade3/rapid.glade.h:46 +#: rapid/glade3/rapid.glade.h:44 msgid "Devices" msgstr "Laitteet" -#: rapid/glade3/rapid.glade.h:47 +#: rapid/glade3/rapid.glade.h:45 msgid "" "Devices are from where to download photos and videos, such as cameras, " "memory cards or Portable Storage Devices.\n" @@ -1699,38 +1682,38 @@ msgstr "" "lainkaan, koita asettaa se PTP-tilaan. Jos mahdollista, harkitse " "muistikortinlukijan käyttöä." -#: rapid/glade3/rapid.glade.h:52 +#: rapid/glade3/rapid.glade.h:50 msgid "Download / Pause" msgstr "Lataa / Keskeytä" -#: rapid/glade3/rapid.glade.h:53 +#: rapid/glade3/rapid.glade.h:51 msgid "Download folder:" msgstr "Latauskansio:" -#: rapid/glade3/rapid.glade.h:54 +#: rapid/glade3/rapid.glade.h:52 msgid "Downloads today:" msgstr "Latauksia tänään:" -#: rapid/glade3/rapid.glade.h:55 +#: rapid/glade3/rapid.glade.h:53 msgid "Error Handling" msgstr "Virheenkäsittely" -#: rapid/glade3/rapid.glade.h:56 +#: rapid/glade3/rapid.glade.h:54 msgid "Error Log" msgstr "Virheloki" -#: rapid/glade3/rapid.glade.h:57 +#: rapid/glade3/rapid.glade.h:55 msgid "Exit program if download completes without any warnings or errors" msgstr "" "Poistu ohjelmasta jos lataus valmistuu ilman huomautuksia tai virheitä" -#: rapid/glade3/rapid.glade.h:58 +#: rapid/glade3/rapid.glade.h:56 msgid "If you disable automatic detection, choose the exact backup location." msgstr "" "Jos poistat automaattisen tunnistuksen käytöstä, määritä varmuuskopioiden " "tarkka sijainti." -#: rapid/glade3/rapid.glade.h:59 +#: rapid/glade3/rapid.glade.h:57 msgid "" "If you disable automatic detection, choose the exact location of the images " "and videos." @@ -1738,7 +1721,7 @@ msgstr "" "Jos otat automaattisen tunnistuksen pois päältä, valitse kuvien ja videoiden " "tarkka sijainti." -#: rapid/glade3/rapid.glade.h:60 +#: rapid/glade3/rapid.glade.h:58 msgid "" "If you enable automatic detection of Portable Storage Devices, the entire " "device will be scanned for images. On large devices, this could take some " @@ -1747,47 +1730,51 @@ msgstr "" "Jos kytket päälle automaattisen kannettavan laitteen tunnistuksen, koko " "laite käydään läpi kuvia etsittäessä, tämä voi kestää hetken." -#: rapid/glade3/rapid.glade.h:61 -msgid "Ignore" -msgstr "Ohita" - -#: rapid/glade3/rapid.glade.h:62 +#: rapid/glade3/rapid.glade.h:59 msgid "Import your photos and videos efficiently and reliably" msgstr "Tuo kuvasi ja videosi tehokkaasti ja luotettavasti" -#: rapid/glade3/rapid.glade.h:63 +#: rapid/glade3/rapid.glade.h:60 msgid "Job Codes" msgstr "Työkoodit" -#: rapid/glade3/rapid.glade.h:64 +#: rapid/glade3/rapid.glade.h:61 msgid "Location:" msgstr "Sijainti:" -#: rapid/glade3/rapid.glade.h:65 +#: rapid/glade3/rapid.glade.h:62 msgid "Overwrite" msgstr "Ylikirjoita" -#: rapid/glade3/rapid.glade.h:66 +#: rapid/glade3/rapid.glade.h:63 +msgid "P_review Columns" +msgstr "" + +#: rapid/glade3/rapid.glade.h:64 msgid "Photo Folders" msgstr "Kuvakansiot" -#: rapid/glade3/rapid.glade.h:67 +#: rapid/glade3/rapid.glade.h:65 msgid "Photo Rename" msgstr "Kuvan Uudelleennimeäminen" -#: rapid/glade3/rapid.glade.h:68 +#: rapid/glade3/rapid.glade.h:66 msgid "Photo backup folder name:" msgstr "Kuvien varmuuskopiokansion nimi:" -#: rapid/glade3/rapid.glade.h:69 +#: rapid/glade3/rapid.glade.h:67 msgid "Preferences: Rapid Photo Downloader" msgstr "Asetukset: Nopea Valokuvien Lataaja" -#: rapid/glade3/rapid.glade.h:71 +#: rapid/glade3/rapid.glade.h:68 +msgid "Preview _Folders" +msgstr "" + +#: rapid/glade3/rapid.glade.h:70 msgid "R_emove All" msgstr "P_oista kaikki" -#: rapid/glade3/rapid.glade.h:73 +#: rapid/glade3/rapid.glade.h:72 msgid "" "Rapid Photo Downloader is free software; you can redistribute it and/or " "modify it under the terms of the GNU General Public License as published by " @@ -1817,27 +1804,43 @@ msgstr "" "Rapid Photo Downloader; if not, write to the Free Software Foundation, Inc., " "51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." -#: rapid/glade3/rapid.glade.h:78 +#: rapid/glade3/rapid.glade.h:77 msgid "Rename Options" msgstr "Uudelleennimeämis valinnat" +#: rapid/glade3/rapid.glade.h:78 +msgid "Se_lect None" +msgstr "" + #: rapid/glade3/rapid.glade.h:79 -msgid "Report a warning" -msgstr "Raportoi varoitus" +msgid "Select All Pho_tos" +msgstr "" #: rapid/glade3/rapid.glade.h:80 -msgid "Report an error" -msgstr "Raportoi virhe" +msgid "Select All Vi_deos" +msgstr "" #: rapid/glade3/rapid.glade.h:81 +msgid "Select All Wit_h Job Code" +msgstr "" + +#: rapid/glade3/rapid.glade.h:82 +msgid "Select All Without _Job Code" +msgstr "" + +#: rapid/glade3/rapid.glade.h:83 +msgid "Select _All" +msgstr "" + +#: rapid/glade3/rapid.glade.h:84 msgid "Skip" msgstr "Ohita" -#: rapid/glade3/rapid.glade.h:82 +#: rapid/glade3/rapid.glade.h:85 msgid "Skip download" msgstr "Ohita lataus" -#: rapid/glade3/rapid.glade.h:83 +#: rapid/glade3/rapid.glade.h:86 msgid "" "Sorry, video downloading functionality disabled. To download videos, please " "install the kaa metadata package for python." @@ -1845,7 +1848,7 @@ msgstr "" "Anteeksi, videoiden lataus on otettu pois päältä. Ladataksesi videoita, " "asenna kaa metadata paketti Pythonille." -#: rapid/glade3/rapid.glade.h:84 +#: rapid/glade3/rapid.glade.h:87 msgid "" "Specify the folder in which backups are stored on the device. \n" "\n" @@ -1859,7 +1862,7 @@ msgstr "" "varmuuskopiointiin. Luo jokaiseen laitteeseen mitä haluat käyttää " "varmuuskopiointiin, kansio käyttäen yhtä näistä nimistä." -#: rapid/glade3/rapid.glade.h:87 +#: rapid/glade3/rapid.glade.h:90 msgid "" "Specify the time in 24 hour format at which the Downloads today " "sequence number should be reset." @@ -1867,19 +1870,7 @@ msgstr "" "Valitse aika 24 tunnin muodossa jossa Latauksia tänään numerointi " "tulisi palauttaa." -#: rapid/glade3/rapid.glade.h:88 -msgid "" -"Specify what to do when a photo or video of the same name has already been " -"downloaded or backed up." -msgstr "" -"Määrittele mitä tehdään kun saman niminen kuva tai video on jo ladattu tai " -"varmuuskopioitu." - -#: rapid/glade3/rapid.glade.h:89 -msgid "Specify what to do when there are no backup devices." -msgstr "Valitse mitä tehdään jos varmuuskopiolaitteita ei löydy." - -#: rapid/glade3/rapid.glade.h:90 +#: rapid/glade3/rapid.glade.h:91 msgid "" "Specify whether photo, video and folder names should have any characters " "removed that are not allowed by other operating systems." @@ -1887,43 +1878,49 @@ msgstr "" "Määrittele, pitäisikö kuvien, videoiden ja kansioiden nimistä poistaa " "merkit, jotka eivät ole sallittuja muissa käyttöjärjestelmissä." -#: rapid/glade3/rapid.glade.h:91 +#: rapid/glade3/rapid.glade.h:92 msgid "Start downloading at program startup" msgstr "Aloita lataus kun ohjelma käynnistetään" -#: rapid/glade3/rapid.glade.h:92 +#: rapid/glade3/rapid.glade.h:93 msgid "Start downloading upon device insertion" msgstr "Aloita lataaminen kun laite kiinnitetään" -#: rapid/glade3/rapid.glade.h:93 +#: rapid/glade3/rapid.glade.h:94 msgid "Stored number:" msgstr "Tallennettu numero:" -#: rapid/glade3/rapid.glade.h:94 +#: rapid/glade3/rapid.glade.h:95 msgid "Strip incompatible characters" msgstr "Poista yhteensopimattomat merkit" -#: rapid/glade3/rapid.glade.h:95 +#: rapid/glade3/rapid.glade.h:96 msgid "Synchronize RAW + JPEG sequence numbers" msgstr "Yhtenäistä RAW + JPEG järjestysnumerot" -#: rapid/glade3/rapid.glade.h:96 +#: rapid/glade3/rapid.glade.h:97 msgid "Unmount (\"eject\") device upon download completion" msgstr "Irrota (\"poista\") laite latauksen valmistuttua" -#: rapid/glade3/rapid.glade.h:97 +#: rapid/glade3/rapid.glade.h:98 msgid "Video Folders" msgstr "Videokansiot" -#: rapid/glade3/rapid.glade.h:98 +#: rapid/glade3/rapid.glade.h:99 msgid "Video Rename" msgstr "Videon uudelleenimeäminen" -#: rapid/glade3/rapid.glade.h:99 +#: rapid/glade3/rapid.glade.h:100 msgid "Video backup folder name:" msgstr "Videoiden varmuuskopiokansion nimi:" -#: rapid/glade3/rapid.glade.h:100 +#: rapid/glade3/rapid.glade.h:101 +msgid "" +"When a photo or video of the same name has already been downloaded, choose " +"whether to skip downloading the file, or to add a unique indentifier." +msgstr "" + +#: rapid/glade3/rapid.glade.h:102 msgid "" "When backing up, choose whether to overwrite a file on the backup device " "that has the same name, or skip backing it up." @@ -1931,7 +1928,7 @@ msgstr "" "Kun varmuuskopiodaan, valitse kirjoitetaanko saman nimisten tiedostojen " "päälle vai ohitetaanko tiedoston varmuuskopiointi." -#: rapid/glade3/rapid.glade.h:101 +#: rapid/glade3/rapid.glade.h:103 msgid "" "You can have your photos and videos backed up to multiple locations as they " "are downloaded, e.g. external hard drives." @@ -1939,47 +1936,71 @@ msgstr "" "Voit varmuuskopioida kuvat ja videot useaan sijaintiin ladattaessa, " "esimerkiksi ulkoisiin kiintolevyihin." -#: rapid/glade3/rapid.glade.h:102 +#: rapid/glade3/rapid.glade.h:104 msgid "_Add..." msgstr "_Lisää..." -#: rapid/glade3/rapid.glade.h:103 +#: rapid/glade3/rapid.glade.h:105 msgid "_Clear Completed Downloads" msgstr "_Tyhjennä valmistuneet lataukset" -#: rapid/glade3/rapid.glade.h:104 +#: rapid/glade3/rapid.glade.h:106 +msgid "_Device" +msgstr "" + +#: rapid/glade3/rapid.glade.h:107 msgid "_Error Log" msgstr "Virheloki" -#: rapid/glade3/rapid.glade.h:105 +#: rapid/glade3/rapid.glade.h:108 +msgid "_File" +msgstr "" + +#: rapid/glade3/rapid.glade.h:109 +msgid "_Filename" +msgstr "" + +#: rapid/glade3/rapid.glade.h:110 msgid "_Get Help Online..." msgstr "_Hae ohjeita netistä..." -#: rapid/glade3/rapid.glade.h:106 +#: rapid/glade3/rapid.glade.h:111 msgid "_Help" msgstr "_Ohje" -#: rapid/glade3/rapid.glade.h:107 +#: rapid/glade3/rapid.glade.h:112 msgid "_Make a Donation..." msgstr "_Tee lahjoitus" -#: rapid/glade3/rapid.glade.h:108 -msgid "_Photos" -msgstr "_Valokuvat" +#: rapid/glade3/rapid.glade.h:113 +msgid "_Path" +msgstr "" -#: rapid/glade3/rapid.glade.h:109 +#: rapid/glade3/rapid.glade.h:114 +msgid "_Preview" +msgstr "" + +#: rapid/glade3/rapid.glade.h:115 msgid "_Report a Problem..." msgstr "_Raportoi ongelma..." -#: rapid/glade3/rapid.glade.h:110 -msgid "_Thumbnails" -msgstr "_Näytekuvat" +#: rapid/glade3/rapid.glade.h:116 +msgid "_Select" +msgstr "" -#: rapid/glade3/rapid.glade.h:111 +#: rapid/glade3/rapid.glade.h:117 +msgid "_Size" +msgstr "" + +#: rapid/glade3/rapid.glade.h:118 msgid "_Translate this Application..." msgstr "_Käännä tämä ohjelma..." -#: rapid/glade3/rapid.glade.h:112 +#: rapid/glade3/rapid.glade.h:119 +msgid "_Type" +msgstr "" + +#: rapid/glade3/rapid.glade.h:120 msgid "_View" msgstr "_Näytä" @@ -1996,6 +2017,10 @@ msgstr "_Näytä" #~ msgid "Could not open image" #~ msgstr "Kuvaa ei voitu avata" +#, python-format +#~ msgid "Source: %s" +#~ msgstr "Lähde: %s" + #~ msgid "" #~ "Image filename could not be properly generated. Check to ensure there is " #~ "sufficient image metadata." @@ -2030,6 +2055,10 @@ msgstr "_Näytä" #~ msgid "The image was not copied." #~ msgstr "Kuvaa ei kopioitu." +#, python-format +#~ msgid "Unique identifier '%s' added" +#~ msgstr "Yksilöinti '%s' lisätty" + #, python-format #~ msgid "%s images skipped" #~ msgstr "%s kuvaa ohitettu" @@ -2038,6 +2067,9 @@ msgstr "_Näytä" #~ msgid "%s images downloaded" #~ msgstr "%s kuvaa ladattu" +#~ msgid "Backup device missing" +#~ msgstr "Varmuuskopiolaite puuttuu" + #~ msgid "No backup device was detected." #~ msgstr "Varmuuskopiolaitetta ei löytynyt" @@ -2059,6 +2091,9 @@ msgstr "_Näytä" #~ msgid "Thumbnail cannot be displayed" #~ msgstr "Näytekuvaa ei voida näyttää" +#~ msgid "It may be corrupted" +#~ msgstr "Se voi olla vahingoittunut" + #~ msgid "images skipped" #~ msgstr "kuvia ohitettu" @@ -2078,6 +2113,14 @@ msgstr "_Näytä" #~ "Kohde: %(destination)s\n" #~ "Ongelma: %(problem)s" +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Problem: %(problem)s" +#~ msgstr "" +#~ "Lähde: %(source)s\n" +#~ "Ongelma: %(problem)s" + #, python-format #~ msgid "Device scan complete: no images found on %s" #~ msgstr "Laite etsintä on valmis: kuvia ei löytynyt sijainnista %s" @@ -2097,10 +2140,39 @@ msgstr "_Näytä" #~ "Kuva: %(image)s\n" #~ "Ongelma: %(problem)s" +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Destination: %(destination)s\n" +#~ "Error: %(errno)s %(strerror)s" +#~ msgstr "" +#~ "Lähde: %(source)s\n" +#~ "Kohde: %(destination)s\n" +#~ "Virhe: %(errno)s %(strerror)s" + #, python-format #~ msgid "%(number)s of %(total)s images copied" #~ msgstr "%(number)s kuvaa %(total)s kuvasta kopioitu" +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Destination: %(destination)s\n" +#~ "Error: %(errorno)s %(strerror)s" +#~ msgstr "" +#~ "Lähde: %(source)s\n" +#~ "Kohde: %(destination)s\n" +#~ "Virhe: %(errorno)s %(strerror)s" + +#~ msgid "Download copying error" +#~ msgstr "Kopiointivirhe" + +#~ msgid "_Download " +#~ msgstr "_Lataa " + +#~ msgid "Preferences were changed." +#~ msgstr "Asetuksia muutettiin." + #~ msgid "list image file extensions the program recognizes and exit" #~ msgstr "Listaa kuvatiedostopäätteet jotka ohjelma tunnistaa ja poistu" @@ -2128,12 +2200,19 @@ msgstr "_Näytä" #~ msgid "%s metadata is not present in image" #~ msgstr "%s metatietoa ei löydy tästä kuvasta" +#, python-format +#~ msgid "error generating name with component %s" +#~ msgstr "virhe luotaessa nimeä osalla %s" + #~ msgid "Image Devices" #~ msgstr "Kuva laitteet" #~ msgid "Image Rename" #~ msgstr "Kuvan uudelleennimeäminen" +#~ msgid "Missing Backup Devices" +#~ msgstr "Puuttuvat varmusskopiolaitteet" + #~ msgid "Example: /home/user/photos" #~ msgstr "Esimerkki: /home/käyttäjä/kuvat" @@ -2174,6 +2253,9 @@ msgstr "_Näytä" #~ "Jos poistat automaattisen tunnistuksen käytöstä, määritä tarkka kuvien " #~ "sijainti." +#~ msgid "Ignore" +#~ msgstr "Ohita" + #~ msgid "Image Devices" #~ msgstr "Kuvalaitteet" @@ -2205,12 +2287,21 @@ msgstr "_Näytä" #~ msgid "Import your images efficiently and reliably" #~ msgstr "Tuo kuvasti tehokkaasti ja turvallisesti" +#~ msgid "Report a warning" +#~ msgstr "Raportoi varoitus" + +#~ msgid "Report an error" +#~ msgstr "Raportoi virhe" + #~ msgid "" #~ "Specify what to do when an image of the same name has already been " #~ "downloaded or backed up." #~ msgstr "" #~ "Valitse mitä tehdään kun samanniminen kuva on jo ladattu tai varmuuskopioitu." +#~ msgid "Specify what to do when there are no backup devices." +#~ msgstr "Valitse mitä tehdään jos varmuuskopiolaitteita ei löydy." + #~ msgid "Start downloading upon image device insertion" #~ msgstr "Aloita lataus kun kuvalaite kytketään" @@ -2231,6 +2322,16 @@ msgstr "_Näytä" #~ "Voit varmuuskopioida kuvasi useaan kohteeseen kun kuvia ladataan, esim. " #~ "ulkoisille kovalevyille." +#~ msgid "_Photos" +#~ msgstr "_Valokuvat" + +#~ msgid "_Thumbnails" +#~ msgstr "_Näytekuvat" + +#, python-format +#~ msgid "Error in date time component. Value %s appears invalid" +#~ msgstr "Virhe aikamäärityksessä. Arvo %s näyttää virheelliseltä" + #~ msgid "Image Name Conflicts" #~ msgstr "Kuvannimien konfliktit" @@ -2299,6 +2400,12 @@ msgstr "_Näytä" #~ msgid "Should this device or partition be used to download images from?" #~ msgstr "Tulisiko tätä laitetta tai osiota käyttää kuvien lataamiseen?" +#~ msgid "Enter a new job code, or select a previous one." +#~ msgstr "Anna uusi työkoodi tai valitse aikaisempi." + +#~ msgid "Enter a new job code." +#~ msgstr "Anna uusi työkoodi." + #~ msgid "Delete images from image device upon download completion" #~ msgstr "Poista kuvat kuvalaitteelta kun lataus on valmis" @@ -2306,6 +2413,26 @@ msgstr "_Näytä" #~ msgid "Image device: %s\n" #~ msgstr "Kuvalaite: %s\n" +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Partially generated filename: %(newname)s\n" +#~ "Destination: %(destination)s\n" +#~ "Problem: %(problem)s" +#~ msgstr "" +#~ "Lähde: %(source)s\n" +#~ "Osittain luotu tiedostonimi: %(newname)s\n" +#~ "Kohde: %(destination)s\n" +#~ "Ongelma: %(problem)s" + +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Destination: %(destination)s\n" +#~ msgstr "" +#~ "Lähde: %(source)s\n" +#~ "Kohde: %(destination)s\n" + #, python-format #~ msgid "" #~ "Sorry, this image location does not exist:\n" @@ -2349,3 +2476,137 @@ msgstr "_Näytä" #~ msgstr "" #~ "Valitse tuleeko kuva ja kansionimistä poistaa merkit joita ei tueta toisissa " #~ "käyttöjärjestelmissä." + +#, python-format +#~ msgid "0 of %(number)s %(filetypes)s" +#~ msgstr "%(number)s %(filetypes)s" + +#, python-format +#~ msgid "%(filetype)s filename could not be generated" +#~ msgstr "%(filetype)s tiedostonimeä ei voitu luoda" + +#, python-format +#~ msgid "Could not open %(filetype)s" +#~ msgstr "%(filetype)s avaaminen epäonnistui" + +#~ msgid "" +#~ "Photos detected with the same filenames, but taken at different times:" +#~ msgstr "" +#~ "Kuvia samalla tiedostonimellä löydetty, mutta kuvat on otettu eri aikoina:" + +#, python-format +#~ msgid "The %(filetype)s was not copied." +#~ msgstr "%(filetype)s ei kopioitu" + +#, python-format +#~ msgid "" +#~ "First photo: %(image1)s %(image1_date_time)s:%(image1_subseconds)s\n" +#~ "Second photo: %(image2)s %(image2_date_time)s:%(image2_subseconds)s" +#~ msgstr "" +#~ "Ensimmäinen kuva: %(image1)s %(image1_date_time)s:%(image1_subseconds)s\n" +#~ "Toinen kuva: %(image2)s %(image2_date_time)s:%(image2_subseconds)s" + +#~ msgid "Video skipped" +#~ msgstr "Video ohitettiin" + +#~ msgid "Video already exists" +#~ msgstr "Video on jo olemassa" + +#, python-format +#~ msgid "%(filetype)s has no metadata" +#~ msgstr "%(filetype)s ei sisällä metatietoja" + +#, python-format +#~ msgid "%s metadata is not present" +#~ msgstr "%s metatietoa ei ole" + +#~ msgid "Subsecond metadata not present in photo" +#~ msgstr "Metatiedot eivät sisällä sekunnin osia kuvassa." + +#, python-format +#~ msgid "%s metadata is not present in photo" +#~ msgstr "%s metatietoa ei ole kuvassa" + +#, python-format +#~ msgid "" +#~ "%(filetype)s filename could not be properly generated. Check to ensure there " +#~ "is sufficient metadata." +#~ msgstr "" +#~ "%(filetype)s tiedostonimeä ei voitu luoda oikein. Tarkista metatietojen " +#~ "riittävyys." + +#, python-format +#~ msgid "%s metadata is not present in video" +#~ msgstr "%s metatietoa ei ole videossa" + +#, python-format +#~ msgid "%(noFiles)s %(filetypes)s skipped" +#~ msgstr "%(noFiles)s %(filetypes)s ohitettu" + +#, python-format +#~ msgid "" +#~ "Subfolder: %(subfolder)s\n" +#~ "File: %(file)s\n" +#~ "Problem: %(problem)s" +#~ msgstr "" +#~ "Alikansio: %(subfolder)s\n" +#~ "Tiedosto: %(file)s\n" +#~ "Ongelma: %(problem)s" + +#~ msgid "Photo thumbnail could not be extracted" +#~ msgstr "Kuvan esikatselukuvaa ei saatu" + +#~ msgid "Photo already exists" +#~ msgstr "Kuva on jo olemassa" + +#~ msgid "Photo skipped" +#~ msgstr "Kuva ohitettu" + +#~ msgid "No backup device was automatically detected" +#~ msgstr "Varmuuskopiolaitetta ei löydetty automaattisesti" + +#~ msgid "videos skipped" +#~ msgstr "videota ohitettu" + +#~ msgid "videos downloaded" +#~ msgstr "videota ladattu" + +#~ msgid "photos skipped" +#~ msgstr "kuvaa ohitettu" + +#~ msgid "photos downloaded" +#~ msgstr "kuvaa ladattu" + +#, python-format +#~ msgid "" +#~ "Metadata is essential for generating subfolder and/or file names.\n" +#~ "Source: %s" +#~ msgstr "" +#~ "Metatiedot ovat välttämättömiä alikansioiden ja/tai tiedostonimien " +#~ "luomiseksi.\n" +#~ "Lähde: %s" + +#~ msgid "" +#~ "Subfolder name could not be properly generated. Check to ensure there is " +#~ "sufficient metadata." +#~ msgstr "Alikansion nimeä ei voitu luoda. Tarkista metatietojen riittävyys." + +#~ msgid "extension was specified but filename does not have an extension" +#~ msgstr "pääte määritetty, mutta tiedostonimessä ei ole päätettä" + +#~ msgid "image or video number was specified but filename has no number" +#~ msgstr "" +#~ "kuvan tai videon numero määritetty, mutta tiedostonimessä ei ole numeroa" + +#~ msgid "" +#~ "Choose whether to skip downloading the file, or to add a unique indentifier." +#~ msgstr "" +#~ "Valitse ohitetaanko tiedoston lataus vai lisätäänkö siihen yksilöllinen " +#~ "tunniste." + +#~ msgid "" +#~ "Specify what to do when a photo or video of the same name has already been " +#~ "downloaded or backed up." +#~ msgstr "" +#~ "Määrittele mitä tehdään kun saman niminen kuva tai video on jo ladattu tai " +#~ "varmuuskopioitu." diff --git a/po/fr.po b/po/fr.po index 96dc9eb..f827f71 100644 --- a/po/fr.po +++ b/po/fr.po @@ -7,265 +7,311 @@ msgid "" msgstr "" "Project-Id-Version: rapid\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2010-05-27 22:33-0500\n" -"PO-Revision-Date: 2010-05-29 19:28+0000\n" -"Last-Translator: Damon Lynch \n" +"POT-Creation-Date: 2010-07-02 22:51-0500\n" +"PO-Revision-Date: 2010-07-09 11:50+0000\n" +"Last-Translator: loquehumaine \n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-05-30 14:28+0000\n" +"X-Launchpad-Export-Date: 2010-07-09 17:32+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Translators: if neccessary, for guidance in how to translate this program, you may see http://damonlynch.net/translate.html -#: rapid/rapid.py:104 rapid/rapid.py:4447 rapid/glade3/rapid.glade.h:72 +#: rapid/rapid.py:122 rapid/rapid.py:6181 rapid/glade3/rapid.glade.h:71 msgid "Rapid Photo Downloader" msgstr "Rapid Photo Downloader" -#: rapid/rapid.py:394 +#: rapid/rapid.py:449 msgid "New York" msgstr "New York" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Manila" msgstr "Manille" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Prague" msgstr "Prague" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Helsinki" msgstr "Helsinki" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Wellington" msgstr "Wellington" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Tehran" msgstr "Téhéran" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Kampala" msgstr "Kampala" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Paris" msgstr "Paris" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Berlin" msgstr "Berlin" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Sydney" msgstr "Sydney" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Budapest" msgstr "Budapest" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Rome" msgstr "Rome" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Moscow" msgstr "Moscou" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Delhi" msgstr "Delhi" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Warsaw" msgstr "Varsovie" -#: rapid/rapid.py:398 +#: rapid/rapid.py:453 msgid "Jakarta" msgstr "Jakarta" -#: rapid/rapid.py:398 +#: rapid/rapid.py:453 msgid "Madrid" msgstr "Madrid" -#: rapid/rapid.py:398 +#: rapid/rapid.py:453 msgid "Stockholm" msgstr "Stockholm" -#: rapid/rapid.py:425 +#: rapid/rapid.py:486 msgid "Invalid Downloads Today value.\n" msgstr "Valeur de 'Transferts journaliers' invalide.\n" -#: rapid/rapid.py:426 +#: rapid/rapid.py:487 msgid "Resetting value to zero.\n" msgstr "Remise à zéro de la valeur.\n" -#: rapid/rapid.py:465 +#: rapid/rapid.py:526 msgid "'Start of day' preference value is corrupted.\n" msgstr "La valeur de la préférence « Début de la journée » est corrompue.\n" -#: rapid/rapid.py:466 +#: rapid/rapid.py:527 msgid "Resetting to midnight.\n" msgstr "Réinialisation à minuit.\n" -#: rapid/rapid.py:492 +#: rapid/rapid.py:553 msgid "Error in Photo Rename preferences" msgstr "Erreur dans les préférences de renommage des photos" -#: rapid/rapid.py:523 rapid/rapid.py:1567 +#: rapid/rapid.py:584 rapid/rapid.py:1689 msgid "Sorry,these preferences contain an error:\n" msgstr "Désolé, il y a une erreur dans cette préférence :\n" -#: rapid/rapid.py:534 +#: rapid/rapid.py:595 msgid "Resetting to default values." msgstr "Réinitialisation aux valeurs par défaut" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:609 rapid/renamesubfolderprefs.py:196 +#: rapid/rapid.py:670 rapid/renamesubfolderprefs.py:198 msgid "Job code" msgstr "Étiquette de transfert" -#: rapid/rapid.py:677 +#: rapid/rapid.py:738 msgid "Error in Video Rename preferences" msgstr "Erreur dans les préférences de renommage des vidéos" -#: rapid/rapid.py:695 +#: rapid/rapid.py:756 msgid "Error in Photo Download Subfolders preferences" -msgstr "" +msgstr "Erreur dans les préférences des sous-dossiers de transfert de photos" -#: rapid/rapid.py:712 +#: rapid/rapid.py:773 msgid "Error in Video Download Subfolders preferences" -msgstr "" +msgstr "Erreur dans les préférences des sous-dossiers de transfert de vidéos" -#: rapid/rapid.py:745 rapid/rapid.py:1492 +#: rapid/rapid.py:806 rapid/rapid.py:1539 msgid "photos and videos" -msgstr "" +msgstr "photos et vidéos" -#: rapid/rapid.py:747 rapid/rapid.py:1502 rapid/rapid.py:1782 +#: rapid/rapid.py:808 rapid/rapid.py:1549 rapid/rapid.py:1658 msgid "photos" msgstr "photos" -#: rapid/rapid.py:880 +#: rapid/rapid.py:943 msgid "Select a folder to download photos to" msgstr "Sélectionnez le dossier de destination" -#: rapid/rapid.py:898 +#: rapid/rapid.py:961 msgid "Select a folder to download videos to" msgstr "Sélectionnez un dossier vers lequel transférer vos vidéos" -#: rapid/rapid.py:980 +#: rapid/rapid.py:1043 #, python-format msgid "Select a folder containing %(file_types)s" msgstr "Sélectionnez un dossier contenant %(file_types)s" -#: rapid/rapid.py:1002 +#: rapid/rapid.py:1065 #, python-format msgid "Select a folder in which to backup %(file_types)s" msgstr "Séléctionnez un dossier dans lequel sauvegarder %(file_types)s" #. Translators: please do not modify or leave out html formatting tags like and . These are used to format the text the users sees -#: rapid/rapid.py:1095 +#: rapid/rapid.py:1146 msgid "" "Warning: There is insufficient metadata to fully generate the " "name. Please use other renaming options." msgstr "" +"Attention : Il n'y a pas assez de métadonnées pour générer " +"correctement le nom. Utilisez d'autres options de renommage." -#: rapid/rapid.py:1129 +#: rapid/rapid.py:1182 msgid "" "Warning: There is insufficient metadata to fully generate " "subfolders. Please use other subfolder naming options." msgstr "" +"Attention : Il n'y a pas suffisamment de métadonnées pour générer " +"les sous-dossiers correctement. Veuillez utiliser d'autres options pour " +"nommer les sous-dossiers." #. Translators: you should not modify or leave out the %s. This is a code used by the programming language python to insert a value that thes user will see -#: rapid/rapid.py:1133 +#: rapid/rapid.py:1186 #, python-format msgid "Example: %s" msgstr "Exemple : %s" -#: rapid/rapid.py:1159 +#: rapid/rapid.py:1212 msgid "" "Downloads today value not updated, as a download is currently occurring" msgstr "" "Un transfert est en cours : la valeur de 'Transferts journaliers' ne sera " "pas mise à jour." -#: rapid/rapid.py:1175 +#: rapid/rapid.py:1228 msgid "Stored number value not updated, as a download is currently occurring" msgstr "" "Un transfert est en cours : la valeur du nombre stocké ne sera pas mise à " "jour." -#: rapid/rapid.py:1205 +#: rapid/rapid.py:1258 #, python-format msgid "" "The %(filetype)s subfolder preferences had some unnecessary values removed." msgstr "" +"Les préférences de dossier %(filetype)s ont des valeurs inutiles qui ont été " +"enlevées." #. Preferences list is now empty -#: rapid/rapid.py:1210 +#: rapid/rapid.py:1263 #, python-format msgid "" "The %(filetype)s subfolder preferences entered are invalid and cannot be " "used.\n" "They will be reset to their default values." msgstr "" +"Les préférences de dossier %(filetype)s entrées sont invalides et ne peuvent " +"être utilisées.\n" +"Elles vont être réinitialiseées à leurs valeurs par défaut." #. check subfolder preferences for bad values -#: rapid/rapid.py:1224 rapid/rapid.py:1504 rapid/rapid.py:2533 +#: rapid/rapid.py:1277 rapid/rapid.py:1551 msgid "photo" msgstr "photo" -#: rapid/rapid.py:1225 rapid/rapid.py:1499 rapid/rapid.py:2541 +#: rapid/rapid.py:1278 rapid/rapid.py:1546 msgid "video" msgstr "vidéo" #. Translators: this value is used as an example device when automatic backup device detection is enabled. You should translate this. -#: rapid/rapid.py:1468 +#: rapid/rapid.py:1515 msgid "externaldrive1" msgstr "disqueexterne1" #. Translators: this value is used as an example device when automatic backup device detection is enabled. You should translate this. -#: rapid/rapid.py:1470 +#: rapid/rapid.py:1517 msgid "externaldrive2" msgstr "disqueexterne2" -#: rapid/rapid.py:1494 rapid/rapid.py:1780 +#: rapid/rapid.py:1541 rapid/rapid.py:1656 msgid "photos or videos" msgstr "photos ou vidéos" -#: rapid/rapid.py:1497 +#: rapid/rapid.py:1544 msgid "videos" msgstr "vidéos" +#: rapid/rapid.py:1556 +#, python-format +msgid "" +"%(date)s\n" +"%(time)s" +msgstr "" +"%(date)s\n" +"%(time)s" + +#: rapid/rapid.py:1558 +#, python-format +msgid "%(date)s %(time)s" +msgstr "%(date)s %(time)s" + +#: rapid/rapid.py:1561 +#, python-format +msgid "%(hour)s:%(minute)s:%(second)s:%(subsecond)s" +msgstr "%(hour)s:%(minute)s:%(second)s:%(subsecond)s" + +#: rapid/rapid.py:1568 +#, python-format +msgid "%(date)s %(hour)s:%(minute)s:%(second)s:%(subsecond)s" +msgstr "%(date)s %(hour)s:%(minute)s:%(second)s:%(subsecond)s" + +#: rapid/rapid.py:1596 rapid/rapid.py:2242 +msgid "subfolder and filename" +msgstr "Sous-dossier et nom de fichier" + +#: rapid/rapid.py:1598 rapid/rapid.py:2244 +msgid "filename" +msgstr "nom de fichier" + +#: rapid/rapid.py:1600 rapid/rapid.py:2246 +msgid "subfolder" +msgstr "sous-dossier" + #. This refers to when a device like a hard drive is having its contents scanned, #. looking for photos or videos. It is visible initially in the progress bar for each device -#. (which normally holds "x of y photos"). +#. (which normally holds "x photos and videos"). #. It maybe displayed only briefly if the contents of the device being scanned is small. -#: rapid/rapid.py:1556 +#: rapid/rapid.py:1672 msgid "scanning..." msgstr "Détection en cours..." -#: rapid/rapid.py:1663 +#: rapid/rapid.py:1783 msgid "The following download path could not be created:\n" -msgstr "" +msgstr "Le chemin de transfert suivant n'a pas pu être créé :\n" -#: rapid/rapid.py:1664 +#: rapid/rapid.py:1784 #, python-format msgid "%(path)s: " -msgstr "" +msgstr "%(path)s: " -#: rapid/rapid.py:1665 rapid/rapid.py:1666 rapid/rapid.py:1681 -#: rapid/rapid.py:1682 rapid/rapid.py:2364 rapid/rapid.py:2367 +#: rapid/rapid.py:1785 rapid/rapid.py:1786 rapid/rapid.py:1801 +#: rapid/rapid.py:1802 rapid/rapid.py:2063 rapid/rapid.py:2066 msgid "Download cannot proceed" msgstr "Impossible de procéder au transfert" -#: rapid/rapid.py:1679 rapid/rapid.py:3381 +#: rapid/rapid.py:1799 rapid/rapid.py:4846 msgid "There is an error in the program preferences." msgstr "Il y a une erreur dans les préférences concernant le programme." -#: rapid/rapid.py:1680 +#: rapid/rapid.py:1800 msgid "" "\n" "Please check preferences, restart the program, and try again." @@ -278,10 +324,10 @@ msgstr "" #. It refers to the actual number of photos that can be copied. For example, the user might see the following: #. '0 of 512 photos' or '0 of 10 videos' or '0 of 202 photos and videos'. #. This particular text is displayed to the user before the download has started. -#: rapid/rapid.py:1791 +#: rapid/rapid.py:1974 #, python-format -msgid "0 of %(number)s %(filetypes)s" -msgstr "" +msgid "%(number)s %(filetypes)s" +msgstr "%(number)s %(filetypes)s" #. Translators: as you have already seen, the text can contain values that should not be modified or left out by you, for example %s. #. This text is another example of that, but it is is a little more complex. Here there are two values which will be displayed @@ -289,452 +335,442 @@ msgstr "" #. %(number)s should be left exactly as is: 'number' should not be translated. The same applies to %(device)s: 'device' should #. not be translated. Generally speaking, if translating the sentence requires it, you can move items like '%(xyz)s' around #. in a sentence, but you should never modify them or leave them out. -#: rapid/rapid.py:1803 +#: rapid/rapid.py:1985 #, python-format msgid "Device scan complete: found %(number)s %(filetypes)s on %(device)s" msgstr "" +"Le périphérique a été entièrement scanné : %(number)s %(filetypes)s ont été " +"trouvés sur %(device)s" -#: rapid/rapid.py:1810 +#: rapid/rapid.py:1992 #, python-format msgid "Device scan complete: no %(filetypes)s found on %(device)s" msgstr "" +"Le périphérique a été entièrement scanné : aucun %(filetypes)s n'a été " +"trouvé sur %(device)s" -#: rapid/rapid.py:1844 -#, python-format -msgid "%(filetype)s filename could not be generated" -msgstr "" +#. This message informs the user that the device (e.g. camera, hard drive or memory card) was automatically unmounted and they can now remove it +#: rapid/rapid.py:2013 +msgid "The device can now be safely removed" +msgstr "Le volume peut maintenant être retiré en toute sécurité" -#. '%(source)s' and '%(problem)s' are two more examples of text that should not be modified or left out -#: rapid/rapid.py:1846 +#: rapid/rapid.py:2019 #, python-format -msgid "" -"Source: %(source)s\n" -"Problem: %(problem)s" -msgstr "" -"Source : %(source)s\n" -"Problème : %(problem)s" +msgid "%(noFiles)s %(filetypes)s downloaded" +msgstr "%(noFiles)s %(filetypes)s transférés" -#: rapid/rapid.py:1850 +#: rapid/rapid.py:2022 #, python-format -msgid "" -"%(filetype)s filename could not be properly generated. Check to ensure there " -"is sufficient metadata." -msgstr "" +msgid "%(noFiles)s %(filetypes)s failed to download" +msgstr "erreur lors du transfert de %(noFiles)s %(filetypes)s" -#: rapid/rapid.py:1851 -#, python-format -msgid "" -"Source: %(source)s\n" -"Partially generated filename: %(newname)s\n" -"Destination: %(destination)s\n" -"Problem: %(problem)s" -msgstr "" -"Source : %(source)s\n" -"Nom de fichier patiellement généré : %(newname)s\n" -"Destination : %(destination)s\n" -"Problème : %(problem)s" +#: rapid/rapid.py:2028 rapid/rapid.py:5627 +msgid "warnings" +msgstr "avertissements" -#: rapid/rapid.py:1859 rapid/rapid.py:1864 rapid/rapid.py:1883 -#: rapid/rapid.py:2207 -#, python-format -msgid "" -"Source: %(source)s\n" -"Destination: %(destination)s" -msgstr "" -"Source : %(source)s\n" -"Destination : %(destination)s" +#: rapid/rapid.py:2030 rapid/rapid.py:5631 +msgid "errors" +msgstr "erreurs" -#: rapid/rapid.py:1861 +#: rapid/rapid.py:2057 #, python-format -msgid "Unique identifier '%s' added" -msgstr "Identifant unique '%s' ajouté" +msgid "Source: %s\n" +msgstr "Source : %s\n" -#: rapid/rapid.py:1869 rapid/rapid.py:2270 +#: rapid/rapid.py:2059 #, python-format -msgid "Source: %(source)s" -msgstr "Source : %(source)s" - -#: rapid/rapid.py:1877 rapid/rapid.py:1882 -msgid "Download copying error" -msgstr "Erreur de copie lors du transfert" +msgid "Device: %s\n" +msgstr "Périphérique: %s\n" -#: rapid/rapid.py:1878 +#: rapid/rapid.py:2060 #, python-format -msgid "" -"Source: %(source)s\n" -"Destination: %(destination)s\n" -"Error: %(errorno)s %(strerror)s" -msgstr "" -"Source : %(source)s\n" -"Destination : %(destination)s\n" -"Erreurr : %(errorno)s %(strerror)s" +msgid "Destination: %s" +msgstr "Destination %s" -#: rapid/rapid.py:1880 rapid/rapid.py:1885 -#, python-format -msgid "The %(filetype)s was not copied." -msgstr "" +#: rapid/rapid.py:2061 rapid/rapid.py:2064 +msgid "Could not create temporary download directory" +msgstr "Le dossier de transfert temporaire n'a pas pu être créé" -#: rapid/rapid.py:1889 -msgid "" -"Photos detected with the same filenames, but taken at different times:" -msgstr "" +#: rapid/rapid.py:2064 +msgid "Error:" +msgstr "Erreur :" -#: rapid/rapid.py:1890 -#, python-format -msgid "" -"First photo: %(image1)s %(image1_date_time)s:%(image1_subseconds)s\n" -"Second photo: %(image2)s %(image2_date_time)s:%(image2_subseconds)s" -msgstr "" +#: rapid/rapid.py:2088 +msgid "Backup path does not exist" +msgstr "Le chemin de sauvegarde n'existe pas" -#: rapid/rapid.py:1914 rapid/rapid.py:1927 +#: rapid/rapid.py:2089 #, python-format -msgid "Could not open %(filetype)s" -msgstr "" +msgid "The path %s could not be created" +msgstr "Le chemin %s n'a pas pu être créé" -#: rapid/rapid.py:1915 rapid/rapid.py:1928 -#, python-format -msgid "Source: %s" -msgstr "Source : %s" +#: rapid/rapid.py:2090 +msgid "No backups can occur" +msgstr "Aucune sauvegarde possible" -#: rapid/rapid.py:1950 +#: rapid/rapid.py:2117 #, python-format -msgid "%(filetype)s has no metadata" +msgid "" +"Source: %(source)s\n" +"Destination: %(destination)s\n" +"%(problem)s" msgstr "" +"Source: %(source)s\n" +"Destination: %(destination)s\n" +"%(problem)s" -#: rapid/rapid.py:1951 +#: rapid/rapid.py:2146 rapid/rapid.py:2492 rapid/rapid.py:2527 +#: rapid/rapid.py:2555 rapid/rapid.py:2586 rapid/rapid.py:2605 #, python-format msgid "" -"Metadata is essential for generating subfolder and/or file names.\n" -"Source: %s" +"Source: %(source)s\n" +"Destination: %(destination)s" msgstr "" +"Source : %(source)s\n" +"Destination : %(destination)s" -#: rapid/rapid.py:1962 -msgid "" -"Subfolder name could not be properly generated. Check to ensure there is " -"sufficient metadata." +#. hopefully inst will never be None, but just to be safe... +#: rapid/rapid.py:2161 +msgid "Please check your system and try again." +msgstr "Vérifiez votre système et essayez à nouveau" + +#: rapid/rapid.py:2181 +msgid "Photos detected with the same filenames, but taken at different times" msgstr "" +"Des photos portant le même nom mais prises à différents moments ont été " +"détectées" + +#: rapid/rapid.py:2221 +msgid "Photo has already been downloaded" +msgstr "La photo a déjà été téléchargée" -#: rapid/rapid.py:1963 +#: rapid/rapid.py:2222 rapid/rapid.py:2621 #, python-format -msgid "" -"Subfolder: %(subfolder)s\n" -"File: %(file)s\n" -"Problem: %(problem)s" -msgstr "" +msgid "Source: %(source)s" +msgstr "Source : %(source)s" #. A new day, according the user's preferences of what time a day begins, has started -#: rapid/rapid.py:2147 +#: rapid/rapid.py:2420 msgid "New day has started - resetting 'Downloads Today' sequence number" msgstr "" "Un nouveau jour a commencé - remise à zero de la numérotation « Transferts " "journaliers »" -#: rapid/rapid.py:2206 +#: rapid/rapid.py:2491 #, python-format msgid "Backup of %(file_type)s already exists" -msgstr "" +msgstr "Une sauvegarde de %(file_type)s existe déjà" -#: rapid/rapid.py:2210 +#: rapid/rapid.py:2495 #, python-format msgid "Backup %(file_type)s overwritten" -msgstr "" +msgstr "Sauvegarde de %(file_type)s écrasée" -#: rapid/rapid.py:2215 +#: rapid/rapid.py:2499 #, python-format msgid "%(file_type)s not backed up to %(volume)s" -msgstr "" +msgstr "%(file_type)s non sauvé sur %(volume)s" -#: rapid/rapid.py:2217 +#: rapid/rapid.py:2501 #, python-format msgid "%(file_type)s not backed up" -msgstr "" +msgstr "%(file_type)s non sauvé" -#: rapid/rapid.py:2243 rapid/rapid.py:2260 +#: rapid/rapid.py:2524 rapid/rapid.py:2552 rapid/rapid.py:2585 +#: rapid/rapid.py:2604 msgid "Backing up error" msgstr "Erreur lors de la sauvegarde" -#: rapid/rapid.py:2244 +#: rapid/rapid.py:2525 rapid/rapid.py:2553 #, python-format msgid "Destination directory could not be created: %(directory)s\n" msgstr "Le dossier de destination n'a pas pu être créé %(directory)s\n" -#: rapid/rapid.py:2246 +#: rapid/rapid.py:2529 rapid/rapid.py:2588 #, python-format -msgid "" -"Source: %(source)s\n" -"Destination: %(destination)s\n" -msgstr "" -"Source : %(source)s\n" -"Destination : %(destination)s\n" - -#: rapid/rapid.py:2248 -#, python-format -msgid "Error: %(errno)s %(strerror)s" -msgstr "Erreur : %(errno)s %(strerror)s" +msgid "Error: %(inst)s" +msgstr "Erreur : %(inst)s" -#: rapid/rapid.py:2249 rapid/rapid.py:2263 +#: rapid/rapid.py:2530 rapid/rapid.py:2558 rapid/rapid.py:2589 +#: rapid/rapid.py:2608 #, python-format msgid "The %(file_type)s was not backed up." -msgstr "" +msgstr "%(file_type)s n'a pas été sauvé." -#: rapid/rapid.py:2261 +#: rapid/rapid.py:2557 rapid/rapid.py:2607 #, python-format -msgid "" -"Source: %(source)s\n" -"Destination: %(destination)s\n" -"Error: %(errno)s %(strerror)s" -msgstr "" -"Source : %(source)s\n" -"Destination : %(destination)s\n" -"Erreur : %(errno)s %(strerror)s" +msgid "Error: %(errno)s %(strerror)s" +msgstr "Erreur : %(errno)s %(strerror)s" -#: rapid/rapid.py:2269 +#: rapid/rapid.py:2620 #, python-format msgid "%(file_type)s could not be backed up" -msgstr "" +msgstr "%(file_type)s n'a pas pu être sauvé" -#: rapid/rapid.py:2272 +#: rapid/rapid.py:2623 msgid "No suitable backup volume was found" -msgstr "" +msgstr "Aucun volume de sauvegarde aproprié n'a été trouvé" -#: rapid/rapid.py:2274 +#: rapid/rapid.py:2625 msgid "A backup location was not found" msgstr "" -#. This message informs the user that the device (e.g. camera, hard drive or memory card) was automatically unmounted and they can now remove it -#: rapid/rapid.py:2288 -msgid "The device can now be safely removed" -msgstr "Le volume peut maintenant être retiré en toute sécurité" - -#: rapid/rapid.py:2294 -#, python-format -msgid "%(noFiles)s %(filetypes)s downloaded" -msgstr "" - -#: rapid/rapid.py:2297 -#, python-format -msgid "%(noFiles)s %(filetypes)s skipped" -msgstr "" - -#: rapid/rapid.py:2303 rapid/rapid.py:4027 -msgid "warnings" -msgstr "avertissements" - -#: rapid/rapid.py:2305 rapid/rapid.py:4029 -msgid "errors" -msgstr "erreurs" - -#: rapid/rapid.py:2331 rapid/rapid.py:2823 rapid/rapid.py:2838 -msgid "Photo thumbnail could not be extracted" -msgstr "" - -#: rapid/rapid.py:2358 -#, python-format -msgid "Source: %s\n" -msgstr "Source : %s\n" - -#: rapid/rapid.py:2360 -#, python-format -msgid "Device: %s\n" -msgstr "" - -#: rapid/rapid.py:2361 -#, python-format -msgid "Destination: %s" -msgstr "Destination %s" - -#: rapid/rapid.py:2362 rapid/rapid.py:2365 -msgid "Could not create temporary download directory" -msgstr "Le dossier de transfert temporaire n'a pas pu être créé" - -#: rapid/rapid.py:2365 -msgid "Error:" -msgstr "Erreur :" - -#: rapid/rapid.py:2382 +#: rapid/rapid.py:2679 #, python-format msgid "This device has no %(types_searched_for)s to download from." msgstr "" -#: rapid/rapid.py:2417 +#: rapid/rapid.py:2733 #, python-format msgid "Download has started from %s" msgstr "Le transfert a débuté depuis %s" -#: rapid/rapid.py:2434 -msgid "Backup path does not exist" -msgstr "" - -#: rapid/rapid.py:2435 +#: rapid/rapid.py:2736 #, python-format -msgid "The path %s could not be created" -msgstr "" - -#: rapid/rapid.py:2436 rapid/rapid.py:2444 -msgid "No backups can occur" -msgstr "" - -#: rapid/rapid.py:2442 -msgid "Backup device missing" -msgstr "Volume de sauvegarde absent" - -#: rapid/rapid.py:2443 -msgid "No backup device was automatically detected" -msgstr "" - -#: rapid/rapid.py:2534 rapid/rapid.py:3343 rapid/rapid.py:3345 -msgid "Photo" -msgstr "" - -#: rapid/rapid.py:2535 -msgid "Photo skipped" -msgstr "" - -#: rapid/rapid.py:2536 -msgid "Photo already exists" -msgstr "" +msgid "Attempting to download %s files" +msgstr "Tentative de téléchargement de %s fichiers" -#: rapid/rapid.py:2542 rapid/rapid.py:3343 -msgid "Video" -msgstr "" - -#: rapid/rapid.py:2543 -msgid "Video skipped" -msgstr "" - -#: rapid/rapid.py:2544 -msgid "Video already exists" -msgstr "" - -#: rapid/rapid.py:2592 +#. reset the progress bar to update the status of this download attempt +#: rapid/rapid.py:2769 rapid/rapid.py:2836 #, python-format msgid "%(number)s of %(total)s %(filetypes)s" -msgstr "" +msgstr "%(number)s sur %(total)s %(filetypes)s" + +#: rapid/rapid.py:2832 +#, python-format +msgid "%(number)s of %(total)s %(filetypes)s (%(remaining)s remaining)" +msgstr "%(number)s sur %(total)s %(filetypes)s (%(remaining)s restants)" -#: rapid/rapid.py:2607 rapid/rapid.py:2611 +#: rapid/rapid.py:2857 rapid/rapid.py:2861 msgid "Could not delete photo or video from device" -msgstr "" +msgstr "Impossible de supprimer la photo ou vidéo du périphérique" -#: rapid/rapid.py:2608 +#: rapid/rapid.py:2858 #, python-format msgid "" "Photo: %(source)s\n" "Error: %(errno)s %(strerror)s" msgstr "" +"Photo : %(source)s\n" +"Erreur : %(errno)s %(strerror)s" -#: rapid/rapid.py:2612 +#: rapid/rapid.py:2862 #, python-format msgid "Photo: %(source)s" -msgstr "" +msgstr "Photo : %(source)s" -#: rapid/rapid.py:2614 +#: rapid/rapid.py:2864 #, python-format msgid "Deleted %(number)i %(filetypes)s from device" -msgstr "" +msgstr "Suprression de %(number)i %(filetypes)s du périphérique" -#: rapid/rapid.py:2624 +#: rapid/rapid.py:2871 #, python-format msgid "Download complete from %s" msgstr "Transfert terminé depuis %s" #. Device refers to a thing like a camera, memory card in its reader, external hard drive, Portable Storage Device, etc. -#: rapid/rapid.py:2700 +#: rapid/rapid.py:2993 rapid/rapid.py:3466 msgid "Device" msgstr "Volume" #. Size refers to the total size of images on the device, typically in MB or GB -#: rapid/rapid.py:2705 +#: rapid/rapid.py:2998 rapid/rapid.py:3455 msgid "Size" msgstr "Taille" -#: rapid/rapid.py:2708 +#: rapid/rapid.py:3001 msgid "Download Progress" msgstr "Progression du transfert" -#: rapid/rapid.py:2824 rapid/rapid.py:2839 -msgid "It may be corrupted" -msgstr "Il est peut-être corrompu" +#: rapid/rapid.py:3089 +msgid "Downloading From Cameras" +msgstr "Téléchargement depuis les appareils photo" + +#: rapid/rapid.py:3095 +msgid "Downloading directly from a camera may work poorly or not at all" +msgstr "" +"Télécharger directement depuis un appareil photo peut mal fonctionner, voire " +"non fonctionner." + +#: rapid/rapid.py:3096 +msgid "" +"Downloading from a card reader always works and is generally much faster. It " +"is strongly recommended to use a card reader." +msgstr "" +"Télécharger depuis un lecteur de carte marche toujours et est généralement " +"plus rapide. Il est fortement recommandé d'utiliser un lecteur de carte." -#: rapid/rapid.py:2869 +#: rapid/rapid.py:3110 +msgid "_Show this message again" +msgstr "" + +#: rapid/rapid.py:3145 msgid "Device Detected" msgstr "Périphérique détecté" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2878 +#: rapid/rapid.py:3154 msgid "" "Should this device or partition be used to download photos or videos from?" msgstr "" +"Est-ce qu'il faut télécharger photos et vidéos à partir de ce périphérique " +"ou cette partition ?" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2897 +#: rapid/rapid.py:3173 msgid "_Remember this choice" msgstr "Se _Souvenir de ce choix" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2934 +#: rapid/rapid.py:3210 #, python-format msgid "%s selected for downloading from" msgstr "%s a été séléctionné comme source de transfert" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2937 +#: rapid/rapid.py:3213 msgid "This device or partition will always be used to download from" msgstr "" "Ce périphérique ou cette partition sera toujours utilisé comme source de " "transfert" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2940 +#: rapid/rapid.py:3216 #, python-format msgid "%s rejected as a download device" msgstr "%s a été rejeté comme source de transfert" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2943 +#: rapid/rapid.py:3219 msgid "This device or partition will never be used to download from" msgstr "" "Ce périphérique ou cette partition ne sera jamais utilisé comme source de " "transfert" -#: rapid/rapid.py:2950 +#: rapid/rapid.py:3226 msgid "Remove all Job Codes?" msgstr "Supprimer toutes les étiquettes de transfert ?" -#: rapid/rapid.py:2967 +#: rapid/rapid.py:3243 msgid "Should all Job Codes be removed?" msgstr "" "Êtes-vous sûr de vouloir supprimer toutes les étiquettes de transfert ?" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:2995 +#: rapid/rapid.py:3271 msgid "Enter a Job Code" msgstr "Entrer une étiquette de transfert" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:3013 -msgid "Enter a new job code, or select a previous one." +#: rapid/rapid.py:3290 +msgid "Enter a new Job Code, or select a previous one" msgstr "" -"Saisissez une nouvelle étiquette de transfert, ou choisissez un précédemment " -"ajouté" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:3016 -msgid "Enter a new job code." -msgstr "Saisissez une nouvelle étiquette de transfert" +#: rapid/rapid.py:3293 +msgid "Enter a new Job Code" +msgstr "" -#: rapid/rapid.py:3021 +#: rapid/rapid.py:3298 rapid/rapid.py:4417 msgid "Job Code:" msgstr "Étiquette de transfert" -#: rapid/rapid.py:3068 +#: rapid/rapid.py:3345 msgid "Job Code entered" msgstr "Étiquette de transfert entrée" -#: rapid/rapid.py:3070 +#: rapid/rapid.py:3347 msgid "Job Code not entered" msgstr "Étiquettes de transfert non renseignée" -#: rapid/rapid.py:3330 +#: rapid/rapid.py:3401 +msgid "Status" +msgstr "État" + +#: rapid/rapid.py:3409 +msgid "Type" +msgstr "Type" + +#: rapid/rapid.py:3418 rapid/rapid.py:4808 rapid/rapid.py:4810 +msgid "Photo" +msgstr "Photo" + +#: rapid/rapid.py:3420 +msgid "File" +msgstr "Fichier" + +#: rapid/rapid.py:3435 +msgid "Job Code" +msgstr "" + +#: rapid/rapid.py:3445 +msgid "Date" +msgstr "Date" + +#: rapid/rapid.py:3477 rapid/renamesubfolderprefs.py:194 +msgid "Filename" +msgstr "Nom de fichier" + +#: rapid/rapid.py:3488 +msgid "Path" +msgstr "Chemin" + +#: rapid/rapid.py:3843 +#, python-format +msgid "%(filetype)s was downloaded successfully" +msgstr "%(filetype)s a été téléchargé avec succès" + +#: rapid/rapid.py:3845 +#, python-format +msgid "%(filetype)s was not downloaded" +msgstr "%(filetype)s n'a pas été téléchargé" + +#: rapid/rapid.py:3847 +#, python-format +msgid "%(filetype)s was downloaded with warnings" +msgstr "%(filetype)s a été téléchargé avec des avertissements" + +#: rapid/rapid.py:3849 +#, python-format +msgid "%(filetype)s was downloaded but there were problems backing up" +msgstr "" +"%(filetype)s a été téléchargé mais il y a eu des problèmes de sauvegarde" + +#: rapid/rapid.py:3851 +#, python-format +msgid "%(filetype)s was neither downloaded nor backed up" +msgstr "%(filetype)s n'a ni été téléchargé ni sauvegardé" + +#: rapid/rapid.py:3853 +#, python-format +msgid "%(filetype)s is ready to be downloaded" +msgstr "%(filetype)s est prêt à être téléchargé" + +#: rapid/rapid.py:3855 +#, python-format +msgid "%(filetype)s is about to be downloaded" +msgstr "%(filetype)s va être téléchargé" + +#: rapid/rapid.py:3857 +#, python-format +msgid "%(filetype)s will be downloaded with warnings" +msgstr "%(filetype)s sera téléchargé avec des avertissements" + +#: rapid/rapid.py:3859 +#, python-format +msgid "%(filetype)s cannot be downloaded" +msgstr "%(filetype)s ne peut être téléchargé" + +#: rapid/rapid.py:4240 +msgid "Preview" +msgstr "Aperçu" + +#: rapid/rapid.py:4439 +msgid "Enter a new Job Code and press Enter, or select an existing Job Code" +msgstr "" + +#: rapid/rapid.py:4795 #, python-format msgid "" "Sorry, this device location does not exist:\n" @@ -742,84 +778,102 @@ msgid "" "\n" "Please resolve the problem, or modify your preferences." msgstr "" +"Désolé, ce périphérique n'existe pas :\n" +"%(path)s\n" +"\n" +"Veuillez résoudre le problème, ou modifier vos préférences." -#: rapid/rapid.py:3334 +#: rapid/rapid.py:4799 msgid "Problem with Device Location Folder" msgstr "" -#: rapid/rapid.py:3350 +#: rapid/rapid.py:4808 +msgid "Video" +msgstr "Vidéo" + +#: rapid/rapid.py:4815 #, python-format msgid "The %(file_type)s Download Folder does not exist.\n" -msgstr "" +msgstr "Le dossier de téléchargement de %(file_type)s n'existe pas.\n" -#: rapid/rapid.py:3359 +#: rapid/rapid.py:4824 #, python-format msgid "The %(file_type)s Download Folder exists but cannot be written to.\n" msgstr "" +"Le dossier de téléchargement de %(file_type)s existe mais on ne peut y " +"écrire.\n" -#: rapid/rapid.py:3364 +#: rapid/rapid.py:4829 msgid "" "Sorry, problems were encountered with your download folders. Please fix the " "problems or modify the preferences.\n" "\n" msgstr "" +"Désolé, des problèmes ont été rencontrés avec vos dossiers de " +"téléchargement. Veuillez réparer les problèmes ou modifier les préférences.\n" +"\n" -#: rapid/rapid.py:3367 +#: rapid/rapid.py:4832 msgid "Problem with Download Folder" msgstr "Problème avec le dossier de transfert" -#: rapid/rapid.py:3369 +#: rapid/rapid.py:4834 msgid "Problem with Download Folders" -msgstr "" +msgstr "Problèmes avec les dossiers de téléchargement." -#: rapid/rapid.py:3382 +#: rapid/rapid.py:4847 msgid "Some preferences will be reset." msgstr "" "Certaines préférences vont être réinitalisées à leurs valeurs par défaut." -#: rapid/rapid.py:3416 +#: rapid/rapid.py:4880 +msgid "Displaying warning about downloading directly from camera" +msgstr "" + +#: rapid/rapid.py:4890 #, python-format msgid "Prompting whether to use %s" msgstr "Affichage du choix d'utilisation ou non de %s" -#: rapid/rapid.py:3444 +#: rapid/rapid.py:4917 msgid "Prompting for Job Code" msgstr "En attende de l'étiquette de transfert" -#: rapid/rapid.py:3448 +#: rapid/rapid.py:4921 msgid "Already prompting for Job Code, do not prompt again" msgstr "Affiche déjà pour l'étiquette de transfert, n'affichera plus" -#: rapid/rapid.py:3463 +#: rapid/rapid.py:4938 +msgid "Starting downloads" +msgstr "Démarrage du transfert" + +#. autostart is true +#: rapid/rapid.py:4942 msgid "Starting downloads that have been waiting for a Job Code" msgstr "" "Démarrage des téléchargements qui ont attendu une étiquette de transfert" -#: rapid/rapid.py:3467 -msgid "Starting downloads" -msgstr "Démarrage du transfert" - -#: rapid/rapid.py:3482 +#: rapid/rapid.py:4984 #, python-format msgid "Creating photo download folder %(folder)s" msgstr "" -#: rapid/rapid.py:3487 +#: rapid/rapid.py:4989 #, python-format msgid "Failed to create default photo download folder %(folder)s" msgstr "" -#: rapid/rapid.py:3491 +#: rapid/rapid.py:4993 #, python-format msgid "Creating video download folder %(folder)s" msgstr "" -#: rapid/rapid.py:3496 +#: rapid/rapid.py:4998 #, python-format msgid "Failed to create default video download folder %(folder)s" msgstr "" -#: rapid/rapid.py:3521 +#: rapid/rapid.py:5023 msgid "" "A newer version of this program was previously run on this computer.\n" "\n" @@ -828,7 +882,7 @@ msgstr "" "ordinateur.\n" "\n" -#: rapid/rapid.py:3523 +#: rapid/rapid.py:5025 msgid "" "Program preferences appear to be valid, but please check them to ensure " "correct operation." @@ -836,26 +890,26 @@ msgstr "" "Les préférences de l'application ont l'air d'être correctes, veuillez tout " "de même les vérifier afin d'assurer le bon déroulement de l'opération." -#: rapid/rapid.py:3525 +#: rapid/rapid.py:5027 msgid "Sorry, some preferences are invalid and will be reset." msgstr "" "Désolé, certaines préférences ne sont pas valides et seront réinitialisées." -#: rapid/rapid.py:3526 +#: rapid/rapid.py:5028 msgid "Warning:" msgstr "Avertissement :" -#: rapid/rapid.py:3531 +#: rapid/rapid.py:5033 msgid "" "This version of the program is newer than the previously run version. " "Checking preferences." msgstr "L'application a été mise à jour, vérification des préférences." -#: rapid/rapid.py:3538 +#: rapid/rapid.py:5040 msgid "Preferences were modified." msgstr "Les préférences ont été modifiées." -#: rapid/rapid.py:3539 +#: rapid/rapid.py:5041 msgid "" "This version of the program uses different preferences than the old version. " "Your preferences have been updated.\n" @@ -866,11 +920,11 @@ msgstr "" "l'ancienne version. Vos préférences ont été mises à jour.\n" "Veuillez les vérifier afin d'assurer le bon fonctionnement de l'application." -#: rapid/rapid.py:3543 +#: rapid/rapid.py:5045 msgid "No preferences needed to be changed." msgstr "Aucun changement des préférences n'a été nécessaire." -#: rapid/rapid.py:3545 +#: rapid/rapid.py:5047 msgid "" "This version of the program uses different preferences than the old version. " "Some of your previous preferences were invalid, and could not be updated. " @@ -880,131 +934,155 @@ msgstr "" "l'ancienne version. Certaines de vos préférences antérieures sont invalides " "et n'ont pas été mises à jour. Elles vont être réinitialisées." -#: rapid/rapid.py:3555 +#: rapid/rapid.py:5057 msgid "Problem using pynotify." msgstr "Problème d'utilisation de pynotify" -#: rapid/rapid.py:3571 +#: rapid/rapid.py:5073 msgid "Failed to receive pynotify server capabilities." msgstr "Echec de la reception des possibilités du serveur pynotify" -#: rapid/rapid.py:3580 +#: rapid/rapid.py:5084 msgid "" "Warning: desktop environment notification server is incorrectly configured." msgstr "" "Avertissement : le serveur de notification de l'environnement de bureau est " "incorrectement configuré." -#: rapid/rapid.py:3626 +#: rapid/rapid.py:5132 msgid "and" msgstr "et" -#: rapid/rapid.py:3631 +#: rapid/rapid.py:5137 msgid "Using backup devices" msgstr "Utilisation des volumes de sauvegarde" -#: rapid/rapid.py:3633 +#: rapid/rapid.py:5139 msgid "Using backup device" msgstr "Utilisation du volume de sauvegarde" -#: rapid/rapid.py:3635 +#: rapid/rapid.py:5141 msgid "No backup devices detected" msgstr "Aucun volume de sauvegarde détécté" -#: rapid/rapid.py:3674 rapid/rapid.py:3831 +#: rapid/rapid.py:5188 rapid/rapid.py:5350 #, python-format msgid "Device %(device)s (%(path)s) ignored" msgstr "Périphérique %(device)s (%(path)s) ignoré" -#: rapid/rapid.py:3790 +#: rapid/rapid.py:5309 #, python-format msgid "Detected %(device)s with path %(path)s" msgstr "Le volume %(device)s a été détecté avec le chemin d'accès %(path)s" -#: rapid/rapid.py:3794 +#: rapid/rapid.py:5313 msgid "Automatically start download is true" msgstr "Le démarrage automatique du transfert est activé" -#: rapid/rapid.py:3796 +#: rapid/rapid.py:5315 msgid "Automatically start download is false" msgstr "Le démarrage automatique du transfert est désactivé" -#: rapid/rapid.py:3849 +#: rapid/rapid.py:5368 msgid "Using manually specified path" msgstr "Utilisation du chemin d'accès renseigne manuellement" -#: rapid/rapid.py:3857 +#: rapid/rapid.py:5376 rapid/rapid.py:5417 #, python-format msgid "Backing up to %(path)s" msgstr "" -#: rapid/rapid.py:3968 rapid/rapid.py:4017 +#. the user is trying to backup to a device that is currently being downloaded from..... we don't normally allow that, but what to do? +#: rapid/rapid.py:5441 +#, python-format +msgid "Warning: backup device %(device)s is currently being downloaded from" +msgstr "" + +#: rapid/rapid.py:5458 +msgid "D_ownload Selected" +msgstr "" + +#: rapid/rapid.py:5550 rapid/rapid.py:5599 msgid "All downloads complete" msgstr "Tous les transferts sont terminés" -#: rapid/rapid.py:3982 +#: rapid/rapid.py:5564 msgid "MB/s" msgstr "Mo/s" -#: rapid/rapid.py:3992 +#: rapid/rapid.py:5574 msgid "About 1 second remaining" msgstr "Environ 1 seconde restante" -#: rapid/rapid.py:3994 +#: rapid/rapid.py:5576 #, python-format msgid "About %i seconds remaining" msgstr "Environ %i secondes restantes" -#: rapid/rapid.py:3996 +#: rapid/rapid.py:5578 msgid "About 1 minute remaining" msgstr "Environ 1 minute restante" #. Translators: in the text '%(minutes)i:%(seconds)02i', only the : should be translated, if needed. #. '%(minutes)i' and '%(seconds)02i' should not be modified or left out. They are used to format and display the amount #. of time the download has remainging, e.g. 'About 5:36 minutes remaining' -#: rapid/rapid.py:4001 +#: rapid/rapid.py:5583 #, python-format msgid "About %(minutes)i:%(seconds)02i minutes remaining" msgstr "Environ %(minutes)i:%(seconds)02i restantes" -#: rapid/rapid.py:4019 -msgid "photos downloaded" -msgstr "" +#: rapid/rapid.py:5602 rapid/rapid.py:5608 rapid/rapid.py:5614 +#: rapid/rapid.py:5620 rapid/rapid.py:5625 rapid/rapid.py:5629 +#, python-format +msgid "%(number)s %(numberdownloaded)s" +msgstr "%(number)s %(numberdownloaded)s" -#: rapid/rapid.py:4021 -msgid "photos skipped" -msgstr "" +#: rapid/rapid.py:5604 rapid/rapid.py:5616 +#, python-format +msgid "%(filetype)s downloaded" +msgstr "%(filetype)s téléchargé" -#: rapid/rapid.py:4023 -msgid "videos downloaded" +#: rapid/rapid.py:5610 rapid/rapid.py:5622 +#, python-format +msgid "%(filetype)s failed to download" msgstr "" -#: rapid/rapid.py:4025 -msgid "videos skipped" -msgstr "" +#: rapid/rapid.py:5789 +msgid "_Resume" +msgstr "_Reprendre" -#. This text will be displayed to the user on the Download / Pause button. -#. Please note the space at the end of the label - it is needed to meet the Gnome Human Interface Guidelines -#: rapid/rapid.py:4125 -msgid "_Download " -msgstr "_Transfert " +#: rapid/rapid.py:5792 +msgid "_Download All" +msgstr "" #. This text will be displayed to the user on the Download / Pause button. -#: rapid/rapid.py:4135 +#: rapid/rapid.py:5801 msgid "_Pause" msgstr "_Pause" -#: rapid/rapid.py:4209 -msgid "Preferences were changed." -msgstr "Les préférences ont été modifiées" +#: rapid/rapid.py:5914 +msgid "Download device settings preferences were changed." +msgstr "" + +#: rapid/rapid.py:5926 +msgid "Backup preferences were changed." +msgstr "" -#: rapid/rapid.py:4407 +#: rapid/rapid.py:5932 +msgid "Subfolder and filename preferences were changed." +msgstr "" + +#: rapid/rapid.py:5943 +msgid "Download folder preferences were changed." +msgstr "" + +#: rapid/rapid.py:6141 msgid "Goodbye" msgstr "Au-revoir" #. Translators: this text is displayed to the user when they request information on the command line options. #. The text %default should not be modified or left out. -#: rapid/rapid.py:4418 +#: rapid/rapid.py:6152 #, python-format msgid "" "display program information on the command line as the program runs " @@ -1013,386 +1091,382 @@ msgstr "" "affiche les informations de l'application sur la ligne de commande lorsque " "l'application est active (défaut: %default)" -#: rapid/rapid.py:4419 +#: rapid/rapid.py:6153 msgid "only output errors to the command line" msgstr "n'affiche que les erreurs sur la ligne de commande" #. image file extensions are recognized RAW files plus TIFF and JPG -#: rapid/rapid.py:4421 +#: rapid/rapid.py:6155 msgid "list photo and video file extensions the program recognizes and exit" msgstr "" -#: rapid/rapid.py:4422 +#: rapid/rapid.py:6156 msgid "reset all program settings and preferences and exit" msgstr "" -#: rapid/rapid.py:4431 +#: rapid/rapid.py:6165 msgid "Photos:" msgstr "" -#: rapid/rapid.py:4431 +#: rapid/rapid.py:6165 msgid "Videos:" msgstr "" -#: rapid/rapid.py:4436 +#: rapid/rapid.py:6170 #, python-format msgid "and %s" msgstr "et %s" -#: rapid/rapid.py:4444 +#: rapid/rapid.py:6178 msgid "All settings and preferences have been reset" msgstr "" #. Which volume management code is being used (GIO or GnomeVFS) -#: rapid/rapid.py:4448 rapid/rapid.py:4449 rapid/rapid.py:4451 -#: rapid/rapid.py:4456 rapid/rapid.py:4460 +#: rapid/rapid.py:6182 rapid/rapid.py:6183 rapid/rapid.py:6185 +#: rapid/rapid.py:6190 rapid/rapid.py:6194 msgid "Using" msgstr "En utilisation" -#: rapid/rapid.py:4453 +#: rapid/rapid.py:6187 msgid "\n" msgstr "\n" #. this application is already running -#: rapid/rapid.py:4477 +#: rapid/rapid.py:6211 #, python-format msgid "%s is already running" msgstr "%s déjà actif" -#: rapid/renamesubfolderprefs.py:190 +#: rapid/renamesubfolderprefs.py:192 msgid "Date time" msgstr "Date/heure" -#: rapid/renamesubfolderprefs.py:191 +#: rapid/renamesubfolderprefs.py:193 msgid "Text" msgstr "Texte" -#: rapid/renamesubfolderprefs.py:192 -msgid "Filename" -msgstr "Nom de fichier" - -#: rapid/renamesubfolderprefs.py:193 +#: rapid/renamesubfolderprefs.py:195 msgid "Metadata" msgstr "Métadonnées" -#: rapid/renamesubfolderprefs.py:194 +#: rapid/renamesubfolderprefs.py:196 msgid "Sequences" msgstr "Séquences" -#: rapid/renamesubfolderprefs.py:197 +#: rapid/renamesubfolderprefs.py:199 msgid "Image date" msgstr "Date de l'image" -#: rapid/renamesubfolderprefs.py:198 +#: rapid/renamesubfolderprefs.py:200 msgid "Video date" msgstr "" -#: rapid/renamesubfolderprefs.py:199 +#: rapid/renamesubfolderprefs.py:201 msgid "Today" msgstr "Aujourd'hui" -#: rapid/renamesubfolderprefs.py:200 +#: rapid/renamesubfolderprefs.py:202 msgid "Yesterday" msgstr "Hier" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:202 +#: rapid/renamesubfolderprefs.py:204 msgid "Name + extension" msgstr "Nom + extension" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:204 +#: rapid/renamesubfolderprefs.py:206 msgid "Name" msgstr "Nom" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:206 +#: rapid/renamesubfolderprefs.py:208 msgid "Extension" msgstr "Extension" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:208 +#: rapid/renamesubfolderprefs.py:210 msgid "Image number" msgstr "Numéro de l'image" -#: rapid/renamesubfolderprefs.py:209 +#: rapid/renamesubfolderprefs.py:211 msgid "Video number" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:211 +#: rapid/renamesubfolderprefs.py:213 msgid "Aperture" msgstr "Ouverture" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:213 +#: rapid/renamesubfolderprefs.py:215 msgid "ISO" msgstr "ISO" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:215 +#: rapid/renamesubfolderprefs.py:217 msgid "Exposure time" msgstr "Vitesse d'obturation" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:217 +#: rapid/renamesubfolderprefs.py:219 msgid "Focal length" msgstr "Longueur focale" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:219 +#: rapid/renamesubfolderprefs.py:221 msgid "Camera make" msgstr "Marque de l'appareil" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:221 +#: rapid/renamesubfolderprefs.py:223 msgid "Camera model" msgstr "Modèle de l'appareil" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:223 +#: rapid/renamesubfolderprefs.py:225 msgid "Short camera model" msgstr "Modèle de l'appareil (version courte)" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:225 +#: rapid/renamesubfolderprefs.py:227 msgid "Hyphenated short camera model" msgstr "Nom court de l'appareil photo avec trait d'union" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:227 +#: rapid/renamesubfolderprefs.py:229 msgid "Serial number" msgstr "Numéro de série" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:229 +#: rapid/renamesubfolderprefs.py:231 msgid "Shutter count" msgstr "Nombre de déclenchements de l'obturateur" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:231 +#: rapid/renamesubfolderprefs.py:233 msgid "Owner name" msgstr "Nom du propriétaire" -#: rapid/renamesubfolderprefs.py:232 +#: rapid/renamesubfolderprefs.py:234 msgid "Codec" msgstr "" -#: rapid/renamesubfolderprefs.py:233 +#: rapid/renamesubfolderprefs.py:235 msgid "Width" msgstr "" -#: rapid/renamesubfolderprefs.py:234 +#: rapid/renamesubfolderprefs.py:236 msgid "Height" msgstr "" -#: rapid/renamesubfolderprefs.py:235 +#: rapid/renamesubfolderprefs.py:237 msgid "Length" msgstr "" -#: rapid/renamesubfolderprefs.py:236 +#: rapid/renamesubfolderprefs.py:238 msgid "Frames Per Second" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:238 +#: rapid/renamesubfolderprefs.py:240 msgid "Downloads today" msgstr "Transferts journaliers" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:240 +#: rapid/renamesubfolderprefs.py:242 msgid "Session number" msgstr "Numéro de session" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:242 +#: rapid/renamesubfolderprefs.py:244 msgid "Subfolder number" msgstr "Numéro de sous-dossier" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:244 +#: rapid/renamesubfolderprefs.py:246 msgid "Stored number" msgstr "Nombres stockés" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequenceletters -#: rapid/renamesubfolderprefs.py:246 +#: rapid/renamesubfolderprefs.py:248 msgid "Sequence letter" msgstr "Séquence alphabétique" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:248 +#: rapid/renamesubfolderprefs.py:250 msgid "All digits" msgstr "Tous les chiffres" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:250 +#: rapid/renamesubfolderprefs.py:252 msgid "Last digit" msgstr "Dernier chiffre" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:252 +#: rapid/renamesubfolderprefs.py:254 msgid "Last 2 digits" msgstr "2 derniers chiffres" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:254 +#: rapid/renamesubfolderprefs.py:256 msgid "Last 3 digits" msgstr "3 derniers chiffres" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:256 +#: rapid/renamesubfolderprefs.py:258 msgid "Last 4 digits" msgstr "4 derniers chiffres" #. Translators: please not the capitalization of this text, and keep it the same if your language features capitalization -#: rapid/renamesubfolderprefs.py:258 +#: rapid/renamesubfolderprefs.py:260 msgid "Original Case" msgstr "Casse originale" #. Translators: please not the capitalization of this text, and keep it the same if your language features capitalization -#: rapid/renamesubfolderprefs.py:260 +#: rapid/renamesubfolderprefs.py:262 msgid "UPPERCASE" msgstr "MAJUSCULES" #. Translators: please not the capitalization of this text, and keep it the same if your language features capitalization -#: rapid/renamesubfolderprefs.py:262 +#: rapid/renamesubfolderprefs.py:264 msgid "lowercase" msgstr "minuscules" -#: rapid/renamesubfolderprefs.py:263 +#: rapid/renamesubfolderprefs.py:265 msgid "One digit" msgstr "Un chiffre" -#: rapid/renamesubfolderprefs.py:264 +#: rapid/renamesubfolderprefs.py:266 msgid "Two digits" msgstr "Deux chiffres" -#: rapid/renamesubfolderprefs.py:265 +#: rapid/renamesubfolderprefs.py:267 msgid "Three digits" msgstr "Trois chiffres" -#: rapid/renamesubfolderprefs.py:266 +#: rapid/renamesubfolderprefs.py:268 msgid "Four digits" msgstr "Quatre chiffres" -#: rapid/renamesubfolderprefs.py:267 +#: rapid/renamesubfolderprefs.py:269 msgid "Five digits" msgstr "Cinq chiffres" -#: rapid/renamesubfolderprefs.py:268 +#: rapid/renamesubfolderprefs.py:270 msgid "Six digits" msgstr "Six chiffres" -#: rapid/renamesubfolderprefs.py:269 +#: rapid/renamesubfolderprefs.py:271 msgid "Seven digits" msgstr "7 chiffres" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:271 +#: rapid/renamesubfolderprefs.py:273 msgid "Subseconds" msgstr "Sous-secondes" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:273 +#: rapid/renamesubfolderprefs.py:275 msgid "YYYYMMDD" msgstr "AAAAMMJJ" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:275 +#: rapid/renamesubfolderprefs.py:277 msgid "YYYY-MM-DD" msgstr "AAA-MM-JJ" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:277 +#: rapid/renamesubfolderprefs.py:279 msgid "YYMMDD" msgstr "AAMMJJ" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:279 +#: rapid/renamesubfolderprefs.py:281 msgid "YY-MM-DD" msgstr "AA-MM-JJ" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:281 +#: rapid/renamesubfolderprefs.py:283 msgid "MMDDYYYY" msgstr "MM-JJ-AAAA" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:283 +#: rapid/renamesubfolderprefs.py:285 msgid "MMDDYY" msgstr "MM-JJ-AA" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:285 +#: rapid/renamesubfolderprefs.py:287 msgid "MMDD" msgstr "MMJJ" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:287 +#: rapid/renamesubfolderprefs.py:289 msgid "DDMMYYYY" msgstr "JJMMAAAA" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:289 +#: rapid/renamesubfolderprefs.py:291 msgid "DDMMYY" msgstr "JJMMAA" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:291 +#: rapid/renamesubfolderprefs.py:293 msgid "YYYY" msgstr "AAAA" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:293 +#: rapid/renamesubfolderprefs.py:295 msgid "YY" msgstr "AA" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:295 +#: rapid/renamesubfolderprefs.py:297 msgid "MM" msgstr "MM" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:297 +#: rapid/renamesubfolderprefs.py:299 msgid "DD" msgstr "JJ" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:299 +#: rapid/renamesubfolderprefs.py:301 msgid "HHMMSS" msgstr "HHMMSS" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:301 +#: rapid/renamesubfolderprefs.py:303 msgid "HHMM" msgstr "HHMM" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:303 +#: rapid/renamesubfolderprefs.py:305 msgid "HH-MM-SS" msgstr "HH-MM-SS" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:305 +#: rapid/renamesubfolderprefs.py:307 msgid "HH-MM" msgstr "HH-MM" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:307 +#: rapid/renamesubfolderprefs.py:309 msgid "HH" msgstr "HH" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:309 +#: rapid/renamesubfolderprefs.py:311 msgid "MM (minutes)" msgstr "MM (minutes)" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:311 +#: rapid/renamesubfolderprefs.py:313 msgid "SS" msgstr "SS" -#: rapid/renamesubfolderprefs.py:794 +#: rapid/renamesubfolderprefs.py:796 #, python-format msgid "" "Preference key '%(key)s' is invalid.\n" @@ -1401,67 +1475,28 @@ msgstr "" "La préférence '%(key)s' est invalude.\n" "Valeurs attendues : %(value)s" -#: rapid/renamesubfolderprefs.py:801 +#: rapid/renamesubfolderprefs.py:803 #, python-format msgid "Preference value '%(value)s' is invalid" msgstr "La préférence « %(value)s » est invalide" -#: rapid/renamesubfolderprefs.py:805 +#: rapid/renamesubfolderprefs.py:807 msgid "These preferences are not well formed:" msgstr "Les préférences suivantes ne sont pas bien formattées :" -#: rapid/renamesubfolderprefs.py:934 -msgid "Subsecond metadata not present in photo" -msgstr "" - -#: rapid/renamesubfolderprefs.py:941 -#, python-format -msgid "%s metadata is not present" -msgstr "" - -#: rapid/renamesubfolderprefs.py:960 rapid/renamesubfolderprefs.py:968 -#: rapid/renamesubfolderprefs.py:977 -#, python-format -msgid "Error in date time component. Value %s appears invalid" -msgstr "" -"Erreur dans le composant de date/heure. La valeur %s semble non valide" - -#: rapid/renamesubfolderprefs.py:1004 -msgid "extension was specified but filename does not have an extension" -msgstr "" - -#: rapid/renamesubfolderprefs.py:1008 -msgid "image or video number was specified but filename has no number" -msgstr "" - -#: rapid/renamesubfolderprefs.py:1081 -#, python-format -msgid "%s metadata is not present in photo" -msgstr "" - -#: rapid/renamesubfolderprefs.py:1194 -#, python-format -msgid "error generating name with component %s" -msgstr "Erreur dans la génération du nom avec le composant %s" - -#: rapid/renamesubfolderprefs.py:1450 -#, python-format -msgid "%s metadata is not present in video" -msgstr "" - -#: rapid/renamesubfolderprefs.py:1546 +#: rapid/renamesubfolderprefs.py:1517 #, python-format msgid "Subfolder preferences should not start with a %s" msgstr "" "Les préférences de sous-dossier ne devraient pas commencer avec un %s" -#: rapid/renamesubfolderprefs.py:1548 +#: rapid/renamesubfolderprefs.py:1519 #, python-format msgid "Subfolder preferences should not end with a %s" msgstr "" "Les préférences de sous-dossier ne devraient pas se terminer avec un %s" -#: rapid/renamesubfolderprefs.py:1552 +#: rapid/renamesubfolderprefs.py:1523 #, python-format msgid "Subfolder preferences should not contain two %s one after the other" msgstr "" @@ -1512,119 +1547,115 @@ msgid "Job Codes" msgstr "Étiquettes de transfert" #: rapid/glade3/rapid.glade.h:12 -msgid "Missing Backup Devices" -msgstr "Volumes de sauvegarde absents" - -#: rapid/glade3/rapid.glade.h:13 msgid "Photo Rename" msgstr "" -#: rapid/glade3/rapid.glade.h:14 +#: rapid/glade3/rapid.glade.h:13 msgid "Photo and Video Name Conflicts" msgstr "" -#: rapid/glade3/rapid.glade.h:15 +#: rapid/glade3/rapid.glade.h:14 msgid "Program Automation" msgstr "Automatisation de l'application" -#: rapid/glade3/rapid.glade.h:16 +#: rapid/glade3/rapid.glade.h:15 msgid "Sequence Numbers" msgstr "Séquences numériques" -#: rapid/glade3/rapid.glade.h:17 +#: rapid/glade3/rapid.glade.h:16 msgid "/media/externaldrive/Photos" msgstr "/media/disqueexterne/Photos" -#: rapid/glade3/rapid.glade.h:18 +#: rapid/glade3/rapid.glade.h:17 msgid "Example: /home/user/Pictures" msgstr "" -#: rapid/glade3/rapid.glade.h:19 +#: rapid/glade3/rapid.glade.h:18 msgid "Example:" msgstr "Exemple :" -#: rapid/glade3/rapid.glade.h:20 +#: rapid/glade3/rapid.glade.h:19 msgid "New:" msgstr "Nouveau :" -#: rapid/glade3/rapid.glade.h:21 +#: rapid/glade3/rapid.glade.h:20 msgid "Original:" msgstr "Original :" -#: rapid/glade3/rapid.glade.h:22 +#: rapid/glade3/rapid.glade.h:21 msgid "Automation" msgstr "Automatisation" -#: rapid/glade3/rapid.glade.h:23 +#: rapid/glade3/rapid.glade.h:22 msgid "Backup\t" msgstr "Sauvegarde\t" -#: rapid/glade3/rapid.glade.h:24 +#: rapid/glade3/rapid.glade.h:23 msgid "Devices" msgstr "" -#: rapid/glade3/rapid.glade.h:25 +#: rapid/glade3/rapid.glade.h:24 msgid "Error Handling" msgstr "Gestion des erreurs" -#: rapid/glade3/rapid.glade.h:26 +#: rapid/glade3/rapid.glade.h:25 msgid "Job Codes" msgstr "" "Étiquettes de transfert" -#: rapid/glade3/rapid.glade.h:27 +#: rapid/glade3/rapid.glade.h:26 msgid "Photo Download Folders" msgstr "" -#: rapid/glade3/rapid.glade.h:28 +#: rapid/glade3/rapid.glade.h:27 msgid "Photo Rename\t" msgstr "" -#: rapid/glade3/rapid.glade.h:29 +#: rapid/glade3/rapid.glade.h:28 msgid "Rename Options" msgstr "Options de renommage" -#: rapid/glade3/rapid.glade.h:30 +#: rapid/glade3/rapid.glade.h:29 msgid "Video Download Folders" msgstr "" -#: rapid/glade3/rapid.glade.h:31 +#: rapid/glade3/rapid.glade.h:30 msgid "Video Rename\t" msgstr "" -#: rapid/glade3/rapid.glade.h:32 +#: rapid/glade3/rapid.glade.h:31 msgid "Add unique identifier" msgstr "Ajouter un identifiant unique" -#: rapid/glade3/rapid.glade.h:33 +#: rapid/glade3/rapid.glade.h:32 msgid "Automatically detect Portable Storage Devices" msgstr "Détecter automatiquement les volumes de stockage amovibles" -#: rapid/glade3/rapid.glade.h:34 +#: rapid/glade3/rapid.glade.h:33 msgid "Automatically detect backup devices" msgstr "Détecter automatiquement les volumes de sauvegarde" -#: rapid/glade3/rapid.glade.h:35 +#: rapid/glade3/rapid.glade.h:34 msgid "Automatically detect devices" msgstr "" -#: rapid/glade3/rapid.glade.h:36 +#: rapid/glade3/rapid.glade.h:35 msgid "Automation" msgstr "Automatisation" -#: rapid/glade3/rapid.glade.h:37 +#: rapid/glade3/rapid.glade.h:36 msgid "Backup" msgstr "Sauvegarde" -#: rapid/glade3/rapid.glade.h:38 +#: rapid/glade3/rapid.glade.h:37 msgid "Backup location:" msgstr "Localisation de la sauvegarde :" -#: rapid/glade3/rapid.glade.h:39 +#: rapid/glade3/rapid.glade.h:38 msgid "Backup photos and videos when downloading" msgstr "" -#: rapid/glade3/rapid.glade.h:40 +#: rapid/glade3/rapid.glade.h:39 msgid "" "Choose the download folder. Subfolders for the downloaded photos will be " "automatically created in this folder using the structure specified below." @@ -1633,34 +1664,29 @@ msgstr "" "transférées seront automatiquement crées dans ce dossier selon la structure " "spécifiée ci-dessous." -#: rapid/glade3/rapid.glade.h:41 +#: rapid/glade3/rapid.glade.h:40 msgid "" "Choose the download folder. Subfolders for the downloaded videos will be " "automatically created in this folder using the structure specified below." msgstr "" -#: rapid/glade3/rapid.glade.h:42 -msgid "" -"Choose whether to skip downloading the file, or to add a unique indentifier." -msgstr "" - -#: rapid/glade3/rapid.glade.h:43 +#: rapid/glade3/rapid.glade.h:41 msgid "Copyright Damon Lynch 2007-10" msgstr "Copyright Damon Lynch 2007-10" -#: rapid/glade3/rapid.glade.h:44 +#: rapid/glade3/rapid.glade.h:42 msgid "Day start:" msgstr "Début du jour :" -#: rapid/glade3/rapid.glade.h:45 +#: rapid/glade3/rapid.glade.h:43 msgid "Delete photos and videos from device upon download completion" msgstr "" -#: rapid/glade3/rapid.glade.h:46 +#: rapid/glade3/rapid.glade.h:44 msgid "Devices" msgstr "" -#: rapid/glade3/rapid.glade.h:47 +#: rapid/glade3/rapid.glade.h:45 msgid "" "Devices are from where to download photos and videos, such as cameras, " "memory cards or Portable Storage Devices.\n" @@ -1673,43 +1699,43 @@ msgid "" "reader." msgstr "" -#: rapid/glade3/rapid.glade.h:52 +#: rapid/glade3/rapid.glade.h:50 msgid "Download / Pause" msgstr "Transfert / Pause" -#: rapid/glade3/rapid.glade.h:53 +#: rapid/glade3/rapid.glade.h:51 msgid "Download folder:" msgstr "Dossier de destination :" -#: rapid/glade3/rapid.glade.h:54 +#: rapid/glade3/rapid.glade.h:52 msgid "Downloads today:" msgstr "Transferts journaliers :" -#: rapid/glade3/rapid.glade.h:55 +#: rapid/glade3/rapid.glade.h:53 msgid "Error Handling" msgstr "Gestion des erreurs" -#: rapid/glade3/rapid.glade.h:56 +#: rapid/glade3/rapid.glade.h:54 msgid "Error Log" msgstr "Journal des erreurs" -#: rapid/glade3/rapid.glade.h:57 +#: rapid/glade3/rapid.glade.h:55 msgid "Exit program if download completes without any warnings or errors" msgstr "" -#: rapid/glade3/rapid.glade.h:58 +#: rapid/glade3/rapid.glade.h:56 msgid "If you disable automatic detection, choose the exact backup location." msgstr "" "Si la détection automatique est désactivée, choisissez un emplacement pour " "la sauvegarde." -#: rapid/glade3/rapid.glade.h:59 +#: rapid/glade3/rapid.glade.h:57 msgid "" "If you disable automatic detection, choose the exact location of the images " "and videos." msgstr "" -#: rapid/glade3/rapid.glade.h:60 +#: rapid/glade3/rapid.glade.h:58 msgid "" "If you enable automatic detection of Portable Storage Devices, the entire " "device will be scanned for images. On large devices, this could take some " @@ -1719,47 +1745,51 @@ msgstr "" "le volume complet sera analysé. Sur des volumes de capacité importante, cela " "peut prendre du temps." -#: rapid/glade3/rapid.glade.h:61 -msgid "Ignore" -msgstr "Ignorer" - -#: rapid/glade3/rapid.glade.h:62 +#: rapid/glade3/rapid.glade.h:59 msgid "Import your photos and videos efficiently and reliably" msgstr "" -#: rapid/glade3/rapid.glade.h:63 +#: rapid/glade3/rapid.glade.h:60 msgid "Job Codes" msgstr "Étiquettes de transfert" -#: rapid/glade3/rapid.glade.h:64 +#: rapid/glade3/rapid.glade.h:61 msgid "Location:" msgstr "" -#: rapid/glade3/rapid.glade.h:65 +#: rapid/glade3/rapid.glade.h:62 msgid "Overwrite" msgstr "Écraser" -#: rapid/glade3/rapid.glade.h:66 +#: rapid/glade3/rapid.glade.h:63 +msgid "P_review Columns" +msgstr "" + +#: rapid/glade3/rapid.glade.h:64 msgid "Photo Folders" msgstr "" -#: rapid/glade3/rapid.glade.h:67 +#: rapid/glade3/rapid.glade.h:65 msgid "Photo Rename" msgstr "" -#: rapid/glade3/rapid.glade.h:68 +#: rapid/glade3/rapid.glade.h:66 msgid "Photo backup folder name:" msgstr "" -#: rapid/glade3/rapid.glade.h:69 +#: rapid/glade3/rapid.glade.h:67 msgid "Preferences: Rapid Photo Downloader" msgstr "Préférences : Rapid Photo Downloader" -#: rapid/glade3/rapid.glade.h:71 +#: rapid/glade3/rapid.glade.h:68 +msgid "Preview _Folders" +msgstr "" + +#: rapid/glade3/rapid.glade.h:70 msgid "R_emove All" msgstr "S_upprimer tout" -#: rapid/glade3/rapid.glade.h:73 +#: rapid/glade3/rapid.glade.h:72 msgid "" "Rapid Photo Downloader is free software; you can redistribute it and/or " "modify it under the terms of the GNU General Public License as published by " @@ -1790,33 +1820,49 @@ msgstr "" "programme ; si ce n’est pas le cas, écrivez à la Free Software Foundation " "Inc., 675 Mass Ave, Cambridge, MA 02139, Etats-Unis." -#: rapid/glade3/rapid.glade.h:78 +#: rapid/glade3/rapid.glade.h:77 msgid "Rename Options" msgstr "Options de renommage" +#: rapid/glade3/rapid.glade.h:78 +msgid "Se_lect None" +msgstr "" + #: rapid/glade3/rapid.glade.h:79 -msgid "Report a warning" -msgstr "Rapporter un avertissement" +msgid "Select All Pho_tos" +msgstr "" #: rapid/glade3/rapid.glade.h:80 -msgid "Report an error" -msgstr "Rapporter une erreur" +msgid "Select All Vi_deos" +msgstr "" #: rapid/glade3/rapid.glade.h:81 +msgid "Select All Wit_h Job Code" +msgstr "" + +#: rapid/glade3/rapid.glade.h:82 +msgid "Select All Without _Job Code" +msgstr "" + +#: rapid/glade3/rapid.glade.h:83 +msgid "Select _All" +msgstr "" + +#: rapid/glade3/rapid.glade.h:84 msgid "Skip" msgstr "Passer" -#: rapid/glade3/rapid.glade.h:82 +#: rapid/glade3/rapid.glade.h:85 msgid "Skip download" msgstr "Sauter le transfert" -#: rapid/glade3/rapid.glade.h:83 +#: rapid/glade3/rapid.glade.h:86 msgid "" "Sorry, video downloading functionality disabled. To download videos, please " "install the kaa metadata package for python." msgstr "" -#: rapid/glade3/rapid.glade.h:84 +#: rapid/glade3/rapid.glade.h:87 msgid "" "Specify the folder in which backups are stored on the device. \n" "\n" @@ -1825,7 +1871,7 @@ msgid "" "a folder in it with one of these names." msgstr "" -#: rapid/glade3/rapid.glade.h:87 +#: rapid/glade3/rapid.glade.h:90 msgid "" "Specify the time in 24 hour format at which the Downloads today " "sequence number should be reset." @@ -1833,114 +1879,132 @@ msgstr "" "Spécifiez l'heure au format 24h à laquelle la séquence Transferts " "journaliers doit être réinitialisée." -#: rapid/glade3/rapid.glade.h:88 -msgid "" -"Specify what to do when a photo or video of the same name has already been " -"downloaded or backed up." -msgstr "" - -#: rapid/glade3/rapid.glade.h:89 -msgid "Specify what to do when there are no backup devices." -msgstr "" -"Spécifiez quelle action entreprendre quand il n'y a aucun volume de " -"sauvegarde." - -#: rapid/glade3/rapid.glade.h:90 +#: rapid/glade3/rapid.glade.h:91 msgid "" "Specify whether photo, video and folder names should have any characters " "removed that are not allowed by other operating systems." msgstr "" -#: rapid/glade3/rapid.glade.h:91 +#: rapid/glade3/rapid.glade.h:92 msgid "Start downloading at program startup" msgstr "Démarrer le transfert au démarrage de l'application" -#: rapid/glade3/rapid.glade.h:92 +#: rapid/glade3/rapid.glade.h:93 msgid "Start downloading upon device insertion" msgstr "" -#: rapid/glade3/rapid.glade.h:93 +#: rapid/glade3/rapid.glade.h:94 msgid "Stored number:" msgstr "Nombre stocké :" -#: rapid/glade3/rapid.glade.h:94 +#: rapid/glade3/rapid.glade.h:95 msgid "Strip incompatible characters" msgstr "Enlever les caractères incompatibles" -#: rapid/glade3/rapid.glade.h:95 +#: rapid/glade3/rapid.glade.h:96 msgid "Synchronize RAW + JPEG sequence numbers" msgstr "" "Synchroniser les séquences numériques pour les paires d'images RAW + JPEG" -#: rapid/glade3/rapid.glade.h:96 +#: rapid/glade3/rapid.glade.h:97 msgid "Unmount (\"eject\") device upon download completion" msgstr "" -#: rapid/glade3/rapid.glade.h:97 +#: rapid/glade3/rapid.glade.h:98 msgid "Video Folders" msgstr "" -#: rapid/glade3/rapid.glade.h:98 +#: rapid/glade3/rapid.glade.h:99 msgid "Video Rename" msgstr "" -#: rapid/glade3/rapid.glade.h:99 +#: rapid/glade3/rapid.glade.h:100 msgid "Video backup folder name:" msgstr "" -#: rapid/glade3/rapid.glade.h:100 +#: rapid/glade3/rapid.glade.h:101 +msgid "" +"When a photo or video of the same name has already been downloaded, choose " +"whether to skip downloading the file, or to add a unique indentifier." +msgstr "" + +#: rapid/glade3/rapid.glade.h:102 msgid "" "When backing up, choose whether to overwrite a file on the backup device " "that has the same name, or skip backing it up." msgstr "" -#: rapid/glade3/rapid.glade.h:101 +#: rapid/glade3/rapid.glade.h:103 msgid "" "You can have your photos and videos backed up to multiple locations as they " "are downloaded, e.g. external hard drives." msgstr "" -#: rapid/glade3/rapid.glade.h:102 +#: rapid/glade3/rapid.glade.h:104 msgid "_Add..." msgstr "_Ajouter..." -#: rapid/glade3/rapid.glade.h:103 +#: rapid/glade3/rapid.glade.h:105 msgid "_Clear Completed Downloads" msgstr "_Effacer les transferts terminés" -#: rapid/glade3/rapid.glade.h:104 +#: rapid/glade3/rapid.glade.h:106 +msgid "_Device" +msgstr "" + +#: rapid/glade3/rapid.glade.h:107 msgid "_Error Log" msgstr "Journal des _erreurs" -#: rapid/glade3/rapid.glade.h:105 +#: rapid/glade3/rapid.glade.h:108 +msgid "_File" +msgstr "" + +#: rapid/glade3/rapid.glade.h:109 +msgid "_Filename" +msgstr "" + +#: rapid/glade3/rapid.glade.h:110 msgid "_Get Help Online..." msgstr "Aide en _ligne" -#: rapid/glade3/rapid.glade.h:106 +#: rapid/glade3/rapid.glade.h:111 msgid "_Help" msgstr "_Aide" -#: rapid/glade3/rapid.glade.h:107 +#: rapid/glade3/rapid.glade.h:112 msgid "_Make a Donation..." msgstr "_Faire une _donation..." -#: rapid/glade3/rapid.glade.h:108 -msgid "_Photos" -msgstr "_Photos" +#: rapid/glade3/rapid.glade.h:113 +msgid "_Path" +msgstr "" -#: rapid/glade3/rapid.glade.h:109 +#: rapid/glade3/rapid.glade.h:114 +msgid "_Preview" +msgstr "" + +#: rapid/glade3/rapid.glade.h:115 msgid "_Report a Problem..." msgstr "_Rapporter un problème..." -#: rapid/glade3/rapid.glade.h:110 -msgid "_Thumbnails" -msgstr "_Vignettes" +#: rapid/glade3/rapid.glade.h:116 +msgid "_Select" +msgstr "" -#: rapid/glade3/rapid.glade.h:111 +#: rapid/glade3/rapid.glade.h:117 +msgid "_Size" +msgstr "" + +#: rapid/glade3/rapid.glade.h:118 msgid "_Translate this Application..." msgstr "_Traduire cette application..." -#: rapid/glade3/rapid.glade.h:112 +#: rapid/glade3/rapid.glade.h:119 +msgid "_Type" +msgstr "" + +#: rapid/glade3/rapid.glade.h:120 msgid "_View" msgstr "A_ffichage" @@ -1959,6 +2023,10 @@ msgstr "A_ffichage" #~ msgid "Select a folder in which to backup images" #~ msgstr "Sélectionner un dossier de sauvegarde des images" +#, python-format +#~ msgid "Source: %s" +#~ msgstr "Source : %s" + #, python-format #~ msgid "" #~ "Source: %(source)s\n" @@ -1969,6 +2037,14 @@ msgstr "A_ffichage" #~ "Destination : %(destination)s\n" #~ "Problème : %(problem)s" +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Problem: %(problem)s" +#~ msgstr "" +#~ "Source : %(source)s\n" +#~ "Problème : %(problem)s" + #~ msgid "Image filename could not be generated" #~ msgstr "Le nom du fichier n'a pas pu être généré" @@ -1995,9 +2071,23 @@ msgstr "A_ffichage" #~ msgid "Backup image already exists" #~ msgstr "Une sauvegarde existe déjà" +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Destination: %(destination)s\n" +#~ "Error: %(errorno)s %(strerror)s" +#~ msgstr "" +#~ "Source : %(source)s\n" +#~ "Destination : %(destination)s\n" +#~ "Erreurr : %(errorno)s %(strerror)s" + #~ msgid "The image was not copied." #~ msgstr "L'image n'a pas été copiée." +#, python-format +#~ msgid "Unique identifier '%s' added" +#~ msgstr "Identifant unique '%s' ajouté" + #, python-format #~ msgid "" #~ "Subfolder: %(subfolder)s\n" @@ -2012,6 +2102,16 @@ msgstr "A_ffichage" #~ msgid "%s images skipped" #~ msgstr "%s images non prises en compte" +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Destination: %(destination)s\n" +#~ "Error: %(errno)s %(strerror)s" +#~ msgstr "" +#~ "Source : %(source)s\n" +#~ "Destination : %(destination)s\n" +#~ "Erreur : %(errno)s %(strerror)s" + #~ msgid "Image has no thumbnail" #~ msgstr "L'image n'a pas d'aperçu" @@ -2025,6 +2125,9 @@ msgstr "A_ffichage" #~ msgid "Image already exists" #~ msgstr "L'image existe déjà" +#~ msgid "Download copying error" +#~ msgstr "Erreur de copie lors du transfert" + #, python-format #~ msgid "" #~ "Destination directory could not be created\n" @@ -2042,9 +2145,15 @@ msgstr "A_ffichage" #~ msgid "images skipped" #~ msgstr "Images non prises en compte" +#~ msgid "_Download " +#~ msgstr "_Transfert " + #~ msgid "images downloaded" #~ msgstr "Images transférées" +#~ msgid "Preferences were changed." +#~ msgstr "Les préférences ont été modifiées" + #~ msgid "list image file extensions the program recognizes and exit" #~ msgstr "" #~ "affiche les extensions de fichier reconnues par l'application et quitte " @@ -2060,9 +2169,16 @@ msgstr "A_ffichage" #~ "Un numéro d'image a été spécifié mais le nom de l'image ne comporte aucun " #~ "numéro" +#, python-format +#~ msgid "error generating name with component %s" +#~ msgstr "Erreur dans la génération du nom avec le composant %s" + #~ msgid "Image Rename" #~ msgstr "Renommage des images" +#~ msgid "Missing Backup Devices" +#~ msgstr "Volumes de sauvegarde absents" + #~ msgid "Image Name Conflicts" #~ msgstr "Conflits de nom d'images" @@ -2107,15 +2223,29 @@ msgstr "A_ffichage" #~ msgid "Exit program after completion of successful download" #~ msgstr "Quitter l'application à la suite d'un transfert réussi" +#~ msgid "Ignore" +#~ msgstr "Ignorer" + #~ msgid "" #~ "If you disable automatic detection, choose the exact location of the images." #~ msgstr "" #~ "Si la détection automatique est désactivée, choisissez un emplacement pour " #~ "les images." +#~ msgid "Report an error" +#~ msgstr "Rapporter une erreur" + +#~ msgid "Report a warning" +#~ msgstr "Rapporter un avertissement" + #~ msgid "Start downloading upon image device insertion" #~ msgstr "Démarrer le transfert lors de l'insertion d'un volume d'images" +#~ msgid "Specify what to do when there are no backup devices." +#~ msgstr "" +#~ "Spécifiez quelle action entreprendre quand il n'y a aucun volume de " +#~ "sauvegarde." + #~ msgid "" #~ "Specify whether image and folder names should have any characters removed " #~ "that are not allowed by other operating systems." @@ -2123,6 +2253,12 @@ msgstr "A_ffichage" #~ "Spécifiez s'il faut enlever du nom des images et des dossiers tout caractère " #~ "non autorisé par d'autres systèmes d'exploitation." +#~ msgid "_Photos" +#~ msgstr "_Photos" + +#~ msgid "_Thumbnails" +#~ msgstr "_Vignettes" + #~ msgid "Download Folder" #~ msgstr "Transfert" @@ -2188,6 +2324,9 @@ msgstr "A_ffichage" #~ "images.\n" #~ "Source : %s" +#~ msgid "Backup device missing" +#~ msgstr "Volume de sauvegarde absent" + #~ msgid "This device has no images to download from." #~ msgstr "Aucune image à transféré depuis le volume." @@ -2206,6 +2345,11 @@ msgstr "A_ffichage" #~ msgid "%s metadata is not present in image" #~ msgstr "La métadonnée %s n'est pas présente dans l'image" +#, python-format +#~ msgid "Error in date time component. Value %s appears invalid" +#~ msgstr "" +#~ "Erreur dans le composant de date/heure. La valeur %s semble non valide" + #~ msgid "" #~ "Image devices are devices from which to download photos, such as cameras, " #~ "memory cards or Portable Storage Devices.\n" @@ -2226,6 +2370,9 @@ msgstr "A_ffichage" #~ "difficilement voire pas du tout, essayez de le paramétrer en mode PTP. Si ce " #~ "n'est pas possible, utilisez un lecteur de cartes." +#~ msgid "It may be corrupted" +#~ msgstr "Il est peut-être corrompu" + #~ msgid "Subsecond metadata not present in image" #~ msgstr "L'image ne contient pas la métadonnée sous-secondes" @@ -2245,6 +2392,14 @@ msgstr "A_ffichage" #~ "des sous-dossiers vides. S'il vous plait utiliser un autre sous dossier en " #~ "nommant les options." +#~ msgid "Enter a new job code, or select a previous one." +#~ msgstr "" +#~ "Saisissez une nouvelle étiquette de transfert, ou choisissez un précédemment " +#~ "ajouté" + +#~ msgid "Enter a new job code." +#~ msgstr "Saisissez une nouvelle étiquette de transfert" + #~ msgid "Should this device or partition be used to download images from?" #~ msgstr "" #~ "Voulez-vous utiliser ce périphérique ou cette partition comme source de " @@ -2289,6 +2444,26 @@ msgstr "A_ffichage" #~ "Première image : %(image1)s %(image1_date_time)s:%(image1_subseconds)s\n" #~ "Seconde image : %(image2)s %(image2_date_time)s:%(image2_subseconds)s" +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Partially generated filename: %(newname)s\n" +#~ "Destination: %(destination)s\n" +#~ "Problem: %(problem)s" +#~ msgstr "" +#~ "Source : %(source)s\n" +#~ "Nom de fichier patiellement généré : %(newname)s\n" +#~ "Destination : %(destination)s\n" +#~ "Problème : %(problem)s" + +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Destination: %(destination)s\n" +#~ msgstr "" +#~ "Source : %(source)s\n" +#~ "Destination : %(destination)s\n" + #, python-format #~ msgid "" #~ "Sorry, this image location does not exist:\n" diff --git a/po/it.po b/po/it.po index 2fc4e31..e0d58fb 100644 --- a/po/it.po +++ b/po/it.po @@ -7,166 +7,166 @@ msgid "" msgstr "" "Project-Id-Version: rapid\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2010-05-27 22:33-0500\n" -"PO-Revision-Date: 2010-05-28 20:39+0000\n" +"POT-Creation-Date: 2010-07-02 22:51-0500\n" +"PO-Revision-Date: 2010-07-05 00:43+0000\n" "Last-Translator: Marco Solari \n" "Language-Team: Italian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-05-29 18:48+0000\n" +"X-Launchpad-Export-Date: 2010-07-06 19:08+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Translators: if neccessary, for guidance in how to translate this program, you may see http://damonlynch.net/translate.html -#: rapid/rapid.py:104 rapid/rapid.py:4447 rapid/glade3/rapid.glade.h:72 +#: rapid/rapid.py:122 rapid/rapid.py:6181 rapid/glade3/rapid.glade.h:71 msgid "Rapid Photo Downloader" msgstr "Rapid Photo Downloader" -#: rapid/rapid.py:394 +#: rapid/rapid.py:449 msgid "New York" msgstr "New York" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Manila" msgstr "Manila" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Prague" msgstr "Praga" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Helsinki" msgstr "Helsinki" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Wellington" msgstr "Wellington" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Tehran" msgstr "Teheran" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Kampala" msgstr "Kampala" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Paris" msgstr "Parigi" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Berlin" msgstr "Berlino" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Sydney" msgstr "Sidney" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Budapest" msgstr "Budapest" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Rome" msgstr "Roma" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Moscow" msgstr "Mosca" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Delhi" msgstr "Delhi" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Warsaw" msgstr "Varsavia" -#: rapid/rapid.py:398 +#: rapid/rapid.py:453 msgid "Jakarta" msgstr "Giacarta" -#: rapid/rapid.py:398 +#: rapid/rapid.py:453 msgid "Madrid" msgstr "Madrid" -#: rapid/rapid.py:398 +#: rapid/rapid.py:453 msgid "Stockholm" msgstr "Stoccolma" -#: rapid/rapid.py:425 +#: rapid/rapid.py:486 msgid "Invalid Downloads Today value.\n" msgstr "Il valore Downloads Oggi non è valido.\n" -#: rapid/rapid.py:426 +#: rapid/rapid.py:487 msgid "Resetting value to zero.\n" msgstr "Resetta i valori a zero.\n" -#: rapid/rapid.py:465 +#: rapid/rapid.py:526 msgid "'Start of day' preference value is corrupted.\n" msgstr "Il valore della preferenza 'Inizio del giorno' è corrotto.\n" -#: rapid/rapid.py:466 +#: rapid/rapid.py:527 msgid "Resetting to midnight.\n" msgstr "Si resetta a mezzanotte.\n" -#: rapid/rapid.py:492 +#: rapid/rapid.py:553 msgid "Error in Photo Rename preferences" msgstr "Errore nelle preferenze di Rinomina Foto" -#: rapid/rapid.py:523 rapid/rapid.py:1567 +#: rapid/rapid.py:584 rapid/rapid.py:1689 msgid "Sorry,these preferences contain an error:\n" msgstr "Scusa ma queste preferenze contengono un errore:\n" -#: rapid/rapid.py:534 +#: rapid/rapid.py:595 msgid "Resetting to default values." msgstr "Si resettano ai valori di default." #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:609 rapid/renamesubfolderprefs.py:196 +#: rapid/rapid.py:670 rapid/renamesubfolderprefs.py:198 msgid "Job code" msgstr "Codice lavoro" -#: rapid/rapid.py:677 +#: rapid/rapid.py:738 msgid "Error in Video Rename preferences" msgstr "Errore nelle preferenze di Rinomina Video" -#: rapid/rapid.py:695 +#: rapid/rapid.py:756 msgid "Error in Photo Download Subfolders preferences" msgstr "Errore nelle preferenze di Scarica Sottocartelle Foto" -#: rapid/rapid.py:712 +#: rapid/rapid.py:773 msgid "Error in Video Download Subfolders preferences" msgstr "Errore nelle preferenze di Scarica Sottocartelle Video" -#: rapid/rapid.py:745 rapid/rapid.py:1492 +#: rapid/rapid.py:806 rapid/rapid.py:1539 msgid "photos and videos" msgstr "foto e video" -#: rapid/rapid.py:747 rapid/rapid.py:1502 rapid/rapid.py:1782 +#: rapid/rapid.py:808 rapid/rapid.py:1549 rapid/rapid.py:1658 msgid "photos" msgstr "foto" -#: rapid/rapid.py:880 +#: rapid/rapid.py:943 msgid "Select a folder to download photos to" msgstr "Scegliere la cartella in cui scaricare le foto" -#: rapid/rapid.py:898 +#: rapid/rapid.py:961 msgid "Select a folder to download videos to" msgstr "Selezionare una cartella in cui scaricare i video" -#: rapid/rapid.py:980 +#: rapid/rapid.py:1043 #, python-format msgid "Select a folder containing %(file_types)s" msgstr "Selezionare una cartella contenente %(file_types)s" -#: rapid/rapid.py:1002 +#: rapid/rapid.py:1065 #, python-format msgid "Select a folder in which to backup %(file_types)s" msgstr "Selezionare una cartella in cui salvare %(file_types)s" #. Translators: please do not modify or leave out html formatting tags like and . These are used to format the text the users sees -#: rapid/rapid.py:1095 +#: rapid/rapid.py:1146 msgid "" "Warning: There is insufficient metadata to fully generate the " "name. Please use other renaming options." @@ -175,7 +175,7 @@ msgstr "" "completamente il nome. Si prega di utilizzare altre opzioni per la " "rinomina." -#: rapid/rapid.py:1129 +#: rapid/rapid.py:1182 msgid "" "Warning: There is insufficient metadata to fully generate " "subfolders. Please use other subfolder naming options." @@ -185,25 +185,25 @@ msgstr "" "nominare le sottocartelle." #. Translators: you should not modify or leave out the %s. This is a code used by the programming language python to insert a value that thes user will see -#: rapid/rapid.py:1133 +#: rapid/rapid.py:1186 #, python-format msgid "Example: %s" msgstr "Esempio: %s" -#: rapid/rapid.py:1159 +#: rapid/rapid.py:1212 msgid "" "Downloads today value not updated, as a download is currently occurring" msgstr "" "Il numero dei downloads di oggi non è stato aggiornato, in quanto è in corso " "un download" -#: rapid/rapid.py:1175 +#: rapid/rapid.py:1228 msgid "Stored number value not updated, as a download is currently occurring" msgstr "" "Il numero delle archiviazioni non è stato aggiornato, in quanto è in corso " "un download" -#: rapid/rapid.py:1205 +#: rapid/rapid.py:1258 #, python-format msgid "" "The %(filetype)s subfolder preferences had some unnecessary values removed." @@ -212,7 +212,7 @@ msgstr "" "sottocartella %(filetype)s." #. Preferences list is now empty -#: rapid/rapid.py:1210 +#: rapid/rapid.py:1263 #, python-format msgid "" "The %(filetype)s subfolder preferences entered are invalid and cannot be " @@ -224,59 +224,95 @@ msgstr "" "Saranno reimpostate ai loro valori di default." #. check subfolder preferences for bad values -#: rapid/rapid.py:1224 rapid/rapid.py:1504 rapid/rapid.py:2533 +#: rapid/rapid.py:1277 rapid/rapid.py:1551 msgid "photo" msgstr "photo" -#: rapid/rapid.py:1225 rapid/rapid.py:1499 rapid/rapid.py:2541 +#: rapid/rapid.py:1278 rapid/rapid.py:1546 msgid "video" msgstr "video" #. Translators: this value is used as an example device when automatic backup device detection is enabled. You should translate this. -#: rapid/rapid.py:1468 +#: rapid/rapid.py:1515 msgid "externaldrive1" msgstr "driveesterno1" #. Translators: this value is used as an example device when automatic backup device detection is enabled. You should translate this. -#: rapid/rapid.py:1470 +#: rapid/rapid.py:1517 msgid "externaldrive2" msgstr "driveesterno1" -#: rapid/rapid.py:1494 rapid/rapid.py:1780 +#: rapid/rapid.py:1541 rapid/rapid.py:1656 msgid "photos or videos" msgstr "foto o video" -#: rapid/rapid.py:1497 +#: rapid/rapid.py:1544 msgid "videos" msgstr "video" +#: rapid/rapid.py:1556 +#, python-format +msgid "" +"%(date)s\n" +"%(time)s" +msgstr "" +"%(date)s\n" +"%(time)s" + +#: rapid/rapid.py:1558 +#, python-format +msgid "%(date)s %(time)s" +msgstr "%(date)s %(time)s" + +#: rapid/rapid.py:1561 +#, python-format +msgid "%(hour)s:%(minute)s:%(second)s:%(subsecond)s" +msgstr "%(hour)s:%(minute)s:%(second)s:%(subsecond)s" + +#: rapid/rapid.py:1568 +#, python-format +msgid "%(date)s %(hour)s:%(minute)s:%(second)s:%(subsecond)s" +msgstr "%(date)s %(hour)s:%(minute)s:%(second)s:%(subsecond)s" + +#: rapid/rapid.py:1596 rapid/rapid.py:2242 +msgid "subfolder and filename" +msgstr "sottocartella e nome del file" + +#: rapid/rapid.py:1598 rapid/rapid.py:2244 +msgid "filename" +msgstr "nome del file" + +#: rapid/rapid.py:1600 rapid/rapid.py:2246 +msgid "subfolder" +msgstr "sottocartella" + #. This refers to when a device like a hard drive is having its contents scanned, #. looking for photos or videos. It is visible initially in the progress bar for each device -#. (which normally holds "x of y photos"). +#. (which normally holds "x photos and videos"). #. It maybe displayed only briefly if the contents of the device being scanned is small. -#: rapid/rapid.py:1556 +#: rapid/rapid.py:1672 msgid "scanning..." msgstr "scansione in corso..." -#: rapid/rapid.py:1663 +#: rapid/rapid.py:1783 msgid "The following download path could not be created:\n" msgstr "Il seguente percorso per lo scarico non ha potuto essere creato:\n" -#: rapid/rapid.py:1664 +#: rapid/rapid.py:1784 #, python-format msgid "%(path)s: " msgstr "%(path)s: " -#: rapid/rapid.py:1665 rapid/rapid.py:1666 rapid/rapid.py:1681 -#: rapid/rapid.py:1682 rapid/rapid.py:2364 rapid/rapid.py:2367 +#: rapid/rapid.py:1785 rapid/rapid.py:1786 rapid/rapid.py:1801 +#: rapid/rapid.py:1802 rapid/rapid.py:2063 rapid/rapid.py:2066 msgid "Download cannot proceed" msgstr "Il download non può procedere" -#: rapid/rapid.py:1679 rapid/rapid.py:3381 +#: rapid/rapid.py:1799 rapid/rapid.py:4846 msgid "There is an error in the program preferences." msgstr "C'è un errore nelle referenze programma." -#: rapid/rapid.py:1680 +#: rapid/rapid.py:1800 msgid "" "\n" "Please check preferences, restart the program, and try again." @@ -288,10 +324,10 @@ msgstr "" #. It refers to the actual number of photos that can be copied. For example, the user might see the following: #. '0 of 512 photos' or '0 of 10 videos' or '0 of 202 photos and videos'. #. This particular text is displayed to the user before the download has started. -#: rapid/rapid.py:1791 +#: rapid/rapid.py:1974 #, python-format -msgid "0 of %(number)s %(filetypes)s" -msgstr "0 di %(number)s %(filetypes)s" +msgid "%(number)s %(filetypes)s" +msgstr "%(number)s %(filetypes)s" #. Translators: as you have already seen, the text can contain values that should not be modified or left out by you, for example %s. #. This text is another example of that, but it is is a little more complex. Here there are two values which will be displayed @@ -299,350 +335,217 @@ msgstr "0 di %(number)s %(filetypes)s" #. %(number)s should be left exactly as is: 'number' should not be translated. The same applies to %(device)s: 'device' should #. not be translated. Generally speaking, if translating the sentence requires it, you can move items like '%(xyz)s' around #. in a sentence, but you should never modify them or leave them out. -#: rapid/rapid.py:1803 +#: rapid/rapid.py:1985 #, python-format msgid "Device scan complete: found %(number)s %(filetypes)s on %(device)s" msgstr "" "Scansione del dispositivo completata: trovati %(number)s %(filetypes)s su " "%(device)s" -#: rapid/rapid.py:1810 +#: rapid/rapid.py:1992 #, python-format msgid "Device scan complete: no %(filetypes)s found on %(device)s" msgstr "" "Scansione del dispositivo completata: nessun %(filetypes)s trovato su " "%(device)s" -#: rapid/rapid.py:1844 -#, python-format -msgid "%(filetype)s filename could not be generated" -msgstr "Il nome di file %(filetype)s non ha potuto essere generato" +#. This message informs the user that the device (e.g. camera, hard drive or memory card) was automatically unmounted and they can now remove it +#: rapid/rapid.py:2013 +msgid "The device can now be safely removed" +msgstr "Il dispositivo può adesso essere rimosso in modo sicuro" -#. '%(source)s' and '%(problem)s' are two more examples of text that should not be modified or left out -#: rapid/rapid.py:1846 +#: rapid/rapid.py:2019 #, python-format -msgid "" -"Source: %(source)s\n" -"Problem: %(problem)s" -msgstr "" -"Origine: %(source)s\n" -"Problema: %(problem)s" +msgid "%(noFiles)s %(filetypes)s downloaded" +msgstr "%(noFiles)s %(filetypes)s scaricati" -#: rapid/rapid.py:1850 +#: rapid/rapid.py:2022 #, python-format -msgid "" -"%(filetype)s filename could not be properly generated. Check to ensure there " -"is sufficient metadata." -msgstr "" -"Il nome di file %(filetype)s non ha potuto essere generato correttamente. " -"Verificare che ci siano sufficienti metadati." +msgid "%(noFiles)s %(filetypes)s failed to download" +msgstr "Impossibile scaricare %(noFiles)s %(filetypes)s" -#: rapid/rapid.py:1851 +#: rapid/rapid.py:2028 rapid/rapid.py:5627 +msgid "warnings" +msgstr "avvertenze" + +#: rapid/rapid.py:2030 rapid/rapid.py:5631 +msgid "errors" +msgstr "errori" + +#: rapid/rapid.py:2057 #, python-format -msgid "" -"Source: %(source)s\n" -"Partially generated filename: %(newname)s\n" -"Destination: %(destination)s\n" -"Problem: %(problem)s" -msgstr "" -"Sorgente: %(source)s\n" -"Nome file generato parzialmente: %(newname)s\n" -"Destinazione: %(destination)s\n" -"Problema: %(problem)s" +msgid "Source: %s\n" +msgstr "Sorgente: %s\n" -#: rapid/rapid.py:1859 rapid/rapid.py:1864 rapid/rapid.py:1883 -#: rapid/rapid.py:2207 +#: rapid/rapid.py:2059 #, python-format -msgid "" -"Source: %(source)s\n" -"Destination: %(destination)s" -msgstr "" -"Origine: %(source)s\n" -"Destinazione: %(destination)s" +msgid "Device: %s\n" +msgstr "Dispositivo: %s\n" -#: rapid/rapid.py:1861 +#: rapid/rapid.py:2060 #, python-format -msgid "Unique identifier '%s' added" -msgstr "Aggiunto identificatore univoco '%s'" +msgid "Destination: %s" +msgstr "Destinazione: %s" + +#: rapid/rapid.py:2061 rapid/rapid.py:2064 +msgid "Could not create temporary download directory" +msgstr "Impossibile creare la cartella temporanea" -#: rapid/rapid.py:1869 rapid/rapid.py:2270 +#: rapid/rapid.py:2064 +msgid "Error:" +msgstr "Errore:" + +#: rapid/rapid.py:2088 +msgid "Backup path does not exist" +msgstr "Il percorso di salvataggio non esiste" + +#: rapid/rapid.py:2089 #, python-format -msgid "Source: %(source)s" -msgstr "Origine: %(source)s" +msgid "The path %s could not be created" +msgstr "Il percorso %s could not be created" -#: rapid/rapid.py:1877 rapid/rapid.py:1882 -msgid "Download copying error" -msgstr "Errore nella copia del download" +#: rapid/rapid.py:2090 +msgid "No backups can occur" +msgstr "Non può avvenire alcun salvataggio" -#: rapid/rapid.py:1878 +#: rapid/rapid.py:2117 #, python-format msgid "" "Source: %(source)s\n" "Destination: %(destination)s\n" -"Error: %(errorno)s %(strerror)s" +"%(problem)s" msgstr "" -"Origine: %(source)s\n" +"Sorgente: %(source)s\n" "Destinazione: %(destination)s\n" -"Errore: %(errorno)s %(strerror)s" +"%(problem)s" -#: rapid/rapid.py:1880 rapid/rapid.py:1885 +#: rapid/rapid.py:2146 rapid/rapid.py:2492 rapid/rapid.py:2527 +#: rapid/rapid.py:2555 rapid/rapid.py:2586 rapid/rapid.py:2605 #, python-format -msgid "The %(filetype)s was not copied." -msgstr "Il %(filetype)s non è stato copiato." - -#: rapid/rapid.py:1889 msgid "" -"Photos detected with the same filenames, but taken at different times:" -msgstr "" -"Rilevate foto con gli stessi nomi di file, ma scattate ad ore diverse:" - -#: rapid/rapid.py:1890 -#, python-format -msgid "" -"First photo: %(image1)s %(image1_date_time)s:%(image1_subseconds)s\n" -"Second photo: %(image2)s %(image2_date_time)s:%(image2_subseconds)s" +"Source: %(source)s\n" +"Destination: %(destination)s" msgstr "" -"Prima foto: %(image1)s %(image1_date_time)s:%(image1_subseconds)s\n" -"Seconda foto: %(image2)s %(image2_date_time)s:%(image2_subseconds)s" - -#: rapid/rapid.py:1914 rapid/rapid.py:1927 -#, python-format -msgid "Could not open %(filetype)s" -msgstr "Could not open %(filetype)s" - -#: rapid/rapid.py:1915 rapid/rapid.py:1928 -#, python-format -msgid "Source: %s" -msgstr "Origine: %s" +"Origine: %(source)s\n" +"Destinazione: %(destination)s" -#: rapid/rapid.py:1950 -#, python-format -msgid "%(filetype)s has no metadata" -msgstr "%(filetype)s non ha metadati" +#. hopefully inst will never be None, but just to be safe... +#: rapid/rapid.py:2161 +msgid "Please check your system and try again." +msgstr "Si prega di controllare il proprio sistema e riprovare." -#: rapid/rapid.py:1951 -#, python-format -msgid "" -"Metadata is essential for generating subfolder and/or file names.\n" -"Source: %s" +#: rapid/rapid.py:2181 +msgid "Photos detected with the same filenames, but taken at different times" msgstr "" -"I metadati sono essenziali per generare le sottocartelle e/o i nomi dei " -"files.\n" -"Sorgente: %s" +"Sono state rilevate fotografie con gli stessi nomi di file, ma prese ad " +"orari diversi" -#: rapid/rapid.py:1962 -msgid "" -"Subfolder name could not be properly generated. Check to ensure there is " -"sufficient metadata." -msgstr "" -"Il nome della sottocartella no ha potuto essere generato correttamente. " -"Controllre che ci siano metadati sufficienti." +#: rapid/rapid.py:2221 +msgid "Photo has already been downloaded" +msgstr "La fotografia è già stata scaricata" -#: rapid/rapid.py:1963 +#: rapid/rapid.py:2222 rapid/rapid.py:2621 #, python-format -msgid "" -"Subfolder: %(subfolder)s\n" -"File: %(file)s\n" -"Problem: %(problem)s" -msgstr "" -"Sottocartella: %(subfolder)s\n" -"File: %(file)s\n" -"Problema: %(problem)s" +msgid "Source: %(source)s" +msgstr "Origine: %(source)s" #. A new day, according the user's preferences of what time a day begins, has started -#: rapid/rapid.py:2147 +#: rapid/rapid.py:2420 msgid "New day has started - resetting 'Downloads Today' sequence number" msgstr "" "Un nuovo giorno è iniziato - si resetta il numero di sequenza 'Downloads " "Oggi'" -#: rapid/rapid.py:2206 +#: rapid/rapid.py:2491 #, python-format msgid "Backup of %(file_type)s already exists" msgstr "Una copia di salvataggio di %(file_type)s esiste già" -#: rapid/rapid.py:2210 +#: rapid/rapid.py:2495 #, python-format msgid "Backup %(file_type)s overwritten" msgstr "Sovrascritta copia di salvataggio di %(file_type)s" -#: rapid/rapid.py:2215 +#: rapid/rapid.py:2499 #, python-format msgid "%(file_type)s not backed up to %(volume)s" msgstr "%(file_type)s non salvati in %(volume)s" -#: rapid/rapid.py:2217 +#: rapid/rapid.py:2501 #, python-format msgid "%(file_type)s not backed up" msgstr "%(file_type)s non salvati" -#: rapid/rapid.py:2243 rapid/rapid.py:2260 +#: rapid/rapid.py:2524 rapid/rapid.py:2552 rapid/rapid.py:2585 +#: rapid/rapid.py:2604 msgid "Backing up error" msgstr "Errore durante il backup" -#: rapid/rapid.py:2244 +#: rapid/rapid.py:2525 rapid/rapid.py:2553 #, python-format msgid "Destination directory could not be created: %(directory)s\n" msgstr "Non si è potuto creare la cartella di destinazione: %(directory)s\n" -#: rapid/rapid.py:2246 +#: rapid/rapid.py:2529 rapid/rapid.py:2588 #, python-format -msgid "" -"Source: %(source)s\n" -"Destination: %(destination)s\n" -msgstr "" -"Sorgente: %(source)s\n" -"Destinazione: %(destination)s\n" +msgid "Error: %(inst)s" +msgstr "Errore: %(inst)s" -#: rapid/rapid.py:2248 -#, python-format -msgid "Error: %(errno)s %(strerror)s" -msgstr "Errore: %(errno)s %(strerror)s" - -#: rapid/rapid.py:2249 rapid/rapid.py:2263 +#: rapid/rapid.py:2530 rapid/rapid.py:2558 rapid/rapid.py:2589 +#: rapid/rapid.py:2608 #, python-format msgid "The %(file_type)s was not backed up." msgstr "Il %(file_type)s non è stato salvato." -#: rapid/rapid.py:2261 +#: rapid/rapid.py:2557 rapid/rapid.py:2607 #, python-format -msgid "" -"Source: %(source)s\n" -"Destination: %(destination)s\n" -"Error: %(errno)s %(strerror)s" -msgstr "" -"Origine: %(source)s\n" -"Destinazione: %(destination)s\n" -"Errore: %(errno)s %(strerror)s" +msgid "Error: %(errno)s %(strerror)s" +msgstr "Errore: %(errno)s %(strerror)s" -#: rapid/rapid.py:2269 +#: rapid/rapid.py:2620 #, python-format msgid "%(file_type)s could not be backed up" msgstr "%(file_type)s non ha potuto essere salvato" -#: rapid/rapid.py:2272 +#: rapid/rapid.py:2623 msgid "No suitable backup volume was found" msgstr "Non trovato alcun volume di salvataggio adatto" -#: rapid/rapid.py:2274 +#: rapid/rapid.py:2625 msgid "A backup location was not found" msgstr "Una locazione per il salvataggio non è stata trovata" -#. This message informs the user that the device (e.g. camera, hard drive or memory card) was automatically unmounted and they can now remove it -#: rapid/rapid.py:2288 -msgid "The device can now be safely removed" -msgstr "Il dispositivo può adesso essere rimosso in modo sicuro" - -#: rapid/rapid.py:2294 -#, python-format -msgid "%(noFiles)s %(filetypes)s downloaded" -msgstr "%(noFiles)s %(filetypes)s scaricati" - -#: rapid/rapid.py:2297 -#, python-format -msgid "%(noFiles)s %(filetypes)s skipped" -msgstr "%(noFiles)s %(filetypes)s ignorati" - -#: rapid/rapid.py:2303 rapid/rapid.py:4027 -msgid "warnings" -msgstr "avvertenze" - -#: rapid/rapid.py:2305 rapid/rapid.py:4029 -msgid "errors" -msgstr "errori" - -#: rapid/rapid.py:2331 rapid/rapid.py:2823 rapid/rapid.py:2838 -msgid "Photo thumbnail could not be extracted" -msgstr "La miniatura della foto non ha potuto essere estratta" - -#: rapid/rapid.py:2358 -#, python-format -msgid "Source: %s\n" -msgstr "Sorgente: %s\n" - -#: rapid/rapid.py:2360 -#, python-format -msgid "Device: %s\n" -msgstr "Dispositivo: %s\n" - -#: rapid/rapid.py:2361 -#, python-format -msgid "Destination: %s" -msgstr "Destinazione: %s" - -#: rapid/rapid.py:2362 rapid/rapid.py:2365 -msgid "Could not create temporary download directory" -msgstr "Impossibile creare la cartella temporanea" - -#: rapid/rapid.py:2365 -msgid "Error:" -msgstr "Errore:" - -#: rapid/rapid.py:2382 +#: rapid/rapid.py:2679 #, python-format msgid "This device has no %(types_searched_for)s to download from." msgstr "Questo dispositivo non ha %(types_searched_for)s da cui scaricare." -#: rapid/rapid.py:2417 +#: rapid/rapid.py:2733 #, python-format msgid "Download has started from %s" msgstr "Il download è inziato da %s" -#: rapid/rapid.py:2434 -msgid "Backup path does not exist" -msgstr "Il percorso di salvataggio non esiste" - -#: rapid/rapid.py:2435 +#: rapid/rapid.py:2736 #, python-format -msgid "The path %s could not be created" -msgstr "Il percorso %s could not be created" - -#: rapid/rapid.py:2436 rapid/rapid.py:2444 -msgid "No backups can occur" -msgstr "Non può avvenire alcun salvataggio" - -#: rapid/rapid.py:2442 -msgid "Backup device missing" -msgstr "Manca il dispositivo di backup" - -#: rapid/rapid.py:2443 -msgid "No backup device was automatically detected" -msgstr "Nessun dispositivo di salvataggio è stato rilevato automaticamente" - -#: rapid/rapid.py:2534 rapid/rapid.py:3343 rapid/rapid.py:3345 -msgid "Photo" -msgstr "Foto" - -#: rapid/rapid.py:2535 -msgid "Photo skipped" -msgstr "Foto ignorata" - -#: rapid/rapid.py:2536 -msgid "Photo already exists" -msgstr "La foto esiste già" - -#: rapid/rapid.py:2542 rapid/rapid.py:3343 -msgid "Video" -msgstr "Video" +msgid "Attempting to download %s files" +msgstr "Tentativo di scaricare %s files" -#: rapid/rapid.py:2543 -msgid "Video skipped" -msgstr "Video ignorato" - -#: rapid/rapid.py:2544 -msgid "Video already exists" -msgstr "Il video esiste già" - -#: rapid/rapid.py:2592 +#. reset the progress bar to update the status of this download attempt +#: rapid/rapid.py:2769 rapid/rapid.py:2836 #, python-format msgid "%(number)s of %(total)s %(filetypes)s" msgstr "%(number)s di %(total)s %(filetypes)s" -#: rapid/rapid.py:2607 rapid/rapid.py:2611 +#: rapid/rapid.py:2832 +#, python-format +msgid "%(number)s of %(total)s %(filetypes)s (%(remaining)s remaining)" +msgstr "%(number)s di %(total)s %(filetypes)s (%(remaining)s rimanenti)" + +#: rapid/rapid.py:2857 rapid/rapid.py:2861 msgid "Could not delete photo or video from device" msgstr "Impossibile eliminare la foto o il video dal dispositivo" -#: rapid/rapid.py:2608 +#: rapid/rapid.py:2858 #, python-format msgid "" "Photo: %(source)s\n" @@ -651,45 +554,63 @@ msgstr "" "Foto: %(source)s\n" "Errore: %(errno)s %(strerror)s" -#: rapid/rapid.py:2612 +#: rapid/rapid.py:2862 #, python-format msgid "Photo: %(source)s" msgstr "Foto: %(source)s" -#: rapid/rapid.py:2614 +#: rapid/rapid.py:2864 #, python-format msgid "Deleted %(number)i %(filetypes)s from device" msgstr "Eliminati %(number)i %(filetypes)s dal dispositivo" -#: rapid/rapid.py:2624 +#: rapid/rapid.py:2871 #, python-format msgid "Download complete from %s" msgstr "Download completato da %s" #. Device refers to a thing like a camera, memory card in its reader, external hard drive, Portable Storage Device, etc. -#: rapid/rapid.py:2700 +#: rapid/rapid.py:2993 rapid/rapid.py:3466 msgid "Device" msgstr "Dispositivo" #. Size refers to the total size of images on the device, typically in MB or GB -#: rapid/rapid.py:2705 +#: rapid/rapid.py:2998 rapid/rapid.py:3455 msgid "Size" msgstr "Dimensione" -#: rapid/rapid.py:2708 +#: rapid/rapid.py:3001 msgid "Download Progress" msgstr "Avanzamento del download" -#: rapid/rapid.py:2824 rapid/rapid.py:2839 -msgid "It may be corrupted" -msgstr "Può essere corrotto" +#: rapid/rapid.py:3089 +msgid "Downloading From Cameras" +msgstr "Scarico dalle Macchine Fotografiche" + +#: rapid/rapid.py:3095 +msgid "Downloading directly from a camera may work poorly or not at all" +msgstr "" +"Lo scarico diretto da una macchina fotografica può funzionare male o per " +"nulla" + +#: rapid/rapid.py:3096 +msgid "" +"Downloading from a card reader always works and is generally much faster. It " +"is strongly recommended to use a card reader." +msgstr "" +"Lo scarico da un lettore di schede funziona sempre ed è generalmente molto " +"più veloce. E' fortemente raccomandato l'utilizzo di un lettore di schede." + +#: rapid/rapid.py:3110 +msgid "_Show this message again" +msgstr "Ri_mostra questo messaggio" -#: rapid/rapid.py:2869 +#: rapid/rapid.py:3145 msgid "Device Detected" msgstr "Dispositivo rilevato" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2878 +#: rapid/rapid.py:3154 msgid "" "Should this device or partition be used to download photos or videos from?" msgstr "" @@ -697,72 +618,159 @@ msgstr "" "scaricare foto o vodeo?" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2897 +#: rapid/rapid.py:3173 msgid "_Remember this choice" msgstr "_Ricorda questa scelta" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2934 +#: rapid/rapid.py:3210 #, python-format msgid "%s selected for downloading from" msgstr "%s selezionato come sorgente per il download" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2937 +#: rapid/rapid.py:3213 msgid "This device or partition will always be used to download from" msgstr "" "Questo dispositivo o partizione sarà sempre usato come sorgente per il " "download" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2940 +#: rapid/rapid.py:3216 #, python-format msgid "%s rejected as a download device" msgstr "%s rifiutato come sorgente per il download" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2943 +#: rapid/rapid.py:3219 msgid "This device or partition will never be used to download from" msgstr "" "Questo dispositivo o partizione non sarà mai usato come sorgente per il " "download" -#: rapid/rapid.py:2950 +#: rapid/rapid.py:3226 msgid "Remove all Job Codes?" msgstr "Elimina tutti i Codici Lavoro?" -#: rapid/rapid.py:2967 +#: rapid/rapid.py:3243 msgid "Should all Job Codes be removed?" msgstr "Occorre rimuovere tutti i Codici Lavoro?" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:2995 +#: rapid/rapid.py:3271 msgid "Enter a Job Code" msgstr "Inserire un Codice Lavoro" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:3013 -msgid "Enter a new job code, or select a previous one." -msgstr "Inserire un nuovo codice lavoro, o selezionarne uno precedente." +#: rapid/rapid.py:3290 +msgid "Enter a new Job Code, or select a previous one" +msgstr "Inserire un nuovo Codice Lavoro, o selezionarne uno precedente" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:3016 -msgid "Enter a new job code." -msgstr "Inserire un nuovo codice lavoro" +#: rapid/rapid.py:3293 +msgid "Enter a new Job Code" +msgstr "Inserire un nuovo Codice Lavoro" -#: rapid/rapid.py:3021 +#: rapid/rapid.py:3298 rapid/rapid.py:4417 msgid "Job Code:" msgstr "Codice Lavoro:" -#: rapid/rapid.py:3068 +#: rapid/rapid.py:3345 msgid "Job Code entered" msgstr "Codice Lavoro inserito" -#: rapid/rapid.py:3070 +#: rapid/rapid.py:3347 msgid "Job Code not entered" msgstr "Codice Lavoro non inserito" -#: rapid/rapid.py:3330 +#: rapid/rapid.py:3401 +msgid "Status" +msgstr "Stato" + +#: rapid/rapid.py:3409 +msgid "Type" +msgstr "Tipo" + +#: rapid/rapid.py:3418 rapid/rapid.py:4808 rapid/rapid.py:4810 +msgid "Photo" +msgstr "Foto" + +#: rapid/rapid.py:3420 +msgid "File" +msgstr "File" + +#: rapid/rapid.py:3435 +msgid "Job Code" +msgstr "Codice Lavoro" + +#: rapid/rapid.py:3445 +msgid "Date" +msgstr "Data" + +#: rapid/rapid.py:3477 rapid/renamesubfolderprefs.py:194 +msgid "Filename" +msgstr "Nome file" + +#: rapid/rapid.py:3488 +msgid "Path" +msgstr "Percorso" + +#: rapid/rapid.py:3843 +#, python-format +msgid "%(filetype)s was downloaded successfully" +msgstr "%(filetype)s è stato scaricato con successo" + +#: rapid/rapid.py:3845 +#, python-format +msgid "%(filetype)s was not downloaded" +msgstr "%(filetype)s non è stato scaricato" + +#: rapid/rapid.py:3847 +#, python-format +msgid "%(filetype)s was downloaded with warnings" +msgstr "%(filetype)s è stato scaricato con messaggi di avvertimento" + +#: rapid/rapid.py:3849 +#, python-format +msgid "%(filetype)s was downloaded but there were problems backing up" +msgstr "%(filetype)s è stato scaricato ma ci sono stati problemi nel backup" + +#: rapid/rapid.py:3851 +#, python-format +msgid "%(filetype)s was neither downloaded nor backed up" +msgstr "%(filetype)s non è stato scaricato nè è stato effettuato il backup" + +#: rapid/rapid.py:3853 +#, python-format +msgid "%(filetype)s is ready to be downloaded" +msgstr "%(filetype)s è pronto per lo scarico" + +#: rapid/rapid.py:3855 +#, python-format +msgid "%(filetype)s is about to be downloaded" +msgstr "%(filetype)s sta per essere scaricato" + +#: rapid/rapid.py:3857 +#, python-format +msgid "%(filetype)s will be downloaded with warnings" +msgstr "%(filetype)s sarà scaricato con messaggi di avvertimento" + +#: rapid/rapid.py:3859 +#, python-format +msgid "%(filetype)s cannot be downloaded" +msgstr "%(filetype)s non può essere scaricato" + +#: rapid/rapid.py:4240 +msgid "Preview" +msgstr "Anteprima" + +#: rapid/rapid.py:4439 +msgid "Enter a new Job Code and press Enter, or select an existing Job Code" +msgstr "" +"Inserire un nuovo Codice Lavoro e premere Invio, oppure selezionare un " +"Lavoro esistente" + +#: rapid/rapid.py:4795 #, python-format msgid "" "Sorry, this device location does not exist:\n" @@ -775,21 +783,25 @@ msgstr "" "\n" "Si prega di risolvere il problema, oppure modificare le tue preferenze." -#: rapid/rapid.py:3334 +#: rapid/rapid.py:4799 msgid "Problem with Device Location Folder" msgstr "Problema con la Cartella della Posizione del Dispositivo" -#: rapid/rapid.py:3350 +#: rapid/rapid.py:4808 +msgid "Video" +msgstr "Video" + +#: rapid/rapid.py:4815 #, python-format msgid "The %(file_type)s Download Folder does not exist.\n" msgstr "La Cartella di Download di %(file_type)s non esiste.\n" -#: rapid/rapid.py:3359 +#: rapid/rapid.py:4824 #, python-format msgid "The %(file_type)s Download Folder exists but cannot be written to.\n" msgstr "La Cartella di Download di %(file_type)s non è scrivibile.\n" -#: rapid/rapid.py:3364 +#: rapid/rapid.py:4829 msgid "" "Sorry, problems were encountered with your download folders. Please fix the " "problems or modify the preferences.\n" @@ -799,61 +811,68 @@ msgstr "" "prega di risolvere i problemi oppure modificare le tue preferenze.\n" "\n" -#: rapid/rapid.py:3367 +#: rapid/rapid.py:4832 msgid "Problem with Download Folder" msgstr "Problema con la Cartella di Download" -#: rapid/rapid.py:3369 +#: rapid/rapid.py:4834 msgid "Problem with Download Folders" msgstr "Problema con le Cartelle di Download" -#: rapid/rapid.py:3382 +#: rapid/rapid.py:4847 msgid "Some preferences will be reset." msgstr "Alcune preferenze saranno azzerate." -#: rapid/rapid.py:3416 +#: rapid/rapid.py:4880 +msgid "Displaying warning about downloading directly from camera" +msgstr "" +"Si visualizza un messaggio a proposito dello scarico diretto dalla macchina " +"fotografica" + +#: rapid/rapid.py:4890 #, python-format msgid "Prompting whether to use %s" msgstr "Si richiede se usare %s" -#: rapid/rapid.py:3444 +#: rapid/rapid.py:4917 msgid "Prompting for Job Code" msgstr "Si richiede un Codice Lavoro" -#: rapid/rapid.py:3448 +#: rapid/rapid.py:4921 msgid "Already prompting for Job Code, do not prompt again" msgstr "Si sta già richiedendo un Codice Lavoro, non si richiede di nuovo" -#: rapid/rapid.py:3463 -msgid "Starting downloads that have been waiting for a Job Code" -msgstr "Si iniziano i downloads che attendevano un Codice Lavoro" - -#: rapid/rapid.py:3467 +#: rapid/rapid.py:4938 msgid "Starting downloads" msgstr "Inizio download" -#: rapid/rapid.py:3482 +#. autostart is true +#: rapid/rapid.py:4942 +msgid "Starting downloads that have been waiting for a Job Code" +msgstr "Si iniziano i downloads che attendevano un Codice Lavoro" + +#: rapid/rapid.py:4984 #, python-format msgid "Creating photo download folder %(folder)s" msgstr "Si crea la cartella di download delle foto %(folder)s" -#: rapid/rapid.py:3487 +#: rapid/rapid.py:4989 #, python-format msgid "Failed to create default photo download folder %(folder)s" msgstr "" "Impossibile creare la cartella di download delle foto di default %(folder)s" -#: rapid/rapid.py:3491 +#: rapid/rapid.py:4993 #, python-format msgid "Creating video download folder %(folder)s" msgstr "Si crea la cartella di download per i video %(folder)s" -#: rapid/rapid.py:3496 +#: rapid/rapid.py:4998 #, python-format msgid "Failed to create default video download folder %(folder)s" msgstr "Impossibile creare la cartella di download per i video %(folder)s" -#: rapid/rapid.py:3521 +#: rapid/rapid.py:5023 msgid "" "A newer version of this program was previously run on this computer.\n" "\n" @@ -862,7 +881,7 @@ msgstr "" "computer.\n" "\n" -#: rapid/rapid.py:3523 +#: rapid/rapid.py:5025 msgid "" "Program preferences appear to be valid, but please check them to ensure " "correct operation." @@ -870,15 +889,15 @@ msgstr "" "Le preferenze del programma sembrano essere valide, ma occorre controllarle " "per assicurare la correttezza delle operazioni." -#: rapid/rapid.py:3525 +#: rapid/rapid.py:5027 msgid "Sorry, some preferences are invalid and will be reset." msgstr "Spiacente, alcune preferenze non sono valide e saranno ripristinate." -#: rapid/rapid.py:3526 +#: rapid/rapid.py:5028 msgid "Warning:" msgstr "Attenzione:" -#: rapid/rapid.py:3531 +#: rapid/rapid.py:5033 msgid "" "This version of the program is newer than the previously run version. " "Checking preferences." @@ -886,11 +905,11 @@ msgstr "" "Questa versione del programma è più recente della versione eseguita in " "precedenza. Si controllano le preferenze." -#: rapid/rapid.py:3538 +#: rapid/rapid.py:5040 msgid "Preferences were modified." msgstr "Le preferenze sono state modificate." -#: rapid/rapid.py:3539 +#: rapid/rapid.py:5041 msgid "" "This version of the program uses different preferences than the old version. " "Your preferences have been updated.\n" @@ -902,11 +921,11 @@ msgstr "" "\n" "Controllarle per assicurare la correttezza delle operazioni." -#: rapid/rapid.py:3543 +#: rapid/rapid.py:5045 msgid "No preferences needed to be changed." msgstr "Non occorre cambiare alcuna preferenza." -#: rapid/rapid.py:3545 +#: rapid/rapid.py:5047 msgid "" "This version of the program uses different preferences than the old version. " "Some of your previous preferences were invalid, and could not be updated. " @@ -916,131 +935,158 @@ msgstr "" "versione. Alcune delle preferenze precedenti non erano valide, e non hanno " "potuto essere aggiornate. Saranno reimpostate." -#: rapid/rapid.py:3555 +#: rapid/rapid.py:5057 msgid "Problem using pynotify." msgstr "Riscontrato un problema usando pynotify." -#: rapid/rapid.py:3571 +#: rapid/rapid.py:5073 msgid "Failed to receive pynotify server capabilities." msgstr "Impossibile acquisire le proprietà server di pynotify." -#: rapid/rapid.py:3580 +#: rapid/rapid.py:5084 msgid "" "Warning: desktop environment notification server is incorrectly configured." msgstr "" "Attenzione: il server delle notifiche dell'ambiente desktop è configurato in " "modo scorretto." -#: rapid/rapid.py:3626 +#: rapid/rapid.py:5132 msgid "and" msgstr "e" -#: rapid/rapid.py:3631 +#: rapid/rapid.py:5137 msgid "Using backup devices" msgstr "Si utilizzano dispositivi di backup" -#: rapid/rapid.py:3633 +#: rapid/rapid.py:5139 msgid "Using backup device" msgstr "Si utilizza un dispositivo di backup" -#: rapid/rapid.py:3635 +#: rapid/rapid.py:5141 msgid "No backup devices detected" msgstr "Non è stato rilevato nessun dispositivo di backup" -#: rapid/rapid.py:3674 rapid/rapid.py:3831 +#: rapid/rapid.py:5188 rapid/rapid.py:5350 #, python-format msgid "Device %(device)s (%(path)s) ignored" msgstr "Dispositivo %(device)s (%(path)s) ignorato" -#: rapid/rapid.py:3790 +#: rapid/rapid.py:5309 #, python-format msgid "Detected %(device)s with path %(path)s" msgstr "Rilevato %(device)s con il percorso %(path)s" -#: rapid/rapid.py:3794 +#: rapid/rapid.py:5313 msgid "Automatically start download is true" msgstr "Avvio automatico dei download attivo" -#: rapid/rapid.py:3796 +#: rapid/rapid.py:5315 msgid "Automatically start download is false" msgstr "Avvio automatico dei download disattivo" -#: rapid/rapid.py:3849 +#: rapid/rapid.py:5368 msgid "Using manually specified path" msgstr "Si utilizza un percorso specificato manualmente" -#: rapid/rapid.py:3857 +#: rapid/rapid.py:5376 rapid/rapid.py:5417 #, python-format msgid "Backing up to %(path)s" msgstr "Salvataggio su %(path)s" -#: rapid/rapid.py:3968 rapid/rapid.py:4017 +#. the user is trying to backup to a device that is currently being downloaded from..... we don't normally allow that, but what to do? +#: rapid/rapid.py:5441 +#, python-format +msgid "Warning: backup device %(device)s is currently being downloaded from" +msgstr "Attenzione: si sta scaricando dal dispositivo di backup %(device)s" + +#: rapid/rapid.py:5458 +msgid "D_ownload Selected" +msgstr "_Scarico della Selezione" + +#: rapid/rapid.py:5550 rapid/rapid.py:5599 msgid "All downloads complete" msgstr "Tutti i download completati" -#: rapid/rapid.py:3982 +#: rapid/rapid.py:5564 msgid "MB/s" msgstr "MB/s" -#: rapid/rapid.py:3992 +#: rapid/rapid.py:5574 msgid "About 1 second remaining" msgstr "Circa 1 secondo rimanente" -#: rapid/rapid.py:3994 +#: rapid/rapid.py:5576 #, python-format msgid "About %i seconds remaining" msgstr "Circa %i secondi rimanenti" -#: rapid/rapid.py:3996 +#: rapid/rapid.py:5578 msgid "About 1 minute remaining" msgstr "Manca circa 1 minuto" #. Translators: in the text '%(minutes)i:%(seconds)02i', only the : should be translated, if needed. #. '%(minutes)i' and '%(seconds)02i' should not be modified or left out. They are used to format and display the amount #. of time the download has remainging, e.g. 'About 5:36 minutes remaining' -#: rapid/rapid.py:4001 +#: rapid/rapid.py:5583 #, python-format msgid "About %(minutes)i:%(seconds)02i minutes remaining" msgstr "Circa %(minutes)i:%(seconds)02i minuti rimanenti" -#: rapid/rapid.py:4019 -msgid "photos downloaded" -msgstr "foto scaricate" +#: rapid/rapid.py:5602 rapid/rapid.py:5608 rapid/rapid.py:5614 +#: rapid/rapid.py:5620 rapid/rapid.py:5625 rapid/rapid.py:5629 +#, python-format +msgid "%(number)s %(numberdownloaded)s" +msgstr "%(number)s %(numberdownloaded)s" -#: rapid/rapid.py:4021 -msgid "photos skipped" -msgstr "foto ignorate" +#: rapid/rapid.py:5604 rapid/rapid.py:5616 +#, python-format +msgid "%(filetype)s downloaded" +msgstr "%(filetype)s scaricati" -#: rapid/rapid.py:4023 -msgid "videos downloaded" -msgstr "video scaricati" +#: rapid/rapid.py:5610 rapid/rapid.py:5622 +#, python-format +msgid "%(filetype)s failed to download" +msgstr "impossibile scaricare %(filetype)s" -#: rapid/rapid.py:4025 -msgid "videos skipped" -msgstr "video ignorati" +#: rapid/rapid.py:5789 +msgid "_Resume" +msgstr "_Riprendi" -#. This text will be displayed to the user on the Download / Pause button. -#. Please note the space at the end of the label - it is needed to meet the Gnome Human Interface Guidelines -#: rapid/rapid.py:4125 -msgid "_Download " -msgstr "_Download " +#: rapid/rapid.py:5792 +msgid "_Download All" +msgstr "Scarica _Tutto" #. This text will be displayed to the user on the Download / Pause button. -#: rapid/rapid.py:4135 +#: rapid/rapid.py:5801 msgid "_Pause" msgstr "_Pausa" -#: rapid/rapid.py:4209 -msgid "Preferences were changed." -msgstr "Le preferenze sono state modificate." +#: rapid/rapid.py:5914 +msgid "Download device settings preferences were changed." +msgstr "" +"Le preferenze delle impostazioni del dispositivo di scarico sono state " +"modificate." -#: rapid/rapid.py:4407 +#: rapid/rapid.py:5926 +msgid "Backup preferences were changed." +msgstr "Le preferenze del backup sono state modificate." + +#: rapid/rapid.py:5932 +msgid "Subfolder and filename preferences were changed." +msgstr "" +"Le preferenze delle sottocartelle e del nome del file sono state modificate." + +#: rapid/rapid.py:5943 +msgid "Download folder preferences were changed." +msgstr "Le preferenze della cartella di scarico sono state modificate." + +#: rapid/rapid.py:6141 msgid "Goodbye" msgstr "Arrivederci" #. Translators: this text is displayed to the user when they request information on the command line options. #. The text %default should not be modified or left out. -#: rapid/rapid.py:4418 +#: rapid/rapid.py:6152 #, python-format msgid "" "display program information on the command line as the program runs " @@ -1049,388 +1095,384 @@ msgstr "" "visualizza informazioni sul programma sulla riga comando quando il programma " "è in esecuzione (default: %default)" -#: rapid/rapid.py:4419 +#: rapid/rapid.py:6153 msgid "only output errors to the command line" msgstr "visualizza solo gli errori sulla riga comando" #. image file extensions are recognized RAW files plus TIFF and JPG -#: rapid/rapid.py:4421 +#: rapid/rapid.py:6155 msgid "list photo and video file extensions the program recognizes and exit" msgstr "" "elenca le le estensioni file delle foto e dei video che il programma " "riconosce ed esce" -#: rapid/rapid.py:4422 +#: rapid/rapid.py:6156 msgid "reset all program settings and preferences and exit" msgstr "resetta tutte le impostazioni e preferenze del programma ed esce" -#: rapid/rapid.py:4431 +#: rapid/rapid.py:6165 msgid "Photos:" msgstr "Foto:" -#: rapid/rapid.py:4431 +#: rapid/rapid.py:6165 msgid "Videos:" msgstr "Video" -#: rapid/rapid.py:4436 +#: rapid/rapid.py:6170 #, python-format msgid "and %s" msgstr "e %s" -#: rapid/rapid.py:4444 +#: rapid/rapid.py:6178 msgid "All settings and preferences have been reset" msgstr "Tutte le impostazioni e preferenze sono state resettate" #. Which volume management code is being used (GIO or GnomeVFS) -#: rapid/rapid.py:4448 rapid/rapid.py:4449 rapid/rapid.py:4451 -#: rapid/rapid.py:4456 rapid/rapid.py:4460 +#: rapid/rapid.py:6182 rapid/rapid.py:6183 rapid/rapid.py:6185 +#: rapid/rapid.py:6190 rapid/rapid.py:6194 msgid "Using" msgstr "Si usa" -#: rapid/rapid.py:4453 +#: rapid/rapid.py:6187 msgid "\n" msgstr "\n" #. this application is already running -#: rapid/rapid.py:4477 +#: rapid/rapid.py:6211 #, python-format msgid "%s is already running" msgstr "%s è già in esecuzione" -#: rapid/renamesubfolderprefs.py:190 +#: rapid/renamesubfolderprefs.py:192 msgid "Date time" msgstr "Data e ora" -#: rapid/renamesubfolderprefs.py:191 +#: rapid/renamesubfolderprefs.py:193 msgid "Text" msgstr "Testo" -#: rapid/renamesubfolderprefs.py:192 -msgid "Filename" -msgstr "Nome file" - -#: rapid/renamesubfolderprefs.py:193 +#: rapid/renamesubfolderprefs.py:195 msgid "Metadata" msgstr "Metadati" -#: rapid/renamesubfolderprefs.py:194 +#: rapid/renamesubfolderprefs.py:196 msgid "Sequences" msgstr "Ordinamenti" -#: rapid/renamesubfolderprefs.py:197 +#: rapid/renamesubfolderprefs.py:199 msgid "Image date" msgstr "Data dell'immagine" -#: rapid/renamesubfolderprefs.py:198 +#: rapid/renamesubfolderprefs.py:200 msgid "Video date" msgstr "Data del video" -#: rapid/renamesubfolderprefs.py:199 +#: rapid/renamesubfolderprefs.py:201 msgid "Today" msgstr "Oggi" -#: rapid/renamesubfolderprefs.py:200 +#: rapid/renamesubfolderprefs.py:202 msgid "Yesterday" msgstr "Ieri" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:202 +#: rapid/renamesubfolderprefs.py:204 msgid "Name + extension" msgstr "Nome + estensione" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:204 +#: rapid/renamesubfolderprefs.py:206 msgid "Name" msgstr "Nome" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:206 +#: rapid/renamesubfolderprefs.py:208 msgid "Extension" msgstr "Estensione" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:208 +#: rapid/renamesubfolderprefs.py:210 msgid "Image number" msgstr "Numero immagine" -#: rapid/renamesubfolderprefs.py:209 +#: rapid/renamesubfolderprefs.py:211 msgid "Video number" msgstr "Numero del video" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:211 +#: rapid/renamesubfolderprefs.py:213 msgid "Aperture" msgstr "Apertura" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:213 +#: rapid/renamesubfolderprefs.py:215 msgid "ISO" msgstr "ISO" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:215 +#: rapid/renamesubfolderprefs.py:217 msgid "Exposure time" msgstr "Tempo di esposizione" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:217 +#: rapid/renamesubfolderprefs.py:219 msgid "Focal length" msgstr "Lunghezza focale" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:219 +#: rapid/renamesubfolderprefs.py:221 msgid "Camera make" msgstr "Marca della fotocamera" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:221 +#: rapid/renamesubfolderprefs.py:223 msgid "Camera model" msgstr "Modello della fotocamera (es.: Canon EOS-1Ds Mark III)" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:223 +#: rapid/renamesubfolderprefs.py:225 msgid "Short camera model" msgstr "Modello brevissimo della fotocamera (es.: D300)" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:225 +#: rapid/renamesubfolderprefs.py:227 msgid "Hyphenated short camera model" msgstr "Modello breve della fotocamera (es.: DSC-P92)" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:227 +#: rapid/renamesubfolderprefs.py:229 msgid "Serial number" msgstr "Numero seriale" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:229 +#: rapid/renamesubfolderprefs.py:231 msgid "Shutter count" msgstr "Contatore dell'otturatore" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:231 +#: rapid/renamesubfolderprefs.py:233 msgid "Owner name" msgstr "Nome del proprietario" -#: rapid/renamesubfolderprefs.py:232 +#: rapid/renamesubfolderprefs.py:234 msgid "Codec" msgstr "Codec" -#: rapid/renamesubfolderprefs.py:233 +#: rapid/renamesubfolderprefs.py:235 msgid "Width" msgstr "Larghezza" -#: rapid/renamesubfolderprefs.py:234 +#: rapid/renamesubfolderprefs.py:236 msgid "Height" msgstr "Altezza" -#: rapid/renamesubfolderprefs.py:235 +#: rapid/renamesubfolderprefs.py:237 msgid "Length" msgstr "Lunghezza" -#: rapid/renamesubfolderprefs.py:236 +#: rapid/renamesubfolderprefs.py:238 msgid "Frames Per Second" msgstr "Fotogrammi per secondo" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:238 +#: rapid/renamesubfolderprefs.py:240 msgid "Downloads today" msgstr "Downloads oggi" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:240 +#: rapid/renamesubfolderprefs.py:242 msgid "Session number" msgstr "Numero della sessione" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:242 +#: rapid/renamesubfolderprefs.py:244 msgid "Subfolder number" msgstr "Numero della sottocartella" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:244 +#: rapid/renamesubfolderprefs.py:246 msgid "Stored number" msgstr "Numero memorizzato" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequenceletters -#: rapid/renamesubfolderprefs.py:246 +#: rapid/renamesubfolderprefs.py:248 msgid "Sequence letter" msgstr "Lettera di sequenza" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:248 +#: rapid/renamesubfolderprefs.py:250 msgid "All digits" msgstr "Tutte le cifre" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:250 +#: rapid/renamesubfolderprefs.py:252 msgid "Last digit" msgstr "Ultima cifra" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:252 +#: rapid/renamesubfolderprefs.py:254 msgid "Last 2 digits" msgstr "Ultime 2 cifre" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:254 +#: rapid/renamesubfolderprefs.py:256 msgid "Last 3 digits" msgstr "Ultime 3 cifre" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:256 +#: rapid/renamesubfolderprefs.py:258 msgid "Last 4 digits" msgstr "Ultime 4 cifre" #. Translators: please not the capitalization of this text, and keep it the same if your language features capitalization -#: rapid/renamesubfolderprefs.py:258 +#: rapid/renamesubfolderprefs.py:260 msgid "Original Case" msgstr "Caso originale" #. Translators: please not the capitalization of this text, and keep it the same if your language features capitalization -#: rapid/renamesubfolderprefs.py:260 +#: rapid/renamesubfolderprefs.py:262 msgid "UPPERCASE" msgstr "MAIUSCOLO" #. Translators: please not the capitalization of this text, and keep it the same if your language features capitalization -#: rapid/renamesubfolderprefs.py:262 +#: rapid/renamesubfolderprefs.py:264 msgid "lowercase" msgstr "minuscolo" -#: rapid/renamesubfolderprefs.py:263 +#: rapid/renamesubfolderprefs.py:265 msgid "One digit" msgstr "Una cifra" -#: rapid/renamesubfolderprefs.py:264 +#: rapid/renamesubfolderprefs.py:266 msgid "Two digits" msgstr "Due cifre" -#: rapid/renamesubfolderprefs.py:265 +#: rapid/renamesubfolderprefs.py:267 msgid "Three digits" msgstr "Tre cifre" -#: rapid/renamesubfolderprefs.py:266 +#: rapid/renamesubfolderprefs.py:268 msgid "Four digits" msgstr "Quattro cifre" -#: rapid/renamesubfolderprefs.py:267 +#: rapid/renamesubfolderprefs.py:269 msgid "Five digits" msgstr "Cinque cifre" -#: rapid/renamesubfolderprefs.py:268 +#: rapid/renamesubfolderprefs.py:270 msgid "Six digits" msgstr "Sei cifre" -#: rapid/renamesubfolderprefs.py:269 +#: rapid/renamesubfolderprefs.py:271 msgid "Seven digits" msgstr "Sette cifre" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:271 +#: rapid/renamesubfolderprefs.py:273 msgid "Subseconds" msgstr "Sotto-secondi" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:273 +#: rapid/renamesubfolderprefs.py:275 msgid "YYYYMMDD" msgstr "YYYYMMDD" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:275 +#: rapid/renamesubfolderprefs.py:277 msgid "YYYY-MM-DD" msgstr "AAAA-MM-GG" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:277 +#: rapid/renamesubfolderprefs.py:279 msgid "YYMMDD" msgstr "YYMMDD" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:279 +#: rapid/renamesubfolderprefs.py:281 msgid "YY-MM-DD" msgstr "YY-MM-DD" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:281 +#: rapid/renamesubfolderprefs.py:283 msgid "MMDDYYYY" msgstr "MMDDYYYY" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:283 +#: rapid/renamesubfolderprefs.py:285 msgid "MMDDYY" msgstr "MMDDYY" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:285 +#: rapid/renamesubfolderprefs.py:287 msgid "MMDD" msgstr "MMDD" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:287 +#: rapid/renamesubfolderprefs.py:289 msgid "DDMMYYYY" msgstr "DDMMYYYY" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:289 +#: rapid/renamesubfolderprefs.py:291 msgid "DDMMYY" msgstr "DDMMYY" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:291 +#: rapid/renamesubfolderprefs.py:293 msgid "YYYY" msgstr "YYYY" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:293 +#: rapid/renamesubfolderprefs.py:295 msgid "YY" msgstr "YY" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:295 +#: rapid/renamesubfolderprefs.py:297 msgid "MM" msgstr "MM" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:297 +#: rapid/renamesubfolderprefs.py:299 msgid "DD" msgstr "DD" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:299 +#: rapid/renamesubfolderprefs.py:301 msgid "HHMMSS" msgstr "HHMMSS" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:301 +#: rapid/renamesubfolderprefs.py:303 msgid "HHMM" msgstr "HHMM" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:303 +#: rapid/renamesubfolderprefs.py:305 msgid "HH-MM-SS" msgstr "HH-MM-SS" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:305 +#: rapid/renamesubfolderprefs.py:307 msgid "HH-MM" msgstr "HH-MM" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:307 +#: rapid/renamesubfolderprefs.py:309 msgid "HH" msgstr "HH" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:309 +#: rapid/renamesubfolderprefs.py:311 msgid "MM (minutes)" msgstr "MM (minuti)" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:311 +#: rapid/renamesubfolderprefs.py:313 msgid "SS" msgstr "SS" -#: rapid/renamesubfolderprefs.py:794 +#: rapid/renamesubfolderprefs.py:796 #, python-format msgid "" "Preference key '%(key)s' is invalid.\n" @@ -1439,65 +1481,26 @@ msgstr "" "La chiave delle preferenze '%(key)s' non è valida\n" "Sono previsti uno di %(value)s" -#: rapid/renamesubfolderprefs.py:801 +#: rapid/renamesubfolderprefs.py:803 #, python-format msgid "Preference value '%(value)s' is invalid" msgstr "Il valore delle preferenze '%(value)s' non è valido" -#: rapid/renamesubfolderprefs.py:805 +#: rapid/renamesubfolderprefs.py:807 msgid "These preferences are not well formed:" msgstr "Queste preferenze non sono formalmente corrette:" -#: rapid/renamesubfolderprefs.py:934 -msgid "Subsecond metadata not present in photo" -msgstr "Metadato subsecond non presente nella foto" - -#: rapid/renamesubfolderprefs.py:941 -#, python-format -msgid "%s metadata is not present" -msgstr "%s metadati non è presente" - -#: rapid/renamesubfolderprefs.py:960 rapid/renamesubfolderprefs.py:968 -#: rapid/renamesubfolderprefs.py:977 -#, python-format -msgid "Error in date time component. Value %s appears invalid" -msgstr "Errore nel componente data e ora. Il valore %s non sembra valido" - -#: rapid/renamesubfolderprefs.py:1004 -msgid "extension was specified but filename does not have an extension" -msgstr "estensione specificata ma il nome del file non ha un'estensione" - -#: rapid/renamesubfolderprefs.py:1008 -msgid "image or video number was specified but filename has no number" -msgstr "" -"numero della foto o del video specificata ma il nome del file non ha numero" - -#: rapid/renamesubfolderprefs.py:1081 -#, python-format -msgid "%s metadata is not present in photo" -msgstr "metadato %s non è presente nella foto" - -#: rapid/renamesubfolderprefs.py:1194 -#, python-format -msgid "error generating name with component %s" -msgstr "errore nella generazione del nme con il componente %s" - -#: rapid/renamesubfolderprefs.py:1450 -#, python-format -msgid "%s metadata is not present in video" -msgstr "metadato %s non è presente nel video" - -#: rapid/renamesubfolderprefs.py:1546 +#: rapid/renamesubfolderprefs.py:1517 #, python-format msgid "Subfolder preferences should not start with a %s" msgstr "Le preferenze sottocartella non dovrebbero iniziare con un %s" -#: rapid/renamesubfolderprefs.py:1548 +#: rapid/renamesubfolderprefs.py:1519 #, python-format msgid "Subfolder preferences should not end with a %s" msgstr "Le preferenze sottocartella non dovrebbero terminare con un %s" -#: rapid/renamesubfolderprefs.py:1552 +#: rapid/renamesubfolderprefs.py:1523 #, python-format msgid "Subfolder preferences should not contain two %s one after the other" msgstr "" @@ -1548,122 +1551,118 @@ msgid "Job Codes" msgstr "Codici Lavoro" #: rapid/glade3/rapid.glade.h:12 -msgid "Missing Backup Devices" -msgstr "Dispositivi di Backup Mancanti" - -#: rapid/glade3/rapid.glade.h:13 msgid "Photo Rename" msgstr "Rinomina Foto" -#: rapid/glade3/rapid.glade.h:14 +#: rapid/glade3/rapid.glade.h:13 msgid "Photo and Video Name Conflicts" msgstr "Nomi di Foto e Video Name in conflitto" -#: rapid/glade3/rapid.glade.h:15 +#: rapid/glade3/rapid.glade.h:14 msgid "Program Automation" msgstr "Automazione Programma" -#: rapid/glade3/rapid.glade.h:16 +#: rapid/glade3/rapid.glade.h:15 msgid "Sequence Numbers" msgstr "Numeri di Sequenza" -#: rapid/glade3/rapid.glade.h:17 +#: rapid/glade3/rapid.glade.h:16 msgid "/media/externaldrive/Photos" msgstr "/media/externaldrive/Photos" -#: rapid/glade3/rapid.glade.h:18 +#: rapid/glade3/rapid.glade.h:17 msgid "Example: /home/user/Pictures" msgstr "Esempio: /home/user/Foto" -#: rapid/glade3/rapid.glade.h:19 +#: rapid/glade3/rapid.glade.h:18 msgid "Example:" msgstr "Esempio:" -#: rapid/glade3/rapid.glade.h:20 +#: rapid/glade3/rapid.glade.h:19 msgid "New:" msgstr "Nuovo:" -#: rapid/glade3/rapid.glade.h:21 +#: rapid/glade3/rapid.glade.h:20 msgid "Original:" msgstr "Originale:" -#: rapid/glade3/rapid.glade.h:22 +#: rapid/glade3/rapid.glade.h:21 msgid "Automation" msgstr "Automazione" -#: rapid/glade3/rapid.glade.h:23 +#: rapid/glade3/rapid.glade.h:22 msgid "Backup\t" msgstr "Backup\t" -#: rapid/glade3/rapid.glade.h:24 +#: rapid/glade3/rapid.glade.h:23 msgid "Devices" msgstr "Dispositivi" -#: rapid/glade3/rapid.glade.h:25 +#: rapid/glade3/rapid.glade.h:24 msgid "Error Handling" msgstr "Gestione Errori" -#: rapid/glade3/rapid.glade.h:26 +#: rapid/glade3/rapid.glade.h:25 msgid "Job Codes" msgstr "Codici Lavoro" -#: rapid/glade3/rapid.glade.h:27 +#: rapid/glade3/rapid.glade.h:26 msgid "Photo Download Folders" msgstr "" "Cartelle per il Download delle " "Foto" -#: rapid/glade3/rapid.glade.h:28 +#: rapid/glade3/rapid.glade.h:27 msgid "Photo Rename\t" msgstr "Rinomina Foto\t" -#: rapid/glade3/rapid.glade.h:29 +#: rapid/glade3/rapid.glade.h:28 msgid "Rename Options" msgstr "Opzioni di Rinomina" -#: rapid/glade3/rapid.glade.h:30 +#: rapid/glade3/rapid.glade.h:29 msgid "Video Download Folders" msgstr "" "Cartelle per il Download dei " "Video" -#: rapid/glade3/rapid.glade.h:31 +#: rapid/glade3/rapid.glade.h:30 msgid "Video Rename\t" msgstr "Rinomina Video\t" -#: rapid/glade3/rapid.glade.h:32 +#: rapid/glade3/rapid.glade.h:31 msgid "Add unique identifier" msgstr "Aggiunta di un identificatore univoco" -#: rapid/glade3/rapid.glade.h:33 +#: rapid/glade3/rapid.glade.h:32 msgid "Automatically detect Portable Storage Devices" msgstr "Rileva automaticamente i Dispositivi di Memorizzazione Portatile" -#: rapid/glade3/rapid.glade.h:34 +#: rapid/glade3/rapid.glade.h:33 msgid "Automatically detect backup devices" msgstr "Rileva automaticamente i dispositivi di backup" -#: rapid/glade3/rapid.glade.h:35 +#: rapid/glade3/rapid.glade.h:34 msgid "Automatically detect devices" msgstr "Rileva i dispositivi automaticamente" -#: rapid/glade3/rapid.glade.h:36 +#: rapid/glade3/rapid.glade.h:35 msgid "Automation" msgstr "Automazione" -#: rapid/glade3/rapid.glade.h:37 +#: rapid/glade3/rapid.glade.h:36 msgid "Backup" msgstr "Backup" -#: rapid/glade3/rapid.glade.h:38 +#: rapid/glade3/rapid.glade.h:37 msgid "Backup location:" msgstr "Locazione del backup:" -#: rapid/glade3/rapid.glade.h:39 +#: rapid/glade3/rapid.glade.h:38 msgid "Backup photos and videos when downloading" msgstr "Salva le foto ed i video quando si fa il download" -#: rapid/glade3/rapid.glade.h:40 +#: rapid/glade3/rapid.glade.h:39 msgid "" "Choose the download folder. Subfolders for the downloaded photos will be " "automatically created in this folder using the structure specified below." @@ -1672,7 +1671,7 @@ msgstr "" "saranno create automaticamente in questa cartella utilizzando la struttura " "specificata sotto." -#: rapid/glade3/rapid.glade.h:41 +#: rapid/glade3/rapid.glade.h:40 msgid "" "Choose the download folder. Subfolders for the downloaded videos will be " "automatically created in this folder using the structure specified below." @@ -1681,30 +1680,23 @@ msgstr "" "scaricati saranno create automaticamente in questa cartella utilizzando la " "struttura specificata sotto." -#: rapid/glade3/rapid.glade.h:42 -msgid "" -"Choose whether to skip downloading the file, or to add a unique indentifier." -msgstr "" -"Scegliere se ignorare il download del file, o se aggiungere un " -"identificatore univoco." - -#: rapid/glade3/rapid.glade.h:43 +#: rapid/glade3/rapid.glade.h:41 msgid "Copyright Damon Lynch 2007-10" msgstr "Copyright Damon Lynch 2007-10" -#: rapid/glade3/rapid.glade.h:44 +#: rapid/glade3/rapid.glade.h:42 msgid "Day start:" msgstr "Giorno iniziale:" -#: rapid/glade3/rapid.glade.h:45 +#: rapid/glade3/rapid.glade.h:43 msgid "Delete photos and videos from device upon download completion" msgstr "Eliminare le foto ed i video dal dispositivo al termine del download" -#: rapid/glade3/rapid.glade.h:46 +#: rapid/glade3/rapid.glade.h:44 msgid "Devices" msgstr "Dispositivi" -#: rapid/glade3/rapid.glade.h:47 +#: rapid/glade3/rapid.glade.h:45 msgid "" "Devices are from where to download photos and videos, such as cameras, " "memory cards or Portable Storage Devices.\n" @@ -1726,37 +1718,37 @@ msgstr "" "nulla, provare ad impostarla in modalità PTP. Se ciò non fosse possibile, " "considerare di utilizzare un lettore di schede di memoria." -#: rapid/glade3/rapid.glade.h:52 +#: rapid/glade3/rapid.glade.h:50 msgid "Download / Pause" msgstr "Download / Pausa" -#: rapid/glade3/rapid.glade.h:53 +#: rapid/glade3/rapid.glade.h:51 msgid "Download folder:" msgstr "Cartella di download:" -#: rapid/glade3/rapid.glade.h:54 +#: rapid/glade3/rapid.glade.h:52 msgid "Downloads today:" msgstr "Downloads oggi:" -#: rapid/glade3/rapid.glade.h:55 +#: rapid/glade3/rapid.glade.h:53 msgid "Error Handling" msgstr "Gestione Errori" -#: rapid/glade3/rapid.glade.h:56 +#: rapid/glade3/rapid.glade.h:54 msgid "Error Log" msgstr "Registrazione degli Errori" -#: rapid/glade3/rapid.glade.h:57 +#: rapid/glade3/rapid.glade.h:55 msgid "Exit program if download completes without any warnings or errors" msgstr "Esci dal programma se il download si completa senza avvisi od errori" -#: rapid/glade3/rapid.glade.h:58 +#: rapid/glade3/rapid.glade.h:56 msgid "If you disable automatic detection, choose the exact backup location." msgstr "" "Se si disabilita il rilevamento automatico, scegliere l'esatta locazione del " "backup." -#: rapid/glade3/rapid.glade.h:59 +#: rapid/glade3/rapid.glade.h:57 msgid "" "If you disable automatic detection, choose the exact location of the images " "and videos." @@ -1764,7 +1756,7 @@ msgstr "" "Se si disabilita il rilevamento automatico, scegliere la posizione esatta " "delle immagini e dei video." -#: rapid/glade3/rapid.glade.h:60 +#: rapid/glade3/rapid.glade.h:58 msgid "" "If you enable automatic detection of Portable Storage Devices, the entire " "device will be scanned for images. On large devices, this could take some " @@ -1774,47 +1766,51 @@ msgstr "" "portatile (PSD), tutto il dispositivo sarà sottoposto a scansione per le " "immagini. Su dispositivi capienti ciò potrebbe richiedere tempo." -#: rapid/glade3/rapid.glade.h:61 -msgid "Ignore" -msgstr "Ignora" - -#: rapid/glade3/rapid.glade.h:62 +#: rapid/glade3/rapid.glade.h:59 msgid "Import your photos and videos efficiently and reliably" msgstr "Importa le tue foto ed i video in modo efficiente ed affidabile" -#: rapid/glade3/rapid.glade.h:63 +#: rapid/glade3/rapid.glade.h:60 msgid "Job Codes" msgstr "Codici Lavoro" -#: rapid/glade3/rapid.glade.h:64 +#: rapid/glade3/rapid.glade.h:61 msgid "Location:" msgstr "Posizione:" -#: rapid/glade3/rapid.glade.h:65 +#: rapid/glade3/rapid.glade.h:62 msgid "Overwrite" msgstr "Sovrascrivi" -#: rapid/glade3/rapid.glade.h:66 +#: rapid/glade3/rapid.glade.h:63 +msgid "P_review Columns" +msgstr "Colonne _Anteprima" + +#: rapid/glade3/rapid.glade.h:64 msgid "Photo Folders" msgstr "Cartelle delle Foto" -#: rapid/glade3/rapid.glade.h:67 +#: rapid/glade3/rapid.glade.h:65 msgid "Photo Rename" msgstr "Rinomina Foto" -#: rapid/glade3/rapid.glade.h:68 +#: rapid/glade3/rapid.glade.h:66 msgid "Photo backup folder name:" msgstr "Nome della cartella di salvataggio delle foto:" -#: rapid/glade3/rapid.glade.h:69 +#: rapid/glade3/rapid.glade.h:67 msgid "Preferences: Rapid Photo Downloader" msgstr "Preferenze: Rapid Photo Downloader" -#: rapid/glade3/rapid.glade.h:71 +#: rapid/glade3/rapid.glade.h:68 +msgid "Preview _Folders" +msgstr "_Cartelle Anteprima" + +#: rapid/glade3/rapid.glade.h:70 msgid "R_emove All" msgstr "R_imuovi Tutto" -#: rapid/glade3/rapid.glade.h:73 +#: rapid/glade3/rapid.glade.h:72 msgid "" "Rapid Photo Downloader is free software; you can redistribute it and/or " "modify it under the terms of the GNU General Public License as published by " @@ -1844,27 +1840,43 @@ msgstr "" "Photo Downloader; altrimenti, scrivi alla Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." -#: rapid/glade3/rapid.glade.h:78 +#: rapid/glade3/rapid.glade.h:77 msgid "Rename Options" msgstr "Opzioni di Rinomina" +#: rapid/glade3/rapid.glade.h:78 +msgid "Se_lect None" +msgstr "Se_leziona Nessuna" + #: rapid/glade3/rapid.glade.h:79 -msgid "Report a warning" -msgstr "Riporta una segnalazione" +msgid "Select All Pho_tos" +msgstr "Seleziona Tutte le Fo_tografie" #: rapid/glade3/rapid.glade.h:80 -msgid "Report an error" -msgstr "Riporta un errore" +msgid "Select All Vi_deos" +msgstr "Seleziona Tutti i Vi_deo" #: rapid/glade3/rapid.glade.h:81 +msgid "Select All Wit_h Job Code" +msgstr "Seleziona Tutto _Con il Codice Lavoro" + +#: rapid/glade3/rapid.glade.h:82 +msgid "Select All Without _Job Code" +msgstr "Seleziona Tutto _Senza il Codice _Lavoro" + +#: rapid/glade3/rapid.glade.h:83 +msgid "Select _All" +msgstr "Seleziona _Tutto" + +#: rapid/glade3/rapid.glade.h:84 msgid "Skip" msgstr "Salta" -#: rapid/glade3/rapid.glade.h:82 +#: rapid/glade3/rapid.glade.h:85 msgid "Skip download" msgstr "Salta il download" -#: rapid/glade3/rapid.glade.h:83 +#: rapid/glade3/rapid.glade.h:86 msgid "" "Sorry, video downloading functionality disabled. To download videos, please " "install the kaa metadata package for python." @@ -1873,7 +1885,7 @@ msgstr "" "scaricare i video, si prega di installare il pacchetto kaa metadata " "per python." -#: rapid/glade3/rapid.glade.h:84 +#: rapid/glade3/rapid.glade.h:87 msgid "" "Specify the folder in which backups are stored on the device. \n" "\n" @@ -1889,7 +1901,7 @@ msgstr "" "vuoi utilizzare per i salvataggi, crea una cartella al suo interno con uno " "di questi nomi." -#: rapid/glade3/rapid.glade.h:87 +#: rapid/glade3/rapid.glade.h:90 msgid "" "Specify the time in 24 hour format at which the Downloads today " "sequence number should be reset." @@ -1897,19 +1909,7 @@ msgstr "" "Specificare l'ora nel formato 24 ore a cui il numero di sequenza " "Downloads oggi dovrebbe essere reimpostato." -#: rapid/glade3/rapid.glade.h:88 -msgid "" -"Specify what to do when a photo or video of the same name has already been " -"downloaded or backed up." -msgstr "" -"Specificare cosa fare quando una foto o un video con lo stesso nome sono " -"stati scaricati o salvati." - -#: rapid/glade3/rapid.glade.h:89 -msgid "Specify what to do when there are no backup devices." -msgstr "Specificare cosa fare quando non ci sono dispositivi di backup." - -#: rapid/glade3/rapid.glade.h:90 +#: rapid/glade3/rapid.glade.h:91 msgid "" "Specify whether photo, video and folder names should have any characters " "removed that are not allowed by other operating systems." @@ -1917,43 +1917,51 @@ msgstr "" "Specificare se dai nomi delle foto, dei video e delle cartelle occorre " "rimuovere qualche carattere non ammesso da altri sistemi operativi." -#: rapid/glade3/rapid.glade.h:91 +#: rapid/glade3/rapid.glade.h:92 msgid "Start downloading at program startup" msgstr "Inizia il download all'avvio del programma" -#: rapid/glade3/rapid.glade.h:92 +#: rapid/glade3/rapid.glade.h:93 msgid "Start downloading upon device insertion" msgstr "Iniziare a scaricare quando il dispositivo viene inserito" -#: rapid/glade3/rapid.glade.h:93 +#: rapid/glade3/rapid.glade.h:94 msgid "Stored number:" msgstr "Numero memorizzato:" -#: rapid/glade3/rapid.glade.h:94 +#: rapid/glade3/rapid.glade.h:95 msgid "Strip incompatible characters" msgstr "Elimina caratteri incompatibili" -#: rapid/glade3/rapid.glade.h:95 +#: rapid/glade3/rapid.glade.h:96 msgid "Synchronize RAW + JPEG sequence numbers" msgstr "Sincronizza i numeri di sequenza RAW + JPEG" -#: rapid/glade3/rapid.glade.h:96 +#: rapid/glade3/rapid.glade.h:97 msgid "Unmount (\"eject\") device upon download completion" msgstr "Smontare (\"eject\") il dispositivo al completamento del download" -#: rapid/glade3/rapid.glade.h:97 +#: rapid/glade3/rapid.glade.h:98 msgid "Video Folders" msgstr "Cartelle Video" -#: rapid/glade3/rapid.glade.h:98 +#: rapid/glade3/rapid.glade.h:99 msgid "Video Rename" msgstr "Rinomina Video" -#: rapid/glade3/rapid.glade.h:99 +#: rapid/glade3/rapid.glade.h:100 msgid "Video backup folder name:" msgstr "Nome della cartella di salvataggio dei video:" -#: rapid/glade3/rapid.glade.h:100 +#: rapid/glade3/rapid.glade.h:101 +msgid "" +"When a photo or video of the same name has already been downloaded, choose " +"whether to skip downloading the file, or to add a unique indentifier." +msgstr "" +"Quando una fotografia o un video dello stesso nome è già stata scaricata, " +"scegli se saltare lo scarico oppure aggiungere un identificatore unico." + +#: rapid/glade3/rapid.glade.h:102 msgid "" "When backing up, choose whether to overwrite a file on the backup device " "that has the same name, or skip backing it up." @@ -1961,7 +1969,7 @@ msgstr "" "Scegliere se, durante un salvataggio, si vuole sovrascrivere un file che " "abbia lo stesso nome sul dispositivo di salvataggio, o ignorarne la copia." -#: rapid/glade3/rapid.glade.h:101 +#: rapid/glade3/rapid.glade.h:103 msgid "" "You can have your photos and videos backed up to multiple locations as they " "are downloaded, e.g. external hard drives." @@ -1969,50 +1977,82 @@ msgstr "" "Si possono salvare le proprie foto o video in posizioni multiple mentre sono " "scaricati, per esempio su dischi esterni." -#: rapid/glade3/rapid.glade.h:102 +#: rapid/glade3/rapid.glade.h:104 msgid "_Add..." msgstr "_Aggiungere" -#: rapid/glade3/rapid.glade.h:103 +#: rapid/glade3/rapid.glade.h:105 msgid "_Clear Completed Downloads" msgstr "_Svotare i Downloads Completati" -#: rapid/glade3/rapid.glade.h:104 +#: rapid/glade3/rapid.glade.h:106 +msgid "_Device" +msgstr "_Dispositivo" + +#: rapid/glade3/rapid.glade.h:107 msgid "_Error Log" msgstr "_Registrazione Errori" -#: rapid/glade3/rapid.glade.h:105 +#: rapid/glade3/rapid.glade.h:108 +msgid "_File" +msgstr "_File" + +#: rapid/glade3/rapid.glade.h:109 +msgid "_Filename" +msgstr "Nome del _file" + +#: rapid/glade3/rapid.glade.h:110 msgid "_Get Help Online..." msgstr "_Richiedi Aiuto In Linea..." -#: rapid/glade3/rapid.glade.h:106 +#: rapid/glade3/rapid.glade.h:111 msgid "_Help" msgstr "_Aiuto" -#: rapid/glade3/rapid.glade.h:107 +#: rapid/glade3/rapid.glade.h:112 msgid "_Make a Donation..." msgstr "_Fai una Donazione..." -#: rapid/glade3/rapid.glade.h:108 -msgid "_Photos" -msgstr "_Fotografie" +#: rapid/glade3/rapid.glade.h:113 +msgid "_Path" +msgstr "_Percorso" -#: rapid/glade3/rapid.glade.h:109 +#: rapid/glade3/rapid.glade.h:114 +msgid "_Preview" +msgstr "_Anteprima" + +#: rapid/glade3/rapid.glade.h:115 msgid "_Report a Problem..." msgstr "_Segnala un Problema..." -#: rapid/glade3/rapid.glade.h:110 -msgid "_Thumbnails" -msgstr "_Miniature" +#: rapid/glade3/rapid.glade.h:116 +msgid "_Select" +msgstr "_Seleziona" -#: rapid/glade3/rapid.glade.h:111 +#: rapid/glade3/rapid.glade.h:117 +msgid "_Size" +msgstr "_Dimensione" + +#: rapid/glade3/rapid.glade.h:118 msgid "_Translate this Application..." msgstr "_Traduci questa Applicazione..." -#: rapid/glade3/rapid.glade.h:112 +#: rapid/glade3/rapid.glade.h:119 +msgid "_Type" +msgstr "_Tipo" + +#: rapid/glade3/rapid.glade.h:120 msgid "_View" msgstr "_Visualizzazione" +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Problem: %(problem)s" +#~ msgstr "" +#~ "Origine: %(source)s\n" +#~ "Problema: %(problem)s" + #, python-format #~ msgid "Device scan complete: no images found on %s" #~ msgstr "Scansione del dispositivo completata: nessuna immagine trovata in %s" @@ -2027,6 +2067,10 @@ msgstr "_Visualizzazione" #~ msgid "0 of %s images copied" #~ msgstr "0 di %s immagini copiate" +#, python-format +#~ msgid "Source: %s" +#~ msgstr "Origine: %s" + #~ msgid "Could not open image" #~ msgstr "Impossibile aprire l'immagine" @@ -2040,6 +2084,16 @@ msgstr "_Visualizzazione" #~ "Immagine: %(image)s\n" #~ "Problema: %(problem)s" +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Destination: %(destination)s\n" +#~ "Error: %(errno)s %(strerror)s" +#~ msgstr "" +#~ "Origine: %(source)s\n" +#~ "Destinazione: %(destination)s\n" +#~ "Errore: %(errno)s %(strerror)s" + #~ msgid "Image overwritten" #~ msgstr "Immagine sovrascritta" @@ -2116,6 +2170,13 @@ msgstr "_Visualizzazione" #~ msgid "Image has no metadata" #~ msgstr "L'immagine non ha metadati" +#~ msgid "Download copying error" +#~ msgstr "Errore nella copia del download" + +#, python-format +#~ msgid "Unique identifier '%s' added" +#~ msgstr "Aggiunto identificatore univoco '%s'" + #~ msgid "" #~ "Subfolder name could not be properly generated. Check to ensure there is " #~ "sufficient image metadata." @@ -2144,9 +2205,22 @@ msgstr "_Visualizzazione" #~ msgid "Backup image already exists" #~ msgstr "L'immagine di backup esiste già" +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Destination: %(destination)s\n" +#~ "Error: %(errorno)s %(strerror)s" +#~ msgstr "" +#~ "Origine: %(source)s\n" +#~ "Destinazione: %(destination)s\n" +#~ "Errore: %(errorno)s %(strerror)s" + #~ msgid "The image was not copied." #~ msgstr "L'immagine non è stata copiata." +#~ msgid "Backup device missing" +#~ msgstr "Manca il dispositivo di backup" + #~ msgid "Image has no thumbnail" #~ msgstr "L'immagine non ha miniatura" @@ -2156,9 +2230,18 @@ msgstr "_Visualizzazione" #~ msgid "Thumbnail cannot be displayed" #~ msgstr "La miniatura non può essere visualizzata" +#~ msgid "It may be corrupted" +#~ msgstr "Può essere corrotto" + #~ msgid "images downloaded" #~ msgstr "immagini scaricate" +#~ msgid "Preferences were changed." +#~ msgstr "Le preferenze sono state modificate." + +#~ msgid "_Download " +#~ msgstr "_Download " + #~ msgid "list image file extensions the program recognizes and exit" #~ msgstr "" #~ "elenca le estensioni per i files delle immagini che il programma riconosce, " @@ -2171,6 +2254,10 @@ msgstr "_Visualizzazione" #~ msgid "%s metadata is not present in image" #~ msgstr "Metadato %s non presente nell'immagine" +#, python-format +#~ msgid "Error in date time component. Value %s appears invalid" +#~ msgstr "Errore nel componente data e ora. Il valore %s non sembra valido" + #~ msgid "extension was specified but image name has no extension" #~ msgstr "" #~ "è stata specificata un'estensione ma il nome dell'immagine non ha estensione" @@ -2180,9 +2267,16 @@ msgstr "_Visualizzazione" #~ "è stato specificato un numero immagine ma il nome file dell'immagine non ha " #~ "numero" +#, python-format +#~ msgid "error generating name with component %s" +#~ msgstr "errore nella generazione del nme con il componente %s" + #~ msgid "Image Rename" #~ msgstr "Rinomina Immagine" +#~ msgid "Missing Backup Devices" +#~ msgstr "Dispositivi di Backup Mancanti" + #~ msgid "Image Name Conflicts" #~ msgstr "Conflitti sul Nome Immagine" @@ -2239,12 +2333,21 @@ msgstr "_Visualizzazione" #~ "Termina il programma al termine del completamento di un download con esito " #~ "positivo" +#~ msgid "Ignore" +#~ msgstr "Ignora" + #~ msgid "" #~ "If you disable automatic detection, choose the exact location of the images." #~ msgstr "" #~ "Se si disabilita il rilevamento automatico, scegliere l'esatta locazione " #~ "delle immagini." +#~ msgid "Report an error" +#~ msgstr "Riporta un errore" + +#~ msgid "Report a warning" +#~ msgstr "Riporta una segnalazione" + #~ msgid "" #~ "Specify the folder in which backups are stored on the device. \n" #~ "\n" @@ -2279,6 +2382,9 @@ msgstr "_Visualizzazione" #~ msgid "Start downloading upon image device insertion" #~ msgstr "Inizia il download all'inserimento di un dispositivo immagini" +#~ msgid "Specify what to do when there are no backup devices." +#~ msgstr "Specificare cosa fare quando non ci sono dispositivi di backup." + #~ msgid "" #~ "Specify whether image and folder names should have any characters removed " #~ "that are not allowed by other operating systems." @@ -2286,6 +2392,9 @@ msgstr "_Visualizzazione" #~ "Specificare se l'immagine o i nomi di cartella dovrebbero avere rimossi i " #~ "caratteri non permessi da altri sistemi operativi." +#~ msgid "_Photos" +#~ msgstr "_Fotografie" + #~ msgid "" #~ "You can have your photos backed up to multiple locations as they are " #~ "downloaded, e.g. external hard drives." @@ -2293,6 +2402,9 @@ msgstr "_Visualizzazione" #~ "Si possono salvare in locazioni diverse le proprie fotografie mentre vengono " #~ "scaricate, ad esempio un dischi esterni." +#~ msgid "_Thumbnails" +#~ msgstr "_Miniature" + #~ msgid "" #~ "Image devices are devices from which to download photos, such as cameras, " #~ "memory cards or Portable Storage Devices.\n" @@ -2329,9 +2441,15 @@ msgstr "_Visualizzazione" #~ "generare correttamente sottocartelle. Per favore, usa altre opzioni per i " #~ "nomi di sottocartella." +#~ msgid "Enter a new job code, or select a previous one." +#~ msgstr "Inserire un nuovo codice lavoro, o selezionarne uno precedente." + #~ msgid "Should this device or partition be used to download images from?" #~ msgstr "Questo è un dispositivo o una partizione da cui scaricare immagini?" +#~ msgid "Enter a new job code." +#~ msgstr "Inserire un nuovo codice lavoro" + #, python-format #~ msgid "Image: %(source)s" #~ msgstr "Immagine: %(source)s" @@ -2370,6 +2488,26 @@ msgstr "_Visualizzazione" #~ msgid "Image device: %s\n" #~ msgstr "Dispositivo immagini: %s\n" +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Partially generated filename: %(newname)s\n" +#~ "Destination: %(destination)s\n" +#~ "Problem: %(problem)s" +#~ msgstr "" +#~ "Sorgente: %(source)s\n" +#~ "Nome file generato parzialmente: %(newname)s\n" +#~ "Destinazione: %(destination)s\n" +#~ "Problema: %(problem)s" + +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Destination: %(destination)s\n" +#~ msgstr "" +#~ "Sorgente: %(source)s\n" +#~ "Destinazione: %(destination)s\n" + #, python-format #~ msgid "" #~ "Sorry, this image location does not exist:\n" @@ -2399,3 +2537,139 @@ msgstr "_Visualizzazione" #~ msgid "Problem with Image Location Folder" #~ msgstr "Problema con la Cartella della Locazione Immagini" + +#, python-format +#~ msgid "0 of %(number)s %(filetypes)s" +#~ msgstr "0 di %(number)s %(filetypes)s" + +#~ msgid "" +#~ "Photos detected with the same filenames, but taken at different times:" +#~ msgstr "" +#~ "Rilevate foto con gli stessi nomi di file, ma scattate ad ore diverse:" + +#, python-format +#~ msgid "" +#~ "First photo: %(image1)s %(image1_date_time)s:%(image1_subseconds)s\n" +#~ "Second photo: %(image2)s %(image2_date_time)s:%(image2_subseconds)s" +#~ msgstr "" +#~ "Prima foto: %(image1)s %(image1_date_time)s:%(image1_subseconds)s\n" +#~ "Seconda foto: %(image2)s %(image2_date_time)s:%(image2_subseconds)s" + +#, python-format +#~ msgid "%(filetype)s has no metadata" +#~ msgstr "%(filetype)s non ha metadati" + +#, python-format +#~ msgid "" +#~ "Subfolder: %(subfolder)s\n" +#~ "File: %(file)s\n" +#~ "Problem: %(problem)s" +#~ msgstr "" +#~ "Sottocartella: %(subfolder)s\n" +#~ "File: %(file)s\n" +#~ "Problema: %(problem)s" + +#, python-format +#~ msgid "" +#~ "Metadata is essential for generating subfolder and/or file names.\n" +#~ "Source: %s" +#~ msgstr "" +#~ "I metadati sono essenziali per generare le sottocartelle e/o i nomi dei " +#~ "files.\n" +#~ "Sorgente: %s" + +#~ msgid "" +#~ "Subfolder name could not be properly generated. Check to ensure there is " +#~ "sufficient metadata." +#~ msgstr "" +#~ "Il nome della sottocartella no ha potuto essere generato correttamente. " +#~ "Controllre che ci siano metadati sufficienti." + +#, python-format +#~ msgid "%(noFiles)s %(filetypes)s skipped" +#~ msgstr "%(noFiles)s %(filetypes)s ignorati" + +#~ msgid "Photo thumbnail could not be extracted" +#~ msgstr "La miniatura della foto non ha potuto essere estratta" + +#~ msgid "No backup device was automatically detected" +#~ msgstr "Nessun dispositivo di salvataggio è stato rilevato automaticamente" + +#~ msgid "Video skipped" +#~ msgstr "Video ignorato" + +#~ msgid "Video already exists" +#~ msgstr "Il video esiste già" + +#~ msgid "Photo already exists" +#~ msgstr "La foto esiste già" + +#~ msgid "Photo skipped" +#~ msgstr "Foto ignorata" + +#~ msgid "videos skipped" +#~ msgstr "video ignorati" + +#~ msgid "videos downloaded" +#~ msgstr "video scaricati" + +#~ msgid "photos skipped" +#~ msgstr "foto ignorate" + +#~ msgid "photos downloaded" +#~ msgstr "foto scaricate" + +#~ msgid "Subsecond metadata not present in photo" +#~ msgstr "Metadato subsecond non presente nella foto" + +#~ msgid "image or video number was specified but filename has no number" +#~ msgstr "" +#~ "numero della foto o del video specificata ma il nome del file non ha numero" + +#, python-format +#~ msgid "%s metadata is not present in photo" +#~ msgstr "metadato %s non è presente nella foto" + +#~ msgid "extension was specified but filename does not have an extension" +#~ msgstr "estensione specificata ma il nome del file non ha un'estensione" + +#, python-format +#~ msgid "%s metadata is not present in video" +#~ msgstr "metadato %s non è presente nel video" + +#, python-format +#~ msgid "%s metadata is not present" +#~ msgstr "%s metadati non è presente" + +#~ msgid "" +#~ "Choose whether to skip downloading the file, or to add a unique indentifier." +#~ msgstr "" +#~ "Scegliere se ignorare il download del file, o se aggiungere un " +#~ "identificatore univoco." + +#~ msgid "" +#~ "Specify what to do when a photo or video of the same name has already been " +#~ "downloaded or backed up." +#~ msgstr "" +#~ "Specificare cosa fare quando una foto o un video con lo stesso nome sono " +#~ "stati scaricati o salvati." + +#, python-format +#~ msgid "%(filetype)s filename could not be generated" +#~ msgstr "Il nome di file %(filetype)s non ha potuto essere generato" + +#, python-format +#~ msgid "" +#~ "%(filetype)s filename could not be properly generated. Check to ensure there " +#~ "is sufficient metadata." +#~ msgstr "" +#~ "Il nome di file %(filetype)s non ha potuto essere generato correttamente. " +#~ "Verificare che ci siano sufficienti metadati." + +#, python-format +#~ msgid "Could not open %(filetype)s" +#~ msgstr "Could not open %(filetype)s" + +#, python-format +#~ msgid "The %(filetype)s was not copied." +#~ msgstr "Il %(filetype)s non è stato copiato." diff --git a/po/nl.po b/po/nl.po index 8694eff..0c28ec4 100644 --- a/po/nl.po +++ b/po/nl.po @@ -7,167 +7,167 @@ msgid "" msgstr "" "Project-Id-Version: rapid\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2010-05-27 22:33-0500\n" -"PO-Revision-Date: 2010-05-28 04:51+0000\n" +"POT-Creation-Date: 2010-07-02 22:51-0500\n" +"PO-Revision-Date: 2010-07-05 00:45+0000\n" "Last-Translator: A.J. Baudrez \n" "Language-Team: Dutch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-05-28 19:08+0000\n" +"X-Launchpad-Export-Date: 2010-07-06 19:08+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Translators: if neccessary, for guidance in how to translate this program, you may see http://damonlynch.net/translate.html -#: rapid/rapid.py:104 rapid/rapid.py:4447 rapid/glade3/rapid.glade.h:72 +#: rapid/rapid.py:122 rapid/rapid.py:6181 rapid/glade3/rapid.glade.h:71 msgid "Rapid Photo Downloader" msgstr "Rapid Photo Downloader" -#: rapid/rapid.py:394 +#: rapid/rapid.py:449 msgid "New York" msgstr "New York" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Manila" msgstr "Manilla" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Prague" msgstr "Praag" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Helsinki" msgstr "Helsinki" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Wellington" msgstr "Wellington" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Tehran" msgstr "Teheran" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Kampala" msgstr "Kampala" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Paris" msgstr "Parijs" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Berlin" msgstr "Berlijn" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Sydney" msgstr "Sydney" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Budapest" msgstr "Boedapest" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Rome" msgstr "Rome" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Moscow" msgstr "Moskou" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Delhi" msgstr "Delhi" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Warsaw" msgstr "Warschau" -#: rapid/rapid.py:398 +#: rapid/rapid.py:453 msgid "Jakarta" msgstr "Jakarta" -#: rapid/rapid.py:398 +#: rapid/rapid.py:453 msgid "Madrid" msgstr "Madrid" -#: rapid/rapid.py:398 +#: rapid/rapid.py:453 msgid "Stockholm" msgstr "Stockholm" -#: rapid/rapid.py:425 +#: rapid/rapid.py:486 msgid "Invalid Downloads Today value.\n" msgstr "Ongeldige Downloads Vandaag waarde.\n" -#: rapid/rapid.py:426 +#: rapid/rapid.py:487 msgid "Resetting value to zero.\n" msgstr "Waarde op nul terugzetten.\n" -#: rapid/rapid.py:465 +#: rapid/rapid.py:526 msgid "'Start of day' preference value is corrupted.\n" msgstr "'Start of day' voorkeurswaarde is corrupt.\n" -#: rapid/rapid.py:466 +#: rapid/rapid.py:527 msgid "Resetting to midnight.\n" msgstr "Terugzetten op middernacht.\n" -#: rapid/rapid.py:492 +#: rapid/rapid.py:553 msgid "Error in Photo Rename preferences" msgstr "Fout in de voorkeuren van Foto Hernoemen" -#: rapid/rapid.py:523 rapid/rapid.py:1567 +#: rapid/rapid.py:584 rapid/rapid.py:1689 msgid "Sorry,these preferences contain an error:\n" msgstr "Sorry, deze voorkeuren bevatten een fout:\n" -#: rapid/rapid.py:534 +#: rapid/rapid.py:595 msgid "Resetting to default values." msgstr "Terugzetten naar de standaard waardes." #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:609 rapid/renamesubfolderprefs.py:196 +#: rapid/rapid.py:670 rapid/renamesubfolderprefs.py:198 msgid "Job code" msgstr "Job code" -#: rapid/rapid.py:677 +#: rapid/rapid.py:738 msgid "Error in Video Rename preferences" msgstr "Fout in de voorkeuren Video Hernoemen" -#: rapid/rapid.py:695 +#: rapid/rapid.py:756 msgid "Error in Photo Download Subfolders preferences" msgstr "Fout in de voorkeuren van Photo Download Subfolders" -#: rapid/rapid.py:712 +#: rapid/rapid.py:773 msgid "Error in Video Download Subfolders preferences" msgstr "Fout in de voorkeuren Video Download Subfolders" -#: rapid/rapid.py:745 rapid/rapid.py:1492 +#: rapid/rapid.py:806 rapid/rapid.py:1539 msgid "photos and videos" msgstr "foto's en video's" -#: rapid/rapid.py:747 rapid/rapid.py:1502 rapid/rapid.py:1782 +#: rapid/rapid.py:808 rapid/rapid.py:1549 rapid/rapid.py:1658 msgid "photos" msgstr "foto's" -#: rapid/rapid.py:880 +#: rapid/rapid.py:943 msgid "Select a folder to download photos to" msgstr "Duid een map aan om de foto's naar toe te downloaden" -#: rapid/rapid.py:898 +#: rapid/rapid.py:961 msgid "Select a folder to download videos to" msgstr "Selecteer een folder om de video's naar toe te downloaden" -#: rapid/rapid.py:980 +#: rapid/rapid.py:1043 #, python-format msgid "Select a folder containing %(file_types)s" msgstr "Selecteer een map die %(file_types)s bevat" -#: rapid/rapid.py:1002 +#: rapid/rapid.py:1065 #, python-format msgid "Select a folder in which to backup %(file_types)s" msgstr "" "Selecteer een map waar %(file_types)s naar toe gebackuped moeten worden" #. Translators: please do not modify or leave out html formatting tags like and . These are used to format the text the users sees -#: rapid/rapid.py:1095 +#: rapid/rapid.py:1146 msgid "" "Warning: There is insufficient metadata to fully generate the " "name. Please use other renaming options." @@ -175,7 +175,7 @@ msgstr "" "Opgepast: Er is onvoldoende metadata om een volledige naam aan te " "maken. Gelieve andere hernoemings opties te gebruiken." -#: rapid/rapid.py:1129 +#: rapid/rapid.py:1182 msgid "" "Warning: There is insufficient metadata to fully generate " "subfolders. Please use other subfolder naming options." @@ -184,25 +184,25 @@ msgstr "" "te maken. Kies andere subfolder benoemings opties." #. Translators: you should not modify or leave out the %s. This is a code used by the programming language python to insert a value that thes user will see -#: rapid/rapid.py:1133 +#: rapid/rapid.py:1186 #, python-format msgid "Example: %s" msgstr "Voorbeeld: %s" -#: rapid/rapid.py:1159 +#: rapid/rapid.py:1212 msgid "" "Downloads today value not updated, as a download is currently occurring" msgstr "" "'Downloads Vandaag' waarde niet aangepast, daar er momenteel een download " "bezig is" -#: rapid/rapid.py:1175 +#: rapid/rapid.py:1228 msgid "Stored number value not updated, as a download is currently occurring" msgstr "" "Waarde opgeslagen nummer niet aangepast, daar er momenteel een download " "bezig is" -#: rapid/rapid.py:1205 +#: rapid/rapid.py:1258 #, python-format msgid "" "The %(filetype)s subfolder preferences had some unnecessary values removed." @@ -211,7 +211,7 @@ msgstr "" "%(filetype)s subfolder" #. Preferences list is now empty -#: rapid/rapid.py:1210 +#: rapid/rapid.py:1263 #, python-format msgid "" "The %(filetype)s subfolder preferences entered are invalid and cannot be " @@ -223,59 +223,95 @@ msgstr "" "Ze zullen naar de standaard waardes worden teruggezet." #. check subfolder preferences for bad values -#: rapid/rapid.py:1224 rapid/rapid.py:1504 rapid/rapid.py:2533 +#: rapid/rapid.py:1277 rapid/rapid.py:1551 msgid "photo" msgstr "foto" -#: rapid/rapid.py:1225 rapid/rapid.py:1499 rapid/rapid.py:2541 +#: rapid/rapid.py:1278 rapid/rapid.py:1546 msgid "video" msgstr "video" #. Translators: this value is used as an example device when automatic backup device detection is enabled. You should translate this. -#: rapid/rapid.py:1468 +#: rapid/rapid.py:1515 msgid "externaldrive1" msgstr "extern apparaat 1" #. Translators: this value is used as an example device when automatic backup device detection is enabled. You should translate this. -#: rapid/rapid.py:1470 +#: rapid/rapid.py:1517 msgid "externaldrive2" msgstr "extern apparaat 2" -#: rapid/rapid.py:1494 rapid/rapid.py:1780 +#: rapid/rapid.py:1541 rapid/rapid.py:1656 msgid "photos or videos" msgstr "foto's of video's" -#: rapid/rapid.py:1497 +#: rapid/rapid.py:1544 msgid "videos" msgstr "video's" +#: rapid/rapid.py:1556 +#, python-format +msgid "" +"%(date)s\n" +"%(time)s" +msgstr "" +"%(date)s\n" +"%(time)s" + +#: rapid/rapid.py:1558 +#, python-format +msgid "%(date)s %(time)s" +msgstr "%(date)s %(time)s" + +#: rapid/rapid.py:1561 +#, python-format +msgid "%(hour)s:%(minute)s:%(second)s:%(subsecond)s" +msgstr "%(hour)s:%(minute)s:%(second)s:%(subsecond)s" + +#: rapid/rapid.py:1568 +#, python-format +msgid "%(date)s %(hour)s:%(minute)s:%(second)s:%(subsecond)s" +msgstr "%(date)s %(hour)s:%(minute)s:%(second)s:%(subsecond)s" + +#: rapid/rapid.py:1596 rapid/rapid.py:2242 +msgid "subfolder and filename" +msgstr "subfolder en bestandsnaam" + +#: rapid/rapid.py:1598 rapid/rapid.py:2244 +msgid "filename" +msgstr "bestandsnaam" + +#: rapid/rapid.py:1600 rapid/rapid.py:2246 +msgid "subfolder" +msgstr "subfolder" + #. This refers to when a device like a hard drive is having its contents scanned, #. looking for photos or videos. It is visible initially in the progress bar for each device -#. (which normally holds "x of y photos"). +#. (which normally holds "x photos and videos"). #. It maybe displayed only briefly if the contents of the device being scanned is small. -#: rapid/rapid.py:1556 +#: rapid/rapid.py:1672 msgid "scanning..." msgstr "Aan het scannen..." -#: rapid/rapid.py:1663 +#: rapid/rapid.py:1783 msgid "The following download path could not be created:\n" msgstr "Het volgende downloadpad kon niet aangemaakt worden:\n" -#: rapid/rapid.py:1664 +#: rapid/rapid.py:1784 #, python-format msgid "%(path)s: " msgstr "%(path)s: " -#: rapid/rapid.py:1665 rapid/rapid.py:1666 rapid/rapid.py:1681 -#: rapid/rapid.py:1682 rapid/rapid.py:2364 rapid/rapid.py:2367 +#: rapid/rapid.py:1785 rapid/rapid.py:1786 rapid/rapid.py:1801 +#: rapid/rapid.py:1802 rapid/rapid.py:2063 rapid/rapid.py:2066 msgid "Download cannot proceed" msgstr "Download kan niet plaatsgrijpen" -#: rapid/rapid.py:1679 rapid/rapid.py:3381 +#: rapid/rapid.py:1799 rapid/rapid.py:4846 msgid "There is an error in the program preferences." msgstr "Er is een fout in de programma voorkeuren." -#: rapid/rapid.py:1680 +#: rapid/rapid.py:1800 msgid "" "\n" "Please check preferences, restart the program, and try again." @@ -288,10 +324,10 @@ msgstr "" #. It refers to the actual number of photos that can be copied. For example, the user might see the following: #. '0 of 512 photos' or '0 of 10 videos' or '0 of 202 photos and videos'. #. This particular text is displayed to the user before the download has started. -#: rapid/rapid.py:1791 +#: rapid/rapid.py:1974 #, python-format -msgid "0 of %(number)s %(filetypes)s" -msgstr "0 van %(number)s %(filetypes)s" +msgid "%(number)s %(filetypes)s" +msgstr "%(number)s %(filetypes)s" #. Translators: as you have already seen, the text can contain values that should not be modified or left out by you, for example %s. #. This text is another example of that, but it is is a little more complex. Here there are two values which will be displayed @@ -299,345 +335,214 @@ msgstr "0 van %(number)s %(filetypes)s" #. %(number)s should be left exactly as is: 'number' should not be translated. The same applies to %(device)s: 'device' should #. not be translated. Generally speaking, if translating the sentence requires it, you can move items like '%(xyz)s' around #. in a sentence, but you should never modify them or leave them out. -#: rapid/rapid.py:1803 +#: rapid/rapid.py:1985 #, python-format msgid "Device scan complete: found %(number)s %(filetypes)s on %(device)s" msgstr "" "Apparaten scan afgelopen: %(number)s %(filetypes)s op %(device)s gevonden" -#: rapid/rapid.py:1810 +#: rapid/rapid.py:1992 #, python-format msgid "Device scan complete: no %(filetypes)s found on %(device)s" msgstr "Apparaten scan afgelopen: geen %(filetypes)s gevonden op %(device)s" -#: rapid/rapid.py:1844 -#, python-format -msgid "%(filetype)s filename could not be generated" -msgstr "%(filetype)s bestandsnaam kon niet aangemaakt worden" +#. This message informs the user that the device (e.g. camera, hard drive or memory card) was automatically unmounted and they can now remove it +#: rapid/rapid.py:2013 +msgid "The device can now be safely removed" +msgstr "Het apparaat kan nu veilig verwijderd worden" -#. '%(source)s' and '%(problem)s' are two more examples of text that should not be modified or left out -#: rapid/rapid.py:1846 +#: rapid/rapid.py:2019 #, python-format -msgid "" -"Source: %(source)s\n" -"Problem: %(problem)s" -msgstr "" -"Bron: %(source)s\n" -"Probleem: %(problem)s" +msgid "%(noFiles)s %(filetypes)s downloaded" +msgstr "%(noFiles)s %(filetypes)s gedownload" -#: rapid/rapid.py:1850 +#: rapid/rapid.py:2022 #, python-format -msgid "" -"%(filetype)s filename could not be properly generated. Check to ensure there " -"is sufficient metadata." -msgstr "" -"%(filetype)s bestandsnaam kon niet correct aangemaakt worden. Controller of " -"er voldoende metadata is." +msgid "%(noFiles)s %(filetypes)s failed to download" +msgstr "%(noFiles)s %(filetypes)s kon niet gedownload worden" + +#: rapid/rapid.py:2028 rapid/rapid.py:5627 +msgid "warnings" +msgstr "verwittigingen" -#: rapid/rapid.py:1851 +#: rapid/rapid.py:2030 rapid/rapid.py:5631 +msgid "errors" +msgstr "fouten" + +#: rapid/rapid.py:2057 #, python-format -msgid "" -"Source: %(source)s\n" -"Partially generated filename: %(newname)s\n" -"Destination: %(destination)s\n" -"Problem: %(problem)s" -msgstr "" -"Bron: %(source)s\n" -"Gedeeltelijke aangemaakte bestandsnaam: %(newname)s\n" -"Doel: %(destination)s\n" -"Probleem: %(problem)s" +msgid "Source: %s\n" +msgstr "Bron: %s\n" -#: rapid/rapid.py:1859 rapid/rapid.py:1864 rapid/rapid.py:1883 -#: rapid/rapid.py:2207 +#: rapid/rapid.py:2059 #, python-format -msgid "" -"Source: %(source)s\n" -"Destination: %(destination)s" -msgstr "" -"Bron: %(source)s\n" -"Doel: %(destination)s" +msgid "Device: %s\n" +msgstr "Apparaat: %s\n" -#: rapid/rapid.py:1861 +#: rapid/rapid.py:2060 #, python-format -msgid "Unique identifier '%s' added" -msgstr "Unieke identifier '%s' toegevoegd" +msgid "Destination: %s" +msgstr "Doel: %s" -#: rapid/rapid.py:1869 rapid/rapid.py:2270 +#: rapid/rapid.py:2061 rapid/rapid.py:2064 +msgid "Could not create temporary download directory" +msgstr "Kon de tijdelijke downloadfolder niet aanmaken" + +#: rapid/rapid.py:2064 +msgid "Error:" +msgstr "Fout:" + +#: rapid/rapid.py:2088 +msgid "Backup path does not exist" +msgstr "Backup pad bestaat niet" + +#: rapid/rapid.py:2089 #, python-format -msgid "Source: %(source)s" -msgstr "Bron: %(source)s" +msgid "The path %s could not be created" +msgstr "Het pad %s kon niet aangemaakt worden" -#: rapid/rapid.py:1877 rapid/rapid.py:1882 -msgid "Download copying error" -msgstr "Download kopieer fout" +#: rapid/rapid.py:2090 +msgid "No backups can occur" +msgstr "Backups kunnen niet plaatsgrijpen" -#: rapid/rapid.py:1878 +#: rapid/rapid.py:2117 #, python-format msgid "" "Source: %(source)s\n" "Destination: %(destination)s\n" -"Error: %(errorno)s %(strerror)s" +"%(problem)s" msgstr "" "Bron: %(source)s\n" "Doel: %(destination)s\n" -"Fout: %(errorno)s %(strerror)s" - -#: rapid/rapid.py:1880 rapid/rapid.py:1885 -#, python-format -msgid "The %(filetype)s was not copied." -msgstr "De %(filetype)s werd niet gekopiëerd" - -#: rapid/rapid.py:1889 -msgid "" -"Photos detected with the same filenames, but taken at different times:" -msgstr "" -"Foto's met dezelfde naam ontdekt, maar gemaakt op verschillende tijden:" +"%(problem)s" -#: rapid/rapid.py:1890 +#: rapid/rapid.py:2146 rapid/rapid.py:2492 rapid/rapid.py:2527 +#: rapid/rapid.py:2555 rapid/rapid.py:2586 rapid/rapid.py:2605 #, python-format msgid "" -"First photo: %(image1)s %(image1_date_time)s:%(image1_subseconds)s\n" -"Second photo: %(image2)s %(image2_date_time)s:%(image2_subseconds)s" +"Source: %(source)s\n" +"Destination: %(destination)s" msgstr "" -"Eerste foto: %(image1)s %(image1_date_time)s:%(image1_subseconds)s\n" -"Tweede foto: %(image2)s %(image2_date_time)s:%(image2_subseconds)s" - -#: rapid/rapid.py:1914 rapid/rapid.py:1927 -#, python-format -msgid "Could not open %(filetype)s" -msgstr "Kon %(filetype)s niet openen" - -#: rapid/rapid.py:1915 rapid/rapid.py:1928 -#, python-format -msgid "Source: %s" -msgstr "Bron: %s" +"Bron: %(source)s\n" +"Doel: %(destination)s" -#: rapid/rapid.py:1950 -#, python-format -msgid "%(filetype)s has no metadata" -msgstr "%(filetype)s heeft geen metadata" +#. hopefully inst will never be None, but just to be safe... +#: rapid/rapid.py:2161 +msgid "Please check your system and try again." +msgstr "Controlleer je systeem en probeer opnieuw" -#: rapid/rapid.py:1951 -#, python-format -msgid "" -"Metadata is essential for generating subfolder and/or file names.\n" -"Source: %s" +#: rapid/rapid.py:2181 +msgid "Photos detected with the same filenames, but taken at different times" msgstr "" -"Metadata is essentieel om subfolder en.of bestandsnamen aan te maken.\n" -"Bron: %s" +"Foto's gevonden met dezelfde bestandsnaam, maar op een verschillend tijdstip " +"genomen" -#: rapid/rapid.py:1962 -msgid "" -"Subfolder name could not be properly generated. Check to ensure there is " -"sufficient metadata." -msgstr "" -"Subfolder naam kon niet correct aangemaakt worden. Ga na of er voldoende " -"metadata is." +#: rapid/rapid.py:2221 +msgid "Photo has already been downloaded" +msgstr "Foto werd al eens gedownload" -#: rapid/rapid.py:1963 +#: rapid/rapid.py:2222 rapid/rapid.py:2621 #, python-format -msgid "" -"Subfolder: %(subfolder)s\n" -"File: %(file)s\n" -"Problem: %(problem)s" -msgstr "" -"Subfolder: %(subfolder)s\n" -"Bestand: %(file)s\n" -"Probleem: %(problem)s" +msgid "Source: %(source)s" +msgstr "Bron: %(source)s" #. A new day, according the user's preferences of what time a day begins, has started -#: rapid/rapid.py:2147 +#: rapid/rapid.py:2420 msgid "New day has started - resetting 'Downloads Today' sequence number" msgstr "" "Nieuwe dag begonnen - volgnummer 'Downloads Vandaag' aan het terugzetten" -#: rapid/rapid.py:2206 +#: rapid/rapid.py:2491 #, python-format msgid "Backup of %(file_type)s already exists" msgstr "Backup van %(file_type)s bestaat reeds" -#: rapid/rapid.py:2210 +#: rapid/rapid.py:2495 #, python-format msgid "Backup %(file_type)s overwritten" msgstr "Backup van %(file_type)s overschreven" -#: rapid/rapid.py:2215 +#: rapid/rapid.py:2499 #, python-format msgid "%(file_type)s not backed up to %(volume)s" msgstr "%(file_type)s niet gebackuped op %(volume)s" -#: rapid/rapid.py:2217 +#: rapid/rapid.py:2501 #, python-format msgid "%(file_type)s not backed up" msgstr "%(file_type)s niet gebackuped" -#: rapid/rapid.py:2243 rapid/rapid.py:2260 +#: rapid/rapid.py:2524 rapid/rapid.py:2552 rapid/rapid.py:2585 +#: rapid/rapid.py:2604 msgid "Backing up error" msgstr "Backup fout" -#: rapid/rapid.py:2244 +#: rapid/rapid.py:2525 rapid/rapid.py:2553 #, python-format msgid "Destination directory could not be created: %(directory)s\n" msgstr "Doelmap kon niet aangemaakt worden: %(directory)s\n" -#: rapid/rapid.py:2246 -#, python-format -msgid "" -"Source: %(source)s\n" -"Destination: %(destination)s\n" -msgstr "" -"Bron: %(source)s\n" -"Doel: %(destination)s\n" - -#: rapid/rapid.py:2248 +#: rapid/rapid.py:2529 rapid/rapid.py:2588 #, python-format -msgid "Error: %(errno)s %(strerror)s" -msgstr "Fout: %(errno)s %(strerror)s" +msgid "Error: %(inst)s" +msgstr "Fout: %(inst)s" -#: rapid/rapid.py:2249 rapid/rapid.py:2263 +#: rapid/rapid.py:2530 rapid/rapid.py:2558 rapid/rapid.py:2589 +#: rapid/rapid.py:2608 #, python-format msgid "The %(file_type)s was not backed up." msgstr "De %(file_type)s werd niet gebackuped" -#: rapid/rapid.py:2261 +#: rapid/rapid.py:2557 rapid/rapid.py:2607 #, python-format -msgid "" -"Source: %(source)s\n" -"Destination: %(destination)s\n" -"Error: %(errno)s %(strerror)s" -msgstr "" -"Bron: %(source)s\n" -"Doel: %(destination)s\n" -"Fout: %(errno)s %(strerror)s" +msgid "Error: %(errno)s %(strerror)s" +msgstr "Fout: %(errno)s %(strerror)s" -#: rapid/rapid.py:2269 +#: rapid/rapid.py:2620 #, python-format msgid "%(file_type)s could not be backed up" msgstr "%(file_type)s kon niet gebackuped worden" -#: rapid/rapid.py:2272 +#: rapid/rapid.py:2623 msgid "No suitable backup volume was found" msgstr "Geen geldig backup volume gevonden" -#: rapid/rapid.py:2274 +#: rapid/rapid.py:2625 msgid "A backup location was not found" msgstr "Een backup locatie werd niet gevonden" -#. This message informs the user that the device (e.g. camera, hard drive or memory card) was automatically unmounted and they can now remove it -#: rapid/rapid.py:2288 -msgid "The device can now be safely removed" -msgstr "Het apparaat kan nu veilig verwijderd worden" - -#: rapid/rapid.py:2294 -#, python-format -msgid "%(noFiles)s %(filetypes)s downloaded" -msgstr "%(noFiles)s %(filetypes)s gedownload" - -#: rapid/rapid.py:2297 -#, python-format -msgid "%(noFiles)s %(filetypes)s skipped" -msgstr "%(noFiles)s %(filetypes)s overgeslagen" - -#: rapid/rapid.py:2303 rapid/rapid.py:4027 -msgid "warnings" -msgstr "verwittigingen" - -#: rapid/rapid.py:2305 rapid/rapid.py:4029 -msgid "errors" -msgstr "fouten" - -#: rapid/rapid.py:2331 rapid/rapid.py:2823 rapid/rapid.py:2838 -msgid "Photo thumbnail could not be extracted" -msgstr "Foto icoontje kon niet opgehaald worden" - -#: rapid/rapid.py:2358 -#, python-format -msgid "Source: %s\n" -msgstr "Bron: %s\n" - -#: rapid/rapid.py:2360 -#, python-format -msgid "Device: %s\n" -msgstr "Apparaat: %s\n" - -#: rapid/rapid.py:2361 -#, python-format -msgid "Destination: %s" -msgstr "Doel: %s" - -#: rapid/rapid.py:2362 rapid/rapid.py:2365 -msgid "Could not create temporary download directory" -msgstr "Kon de tijdelijke downloadfolder niet aanmaken" - -#: rapid/rapid.py:2365 -msgid "Error:" -msgstr "Fout:" - -#: rapid/rapid.py:2382 +#: rapid/rapid.py:2679 #, python-format msgid "This device has no %(types_searched_for)s to download from." msgstr "Dit apparaat heeft geen %(types_searched_for)s om te downloaden" -#: rapid/rapid.py:2417 +#: rapid/rapid.py:2733 #, python-format msgid "Download has started from %s" msgstr "Download begonnen vanaf %s" -#: rapid/rapid.py:2434 -msgid "Backup path does not exist" -msgstr "Backup pad bestaat niet" - -#: rapid/rapid.py:2435 +#: rapid/rapid.py:2736 #, python-format -msgid "The path %s could not be created" -msgstr "Het pad %s kon niet aangemaakt worden" - -#: rapid/rapid.py:2436 rapid/rapid.py:2444 -msgid "No backups can occur" -msgstr "Backups kunnen niet plaatsgrijpen" - -#: rapid/rapid.py:2442 -msgid "Backup device missing" -msgstr "Backup apparaat afwezig" +msgid "Attempting to download %s files" +msgstr "Proberen om %s bestanden te downloaden" -#: rapid/rapid.py:2443 -msgid "No backup device was automatically detected" -msgstr "Er werd geen backup apparaat automatisch ontdekt" - -#: rapid/rapid.py:2534 rapid/rapid.py:3343 rapid/rapid.py:3345 -msgid "Photo" -msgstr "Foto" - -#: rapid/rapid.py:2535 -msgid "Photo skipped" -msgstr "Foto overgeslagen" - -#: rapid/rapid.py:2536 -msgid "Photo already exists" -msgstr "Foto bestaat reeds" - -#: rapid/rapid.py:2542 rapid/rapid.py:3343 -msgid "Video" -msgstr "Video" - -#: rapid/rapid.py:2543 -msgid "Video skipped" -msgstr "Video overgeslagen" - -#: rapid/rapid.py:2544 -msgid "Video already exists" -msgstr "Video bestaat reeds" - -#: rapid/rapid.py:2592 +#. reset the progress bar to update the status of this download attempt +#: rapid/rapid.py:2769 rapid/rapid.py:2836 #, python-format msgid "%(number)s of %(total)s %(filetypes)s" msgstr "%(number)s van %(total)s %(filetypes)s" -#: rapid/rapid.py:2607 rapid/rapid.py:2611 +#: rapid/rapid.py:2832 +#, python-format +msgid "%(number)s of %(total)s %(filetypes)s (%(remaining)s remaining)" +msgstr "" +"%(number)s van de %(total)s %(filetypes)s (%(remaining)s blijven over)" + +#: rapid/rapid.py:2857 rapid/rapid.py:2861 msgid "Could not delete photo or video from device" msgstr "Kon foto of video niet verwijderen van apparaat" -#: rapid/rapid.py:2608 +#: rapid/rapid.py:2858 #, python-format msgid "" "Photo: %(source)s\n" @@ -646,45 +551,63 @@ msgstr "" "Foto: %(source)s\n" "Fout: %(errno)s %(strerror)s" -#: rapid/rapid.py:2612 +#: rapid/rapid.py:2862 #, python-format msgid "Photo: %(source)s" msgstr "Foto: %(source)s" -#: rapid/rapid.py:2614 +#: rapid/rapid.py:2864 #, python-format msgid "Deleted %(number)i %(filetypes)s from device" msgstr "Verwijderde %(number)i %(filetypes)s van apparaat" -#: rapid/rapid.py:2624 +#: rapid/rapid.py:2871 #, python-format msgid "Download complete from %s" msgstr "Download van %s afgelopen" #. Device refers to a thing like a camera, memory card in its reader, external hard drive, Portable Storage Device, etc. -#: rapid/rapid.py:2700 +#: rapid/rapid.py:2993 rapid/rapid.py:3466 msgid "Device" msgstr "Apparaat" #. Size refers to the total size of images on the device, typically in MB or GB -#: rapid/rapid.py:2705 +#: rapid/rapid.py:2998 rapid/rapid.py:3455 msgid "Size" msgstr "Grootte" -#: rapid/rapid.py:2708 +#: rapid/rapid.py:3001 msgid "Download Progress" msgstr "Downloadvoortgang" -#: rapid/rapid.py:2824 rapid/rapid.py:2839 -msgid "It may be corrupted" -msgstr "Het kan corrupt zijn" +#: rapid/rapid.py:3089 +msgid "Downloading From Cameras" +msgstr "Downloaden van Camera's" + +#: rapid/rapid.py:3095 +msgid "Downloading directly from a camera may work poorly or not at all" +msgstr "" +"Het rechtstreeks downloaden vanaf een camera kan slecht, tot helemaal niet " +"werken" + +#: rapid/rapid.py:3096 +msgid "" +"Downloading from a card reader always works and is generally much faster. It " +"is strongly recommended to use a card reader." +msgstr "" +"Het downloaden van een kaartlezer werkt altijd en is meestal sneller. Het " +"wordt tenstelligste aanbevolen een kaartlezer te gebruiken." + +#: rapid/rapid.py:3110 +msgid "_Show this message again" +msgstr "_Toon dit bericht opnieuw" -#: rapid/rapid.py:2869 +#: rapid/rapid.py:3145 msgid "Device Detected" msgstr "Apparaat gedetecteerd" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2878 +#: rapid/rapid.py:3154 msgid "" "Should this device or partition be used to download photos or videos from?" msgstr "" @@ -692,70 +615,158 @@ msgstr "" "te halen?" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2897 +#: rapid/rapid.py:3173 msgid "_Remember this choice" msgstr "_Herinner deze keuze" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2934 +#: rapid/rapid.py:3210 #, python-format msgid "%s selected for downloading from" msgstr "%s aangeduid om gedownload te worden van" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2937 +#: rapid/rapid.py:3213 msgid "This device or partition will always be used to download from" msgstr "" "Dit apparaat of deze partitie zal altijd gebruikt worden om van te downloaden" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2940 +#: rapid/rapid.py:3216 #, python-format msgid "%s rejected as a download device" msgstr "%s afgewezen als download apparaat" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2943 +#: rapid/rapid.py:3219 msgid "This device or partition will never be used to download from" msgstr "" "Dit apparaat of deze partitie zal nooit gebruikt worden om van te downloaden" -#: rapid/rapid.py:2950 +#: rapid/rapid.py:3226 msgid "Remove all Job Codes?" msgstr "Verwijder alle Job Codes?" -#: rapid/rapid.py:2967 +#: rapid/rapid.py:3243 msgid "Should all Job Codes be removed?" msgstr "Moeten alle Job Codes verwijderd worden?" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:2995 +#: rapid/rapid.py:3271 msgid "Enter a Job Code" msgstr "Geef een Job Code op" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:3013 -msgid "Enter a new job code, or select a previous one." -msgstr "Geef een nieuwe job code op, of kies een vorige." +#: rapid/rapid.py:3290 +msgid "Enter a new Job Code, or select a previous one" +msgstr "Geef een nieuwe Job Code in of selecteer een bestaande" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:3016 -msgid "Enter a new job code." -msgstr "Geef een nieuwe job code." +#: rapid/rapid.py:3293 +msgid "Enter a new Job Code" +msgstr "Geef een nieuwe Job Code in" -#: rapid/rapid.py:3021 +#: rapid/rapid.py:3298 rapid/rapid.py:4417 msgid "Job Code:" msgstr "Job Code:" -#: rapid/rapid.py:3068 +#: rapid/rapid.py:3345 msgid "Job Code entered" msgstr "Job Code ingevoerd" -#: rapid/rapid.py:3070 +#: rapid/rapid.py:3347 msgid "Job Code not entered" msgstr "Job Code niet ingevoerd" -#: rapid/rapid.py:3330 +#: rapid/rapid.py:3401 +msgid "Status" +msgstr "Status" + +#: rapid/rapid.py:3409 +msgid "Type" +msgstr "Type" + +#: rapid/rapid.py:3418 rapid/rapid.py:4808 rapid/rapid.py:4810 +msgid "Photo" +msgstr "Foto" + +#: rapid/rapid.py:3420 +msgid "File" +msgstr "Bestand" + +#: rapid/rapid.py:3435 +msgid "Job Code" +msgstr "Job Code" + +#: rapid/rapid.py:3445 +msgid "Date" +msgstr "Datum" + +#: rapid/rapid.py:3477 rapid/renamesubfolderprefs.py:194 +msgid "Filename" +msgstr "Bestandsnaam" + +#: rapid/rapid.py:3488 +msgid "Path" +msgstr "Pad" + +#: rapid/rapid.py:3843 +#, python-format +msgid "%(filetype)s was downloaded successfully" +msgstr "%(filetype)s was met succes gedownload" + +#: rapid/rapid.py:3845 +#, python-format +msgid "%(filetype)s was not downloaded" +msgstr "%(filetype)s werd niet gedownload" + +#: rapid/rapid.py:3847 +#, python-format +msgid "%(filetype)s was downloaded with warnings" +msgstr "%(filetype)s werd gedownload met opmerkingen" + +#: rapid/rapid.py:3849 +#, python-format +msgid "%(filetype)s was downloaded but there were problems backing up" +msgstr "" +"%(filetype)s werd gedownload maar er waren problemen tijdens het backuppen" + +#: rapid/rapid.py:3851 +#, python-format +msgid "%(filetype)s was neither downloaded nor backed up" +msgstr "%(filetype)s werd niet gedownload noch gebackupped" + +#: rapid/rapid.py:3853 +#, python-format +msgid "%(filetype)s is ready to be downloaded" +msgstr "%(filetype)s is klaar om gedownload te worden" + +#: rapid/rapid.py:3855 +#, python-format +msgid "%(filetype)s is about to be downloaded" +msgstr "%(filetype)s staat op het punt gedownload te worden" + +#: rapid/rapid.py:3857 +#, python-format +msgid "%(filetype)s will be downloaded with warnings" +msgstr "%(filetype)s zal gedownload worden met opmerkingen" + +#: rapid/rapid.py:3859 +#, python-format +msgid "%(filetype)s cannot be downloaded" +msgstr "%(filetype)s kan niet gedownload worden" + +#: rapid/rapid.py:4240 +msgid "Preview" +msgstr "Voorbeeld" + +#: rapid/rapid.py:4439 +msgid "Enter a new Job Code and press Enter, or select an existing Job Code" +msgstr "" +"Geef een nieuwe Job Code op en druk op Enter, of selecteer een bestaande Job " +"Code" + +#: rapid/rapid.py:4795 #, python-format msgid "" "Sorry, this device location does not exist:\n" @@ -768,21 +779,25 @@ msgstr "" "\n" "Los het probleem op, of pas de voorkeuren aan." -#: rapid/rapid.py:3334 +#: rapid/rapid.py:4799 msgid "Problem with Device Location Folder" msgstr "Probleem met de Apparaat Locatie Map" -#: rapid/rapid.py:3350 +#: rapid/rapid.py:4808 +msgid "Video" +msgstr "Video" + +#: rapid/rapid.py:4815 #, python-format msgid "The %(file_type)s Download Folder does not exist.\n" msgstr "De %(file_type)s Download Map bestaat niet\n" -#: rapid/rapid.py:3359 +#: rapid/rapid.py:4824 #, python-format msgid "The %(file_type)s Download Folder exists but cannot be written to.\n" msgstr "De %(file_type)s Download Map bestaat maar is niet beschrijfbaar.\n" -#: rapid/rapid.py:3364 +#: rapid/rapid.py:4829 msgid "" "Sorry, problems were encountered with your download folders. Please fix the " "problems or modify the preferences.\n" @@ -792,60 +807,66 @@ msgstr "" "pas de voorkeuren aan.\n" "\n" -#: rapid/rapid.py:3367 +#: rapid/rapid.py:4832 msgid "Problem with Download Folder" msgstr "Probleem met de Download Map" -#: rapid/rapid.py:3369 +#: rapid/rapid.py:4834 msgid "Problem with Download Folders" msgstr "Prbleem met de Download Mappen" -#: rapid/rapid.py:3382 +#: rapid/rapid.py:4847 msgid "Some preferences will be reset." msgstr "Sommige voorkeuren worden gereset" -#: rapid/rapid.py:3416 +#: rapid/rapid.py:4880 +msgid "Displaying warning about downloading directly from camera" +msgstr "" +"Opmerking vertonen betreffende het rechtstreeks downloaden vanaf een camera" + +#: rapid/rapid.py:4890 #, python-format msgid "Prompting whether to use %s" msgstr "Vragen om %s te gebruiken" -#: rapid/rapid.py:3444 +#: rapid/rapid.py:4917 msgid "Prompting for Job Code" msgstr "Vragen naar de Job Code" -#: rapid/rapid.py:3448 +#: rapid/rapid.py:4921 msgid "Already prompting for Job Code, do not prompt again" msgstr "Reeds bezig met vragen naar Job Code, vraag niet opnieuw" -#: rapid/rapid.py:3463 -msgid "Starting downloads that have been waiting for a Job Code" -msgstr "Downloads beginnen die op een Job Code aan het wachten waren" - -#: rapid/rapid.py:3467 +#: rapid/rapid.py:4938 msgid "Starting downloads" msgstr "Downloaden aanvangen" -#: rapid/rapid.py:3482 +#. autostart is true +#: rapid/rapid.py:4942 +msgid "Starting downloads that have been waiting for a Job Code" +msgstr "Downloads beginnen die op een Job Code aan het wachten waren" + +#: rapid/rapid.py:4984 #, python-format msgid "Creating photo download folder %(folder)s" msgstr "Foto download map %(folder)s wordt aangemaakt" -#: rapid/rapid.py:3487 +#: rapid/rapid.py:4989 #, python-format msgid "Failed to create default photo download folder %(folder)s" msgstr "Kon de standaard foto download map %(folder)s niet aanmaken" -#: rapid/rapid.py:3491 +#: rapid/rapid.py:4993 #, python-format msgid "Creating video download folder %(folder)s" msgstr "Video download map %(folder)s wordt aangemaakt" -#: rapid/rapid.py:3496 +#: rapid/rapid.py:4998 #, python-format msgid "Failed to create default video download folder %(folder)s" msgstr "Kon de standaard video download map %(folder)s niet aanmaken" -#: rapid/rapid.py:3521 +#: rapid/rapid.py:5023 msgid "" "A newer version of this program was previously run on this computer.\n" "\n" @@ -854,7 +875,7 @@ msgstr "" "opgestart.\n" "\n" -#: rapid/rapid.py:3523 +#: rapid/rapid.py:5025 msgid "" "Program preferences appear to be valid, but please check them to ensure " "correct operation." @@ -862,15 +883,15 @@ msgstr "" "Programma voorkeuren blijken OK te zijn, maar controleer toch even op " "correcte werking van het programma" -#: rapid/rapid.py:3525 +#: rapid/rapid.py:5027 msgid "Sorry, some preferences are invalid and will be reset." msgstr "Sorry, bepaalde voorkeuren zijn ongeldig en worden gereset." -#: rapid/rapid.py:3526 +#: rapid/rapid.py:5028 msgid "Warning:" msgstr "Waarschuwing:" -#: rapid/rapid.py:3531 +#: rapid/rapid.py:5033 msgid "" "This version of the program is newer than the previously run version. " "Checking preferences." @@ -878,11 +899,11 @@ msgstr "" "Deze versie van het programma is recenter dan de vorige. De voorkeuren " "worden overlopen." -#: rapid/rapid.py:3538 +#: rapid/rapid.py:5040 msgid "Preferences were modified." msgstr "Voorkeuren werden aangepast." -#: rapid/rapid.py:3539 +#: rapid/rapid.py:5041 msgid "" "This version of the program uses different preferences than the old version. " "Your preferences have been updated.\n" @@ -894,11 +915,11 @@ msgstr "" "\n" "Gelieve deze te controleren om een goede werking te garanderen." -#: rapid/rapid.py:3543 +#: rapid/rapid.py:5045 msgid "No preferences needed to be changed." msgstr "Er dienen geen voorkeuren aangepast te worden." -#: rapid/rapid.py:3545 +#: rapid/rapid.py:5047 msgid "" "This version of the program uses different preferences than the old version. " "Some of your previous preferences were invalid, and could not be updated. " @@ -908,130 +929,155 @@ msgstr "" "Bepaalde van je vorige voorkeuren zijn ongeldig en kunnen niet aangepast " "worden. Ze worden naar standaard waarden teruggebracht." -#: rapid/rapid.py:3555 +#: rapid/rapid.py:5057 msgid "Problem using pynotify." msgstr "Probleem met het gebruik van pynotify." -#: rapid/rapid.py:3571 +#: rapid/rapid.py:5073 msgid "Failed to receive pynotify server capabilities." msgstr "Kon de pynotify server mogelijkheden niet ontvangen." -#: rapid/rapid.py:3580 +#: rapid/rapid.py:5084 msgid "" "Warning: desktop environment notification server is incorrectly configured." msgstr "" "Opgelet: de desktop environment notification server is verkeerd ingesteld." -#: rapid/rapid.py:3626 +#: rapid/rapid.py:5132 msgid "and" msgstr "en" -#: rapid/rapid.py:3631 +#: rapid/rapid.py:5137 msgid "Using backup devices" msgstr "Backup apparaten aan het gebruiken" -#: rapid/rapid.py:3633 +#: rapid/rapid.py:5139 msgid "Using backup device" msgstr "Backup apparaat aan het gebruiken" -#: rapid/rapid.py:3635 +#: rapid/rapid.py:5141 msgid "No backup devices detected" msgstr "Geen backup apparaat gedetecteerd" -#: rapid/rapid.py:3674 rapid/rapid.py:3831 +#: rapid/rapid.py:5188 rapid/rapid.py:5350 #, python-format msgid "Device %(device)s (%(path)s) ignored" msgstr "Apparaat %(device)s (%(path)s) wordt genegeerd" -#: rapid/rapid.py:3790 +#: rapid/rapid.py:5309 #, python-format msgid "Detected %(device)s with path %(path)s" msgstr "Detecteerde %(device)s met als pad %(path)s" -#: rapid/rapid.py:3794 +#: rapid/rapid.py:5313 msgid "Automatically start download is true" msgstr "Automatisch opstarten download is waar" -#: rapid/rapid.py:3796 +#: rapid/rapid.py:5315 msgid "Automatically start download is false" msgstr "Automatisch opstarten download is onwaar" -#: rapid/rapid.py:3849 +#: rapid/rapid.py:5368 msgid "Using manually specified path" msgstr "Manueel ingegeven pad aan het gebruiken" -#: rapid/rapid.py:3857 +#: rapid/rapid.py:5376 rapid/rapid.py:5417 #, python-format msgid "Backing up to %(path)s" msgstr "Backuppen naar %(path)s" -#: rapid/rapid.py:3968 rapid/rapid.py:4017 +#. the user is trying to backup to a device that is currently being downloaded from..... we don't normally allow that, but what to do? +#: rapid/rapid.py:5441 +#, python-format +msgid "Warning: backup device %(device)s is currently being downloaded from" +msgstr "" +"Opmerking: er wordt momenteel gedownload vanaf backup apparaat %(device)s" + +#: rapid/rapid.py:5458 +msgid "D_ownload Selected" +msgstr "D_ownload geselecteerd" + +#: rapid/rapid.py:5550 rapid/rapid.py:5599 msgid "All downloads complete" msgstr "Alle downloads zijn afgelopen" -#: rapid/rapid.py:3982 +#: rapid/rapid.py:5564 msgid "MB/s" msgstr "MB/s" -#: rapid/rapid.py:3992 +#: rapid/rapid.py:5574 msgid "About 1 second remaining" msgstr "Ongeveer 1 seconde te gaan" -#: rapid/rapid.py:3994 +#: rapid/rapid.py:5576 #, python-format msgid "About %i seconds remaining" msgstr "Ongeveer %i seconden te gaan" -#: rapid/rapid.py:3996 +#: rapid/rapid.py:5578 msgid "About 1 minute remaining" msgstr "Ongeveer 1 minuut te gaan" #. Translators: in the text '%(minutes)i:%(seconds)02i', only the : should be translated, if needed. #. '%(minutes)i' and '%(seconds)02i' should not be modified or left out. They are used to format and display the amount #. of time the download has remainging, e.g. 'About 5:36 minutes remaining' -#: rapid/rapid.py:4001 +#: rapid/rapid.py:5583 #, python-format msgid "About %(minutes)i:%(seconds)02i minutes remaining" msgstr "Ongeveer %(minutes)i:%(seconds)02i minuten te gaan" -#: rapid/rapid.py:4019 -msgid "photos downloaded" -msgstr "foto's gedownload" +#: rapid/rapid.py:5602 rapid/rapid.py:5608 rapid/rapid.py:5614 +#: rapid/rapid.py:5620 rapid/rapid.py:5625 rapid/rapid.py:5629 +#, python-format +msgid "%(number)s %(numberdownloaded)s" +msgstr "%(number)s %(numberdownloaded)s" -#: rapid/rapid.py:4021 -msgid "photos skipped" -msgstr "foto's overgeslagen" +#: rapid/rapid.py:5604 rapid/rapid.py:5616 +#, python-format +msgid "%(filetype)s downloaded" +msgstr "%(filetype)s gedownload" -#: rapid/rapid.py:4023 -msgid "videos downloaded" -msgstr "video's gedownload" +#: rapid/rapid.py:5610 rapid/rapid.py:5622 +#, python-format +msgid "%(filetype)s failed to download" +msgstr "%(filetype)s werden niet gedownload" -#: rapid/rapid.py:4025 -msgid "videos skipped" -msgstr "video's overgeslagen" +#: rapid/rapid.py:5789 +msgid "_Resume" +msgstr "_Hervatten" -#. This text will be displayed to the user on the Download / Pause button. -#. Please note the space at the end of the label - it is needed to meet the Gnome Human Interface Guidelines -#: rapid/rapid.py:4125 -msgid "_Download " -msgstr "_Download " +#: rapid/rapid.py:5792 +msgid "_Download All" +msgstr "_Alles Downloaden" #. This text will be displayed to the user on the Download / Pause button. -#: rapid/rapid.py:4135 +#: rapid/rapid.py:5801 msgid "_Pause" msgstr "_Pauze" -#: rapid/rapid.py:4209 -msgid "Preferences were changed." -msgstr "Voorkeuren werden aangepast." +#: rapid/rapid.py:5914 +msgid "Download device settings preferences were changed." +msgstr "De download apparaat instellingen zijn veranderd" + +#: rapid/rapid.py:5926 +msgid "Backup preferences were changed." +msgstr "Backup voorkeuren zijn veranderd." + +#: rapid/rapid.py:5932 +msgid "Subfolder and filename preferences were changed." +msgstr "Subfolder en bestandsnaam voorkeuren zijn veranderd." + +#: rapid/rapid.py:5943 +msgid "Download folder preferences were changed." +msgstr "Downloadmap voorkeuren zijn veranderd." -#: rapid/rapid.py:4407 +#: rapid/rapid.py:6141 msgid "Goodbye" msgstr "Tot later" #. Translators: this text is displayed to the user when they request information on the command line options. #. The text %default should not be modified or left out. -#: rapid/rapid.py:4418 +#: rapid/rapid.py:6152 #, python-format msgid "" "display program information on the command line as the program runs " @@ -1040,388 +1086,384 @@ msgstr "" "vertoon programma informatie op de commando lijn wanneer het programma " "draait (standaard: %default)" -#: rapid/rapid.py:4419 +#: rapid/rapid.py:6153 msgid "only output errors to the command line" msgstr "alleen fouten naar de commandolijn sturen" #. image file extensions are recognized RAW files plus TIFF and JPG -#: rapid/rapid.py:4421 +#: rapid/rapid.py:6155 msgid "list photo and video file extensions the program recognizes and exit" msgstr "" "vertoon de foto en video bestandsextenties welke het programma herkent en " "verlaat het programma" -#: rapid/rapid.py:4422 +#: rapid/rapid.py:6156 msgid "reset all program settings and preferences and exit" msgstr "reset alle programma instellingen en verlaat het programma" -#: rapid/rapid.py:4431 +#: rapid/rapid.py:6165 msgid "Photos:" msgstr "Foto's:" -#: rapid/rapid.py:4431 +#: rapid/rapid.py:6165 msgid "Videos:" msgstr "Video's:" -#: rapid/rapid.py:4436 +#: rapid/rapid.py:6170 #, python-format msgid "and %s" msgstr "en %s" -#: rapid/rapid.py:4444 +#: rapid/rapid.py:6178 msgid "All settings and preferences have been reset" msgstr "Alle instellingen en voorkeuren werden gereset" #. Which volume management code is being used (GIO or GnomeVFS) -#: rapid/rapid.py:4448 rapid/rapid.py:4449 rapid/rapid.py:4451 -#: rapid/rapid.py:4456 rapid/rapid.py:4460 +#: rapid/rapid.py:6182 rapid/rapid.py:6183 rapid/rapid.py:6185 +#: rapid/rapid.py:6190 rapid/rapid.py:6194 msgid "Using" msgstr "Gebruik makend van" -#: rapid/rapid.py:4453 +#: rapid/rapid.py:6187 msgid "\n" msgstr "\n" #. this application is already running -#: rapid/rapid.py:4477 +#: rapid/rapid.py:6211 #, python-format msgid "%s is already running" msgstr "%s is al draaiende" -#: rapid/renamesubfolderprefs.py:190 +#: rapid/renamesubfolderprefs.py:192 msgid "Date time" msgstr "Datum/tijd" -#: rapid/renamesubfolderprefs.py:191 +#: rapid/renamesubfolderprefs.py:193 msgid "Text" msgstr "Tekst" -#: rapid/renamesubfolderprefs.py:192 -msgid "Filename" -msgstr "Bestandsnaam" - -#: rapid/renamesubfolderprefs.py:193 +#: rapid/renamesubfolderprefs.py:195 msgid "Metadata" msgstr "Metadata" -#: rapid/renamesubfolderprefs.py:194 +#: rapid/renamesubfolderprefs.py:196 msgid "Sequences" msgstr "Reeksen" -#: rapid/renamesubfolderprefs.py:197 +#: rapid/renamesubfolderprefs.py:199 msgid "Image date" msgstr "Afbeeldingsgegevens" -#: rapid/renamesubfolderprefs.py:198 +#: rapid/renamesubfolderprefs.py:200 msgid "Video date" msgstr "Video datum" -#: rapid/renamesubfolderprefs.py:199 +#: rapid/renamesubfolderprefs.py:201 msgid "Today" msgstr "Vandaag" -#: rapid/renamesubfolderprefs.py:200 +#: rapid/renamesubfolderprefs.py:202 msgid "Yesterday" msgstr "Gisteren" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:202 +#: rapid/renamesubfolderprefs.py:204 msgid "Name + extension" msgstr "Naam + extentie" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:204 +#: rapid/renamesubfolderprefs.py:206 msgid "Name" msgstr "Naam" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:206 +#: rapid/renamesubfolderprefs.py:208 msgid "Extension" msgstr "Extentie" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:208 +#: rapid/renamesubfolderprefs.py:210 msgid "Image number" msgstr "Afbeelding nummer" -#: rapid/renamesubfolderprefs.py:209 +#: rapid/renamesubfolderprefs.py:211 msgid "Video number" msgstr "Video nummer" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:211 +#: rapid/renamesubfolderprefs.py:213 msgid "Aperture" msgstr "Diafragma" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:213 +#: rapid/renamesubfolderprefs.py:215 msgid "ISO" msgstr "ISO" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:215 +#: rapid/renamesubfolderprefs.py:217 msgid "Exposure time" msgstr "Belichtingstijd" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:217 +#: rapid/renamesubfolderprefs.py:219 msgid "Focal length" msgstr "Brandpuntsafstand" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:219 +#: rapid/renamesubfolderprefs.py:221 msgid "Camera make" msgstr "Camera merk" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:221 +#: rapid/renamesubfolderprefs.py:223 msgid "Camera model" msgstr "Camera model" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:223 +#: rapid/renamesubfolderprefs.py:225 msgid "Short camera model" msgstr "Camera model (kort)" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:225 +#: rapid/renamesubfolderprefs.py:227 msgid "Hyphenated short camera model" msgstr "Camera model (kort na koppelteken)" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:227 +#: rapid/renamesubfolderprefs.py:229 msgid "Serial number" msgstr "Serienummer" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:229 +#: rapid/renamesubfolderprefs.py:231 msgid "Shutter count" msgstr "Sluiter teller" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:231 +#: rapid/renamesubfolderprefs.py:233 msgid "Owner name" msgstr "Naam eigenaar" -#: rapid/renamesubfolderprefs.py:232 +#: rapid/renamesubfolderprefs.py:234 msgid "Codec" msgstr "Codec" -#: rapid/renamesubfolderprefs.py:233 +#: rapid/renamesubfolderprefs.py:235 msgid "Width" msgstr "Breedte" -#: rapid/renamesubfolderprefs.py:234 +#: rapid/renamesubfolderprefs.py:236 msgid "Height" msgstr "Hoogte" -#: rapid/renamesubfolderprefs.py:235 +#: rapid/renamesubfolderprefs.py:237 msgid "Length" msgstr "Lengte" -#: rapid/renamesubfolderprefs.py:236 +#: rapid/renamesubfolderprefs.py:238 msgid "Frames Per Second" msgstr "Frames per seconde" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:238 +#: rapid/renamesubfolderprefs.py:240 msgid "Downloads today" msgstr "Downloads vandaag" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:240 +#: rapid/renamesubfolderprefs.py:242 msgid "Session number" msgstr "Sessienummer" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:242 +#: rapid/renamesubfolderprefs.py:244 msgid "Subfolder number" msgstr "Nummer Submap" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:244 +#: rapid/renamesubfolderprefs.py:246 msgid "Stored number" msgstr "Opgeslagen nummer" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequenceletters -#: rapid/renamesubfolderprefs.py:246 +#: rapid/renamesubfolderprefs.py:248 msgid "Sequence letter" msgstr "Vervolg letter" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:248 +#: rapid/renamesubfolderprefs.py:250 msgid "All digits" msgstr "Alle cijfers" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:250 +#: rapid/renamesubfolderprefs.py:252 msgid "Last digit" msgstr "Laatste cijfer" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:252 +#: rapid/renamesubfolderprefs.py:254 msgid "Last 2 digits" msgstr "Laatste 2 cijfers" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:254 +#: rapid/renamesubfolderprefs.py:256 msgid "Last 3 digits" msgstr "Laatste 3 cijfers" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:256 +#: rapid/renamesubfolderprefs.py:258 msgid "Last 4 digits" msgstr "Laatste 4 cijfers" #. Translators: please not the capitalization of this text, and keep it the same if your language features capitalization -#: rapid/renamesubfolderprefs.py:258 +#: rapid/renamesubfolderprefs.py:260 msgid "Original Case" msgstr "Oorspronkelijke hoofdletterstatus" #. Translators: please not the capitalization of this text, and keep it the same if your language features capitalization -#: rapid/renamesubfolderprefs.py:260 +#: rapid/renamesubfolderprefs.py:262 msgid "UPPERCASE" msgstr "HOOFDLETTERS" #. Translators: please not the capitalization of this text, and keep it the same if your language features capitalization -#: rapid/renamesubfolderprefs.py:262 +#: rapid/renamesubfolderprefs.py:264 msgid "lowercase" msgstr "kleine letters" -#: rapid/renamesubfolderprefs.py:263 +#: rapid/renamesubfolderprefs.py:265 msgid "One digit" msgstr "Eén cijfer" -#: rapid/renamesubfolderprefs.py:264 +#: rapid/renamesubfolderprefs.py:266 msgid "Two digits" msgstr "Twee cijfers" -#: rapid/renamesubfolderprefs.py:265 +#: rapid/renamesubfolderprefs.py:267 msgid "Three digits" msgstr "Drie cijfers" -#: rapid/renamesubfolderprefs.py:266 +#: rapid/renamesubfolderprefs.py:268 msgid "Four digits" msgstr "Vier cijfers" -#: rapid/renamesubfolderprefs.py:267 +#: rapid/renamesubfolderprefs.py:269 msgid "Five digits" msgstr "Vijf cijfers" -#: rapid/renamesubfolderprefs.py:268 +#: rapid/renamesubfolderprefs.py:270 msgid "Six digits" msgstr "Zes cijfers" -#: rapid/renamesubfolderprefs.py:269 +#: rapid/renamesubfolderprefs.py:271 msgid "Seven digits" msgstr "Zeven cijfers" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:271 +#: rapid/renamesubfolderprefs.py:273 msgid "Subseconds" msgstr "Subseconden" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:273 +#: rapid/renamesubfolderprefs.py:275 msgid "YYYYMMDD" msgstr "JJJJMMDD" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:275 +#: rapid/renamesubfolderprefs.py:277 msgid "YYYY-MM-DD" msgstr "JJJJ-MM-DD" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:277 +#: rapid/renamesubfolderprefs.py:279 msgid "YYMMDD" msgstr "JJMMDD" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:279 +#: rapid/renamesubfolderprefs.py:281 msgid "YY-MM-DD" msgstr "JJ-MM-DD" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:281 +#: rapid/renamesubfolderprefs.py:283 msgid "MMDDYYYY" msgstr "MMDDJJJJ" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:283 +#: rapid/renamesubfolderprefs.py:285 msgid "MMDDYY" msgstr "MMDDJJ" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:285 +#: rapid/renamesubfolderprefs.py:287 msgid "MMDD" msgstr "MMDD" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:287 +#: rapid/renamesubfolderprefs.py:289 msgid "DDMMYYYY" msgstr "DDMMJJJJ" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:289 +#: rapid/renamesubfolderprefs.py:291 msgid "DDMMYY" msgstr "DDMMJJ" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:291 +#: rapid/renamesubfolderprefs.py:293 msgid "YYYY" msgstr "JJJJ" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:293 +#: rapid/renamesubfolderprefs.py:295 msgid "YY" msgstr "JJ" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:295 +#: rapid/renamesubfolderprefs.py:297 msgid "MM" msgstr "MM" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:297 +#: rapid/renamesubfolderprefs.py:299 msgid "DD" msgstr "DD" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:299 +#: rapid/renamesubfolderprefs.py:301 msgid "HHMMSS" msgstr "HHMMSS" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:301 +#: rapid/renamesubfolderprefs.py:303 msgid "HHMM" msgstr "HHMM" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:303 +#: rapid/renamesubfolderprefs.py:305 msgid "HH-MM-SS" msgstr "HH-MM-SS" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:305 +#: rapid/renamesubfolderprefs.py:307 msgid "HH-MM" msgstr "HH-MM" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:307 +#: rapid/renamesubfolderprefs.py:309 msgid "HH" msgstr "HH" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:309 +#: rapid/renamesubfolderprefs.py:311 msgid "MM (minutes)" msgstr "MM (minuten)" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:311 +#: rapid/renamesubfolderprefs.py:313 msgid "SS" msgstr "SS" -#: rapid/renamesubfolderprefs.py:794 +#: rapid/renamesubfolderprefs.py:796 #, python-format msgid "" "Preference key '%(key)s' is invalid.\n" @@ -1430,65 +1472,26 @@ msgstr "" "Voorkeurtoets '%(key)s' is ongeldig.\n" "Eén van %(value)s werd verwacht" -#: rapid/renamesubfolderprefs.py:801 +#: rapid/renamesubfolderprefs.py:803 #, python-format msgid "Preference value '%(value)s' is invalid" msgstr "Voorkeurwaarde '%(value)s' is ongeldig" -#: rapid/renamesubfolderprefs.py:805 +#: rapid/renamesubfolderprefs.py:807 msgid "These preferences are not well formed:" msgstr "Deze voorkeuren zijn niet goed opgesteld:" -#: rapid/renamesubfolderprefs.py:934 -msgid "Subsecond metadata not present in photo" -msgstr "Subsecond metadata ontbreekt in de foto" - -#: rapid/renamesubfolderprefs.py:941 -#, python-format -msgid "%s metadata is not present" -msgstr "%s metadata ontbreekt" - -#: rapid/renamesubfolderprefs.py:960 rapid/renamesubfolderprefs.py:968 -#: rapid/renamesubfolderprefs.py:977 -#, python-format -msgid "Error in date time component. Value %s appears invalid" -msgstr "Fout in datum/tijd component. Waarde %s blijkt ongeldig" - -#: rapid/renamesubfolderprefs.py:1004 -msgid "extension was specified but filename does not have an extension" -msgstr "extentie werd opgegeven maar de bestandsnaam heeft geen extentie" - -#: rapid/renamesubfolderprefs.py:1008 -msgid "image or video number was specified but filename has no number" -msgstr "" -"beeld- of videonummer werd opgegeven maar de bestandsnaam heeft geen nummer" - -#: rapid/renamesubfolderprefs.py:1081 -#, python-format -msgid "%s metadata is not present in photo" -msgstr "%s metadata ontbreekt in de foto" - -#: rapid/renamesubfolderprefs.py:1194 -#, python-format -msgid "error generating name with component %s" -msgstr "fout bij het aanmaken van de naam met component %s" - -#: rapid/renamesubfolderprefs.py:1450 -#, python-format -msgid "%s metadata is not present in video" -msgstr "%s metadata ontbreekt in de video" - -#: rapid/renamesubfolderprefs.py:1546 +#: rapid/renamesubfolderprefs.py:1517 #, python-format msgid "Subfolder preferences should not start with a %s" msgstr "Submap voorkeuren mogen niet starten met een %s" -#: rapid/renamesubfolderprefs.py:1548 +#: rapid/renamesubfolderprefs.py:1519 #, python-format msgid "Subfolder preferences should not end with a %s" msgstr "Submap voorkeuren mogen niet eindigen op een %s" -#: rapid/renamesubfolderprefs.py:1552 +#: rapid/renamesubfolderprefs.py:1523 #, python-format msgid "Subfolder preferences should not contain two %s one after the other" msgstr "Submap voorkeuren mogen geen twee opeenvolgende %s bevatten" @@ -1538,118 +1541,114 @@ msgid "Job Codes" msgstr "Job Codes" #: rapid/glade3/rapid.glade.h:12 -msgid "Missing Backup Devices" -msgstr "Ontbrekende Backup Apparaten" - -#: rapid/glade3/rapid.glade.h:13 msgid "Photo Rename" msgstr "Foto Hernoemen" -#: rapid/glade3/rapid.glade.h:14 +#: rapid/glade3/rapid.glade.h:13 msgid "Photo and Video Name Conflicts" msgstr "Foto- en Videonaam conflict" -#: rapid/glade3/rapid.glade.h:15 +#: rapid/glade3/rapid.glade.h:14 msgid "Program Automation" msgstr "Programma Automatisatie" -#: rapid/glade3/rapid.glade.h:16 +#: rapid/glade3/rapid.glade.h:15 msgid "Sequence Numbers" msgstr "Volgnummers" -#: rapid/glade3/rapid.glade.h:17 +#: rapid/glade3/rapid.glade.h:16 msgid "/media/externaldrive/Photos" msgstr "/media/externaldrive/Photos" -#: rapid/glade3/rapid.glade.h:18 +#: rapid/glade3/rapid.glade.h:17 msgid "Example: /home/user/Pictures" msgstr "Voorbeeld: /home/user/Afbeeldingen" -#: rapid/glade3/rapid.glade.h:19 +#: rapid/glade3/rapid.glade.h:18 msgid "Example:" msgstr "Voorbeeld:" -#: rapid/glade3/rapid.glade.h:20 +#: rapid/glade3/rapid.glade.h:19 msgid "New:" msgstr "Nieuw:" -#: rapid/glade3/rapid.glade.h:21 +#: rapid/glade3/rapid.glade.h:20 msgid "Original:" msgstr "Origineel:" -#: rapid/glade3/rapid.glade.h:22 +#: rapid/glade3/rapid.glade.h:21 msgid "Automation" msgstr "Automatisatie" -#: rapid/glade3/rapid.glade.h:23 +#: rapid/glade3/rapid.glade.h:22 msgid "Backup\t" msgstr "Backup\t" -#: rapid/glade3/rapid.glade.h:24 +#: rapid/glade3/rapid.glade.h:23 msgid "Devices" msgstr "Apparaten" -#: rapid/glade3/rapid.glade.h:25 +#: rapid/glade3/rapid.glade.h:24 msgid "Error Handling" msgstr "Foutverwerking" -#: rapid/glade3/rapid.glade.h:26 +#: rapid/glade3/rapid.glade.h:25 msgid "Job Codes" msgstr "Job Codes" -#: rapid/glade3/rapid.glade.h:27 +#: rapid/glade3/rapid.glade.h:26 msgid "Photo Download Folders" msgstr "Photo Download Mappen" -#: rapid/glade3/rapid.glade.h:28 +#: rapid/glade3/rapid.glade.h:27 msgid "Photo Rename\t" msgstr "Foto Hernoemen\t" -#: rapid/glade3/rapid.glade.h:29 +#: rapid/glade3/rapid.glade.h:28 msgid "Rename Options" msgstr "Hernoemingsopties" -#: rapid/glade3/rapid.glade.h:30 +#: rapid/glade3/rapid.glade.h:29 msgid "Video Download Folders" msgstr "Video Download Mappen" -#: rapid/glade3/rapid.glade.h:31 +#: rapid/glade3/rapid.glade.h:30 msgid "Video Rename\t" msgstr "Video Hernoemen\t" -#: rapid/glade3/rapid.glade.h:32 +#: rapid/glade3/rapid.glade.h:31 msgid "Add unique identifier" msgstr "Unieke identifier toevoegen" -#: rapid/glade3/rapid.glade.h:33 +#: rapid/glade3/rapid.glade.h:32 msgid "Automatically detect Portable Storage Devices" msgstr "Automatisch detecteren van Draagbare Opslagmedia" -#: rapid/glade3/rapid.glade.h:34 +#: rapid/glade3/rapid.glade.h:33 msgid "Automatically detect backup devices" msgstr "Automatisch detecteren van backup apparaten" -#: rapid/glade3/rapid.glade.h:35 +#: rapid/glade3/rapid.glade.h:34 msgid "Automatically detect devices" msgstr "Automatisch apparaten ontdekken" -#: rapid/glade3/rapid.glade.h:36 +#: rapid/glade3/rapid.glade.h:35 msgid "Automation" msgstr "Automatisering" -#: rapid/glade3/rapid.glade.h:37 +#: rapid/glade3/rapid.glade.h:36 msgid "Backup" msgstr "Backup" -#: rapid/glade3/rapid.glade.h:38 +#: rapid/glade3/rapid.glade.h:37 msgid "Backup location:" msgstr "Backup locatie:" -#: rapid/glade3/rapid.glade.h:39 +#: rapid/glade3/rapid.glade.h:38 msgid "Backup photos and videos when downloading" msgstr "Backup foto's en video's gedurende het downloaden" -#: rapid/glade3/rapid.glade.h:40 +#: rapid/glade3/rapid.glade.h:39 msgid "" "Choose the download folder. Subfolders for the downloaded photos will be " "automatically created in this folder using the structure specified below." @@ -1657,39 +1656,32 @@ msgstr "" "Kies de downloadmap. Submappen voor de gedownloadde foto's zullen " "automatisch aangemaakt worden in deze map volgens de structuur hieronder." -#: rapid/glade3/rapid.glade.h:41 +#: rapid/glade3/rapid.glade.h:40 msgid "" "Choose the download folder. Subfolders for the downloaded videos will be " "automatically created in this folder using the structure specified below." msgstr "" -"Kies de download map. Submappen voor de gedownloadde video's zullen " -"automatisch aangemaakt worden in deze map conform de onderstaande structuur." - -#: rapid/glade3/rapid.glade.h:42 -msgid "" -"Choose whether to skip downloading the file, or to add a unique indentifier." -msgstr "" -"Kies tussen het overslaan van het downloaden van het bestand, of er een " -"uniek nummer aan toe te kennen." +"Kies de download map. Submappen voor de gedownloadde video's zullen " +"automatisch aangemaakt worden in deze map conform de onderstaande structuur." -#: rapid/glade3/rapid.glade.h:43 +#: rapid/glade3/rapid.glade.h:41 msgid "Copyright Damon Lynch 2007-10" msgstr "Copyright Damon Lynch 2007-10" -#: rapid/glade3/rapid.glade.h:44 +#: rapid/glade3/rapid.glade.h:42 msgid "Day start:" msgstr "Aanvang dag:" -#: rapid/glade3/rapid.glade.h:45 +#: rapid/glade3/rapid.glade.h:43 msgid "Delete photos and videos from device upon download completion" msgstr "" "Verwijder foto's en video's van het apparaat als de download afgelopen is" -#: rapid/glade3/rapid.glade.h:46 +#: rapid/glade3/rapid.glade.h:44 msgid "Devices" msgstr "Apparaten" -#: rapid/glade3/rapid.glade.h:47 +#: rapid/glade3/rapid.glade.h:45 msgid "" "Devices are from where to download photos and videos, such as cameras, " "memory cards or Portable Storage Devices.\n" @@ -1711,38 +1703,38 @@ msgstr "" "helemaal niet gaat, probeer dan eens de instelling naar PTP mode te zetten. " "Als dat niet kan, zoek dan je heil in een kaartlezer.." -#: rapid/glade3/rapid.glade.h:52 +#: rapid/glade3/rapid.glade.h:50 msgid "Download / Pause" msgstr "Download / Pauze" -#: rapid/glade3/rapid.glade.h:53 +#: rapid/glade3/rapid.glade.h:51 msgid "Download folder:" msgstr "Download map:" -#: rapid/glade3/rapid.glade.h:54 +#: rapid/glade3/rapid.glade.h:52 msgid "Downloads today:" msgstr "Downloads vandaag:" -#: rapid/glade3/rapid.glade.h:55 +#: rapid/glade3/rapid.glade.h:53 msgid "Error Handling" msgstr "Foutafhandeling" -#: rapid/glade3/rapid.glade.h:56 +#: rapid/glade3/rapid.glade.h:54 msgid "Error Log" msgstr "Foutenlog" -#: rapid/glade3/rapid.glade.h:57 +#: rapid/glade3/rapid.glade.h:55 msgid "Exit program if download completes without any warnings or errors" msgstr "" "Verlaat het programma als de download zonder verwittigingen noch fouten " "beëindigd wordt." -#: rapid/glade3/rapid.glade.h:58 +#: rapid/glade3/rapid.glade.h:56 msgid "If you disable automatic detection, choose the exact backup location." msgstr "" "Als je de automatische herkenning uitschakelt, kies de juiste backup plaats." -#: rapid/glade3/rapid.glade.h:59 +#: rapid/glade3/rapid.glade.h:57 msgid "" "If you disable automatic detection, choose the exact location of the images " "and videos." @@ -1750,7 +1742,7 @@ msgstr "" "Als je de automatische detectie afzet, kies dan de juiste plaats van de " "beelden en video's." -#: rapid/glade3/rapid.glade.h:60 +#: rapid/glade3/rapid.glade.h:58 msgid "" "If you enable automatic detection of Portable Storage Devices, the entire " "device will be scanned for images. On large devices, this could take some " @@ -1760,47 +1752,51 @@ msgstr "" "het volledig apparaat gescanned worden op afbeeldingen. Bij grote apparaten, " "kan dat een tijd duren." -#: rapid/glade3/rapid.glade.h:61 -msgid "Ignore" -msgstr "Negeren" - -#: rapid/glade3/rapid.glade.h:62 +#: rapid/glade3/rapid.glade.h:59 msgid "Import your photos and videos efficiently and reliably" msgstr "Importeer je foto's en video's efficiënt en betrouwbaar" -#: rapid/glade3/rapid.glade.h:63 +#: rapid/glade3/rapid.glade.h:60 msgid "Job Codes" msgstr "Job Codes" -#: rapid/glade3/rapid.glade.h:64 +#: rapid/glade3/rapid.glade.h:61 msgid "Location:" msgstr "Locatie:" -#: rapid/glade3/rapid.glade.h:65 +#: rapid/glade3/rapid.glade.h:62 msgid "Overwrite" msgstr "Overschrijven" -#: rapid/glade3/rapid.glade.h:66 +#: rapid/glade3/rapid.glade.h:63 +msgid "P_review Columns" +msgstr "P_review Kolommen" + +#: rapid/glade3/rapid.glade.h:64 msgid "Photo Folders" msgstr "Foto Mappen" -#: rapid/glade3/rapid.glade.h:67 +#: rapid/glade3/rapid.glade.h:65 msgid "Photo Rename" msgstr "Foto Hernoemen" -#: rapid/glade3/rapid.glade.h:68 +#: rapid/glade3/rapid.glade.h:66 msgid "Photo backup folder name:" msgstr "Foto backup foldernaam:" -#: rapid/glade3/rapid.glade.h:69 +#: rapid/glade3/rapid.glade.h:67 msgid "Preferences: Rapid Photo Downloader" msgstr "Voorkeuren: Rapid Photo Downloader" -#: rapid/glade3/rapid.glade.h:71 +#: rapid/glade3/rapid.glade.h:68 +msgid "Preview _Folders" +msgstr "Preview _Mappen" + +#: rapid/glade3/rapid.glade.h:70 msgid "R_emove All" msgstr "V_erwijder alles" -#: rapid/glade3/rapid.glade.h:73 +#: rapid/glade3/rapid.glade.h:72 msgid "" "Rapid Photo Downloader is free software; you can redistribute it and/or " "modify it under the terms of the GNU General Public License as published by " @@ -1831,27 +1827,43 @@ msgstr "" "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, " "USA." -#: rapid/glade3/rapid.glade.h:78 +#: rapid/glade3/rapid.glade.h:77 msgid "Rename Options" msgstr "Hernoemingsopties" +#: rapid/glade3/rapid.glade.h:78 +msgid "Se_lect None" +msgstr "Se_lecteer Geen Enkele" + #: rapid/glade3/rapid.glade.h:79 -msgid "Report a warning" -msgstr "Rapporteer een verwittiging" +msgid "Select All Pho_tos" +msgstr "Selecteer Alle Fo_to's" #: rapid/glade3/rapid.glade.h:80 -msgid "Report an error" -msgstr "Rapporteer een fout" +msgid "Select All Vi_deos" +msgstr "Selecteer Alle Vi_deo's" #: rapid/glade3/rapid.glade.h:81 +msgid "Select All Wit_h Job Code" +msgstr "Selecteer Alle _met Job Code" + +#: rapid/glade3/rapid.glade.h:82 +msgid "Select All Without _Job Code" +msgstr "Selecteer Alle Zonder _Job Code" + +#: rapid/glade3/rapid.glade.h:83 +msgid "Select _All" +msgstr "Selecteer _Alles" + +#: rapid/glade3/rapid.glade.h:84 msgid "Skip" msgstr "Overslaan" -#: rapid/glade3/rapid.glade.h:82 +#: rapid/glade3/rapid.glade.h:85 msgid "Skip download" msgstr "Download overslaan" -#: rapid/glade3/rapid.glade.h:83 +#: rapid/glade3/rapid.glade.h:86 msgid "" "Sorry, video downloading functionality disabled. To download videos, please " "install the kaa metadata package for python." @@ -1859,7 +1871,7 @@ msgstr "" "Sorry, de video download functie is afgezet. Om video's te downloaden moet " "je het kaa metadata pakket voor python binnenhalen" -#: rapid/glade3/rapid.glade.h:84 +#: rapid/glade3/rapid.glade.h:87 msgid "" "Specify the folder in which backups are stored on the device. \n" "\n" @@ -1873,7 +1885,7 @@ msgstr "" "niet voor backups gebruikt wordt. Voor ieder apparaat dat je als backup " "wenst te gebruiken, maak er een map in met één van de volgende namen." -#: rapid/glade3/rapid.glade.h:87 +#: rapid/glade3/rapid.glade.h:90 msgid "" "Specify the time in 24 hour format at which the Downloads today " "sequence number should be reset." @@ -1881,20 +1893,7 @@ msgstr "" "Specifieer de tijd in 24-uurs formaat waar het Downloads vandaag " "volgnummer aan gelijk gezet moet worden.." -#: rapid/glade3/rapid.glade.h:88 -msgid "" -"Specify what to do when a photo or video of the same name has already been " -"downloaded or backed up." -msgstr "" -"Duid aan wat te doen als er een foto of video met dezelfde naam reeds " -"gedownload of gebackuped werd." - -#: rapid/glade3/rapid.glade.h:89 -msgid "Specify what to do when there are no backup devices." -msgstr "" -"Specifieer wat er dient te gebeuren indien er geen backup apparaten zijn." - -#: rapid/glade3/rapid.glade.h:90 +#: rapid/glade3/rapid.glade.h:91 msgid "" "Specify whether photo, video and folder names should have any characters " "removed that are not allowed by other operating systems." @@ -1902,43 +1901,52 @@ msgstr "" "Duid aan of foto-, video- en mapnamen tekens die niet toegelaten zijn bij " "andere besturingssystemen dien verwijderd te worden." -#: rapid/glade3/rapid.glade.h:91 +#: rapid/glade3/rapid.glade.h:92 msgid "Start downloading at program startup" msgstr "Start de download tijdens het opstarten van het programma" -#: rapid/glade3/rapid.glade.h:92 +#: rapid/glade3/rapid.glade.h:93 msgid "Start downloading upon device insertion" msgstr "Start de download zodra het apparaat wordt aangekoppeld" -#: rapid/glade3/rapid.glade.h:93 +#: rapid/glade3/rapid.glade.h:94 msgid "Stored number:" msgstr "Opgeslagen nummer:" -#: rapid/glade3/rapid.glade.h:94 +#: rapid/glade3/rapid.glade.h:95 msgid "Strip incompatible characters" msgstr "Verwijder niet-compatibele karakters" -#: rapid/glade3/rapid.glade.h:95 +#: rapid/glade3/rapid.glade.h:96 msgid "Synchronize RAW + JPEG sequence numbers" msgstr "Synchroniseer RAW + JPEG volgnummers" -#: rapid/glade3/rapid.glade.h:96 +#: rapid/glade3/rapid.glade.h:97 msgid "Unmount (\"eject\") device upon download completion" msgstr "Ontkoppen (\"eject\") apparaat na beëindigen van de download" -#: rapid/glade3/rapid.glade.h:97 +#: rapid/glade3/rapid.glade.h:98 msgid "Video Folders" msgstr "Video Mappen" -#: rapid/glade3/rapid.glade.h:98 +#: rapid/glade3/rapid.glade.h:99 msgid "Video Rename" msgstr "Video Hernoemen" -#: rapid/glade3/rapid.glade.h:99 +#: rapid/glade3/rapid.glade.h:100 msgid "Video backup folder name:" msgstr "Video backup foldernaam:" -#: rapid/glade3/rapid.glade.h:100 +#: rapid/glade3/rapid.glade.h:101 +msgid "" +"When a photo or video of the same name has already been downloaded, choose " +"whether to skip downloading the file, or to add a unique indentifier." +msgstr "" +"Wanneer er een foto of een video met dezelfde naam al gedownload was, kies " +"om het downloaden van dit bestand over te slaan of om er een uniek " +"identificatieteken aan toe te voegen." + +#: rapid/glade3/rapid.glade.h:102 msgid "" "When backing up, choose whether to overwrite a file on the backup device " "that has the same name, or skip backing it up." @@ -1946,7 +1954,7 @@ msgstr "" "Kies om het bestand op het backupapparaat met dezelfde naam te " "overschrijven, of over te slaan, gedurende de backup." -#: rapid/glade3/rapid.glade.h:101 +#: rapid/glade3/rapid.glade.h:103 msgid "" "You can have your photos and videos backed up to multiple locations as they " "are downloaded, e.g. external hard drives." @@ -1954,47 +1962,71 @@ msgstr "" "Je kan je foto's en video's naar meerdere lokaties backuppen terwijl ze " "gedownload worden, bv. externe harde schijven." -#: rapid/glade3/rapid.glade.h:102 +#: rapid/glade3/rapid.glade.h:104 msgid "_Add..." msgstr "_Toevoegen…" -#: rapid/glade3/rapid.glade.h:103 +#: rapid/glade3/rapid.glade.h:105 msgid "_Clear Completed Downloads" msgstr "_Verwijder Afgewerkte Downloads" -#: rapid/glade3/rapid.glade.h:104 +#: rapid/glade3/rapid.glade.h:106 +msgid "_Device" +msgstr "_Apparaat" + +#: rapid/glade3/rapid.glade.h:107 msgid "_Error Log" msgstr "_Fouten log" -#: rapid/glade3/rapid.glade.h:105 +#: rapid/glade3/rapid.glade.h:108 +msgid "_File" +msgstr "_Bestand" + +#: rapid/glade3/rapid.glade.h:109 +msgid "_Filename" +msgstr "_Bestandsnaam" + +#: rapid/glade3/rapid.glade.h:110 msgid "_Get Help Online..." msgstr "_Online Help..." -#: rapid/glade3/rapid.glade.h:106 +#: rapid/glade3/rapid.glade.h:111 msgid "_Help" msgstr "_Help" -#: rapid/glade3/rapid.glade.h:107 +#: rapid/glade3/rapid.glade.h:112 msgid "_Make a Donation..." msgstr "_Doe een gift..." -#: rapid/glade3/rapid.glade.h:108 -msgid "_Photos" -msgstr "_Foto's" +#: rapid/glade3/rapid.glade.h:113 +msgid "_Path" +msgstr "_Pad" -#: rapid/glade3/rapid.glade.h:109 +#: rapid/glade3/rapid.glade.h:114 +msgid "_Preview" +msgstr "_Voorbeeld" + +#: rapid/glade3/rapid.glade.h:115 msgid "_Report a Problem..." msgstr "_Rapporteer een probleem..." -#: rapid/glade3/rapid.glade.h:110 -msgid "_Thumbnails" -msgstr "_Miniaturen" +#: rapid/glade3/rapid.glade.h:116 +msgid "_Select" +msgstr "_Selecteer" -#: rapid/glade3/rapid.glade.h:111 +#: rapid/glade3/rapid.glade.h:117 +msgid "_Size" +msgstr "_Grootte" + +#: rapid/glade3/rapid.glade.h:118 msgid "_Translate this Application..." msgstr "_Vertaal deze Toepassing" -#: rapid/glade3/rapid.glade.h:112 +#: rapid/glade3/rapid.glade.h:119 +msgid "_Type" +msgstr "_Type" + +#: rapid/glade3/rapid.glade.h:120 msgid "_View" msgstr "_Weergave" @@ -2017,6 +2049,14 @@ msgstr "_Weergave" #~ msgid "Image filename could not be generated" #~ msgstr "Afbeeldingsnaam kon niet aangemaakt worden" +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Problem: %(problem)s" +#~ msgstr "" +#~ "Bron: %(source)s\n" +#~ "Probleem: %(problem)s" + #~ msgid "" #~ "Image filename could not be properly generated. Check to ensure there is " #~ "sufficient image metadata." @@ -2037,9 +2077,30 @@ msgstr "_Weergave" #~ msgid "Could not open image" #~ msgstr "Kon afbeelding niet openen" +#, python-format +#~ msgid "Source: %s" +#~ msgstr "Bron: %s" + #~ msgid "Image has no metadata" #~ msgstr "Afbeelding heeft geen metadata" +#, python-format +#~ msgid "Unique identifier '%s' added" +#~ msgstr "Unieke identifier '%s' toegevoegd" + +#~ msgid "Download copying error" +#~ msgstr "Download kopieer fout" + +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Destination: %(destination)s\n" +#~ "Error: %(errorno)s %(strerror)s" +#~ msgstr "" +#~ "Bron: %(source)s\n" +#~ "Doel: %(destination)s\n" +#~ "Fout: %(errorno)s %(strerror)s" + #~ msgid "The image was not copied." #~ msgstr "De afbeelding werd niet gekopieerd" @@ -2056,6 +2117,16 @@ msgstr "_Weergave" #~ "%(directory)s\n" #~ "Fout: %(errno)s %(strerror)s" +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Destination: %(destination)s\n" +#~ "Error: %(errno)s %(strerror)s" +#~ msgstr "" +#~ "Bron: %(source)s\n" +#~ "Doel: %(destination)s\n" +#~ "Fout: %(errno)s %(strerror)s" + #, python-format #~ msgid "%s images downloaded" #~ msgstr "%s afbeeldingen gedownload" @@ -2064,6 +2135,9 @@ msgstr "_Weergave" #~ msgid "%s images skipped" #~ msgstr "%s afbeeldingen overgeslaan" +#~ msgid "Backup device missing" +#~ msgstr "Backup apparaat afwezig" + #~ msgid "Image skipped" #~ msgstr "Afbeelding overgeslaan" @@ -2098,9 +2172,26 @@ msgstr "_Weergave" #~ msgid "Thumbnail cannot be displayed" #~ msgstr "Miniatuur kan niet getoond worden" +#~ msgid "It may be corrupted" +#~ msgstr "Het kan corrupt zijn" + +#~ msgid "Enter a new job code." +#~ msgstr "Geef een nieuwe job code." + +#~ msgid "_Download " +#~ msgstr "_Download " + +#, python-format +#~ msgid "Error in date time component. Value %s appears invalid" +#~ msgstr "Fout in datum/tijd component. Waarde %s blijkt ongeldig" + #~ msgid "extension was specified but image name has no extension" #~ msgstr "Uitbreiding was gespecifieerd, maar afbeeldingsnaam heeft er geen" +#, python-format +#~ msgid "error generating name with component %s" +#~ msgstr "fout bij het aanmaken van de naam met component %s" + #~ msgid "Image Rename" #~ msgstr "Afbeelding Hernoemen" @@ -2125,6 +2216,9 @@ msgstr "_Weergave" #~ msgid "Exit program after completion of successful download" #~ msgstr "Verlaat programma na het beëindigen van een gelukte download" +#~ msgid "Ignore" +#~ msgstr "Negeren" + #~ msgid "" #~ "If you disable automatic detection, choose the exact location of the images." #~ msgstr "" @@ -2140,6 +2234,12 @@ msgstr "_Weergave" #~ msgid "Image Rename" #~ msgstr "Afbeelding Hernoemen" +#~ msgid "Report an error" +#~ msgstr "Rapporteer een fout" + +#~ msgid "Report a warning" +#~ msgstr "Rapporteer een verwittiging" + #~ msgid "" #~ "Specify what to do when an image of the same name has already been " #~ "downloaded or backed up." @@ -2160,6 +2260,12 @@ msgstr "_Weergave" #~ msgid "Start downloading upon image device insertion" #~ msgstr "Start de download zodra het afbeeldingsapparaat aangekoppeld wordt" +#~ msgid "_Photos" +#~ msgstr "_Foto's" + +#~ msgid "_Thumbnails" +#~ msgstr "_Miniaturen" + #~ msgid "" #~ "Choose whether to skip downloading the image, or to add a unique indentifier." #~ msgstr "" @@ -2261,11 +2367,17 @@ msgstr "_Weergave" #~ msgid "Deleted %i images from image device" #~ msgstr "%i afbeeldingen van afbeeldingsapparaat verwijderd" +#~ msgid "Enter a new job code, or select a previous one." +#~ msgstr "Geef een nieuwe job code op, of kies een vorige." + #~ msgid "Should this device or partition be used to download images from?" #~ msgstr "" #~ "Moet dit apparaat of deze partitie gebruikt worden om afbeeldingen van te " #~ "downloaden?" +#~ msgid "Preferences were changed." +#~ msgstr "Voorkeuren werden aangepast." + #~ msgid "list image file extensions the program recognizes and exit" #~ msgstr "" #~ "toon een lijst van bestandextenties welke het programma herkent en keer terug" @@ -2281,6 +2393,9 @@ msgstr "_Weergave" #~ msgstr "" #~ "afbeeldingsnummer was gespecifieerd, maar de bestandsnaam heeft er geen" +#~ msgid "Missing Backup Devices" +#~ msgstr "Ontbrekende Backup Apparaten" + #~ msgid "Image Name Conflicts" #~ msgstr "Afbeeldingsnaam conflicteert" @@ -2299,6 +2414,10 @@ msgstr "_Weergave" #~ msgid "Download Folder" #~ msgstr "Download Map" +#~ msgid "Specify what to do when there are no backup devices." +#~ msgstr "" +#~ "Specifieer wat er dient te gebeuren indien er geen backup apparaten zijn." + #~ msgid "" #~ "Specify the folder in which backups are stored on the device. \n" #~ "\n" @@ -2346,6 +2465,26 @@ msgstr "_Weergave" #~ msgid "Image device: %s\n" #~ msgstr "Afbeeldingsapparaat: %s\n" +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Partially generated filename: %(newname)s\n" +#~ "Destination: %(destination)s\n" +#~ "Problem: %(problem)s" +#~ msgstr "" +#~ "Bron: %(source)s\n" +#~ "Gedeeltelijke aangemaakte bestandsnaam: %(newname)s\n" +#~ "Doel: %(destination)s\n" +#~ "Probleem: %(problem)s" + +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Destination: %(destination)s\n" +#~ msgstr "" +#~ "Bron: %(source)s\n" +#~ "Doel: %(destination)s\n" + #, python-format #~ msgid "" #~ "Sorry, this image location does not exist:\n" @@ -2374,3 +2513,138 @@ msgstr "_Weergave" #~ msgid "Problem with Image Location Folder" #~ msgstr "Probleem met de Afbeeldingsplaats Map" + +#, python-format +#~ msgid "0 of %(number)s %(filetypes)s" +#~ msgstr "0 van %(number)s %(filetypes)s" + +#~ msgid "" +#~ "Photos detected with the same filenames, but taken at different times:" +#~ msgstr "" +#~ "Foto's met dezelfde naam ontdekt, maar gemaakt op verschillende tijden:" + +#, python-format +#~ msgid "" +#~ "%(filetype)s filename could not be properly generated. Check to ensure there " +#~ "is sufficient metadata." +#~ msgstr "" +#~ "%(filetype)s bestandsnaam kon niet correct aangemaakt worden. Controller of " +#~ "er voldoende metadata is." + +#, python-format +#~ msgid "" +#~ "First photo: %(image1)s %(image1_date_time)s:%(image1_subseconds)s\n" +#~ "Second photo: %(image2)s %(image2_date_time)s:%(image2_subseconds)s" +#~ msgstr "" +#~ "Eerste foto: %(image1)s %(image1_date_time)s:%(image1_subseconds)s\n" +#~ "Tweede foto: %(image2)s %(image2_date_time)s:%(image2_subseconds)s" + +#, python-format +#~ msgid "%(filetype)s filename could not be generated" +#~ msgstr "%(filetype)s bestandsnaam kon niet aangemaakt worden" + +#, python-format +#~ msgid "%(filetype)s has no metadata" +#~ msgstr "%(filetype)s heeft geen metadata" + +#, python-format +#~ msgid "Could not open %(filetype)s" +#~ msgstr "Kon %(filetype)s niet openen" + +#, python-format +#~ msgid "" +#~ "Metadata is essential for generating subfolder and/or file names.\n" +#~ "Source: %s" +#~ msgstr "" +#~ "Metadata is essentieel om subfolder en.of bestandsnamen aan te maken.\n" +#~ "Bron: %s" + +#~ msgid "" +#~ "Subfolder name could not be properly generated. Check to ensure there is " +#~ "sufficient metadata." +#~ msgstr "" +#~ "Subfolder naam kon niet correct aangemaakt worden. Ga na of er voldoende " +#~ "metadata is." + +#, python-format +#~ msgid "" +#~ "Subfolder: %(subfolder)s\n" +#~ "File: %(file)s\n" +#~ "Problem: %(problem)s" +#~ msgstr "" +#~ "Subfolder: %(subfolder)s\n" +#~ "Bestand: %(file)s\n" +#~ "Probleem: %(problem)s" + +#, python-format +#~ msgid "%(noFiles)s %(filetypes)s skipped" +#~ msgstr "%(noFiles)s %(filetypes)s overgeslagen" + +#~ msgid "Photo thumbnail could not be extracted" +#~ msgstr "Foto icoontje kon niet opgehaald worden" + +#~ msgid "Video skipped" +#~ msgstr "Video overgeslagen" + +#~ msgid "Photo already exists" +#~ msgstr "Foto bestaat reeds" + +#~ msgid "Photo skipped" +#~ msgstr "Foto overgeslagen" + +#~ msgid "No backup device was automatically detected" +#~ msgstr "Er werd geen backup apparaat automatisch ontdekt" + +#~ msgid "Video already exists" +#~ msgstr "Video bestaat reeds" + +#~ msgid "photos skipped" +#~ msgstr "foto's overgeslagen" + +#~ msgid "photos downloaded" +#~ msgstr "foto's gedownload" + +#~ msgid "videos skipped" +#~ msgstr "video's overgeslagen" + +#~ msgid "videos downloaded" +#~ msgstr "video's gedownload" + +#~ msgid "image or video number was specified but filename has no number" +#~ msgstr "" +#~ "beeld- of videonummer werd opgegeven maar de bestandsnaam heeft geen nummer" + +#, python-format +#~ msgid "%s metadata is not present in photo" +#~ msgstr "%s metadata ontbreekt in de foto" + +#~ msgid "extension was specified but filename does not have an extension" +#~ msgstr "extentie werd opgegeven maar de bestandsnaam heeft geen extentie" + +#~ msgid "Subsecond metadata not present in photo" +#~ msgstr "Subsecond metadata ontbreekt in de foto" + +#, python-format +#~ msgid "%s metadata is not present in video" +#~ msgstr "%s metadata ontbreekt in de video" + +#, python-format +#~ msgid "%s metadata is not present" +#~ msgstr "%s metadata ontbreekt" + +#~ msgid "" +#~ "Choose whether to skip downloading the file, or to add a unique indentifier." +#~ msgstr "" +#~ "Kies tussen het overslaan van het downloaden van het bestand, of er een " +#~ "uniek nummer aan toe te kennen." + +#~ msgid "" +#~ "Specify what to do when a photo or video of the same name has already been " +#~ "downloaded or backed up." +#~ msgstr "" +#~ "Duid aan wat te doen als er een foto of video met dezelfde naam reeds " +#~ "gedownload of gebackuped werd." + +#, python-format +#~ msgid "The %(filetype)s was not copied." +#~ msgstr "De %(filetype)s werd niet gekopiëerd" diff --git a/po/pl.po b/po/pl.po index d6e0680..321cc3c 100644 --- a/po/pl.po +++ b/po/pl.po @@ -7,166 +7,166 @@ msgid "" msgstr "" "Project-Id-Version: rapid\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2010-05-27 22:33-0500\n" -"PO-Revision-Date: 2010-05-29 19:29+0000\n" +"POT-Creation-Date: 2010-07-02 22:51-0500\n" +"PO-Revision-Date: 2010-07-05 00:46+0000\n" "Last-Translator: mmiicc \n" "Language-Team: Polish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-05-30 14:28+0000\n" +"X-Launchpad-Export-Date: 2010-07-06 19:08+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Translators: if neccessary, for guidance in how to translate this program, you may see http://damonlynch.net/translate.html -#: rapid/rapid.py:104 rapid/rapid.py:4447 rapid/glade3/rapid.glade.h:72 +#: rapid/rapid.py:122 rapid/rapid.py:6181 rapid/glade3/rapid.glade.h:71 msgid "Rapid Photo Downloader" msgstr "Rapid Photo Downloader" -#: rapid/rapid.py:394 +#: rapid/rapid.py:449 msgid "New York" msgstr "Nowy Jork" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Manila" msgstr "Manila" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Prague" msgstr "Praga" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Helsinki" msgstr "Helsinki" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Wellington" msgstr "Wellington" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Tehran" msgstr "Teheran" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Kampala" msgstr "Kampala" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Paris" msgstr "Paryż" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Berlin" msgstr "Berlin" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Sydney" msgstr "Sydney" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Budapest" msgstr "Budapeszt" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Rome" msgstr "Rzym" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Moscow" msgstr "Moskwa" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Delhi" msgstr "Delhi" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Warsaw" msgstr "Warszawa" -#: rapid/rapid.py:398 +#: rapid/rapid.py:453 msgid "Jakarta" msgstr "Dżakarta" -#: rapid/rapid.py:398 +#: rapid/rapid.py:453 msgid "Madrid" msgstr "Madryt" -#: rapid/rapid.py:398 +#: rapid/rapid.py:453 msgid "Stockholm" msgstr "Sztokholm" -#: rapid/rapid.py:425 +#: rapid/rapid.py:486 msgid "Invalid Downloads Today value.\n" msgstr "Nieprawidłowa wartość Pobierań dzisiaj.\n" -#: rapid/rapid.py:426 +#: rapid/rapid.py:487 msgid "Resetting value to zero.\n" msgstr "Resetowanie wartości do zera.\n" -#: rapid/rapid.py:465 +#: rapid/rapid.py:526 msgid "'Start of day' preference value is corrupted.\n" msgstr "Wartość preferencji \"Początek dnia\" jest uszkodzona.\n" -#: rapid/rapid.py:466 +#: rapid/rapid.py:527 msgid "Resetting to midnight.\n" msgstr "Resetowanie do północy.\n" -#: rapid/rapid.py:492 +#: rapid/rapid.py:553 msgid "Error in Photo Rename preferences" msgstr "Błąd w preferencjach zmiany nazw obrazów" -#: rapid/rapid.py:523 rapid/rapid.py:1567 +#: rapid/rapid.py:584 rapid/rapid.py:1689 msgid "Sorry,these preferences contain an error:\n" msgstr "Przepraszamy, te preferencje zawierają błąd:\n" -#: rapid/rapid.py:534 +#: rapid/rapid.py:595 msgid "Resetting to default values." msgstr "Resetowanie do wartości domyślnych." #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:609 rapid/renamesubfolderprefs.py:196 +#: rapid/rapid.py:670 rapid/renamesubfolderprefs.py:198 msgid "Job code" msgstr "Kod pracy" -#: rapid/rapid.py:677 +#: rapid/rapid.py:738 msgid "Error in Video Rename preferences" msgstr "Błąd w preferencjach zmiany nazw filmów" -#: rapid/rapid.py:695 +#: rapid/rapid.py:756 msgid "Error in Photo Download Subfolders preferences" msgstr "Błąd w preferencjach podkatalogów pobierania zdjęć" -#: rapid/rapid.py:712 +#: rapid/rapid.py:773 msgid "Error in Video Download Subfolders preferences" msgstr "Błąd w preferencjach podkatalogów pobierania filmów" -#: rapid/rapid.py:745 rapid/rapid.py:1492 +#: rapid/rapid.py:806 rapid/rapid.py:1539 msgid "photos and videos" msgstr "zdjęcia i filmy" -#: rapid/rapid.py:747 rapid/rapid.py:1502 rapid/rapid.py:1782 +#: rapid/rapid.py:808 rapid/rapid.py:1549 rapid/rapid.py:1658 msgid "photos" msgstr "zdjęcia" -#: rapid/rapid.py:880 +#: rapid/rapid.py:943 msgid "Select a folder to download photos to" msgstr "Wybór katalogu dla pobieranych zdjęć" -#: rapid/rapid.py:898 +#: rapid/rapid.py:961 msgid "Select a folder to download videos to" msgstr "Wybór katalogu dla pobieranych filmów" -#: rapid/rapid.py:980 +#: rapid/rapid.py:1043 #, python-format msgid "Select a folder containing %(file_types)s" msgstr "Wybór katalogu zawierającego %(file_types)s" -#: rapid/rapid.py:1002 +#: rapid/rapid.py:1065 #, python-format msgid "Select a folder in which to backup %(file_types)s" msgstr "Wybór katalogu do którego będą kopiowane %(file_types)s" #. Translators: please do not modify or leave out html formatting tags like and . These are used to format the text the users sees -#: rapid/rapid.py:1095 +#: rapid/rapid.py:1146 msgid "" "Warning: There is insufficient metadata to fully generate the " "name. Please use other renaming options." @@ -174,7 +174,7 @@ msgstr "" "Ostrzeżenie: Metadane są niewystarczające do pełnego wygenerowania " "nazwy. Proszę użyć innej opcji zmiany nazwy." -#: rapid/rapid.py:1129 +#: rapid/rapid.py:1182 msgid "" "Warning: There is insufficient metadata to fully generate " "subfolders. Please use other subfolder naming options." @@ -183,25 +183,25 @@ msgstr "" "podkatalogów. Proszę użyć innej opcji określenia nazw podkatalogów." #. Translators: you should not modify or leave out the %s. This is a code used by the programming language python to insert a value that thes user will see -#: rapid/rapid.py:1133 +#: rapid/rapid.py:1186 #, python-format msgid "Example: %s" msgstr "Przykład: %s" -#: rapid/rapid.py:1159 +#: rapid/rapid.py:1212 msgid "" "Downloads today value not updated, as a download is currently occurring" msgstr "" "Wartość \"Pobierań dzisiaj\" nie została zaktualizowana, ponieważ właśnie " "trwa pobieranie" -#: rapid/rapid.py:1175 +#: rapid/rapid.py:1228 msgid "Stored number value not updated, as a download is currently occurring" msgstr "" "Wartość \"Numer zachowany\" nie została zaktualizowana, ponieważ właśnie " "trwa pobieranie" -#: rapid/rapid.py:1205 +#: rapid/rapid.py:1258 #, python-format msgid "" "The %(filetype)s subfolder preferences had some unnecessary values removed." @@ -210,7 +210,7 @@ msgstr "" "%(filetype)s." #. Preferences list is now empty -#: rapid/rapid.py:1210 +#: rapid/rapid.py:1263 #, python-format msgid "" "The %(filetype)s subfolder preferences entered are invalid and cannot be " @@ -222,59 +222,95 @@ msgstr "" "Zostaną przywrócone ich domyślne wartości." #. check subfolder preferences for bad values -#: rapid/rapid.py:1224 rapid/rapid.py:1504 rapid/rapid.py:2533 +#: rapid/rapid.py:1277 rapid/rapid.py:1551 msgid "photo" msgstr "zdjęcie" -#: rapid/rapid.py:1225 rapid/rapid.py:1499 rapid/rapid.py:2541 +#: rapid/rapid.py:1278 rapid/rapid.py:1546 msgid "video" msgstr "film" #. Translators: this value is used as an example device when automatic backup device detection is enabled. You should translate this. -#: rapid/rapid.py:1468 +#: rapid/rapid.py:1515 msgid "externaldrive1" msgstr "dyskzewnętrzny1" #. Translators: this value is used as an example device when automatic backup device detection is enabled. You should translate this. -#: rapid/rapid.py:1470 +#: rapid/rapid.py:1517 msgid "externaldrive2" msgstr "dyskzewnętrzny2" -#: rapid/rapid.py:1494 rapid/rapid.py:1780 +#: rapid/rapid.py:1541 rapid/rapid.py:1656 msgid "photos or videos" msgstr "zdjęcia lub filmy" -#: rapid/rapid.py:1497 +#: rapid/rapid.py:1544 msgid "videos" msgstr "filmy" +#: rapid/rapid.py:1556 +#, python-format +msgid "" +"%(date)s\n" +"%(time)s" +msgstr "" +"%(date)s\n" +"%(time)s" + +#: rapid/rapid.py:1558 +#, python-format +msgid "%(date)s %(time)s" +msgstr "%(date)s %(time)s" + +#: rapid/rapid.py:1561 +#, python-format +msgid "%(hour)s:%(minute)s:%(second)s:%(subsecond)s" +msgstr "%(hour)s:%(minute)s:%(second)s:%(subsecond)s" + +#: rapid/rapid.py:1568 +#, python-format +msgid "%(date)s %(hour)s:%(minute)s:%(second)s:%(subsecond)s" +msgstr "%(date)s %(hour)s:%(minute)s:%(second)s:%(subsecond)s" + +#: rapid/rapid.py:1596 rapid/rapid.py:2242 +msgid "subfolder and filename" +msgstr "podkatalog i nazwa pliku" + +#: rapid/rapid.py:1598 rapid/rapid.py:2244 +msgid "filename" +msgstr "nazwa pliku" + +#: rapid/rapid.py:1600 rapid/rapid.py:2246 +msgid "subfolder" +msgstr "podkatalog" + #. This refers to when a device like a hard drive is having its contents scanned, #. looking for photos or videos. It is visible initially in the progress bar for each device -#. (which normally holds "x of y photos"). +#. (which normally holds "x photos and videos"). #. It maybe displayed only briefly if the contents of the device being scanned is small. -#: rapid/rapid.py:1556 +#: rapid/rapid.py:1672 msgid "scanning..." msgstr "wyszukiwanie..." -#: rapid/rapid.py:1663 +#: rapid/rapid.py:1783 msgid "The following download path could not be created:\n" msgstr "Następująca ścieżka pobierania nie mogła zostać utworzona:\n" -#: rapid/rapid.py:1664 +#: rapid/rapid.py:1784 #, python-format msgid "%(path)s: " msgstr "%(path)s: " -#: rapid/rapid.py:1665 rapid/rapid.py:1666 rapid/rapid.py:1681 -#: rapid/rapid.py:1682 rapid/rapid.py:2364 rapid/rapid.py:2367 +#: rapid/rapid.py:1785 rapid/rapid.py:1786 rapid/rapid.py:1801 +#: rapid/rapid.py:1802 rapid/rapid.py:2063 rapid/rapid.py:2066 msgid "Download cannot proceed" msgstr "Pobieranie nie może się odbyć" -#: rapid/rapid.py:1679 rapid/rapid.py:3381 +#: rapid/rapid.py:1799 rapid/rapid.py:4846 msgid "There is an error in the program preferences." msgstr "Błąd w preferencjach programu." -#: rapid/rapid.py:1680 +#: rapid/rapid.py:1800 msgid "" "\n" "Please check preferences, restart the program, and try again." @@ -287,10 +323,10 @@ msgstr "" #. It refers to the actual number of photos that can be copied. For example, the user might see the following: #. '0 of 512 photos' or '0 of 10 videos' or '0 of 202 photos and videos'. #. This particular text is displayed to the user before the download has started. -#: rapid/rapid.py:1791 +#: rapid/rapid.py:1974 #, python-format -msgid "0 of %(number)s %(filetypes)s" -msgstr "0 z %(number)s plików typu %(filetypes)s" +msgid "%(number)s %(filetypes)s" +msgstr "%(number)s %(filetypes)s" #. Translators: as you have already seen, the text can contain values that should not be modified or left out by you, for example %s. #. This text is another example of that, but it is is a little more complex. Here there are two values which will be displayed @@ -298,349 +334,216 @@ msgstr "0 z %(number)s plików typu %(filetypes)s" #. %(number)s should be left exactly as is: 'number' should not be translated. The same applies to %(device)s: 'device' should #. not be translated. Generally speaking, if translating the sentence requires it, you can move items like '%(xyz)s' around #. in a sentence, but you should never modify them or leave them out. -#: rapid/rapid.py:1803 +#: rapid/rapid.py:1985 #, python-format msgid "Device scan complete: found %(number)s %(filetypes)s on %(device)s" msgstr "" "Wyszukiwanie zakończone: w katalogu %(device)s znaleziono %(number)s plików " "typu %(filetypes)s" -#: rapid/rapid.py:1810 +#: rapid/rapid.py:1992 #, python-format msgid "Device scan complete: no %(filetypes)s found on %(device)s" msgstr "" "Wyszukiwanie zakończone: nie znaleziono plików typu %(filetypes)s w katalogu " "%(device)s" -#: rapid/rapid.py:1844 -#, python-format -msgid "%(filetype)s filename could not be generated" -msgstr "Nazwa pliku %(filetype)s nie mogła zostać wygenerowana" +#. This message informs the user that the device (e.g. camera, hard drive or memory card) was automatically unmounted and they can now remove it +#: rapid/rapid.py:2013 +msgid "The device can now be safely removed" +msgstr "Teraz można bezpiecznie usunąć urządzenie" -#. '%(source)s' and '%(problem)s' are two more examples of text that should not be modified or left out -#: rapid/rapid.py:1846 +#: rapid/rapid.py:2019 #, python-format -msgid "" -"Source: %(source)s\n" -"Problem: %(problem)s" -msgstr "" -"Źródło: %(source)s\n" -"Problem: %(problem)s" +msgid "%(noFiles)s %(filetypes)s downloaded" +msgstr "Pobrane pliki typu %(filetypes)s: %(noFiles)s" -#: rapid/rapid.py:1850 +#: rapid/rapid.py:2022 #, python-format -msgid "" -"%(filetype)s filename could not be properly generated. Check to ensure there " -"is sufficient metadata." -msgstr "" -"Nazwa pliku %(filetype)s nie mogła zostać prawidłowo wygenerowana. Proszę " -"sprawdzić, czy metadane są wystarczające." +msgid "%(noFiles)s %(filetypes)s failed to download" +msgstr "Nieudanych pobrań plików typu %(filetypes)s: %(noFiles)s" + +#: rapid/rapid.py:2028 rapid/rapid.py:5627 +msgid "warnings" +msgstr "ostrzeżenia" + +#: rapid/rapid.py:2030 rapid/rapid.py:5631 +msgid "errors" +msgstr "błędy" -#: rapid/rapid.py:1851 +#: rapid/rapid.py:2057 #, python-format -msgid "" -"Source: %(source)s\n" -"Partially generated filename: %(newname)s\n" -"Destination: %(destination)s\n" -"Problem: %(problem)s" -msgstr "" -"Źródło: %(source)s\n" -"Częściowo wygenerowana nazwa pliku: %(newname)s\n" -"Cel: %(destination)s\n" -"Problem: %(problem)s" +msgid "Source: %s\n" +msgstr "Źródło: %s\n" -#: rapid/rapid.py:1859 rapid/rapid.py:1864 rapid/rapid.py:1883 -#: rapid/rapid.py:2207 +#: rapid/rapid.py:2059 #, python-format -msgid "" -"Source: %(source)s\n" -"Destination: %(destination)s" -msgstr "" -"Źródło: %(source)s\n" -"Cel: %(destination)s" +msgid "Device: %s\n" +msgstr "Urządzenie: %s\n" -#: rapid/rapid.py:1861 +#: rapid/rapid.py:2060 #, python-format -msgid "Unique identifier '%s' added" -msgstr "Dodano unikatowy identyfikator \"%s\"" +msgid "Destination: %s" +msgstr "Cel: %s" + +#: rapid/rapid.py:2061 rapid/rapid.py:2064 +msgid "Could not create temporary download directory" +msgstr "Nie można utworzyć tymczasowego katalogu pobierania" + +#: rapid/rapid.py:2064 +msgid "Error:" +msgstr "Błąd:" -#: rapid/rapid.py:1869 rapid/rapid.py:2270 +#: rapid/rapid.py:2088 +msgid "Backup path does not exist" +msgstr "Ścieżka kopii zapasowej nie istnieje" + +#: rapid/rapid.py:2089 #, python-format -msgid "Source: %(source)s" -msgstr "Źródło: %(source)s" +msgid "The path %s could not be created" +msgstr "NIe można utworzyć ścieżki %s" -#: rapid/rapid.py:1877 rapid/rapid.py:1882 -msgid "Download copying error" -msgstr "Błąd pobierania" +#: rapid/rapid.py:2090 +msgid "No backups can occur" +msgstr "Kopia zapasowa nie może być utworzona" -#: rapid/rapid.py:1878 +#: rapid/rapid.py:2117 #, python-format msgid "" "Source: %(source)s\n" "Destination: %(destination)s\n" -"Error: %(errorno)s %(strerror)s" +"%(problem)s" msgstr "" "Źródło: %(source)s\n" "Cel: %(destination)s\n" -"Błąd: %(errorno)s %(strerror)s" - -#: rapid/rapid.py:1880 rapid/rapid.py:1885 -#, python-format -msgid "The %(filetype)s was not copied." -msgstr "%(filetype)s nie został skopiowany." - -#: rapid/rapid.py:1889 -msgid "" -"Photos detected with the same filenames, but taken at different times:" -msgstr "" -"Znalezione zdjęcia mające taką samą nazwę, ale zrobione w różnym czasie:" +"%(problem)s" -#: rapid/rapid.py:1890 +#: rapid/rapid.py:2146 rapid/rapid.py:2492 rapid/rapid.py:2527 +#: rapid/rapid.py:2555 rapid/rapid.py:2586 rapid/rapid.py:2605 #, python-format msgid "" -"First photo: %(image1)s %(image1_date_time)s:%(image1_subseconds)s\n" -"Second photo: %(image2)s %(image2_date_time)s:%(image2_subseconds)s" +"Source: %(source)s\n" +"Destination: %(destination)s" msgstr "" -"Pierwsze zdjęcie: %(image1)s %(image1_date_time)s:%(image1_subseconds)s\n" -"Drugie zdjęcie: %(image2)s %(image2_date_time)s:%(image2_subseconds)s" - -#: rapid/rapid.py:1914 rapid/rapid.py:1927 -#, python-format -msgid "Could not open %(filetype)s" -msgstr "%(filetype)s nie mógł zostać otwarty" - -#: rapid/rapid.py:1915 rapid/rapid.py:1928 -#, python-format -msgid "Source: %s" -msgstr "Źródło: %s" +"Źródło: %(source)s\n" +"Cel: %(destination)s" -#: rapid/rapid.py:1950 -#, python-format -msgid "%(filetype)s has no metadata" -msgstr "%(filetype)s nie posiada metadanych" +#. hopefully inst will never be None, but just to be safe... +#: rapid/rapid.py:2161 +msgid "Please check your system and try again." +msgstr "Proszę sprawdzić system i spróbować ponownie." -#: rapid/rapid.py:1951 -#, python-format -msgid "" -"Metadata is essential for generating subfolder and/or file names.\n" -"Source: %s" -msgstr "" -"Metadane są niezbędne aby wygenerować nazwy podkatalogów oraz/lub plików.\n" -"Źródło:%s" +#: rapid/rapid.py:2181 +msgid "Photos detected with the same filenames, but taken at different times" +msgstr "Zdjęcia z taką samą nazwą, ale zrobione w różnym czasie" -#: rapid/rapid.py:1962 -msgid "" -"Subfolder name could not be properly generated. Check to ensure there is " -"sufficient metadata." -msgstr "" -"Nazwa podkatalogu nie mogła zostać prawidłowo wygenerowana. Proszę " -"sprawdzić, czy metadane są wystarczające." +#: rapid/rapid.py:2221 +msgid "Photo has already been downloaded" +msgstr "Zdjęcie zostało już pobrane" -#: rapid/rapid.py:1963 +#: rapid/rapid.py:2222 rapid/rapid.py:2621 #, python-format -msgid "" -"Subfolder: %(subfolder)s\n" -"File: %(file)s\n" -"Problem: %(problem)s" -msgstr "" -"Podkatalog: %(subfolder)s\n" -"Plik: %(file)s\n" -"Problem: %(problem)s" +msgid "Source: %(source)s" +msgstr "Źródło: %(source)s" #. A new day, according the user's preferences of what time a day begins, has started -#: rapid/rapid.py:2147 +#: rapid/rapid.py:2420 msgid "New day has started - resetting 'Downloads Today' sequence number" msgstr "" "Rozpoczął się nowy dzień - resetowanie numeru sekwencji \"Pobierań dzisiaj\"" -#: rapid/rapid.py:2206 +#: rapid/rapid.py:2491 #, python-format msgid "Backup of %(file_type)s already exists" msgstr "Kopia zapasowa %(file_type)s już istnieje" -#: rapid/rapid.py:2210 +#: rapid/rapid.py:2495 #, python-format msgid "Backup %(file_type)s overwritten" msgstr "Kopia zapasowa %(file_type)s nadpisana" -#: rapid/rapid.py:2215 +#: rapid/rapid.py:2499 #, python-format msgid "%(file_type)s not backed up to %(volume)s" msgstr "%(file_type)s nie został skopiowany do %(volume)s" -#: rapid/rapid.py:2217 +#: rapid/rapid.py:2501 #, python-format msgid "%(file_type)s not backed up" msgstr "Kopia zapasowa %(file_type)s nie utworzona" -#: rapid/rapid.py:2243 rapid/rapid.py:2260 +#: rapid/rapid.py:2524 rapid/rapid.py:2552 rapid/rapid.py:2585 +#: rapid/rapid.py:2604 msgid "Backing up error" msgstr "Błąd tworzenia kopii zapasowej" -#: rapid/rapid.py:2244 +#: rapid/rapid.py:2525 rapid/rapid.py:2553 #, python-format msgid "Destination directory could not be created: %(directory)s\n" msgstr "Katalog docelowy nie mógł zostać utworzony: %(directory)s\n" -#: rapid/rapid.py:2246 -#, python-format -msgid "" -"Source: %(source)s\n" -"Destination: %(destination)s\n" -msgstr "" -"Źródło: %(source)s\n" -"Cel: %(destination)s\n" - -#: rapid/rapid.py:2248 +#: rapid/rapid.py:2529 rapid/rapid.py:2588 #, python-format -msgid "Error: %(errno)s %(strerror)s" -msgstr "Błąd: %(errno)s %(strerror)s" +msgid "Error: %(inst)s" +msgstr "Błąd: %(inst)s" -#: rapid/rapid.py:2249 rapid/rapid.py:2263 +#: rapid/rapid.py:2530 rapid/rapid.py:2558 rapid/rapid.py:2589 +#: rapid/rapid.py:2608 #, python-format msgid "The %(file_type)s was not backed up." msgstr "Kopia zapasowa %(file_type)s nie została utworzona." -#: rapid/rapid.py:2261 +#: rapid/rapid.py:2557 rapid/rapid.py:2607 #, python-format -msgid "" -"Source: %(source)s\n" -"Destination: %(destination)s\n" -"Error: %(errno)s %(strerror)s" -msgstr "" -"Źródło: %(source)s\n" -"Cel: %(destination)s\n" -"Błąd: %(errno)s %(strerror)s" +msgid "Error: %(errno)s %(strerror)s" +msgstr "Błąd: %(errno)s %(strerror)s" -#: rapid/rapid.py:2269 +#: rapid/rapid.py:2620 #, python-format msgid "%(file_type)s could not be backed up" msgstr "Kopia zapasowa %(file_type)s nie mogła zostać utworzona" -#: rapid/rapid.py:2272 +#: rapid/rapid.py:2623 msgid "No suitable backup volume was found" msgstr "Nie znaleziono odpowiedniego nośnika dla kopii zapasowych" -#: rapid/rapid.py:2274 +#: rapid/rapid.py:2625 msgid "A backup location was not found" msgstr "Nie znaleziono położenia kopii zapasowej" -#. This message informs the user that the device (e.g. camera, hard drive or memory card) was automatically unmounted and they can now remove it -#: rapid/rapid.py:2288 -msgid "The device can now be safely removed" -msgstr "Teraz można bezpiecznie usunąć urządzenie" - -#: rapid/rapid.py:2294 -#, python-format -msgid "%(noFiles)s %(filetypes)s downloaded" -msgstr "%(filetypes)s pobrane: %(noFiles)s" - -#: rapid/rapid.py:2297 -#, python-format -msgid "%(noFiles)s %(filetypes)s skipped" -msgstr "%(filetypes)s pominięte: %(noFiles)s" - -#: rapid/rapid.py:2303 rapid/rapid.py:4027 -msgid "warnings" -msgstr "ostrzeżenia" - -#: rapid/rapid.py:2305 rapid/rapid.py:4029 -msgid "errors" -msgstr "błędy" - -#: rapid/rapid.py:2331 rapid/rapid.py:2823 rapid/rapid.py:2838 -msgid "Photo thumbnail could not be extracted" -msgstr "Nie udało się wyodrębnić miniatur zdjęć" - -#: rapid/rapid.py:2358 -#, python-format -msgid "Source: %s\n" -msgstr "Źródło: %s\n" - -#: rapid/rapid.py:2360 -#, python-format -msgid "Device: %s\n" -msgstr "Urządzenie: %s\n" - -#: rapid/rapid.py:2361 -#, python-format -msgid "Destination: %s" -msgstr "Cel: %s" - -#: rapid/rapid.py:2362 rapid/rapid.py:2365 -msgid "Could not create temporary download directory" -msgstr "Nie można utworzyć tymczasowego katalogu pobierania" - -#: rapid/rapid.py:2365 -msgid "Error:" -msgstr "Błąd:" - -#: rapid/rapid.py:2382 +#: rapid/rapid.py:2679 #, python-format msgid "This device has no %(types_searched_for)s to download from." msgstr "" "Urządzenie nie posiada %(types_searched_for)s z których można pobierać." -#: rapid/rapid.py:2417 +#: rapid/rapid.py:2733 #, python-format msgid "Download has started from %s" msgstr "Rozpoczęto pobieranie z %s" -#: rapid/rapid.py:2434 -msgid "Backup path does not exist" -msgstr "Ścieżka kopii zapasowej nie istnieje" - -#: rapid/rapid.py:2435 +#: rapid/rapid.py:2736 #, python-format -msgid "The path %s could not be created" -msgstr "NIe można utworzyć ścieżki %s" - -#: rapid/rapid.py:2436 rapid/rapid.py:2444 -msgid "No backups can occur" -msgstr "Kopia zapasowa nie może być utworzona" - -#: rapid/rapid.py:2442 -msgid "Backup device missing" -msgstr "Brak urządzenia do zapisu kopii zapasowej" - -#: rapid/rapid.py:2443 -msgid "No backup device was automatically detected" -msgstr "Nie wykryto urządzenia do utworzenia kopii zapasowej" +msgid "Attempting to download %s files" +msgstr "Przystępowanie do pobierania plików w liczbie %s" -#: rapid/rapid.py:2534 rapid/rapid.py:3343 rapid/rapid.py:3345 -msgid "Photo" -msgstr "Zdjęcie" - -#: rapid/rapid.py:2535 -msgid "Photo skipped" -msgstr "Zdjęcie pominięto" - -#: rapid/rapid.py:2536 -msgid "Photo already exists" -msgstr "Zdjęcie już istnieje" - -#: rapid/rapid.py:2542 rapid/rapid.py:3343 -msgid "Video" -msgstr "Film" - -#: rapid/rapid.py:2543 -msgid "Video skipped" -msgstr "Film pominięto" - -#: rapid/rapid.py:2544 -msgid "Video already exists" -msgstr "FIlm już istnieje" - -#: rapid/rapid.py:2592 +#. reset the progress bar to update the status of this download attempt +#: rapid/rapid.py:2769 rapid/rapid.py:2836 #, python-format msgid "%(number)s of %(total)s %(filetypes)s" msgstr "%(number)s z %(total)s plików typu %(filetypes)s" -#: rapid/rapid.py:2607 rapid/rapid.py:2611 +#: rapid/rapid.py:2832 +#, python-format +msgid "%(number)s of %(total)s %(filetypes)s (%(remaining)s remaining)" +msgstr "" +"%(number)s z %(total)s plików typu %(filetypes)s (pozostało: %(remaining)s)" + +#: rapid/rapid.py:2857 rapid/rapid.py:2861 msgid "Could not delete photo or video from device" msgstr "Nie można usunąć zdjęcia lub filmu z urządzenia" -#: rapid/rapid.py:2608 +#: rapid/rapid.py:2858 #, python-format msgid "" "Photo: %(source)s\n" @@ -649,114 +552,223 @@ msgstr "" "Zdjęcie: %(source)s\n" "Błąd: %(errno)s %(strerror)s" -#: rapid/rapid.py:2612 +#: rapid/rapid.py:2862 #, python-format msgid "Photo: %(source)s" msgstr "Zdjęcie: %(source)s" -#: rapid/rapid.py:2614 +#: rapid/rapid.py:2864 #, python-format msgid "Deleted %(number)i %(filetypes)s from device" msgstr "Usuniętych plików typu %(filetypes)s z urządzenia: %(number)i" -#: rapid/rapid.py:2624 +#: rapid/rapid.py:2871 #, python-format msgid "Download complete from %s" msgstr "Ukończono pobieranie z %s" #. Device refers to a thing like a camera, memory card in its reader, external hard drive, Portable Storage Device, etc. -#: rapid/rapid.py:2700 +#: rapid/rapid.py:2993 rapid/rapid.py:3466 msgid "Device" msgstr "Urządzenie" #. Size refers to the total size of images on the device, typically in MB or GB -#: rapid/rapid.py:2705 +#: rapid/rapid.py:2998 rapid/rapid.py:3455 msgid "Size" msgstr "Rozmiar" -#: rapid/rapid.py:2708 +#: rapid/rapid.py:3001 msgid "Download Progress" msgstr "Postęp pobierania" -#: rapid/rapid.py:2824 rapid/rapid.py:2839 -msgid "It may be corrupted" -msgstr "Może być uszkodzone" +#: rapid/rapid.py:3089 +msgid "Downloading From Cameras" +msgstr "Pobieranie z aparatów" -#: rapid/rapid.py:2869 +#: rapid/rapid.py:3095 +msgid "Downloading directly from a camera may work poorly or not at all" +msgstr "" +"Pobieranie bezpośrednio z aparatu może działać mało wydajnie lub całkowicie " +"nie działać" + +#: rapid/rapid.py:3096 +msgid "" +"Downloading from a card reader always works and is generally much faster. It " +"is strongly recommended to use a card reader." +msgstr "" +"Pobieranie z czytnika kart działa zawsze i zasadniczo dużo szybciej. " +"Używanie czytnika kart jest zalecane." + +#: rapid/rapid.py:3110 +msgid "_Show this message again" +msgstr "_Wyświetl tę wiadomość ponownie" + +#: rapid/rapid.py:3145 msgid "Device Detected" msgstr "Znalezione urządzenie" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2878 +#: rapid/rapid.py:3154 msgid "" "Should this device or partition be used to download photos or videos from?" msgstr "Pobierać zdjęcia lub filmy z tego urządzenia lub partycji?" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2897 +#: rapid/rapid.py:3173 msgid "_Remember this choice" msgstr "Zapa_miętaj ten wybór" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2934 +#: rapid/rapid.py:3210 #, python-format msgid "%s selected for downloading from" msgstr "jako źródło pobierania wybrano %s" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2937 +#: rapid/rapid.py:3213 msgid "This device or partition will always be used to download from" msgstr "" "To urządzenie lub partycja zawsze będzie używane jako źródło pobierania" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2940 +#: rapid/rapid.py:3216 #, python-format msgid "%s rejected as a download device" msgstr "urządzenie %s odrzucone jako źródło pobierania" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2943 +#: rapid/rapid.py:3219 msgid "This device or partition will never be used to download from" msgstr "" "To urządzenie lub partycja nigdy nie będzie używane jako źródło pobierania" -#: rapid/rapid.py:2950 +#: rapid/rapid.py:3226 msgid "Remove all Job Codes?" msgstr "Usunąć wszystkie kody pracy?" -#: rapid/rapid.py:2967 +#: rapid/rapid.py:3243 msgid "Should all Job Codes be removed?" msgstr "Usunąć wszystkie kody pracy?" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:2995 +#: rapid/rapid.py:3271 msgid "Enter a Job Code" msgstr "Wprowadzenie kodu pracy" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:3013 -msgid "Enter a new job code, or select a previous one." -msgstr "Proszę wprowadzić nowy kod pracy lub wybrać poprzedni." +#: rapid/rapid.py:3290 +msgid "Enter a new Job Code, or select a previous one" +msgstr "Proszę wprowadzić nowy kod pracy, lub wybrać poprzedni" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:3016 -msgid "Enter a new job code." -msgstr "Proszę wprowadzić nowy kod pracy." +#: rapid/rapid.py:3293 +msgid "Enter a new Job Code" +msgstr "Proszę wprowadzić nowy kod pracy" -#: rapid/rapid.py:3021 +#: rapid/rapid.py:3298 rapid/rapid.py:4417 msgid "Job Code:" msgstr "Kod pracy:" -#: rapid/rapid.py:3068 +#: rapid/rapid.py:3345 msgid "Job Code entered" msgstr "Kod pracy wprowadzony" -#: rapid/rapid.py:3070 +#: rapid/rapid.py:3347 msgid "Job Code not entered" msgstr "Nie wprowadzono kodu pracy" -#: rapid/rapid.py:3330 +#: rapid/rapid.py:3401 +msgid "Status" +msgstr "Stan" + +#: rapid/rapid.py:3409 +msgid "Type" +msgstr "Typ" + +#: rapid/rapid.py:3418 rapid/rapid.py:4808 rapid/rapid.py:4810 +msgid "Photo" +msgstr "Zdjęcie" + +#: rapid/rapid.py:3420 +msgid "File" +msgstr "Plik" + +#: rapid/rapid.py:3435 +msgid "Job Code" +msgstr "Kod pracy" + +#: rapid/rapid.py:3445 +msgid "Date" +msgstr "Data" + +#: rapid/rapid.py:3477 rapid/renamesubfolderprefs.py:194 +msgid "Filename" +msgstr "Nazwa pliku" + +#: rapid/rapid.py:3488 +msgid "Path" +msgstr "Ścieżka" + +#: rapid/rapid.py:3843 +#, python-format +msgid "%(filetype)s was downloaded successfully" +msgstr "Pobieranie pliku typu %(filetype)s zakończone powodzeniem" + +#: rapid/rapid.py:3845 +#, python-format +msgid "%(filetype)s was not downloaded" +msgstr "Plik typu %(filetype)s nie został pobrany" + +#: rapid/rapid.py:3847 +#, python-format +msgid "%(filetype)s was downloaded with warnings" +msgstr "Plik typu %(filetype)s został pobrany z ostrzeżeniami" + +#: rapid/rapid.py:3849 +#, python-format +msgid "%(filetype)s was downloaded but there were problems backing up" +msgstr "" +"Plik typu %(filetype)s został pobrany ale są problemy z utworzeniem kopii " +"zapasowej" + +#: rapid/rapid.py:3851 +#, python-format +msgid "%(filetype)s was neither downloaded nor backed up" +msgstr "" +"Plik typu %(filetype)s nie został pobrany ani nie została utworzona jego " +"kopia zapasowa" + +#: rapid/rapid.py:3853 +#, python-format +msgid "%(filetype)s is ready to be downloaded" +msgstr "Plik typu %(filetype)s jest gotowy do pobrania" + +#: rapid/rapid.py:3855 +#, python-format +msgid "%(filetype)s is about to be downloaded" +msgstr "Plik typu %(filetype)s za chwilę będzie pobierany" + +#: rapid/rapid.py:3857 +#, python-format +msgid "%(filetype)s will be downloaded with warnings" +msgstr "Plik typu %(filetype)s zostanie pobrany z ostrzeżeniami" + +#: rapid/rapid.py:3859 +#, python-format +msgid "%(filetype)s cannot be downloaded" +msgstr "Plik typu %(filetype)s nie może zostać pobrany" + +#: rapid/rapid.py:4240 +msgid "Preview" +msgstr "Podgląd" + +#: rapid/rapid.py:4439 +msgid "Enter a new Job Code and press Enter, or select an existing Job Code" +msgstr "" +"Proszę wprowadzić nowy kod pracy i wcisnąć Enter, lub wybrać istniejący kod " +"pracy" + +#: rapid/rapid.py:4795 #, python-format msgid "" "Sorry, this device location does not exist:\n" @@ -767,23 +779,27 @@ msgstr "" "Przepraszamy, to położenie urządzenia nie istnieje:\n" "%(path)s" -#: rapid/rapid.py:3334 +#: rapid/rapid.py:4799 msgid "Problem with Device Location Folder" msgstr "Problem z katalogiem położenia urządzenia" -#: rapid/rapid.py:3350 +#: rapid/rapid.py:4808 +msgid "Video" +msgstr "Film" + +#: rapid/rapid.py:4815 #, python-format msgid "The %(file_type)s Download Folder does not exist.\n" msgstr "Katalog pobierania %(file_type)s nie istnieje.\n" -#: rapid/rapid.py:3359 +#: rapid/rapid.py:4824 #, python-format msgid "The %(file_type)s Download Folder exists but cannot be written to.\n" msgstr "" "Katalog pobierania %(file_type)s istnieje ale nie ma możliwości zapisu w " "nim.\n" -#: rapid/rapid.py:3364 +#: rapid/rapid.py:4829 msgid "" "Sorry, problems were encountered with your download folders. Please fix the " "problems or modify the preferences.\n" @@ -793,62 +809,67 @@ msgstr "" "rozwiązać lub zmienić preferencje.\n" "\n" -#: rapid/rapid.py:3367 +#: rapid/rapid.py:4832 msgid "Problem with Download Folder" msgstr "Problem z katalogiem pobierania" -#: rapid/rapid.py:3369 +#: rapid/rapid.py:4834 msgid "Problem with Download Folders" msgstr "Problem z katalogami pobierania" -#: rapid/rapid.py:3382 +#: rapid/rapid.py:4847 msgid "Some preferences will be reset." msgstr "Niektóre preferencje zostaną zresetowane." -#: rapid/rapid.py:3416 +#: rapid/rapid.py:4880 +msgid "Displaying warning about downloading directly from camera" +msgstr "Wyświetlanie ostrzeżenia o pobieraniu bezpośrednio z aparatu" + +#: rapid/rapid.py:4890 #, python-format msgid "Prompting whether to use %s" msgstr "Zapytanie o użycie %s" -#: rapid/rapid.py:3444 +#: rapid/rapid.py:4917 msgid "Prompting for Job Code" msgstr "Zapytanie o kod pracy" -#: rapid/rapid.py:3448 +#: rapid/rapid.py:4921 msgid "Already prompting for Job Code, do not prompt again" msgstr "Już pytano o kod pracy, nie zapytuj ponownie" -#: rapid/rapid.py:3463 -msgid "Starting downloads that have been waiting for a Job Code" -msgstr "Rozpoczynanie pobierania oczekującego na kod pracy" - -#: rapid/rapid.py:3467 +#: rapid/rapid.py:4938 msgid "Starting downloads" msgstr "Rozpoczynanie pobierania" -#: rapid/rapid.py:3482 +#. autostart is true +#: rapid/rapid.py:4942 +msgid "Starting downloads that have been waiting for a Job Code" +msgstr "Rozpoczynanie pobierania oczekującego na kod pracy" + +#: rapid/rapid.py:4984 #, python-format msgid "Creating photo download folder %(folder)s" msgstr "Tworzenie katalogu pobierania zdjęć %(folder)s" -#: rapid/rapid.py:3487 +#: rapid/rapid.py:4989 #, python-format msgid "Failed to create default photo download folder %(folder)s" msgstr "" "Nie udało się utworzyć domyślnego katalogu pobierania zdjęć %(folder)s" -#: rapid/rapid.py:3491 +#: rapid/rapid.py:4993 #, python-format msgid "Creating video download folder %(folder)s" msgstr "Tworzenie katalogu pobierania filmów %(folder)s" -#: rapid/rapid.py:3496 +#: rapid/rapid.py:4998 #, python-format msgid "Failed to create default video download folder %(folder)s" msgstr "" "Nie udało się utworzyć domyślnego katalogu pobierania filmów %(folder)s" -#: rapid/rapid.py:3521 +#: rapid/rapid.py:5023 msgid "" "A newer version of this program was previously run on this computer.\n" "\n" @@ -856,7 +877,7 @@ msgstr "" "Nowsza wersja tego programu była poprzednio uruchomiona na tym komputerze.\n" "\n" -#: rapid/rapid.py:3523 +#: rapid/rapid.py:5025 msgid "" "Program preferences appear to be valid, but please check them to ensure " "correct operation." @@ -864,16 +885,16 @@ msgstr "" "Preferencje programu wydają się być właściwe, proszę jednak sprawdzić, czy " "zapewniają prawidłowe działanie." -#: rapid/rapid.py:3525 +#: rapid/rapid.py:5027 msgid "Sorry, some preferences are invalid and will be reset." msgstr "" "Przepraszamy, niektóre preferencje są nieprawidłowe i zostaną zresetowane." -#: rapid/rapid.py:3526 +#: rapid/rapid.py:5028 msgid "Warning:" msgstr "Ostrzeżenie:" -#: rapid/rapid.py:3531 +#: rapid/rapid.py:5033 msgid "" "This version of the program is newer than the previously run version. " "Checking preferences." @@ -881,11 +902,11 @@ msgstr "" "Ta wersja programu jest nowsza od uruchomionej poprzednio. Sprawdzanie " "preferencji." -#: rapid/rapid.py:3538 +#: rapid/rapid.py:5040 msgid "Preferences were modified." msgstr "Preferencje zostały zmodyfikowane." -#: rapid/rapid.py:3539 +#: rapid/rapid.py:5041 msgid "" "This version of the program uses different preferences than the old version. " "Your preferences have been updated.\n" @@ -897,11 +918,11 @@ msgstr "" "\n" "Proszę je sprawdzić, czy zapewniają prawidłowe działanie." -#: rapid/rapid.py:3543 +#: rapid/rapid.py:5045 msgid "No preferences needed to be changed." msgstr "Żadne preferencje nie muszą zostać zmienione." -#: rapid/rapid.py:3545 +#: rapid/rapid.py:5047 msgid "" "This version of the program uses different preferences than the old version. " "Some of your previous preferences were invalid, and could not be updated. " @@ -911,131 +932,157 @@ msgstr "" "poprzednich preferencji były nieprawidłowe i nie mogły zostać " "zaktualizowane. Zostaną one zresetowane." -#: rapid/rapid.py:3555 +#: rapid/rapid.py:5057 msgid "Problem using pynotify." msgstr "Problem z użyciem pynotify." -#: rapid/rapid.py:3571 +#: rapid/rapid.py:5073 msgid "Failed to receive pynotify server capabilities." msgstr "Pobranie właściwości serwera pynotify nieudane." -#: rapid/rapid.py:3580 +#: rapid/rapid.py:5084 msgid "" "Warning: desktop environment notification server is incorrectly configured." msgstr "" "Ostrzeżenie: serwer powiadomień środowiska graficznego jest skonfigurowany " "niepoprawnie." -#: rapid/rapid.py:3626 +#: rapid/rapid.py:5132 msgid "and" msgstr "oraz" -#: rapid/rapid.py:3631 +#: rapid/rapid.py:5137 msgid "Using backup devices" msgstr "Użycie urządzeń do zapisu kopii zapasowej" -#: rapid/rapid.py:3633 +#: rapid/rapid.py:5139 msgid "Using backup device" msgstr "Użycie urządzenia do zapisu kopii zapasowej" -#: rapid/rapid.py:3635 +#: rapid/rapid.py:5141 msgid "No backup devices detected" msgstr "Nie wykryto urządzeń na których można utworzyć kopię zapasową" -#: rapid/rapid.py:3674 rapid/rapid.py:3831 +#: rapid/rapid.py:5188 rapid/rapid.py:5350 #, python-format msgid "Device %(device)s (%(path)s) ignored" msgstr "Urzadzenie %(device)s (%(path)s) zignorowane" -#: rapid/rapid.py:3790 +#: rapid/rapid.py:5309 #, python-format msgid "Detected %(device)s with path %(path)s" msgstr "Wykryto %(device)s ze ścieżką %(path)s" -#: rapid/rapid.py:3794 +#: rapid/rapid.py:5313 msgid "Automatically start download is true" msgstr "Automatyczne rozpoczęcie pobierania jest włączone" -#: rapid/rapid.py:3796 +#: rapid/rapid.py:5315 msgid "Automatically start download is false" msgstr "Automatyczne rozpoczęcie pobierania jest wyłączone" -#: rapid/rapid.py:3849 +#: rapid/rapid.py:5368 msgid "Using manually specified path" msgstr "Użycie ręcznie wprowadzonej ścieżki" -#: rapid/rapid.py:3857 +#: rapid/rapid.py:5376 rapid/rapid.py:5417 #, python-format msgid "Backing up to %(path)s" msgstr "Tworzenie kopii zapasowej w %(path)s" -#: rapid/rapid.py:3968 rapid/rapid.py:4017 +#. the user is trying to backup to a device that is currently being downloaded from..... we don't normally allow that, but what to do? +#: rapid/rapid.py:5441 +#, python-format +msgid "Warning: backup device %(device)s is currently being downloaded from" +msgstr "" +"Ostrzeżenie: pobieranie obecnie odbywa się z urządzenia do tworzenia kopii " +"zapasowej %(device)s" + +#: rapid/rapid.py:5458 +msgid "D_ownload Selected" +msgstr "P_obierz zaznaczone" + +#: rapid/rapid.py:5550 rapid/rapid.py:5599 msgid "All downloads complete" msgstr "Ukończono wszystkie pobierania" -#: rapid/rapid.py:3982 +#: rapid/rapid.py:5564 msgid "MB/s" msgstr "MB/s" -#: rapid/rapid.py:3992 +#: rapid/rapid.py:5574 msgid "About 1 second remaining" msgstr "Pozostała około sekunda" -#: rapid/rapid.py:3994 +#: rapid/rapid.py:5576 #, python-format msgid "About %i seconds remaining" msgstr "Pozostało około %i sekund" -#: rapid/rapid.py:3996 +#: rapid/rapid.py:5578 msgid "About 1 minute remaining" msgstr "Pozostała około minuta" #. Translators: in the text '%(minutes)i:%(seconds)02i', only the : should be translated, if needed. #. '%(minutes)i' and '%(seconds)02i' should not be modified or left out. They are used to format and display the amount #. of time the download has remainging, e.g. 'About 5:36 minutes remaining' -#: rapid/rapid.py:4001 +#: rapid/rapid.py:5583 #, python-format msgid "About %(minutes)i:%(seconds)02i minutes remaining" msgstr "Pozostało około %(minutes)i:%(seconds)02i minut" -#: rapid/rapid.py:4019 -msgid "photos downloaded" -msgstr "zdjęcia pobrane" +#: rapid/rapid.py:5602 rapid/rapid.py:5608 rapid/rapid.py:5614 +#: rapid/rapid.py:5620 rapid/rapid.py:5625 rapid/rapid.py:5629 +#, python-format +msgid "%(number)s %(numberdownloaded)s" +msgstr "%(number)s %(numberdownloaded)s" -#: rapid/rapid.py:4021 -msgid "photos skipped" -msgstr "zdjęcia pominięte" +#: rapid/rapid.py:5604 rapid/rapid.py:5616 +#, python-format +msgid "%(filetype)s downloaded" +msgstr "Plik typu %(filetype)s został pobrany" -#: rapid/rapid.py:4023 -msgid "videos downloaded" -msgstr "filmy pobrane" +#: rapid/rapid.py:5610 rapid/rapid.py:5622 +#, python-format +msgid "%(filetype)s failed to download" +msgstr "Nie udało się pobrać pliku typu %(filetype)s" -#: rapid/rapid.py:4025 -msgid "videos skipped" -msgstr "filmy pominięte" +#: rapid/rapid.py:5789 +msgid "_Resume" +msgstr "_Wznów" -#. This text will be displayed to the user on the Download / Pause button. -#. Please note the space at the end of the label - it is needed to meet the Gnome Human Interface Guidelines -#: rapid/rapid.py:4125 -msgid "_Download " -msgstr "_Pobierz " +#: rapid/rapid.py:5792 +msgid "_Download All" +msgstr "Po_bierz wszystkie" #. This text will be displayed to the user on the Download / Pause button. -#: rapid/rapid.py:4135 +#: rapid/rapid.py:5801 msgid "_Pause" msgstr "W_strzymaj" -#: rapid/rapid.py:4209 -msgid "Preferences were changed." -msgstr "Preferencje zostały zmienione." +#: rapid/rapid.py:5914 +msgid "Download device settings preferences were changed." +msgstr "Preferencje urządzeń pobierania zostały zmienione." + +#: rapid/rapid.py:5926 +msgid "Backup preferences were changed." +msgstr "Preferencje kopii zapasowej zostały zmienione." + +#: rapid/rapid.py:5932 +msgid "Subfolder and filename preferences were changed." +msgstr "Preferencje podkatalogów i nazw plików zostały zmienione." -#: rapid/rapid.py:4407 +#: rapid/rapid.py:5943 +msgid "Download folder preferences were changed." +msgstr "Preferencje katalogu pobierania zostały zmienione." + +#: rapid/rapid.py:6141 msgid "Goodbye" msgstr "Do zobaczenia" #. Translators: this text is displayed to the user when they request information on the command line options. #. The text %default should not be modified or left out. -#: rapid/rapid.py:4418 +#: rapid/rapid.py:6152 #, python-format msgid "" "display program information on the command line as the program runs " @@ -1044,386 +1091,382 @@ msgstr "" "wyświetl informacje programu w linii komend podczas działania programu " "(domyślnie: %default)" -#: rapid/rapid.py:4419 +#: rapid/rapid.py:6153 msgid "only output errors to the command line" msgstr "wyświetlaj jedynie błędy w linii komend" #. image file extensions are recognized RAW files plus TIFF and JPG -#: rapid/rapid.py:4421 +#: rapid/rapid.py:6155 msgid "list photo and video file extensions the program recognizes and exit" msgstr "wypisz typy plików rozpoznawane przez program i zakończ" -#: rapid/rapid.py:4422 +#: rapid/rapid.py:6156 msgid "reset all program settings and preferences and exit" msgstr "zresetuj wszystkie ustawienia oraz preferencje programu i zakończ" -#: rapid/rapid.py:4431 +#: rapid/rapid.py:6165 msgid "Photos:" msgstr "Zdjęcia:" -#: rapid/rapid.py:4431 +#: rapid/rapid.py:6165 msgid "Videos:" msgstr "Filmy:" -#: rapid/rapid.py:4436 +#: rapid/rapid.py:6170 #, python-format msgid "and %s" msgstr "oraz %s" -#: rapid/rapid.py:4444 +#: rapid/rapid.py:6178 msgid "All settings and preferences have been reset" msgstr "Wszystkie ustawienia oraz preferencje zostały zresetowane" #. Which volume management code is being used (GIO or GnomeVFS) -#: rapid/rapid.py:4448 rapid/rapid.py:4449 rapid/rapid.py:4451 -#: rapid/rapid.py:4456 rapid/rapid.py:4460 +#: rapid/rapid.py:6182 rapid/rapid.py:6183 rapid/rapid.py:6185 +#: rapid/rapid.py:6190 rapid/rapid.py:6194 msgid "Using" msgstr "Użycie" -#: rapid/rapid.py:4453 +#: rapid/rapid.py:6187 msgid "\n" msgstr "\n" #. this application is already running -#: rapid/rapid.py:4477 +#: rapid/rapid.py:6211 #, python-format msgid "%s is already running" msgstr "%s jest już uruchomiony" -#: rapid/renamesubfolderprefs.py:190 +#: rapid/renamesubfolderprefs.py:192 msgid "Date time" msgstr "Data czas" -#: rapid/renamesubfolderprefs.py:191 +#: rapid/renamesubfolderprefs.py:193 msgid "Text" msgstr "Tekst" -#: rapid/renamesubfolderprefs.py:192 -msgid "Filename" -msgstr "Nazwa pliku" - -#: rapid/renamesubfolderprefs.py:193 +#: rapid/renamesubfolderprefs.py:195 msgid "Metadata" msgstr "Metadane" -#: rapid/renamesubfolderprefs.py:194 +#: rapid/renamesubfolderprefs.py:196 msgid "Sequences" msgstr "Sekwencje" -#: rapid/renamesubfolderprefs.py:197 +#: rapid/renamesubfolderprefs.py:199 msgid "Image date" msgstr "Data zdjęcia" -#: rapid/renamesubfolderprefs.py:198 +#: rapid/renamesubfolderprefs.py:200 msgid "Video date" msgstr "Data filmu" -#: rapid/renamesubfolderprefs.py:199 +#: rapid/renamesubfolderprefs.py:201 msgid "Today" msgstr "Dzisiaj" -#: rapid/renamesubfolderprefs.py:200 +#: rapid/renamesubfolderprefs.py:202 msgid "Yesterday" msgstr "Wczoraj" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:202 +#: rapid/renamesubfolderprefs.py:204 msgid "Name + extension" msgstr "Nazwa + rozszerzenie" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:204 +#: rapid/renamesubfolderprefs.py:206 msgid "Name" msgstr "Nazwa" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:206 +#: rapid/renamesubfolderprefs.py:208 msgid "Extension" msgstr "Rozszerzenie" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:208 +#: rapid/renamesubfolderprefs.py:210 msgid "Image number" msgstr "Numer obrazu" -#: rapid/renamesubfolderprefs.py:209 +#: rapid/renamesubfolderprefs.py:211 msgid "Video number" msgstr "Numer filmu" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:211 +#: rapid/renamesubfolderprefs.py:213 msgid "Aperture" msgstr "Przysłona" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:213 +#: rapid/renamesubfolderprefs.py:215 msgid "ISO" msgstr "ISO" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:215 +#: rapid/renamesubfolderprefs.py:217 msgid "Exposure time" msgstr "Czas naświetlania" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:217 +#: rapid/renamesubfolderprefs.py:219 msgid "Focal length" msgstr "Ogniskowa" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:219 +#: rapid/renamesubfolderprefs.py:221 msgid "Camera make" msgstr "Producent aparatu" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:221 +#: rapid/renamesubfolderprefs.py:223 msgid "Camera model" msgstr "Model aparatu" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:223 +#: rapid/renamesubfolderprefs.py:225 msgid "Short camera model" msgstr "Skrót modelu aparatu" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:225 +#: rapid/renamesubfolderprefs.py:227 msgid "Hyphenated short camera model" msgstr "Skrót z myślnikiem modelu aparatu" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:227 +#: rapid/renamesubfolderprefs.py:229 msgid "Serial number" msgstr "Numer seryjny" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:229 +#: rapid/renamesubfolderprefs.py:231 msgid "Shutter count" msgstr "Licznik migawki" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:231 +#: rapid/renamesubfolderprefs.py:233 msgid "Owner name" msgstr "Nazwa właściciela" -#: rapid/renamesubfolderprefs.py:232 +#: rapid/renamesubfolderprefs.py:234 msgid "Codec" msgstr "Kodek" -#: rapid/renamesubfolderprefs.py:233 +#: rapid/renamesubfolderprefs.py:235 msgid "Width" msgstr "Szerokość" -#: rapid/renamesubfolderprefs.py:234 +#: rapid/renamesubfolderprefs.py:236 msgid "Height" msgstr "Wysokość" -#: rapid/renamesubfolderprefs.py:235 +#: rapid/renamesubfolderprefs.py:237 msgid "Length" msgstr "Długość" -#: rapid/renamesubfolderprefs.py:236 +#: rapid/renamesubfolderprefs.py:238 msgid "Frames Per Second" msgstr "Klatki na sekundę" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:238 +#: rapid/renamesubfolderprefs.py:240 msgid "Downloads today" msgstr "Pobierań dzisiaj" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:240 +#: rapid/renamesubfolderprefs.py:242 msgid "Session number" msgstr "Numer sesji" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:242 +#: rapid/renamesubfolderprefs.py:244 msgid "Subfolder number" msgstr "Numer podkatalogu" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:244 +#: rapid/renamesubfolderprefs.py:246 msgid "Stored number" msgstr "Numer zachowany" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequenceletters -#: rapid/renamesubfolderprefs.py:246 +#: rapid/renamesubfolderprefs.py:248 msgid "Sequence letter" msgstr "Litera sekwencji" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:248 +#: rapid/renamesubfolderprefs.py:250 msgid "All digits" msgstr "Wszystkie cyfry" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:250 +#: rapid/renamesubfolderprefs.py:252 msgid "Last digit" msgstr "Ostatnia cyfra" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:252 +#: rapid/renamesubfolderprefs.py:254 msgid "Last 2 digits" msgstr "Ostatnie 2 cyfry" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:254 +#: rapid/renamesubfolderprefs.py:256 msgid "Last 3 digits" msgstr "Ostatnie 3 cyfry" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:256 +#: rapid/renamesubfolderprefs.py:258 msgid "Last 4 digits" msgstr "Ostatnie 4 cyfry" #. Translators: please not the capitalization of this text, and keep it the same if your language features capitalization -#: rapid/renamesubfolderprefs.py:258 +#: rapid/renamesubfolderprefs.py:260 msgid "Original Case" msgstr "Oryginalna wielkość liter" #. Translators: please not the capitalization of this text, and keep it the same if your language features capitalization -#: rapid/renamesubfolderprefs.py:260 +#: rapid/renamesubfolderprefs.py:262 msgid "UPPERCASE" msgstr "WIELKIE LITERY" #. Translators: please not the capitalization of this text, and keep it the same if your language features capitalization -#: rapid/renamesubfolderprefs.py:262 +#: rapid/renamesubfolderprefs.py:264 msgid "lowercase" msgstr "małe litery" -#: rapid/renamesubfolderprefs.py:263 +#: rapid/renamesubfolderprefs.py:265 msgid "One digit" msgstr "Jedna cyfra" -#: rapid/renamesubfolderprefs.py:264 +#: rapid/renamesubfolderprefs.py:266 msgid "Two digits" msgstr "Dwie cyfry" -#: rapid/renamesubfolderprefs.py:265 +#: rapid/renamesubfolderprefs.py:267 msgid "Three digits" msgstr "Trzy cyfry" -#: rapid/renamesubfolderprefs.py:266 +#: rapid/renamesubfolderprefs.py:268 msgid "Four digits" msgstr "Cztery cyfry" -#: rapid/renamesubfolderprefs.py:267 +#: rapid/renamesubfolderprefs.py:269 msgid "Five digits" msgstr "Pięć cyfr" -#: rapid/renamesubfolderprefs.py:268 +#: rapid/renamesubfolderprefs.py:270 msgid "Six digits" msgstr "Sześć cyfr" -#: rapid/renamesubfolderprefs.py:269 +#: rapid/renamesubfolderprefs.py:271 msgid "Seven digits" msgstr "Siedem cyfr" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:271 +#: rapid/renamesubfolderprefs.py:273 msgid "Subseconds" msgstr "Części sekundy" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:273 +#: rapid/renamesubfolderprefs.py:275 msgid "YYYYMMDD" msgstr "RRRRMMDD" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:275 +#: rapid/renamesubfolderprefs.py:277 msgid "YYYY-MM-DD" msgstr "RRRR-MM-DD" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:277 +#: rapid/renamesubfolderprefs.py:279 msgid "YYMMDD" msgstr "RRMMDD" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:279 +#: rapid/renamesubfolderprefs.py:281 msgid "YY-MM-DD" msgstr "RR-MM-DD" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:281 +#: rapid/renamesubfolderprefs.py:283 msgid "MMDDYYYY" msgstr "MMDDRRRR" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:283 +#: rapid/renamesubfolderprefs.py:285 msgid "MMDDYY" msgstr "MMDDRR" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:285 +#: rapid/renamesubfolderprefs.py:287 msgid "MMDD" msgstr "MMDD" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:287 +#: rapid/renamesubfolderprefs.py:289 msgid "DDMMYYYY" msgstr "DDMMRRRR" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:289 +#: rapid/renamesubfolderprefs.py:291 msgid "DDMMYY" msgstr "DDMMRR" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:291 +#: rapid/renamesubfolderprefs.py:293 msgid "YYYY" msgstr "RRRR" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:293 +#: rapid/renamesubfolderprefs.py:295 msgid "YY" msgstr "RR" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:295 +#: rapid/renamesubfolderprefs.py:297 msgid "MM" msgstr "MM" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:297 +#: rapid/renamesubfolderprefs.py:299 msgid "DD" msgstr "DD" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:299 +#: rapid/renamesubfolderprefs.py:301 msgid "HHMMSS" msgstr "GGMMSS" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:301 +#: rapid/renamesubfolderprefs.py:303 msgid "HHMM" msgstr "GGMM" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:303 +#: rapid/renamesubfolderprefs.py:305 msgid "HH-MM-SS" msgstr "GG-MM-SS" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:305 +#: rapid/renamesubfolderprefs.py:307 msgid "HH-MM" msgstr "GG-MM" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:307 +#: rapid/renamesubfolderprefs.py:309 msgid "HH" msgstr "GG" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:309 +#: rapid/renamesubfolderprefs.py:311 msgid "MM (minutes)" msgstr "MM (minuty)" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:311 +#: rapid/renamesubfolderprefs.py:313 msgid "SS" msgstr "SS" -#: rapid/renamesubfolderprefs.py:794 +#: rapid/renamesubfolderprefs.py:796 #, python-format msgid "" "Preference key '%(key)s' is invalid.\n" @@ -1432,68 +1475,26 @@ msgstr "" "Klucz preferencji \"%(key)s\" jest nieprawidłowy.\n" "Oczekiwano %(value)s" -#: rapid/renamesubfolderprefs.py:801 +#: rapid/renamesubfolderprefs.py:803 #, python-format msgid "Preference value '%(value)s' is invalid" msgstr "Wartość preferencji \"%(value)s\" jest nieprawidłowa" -#: rapid/renamesubfolderprefs.py:805 +#: rapid/renamesubfolderprefs.py:807 msgid "These preferences are not well formed:" msgstr "Następujące preferencje nie są dobrze sformułowane:" -#: rapid/renamesubfolderprefs.py:934 -msgid "Subsecond metadata not present in photo" -msgstr "Obraz nie zawiera metadanych części sekundy" - -#: rapid/renamesubfolderprefs.py:941 -#, python-format -msgid "%s metadata is not present" -msgstr "Brak metadanych %s" - -#: rapid/renamesubfolderprefs.py:960 rapid/renamesubfolderprefs.py:968 -#: rapid/renamesubfolderprefs.py:977 -#, python-format -msgid "Error in date time component. Value %s appears invalid" -msgstr "Błąd w składniku data czas. Nieprawidłowa wartość %s" - -#: rapid/renamesubfolderprefs.py:1004 -msgid "extension was specified but filename does not have an extension" -msgstr "" -"rozszerzenie zostało określone ale nazwa pliku nie posiada żadnego " -"rozszerzenia" - -#: rapid/renamesubfolderprefs.py:1008 -msgid "image or video number was specified but filename has no number" -msgstr "" -"numer obrazu lub filmu został określony ale nazwa pliku nie posiada żadnego " -"numeru" - -#: rapid/renamesubfolderprefs.py:1081 -#, python-format -msgid "%s metadata is not present in photo" -msgstr "Zdjęcie nie zawiera metadanych %s" - -#: rapid/renamesubfolderprefs.py:1194 -#, python-format -msgid "error generating name with component %s" -msgstr "błąd przy tworzeniu nazwy ze składową %s" - -#: rapid/renamesubfolderprefs.py:1450 -#, python-format -msgid "%s metadata is not present in video" -msgstr "Film nie zawiera metadanych %s" - -#: rapid/renamesubfolderprefs.py:1546 +#: rapid/renamesubfolderprefs.py:1517 #, python-format msgid "Subfolder preferences should not start with a %s" msgstr "Preferencje podkatalogu nie powinny zaczynać się od %s" -#: rapid/renamesubfolderprefs.py:1548 +#: rapid/renamesubfolderprefs.py:1519 #, python-format msgid "Subfolder preferences should not end with a %s" msgstr "Preferencje podkatalogu nie powinny kończyć się na %s" -#: rapid/renamesubfolderprefs.py:1552 +#: rapid/renamesubfolderprefs.py:1523 #, python-format msgid "Subfolder preferences should not contain two %s one after the other" msgstr "" @@ -1544,121 +1545,117 @@ msgid "Job Codes" msgstr "Kody pracy" #: rapid/glade3/rapid.glade.h:12 -msgid "Missing Backup Devices" -msgstr "Brak urządzeń do zapisu kopii zapasowej" - -#: rapid/glade3/rapid.glade.h:13 msgid "Photo Rename" msgstr "Zmiana nazw zdjęć" -#: rapid/glade3/rapid.glade.h:14 +#: rapid/glade3/rapid.glade.h:13 msgid "Photo and Video Name Conflicts" msgstr "Konflikty między nazwami zdjęć i filmów" -#: rapid/glade3/rapid.glade.h:15 +#: rapid/glade3/rapid.glade.h:14 msgid "Program Automation" msgstr "Automatyzacja programu" -#: rapid/glade3/rapid.glade.h:16 +#: rapid/glade3/rapid.glade.h:15 msgid "Sequence Numbers" msgstr "Numery sekwencji" -#: rapid/glade3/rapid.glade.h:17 +#: rapid/glade3/rapid.glade.h:16 msgid "/media/externaldrive/Photos" msgstr "/media/dyskzewnętrzny/Photos" -#: rapid/glade3/rapid.glade.h:18 +#: rapid/glade3/rapid.glade.h:17 msgid "Example: /home/user/Pictures" msgstr "Przykład: /home/użytkownik/Obrazy" -#: rapid/glade3/rapid.glade.h:19 +#: rapid/glade3/rapid.glade.h:18 msgid "Example:" msgstr "Przykład:" -#: rapid/glade3/rapid.glade.h:20 +#: rapid/glade3/rapid.glade.h:19 msgid "New:" msgstr "Nowa:" -#: rapid/glade3/rapid.glade.h:21 +#: rapid/glade3/rapid.glade.h:20 msgid "Original:" msgstr "Oryginalna:" -#: rapid/glade3/rapid.glade.h:22 +#: rapid/glade3/rapid.glade.h:21 msgid "Automation" msgstr "Automatyzacja" -#: rapid/glade3/rapid.glade.h:23 +#: rapid/glade3/rapid.glade.h:22 msgid "Backup\t" msgstr "Kopia zapasowa\t" -#: rapid/glade3/rapid.glade.h:24 +#: rapid/glade3/rapid.glade.h:23 msgid "Devices" msgstr "Urządzenia" -#: rapid/glade3/rapid.glade.h:25 +#: rapid/glade3/rapid.glade.h:24 msgid "Error Handling" msgstr "Obsługa błędów" -#: rapid/glade3/rapid.glade.h:26 +#: rapid/glade3/rapid.glade.h:25 msgid "Job Codes" msgstr "Kody pracy" -#: rapid/glade3/rapid.glade.h:27 +#: rapid/glade3/rapid.glade.h:26 msgid "Photo Download Folders" msgstr "" "Katalogi pobierania zdjęć" -#: rapid/glade3/rapid.glade.h:28 +#: rapid/glade3/rapid.glade.h:27 msgid "Photo Rename\t" msgstr "Zmiana nazw zdjęć\t" -#: rapid/glade3/rapid.glade.h:29 +#: rapid/glade3/rapid.glade.h:28 msgid "Rename Options" msgstr "Opcje zmiany nazw" -#: rapid/glade3/rapid.glade.h:30 +#: rapid/glade3/rapid.glade.h:29 msgid "Video Download Folders" msgstr "" "Katalogi pobierania filmów" -#: rapid/glade3/rapid.glade.h:31 +#: rapid/glade3/rapid.glade.h:30 msgid "Video Rename\t" msgstr "Zmiana nazw filmów\t" -#: rapid/glade3/rapid.glade.h:32 +#: rapid/glade3/rapid.glade.h:31 msgid "Add unique identifier" msgstr "Dodaj unikatowy identyfikator" -#: rapid/glade3/rapid.glade.h:33 +#: rapid/glade3/rapid.glade.h:32 msgid "Automatically detect Portable Storage Devices" msgstr "Automatycznie wykryj przenośne magazyny danych" -#: rapid/glade3/rapid.glade.h:34 +#: rapid/glade3/rapid.glade.h:33 msgid "Automatically detect backup devices" msgstr "" "Automatycznie wykryj urządzenia na których można utworzyć kopię zapasową" -#: rapid/glade3/rapid.glade.h:35 +#: rapid/glade3/rapid.glade.h:34 msgid "Automatically detect devices" msgstr "Automatycznie wykryj urządzenia" -#: rapid/glade3/rapid.glade.h:36 +#: rapid/glade3/rapid.glade.h:35 msgid "Automation" msgstr "Automatyzacja" -#: rapid/glade3/rapid.glade.h:37 +#: rapid/glade3/rapid.glade.h:36 msgid "Backup" msgstr "Kopia zapasowa" -#: rapid/glade3/rapid.glade.h:38 +#: rapid/glade3/rapid.glade.h:37 msgid "Backup location:" msgstr "Położenie kopii zapasowej:" -#: rapid/glade3/rapid.glade.h:39 +#: rapid/glade3/rapid.glade.h:38 msgid "Backup photos and videos when downloading" msgstr "Utwórz kopię zapasową zdjęć i filmów podczas pobierania" -#: rapid/glade3/rapid.glade.h:40 +#: rapid/glade3/rapid.glade.h:39 msgid "" "Choose the download folder. Subfolders for the downloaded photos will be " "automatically created in this folder using the structure specified below." @@ -1666,7 +1663,7 @@ msgstr "" "Proszę wybrać katalog pobierania. Podkatalogi dla pobranych zdjęć zostaną w " "nim automatycznie utworzone w oparciu o poniższą specyfikację." -#: rapid/glade3/rapid.glade.h:41 +#: rapid/glade3/rapid.glade.h:40 msgid "" "Choose the download folder. Subfolders for the downloaded videos will be " "automatically created in this folder using the structure specified below." @@ -1674,30 +1671,23 @@ msgstr "" "Proszę wybrać katalog pobierania. Podkatalogi dla pobranych filmów zostaną w " "nim automatycznie utworzone w oparciu o poniższą specyfikację." -#: rapid/glade3/rapid.glade.h:42 -msgid "" -"Choose whether to skip downloading the file, or to add a unique indentifier." -msgstr "" -"Proszę wybrać czy pominąć pobieranie pliku, czy dodać unikatowy " -"identyfikator." - -#: rapid/glade3/rapid.glade.h:43 +#: rapid/glade3/rapid.glade.h:41 msgid "Copyright Damon Lynch 2007-10" msgstr "Copyright Damon Lynch 2007-10" -#: rapid/glade3/rapid.glade.h:44 +#: rapid/glade3/rapid.glade.h:42 msgid "Day start:" msgstr "Początek dnia:" -#: rapid/glade3/rapid.glade.h:45 +#: rapid/glade3/rapid.glade.h:43 msgid "Delete photos and videos from device upon download completion" msgstr "Usuń zdjęcia i filmy z urządzenia po ukończeniu pobierania" -#: rapid/glade3/rapid.glade.h:46 +#: rapid/glade3/rapid.glade.h:44 msgid "Devices" msgstr "Urządzenia" -#: rapid/glade3/rapid.glade.h:47 +#: rapid/glade3/rapid.glade.h:45 msgid "" "Devices are from where to download photos and videos, such as cameras, " "memory cards or Portable Storage Devices.\n" @@ -1717,39 +1707,39 @@ msgstr "" "nieprawidłowo lub wcale, proszę spróbować przestawić go do trybu PTP. Jeśli " "jest to niemożliwe, proszę rozważyć użycie czytnika kart pamięci." -#: rapid/glade3/rapid.glade.h:52 +#: rapid/glade3/rapid.glade.h:50 msgid "Download / Pause" msgstr "Pobierz / Wstrzymaj" -#: rapid/glade3/rapid.glade.h:53 +#: rapid/glade3/rapid.glade.h:51 msgid "Download folder:" msgstr "Katalog pobierania:" -#: rapid/glade3/rapid.glade.h:54 +#: rapid/glade3/rapid.glade.h:52 msgid "Downloads today:" msgstr "Pobierań dzisiaj:" -#: rapid/glade3/rapid.glade.h:55 +#: rapid/glade3/rapid.glade.h:53 msgid "Error Handling" msgstr "Obsługa błędów" -#: rapid/glade3/rapid.glade.h:56 +#: rapid/glade3/rapid.glade.h:54 msgid "Error Log" msgstr "Dziennik błędów" -#: rapid/glade3/rapid.glade.h:57 +#: rapid/glade3/rapid.glade.h:55 msgid "Exit program if download completes without any warnings or errors" msgstr "" "Zakończ działanie programu, jeśli pobieranie zostanie ukończone bez błędów " "czy ostrzeżeń" -#: rapid/glade3/rapid.glade.h:58 +#: rapid/glade3/rapid.glade.h:56 msgid "If you disable automatic detection, choose the exact backup location." msgstr "" "W przypadku wyłączenia wykrywania automatycznego, proszę określić dokładne " "położenie kopii zapasowej." -#: rapid/glade3/rapid.glade.h:59 +#: rapid/glade3/rapid.glade.h:57 msgid "" "If you disable automatic detection, choose the exact location of the images " "and videos." @@ -1757,7 +1747,7 @@ msgstr "" "W przypadku wyłączenia wykrywania automatycznego, proszę wybrać dokładne " "położenie obrazów i filmów." -#: rapid/glade3/rapid.glade.h:60 +#: rapid/glade3/rapid.glade.h:58 msgid "" "If you enable automatic detection of Portable Storage Devices, the entire " "device will be scanned for images. On large devices, this could take some " @@ -1767,47 +1757,51 @@ msgstr "" "obrazy będą wyszukiwane na całym nośniku. W przypadku nośników o dużych " "pojemnościach, może to chwilę potrwać." -#: rapid/glade3/rapid.glade.h:61 -msgid "Ignore" -msgstr "Ignoruj" - -#: rapid/glade3/rapid.glade.h:62 +#: rapid/glade3/rapid.glade.h:59 msgid "Import your photos and videos efficiently and reliably" msgstr "Importuj zdjęcia i wideo wydajnie i niezawodnie" -#: rapid/glade3/rapid.glade.h:63 +#: rapid/glade3/rapid.glade.h:60 msgid "Job Codes" msgstr "Kody pracy" -#: rapid/glade3/rapid.glade.h:64 +#: rapid/glade3/rapid.glade.h:61 msgid "Location:" msgstr "Położenie:" -#: rapid/glade3/rapid.glade.h:65 +#: rapid/glade3/rapid.glade.h:62 msgid "Overwrite" msgstr "Nadpisz" -#: rapid/glade3/rapid.glade.h:66 +#: rapid/glade3/rapid.glade.h:63 +msgid "P_review Columns" +msgstr "Podgląd ko_lumn" + +#: rapid/glade3/rapid.glade.h:64 msgid "Photo Folders" msgstr "Katalogi zdjęć" -#: rapid/glade3/rapid.glade.h:67 +#: rapid/glade3/rapid.glade.h:65 msgid "Photo Rename" msgstr "Zmiana nazw zdjęć" -#: rapid/glade3/rapid.glade.h:68 +#: rapid/glade3/rapid.glade.h:66 msgid "Photo backup folder name:" msgstr "Nazwa katalogu z kopią zapasową zdjęć:" -#: rapid/glade3/rapid.glade.h:69 +#: rapid/glade3/rapid.glade.h:67 msgid "Preferences: Rapid Photo Downloader" msgstr "Preferencje: Rapid Photo Downloader" -#: rapid/glade3/rapid.glade.h:71 +#: rapid/glade3/rapid.glade.h:68 +msgid "Preview _Folders" +msgstr "Podgląd _katalogów" + +#: rapid/glade3/rapid.glade.h:70 msgid "R_emove All" msgstr "U_suń wszystko" -#: rapid/glade3/rapid.glade.h:73 +#: rapid/glade3/rapid.glade.h:72 msgid "" "Rapid Photo Downloader is free software; you can redistribute it and/or " "modify it under the terms of the GNU General Public License as published by " @@ -1839,27 +1833,43 @@ msgstr "" " proszę napisać do Free Software Foundation, Inc., 51 Franklin Street, Fifth " "Floor, Boston, MA 02110-130159 USA" -#: rapid/glade3/rapid.glade.h:78 +#: rapid/glade3/rapid.glade.h:77 msgid "Rename Options" msgstr "Opcje zmiany nazw" +#: rapid/glade3/rapid.glade.h:78 +msgid "Se_lect None" +msgstr "B_rak zaznaczenia" + #: rapid/glade3/rapid.glade.h:79 -msgid "Report a warning" -msgstr "Zgłoś ostrzeżenie" +msgid "Select All Pho_tos" +msgstr "Zaznacz wszystkie _zdjęcia" #: rapid/glade3/rapid.glade.h:80 -msgid "Report an error" -msgstr "Zgłoś błąd" +msgid "Select All Vi_deos" +msgstr "Zaznacz wszystkie _filmy" #: rapid/glade3/rapid.glade.h:81 +msgid "Select All Wit_h Job Code" +msgstr "Zaznacz wszystkie z _kodem pracy" + +#: rapid/glade3/rapid.glade.h:82 +msgid "Select All Without _Job Code" +msgstr "Zaznacz wszystkie _bez kodu pracy" + +#: rapid/glade3/rapid.glade.h:83 +msgid "Select _All" +msgstr "Zaznacz _wszystkie" + +#: rapid/glade3/rapid.glade.h:84 msgid "Skip" msgstr "Pomiń" -#: rapid/glade3/rapid.glade.h:82 +#: rapid/glade3/rapid.glade.h:85 msgid "Skip download" msgstr "Pomiń pobieranie" -#: rapid/glade3/rapid.glade.h:83 +#: rapid/glade3/rapid.glade.h:86 msgid "" "Sorry, video downloading functionality disabled. To download videos, please " "install the kaa metadata package for python." @@ -1868,7 +1878,7 @@ msgstr "" "zainstalować pakiet kaa metadata, aby mieć możliwość pobierania " "filmów." -#: rapid/glade3/rapid.glade.h:84 +#: rapid/glade3/rapid.glade.h:87 msgid "" "Specify the folder in which backups are stored on the device. \n" "\n" @@ -1884,7 +1894,7 @@ msgstr "" "podanej nazwie dla każdego urządzenia, które będzie używane do zapisu kopii " "zapasowych." -#: rapid/glade3/rapid.glade.h:87 +#: rapid/glade3/rapid.glade.h:90 msgid "" "Specify the time in 24 hour format at which the Downloads today " "sequence number should be reset." @@ -1892,21 +1902,7 @@ msgstr "" "Proszę określić czas, w formacie 24-godzinnym, w którym numer sekwencji " "Pobierań dzisiaj powinien zostać zresetowany." -#: rapid/glade3/rapid.glade.h:88 -msgid "" -"Specify what to do when a photo or video of the same name has already been " -"downloaded or backed up." -msgstr "" -"Proszę określić zachowanie w przypadku, kiedy obraz lub film o tej samej " -"nazwie został już pobrany lub posiada kopię zapasową." - -#: rapid/glade3/rapid.glade.h:89 -msgid "Specify what to do when there are no backup devices." -msgstr "" -"Proszę określić zachowanie w przypadku braku urządzeń na których można " -"utworzyć kopię zapasową." - -#: rapid/glade3/rapid.glade.h:90 +#: rapid/glade3/rapid.glade.h:91 msgid "" "Specify whether photo, video and folder names should have any characters " "removed that are not allowed by other operating systems." @@ -1914,51 +1910,59 @@ msgstr "" "Proszę określić czy znaki, które są niedozwolone przez inne systemy " "operacyjne, powinny zostać usunięte z nazw obrazów i katalogów." -#: rapid/glade3/rapid.glade.h:91 +#: rapid/glade3/rapid.glade.h:92 msgid "Start downloading at program startup" msgstr "Rozpocznij pobieranie przy uruchomieniu programu" -#: rapid/glade3/rapid.glade.h:92 +#: rapid/glade3/rapid.glade.h:93 msgid "Start downloading upon device insertion" msgstr "Rozpocznij pobieranie po podłączeniu urządzenia" -#: rapid/glade3/rapid.glade.h:93 +#: rapid/glade3/rapid.glade.h:94 msgid "Stored number:" msgstr "Numer zachowany:" -#: rapid/glade3/rapid.glade.h:94 +#: rapid/glade3/rapid.glade.h:95 msgid "Strip incompatible characters" msgstr "Usuń niezgodne znaki" -#: rapid/glade3/rapid.glade.h:95 +#: rapid/glade3/rapid.glade.h:96 msgid "Synchronize RAW + JPEG sequence numbers" msgstr "Synchronizuj numery sekwencji RAW + JPEG" -#: rapid/glade3/rapid.glade.h:96 +#: rapid/glade3/rapid.glade.h:97 msgid "Unmount (\"eject\") device upon download completion" msgstr "Odmontuj (\"wysuń\") urządzenie po ukończeniu pobierania" -#: rapid/glade3/rapid.glade.h:97 +#: rapid/glade3/rapid.glade.h:98 msgid "Video Folders" msgstr "Katalogi filmów" -#: rapid/glade3/rapid.glade.h:98 +#: rapid/glade3/rapid.glade.h:99 msgid "Video Rename" msgstr "Zmiana nazw filmów" -#: rapid/glade3/rapid.glade.h:99 +#: rapid/glade3/rapid.glade.h:100 msgid "Video backup folder name:" msgstr "Nazwa katalogu z kopią zapasową filmów:" -#: rapid/glade3/rapid.glade.h:100 +#: rapid/glade3/rapid.glade.h:101 +msgid "" +"When a photo or video of the same name has already been downloaded, choose " +"whether to skip downloading the file, or to add a unique indentifier." +msgstr "" +"Proszę określić działanie w przypadku, gdy zdjęcie lub film o tej samej " +"nazwie został już pobrany." + +#: rapid/glade3/rapid.glade.h:102 msgid "" "When backing up, choose whether to overwrite a file on the backup device " "that has the same name, or skip backing it up." msgstr "" -"Proszę wybrać, czy podczas tworzenia kopii zapasowej nadpisać, czy pominąć " +"Proszę wybrać, czy podczas tworzenia kopii zapasowej nadpisać czy pominąć " "plik o tej samej nazwie na urządzeniu docelowym." -#: rapid/glade3/rapid.glade.h:101 +#: rapid/glade3/rapid.glade.h:103 msgid "" "You can have your photos and videos backed up to multiple locations as they " "are downloaded, e.g. external hard drives." @@ -1966,50 +1970,77 @@ msgstr "" "Możliwe jest utworzenie wielu kopii zapasowych dla pobieranych zdjęć i " "filmów, np. na zewnętrznych dyskach twardych." -#: rapid/glade3/rapid.glade.h:102 +#: rapid/glade3/rapid.glade.h:104 msgid "_Add..." msgstr "_Dodaj..." -#: rapid/glade3/rapid.glade.h:103 +#: rapid/glade3/rapid.glade.h:105 msgid "_Clear Completed Downloads" msgstr "Wyczyść _ukończone pobierania" -#: rapid/glade3/rapid.glade.h:104 +#: rapid/glade3/rapid.glade.h:106 +msgid "_Device" +msgstr "_Urządzenie" + +#: rapid/glade3/rapid.glade.h:107 msgid "_Error Log" msgstr "_Dziennik błędów" -#: rapid/glade3/rapid.glade.h:105 +#: rapid/glade3/rapid.glade.h:108 +msgid "_File" +msgstr "P_lik" + +#: rapid/glade3/rapid.glade.h:109 +msgid "_Filename" +msgstr "_Nazwa pliku" + +#: rapid/glade3/rapid.glade.h:110 msgid "_Get Help Online..." msgstr "Z_najdź pomoc w sieci..." -#: rapid/glade3/rapid.glade.h:106 +#: rapid/glade3/rapid.glade.h:111 msgid "_Help" msgstr "_Pomoc" -#: rapid/glade3/rapid.glade.h:107 +#: rapid/glade3/rapid.glade.h:112 msgid "_Make a Donation..." msgstr "_Darowizna" -#: rapid/glade3/rapid.glade.h:108 -msgid "_Photos" -msgstr "_Zdjęcia" +#: rapid/glade3/rapid.glade.h:113 +msgid "_Path" +msgstr "Ś_cieżka" -#: rapid/glade3/rapid.glade.h:109 +#: rapid/glade3/rapid.glade.h:114 +msgid "_Preview" +msgstr "_Podgląd" + +#: rapid/glade3/rapid.glade.h:115 msgid "_Report a Problem..." msgstr "Zgłoś _błąd w programie..." -#: rapid/glade3/rapid.glade.h:110 -msgid "_Thumbnails" -msgstr "_Miniatury" +#: rapid/glade3/rapid.glade.h:116 +msgid "_Select" +msgstr "_Zaznaczenie" -#: rapid/glade3/rapid.glade.h:111 +#: rapid/glade3/rapid.glade.h:117 +msgid "_Size" +msgstr "_Rozmiar" + +#: rapid/glade3/rapid.glade.h:118 msgid "_Translate this Application..." msgstr "_Przetłumacz ten program..." -#: rapid/glade3/rapid.glade.h:112 +#: rapid/glade3/rapid.glade.h:119 +msgid "_Type" +msgstr "_Typ" + +#: rapid/glade3/rapid.glade.h:120 msgid "_View" msgstr "_Widok" +#~ msgid "_Photos" +#~ msgstr "_Zdjęcia" + #~ msgid "Download Folder" #~ msgstr "Katalog pobierania" @@ -2034,6 +2065,15 @@ msgstr "_Widok" #~ "Proszę wybrać czy pominąć pobieranie obrazu, czy dodać unikatowy " #~ "identyfikator." +#~ msgid "Report an error" +#~ msgstr "Zgłoś błąd" + +#~ msgid "Report a warning" +#~ msgstr "Zgłoś ostrzeżenie" + +#~ msgid "Ignore" +#~ msgstr "Ignoruj" + #~ msgid "Start downloading upon image device insertion" #~ msgstr "Rozpocznij pobieranie po podłączeniu nośnika zdjęć" @@ -2053,6 +2093,12 @@ msgstr "_Widok" #~ msgid "Backup photos when downloading" #~ msgstr "Utwórz kopię zapasową podczas pobierania zdjęć" +#~ msgid "_Thumbnails" +#~ msgstr "_Miniatury" + +#~ msgid "_Download " +#~ msgstr "_Pobierz " + #~ msgid "Image Rename\t" #~ msgstr "Zmiana nazw obrazów\t" @@ -2119,9 +2165,24 @@ msgstr "_Widok" #~ msgid "Image already exists" #~ msgstr "Obraz już istnieje" +#~ msgid "Preferences were changed." +#~ msgstr "Preferencje zostały zmienione." + #~ msgid "Error in Download Subfolder preferences" #~ msgstr "Błąd w preferencjach podkatalogu pobierania" +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Problem: %(problem)s" +#~ msgstr "" +#~ "Źródło: %(source)s\n" +#~ "Problem: %(problem)s" + +#, python-format +#~ msgid "Source: %s" +#~ msgstr "Źródło: %s" + #, python-format #~ msgid "" #~ "Source: %(source)s\n" @@ -2132,6 +2193,16 @@ msgstr "_Widok" #~ "Cel: %(destination)s\n" #~ "Problem: %(problem)s" +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Destination: %(destination)s\n" +#~ "Error: %(errorno)s %(strerror)s" +#~ msgstr "" +#~ "Źródło: %(source)s\n" +#~ "Cel: %(destination)s\n" +#~ "Błąd: %(errorno)s %(strerror)s" + #, python-format #~ msgid "" #~ "Subfolder: %(subfolder)s\n" @@ -2142,6 +2213,16 @@ msgstr "_Widok" #~ "Obraz: %(image)s\n" #~ "Problem: %(problem)s" +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Destination: %(destination)s\n" +#~ "Error: %(errno)s %(strerror)s" +#~ msgstr "" +#~ "Źródło: %(source)s\n" +#~ "Cel: %(destination)s\n" +#~ "Błąd: %(errno)s %(strerror)s" + #~ msgid "Error in Image Rename preferences" #~ msgstr "Błąd w preferencjach zmiany nazw obrazów" @@ -2179,6 +2260,13 @@ msgstr "_Widok" #~ "Nazwa podkatalogu nie mogła zostać prawidłowo wygenerowana. Proszę " #~ "sprawdzić, czy metadane obrazu są wystarczające." +#, python-format +#~ msgid "Unique identifier '%s' added" +#~ msgstr "Dodano unikatowy identyfikator \"%s\"" + +#~ msgid "Download copying error" +#~ msgstr "Błąd pobierania" + #~ msgid "Backup image already exists" #~ msgstr "Kopia zapasowa obrazu już istnieje" @@ -2192,6 +2280,9 @@ msgstr "_Widok" #~ "%(directory)s\n" #~ "Błąd: %(errno)s %(strerror)s" +#~ msgid "Backup device missing" +#~ msgstr "Brak urządzenia do zapisu kopii zapasowej" + #~ msgid "No backup device was detected." #~ msgstr "Nie wykryto urządzenia na którym można utworzyć kopię zapasową" @@ -2202,6 +2293,9 @@ msgstr "_Widok" #~ msgid "%(number)s of %(total)s images copied" #~ msgstr "Skopiowano %(number)s z %(total)s obrazów" +#~ msgid "It may be corrupted" +#~ msgstr "Może być uszkodzone" + #~ msgid "images downloaded" #~ msgstr "obrazów pobranych" @@ -2218,6 +2312,10 @@ msgstr "_Widok" #~ msgid "%s metadata is not present in image" #~ msgstr "Obraz nie zawiera metadanych %s" +#, python-format +#~ msgid "Error in date time component. Value %s appears invalid" +#~ msgstr "Błąd w składniku data czas. Nieprawidłowa wartość %s" + #~ msgid "extension was specified but image name has no extension" #~ msgstr "" #~ "rozszerzenie zostało określone ale obraz nie posiada żadnego rozszerzenia" @@ -2226,6 +2324,13 @@ msgstr "_Widok" #~ msgstr "" #~ "numer obrazu został określony ale nazwa pliku nie posiada żadnego numeru" +#, python-format +#~ msgid "error generating name with component %s" +#~ msgstr "błąd przy tworzeniu nazwy ze składową %s" + +#~ msgid "Missing Backup Devices" +#~ msgstr "Brak urządzeń do zapisu kopii zapasowej" + #~ msgid "" #~ "If you disable automatic detection, choose the exact location of the images." #~ msgstr "" @@ -2257,6 +2362,11 @@ msgstr "_Widok" #~ "Proszę określić zachowanie w przypadku, kiedy obraz o tej samej nazwie " #~ "został już pobrany lub posiada kopię zapasową." +#~ msgid "Specify what to do when there are no backup devices." +#~ msgstr "" +#~ "Proszę określić zachowanie w przypadku braku urządzeń na których można " +#~ "utworzyć kopię zapasową." + #~ msgid "" #~ "Specify whether image and folder names should have any characters removed " #~ "that are not allowed by other operating systems." @@ -2317,6 +2427,12 @@ msgstr "_Widok" #~ "wygenerowania podkatalogów. Proszę użyć innej opcji określenia nazw " #~ "podkatalogów" +#~ msgid "Enter a new job code, or select a previous one." +#~ msgstr "Proszę wprowadzić nowy kod pracy lub wybrać poprzedni." + +#~ msgid "Enter a new job code." +#~ msgstr "Proszę wprowadzić nowy kod pracy." + #~ msgid "Should this device or partition be used to download images from?" #~ msgstr "Pobierać obrazy z tego urządzenia lub partycji?" @@ -2386,3 +2502,161 @@ msgstr "_Widok" #, python-format #~ msgid "Image device: %s\n" #~ msgstr "Nośnik obrazów: %s\n" + +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Partially generated filename: %(newname)s\n" +#~ "Destination: %(destination)s\n" +#~ "Problem: %(problem)s" +#~ msgstr "" +#~ "Źródło: %(source)s\n" +#~ "Częściowo wygenerowana nazwa pliku: %(newname)s\n" +#~ "Cel: %(destination)s\n" +#~ "Problem: %(problem)s" + +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Destination: %(destination)s\n" +#~ msgstr "" +#~ "Źródło: %(source)s\n" +#~ "Cel: %(destination)s\n" + +#, python-format +#~ msgid "%(filetype)s filename could not be generated" +#~ msgstr "Nazwa pliku %(filetype)s nie mogła zostać wygenerowana" + +#~ msgid "" +#~ "Photos detected with the same filenames, but taken at different times:" +#~ msgstr "" +#~ "Znalezione zdjęcia mające taką samą nazwę, ale zrobione w różnym czasie:" + +#, python-format +#~ msgid "%(filetype)s has no metadata" +#~ msgstr "%(filetype)s nie posiada metadanych" + +#, python-format +#~ msgid "" +#~ "%(filetype)s filename could not be properly generated. Check to ensure there " +#~ "is sufficient metadata." +#~ msgstr "" +#~ "Nazwa pliku %(filetype)s nie mogła zostać prawidłowo wygenerowana. Proszę " +#~ "sprawdzić, czy metadane są wystarczające." + +#, python-format +#~ msgid "" +#~ "First photo: %(image1)s %(image1_date_time)s:%(image1_subseconds)s\n" +#~ "Second photo: %(image2)s %(image2_date_time)s:%(image2_subseconds)s" +#~ msgstr "" +#~ "Pierwsze zdjęcie: %(image1)s %(image1_date_time)s:%(image1_subseconds)s\n" +#~ "Drugie zdjęcie: %(image2)s %(image2_date_time)s:%(image2_subseconds)s" + +#, python-format +#~ msgid "" +#~ "Subfolder: %(subfolder)s\n" +#~ "File: %(file)s\n" +#~ "Problem: %(problem)s" +#~ msgstr "" +#~ "Podkatalog: %(subfolder)s\n" +#~ "Plik: %(file)s\n" +#~ "Problem: %(problem)s" + +#, python-format +#~ msgid "" +#~ "Metadata is essential for generating subfolder and/or file names.\n" +#~ "Source: %s" +#~ msgstr "" +#~ "Metadane są niezbędne aby wygenerować nazwy podkatalogów oraz/lub plików.\n" +#~ "Źródło:%s" + +#~ msgid "" +#~ "Subfolder name could not be properly generated. Check to ensure there is " +#~ "sufficient metadata." +#~ msgstr "" +#~ "Nazwa podkatalogu nie mogła zostać prawidłowo wygenerowana. Proszę " +#~ "sprawdzić, czy metadane są wystarczające." + +#~ msgid "Photo thumbnail could not be extracted" +#~ msgstr "Nie udało się wyodrębnić miniatur zdjęć" + +#~ msgid "No backup device was automatically detected" +#~ msgstr "Nie wykryto urządzenia do utworzenia kopii zapasowej" + +#~ msgid "Video skipped" +#~ msgstr "Film pominięto" + +#~ msgid "Video already exists" +#~ msgstr "FIlm już istnieje" + +#~ msgid "Photo already exists" +#~ msgstr "Zdjęcie już istnieje" + +#~ msgid "Photo skipped" +#~ msgstr "Zdjęcie pominięto" + +#~ msgid "videos skipped" +#~ msgstr "filmy pominięte" + +#~ msgid "videos downloaded" +#~ msgstr "filmy pobrane" + +#~ msgid "photos skipped" +#~ msgstr "zdjęcia pominięte" + +#~ msgid "photos downloaded" +#~ msgstr "zdjęcia pobrane" + +#~ msgid "image or video number was specified but filename has no number" +#~ msgstr "" +#~ "numer obrazu lub filmu został określony ale nazwa pliku nie posiada żadnego " +#~ "numeru" + +#, python-format +#~ msgid "%s metadata is not present in photo" +#~ msgstr "Zdjęcie nie zawiera metadanych %s" + +#, python-format +#~ msgid "%s metadata is not present in video" +#~ msgstr "Film nie zawiera metadanych %s" + +#~ msgid "extension was specified but filename does not have an extension" +#~ msgstr "" +#~ "rozszerzenie zostało określone ale nazwa pliku nie posiada żadnego " +#~ "rozszerzenia" + +#~ msgid "Subsecond metadata not present in photo" +#~ msgstr "Obraz nie zawiera metadanych części sekundy" + +#, python-format +#~ msgid "%s metadata is not present" +#~ msgstr "Brak metadanych %s" + +#~ msgid "" +#~ "Choose whether to skip downloading the file, or to add a unique indentifier." +#~ msgstr "" +#~ "Proszę wybrać czy pominąć pobieranie pliku, czy dodać unikatowy " +#~ "identyfikator." + +#~ msgid "" +#~ "Specify what to do when a photo or video of the same name has already been " +#~ "downloaded or backed up." +#~ msgstr "" +#~ "Proszę określić zachowanie w przypadku, kiedy obraz lub film o tej samej " +#~ "nazwie został już pobrany lub posiada kopię zapasową." + +#, python-format +#~ msgid "0 of %(number)s %(filetypes)s" +#~ msgstr "0 z %(number)s plików typu %(filetypes)s" + +#, python-format +#~ msgid "%(noFiles)s %(filetypes)s skipped" +#~ msgstr "%(filetypes)s pominięte: %(noFiles)s" + +#, python-format +#~ msgid "Could not open %(filetype)s" +#~ msgstr "%(filetype)s nie mógł zostać otwarty" + +#, python-format +#~ msgid "The %(filetype)s was not copied." +#~ msgstr "%(filetype)s nie został skopiowany." diff --git a/po/rapid-photo-downloader.pot b/po/rapid-photo-downloader.pot index a61b954..84f5ce3 100644 --- a/po/rapid-photo-downloader.pot +++ b/po/rapid-photo-downloader.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-05-27 22:33-0500\n" +"POT-Creation-Date: 2010-07-02 22:51-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,188 +17,188 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" #. Translators: if neccessary, for guidance in how to translate this program, you may see http://damonlynch.net/translate.html -#: rapid/rapid.py:104 rapid/rapid.py:4447 rapid/glade3/rapid.glade.h:72 +#: rapid/rapid.py:122 rapid/rapid.py:6181 rapid/glade3/rapid.glade.h:71 msgid "Rapid Photo Downloader" msgstr "" -#: rapid/rapid.py:394 +#: rapid/rapid.py:449 msgid "New York" msgstr "" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Manila" msgstr "" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Prague" msgstr "" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Helsinki" msgstr "" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Wellington" msgstr "" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Tehran" msgstr "" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Kampala" msgstr "" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Paris" msgstr "" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Berlin" msgstr "" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Sydney" msgstr "" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Budapest" msgstr "" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Rome" msgstr "" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Moscow" msgstr "" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Delhi" msgstr "" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Warsaw" msgstr "" -#: rapid/rapid.py:398 +#: rapid/rapid.py:453 msgid "Jakarta" msgstr "" -#: rapid/rapid.py:398 +#: rapid/rapid.py:453 msgid "Madrid" msgstr "" -#: rapid/rapid.py:398 +#: rapid/rapid.py:453 msgid "Stockholm" msgstr "" -#: rapid/rapid.py:425 +#: rapid/rapid.py:486 msgid "Invalid Downloads Today value.\n" msgstr "" -#: rapid/rapid.py:426 +#: rapid/rapid.py:487 msgid "Resetting value to zero.\n" msgstr "" -#: rapid/rapid.py:465 +#: rapid/rapid.py:526 msgid "'Start of day' preference value is corrupted.\n" msgstr "" -#: rapid/rapid.py:466 +#: rapid/rapid.py:527 msgid "Resetting to midnight.\n" msgstr "" -#: rapid/rapid.py:492 +#: rapid/rapid.py:553 msgid "Error in Photo Rename preferences" msgstr "" -#: rapid/rapid.py:523 rapid/rapid.py:1567 +#: rapid/rapid.py:584 rapid/rapid.py:1689 msgid "Sorry,these preferences contain an error:\n" msgstr "" -#: rapid/rapid.py:534 +#: rapid/rapid.py:595 msgid "Resetting to default values." msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:609 rapid/renamesubfolderprefs.py:196 +#: rapid/rapid.py:670 rapid/renamesubfolderprefs.py:198 msgid "Job code" msgstr "" -#: rapid/rapid.py:677 +#: rapid/rapid.py:738 msgid "Error in Video Rename preferences" msgstr "" -#: rapid/rapid.py:695 +#: rapid/rapid.py:756 msgid "Error in Photo Download Subfolders preferences" msgstr "" -#: rapid/rapid.py:712 +#: rapid/rapid.py:773 msgid "Error in Video Download Subfolders preferences" msgstr "" -#: rapid/rapid.py:745 rapid/rapid.py:1492 +#: rapid/rapid.py:806 rapid/rapid.py:1539 msgid "photos and videos" msgstr "" -#: rapid/rapid.py:747 rapid/rapid.py:1502 rapid/rapid.py:1782 +#: rapid/rapid.py:808 rapid/rapid.py:1549 rapid/rapid.py:1658 msgid "photos" msgstr "" -#: rapid/rapid.py:880 +#: rapid/rapid.py:943 msgid "Select a folder to download photos to" msgstr "" -#: rapid/rapid.py:898 +#: rapid/rapid.py:961 msgid "Select a folder to download videos to" msgstr "" -#: rapid/rapid.py:980 +#: rapid/rapid.py:1043 #, python-format msgid "Select a folder containing %(file_types)s" msgstr "" -#: rapid/rapid.py:1002 +#: rapid/rapid.py:1065 #, python-format msgid "Select a folder in which to backup %(file_types)s" msgstr "" #. Translators: please do not modify or leave out html formatting tags like and . These are used to format the text the users sees -#: rapid/rapid.py:1095 +#: rapid/rapid.py:1146 msgid "" "Warning: There is insufficient metadata to fully generate the " "name. Please use other renaming options." msgstr "" -#: rapid/rapid.py:1129 +#: rapid/rapid.py:1182 msgid "" "Warning: There is insufficient metadata to fully generate " "subfolders. Please use other subfolder naming options." msgstr "" #. Translators: you should not modify or leave out the %s. This is a code used by the programming language python to insert a value that thes user will see -#: rapid/rapid.py:1133 +#: rapid/rapid.py:1186 #, python-format msgid "Example: %s" msgstr "" -#: rapid/rapid.py:1159 +#: rapid/rapid.py:1212 msgid "Downloads today value not updated, as a download is currently occurring" msgstr "" -#: rapid/rapid.py:1175 +#: rapid/rapid.py:1228 msgid "Stored number value not updated, as a download is currently occurring" msgstr "" -#: rapid/rapid.py:1205 +#: rapid/rapid.py:1258 #, python-format msgid "" "The %(filetype)s subfolder preferences had some unnecessary values removed." msgstr "" #. Preferences list is now empty -#: rapid/rapid.py:1210 +#: rapid/rapid.py:1263 #, python-format msgid "" "The %(filetype)s subfolder preferences entered are invalid and cannot be " @@ -207,59 +207,93 @@ msgid "" msgstr "" #. check subfolder preferences for bad values -#: rapid/rapid.py:1224 rapid/rapid.py:1504 rapid/rapid.py:2533 +#: rapid/rapid.py:1277 rapid/rapid.py:1551 msgid "photo" msgstr "" -#: rapid/rapid.py:1225 rapid/rapid.py:1499 rapid/rapid.py:2541 +#: rapid/rapid.py:1278 rapid/rapid.py:1546 msgid "video" msgstr "" #. Translators: this value is used as an example device when automatic backup device detection is enabled. You should translate this. -#: rapid/rapid.py:1468 +#: rapid/rapid.py:1515 msgid "externaldrive1" msgstr "" #. Translators: this value is used as an example device when automatic backup device detection is enabled. You should translate this. -#: rapid/rapid.py:1470 +#: rapid/rapid.py:1517 msgid "externaldrive2" msgstr "" -#: rapid/rapid.py:1494 rapid/rapid.py:1780 +#: rapid/rapid.py:1541 rapid/rapid.py:1656 msgid "photos or videos" msgstr "" -#: rapid/rapid.py:1497 +#: rapid/rapid.py:1544 msgid "videos" msgstr "" +#: rapid/rapid.py:1556 +#, python-format +msgid "" +"%(date)s\n" +"%(time)s" +msgstr "" + +#: rapid/rapid.py:1558 +#, python-format +msgid "%(date)s %(time)s" +msgstr "" + +#: rapid/rapid.py:1561 +#, python-format +msgid "%(hour)s:%(minute)s:%(second)s:%(subsecond)s" +msgstr "" + +#: rapid/rapid.py:1568 +#, python-format +msgid "%(date)s %(hour)s:%(minute)s:%(second)s:%(subsecond)s" +msgstr "" + +#: rapid/rapid.py:1596 rapid/rapid.py:2242 +msgid "subfolder and filename" +msgstr "" + +#: rapid/rapid.py:1598 rapid/rapid.py:2244 +msgid "filename" +msgstr "" + +#: rapid/rapid.py:1600 rapid/rapid.py:2246 +msgid "subfolder" +msgstr "" + #. This refers to when a device like a hard drive is having its contents scanned, #. looking for photos or videos. It is visible initially in the progress bar for each device -#. (which normally holds "x of y photos"). +#. (which normally holds "x photos and videos"). #. It maybe displayed only briefly if the contents of the device being scanned is small. -#: rapid/rapid.py:1556 +#: rapid/rapid.py:1672 msgid "scanning..." msgstr "" -#: rapid/rapid.py:1663 +#: rapid/rapid.py:1783 msgid "The following download path could not be created:\n" msgstr "" -#: rapid/rapid.py:1664 +#: rapid/rapid.py:1784 #, python-format msgid "%(path)s: " msgstr "" -#: rapid/rapid.py:1665 rapid/rapid.py:1666 rapid/rapid.py:1681 -#: rapid/rapid.py:1682 rapid/rapid.py:2364 rapid/rapid.py:2367 +#: rapid/rapid.py:1785 rapid/rapid.py:1786 rapid/rapid.py:1801 +#: rapid/rapid.py:1802 rapid/rapid.py:2063 rapid/rapid.py:2066 msgid "Download cannot proceed" msgstr "" -#: rapid/rapid.py:1679 rapid/rapid.py:3381 +#: rapid/rapid.py:1799 rapid/rapid.py:4846 msgid "There is an error in the program preferences." msgstr "" -#: rapid/rapid.py:1680 +#: rapid/rapid.py:1800 msgid "" "\n" "Please check preferences, restart the program, and try again." @@ -269,9 +303,9 @@ msgstr "" #. It refers to the actual number of photos that can be copied. For example, the user might see the following: #. '0 of 512 photos' or '0 of 10 videos' or '0 of 202 photos and videos'. #. This particular text is displayed to the user before the download has started. -#: rapid/rapid.py:1791 +#: rapid/rapid.py:1974 #, python-format -msgid "0 of %(number)s %(filetypes)s" +msgid "%(number)s %(filetypes)s" msgstr "" #. Translators: as you have already seen, the text can contain values that should not be modified or left out by you, for example %s. @@ -280,426 +314,415 @@ msgstr "" #. %(number)s should be left exactly as is: 'number' should not be translated. The same applies to %(device)s: 'device' should #. not be translated. Generally speaking, if translating the sentence requires it, you can move items like '%(xyz)s' around #. in a sentence, but you should never modify them or leave them out. -#: rapid/rapid.py:1803 +#: rapid/rapid.py:1985 #, python-format msgid "Device scan complete: found %(number)s %(filetypes)s on %(device)s" msgstr "" -#: rapid/rapid.py:1810 +#: rapid/rapid.py:1992 #, python-format msgid "Device scan complete: no %(filetypes)s found on %(device)s" msgstr "" -#: rapid/rapid.py:1844 -#, python-format -msgid "%(filetype)s filename could not be generated" +#. This message informs the user that the device (e.g. camera, hard drive or memory card) was automatically unmounted and they can now remove it +#: rapid/rapid.py:2013 +msgid "The device can now be safely removed" msgstr "" -#. '%(source)s' and '%(problem)s' are two more examples of text that should not be modified or left out -#: rapid/rapid.py:1846 +#: rapid/rapid.py:2019 #, python-format -msgid "" -"Source: %(source)s\n" -"Problem: %(problem)s" +msgid "%(noFiles)s %(filetypes)s downloaded" msgstr "" -#: rapid/rapid.py:1850 +#: rapid/rapid.py:2022 #, python-format -msgid "" -"%(filetype)s filename could not be properly generated. Check to ensure there " -"is sufficient metadata." +msgid "%(noFiles)s %(filetypes)s failed to download" msgstr "" -#: rapid/rapid.py:1851 -#, python-format -msgid "" -"Source: %(source)s\n" -"Partially generated filename: %(newname)s\n" -"Destination: %(destination)s\n" -"Problem: %(problem)s" +#: rapid/rapid.py:2028 rapid/rapid.py:5627 +msgid "warnings" msgstr "" -#: rapid/rapid.py:1859 rapid/rapid.py:1864 rapid/rapid.py:1883 -#: rapid/rapid.py:2207 -#, python-format -msgid "" -"Source: %(source)s\n" -"Destination: %(destination)s" +#: rapid/rapid.py:2030 rapid/rapid.py:5631 +msgid "errors" msgstr "" -#: rapid/rapid.py:1861 +#: rapid/rapid.py:2057 #, python-format -msgid "Unique identifier '%s' added" +msgid "Source: %s\n" msgstr "" -#: rapid/rapid.py:1869 rapid/rapid.py:2270 +#: rapid/rapid.py:2059 #, python-format -msgid "Source: %(source)s" -msgstr "" - -#: rapid/rapid.py:1877 rapid/rapid.py:1882 -msgid "Download copying error" +msgid "Device: %s\n" msgstr "" -#: rapid/rapid.py:1878 +#: rapid/rapid.py:2060 #, python-format -msgid "" -"Source: %(source)s\n" -"Destination: %(destination)s\n" -"Error: %(errorno)s %(strerror)s" +msgid "Destination: %s" msgstr "" -#: rapid/rapid.py:1880 rapid/rapid.py:1885 -#, python-format -msgid "The %(filetype)s was not copied." +#: rapid/rapid.py:2061 rapid/rapid.py:2064 +msgid "Could not create temporary download directory" msgstr "" -#: rapid/rapid.py:1889 -msgid "Photos detected with the same filenames, but taken at different times:" +#: rapid/rapid.py:2064 +msgid "Error:" msgstr "" -#: rapid/rapid.py:1890 -#, python-format -msgid "" -"First photo: %(image1)s %(image1_date_time)s:%(image1_subseconds)s\n" -"Second photo: %(image2)s %(image2_date_time)s:%(image2_subseconds)s" +#: rapid/rapid.py:2088 +msgid "Backup path does not exist" msgstr "" -#: rapid/rapid.py:1914 rapid/rapid.py:1927 +#: rapid/rapid.py:2089 #, python-format -msgid "Could not open %(filetype)s" +msgid "The path %s could not be created" msgstr "" -#: rapid/rapid.py:1915 rapid/rapid.py:1928 -#, python-format -msgid "Source: %s" +#: rapid/rapid.py:2090 +msgid "No backups can occur" msgstr "" -#: rapid/rapid.py:1950 +#: rapid/rapid.py:2117 #, python-format -msgid "%(filetype)s has no metadata" +msgid "" +"Source: %(source)s\n" +"Destination: %(destination)s\n" +"%(problem)s" msgstr "" -#: rapid/rapid.py:1951 +#: rapid/rapid.py:2146 rapid/rapid.py:2492 rapid/rapid.py:2527 +#: rapid/rapid.py:2555 rapid/rapid.py:2586 rapid/rapid.py:2605 #, python-format msgid "" -"Metadata is essential for generating subfolder and/or file names.\n" -"Source: %s" +"Source: %(source)s\n" +"Destination: %(destination)s" msgstr "" -#: rapid/rapid.py:1962 -msgid "" -"Subfolder name could not be properly generated. Check to ensure there is " -"sufficient metadata." +#. hopefully inst will never be None, but just to be safe... +#: rapid/rapid.py:2161 +msgid "Please check your system and try again." +msgstr "" + +#: rapid/rapid.py:2181 +msgid "Photos detected with the same filenames, but taken at different times" msgstr "" -#: rapid/rapid.py:1963 +#: rapid/rapid.py:2221 +msgid "Photo has already been downloaded" +msgstr "" + +#: rapid/rapid.py:2222 rapid/rapid.py:2621 #, python-format -msgid "" -"Subfolder: %(subfolder)s\n" -"File: %(file)s\n" -"Problem: %(problem)s" +msgid "Source: %(source)s" msgstr "" #. A new day, according the user's preferences of what time a day begins, has started -#: rapid/rapid.py:2147 +#: rapid/rapid.py:2420 msgid "New day has started - resetting 'Downloads Today' sequence number" msgstr "" -#: rapid/rapid.py:2206 +#: rapid/rapid.py:2491 #, python-format msgid "Backup of %(file_type)s already exists" msgstr "" -#: rapid/rapid.py:2210 +#: rapid/rapid.py:2495 #, python-format msgid "Backup %(file_type)s overwritten" msgstr "" -#: rapid/rapid.py:2215 +#: rapid/rapid.py:2499 #, python-format msgid "%(file_type)s not backed up to %(volume)s" msgstr "" -#: rapid/rapid.py:2217 +#: rapid/rapid.py:2501 #, python-format msgid "%(file_type)s not backed up" msgstr "" -#: rapid/rapid.py:2243 rapid/rapid.py:2260 +#: rapid/rapid.py:2524 rapid/rapid.py:2552 rapid/rapid.py:2585 +#: rapid/rapid.py:2604 msgid "Backing up error" msgstr "" -#: rapid/rapid.py:2244 +#: rapid/rapid.py:2525 rapid/rapid.py:2553 #, python-format msgid "Destination directory could not be created: %(directory)s\n" msgstr "" -#: rapid/rapid.py:2246 -#, python-format -msgid "" -"Source: %(source)s\n" -"Destination: %(destination)s\n" -msgstr "" - -#: rapid/rapid.py:2248 +#: rapid/rapid.py:2529 rapid/rapid.py:2588 #, python-format -msgid "Error: %(errno)s %(strerror)s" +msgid "Error: %(inst)s" msgstr "" -#: rapid/rapid.py:2249 rapid/rapid.py:2263 +#: rapid/rapid.py:2530 rapid/rapid.py:2558 rapid/rapid.py:2589 +#: rapid/rapid.py:2608 #, python-format msgid "The %(file_type)s was not backed up." msgstr "" -#: rapid/rapid.py:2261 +#: rapid/rapid.py:2557 rapid/rapid.py:2607 #, python-format -msgid "" -"Source: %(source)s\n" -"Destination: %(destination)s\n" -"Error: %(errno)s %(strerror)s" +msgid "Error: %(errno)s %(strerror)s" msgstr "" -#: rapid/rapid.py:2269 +#: rapid/rapid.py:2620 #, python-format msgid "%(file_type)s could not be backed up" msgstr "" -#: rapid/rapid.py:2272 +#: rapid/rapid.py:2623 msgid "No suitable backup volume was found" msgstr "" -#: rapid/rapid.py:2274 +#: rapid/rapid.py:2625 msgid "A backup location was not found" msgstr "" -#. This message informs the user that the device (e.g. camera, hard drive or memory card) was automatically unmounted and they can now remove it -#: rapid/rapid.py:2288 -msgid "The device can now be safely removed" -msgstr "" - -#: rapid/rapid.py:2294 -#, python-format -msgid "%(noFiles)s %(filetypes)s downloaded" -msgstr "" - -#: rapid/rapid.py:2297 -#, python-format -msgid "%(noFiles)s %(filetypes)s skipped" -msgstr "" - -#: rapid/rapid.py:2303 rapid/rapid.py:4027 -msgid "warnings" -msgstr "" - -#: rapid/rapid.py:2305 rapid/rapid.py:4029 -msgid "errors" -msgstr "" - -#: rapid/rapid.py:2331 rapid/rapid.py:2823 rapid/rapid.py:2838 -msgid "Photo thumbnail could not be extracted" -msgstr "" - -#: rapid/rapid.py:2358 -#, python-format -msgid "Source: %s\n" -msgstr "" - -#: rapid/rapid.py:2360 -#, python-format -msgid "Device: %s\n" -msgstr "" - -#: rapid/rapid.py:2361 -#, python-format -msgid "Destination: %s" -msgstr "" - -#: rapid/rapid.py:2362 rapid/rapid.py:2365 -msgid "Could not create temporary download directory" -msgstr "" - -#: rapid/rapid.py:2365 -msgid "Error:" -msgstr "" - -#: rapid/rapid.py:2382 +#: rapid/rapid.py:2679 #, python-format msgid "This device has no %(types_searched_for)s to download from." msgstr "" -#: rapid/rapid.py:2417 +#: rapid/rapid.py:2733 #, python-format msgid "Download has started from %s" msgstr "" -#: rapid/rapid.py:2434 -msgid "Backup path does not exist" -msgstr "" - -#: rapid/rapid.py:2435 +#: rapid/rapid.py:2736 #, python-format -msgid "The path %s could not be created" -msgstr "" - -#: rapid/rapid.py:2436 rapid/rapid.py:2444 -msgid "No backups can occur" -msgstr "" - -#: rapid/rapid.py:2442 -msgid "Backup device missing" -msgstr "" - -#: rapid/rapid.py:2443 -msgid "No backup device was automatically detected" -msgstr "" - -#: rapid/rapid.py:2534 rapid/rapid.py:3343 rapid/rapid.py:3345 -msgid "Photo" -msgstr "" - -#: rapid/rapid.py:2535 -msgid "Photo skipped" -msgstr "" - -#: rapid/rapid.py:2536 -msgid "Photo already exists" +msgid "Attempting to download %s files" msgstr "" -#: rapid/rapid.py:2542 rapid/rapid.py:3343 -msgid "Video" -msgstr "" - -#: rapid/rapid.py:2543 -msgid "Video skipped" -msgstr "" - -#: rapid/rapid.py:2544 -msgid "Video already exists" +#. reset the progress bar to update the status of this download attempt +#: rapid/rapid.py:2769 rapid/rapid.py:2836 +#, python-format +msgid "%(number)s of %(total)s %(filetypes)s" msgstr "" -#: rapid/rapid.py:2592 +#: rapid/rapid.py:2832 #, python-format -msgid "%(number)s of %(total)s %(filetypes)s" +msgid "%(number)s of %(total)s %(filetypes)s (%(remaining)s remaining)" msgstr "" -#: rapid/rapid.py:2607 rapid/rapid.py:2611 +#: rapid/rapid.py:2857 rapid/rapid.py:2861 msgid "Could not delete photo or video from device" msgstr "" -#: rapid/rapid.py:2608 +#: rapid/rapid.py:2858 #, python-format msgid "" "Photo: %(source)s\n" "Error: %(errno)s %(strerror)s" msgstr "" -#: rapid/rapid.py:2612 +#: rapid/rapid.py:2862 #, python-format msgid "Photo: %(source)s" msgstr "" -#: rapid/rapid.py:2614 +#: rapid/rapid.py:2864 #, python-format msgid "Deleted %(number)i %(filetypes)s from device" msgstr "" -#: rapid/rapid.py:2624 +#: rapid/rapid.py:2871 #, python-format msgid "Download complete from %s" msgstr "" #. Device refers to a thing like a camera, memory card in its reader, external hard drive, Portable Storage Device, etc. -#: rapid/rapid.py:2700 +#: rapid/rapid.py:2993 rapid/rapid.py:3466 msgid "Device" msgstr "" #. Size refers to the total size of images on the device, typically in MB or GB -#: rapid/rapid.py:2705 +#: rapid/rapid.py:2998 rapid/rapid.py:3455 msgid "Size" msgstr "" -#: rapid/rapid.py:2708 +#: rapid/rapid.py:3001 msgid "Download Progress" msgstr "" -#: rapid/rapid.py:2824 rapid/rapid.py:2839 -msgid "It may be corrupted" +#: rapid/rapid.py:3089 +msgid "Downloading From Cameras" +msgstr "" + +#: rapid/rapid.py:3095 +msgid "Downloading directly from a camera may work poorly or not at all" +msgstr "" + +#: rapid/rapid.py:3096 +msgid "" +"Downloading from a card reader always works and is generally much faster. It " +"is strongly recommended to use a card reader." +msgstr "" + +#: rapid/rapid.py:3110 +msgid "_Show this message again" msgstr "" -#: rapid/rapid.py:2869 +#: rapid/rapid.py:3145 msgid "Device Detected" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2878 +#: rapid/rapid.py:3154 msgid "" "Should this device or partition be used to download photos or videos from?" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2897 +#: rapid/rapid.py:3173 msgid "_Remember this choice" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2934 +#: rapid/rapid.py:3210 #, python-format msgid "%s selected for downloading from" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2937 +#: rapid/rapid.py:3213 msgid "This device or partition will always be used to download from" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2940 +#: rapid/rapid.py:3216 #, python-format msgid "%s rejected as a download device" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2943 +#: rapid/rapid.py:3219 msgid "This device or partition will never be used to download from" msgstr "" -#: rapid/rapid.py:2950 +#: rapid/rapid.py:3226 msgid "Remove all Job Codes?" msgstr "" -#: rapid/rapid.py:2967 +#: rapid/rapid.py:3243 msgid "Should all Job Codes be removed?" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:2995 +#: rapid/rapid.py:3271 msgid "Enter a Job Code" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:3013 -msgid "Enter a new job code, or select a previous one." +#: rapid/rapid.py:3290 +msgid "Enter a new Job Code, or select a previous one" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:3016 -msgid "Enter a new job code." +#: rapid/rapid.py:3293 +msgid "Enter a new Job Code" msgstr "" -#: rapid/rapid.py:3021 +#: rapid/rapid.py:3298 rapid/rapid.py:4417 msgid "Job Code:" msgstr "" -#: rapid/rapid.py:3068 +#: rapid/rapid.py:3345 msgid "Job Code entered" msgstr "" -#: rapid/rapid.py:3070 +#: rapid/rapid.py:3347 msgid "Job Code not entered" msgstr "" -#: rapid/rapid.py:3330 +#: rapid/rapid.py:3401 +msgid "Status" +msgstr "" + +#: rapid/rapid.py:3409 +msgid "Type" +msgstr "" + +#: rapid/rapid.py:3418 rapid/rapid.py:4808 rapid/rapid.py:4810 +msgid "Photo" +msgstr "" + +#: rapid/rapid.py:3420 +msgid "File" +msgstr "" + +#: rapid/rapid.py:3435 +msgid "Job Code" +msgstr "" + +#: rapid/rapid.py:3445 +msgid "Date" +msgstr "" + +#: rapid/rapid.py:3477 rapid/renamesubfolderprefs.py:194 +msgid "Filename" +msgstr "" + +#: rapid/rapid.py:3488 +msgid "Path" +msgstr "" + +#: rapid/rapid.py:3843 +#, python-format +msgid "%(filetype)s was downloaded successfully" +msgstr "" + +#: rapid/rapid.py:3845 +#, python-format +msgid "%(filetype)s was not downloaded" +msgstr "" + +#: rapid/rapid.py:3847 +#, python-format +msgid "%(filetype)s was downloaded with warnings" +msgstr "" + +#: rapid/rapid.py:3849 +#, python-format +msgid "%(filetype)s was downloaded but there were problems backing up" +msgstr "" + +#: rapid/rapid.py:3851 +#, python-format +msgid "%(filetype)s was neither downloaded nor backed up" +msgstr "" + +#: rapid/rapid.py:3853 +#, python-format +msgid "%(filetype)s is ready to be downloaded" +msgstr "" + +#: rapid/rapid.py:3855 +#, python-format +msgid "%(filetype)s is about to be downloaded" +msgstr "" + +#: rapid/rapid.py:3857 +#, python-format +msgid "%(filetype)s will be downloaded with warnings" +msgstr "" + +#: rapid/rapid.py:3859 +#, python-format +msgid "%(filetype)s cannot be downloaded" +msgstr "" + +#: rapid/rapid.py:4240 +msgid "Preview" +msgstr "" + +#: rapid/rapid.py:4439 +msgid "Enter a new Job Code and press Enter, or select an existing Job Code" +msgstr "" + +#: rapid/rapid.py:4795 #, python-format msgid "" "Sorry, this device location does not exist:\n" @@ -708,111 +731,120 @@ msgid "" "Please resolve the problem, or modify your preferences." msgstr "" -#: rapid/rapid.py:3334 +#: rapid/rapid.py:4799 msgid "Problem with Device Location Folder" msgstr "" -#: rapid/rapid.py:3350 +#: rapid/rapid.py:4808 +msgid "Video" +msgstr "" + +#: rapid/rapid.py:4815 #, python-format msgid "The %(file_type)s Download Folder does not exist.\n" msgstr "" -#: rapid/rapid.py:3359 +#: rapid/rapid.py:4824 #, python-format msgid "The %(file_type)s Download Folder exists but cannot be written to.\n" msgstr "" -#: rapid/rapid.py:3364 +#: rapid/rapid.py:4829 msgid "" "Sorry, problems were encountered with your download folders. Please fix the " "problems or modify the preferences.\n" "\n" msgstr "" -#: rapid/rapid.py:3367 +#: rapid/rapid.py:4832 msgid "Problem with Download Folder" msgstr "" -#: rapid/rapid.py:3369 +#: rapid/rapid.py:4834 msgid "Problem with Download Folders" msgstr "" -#: rapid/rapid.py:3382 +#: rapid/rapid.py:4847 msgid "Some preferences will be reset." msgstr "" -#: rapid/rapid.py:3416 +#: rapid/rapid.py:4880 +msgid "Displaying warning about downloading directly from camera" +msgstr "" + +#: rapid/rapid.py:4890 #, python-format msgid "Prompting whether to use %s" msgstr "" -#: rapid/rapid.py:3444 +#: rapid/rapid.py:4917 msgid "Prompting for Job Code" msgstr "" -#: rapid/rapid.py:3448 +#: rapid/rapid.py:4921 msgid "Already prompting for Job Code, do not prompt again" msgstr "" -#: rapid/rapid.py:3463 -msgid "Starting downloads that have been waiting for a Job Code" +#: rapid/rapid.py:4938 +msgid "Starting downloads" msgstr "" -#: rapid/rapid.py:3467 -msgid "Starting downloads" +#. autostart is true +#: rapid/rapid.py:4942 +msgid "Starting downloads that have been waiting for a Job Code" msgstr "" -#: rapid/rapid.py:3482 +#: rapid/rapid.py:4984 #, python-format msgid "Creating photo download folder %(folder)s" msgstr "" -#: rapid/rapid.py:3487 +#: rapid/rapid.py:4989 #, python-format msgid "Failed to create default photo download folder %(folder)s" msgstr "" -#: rapid/rapid.py:3491 +#: rapid/rapid.py:4993 #, python-format msgid "Creating video download folder %(folder)s" msgstr "" -#: rapid/rapid.py:3496 +#: rapid/rapid.py:4998 #, python-format msgid "Failed to create default video download folder %(folder)s" msgstr "" -#: rapid/rapid.py:3521 +#: rapid/rapid.py:5023 msgid "" "A newer version of this program was previously run on this computer.\n" "\n" msgstr "" -#: rapid/rapid.py:3523 +#: rapid/rapid.py:5025 msgid "" "Program preferences appear to be valid, but please check them to ensure " "correct operation." msgstr "" -#: rapid/rapid.py:3525 +#: rapid/rapid.py:5027 msgid "Sorry, some preferences are invalid and will be reset." msgstr "" -#: rapid/rapid.py:3526 +#: rapid/rapid.py:5028 msgid "Warning:" msgstr "" -#: rapid/rapid.py:3531 +#: rapid/rapid.py:5033 msgid "" "This version of the program is newer than the previously run version. " "Checking preferences." msgstr "" -#: rapid/rapid.py:3538 +#: rapid/rapid.py:5040 msgid "Preferences were modified." msgstr "" -#: rapid/rapid.py:3539 +#: rapid/rapid.py:5041 msgid "" "This version of the program uses different preferences than the old version. " "Your preferences have been updated.\n" @@ -820,590 +852,572 @@ msgid "" "Please check them to ensure correct operation." msgstr "" -#: rapid/rapid.py:3543 +#: rapid/rapid.py:5045 msgid "No preferences needed to be changed." msgstr "" -#: rapid/rapid.py:3545 +#: rapid/rapid.py:5047 msgid "" "This version of the program uses different preferences than the old version. " "Some of your previous preferences were invalid, and could not be updated. " "They will be reset." msgstr "" -#: rapid/rapid.py:3555 +#: rapid/rapid.py:5057 msgid "Problem using pynotify." msgstr "" -#: rapid/rapid.py:3571 +#: rapid/rapid.py:5073 msgid "Failed to receive pynotify server capabilities." msgstr "" -#: rapid/rapid.py:3580 +#: rapid/rapid.py:5084 msgid "" "Warning: desktop environment notification server is incorrectly configured." msgstr "" -#: rapid/rapid.py:3626 +#: rapid/rapid.py:5132 msgid "and" msgstr "" -#: rapid/rapid.py:3631 +#: rapid/rapid.py:5137 msgid "Using backup devices" msgstr "" -#: rapid/rapid.py:3633 +#: rapid/rapid.py:5139 msgid "Using backup device" msgstr "" -#: rapid/rapid.py:3635 +#: rapid/rapid.py:5141 msgid "No backup devices detected" msgstr "" -#: rapid/rapid.py:3674 rapid/rapid.py:3831 +#: rapid/rapid.py:5188 rapid/rapid.py:5350 #, python-format msgid "Device %(device)s (%(path)s) ignored" msgstr "" -#: rapid/rapid.py:3790 +#: rapid/rapid.py:5309 #, python-format msgid "Detected %(device)s with path %(path)s" msgstr "" -#: rapid/rapid.py:3794 +#: rapid/rapid.py:5313 msgid "Automatically start download is true" msgstr "" -#: rapid/rapid.py:3796 +#: rapid/rapid.py:5315 msgid "Automatically start download is false" msgstr "" -#: rapid/rapid.py:3849 +#: rapid/rapid.py:5368 msgid "Using manually specified path" msgstr "" -#: rapid/rapid.py:3857 +#: rapid/rapid.py:5376 rapid/rapid.py:5417 #, python-format msgid "Backing up to %(path)s" msgstr "" -#: rapid/rapid.py:3968 rapid/rapid.py:4017 +#. the user is trying to backup to a device that is currently being downloaded from..... we don't normally allow that, but what to do? +#: rapid/rapid.py:5441 +#, python-format +msgid "Warning: backup device %(device)s is currently being downloaded from" +msgstr "" + +#: rapid/rapid.py:5458 +msgid "D_ownload Selected" +msgstr "" + +#: rapid/rapid.py:5550 rapid/rapid.py:5599 msgid "All downloads complete" msgstr "" -#: rapid/rapid.py:3982 +#: rapid/rapid.py:5564 msgid "MB/s" msgstr "" -#: rapid/rapid.py:3992 +#: rapid/rapid.py:5574 msgid "About 1 second remaining" msgstr "" -#: rapid/rapid.py:3994 +#: rapid/rapid.py:5576 #, python-format msgid "About %i seconds remaining" msgstr "" -#: rapid/rapid.py:3996 +#: rapid/rapid.py:5578 msgid "About 1 minute remaining" msgstr "" #. Translators: in the text '%(minutes)i:%(seconds)02i', only the : should be translated, if needed. #. '%(minutes)i' and '%(seconds)02i' should not be modified or left out. They are used to format and display the amount #. of time the download has remainging, e.g. 'About 5:36 minutes remaining' -#: rapid/rapid.py:4001 +#: rapid/rapid.py:5583 #, python-format msgid "About %(minutes)i:%(seconds)02i minutes remaining" msgstr "" -#: rapid/rapid.py:4019 -msgid "photos downloaded" +#: rapid/rapid.py:5602 rapid/rapid.py:5608 rapid/rapid.py:5614 +#: rapid/rapid.py:5620 rapid/rapid.py:5625 rapid/rapid.py:5629 +#, python-format +msgid "%(number)s %(numberdownloaded)s" msgstr "" -#: rapid/rapid.py:4021 -msgid "photos skipped" +#: rapid/rapid.py:5604 rapid/rapid.py:5616 +#, python-format +msgid "%(filetype)s downloaded" msgstr "" -#: rapid/rapid.py:4023 -msgid "videos downloaded" +#: rapid/rapid.py:5610 rapid/rapid.py:5622 +#, python-format +msgid "%(filetype)s failed to download" msgstr "" -#: rapid/rapid.py:4025 -msgid "videos skipped" +#: rapid/rapid.py:5789 +msgid "_Resume" msgstr "" -#. This text will be displayed to the user on the Download / Pause button. -#. Please note the space at the end of the label - it is needed to meet the Gnome Human Interface Guidelines -#: rapid/rapid.py:4125 -msgid "_Download " +#: rapid/rapid.py:5792 +msgid "_Download All" msgstr "" #. This text will be displayed to the user on the Download / Pause button. -#: rapid/rapid.py:4135 +#: rapid/rapid.py:5801 msgid "_Pause" msgstr "" -#: rapid/rapid.py:4209 -msgid "Preferences were changed." +#: rapid/rapid.py:5914 +msgid "Download device settings preferences were changed." +msgstr "" + +#: rapid/rapid.py:5926 +msgid "Backup preferences were changed." +msgstr "" + +#: rapid/rapid.py:5932 +msgid "Subfolder and filename preferences were changed." +msgstr "" + +#: rapid/rapid.py:5943 +msgid "Download folder preferences were changed." msgstr "" -#: rapid/rapid.py:4407 +#: rapid/rapid.py:6141 msgid "Goodbye" msgstr "" #. Translators: this text is displayed to the user when they request information on the command line options. #. The text %default should not be modified or left out. -#: rapid/rapid.py:4418 +#: rapid/rapid.py:6152 #, python-format msgid "" "display program information on the command line as the program runs " "(default: %default)" msgstr "" -#: rapid/rapid.py:4419 +#: rapid/rapid.py:6153 msgid "only output errors to the command line" msgstr "" #. image file extensions are recognized RAW files plus TIFF and JPG -#: rapid/rapid.py:4421 +#: rapid/rapid.py:6155 msgid "list photo and video file extensions the program recognizes and exit" msgstr "" -#: rapid/rapid.py:4422 +#: rapid/rapid.py:6156 msgid "reset all program settings and preferences and exit" msgstr "" -#: rapid/rapid.py:4431 +#: rapid/rapid.py:6165 msgid "Photos:" msgstr "" -#: rapid/rapid.py:4431 +#: rapid/rapid.py:6165 msgid "Videos:" msgstr "" -#: rapid/rapid.py:4436 +#: rapid/rapid.py:6170 #, python-format msgid "and %s" msgstr "" -#: rapid/rapid.py:4444 +#: rapid/rapid.py:6178 msgid "All settings and preferences have been reset" msgstr "" #. Which volume management code is being used (GIO or GnomeVFS) -#: rapid/rapid.py:4448 rapid/rapid.py:4449 rapid/rapid.py:4451 -#: rapid/rapid.py:4456 rapid/rapid.py:4460 +#: rapid/rapid.py:6182 rapid/rapid.py:6183 rapid/rapid.py:6185 +#: rapid/rapid.py:6190 rapid/rapid.py:6194 msgid "Using" msgstr "" -#: rapid/rapid.py:4453 +#: rapid/rapid.py:6187 msgid "\n" msgstr "" #. this application is already running -#: rapid/rapid.py:4477 +#: rapid/rapid.py:6211 #, python-format msgid "%s is already running" msgstr "" -#: rapid/renamesubfolderprefs.py:190 +#: rapid/renamesubfolderprefs.py:192 msgid "Date time" msgstr "" -#: rapid/renamesubfolderprefs.py:191 +#: rapid/renamesubfolderprefs.py:193 msgid "Text" msgstr "" -#: rapid/renamesubfolderprefs.py:192 -msgid "Filename" -msgstr "" - -#: rapid/renamesubfolderprefs.py:193 +#: rapid/renamesubfolderprefs.py:195 msgid "Metadata" msgstr "" -#: rapid/renamesubfolderprefs.py:194 +#: rapid/renamesubfolderprefs.py:196 msgid "Sequences" msgstr "" -#: rapid/renamesubfolderprefs.py:197 +#: rapid/renamesubfolderprefs.py:199 msgid "Image date" msgstr "" -#: rapid/renamesubfolderprefs.py:198 +#: rapid/renamesubfolderprefs.py:200 msgid "Video date" msgstr "" -#: rapid/renamesubfolderprefs.py:199 +#: rapid/renamesubfolderprefs.py:201 msgid "Today" msgstr "" -#: rapid/renamesubfolderprefs.py:200 +#: rapid/renamesubfolderprefs.py:202 msgid "Yesterday" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:202 +#: rapid/renamesubfolderprefs.py:204 msgid "Name + extension" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:204 +#: rapid/renamesubfolderprefs.py:206 msgid "Name" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:206 +#: rapid/renamesubfolderprefs.py:208 msgid "Extension" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:208 +#: rapid/renamesubfolderprefs.py:210 msgid "Image number" msgstr "" -#: rapid/renamesubfolderprefs.py:209 +#: rapid/renamesubfolderprefs.py:211 msgid "Video number" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:211 +#: rapid/renamesubfolderprefs.py:213 msgid "Aperture" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:213 +#: rapid/renamesubfolderprefs.py:215 msgid "ISO" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:215 +#: rapid/renamesubfolderprefs.py:217 msgid "Exposure time" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:217 +#: rapid/renamesubfolderprefs.py:219 msgid "Focal length" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:219 +#: rapid/renamesubfolderprefs.py:221 msgid "Camera make" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:221 +#: rapid/renamesubfolderprefs.py:223 msgid "Camera model" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:223 +#: rapid/renamesubfolderprefs.py:225 msgid "Short camera model" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:225 +#: rapid/renamesubfolderprefs.py:227 msgid "Hyphenated short camera model" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:227 +#: rapid/renamesubfolderprefs.py:229 msgid "Serial number" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:229 +#: rapid/renamesubfolderprefs.py:231 msgid "Shutter count" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:231 +#: rapid/renamesubfolderprefs.py:233 msgid "Owner name" msgstr "" -#: rapid/renamesubfolderprefs.py:232 +#: rapid/renamesubfolderprefs.py:234 msgid "Codec" msgstr "" -#: rapid/renamesubfolderprefs.py:233 +#: rapid/renamesubfolderprefs.py:235 msgid "Width" msgstr "" -#: rapid/renamesubfolderprefs.py:234 +#: rapid/renamesubfolderprefs.py:236 msgid "Height" msgstr "" -#: rapid/renamesubfolderprefs.py:235 +#: rapid/renamesubfolderprefs.py:237 msgid "Length" msgstr "" -#: rapid/renamesubfolderprefs.py:236 +#: rapid/renamesubfolderprefs.py:238 msgid "Frames Per Second" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:238 +#: rapid/renamesubfolderprefs.py:240 msgid "Downloads today" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:240 +#: rapid/renamesubfolderprefs.py:242 msgid "Session number" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:242 +#: rapid/renamesubfolderprefs.py:244 msgid "Subfolder number" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:244 +#: rapid/renamesubfolderprefs.py:246 msgid "Stored number" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequenceletters -#: rapid/renamesubfolderprefs.py:246 +#: rapid/renamesubfolderprefs.py:248 msgid "Sequence letter" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:248 +#: rapid/renamesubfolderprefs.py:250 msgid "All digits" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:250 +#: rapid/renamesubfolderprefs.py:252 msgid "Last digit" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:252 +#: rapid/renamesubfolderprefs.py:254 msgid "Last 2 digits" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:254 +#: rapid/renamesubfolderprefs.py:256 msgid "Last 3 digits" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:256 +#: rapid/renamesubfolderprefs.py:258 msgid "Last 4 digits" msgstr "" #. Translators: please not the capitalization of this text, and keep it the same if your language features capitalization -#: rapid/renamesubfolderprefs.py:258 +#: rapid/renamesubfolderprefs.py:260 msgid "Original Case" msgstr "" #. Translators: please not the capitalization of this text, and keep it the same if your language features capitalization -#: rapid/renamesubfolderprefs.py:260 +#: rapid/renamesubfolderprefs.py:262 msgid "UPPERCASE" msgstr "" #. Translators: please not the capitalization of this text, and keep it the same if your language features capitalization -#: rapid/renamesubfolderprefs.py:262 +#: rapid/renamesubfolderprefs.py:264 msgid "lowercase" msgstr "" -#: rapid/renamesubfolderprefs.py:263 +#: rapid/renamesubfolderprefs.py:265 msgid "One digit" msgstr "" -#: rapid/renamesubfolderprefs.py:264 +#: rapid/renamesubfolderprefs.py:266 msgid "Two digits" msgstr "" -#: rapid/renamesubfolderprefs.py:265 +#: rapid/renamesubfolderprefs.py:267 msgid "Three digits" msgstr "" -#: rapid/renamesubfolderprefs.py:266 +#: rapid/renamesubfolderprefs.py:268 msgid "Four digits" msgstr "" -#: rapid/renamesubfolderprefs.py:267 +#: rapid/renamesubfolderprefs.py:269 msgid "Five digits" msgstr "" -#: rapid/renamesubfolderprefs.py:268 +#: rapid/renamesubfolderprefs.py:270 msgid "Six digits" msgstr "" -#: rapid/renamesubfolderprefs.py:269 +#: rapid/renamesubfolderprefs.py:271 msgid "Seven digits" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:271 +#: rapid/renamesubfolderprefs.py:273 msgid "Subseconds" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:273 +#: rapid/renamesubfolderprefs.py:275 msgid "YYYYMMDD" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:275 +#: rapid/renamesubfolderprefs.py:277 msgid "YYYY-MM-DD" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:277 +#: rapid/renamesubfolderprefs.py:279 msgid "YYMMDD" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:279 +#: rapid/renamesubfolderprefs.py:281 msgid "YY-MM-DD" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:281 +#: rapid/renamesubfolderprefs.py:283 msgid "MMDDYYYY" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:283 +#: rapid/renamesubfolderprefs.py:285 msgid "MMDDYY" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:285 +#: rapid/renamesubfolderprefs.py:287 msgid "MMDD" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:287 +#: rapid/renamesubfolderprefs.py:289 msgid "DDMMYYYY" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:289 +#: rapid/renamesubfolderprefs.py:291 msgid "DDMMYY" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:291 +#: rapid/renamesubfolderprefs.py:293 msgid "YYYY" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:293 +#: rapid/renamesubfolderprefs.py:295 msgid "YY" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:295 +#: rapid/renamesubfolderprefs.py:297 msgid "MM" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:297 +#: rapid/renamesubfolderprefs.py:299 msgid "DD" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:299 +#: rapid/renamesubfolderprefs.py:301 msgid "HHMMSS" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:301 +#: rapid/renamesubfolderprefs.py:303 msgid "HHMM" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:303 +#: rapid/renamesubfolderprefs.py:305 msgid "HH-MM-SS" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:305 +#: rapid/renamesubfolderprefs.py:307 msgid "HH-MM" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:307 +#: rapid/renamesubfolderprefs.py:309 msgid "HH" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:309 +#: rapid/renamesubfolderprefs.py:311 msgid "MM (minutes)" msgstr "" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:311 +#: rapid/renamesubfolderprefs.py:313 msgid "SS" msgstr "" -#: rapid/renamesubfolderprefs.py:794 +#: rapid/renamesubfolderprefs.py:796 #, python-format msgid "" "Preference key '%(key)s' is invalid.\n" "Expected one of %(value)s" msgstr "" -#: rapid/renamesubfolderprefs.py:801 +#: rapid/renamesubfolderprefs.py:803 #, python-format msgid "Preference value '%(value)s' is invalid" msgstr "" -#: rapid/renamesubfolderprefs.py:805 +#: rapid/renamesubfolderprefs.py:807 msgid "These preferences are not well formed:" msgstr "" -#: rapid/renamesubfolderprefs.py:934 -msgid "Subsecond metadata not present in photo" -msgstr "" - -#: rapid/renamesubfolderprefs.py:941 -#, python-format -msgid "%s metadata is not present" -msgstr "" - -#: rapid/renamesubfolderprefs.py:960 rapid/renamesubfolderprefs.py:968 -#: rapid/renamesubfolderprefs.py:977 -#, python-format -msgid "Error in date time component. Value %s appears invalid" -msgstr "" - -#: rapid/renamesubfolderprefs.py:1004 -msgid "extension was specified but filename does not have an extension" -msgstr "" - -#: rapid/renamesubfolderprefs.py:1008 -msgid "image or video number was specified but filename has no number" -msgstr "" - -#: rapid/renamesubfolderprefs.py:1081 -#, python-format -msgid "%s metadata is not present in photo" -msgstr "" - -#: rapid/renamesubfolderprefs.py:1194 -#, python-format -msgid "error generating name with component %s" -msgstr "" - -#: rapid/renamesubfolderprefs.py:1450 -#, python-format -msgid "%s metadata is not present in video" -msgstr "" - -#: rapid/renamesubfolderprefs.py:1546 +#: rapid/renamesubfolderprefs.py:1517 #, python-format msgid "Subfolder preferences should not start with a %s" msgstr "" -#: rapid/renamesubfolderprefs.py:1548 +#: rapid/renamesubfolderprefs.py:1519 #, python-format msgid "Subfolder preferences should not end with a %s" msgstr "" -#: rapid/renamesubfolderprefs.py:1552 +#: rapid/renamesubfolderprefs.py:1523 #, python-format msgid "Subfolder preferences should not contain two %s one after the other" msgstr "" @@ -1453,151 +1467,142 @@ msgid "Job Codes" msgstr "" #: rapid/glade3/rapid.glade.h:12 -msgid "Missing Backup Devices" -msgstr "" - -#: rapid/glade3/rapid.glade.h:13 msgid "Photo Rename" msgstr "" -#: rapid/glade3/rapid.glade.h:14 +#: rapid/glade3/rapid.glade.h:13 msgid "Photo and Video Name Conflicts" msgstr "" -#: rapid/glade3/rapid.glade.h:15 +#: rapid/glade3/rapid.glade.h:14 msgid "Program Automation" msgstr "" -#: rapid/glade3/rapid.glade.h:16 +#: rapid/glade3/rapid.glade.h:15 msgid "Sequence Numbers" msgstr "" -#: rapid/glade3/rapid.glade.h:17 +#: rapid/glade3/rapid.glade.h:16 msgid "/media/externaldrive/Photos" msgstr "" -#: rapid/glade3/rapid.glade.h:18 +#: rapid/glade3/rapid.glade.h:17 msgid "Example: /home/user/Pictures" msgstr "" -#: rapid/glade3/rapid.glade.h:19 +#: rapid/glade3/rapid.glade.h:18 msgid "Example:" msgstr "" -#: rapid/glade3/rapid.glade.h:20 +#: rapid/glade3/rapid.glade.h:19 msgid "New:" msgstr "" -#: rapid/glade3/rapid.glade.h:21 +#: rapid/glade3/rapid.glade.h:20 msgid "Original:" msgstr "" -#: rapid/glade3/rapid.glade.h:22 +#: rapid/glade3/rapid.glade.h:21 msgid "Automation" msgstr "" -#: rapid/glade3/rapid.glade.h:23 +#: rapid/glade3/rapid.glade.h:22 msgid "Backup\t" msgstr "" -#: rapid/glade3/rapid.glade.h:24 +#: rapid/glade3/rapid.glade.h:23 msgid "Devices" msgstr "" -#: rapid/glade3/rapid.glade.h:25 +#: rapid/glade3/rapid.glade.h:24 msgid "Error Handling" msgstr "" -#: rapid/glade3/rapid.glade.h:26 +#: rapid/glade3/rapid.glade.h:25 msgid "Job Codes" msgstr "" -#: rapid/glade3/rapid.glade.h:27 +#: rapid/glade3/rapid.glade.h:26 msgid "Photo Download Folders" msgstr "" -#: rapid/glade3/rapid.glade.h:28 +#: rapid/glade3/rapid.glade.h:27 msgid "Photo Rename\t" msgstr "" -#: rapid/glade3/rapid.glade.h:29 +#: rapid/glade3/rapid.glade.h:28 msgid "Rename Options" msgstr "" -#: rapid/glade3/rapid.glade.h:30 +#: rapid/glade3/rapid.glade.h:29 msgid "Video Download Folders" msgstr "" -#: rapid/glade3/rapid.glade.h:31 +#: rapid/glade3/rapid.glade.h:30 msgid "Video Rename\t" msgstr "" -#: rapid/glade3/rapid.glade.h:32 +#: rapid/glade3/rapid.glade.h:31 msgid "Add unique identifier" msgstr "" -#: rapid/glade3/rapid.glade.h:33 +#: rapid/glade3/rapid.glade.h:32 msgid "Automatically detect Portable Storage Devices" msgstr "" -#: rapid/glade3/rapid.glade.h:34 +#: rapid/glade3/rapid.glade.h:33 msgid "Automatically detect backup devices" msgstr "" -#: rapid/glade3/rapid.glade.h:35 +#: rapid/glade3/rapid.glade.h:34 msgid "Automatically detect devices" msgstr "" -#: rapid/glade3/rapid.glade.h:36 +#: rapid/glade3/rapid.glade.h:35 msgid "Automation" msgstr "" -#: rapid/glade3/rapid.glade.h:37 +#: rapid/glade3/rapid.glade.h:36 msgid "Backup" msgstr "" -#: rapid/glade3/rapid.glade.h:38 +#: rapid/glade3/rapid.glade.h:37 msgid "Backup location:" msgstr "" -#: rapid/glade3/rapid.glade.h:39 +#: rapid/glade3/rapid.glade.h:38 msgid "Backup photos and videos when downloading" msgstr "" -#: rapid/glade3/rapid.glade.h:40 +#: rapid/glade3/rapid.glade.h:39 msgid "" "Choose the download folder. Subfolders for the downloaded photos will be " "automatically created in this folder using the structure specified below." msgstr "" -#: rapid/glade3/rapid.glade.h:41 +#: rapid/glade3/rapid.glade.h:40 msgid "" "Choose the download folder. Subfolders for the downloaded videos will be " "automatically created in this folder using the structure specified below." msgstr "" -#: rapid/glade3/rapid.glade.h:42 -msgid "" -"Choose whether to skip downloading the file, or to add a unique indentifier." -msgstr "" - -#: rapid/glade3/rapid.glade.h:43 +#: rapid/glade3/rapid.glade.h:41 msgid "Copyright Damon Lynch 2007-10" msgstr "" -#: rapid/glade3/rapid.glade.h:44 +#: rapid/glade3/rapid.glade.h:42 msgid "Day start:" msgstr "" -#: rapid/glade3/rapid.glade.h:45 +#: rapid/glade3/rapid.glade.h:43 msgid "Delete photos and videos from device upon download completion" msgstr "" -#: rapid/glade3/rapid.glade.h:46 +#: rapid/glade3/rapid.glade.h:44 msgid "Devices" msgstr "" -#: rapid/glade3/rapid.glade.h:47 +#: rapid/glade3/rapid.glade.h:45 msgid "" "Devices are from where to download photos and videos, such as cameras, " "memory cards or Portable Storage Devices.\n" @@ -1610,88 +1615,92 @@ msgid "" "reader." msgstr "" -#: rapid/glade3/rapid.glade.h:52 +#: rapid/glade3/rapid.glade.h:50 msgid "Download / Pause" msgstr "" -#: rapid/glade3/rapid.glade.h:53 +#: rapid/glade3/rapid.glade.h:51 msgid "Download folder:" msgstr "" -#: rapid/glade3/rapid.glade.h:54 +#: rapid/glade3/rapid.glade.h:52 msgid "Downloads today:" msgstr "" -#: rapid/glade3/rapid.glade.h:55 +#: rapid/glade3/rapid.glade.h:53 msgid "Error Handling" msgstr "" -#: rapid/glade3/rapid.glade.h:56 +#: rapid/glade3/rapid.glade.h:54 msgid "Error Log" msgstr "" -#: rapid/glade3/rapid.glade.h:57 +#: rapid/glade3/rapid.glade.h:55 msgid "Exit program if download completes without any warnings or errors" msgstr "" -#: rapid/glade3/rapid.glade.h:58 +#: rapid/glade3/rapid.glade.h:56 msgid "If you disable automatic detection, choose the exact backup location." msgstr "" -#: rapid/glade3/rapid.glade.h:59 +#: rapid/glade3/rapid.glade.h:57 msgid "" "If you disable automatic detection, choose the exact location of the images " "and videos." msgstr "" -#: rapid/glade3/rapid.glade.h:60 +#: rapid/glade3/rapid.glade.h:58 msgid "" "If you enable automatic detection of Portable Storage Devices, the entire " "device will be scanned for images. On large devices, this could take some " "time." msgstr "" -#: rapid/glade3/rapid.glade.h:61 -msgid "Ignore" -msgstr "" - -#: rapid/glade3/rapid.glade.h:62 +#: rapid/glade3/rapid.glade.h:59 msgid "Import your photos and videos efficiently and reliably" msgstr "" -#: rapid/glade3/rapid.glade.h:63 +#: rapid/glade3/rapid.glade.h:60 msgid "Job Codes" msgstr "" -#: rapid/glade3/rapid.glade.h:64 +#: rapid/glade3/rapid.glade.h:61 msgid "Location:" msgstr "" -#: rapid/glade3/rapid.glade.h:65 +#: rapid/glade3/rapid.glade.h:62 msgid "Overwrite" msgstr "" -#: rapid/glade3/rapid.glade.h:66 +#: rapid/glade3/rapid.glade.h:63 +msgid "P_review Columns" +msgstr "" + +#: rapid/glade3/rapid.glade.h:64 msgid "Photo Folders" msgstr "" -#: rapid/glade3/rapid.glade.h:67 +#: rapid/glade3/rapid.glade.h:65 msgid "Photo Rename" msgstr "" -#: rapid/glade3/rapid.glade.h:68 +#: rapid/glade3/rapid.glade.h:66 msgid "Photo backup folder name:" msgstr "" -#: rapid/glade3/rapid.glade.h:69 +#: rapid/glade3/rapid.glade.h:67 msgid "Preferences: Rapid Photo Downloader" msgstr "" -#: rapid/glade3/rapid.glade.h:71 +#: rapid/glade3/rapid.glade.h:68 +msgid "Preview _Folders" +msgstr "" + +#: rapid/glade3/rapid.glade.h:70 msgid "R_emove All" msgstr "" -#: rapid/glade3/rapid.glade.h:73 +#: rapid/glade3/rapid.glade.h:72 msgid "" "Rapid Photo Downloader is free software; you can redistribute it and/or " "modify it under the terms of the GNU General Public License as published by " @@ -1708,33 +1717,49 @@ msgid "" "51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." msgstr "" -#: rapid/glade3/rapid.glade.h:78 +#: rapid/glade3/rapid.glade.h:77 msgid "Rename Options" msgstr "" +#: rapid/glade3/rapid.glade.h:78 +msgid "Se_lect None" +msgstr "" + #: rapid/glade3/rapid.glade.h:79 -msgid "Report a warning" +msgid "Select All Pho_tos" msgstr "" #: rapid/glade3/rapid.glade.h:80 -msgid "Report an error" +msgid "Select All Vi_deos" msgstr "" #: rapid/glade3/rapid.glade.h:81 -msgid "Skip" +msgid "Select All Wit_h Job Code" msgstr "" #: rapid/glade3/rapid.glade.h:82 -msgid "Skip download" +msgid "Select All Without _Job Code" msgstr "" #: rapid/glade3/rapid.glade.h:83 +msgid "Select _All" +msgstr "" + +#: rapid/glade3/rapid.glade.h:84 +msgid "Skip" +msgstr "" + +#: rapid/glade3/rapid.glade.h:85 +msgid "Skip download" +msgstr "" + +#: rapid/glade3/rapid.glade.h:86 msgid "" "Sorry, video downloading functionality disabled. To download videos, please " "install the kaa metadata package for python." msgstr "" -#: rapid/glade3/rapid.glade.h:84 +#: rapid/glade3/rapid.glade.h:87 msgid "" "Specify the folder in which backups are stored on the device. \n" "\n" @@ -1743,116 +1768,136 @@ msgid "" "a folder in it with one of these names." msgstr "" -#: rapid/glade3/rapid.glade.h:87 +#: rapid/glade3/rapid.glade.h:90 msgid "" "Specify the time in 24 hour format at which the Downloads today " "sequence number should be reset." msgstr "" -#: rapid/glade3/rapid.glade.h:88 -msgid "" -"Specify what to do when a photo or video of the same name has already been " -"downloaded or backed up." -msgstr "" - -#: rapid/glade3/rapid.glade.h:89 -msgid "Specify what to do when there are no backup devices." -msgstr "" - -#: rapid/glade3/rapid.glade.h:90 +#: rapid/glade3/rapid.glade.h:91 msgid "" "Specify whether photo, video and folder names should have any characters " "removed that are not allowed by other operating systems." msgstr "" -#: rapid/glade3/rapid.glade.h:91 +#: rapid/glade3/rapid.glade.h:92 msgid "Start downloading at program startup" msgstr "" -#: rapid/glade3/rapid.glade.h:92 +#: rapid/glade3/rapid.glade.h:93 msgid "Start downloading upon device insertion" msgstr "" -#: rapid/glade3/rapid.glade.h:93 +#: rapid/glade3/rapid.glade.h:94 msgid "Stored number:" msgstr "" -#: rapid/glade3/rapid.glade.h:94 +#: rapid/glade3/rapid.glade.h:95 msgid "Strip incompatible characters" msgstr "" -#: rapid/glade3/rapid.glade.h:95 +#: rapid/glade3/rapid.glade.h:96 msgid "Synchronize RAW + JPEG sequence numbers" msgstr "" -#: rapid/glade3/rapid.glade.h:96 +#: rapid/glade3/rapid.glade.h:97 msgid "Unmount (\"eject\") device upon download completion" msgstr "" -#: rapid/glade3/rapid.glade.h:97 +#: rapid/glade3/rapid.glade.h:98 msgid "Video Folders" msgstr "" -#: rapid/glade3/rapid.glade.h:98 +#: rapid/glade3/rapid.glade.h:99 msgid "Video Rename" msgstr "" -#: rapid/glade3/rapid.glade.h:99 +#: rapid/glade3/rapid.glade.h:100 msgid "Video backup folder name:" msgstr "" -#: rapid/glade3/rapid.glade.h:100 +#: rapid/glade3/rapid.glade.h:101 +msgid "" +"When a photo or video of the same name has already been downloaded, choose " +"whether to skip downloading the file, or to add a unique indentifier." +msgstr "" + +#: rapid/glade3/rapid.glade.h:102 msgid "" "When backing up, choose whether to overwrite a file on the backup device " "that has the same name, or skip backing it up." msgstr "" -#: rapid/glade3/rapid.glade.h:101 +#: rapid/glade3/rapid.glade.h:103 msgid "" "You can have your photos and videos backed up to multiple locations as they " "are downloaded, e.g. external hard drives." msgstr "" -#: rapid/glade3/rapid.glade.h:102 +#: rapid/glade3/rapid.glade.h:104 msgid "_Add..." msgstr "" -#: rapid/glade3/rapid.glade.h:103 +#: rapid/glade3/rapid.glade.h:105 msgid "_Clear Completed Downloads" msgstr "" -#: rapid/glade3/rapid.glade.h:104 +#: rapid/glade3/rapid.glade.h:106 +msgid "_Device" +msgstr "" + +#: rapid/glade3/rapid.glade.h:107 msgid "_Error Log" msgstr "" -#: rapid/glade3/rapid.glade.h:105 +#: rapid/glade3/rapid.glade.h:108 +msgid "_File" +msgstr "" + +#: rapid/glade3/rapid.glade.h:109 +msgid "_Filename" +msgstr "" + +#: rapid/glade3/rapid.glade.h:110 msgid "_Get Help Online..." msgstr "" -#: rapid/glade3/rapid.glade.h:106 +#: rapid/glade3/rapid.glade.h:111 msgid "_Help" msgstr "" -#: rapid/glade3/rapid.glade.h:107 +#: rapid/glade3/rapid.glade.h:112 msgid "_Make a Donation..." msgstr "" -#: rapid/glade3/rapid.glade.h:108 -msgid "_Photos" +#: rapid/glade3/rapid.glade.h:113 +msgid "_Path" msgstr "" -#: rapid/glade3/rapid.glade.h:109 +#: rapid/glade3/rapid.glade.h:114 +msgid "_Preview" +msgstr "" + +#: rapid/glade3/rapid.glade.h:115 msgid "_Report a Problem..." msgstr "" -#: rapid/glade3/rapid.glade.h:110 -msgid "_Thumbnails" +#: rapid/glade3/rapid.glade.h:116 +msgid "_Select" msgstr "" -#: rapid/glade3/rapid.glade.h:111 +#: rapid/glade3/rapid.glade.h:117 +msgid "_Size" +msgstr "" + +#: rapid/glade3/rapid.glade.h:118 msgid "_Translate this Application..." msgstr "" -#: rapid/glade3/rapid.glade.h:112 +#: rapid/glade3/rapid.glade.h:119 +msgid "_Type" +msgstr "" + +#: rapid/glade3/rapid.glade.h:120 msgid "_View" msgstr "" diff --git a/po/ru.po b/po/ru.po index a2808f4..ca8e2c8 100644 --- a/po/ru.po +++ b/po/ru.po @@ -7,167 +7,167 @@ msgid "" msgstr "" "Project-Id-Version: rapid\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2010-05-27 22:33-0500\n" -"PO-Revision-Date: 2010-06-07 20:27+0000\n" -"Last-Translator: Damon Lynch \n" +"POT-Creation-Date: 2010-07-02 22:51-0500\n" +"PO-Revision-Date: 2010-07-07 04:14+0000\n" +"Last-Translator: Sergey Sedov \n" "Language-Team: Russian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-06-08 20:56+0000\n" +"X-Launchpad-Export-Date: 2010-07-09 17:32+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Translators: if neccessary, for guidance in how to translate this program, you may see http://damonlynch.net/translate.html -#: rapid/rapid.py:104 rapid/rapid.py:4447 rapid/glade3/rapid.glade.h:72 +#: rapid/rapid.py:122 rapid/rapid.py:6181 rapid/glade3/rapid.glade.h:71 msgid "Rapid Photo Downloader" msgstr "Rapid Photo Downloader" -#: rapid/rapid.py:394 +#: rapid/rapid.py:449 msgid "New York" msgstr "Нью-Йорк" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Manila" msgstr "Манила" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Prague" msgstr "Прага" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Helsinki" msgstr "Хельсинки" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Wellington" msgstr "Веллингтон" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Tehran" msgstr "Тегеран" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Kampala" msgstr "Кампала" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Paris" msgstr "Париж" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Berlin" msgstr "Берлин" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Sydney" msgstr "Сидней" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Budapest" msgstr "Будапешт" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Rome" msgstr "Рим" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Moscow" msgstr "Москва" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Delhi" msgstr "Дели" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Warsaw" msgstr "Варшава" -#: rapid/rapid.py:398 +#: rapid/rapid.py:453 msgid "Jakarta" msgstr "Джакарта" -#: rapid/rapid.py:398 +#: rapid/rapid.py:453 msgid "Madrid" msgstr "Мадрид" -#: rapid/rapid.py:398 +#: rapid/rapid.py:453 msgid "Stockholm" msgstr "Стокгольм" -#: rapid/rapid.py:425 +#: rapid/rapid.py:486 msgid "Invalid Downloads Today value.\n" msgstr "Неверное значение 'Загрузок сегодня'.\n" -#: rapid/rapid.py:426 +#: rapid/rapid.py:487 msgid "Resetting value to zero.\n" msgstr "Сбросить значение до нуля.\n" -#: rapid/rapid.py:465 +#: rapid/rapid.py:526 msgid "'Start of day' preference value is corrupted.\n" msgstr "Значение 'Начало дня' повреждено.\n" -#: rapid/rapid.py:466 +#: rapid/rapid.py:527 msgid "Resetting to midnight.\n" -msgstr "Сброс настроек в полночь.\n" +msgstr "Вернуть значение \"полночь\".\n" -#: rapid/rapid.py:492 +#: rapid/rapid.py:553 msgid "Error in Photo Rename preferences" -msgstr "Ошибка в параметрах Переименования фотографий" +msgstr "Ошибка в параметрах Переименования фото" -#: rapid/rapid.py:523 rapid/rapid.py:1567 +#: rapid/rapid.py:584 rapid/rapid.py:1689 msgid "Sorry,these preferences contain an error:\n" msgstr "Извините, эти параметры содержат ошибку:\n" -#: rapid/rapid.py:534 +#: rapid/rapid.py:595 msgid "Resetting to default values." msgstr "Восстановить настройки по умолчанию." #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:609 rapid/renamesubfolderprefs.py:196 +#: rapid/rapid.py:670 rapid/renamesubfolderprefs.py:198 msgid "Job code" msgstr "Метка" -#: rapid/rapid.py:677 +#: rapid/rapid.py:738 msgid "Error in Video Rename preferences" -msgstr "Ошибка в параметрах Переименования видеороликов" +msgstr "Ошибка в параметрах Переименования видео" -#: rapid/rapid.py:695 +#: rapid/rapid.py:756 msgid "Error in Photo Download Subfolders preferences" -msgstr "Ошибка в параметрах Подкаталогов для загрузки фотографий" +msgstr "Ошибка в параметрах Подкаталогов для загрузки фото" -#: rapid/rapid.py:712 +#: rapid/rapid.py:773 msgid "Error in Video Download Subfolders preferences" -msgstr "Ошибка в параметрах Подкаталогов для загрузки видеороликов" +msgstr "Ошибка в параметрах Подкаталогов для загрузки видео" -#: rapid/rapid.py:745 rapid/rapid.py:1492 +#: rapid/rapid.py:806 rapid/rapid.py:1539 msgid "photos and videos" -msgstr "фотографии и видеоролики" +msgstr "фото и видео" -#: rapid/rapid.py:747 rapid/rapid.py:1502 rapid/rapid.py:1782 +#: rapid/rapid.py:808 rapid/rapid.py:1549 rapid/rapid.py:1658 msgid "photos" -msgstr "фотографии" +msgstr "фото" -#: rapid/rapid.py:880 +#: rapid/rapid.py:943 msgid "Select a folder to download photos to" -msgstr "Выберите каталог для загрузки фотографий" +msgstr "Выберите каталог для загрузки фото" -#: rapid/rapid.py:898 +#: rapid/rapid.py:961 msgid "Select a folder to download videos to" -msgstr "Выберите каталог для загрузки видеороликов" +msgstr "Выберите каталог для загрузки видео" -#: rapid/rapid.py:980 +#: rapid/rapid.py:1043 #, python-format msgid "Select a folder containing %(file_types)s" msgstr "Выберите каталог, содержащий %(file_types)s" -#: rapid/rapid.py:1002 +#: rapid/rapid.py:1065 #, python-format msgid "Select a folder in which to backup %(file_types)s" msgstr "" "Выберите каталог в котором будут храниться резервные копии %(file_types)s" #. Translators: please do not modify or leave out html formatting tags like and . These are used to format the text the users sees -#: rapid/rapid.py:1095 +#: rapid/rapid.py:1146 msgid "" "Warning: There is insufficient metadata to fully generate the " "name. Please use other renaming options." @@ -175,7 +175,7 @@ msgstr "" "Внимание: Недостаточно метаданных для создания имен файлов. " "Пожалуйста, используйте другие варианты переименования." -#: rapid/rapid.py:1129 +#: rapid/rapid.py:1182 msgid "" "Warning: There is insufficient metadata to fully generate " "subfolders. Please use other subfolder naming options." @@ -185,96 +185,131 @@ msgstr "" "подкаталогов." #. Translators: you should not modify or leave out the %s. This is a code used by the programming language python to insert a value that thes user will see -#: rapid/rapid.py:1133 +#: rapid/rapid.py:1186 #, python-format msgid "Example: %s" msgstr "Пример: %s" -#: rapid/rapid.py:1159 +#: rapid/rapid.py:1212 msgid "" "Downloads today value not updated, as a download is currently occurring" msgstr "" "Значение \"Загрузок сегодня\" не обновлено, так как загрузка идёт прямо " "сейчас" -#: rapid/rapid.py:1175 +#: rapid/rapid.py:1228 msgid "Stored number value not updated, as a download is currently occurring" msgstr "" -"Значение `Cохранение под номером` не обновлено, так как прямо сейчас идёт " -"загрузка" +"Счетчик сквозной нумерации не обновлен, так как прямо сейчас идёт загрузка" -#: rapid/rapid.py:1205 +#: rapid/rapid.py:1258 #, python-format msgid "" "The %(filetype)s subfolder preferences had some unnecessary values removed." msgstr "Некоторые излишние настройки подкаталога %(filetype)s удалены." #. Preferences list is now empty -#: rapid/rapid.py:1210 +#: rapid/rapid.py:1263 #, python-format msgid "" "The %(filetype)s subfolder preferences entered are invalid and cannot be " "used.\n" "They will be reset to their default values." msgstr "" -"Введённые настройки для подкаталога %(filetype)s неверны и не могут быть " +"Введённые настройки подкаталога для %(filetype)s неверны и не могут быть " "использованы.\n" "Они сброшены до значений по умолчанию." #. check subfolder preferences for bad values -#: rapid/rapid.py:1224 rapid/rapid.py:1504 rapid/rapid.py:2533 +#: rapid/rapid.py:1277 rapid/rapid.py:1551 msgid "photo" -msgstr "фотография" +msgstr "фото" -#: rapid/rapid.py:1225 rapid/rapid.py:1499 rapid/rapid.py:2541 +#: rapid/rapid.py:1278 rapid/rapid.py:1546 msgid "video" -msgstr "видеоролик" +msgstr "видео" #. Translators: this value is used as an example device when automatic backup device detection is enabled. You should translate this. -#: rapid/rapid.py:1468 +#: rapid/rapid.py:1515 msgid "externaldrive1" msgstr "внешнийдиск1" #. Translators: this value is used as an example device when automatic backup device detection is enabled. You should translate this. -#: rapid/rapid.py:1470 +#: rapid/rapid.py:1517 msgid "externaldrive2" msgstr "внешнийдиск2" -#: rapid/rapid.py:1494 rapid/rapid.py:1780 +#: rapid/rapid.py:1541 rapid/rapid.py:1656 msgid "photos or videos" -msgstr "фотографии или видеоролики" +msgstr "фото или видео" -#: rapid/rapid.py:1497 +#: rapid/rapid.py:1544 msgid "videos" -msgstr "видеоролики" +msgstr "видео" + +#: rapid/rapid.py:1556 +#, python-format +msgid "" +"%(date)s\n" +"%(time)s" +msgstr "" +"%(date)s\n" +"%(time)s" + +#: rapid/rapid.py:1558 +#, python-format +msgid "%(date)s %(time)s" +msgstr "%(date)s %(time)s" + +#: rapid/rapid.py:1561 +#, python-format +msgid "%(hour)s:%(minute)s:%(second)s:%(subsecond)s" +msgstr "%(hour)s:%(minute)s:%(second)s:%(subsecond)s" + +#: rapid/rapid.py:1568 +#, python-format +msgid "%(date)s %(hour)s:%(minute)s:%(second)s:%(subsecond)s" +msgstr "%(date)s %(hour)s:%(minute)s:%(second)s:%(subsecond)s" + +#: rapid/rapid.py:1596 rapid/rapid.py:2242 +msgid "subfolder and filename" +msgstr "подкаталог и название файла" + +#: rapid/rapid.py:1598 rapid/rapid.py:2244 +msgid "filename" +msgstr "имя файла" + +#: rapid/rapid.py:1600 rapid/rapid.py:2246 +msgid "subfolder" +msgstr "подкаталог" #. This refers to when a device like a hard drive is having its contents scanned, #. looking for photos or videos. It is visible initially in the progress bar for each device -#. (which normally holds "x of y photos"). +#. (which normally holds "x photos and videos"). #. It maybe displayed only briefly if the contents of the device being scanned is small. -#: rapid/rapid.py:1556 +#: rapid/rapid.py:1672 msgid "scanning..." msgstr "сканирование..." -#: rapid/rapid.py:1663 +#: rapid/rapid.py:1783 msgid "The following download path could not be created:\n" msgstr "Указанный путь для загрузки файлов не может быть создан:\n" -#: rapid/rapid.py:1664 +#: rapid/rapid.py:1784 #, python-format msgid "%(path)s: " msgstr "%(path)s: " -#: rapid/rapid.py:1665 rapid/rapid.py:1666 rapid/rapid.py:1681 -#: rapid/rapid.py:1682 rapid/rapid.py:2364 rapid/rapid.py:2367 +#: rapid/rapid.py:1785 rapid/rapid.py:1786 rapid/rapid.py:1801 +#: rapid/rapid.py:1802 rapid/rapid.py:2063 rapid/rapid.py:2066 msgid "Download cannot proceed" msgstr "Невозможно загрузить" -#: rapid/rapid.py:1679 rapid/rapid.py:3381 +#: rapid/rapid.py:1799 rapid/rapid.py:4846 msgid "There is an error in the program preferences." msgstr "Обнаружена ошибка в настройках программы." -#: rapid/rapid.py:1680 +#: rapid/rapid.py:1800 msgid "" "\n" "Please check preferences, restart the program, and try again." @@ -286,10 +321,10 @@ msgstr "" #. It refers to the actual number of photos that can be copied. For example, the user might see the following: #. '0 of 512 photos' or '0 of 10 videos' or '0 of 202 photos and videos'. #. This particular text is displayed to the user before the download has started. -#: rapid/rapid.py:1791 +#: rapid/rapid.py:1974 #, python-format -msgid "0 of %(number)s %(filetypes)s" -msgstr "0 из %(number)s %(filetypes)s" +msgid "%(number)s %(filetypes)s" +msgstr "%(number)s %(filetypes)s" #. Translators: as you have already seen, the text can contain values that should not be modified or left out by you, for example %s. #. This text is another example of that, but it is is a little more complex. Here there are two values which will be displayed @@ -297,464 +332,432 @@ msgstr "0 из %(number)s %(filetypes)s" #. %(number)s should be left exactly as is: 'number' should not be translated. The same applies to %(device)s: 'device' should #. not be translated. Generally speaking, if translating the sentence requires it, you can move items like '%(xyz)s' around #. in a sentence, but you should never modify them or leave them out. -#: rapid/rapid.py:1803 +#: rapid/rapid.py:1985 #, python-format msgid "Device scan complete: found %(number)s %(filetypes)s on %(device)s" msgstr "" "Сканирование носителя завершено: найдено %(number)s %(filetypes)s на " "%(device)s" -#: rapid/rapid.py:1810 +#: rapid/rapid.py:1992 #, python-format msgid "Device scan complete: no %(filetypes)s found on %(device)s" msgstr "" "Сканирование носителя завершено: %(filetypes)s не найдено на %(device)s" -#: rapid/rapid.py:1844 -#, python-format -msgid "%(filetype)s filename could not be generated" -msgstr "%(filetype)s название файла не удалось сгенерировать" +#. This message informs the user that the device (e.g. camera, hard drive or memory card) was automatically unmounted and they can now remove it +#: rapid/rapid.py:2013 +msgid "The device can now be safely removed" +msgstr "Теперь можно безопасно отсоединить носитель" -#. '%(source)s' and '%(problem)s' are two more examples of text that should not be modified or left out -#: rapid/rapid.py:1846 +#: rapid/rapid.py:2019 #, python-format -msgid "" -"Source: %(source)s\n" -"Problem: %(problem)s" -msgstr "" -"Источник: %(source)s\n" -"Проблема: %(problem)s" +msgid "%(noFiles)s %(filetypes)s downloaded" +msgstr "%(noFiles)s %(filetypes)s загружено" -#: rapid/rapid.py:1850 +#: rapid/rapid.py:2022 #, python-format -msgid "" -"%(filetype)s filename could not be properly generated. Check to ensure there " -"is sufficient metadata." -msgstr "" -"%(filetype)s название файла не удалось сгенерировать правильно. Проверьте, " -"что метаданных хватает." +msgid "%(noFiles)s %(filetypes)s failed to download" +msgstr "%(noFiles)s %(filetypes)s не удалось загрузить" -#: rapid/rapid.py:1851 +#: rapid/rapid.py:2028 rapid/rapid.py:5627 +msgid "warnings" +msgstr "предупреждения" + +#: rapid/rapid.py:2030 rapid/rapid.py:5631 +msgid "errors" +msgstr "ошибки" + +#: rapid/rapid.py:2057 #, python-format -msgid "" -"Source: %(source)s\n" -"Partially generated filename: %(newname)s\n" -"Destination: %(destination)s\n" -"Problem: %(problem)s" -msgstr "" -"Источник: %(source)s\n" -"Частичное название файла: %(newname)s\n" -"Назначение: %(destination)s\n" -"Проблема: %(problem)s" +msgid "Source: %s\n" +msgstr "Источник: %s\n" -#: rapid/rapid.py:1859 rapid/rapid.py:1864 rapid/rapid.py:1883 -#: rapid/rapid.py:2207 +#: rapid/rapid.py:2059 #, python-format -msgid "" -"Source: %(source)s\n" -"Destination: %(destination)s" -msgstr "" -"Источник: %(source)s\n" -"Назначение: %(destination)s" +msgid "Device: %s\n" +msgstr "Носитель: %s\n" -#: rapid/rapid.py:1861 +#: rapid/rapid.py:2060 #, python-format -msgid "Unique identifier '%s' added" -msgstr "Добавлена уникальная метка '%s'" +msgid "Destination: %s" +msgstr "Назначение: %s" + +#: rapid/rapid.py:2061 rapid/rapid.py:2064 +msgid "Could not create temporary download directory" +msgstr "Не удалось создать временный каталог для загрузки" + +#: rapid/rapid.py:2064 +msgid "Error:" +msgstr "Ошибка:" -#: rapid/rapid.py:1869 rapid/rapid.py:2270 +#: rapid/rapid.py:2088 +msgid "Backup path does not exist" +msgstr "Путь резервного копирования не существует" + +#: rapid/rapid.py:2089 #, python-format -msgid "Source: %(source)s" -msgstr "Источник: %(source)s" +msgid "The path %s could not be created" +msgstr "Не удалось создать путь %s" -#: rapid/rapid.py:1877 rapid/rapid.py:1882 -msgid "Download copying error" -msgstr "Ошибка при загрузке файлов" +#: rapid/rapid.py:2090 +msgid "No backups can occur" +msgstr "Резервное копирование невозможно" -#: rapid/rapid.py:1878 +#: rapid/rapid.py:2117 #, python-format msgid "" "Source: %(source)s\n" "Destination: %(destination)s\n" -"Error: %(errorno)s %(strerror)s" +"%(problem)s" msgstr "" "Источник: %(source)s\n" "Назначение: %(destination)s\n" -"Ошибка: %(errorno)s %(strerror)s" - -#: rapid/rapid.py:1880 rapid/rapid.py:1885 -#, python-format -msgid "The %(filetype)s was not copied." -msgstr "The %(filetype)s не скопирован." - -#: rapid/rapid.py:1889 -msgid "" -"Photos detected with the same filenames, but taken at different times:" -msgstr "" -"Обнаружены фотографии с одинаковыми названиями, но сделанные в разное время:" +"%(problem)s" -#: rapid/rapid.py:1890 +#: rapid/rapid.py:2146 rapid/rapid.py:2492 rapid/rapid.py:2527 +#: rapid/rapid.py:2555 rapid/rapid.py:2586 rapid/rapid.py:2605 #, python-format msgid "" -"First photo: %(image1)s %(image1_date_time)s:%(image1_subseconds)s\n" -"Second photo: %(image2)s %(image2_date_time)s:%(image2_subseconds)s" +"Source: %(source)s\n" +"Destination: %(destination)s" msgstr "" -"Первая фотография: %(image1)s %(image1_date_time)s:%(image1_subseconds)s\n" -"Вторая фотография: %(image2)s %(image2_date_time)s:%(image2_subseconds)s" - -#: rapid/rapid.py:1914 rapid/rapid.py:1927 -#, python-format -msgid "Could not open %(filetype)s" -msgstr "Невозможно открыть %(filetype)s" - -#: rapid/rapid.py:1915 rapid/rapid.py:1928 -#, python-format -msgid "Source: %s" -msgstr "Источник: %s" +"Источник: %(source)s\n" +"Назначение: %(destination)s" -#: rapid/rapid.py:1950 -#, python-format -msgid "%(filetype)s has no metadata" -msgstr "%(filetype)s не имеет метаданных" +#. hopefully inst will never be None, but just to be safe... +#: rapid/rapid.py:2161 +msgid "Please check your system and try again." +msgstr "Пожалуйста, проверьте вашу систему и попробуйте снова." -#: rapid/rapid.py:1951 -#, python-format -msgid "" -"Metadata is essential for generating subfolder and/or file names.\n" -"Source: %s" +#: rapid/rapid.py:2181 +msgid "Photos detected with the same filenames, but taken at different times" msgstr "" -"Метаданных достаточно для генерирования названий подкаталогов и/или файлов.\n" -"Источник: %s" +"Обнаружены фотографии с одинаковыми названиями, но сделанные в разное время" -#: rapid/rapid.py:1962 -msgid "" -"Subfolder name could not be properly generated. Check to ensure there is " -"sufficient metadata." -msgstr "" -"Не удаётся сгенерировать название подкаталога. Проверьте, хватает ли " -"метаданных." +#: rapid/rapid.py:2221 +msgid "Photo has already been downloaded" +msgstr "Фото уже загружено" -#: rapid/rapid.py:1963 +#: rapid/rapid.py:2222 rapid/rapid.py:2621 #, python-format -msgid "" -"Subfolder: %(subfolder)s\n" -"File: %(file)s\n" -"Problem: %(problem)s" -msgstr "" -"Подкаталог: %(subfolder)s\n" -"Файл: %(file)s\n" -"Проблема: %(problem)s" +msgid "Source: %(source)s" +msgstr "Источник: %(source)s" #. A new day, according the user's preferences of what time a day begins, has started -#: rapid/rapid.py:2147 +#: rapid/rapid.py:2420 msgid "New day has started - resetting 'Downloads Today' sequence number" msgstr "" "Начался новый день - сброшена последовательность номеров параметра 'Загрузок " "сегодня'" -#: rapid/rapid.py:2206 +#: rapid/rapid.py:2491 #, python-format msgid "Backup of %(file_type)s already exists" msgstr "Резервная копия %(file_type)s уже существует" -#: rapid/rapid.py:2210 +#: rapid/rapid.py:2495 #, python-format msgid "Backup %(file_type)s overwritten" msgstr "Резервная копия %(file_type)s перезаписана" -#: rapid/rapid.py:2215 +#: rapid/rapid.py:2499 #, python-format msgid "%(file_type)s not backed up to %(volume)s" msgstr "%(file_type)s не скопирован в резервную копию на %(volume)s" -#: rapid/rapid.py:2217 +#: rapid/rapid.py:2501 #, python-format msgid "%(file_type)s not backed up" msgstr "%(file_type)s не скопирован в резервную копию" -#: rapid/rapid.py:2243 rapid/rapid.py:2260 +#: rapid/rapid.py:2524 rapid/rapid.py:2552 rapid/rapid.py:2585 +#: rapid/rapid.py:2604 msgid "Backing up error" msgstr "Ошибка резервного копирования" -#: rapid/rapid.py:2244 +#: rapid/rapid.py:2525 rapid/rapid.py:2553 #, python-format msgid "Destination directory could not be created: %(directory)s\n" msgstr "Каталог назначения не может быть создан: %(directory)s\n" -#: rapid/rapid.py:2246 +#: rapid/rapid.py:2529 rapid/rapid.py:2588 #, python-format -msgid "" -"Source: %(source)s\n" -"Destination: %(destination)s\n" -msgstr "" -"Источник: %(source)s\n" -"Назначение: %(destination)s\n" +msgid "Error: %(inst)s" +msgstr "Ошибка: %(inst)s" -#: rapid/rapid.py:2248 -#, python-format -msgid "Error: %(errno)s %(strerror)s" -msgstr "Ошибка: %(errno)s %(strerror)s" - -#: rapid/rapid.py:2249 rapid/rapid.py:2263 +#: rapid/rapid.py:2530 rapid/rapid.py:2558 rapid/rapid.py:2589 +#: rapid/rapid.py:2608 #, python-format msgid "The %(file_type)s was not backed up." msgstr "Резервная копия %(file_type)s не была создана." -#: rapid/rapid.py:2261 +#: rapid/rapid.py:2557 rapid/rapid.py:2607 #, python-format -msgid "" -"Source: %(source)s\n" -"Destination: %(destination)s\n" -"Error: %(errno)s %(strerror)s" -msgstr "" -"Источник: %(source)s\n" -"Назначение: %(destination)s\n" -"Ошибка: %(errno)s %(strerror)s" +msgid "Error: %(errno)s %(strerror)s" +msgstr "Ошибка: %(errno)s %(strerror)s" -#: rapid/rapid.py:2269 +#: rapid/rapid.py:2620 #, python-format msgid "%(file_type)s could not be backed up" msgstr "Резервная копия %(file_type)s не может быть создана." -#: rapid/rapid.py:2272 +#: rapid/rapid.py:2623 msgid "No suitable backup volume was found" msgstr "Не найдено подходящего раздела для сохранения резервных копий" -#: rapid/rapid.py:2274 +#: rapid/rapid.py:2625 msgid "A backup location was not found" msgstr "Не найдено указанное размещение для сохранения резервных копий" -#. This message informs the user that the device (e.g. camera, hard drive or memory card) was automatically unmounted and they can now remove it -#: rapid/rapid.py:2288 -msgid "The device can now be safely removed" -msgstr "Теперь можно безопасно отсоединить носитель" - -#: rapid/rapid.py:2294 -#, python-format -msgid "%(noFiles)s %(filetypes)s downloaded" -msgstr "%(noFiles)s %(filetypes)s загружено" - -#: rapid/rapid.py:2297 -#, python-format -msgid "%(noFiles)s %(filetypes)s skipped" -msgstr "%(noFiles)s %(filetypes)s пропущен" - -#: rapid/rapid.py:2303 rapid/rapid.py:4027 -msgid "warnings" -msgstr "предупреждения" - -#: rapid/rapid.py:2305 rapid/rapid.py:4029 -msgid "errors" -msgstr "ошибки" - -#: rapid/rapid.py:2331 rapid/rapid.py:2823 rapid/rapid.py:2838 -msgid "Photo thumbnail could not be extracted" -msgstr "Невозможно извлечь миниатюру фотографии" - -#: rapid/rapid.py:2358 -#, python-format -msgid "Source: %s\n" -msgstr "Источник: %s\n" - -#: rapid/rapid.py:2360 -#, python-format -msgid "Device: %s\n" -msgstr "Носитель: %s\n" - -#: rapid/rapid.py:2361 -#, python-format -msgid "Destination: %s" -msgstr "Назначение: %s" - -#: rapid/rapid.py:2362 rapid/rapid.py:2365 -msgid "Could not create temporary download directory" -msgstr "Не удалось создать временный каталог для загрузки" - -#: rapid/rapid.py:2365 -msgid "Error:" -msgstr "Ошибка:" - -#: rapid/rapid.py:2382 +#: rapid/rapid.py:2679 #, python-format msgid "This device has no %(types_searched_for)s to download from." msgstr "Носитель не содержит %(types_searched_for)s для загрузки." -#: rapid/rapid.py:2417 +#: rapid/rapid.py:2733 #, python-format msgid "Download has started from %s" msgstr "Начата загрузка с %s" -#: rapid/rapid.py:2434 -msgid "Backup path does not exist" -msgstr "Путь резервного копирования не существует" - -#: rapid/rapid.py:2435 +#: rapid/rapid.py:2736 #, python-format -msgid "The path %s could not be created" -msgstr "Не удалось создать путь %s" - -#: rapid/rapid.py:2436 rapid/rapid.py:2444 -msgid "No backups can occur" -msgstr "Резервное копирование невозможно" +msgid "Attempting to download %s files" +msgstr "Попытка загрузить %s файлов" -#: rapid/rapid.py:2442 -msgid "Backup device missing" -msgstr "Отсутствует носитель для резервного копирования" - -#: rapid/rapid.py:2443 -msgid "No backup device was automatically detected" -msgstr "" -"Не удалось автоматически обнаружить носитель для резервного копирования" - -#: rapid/rapid.py:2534 rapid/rapid.py:3343 rapid/rapid.py:3345 -msgid "Photo" -msgstr "Фотография" - -#: rapid/rapid.py:2535 -msgid "Photo skipped" -msgstr "Фотография пропущена" - -#: rapid/rapid.py:2536 -msgid "Photo already exists" -msgstr "Такая фотография уже существует" - -#: rapid/rapid.py:2542 rapid/rapid.py:3343 -msgid "Video" -msgstr "Видеоролик" - -#: rapid/rapid.py:2543 -msgid "Video skipped" -msgstr "Видеоролик пропущен" - -#: rapid/rapid.py:2544 -msgid "Video already exists" -msgstr "Такой видеоролик уже существует" - -#: rapid/rapid.py:2592 +#. reset the progress bar to update the status of this download attempt +#: rapid/rapid.py:2769 rapid/rapid.py:2836 #, python-format msgid "%(number)s of %(total)s %(filetypes)s" msgstr "%(number)s из %(total)s %(filetypes)s" -#: rapid/rapid.py:2607 rapid/rapid.py:2611 +#: rapid/rapid.py:2832 +#, python-format +msgid "%(number)s of %(total)s %(filetypes)s (%(remaining)s remaining)" +msgstr "%(number)s из %(total)s %(filetypes)s (%(remaining)s осталось)" + +#: rapid/rapid.py:2857 rapid/rapid.py:2861 msgid "Could not delete photo or video from device" -msgstr "Не удалось удалить фотографию или видеоролик с носителя" +msgstr "Не удалось удалить фото или видео с носителя" -#: rapid/rapid.py:2608 +#: rapid/rapid.py:2858 #, python-format msgid "" "Photo: %(source)s\n" "Error: %(errno)s %(strerror)s" msgstr "" -"Фотография: %(source)s\n" +"Фото: %(source)s\n" "Ошибка: %(errno)s %(strerror)s" -#: rapid/rapid.py:2612 +#: rapid/rapid.py:2862 #, python-format msgid "Photo: %(source)s" -msgstr "Фотография: %(source)s" +msgstr "Фото: %(source)s" -#: rapid/rapid.py:2614 +#: rapid/rapid.py:2864 #, python-format msgid "Deleted %(number)i %(filetypes)s from device" msgstr "Удалено %(number)i %(filetypes)s с носителя" -#: rapid/rapid.py:2624 +#: rapid/rapid.py:2871 #, python-format msgid "Download complete from %s" msgstr "Загрузка с %s завершена" #. Device refers to a thing like a camera, memory card in its reader, external hard drive, Portable Storage Device, etc. -#: rapid/rapid.py:2700 +#: rapid/rapid.py:2993 rapid/rapid.py:3466 msgid "Device" msgstr "Носитель" #. Size refers to the total size of images on the device, typically in MB or GB -#: rapid/rapid.py:2705 +#: rapid/rapid.py:2998 rapid/rapid.py:3455 msgid "Size" msgstr "Размер" -#: rapid/rapid.py:2708 +#: rapid/rapid.py:3001 msgid "Download Progress" msgstr "Ход загрузки" -#: rapid/rapid.py:2824 rapid/rapid.py:2839 -msgid "It may be corrupted" -msgstr "Возможно он повреждён" +#: rapid/rapid.py:3089 +msgid "Downloading From Cameras" +msgstr "Загрузка с камеры" + +#: rapid/rapid.py:3095 +msgid "Downloading directly from a camera may work poorly or not at all" +msgstr "" +"Загрузка непосредственно с камеры может работать плохо или не работать вовсе" + +#: rapid/rapid.py:3096 +msgid "" +"Downloading from a card reader always works and is generally much faster. It " +"is strongly recommended to use a card reader." +msgstr "" +"Загрузка через картридер работает устойчиво и намного быстрее. Настоятельно " +"рекомендуется использовать картридер." + +#: rapid/rapid.py:3110 +msgid "_Show this message again" +msgstr "_Показывать это сообщение снова" -#: rapid/rapid.py:2869 +#: rapid/rapid.py:3145 msgid "Device Detected" msgstr "Обнаружен носитель" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2878 +#: rapid/rapid.py:3154 msgid "" "Should this device or partition be used to download photos or videos from?" -msgstr "" -"Следует ли загрузить фотографии или видеоролики с этого носителя или раздела?" +msgstr "Следует ли загрузить фото или видео с этого носителя или раздела?" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2897 +#: rapid/rapid.py:3173 msgid "_Remember this choice" msgstr "_Запомнить мой выбор" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2934 +#: rapid/rapid.py:3210 #, python-format msgid "%s selected for downloading from" msgstr "%s выбран для загрузки" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2937 +#: rapid/rapid.py:3213 msgid "This device or partition will always be used to download from" msgstr "Этот носитель или раздел всегда будет использован для загрузки" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2940 +#: rapid/rapid.py:3216 #, python-format msgid "%s rejected as a download device" msgstr "%s не выбран для загрузки" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2943 +#: rapid/rapid.py:3219 msgid "This device or partition will never be used to download from" msgstr "Этот носитель или раздел никогда не будет использован для загрузки" -#: rapid/rapid.py:2950 +#: rapid/rapid.py:3226 msgid "Remove all Job Codes?" msgstr "Удалить все метки?" -#: rapid/rapid.py:2967 +#: rapid/rapid.py:3243 msgid "Should all Job Codes be removed?" msgstr "Вы действительно хотите удалить все метки?" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:2995 +#: rapid/rapid.py:3271 msgid "Enter a Job Code" msgstr "Введите метку" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:3013 -msgid "Enter a new job code, or select a previous one." -msgstr "Введите новую метку или выберите существующую." +#: rapid/rapid.py:3290 +msgid "Enter a new Job Code, or select a previous one" +msgstr "Введите новую метку или выберите одну из существующих" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:3016 -msgid "Enter a new job code." -msgstr "Введите новую метку." +#: rapid/rapid.py:3293 +msgid "Enter a new Job Code" +msgstr "Введите новую метку" -#: rapid/rapid.py:3021 +#: rapid/rapid.py:3298 rapid/rapid.py:4417 msgid "Job Code:" msgstr "Метка:" -#: rapid/rapid.py:3068 +#: rapid/rapid.py:3345 msgid "Job Code entered" msgstr "Метка введена" -#: rapid/rapid.py:3070 +#: rapid/rapid.py:3347 msgid "Job Code not entered" msgstr "Метка не введена" -#: rapid/rapid.py:3330 +#: rapid/rapid.py:3401 +msgid "Status" +msgstr "Статус" + +#: rapid/rapid.py:3409 +msgid "Type" +msgstr "Тип" + +#: rapid/rapid.py:3418 rapid/rapid.py:4808 rapid/rapid.py:4810 +msgid "Photo" +msgstr "Фото" + +#: rapid/rapid.py:3420 +msgid "File" +msgstr "Файл" + +#: rapid/rapid.py:3435 +msgid "Job Code" +msgstr "Метка" + +#: rapid/rapid.py:3445 +msgid "Date" +msgstr "Дата" + +#: rapid/rapid.py:3477 rapid/renamesubfolderprefs.py:194 +msgid "Filename" +msgstr "Имя файла" + +#: rapid/rapid.py:3488 +msgid "Path" +msgstr "Путь" + +#: rapid/rapid.py:3843 +#, python-format +msgid "%(filetype)s was downloaded successfully" +msgstr "%(filetype)s успешно загружено" + +#: rapid/rapid.py:3845 +#, python-format +msgid "%(filetype)s was not downloaded" +msgstr "%(filetype)s не загружено" + +#: rapid/rapid.py:3847 +#, python-format +msgid "%(filetype)s was downloaded with warnings" +msgstr "%(filetype)s загружено с ошибками" + +#: rapid/rapid.py:3849 +#, python-format +msgid "%(filetype)s was downloaded but there were problems backing up" +msgstr "" +"%(filetype)s загружено, но возникли проблемы с его резервным копированием" + +#: rapid/rapid.py:3851 +#, python-format +msgid "%(filetype)s was neither downloaded nor backed up" +msgstr "%(filetype)s не был ни скачан, ни резервно скопирован" + +#: rapid/rapid.py:3853 +#, python-format +msgid "%(filetype)s is ready to be downloaded" +msgstr "%(filetype)s готово к загрузке" + +#: rapid/rapid.py:3855 +#, python-format +msgid "%(filetype)s is about to be downloaded" +msgstr "%(filetype)s ожидает загрузки" + +#: rapid/rapid.py:3857 +#, python-format +msgid "%(filetype)s will be downloaded with warnings" +msgstr "%(filetype)s будет загружено с предупреждениями" + +#: rapid/rapid.py:3859 +#, python-format +msgid "%(filetype)s cannot be downloaded" +msgstr "%(filetype)s не может быть загружено" + +#: rapid/rapid.py:4240 +msgid "Preview" +msgstr "Предварительный просмотр" + +#: rapid/rapid.py:4439 +msgid "Enter a new Job Code and press Enter, or select an existing Job Code" +msgstr "Введите новую метку и нажмите Enter или выберите существующую метку" + +#: rapid/rapid.py:4795 #, python-format msgid "" "Sorry, this device location does not exist:\n" @@ -762,89 +765,98 @@ msgid "" "\n" "Please resolve the problem, or modify your preferences." msgstr "" -"Извините, расположение этого носителя не существует:\n" +"Извините, указанное расположение на носителя не существует:\n" "%(path)s\n" "Пожалуйста, исправьте ошибку или измените настройки" -#: rapid/rapid.py:3334 +#: rapid/rapid.py:4799 msgid "Problem with Device Location Folder" msgstr "Проблема с расположением носителя" -#: rapid/rapid.py:3350 +#: rapid/rapid.py:4808 +msgid "Video" +msgstr "Видео" + +#: rapid/rapid.py:4815 #, python-format msgid "The %(file_type)s Download Folder does not exist.\n" -msgstr "Папка для загрузки %(file_type)s не существует.\n" +msgstr "Каталог для загрузки %(file_type)s не существует.\n" -#: rapid/rapid.py:3359 +#: rapid/rapid.py:4824 #, python-format msgid "The %(file_type)s Download Folder exists but cannot be written to.\n" msgstr "" -"Папка для загрузки %(file_type)s существует, но недоступна для записи.\n" +"Каталог для загрузки %(file_type)s существует, но недоступен для записи.\n" -#: rapid/rapid.py:3364 +#: rapid/rapid.py:4829 msgid "" "Sorry, problems were encountered with your download folders. Please fix the " "problems or modify the preferences.\n" "\n" msgstr "" "Извините, были обнаружены проблемы с каталогами для загрузки. Пожалуйста, " -"исправьте их или измение свои настройки.\n" +"исправьте их или измените настройки.\n" "\n" -#: rapid/rapid.py:3367 +#: rapid/rapid.py:4832 msgid "Problem with Download Folder" msgstr "Проблема с каталогом для загрузки" -#: rapid/rapid.py:3369 +#: rapid/rapid.py:4834 msgid "Problem with Download Folders" msgstr "Проблема с каталогами для загрузки" -#: rapid/rapid.py:3382 +#: rapid/rapid.py:4847 msgid "Some preferences will be reset." msgstr "Некоторые настройки будут сброшены." -#: rapid/rapid.py:3416 +#: rapid/rapid.py:4880 +msgid "Displaying warning about downloading directly from camera" +msgstr "Отображает предупреждения о прямой загрузке с камеры" + +#: rapid/rapid.py:4890 #, python-format msgid "Prompting whether to use %s" msgstr "Спрашивать, использовать ли %s" -#: rapid/rapid.py:3444 +#: rapid/rapid.py:4917 msgid "Prompting for Job Code" msgstr "Предлагать использовать метку" -#: rapid/rapid.py:3448 +#: rapid/rapid.py:4921 msgid "Already prompting for Job Code, do not prompt again" msgstr "Уже предложено использовать метку, больше не спрашивать" -#: rapid/rapid.py:3463 -msgid "Starting downloads that have been waiting for a Job Code" -msgstr "Начинаются загрузки, которые ожидали ввода метки" - -#: rapid/rapid.py:3467 +#: rapid/rapid.py:4938 msgid "Starting downloads" msgstr "Начинаются загрузки" -#: rapid/rapid.py:3482 +#. autostart is true +#: rapid/rapid.py:4942 +msgid "Starting downloads that have been waiting for a Job Code" +msgstr "Начинаются загрузки, которые ожидали ввода метки" + +#: rapid/rapid.py:4984 #, python-format msgid "Creating photo download folder %(folder)s" -msgstr "Создание каталога для загрузки фотографий %(folder)s" +msgstr "Создание каталога для загрузки фото %(folder)s" -#: rapid/rapid.py:3487 +#: rapid/rapid.py:4989 #, python-format msgid "Failed to create default photo download folder %(folder)s" -msgstr "Не удалось создать каталог для загрузки фотографий %(folder)s" +msgstr "Не удалось создать каталог для загрузки фото %(folder)s" -#: rapid/rapid.py:3491 +#: rapid/rapid.py:4993 #, python-format msgid "Creating video download folder %(folder)s" -msgstr "Создание каталога для загрузки видеороликов %(folder)s" +msgstr "Создание каталога для загрузки видео %(folder)s" -#: rapid/rapid.py:3496 +#: rapid/rapid.py:4998 #, python-format msgid "Failed to create default video download folder %(folder)s" -msgstr "Не удалось создать каталог для загрузки видеороликов %(folder)s" +msgstr "Не удалось создать каталог для загрузки видео %(folder)s" -#: rapid/rapid.py:3521 +#: rapid/rapid.py:5023 msgid "" "A newer version of this program was previously run on this computer.\n" "\n" @@ -852,7 +864,7 @@ msgstr "" "На этом компьютере ранее запускалась более новая версия программы.\n" "\n" -#: rapid/rapid.py:3523 +#: rapid/rapid.py:5025 msgid "" "Program preferences appear to be valid, but please check them to ensure " "correct operation." @@ -860,26 +872,26 @@ msgstr "" "Настройки программы выглядят верными, но проверьте их, чтобы увериться в " "правильной работе." -#: rapid/rapid.py:3525 +#: rapid/rapid.py:5027 msgid "Sorry, some preferences are invalid and will be reset." -msgstr "Извините, некоторые настройки неправильны и будут сброшены." +msgstr "Извините, некоторые настройки неверны и будут сброшены." -#: rapid/rapid.py:3526 +#: rapid/rapid.py:5028 msgid "Warning:" msgstr "Предупреждение:" -#: rapid/rapid.py:3531 +#: rapid/rapid.py:5033 msgid "" "This version of the program is newer than the previously run version. " "Checking preferences." msgstr "" "Эта версия программы новее, чем запущенная ранее. Проверьте настройки." -#: rapid/rapid.py:3538 +#: rapid/rapid.py:5040 msgid "Preferences were modified." msgstr "Настройки были изменены" -#: rapid/rapid.py:3539 +#: rapid/rapid.py:5041 msgid "" "This version of the program uses different preferences than the old version. " "Your preferences have been updated.\n" @@ -891,145 +903,171 @@ msgstr "" "\n" "Пожалуйста, проверьте их, чтобы быть увериться в правильной работе." -#: rapid/rapid.py:3543 +#: rapid/rapid.py:5045 msgid "No preferences needed to be changed." msgstr "Настройки не требуют изменения." -#: rapid/rapid.py:3545 +#: rapid/rapid.py:5047 msgid "" "This version of the program uses different preferences than the old version. " "Some of your previous preferences were invalid, and could not be updated. " "They will be reset." msgstr "" "Эта версия программы использует несколько другие настройки, чем предыдущая. " -"Некоторые ваши настройки неверны и не могут быть обновлены.Они будут " +"Некоторые ваши настройки неверны и не могут быть обновлены. Они будут " "сброшены." -#: rapid/rapid.py:3555 +#: rapid/rapid.py:5057 msgid "Problem using pynotify." msgstr "Проблема при использовании pynotify." -#: rapid/rapid.py:3571 +#: rapid/rapid.py:5073 msgid "Failed to receive pynotify server capabilities." msgstr "Не удалось получить возможности сервера pynotify." -#: rapid/rapid.py:3580 +#: rapid/rapid.py:5084 msgid "" "Warning: desktop environment notification server is incorrectly configured." msgstr "" "Внимание: сервер уведомлений вашего рабочего окружения не настроен " "надлежащим образом." -#: rapid/rapid.py:3626 +#: rapid/rapid.py:5132 msgid "and" msgstr "и" -#: rapid/rapid.py:3631 +#: rapid/rapid.py:5137 msgid "Using backup devices" msgstr "Использование носителя для резервного копирования" -#: rapid/rapid.py:3633 +#: rapid/rapid.py:5139 msgid "Using backup device" msgstr "Использование носителя для резервного копирования" -#: rapid/rapid.py:3635 +#: rapid/rapid.py:5141 msgid "No backup devices detected" msgstr "Не обнаружено носителей для создания резервных копий" -#: rapid/rapid.py:3674 rapid/rapid.py:3831 +#: rapid/rapid.py:5188 rapid/rapid.py:5350 #, python-format msgid "Device %(device)s (%(path)s) ignored" msgstr "Носитель %(device)s (%(path)s) проигнорирован" -#: rapid/rapid.py:3790 +#: rapid/rapid.py:5309 #, python-format msgid "Detected %(device)s with path %(path)s" msgstr "Обнаружено %(device)s с путём %(path)s" -#: rapid/rapid.py:3794 +#: rapid/rapid.py:5313 msgid "Automatically start download is true" msgstr "Автоматически начинать загрузку - да" -#: rapid/rapid.py:3796 +#: rapid/rapid.py:5315 msgid "Automatically start download is false" msgstr "Автоматически начинать загрузку - нет" -#: rapid/rapid.py:3849 +#: rapid/rapid.py:5368 msgid "Using manually specified path" msgstr "Использовать указанный вручную путь" -#: rapid/rapid.py:3857 +#: rapid/rapid.py:5376 rapid/rapid.py:5417 #, python-format msgid "Backing up to %(path)s" msgstr "Резервное копирование в %(path)s" -#: rapid/rapid.py:3968 rapid/rapid.py:4017 +#. the user is trying to backup to a device that is currently being downloaded from..... we don't normally allow that, but what to do? +#: rapid/rapid.py:5441 +#, python-format +msgid "Warning: backup device %(device)s is currently being downloaded from" +msgstr "" +"Внимание: с устройства для резервного копирования %(device)s в данный момент " +"идет загрузка" + +#: rapid/rapid.py:5458 +msgid "D_ownload Selected" +msgstr "З_агрузить отмеченное" + +#: rapid/rapid.py:5550 rapid/rapid.py:5599 msgid "All downloads complete" msgstr "Все загрузки завершены" -#: rapid/rapid.py:3982 +#: rapid/rapid.py:5564 msgid "MB/s" msgstr "МБ/с" -#: rapid/rapid.py:3992 +#: rapid/rapid.py:5574 msgid "About 1 second remaining" msgstr "Осталась примерно 1 секунда" -#: rapid/rapid.py:3994 +#: rapid/rapid.py:5576 #, python-format msgid "About %i seconds remaining" msgstr "Осталось %i секунд" -#: rapid/rapid.py:3996 +#: rapid/rapid.py:5578 msgid "About 1 minute remaining" msgstr "Осталась примерно 1 минута" #. Translators: in the text '%(minutes)i:%(seconds)02i', only the : should be translated, if needed. #. '%(minutes)i' and '%(seconds)02i' should not be modified or left out. They are used to format and display the amount #. of time the download has remainging, e.g. 'About 5:36 minutes remaining' -#: rapid/rapid.py:4001 +#: rapid/rapid.py:5583 #, python-format msgid "About %(minutes)i:%(seconds)02i minutes remaining" msgstr "Осталось примерно %(minutes)i:%(seconds)02i" -#: rapid/rapid.py:4019 -msgid "photos downloaded" -msgstr "фотографий загружено" +#: rapid/rapid.py:5602 rapid/rapid.py:5608 rapid/rapid.py:5614 +#: rapid/rapid.py:5620 rapid/rapid.py:5625 rapid/rapid.py:5629 +#, python-format +msgid "%(number)s %(numberdownloaded)s" +msgstr "%(number)s %(numberdownloaded)s" -#: rapid/rapid.py:4021 -msgid "photos skipped" -msgstr "фотографий пропущено" +#: rapid/rapid.py:5604 rapid/rapid.py:5616 +#, python-format +msgid "%(filetype)s downloaded" +msgstr "%(filetype)s загружено" -#: rapid/rapid.py:4023 -msgid "videos downloaded" -msgstr "видеороликов загружено" +#: rapid/rapid.py:5610 rapid/rapid.py:5622 +#, python-format +msgid "%(filetype)s failed to download" +msgstr "%(filetype)s не удалось загрузить" -#: rapid/rapid.py:4025 -msgid "videos skipped" -msgstr "видеороликов пропущено" +#: rapid/rapid.py:5789 +msgid "_Resume" +msgstr "_Продолжить" -#. This text will be displayed to the user on the Download / Pause button. -#. Please note the space at the end of the label - it is needed to meet the Gnome Human Interface Guidelines -#: rapid/rapid.py:4125 -msgid "_Download " -msgstr "_Загрузить " +#: rapid/rapid.py:5792 +msgid "_Download All" +msgstr "_Загрузить всё" #. This text will be displayed to the user on the Download / Pause button. -#: rapid/rapid.py:4135 +#: rapid/rapid.py:5801 msgid "_Pause" msgstr "_Пауза" -#: rapid/rapid.py:4209 -msgid "Preferences were changed." -msgstr "Настройки были изменены" +#: rapid/rapid.py:5914 +msgid "Download device settings preferences were changed." +msgstr "Настройки устройства загрузки были изменены." + +#: rapid/rapid.py:5926 +msgid "Backup preferences were changed." +msgstr "Настройки резвервного копирования были изменены." + +#: rapid/rapid.py:5932 +msgid "Subfolder and filename preferences were changed." +msgstr "Настройки каталогов и названий файлов были изменены." + +#: rapid/rapid.py:5943 +msgid "Download folder preferences were changed." +msgstr "Настройки каталога для загрузки были изменены." -#: rapid/rapid.py:4407 +#: rapid/rapid.py:6141 msgid "Goodbye" msgstr "До свидания" #. Translators: this text is displayed to the user when they request information on the command line options. #. The text %default should not be modified or left out. -#: rapid/rapid.py:4418 +#: rapid/rapid.py:6152 #, python-format msgid "" "display program information on the command line as the program runs " @@ -1038,387 +1076,383 @@ msgstr "" "отобразить информацию о программе в командной строке при запуске программы " "(по умолчанию: %default)" -#: rapid/rapid.py:4419 +#: rapid/rapid.py:6153 msgid "only output errors to the command line" msgstr "выводить в командную строку только ошибки" #. image file extensions are recognized RAW files plus TIFF and JPG -#: rapid/rapid.py:4421 +#: rapid/rapid.py:6155 msgid "list photo and video file extensions the program recognizes and exit" msgstr "" "вывести расширения фото- и видеофайлов, которые распознает программа, и выйти" -#: rapid/rapid.py:4422 +#: rapid/rapid.py:6156 msgid "reset all program settings and preferences and exit" msgstr "сбросить все настройки и выйти" -#: rapid/rapid.py:4431 +#: rapid/rapid.py:6165 msgid "Photos:" -msgstr "Фотографии:" +msgstr "Фото:" -#: rapid/rapid.py:4431 +#: rapid/rapid.py:6165 msgid "Videos:" -msgstr "Видеоролики:" +msgstr "Видео:" -#: rapid/rapid.py:4436 +#: rapid/rapid.py:6170 #, python-format msgid "and %s" msgstr "и %s" -#: rapid/rapid.py:4444 +#: rapid/rapid.py:6178 msgid "All settings and preferences have been reset" msgstr "Все установки и настройки были сброшены" #. Which volume management code is being used (GIO or GnomeVFS) -#: rapid/rapid.py:4448 rapid/rapid.py:4449 rapid/rapid.py:4451 -#: rapid/rapid.py:4456 rapid/rapid.py:4460 +#: rapid/rapid.py:6182 rapid/rapid.py:6183 rapid/rapid.py:6185 +#: rapid/rapid.py:6190 rapid/rapid.py:6194 msgid "Using" msgstr "Использование" -#: rapid/rapid.py:4453 +#: rapid/rapid.py:6187 msgid "\n" msgstr "\n" #. this application is already running -#: rapid/rapid.py:4477 +#: rapid/rapid.py:6211 #, python-format msgid "%s is already running" msgstr "%s уже запущено" -#: rapid/renamesubfolderprefs.py:190 +#: rapid/renamesubfolderprefs.py:192 msgid "Date time" msgstr "Дата и время" -#: rapid/renamesubfolderprefs.py:191 +#: rapid/renamesubfolderprefs.py:193 msgid "Text" msgstr "Текст" -#: rapid/renamesubfolderprefs.py:192 -msgid "Filename" -msgstr "Название файла" - -#: rapid/renamesubfolderprefs.py:193 +#: rapid/renamesubfolderprefs.py:195 msgid "Metadata" msgstr "Метаданные" -#: rapid/renamesubfolderprefs.py:194 +#: rapid/renamesubfolderprefs.py:196 msgid "Sequences" msgstr "Последовательности" -#: rapid/renamesubfolderprefs.py:197 +#: rapid/renamesubfolderprefs.py:199 msgid "Image date" msgstr "Дата фотографии" -#: rapid/renamesubfolderprefs.py:198 +#: rapid/renamesubfolderprefs.py:200 msgid "Video date" -msgstr "Дата видеоролика" +msgstr "Дата видео" -#: rapid/renamesubfolderprefs.py:199 +#: rapid/renamesubfolderprefs.py:201 msgid "Today" msgstr "Сегодня" -#: rapid/renamesubfolderprefs.py:200 +#: rapid/renamesubfolderprefs.py:202 msgid "Yesterday" msgstr "Вчера" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:202 +#: rapid/renamesubfolderprefs.py:204 msgid "Name + extension" msgstr "Имя + расширение" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:204 +#: rapid/renamesubfolderprefs.py:206 msgid "Name" -msgstr "Название" +msgstr "Имя" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:206 +#: rapid/renamesubfolderprefs.py:208 msgid "Extension" msgstr "Расширение" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:208 +#: rapid/renamesubfolderprefs.py:210 msgid "Image number" msgstr "Номер фотографии" -#: rapid/renamesubfolderprefs.py:209 +#: rapid/renamesubfolderprefs.py:211 msgid "Video number" -msgstr "Номер видеоролика" +msgstr "Номер видео" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:211 +#: rapid/renamesubfolderprefs.py:213 msgid "Aperture" msgstr "Диафрагма" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:213 +#: rapid/renamesubfolderprefs.py:215 msgid "ISO" msgstr "ISO" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:215 +#: rapid/renamesubfolderprefs.py:217 msgid "Exposure time" msgstr "Выдержка" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:217 +#: rapid/renamesubfolderprefs.py:219 msgid "Focal length" msgstr "Фокусное расстояние" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:219 +#: rapid/renamesubfolderprefs.py:221 msgid "Camera make" msgstr "Производитель камеры" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:221 +#: rapid/renamesubfolderprefs.py:223 msgid "Camera model" msgstr "Модель камеры" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:223 +#: rapid/renamesubfolderprefs.py:225 msgid "Short camera model" msgstr "Сокращённое название камеры" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:225 +#: rapid/renamesubfolderprefs.py:227 msgid "Hyphenated short camera model" msgstr "Дополнительное сокращенное название камеры" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:227 +#: rapid/renamesubfolderprefs.py:229 msgid "Serial number" msgstr "Серийный номер" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:229 +#: rapid/renamesubfolderprefs.py:231 msgid "Shutter count" msgstr "Счётчик кадров" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:231 +#: rapid/renamesubfolderprefs.py:233 msgid "Owner name" msgstr "Имя владельца" -#: rapid/renamesubfolderprefs.py:232 +#: rapid/renamesubfolderprefs.py:234 msgid "Codec" msgstr "Кодек" -#: rapid/renamesubfolderprefs.py:233 +#: rapid/renamesubfolderprefs.py:235 msgid "Width" msgstr "Ширина" -#: rapid/renamesubfolderprefs.py:234 +#: rapid/renamesubfolderprefs.py:236 msgid "Height" msgstr "Высота" -#: rapid/renamesubfolderprefs.py:235 +#: rapid/renamesubfolderprefs.py:237 msgid "Length" msgstr "Длительность" -#: rapid/renamesubfolderprefs.py:236 +#: rapid/renamesubfolderprefs.py:238 msgid "Frames Per Second" msgstr "Кадров в секунду" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:238 +#: rapid/renamesubfolderprefs.py:240 msgid "Downloads today" msgstr "Скачиваний сегодня" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:240 +#: rapid/renamesubfolderprefs.py:242 msgid "Session number" -msgstr "Номер сессии" +msgstr "Номер в текущей сессии" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:242 +#: rapid/renamesubfolderprefs.py:244 msgid "Subfolder number" msgstr "Номер подкаталога" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:244 +#: rapid/renamesubfolderprefs.py:246 msgid "Stored number" -msgstr "Сохранение под номером" +msgstr "Сквозная нумерация" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequenceletters -#: rapid/renamesubfolderprefs.py:246 +#: rapid/renamesubfolderprefs.py:248 msgid "Sequence letter" msgstr "Последовательность символов" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:248 +#: rapid/renamesubfolderprefs.py:250 msgid "All digits" msgstr "Все цифры" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:250 +#: rapid/renamesubfolderprefs.py:252 msgid "Last digit" msgstr "Последняя цифра" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:252 +#: rapid/renamesubfolderprefs.py:254 msgid "Last 2 digits" msgstr "Последние 2 цифры" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:254 +#: rapid/renamesubfolderprefs.py:256 msgid "Last 3 digits" msgstr "Последние 3 цифры" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:256 +#: rapid/renamesubfolderprefs.py:258 msgid "Last 4 digits" msgstr "Последние 4 цифры" #. Translators: please not the capitalization of this text, and keep it the same if your language features capitalization -#: rapid/renamesubfolderprefs.py:258 +#: rapid/renamesubfolderprefs.py:260 msgid "Original Case" msgstr "Исходный Регистр" #. Translators: please not the capitalization of this text, and keep it the same if your language features capitalization -#: rapid/renamesubfolderprefs.py:260 +#: rapid/renamesubfolderprefs.py:262 msgid "UPPERCASE" msgstr "ВЕРХНИЙ РЕГИСТР" #. Translators: please not the capitalization of this text, and keep it the same if your language features capitalization -#: rapid/renamesubfolderprefs.py:262 +#: rapid/renamesubfolderprefs.py:264 msgid "lowercase" msgstr "нижний регистр" -#: rapid/renamesubfolderprefs.py:263 +#: rapid/renamesubfolderprefs.py:265 msgid "One digit" msgstr "Одна цифра" -#: rapid/renamesubfolderprefs.py:264 +#: rapid/renamesubfolderprefs.py:266 msgid "Two digits" msgstr "Две цифры" -#: rapid/renamesubfolderprefs.py:265 +#: rapid/renamesubfolderprefs.py:267 msgid "Three digits" msgstr "Три цифры" -#: rapid/renamesubfolderprefs.py:266 +#: rapid/renamesubfolderprefs.py:268 msgid "Four digits" msgstr "Четыре цифры" -#: rapid/renamesubfolderprefs.py:267 +#: rapid/renamesubfolderprefs.py:269 msgid "Five digits" msgstr "Пять цифр" -#: rapid/renamesubfolderprefs.py:268 +#: rapid/renamesubfolderprefs.py:270 msgid "Six digits" msgstr "Шесть цифр" -#: rapid/renamesubfolderprefs.py:269 +#: rapid/renamesubfolderprefs.py:271 msgid "Seven digits" msgstr "семь цифр" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:271 +#: rapid/renamesubfolderprefs.py:273 msgid "Subseconds" msgstr "Доли секунды" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:273 +#: rapid/renamesubfolderprefs.py:275 msgid "YYYYMMDD" msgstr "ГГГГММДД" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:275 +#: rapid/renamesubfolderprefs.py:277 msgid "YYYY-MM-DD" msgstr "ГГГГ-ММ-ДД" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:277 +#: rapid/renamesubfolderprefs.py:279 msgid "YYMMDD" msgstr "ГГММДД" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:279 +#: rapid/renamesubfolderprefs.py:281 msgid "YY-MM-DD" msgstr "ГГ-ММ-ДД" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:281 +#: rapid/renamesubfolderprefs.py:283 msgid "MMDDYYYY" msgstr "ММДДГГГГ" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:283 +#: rapid/renamesubfolderprefs.py:285 msgid "MMDDYY" msgstr "ММДДГГ" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:285 +#: rapid/renamesubfolderprefs.py:287 msgid "MMDD" msgstr "ММДД" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:287 +#: rapid/renamesubfolderprefs.py:289 msgid "DDMMYYYY" msgstr "ДДММГГГГ" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:289 +#: rapid/renamesubfolderprefs.py:291 msgid "DDMMYY" msgstr "ДДММГГ" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:291 +#: rapid/renamesubfolderprefs.py:293 msgid "YYYY" msgstr "ГГГГ" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:293 +#: rapid/renamesubfolderprefs.py:295 msgid "YY" msgstr "ГГ" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:295 +#: rapid/renamesubfolderprefs.py:297 msgid "MM" msgstr "ММ" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:297 +#: rapid/renamesubfolderprefs.py:299 msgid "DD" msgstr "ДД" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:299 +#: rapid/renamesubfolderprefs.py:301 msgid "HHMMSS" msgstr "ЧЧММСС" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:301 +#: rapid/renamesubfolderprefs.py:303 msgid "HHMM" msgstr "ЧЧММ" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:303 +#: rapid/renamesubfolderprefs.py:305 msgid "HH-MM-SS" msgstr "ЧЧ-ММ-СС" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:305 +#: rapid/renamesubfolderprefs.py:307 msgid "HH-MM" msgstr "ЧЧ-ММ" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:307 +#: rapid/renamesubfolderprefs.py:309 msgid "HH" msgstr "ЧЧ" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:309 +#: rapid/renamesubfolderprefs.py:311 msgid "MM (minutes)" msgstr "ММ (мин.)" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:311 +#: rapid/renamesubfolderprefs.py:313 msgid "SS" msgstr "СС" -#: rapid/renamesubfolderprefs.py:794 +#: rapid/renamesubfolderprefs.py:796 #, python-format msgid "" "Preference key '%(key)s' is invalid.\n" @@ -1427,66 +1461,26 @@ msgstr "" "Неверен ключ настроек '%(key)s'.\n" "Ожидался один из %(value)s" -#: rapid/renamesubfolderprefs.py:801 +#: rapid/renamesubfolderprefs.py:803 #, python-format msgid "Preference value '%(value)s' is invalid" msgstr "Неверное значение настроек '%(value)s'" -#: rapid/renamesubfolderprefs.py:805 +#: rapid/renamesubfolderprefs.py:807 msgid "These preferences are not well formed:" msgstr "Эти настройки не очень хорошо подобраны:" -#: rapid/renamesubfolderprefs.py:934 -msgid "Subsecond metadata not present in photo" -msgstr "Метаданные о долях секунд отсутствуют в фотографии" - -#: rapid/renamesubfolderprefs.py:941 -#, python-format -msgid "%s metadata is not present" -msgstr "%s метаданные не представлены" - -#: rapid/renamesubfolderprefs.py:960 rapid/renamesubfolderprefs.py:968 -#: rapid/renamesubfolderprefs.py:977 -#, python-format -msgid "Error in date time component. Value %s appears invalid" -msgstr "Ошибка в компоненте даты и времени. Значение %s неверно." - -#: rapid/renamesubfolderprefs.py:1004 -msgid "extension was specified but filename does not have an extension" -msgstr "было указано расширение, но название файла не имеет расширения" - -#: rapid/renamesubfolderprefs.py:1008 -msgid "image or video number was specified but filename has no number" -msgstr "" -"было обозначено использование номера фото или видео, но имя файл не содержит " -"номера" - -#: rapid/renamesubfolderprefs.py:1081 -#, python-format -msgid "%s metadata is not present in photo" -msgstr "%s метаданные отсутствуют в фотографии" - -#: rapid/renamesubfolderprefs.py:1194 -#, python-format -msgid "error generating name with component %s" -msgstr "ошибка генерирования названия компонентом %s" - -#: rapid/renamesubfolderprefs.py:1450 -#, python-format -msgid "%s metadata is not present in video" -msgstr "%s нет метаданных в видеоролике" - -#: rapid/renamesubfolderprefs.py:1546 +#: rapid/renamesubfolderprefs.py:1517 #, python-format msgid "Subfolder preferences should not start with a %s" msgstr "Настройки подкаталога не должны начинаться с %s" -#: rapid/renamesubfolderprefs.py:1548 +#: rapid/renamesubfolderprefs.py:1519 #, python-format msgid "Subfolder preferences should not end with a %s" msgstr "Настройки подкаталога не должны заканчиваться с %s" -#: rapid/renamesubfolderprefs.py:1552 +#: rapid/renamesubfolderprefs.py:1523 #, python-format msgid "Subfolder preferences should not contain two %s one after the other" msgstr "Настройки подкаталога не должны содержать две %s одну за другой" @@ -1536,168 +1530,153 @@ msgid "Job Codes" msgstr "Метки" #: rapid/glade3/rapid.glade.h:12 -msgid "Missing Backup Devices" -msgstr "Отсутствует носитель для резервного копирования" - -#: rapid/glade3/rapid.glade.h:13 msgid "Photo Rename" -msgstr "Переименование фотографий" +msgstr "Переименование фото" -#: rapid/glade3/rapid.glade.h:14 +#: rapid/glade3/rapid.glade.h:13 msgid "Photo and Video Name Conflicts" -msgstr "Конфликт названий между фотографией и видеороликом" +msgstr "Конфликт названий между фото и видео" -#: rapid/glade3/rapid.glade.h:15 +#: rapid/glade3/rapid.glade.h:14 msgid "Program Automation" msgstr "Автоматизация программы" -#: rapid/glade3/rapid.glade.h:16 +#: rapid/glade3/rapid.glade.h:15 msgid "Sequence Numbers" msgstr "Последовательности номеров" -#: rapid/glade3/rapid.glade.h:17 +#: rapid/glade3/rapid.glade.h:16 msgid "/media/externaldrive/Photos" msgstr "/media/externaldrive/Photos" -#: rapid/glade3/rapid.glade.h:18 +#: rapid/glade3/rapid.glade.h:17 msgid "Example: /home/user/Pictures" msgstr "Пример: /home/user/Pictures" -#: rapid/glade3/rapid.glade.h:19 +#: rapid/glade3/rapid.glade.h:18 msgid "Example:" msgstr "Пример:" -#: rapid/glade3/rapid.glade.h:20 +#: rapid/glade3/rapid.glade.h:19 msgid "New:" msgstr "Новое название:" -#: rapid/glade3/rapid.glade.h:21 +#: rapid/glade3/rapid.glade.h:20 msgid "Original:" msgstr "Исходное название:" -#: rapid/glade3/rapid.glade.h:22 +#: rapid/glade3/rapid.glade.h:21 msgid "Automation" msgstr "Автоматизация" -#: rapid/glade3/rapid.glade.h:23 +#: rapid/glade3/rapid.glade.h:22 msgid "Backup\t" msgstr "" "Резервное копирование\t" -#: rapid/glade3/rapid.glade.h:24 +#: rapid/glade3/rapid.glade.h:23 msgid "Devices" msgstr "Носители" -#: rapid/glade3/rapid.glade.h:25 +#: rapid/glade3/rapid.glade.h:24 msgid "Error Handling" msgstr "Обработка ошибок" -#: rapid/glade3/rapid.glade.h:26 +#: rapid/glade3/rapid.glade.h:25 msgid "Job Codes" msgstr "Метки" -#: rapid/glade3/rapid.glade.h:27 +#: rapid/glade3/rapid.glade.h:26 msgid "Photo Download Folders" msgstr "" -"Каталоги для загрузки " -"фотографий" +"Каталоги для загрузки фото" -#: rapid/glade3/rapid.glade.h:28 +#: rapid/glade3/rapid.glade.h:27 msgid "Photo Rename\t" -msgstr "" -"Переименование фотографий\t" +msgstr "Переименование фото\t" -#: rapid/glade3/rapid.glade.h:29 +#: rapid/glade3/rapid.glade.h:28 msgid "Rename Options" msgstr "" "Параметры переименования" -#: rapid/glade3/rapid.glade.h:30 +#: rapid/glade3/rapid.glade.h:29 msgid "Video Download Folders" msgstr "" -"Каталоги для загрузки " -"видеороликов" +"Каталоги для загрузки видео" -#: rapid/glade3/rapid.glade.h:31 +#: rapid/glade3/rapid.glade.h:30 msgid "Video Rename\t" -msgstr "" -"Переименование видеороликов\t" +msgstr "Переименование видео\t" -#: rapid/glade3/rapid.glade.h:32 +#: rapid/glade3/rapid.glade.h:31 msgid "Add unique identifier" msgstr "Добавить уникальную метку" -#: rapid/glade3/rapid.glade.h:33 +#: rapid/glade3/rapid.glade.h:32 msgid "Automatically detect Portable Storage Devices" msgstr "Автоматически определять внешние съёмные носители" -#: rapid/glade3/rapid.glade.h:34 +#: rapid/glade3/rapid.glade.h:33 msgid "Automatically detect backup devices" msgstr "Автоматически определять носители для резервного копирования" -#: rapid/glade3/rapid.glade.h:35 +#: rapid/glade3/rapid.glade.h:34 msgid "Automatically detect devices" msgstr "Автоматически обнаруживать носители" -#: rapid/glade3/rapid.glade.h:36 +#: rapid/glade3/rapid.glade.h:35 msgid "Automation" msgstr "Автоматизация" -#: rapid/glade3/rapid.glade.h:37 +#: rapid/glade3/rapid.glade.h:36 msgid "Backup" msgstr "Резервное копирование" -#: rapid/glade3/rapid.glade.h:38 +#: rapid/glade3/rapid.glade.h:37 msgid "Backup location:" msgstr "Местоположение резервных копий" -#: rapid/glade3/rapid.glade.h:39 +#: rapid/glade3/rapid.glade.h:38 msgid "Backup photos and videos when downloading" msgstr "" "Выполнять резервное копирование фотографий и видеороликов во время загрузки" -#: rapid/glade3/rapid.glade.h:40 +#: rapid/glade3/rapid.glade.h:39 msgid "" "Choose the download folder. Subfolders for the downloaded photos will be " "automatically created in this folder using the structure specified below." msgstr "" "Выберите каталог, в котором будут храниться фотографии. Подкаталоги для " "загружаемых фотографий будут автоматически созданы в каждом каталоге, " -"используя структуру указанную вами ниже." +"используя структуру, указанную вами ниже." -#: rapid/glade3/rapid.glade.h:41 +#: rapid/glade3/rapid.glade.h:40 msgid "" "Choose the download folder. Subfolders for the downloaded videos will be " "automatically created in this folder using the structure specified below." msgstr "" -"Выберите каталог, в котором будут храниться видеоролики. Подкаталоги для " -"загружаемых видеороликов будут автоматически созданы в каждом каталоге, " -"используя структуру указанную вами ниже." - -#: rapid/glade3/rapid.glade.h:42 -msgid "" -"Choose whether to skip downloading the file, or to add a unique indentifier." -msgstr "" -"Выберите, следует ли пропустить загрузку файла или следует добавить к его " -"названию уникальную метку." +"Выберите каталог, в котором будут храниться видеоролики. Подкаталоги для " +"загружаемых видеороликов будут автоматически созданы в каждом каталоге, " +"используя структуру, указанную вами ниже." -#: rapid/glade3/rapid.glade.h:43 +#: rapid/glade3/rapid.glade.h:41 msgid "Copyright Damon Lynch 2007-10" msgstr "Авторские права Damon Lynch 2007-2010" -#: rapid/glade3/rapid.glade.h:44 +#: rapid/glade3/rapid.glade.h:42 msgid "Day start:" msgstr "Начало дня:" -#: rapid/glade3/rapid.glade.h:45 +#: rapid/glade3/rapid.glade.h:43 msgid "Delete photos and videos from device upon download completion" -msgstr "Удалить фотографии и видеоролики после окончания загрузки" +msgstr "Удалить фото и видео после окончания загрузки" -#: rapid/glade3/rapid.glade.h:46 +#: rapid/glade3/rapid.glade.h:44 msgid "Devices" msgstr "Носители" -#: rapid/glade3/rapid.glade.h:47 +#: rapid/glade3/rapid.glade.h:45 msgid "" "Devices are from where to download photos and videos, such as cameras, " "memory cards or Portable Storage Devices.\n" @@ -1709,57 +1688,57 @@ msgid "" "setting it to PTP mode. If that is not possible, consider using a card " "reader." msgstr "" -"Носители - устройства, откуда загружаются фотографии и видеоролики, " -"например, камеры, карты памяти или переносные накопители.\n" +"Носители - устройства, откуда загружаются фото и видео, например, камеры, " +"карты памяти или переносные накопители.\n" "\n" -"Вы можете загружать фотографии с нескольких носителей одновременно, или " -"указать расположение на жестком диске.\n" +"Вы можете загружать фото с нескольких носителей одновременно, или указать " +"расположение на жёстком диске.\n" "\n" "Если прямая загрузка с камеры работает плохо или не работает совсем, " "попробуйте преключить ее в режим PTP. Если это невозможно, используйте " "устройство для чтения карт памяти." -#: rapid/glade3/rapid.glade.h:52 +#: rapid/glade3/rapid.glade.h:50 msgid "Download / Pause" msgstr "Загрузка / Пауза" -#: rapid/glade3/rapid.glade.h:53 +#: rapid/glade3/rapid.glade.h:51 msgid "Download folder:" msgstr "Каталог загрузки:" -#: rapid/glade3/rapid.glade.h:54 +#: rapid/glade3/rapid.glade.h:52 msgid "Downloads today:" msgstr "Загрузок сегодня:" -#: rapid/glade3/rapid.glade.h:55 +#: rapid/glade3/rapid.glade.h:53 msgid "Error Handling" msgstr "Обработка ошибок" -#: rapid/glade3/rapid.glade.h:56 +#: rapid/glade3/rapid.glade.h:54 msgid "Error Log" msgstr "Журнал ошибок" -#: rapid/glade3/rapid.glade.h:57 +#: rapid/glade3/rapid.glade.h:55 msgid "Exit program if download completes without any warnings or errors" msgstr "" "Выйти из программы в том случае, если загрузка завершилась без " "предупреждений и ошибок" -#: rapid/glade3/rapid.glade.h:58 +#: rapid/glade3/rapid.glade.h:56 msgid "If you disable automatic detection, choose the exact backup location." msgstr "" "Если вы отключаете автоматическое определение, то, пожалуйста, выберите " "точное местоположение носителя для резервного копирования." -#: rapid/glade3/rapid.glade.h:59 +#: rapid/glade3/rapid.glade.h:57 msgid "" "If you disable automatic detection, choose the exact location of the images " "and videos." msgstr "" "Если вы отключите автоматическое обнаружение, выберите точное местоположение " -"фотографий и видеороликов." +"фото и видео." -#: rapid/glade3/rapid.glade.h:60 +#: rapid/glade3/rapid.glade.h:58 msgid "" "If you enable automatic detection of Portable Storage Devices, the entire " "device will be scanned for images. On large devices, this could take some " @@ -1769,47 +1748,51 @@ msgstr "" "просканированы на наличие фотографий. На носителях большого объёма это может " "занять достаточно много времени." -#: rapid/glade3/rapid.glade.h:61 -msgid "Ignore" -msgstr "Игнорировать" - -#: rapid/glade3/rapid.glade.h:62 +#: rapid/glade3/rapid.glade.h:59 msgid "Import your photos and videos efficiently and reliably" -msgstr "Импортируйте ваши фотографии и видеоролики быстро и надёжно" +msgstr "Импортируйте ваши фото и видео быстро и надёжно" -#: rapid/glade3/rapid.glade.h:63 +#: rapid/glade3/rapid.glade.h:60 msgid "Job Codes" msgstr "Метки" -#: rapid/glade3/rapid.glade.h:64 +#: rapid/glade3/rapid.glade.h:61 msgid "Location:" msgstr "Расположение:" -#: rapid/glade3/rapid.glade.h:65 +#: rapid/glade3/rapid.glade.h:62 msgid "Overwrite" msgstr "Перезаписать" -#: rapid/glade3/rapid.glade.h:66 +#: rapid/glade3/rapid.glade.h:63 +msgid "P_review Columns" +msgstr "Показывать к_олонки" + +#: rapid/glade3/rapid.glade.h:64 msgid "Photo Folders" -msgstr "Каталоги фотографий" +msgstr "Каталоги фото" -#: rapid/glade3/rapid.glade.h:67 +#: rapid/glade3/rapid.glade.h:65 msgid "Photo Rename" -msgstr "Переименование фотографий" +msgstr "Переименование фото" -#: rapid/glade3/rapid.glade.h:68 +#: rapid/glade3/rapid.glade.h:66 msgid "Photo backup folder name:" -msgstr "Название каталога резервного копирования фотографий" +msgstr "Название каталога резервного копирования фото" -#: rapid/glade3/rapid.glade.h:69 +#: rapid/glade3/rapid.glade.h:67 msgid "Preferences: Rapid Photo Downloader" msgstr "Настройки: Rapid Photo Downloader" -#: rapid/glade3/rapid.glade.h:71 +#: rapid/glade3/rapid.glade.h:68 +msgid "Preview _Folders" +msgstr "Показывать _каталоги" + +#: rapid/glade3/rapid.glade.h:70 msgid "R_emove All" msgstr "У_далить все" -#: rapid/glade3/rapid.glade.h:73 +#: rapid/glade3/rapid.glade.h:72 msgid "" "Rapid Photo Downloader is free software; you can redistribute it and/or " "modify it under the terms of the GNU General Public License as published by " @@ -1840,27 +1823,43 @@ msgstr "" "Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-" "1301, USA." -#: rapid/glade3/rapid.glade.h:78 +#: rapid/glade3/rapid.glade.h:77 msgid "Rename Options" msgstr "Параметры переименования" +#: rapid/glade3/rapid.glade.h:78 +msgid "Se_lect None" +msgstr "_Снять выделение" + #: rapid/glade3/rapid.glade.h:79 -msgid "Report a warning" -msgstr "Предупредить" +msgid "Select All Pho_tos" +msgstr "Выбрать все _фотографии" #: rapid/glade3/rapid.glade.h:80 -msgid "Report an error" -msgstr "Сообщить об ошибке" +msgid "Select All Vi_deos" +msgstr "Выбрать все _видеоролики" #: rapid/glade3/rapid.glade.h:81 +msgid "Select All Wit_h Job Code" +msgstr "Выбрать всё с _метками" + +#: rapid/glade3/rapid.glade.h:82 +msgid "Select All Without _Job Code" +msgstr "Выбрать всё _без меток" + +#: rapid/glade3/rapid.glade.h:83 +msgid "Select _All" +msgstr "Выделить вс_ё" + +#: rapid/glade3/rapid.glade.h:84 msgid "Skip" msgstr "Пропустить" -#: rapid/glade3/rapid.glade.h:82 +#: rapid/glade3/rapid.glade.h:85 msgid "Skip download" msgstr "Пропустить загрузку" -#: rapid/glade3/rapid.glade.h:83 +#: rapid/glade3/rapid.glade.h:86 msgid "" "Sorry, video downloading functionality disabled. To download videos, please " "install the kaa metadata package for python." @@ -1868,7 +1867,7 @@ msgstr "" "Извините, возможность загрузки видео не работает. Необходимо установить " "пакет kaa metadata для python." -#: rapid/glade3/rapid.glade.h:84 +#: rapid/glade3/rapid.glade.h:87 msgid "" "Specify the folder in which backups are stored on the device. \n" "\n" @@ -1879,75 +1878,71 @@ msgstr "" "Укажите каталог для размещения резервных копий на носителе. \n" "\n" "Примечение: эта настройка также определяет, используется ли носитель для " -"резервного копирования. На каждом носителя, который вы хотите использовать " -"для резервного копирования, создайте папку с одним из этих имен." +"резервного копирования. На каждом носителе, который вы хотите использовать " +"для резервного копирования, создайте каталог с одним из этих имен." -#: rapid/glade3/rapid.glade.h:87 +#: rapid/glade3/rapid.glade.h:90 msgid "" "Specify the time in 24 hour format at which the Downloads today " "sequence number should be reset." msgstr "" -"Укажите время в 24-часовом формате, когде следует обнулять параметр " +"Укажите время в 24-часовом формате, когда следует обнулять параметр " "Загрузок сегодня." -#: rapid/glade3/rapid.glade.h:88 -msgid "" -"Specify what to do when a photo or video of the same name has already been " -"downloaded or backed up." -msgstr "" -"Укажите, что следует сделать, если фотография или видеоролик с таким же " -"названием уже были РАНЕЕ загружены или сохранены в резервную копию" - -#: rapid/glade3/rapid.glade.h:89 -msgid "Specify what to do when there are no backup devices." -msgstr "" -"Укажите, что делать если не обнаружены носители для резервного копирования." - -#: rapid/glade3/rapid.glade.h:90 +#: rapid/glade3/rapid.glade.h:91 msgid "" "Specify whether photo, video and folder names should have any characters " "removed that are not allowed by other operating systems." msgstr "" -"Укажите, следует ли удалить символы в названиях фотографий, видеороликов, " -"каталогов, которые не распознаются в других операционных системах." +"Укажите, следует ли удалить символы в названиях фото, видео, каталогов, " +"которые не распознаются в других операционных системах." -#: rapid/glade3/rapid.glade.h:91 +#: rapid/glade3/rapid.glade.h:92 msgid "Start downloading at program startup" -msgstr "Начать загрузку фотографий сразу после запуска программы" +msgstr "" +"Начать загрузку фотографий и видеороликов сразу после запуска программы" -#: rapid/glade3/rapid.glade.h:92 +#: rapid/glade3/rapid.glade.h:93 msgid "Start downloading upon device insertion" msgstr "Начать загрузку сразу после подключения носителя" -#: rapid/glade3/rapid.glade.h:93 +#: rapid/glade3/rapid.glade.h:94 msgid "Stored number:" -msgstr "Сохранение под номером:" +msgstr "Сквозная нумерация:" -#: rapid/glade3/rapid.glade.h:94 +#: rapid/glade3/rapid.glade.h:95 msgid "Strip incompatible characters" msgstr "Убрать несовместимые символы" -#: rapid/glade3/rapid.glade.h:95 +#: rapid/glade3/rapid.glade.h:96 msgid "Synchronize RAW + JPEG sequence numbers" msgstr "Синхронизировать последовательность номеров при загрузке RAW + JPEG" -#: rapid/glade3/rapid.glade.h:96 +#: rapid/glade3/rapid.glade.h:97 msgid "Unmount (\"eject\") device upon download completion" msgstr "Отключить (\"извлечь\") носитель после завершения загрузки" -#: rapid/glade3/rapid.glade.h:97 +#: rapid/glade3/rapid.glade.h:98 msgid "Video Folders" -msgstr "Каталоги видеороликов" +msgstr "Каталоги видео" -#: rapid/glade3/rapid.glade.h:98 +#: rapid/glade3/rapid.glade.h:99 msgid "Video Rename" -msgstr "Переименование видеороликов" +msgstr "Переименование видео" -#: rapid/glade3/rapid.glade.h:99 +#: rapid/glade3/rapid.glade.h:100 msgid "Video backup folder name:" -msgstr "Название каталога резервного копирования видеороликов" +msgstr "Название каталога резервного копирования видео" -#: rapid/glade3/rapid.glade.h:100 +#: rapid/glade3/rapid.glade.h:101 +msgid "" +"When a photo or video of the same name has already been downloaded, choose " +"whether to skip downloading the file, or to add a unique indentifier." +msgstr "" +"Если фотография или видеоролик с таким названием уже загружен, выберите, " +"пропустить загрузку или добавить уникальный идентификатор." + +#: rapid/glade3/rapid.glade.h:102 msgid "" "When backing up, choose whether to overwrite a file on the backup device " "that has the same name, or skip backing it up." @@ -1955,7 +1950,7 @@ msgstr "" "Во время резервного копирования следует перезаписать файл, имеющий тоже " "самое название, или пропустить его?" -#: rapid/glade3/rapid.glade.h:101 +#: rapid/glade3/rapid.glade.h:103 msgid "" "You can have your photos and videos backed up to multiple locations as they " "are downloaded, e.g. external hard drives." @@ -1963,53 +1958,81 @@ msgstr "" "Имеется возможность создания резервной копии ваших фотографий и видеороликов " "прямо во время загрузки, в том числе на внешних жёстких дисках." -#: rapid/glade3/rapid.glade.h:102 +#: rapid/glade3/rapid.glade.h:104 msgid "_Add..." msgstr "_Добавить..." -#: rapid/glade3/rapid.glade.h:103 +#: rapid/glade3/rapid.glade.h:105 msgid "_Clear Completed Downloads" msgstr "_Убрать завершённые загрузки" -#: rapid/glade3/rapid.glade.h:104 +#: rapid/glade3/rapid.glade.h:106 +msgid "_Device" +msgstr "_Носитель" + +#: rapid/glade3/rapid.glade.h:107 msgid "_Error Log" msgstr "_Журнал ошибок" -#: rapid/glade3/rapid.glade.h:105 +#: rapid/glade3/rapid.glade.h:108 +msgid "_File" +msgstr "_Файл" + +#: rapid/glade3/rapid.glade.h:109 +msgid "_Filename" +msgstr "Имя файла" + +#: rapid/glade3/rapid.glade.h:110 msgid "_Get Help Online..." msgstr "_Получить помощь в интернете..." -#: rapid/glade3/rapid.glade.h:106 +#: rapid/glade3/rapid.glade.h:111 msgid "_Help" msgstr "_Помощь" -#: rapid/glade3/rapid.glade.h:107 +#: rapid/glade3/rapid.glade.h:112 msgid "_Make a Donation..." msgstr "_Сделать пожервование" -#: rapid/glade3/rapid.glade.h:108 -msgid "_Photos" -msgstr "_Фотографии" +#: rapid/glade3/rapid.glade.h:113 +msgid "_Path" +msgstr "_Путь" -#: rapid/glade3/rapid.glade.h:109 +#: rapid/glade3/rapid.glade.h:114 +msgid "_Preview" +msgstr "П_редпросмотр" + +#: rapid/glade3/rapid.glade.h:115 msgid "_Report a Problem..." msgstr "_Сообщить о проблеме..." -#: rapid/glade3/rapid.glade.h:110 -msgid "_Thumbnails" -msgstr "_Предпросмотр фотографий" +#: rapid/glade3/rapid.glade.h:116 +msgid "_Select" +msgstr "_Выделить" -#: rapid/glade3/rapid.glade.h:111 +#: rapid/glade3/rapid.glade.h:117 +msgid "_Size" +msgstr "_Размер" + +#: rapid/glade3/rapid.glade.h:118 msgid "_Translate this Application..." msgstr "_Перевести это приложение..." -#: rapid/glade3/rapid.glade.h:112 +#: rapid/glade3/rapid.glade.h:119 +msgid "_Type" +msgstr "_Тип" + +#: rapid/glade3/rapid.glade.h:120 msgid "_View" msgstr "_Просмотр" #~ msgid "Could not open image" #~ msgstr "Не смог открыть фотографию" +#, python-format +#~ msgid "Source: %s" +#~ msgstr "Источник: %s" + #~ msgid "Image has no metadata" #~ msgstr "Фотография не содержит метаданных" @@ -2032,6 +2055,9 @@ msgstr "_Просмотр" #~ msgid "images skipped" #~ msgstr "фотографий пропущено" +#~ msgid "_Photos" +#~ msgstr "_Фотографии" + #, python-format #~ msgid "" #~ "Source: %(source)s\n" @@ -2042,6 +2068,14 @@ msgstr "_Просмотр" #~ "Получатель: %(destination)s\n" #~ "Проблема: %(problem)s" +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Problem: %(problem)s" +#~ msgstr "" +#~ "Источник: %(source)s\n" +#~ "Проблема: %(problem)s" + #, python-format #~ msgid "" #~ "Subfolder: %(subfolder)s\n" @@ -2061,6 +2095,12 @@ msgstr "_Просмотр" #~ msgid "Copyright Damon Lynch 2007-09" #~ msgstr "Copyright Damon Lynch 2007-09" +#~ msgid "Ignore" +#~ msgstr "Игнорировать" + +#~ msgid "Report an error" +#~ msgstr "Сообщить об ошибке" + #, python-format #~ msgid "" #~ "Destination directory could not be created\n" @@ -2083,9 +2123,15 @@ msgstr "_Просмотр" #~ msgid "Thumbnail cannot be displayed" #~ msgstr "Предпросмотр фотографии не может быть выполнен" +#~ msgid "It may be corrupted" +#~ msgstr "Возможно он повреждён" + #~ msgid "Image has no thumbnail" #~ msgstr "У фотографии нет предпросмотра" +#~ msgid "_Thumbnails" +#~ msgstr "_Предпросмотр фотографий" + #~ msgid "extension was specified but image name has no extension" #~ msgstr "расширение было указано, но фотографий не имеет расширения" @@ -2111,6 +2157,10 @@ msgstr "_Просмотр" #~ msgid "Automatically detect image devices" #~ msgstr "Автоматически определять носители, которые содержат фотографии" +#~ msgid "Specify what to do when there are no backup devices." +#~ msgstr "" +#~ "Укажите, что делать если не обнаружены носители для резервного копирования." + #, python-format #~ msgid "Device scan complete: no images found on %s" #~ msgstr "Сканирование носителя %s завершено: фотографий не найдено" @@ -2135,6 +2185,10 @@ msgstr "_Просмотр" #~ "фотографий.\n" #~ "Источник: %s" +#, python-format +#~ msgid "Error in date time component. Value %s appears invalid" +#~ msgstr "Ошибка в компоненте даты и времени. Значение %s неверно." + #~ msgid "list image file extensions the program recognizes and exit" #~ msgstr "" #~ "вывести расширения файла фотографии, которые распознала программа и выйти" @@ -2181,6 +2235,9 @@ msgstr "_Просмотр" #~ "Если вы отключаете автоматическое определение, то, пожалуйста, выберите " #~ "точное местоположение фотографий." +#~ msgid "Report a warning" +#~ msgstr "Предупредить" + #~ msgid "Unmount (\"eject\") image device upon download completion" #~ msgstr "" #~ "Отсоединить (\"извлечь\") носитель с фотографиями после завершения скачивания" @@ -2229,6 +2286,10 @@ msgstr "_Просмотр" #~ msgid "images downloaded" #~ msgstr "фотографий скачано" +#, python-format +#~ msgid "error generating name with component %s" +#~ msgstr "ошибка генерирования названия компонентом %s" + #~ msgid "" #~ "Warning: There is insufficient image metadata to fully generate " #~ "the name. Please use other renaming options." @@ -2293,6 +2354,9 @@ msgstr "_Просмотр" #~ "это не возможно, то попробуйте использовать устройство для чтения карт " #~ "памяти." +#~ msgid "Enter a new job code." +#~ msgstr "Введите новую метку." + #~ msgid "No backup device was detected." #~ msgstr "Устройство для хранения резервных копий не обнаружено." @@ -2386,3 +2450,202 @@ msgstr "_Просмотр" #, python-format #~ msgid "%(number)s of %(total)s images copied" #~ msgstr "%(number)s из %(total)s фотографий скачано" + +#~ msgid "No backup device was automatically detected" +#~ msgstr "" +#~ "Не удалось автоматически обнаружить носитель для резервного копирования" + +#~ msgid "Video skipped" +#~ msgstr "Видеоролик пропущен" + +#~ msgid "Video already exists" +#~ msgstr "Такой видеоролик уже существует" + +#~ msgid "Photo skipped" +#~ msgstr "Фотография пропущена" + +#~ msgid "Photo already exists" +#~ msgstr "Такая фотография уже существует" + +#, python-format +#~ msgid "" +#~ "Subfolder: %(subfolder)s\n" +#~ "File: %(file)s\n" +#~ "Problem: %(problem)s" +#~ msgstr "" +#~ "Подкаталог: %(subfolder)s\n" +#~ "Файл: %(file)s\n" +#~ "Проблема: %(problem)s" + +#~ msgid "photos skipped" +#~ msgstr "фотографий пропущено" + +#~ msgid "videos skipped" +#~ msgstr "видеороликов пропущено" + +#, python-format +#~ msgid "0 of %(number)s %(filetypes)s" +#~ msgstr "0 из %(number)s %(filetypes)s" + +#, python-format +#~ msgid "" +#~ "First photo: %(image1)s %(image1_date_time)s:%(image1_subseconds)s\n" +#~ "Second photo: %(image2)s %(image2_date_time)s:%(image2_subseconds)s" +#~ msgstr "" +#~ "Первая фотография: %(image1)s %(image1_date_time)s:%(image1_subseconds)s\n" +#~ "Вторая фотография: %(image2)s %(image2_date_time)s:%(image2_subseconds)s" + +#, python-format +#~ msgid "%(filetype)s has no metadata" +#~ msgstr "%(filetype)s не имеет метаданных" + +#, python-format +#~ msgid "Could not open %(filetype)s" +#~ msgstr "Невозможно открыть %(filetype)s" + +#, python-format +#~ msgid "%s metadata is not present in video" +#~ msgstr "%s нет метаданных в видеоролике" + +#~ msgid "" +#~ "Photos detected with the same filenames, but taken at different times:" +#~ msgstr "" +#~ "Обнаружены фотографии с одинаковыми названиями, но сделанные в разное время:" + +#~ msgid "Download copying error" +#~ msgstr "Ошибка при загрузке файлов" + +#, python-format +#~ msgid "Unique identifier '%s' added" +#~ msgstr "Добавлена уникальная метка '%s'" + +#~ msgid "videos downloaded" +#~ msgstr "видеороликов загружено" + +#~ msgid "photos downloaded" +#~ msgstr "фотографий загружено" + +#~ msgid "_Download " +#~ msgstr "_Загрузить " + +#, python-format +#~ msgid "%(noFiles)s %(filetypes)s skipped" +#~ msgstr "%(noFiles)s %(filetypes)s пропущен" + +#, python-format +#~ msgid "%(filetype)s filename could not be generated" +#~ msgstr "%(filetype)s название файла не удалось сгенерировать" + +#~ msgid "Photo thumbnail could not be extracted" +#~ msgstr "Невозможно извлечь миниатюру фотографии" + +#, python-format +#~ msgid "%s metadata is not present" +#~ msgstr "%s метаданные не представлены" + +#~ msgid "" +#~ "Subfolder name could not be properly generated. Check to ensure there is " +#~ "sufficient metadata." +#~ msgstr "" +#~ "Не удаётся сгенерировать название подкаталога. Проверьте, хватает ли " +#~ "метаданных." + +#~ msgid "" +#~ "Choose whether to skip downloading the file, or to add a unique indentifier." +#~ msgstr "" +#~ "Выберите, следует ли пропустить загрузку файла или следует добавить к его " +#~ "названию уникальную метку." + +#, python-format +#~ msgid "The %(filetype)s was not copied." +#~ msgstr "The %(filetype)s не скопирован." + +#, python-format +#~ msgid "" +#~ "Metadata is essential for generating subfolder and/or file names.\n" +#~ "Source: %s" +#~ msgstr "" +#~ "Метаданных достаточно для генерирования названий подкаталогов и/или файлов.\n" +#~ "Источник: %s" + +#, python-format +#~ msgid "" +#~ "%(filetype)s filename could not be properly generated. Check to ensure there " +#~ "is sufficient metadata." +#~ msgstr "" +#~ "%(filetype)s название файла не удалось сгенерировать правильно. Проверьте, " +#~ "что метаданных хватает." + +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Partially generated filename: %(newname)s\n" +#~ "Destination: %(destination)s\n" +#~ "Problem: %(problem)s" +#~ msgstr "" +#~ "Источник: %(source)s\n" +#~ "Частичное название файла: %(newname)s\n" +#~ "Назначение: %(destination)s\n" +#~ "Проблема: %(problem)s" + +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Destination: %(destination)s\n" +#~ "Error: %(errorno)s %(strerror)s" +#~ msgstr "" +#~ "Источник: %(source)s\n" +#~ "Назначение: %(destination)s\n" +#~ "Ошибка: %(errorno)s %(strerror)s" + +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Destination: %(destination)s\n" +#~ "Error: %(errno)s %(strerror)s" +#~ msgstr "" +#~ "Источник: %(source)s\n" +#~ "Назначение: %(destination)s\n" +#~ "Ошибка: %(errno)s %(strerror)s" + +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Destination: %(destination)s\n" +#~ msgstr "" +#~ "Источник: %(source)s\n" +#~ "Назначение: %(destination)s\n" + +#~ msgid "Backup device missing" +#~ msgstr "Отсутствует носитель для резервного копирования" + +#~ msgid "Enter a new job code, or select a previous one." +#~ msgstr "Введите новую метку или выберите существующую." + +#~ msgid "Preferences were changed." +#~ msgstr "Настройки были изменены" + +#~ msgid "Subsecond metadata not present in photo" +#~ msgstr "Метаданные о долях секунд отсутствуют в фотографии" + +#~ msgid "image or video number was specified but filename has no number" +#~ msgstr "" +#~ "было обозначено использование номера фото или видео, но имя файл не содержит " +#~ "номера" + +#, python-format +#~ msgid "%s metadata is not present in photo" +#~ msgstr "%s метаданные отсутствуют в фотографии" + +#~ msgid "extension was specified but filename does not have an extension" +#~ msgstr "было указано расширение, но название файла не имеет расширения" + +#~ msgid "Missing Backup Devices" +#~ msgstr "Отсутствует носитель для резервного копирования" + +#~ msgid "" +#~ "Specify what to do when a photo or video of the same name has already been " +#~ "downloaded or backed up." +#~ msgstr "" +#~ "Укажите, что следует сделать, если фотография или видеоролик с таким же " +#~ "названием уже были РАНЕЕ загружены или сохранены в резервную копию" diff --git a/po/sv.po b/po/sv.po index bab8f99..61505a6 100644 --- a/po/sv.po +++ b/po/sv.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: rapid\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2010-05-27 22:33-0500\n" -"PO-Revision-Date: 2010-06-11 06:57+0000\n" +"PO-Revision-Date: 2010-06-11 20:12+0000\n" "Last-Translator: Ulf Urdén \n" "Language-Team: Swedish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-06-11 19:20+0000\n" +"X-Launchpad-Export-Date: 2010-07-03 03:56+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Translators: if neccessary, for guidance in how to translate this program, you may see http://damonlynch.net/translate.html diff --git a/po/uk.po b/po/uk.po index 053e26a..c70dc28 100644 --- a/po/uk.po +++ b/po/uk.po @@ -8,166 +8,166 @@ msgid "" msgstr "" "Project-Id-Version: rapid\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2010-05-27 22:33-0500\n" -"PO-Revision-Date: 2010-06-06 19:54+0000\n" +"POT-Creation-Date: 2010-07-02 22:51-0500\n" +"PO-Revision-Date: 2010-07-05 00:48+0000\n" "Last-Translator: Sergiy Gavrylov \n" "Language-Team: Ukrainian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-06-07 19:48+0000\n" +"X-Launchpad-Export-Date: 2010-07-06 19:08+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. Translators: if neccessary, for guidance in how to translate this program, you may see http://damonlynch.net/translate.html -#: rapid/rapid.py:104 rapid/rapid.py:4447 rapid/glade3/rapid.glade.h:72 +#: rapid/rapid.py:122 rapid/rapid.py:6181 rapid/glade3/rapid.glade.h:71 msgid "Rapid Photo Downloader" msgstr "Rapid Photo Downloader" -#: rapid/rapid.py:394 +#: rapid/rapid.py:449 msgid "New York" msgstr "Нью-Йорк" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Manila" msgstr "Манила" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Prague" msgstr "Прага" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Helsinki" msgstr "Гельсінкі" -#: rapid/rapid.py:395 +#: rapid/rapid.py:450 msgid "Wellington" msgstr "Веллінгтон" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Tehran" msgstr "Тегеран" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Kampala" msgstr "Кампала" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Paris" msgstr "Париж" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Berlin" msgstr "Берлін" -#: rapid/rapid.py:396 +#: rapid/rapid.py:451 msgid "Sydney" msgstr "Сідней" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Budapest" msgstr "Будапешт" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Rome" msgstr "Рим" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Moscow" msgstr "Москва" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Delhi" msgstr "Делі" -#: rapid/rapid.py:397 +#: rapid/rapid.py:452 msgid "Warsaw" msgstr "Варшава" -#: rapid/rapid.py:398 +#: rapid/rapid.py:453 msgid "Jakarta" msgstr "Джакарта" -#: rapid/rapid.py:398 +#: rapid/rapid.py:453 msgid "Madrid" msgstr "Мадрид" -#: rapid/rapid.py:398 +#: rapid/rapid.py:453 msgid "Stockholm" msgstr "Стокгольм" -#: rapid/rapid.py:425 +#: rapid/rapid.py:486 msgid "Invalid Downloads Today value.\n" msgstr "Неправильне значення «Завантажень сьогодні».\n" -#: rapid/rapid.py:426 +#: rapid/rapid.py:487 msgid "Resetting value to zero.\n" msgstr "Скинути значення на 0.\n" -#: rapid/rapid.py:465 +#: rapid/rapid.py:526 msgid "'Start of day' preference value is corrupted.\n" msgstr "Значення параметру «Початок дня» пошкоджене.\n" -#: rapid/rapid.py:466 +#: rapid/rapid.py:527 msgid "Resetting to midnight.\n" msgstr "Скидання налаштувань у північ.\n" -#: rapid/rapid.py:492 +#: rapid/rapid.py:553 msgid "Error in Photo Rename preferences" msgstr "Помилка в параметрі «Перейменування фото»" -#: rapid/rapid.py:523 rapid/rapid.py:1567 +#: rapid/rapid.py:584 rapid/rapid.py:1689 msgid "Sorry,these preferences contain an error:\n" msgstr "На жаль, ці параметри містять помилку:\n" -#: rapid/rapid.py:534 +#: rapid/rapid.py:595 msgid "Resetting to default values." msgstr "Скинути до типових значень." #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:609 rapid/renamesubfolderprefs.py:196 +#: rapid/rapid.py:670 rapid/renamesubfolderprefs.py:198 msgid "Job code" msgstr "Мітка" -#: rapid/rapid.py:677 +#: rapid/rapid.py:738 msgid "Error in Video Rename preferences" msgstr "Помилка в налаштуваннях «Перейменування відео»" -#: rapid/rapid.py:695 +#: rapid/rapid.py:756 msgid "Error in Photo Download Subfolders preferences" msgstr "Помилка в налаштуваннях «Підтеки для завантаження фото»" -#: rapid/rapid.py:712 +#: rapid/rapid.py:773 msgid "Error in Video Download Subfolders preferences" msgstr "Помилка в налаштуваннях «Підтеки для завантаження відео»" -#: rapid/rapid.py:745 rapid/rapid.py:1492 +#: rapid/rapid.py:806 rapid/rapid.py:1539 msgid "photos and videos" msgstr "фото та відео" -#: rapid/rapid.py:747 rapid/rapid.py:1502 rapid/rapid.py:1782 +#: rapid/rapid.py:808 rapid/rapid.py:1549 rapid/rapid.py:1658 msgid "photos" msgstr "фото" -#: rapid/rapid.py:880 +#: rapid/rapid.py:943 msgid "Select a folder to download photos to" msgstr "Виберіть теку для завантаження фото" -#: rapid/rapid.py:898 +#: rapid/rapid.py:961 msgid "Select a folder to download videos to" msgstr "Виберіть теку для завантаження відео" -#: rapid/rapid.py:980 +#: rapid/rapid.py:1043 #, python-format msgid "Select a folder containing %(file_types)s" msgstr "Виберіть теку, що містить %(file_types)s" -#: rapid/rapid.py:1002 +#: rapid/rapid.py:1065 #, python-format msgid "Select a folder in which to backup %(file_types)s" msgstr "Виберіть теку для резервних копій %(file_types)s" #. Translators: please do not modify or leave out html formatting tags like and . These are used to format the text the users sees -#: rapid/rapid.py:1095 +#: rapid/rapid.py:1146 msgid "" "Warning: There is insufficient metadata to fully generate the " "name. Please use other renaming options." @@ -175,7 +175,7 @@ msgstr "" "Увага: Недостатньо метаданих для повного створення назви. " "Використовуйте інші варіанти перейменування." -#: rapid/rapid.py:1129 +#: rapid/rapid.py:1182 msgid "" "Warning: There is insufficient metadata to fully generate " "subfolders. Please use other subfolder naming options." @@ -184,30 +184,30 @@ msgstr "" "Використовуйте інші варіанти найменування підтек." #. Translators: you should not modify or leave out the %s. This is a code used by the programming language python to insert a value that thes user will see -#: rapid/rapid.py:1133 +#: rapid/rapid.py:1186 #, python-format msgid "Example: %s" msgstr "Приклад: %s" -#: rapid/rapid.py:1159 +#: rapid/rapid.py:1212 msgid "" "Downloads today value not updated, as a download is currently occurring" msgstr "" "Значення «Завантажень сьогодні» не оновлене, завантаження ще продовжується" -#: rapid/rapid.py:1175 +#: rapid/rapid.py:1228 msgid "Stored number value not updated, as a download is currently occurring" msgstr "" "Значення «Збережено під номером» не оновлене, завантаження ще продовжується" -#: rapid/rapid.py:1205 +#: rapid/rapid.py:1258 #, python-format msgid "" "The %(filetype)s subfolder preferences had some unnecessary values removed." msgstr "Параметри підтеки %(filetype)s мають деякі вилучені зайві значення." #. Preferences list is now empty -#: rapid/rapid.py:1210 +#: rapid/rapid.py:1263 #, python-format msgid "" "The %(filetype)s subfolder preferences entered are invalid and cannot be " @@ -219,59 +219,95 @@ msgstr "" "Ці значення будуть скинуті до типових." #. check subfolder preferences for bad values -#: rapid/rapid.py:1224 rapid/rapid.py:1504 rapid/rapid.py:2533 +#: rapid/rapid.py:1277 rapid/rapid.py:1551 msgid "photo" msgstr "фото" -#: rapid/rapid.py:1225 rapid/rapid.py:1499 rapid/rapid.py:2541 +#: rapid/rapid.py:1278 rapid/rapid.py:1546 msgid "video" msgstr "відео" #. Translators: this value is used as an example device when automatic backup device detection is enabled. You should translate this. -#: rapid/rapid.py:1468 +#: rapid/rapid.py:1515 msgid "externaldrive1" msgstr "зовнішній пристрій 1" #. Translators: this value is used as an example device when automatic backup device detection is enabled. You should translate this. -#: rapid/rapid.py:1470 +#: rapid/rapid.py:1517 msgid "externaldrive2" msgstr "зовнішній пристрій 2" -#: rapid/rapid.py:1494 rapid/rapid.py:1780 +#: rapid/rapid.py:1541 rapid/rapid.py:1656 msgid "photos or videos" msgstr "фото або відео" -#: rapid/rapid.py:1497 +#: rapid/rapid.py:1544 msgid "videos" msgstr "відео" +#: rapid/rapid.py:1556 +#, python-format +msgid "" +"%(date)s\n" +"%(time)s" +msgstr "" +"%(date)s\n" +"%(time)s" + +#: rapid/rapid.py:1558 +#, python-format +msgid "%(date)s %(time)s" +msgstr "%(date)s %(time)s" + +#: rapid/rapid.py:1561 +#, python-format +msgid "%(hour)s:%(minute)s:%(second)s:%(subsecond)s" +msgstr "%(hour)s:%(minute)s:%(second)s:%(subsecond)s" + +#: rapid/rapid.py:1568 +#, python-format +msgid "%(date)s %(hour)s:%(minute)s:%(second)s:%(subsecond)s" +msgstr "%(date)s %(hour)s:%(minute)s:%(second)s:%(subsecond)s" + +#: rapid/rapid.py:1596 rapid/rapid.py:2242 +msgid "subfolder and filename" +msgstr "підтека та назва файла" + +#: rapid/rapid.py:1598 rapid/rapid.py:2244 +msgid "filename" +msgstr "назва файла" + +#: rapid/rapid.py:1600 rapid/rapid.py:2246 +msgid "subfolder" +msgstr "підтека" + #. This refers to when a device like a hard drive is having its contents scanned, #. looking for photos or videos. It is visible initially in the progress bar for each device -#. (which normally holds "x of y photos"). +#. (which normally holds "x photos and videos"). #. It maybe displayed only briefly if the contents of the device being scanned is small. -#: rapid/rapid.py:1556 +#: rapid/rapid.py:1672 msgid "scanning..." msgstr "сканування..." -#: rapid/rapid.py:1663 +#: rapid/rapid.py:1783 msgid "The following download path could not be created:\n" msgstr "Не вдалось створити такий шлях завантаження:\n" -#: rapid/rapid.py:1664 +#: rapid/rapid.py:1784 #, python-format msgid "%(path)s: " msgstr "%(path)s: " -#: rapid/rapid.py:1665 rapid/rapid.py:1666 rapid/rapid.py:1681 -#: rapid/rapid.py:1682 rapid/rapid.py:2364 rapid/rapid.py:2367 +#: rapid/rapid.py:1785 rapid/rapid.py:1786 rapid/rapid.py:1801 +#: rapid/rapid.py:1802 rapid/rapid.py:2063 rapid/rapid.py:2066 msgid "Download cannot proceed" msgstr "Неможливо продовжити завантаження" -#: rapid/rapid.py:1679 rapid/rapid.py:3381 +#: rapid/rapid.py:1799 rapid/rapid.py:4846 msgid "There is an error in the program preferences." msgstr "Помилка в налаштуваннях програми." -#: rapid/rapid.py:1680 +#: rapid/rapid.py:1800 msgid "" "\n" "Please check preferences, restart the program, and try again." @@ -283,10 +319,10 @@ msgstr "" #. It refers to the actual number of photos that can be copied. For example, the user might see the following: #. '0 of 512 photos' or '0 of 10 videos' or '0 of 202 photos and videos'. #. This particular text is displayed to the user before the download has started. -#: rapid/rapid.py:1791 +#: rapid/rapid.py:1974 #, python-format -msgid "0 of %(number)s %(filetypes)s" -msgstr "0 з %(number)s %(filetypes)s" +msgid "%(number)s %(filetypes)s" +msgstr "%(number)s %(filetypes)s" #. Translators: as you have already seen, the text can contain values that should not be modified or left out by you, for example %s. #. This text is another example of that, but it is is a little more complex. Here there are two values which will be displayed @@ -294,345 +330,212 @@ msgstr "0 з %(number)s %(filetypes)s" #. %(number)s should be left exactly as is: 'number' should not be translated. The same applies to %(device)s: 'device' should #. not be translated. Generally speaking, if translating the sentence requires it, you can move items like '%(xyz)s' around #. in a sentence, but you should never modify them or leave them out. -#: rapid/rapid.py:1803 +#: rapid/rapid.py:1985 #, python-format msgid "Device scan complete: found %(number)s %(filetypes)s on %(device)s" msgstr "" "Сканування завершене: знайдено %(number)s %(filetypes)s на %(device)s" -#: rapid/rapid.py:1810 +#: rapid/rapid.py:1992 #, python-format msgid "Device scan complete: no %(filetypes)s found on %(device)s" msgstr "Сканування завершене: не знайдено %(filetypes)s на %(device)s" -#: rapid/rapid.py:1844 -#, python-format -msgid "%(filetype)s filename could not be generated" -msgstr "Назву файла %(filetype)s не вдалось згенерувати" +#. This message informs the user that the device (e.g. camera, hard drive or memory card) was automatically unmounted and they can now remove it +#: rapid/rapid.py:2013 +msgid "The device can now be safely removed" +msgstr "Зараз можна безпечно вилучити носій" -#. '%(source)s' and '%(problem)s' are two more examples of text that should not be modified or left out -#: rapid/rapid.py:1846 +#: rapid/rapid.py:2019 #, python-format -msgid "" -"Source: %(source)s\n" -"Problem: %(problem)s" -msgstr "" -"Джерело: %(source)s\n" -"Проблема: %(problem)s" +msgid "%(noFiles)s %(filetypes)s downloaded" +msgstr "Завантажено %(noFiles)s %(filetypes)s" -#: rapid/rapid.py:1850 +#: rapid/rapid.py:2022 #, python-format -msgid "" -"%(filetype)s filename could not be properly generated. Check to ensure there " -"is sufficient metadata." -msgstr "" -"Назву файла %(filetype)s не вдалось згенерувати правильно. Переконайтесь чи " -"достатньо матаданих." +msgid "%(noFiles)s %(filetypes)s failed to download" +msgstr "%(noFiles)s %(filetypes)s не вдалось завантажити" + +#: rapid/rapid.py:2028 rapid/rapid.py:5627 +msgid "warnings" +msgstr "застереження" + +#: rapid/rapid.py:2030 rapid/rapid.py:5631 +msgid "errors" +msgstr "помилки" -#: rapid/rapid.py:1851 +#: rapid/rapid.py:2057 #, python-format -msgid "" -"Source: %(source)s\n" -"Partially generated filename: %(newname)s\n" -"Destination: %(destination)s\n" -"Problem: %(problem)s" -msgstr "" -"Джерело: %(source)s\n" -"Частково згенерована назва: %(newname)s\n" -"Адресат: %(destination)s\n" -"Проблема: %(problem)s" +msgid "Source: %s\n" +msgstr "Джерело: %s\n" -#: rapid/rapid.py:1859 rapid/rapid.py:1864 rapid/rapid.py:1883 -#: rapid/rapid.py:2207 +#: rapid/rapid.py:2059 #, python-format -msgid "" -"Source: %(source)s\n" -"Destination: %(destination)s" -msgstr "" -"Джерело: %(source)s\n" -"Адресат: %(destination)s" +msgid "Device: %s\n" +msgstr "Носій: %s\n" -#: rapid/rapid.py:1861 +#: rapid/rapid.py:2060 #, python-format -msgid "Unique identifier '%s' added" -msgstr "Доданий унікальний ідентифікатор '%s'" +msgid "Destination: %s" +msgstr "Адресат: %s" + +#: rapid/rapid.py:2061 rapid/rapid.py:2064 +msgid "Could not create temporary download directory" +msgstr "Не вдалось створити тимчасову теку для завантаження" + +#: rapid/rapid.py:2064 +msgid "Error:" +msgstr "Помилка:" + +#: rapid/rapid.py:2088 +msgid "Backup path does not exist" +msgstr "Немає шляху для резервного копіювання" -#: rapid/rapid.py:1869 rapid/rapid.py:2270 +#: rapid/rapid.py:2089 #, python-format -msgid "Source: %(source)s" -msgstr "Джерело: %(source)s" +msgid "The path %s could not be created" +msgstr "Шлях %s не вдалось створити" -#: rapid/rapid.py:1877 rapid/rapid.py:1882 -msgid "Download copying error" -msgstr "Помилка копіювання завантаження" +#: rapid/rapid.py:2090 +msgid "No backups can occur" +msgstr "Резервне копіювання не може відбутись" -#: rapid/rapid.py:1878 +#: rapid/rapid.py:2117 #, python-format msgid "" "Source: %(source)s\n" "Destination: %(destination)s\n" -"Error: %(errorno)s %(strerror)s" +"%(problem)s" msgstr "" "Джерело: %(source)s\n" "Адресат: %(destination)s\n" -"Помилка: %(errorno)s %(strerror)s" - -#: rapid/rapid.py:1880 rapid/rapid.py:1885 -#, python-format -msgid "The %(filetype)s was not copied." -msgstr "%(filetype)s не скопійований." +"%(problem)s" -#: rapid/rapid.py:1889 -msgid "" -"Photos detected with the same filenames, but taken at different times:" -msgstr "Виявлені фото з однаковими назвами, але зроблені в різний час:" - -#: rapid/rapid.py:1890 +#: rapid/rapid.py:2146 rapid/rapid.py:2492 rapid/rapid.py:2527 +#: rapid/rapid.py:2555 rapid/rapid.py:2586 rapid/rapid.py:2605 #, python-format msgid "" -"First photo: %(image1)s %(image1_date_time)s:%(image1_subseconds)s\n" -"Second photo: %(image2)s %(image2_date_time)s:%(image2_subseconds)s" +"Source: %(source)s\n" +"Destination: %(destination)s" msgstr "" -"Перше фото: %(image1)s %(image1_date_time)s:%(image1_subseconds)s\n" -"Друге фото: %(image2)s %(image2_date_time)s:%(image2_subseconds)s" - -#: rapid/rapid.py:1914 rapid/rapid.py:1927 -#, python-format -msgid "Could not open %(filetype)s" -msgstr "Не вдалось відкрити %(filetype)s" - -#: rapid/rapid.py:1915 rapid/rapid.py:1928 -#, python-format -msgid "Source: %s" -msgstr "Джерело: %s" +"Джерело: %(source)s\n" +"Адресат: %(destination)s" -#: rapid/rapid.py:1950 -#, python-format -msgid "%(filetype)s has no metadata" -msgstr "%(filetype)s не має метаданих" +#. hopefully inst will never be None, but just to be safe... +#: rapid/rapid.py:2161 +msgid "Please check your system and try again." +msgstr "Перевірте систему та спробуйте знову." -#: rapid/rapid.py:1951 -#, python-format -msgid "" -"Metadata is essential for generating subfolder and/or file names.\n" -"Source: %s" -msgstr "" -"Метадані необхідні для створення підтеки та/або назв файлів.\n" -"Джерело: %s" +#: rapid/rapid.py:2181 +msgid "Photos detected with the same filenames, but taken at different times" +msgstr "Виявлені фото з однаковою назвою, але зроблені в різний час" -#: rapid/rapid.py:1962 -msgid "" -"Subfolder name could not be properly generated. Check to ensure there is " -"sufficient metadata." -msgstr "" -"Не вдалось згенерувати правильну назву підтеки. Переконайтесь чи достатньо " -"метаданих." +#: rapid/rapid.py:2221 +msgid "Photo has already been downloaded" +msgstr "Фото вже були завантажені" -#: rapid/rapid.py:1963 +#: rapid/rapid.py:2222 rapid/rapid.py:2621 #, python-format -msgid "" -"Subfolder: %(subfolder)s\n" -"File: %(file)s\n" -"Problem: %(problem)s" -msgstr "" -"Підтека: %(subfolder)s\n" -"Файл: %(file)s\n" -"Проблема: %(problem)s" +msgid "Source: %(source)s" +msgstr "Джерело: %(source)s" #. A new day, according the user's preferences of what time a day begins, has started -#: rapid/rapid.py:2147 +#: rapid/rapid.py:2420 msgid "New day has started - resetting 'Downloads Today' sequence number" msgstr "" "Почався новий день - скидання порядкового номера параметра «Завантажень " "сьогодні»" -#: rapid/rapid.py:2206 +#: rapid/rapid.py:2491 #, python-format msgid "Backup of %(file_type)s already exists" msgstr "Резервна копія %(file_type)s вже наявна" -#: rapid/rapid.py:2210 +#: rapid/rapid.py:2495 #, python-format msgid "Backup %(file_type)s overwritten" msgstr "Резервна копія %(file_type)s перезаписана" -#: rapid/rapid.py:2215 +#: rapid/rapid.py:2499 #, python-format msgid "%(file_type)s not backed up to %(volume)s" msgstr "Не створена резервна копія %(file_type)s у %(volume)s" -#: rapid/rapid.py:2217 +#: rapid/rapid.py:2501 #, python-format msgid "%(file_type)s not backed up" msgstr "Не створена резервна копія %(file_type)s" -#: rapid/rapid.py:2243 rapid/rapid.py:2260 +#: rapid/rapid.py:2524 rapid/rapid.py:2552 rapid/rapid.py:2585 +#: rapid/rapid.py:2604 msgid "Backing up error" msgstr "Помилка резервного копіювання" -#: rapid/rapid.py:2244 +#: rapid/rapid.py:2525 rapid/rapid.py:2553 #, python-format msgid "Destination directory could not be created: %(directory)s\n" msgstr "Не вдалось створити теку адресата: %(directory)s\n" -#: rapid/rapid.py:2246 -#, python-format -msgid "" -"Source: %(source)s\n" -"Destination: %(destination)s\n" -msgstr "" -"Джерело: %(source)s\n" -"Адресат: %(destination)s\n" - -#: rapid/rapid.py:2248 +#: rapid/rapid.py:2529 rapid/rapid.py:2588 #, python-format -msgid "Error: %(errno)s %(strerror)s" -msgstr "Помилка: %(errno)s %(strerror)s" +msgid "Error: %(inst)s" +msgstr "Помилка: %(inst)s" -#: rapid/rapid.py:2249 rapid/rapid.py:2263 +#: rapid/rapid.py:2530 rapid/rapid.py:2558 rapid/rapid.py:2589 +#: rapid/rapid.py:2608 #, python-format msgid "The %(file_type)s was not backed up." msgstr "Не створена резервна копія %(file_type)s." -#: rapid/rapid.py:2261 +#: rapid/rapid.py:2557 rapid/rapid.py:2607 #, python-format -msgid "" -"Source: %(source)s\n" -"Destination: %(destination)s\n" -"Error: %(errno)s %(strerror)s" -msgstr "" -"Джерело: %(source)s\n" -"Адресат: %(destination)s\n" -"Помилка: %(errno)s %(strerror)s" +msgid "Error: %(errno)s %(strerror)s" +msgstr "Помилка: %(errno)s %(strerror)s" -#: rapid/rapid.py:2269 +#: rapid/rapid.py:2620 #, python-format msgid "%(file_type)s could not be backed up" msgstr "Не вдалось створити резервну копію %(file_type)s" -#: rapid/rapid.py:2272 +#: rapid/rapid.py:2623 msgid "No suitable backup volume was found" msgstr "Не знайдено відповідного носія для резервного копіювання" -#: rapid/rapid.py:2274 +#: rapid/rapid.py:2625 msgid "A backup location was not found" msgstr "Не знайдено місця для резервного копіювання" -#. This message informs the user that the device (e.g. camera, hard drive or memory card) was automatically unmounted and they can now remove it -#: rapid/rapid.py:2288 -msgid "The device can now be safely removed" -msgstr "Зараз можна безпечно вилучити носій" - -#: rapid/rapid.py:2294 -#, python-format -msgid "%(noFiles)s %(filetypes)s downloaded" -msgstr "Завантажено %(noFiles)s %(filetypes)s" - -#: rapid/rapid.py:2297 -#, python-format -msgid "%(noFiles)s %(filetypes)s skipped" -msgstr "Зігноровано %(noFiles)s %(filetypes)s" - -#: rapid/rapid.py:2303 rapid/rapid.py:4027 -msgid "warnings" -msgstr "застереження" - -#: rapid/rapid.py:2305 rapid/rapid.py:4029 -msgid "errors" -msgstr "помилки" - -#: rapid/rapid.py:2331 rapid/rapid.py:2823 rapid/rapid.py:2838 -msgid "Photo thumbnail could not be extracted" -msgstr "Не вдалось витягти мініатюру фото" - -#: rapid/rapid.py:2358 -#, python-format -msgid "Source: %s\n" -msgstr "Джерело: %s\n" - -#: rapid/rapid.py:2360 -#, python-format -msgid "Device: %s\n" -msgstr "Носій: %s\n" - -#: rapid/rapid.py:2361 -#, python-format -msgid "Destination: %s" -msgstr "Адресат: %s" - -#: rapid/rapid.py:2362 rapid/rapid.py:2365 -msgid "Could not create temporary download directory" -msgstr "Не вдалось створити тимчасову теку для завантаження" - -#: rapid/rapid.py:2365 -msgid "Error:" -msgstr "Помилка:" - -#: rapid/rapid.py:2382 +#: rapid/rapid.py:2679 #, python-format msgid "This device has no %(types_searched_for)s to download from." msgstr "На цьому носії немає %(types_searched_for)s для завантаження." -#: rapid/rapid.py:2417 +#: rapid/rapid.py:2733 #, python-format msgid "Download has started from %s" msgstr "Завантаження почалось з %s" -#: rapid/rapid.py:2434 -msgid "Backup path does not exist" -msgstr "Немає шляху для резервного копіювання" - -#: rapid/rapid.py:2435 +#: rapid/rapid.py:2736 #, python-format -msgid "The path %s could not be created" -msgstr "Шлях %s не вдалось створити" - -#: rapid/rapid.py:2436 rapid/rapid.py:2444 -msgid "No backups can occur" -msgstr "Резервне копіювання не може відбутись" - -#: rapid/rapid.py:2442 -msgid "Backup device missing" -msgstr "Відсутній пристрій для резервного копіювання" - -#: rapid/rapid.py:2443 -msgid "No backup device was automatically detected" -msgstr "Не вдалося автоматично виявити носій для резервного копіювання" - -#: rapid/rapid.py:2534 rapid/rapid.py:3343 rapid/rapid.py:3345 -msgid "Photo" -msgstr "Фото" - -#: rapid/rapid.py:2535 -msgid "Photo skipped" -msgstr "Пропущене фото" - -#: rapid/rapid.py:2536 -msgid "Photo already exists" -msgstr "Фото вже наявне" - -#: rapid/rapid.py:2542 rapid/rapid.py:3343 -msgid "Video" -msgstr "Відео" - -#: rapid/rapid.py:2543 -msgid "Video skipped" -msgstr "Пропущене відео" - -#: rapid/rapid.py:2544 -msgid "Video already exists" -msgstr "Відео вже наявне" +msgid "Attempting to download %s files" +msgstr "Спроба завантаження %s файлів" -#: rapid/rapid.py:2592 +#. reset the progress bar to update the status of this download attempt +#: rapid/rapid.py:2769 rapid/rapid.py:2836 #, python-format msgid "%(number)s of %(total)s %(filetypes)s" msgstr "%(number)s з %(total)s %(filetypes)s" -#: rapid/rapid.py:2607 rapid/rapid.py:2611 +#: rapid/rapid.py:2832 +#, python-format +msgid "%(number)s of %(total)s %(filetypes)s (%(remaining)s remaining)" +msgstr "%(number)s з %(total)s %(filetypes)s (%(remaining)s залишилось)" + +#: rapid/rapid.py:2857 rapid/rapid.py:2861 msgid "Could not delete photo or video from device" msgstr "Не вдалось вилучити фото або відео з пристрою" -#: rapid/rapid.py:2608 +#: rapid/rapid.py:2858 #, python-format msgid "" "Photo: %(source)s\n" @@ -641,45 +544,61 @@ msgstr "" "Фото: %(source)s\n" "Помилка: %(errno)s %(strerror)s" -#: rapid/rapid.py:2612 +#: rapid/rapid.py:2862 #, python-format msgid "Photo: %(source)s" msgstr "Фото: %(source)s" -#: rapid/rapid.py:2614 +#: rapid/rapid.py:2864 #, python-format msgid "Deleted %(number)i %(filetypes)s from device" msgstr "З пристрою вилучено %(number)i %(filetypes)s" -#: rapid/rapid.py:2624 +#: rapid/rapid.py:2871 #, python-format msgid "Download complete from %s" msgstr "Завершено завантаження з %s" #. Device refers to a thing like a camera, memory card in its reader, external hard drive, Portable Storage Device, etc. -#: rapid/rapid.py:2700 +#: rapid/rapid.py:2993 rapid/rapid.py:3466 msgid "Device" msgstr "Пристрій" #. Size refers to the total size of images on the device, typically in MB or GB -#: rapid/rapid.py:2705 +#: rapid/rapid.py:2998 rapid/rapid.py:3455 msgid "Size" msgstr "Розмір" -#: rapid/rapid.py:2708 +#: rapid/rapid.py:3001 msgid "Download Progress" msgstr "Поступ завантаження" -#: rapid/rapid.py:2824 rapid/rapid.py:2839 -msgid "It may be corrupted" -msgstr "Можливо він пошкоджений" +#: rapid/rapid.py:3089 +msgid "Downloading From Cameras" +msgstr "Звантаження з камер" + +#: rapid/rapid.py:3095 +msgid "Downloading directly from a camera may work poorly or not at all" +msgstr "Звантаження з камери може працювати погано або не працювати зовсім" -#: rapid/rapid.py:2869 +#: rapid/rapid.py:3096 +msgid "" +"Downloading from a card reader always works and is generally much faster. It " +"is strongly recommended to use a card reader." +msgstr "" +"Звантаження з пристрою для читання карток працює завжди і, як правило, " +"набагато швидше. Настійно рекомендується використовувати його." + +#: rapid/rapid.py:3110 +msgid "_Show this message again" +msgstr "_Показувати це повідомлення знову" + +#: rapid/rapid.py:3145 msgid "Device Detected" msgstr "Виявлений пристрій" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2878 +#: rapid/rapid.py:3154 msgid "" "Should this device or partition be used to download photos or videos from?" msgstr "" @@ -687,70 +606,155 @@ msgstr "" "відео?" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2897 +#: rapid/rapid.py:3173 msgid "_Remember this choice" msgstr "_Пам’ятати цей вибір" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2934 +#: rapid/rapid.py:3210 #, python-format msgid "%s selected for downloading from" msgstr "%s вибрано для вивантаження" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2937 +#: rapid/rapid.py:3213 msgid "This device or partition will always be used to download from" msgstr "" "Цей пристрій або розділ завжди використовуватиметься для вивантаження" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2940 +#: rapid/rapid.py:3216 #, python-format msgid "%s rejected as a download device" msgstr "%s відкинутий як пристрій для завантаження" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt -#: rapid/rapid.py:2943 +#: rapid/rapid.py:3219 msgid "This device or partition will never be used to download from" msgstr "" "Цей пристрій або розділ ніколи не використовуватиметься для вивантаження" -#: rapid/rapid.py:2950 +#: rapid/rapid.py:3226 msgid "Remove all Job Codes?" msgstr "Вилучити всі мітки?" -#: rapid/rapid.py:2967 +#: rapid/rapid.py:3243 msgid "Should all Job Codes be removed?" msgstr "Чи потрібно вилучити всі мітки?" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:2995 +#: rapid/rapid.py:3271 msgid "Enter a Job Code" msgstr "Введіть мітку" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:3013 -msgid "Enter a new job code, or select a previous one." -msgstr "Введіть нову мітку або виберіть попередню." +#: rapid/rapid.py:3290 +msgid "Enter a new Job Code, or select a previous one" +msgstr "Введіть нову мітку або виберіть попередню" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode -#: rapid/rapid.py:3016 -msgid "Enter a new job code." -msgstr "Введіть нову мітку." +#: rapid/rapid.py:3293 +msgid "Enter a new Job Code" +msgstr "Введіть нову мітку" -#: rapid/rapid.py:3021 +#: rapid/rapid.py:3298 rapid/rapid.py:4417 msgid "Job Code:" msgstr "Мітка:" -#: rapid/rapid.py:3068 +#: rapid/rapid.py:3345 msgid "Job Code entered" msgstr "Мітка введена" -#: rapid/rapid.py:3070 +#: rapid/rapid.py:3347 msgid "Job Code not entered" msgstr "Мітка не введена" -#: rapid/rapid.py:3330 +#: rapid/rapid.py:3401 +msgid "Status" +msgstr "Статус" + +#: rapid/rapid.py:3409 +msgid "Type" +msgstr "Тип" + +#: rapid/rapid.py:3418 rapid/rapid.py:4808 rapid/rapid.py:4810 +msgid "Photo" +msgstr "Фото" + +#: rapid/rapid.py:3420 +msgid "File" +msgstr "Файл" + +#: rapid/rapid.py:3435 +msgid "Job Code" +msgstr "Мітка" + +#: rapid/rapid.py:3445 +msgid "Date" +msgstr "Дата" + +#: rapid/rapid.py:3477 rapid/renamesubfolderprefs.py:194 +msgid "Filename" +msgstr "Назва файла" + +#: rapid/rapid.py:3488 +msgid "Path" +msgstr "Шлях" + +#: rapid/rapid.py:3843 +#, python-format +msgid "%(filetype)s was downloaded successfully" +msgstr "%(filetype)s завантажено успішно" + +#: rapid/rapid.py:3845 +#, python-format +msgid "%(filetype)s was not downloaded" +msgstr "%(filetype)s не завантажено" + +#: rapid/rapid.py:3847 +#, python-format +msgid "%(filetype)s was downloaded with warnings" +msgstr "%(filetype)s завантажено зі застереженнями" + +#: rapid/rapid.py:3849 +#, python-format +msgid "%(filetype)s was downloaded but there were problems backing up" +msgstr "%(filetype)s завантажено, але виникли проблеми резервування" + +#: rapid/rapid.py:3851 +#, python-format +msgid "%(filetype)s was neither downloaded nor backed up" +msgstr "%(filetype)s не завантажено і не зарезервовано" + +#: rapid/rapid.py:3853 +#, python-format +msgid "%(filetype)s is ready to be downloaded" +msgstr "%(filetype)s готово до завантаження" + +#: rapid/rapid.py:3855 +#, python-format +msgid "%(filetype)s is about to be downloaded" +msgstr "приблизно %(filetype)s для завантаження" + +#: rapid/rapid.py:3857 +#, python-format +msgid "%(filetype)s will be downloaded with warnings" +msgstr "%(filetype)s буде завантажено зі застереженнями" + +#: rapid/rapid.py:3859 +#, python-format +msgid "%(filetype)s cannot be downloaded" +msgstr "%(filetype)s не буде завантажено" + +#: rapid/rapid.py:4240 +msgid "Preview" +msgstr "Попередній перегляд" + +#: rapid/rapid.py:4439 +msgid "Enter a new Job Code and press Enter, or select an existing Job Code" +msgstr "Введіть нову мітку і натисніть «Enter», або виберіть наявну мітку" + +#: rapid/rapid.py:4795 #, python-format msgid "" "Sorry, this device location does not exist:\n" @@ -763,22 +767,26 @@ msgstr "" "\n" "Вирішіть цю проблему або змініть налаштування." -#: rapid/rapid.py:3334 +#: rapid/rapid.py:4799 msgid "Problem with Device Location Folder" msgstr "Проблема з текою призначення пристрою" -#: rapid/rapid.py:3350 +#: rapid/rapid.py:4808 +msgid "Video" +msgstr "Відео" + +#: rapid/rapid.py:4815 #, python-format msgid "The %(file_type)s Download Folder does not exist.\n" msgstr "Теки для завантаження %(file_type)s не існує.\n" -#: rapid/rapid.py:3359 +#: rapid/rapid.py:4824 #, python-format msgid "The %(file_type)s Download Folder exists but cannot be written to.\n" msgstr "" "Тека для завантаження %(file_type)s існує, але в неї не можна записувати.\n" -#: rapid/rapid.py:3364 +#: rapid/rapid.py:4829 msgid "" "Sorry, problems were encountered with your download folders. Please fix the " "problems or modify the preferences.\n" @@ -788,60 +796,65 @@ msgstr "" "або змініть налаштування.\n" "\n" -#: rapid/rapid.py:3367 +#: rapid/rapid.py:4832 msgid "Problem with Download Folder" msgstr "Проблема з текою для завантаження" -#: rapid/rapid.py:3369 +#: rapid/rapid.py:4834 msgid "Problem with Download Folders" msgstr "Проблема з теками для завантаження" -#: rapid/rapid.py:3382 +#: rapid/rapid.py:4847 msgid "Some preferences will be reset." msgstr "Деякі параметри будуть скинуті." -#: rapid/rapid.py:3416 +#: rapid/rapid.py:4880 +msgid "Displaying warning about downloading directly from camera" +msgstr "Показувати застереження під час завантаження прямо з камери" + +#: rapid/rapid.py:4890 #, python-format msgid "Prompting whether to use %s" msgstr "Чи нагадувати про використання %s" -#: rapid/rapid.py:3444 +#: rapid/rapid.py:4917 msgid "Prompting for Job Code" msgstr "Нагадування про вибір мітки" -#: rapid/rapid.py:3448 +#: rapid/rapid.py:4921 msgid "Already prompting for Job Code, do not prompt again" msgstr "Про мітку вже відомо, не нагадувати знову" -#: rapid/rapid.py:3463 -msgid "Starting downloads that have been waiting for a Job Code" -msgstr "Розпочинаються завантаження, що очікували на мітку" - -#: rapid/rapid.py:3467 +#: rapid/rapid.py:4938 msgid "Starting downloads" msgstr "Розпочинаються завантаження" -#: rapid/rapid.py:3482 +#. autostart is true +#: rapid/rapid.py:4942 +msgid "Starting downloads that have been waiting for a Job Code" +msgstr "Розпочинаються завантаження, що очікували на мітку" + +#: rapid/rapid.py:4984 #, python-format msgid "Creating photo download folder %(folder)s" msgstr "Створення теки для завантаження фото %(folder)s" -#: rapid/rapid.py:3487 +#: rapid/rapid.py:4989 #, python-format msgid "Failed to create default photo download folder %(folder)s" msgstr "Не вдалось створити типову теку для завантаження фото %(folder)s" -#: rapid/rapid.py:3491 +#: rapid/rapid.py:4993 #, python-format msgid "Creating video download folder %(folder)s" msgstr "Створення теки для завантаження відео %(folder)s" -#: rapid/rapid.py:3496 +#: rapid/rapid.py:4998 #, python-format msgid "Failed to create default video download folder %(folder)s" msgstr "Не вдалось створити типову теку для завантаження відео %(folder)s" -#: rapid/rapid.py:3521 +#: rapid/rapid.py:5023 msgid "" "A newer version of this program was previously run on this computer.\n" "\n" @@ -849,7 +862,7 @@ msgstr "" "На цьому комп'ютері раніше запускалася новіша версія програми.\n" "\n" -#: rapid/rapid.py:3523 +#: rapid/rapid.py:5025 msgid "" "Program preferences appear to be valid, but please check them to ensure " "correct operation." @@ -857,15 +870,15 @@ msgstr "" "Здається параметри програми правильні, але перевірте їх, щоб програма " "працювала коректно." -#: rapid/rapid.py:3525 +#: rapid/rapid.py:5027 msgid "Sorry, some preferences are invalid and will be reset." msgstr "На жаль, деякі параметри помилкові і будуть скинуті." -#: rapid/rapid.py:3526 +#: rapid/rapid.py:5028 msgid "Warning:" msgstr "Попередження:" -#: rapid/rapid.py:3531 +#: rapid/rapid.py:5033 msgid "" "This version of the program is newer than the previously run version. " "Checking preferences." @@ -873,11 +886,11 @@ msgstr "" "Ця версія програми новіша, ніж та, що працювала раніше. Перевірте " "налаштування." -#: rapid/rapid.py:3538 +#: rapid/rapid.py:5040 msgid "Preferences were modified." msgstr "Параметри були змінені." -#: rapid/rapid.py:3539 +#: rapid/rapid.py:5041 msgid "" "This version of the program uses different preferences than the old version. " "Your preferences have been updated.\n" @@ -889,11 +902,11 @@ msgstr "" "\n" "Перевірте їх, щоб програма працювала коректно." -#: rapid/rapid.py:3543 +#: rapid/rapid.py:5045 msgid "No preferences needed to be changed." msgstr "Немає параметрів, які необхідно було б змінити." -#: rapid/rapid.py:3545 +#: rapid/rapid.py:5047 msgid "" "This version of the program uses different preferences than the old version. " "Some of your previous preferences were invalid, and could not be updated. " @@ -902,129 +915,154 @@ msgstr "" "Ця версія програми використовує інші налаштування, ніж стара. Деякі з " "попередніх налаштувань помилкові і не будуть оновлені а будуть скинуті." -#: rapid/rapid.py:3555 +#: rapid/rapid.py:5057 msgid "Problem using pynotify." msgstr "Проблема з використанням pynotify." -#: rapid/rapid.py:3571 +#: rapid/rapid.py:5073 msgid "Failed to receive pynotify server capabilities." msgstr "Не вдалося отримати властивості сервера pynotify." -#: rapid/rapid.py:3580 +#: rapid/rapid.py:5084 msgid "" "Warning: desktop environment notification server is incorrectly configured." msgstr "Увага: сервер повідомлень середовища налаштований неправильно." -#: rapid/rapid.py:3626 +#: rapid/rapid.py:5132 msgid "and" msgstr "та" -#: rapid/rapid.py:3631 +#: rapid/rapid.py:5137 msgid "Using backup devices" msgstr "Використання пристроїв для резервного копіювання" -#: rapid/rapid.py:3633 +#: rapid/rapid.py:5139 msgid "Using backup device" msgstr "Використання пристрою для резервного копіювання" -#: rapid/rapid.py:3635 +#: rapid/rapid.py:5141 msgid "No backup devices detected" msgstr "Пристроїв для резервного копіювання не виявлено" -#: rapid/rapid.py:3674 rapid/rapid.py:3831 +#: rapid/rapid.py:5188 rapid/rapid.py:5350 #, python-format msgid "Device %(device)s (%(path)s) ignored" msgstr "Пристрій %(device)s (%(path)s) проігнорований" -#: rapid/rapid.py:3790 +#: rapid/rapid.py:5309 #, python-format msgid "Detected %(device)s with path %(path)s" msgstr "Виявлено %(device)s за адресою %(path)s" -#: rapid/rapid.py:3794 +#: rapid/rapid.py:5313 msgid "Automatically start download is true" msgstr "Автоматичний початок завантаження — так" -#: rapid/rapid.py:3796 +#: rapid/rapid.py:5315 msgid "Automatically start download is false" msgstr "Автоматичний початок завантаження — ні" -#: rapid/rapid.py:3849 +#: rapid/rapid.py:5368 msgid "Using manually specified path" msgstr "Використовувати вручну зазначений шлях" -#: rapid/rapid.py:3857 +#: rapid/rapid.py:5376 rapid/rapid.py:5417 #, python-format msgid "Backing up to %(path)s" msgstr "Резервне копіювання до %(path)s" -#: rapid/rapid.py:3968 rapid/rapid.py:4017 +#. the user is trying to backup to a device that is currently being downloaded from..... we don't normally allow that, but what to do? +#: rapid/rapid.py:5441 +#, python-format +msgid "Warning: backup device %(device)s is currently being downloaded from" +msgstr "" +"Попередження: резервний пристрій %(device)s на цей час, буде завантажений з" + +#: rapid/rapid.py:5458 +msgid "D_ownload Selected" +msgstr "З_авантажити вибрані" + +#: rapid/rapid.py:5550 rapid/rapid.py:5599 msgid "All downloads complete" msgstr "Всі завантаження завершені" -#: rapid/rapid.py:3982 +#: rapid/rapid.py:5564 msgid "MB/s" msgstr "МБ/с" -#: rapid/rapid.py:3992 +#: rapid/rapid.py:5574 msgid "About 1 second remaining" msgstr "Залишилось біля 1 секунди" -#: rapid/rapid.py:3994 +#: rapid/rapid.py:5576 #, python-format msgid "About %i seconds remaining" msgstr "Залишилось біля %i секунд" -#: rapid/rapid.py:3996 +#: rapid/rapid.py:5578 msgid "About 1 minute remaining" msgstr "Залишилось біля 1 хвилини" #. Translators: in the text '%(minutes)i:%(seconds)02i', only the : should be translated, if needed. #. '%(minutes)i' and '%(seconds)02i' should not be modified or left out. They are used to format and display the amount #. of time the download has remainging, e.g. 'About 5:36 minutes remaining' -#: rapid/rapid.py:4001 +#: rapid/rapid.py:5583 #, python-format msgid "About %(minutes)i:%(seconds)02i minutes remaining" msgstr "Залишилось біля %(minutes)i:%(seconds)02i" -#: rapid/rapid.py:4019 -msgid "photos downloaded" -msgstr "завантажено фото" +#: rapid/rapid.py:5602 rapid/rapid.py:5608 rapid/rapid.py:5614 +#: rapid/rapid.py:5620 rapid/rapid.py:5625 rapid/rapid.py:5629 +#, python-format +msgid "%(number)s %(numberdownloaded)s" +msgstr "%(number)s %(numberdownloaded)s" -#: rapid/rapid.py:4021 -msgid "photos skipped" -msgstr "пропущено фото" +#: rapid/rapid.py:5604 rapid/rapid.py:5616 +#, python-format +msgid "%(filetype)s downloaded" +msgstr "%(filetype)s завантажено" -#: rapid/rapid.py:4023 -msgid "videos downloaded" -msgstr "завантажено відео" +#: rapid/rapid.py:5610 rapid/rapid.py:5622 +#, python-format +msgid "%(filetype)s failed to download" +msgstr "%(filetype)s не вдалось завантажити" -#: rapid/rapid.py:4025 -msgid "videos skipped" -msgstr "пропущено відео" +#: rapid/rapid.py:5789 +msgid "_Resume" +msgstr "_Продовжити" -#. This text will be displayed to the user on the Download / Pause button. -#. Please note the space at the end of the label - it is needed to meet the Gnome Human Interface Guidelines -#: rapid/rapid.py:4125 -msgid "_Download " -msgstr "_Завантажити " +#: rapid/rapid.py:5792 +msgid "_Download All" +msgstr "З_авантажити все" #. This text will be displayed to the user on the Download / Pause button. -#: rapid/rapid.py:4135 +#: rapid/rapid.py:5801 msgid "_Pause" msgstr "_Пауза" -#: rapid/rapid.py:4209 -msgid "Preferences were changed." -msgstr "Налаштування були змінені." +#: rapid/rapid.py:5914 +msgid "Download device settings preferences were changed." +msgstr "Завантаження налаштувань пристрою уподобання змінилися." + +#: rapid/rapid.py:5926 +msgid "Backup preferences were changed." +msgstr "Параметри резервування змінились." -#: rapid/rapid.py:4407 +#: rapid/rapid.py:5932 +msgid "Subfolder and filename preferences were changed." +msgstr "Параметри підтеки та назва файла змінились." + +#: rapid/rapid.py:5943 +msgid "Download folder preferences were changed." +msgstr "Параметри теки для завантаження змінились." + +#: rapid/rapid.py:6141 msgid "Goodbye" msgstr "До побачення" #. Translators: this text is displayed to the user when they request information on the command line options. #. The text %default should not be modified or left out. -#: rapid/rapid.py:4418 +#: rapid/rapid.py:6152 #, python-format msgid "" "display program information on the command line as the program runs " @@ -1032,387 +1070,383 @@ msgid "" msgstr "" "показати дані програми в командному рядку під час запуску (типово: %default)" -#: rapid/rapid.py:4419 +#: rapid/rapid.py:6153 msgid "only output errors to the command line" msgstr "виводити в командний рядок лише помилки" #. image file extensions are recognized RAW files plus TIFF and JPG -#: rapid/rapid.py:4421 +#: rapid/rapid.py:6155 msgid "list photo and video file extensions the program recognizes and exit" msgstr "" "вивести список розширень фото та відео файлів, розпізнаних програмою і вийти" -#: rapid/rapid.py:4422 +#: rapid/rapid.py:6156 msgid "reset all program settings and preferences and exit" msgstr "скинути всі параметри та налаштування програми і вийти" -#: rapid/rapid.py:4431 +#: rapid/rapid.py:6165 msgid "Photos:" msgstr "Фото:" -#: rapid/rapid.py:4431 +#: rapid/rapid.py:6165 msgid "Videos:" msgstr "Відео:" -#: rapid/rapid.py:4436 +#: rapid/rapid.py:6170 #, python-format msgid "and %s" msgstr "та %s" -#: rapid/rapid.py:4444 +#: rapid/rapid.py:6178 msgid "All settings and preferences have been reset" msgstr "Всі параметри та налаштування скинуті" #. Which volume management code is being used (GIO or GnomeVFS) -#: rapid/rapid.py:4448 rapid/rapid.py:4449 rapid/rapid.py:4451 -#: rapid/rapid.py:4456 rapid/rapid.py:4460 +#: rapid/rapid.py:6182 rapid/rapid.py:6183 rapid/rapid.py:6185 +#: rapid/rapid.py:6190 rapid/rapid.py:6194 msgid "Using" msgstr "Використання" -#: rapid/rapid.py:4453 +#: rapid/rapid.py:6187 msgid "\n" msgstr "\n" #. this application is already running -#: rapid/rapid.py:4477 +#: rapid/rapid.py:6211 #, python-format msgid "%s is already running" msgstr "%s вже функціонує" -#: rapid/renamesubfolderprefs.py:190 +#: rapid/renamesubfolderprefs.py:192 msgid "Date time" msgstr "Дата і час" -#: rapid/renamesubfolderprefs.py:191 +#: rapid/renamesubfolderprefs.py:193 msgid "Text" msgstr "Текст" -#: rapid/renamesubfolderprefs.py:192 -msgid "Filename" -msgstr "Назва файла" - -#: rapid/renamesubfolderprefs.py:193 +#: rapid/renamesubfolderprefs.py:195 msgid "Metadata" msgstr "Метадані" -#: rapid/renamesubfolderprefs.py:194 +#: rapid/renamesubfolderprefs.py:196 msgid "Sequences" msgstr "Послідовності" -#: rapid/renamesubfolderprefs.py:197 +#: rapid/renamesubfolderprefs.py:199 msgid "Image date" msgstr "Дата фото" -#: rapid/renamesubfolderprefs.py:198 +#: rapid/renamesubfolderprefs.py:200 msgid "Video date" msgstr "Дата відео" -#: rapid/renamesubfolderprefs.py:199 +#: rapid/renamesubfolderprefs.py:201 msgid "Today" msgstr "Сьогодні" -#: rapid/renamesubfolderprefs.py:200 +#: rapid/renamesubfolderprefs.py:202 msgid "Yesterday" msgstr "Вчора" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:202 +#: rapid/renamesubfolderprefs.py:204 msgid "Name + extension" msgstr "Назва + розширення" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:204 +#: rapid/renamesubfolderprefs.py:206 msgid "Name" msgstr "Назва" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:206 +#: rapid/renamesubfolderprefs.py:208 msgid "Extension" msgstr "Розширення" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:208 +#: rapid/renamesubfolderprefs.py:210 msgid "Image number" msgstr "Номер фото" -#: rapid/renamesubfolderprefs.py:209 +#: rapid/renamesubfolderprefs.py:211 msgid "Video number" msgstr "Номер відео" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:211 +#: rapid/renamesubfolderprefs.py:213 msgid "Aperture" msgstr "Діафрагма" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:213 +#: rapid/renamesubfolderprefs.py:215 msgid "ISO" msgstr "ISO" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:215 +#: rapid/renamesubfolderprefs.py:217 msgid "Exposure time" msgstr "Час експозиції" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:217 +#: rapid/renamesubfolderprefs.py:219 msgid "Focal length" msgstr "Фокусна відстань" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:219 +#: rapid/renamesubfolderprefs.py:221 msgid "Camera make" msgstr "Виробник камери" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:221 +#: rapid/renamesubfolderprefs.py:223 msgid "Camera model" msgstr "Модель камери" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:223 +#: rapid/renamesubfolderprefs.py:225 msgid "Short camera model" msgstr "Скорочена назва камери" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:225 +#: rapid/renamesubfolderprefs.py:227 msgid "Hyphenated short camera model" msgstr "Написана через дефіс коротка назва моделі" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:227 +#: rapid/renamesubfolderprefs.py:229 msgid "Serial number" msgstr "Серійний номер" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:229 +#: rapid/renamesubfolderprefs.py:231 msgid "Shutter count" msgstr "Кількість затворів" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamemetadata -#: rapid/renamesubfolderprefs.py:231 +#: rapid/renamesubfolderprefs.py:233 msgid "Owner name" msgstr "Ім’я власника" -#: rapid/renamesubfolderprefs.py:232 +#: rapid/renamesubfolderprefs.py:234 msgid "Codec" msgstr "Кодек" -#: rapid/renamesubfolderprefs.py:233 +#: rapid/renamesubfolderprefs.py:235 msgid "Width" msgstr "Ширина" -#: rapid/renamesubfolderprefs.py:234 +#: rapid/renamesubfolderprefs.py:236 msgid "Height" msgstr "Висота" -#: rapid/renamesubfolderprefs.py:235 +#: rapid/renamesubfolderprefs.py:237 msgid "Length" msgstr "Тривалість" -#: rapid/renamesubfolderprefs.py:236 +#: rapid/renamesubfolderprefs.py:238 msgid "Frames Per Second" msgstr "Кадрів за секунду" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:238 +#: rapid/renamesubfolderprefs.py:240 msgid "Downloads today" msgstr "Завантажень сьогодні" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:240 +#: rapid/renamesubfolderprefs.py:242 msgid "Session number" msgstr "Номер сеансу" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:242 +#: rapid/renamesubfolderprefs.py:244 msgid "Subfolder number" msgstr "Номер підтеки" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequencenumbers -#: rapid/renamesubfolderprefs.py:244 +#: rapid/renamesubfolderprefs.py:246 msgid "Stored number" msgstr "Номер збереження" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#sequenceletters -#: rapid/renamesubfolderprefs.py:246 +#: rapid/renamesubfolderprefs.py:248 msgid "Sequence letter" msgstr "Послідовність знаків" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:248 +#: rapid/renamesubfolderprefs.py:250 msgid "All digits" msgstr "Всі цифри" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:250 +#: rapid/renamesubfolderprefs.py:252 msgid "Last digit" msgstr "Остання цифра" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:252 +#: rapid/renamesubfolderprefs.py:254 msgid "Last 2 digits" msgstr "Останні 2 цифри" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:254 +#: rapid/renamesubfolderprefs.py:256 msgid "Last 3 digits" msgstr "Останні 3 цифри" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamefilename -#: rapid/renamesubfolderprefs.py:256 +#: rapid/renamesubfolderprefs.py:258 msgid "Last 4 digits" msgstr "Останні 4 цифри" #. Translators: please not the capitalization of this text, and keep it the same if your language features capitalization -#: rapid/renamesubfolderprefs.py:258 +#: rapid/renamesubfolderprefs.py:260 msgid "Original Case" msgstr "Початковий регістр" #. Translators: please not the capitalization of this text, and keep it the same if your language features capitalization -#: rapid/renamesubfolderprefs.py:260 +#: rapid/renamesubfolderprefs.py:262 msgid "UPPERCASE" msgstr "ВЕРХНІЙ РЕГІСТР" #. Translators: please not the capitalization of this text, and keep it the same if your language features capitalization -#: rapid/renamesubfolderprefs.py:262 +#: rapid/renamesubfolderprefs.py:264 msgid "lowercase" msgstr "нижній регістр" -#: rapid/renamesubfolderprefs.py:263 +#: rapid/renamesubfolderprefs.py:265 msgid "One digit" msgstr "Одна цифра" -#: rapid/renamesubfolderprefs.py:264 +#: rapid/renamesubfolderprefs.py:266 msgid "Two digits" msgstr "Дві цифри" -#: rapid/renamesubfolderprefs.py:265 +#: rapid/renamesubfolderprefs.py:267 msgid "Three digits" msgstr "Три цифри" -#: rapid/renamesubfolderprefs.py:266 +#: rapid/renamesubfolderprefs.py:268 msgid "Four digits" msgstr "Чотири цифри" -#: rapid/renamesubfolderprefs.py:267 +#: rapid/renamesubfolderprefs.py:269 msgid "Five digits" msgstr "П’ять цифр" -#: rapid/renamesubfolderprefs.py:268 +#: rapid/renamesubfolderprefs.py:270 msgid "Six digits" msgstr "Шість цифр" -#: rapid/renamesubfolderprefs.py:269 +#: rapid/renamesubfolderprefs.py:271 msgid "Seven digits" msgstr "Сім цифр" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:271 +#: rapid/renamesubfolderprefs.py:273 msgid "Subseconds" msgstr "Підсекунди" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:273 +#: rapid/renamesubfolderprefs.py:275 msgid "YYYYMMDD" msgstr "РРРРММДД" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:275 +#: rapid/renamesubfolderprefs.py:277 msgid "YYYY-MM-DD" msgstr "РРРР-ММ-ДД" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:277 +#: rapid/renamesubfolderprefs.py:279 msgid "YYMMDD" msgstr "РРММДД" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:279 +#: rapid/renamesubfolderprefs.py:281 msgid "YY-MM-DD" msgstr "РР-ММ-ДД" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:281 +#: rapid/renamesubfolderprefs.py:283 msgid "MMDDYYYY" msgstr "ММДДРРРР" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:283 +#: rapid/renamesubfolderprefs.py:285 msgid "MMDDYY" msgstr "ММДДРР" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:285 +#: rapid/renamesubfolderprefs.py:287 msgid "MMDD" msgstr "ММДД" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:287 +#: rapid/renamesubfolderprefs.py:289 msgid "DDMMYYYY" msgstr "ДДММГГГГ" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:289 +#: rapid/renamesubfolderprefs.py:291 msgid "DDMMYY" msgstr "ДДММРР" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:291 +#: rapid/renamesubfolderprefs.py:293 msgid "YYYY" msgstr "РРРР" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:293 +#: rapid/renamesubfolderprefs.py:295 msgid "YY" msgstr "РР" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:295 +#: rapid/renamesubfolderprefs.py:297 msgid "MM" msgstr "ММ" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:297 +#: rapid/renamesubfolderprefs.py:299 msgid "DD" msgstr "ДД" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:299 +#: rapid/renamesubfolderprefs.py:301 msgid "HHMMSS" msgstr "ГГХХСС" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:301 +#: rapid/renamesubfolderprefs.py:303 msgid "HHMM" msgstr "ГГХХ" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:303 +#: rapid/renamesubfolderprefs.py:305 msgid "HH-MM-SS" msgstr "ГГ-ХХ-СС" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:305 +#: rapid/renamesubfolderprefs.py:307 msgid "HH-MM" msgstr "ГГ-ХХ" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:307 +#: rapid/renamesubfolderprefs.py:309 msgid "HH" msgstr "ГГ" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:309 +#: rapid/renamesubfolderprefs.py:311 msgid "MM (minutes)" msgstr "ХХ (хвилин)" #. Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#renamedateandtime -#: rapid/renamesubfolderprefs.py:311 +#: rapid/renamesubfolderprefs.py:313 msgid "SS" msgstr "СС" -#: rapid/renamesubfolderprefs.py:794 +#: rapid/renamesubfolderprefs.py:796 #, python-format msgid "" "Preference key '%(key)s' is invalid.\n" @@ -1421,65 +1455,26 @@ msgstr "" "Помилковий ключ параметрів '%(key)s'.\n" "Очікувався один з %(value)s" -#: rapid/renamesubfolderprefs.py:801 +#: rapid/renamesubfolderprefs.py:803 #, python-format msgid "Preference value '%(value)s' is invalid" msgstr "Помилкове значення параметра '%(value)s'" -#: rapid/renamesubfolderprefs.py:805 +#: rapid/renamesubfolderprefs.py:807 msgid "These preferences are not well formed:" msgstr "Ці параметри не дуже добре підібрані:" -#: rapid/renamesubfolderprefs.py:934 -msgid "Subsecond metadata not present in photo" -msgstr "На фото немає метаданих підсекунд" - -#: rapid/renamesubfolderprefs.py:941 -#, python-format -msgid "%s metadata is not present" -msgstr "%s метадані не представлені" - -#: rapid/renamesubfolderprefs.py:960 rapid/renamesubfolderprefs.py:968 -#: rapid/renamesubfolderprefs.py:977 -#, python-format -msgid "Error in date time component. Value %s appears invalid" -msgstr "Помилка в компоненті дати та часу. Виникає помилкове значення %s" - -#: rapid/renamesubfolderprefs.py:1004 -msgid "extension was specified but filename does not have an extension" -msgstr "розширення було зазначене, але в назві файла його немає" - -#: rapid/renamesubfolderprefs.py:1008 -msgid "image or video number was specified but filename has no number" -msgstr "" -"номер зображення або відео було зазначене, але в назві файла його немає" - -#: rapid/renamesubfolderprefs.py:1081 -#, python-format -msgid "%s metadata is not present in photo" -msgstr "%s метадані не представлені на фото" - -#: rapid/renamesubfolderprefs.py:1194 -#, python-format -msgid "error generating name with component %s" -msgstr "помилка генерування назви компонентом %s" - -#: rapid/renamesubfolderprefs.py:1450 -#, python-format -msgid "%s metadata is not present in video" -msgstr "%s метадані не представлені на відео" - -#: rapid/renamesubfolderprefs.py:1546 +#: rapid/renamesubfolderprefs.py:1517 #, python-format msgid "Subfolder preferences should not start with a %s" msgstr "Параметри підтеки не повинні починатись з %s" -#: rapid/renamesubfolderprefs.py:1548 +#: rapid/renamesubfolderprefs.py:1519 #, python-format msgid "Subfolder preferences should not end with a %s" msgstr "Параметри підтеки не повинні завершуватись %s" -#: rapid/renamesubfolderprefs.py:1552 +#: rapid/renamesubfolderprefs.py:1523 #, python-format msgid "Subfolder preferences should not contain two %s one after the other" msgstr "Параметри підтеки не повинні містити два %s одне за одним" @@ -1529,121 +1524,117 @@ msgid "Job Codes" msgstr "Мітки" #: rapid/glade3/rapid.glade.h:12 -msgid "Missing Backup Devices" -msgstr "Відсутні пристрої резервного копіювання" - -#: rapid/glade3/rapid.glade.h:13 msgid "Photo Rename" msgstr "Перейменування фото" -#: rapid/glade3/rapid.glade.h:14 +#: rapid/glade3/rapid.glade.h:13 msgid "Photo and Video Name Conflicts" msgstr "Конфлікти назв фото та відео" -#: rapid/glade3/rapid.glade.h:15 +#: rapid/glade3/rapid.glade.h:14 msgid "Program Automation" msgstr "Автоматизація програми" -#: rapid/glade3/rapid.glade.h:16 +#: rapid/glade3/rapid.glade.h:15 msgid "Sequence Numbers" msgstr "Послідовність номерів" -#: rapid/glade3/rapid.glade.h:17 +#: rapid/glade3/rapid.glade.h:16 msgid "/media/externaldrive/Photos" msgstr "/media/externaldrive/Photos" -#: rapid/glade3/rapid.glade.h:18 +#: rapid/glade3/rapid.glade.h:17 msgid "Example: /home/user/Pictures" msgstr "Приклад: /home/user/Pictures" -#: rapid/glade3/rapid.glade.h:19 +#: rapid/glade3/rapid.glade.h:18 msgid "Example:" msgstr "Приклад:" -#: rapid/glade3/rapid.glade.h:20 +#: rapid/glade3/rapid.glade.h:19 msgid "New:" msgstr "Нова назва:" -#: rapid/glade3/rapid.glade.h:21 +#: rapid/glade3/rapid.glade.h:20 msgid "Original:" msgstr "Початкова назва:" -#: rapid/glade3/rapid.glade.h:22 +#: rapid/glade3/rapid.glade.h:21 msgid "Automation" msgstr "Автоматизація" -#: rapid/glade3/rapid.glade.h:23 +#: rapid/glade3/rapid.glade.h:22 msgid "Backup\t" msgstr "Резервне копіювання\t" -#: rapid/glade3/rapid.glade.h:24 +#: rapid/glade3/rapid.glade.h:23 msgid "Devices" msgstr "Пристрої" -#: rapid/glade3/rapid.glade.h:25 +#: rapid/glade3/rapid.glade.h:24 msgid "Error Handling" msgstr "Обробка помилок" -#: rapid/glade3/rapid.glade.h:26 +#: rapid/glade3/rapid.glade.h:25 msgid "Job Codes" msgstr "Мітки" -#: rapid/glade3/rapid.glade.h:27 +#: rapid/glade3/rapid.glade.h:26 msgid "Photo Download Folders" msgstr "" "Теки для завантаження фото" -#: rapid/glade3/rapid.glade.h:28 +#: rapid/glade3/rapid.glade.h:27 msgid "Photo Rename\t" msgstr "Перейменування фото\t" -#: rapid/glade3/rapid.glade.h:29 +#: rapid/glade3/rapid.glade.h:28 msgid "Rename Options" msgstr "" "Параметри перейменування" -#: rapid/glade3/rapid.glade.h:30 +#: rapid/glade3/rapid.glade.h:29 msgid "Video Download Folders" msgstr "" "Теки для завантаження відео" -#: rapid/glade3/rapid.glade.h:31 +#: rapid/glade3/rapid.glade.h:30 msgid "Video Rename\t" msgstr "Перейменування відео\t" -#: rapid/glade3/rapid.glade.h:32 +#: rapid/glade3/rapid.glade.h:31 msgid "Add unique identifier" msgstr "Додати унікальний ідентифікатор" -#: rapid/glade3/rapid.glade.h:33 +#: rapid/glade3/rapid.glade.h:32 msgid "Automatically detect Portable Storage Devices" msgstr "Автоматичне виявляти портативні пристрої зберігання" -#: rapid/glade3/rapid.glade.h:34 +#: rapid/glade3/rapid.glade.h:33 msgid "Automatically detect backup devices" msgstr "Автоматичне виявляти пристрої для резервного копіювання" -#: rapid/glade3/rapid.glade.h:35 +#: rapid/glade3/rapid.glade.h:34 msgid "Automatically detect devices" msgstr "Автоматичне виявляти пристрої" -#: rapid/glade3/rapid.glade.h:36 +#: rapid/glade3/rapid.glade.h:35 msgid "Automation" msgstr "Автоматизація" -#: rapid/glade3/rapid.glade.h:37 +#: rapid/glade3/rapid.glade.h:36 msgid "Backup" msgstr "Резервне копіювання" -#: rapid/glade3/rapid.glade.h:38 +#: rapid/glade3/rapid.glade.h:37 msgid "Backup location:" msgstr "Місце для резервного копіювання:" -#: rapid/glade3/rapid.glade.h:39 +#: rapid/glade3/rapid.glade.h:38 msgid "Backup photos and videos when downloading" msgstr "Резервне копіювання фото та відео під час завантаження" -#: rapid/glade3/rapid.glade.h:40 +#: rapid/glade3/rapid.glade.h:39 msgid "" "Choose the download folder. Subfolders for the downloaded photos will be " "automatically created in this folder using the structure specified below." @@ -1651,7 +1642,7 @@ msgstr "" "Виберіть теку для завантаження. В цій теці автоматично створюватимуться " "підтеки для завантажених фото використовуючи структуру, зазначену нижче." -#: rapid/glade3/rapid.glade.h:41 +#: rapid/glade3/rapid.glade.h:40 msgid "" "Choose the download folder. Subfolders for the downloaded videos will be " "automatically created in this folder using the structure specified below." @@ -1659,30 +1650,23 @@ msgstr "" "Виберіть теку для завантаження. В цій теці автоматично створюватимуться " "підтеки для завантажених відео використовуючи структуру, зазначену нижче." -#: rapid/glade3/rapid.glade.h:42 -msgid "" -"Choose whether to skip downloading the file, or to add a unique indentifier." -msgstr "" -"Виберіть, чи пропустити завантаження файла, чи слід додати до назви " -"унікальний ідентифікатор." - -#: rapid/glade3/rapid.glade.h:43 +#: rapid/glade3/rapid.glade.h:41 msgid "Copyright Damon Lynch 2007-10" msgstr "Авторське право: Damon Lynch 2007-10" -#: rapid/glade3/rapid.glade.h:44 +#: rapid/glade3/rapid.glade.h:42 msgid "Day start:" msgstr "Початок дня:" -#: rapid/glade3/rapid.glade.h:45 +#: rapid/glade3/rapid.glade.h:43 msgid "Delete photos and videos from device upon download completion" msgstr "Вилучати фото та відео з пристрою після завершення завантаження" -#: rapid/glade3/rapid.glade.h:46 +#: rapid/glade3/rapid.glade.h:44 msgid "Devices" msgstr "Пристої" -#: rapid/glade3/rapid.glade.h:47 +#: rapid/glade3/rapid.glade.h:45 msgid "" "Devices are from where to download photos and videos, such as cameras, " "memory cards or Portable Storage Devices.\n" @@ -1704,38 +1688,38 @@ msgstr "" "спробуйте встановити режим PTP. Якщо це неможливо, використовуйте пристрій " "для читання карток." -#: rapid/glade3/rapid.glade.h:52 +#: rapid/glade3/rapid.glade.h:50 msgid "Download / Pause" msgstr "Завантаження / Пауза" -#: rapid/glade3/rapid.glade.h:53 +#: rapid/glade3/rapid.glade.h:51 msgid "Download folder:" msgstr "Тека для завантаження:" -#: rapid/glade3/rapid.glade.h:54 +#: rapid/glade3/rapid.glade.h:52 msgid "Downloads today:" msgstr "Завантажень сьогодні:" -#: rapid/glade3/rapid.glade.h:55 +#: rapid/glade3/rapid.glade.h:53 msgid "Error Handling" msgstr "Обробка помилок" -#: rapid/glade3/rapid.glade.h:56 +#: rapid/glade3/rapid.glade.h:54 msgid "Error Log" msgstr "Журнал помилок" -#: rapid/glade3/rapid.glade.h:57 +#: rapid/glade3/rapid.glade.h:55 msgid "Exit program if download completes without any warnings or errors" msgstr "" "Вийти з програми, якщо завантаження завершилась без зауважень та помилок" -#: rapid/glade3/rapid.glade.h:58 +#: rapid/glade3/rapid.glade.h:56 msgid "If you disable automatic detection, choose the exact backup location." msgstr "" "Якщо автоматичне виявлення вимкнено, виберіть точне місце для резервного " "копіювання." -#: rapid/glade3/rapid.glade.h:59 +#: rapid/glade3/rapid.glade.h:57 msgid "" "If you disable automatic detection, choose the exact location of the images " "and videos." @@ -1743,7 +1727,7 @@ msgstr "" "Якщо автоматичне виявлення вимкнено, виберіть точне місце для зображень та " "відео." -#: rapid/glade3/rapid.glade.h:60 +#: rapid/glade3/rapid.glade.h:58 msgid "" "If you enable automatic detection of Portable Storage Devices, the entire " "device will be scanned for images. On large devices, this could take some " @@ -1753,47 +1737,51 @@ msgstr "" "вони скануватимуться для пошуку фото. На пристроях великого об’єму це може " "зайняти досить багато часу." -#: rapid/glade3/rapid.glade.h:61 -msgid "Ignore" -msgstr "Ігнорувати" - -#: rapid/glade3/rapid.glade.h:62 +#: rapid/glade3/rapid.glade.h:59 msgid "Import your photos and videos efficiently and reliably" msgstr "Імпортуйте фото та відео ефективно та надійно" -#: rapid/glade3/rapid.glade.h:63 +#: rapid/glade3/rapid.glade.h:60 msgid "Job Codes" msgstr "Мітки" -#: rapid/glade3/rapid.glade.h:64 +#: rapid/glade3/rapid.glade.h:61 msgid "Location:" msgstr "Розташування:" -#: rapid/glade3/rapid.glade.h:65 +#: rapid/glade3/rapid.glade.h:62 msgid "Overwrite" msgstr "Перезаписати" -#: rapid/glade3/rapid.glade.h:66 +#: rapid/glade3/rapid.glade.h:63 +msgid "P_review Columns" +msgstr "По_казувати стовпчики" + +#: rapid/glade3/rapid.glade.h:64 msgid "Photo Folders" msgstr "Теки з фото" -#: rapid/glade3/rapid.glade.h:67 +#: rapid/glade3/rapid.glade.h:65 msgid "Photo Rename" msgstr "Перейменування фото" -#: rapid/glade3/rapid.glade.h:68 +#: rapid/glade3/rapid.glade.h:66 msgid "Photo backup folder name:" msgstr "Назва теки для резервного копіювання фото:" -#: rapid/glade3/rapid.glade.h:69 +#: rapid/glade3/rapid.glade.h:67 msgid "Preferences: Rapid Photo Downloader" msgstr "Параметри: Rapid Photo Downloader" -#: rapid/glade3/rapid.glade.h:71 +#: rapid/glade3/rapid.glade.h:68 +msgid "Preview _Folders" +msgstr "Показувати _теки" + +#: rapid/glade3/rapid.glade.h:70 msgid "R_emove All" msgstr "В_илучити все" -#: rapid/glade3/rapid.glade.h:73 +#: rapid/glade3/rapid.glade.h:72 msgid "" "Rapid Photo Downloader is free software; you can redistribute it and/or " "modify it under the terms of the GNU General Public License as published by " @@ -1823,27 +1811,43 @@ msgstr "" "Downloader; якщо ні, напишіть листа за адресою: Free Software Foundation, " "Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." -#: rapid/glade3/rapid.glade.h:78 +#: rapid/glade3/rapid.glade.h:77 msgid "Rename Options" msgstr "Параметри перейменування" +#: rapid/glade3/rapid.glade.h:78 +msgid "Se_lect None" +msgstr "_Зняти вибір" + #: rapid/glade3/rapid.glade.h:79 -msgid "Report a warning" -msgstr "Попередити" +msgid "Select All Pho_tos" +msgstr "Вибрати всі _фото" #: rapid/glade3/rapid.glade.h:80 -msgid "Report an error" -msgstr "Попередити про помилку" +msgid "Select All Vi_deos" +msgstr "Вибрати всі _відео" #: rapid/glade3/rapid.glade.h:81 +msgid "Select All Wit_h Job Code" +msgstr "Вибрати всі з _мітками" + +#: rapid/glade3/rapid.glade.h:82 +msgid "Select All Without _Job Code" +msgstr "Вибрати всі без _міток" + +#: rapid/glade3/rapid.glade.h:83 +msgid "Select _All" +msgstr "Вибрати _все" + +#: rapid/glade3/rapid.glade.h:84 msgid "Skip" msgstr "Пропустити" -#: rapid/glade3/rapid.glade.h:82 +#: rapid/glade3/rapid.glade.h:85 msgid "Skip download" msgstr "Пропустити завантаження" -#: rapid/glade3/rapid.glade.h:83 +#: rapid/glade3/rapid.glade.h:86 msgid "" "Sorry, video downloading functionality disabled. To download videos, please " "install the kaa metadata package for python." @@ -1851,7 +1855,7 @@ msgstr "" "На жаль, немає можливості завантажувати відео. Щоб завантажувати відео, " "встановіть пакунок kaa metadata для python." -#: rapid/glade3/rapid.glade.h:84 +#: rapid/glade3/rapid.glade.h:87 msgid "" "Specify the folder in which backups are stored on the device. \n" "\n" @@ -1866,7 +1870,7 @@ msgstr "" "використовуватимете, в цьому каталозі створюватиметься тека з відповідною " "назвою." -#: rapid/glade3/rapid.glade.h:87 +#: rapid/glade3/rapid.glade.h:90 msgid "" "Specify the time in 24 hour format at which the Downloads today " "sequence number should be reset." @@ -1874,19 +1878,7 @@ msgstr "" "Вкажіть час в 24-годинному форматі, коли буде скинута послідовність номерів " "для параметра Завантажень сьогодні." -#: rapid/glade3/rapid.glade.h:88 -msgid "" -"Specify what to do when a photo or video of the same name has already been " -"downloaded or backed up." -msgstr "" -"Вкажіть, що робити, якщо фото або відео з такою назвою вже завантажено або " -"створена його резервна копія." - -#: rapid/glade3/rapid.glade.h:89 -msgid "Specify what to do when there are no backup devices." -msgstr "Вкажіть, що робити, якщо немає пристроїв для резервного копіювання." - -#: rapid/glade3/rapid.glade.h:90 +#: rapid/glade3/rapid.glade.h:91 msgid "" "Specify whether photo, video and folder names should have any characters " "removed that are not allowed by other operating systems." @@ -1894,43 +1886,51 @@ msgstr "" "Вкажіть, чи вилучати з назв фото, відео та тек всі символи, що не дозволені " "в інших операційних системах." -#: rapid/glade3/rapid.glade.h:91 +#: rapid/glade3/rapid.glade.h:92 msgid "Start downloading at program startup" msgstr "Розпочинати завантаження під час запуску програми" -#: rapid/glade3/rapid.glade.h:92 +#: rapid/glade3/rapid.glade.h:93 msgid "Start downloading upon device insertion" msgstr "Розпочинати завантаження після під’єднання пристрою" -#: rapid/glade3/rapid.glade.h:93 +#: rapid/glade3/rapid.glade.h:94 msgid "Stored number:" msgstr "Номер зберігання:" -#: rapid/glade3/rapid.glade.h:94 +#: rapid/glade3/rapid.glade.h:95 msgid "Strip incompatible characters" msgstr "Вилучати несумісні символи" -#: rapid/glade3/rapid.glade.h:95 +#: rapid/glade3/rapid.glade.h:96 msgid "Synchronize RAW + JPEG sequence numbers" msgstr "Синхронізувати послідовність номерів RAW + JPEG" -#: rapid/glade3/rapid.glade.h:96 +#: rapid/glade3/rapid.glade.h:97 msgid "Unmount (\"eject\") device upon download completion" msgstr "Від’єднати («витягти») пристрій після завершення завантаження" -#: rapid/glade3/rapid.glade.h:97 +#: rapid/glade3/rapid.glade.h:98 msgid "Video Folders" msgstr "Теки відео" -#: rapid/glade3/rapid.glade.h:98 +#: rapid/glade3/rapid.glade.h:99 msgid "Video Rename" msgstr "Перейменування відео" -#: rapid/glade3/rapid.glade.h:99 +#: rapid/glade3/rapid.glade.h:100 msgid "Video backup folder name:" msgstr "Назва теки для резервного копіювання відео:" -#: rapid/glade3/rapid.glade.h:100 +#: rapid/glade3/rapid.glade.h:101 +msgid "" +"When a photo or video of the same name has already been downloaded, choose " +"whether to skip downloading the file, or to add a unique indentifier." +msgstr "" +"Коли фото або відео з такою ж назвою вже завантажені, виберіть, чи " +"пропустити завантаження цього файла, чи додати унікальний ідентифікатор." + +#: rapid/glade3/rapid.glade.h:102 msgid "" "When backing up, choose whether to overwrite a file on the backup device " "that has the same name, or skip backing it up." @@ -1938,7 +1938,7 @@ msgstr "" "Чи слід під час резервного копіювання перезаписати файл, що має однакову " "назву з файлом на пристрої, чи пропустити його?" -#: rapid/glade3/rapid.glade.h:101 +#: rapid/glade3/rapid.glade.h:103 msgid "" "You can have your photos and videos backed up to multiple locations as they " "are downloaded, e.g. external hard drives." @@ -1946,46 +1946,310 @@ msgstr "" "Ви можете створювати резервні копії фото та відео в кількох місцях прямо під " "час завантаження, наприклад, на зовнішніх жорстких дисках." -#: rapid/glade3/rapid.glade.h:102 +#: rapid/glade3/rapid.glade.h:104 msgid "_Add..." msgstr "Д_одати..." -#: rapid/glade3/rapid.glade.h:103 +#: rapid/glade3/rapid.glade.h:105 msgid "_Clear Completed Downloads" msgstr "_Очистити завершені завантаження" -#: rapid/glade3/rapid.glade.h:104 +#: rapid/glade3/rapid.glade.h:106 +msgid "_Device" +msgstr "_Пристрій" + +#: rapid/glade3/rapid.glade.h:107 msgid "_Error Log" msgstr "_Журнал помилок" -#: rapid/glade3/rapid.glade.h:105 +#: rapid/glade3/rapid.glade.h:108 +msgid "_File" +msgstr "_Файл" + +#: rapid/glade3/rapid.glade.h:109 +msgid "_Filename" +msgstr "_Назва файла" + +#: rapid/glade3/rapid.glade.h:110 msgid "_Get Help Online..." msgstr "О_тримати довідку онлайн..." -#: rapid/glade3/rapid.glade.h:106 +#: rapid/glade3/rapid.glade.h:111 msgid "_Help" msgstr "_Довідка" -#: rapid/glade3/rapid.glade.h:107 +#: rapid/glade3/rapid.glade.h:112 msgid "_Make a Donation..." msgstr "_Зробити пожертву..." -#: rapid/glade3/rapid.glade.h:108 -msgid "_Photos" -msgstr "Фо_то" +#: rapid/glade3/rapid.glade.h:113 +msgid "_Path" +msgstr "_Шлях" -#: rapid/glade3/rapid.glade.h:109 +#: rapid/glade3/rapid.glade.h:114 +msgid "_Preview" +msgstr "_Попередній перегляд" + +#: rapid/glade3/rapid.glade.h:115 msgid "_Report a Problem..." msgstr "Зв_іт про помилку..." -#: rapid/glade3/rapid.glade.h:110 -msgid "_Thumbnails" -msgstr "_МІніатюри" +#: rapid/glade3/rapid.glade.h:116 +msgid "_Select" +msgstr "_Вибрати" -#: rapid/glade3/rapid.glade.h:111 +#: rapid/glade3/rapid.glade.h:117 +msgid "_Size" +msgstr "_Розмір" + +#: rapid/glade3/rapid.glade.h:118 msgid "_Translate this Application..." msgstr "_Перекласти цю програму..." -#: rapid/glade3/rapid.glade.h:112 +#: rapid/glade3/rapid.glade.h:119 +msgid "_Type" +msgstr "_Тип" + +#: rapid/glade3/rapid.glade.h:120 msgid "_View" msgstr "_Перегляд" + +#, python-format +#~ msgid "0 of %(number)s %(filetypes)s" +#~ msgstr "0 з %(number)s %(filetypes)s" + +#, python-format +#~ msgid "%(filetype)s filename could not be generated" +#~ msgstr "Назву файла %(filetype)s не вдалось згенерувати" + +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Problem: %(problem)s" +#~ msgstr "" +#~ "Джерело: %(source)s\n" +#~ "Проблема: %(problem)s" + +#, python-format +#~ msgid "" +#~ "%(filetype)s filename could not be properly generated. Check to ensure there " +#~ "is sufficient metadata." +#~ msgstr "" +#~ "Назву файла %(filetype)s не вдалось згенерувати правильно. Переконайтесь чи " +#~ "достатньо матаданих." + +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Partially generated filename: %(newname)s\n" +#~ "Destination: %(destination)s\n" +#~ "Problem: %(problem)s" +#~ msgstr "" +#~ "Джерело: %(source)s\n" +#~ "Частково згенерована назва: %(newname)s\n" +#~ "Адресат: %(destination)s\n" +#~ "Проблема: %(problem)s" + +#, python-format +#~ msgid "Unique identifier '%s' added" +#~ msgstr "Доданий унікальний ідентифікатор '%s'" + +#~ msgid "Download copying error" +#~ msgstr "Помилка копіювання завантаження" + +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Destination: %(destination)s\n" +#~ "Error: %(errorno)s %(strerror)s" +#~ msgstr "" +#~ "Джерело: %(source)s\n" +#~ "Адресат: %(destination)s\n" +#~ "Помилка: %(errorno)s %(strerror)s" + +#, python-format +#~ msgid "The %(filetype)s was not copied." +#~ msgstr "%(filetype)s не скопійований." + +#~ msgid "" +#~ "Photos detected with the same filenames, but taken at different times:" +#~ msgstr "Виявлені фото з однаковими назвами, але зроблені в різний час:" + +#, python-format +#~ msgid "" +#~ "First photo: %(image1)s %(image1_date_time)s:%(image1_subseconds)s\n" +#~ "Second photo: %(image2)s %(image2_date_time)s:%(image2_subseconds)s" +#~ msgstr "" +#~ "Перше фото: %(image1)s %(image1_date_time)s:%(image1_subseconds)s\n" +#~ "Друге фото: %(image2)s %(image2_date_time)s:%(image2_subseconds)s" + +#, python-format +#~ msgid "Could not open %(filetype)s" +#~ msgstr "Не вдалось відкрити %(filetype)s" + +#, python-format +#~ msgid "Source: %s" +#~ msgstr "Джерело: %s" + +#, python-format +#~ msgid "%(filetype)s has no metadata" +#~ msgstr "%(filetype)s не має метаданих" + +#, python-format +#~ msgid "" +#~ "Metadata is essential for generating subfolder and/or file names.\n" +#~ "Source: %s" +#~ msgstr "" +#~ "Метадані необхідні для створення підтеки та/або назв файлів.\n" +#~ "Джерело: %s" + +#~ msgid "" +#~ "Subfolder name could not be properly generated. Check to ensure there is " +#~ "sufficient metadata." +#~ msgstr "" +#~ "Не вдалось згенерувати правильну назву підтеки. Переконайтесь чи достатньо " +#~ "метаданих." + +#, python-format +#~ msgid "" +#~ "Subfolder: %(subfolder)s\n" +#~ "File: %(file)s\n" +#~ "Problem: %(problem)s" +#~ msgstr "" +#~ "Підтека: %(subfolder)s\n" +#~ "Файл: %(file)s\n" +#~ "Проблема: %(problem)s" + +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Destination: %(destination)s\n" +#~ msgstr "" +#~ "Джерело: %(source)s\n" +#~ "Адресат: %(destination)s\n" + +#, python-format +#~ msgid "" +#~ "Source: %(source)s\n" +#~ "Destination: %(destination)s\n" +#~ "Error: %(errno)s %(strerror)s" +#~ msgstr "" +#~ "Джерело: %(source)s\n" +#~ "Адресат: %(destination)s\n" +#~ "Помилка: %(errno)s %(strerror)s" + +#, python-format +#~ msgid "%(noFiles)s %(filetypes)s skipped" +#~ msgstr "Зігноровано %(noFiles)s %(filetypes)s" + +#~ msgid "Photo thumbnail could not be extracted" +#~ msgstr "Не вдалось витягти мініатюру фото" + +#~ msgid "Backup device missing" +#~ msgstr "Відсутній пристрій для резервного копіювання" + +#~ msgid "No backup device was automatically detected" +#~ msgstr "Не вдалося автоматично виявити носій для резервного копіювання" + +#~ msgid "Photo skipped" +#~ msgstr "Пропущене фото" + +#~ msgid "Photo already exists" +#~ msgstr "Фото вже наявне" + +#~ msgid "Video skipped" +#~ msgstr "Пропущене відео" + +#~ msgid "Video already exists" +#~ msgstr "Відео вже наявне" + +#~ msgid "It may be corrupted" +#~ msgstr "Можливо він пошкоджений" + +#~ msgid "Enter a new job code, or select a previous one." +#~ msgstr "Введіть нову мітку або виберіть попередню." + +#~ msgid "Enter a new job code." +#~ msgstr "Введіть нову мітку." + +#~ msgid "photos downloaded" +#~ msgstr "завантажено фото" + +#~ msgid "photos skipped" +#~ msgstr "пропущено фото" + +#~ msgid "videos downloaded" +#~ msgstr "завантажено відео" + +#~ msgid "videos skipped" +#~ msgstr "пропущено відео" + +#~ msgid "_Download " +#~ msgstr "_Завантажити " + +#~ msgid "Preferences were changed." +#~ msgstr "Налаштування були змінені." + +#~ msgid "Subsecond metadata not present in photo" +#~ msgstr "На фото немає метаданих підсекунд" + +#, python-format +#~ msgid "%s metadata is not present" +#~ msgstr "%s метадані не представлені" + +#, python-format +#~ msgid "Error in date time component. Value %s appears invalid" +#~ msgstr "Помилка в компоненті дати та часу. Виникає помилкове значення %s" + +#~ msgid "extension was specified but filename does not have an extension" +#~ msgstr "розширення було зазначене, але в назві файла його немає" + +#~ msgid "image or video number was specified but filename has no number" +#~ msgstr "" +#~ "номер зображення або відео було зазначене, але в назві файла його немає" + +#, python-format +#~ msgid "%s metadata is not present in photo" +#~ msgstr "%s метадані не представлені на фото" + +#, python-format +#~ msgid "error generating name with component %s" +#~ msgstr "помилка генерування назви компонентом %s" + +#, python-format +#~ msgid "%s metadata is not present in video" +#~ msgstr "%s метадані не представлені на відео" + +#~ msgid "Missing Backup Devices" +#~ msgstr "Відсутні пристрої резервного копіювання" + +#~ msgid "" +#~ "Choose whether to skip downloading the file, or to add a unique indentifier." +#~ msgstr "" +#~ "Виберіть, чи пропустити завантаження файла, чи слід додати до назви " +#~ "унікальний ідентифікатор." + +#~ msgid "Ignore" +#~ msgstr "Ігнорувати" + +#~ msgid "Report a warning" +#~ msgstr "Попередити" + +#~ msgid "Report an error" +#~ msgstr "Попередити про помилку" + +#~ msgid "" +#~ "Specify what to do when a photo or video of the same name has already been " +#~ "downloaded or backed up." +#~ msgstr "" +#~ "Вкажіть, що робити, якщо фото або відео з такою назвою вже завантажено або " +#~ "створена його резервна копія." + +#~ msgid "Specify what to do when there are no backup devices." +#~ msgstr "Вкажіть, що робити, якщо немає пристроїв для резервного копіювання." + +#~ msgid "_Photos" +#~ msgstr "Фо_то" + +#~ msgid "_Thumbnails" +#~ msgstr "_МІніатюри" diff --git a/rapid/ChangeLog b/rapid/ChangeLog index 96f3d4f..552c77d 100644 --- a/rapid/ChangeLog +++ b/rapid/ChangeLog @@ -1,3 +1,134 @@ +Version 0.3.0 +------------- + +2010-07-10 + +The major new feature of this release is the generation of previews before +a download takes place. You can now select which photos and videos you wish to +download. + +You can now assign different Job Codes to photos and videos in the same +download. Simply select photos and videos, and from the main window choose a Job +Code for them. You can select a new Job Code,or enter a new one (press Enter +to apply it). + +The errors and warnings reported have been completely overhauled, and are now +more concise. + +Now that you can select photos and videos to download, the "Report an error" +option in case of filename conflicts has been removed. If you try to download a +photo or video that already exists, an error will be reported. If you backup a +photo or video that already exists in the backup location, a warning will be +reported (regardless of whether overwriting or skipping of backups with +conflicting filenames is chosen). + +Likewise, the option of whether to report an error or warning in case of missing +backup devices has been removed. If you have chosen to backup your photos and +videos, and a backup device or location is not found, the files will be +downloaded with warnings. + +For each device in the main window, the progress bar is now updated much more +smoothly than before. This is useful when downloading and backing up large files +such as videos. (Note this is only the case on moderately up-to-date Linux +distributions that use GVFS, such as Ubuntu 8.10 or higher). + +The minimum version of python-gtk2 (pygtk) required to run the program is now +2.12. This will affect only outdated Linux distributions. + + +Version 0.3.0 beta 6 +-------------------- + +2010-07-06 + +Fixed bug #598736: don't allow file to jump to the bottom when it has a Job Code +assigned to it. + +Fixed bug #601993: don't prompt for a Job Code when downloading file of one type +(photo or video), and it's only a file of the other type that needs it. + +Log error messages are now cleaned up where a file already exists and there were +problems generating the file / subfolder name. + +Fixed crash on startup when using an old version of GIO. + +Fix crash in updating the time remaining in when downloading from extremely +slow devices. + +Set the default height to be 50 pixels taller. + +Bug fix: don't download from device that has been inserted after program starts +unless device auto detection is enabled. + +Updated German translation. + + +Version 0.3.0 beta 5 +-------------------- + +2010-07-04 + +Added warning dialog if attempting to download directly from a camera. + +Add backup errors details to error log window. + +Fixed program notifications. + +Fixed corner cases with problematic file and subfolder names. + +Disabled Download All button if all files that have not been downloaded have +errors. + +Enabled and disabled Download All button, depending on status, after subfolder +or filename preferences are modified after device has been scanned. + +Don't stop a file being downloaded if a valid subfolder or filename can be +generated using a Job Code. + +Bug fix: don't automatically exit if there were errors or warnings and a +download was occuring from more than one device. + +Auto start now works correctly again. + +Job Codes are now assigned correctly when multiple downloads occur. + +Default column sorting is by date, unless a warning or error occurs when +doing the initial scan of the devices, in which case it is set to status (unless +you have already clicked on a column heading yourself, in which case it will +not change). + +Use the command xdg-user-dir to get default download directories. + +Updated Czech, Dutch, Finnish, French, Italian, Polish, Russian and Ukrainian +translations. + + +Version 0.3.0 beta 4 +-------------------- + +2010-06-25 + +Fixed bug in Job Code addition in the preferences window. + +Made Job Code entry completion case insensitive. + +Update preview to be the most recently selected photo / video when +multiple files are selected. + +Don't crash when user selects a row that has its status set to be +download pending. + +Improve error log status messages and problem notifications. + + +Version 0.3.0 beta 3 +-------------------- + +2010-06-23 + +First beta release of 0.3.0. + + Version 0.2.3 ------------- diff --git a/rapid/INSTALL b/rapid/INSTALL index 144568d..3967608 100644 --- a/rapid/INSTALL +++ b/rapid/INSTALL @@ -3,18 +3,22 @@ Rapid Photo Downloader depends on the following software: - GNOME 2.18 or higher - GTK+ 2.10 or higher - Python 2.5 or 2.6 -- pygtk 2.10 or higher +- pygtk 2.12 or higher - python-gconf 2.18 or higher -- python-glade2 2.10 or higher -- gnome-python 2.10 or higher +- python-glade2 2.12 or higher +- gnome-python 2.12 or higher - libexiv2 0.15 or higher - pyexiv2 0.1.1 or higher To run Rapid Photo Downloader you will need all the software mentioned above. -A recommended package is exiv2 (not just the library libexiv2), so Rapid Photo -Downloader can determine if it can download additional types of RAW files -(some early versions of exiv2 and pyexiv2 segfault on certain RAW file types). +If you want to see dropshadows around thumbnail images, install python-imaging. +This is optional but recommended. + +A strongly recommended package is exiv2 (not just the library libexiv2), so +Rapid Photo Downloader can determine if it can download additional types of RAW +files (some early versions of exiv2 and pyexiv2 segfault on certain RAW file +types). If you want to download videos, you can install: diff --git a/rapid/common.py b/rapid/common.py index d687049..a55d835 100644 --- a/rapid/common.py +++ b/rapid/common.py @@ -22,6 +22,11 @@ import sys import gc import distutils.version import gtk.gdk as gdk +import gtk +try: + import gio +except: + pass import config @@ -173,6 +178,45 @@ def scale2pixbuf(width_max, height_max, pixbuf, return_size=False): return pixbuf, width_orig, height_orig return pixbuf +def get_icon_pixbuf(using_gio, icon, size, fallback='gtk-harddisk'): + """ returns icon for the volume, or None if not available""" + + icontheme = gtk.icon_theme_get_default() + + if using_gio: + f = None + if isinstance(icon, gio.ThemedIcon): + try: + # on some user's systems, themes do not have icons associated with them + iconinfo = icontheme.choose_icon(icon.get_names(), size, gtk.ICON_LOOKUP_USE_BUILTIN) + f = iconinfo.get_filename() + v = gtk.gdk.pixbuf_new_from_file_at_size(f, size, size) + except: + f = None + if not f: + v = icontheme.load_icon(fallback, size, gtk.ICON_LOOKUP_USE_BUILTIN) + else: + v = icontheme.load_icon(icon, size, gtk.ICON_LOOKUP_USE_BUILTIN) + return v + +def register_iconsets(icon_info): + """ + Register icons in the icon set if they're not already used + + From http://faq.pygtk.org/index.py?req=show&file=faq08.012.htp + """ + + iconfactory = gtk.IconFactory() + stock_ids = gtk.stock_list_ids() + for stock_id, file in icon_info: + # only load image files when our stock_id is not present + if stock_id not in stock_ids: + pixbuf = gtk.gdk.pixbuf_new_from_file(file) + iconset = gtk.IconSet(pixbuf) + iconfactory.add(stock_id, iconset) + iconfactory.add_default() + + if __name__ == '__main__': diff --git a/rapid/config.py b/rapid/config.py index cafcc16..2f0e1e3 100644 --- a/rapid/config.py +++ b/rapid/config.py @@ -15,7 +15,7 @@ ### along with this program; if not, write to the Free Software ### Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -version = '0.2.3' +version = '0.3.0' GCONF_KEY="/apps/rapid-photo-downloader" GLADE_FILE = "glade3/rapid.glade" @@ -30,11 +30,9 @@ MEDIA_LOCATION = "/media" SKIP_DOWNLOAD = "skip download" ADD_UNIQUE_IDENTIFIER = "add unique identifier" -REPORT_WARNING = "warning" -REPORT_ERROR = "error" -IGNORE = "ignore" - -DEFAULT_PHOTO_LOCATIONS = ['Pictures', 'Photos'] +# These next three values are fall back values that are used only +# if calls to xdg-user-dir fail +DEFAULT_PHOTO_LOCATIONS = ['Pictures', 'Photos'] DEFAULT_BACKUP_LOCATION = 'Pictures' DEFAULT_VIDEO_BACKUP_LOCATION = 'Videos' @@ -47,8 +45,14 @@ SERIOUS_ERROR = 2 WARNING = 3 MAX_LENGTH_DEVICE_NAME = 15 - -#logging - to be implemented -#LOGFILE_DIRECTORY = '.rapidPhotoDownloader' # relative to home directory -#MAX_LOGFILE_SIZE = 100 * 1024 # bytes -#MAX_LOGFILES = 5 +MAX_THUMBNAIL_SIZE = 160 + +STATUS_DOWNLOAD_PENDING = 0 # going to try to download it +STATUS_DOWNLOADED = 1 # downloaded successfully +STATUS_DOWNLOADED_WITH_WARNING = 2 # downloaded ok but there was a warning +STATUS_BACKUP_PROBLEM = 3 # downloaded ok, but the file was not backed up, or had a problem (overwrite or duplicate) +STATUS_NOT_DOWNLOADED = 4 # has not yet been downloaded (but might be if the user chooses) +STATUS_DOWNLOAD_AND_BACKUP_FAILED = 5 # tried to download but failed, and the backup failed or had an error +STATUS_DOWNLOAD_FAILED = 6 # tried to download but failed +STATUS_WARNING = 7 # warning (shown in pre-download preview) +STATUS_CANNOT_DOWNLOAD = 8 # cannot be downloaded diff --git a/rapid/dropshadow.py b/rapid/dropshadow.py new file mode 100755 index 0000000..fd7cf99 --- /dev/null +++ b/rapid/dropshadow.py @@ -0,0 +1,174 @@ +#!/usr/bin/python + + +import StringIO +import gtk +from PIL import Image, ImageFilter + +def image_to_pixbuf(image): + # this one handles transparency, unlike the default example in the pygtk FAQ + # this is also from the pygtk FAQ + IS_RGBA = image.mode=='RGBA' + return gtk.gdk.pixbuf_new_from_data( + image.tostring(), # data + gtk.gdk.COLORSPACE_RGB, # color mode + IS_RGBA, # has alpha + 8, # bits + image.size[0], # width + image.size[1], # height + (IS_RGBA and 4 or 3) * image.size[0] # rowstride + ) + + +def image_to_pixbuf_no_transparency(image): + fd = StringIO.StringIO() + image.save(fd, "ppm") + contents = fd.getvalue() + fd.close() + loader = gtk.gdk.PixbufLoader("pnm") + loader.write(contents, len(contents)) + pixbuf = loader.get_pixbuf() + loader.close() + return pixbuf + +def pixbuf_to_image(pb): + assert(pb.get_colorspace() == gtk.gdk.COLORSPACE_RGB) + dimensions = pb.get_width(), pb.get_height() + stride = pb.get_rowstride() + pixels = pb.get_pixels() + mode = pb.get_has_alpha() and "RGBA" or "RGB" + return Image.frombuffer(mode, dimensions, pixels, + "raw", mode, stride, 1) + + +class DropShadow(): + """ + Adds a gaussian blur drop shadow to a PIL image. + + Caches backgrounds of particular sizes for improved performance. + + Backgrounds can be made transparent. + + Modification of code from Kevin Schluff and Matimus + License: Python license + See: + http://code.activestate.com/recipes/474116/ (r2) + http://bytes.com/topic/python/answers/606952-pil-paste-image-top-other-dropshadow + + """ + + def __init__(self, offset=(5,5), background_color=0xffffff, shadow = (0x44, 0x44, 0x44, 0xff), + border=8, iterations=3, trim_border=False): + """ + offset - Offset of the shadow from the image as an (x,y) tuple. Can be + positive or negative. + background_color - Background colour behind the image. + shadow - Shadow colour (darkness). + border - Width of the border around the image. This must be wide + enough to account for the blurring of the shadow. + trim_border - If true, the border will only be created on the + sides it needs to be (i.e. only on two sides) + iterations - Number of times to apply the filter. More iterations + produce a more blurred shadow, but increase processing time. + + To make backgrounds transparent, ensure the alpha value of the shadow color is the + same as the background color, e.g. if background_color is 0xffffff, shadow's alpha should be 0xff + """ + self.backgrounds = {} + self.offset = offset + self.background_color = background_color + self.shadow = shadow + self.border = border + self.trim_border = trim_border + self.iterations = iterations + + if self.offset[0] < 0 or not self.trim_border: + self.left_spacing = self.border + else: + self.left_spacing = 0 + + if self.offset[1] < 0 or not self.trim_border: + self.top_spacing = self.border + else: + self.top_spacing = 0 + + + def dropShadow(self, image): + """ + image - The image to overlay on top of the shadow. + """ + dimensions = (image.size[0], image.size[1]) + if not dimensions in self.backgrounds: + + # Create the backdrop image -- a box in the background colour with a + # shadow on it. + + if self.trim_border: + totalWidth = image.size[0] + abs(self.offset[0]) + self.border + totalHeight = image.size[1] + abs(self.offset[1]) + self.border + else: + totalWidth = image.size[0] + abs(self.offset[0]) + 2 * self.border + totalHeight = image.size[1] + abs(self.offset[1]) + 2 * self.border + + back = Image.new("RGBA", (totalWidth, totalHeight), self.background_color) + + # Place the shadow, taking into account the offset from the image + if self.offset[0] > 0 and self.trim_border: + shadowLeft = max(self.offset[0], 0) + else: + shadowLeft = self.border + max(self.offset[0], 0) + if self.offset[1] > 0 and self.trim_border: + shadowTop = max(self.offset[1], 0) + else: + shadowTop = self.border + max(self.offset[1], 0) + + back.paste(self.shadow, [shadowLeft, shadowTop, shadowLeft + image.size[0], + shadowTop + image.size[1]] ) + + # Apply the filter to blur the edges of the shadow. Since a small kernel + # is used, the filter must be applied repeatedly to get a decent blur. + n = 0 + while n < self.iterations: + back = back.filter(ImageFilter.BLUR) + n += 1 + + self.backgrounds[dimensions] = back + + # Paste the input image onto the shadow backdrop + imageLeft = self.left_spacing - min(self.offset[0], 0) + imageTop = self.top_spacing - min(self.offset[1], 0) + + back = self.backgrounds[dimensions].copy() + back.paste(image, (imageLeft, imageTop)) + + return back + + + +if __name__ == "__main__": + import sys + import os + import common + + + # create another file with a drop shadow + f = sys.argv[1] + + image = Image.open(f) + image.thumbnail((60,36), Image.ANTIALIAS) + image2 = image.copy() + + path, name = os.path.split(f) + name, ext = os.path.splitext(name) + + #image = dropShadow(image, shadow = (0x44, 0x44, 0x44, 0xff)) + dropShadow = DropShadow(offset=(3,3), shadow = (0x34, 0x34, 0x34, 0xff), border=6) + image = dropShadow.dropShadow(image) + image2 = dropShadow.dropShadow(image2) + + nf = os.path.join(path, "%s_small_shadow%s" % (name, ext)) + nf2 = os.path.join(path, "%s_small_shadow2%s" % (name, ext)) + image.save(nf) + image2.save(nf2) + print "wrote %s , %s" % (nf, nf2) + diff --git a/rapid/filmstrip.py b/rapid/filmstrip.py new file mode 100755 index 0000000..275fd1d --- /dev/null +++ b/rapid/filmstrip.py @@ -0,0 +1,117 @@ +#!/usr/bin/python +# -*- coding: latin1 -*- + +### Copyright (C) 2010 Damon Lynch + +### 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +""" +Adds a filmstrip to the left and right of a file +""" + +import gtk + + +xpm_data = [ +"12 10 27 1", +" c #000000", +". c #232323", +"+ c #7A7A7A", +"@ c #838383", +"# c #8C8C8C", +"$ c #909090", +"% c #8E8E8E", +"& c #525252", +"* c #6E6E6E", +"= c #939393", +"- c #A3A3A3", +"; c #ABABAB", +"> c #A8A8A8", +", c #9B9B9B", +"' c #727272", +") c #A4A4A4", +"! c #BBBBBB", +"~ c #C4C4C4", +"{ c #C1C1C1", +"] c #AFAFAF", +"^ c #3E3E3E", +"/ c #A6A6A6", +"( c #BEBEBE", +"_ c #C8C8C8", +": c #070707", +"< c #090909", +"[ c #0A0A0A", +" ", +" ", +" ", +" .+@#$%& ", +" *@=-;>, ", +" '%)!~{] ", +" ^$/(_~% ", +" :<[[[ ", +" ", +" "] + + +def add_filmstrip(pixbuf): + """ + Adds a filmstrip to the left and right of a pixbuf + + Returns a pixbuf + + """ + filmstrip = gtk.gdk.pixbuf_new_from_xpm_data(xpm_data) + filmstrip_width = filmstrip.get_width() + filmstrip_height = filmstrip.get_height() + filmstrip_right = filmstrip.flip(True) + + + original = pixbuf + original_height = original.get_height() + thumbnail_width = original.get_width() + filmstrip_width * 2 + thumbnail_right_col = original.get_width() + filmstrip_width + + thumbnail = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8, thumbnail_width, original.get_height()) + + #add filmstrips to left and right + for i in range(original_height / filmstrip_height): + filmstrip.copy_area(0, 0, filmstrip_width, filmstrip_height, thumbnail, 0, i * filmstrip_height) + filmstrip_right.copy_area(0, 0, filmstrip_width, filmstrip_height, thumbnail, thumbnail_right_col, i * filmstrip_height) + + #now do the remainder, at the bottom + remaining_height = original_height % filmstrip_height + if remaining_height: + filmstrip.copy_area(0, 0, filmstrip_width, remaining_height, thumbnail, 0, original_height-remaining_height) + filmstrip_right.copy_area(0, 0, filmstrip_width, remaining_height, thumbnail, thumbnail_right_col, original_height-remaining_height) + + if original.get_has_alpha(): + thumbnail = thumbnail.add_alpha(False, 0,0,0) + #copy in the original image + original.copy_area(0, 0, original.get_width(), original_height, thumbnail, filmstrip_width, 0) + + return thumbnail + + +if __name__ == '__main__': + import sys + + + if (len(sys.argv) != 2): + print 'Usage: ' + sys.argv[0] + ' path/to/photo/image' + + else: + p = gtk.gdk.pixbuf_new_from_file(sys.argv[1]) + p2 = add_filmstrip(p) + p2.save('testing.png', 'png') diff --git a/rapid/glade3/filmstrip-100x75.xpm b/rapid/glade3/filmstrip-100x75.xpm deleted file mode 100644 index 5e3428e..0000000 --- a/rapid/glade3/filmstrip-100x75.xpm +++ /dev/null @@ -1,106 +0,0 @@ -/* XPM */ -static char * thumbnail_100x75_xpm[] = { -"100 75 28 1", -" c None", -". c #000000", -"+ c #232323", -"@ c #7A7A7A", -"# c #838383", -"$ c #8C8C8C", -"% c #909090", -"& c #8E8E8E", -"* c #525252", -"= c #6E6E6E", -"- c #939393", -"; c #A3A3A3", -"> c #ABABAB", -", c #A8A8A8", -"' c #9B9B9B", -") c #727272", -"! c #A4A4A4", -"~ c #BBBBBB", -"{ c #C4C4C4", -"] c #C1C1C1", -"^ c #AFAFAF", -"/ c #3E3E3E", -"( c #A6A6A6", -"_ c #BEBEBE", -": c #C8C8C8", -"< c #070707", -"[ c #090909", -"} c #0A0A0A", -"............ ............", -"............ ............", -"............ ............", -"............ ............", -"....+@#$%&*. .*&%$#@+....", -"....=#-;>,'. .',>;-#=....", -"....)&!~{]^. .^]{~!&)....", -"..../%(_:{&. .&{:_(%/....", -".....<[}}}.. ..}}}[<.....", -"............ ............", -"............ ............", -"............ ............", -"............ ............", -"............ ............", -"....+@#$%&*. .*&%$#@+....", -"....=#-;>,'. .',>;-#=....", -"....)&!~{]^. .^]{~!&)....", -"..../%(_:{&. .&{:_(%/....", -".....<[}}}.. ..}}}[<.....", -"............ ............", -"............ ............", -"............ ............", -"............ ............", -"............ ............", -"....+@#$%&*. .*&%$#@+....", -"....=#-;>,'. .',>;-#=....", -"....)&!~{]^. .^]{~!&)....", -"..../%(_:{&. .&{:_(%/....", -".....<[}}}.. ..}}}[<.....", -"............ ............", -"............ ............", -"............ ............", -"............ ............", -"............ ............", -"....+@#$%&*. .*&%$#@+....", -"....=#-;>,'. .',>;-#=....", -"....)&!~{]^. .^]{~!&)....", -"..../%(_:{&. .&{:_(%/....", -".....<[}}}.. ..}}}[<.....", -"............ ............", -"............ ............", -"............ ............", -"............ ............", -"............ ............", -"....+@#$%&*. .*&%$#@+....", -"....=#-;>,'. .',>;-#=....", -"....)&!~{]^. .^]{~!&)....", -"..../%(_:{&. .&{:_(%/....", -".....<[}}}.. ..}}}[<.....", -"............ ............", -"............ ............", -"............ ............", -"............ ............", -"............ ............", -"....+@#$%&*. .*&%$#@+....", -"....=#-;>,'. .',>;-#=....", -"....)&!~{]^. .^]{~!&)....", -"..../%(_:{&. .&{:_(%/....", -".....<[}}}.. ..}}}[<.....", -"............ ............", -"............ ............", -"............ ............", -"............ ............", -"............ ............", -"....+@#$%&*. .*&%$#@+....", -"....=#-;>,'. .',>;-#=....", -"....)&!~{]^. .^]{~!&)....", -"..../%(_:{&. .&{:_(%/....", -".....<[}}}.. ..}}}[<.....", -"............ ............", -"............ ............", -"............ ............", -"............ ............", -"............ ............", -"....+@#$%&*. .*&%$#@+...."}; diff --git a/rapid/glade3/image-missing.svg b/rapid/glade3/image-missing.svg deleted file mode 100644 index 4351feb..0000000 --- a/rapid/glade3/image-missing.svg +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - Generic Image - - - Lapo Calamandrei - - - http://www.gnome.org - - - Jakub Steiner, Andreas Nilsson - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/rapid/glade3/photo.png b/rapid/glade3/photo.png new file mode 100644 index 0000000..87cfc2a Binary files /dev/null and b/rapid/glade3/photo.png differ diff --git a/rapid/glade3/photo24.png b/rapid/glade3/photo24.png new file mode 100644 index 0000000..53b2271 Binary files /dev/null and b/rapid/glade3/photo24.png differ diff --git a/rapid/glade3/photo_shadow.png b/rapid/glade3/photo_shadow.png new file mode 100644 index 0000000..0053ba0 Binary files /dev/null and b/rapid/glade3/photo_shadow.png differ diff --git a/rapid/glade3/photo_small_shadow.png b/rapid/glade3/photo_small_shadow.png new file mode 100644 index 0000000..fe85cd9 Binary files /dev/null and b/rapid/glade3/photo_small_shadow.png differ diff --git a/rapid/glade3/rapid-photo-downloader-about.png b/rapid/glade3/rapid-photo-downloader-about.png deleted file mode 100644 index 0aefb1d..0000000 Binary files a/rapid/glade3/rapid-photo-downloader-about.png and /dev/null differ diff --git a/rapid/glade3/rapid-photo-downloader-download-pending.svg b/rapid/glade3/rapid-photo-downloader-download-pending.svg new file mode 100644 index 0000000..d6127b7 --- /dev/null +++ b/rapid/glade3/rapid-photo-downloader-download-pending.svg @@ -0,0 +1,187 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/rapid/glade3/rapid-photo-downloader-downloaded-with-error.svg b/rapid/glade3/rapid-photo-downloader-downloaded-with-error.svg new file mode 100644 index 0000000..74f13e3 --- /dev/null +++ b/rapid/glade3/rapid-photo-downloader-downloaded-with-error.svg @@ -0,0 +1,350 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/rapid/glade3/rapid-photo-downloader-downloaded-with-warning.svg b/rapid/glade3/rapid-photo-downloader-downloaded-with-warning.svg new file mode 100644 index 0000000..8065ac2 --- /dev/null +++ b/rapid/glade3/rapid-photo-downloader-downloaded-with-warning.svg @@ -0,0 +1,351 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/rapid/glade3/rapid-photo-downloader-downloaded.svg b/rapid/glade3/rapid-photo-downloader-downloaded.svg new file mode 100644 index 0000000..378927e --- /dev/null +++ b/rapid/glade3/rapid-photo-downloader-downloaded.svg @@ -0,0 +1,295 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/rapid/glade3/rapid-photo-downloader-jobcode.svg b/rapid/glade3/rapid-photo-downloader-jobcode.svg new file mode 100644 index 0000000..3096ee2 --- /dev/null +++ b/rapid/glade3/rapid-photo-downloader-jobcode.svg @@ -0,0 +1,265 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Insert Text + + + Lapo Calamandrei + + + http://www.gnome.org + + + + + + + + + insert + text + generic + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/rapid/glade3/rapid-photo-downloader.svg b/rapid/glade3/rapid-photo-downloader.svg new file mode 100644 index 0000000..a1e9885 --- /dev/null +++ b/rapid/glade3/rapid-photo-downloader.svg @@ -0,0 +1,2673 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Jakub Steiner + + + http://jimmac.musichall.cz + + + + + snapshot + camera + photo + compact + snap + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/rapid/glade3/rapid.glade b/rapid/glade3/rapid.glade index 539ac9c..0954b5c 100644 --- a/rapid/glade3/rapid.glade +++ b/rapid/glade3/rapid.glade @@ -9,7 +9,7 @@ True center-on-parent 500 - rapid-photo-downloader-about.png + rapid-photo-downloader.svg dialog False @@ -1432,7 +1432,7 @@ True - emblem-photos + rapid-photo-downloader-jobcode False @@ -2560,81 +2560,6 @@ You can download photos from multiple devices simultaneously, or you can specify GTK_FILL - - - Ignore - True - True - False - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - True - True - backup_error_radiobutton - - - - 1 - 2 - 13 - 14 - GTK_FILL - - - - - Report a warning - True - True - False - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - True - True - backup_error_radiobutton - - - - 1 - 2 - 12 - 13 - GTK_FILL - - - - - Report an error - True - True - False - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - True - True - - - - 1 - 2 - 11 - 12 - GTK_FILL - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 0 - 12 - <b>Missing Backup Devices</b> - True - - - 2 - 9 - 10 - GTK_FILL - - Add unique identifier @@ -2650,8 +2575,8 @@ You can download photos from multiple devices simultaneously, or you can specify 1 2 - 5 - 6 + 3 + 4 GTK_FILL @@ -2665,40 +2590,6 @@ You can download photos from multiple devices simultaneously, or you can specify True True - - 1 - 2 - 4 - 5 - GTK_FILL - - - - - True - 0 - 12 - Choose whether to skip downloading the file, or to add a unique indentifier. - True - - - 1 - 2 - 3 - 4 - GTK_FILL - - - - - Report an error - True - True - False - True - True - - 1 2 @@ -2708,11 +2599,11 @@ You can download photos from multiple devices simultaneously, or you can specify - + True 0 12 - Specify what to do when a photo or video of the same name has already been downloaded or backed up. + When a photo or video of the same name has already been downloaded, choose whether to skip downloading the file, or to add a unique indentifier. True @@ -2723,21 +2614,6 @@ You can download photos from multiple devices simultaneously, or you can specify GTK_FILL - - - 0 - 12 - Specify what to do when there are no backup devices. - True - - - 1 - 2 - 10 - 11 - GTK_FILL - - True @@ -2749,8 +2625,8 @@ You can download photos from multiple devices simultaneously, or you can specify 1 2 - 6 - 7 + 4 + 5 GTK_FILL @@ -2768,8 +2644,8 @@ You can download photos from multiple devices simultaneously, or you can specify 1 2 - 7 - 8 + 5 + 6 @@ -2785,8 +2661,8 @@ You can download photos from multiple devices simultaneously, or you can specify 1 2 - 8 - 9 + 6 + 7 @@ -2822,6 +2698,30 @@ You can download photos from multiple devices simultaneously, or you can specify + + + + + + + + + + + + + + + + + + + + + + + + 1 @@ -2925,7 +2825,7 @@ You can download photos from multiple devices simultaneously, or you can specify GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 5 True - rapid-photo-downloader-about.png + rapid-photo-downloader.svg normal Rapid Photo Downloader Copyright Damon Lynch 2007-10 @@ -2937,7 +2837,8 @@ Rapid Photo Downloader is distributed in the hope that it will be useful, but WI You should have received a copy of the GNU General Public License along with Rapid Photo Downloader; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Damon Lynch <damonlynch@gmail.com> - Lőrincz András <level.andrasnak@gmail.com> + Anton Alyab'ev <subeditor@dolgopa.org> +Lőrincz András <level.andrasnak@gmail.com> Michel Ange <michelange@wanadoo.fr> Alain J. Baudrez <a.baudrez@gmail.com> Martin Egger <martin.egger@gmx.net> @@ -2957,7 +2858,7 @@ Marco Solari <marcosolari@gmail.com> Toni Lähdekorpi <toni@lygon.net> Ulf Urdén <ulf.urden@purplescout.com> Julien Valroff <julien@kirya.net> - rapid-photo-downloader-about.png + rapid-photo-downloader.svg True @@ -2981,11 +2882,12 @@ Julien Valroff <julien@kirya.net> - 600 GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Rapid Photo Downloader - rapid-photo-downloader-about.png + 650 + rapid-photo-downloader.svg + True @@ -2996,7 +2898,7 @@ Julien Valroff <julien@kirya.net> True - _Photos + _File True @@ -3015,6 +2917,16 @@ Julien Valroff <julien@kirya.net> + + + gtk-refresh + True + True + True + + + + gtk-preferences @@ -3038,6 +2950,76 @@ Julien Valroff <julien@kirya.net> + + + True + _Select + True + + + + + True + Select _All + True + + + + + + + True + Select All Pho_tos + True + + + + + + + True + Select All Vi_deos + True + + + + + + + True + Se_lect None + True + + + + + + + True + + + + + True + Select All Without _Job Code + True + + + + + + + True + Select All Wit_h Job Code + True + + + + + + + + True @@ -3046,26 +3028,86 @@ Julien Valroff <julien@kirya.net> - + True - _Thumbnails + _Preview True - + - + True - _Error Log + P_review Columns True - + + + True + + + True + _Type + True + + + + + + True + _Size + True + + + + + + True + _Device + True + + + + + + True + _Filename + True + + + + + + True + _Path + True + + + + + - + + True + Preview _Folders + True + + + + + True + + + True + _Error Log + True + + + True @@ -3074,6 +3116,11 @@ Julien Valroff <julien@kirya.net> + + + True + + @@ -3086,12 +3133,19 @@ Julien Valroff <julien@kirya.net> - - True + _Get Help Online... + True True + False + + + True + help + + @@ -3147,67 +3201,83 @@ Julien Valroff <julien@kirya.net> True 12 - + True + True - + True - True - automatic - automatic - + True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 6 - + True + True + automatic + automatic - + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + queue + + + True + + + + + + + + 12 + 0 + + + 0 + - 12 - 0 + False + False - - - 0 - - - - - True - + True - True - never + 2 + 3 - - 112 + True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + 1 + 2 + + + + - 12 - 0 + True + False - False - 1 + 0 @@ -3220,7 +3290,7 @@ Julien Valroff <julien@kirya.net> False False - 2 + 1 @@ -3389,7 +3459,7 @@ Julien Valroff <julien@kirya.net> 600 400 True - rapid-photo-downloader-about.png + rapid-photo-downloader.svg dialog False diff --git a/rapid/glade3/video.png b/rapid/glade3/video.png new file mode 100644 index 0000000..ac1086b Binary files /dev/null and b/rapid/glade3/video.png differ diff --git a/rapid/glade3/video.svg b/rapid/glade3/video.svg deleted file mode 100644 index a03c672..0000000 --- a/rapid/glade3/video.svg +++ /dev/null @@ -1,1638 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - Applications Multimedia - August 2006 - - - Lapo Calamandrei - - - http://www.gnome.org - - - multimedia - sound - video - - - - - - Jakub Steiner, Andreas Nilsson - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/rapid/glade3/video24.png b/rapid/glade3/video24.png new file mode 100644 index 0000000..df8b22b Binary files /dev/null and b/rapid/glade3/video24.png differ diff --git a/rapid/glade3/video_shadow.png b/rapid/glade3/video_shadow.png new file mode 100644 index 0000000..9b66480 Binary files /dev/null and b/rapid/glade3/video_shadow.png differ diff --git a/rapid/glade3/video_small_shadow.png b/rapid/glade3/video_small_shadow.png new file mode 100644 index 0000000..eb42d92 Binary files /dev/null and b/rapid/glade3/video_small_shadow.png differ diff --git a/rapid/idletube.py b/rapid/idletube.py index 86ff1a4..0b07536 100644 --- a/rapid/idletube.py +++ b/rapid/idletube.py @@ -1,6 +1,8 @@ # Copyright (c) 2005 Antoon Pardon # +# Modified 2010 by Damon Lynch to use python's higher performance deque, rather than a regular list +# # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the "Software"), # to deal in the Software without restriction, including without limitation @@ -18,6 +20,10 @@ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +import collections +from Queue import Queue + from threading import Lock from thread import get_ident @@ -25,26 +31,29 @@ from types import BooleanType as UnConnected UnRegistered, Registered = False, True + class EOInformation(Exception): pass class TubeAccess(Exception): pass + class Fifo: def __init__(self): - self.fifo = [] + self.fifo = collections.deque() def put(self, item): self.fifo.append(item) def get(self): - return self.fifo.pop(0) + return self.fifo.popleft() def size(self): return len(self.fifo) + class Tube: def __init__(self, maxsize, lck = Lock, container = None): @@ -90,18 +99,12 @@ class Tube: self.readers.discard(thrd) if 'w' in access: self.writers.discard(thrd) -## print "have", self.writers, "writers" if len(self.writers) == 0: if self.container.size() == 0: -## print "emptying container, as size is", self.container.size() self.empty.release() if self.cb_src is Registered and len(self.readers) > 0: -## print "adding callback" self.cb_src = gob.idle_add(self._idle_callback) -## else: -## print "container size not empty, is", self.container.size() for _ in self.readers: -## print "putting EOInformation" self.container.put(EOInformation) self.in_use.release() @@ -148,9 +151,7 @@ class Tube: if size == 0: self.empty.release() if self.cb_src is Registered: - #gdk.threads_enter() self.cb_src = gob.idle_add(self._idle_callback) - #gdk.threads_leave() self.container.put(item) if size + 1 < self.maxsize: self.full.release() @@ -185,9 +186,8 @@ class Tube: def tube_add_watch(tube, callback, *args): - global gob #, gdk + global gob import gobject as gob - #import gtk.gdk as gdk tube.in_use.acquire() tube.cb_arglst.append([callback] + list(args)) diff --git a/rapid/media.py b/rapid/media.py index d00855a..06ebb2e 100755 --- a/rapid/media.py +++ b/rapid/media.py @@ -1,7 +1,7 @@ #!/usr/bin/python # -*- coding: latin1 -*- -### Copyright (C) 2007 Damon Lynch +### Copyright (C) 2007, 2008, 2009, 2010 Damon Lynch ### 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 @@ -18,15 +18,30 @@ ### Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA import os +import sys +import types +import datetime +import subprocess import config +from config import MAX_THUMBNAIL_SIZE +from config import STATUS_NOT_DOWNLOADED, \ + STATUS_DOWNLOAD_PENDING, \ + STATUS_CANNOT_DOWNLOAD + + import common import metadata import videometadata +from common import Configi18n +global _ +_ = Configi18n._ + import operator +import gtk -def _getDefaultLocation(options, ignore_missing_dir=False): +def _getDefaultLocationLegacy(options, ignore_missing_dir=False): if ignore_missing_dir: return common.getFullPath(options[0]) for default in options: @@ -34,12 +49,29 @@ def _getDefaultLocation(options, ignore_missing_dir=False): if os.path.isdir(path): return path return common.getFullPath('') + +def _getDefaultLocationXDG(dir_type): + proc = subprocess.Popen(['xdg-user-dir', dir_type], stdout=subprocess.PIPE) + output = proc.communicate()[0].strip() + return output def getDefaultPhotoLocation(ignore_missing_dir=False): - return _getDefaultLocation(config.DEFAULT_PHOTO_LOCATIONS, ignore_missing_dir) + try: + return _getDefaultLocationXDG('PICTURES') + except: + return _getDefaultLocationLegacy(config.DEFAULT_PHOTO_LOCATIONS, ignore_missing_dir) def getDefaultVideoLocation(ignore_missing_dir=False): - return _getDefaultLocation(config.DEFAULT_VIDEO_LOCATIONS, ignore_missing_dir) + try: + return _getDefaultLocationXDG('VIDEOS') + except: + return _getDefaultLocationLegacy(config.DEFAULT_VIDEO_LOCATIONS, ignore_missing_dir) + +def getDefaultBackupPhotoIdentifier(): + return os.path.split(getDefaultPhotoLocation(ignore_missing_dir = True))[1] + +def getDefaultBackupVideoIdentifier(): + return os.path.split(getDefaultVideoLocation(ignore_missing_dir = True))[1] def is_DCIM_Media(path): """ Returns true if directory specifies some media with photos on it """ @@ -79,25 +111,119 @@ def isVideo(fileName): ext = os.path.splitext(fileName)[1].lower()[1:] return (ext in videometadata.VIDEO_FILE_EXTENSIONS) -def getVideoThumbnailFile(fullFileName): + +class MediaFile: """ - Checks to see if a thumbnail file is in the same directory as the - file. Expects a full path to be part of the file name. - - Returns the filename, including path, if found, else returns None. + A photo or video file, with metadata """ - f = None - name, ext = os.path.splitext(fullFileName) - for e in videometadata.VIDEO_THUMBNAIL_FILE_EXTENSIONS: - if os.path.exists(name + '.' + e): - f = name + '.' + e - break - if os.path.exists(name + '.' + e.upper()): - f = name + '.' + e.upper() - break + def __init__(self, thread_id, name, path, size, fileSystemModificationTime, deviceName, downloadFolder, volume, isPhoto = True): + self.thread_id = thread_id + self.path = path + self.name = name + self.fullFileName = os.path.join(path, name) + self.size = size # type int + self.modificationTime = fileSystemModificationTime + self.deviceName = deviceName + self.downloadFolder = downloadFolder + self.volume = volume + + self.jobcode = '' - return f + # a reference into the SelectionTreeView's liststore + self.treerowref = None + + # generated values + self.downloadSubfolder = '' + self.downloadPath = '' + self.downloadName = '' + self.downloadFullFileName = '' + + self.isImage = isPhoto + self.isVideo = not self.isImage + if isPhoto: + self.displayName = _("photo") + self.displayNameCap = _("Photo") + else: + self.displayName = _("video") + self.displayNameCap = _("Video") + + + self.metadata = None + self.thumbnail = None + self.genericThumbnail = False + self.sampleName = '' + self.sampleSubfolder = '' + self.samplePath = '' + + # whether the sample genereated name, subfolder and path need to be refreshed in a preview + self.sampleStale = False + + self.status = STATUS_NOT_DOWNLOADED + self.problem = None # class Problem in problemnotifcation.py + + def loadMetadata(self): + """ + Attempt to load the metadata for the photo or video + + Raises errors if unable to be loaded + """ + if not self.metadata: + if self.isImage: + self.metadata = metadata.MetaData(self.fullFileName) + self.metadata.read() + else: + self.metadata = videometadata.VideoMetaData(self.fullFileName) + + def dateTime(self, alternative_if_date_missing=None): + date = None + if self.metadata: + date = self.metadata.dateTime() + if not date: + if alternative_if_date_missing: + date = alternative_if_date_missing + else: + date = datetime.datetime.fromtimestamp(self.modificationTime) + return date + + + def generateThumbnail(self, tempWorkingDir): + """ + Attempts to generate or extract a thumnail and its orientation for the photo or video + """ + if self.metadata is None: + sys.stderr.write("metadata should not be empty!") + else: + if self.isImage: + try: + thumbnail = self.metadata.getThumbnailData(MAX_THUMBNAIL_SIZE) + if not isinstance(thumbnail, types.StringType): + self.thumbnail = None + else: + orientation = self.metadata.orientation(missing=None) + pbloader = gtk.gdk.PixbufLoader() + pbloader.write(thumbnail) + pbloader.close() + # Get the resulting pixbuf and build an image to be displayed + pixbuf = pbloader.get_pixbuf() + if orientation == 8: + pixbuf = pixbuf.rotate_simple(gtk.gdk.PIXBUF_ROTATE_COUNTERCLOCKWISE) + elif orientation == 6: + pixbuf = pixbuf.rotate_simple(gtk.gdk.PIXBUF_ROTATE_CLOCKWISE) + elif orientation == 3: + pixbuf = pixbuf.rotate_simple(gtk.gdk.PIXBUF_ROTATE_UPSIDEDOWN) + + self.thumbnail = pixbuf + except: + pass + else: + # get thumbnail of video + # it may need to be generated + self.thumbnail = self.metadata.getThumbnailData(MAX_THUMBNAIL_SIZE, tempWorkingDir) + if self.thumbnail: + # scale to size + self.thumbnail = common.scale2pixbuf(MAX_THUMBNAIL_SIZE, MAX_THUMBNAIL_SIZE, self.thumbnail) + class Media: @@ -138,7 +264,7 @@ class Media: class CardMedia(Media): """Compact Flash cards, hard drives, etc.""" - def __init__(self, path, volume = None, doNotScan=True): + def __init__(self, path, volume = None): """ volume is a gnomevfs or gio volume, see class Volume in rapid.py """ @@ -146,7 +272,7 @@ class CardMedia(Media): def setMedia(self, imagesAndVideos, fileSizeSum, noFiles): - self.imagesAndVideos = imagesAndVideos + self.imagesAndVideos = imagesAndVideos # class MediaFile self.fileSizeSum = fileSizeSum self.noFiles = noFiles @@ -158,19 +284,55 @@ class CardMedia(Media): return common.formatSizeForUser(self.fileSizeSum) else: return self.fileSizeSum - - def _firstFile(self, function_to_check): + + def sizeAndNumberDownloadPending(self): + """ + Returns how many files have their status set to download pending, and their size + """ + v = s = 0 + fileIndex = [] + for i in range(len(self.imagesAndVideos)): + mediaFile = self.imagesAndVideos[i][0] + if mediaFile.status == STATUS_DOWNLOAD_PENDING: + v += 1 + s += mediaFile.size + fileIndex.append(i) + return (v, s, fileIndex) + + def numberOfFilesNotCannotDownload(self): + """ + Returns how many files whose status is not cannot download + """ + v = 0 + for i in range(len(self.imagesAndVideos)): + mediaFile = self.imagesAndVideos[i][0] + if mediaFile.status <> STATUS_CANNOT_DOWNLOAD: + v += 1 + + return v + def downloadPending(self): + """ + Returns true if there a mediaFile with status download pending on the device. + Inefficient. Not currently used. + """ + for i in range(len(self.imagesAndVideos)): + mediaFile = self.imagesAndVideos[i][0] + if mediaFile.status == config.STATUS_DOWNLOAD_PENDING: + return True + return False + + def _firstFile(self, isImage): if self.imagesAndVideos: for i in range(len(self.imagesAndVideos)): - if function_to_check(self.imagesAndVideos[i][0]): - return self.imagesAndVideos[i] + if self.imagesAndVideos[i][0].isImage == isImage: + return self.imagesAndVideos[i][0] else: return None def firstImage(self): - return self._firstFile(isImage) + return self._firstFile(True) def firstVideo(self): - return self._firstFile(isVideo) + return self._firstFile(False) diff --git a/rapid/metadata.py b/rapid/metadata.py index c116072..3077a61 100755 --- a/rapid/metadata.py +++ b/rapid/metadata.py @@ -23,6 +23,7 @@ import sys import subprocess import config import types +import time try: import pyexiv2 @@ -370,7 +371,24 @@ class MetaData(baseclass): return model else: return missing + + def filterMangledDates(self, d): + """ + Some EXIF dates are badly formed. Try to fix them + """ + _datetime = d.strip() + # remove any weird characters at the end of the string + while _datetime and not _datetime[-1].isdigit(): + _datetime = _datetime[:-1] + _date, _time = _datetime.split(' ') + _datetime = "%s %s" % (_date.replace(":", "-") , _time.replace("-", ":")) + try: + d = datetime.datetime.strptime(_datetime, '%Y-%m-%d %H:%M:%S') + except: + d = None + return d + def dateTime(self, missing=''): """ Returns in python datetime format the date and time the image was @@ -387,10 +405,26 @@ class MetaData(baseclass): v = self["Exif.Photo.DateTimeOriginal"] else: v = self["Exif.Image.DateTime"] + if isinstance(v, types.StringType): + v = self.filterMangledDates(v) + if v is None: + v = missing return v except: return missing + def timeStamp(self, missing=''): + dt = self.dateTime(missing=None) + if not dt is None: + try: + t = dt.timetuple() + ts = time.mktime(t) + except: + ts = missing + else: + ts = missing + return ts + def subSeconds(self, missing='00'): """ returns the subsecond the image was taken, as recorded by the camera""" try: diff --git a/rapid/problemnotification.py b/rapid/problemnotification.py new file mode 100755 index 0000000..8dc07d0 --- /dev/null +++ b/rapid/problemnotification.py @@ -0,0 +1,427 @@ +#!/usr/bin/python +# -*- coding: latin1 -*- + +### Copyright (C) 2010 Damon Lynch + +### 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +import sys +import types +from common import Configi18n +global _ +_ = Configi18n._ + + +# components +SUBFOLDER_COMPONENT = _('subfolder') +FILENAME_COMPONENT = _('filename') + +# problem categories +METADATA_PROBLEM = 1 +FILE_PROBLEM = 2 +GENERATION_PROBLEM = 3 +DOWNLOAD_PROBLEM = 4 +DOWNLOAD_PROBLEM_W_NO = 5 +DIFFERENT_EXIF = 6 +FILE_ALREADY_EXISTS = 7 +UNIQUE_IDENTIFIER_CAT = 8 +BACKUP_PROBLEM = 9 +BACKUP_OK = 10 +FILE_ALREADY_DOWN_CAT = 11 + +# problem text +MISSING_METADATA = 1 +INVALID_DATE_TIME = 2 +MISSING_FILE_EXTENSION = 3 +MISSING_IMAGE_NUMBER = 4 +ERROR_IN_GENERATION = 5 + +CANNOT_DOWNLOAD_BAD_METADATA = 6 + +ERROR_IN_NAME_GENERATION = 7 + +DOWNLOAD_COPYING_ERROR = 8 +DOWNLOAD_COPYING_ERROR_W_NO = 9 + +FILE_ALREADY_EXISTS_NO_DOWNLOAD = 10 +UNIQUE_IDENTIFIER_ADDED = 11 +BACKUP_EXISTS = 12 +BACKUP_EXISTS_OVERWRITTEN = 13 +NO_BACKUP_PERFORMED = 14 +BACKUP_ERROR = 15 +BACKUP_DIRECTORY_CREATION = 16 + +SAME_FILE_DIFFERENT_EXIF = 17 +NO_DOWNLOAD_WAS_BACKED_UP = 18 +FILE_ALREADY_DOWNLOADED = 19 + +#extra details +UNIQUE_IDENTIFIER = '__1' +EXISTING_FILE = '__2' +NO_DATA_TO_NAME = '__3' +DOWNLOAD_COPYING_ERROR_DETAIL = '__4' +DOWNLOAD_COPYING_ERROR_W_NO_DETAIL = '__5' +BACKUP_OK_TYPE = '__6' + +# category, text, duplicates allowed +problem_definitions = { + + MISSING_METADATA: (METADATA_PROBLEM, "%s", True), + INVALID_DATE_TIME: (METADATA_PROBLEM, _('Date time value %s appears invalid.'), False), + MISSING_FILE_EXTENSION: (METADATA_PROBLEM, _("Filename does not have an extension."), False), + # a number component is something like the 8346 in IMG_8346.JPG + MISSING_IMAGE_NUMBER: (METADATA_PROBLEM, _("Filename does not have a number component."), False), + ERROR_IN_GENERATION: (METADATA_PROBLEM, _("Error generating component %s."), False), # a generic problem + + CANNOT_DOWNLOAD_BAD_METADATA: (FILE_PROBLEM, _("%(filetype)s metadata cannot be read"), False), + + ERROR_IN_NAME_GENERATION: (GENERATION_PROBLEM, _("%(filetype)s %(area)s could not be generated"), False), + + DOWNLOAD_COPYING_ERROR: (DOWNLOAD_PROBLEM, _("An error occurred when copying the %(filetype)s"), False), + DOWNLOAD_COPYING_ERROR_W_NO: (DOWNLOAD_PROBLEM_W_NO, _("An error occurred when copying the %(filetype)s"), False), + + FILE_ALREADY_EXISTS_NO_DOWNLOAD:(FILE_ALREADY_EXISTS, _("%(filetype)s already exists"), False), + UNIQUE_IDENTIFIER_ADDED: (UNIQUE_IDENTIFIER_CAT, _("%(filetype)s already exists"), False), + BACKUP_EXISTS: (BACKUP_PROBLEM, "%s", True), + BACKUP_EXISTS_OVERWRITTEN: (BACKUP_PROBLEM, "%s", True), + NO_BACKUP_PERFORMED: (BACKUP_PROBLEM, _("%(filetype)s could not be backed up because no suitable backup locations were found."), False), + BACKUP_ERROR: (BACKUP_PROBLEM, "%s", True), + BACKUP_DIRECTORY_CREATION: (BACKUP_PROBLEM, "%s", True), + NO_DOWNLOAD_WAS_BACKED_UP: (BACKUP_OK, "%s", True), + + SAME_FILE_DIFFERENT_EXIF: (DIFFERENT_EXIF, _("%(image1)s was taken at on %(image1_date)s at %(image1_time)s, and %(image2)s on %(image2_date)s at %(image2_time)s."), False), + FILE_ALREADY_DOWNLOADED: (FILE_ALREADY_DOWN_CAT, _('%(filetype)s was already downloaded'), False), +} + +extra_detail_definitions = { + UNIQUE_IDENTIFIER: _("The existing %(filetype)s was last modified on %(date)s at %(time)s. Unique identifier '%(identifier)s' added."), + EXISTING_FILE: _("The existing %(filetype)s was last modified on %(date)s at %(time)s."), + NO_DATA_TO_NAME: _("There is no data with which to name the %(filetype)s."), + DOWNLOAD_COPYING_ERROR_DETAIL: "%s", + DOWNLOAD_COPYING_ERROR_W_NO_DETAIL: _("Error: %(errorno)s %(strerror)s"), + BACKUP_OK_TYPE: "%s", +} + +class Problem: + """ + Collect problems with subfolder and filename generation, download errors, and so forth + + Problems are human readable + """ + + def __init__(self): + self.problems = {} + self.categories = {} + self.components = [] + self.extra_detail = {} + + def add_problem(self, component, problem_definition, *args): + added = True + if problem_definition not in problem_definitions: + sys.stderr.write("FIXME: unknown problem definition!\n") + else: + category, problem, duplicates_ok = problem_definitions[problem_definition] + + if args: + # check for special case of named arguments in a dictionary + if isinstance(args[0], types.DictType): + problem_details = problem % args[0] + else: + problem_details = problem % args + else: + problem_details = problem + + if not duplicates_ok: + self.problems[problem_definition] = [problem_details] + else: + if problem_definition in self.problems: + if problem_details not in self.problems[problem_definition]: + self.problems[problem_definition].append(problem_details) + else: + added = False + else: + self.problems[problem_definition] = [problem_details] + + if category not in self.categories or not added: + self.categories[category] = 1 + else: + self.categories[category] += 1 + + if (component is not None) and (component not in self.components): + self.components.append(component) + + def add_extra_detail(self, extra_detail, *args): + if extra_detail not in extra_detail_definitions: + self.extra_detail[extra_detail] = args[0] + else: + detail = extra_detail_definitions[extra_detail] + + if args: + if isinstance(args[0], types.DictType): + extra_details = detail % args[0] + else: + extra_details = detail % args + else: + extra_details = detail + + self.extra_detail[extra_detail] = extra_details + + + def has_problem(self): + return len(self.problems) > 0 + + def get_problems(self): + """ + Returns a string with the problems encountered in downloading the file. + """ + + def get_backup_error_inst(volume): + if ('%s%s' % (BACKUP_ERROR, volume)) in self.extra_detail: + return self.extra_detail['%s%s' % (BACKUP_ERROR, volume)] + else: + return '' + + def get_dir_creation_inst(volume): + return self.extra_detail['%s%s' % (BACKUP_DIRECTORY_CREATION, volume)] + + v = '' + + # special cases + if FILE_PROBLEM in self.categories: + return _("The metadata might be corrupt.") + + if FILE_ALREADY_DOWN_CAT in self.categories: + return _("The filename, extension and Exif information indicate it has already been downloaded.") + + if FILE_ALREADY_EXISTS in self.categories: + if EXISTING_FILE in self.extra_detail: + v = self.extra_detail[EXISTING_FILE] + + + if UNIQUE_IDENTIFIER_CAT in self.categories: + v = self.extra_detail[UNIQUE_IDENTIFIER] + + if DOWNLOAD_PROBLEM in self.categories: + v = self.extra_detail[DOWNLOAD_COPYING_ERROR_DETAIL] + + if DOWNLOAD_PROBLEM_W_NO in self.categories: + v = self.extra_detail[DOWNLOAD_COPYING_ERROR_W_NO_DETAIL] + + if BACKUP_OK in self.categories: + details = self.problems[NO_DOWNLOAD_WAS_BACKED_UP] + if len(self.problems[NO_DOWNLOAD_WAS_BACKED_UP]) == 1: + vv = _(' It was backed up to %(volume)s') % {'volume': details[0]} + else: + vv = _(" It was backed up to these devices: ") + for d in details[:-1]: + vv += _("%s, ") % d + vv = _("%(volumes)s and %(final_volume)s.") % \ + {'volumes': vv[:-2], + 'final_volume': details[-1]} \ + + ' ' + v += vv + + if GENERATION_PROBLEM in self.categories: + v = self.extra_detail[NO_DATA_TO_NAME] + + if DIFFERENT_EXIF in self.categories: + v = self.problems[SAME_FILE_DIFFERENT_EXIF][0] + if METADATA_PROBLEM in self.categories: + v = _('Photos detected with the same filenames, but taken at different times: %(details)s' ) % {'details':v} + + # Problems backing up + if BACKUP_PROBLEM in self.categories: + vv = '' + for p in self.problems: + details = self.problems[p] + + if p == NO_BACKUP_PERFORMED: + vv = details[0] + + elif p == BACKUP_ERROR: + + if len(details) == 1: + volume = details[0] + inst = get_backup_error_inst(volume) + if inst: + vv += _("An error occurred when backing up on %(volume)s: %(inst)s.") % {'volume': volume, 'inst': inst} + ' ' + else: + vv += _("An error occurred when backing up on %(volume)s.") % {'volume': volume} + ' ' + else: + vv += _("Errors occurred when backing up on the following backup devices: ") + for volume in details[:-1]: + inst = get_backup_error_inst(volume) + if inst: + vv += _("%(volume)s (%(inst)s), ") % {'volume': volume, 'inst': inst} + else: + vv += _("%(volume)s, ") % {'volume': volume} + volume = details[-1] + inst = get_backup_error_inst(volume) + if inst: + vv = _("%(volumes)s and %(volume)s (%(inst)s).") % \ + {'volumes': vv[:-2], + 'volume': volume, + 'inst': get_inst(volume)} + else: + vv = _("%(volumes)s and %(volume)s.") % \ + {'volumes': vv[:-2], + 'volume': volume} \ + + ' ' + + + elif p == BACKUP_EXISTS: + if len(details) == 1: + vv += _("Backup already exists on %(volume)s.") % {'volume': details[0]} + ' ' + else: + vv += _("Backups already exist in these locations: ") + for d in details[:-1]: + vv += _("%s, ") % d + vv = _("%(volumes)s and %(final_volume)s.") % \ + {'volumes': vv[:-2], + 'final_volume': details[-1]} \ + + ' ' + + elif p == BACKUP_EXISTS_OVERWRITTEN: + if len(details) == 1: + vv += _("Backup overwritten on %(volume)s.") % {'volume': details[0]} + ' ' + else: + vv += _("Backups overwritten on these devices: ") + for d in details[:-1]: + vv += _("%s, ") % d + vv = _("%(volumes)s and %(final_volume)s.") % \ + {'volumes': vv[:-2], + 'final_volume': details[-1]} \ + + ' ' + + elif p == BACKUP_DIRECTORY_CREATION: + if len(details) == 1: + volume = details[0] + vv += _("An error occurred when creating directories on %(volume)s: %(inst)s.") % {'volume': volume, 'inst': get_dir_creation_inst(volume)} + ' ' + else: + vv += _("Errors occurred when creating directories on the following backup devices: ") + for volume in details[:-1]: + vv += _("%(volume)s (%(inst)s), ") % {'volume': volume, 'inst': get_dir_creation_inst(volume)} + volume = details[-1] + vv = _("%(volumes)s and %(volume)s (%(inst)s).") % \ + {'volumes': vv[:-2], + 'volume': volume, + 'inst': get_dir_creation_inst(volume)} \ + + ' ' + + if v: + v = _('%(previousproblem)s Additionally, %(newproblem)s') % {'previousproblem': v, 'newproblem': vv[0].lower() + vv[1:]} + else: + v = vv + + + if v and METADATA_PROBLEM in self.categories: + vv = self._get_generation_title() + if self.categories[METADATA_PROBLEM] > 1: + v += _(' Furthermore, there were %(problems)s.') % {'problems': vv[0].lower() + vv[1:]} + else: + v += _(' Furthermore, there was a %(problem)s.') % {'problem': vv[0].lower() + vv[1:]} + + # Problems generating file / subfolder names + if METADATA_PROBLEM in self.categories: + for p in self.problems: + vv = '' + details = self.problems[p] + if p == MISSING_METADATA: + if len(details) == 1: + vv = _("The %(type)s metadata is missing.") % {'type': details[0]} + else: + vv = _("The following metadata is missing: ") + for d in details[:-1]: + vv += ("%s, ") % d + vv = _("%(missing_metadata_elements)s and %(final_missing_metadata_element)s.") % \ + {'missing_metadata_elements': vv[:-2], + 'final_missing_metadata_element': details[-1]} + + + elif p in [MISSING_IMAGE_NUMBER, ERROR_IN_GENERATION, INVALID_DATE_TIME]: + vv = details[0] + + v += ' ' + vv + + v = v.strip() + return v + + def _get_generation_title(self): + if self.components: + if len(self.components) > 1: + if self.categories[METADATA_PROBLEM] > 1: + return _('Problems in subfolder and filename generation') + else: + return _('Problem in subfolder and filename generation') + else: + if self.categories[METADATA_PROBLEM] > 1: + return _('Problems in %s generation') % self.components[0] + else: + return _('Problem in %s generation') % self.components[0] + return '' + + + def get_title(self): + v = '' + + if BACKUP_OK in self.categories: + if FILE_ALREADY_EXISTS in self.categories: + v = _('%(filetype)s already exists, but it was backed up') % {'filetype': self.extra_detail[BACKUP_OK_TYPE]} + else: + v = _('An error occurred when copying the %(filetype)s, but it was backed up') % {'filetype': self.extra_detail[BACKUP_OK_TYPE]} + + # High priority problems + elif FILE_ALREADY_DOWN_CAT in self.categories: + v = self.problems[FILE_ALREADY_DOWNLOADED][0] + elif DOWNLOAD_PROBLEM in self.categories: + v = self.problems[DOWNLOAD_COPYING_ERROR][0] + elif DOWNLOAD_PROBLEM_W_NO in self.categories: + v = self.problems[DOWNLOAD_COPYING_ERROR_W_NO][0] + elif GENERATION_PROBLEM in self.categories: + v = self.problems[ERROR_IN_NAME_GENERATION][0] + elif FILE_ALREADY_EXISTS in self.categories: + v = self.problems[FILE_ALREADY_EXISTS_NO_DOWNLOAD][0] + elif UNIQUE_IDENTIFIER_CAT in self.categories: + v = self.problems[UNIQUE_IDENTIFIER_ADDED][0] + elif FILE_PROBLEM in self.categories: + v = self.problems[CANNOT_DOWNLOAD_BAD_METADATA][0] + + # Lesser priority + elif len(self.categories) > 1: + v = _('Multiple problems were encountered') + elif DIFFERENT_EXIF in self.categories: + v = _('Photos detected with the same filenames, but taken at different times') + elif METADATA_PROBLEM in self.categories: + v = self._get_generation_title() + + if BACKUP_PROBLEM in self.categories: + if self.categories[BACKUP_PROBLEM] >1: + vp = _("there were errors backing up") + vv = _("There were errors backing up") + else: + vp = _("there was an error backing up") + vv = _("There was an error backing up") + if v: + # e.g. + v = _("%(previousproblem)s, and %(backinguperror)s") % {'previousproblem': v, 'backinguperror':vp} + else: + v = vv + + return v + + + +if __name__ == '__main__': + pass diff --git a/rapid/rapid.py b/rapid/rapid.py index ddd0b95..6f5490d 100755 --- a/rapid/rapid.py +++ b/rapid/rapid.py @@ -43,11 +43,12 @@ from thread import get_ident import gtk.gdk as gdk import pango +import gobject try: import gio + import glib using_gio = True - import gobject except ImportError: import gnomevfs using_gio = False @@ -66,11 +67,24 @@ import ValidatedEntry import idletube as tube import config +from config import MAX_THUMBNAIL_SIZE +from config import STATUS_CANNOT_DOWNLOAD, STATUS_DOWNLOADED, \ + STATUS_DOWNLOADED_WITH_WARNING, \ + STATUS_DOWNLOAD_FAILED, \ + STATUS_DOWNLOAD_PENDING, \ + STATUS_BACKUP_PROBLEM, \ + STATUS_NOT_DOWNLOADED, \ + STATUS_DOWNLOAD_AND_BACKUP_FAILED, \ + STATUS_WARNING + import common import misc import higdefaults as hd -from media import getDefaultPhotoLocation, getDefaultVideoLocation +from media import getDefaultPhotoLocation, getDefaultVideoLocation, \ + getDefaultBackupPhotoIdentifier, \ + getDefaultBackupVideoIdentifier + from media import CardMedia import media @@ -79,7 +93,8 @@ import metadata import videometadata from videometadata import DOWNLOAD_VIDEO -import renamesubfolderprefs as rn +import renamesubfolderprefs as rn +import problemnotification as pn import tableplusminus as tpm @@ -96,6 +111,12 @@ try: except: sys.exit(1) +try: + from dropshadow import image_to_pixbuf, pixbuf_to_image, DropShadow + DROP_SHADOW = True +except: + DROP_SHADOW = False + from common import Configi18n global _ _ = Configi18n._ @@ -103,7 +124,7 @@ _ = Configi18n._ #Translators: if neccessary, for guidance in how to translate this program, you may see http://damonlynch.net/translate.html PROGRAM_NAME = _('Rapid Photo Downloader') -MAX_THUMBNAIL_SIZE = 100 + def today(): return datetime.date.today().strftime('%Y-%m-%d') @@ -151,12 +172,15 @@ class Queue(tube.Tube): # this is ugly but I don't know a better way :( display_queue = Queue() -media_collection_treeview = thumbnail_hbox = log_dialog = None +media_collection_treeview = selection_hbox = log_dialog = None job_code = None -need_job_code = False +need_job_code_for_renaming = False class ThreadManager: + """ + Manages the threads that actually download photos and videos + """ _workers = [] @@ -191,9 +215,15 @@ class ThreadManager: def _isReadyToDownload(self, w): return w.scanComplete and not w.downloadStarted and not w.doNotStart and w.isAlive() and not w.manuallyDisabled + def _isScanning(self, w): + return w.isAlive() and w.hasStarted and not w.scanComplete and not w.manuallyDisabled + def _isDownloading(self, w): return w.downloadStarted and w.isAlive() and not w.downloadComplete + def _isPaused(self, w): + return w.downloadStarted and not w.running and not w.downloadComplete and not w.manuallyDisabled and w.isAlive() + def _isFinished(self, w): """ Returns True if the worker has finished running @@ -222,11 +252,7 @@ class ThreadManager: for w in self.getReadyToStartWorkers(): #for some reason, very occassionally a thread that has been started shows up in this list, so must filter them out if not w.isAlive(): - w.start() - - def startDownloadingWorkers(self): - for w in self.getReadyToDownloadWorkers(): - w.startStop() + w.start() def quitAllWorkers(self): global exiting @@ -262,6 +288,12 @@ class ThreadManager: for w in self._workers: if w.hasStarted and not w.downloadStarted: yield w + + def getNotDownloadingAndNotFinishedWorkers(self): + for w in self._workers: + if w.hasStarted and not w.downloadStarted and not self._isFinished(w): + yield w + def noReadyToStartWorkers(self): n = 0 @@ -270,6 +302,27 @@ class ThreadManager: n += 1 return n + def noScanningWorkers(self): + n = 0 + for w in self._workers: + if self._isScanning(w): + n += 1 + return n + + def getScanningWorkers(self): + for w in self._workers: + if self._isScanning(w): + yield w + + def scanComplete(self, threads): + """ + Returns True only if the list of threads have completed their scan + """ + for thread_id in threads: + if not self[thread_id].scanComplete: + return False + return True + def noReadyToDownloadWorkers(self): n = 0 for w in self._workers: @@ -286,22 +339,21 @@ class ThreadManager: for w in self._workers: if self._isDownloading(w): yield w - - - def getPausedWorkers(self): - for w in self._workers: - if w.hasStarted and not w.running: - yield w def getPausedDownloadingWorkers(self): for w in self._workers: - if w.downloadStarted and not w.running: + if self._isPaused(w): yield w def getWaitingForJobCodeWorkers(self): for w in self._workers: if w.waitingForJobCode: yield w + + def getAutoStartWorkers(self): + for w in self._workers: + if w.autoStart: + yield w def getFinishedWorkers(self): for w in self._workers: @@ -322,6 +374,13 @@ class ThreadManager: i += 1 return i + def noPausedWorkers(self): + i = 0 + for w in self._workers: + if self._isPaused(w): + i += 1 + return i + def getNextThread_id(self): return len(self._workers) @@ -354,7 +413,7 @@ class RapidPreferences(prefs.Preferences): "download_folder": prefs.Value(prefs.STRING, getDefaultPhotoLocation()), "video_download_folder": prefs.Value(prefs.STRING, - getDefaultVideoLocation()), + getDefaultVideoLocation()), "subfolder": prefs.ListValue(prefs.STRING_LIST, rn.DEFAULT_SUBFOLDER_PREFS), "video_subfolder": prefs.ListValue(prefs.STRING_LIST, rn.DEFAULT_VIDEO_SUBFOLDER_PREFS), "image_rename": prefs.ListValue(prefs.STRING_LIST, [rn.FILENAME, @@ -371,9 +430,9 @@ class RapidPreferences(prefs.Preferences): "backup_images": prefs.Value(prefs.BOOL, False), "backup_device_autodetection": prefs.Value(prefs.BOOL, True), "backup_identifier": prefs.Value(prefs.STRING, - config.DEFAULT_BACKUP_LOCATION), + getDefaultBackupPhotoIdentifier()), "video_backup_identifier": prefs.Value(prefs.STRING, - config.DEFAULT_VIDEO_BACKUP_LOCATION), + getDefaultBackupVideoIdentifier()), "backup_location": prefs.Value(prefs.STRING, os.path.expanduser('~')), "strip_characters": prefs.Value(prefs.BOOL, True), "auto_download_at_startup": prefs.Value(prefs.BOOL, False), @@ -381,15 +440,19 @@ class RapidPreferences(prefs.Preferences): "auto_unmount": prefs.Value(prefs.BOOL, False), "auto_exit": prefs.Value(prefs.BOOL, False), "auto_delete": prefs.Value(prefs.BOOL, False), - "indicate_download_error": prefs.Value(prefs.BOOL, True), "download_conflict_resolution": prefs.Value(prefs.STRING, config.SKIP_DOWNLOAD), "backup_duplicate_overwrite": prefs.Value(prefs.BOOL, False), - "backup_missing": prefs.Value(prefs.STRING, config.IGNORE), - "display_thumbnails": prefs.Value(prefs.BOOL, True), + "display_selection": prefs.Value(prefs.BOOL, True), + "display_size_column": prefs.Value(prefs.BOOL, True), + "display_filename_column": prefs.Value(prefs.BOOL, False), + "display_type_column": prefs.Value(prefs.BOOL, True), + "display_path_column": prefs.Value(prefs.BOOL, False), + "display_device_column": prefs.Value(prefs.BOOL, False), + "display_preview_folders": prefs.Value(prefs.BOOL, True), "show_log_dialog": prefs.Value(prefs.BOOL, False), "day_start": prefs.Value(prefs.STRING, "03:00"), - "downloads_today": prefs.ListValue(prefs.STRING_LIST, [today(), '0']), + "downloads_today": prefs.ListValue(prefs.STRING_LIST, [today(), '0']), "stored_sequence_no": prefs.Value(prefs.INT, 0), "job_codes": prefs.ListValue(prefs.STRING_LIST, [_('New York'), _('Manila'), _('Prague'), _('Helsinki'), _('Wellington'), @@ -397,6 +460,12 @@ class RapidPreferences(prefs.Preferences): _('Budapest'), _('Rome'), _('Moscow'), _('Delhi'), _('Warsaw'), _('Jakarta'), _('Madrid'), _('Stockholm')]), "synchronize_raw_jpg": prefs.Value(prefs.BOOL, False), + "hpaned_pos": prefs.Value(prefs.INT, 0), + "vpaned_pos": prefs.Value(prefs.INT, 0), + "main_window_size_x": prefs.Value(prefs.INT, 0), + "main_window_size_y": prefs.Value(prefs.INT, 0), + "main_window_maximized": prefs.Value(prefs.INT, 0), + "show_warning_downloading_from_camera": prefs.Value(prefs.BOOL, True), } def __init__(self): @@ -503,7 +572,7 @@ class ImageRenameTable(tpm.TablePlusMinus): self.connect("remove", self.size_adjustment) # get scrollbar thickness from parent app scrollbar - very hackish, but what to do?? - self.bump = self.parentApp.parentApp.image_scrolledwindow.get_hscrollbar().allocation.height + self.bump = 16# self.parentApp.parentApp.image_scrolledwindow.get_hscrollbar().allocation.height self.haveVerticalScrollbar = False # vbar is '1' if there is not vertical scroll bar @@ -749,21 +818,19 @@ class PreferencesDialog(gnomeglade.Component): # get example photo and video data try: w = workers.firstWorkerReadyToDownload() - root, self.sampleImageName = w.firstImage() - image = os.path.join(root, self.sampleImageName) - - self.sampleImage = metadata.MetaData(image) - self.sampleImage.read() + mediaFile = w.firstImage() + self.sampleImageName = mediaFile.name + # assume the metadata is already read + self.sampleImage = mediaFile.metadata except: self.sampleImage = metadata.DummyMetaData() self.sampleImageName = 'IMG_0524.CR2' - try: - root, self.sampleVideoName, modificationTime = w.firstVideo() - video = os.path.join(root, self.sampleVideoName) - self.sampleVideo = videometadata.VideoMetaData(video) - self.videoFallBackDate = modificationTime + mediaFile = w.firstVideo() + self.sampleVideoName = mediaFile.name + self.sampleVideo = mediaFile.metadata + self.videoFallBackDate = mediaFile.modificationTime except: self.sampleVideo = videometadata.DummyMetaData() self.sampleVideoName = 'MVI_1379.MOV' @@ -861,7 +928,6 @@ class PreferencesDialog(gnomeglade.Component): self.compatibility_table.set_row_spacing(0, hd.VERTICAL_CONTROL_LABEL_SPACE) self._setupTableSpacing(self.error_table) - self.error_table.set_row_spacing(5, hd.VERTICAL_CONTROL_SPACE / 2) def _setupTableSpacing(self, table): @@ -1016,11 +1082,7 @@ class PreferencesDialog(gnomeglade.Component): self.video_backup_identifier_entry.set_text(self.prefs.video_backup_identifier) #setup controls for manipulating sensitivity - self._backupControls0 = [self.auto_detect_backup_checkbutton, - self.missing_backup_label, - self.backup_error_radiobutton, - self.backup_warning_radiobutton, - self.backup_ignore_radiobutton] + self._backupControls0 = [self.auto_detect_backup_checkbutton] self._backupControls1 = [self.backup_identifier_explanation_label, self.backup_identifier_label, self.backup_identifier_entry, @@ -1059,21 +1121,11 @@ class PreferencesDialog(gnomeglade.Component): def _setupErrorTab(self): - self.indicate_download_error_checkbutton.set_active( - self.prefs.indicate_download_error) - if self.prefs.download_conflict_resolution == config.SKIP_DOWNLOAD: self.skip_download_radiobutton.set_active(True) else: self.add_identifier_radiobutton.set_active(True) - if self.prefs.backup_missing == config.REPORT_ERROR: - self.backup_error_radiobutton.set_active(True) - elif self.prefs.backup_missing == config.REPORT_WARNING: - self.backup_warning_radiobutton.set_active(True) - else: - self.backup_ignore_radiobutton.set_active(True) - if self.prefs.backup_duplicate_overwrite: self.backup_duplicate_overwrite_radiobutton.set_active(True) else: @@ -1081,18 +1133,20 @@ class PreferencesDialog(gnomeglade.Component): def updateExampleFileName(self, display_table, rename_table, sample, sampleName, example_label, fallback_date = None): + problem = pn.Problem() if hasattr(self, display_table): rename_table.updateExampleJobCode() - name, problem = rename_table.prefsFactory.generateNameUsingPreferences( + rename_table.prefsFactory.initializeProblem(problem) + name = rename_table.prefsFactory.generateNameUsingPreferences( sample, sampleName, self.prefs.strip_characters, sequencesPreliminary=False, fallback_date=fallback_date) else: - name = problem = '' + name = '' # since this is markup, escape it text = "%s" % common.escape(name) - if problem: + if problem.has_problem(): text += "\n" # Translators: please do not modify or leave out html formatting tags like and . These are used to format the text the users sees text += _("Warning: There is insufficient metadata to fully generate the name. Please use other renaming options.") @@ -1117,18 +1171,20 @@ class PreferencesDialog(gnomeglade.Component): Displays example subfolder name(s) to the user """ + problem = pn.Problem() if hasattr(self, display_table): subfolder_table.updateExampleJobCode() - path, problem = subfolder_table.prefsFactory.generateNameUsingPreferences( + subfolder_table.prefsFactory.initializeProblem(problem) + path = subfolder_table.prefsFactory.generateNameUsingPreferences( sample, sampleName, self.prefs.strip_characters, fallback_date = fallback_date) else: - path = problem = '' + path = '' text = os.path.join(download_folder, path) # since this is markup, escape it path = common.escape(text) - if problem: + if problem.has_problem(): warning = _("Warning: There is insufficient metadata to fully generate subfolders. Please use other subfolder naming options." ) else: warning = "" @@ -1235,10 +1291,10 @@ class PreferencesDialog(gnomeglade.Component): def on_add_job_code_button_clicked(self, button): - j = JobCodeDialog(self.widget, self.prefs.job_codes, None, self.add_job_code, False, True) + j = JobCodeDialog(self.widget, self.prefs.job_codes, None, self.add_job_code, False, True, True) - def add_job_code(self, dialog, userChoseCode, job_code, autoStart): + def add_job_code(self, dialog, userChoseCode, job_code, autoStart, downloadSelected): dialog.destroy() if userChoseCode: if job_code and job_code not in self.prefs.job_codes: @@ -1342,15 +1398,6 @@ class PreferencesDialog(gnomeglade.Component): def on_backup_duplicate_skip_radiobutton_toggled(self, widget): self.prefs.backup_duplicate_overwrite = not widget.get_active() - - def on_backup_error_radiobutton_toggled(self, widget): - self.prefs.backup_missing = config.REPORT_ERROR - - def on_backup_warning_radiobutton_toggled(self, widget): - self.prefs.backup_missing = config.REPORT_WARNING - - def on_backup_ignore_radiobutton_toggled(self, widget): - self.prefs.backup_missing = config.IGNORE def on_treeview_cursor_changed(self, tree): path, column = tree.get_cursor() @@ -1365,9 +1412,6 @@ class PreferencesDialog(gnomeglade.Component): self.updatePhotoDownloadFolderExample() self.updateVideoDownloadFolderExample() - def on_indicate_download_error_checkbutton_toggled(self, check_button): - self.prefs.indicate_download_error = check_button.get_active() - def on_add_identifier_radiobutton_toggled(self, widget): if widget.get_active(): self.prefs.download_conflict_resolution = config.ADD_UNIQUE_IDENTIFIER @@ -1512,12 +1556,88 @@ def file_types_by_number(noImages, noVideos): else: v = _('photo') return v + +def date_time_human_readable(date, with_line_break=True): + if with_line_break: + return _("%(date)s\n%(time)s") % {'date':date.strftime("%x"), 'time':date.strftime("%X")} + else: + return _("%(date)s %(time)s") % {'date':date.strftime("%x"), 'time':date.strftime("%X")} + +def time_subseconds_human_readable(date, subseconds): + return _("%(hour)s:%(minute)s:%(second)s:%(subsecond)s") % \ + {'hour':date.strftime("%H"), + 'minute':date.strftime("%M"), + 'second':date.strftime("%S"), + 'subsecond': subseconds} + +def date_time_subseconds_human_readable(date, subseconds): + return _("%(date)s %(hour)s:%(minute)s:%(second)s:%(subsecond)s") % \ + {'date':date.strftime("%x"), + 'hour':date.strftime("%H"), + 'minute':date.strftime("%M"), + 'second':date.strftime("%S"), + 'subsecond': subseconds} + +def generateSubfolderAndName(mediaFile, problem, subfolderPrefsFactory, + renamePrefsFactory, + nameUsesJobCode, subfolderUsesJobCode, + strip_characters, fallback_date): + + subfolderPrefsFactory.initializeProblem(problem) + mediaFile.sampleSubfolder = subfolderPrefsFactory.generateNameUsingPreferences( + mediaFile.metadata, mediaFile.name, + strip_characters, + fallback_date = fallback_date) + + mediaFile.samplePath = os.path.join(mediaFile.downloadFolder, mediaFile.sampleSubfolder) + + renamePrefsFactory.initializeProblem(problem) + mediaFile.sampleName = renamePrefsFactory.generateNameUsingPreferences( + mediaFile.metadata, mediaFile.name, strip_characters, + sequencesPreliminary=False, + fallback_date = fallback_date) + + if not (mediaFile.sampleName or nameUsesJobCode) or not (mediaFile.sampleSubfolder or subfolderUsesJobCode): + if not (mediaFile.sampleName or nameUsesJobCode) and not (mediaFile.sampleSubfolder or subfolderUsesJobCode): + area = _("subfolder and filename") + elif not (mediaFile.sampleName or nameUsesJobCode): + area = _("filename") + else: + area = _("subfolder") + problem.add_problem(None, pn.ERROR_IN_NAME_GENERATION, {'filetype': mediaFile.displayNameCap, 'area': area}) + problem.add_extra_detail(pn.NO_DATA_TO_NAME, {'filetype': area}) + mediaFile.problem = problem + mediaFile.status = STATUS_CANNOT_DOWNLOAD + elif problem.has_problem(): + mediaFile.problem = problem + mediaFile.status = STATUS_WARNING + else: + mediaFile.status = STATUS_NOT_DOWNLOADED + + +class NeedAJobCode(): + """ + Convenience class to check whether a job code is missing for a given + file type (photo or video) + """ + def __init__(self, prefs): + self.imageRenameUsesJobCode = rn.usesJobCode(prefs.image_rename) + self.imageSubfolderUsesJobCode = rn.usesJobCode(prefs.subfolder) + self.videoRenameUsesJobCode = rn.usesJobCode(prefs.video_rename) + self.videoSubfolderUsesJobCode = rn.usesJobCode(prefs.video_subfolder) + + def needAJobCode(self, job_code, is_image): + if is_image: + return not job_code and (self.imageRenameUsesJobCode or self.imageSubfolderUsesJobCode) + else: + return not job_code and (self.videoRenameUsesJobCode or self.videoSubfolderUsesJobCode) + class CopyPhotos(Thread): """Copies photos from source to destination, backing up if needed""" def __init__(self, thread_id, parentApp, fileRenameLock, fileSequenceLock, statsLock, downloadedFilesLock, - downloadStats, autoStart = False, cardMedia = None): + downloadStats, autoStart = False, cardMedia = None): self.parentApp = parentApp self.thread_id = thread_id self.ctrl = True @@ -1545,10 +1665,19 @@ class CopyPhotos(Thread): self.cardMedia = cardMedia self.initializeDisplay(thread_id, self.cardMedia) + + self.scanComplete = self.downloadStarted = self.downloadComplete = False - self.noErrors = self.noWarnings = 0 + # Need to account for situations where the user adjusts their preferences when the program is scanning + # Here the sample filenames and paths will be out of date, and they will need to be updated + # This flag indicates whether that is the case or not + self.scanResultsStale = False # name and subfolder + self.scanResultsStaleDownloadFolder = False #download folder only - self.scanComplete = self.downloadStarted = self.downloadComplete = False + if DOWNLOAD_VIDEO: + self.types_searched_for = _('photos or videos') + else: + self.types_searched_for = _('photos') Thread.__init__(self) @@ -1557,39 +1686,34 @@ class CopyPhotos(Thread): if self.cardMedia: media_collection_treeview.addCard(thread_id, self.cardMedia.prettyName(), - '', 0, progress=0.0, + '', progress=0.0, # This refers to when a device like a hard drive is having its contents scanned, # looking for photos or videos. It is visible initially in the progress bar for each device - # (which normally holds "x of y photos"). + # (which normally holds "x photos and videos"). # It maybe displayed only briefly if the contents of the device being scanned is small. progressBarText=_('scanning...')) - def firstImage(self): """ - returns name, path and size of the first image + returns class mediaFile of the first photo """ - - name, root, size, modificationTime = self.cardMedia.firstImage() + mediaFile = self.cardMedia.firstImage() + return mediaFile - return root, name - def firstVideo(self): """ - returns name, path and size of the first image + returns class mediaFile of the first video """ - - name, root, size, modificationTime = self.cardMedia.firstVideo() - - return root, name, modificationTime - + mediaFile = self.cardMedia.firstVideo() + return mediaFile + def handlePreferencesError(self, e, prefsFactory): sys.stderr.write(_("Sorry,these preferences contain an error:\n")) sys.stderr.write(prefsFactory.formatPreferencesForPrettyPrint() + "\n") msg = str(e) sys.stderr.write(msg + "\n") - def initializeFromPrefs(self, notifyOnError): + def initializeFromPrefs(self, notifyOnError): """ Setup thread so that user preferences are handled """ @@ -1605,7 +1729,6 @@ class CopyPhotos(Thread): self.prefs = self.parentApp.prefs - #Image and Video filename preferences self.imageRenamePrefsFactory = rn.ImageRenamePreferences(self.prefs.image_rename, self, @@ -1627,8 +1750,7 @@ class CopyPhotos(Thread): # copy this variable, as it is used heavily in the loop # and it is perhaps relatively expensive to read self.stripCharacters = self.prefs.strip_characters - - + def run(self): """ Copy photos from device to local drive, and if requested, backup @@ -1705,14 +1827,92 @@ class CopyPhotos(Thread): display_queue.close("rw") return False + + def scanMedia(): + """ + Scans media for photos and videos + """ + + # load images to display for when a thumbnail cannot be extracted or created + + if DROP_SHADOW: + self.photoThumbnail = gtk.gdk.pixbuf_new_from_file(paths.share_dir('glade3/photo_shadow.png')) + self.videoThumbnail = gtk.gdk.pixbuf_new_from_file(paths.share_dir('glade3/video_shadow.png')) + else: + self.photoThumbnail = gtk.gdk.pixbuf_new_from_file(paths.share_dir('glade3/photo.png')) + self.videoThumbnail = gtk.gdk.pixbuf_new_from_file(paths.share_dir('glade3/video.png')) + + imageRenameUsesJobCode = rn.usesJobCode(self.prefs.image_rename) + imageSubfolderUsesJobCode = rn.usesJobCode(self.prefs.subfolder) + videoRenameUsesJobCode = rn.usesJobCode(self.prefs.video_rename) + videoSubfolderUsesJobCode = rn.usesJobCode(self.prefs.video_subfolder) + + def loadFileMetadata(mediaFile): + """ + loads the metadate for the file, and additional information if required + """ + + problem = pn.Problem() + try: + mediaFile.loadMetadata() + except: + mediaFile.status = STATUS_CANNOT_DOWNLOAD + mediaFile.metadata = None + problem.add_problem(None, pn.CANNOT_DOWNLOAD_BAD_METADATA, {'filetype': mediaFile.displayNameCap}) + mediaFile.problem = problem + else: + # generate sample filename and subfolder + if mediaFile.isImage: + fallback_date = None + subfolderPrefsFactory = self.subfolderPrefsFactory + renamePrefsFactory = self.imageRenamePrefsFactory + nameUsesJobCode = imageRenameUsesJobCode + subfolderUsesJobCode = imageSubfolderUsesJobCode + else: + fallback_date = mediaFile.modificationTime + subfolderPrefsFactory = self.videoSubfolderPrefsFactory + renamePrefsFactory = self.videoRenamePrefsFactory + nameUsesJobCode = videoRenameUsesJobCode + subfolderUsesJobCode = videoSubfolderUsesJobCode + + generateSubfolderAndName(mediaFile, problem, subfolderPrefsFactory, renamePrefsFactory, + nameUsesJobCode, subfolderUsesJobCode, + self.prefs.strip_characters, fallback_date) + # generate thumbnail + mediaFile.generateThumbnail(self.videoTempWorkingDir) + + if mediaFile.thumbnail is None: + mediaFile.genericThumbnail = True + if mediaFile.isImage: + mediaFile.thumbnail = self.photoThumbnail + else: + mediaFile.thumbnail = self.videoThumbnail - def downloadFile(name): + def downloadable(name): isImage = media.isImage(name) isVideo = media.isVideo(name) download = (DOWNLOAD_VIDEO and (isImage or isVideo) or ((not DOWNLOAD_VIDEO) and isImage)) return (download, isImage, isVideo) + + def addFile(name, path, size, modificationTime, device, volume, isImage): + if isImage: + downloadFolder = self.prefs.download_folder + else: + downloadFolder = self.prefs.video_download_folder + + mediaFile = media.MediaFile(self.thread_id, name, path, size, modificationTime, device, downloadFolder, volume, isImage) + loadFileMetadata(mediaFile) + # modificationTime is very useful for quick sorting + imagesAndVideos.append((mediaFile, modificationTime)) + display_queue.put((self.parentApp.addFile, (mediaFile,))) + + if isImage: + self.noImages += 1 + else: + self.noVideos += 1 + def gio_scan(path, fileSizeSum): """recursive function to scan a directory and its subdirectories @@ -1726,9 +1926,6 @@ class CopyPhotos(Thread): self.running = True if not self.ctrl: - self.running = False - display_queue.put((media_collection_treeview.removeCard, (self.thread_id, ))) - display_queue.close("rw") return None if child.get_file_type() == gio.FILE_TYPE_DIRECTORY: @@ -1738,15 +1935,13 @@ class CopyPhotos(Thread): return None elif child.get_file_type() == gio.FILE_TYPE_REGULAR: name = child.get_name() - download, isImage, isVideo = downloadFile(name) + download, isImage, isVideo = downloadable(name) if download: size = child.get_size() - imagesAndVideos.append((name, path.get_path(), size, child.get_modification_time()),) + modificationTime = child.get_modification_time() + addFile(name, path.get_path(), size, modificationTime, self.cardMedia.prettyName(limit=0), self.cardMedia.volume, isImage) fileSizeSum += size - if isVideo: - self.noVideos += 1 - else: - self.noImages += 1 + return fileSizeSum @@ -1754,7 +1949,7 @@ class CopyPhotos(Thread): fileSizeSum = 0 self.noVideos = 0 self.noImages = 0 - + if not using_gio or not self.cardMedia.volume: for root, dirs, files in os.walk(self.cardMedia.getPath()): for name in files: @@ -1763,23 +1958,17 @@ class CopyPhotos(Thread): self.running = True if not self.ctrl: - self.running = False - display_queue.put((media_collection_treeview.removeCard, (self.thread_id, ))) - display_queue.close("rw") - return + return None - download, isImage, isVideo = downloadFile(name) + download, isImage, isVideo = downloadable(name) if download: - image = os.path.join(root, name) - size = os.path.getsize(image) - modificationTime = os.path.getmtime(image) - imagesAndVideos.append((name, root, size, modificationTime),) + fullFileName = os.path.join(root, name) + size = os.path.getsize(fullFileName) + modificationTime = os.path.getmtime(fullFileName) + addFile(name, root, size, modificationTime, self.cardMedia.prettyName(limit=0), self.cardMedia.volume, isImage) fileSizeSum += size - if isVideo: - self.noVideos += 1 - else: - self.noImages += 1 + else: # using gio and have a volume @@ -1787,19 +1976,15 @@ class CopyPhotos(Thread): fileSizeSum = gio_scan(self.cardMedia.volume.volume.get_root(), fileSizeSum) if fileSizeSum == None: # thread exiting - return + return None - imagesAndVideos.sort(key=operator.itemgetter(3)) + # sort in place based on modification time + imagesAndVideos.sort(key=operator.itemgetter(1)) noFiles = len(imagesAndVideos) self.scanComplete = True self.display_file_types = file_types_by_number(self.noImages, self.noVideos) - - if DOWNLOAD_VIDEO: - self.types_searched_for = _('photos or videos') - else: - self.types_searched_for = _('photos') if noFiles: @@ -1808,10 +1993,9 @@ class CopyPhotos(Thread): # It refers to the actual number of photos that can be copied. For example, the user might see the following: # '0 of 512 photos' or '0 of 10 videos' or '0 of 202 photos and videos'. # This particular text is displayed to the user before the download has started. - display = _("0 of %(number)s %(filetypes)s") % {'number':noFiles, 'filetypes':self.display_file_types} - display_queue.put((media_collection_treeview.updateCard, (self.thread_id, self.cardMedia.sizeOfImagesAndVideos(), noFiles))) + display = _("%(number)s %(filetypes)s") % {'number':noFiles, 'filetypes':self.display_file_types} + display_queue.put((media_collection_treeview.updateCard, (self.thread_id, self.cardMedia.sizeOfImagesAndVideos()))) display_queue.put((media_collection_treeview.updateProgress, (self.thread_id, 0.0, display, 0))) - display_queue.put((self.parentApp.timeRemaining.add, (self.thread_id, fileSizeSum))) display_queue.put((self.parentApp.setDownloadButtonSensitivity, ())) # Translators: as you have already seen, the text can contain values that should not be modified or left out by you, for example %s. @@ -1829,23 +2013,6 @@ class CopyPhotos(Thread): display_queue.put((media_collection_treeview.removeCard, (self.thread_id, ))) cmd_line(_("Device scan complete: no %(filetypes)s found on %(device)s") % {'device':self.cardMedia.prettyName(limit=0), 'filetypes':self.types_searched_for}) return False - - def cleanUp(): - """ - Cleanup functions that must be performed whether the thread exits - early or when it has completed its run. - """ - - - for tempWorkingDir in (videoTempWorkingDir, photoTempWorkingDir): - if tempWorkingDir: - # possibly delete any lingering files - tf = os.listdir(tempWorkingDir) - if tf: - for f in tf: - os.remove(os.path.join(tempWorkingDir, f)) - - os.rmdir(tempWorkingDir) def logError(severity, problem, details, resolution=None): @@ -1856,228 +2023,334 @@ class CopyPhotos(Thread): else: self.noErrors += 1 + def notifyAndUnmount(umountAttemptOK): + if not self.cardMedia.volume: + unmountMessage = "" + notificationName = PROGRAM_NAME + else: + notificationName = self.cardMedia.volume.get_name() + if self.prefs.auto_unmount and umountAttemptOK: + self.cardMedia.volume.unmount(self.on_volume_unmount) + # This message informs the user that the device (e.g. camera, hard drive or memory card) was automatically unmounted and they can now remove it + unmountMessage = _("The device can now be safely removed") + else: + unmountMessage = "" + + file_types = file_types_by_number(noImagesDownloaded, noVideosDownloaded) + file_types_skipped = file_types_by_number(noImagesSkipped, noVideosSkipped) + message = _("%(noFiles)s %(filetypes)s downloaded") % {'noFiles':noFilesDownloaded, 'filetypes': file_types} + noFilesSkipped = noImagesSkipped + noVideosSkipped + if noFilesSkipped: + message += "\n" + _("%(noFiles)s %(filetypes)s failed to download") % {'noFiles':noFilesSkipped, 'filetypes':file_types_skipped} + + if self.noWarnings: + message = "%s\n%s " % (message, self.noWarnings) + _("warnings") + if self.noErrors: + message = "%s\n%s " % (message, self.noErrors) + _("errors") + + if unmountMessage: + message = "%s\n%s" % (message, unmountMessage) + + n = pynotify.Notification(notificationName, message) + + if self.cardMedia.volume: + icon = self.cardMedia.volume.get_icon_pixbuf(self.parentApp.notification_icon_size) + else: + icon = self.parentApp.application_icon + + n.set_icon_from_pixbuf(icon) + n.show() + + def createTempDir(baseDir): + """ + Create a temporary directory in which to download the photos to. + + Returns the directory if it was created, else returns None. + + Don't want to put it in system temp folder, as that is likely + to be on another partition and hence copying files from it + to the actual download folder will be slow!""" + try: + t = tempfile.mkdtemp(prefix='rapid-tmp-', + dir=baseDir) + return t + except OSError, (errno, strerror): + if not self.cardMedia.volume: + image_device = _("Source: %s\n") % self.cardMedia.getPath() + else: + _("Device: %s\n") % self.cardMedia.volume.get_name() + destination = _("Destination: %s") % baseDir + logError(config.CRITICAL_ERROR, _('Could not create temporary download directory'), + image_device + destination, + _("Download cannot proceed")) + cmd_line(_("Error:") + " " + _('Could not create temporary download directory')) + cmd_line(image_device + destination) + cmd_line(_("Download cannot proceed")) + display_queue.put((media_collection_treeview.removeCard, (self.thread_id, ))) + display_queue.put((self.parentApp.downloadFailed, (self.thread_id, ))) + display_queue.close("rw") + self.running = False + self.lock.release() + return None + + def setupBackup(): + """ + Check for presence of backup path or volumes, and return the number of devices being used (1 in case of a path) + """ + no_devices = 0 + if self.prefs.backup_images: + no_devices = len(self.parentApp.backupVolumes) + if not self.prefs.backup_device_autodetection: + if not os.path.isdir(self.prefs.backup_location): + # the user has manually specified a path, but it + # does not exist. This is a problem. + try: + os.makedirs(self.prefs.backup_location) + except: + logError(config.SERIOUS_ERROR, _("Backup path does not exist"), + _("The path %s could not be created") % path, + _("No backups can occur") + ) + no_devices = 0 + return no_devices + + def checkIfNeedAJobCode(): + needAJobCode = NeedAJobCode(self.prefs) + + for f in self.cardMedia.imagesAndVideos: + mediaFile = f[0] + if mediaFile.status in [STATUS_WARNING, STATUS_NOT_DOWNLOADED]: + if needAJobCode.needAJobCode(mediaFile.jobcode, mediaFile.isImage): + return True + return False + + def createBothTempDirs(): + self.photoTempWorkingDir = createTempDir(photoBaseDownloadDir) + created = self.photoTempWorkingDir is not None + if created and DOWNLOAD_VIDEO: + self.videoTempWorkingDir = createTempDir(videoBaseDownloadDir) + created = self.videoTempWorkingDir is not None + + return created + - def checkProblemWithNameGeneration(newName, destination, source, problem, filetype): - if not newName: - # a serious problem - a filename should never be blank! - logError(config.SERIOUS_ERROR, - _("%(filetype)s filename could not be generated") % {'filetype': filetype}, - # '%(source)s' and '%(problem)s' are two more examples of text that should not be modified or left out - _("Source: %(source)s\nProblem: %(problem)s") % {'source': source, 'problem': problem}, - fileSkippedDisplay) - elif problem: + def checkProblemWithNameGeneration(mediaFile): + if mediaFile.problem.has_problem(): logError(config.WARNING, - _("%(filetype)s filename could not be properly generated. Check to ensure there is sufficient metadata.") % {'filetype': filetype}, - _("Source: %(source)s\nPartially generated filename: %(newname)s\nDestination: %(destination)s\nProblem: %(problem)s") % - {'source': source, 'destination': destination, 'newname': newName, 'problem': problem}) + mediaFile.problem.get_title(), + _("Source: %(source)s\nDestination: %(destination)s\n%(problem)s") % + {'source': mediaFile.fullFileName, 'destination': mediaFile.downloadFullFileName, 'problem': mediaFile.problem.get_problems()}) + mediaFile.status = STATUS_DOWNLOADED_WITH_WARNING - def fileAlreadyExists(source, fileSkippedDisplay, fileAlreadyExistsDisplay, destination=None, identifier=None): + def fileAlreadyExists(mediaFile, identifier=None): """ Notify the user that the photo or video could not be downloaded because it already exists""" - if self.prefs.indicate_download_error: - if source and destination and identifier: - logError(config.SERIOUS_ERROR, fileAlreadyExistsDisplay, - _("Source: %(source)s\nDestination: %(destination)s") - % {'source': source, 'destination': newFile}, - _("Unique identifier '%s' added") % identifier) - elif source and destination: - logError(config.SERIOUS_ERROR, fileAlreadyExistsDisplay, - _("Source: %(source)s\nDestination: %(destination)s") - % {'source': source, 'destination': destination}, - fileSkippedDisplay) - else: - logError(config.SERIOUS_ERROR, fileAlreadyExistsDisplay, - _("Source: %(source)s") - % {'source': source}, - fileSkippedDisplay) - - - def downloadCopyingError(source, destination, filetype, errno=None, strerror=None): - """Notify the user that an error occurred when coyping an photo or video""" - if errno != None and strerror != None: - logError(config.SERIOUS_ERROR, _('Download copying error'), - _("Source: %(source)s\nDestination: %(destination)s\nError: %(errorno)s %(strerror)s") - % {'source': source, 'destination': destination, 'errorno': errno, 'strerror': strerror}, - _('The %(filetype)s was not copied.') % {'filetype': filetype}) + + # get information on when the existing file was last modified + try: + modificationTime = os.path.getmtime(mediaFile.downloadFullFileName) + dt = datetime.datetime.fromtimestamp(modificationTime) + date = dt.strftime("%x") + time = dt.strftime("%X") + except: + sys.stderr.write("WARNING: could not determine the file modification time of an existing file\n") + date = time = '' + + if not identifier: + mediaFile.problem.add_problem(None, pn.FILE_ALREADY_EXISTS_NO_DOWNLOAD, {'filetype':mediaFile.displayNameCap}) + mediaFile.problem.add_extra_detail(pn.EXISTING_FILE, {'filetype': mediaFile.displayName, 'date': date, 'time': time}) + mediaFile.status = STATUS_DOWNLOAD_FAILED + log_status = config.SERIOUS_ERROR + problem_text = pn.extra_detail_definitions[pn.EXISTING_FILE] % {'date':date, 'time':time, 'filetype': mediaFile.displayName} else: - logError(config.SERIOUS_ERROR, _('Download copying error'), - _("Source: %(source)s\nDestination: %(destination)s") - % {'source': source, 'destination': destination}, - _('The %(filetype)s was not copied.') % {'filetype': filetype}) + mediaFile.problem.add_problem(None, pn.UNIQUE_IDENTIFIER_ADDED, {'filetype':mediaFile.displayNameCap}) + mediaFile.problem.add_extra_detail(pn.UNIQUE_IDENTIFIER, {'identifier': identifier, 'filetype': mediaFile.displayName, 'date': date, 'time': time}) + mediaFile.status = STATUS_DOWNLOADED_WITH_WARNING + log_status = config.WARNING + problem_text = pn.extra_detail_definitions[pn.UNIQUE_IDENTIFIER] % {'identifier': identifier, 'filetype': mediaFile.displayName, 'date': date, 'time': time} - - def sameFileNameDifferentExif(image1, image1_date_time, image1_subseconds, image2, image2_date_time, image2_subseconds): - logError(config.WARNING, _('Photos detected with the same filenames, but taken at different times:'), - _("First photo: %(image1)s %(image1_date_time)s:%(image1_subseconds)s\nSecond photo: %(image2)s %(image2_date_time)s:%(image2_subseconds)s") % - {'image1': image1, 'image1_date_time': image1_date_time, 'image1_subseconds': image1_subseconds, - 'image2': image2, 'image2_date_time': image2_date_time, 'image2_subseconds': image2_subseconds}) - + logError(log_status, mediaFile.problem.get_title(), + _("Source: %(source)s\nDestination: %(destination)s") + % {'source': mediaFile.fullFileName, 'destination': mediaFile.downloadFullFileName}, + problem_text) + def downloadCopyingError(mediaFile, inst=None, errno=None, strerror=None): + """Notify the user that an error occurred (most likely at the OS / filesystem level) when coyping a photo or video""" + + if errno != None and strerror != None: + mediaFile.problem.add_problem(None, pn.DOWNLOAD_COPYING_ERROR_W_NO, {'filetype': mediaFile.displayName}) + mediaFile.problem.add_extra_detail(pn.DOWNLOAD_COPYING_ERROR_W_NO_DETAIL, {'errorno': errno, 'strerror': strerror}) - def generateSubfolderAndFileName(fullFileName, name, needMetaDataToCreateUniqueImageName, - needMetaDataToCreateUniqueSubfolderName, fallback_date): + else: + mediaFile.problem.add_problem(None, pn.DOWNLOAD_COPYING_ERROR, {'filetype': mediaFile.displayName}) + if not inst: + # hopefully inst will never be None, but just to be safe... + inst = _("Please check your system and try again.") + mediaFile.problem.add_extra_detail(pn.DOWNLOAD_COPYING_ERROR_DETAIL, inst) + + logError(config.SERIOUS_ERROR, mediaFile.problem.get_title(), mediaFile.problem.get_problems()) + mediaFile.status = STATUS_DOWNLOAD_FAILED + + def sameNameDifferentExif(image_name, mediaFile): + """Notify the user that a file was already downloaded with the same name, but the exif information was different""" + i1_ext, i1_date_time, i1_subseconds = downloaded_files.extExifDateTime(image_name) + detail = {'image1': "%s%s" % (image_name, i1_ext), + 'image1_date': i1_date_time.strftime("%x"), + 'image1_time': time_subseconds_human_readable(i1_date_time, i1_subseconds), + 'image2': mediaFile.name, + 'image2_date': mediaFile.metadata.dateTime().strftime("%x"), + 'image2_time': time_subseconds_human_readable( + mediaFile.metadata.dateTime(), + mediaFile.metadata.subSeconds())} + mediaFile.problem.add_problem(None, pn.SAME_FILE_DIFFERENT_EXIF, detail) + + msg = pn.problem_definitions[pn.SAME_FILE_DIFFERENT_EXIF][1] % detail + logError(config.WARNING,_('Photos detected with the same filenames, but taken at different times'), msg) + mediaFile.status = STATUS_DOWNLOADED_WITH_WARNING + + def generateSubfolderAndFileName(mediaFile): """ Generates subfolder and file names for photos and videos """ skipFile = alreadyDownloaded = False sequence_to_use = None - - if not self.isImage: - # file is a video file + + if mediaFile.isVideo: fileRenameFactory = self.videoRenamePrefsFactory subfolderFactory = self.videoSubfolderPrefsFactory - try: - # this step immedidately reads the metadata from the video file - # (which is different than pyexiv2) - fileMetadata = videometadata.VideoMetaData(fullFileName) - except: - logError(config.CRITICAL_ERROR, _("Could not open %(filetype)s") % {'filetype': fileBeingDownloadedDisplay}, - _("Source: %s") % fullFileName, - fileSkippedDisplay) - skipFile = True - fileMetadata = newName = newFile = path = subfolder = sequence_to_use = None - return (skipFile, fileMetadata, newName, newFile, path, subfolder, sequence_to_use) else: # file is an photo fileRenameFactory = self.imageRenamePrefsFactory subfolderFactory = self.subfolderPrefsFactory - try: - fileMetadata = metadata.MetaData(fullFileName) - except IOError: - logError(config.CRITICAL_ERROR, _("Could not open %(filetype)s") % {'filetype': fileBeingDownloadedDisplay}, - _("Source: %s") % fullFileName, - fileSkippedDisplay) - skipFile = True - fileMetadata = newName = newFile = path = subfolder = sequence_to_use = None - return (skipFile, fileMetadata, newName, newFile, path, subfolder, sequence_to_use) - else: - try: - # this step can fail if the source photo is corrupt - fileMetadata.read() - except: - skipFile = True + + fileRenameFactory.setJobCode(mediaFile.jobcode) + subfolderFactory.setJobCode(mediaFile.jobcode) - + mediaFile.problem = pn.Problem() + subfolderFactory.initializeProblem(mediaFile.problem) + fileRenameFactory.initializeProblem(mediaFile.problem) + + # Here we cannot assume that the subfolder value will contain something -- the user may have changed the preferences after the scan + mediaFile.downloadSubfolder = subfolderFactory.generateNameUsingPreferences( + mediaFile.metadata, mediaFile.name, + self.stripCharacters, fallback_date = mediaFile.modificationTime) + + + if self.prefs.synchronize_raw_jpg and usesImageSequenceElements and mediaFile.isImage: + #synchronizing RAW and JPEG only applies to photos, not videos + image_name, image_ext = os.path.splitext(mediaFile.name) + with self.downloadedFilesLock: + i, sequence_to_use = downloaded_files.matching_pair(image_name, image_ext, mediaFile.metadata.dateTime(), mediaFile.metadata.subSeconds()) + if i == -1: + # this exact file has already been downloaded (same extension, same filename, and same exif date time subsecond info) + if not addUniqueIdentifier: + logError(config.SERIOUS_ERROR,_('Photo has already been downloaded'), + _("Source: %(source)s") % {'source': mediaFile.fullFileName}) + mediaFile.problem.add_problem(None, pn.FILE_ALREADY_DOWNLOADED, {'filetype': mediaFile.displayNameCap}) + skipFile = True + + + # pass the subfolder the image will go into, as this is needed to determine subfolder sequence numbers + # indicate that sequences chosen should be queued + if not skipFile: - if self.isImage and not fileMetadata.rpd_keys() and (needMetaDataToCreateUniqueSubfolderName or - (needMetaDataToCreateUniqueImageName and - not addUniqueIdentifier)): + mediaFile.downloadName = fileRenameFactory.generateNameUsingPreferences( + mediaFile.metadata, mediaFile.name, self.stripCharacters, mediaFile.downloadSubfolder, + sequencesPreliminary = True, + sequence_to_use = sequence_to_use, + fallback_date = mediaFile.modificationTime) + + mediaFile.downloadPath = os.path.join(mediaFile.downloadFolder, mediaFile.downloadSubfolder) + mediaFile.downloadFullFileName = os.path.join(mediaFile.downloadPath, mediaFile.downloadName) + + if not mediaFile.downloadName or not mediaFile.downloadSubfolder: + if not mediaFile.downloadName and not mediaFile.downloadSubfolder: + area = _("subfolder and filename") + elif not mediaFile.downloadName: + area = _("filename") + else: + area = _("subfolder") + problem.add_problem(None, pn.ERROR_IN_NAME_GENERATION, {'filetype': mediaFile.displayNameCap, 'area': area}) + problem.add_extra_detail(pn.NO_DATA_TO_NAME, {'filetype': area}) skipFile = True - - #TODO similar checking for video - - if skipFile: - logError(config.SERIOUS_ERROR, _("%(filetype)s has no metadata") % {'filetype': fileBeingDownloadedDisplayCap}, - _("Metadata is essential for generating subfolder and/or file names.\nSource: %s") % fullFileName, - fileSkippedDisplay) - newName = newFile = path = subfolder = None + logError(config.SERIOUS_ERROR, pn.problem_definitions[ERROR_IN_NAME_GENERATION][1] % {'filetype': mediaFile.displayNameCap, 'area': area}) + + if not skipFile: + checkProblemWithNameGeneration(mediaFile) else: - # attempt to generate a subfolder name - subfolder, problem = subfolderFactory.generateNameUsingPreferences( - fileMetadata, name, - self.stripCharacters, fallback_date = fallback_date) - - if problem: - logError(config.WARNING, - _("Subfolder name could not be properly generated. Check to ensure there is sufficient metadata."), - _("Subfolder: %(subfolder)s\nFile: %(file)s\nProblem: %(problem)s") % - {'subfolder': subfolder, 'file': fullFileName, 'problem': problem}) - - if self.prefs.synchronize_raw_jpg and usesImageSequenceElements and self.isImage: - #synchronizing RAW and JPEG only applies to photos, not videos - image_name, image_ext = os.path.splitext(name) - with self.downloadedFilesLock: - i, sequence_to_use = downloaded_files.matching_pair(image_name, image_ext, fileMetadata.dateTime(), fileMetadata.subSeconds()) - if i == -1: - # this exact file has already been downloaded (same extension, same filename, and same exif date time subsecond info) - if not addUniqueIdentifier: - # there is no point to download it, as there is no way a unique filename will be generated - alreadyDownloaded = skipFile = True - elif i == -99: - i1_ext, i1_date_time, i1_subseconds = downloaded_files.extExifDateTime(image_name) - sameFileNameDifferentExif("%s%s" % (image_name, i1_ext), i1_date_time, i1_subseconds, name, fileMetadata.dateTime(), fileMetadata.subSeconds()) - - - # pass the subfolder the image will go into, as this is needed to determine subfolder sequence numbers - # indicate that sequences chosen should be queued + self.sizeDownloaded += mediaFile.size * (no_backup_devices + 1) + mediaFile.status = STATUS_DOWNLOAD_FAILED - # TODO check 'or alreadyDownloaded' is meant to be here - if not (skipFile or alreadyDownloaded): - newName, problem = fileRenameFactory.generateNameUsingPreferences( - fileMetadata, name, self.stripCharacters, subfolder, - sequencesPreliminary = True, - sequence_to_use = sequence_to_use, - fallback_date = fallback_date) - - path = os.path.join(baseDownloadDir, subfolder) - newFile = os.path.join(path, newName) - - if not newName: - skipFile = True - if not alreadyDownloaded: - checkProblemWithNameGeneration(newName, path, fullFileName, problem, fileBeingDownloadedDisplayCap) - else: - fileAlreadyExists(fullFileName, fileSkippedDisplay, fileAlreadyExistsDisplay, newFile) - newName = newFile = path = subfolder = None - - return (skipFile, fileMetadata, newName, newFile, path, subfolder, sequence_to_use) + return (skipFile, sequence_to_use) + + def progress_callback(amount_downloaded, total): + if (amount_downloaded - self.bytes_downloaded > 2097152) or (amount_downloaded == total): + chunk_downloaded = amount_downloaded - self.bytes_downloaded + self.bytes_downloaded = amount_downloaded + percentComplete = (float(self.sizeDownloaded + amount_downloaded) / sizeFiles) * 100 + + display_queue.put((media_collection_treeview.updateProgress, (self.thread_id, percentComplete, None, chunk_downloaded))) - def downloadFile(path, newFile, newName, originalName, image, fileMetadata, subfolder, sequence_to_use, modificationTime): + def downloadFile(mediaFile, sequence_to_use): """ Downloads the photo or video file to the specified subfolder """ - if not self.isImage: + if not mediaFile.isImage: renameFactory = self.videoRenamePrefsFactory else: renameFactory = self.imageRenamePrefsFactory - - def progress_callback(self, v): + + def progress_callback_no_update(amount_downloaded, total): pass try: fileDownloaded = False - if not os.path.isdir(path): - os.makedirs(path) + if not os.path.isdir(mediaFile.downloadPath): + os.makedirs(mediaFile.downloadPath) nameUniqueBeforeCopy = True downloadNonUniqueFile = True - + # do a preliminary check to see if a file with the same name already exists - if os.path.exists(newFile): + if os.path.exists(mediaFile.downloadFullFileName): nameUniqueBeforeCopy = False if not addUniqueIdentifier: downloadNonUniqueFile = False - if (usesVideoSequenceElements and not self.isImage) or (usesImageSequenceElements and self.isImage and not self.prefs.synchronize_raw_jpg): + if (usesVideoSequenceElements and not mediaFile.isImage) or (usesImageSequenceElements and mediaFile.isImage and not self.prefs.synchronize_raw_jpg): # potentially, a unique file name could still be generated # investigate this possibility with self.fileSequenceLock: - for possibleName, problem in renameFactory.generateNameSequencePossibilities(fileMetadata, - originalName, self.stripCharacters, subfolder): + for possibleName in renameFactory.generateNameSequencePossibilities( + mediaFile.metadata, + mediaFile.name, self.stripCharacters, mediaFile.downloadSubfolder): if possibleName: # no need to check for any problems here, it's just a temporary name - possibleFile = os.path.join(path, possibleName) - possibleTempFile = os.path.join(tempWorkingDir, possibleName) + possibleFile = os.path.join(mediaFile.downloadPath, possibleName) + possibleTempFile = os.path.join(tempWorkingDir, possibleName) if not os.path.exists(possibleFile) and not os.path.exists(possibleTempFile): downloadNonUniqueFile = True break if not downloadNonUniqueFile: - fileAlreadyExists(fullFileName, fileSkippedDisplay, fileAlreadyExistsDisplay, newFile) + fileAlreadyExists(mediaFile) copy_succeeded = False if nameUniqueBeforeCopy or downloadNonUniqueFile: - tempWorkingfile = os.path.join(tempWorkingDir, newName) + tempWorkingfile = os.path.join(tempWorkingDir, mediaFile.downloadName) if using_gio: g_dest = gio.File(path=tempWorkingfile) - g_src = gio.File(path=fullFileName) - if not g_src.copy(g_dest, progress_callback, cancellable=gio.Cancellable()): - downloadCopyingError(fullFileName, tempWorkingfile, fileBeingDownloadedDisplay) - else: - copy_succeeded = True - else: - shutil.copy2(fullFileName, tempWorkingfile) + g_src = gio.File(path=mediaFile.fullFileName) + try: + if not g_src.copy(g_dest, progress_callback, cancellable=gio.Cancellable()): + downloadCopyingError(mediaFile) + else: + copy_succeeded = True + except glib.GError, inst: + downloadCopyingError(mediaFile, inst=inst) + else: + shutil.copy2(mediaFile.fullFileName, tempWorkingfile) copy_succeeded = True if copy_succeeded: @@ -2086,333 +2359,364 @@ class CopyPhotos(Thread): if usesSequenceElements: with self.fileSequenceLock: # get a filename and use this as the "real" filename - if sequence_to_use is None and self.prefs.synchronize_raw_jpg and self.isImage: + if sequence_to_use is None and self.prefs.synchronize_raw_jpg and mediaFile.isImage: # must check again, just in case the matching pair has been downloaded in the meantime - image_name, image_ext = os.path.splitext(originalName) + image_name, image_ext = os.path.splitext(mediaFile.name) with self.downloadedFilesLock: - i, sequence_to_use = downloaded_files.matching_pair(image_name, image_ext, fileMetadata.dateTime(), fileMetadata.subSeconds()) + i, sequence_to_use = downloaded_files.matching_pair(image_name, image_ext, mediaFile.metadata.dateTime(), mediaFile.metadata.subSeconds()) if i == -99: - i1_ext, i1_date_time, i1_subseconds = downloaded_files.extExifDateTime(image_name) - sameFileNameDifferentExif("%s%s" % (image_name, i1_ext), i1_date_time, i1_subseconds, originalName, fileMetadata.dateTime(), fileMetadata.subSeconds()) - - + sameNameDifferentExif(image_name, mediaFile) - newName, problem = renameFactory.generateNameUsingPreferences( - fileMetadata, originalName, self.stripCharacters, subfolder, + mediaFile.downloadName = renameFactory.generateNameUsingPreferences( + mediaFile.metadata, mediaFile.name, self.stripCharacters, mediaFile.downloadSubfolder, sequencesPreliminary = False, sequence_to_use = sequence_to_use, - fallback_date = fallback_date) - checkProblemWithNameGeneration(newName, path, fullFileName, problem, fileBeingDownloadedDisplayCap) - if not newName: + fallback_date = mediaFile.modificationTime) + + if not mediaFile.downloadName: # there was a serious error generating the filename doRename = False else: - newFile = os.path.join(path, newName) + mediaFile.downloadFullFileName = os.path.join(mediaFile.downloadPath, mediaFile.downloadName) # check if the file exists again - if os.path.exists(newFile): + if os.path.exists(mediaFile.downloadFullFileName): if not addUniqueIdentifier: doRename = False - fileAlreadyExists(fullFileName, fileSkippedDisplay, fileAlreadyExistsDisplay, newFile) + fileAlreadyExists(mediaFile) else: # add basic suffix to make the filename unique - name = os.path.splitext(newName) + name = os.path.splitext(mediaFile.downloadName) suffixAlreadyUsed = True while suffixAlreadyUsed: - if newFile in duplicate_files: - duplicate_files[newFile] += 1 + if mediaFile.downloadFullFileName in duplicate_files: + duplicate_files[mediaFile.downloadFullFileName] += 1 else: - duplicate_files[newFile] = 1 - identifier = '_%s' % duplicate_files[newFile] - newName = name[0] + identifier + name[1] - possibleNewFile = os.path.join(path, newName) + duplicate_files[mediaFile.downloadFullFileName] = 1 + identifier = '_%s' % duplicate_files[mediaFile.downloadFullFileName] + mediaFile.downloadName = name[0] + identifier + name[1] + possibleNewFile = os.path.join(mediaFile.downloadPath, mediaFile.downloadName) suffixAlreadyUsed = os.path.exists(possibleNewFile) - fileAlreadyExists(fullFileName, fileSkippedDisplay, fileAlreadyExistsDisplay, newFile, identifier=identifier) - newFile = possibleNewFile + fileAlreadyExists(mediaFile, identifier) + mediaFile.downloadFullFileName = possibleNewFile if doRename: + rename_succeeded = False if using_gio: - g_dest = gio.File(path=newFile) + g_dest = gio.File(path=mediaFile.downloadFullFileName) g_src = gio.File(path=tempWorkingfile) - if not g_src.move(g_dest, progress_callback, cancellable=gio.Cancellable()): - downloadCopyingError(tempWorkingfile, newFile, fileBeingDownloadedDisplay) + try: + if not g_src.move(g_dest, progress_callback_no_update, cancellable=gio.Cancellable()): + downloadCopyingError(mediaFile) + else: + rename_succeeded = True + except glib.GError, inst: + downloadCopyingError(mediaFile, inst=inst) else: - os.rename(tempWorkingfile, newFile) + os.rename(tempWorkingfile, mediaFile.downloadFullFileName) + rename_succeeded = True - fileDownloaded = True - if usesImageSequenceElements: - if self.prefs.synchronize_raw_jpg and self.isImage: - name, ext = os.path.splitext(originalName) - if sequence_to_use is None: - with self.fileSequenceLock: - seq = self.imageRenamePrefsFactory.sequences.getFinalSequence() - else: - seq = sequence_to_use - with self.downloadedFilesLock: - downloaded_files.add_download(name, ext, fileMetadata.dateTime(), fileMetadata.subSeconds(), seq) + if rename_succeeded: + fileDownloaded = True + if mediaFile.status != STATUS_DOWNLOADED_WITH_WARNING: + mediaFile.status = STATUS_DOWNLOADED + if usesImageSequenceElements: + if self.prefs.synchronize_raw_jpg and mediaFile.isImage: + name, ext = os.path.splitext(mediaFile.name) + if sequence_to_use is None: + with self.fileSequenceLock: + seq = renameFactory.sequences.getFinalSequence() + else: + seq = sequence_to_use + with self.downloadedFilesLock: + downloaded_files.add_download(name, ext, mediaFile.metadata.dateTime(), mediaFile.metadata.subSeconds(), seq) - + + with self.fileSequenceLock: + if sequence_to_use is None: + renameFactory.sequences.imageCopySucceeded() + if usesStoredSequenceNo: + self.prefs.stored_sequence_no += 1 + with self.fileSequenceLock: if sequence_to_use is None: - renameFactory.sequences.imageCopySucceeded() - if usesStoredSequenceNo: - self.prefs.stored_sequence_no += 1 - - with self.fileSequenceLock: - if sequence_to_use is None: - if self.prefs.incrementDownloadsToday(): - # A new day, according the user's preferences of what time a day begins, has started - cmd_line(_("New day has started - resetting 'Downloads Today' sequence number")) - - sequences.setDownloadsToday(0) + if self.prefs.incrementDownloadsToday(): + # A new day, according the user's preferences of what time a day begins, has started + cmd_line(_("New day has started - resetting 'Downloads Today' sequence number")) + + sequences.setDownloadsToday(0) - except IOError, (errno, strerror): - downloadCopyingError(fullFileName, newFile, fileBeingDownloadedDisplay, errno, strerror) - - except OSError, (errno, strerror): - downloadCopyingError(fullFileName, newFile, fileBeingDownloadedDisplay, errno, strerror) + except (IOError, OSError), (errno, strerror): + downloadCopyingError(mediaFile, errno=errno, strerror=strerror) - if usesImageSequenceElements: + if usesSequenceElements: if not fileDownloaded and sequence_to_use is None: - self.imageRenamePrefsFactory.sequences.imageCopyFailed() - - - return (fileDownloaded, newName, newFile) + renameFactory.sequences.imageCopyFailed() + + #update record keeping using in tracking progress + self.sizeDownloaded += mediaFile.size + self.bytes_downloaded_in_download = self.bytes_downloaded + + return fileDownloaded - def backupFile(subfolder, newName, fileDownloaded, newFile, originalFile): + def backupFile(mediaFile, fileDownloaded, no_backup_devices): """ Backup photo or video to path(s) chosen by the user - there are two scenarios: + there are three scenarios: (1) file has just been downloaded and should now be backed up (2) file was already downloaded on some previous occassion and should still be backed up, because it hasn't been yet (3) file has been backed up already (or at least, a file with the same name already exists) A backup medium can be used to backup photos or videos, or both. """ - - #TODO convert to using GIO + backed_up = False fileNotBackedUpMessageDisplayed = False - try: + error_encountered = False + expected_bytes_downloaded = self.sizeDownloaded + no_backup_devices * mediaFile.size + + if no_backup_devices: for rootBackupDir in self.parentApp.backupVolumes: + self.bytes_downloaded = 0 if self.prefs.backup_device_autodetection: - if self.isImage: + volume = self.parentApp.backupVolumes[rootBackupDir].get_name() + if mediaFile.isImage: backupDir = os.path.join(rootBackupDir, self.prefs.backup_identifier) else: backupDir = os.path.join(rootBackupDir, self.prefs.video_backup_identifier) else: # photos and videos will be backed up into the same root folder, which the user has manually specified backupDir = rootBackupDir + volume = backupDir # os.path.split(backupDir)[1] + # if user has chosen auto detection, then: # photos should only be backed up to photo backup locations # videos should only be backed up to video backup locations # if user did not choose autodetection, and the backup path doesn't exist, then # will try to create it - if os.path.exists(backupDir) or not self.prefs.backup_device_autodetection: + if os.path.isdir(backupDir) or not self.prefs.backup_device_autodetection: - backupPath = os.path.join(backupDir, subfolder) - newBackupFile = os.path.join(backupPath, newName) + backupPath = os.path.join(backupDir, mediaFile.downloadSubfolder) + newBackupFile = os.path.join(backupPath, mediaFile.downloadName) copyBackup = True if os.path.exists(newBackupFile): # this check is of course not thread safe -- it doesn't need to be, because at this stage the file names are going to be unique # (the folder structure is the same as the actual download folders, and the file names are unique in them) - copyBackup = self.prefs.backup_duplicate_overwrite - if self.prefs.indicate_download_error: - severity = config.SERIOUS_ERROR - problem = _("Backup of %(file_type)s already exists") % {'file_type': fileBeingDownloadedDisplay} - details = _("Source: %(source)s\nDestination: %(destination)s") \ - % {'source': originalFile, 'destination': newBackupFile} - if copyBackup : - resolution = _("Backup %(file_type)s overwritten") % {'file_type': fileBeingDownloadedDisplay} + copyBackup = self.prefs.backup_duplicate_overwrite + + if copyBackup: + mediaFile.problem.add_problem(None, pn.BACKUP_EXISTS_OVERWRITTEN, volume) + else: + mediaFile.problem.add_problem(None, pn.BACKUP_EXISTS, volume) + severity = config.SERIOUS_ERROR + fileNotBackedUpMessageDisplayed = True + + title = _("Backup of %(file_type)s already exists") % {'file_type': mediaFile.displayName} + details = _("Source: %(source)s\nDestination: %(destination)s") \ + % {'source': mediaFile.fullFileName, 'destination': newBackupFile} + if copyBackup: + resolution = _("Backup %(file_type)s overwritten") % {'file_type': mediaFile.displayName} + else: + if self.prefs.backup_device_autodetection: + volume = self.parentApp.backupVolumes[rootBackupDir].get_name() + resolution = _("%(file_type)s not backed up to %(volume)s") % {'file_type': mediaFile.displayNameCap, 'volume': volume} else: - fileNotBackedUpMessageDisplayed = True - if self.prefs.backup_device_autodetection: - volume = self.parentApp.backupVolumes[rootBackupDir].get_name() - resolution = _("%(file_type)s not backed up to %(volume)s") % {'file_type': fileBeingDownloadedDisplayCap, 'volume': volume} - else: - resolution = _("%(file_type)s not backed up") % {'file_type': fileBeingDownloadedDisplayCap} - logError(severity, problem, details, resolution) + resolution = _("%(file_type)s not backed up") % {'file_type': mediaFile.displayNameCap} + logError(severity, title, details, resolution) if copyBackup: if fileDownloaded: - fileToCopy = newFile + fileToCopy = mediaFile.downloadFullFileName else: - fileToCopy = originalFile + fileToCopy = mediaFile.fullFileName if os.path.isdir(backupPath): pathExists = True else: - # recreate folder structure in backup location - # cannot do os.makedirs(backupPath) - it can give bad results when using external drives - # we know backupDir exists - # all the components of subfolder may not - folders = subfolder.split(os.path.sep) - folderToMake = backupDir - for f in folders: - if f: - folderToMake = os.path.join(folderToMake, f) - if not os.path.isdir(folderToMake): - try: - os.mkdir(folderToMake) - pathExists = True - except (IOError, OSError), (errno, strerror): - fileNotBackedUpMessageDisplayed = True - logError(config.SERIOUS_ERROR, _('Backing up error'), - _("Destination directory could not be created: %(directory)s\n") % - {'directory': folderToMake, } + - _("Source: %(source)s\nDestination: %(destination)s\n") % - {'source': originalFile, 'destination': newBackupFile} + - _("Error: %(errno)s %(strerror)s") % {'errno': errno, 'strerror': strerror}, - _('The %(file_type)s was not backed up.') % {'file_type': fileBeingDownloadedDisplay} - ) - pathExists = False - break + pathExists = False + # create the backup subfolders + if using_gio: + dirs = gio.File(backupPath) + try: + if dirs.make_directory_with_parents(cancellable=gio.Cancellable()): + pathExists = True + except glib.GError, inst: + fileNotBackedUpMessageDisplayed = True + mediaFile.problem.add_problem(None, pn.BACKUP_DIRECTORY_CREATION, volume) + mediaFile.problem.add_extra_detail('%s%s' % (pn.BACKUP_DIRECTORY_CREATION, volume), inst) + error_encountered = True + logError(config.SERIOUS_ERROR, _('Backing up error'), + _("Destination directory could not be created: %(directory)s\n") % + {'directory': backupPath, } + + _("Source: %(source)s\nDestination: %(destination)s") % + {'source': mediaFile.fullFileName, 'destination': newBackupFile} + "\n" + + _("Error: %(inst)s") % {'inst': inst}, + _('The %(file_type)s was not backed up.') % {'file_type': mediaFile.displayName} + ) + else: + # recreate folder structure in backup location + # cannot do os.makedirs(backupPath) - it can give bad results when using external drives + # we know backupDir exists + # all the components of subfolder may not + folders = mediaFile.downloadSubfolder.split(os.path.sep) + folderToMake = backupDir + for f in folders: + if f: + folderToMake = os.path.join(folderToMake, f) + if not os.path.isdir(folderToMake): + try: + os.mkdir(folderToMake) + pathExists = True + except (IOError, OSError), (errno, strerror): + fileNotBackedUpMessageDisplayed = True + inst = "%s: %s" % (errno, strerror) + mediaFile.problem.add_problem(None, pn.BACKUP_DIRECTORY_CREATION, volume) + mediaFile.problem.add_extra_detail('%s%s' % (pn.BACKUP_DIRECTORY_CREATION, volume), inst) + error_encountered = True + logError(config.SERIOUS_ERROR, _('Backing up error'), + _("Destination directory could not be created: %(directory)s\n") % + {'directory': backupPath, } + + _("Source: %(source)s\nDestination: %(destination)s") % + {'source': mediaFile.fullFileName, 'destination': newBackupFile} + "\n" + + _("Error: %(errno)s %(strerror)s") % {'errno': errno, 'strerror': strerror}, + _('The %(file_type)s was not backed up.') % {'file_type': mediaFile.displayName} + ) + + break if pathExists: - shutil.copy2(fileToCopy, newBackupFile) - backed_up = True - - except (IOError, OSError), (errno, strerror): - fileNotBackedUpMessageDisplayed = True - logError(config.SERIOUS_ERROR, _('Backing up error'), - _("Source: %(source)s\nDestination: %(destination)s\nError: %(errno)s %(strerror)s") - % {'source': originalFile, 'destination': newBackupFile, 'errno': errno, 'strerror': strerror}, - _('The %(file_type)s was not backed up.') % {'file_type': fileBeingDownloadedDisplay} - ) + if using_gio: + g_dest = gio.File(path=newBackupFile) + g_src = gio.File(path=fileToCopy) + if self.prefs.backup_duplicate_overwrite: + flags = gio.FILE_COPY_OVERWRITE + else: + flags = gio.FILE_COPY_NONE + try: + if not g_src.copy(g_dest, progress_callback, flags, cancellable=gio.Cancellable()): + fileNotBackedUpMessageDisplayed = True + mediaFile.problem.add_problem(None, pn.BACKUP_ERROR, volume) + error_encountered = True + else: + backed_up = True + if mediaFile.status == STATUS_DOWNLOAD_FAILED: + mediaFile.problem.add_problem(None, pn.NO_DOWNLOAD_WAS_BACKED_UP, volume) + except glib.GError, inst: + fileNotBackedUpMessageDisplayed = True + mediaFile.problem.add_problem(None, pn.BACKUP_ERROR, volume) + mediaFile.problem.add_extra_detail('%s%s' % (pn.BACKUP_ERROR, volume), inst) + error_encountered = True + logError(config.SERIOUS_ERROR, _('Backing up error'), + _("Source: %(source)s\nDestination: %(destination)s") % + {'source': fileToCopy, 'destination': newBackupFile} + "\n" + + _("Error: %(inst)s") % {'inst': inst}, + _('The %(file_type)s was not backed up.') % {'file_type': mediaFile.displayName} + ) + else: + try: + shutil.copy2(fileToCopy, newBackupFile) + backed_up = True + if mediaFile.status == STATUS_DOWNLOAD_FAILED: + mediaFile.problem.add_problem(None, pn.NO_DOWNLOAD_WAS_BACKED_UP, volume) + + except (IOError, OSError), (errno, strerror): + fileNotBackedUpMessageDisplayed = True + mediaFile.problem.add_problem(None, pn.BACKUP_ERROR, volume) + inst = "%s: %s" % (errno, strerror) + mediaFile.problem.add_extra_detail('%s%s' % (pn.BACKUP_ERROR, volume), inst) + error_encountered = True + logError(config.SERIOUS_ERROR, _('Backing up error'), + _("Source: %(source)s\nDestination: %(destination)s") % + {'source': fileToCopy, 'destination': newBackupFile} + "\n" + + _("Error: %(errno)s %(strerror)s") % {'errno': errno, 'strerror': strerror}, + _('The %(file_type)s was not backed up.') % {'file_type': mediaFile.displayName} + ) + + #update record keeping using in tracking progress + self.sizeDownloaded += mediaFile.size + self.bytes_downloaded_in_backup += self.bytes_downloaded if not backed_up and not fileNotBackedUpMessageDisplayed: # The file has not been backed up to any medium + mediaFile.problem.add_problem(None, pn.NO_BACKUP_PERFORMED, {'filetype': mediaFile.displayNameCap}) + severity = config.SERIOUS_ERROR - problem = _("%(file_type)s could not be backed up") % {'file_type': fileBeingDownloadedDisplayCap} - details = _("Source: %(source)s") % {'source': originalFile} + problem = _("%(file_type)s could not be backed up") % {'file_type': mediaFile.displayName} + details = _("Source: %(source)s") % {'source': mediaFile.fullFileName} if self.prefs.backup_device_autodetection: resolution = _("No suitable backup volume was found") else: resolution = _("A backup location was not found") logError(severity, problem, details, resolution) - - return backed_up - def notifyAndUnmount(): - if not self.cardMedia.volume: - unmountMessage = "" - notificationName = PROGRAM_NAME - else: - notificationName = self.cardMedia.volume.get_name() - if self.prefs.auto_unmount: - self.cardMedia.volume.unmount(self.on_volume_unmount) - # This message informs the user that the device (e.g. camera, hard drive or memory card) was automatically unmounted and they can now remove it - unmountMessage = _("The device can now be safely removed") - else: - unmountMessage = "" - - file_types = file_types_by_number(noImagesDownloaded, noVideosDownloaded) - file_types_skipped = file_types_by_number(noImagesSkipped, noVideosSkipped) - message = _("%(noFiles)s %(filetypes)s downloaded") % {'noFiles':noFilesDownloaded, 'filetypes': file_types} - noFilesSkipped = noImagesSkipped + noVideosSkipped - if noFilesSkipped: - message += "\n" + _("%(noFiles)s %(filetypes)s skipped") % {'noFiles':noFilesSkipped, 'filetypes':file_types_skipped} - - if unmountMessage: - message = "%s\n%s" % (message, unmountMessage) - - if self.noWarnings: - message = "%s\n%s " % (message, self.noWarnings) + _("warnings") - if self.noErrors: - message = "%s\n%s " % (message, self.noErrors) + _("errors") - - n = pynotify.Notification(notificationName, message) + if backed_up and mediaFile.status == STATUS_DOWNLOAD_FAILED: + mediaFile.problem.add_extra_detail(pn.BACKUP_OK_TYPE, mediaFile.displayNameCap) - if self.cardMedia.volume: - icon = self.cardMedia.volume.get_icon_pixbuf(self.parentApp.notification_icon_size) - else: - icon = self.parentApp.application_icon + if not backed_up: + if mediaFile.status == STATUS_DOWNLOAD_FAILED: + mediaFile.status = STATUS_DOWNLOAD_AND_BACKUP_FAILED + else: + mediaFile.status = STATUS_BACKUP_PROBLEM + elif error_encountered: + # it was backed up to at least one volume, but there was an error on another backup volume + if mediaFile.status != STATUS_DOWNLOAD_FAILED: + mediaFile.status = STATUS_BACKUP_PROBLEM - n.set_icon_from_pixbuf(icon) - n.show() - + # Take into account instances where a backup device has been removed part way through a download + # (thereby making self.parentApp.backupVolumes have less items than expected) + if self.sizeDownloaded < expected_bytes_downloaded: + self.sizeDownloaded = expected_bytes_downloaded + return backed_up - - def getThumbnail(fileMetadata): - thumbnail = orientation = None - if self.isImage: - try: - thumbnail = fileMetadata.getThumbnailData(MAX_THUMBNAIL_SIZE) - if not isinstance(thumbnail, types.StringType): - thumbnail = None - except: - thumbnail = None - - if thumbnail is None: - logError(config.WARNING, _("Photo thumbnail could not be extracted"), fullFileName) - orientation = None - else: - orientation = fileMetadata.orientation(missing=None) - else: - # get thumbnail of video - # it may need to be generated - thumbnail = fileMetadata.getThumbnailData(MAX_THUMBNAIL_SIZE, tempWorkingDir) - if thumbnail: - orientation = 1 - return thumbnail, orientation - - def createTempDir(baseDir): - """ - Create a temporary directory in which to download the photos to. - - Returns the directory if it was created, else returns None. - - Don't want to put it in system temp folder, as that is likely - to be on another partition and hence copying files from it - to the actual download folder will be slow!""" - try: - t = tempfile.mkdtemp(prefix='rapid-tmp-', - dir=baseDir) - return t - except OSError, (errno, strerror): - if not self.cardMedia.volume: - image_device = _("Source: %s\n") % self.cardMedia.getPath() - else: - _("Device: %s\n") % self.cardMedia.volume.get_name() - destination = _("Destination: %s") % baseDir - logError(config.CRITICAL_ERROR, _('Could not create temporary download directory'), - image_device + destination, - _("Download cannot proceed")) - cmd_line(_("Error:") + " " + _('Could not create temporary download directory')) - cmd_line(image_device + destination) - cmd_line(_("Download cannot proceed")) - display_queue.put((media_collection_treeview.removeCard, (self.thread_id, ))) - display_queue.put((self.parentApp.downloadFailed, (self.thread_id, ))) - display_queue.close("rw") - self.running = False - self.lock.release() - return None - self.hasStarted = True display_queue.open('w') #Do not try to handle any preference errors here getPrefs(False) - if not scanMedia(): + #Check photo and video download path, create if necessary + photoBaseDownloadDir = self.prefs.download_folder + if not checkDownloadPath(photoBaseDownloadDir): + return # cleanup already done + + if DOWNLOAD_VIDEO: + videoBaseDownloadDir = self.prefs.video_download_folder + if not checkDownloadPath(videoBaseDownloadDir): + return + else: + videoBaseDownloadDir = self.videoTempWorkingDir = None + + if not createBothTempDirs(): + return + + s = scanMedia() + if s is None: + if not self.ctrl: + self.running = False + display_queue.put((media_collection_treeview.removeCard, (self.thread_id, ))) + display_queue.close("rw") + return + else: + sys.stderr.write("FIXME: scan returned None, but the thread is not meant to be exiting\n") + if not s: cmd_line(_("This device has no %(types_searched_for)s to download from.") % {'types_searched_for': self.types_searched_for}) display_queue.put((self.parentApp.downloadFailed, (self.thread_id, ))) display_queue.close("rw") self.running = False - return - elif self.autoStart and need_job_code: - if job_code == None: - self.waitingForJobCode = True - display_queue.put((self.parentApp.getJobCode, ())) - self.running = False - self.lock.acquire() - self.running = True - self.waitingForJobCode = False - elif not self.autoStart: + return + + if self.scanResultsStale or self.scanResultsStaleDownloadFolder: + display_queue.put((self.parentApp.regenerateScannedDevices, (self.thread_id, ))) + all_files_downloaded = False + + totalNonErrorFiles = self.cardMedia.numberOfFilesNotCannotDownload() + + if not self.autoStart: # halt thread, waiting to be restarted so download proceeds + self.cleanUp() self.running = False self.lock.acquire() @@ -2425,233 +2729,229 @@ class CopyPhotos(Thread): return self.running = True - - if not getPrefs(True): - self.running = False - display_queue.close("rw") - return - - - self.downloadStarted = True - cmd_line(_("Download has started from %s") % self.cardMedia.prettyName(limit=0)) - - #check for presence of backup path or volumes - if self.prefs.backup_images: - can_backup = True - if self.prefs.backup_missing == config.REPORT_ERROR: - e = config.SERIOUS_ERROR - elif self.prefs.backup_missing == config.REPORT_WARNING: - e = config.WARNING - if not self.prefs.backup_device_autodetection: - if not os.path.isdir(self.prefs.backup_location): - # the user has manually specified a path, but it - # does not exist. This is a problem. - try: - os.makedirs(self.prefs.backup_location) - except: - if self.prefs.backup_missing <> config.IGNORE: - logError(e, _("Backup path does not exist"), - _("The path %s could not be created") % path, - _("No backups can occur") - ) - can_backup = False - - elif self.prefs.backup_missing <> config.IGNORE: - if not len(self.parentApp.backupVolumes): - logError(e, _("Backup device missing"), - _("No backup device was automatically detected"), - _("No backups can occur")) - can_backup = False - - if need_job_code and job_code == None: - sys.stderr.write(str(self.thread_id ) + ": job code should never be None\n") - self.imageRenamePrefsFactory.setJobCode('unknown-job-code') - self.subfolderPrefsFactory.setJobCode('unknown-job-code') - else: - self.imageRenamePrefsFactory.setJobCode(job_code) - self.videoRenamePrefsFactory.setJobCode(job_code) - self.subfolderPrefsFactory.setJobCode(job_code) - self.videoSubfolderPrefsFactory.setJobCode(job_code) - - # Some photos may not have metadata (this - # is unlikely for photos straight out of a - # camera, but it is possible for photos that have been edited). If - # only non-dynamic components make up the rest of an image name - # (e.g. text specified by the user), then relying on metadata will - # likely produce duplicate names. - - needMetaDataToCreateUniqueImageName = self.imageRenamePrefsFactory.needImageMetaDataToCreateUniqueName() - - # subfolder generation also need to be examined, but here the need is - # not so exacting, since subfolders contain photos, and naturally the - # requirement to be unique is far more relaxed. However if subfolder - # generation relies entirely on metadata, that is a problem worth - # looking for - needMetaDataToCreateUniqueSubfolderName = self.subfolderPrefsFactory.needMetaDataToCreateUniqueName() - - i = 0 - sizeDownloaded = noFilesDownloaded = noImagesDownloaded = noVideosDownloaded = noImagesSkipped = noVideosSkipped = 0 - filesDownloadedSuccessfully = [] - - sizeFiles = self.cardMedia.sizeOfImagesAndVideos(humanReadable = False) - display_queue.put((self.parentApp.addToTotalDownloadSize, (sizeFiles, ))) - display_queue.put((self.parentApp.setOverallDownloadMark, ())) - display_queue.put((self.parentApp.postStartDownloadTasks, ())) - - sizeFiles = float(sizeFiles) - noFiles = self.cardMedia.numberOfImagesAndVideos() - - if self.noImages > 0: - photoBaseDownloadDir = self.prefs.download_folder - if not checkDownloadPath(photoBaseDownloadDir): - return - photoTempWorkingDir = createTempDir(photoBaseDownloadDir) - if not photoTempWorkingDir: - return - else: - photoBaseDownloadDir = photoTempWorkingDir = None - if DOWNLOAD_VIDEO and self.noVideos > 0: - videoBaseDownloadDir = self.prefs.video_download_folder - if not checkDownloadPath(videoBaseDownloadDir): + if not createBothTempDirs(): return - videoTempWorkingDir = createTempDir(videoBaseDownloadDir) - if not videoTempWorkingDir: - return + else: - videoBaseDownloadDir = videoTempWorkingDir = None - - addUniqueIdentifier = self.prefs.download_conflict_resolution == config.ADD_UNIQUE_IDENTIFIER - usesImageSequenceElements = self.imageRenamePrefsFactory.usesSequenceElements() - usesVideoSequenceElements = self.videoRenamePrefsFactory.usesSequenceElements() - usesSequenceElements = usesVideoSequenceElements or usesImageSequenceElements - - usesStoredSequenceNo = (self.imageRenamePrefsFactory.usesTheSequenceElement(rn.STORED_SEQ_NUMBER) or - self.videoRenamePrefsFactory.usesTheSequenceElement(rn.STORED_SEQ_NUMBER)) - sequences.setUseOfSequenceElements( - self.imageRenamePrefsFactory.usesTheSequenceElement(rn.SESSION_SEQ_NUMBER), - self.imageRenamePrefsFactory.usesTheSequenceElement(rn.SEQUENCE_LETTER)) - + if need_job_code_for_renaming: + if checkIfNeedAJobCode(): + if job_code == None: + self.cleanUp() + self.waitingForJobCode = True + display_queue.put((self.parentApp.getJobCode, ())) + self.running = False + self.lock.acquire() - while i < noFiles: - if not self.running: + if not self.ctrl: + # thread is exiting + display_queue.close("rw") + return + + self.running = True + self.waitingForJobCode = False + if not createBothTempDirs(): + return + else: + # User has entered a job code, and it's in the global variable + # Assign it to all those files that do not have one + display_queue.put((self.parentApp.selection_vbox.selection_treeview.apply_job_code, (job_code, False, True, self.thread_id))) + + # auto start could be false if the user hit cancel when prompted for a job code + if self.autoStart: + # set all in this thread to download pending + display_queue.put((self.parentApp.selection_vbox.selection_treeview.set_status_to_download_pending, (False, self.thread_id))) + # wait until all the files have had their status set to download pending, and once that is done, restart + self.running = False self.lock.acquire() self.running = True + + while not all_files_downloaded: - if not self.ctrl: - self.running = False - cleanUp() - display_queue.close("rw") - return + self.noErrors = self.noWarnings = 0 - # get information about the image to deduce image name and path - name, root, size, modificationTime = self.cardMedia.imagesAndVideos[i] - fullFileName = os.path.join(root, name) - - self.isImage = media.isImage(name) - if self.isImage: - fileBeingDownloadedDisplay = _('photo') - fileBeingDownloadedDisplayCap = _('Photo') - fileSkippedDisplay = _("Photo skipped") - fileAlreadyExistsDisplay = _("Photo already exists") - fallback_date = None - tempWorkingDir = photoTempWorkingDir - baseDownloadDir = photoBaseDownloadDir - else: - fileBeingDownloadedDisplay = _('video') - fileBeingDownloadedDisplayCap = _('Video') - fileSkippedDisplay = _("Video skipped") - fileAlreadyExistsDisplay = _("Video already exists") - fallback_date = modificationTime - tempWorkingDir = videoTempWorkingDir - baseDownloadDir = videoBaseDownloadDir - - skipFile, fileMetadata, newName, newFile, path, subfolder, sequence_to_use = generateSubfolderAndFileName( - fullFileName, name, needMetaDataToCreateUniqueImageName, - needMetaDataToCreateUniqueSubfolderName, fallback_date) + if not getPrefs(True): + self.running = False + display_queue.close("rw") + return + + self.downloadStarted = True + cmd_line(_("Download has started from %s") % self.cardMedia.prettyName(limit=0)) + + noFiles, sizeFiles, fileIndex = self.cardMedia.sizeAndNumberDownloadPending() + cmd_line(_("Attempting to download %s files") % noFiles) + + + no_backup_devices = setupBackup() - if skipFile: - if self.isImage: - noImagesSkipped += 1 - else: - noVideosSkipped += 1 - else: - fileDownloaded, newName, newFile = downloadFile(path, newFile, newName, name, fullFileName, - fileMetadata, subfolder, sequence_to_use, fallback_date) + # include the time it takes to copy to the backup volumes + sizeFiles = sizeFiles * (no_backup_devices + 1) + + display_queue.put((self.parentApp.timeRemaining.set, (self.thread_id, sizeFiles))) + + i = 0 + self.sizeDownloaded = noFilesDownloaded = noImagesDownloaded = noVideosDownloaded = noImagesSkipped = noVideosSkipped = 0 + filesDownloadedSuccessfully = [] + self.bytes_downloaded_in_backup = 0 + + display_queue.put((self.parentApp.addToTotalDownloadSize, (sizeFiles, ))) + display_queue.put((self.parentApp.setOverallDownloadMark, ())) + display_queue.put((self.parentApp.postStartDownloadTasks, ())) + + sizeFiles = float(sizeFiles) - if self.prefs.backup_images: - if can_backup: - backed_up = backupFile(subfolder, newName, fileDownloaded, newFile, fullFileName) + addUniqueIdentifier = self.prefs.download_conflict_resolution == config.ADD_UNIQUE_IDENTIFIER + usesImageSequenceElements = self.imageRenamePrefsFactory.usesSequenceElements() + usesVideoSequenceElements = self.videoRenamePrefsFactory.usesSequenceElements() + usesSequenceElements = usesVideoSequenceElements or usesImageSequenceElements + + usesStoredSequenceNo = (self.imageRenamePrefsFactory.usesTheSequenceElement(rn.STORED_SEQ_NUMBER) or + self.videoRenamePrefsFactory.usesTheSequenceElement(rn.STORED_SEQ_NUMBER)) + sequences.setUseOfSequenceElements( + self.imageRenamePrefsFactory.usesTheSequenceElement(rn.SESSION_SEQ_NUMBER), + self.imageRenamePrefsFactory.usesTheSequenceElement(rn.SEQUENCE_LETTER)) + + # reset the progress bar to update the status of this download attempt + progressBarText = _("%(number)s of %(total)s %(filetypes)s") % {'number': 0, 'total': noFiles, 'filetypes':self.display_file_types} + display_queue.put((media_collection_treeview.updateProgress, (self.thread_id, 0.0, progressBarText, 0))) + + while i < noFiles: + # if the user pauses the download, then this will be triggered + if not self.running: + self.lock.acquire() + self.running = True + + if not self.ctrl: + self.running = False + self.cleanUp() + display_queue.close("rw") + return + + # get information about the image to deduce image name and path + mediaFile = self.cardMedia.imagesAndVideos[fileIndex[i]][0] + if not mediaFile.status == STATUS_DOWNLOAD_PENDING: + sys.stderr.write("FIXME: Thread %s is trying to download a file that it should not be!!" % self.thread_id) + else: + self.bytes_downloaded_in_download = self.bytes_downloaded_in_backup = self.bytes_downloaded = 0 + if mediaFile.isImage: + tempWorkingDir = self.photoTempWorkingDir + baseDownloadDir = photoBaseDownloadDir else: - backed_up = False + tempWorkingDir = self.videoTempWorkingDir + baseDownloadDir = videoBaseDownloadDir + + skipFile, sequence_to_use = generateSubfolderAndFileName(mediaFile) - if fileDownloaded: - noFilesDownloaded += 1 - if self.isImage: - noImagesDownloaded += 1 + if skipFile: + if mediaFile.isImage: + noImagesSkipped += 1 + else: + noVideosSkipped += 1 else: - noVideosDownloaded += 1 - if self.prefs.backup_images and backed_up: - filesDownloadedSuccessfully.append(fullFileName) - elif not self.prefs.backup_images: - filesDownloadedSuccessfully.append(fullFileName) + fileDownloaded = downloadFile(mediaFile, sequence_to_use) + + if self.prefs.backup_images: + backed_up = backupFile(mediaFile, fileDownloaded, no_backup_devices) + + if fileDownloaded: + noFilesDownloaded += 1 + if mediaFile.isImage: + noImagesDownloaded += 1 + else: + noVideosDownloaded += 1 + if self.prefs.backup_images and backed_up: + filesDownloadedSuccessfully.append(mediaFile.fullFileName) + elif not self.prefs.backup_images: + filesDownloadedSuccessfully.append(mediaFile.fullFileName) + else: + if mediaFile.isImage: + noImagesSkipped += 1 + else: + noVideosSkipped += 1 + + #update the selction treeview in the main window with the new status of the file + display_queue.put((self.parentApp.update_status_post_download, (mediaFile.treerowref, ))) + + percentComplete = (float(self.sizeDownloaded) / sizeFiles) * 100 + + if self.sizeDownloaded == sizeFiles and (totalNonErrorFiles - noFiles): + progressBarText = _("%(number)s of %(total)s %(filetypes)s (%(remaining)s remaining)") % { + 'number': i + 1, 'total': noFiles, 'filetypes':self.display_file_types, + 'remaining': totalNonErrorFiles - noFiles} else: - if self.isImage: - noImagesSkipped += 1 - else: - noVideosSkipped += 1 + progressBarText = _("%(number)s of %(total)s %(filetypes)s") % {'number': i + 1, 'total': noFiles, 'filetypes':self.display_file_types} - thumbnail, orientation = getThumbnail(fileMetadata) - - display_queue.put((thumbnail_hbox.addImage, (self.thread_id, thumbnail, orientation, fullFileName, fileDownloaded, self.isImage))) + if using_gio: + # do not want to update the progress bar any more than it has already been updated + size = mediaFile.size * (no_backup_devices + 1) - self.bytes_downloaded_in_download - self.bytes_downloaded_in_backup + else: + size = mediaFile.size * (no_backup_devices + 1) + display_queue.put((media_collection_treeview.updateProgress, (self.thread_id, percentComplete, progressBarText, size))) + + i += 1 - sizeDownloaded += size - percentComplete = (sizeDownloaded / sizeFiles) * 100 - if sizeDownloaded == sizeFiles: - self.downloadComplete = True - progressBarText = _("%(number)s of %(total)s %(filetypes)s") % {'number': i + 1, 'total': noFiles, 'filetypes':self.display_file_types} - display_queue.put((media_collection_treeview.updateProgress, (self.thread_id, percentComplete, progressBarText, size))) + with self.statsLock: + self.downloadStats.adjust(self.sizeDownloaded, noImagesDownloaded, noVideosDownloaded, noImagesSkipped, noVideosSkipped, self.noWarnings, self.noErrors) + + if self.prefs.auto_delete: + j = 0 + for imageOrVideo in filesDownloadedSuccessfully: + try: + os.unlink(imageOrVideo) + j += 1 + except OSError, (errno, strerror): + logError(config.SERIOUS_ERROR, _("Could not delete photo or video from device"), + _("Photo: %(source)s\nError: %(errno)s %(strerror)s") + % {'source': image, 'errno': errno, 'strerror': strerror}) + except: + logError(config.SERIOUS_ERROR, _("Could not delete photo or video from device"), + _("Photo: %(source)s")) + + cmd_line(_("Deleted %(number)i %(filetypes)s from device") % {'number':j, 'filetypes':self.display_file_types}) + + totalNonErrorFiles = totalNonErrorFiles - noFiles + if totalNonErrorFiles == 0: + all_files_downloaded = True + + # must manually delete these variables, or else the media cannot be unmounted (bug in some versions of pyexiv2 / exiv2) + # for some reason directories on the device remain open with read only access, even after these steps - I don't know why + del self.subfolderPrefsFactory, self.imageRenamePrefsFactory, self.videoSubfolderPrefsFactory, self.videoRenamePrefsFactory + for i in self.cardMedia.imagesAndVideos: + i[0].metadata = None + + notifyAndUnmount(umountAttemptOK = all_files_downloaded) + cmd_line(_("Download complete from %s") % self.cardMedia.prettyName(limit=0)) + display_queue.put((self.parentApp.notifyUserAllDownloadsComplete,())) + display_queue.put((self.parentApp.resetSequences,())) - i += 1 + if all_files_downloaded: + self.downloadComplete = True + else: + self.cleanUp() + self.downloadStarted = False + self.running = False + self.lock.acquire() + if not self.ctrl: + # thread will restart at this point, when the program is exiting + # so must exit if self.ctrl indicates this - with self.statsLock: - self.downloadStats.adjust(sizeDownloaded, noImagesDownloaded, noVideosDownloaded, noImagesSkipped, noVideosSkipped, self.noWarnings, self.noErrors) - - if self.prefs.auto_delete: - j = 0 - for imageOrVideo in filesDownloadedSuccessfully: - try: - os.unlink(imageOrVideo) - j += 1 - except OSError, (errno, strerror): - logError(config.SERIOUS_ERROR, _("Could not delete photo or video from device"), - _("Photo: %(source)s\nError: %(errno)s %(strerror)s") - % {'source': image, 'errno': errno, 'strerror': strerror}) - except: - logError(config.SERIOUS_ERROR, _("Could not delete photo or video from device"), - _("Photo: %(source)s")) - - cmd_line(_("Deleted %(number)i %(filetypes)s from device") % {'number':j, 'filetypes':self.display_file_types}) + self.running = False + display_queue.close("rw") + return + self.running = True + if not createBothTempDirs(): + return - # must manually delete these variables, or else the media cannot be unmounted (bug in some versions of pyexiv2 / exiv2) - del self.subfolderPrefsFactory, self.imageRenamePrefsFactory - try: - del fileMetadata - except: - pass - - notifyAndUnmount() - cmd_line(_("Download complete from %s") % self.cardMedia.prettyName(limit=0)) - display_queue.put((self.parentApp.notifyUserAllDownloadsComplete,())) - display_queue.put((self.parentApp.resetSequences,())) - cleanUp() display_queue.put((self.parentApp.exitOnDownloadComplete, ())) display_queue.close("rw") - + + self.cleanUp() + self.running = False if noFiles: self.lock.release() + def startStop(self): if self.isAlive(): if self.running: @@ -2663,6 +2963,21 @@ class CopyPhotos(Thread): except thread_error: sys.stderr.write(str(self.thread_id) + " thread error\n") + def cleanUp(self): + """ + Deletes temporary files and folders + """ + + for tempWorkingDir in (self.videoTempWorkingDir, self.photoTempWorkingDir): + if tempWorkingDir: + # possibly delete any lingering files + if os.path.isdir(tempWorkingDir): + tf = os.listdir(tempWorkingDir) + if tf: + for f in tf: + os.remove(os.path.join(tempWorkingDir, f)) + os.rmdir(tempWorkingDir) + def quit(self): """ Quits the thread @@ -2675,6 +2990,9 @@ class CopyPhotos(Thread): Completed (not alive, nothing to do) """ + # cleanup any temporary directories and files + self.cleanUp() + if self.hasStarted: if self.isAlive(): self.ctrl = False @@ -2697,15 +3015,15 @@ class CopyPhotos(Thread): class MediaTreeView(gtk.TreeView): """ - TreeView display of memory cards and associated copying progress. + TreeView display of devices and associated copying progress. Assumes a threaded environment. """ def __init__(self, parentApp): self.parentApp = parentApp - # card name, size of images, number of images, copy progress, copy text - self.liststore = gtk.ListStore(str, str, int, float, str) + # device name, size of images on the device (human readable), copy progress (%), copy text + self.liststore = gtk.ListStore(str, str, float, str) self.mapThreadToRow = {} gtk.TreeView.__init__(self, self.liststore) @@ -2725,16 +3043,14 @@ class MediaTreeView(gtk.TreeView): self.append_column(column1) column2 = gtk.TreeViewColumn(_("Download Progress"), - gtk.CellRendererProgress(), value=3, text=4) + gtk.CellRendererProgress(), value=2, text=3) self.append_column(column2) self.show_all() - def addCard(self, thread_id, cardName, sizeFiles, noFiles, progress = 0.0, - progressBarText = ''): + def addCard(self, thread_id, cardName, sizeFiles, progress = 0.0, progressBarText = ''): # add the row, and get a temporary pointer to the row - iter = self.liststore.append((cardName, sizeFiles, noFiles, - progress, progressBarText)) + iter = self.liststore.append((cardName, sizeFiles, progress, progressBarText)) self._setThreadMap(thread_id, iter) @@ -2747,11 +3063,13 @@ class MediaTreeView(gtk.TreeView): self.parentApp.media_collection_scrolledwindow.set_size_request(-1, height) - def updateCard(self, thread_id, sizeFiles, noFiles): + def updateCard(self, thread_id, totalSizeFiles): + """ + Updates the size of the photos and videos on the device, displayed to the user + """ if thread_id in self.mapThreadToRow: iter = self._getThreadMap(thread_id) - self.liststore.set_value(iter, 1, sizeFiles) - self.liststore.set_value(iter, 2, noFiles) + self.liststore.set_value(iter, 1, totalSizeFiles) else: sys.stderr.write("FIXME: this card is unknown") @@ -2777,19 +3095,23 @@ class MediaTreeView(gtk.TreeView): return the tree iter for this thread """ - treerowRef = self.mapThreadToRow[thread_id] - path = treerowRef.get_path() - iter = self.liststore.get_iter(path) - return iter + if thread_id in self.mapThreadToRow: + treerowRef = self.mapThreadToRow[thread_id] + path = treerowRef.get_path() + iter = self.liststore.get_iter(path) + return iter + else: + return None - def updateProgress(self, thread_id, percentComplete, progressBarText, imageSize): + def updateProgress(self, thread_id, percentComplete, progressBarText, bytesDownloaded): iter = self._getThreadMap(thread_id) - - self.liststore.set_value(iter, 3, percentComplete) - self.liststore.set_value(iter, 4, progressBarText) - if percentComplete or imageSize: - self.parentApp.updateOverallProgress(thread_id, imageSize, percentComplete) + if iter: + self.liststore.set_value(iter, 2, percentComplete) + if progressBarText: + self.liststore.set_value(iter, 3, progressBarText) + if percentComplete or bytesDownloaded: + self.parentApp.updateOverallProgress(thread_id, bytesDownloaded, percentComplete) def rowHeight(self): @@ -2799,90 +3121,69 @@ class MediaTreeView(gtk.TreeView): index = self.mapThreadToRow.keys()[0] path = self.mapThreadToRow[index].get_path() col = self.get_column(0) - return self.get_background_area(path, col)[3] + return self.get_background_area(path, col)[3] + 1 -class ThumbnailHBox(gtk.HBox): - """ - Displays thumbnails of the images being downloaded - """ - - def __init__(self, parentApp): - gtk.HBox.__init__(self) - self.parentApp = parentApp - self.padding = hd.CONTROL_IN_TABLE_SPACE / 2 - #create image used to lighten thumbnails - self.white = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8, width=MAX_THUMBNAIL_SIZE, height=MAX_THUMBNAIL_SIZE) - #fill with white - self.white.fill(0xffffffff) - - #load missing image - self.missingThumbnail = gtk.gdk.pixbuf_new_from_file_at_size(paths.share_dir('glade3/image-missing.svg'), MAX_THUMBNAIL_SIZE, MAX_THUMBNAIL_SIZE) - self.videoThumbnail = gtk.gdk.pixbuf_new_from_file_at_size(paths.share_dir('glade3/video.svg'), MAX_THUMBNAIL_SIZE, MAX_THUMBNAIL_SIZE) +class ShowWarningDialog(gtk.Dialog): + """ + Displays a warning to the user that downloading directly from a + camera does not always work well + """ + def __init__(self, parent_window, postChoiceCB): + gtk.Dialog.__init__(self, _("Downloading From Cameras"), None, + gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, + (gtk.STOCK_OK, gtk.RESPONSE_OK)) + + self.postChoiceCB = postChoiceCB - def addImage(self, thread_id, thumbnail, orientation, filename, fileDownloaded, isImage): - """ - Add thumbnail + primary_msg = _("Downloading directly from a camera may work poorly or not at all") + secondary_msg = _("Downloading from a card reader always works and is generally much faster. It is strongly recommended to use a card reader.") - Orientation indicates if the thumbnail needs to be rotated or not. - """ + self.set_icon_from_file(paths.share_dir('glade3/rapid-photo-downloader.svg')) + + primary_label = gtk.Label() + primary_label.set_markup("%s" % primary_msg) + primary_label.set_line_wrap(True) + primary_label.set_alignment(0, 0.5) + + secondary_label = gtk.Label() + secondary_label.set_text(secondary_msg) + secondary_label.set_line_wrap(True) + secondary_label.set_alignment(0, 0.5) + + self.show_again_checkbutton = gtk.CheckButton(_('_Show this message again'), True) + self.show_again_checkbutton.set_active(True) - if isImage: - if not thumbnail: - pixbuf = self.missingThumbnail - else: - try: - pbloader = gdk.PixbufLoader() - pbloader.write(thumbnail) - pbloader.close() - # Get the resulting pixbuf and build an image to be displayed - pixbuf = pbloader.get_pixbuf() - except: - log_dialog.addMessage(thread_id, config.WARNING, - _("Photo thumbnail could not be extracted"), filename, - _('It may be corrupted')) - pbloader = None - pixbuf = self.missingThumbnail - else: - # the file downloaded is a video, not a photo or image - # if thumbnail is passed in, it is already in pixbuf format - if thumbnail: - pixbuf = thumbnail - else: - pixbuf = self.videoThumbnail - - if not pixbuf: - # get_pixbuf() can return None if not could not render the image - log_dialog.addMessage(thread_id, config.WARNING, - _("Photo thumbnail could not be extracted"), filename, - _('It may be corrupted')) - pixbuf = self.missingThumbnail - else: - # rotate if necessary - if orientation == 8: - pixbuf = pixbuf.rotate_simple(gdk.PIXBUF_ROTATE_COUNTERCLOCKWISE) - elif orientation == 6: - pixbuf = pixbuf.rotate_simple(gdk.PIXBUF_ROTATE_CLOCKWISE) - elif orientation == 3: - pixbuf = pixbuf.rotate_simple(gdk.PIXBUF_ROTATE_UPSIDEDOWN) - - # scale to size - pixbuf = common.scale2pixbuf(MAX_THUMBNAIL_SIZE, MAX_THUMBNAIL_SIZE, pixbuf) - if not fileDownloaded: - # lighten it - self.white.composite(pixbuf, 0, 0, pixbuf.props.width, pixbuf.props.height, 0, 0, 1.0, 1.0, gtk.gdk.INTERP_HYPER, 180) + msg_vbox = gtk.VBox() + msg_vbox.pack_start(primary_label, False, False, padding=6) + msg_vbox.pack_start(secondary_label, False, False, padding=6) + msg_vbox.pack_start(self.show_again_checkbutton) + icon = parent_window.render_icon(gtk.STOCK_DIALOG_WARNING, gtk.ICON_SIZE_DIALOG) image = gtk.Image() - image.set_from_pixbuf(pixbuf) + image.set_from_pixbuf(icon) + image.set_alignment(0, 0) + + warning_hbox = gtk.HBox() + warning_hbox.pack_start(image, False, False, padding = 12) + warning_hbox.pack_start(msg_vbox, False, False, padding = 12) + + self.vbox.pack_start(warning_hbox, padding=6) + + self.set_border_width(6) + self.set_has_separator(False) + + self.set_default_response(gtk.RESPONSE_OK) + + self.set_transient_for(parent_window) + self.show_all() - self.pack_start(image, expand=False, padding=self.padding) - image.show() + self.connect('response', self.on_response) - # move viewport to display the latest image - adjustment = self.parentApp.image_scrolledwindow.get_hadjustment() - adjustment.set_value(adjustment.upper) + def on_response(self, device_dialog, response): + show_again = self.show_again_checkbutton.get_active() + self.postChoiceCB(self, show_again) - class UseDeviceDialog(gtk.Dialog): def __init__(self, parent_window, path, volume, autostart, postChoiceCB): gtk.Dialog.__init__(self, _('Device Detected'), None, @@ -2892,7 +3193,7 @@ class UseDeviceDialog(gtk.Dialog): self.postChoiceCB = postChoiceCB - self.set_icon_from_file(paths.share_dir('glade3/rapid-photo-downloader-about.png')) + self.set_icon_from_file(paths.share_dir('glade3/rapid-photo-downloader.svg')) # Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#usedeviceprompt prompt_label = gtk.Label(_('Should this device or partition be used to download photos or videos from?')) prompt_label.set_line_wrap(True) @@ -2972,7 +3273,7 @@ class RemoveAllJobCodeDialog(gtk.Dialog): gtk.STOCK_YES, gtk.RESPONSE_OK)) self.postChoiceCB = postChoiceCB - self.set_icon_from_file(paths.share_dir('glade3/rapid-photo-downloader-about.png')) + self.set_icon_from_file(paths.share_dir('glade3/rapid-photo-downloader.svg')) prompt_hbox = gtk.HBox() @@ -2999,96 +3300,1246 @@ class RemoveAllJobCodeDialog(gtk.Dialog): self.show_all() - self.connect('response', self.on_response) + self.connect('response', self.on_response) + + def on_response(self, device_dialog, response): + userSelected = response == gtk.RESPONSE_OK + self.postChoiceCB(self, userSelected) + + +class JobCodeDialog(gtk.Dialog): + """ Dialog prompting for a job code""" + + def __init__(self, parent_window, job_codes, default_job_code, postJobCodeEntryCB, autoStart, downloadSelected, entryOnly): + # Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode + gtk.Dialog.__init__(self, _('Enter a Job Code'), None, + gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, + (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, + gtk.STOCK_OK, gtk.RESPONSE_OK)) + + + self.set_icon_from_file(paths.share_dir('glade3/rapid-photo-downloader.svg')) + self.postJobCodeEntryCB = postJobCodeEntryCB + self.autoStart = autoStart + self.downloadSelected = downloadSelected + + self.combobox = gtk.combo_box_entry_new_text() + for text in job_codes: + self.combobox.append_text(text) + + self.job_code_hbox = gtk.HBox(homogeneous = False) + + if len(job_codes) and not entryOnly: + # Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode + task_label = gtk.Label(_('Enter a new Job Code, or select a previous one')) + else: + # Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode + task_label = gtk.Label(_('Enter a new Job Code')) + task_label.set_line_wrap(True) + task_hbox = gtk.HBox() + task_hbox.pack_start(task_label, False, False, padding=6) + + label = gtk.Label(_('Job Code:')) + self.job_code_hbox.pack_start(label, False, False, padding=6) + self.job_code_hbox.pack_start(self.combobox, True, True, padding=6) + + self.set_border_width(6) + self.set_has_separator(False) + + # make entry box have entry completion + self.entry = self.combobox.child + + completion = gtk.EntryCompletion() + completion.set_match_func(self.match_func) + completion.connect("match-selected", + self.on_completion_match) + completion.set_model(self.combobox.get_model()) + completion.set_text_column(0) + self.entry.set_completion(completion) + + # when user hits enter, close the dialog window + self.set_default_response(gtk.RESPONSE_OK) + self.entry.set_activates_default(True) + + if default_job_code: + self.entry.set_text(default_job_code) + + self.vbox.pack_start(task_hbox, False, False, padding = 6) + self.vbox.pack_start(self.job_code_hbox, False, False, padding=12) + + self.set_transient_for(parent_window) + self.show_all() + self.connect('response', self.on_job_code_resp) + + def match_func(self, completion, key, iter): + model = completion.get_model() + return model[iter][0].lower().startswith(self.entry.get_text().lower()) + + def on_completion_match(self, completion, model, iter): + self.entry.set_text(model[iter][0]) + self.entry.set_position(-1) + + def get_job_code(self): + return self.combobox.child.get_text() + + def on_job_code_resp(self, jc_dialog, response): + userChoseCode = False + if response == gtk.RESPONSE_OK: + userChoseCode = True + cmd_line(_("Job Code entered")) + else: + cmd_line(_("Job Code not entered")) + self.postJobCodeEntryCB(self, userChoseCode, self.get_job_code(), self.autoStart, self.downloadSelected) + + + +class SelectionTreeView(gtk.TreeView): + """ + TreeView display of photos and videos available for download + + Assumes a threaded environment. + """ + def __init__(self, parentApp): + + self.parentApp = parentApp + self.rapidApp = parentApp.parentApp + + self.liststore = gtk.ListStore( + gtk.gdk.Pixbuf, # 0 thumbnail icon + str, # 1 name (for sorting) + int, # 2 timestamp (for sorting), float converted into an int + str, # 3 date (human readable) + int, # 4 size (for sorting) + str, # 5 size (human readable) + int, # 6 isImage (for sorting) + gtk.gdk.Pixbuf, # 7 type (photo or video) + str, # 8 job code + gobject.TYPE_PYOBJECT, # 9 mediaFile (for data) + gtk.gdk.Pixbuf, # 10 status icon + int, # 11 status (downloaded, cannot download, etc, for sorting) + str, # 12 path (on the device) + str, # 13 device + int) # 14 thread id (worker the file is associated with) + + self.selected_rows = set() + + # sort by date (unless there is a problem) + self.liststore.set_sort_column_id(2, gtk.SORT_ASCENDING) + + gtk.TreeView.__init__(self, self.liststore) + + selection = self.get_selection() + selection.set_mode(gtk.SELECTION_MULTIPLE) + selection.connect('changed', self.on_selection_changed) + + self.set_rubber_banding(True) + + # Status Column + # Indicates whether file was downloaded, or a warning or error of some kind + cell = gtk.CellRendererPixbuf() + cell.set_property("yalign", 0.5) + status_column = gtk.TreeViewColumn(_("Status"), cell, pixbuf=10) + status_column.set_sort_column_id(11) + status_column.connect('clicked', self.header_clicked) + self.append_column(status_column) + + # Type of file column i.e. photo or video (displays at user request) + cell = gtk.CellRendererPixbuf() + cell.set_property("yalign", 0.5) + self.type_column = gtk.TreeViewColumn(_("Type"), cell, pixbuf=7) + self.type_column.set_sort_column_id(6) + self.type_column.set_clickable(True) + self.type_column.connect('clicked', self.header_clicked) + self.append_column(self.type_column) + self.display_type_column(self.rapidApp.prefs.display_type_column) + + #File thumbnail column + if not DOWNLOAD_VIDEO: + title = _("Photo") + else: + title = _("File") + thumbnail_column = gtk.TreeViewColumn(title) + cellpb = gtk.CellRendererPixbuf() + if not DROP_SHADOW: + cellpb.set_fixed_size(60,50) + thumbnail_column.pack_start(cellpb, False) + thumbnail_column.set_attributes(cellpb, pixbuf=0) + thumbnail_column.set_sort_column_id(1) + thumbnail_column.set_clickable(True) + thumbnail_column.connect('clicked', self.header_clicked) + self.append_column(thumbnail_column) + + # Job code column + cell = gtk.CellRendererText() + cell.set_property("yalign", 0) + self.job_code_column = gtk.TreeViewColumn(_("Job Code"), cell, text=8) + self.job_code_column.set_sort_column_id(8) + self.job_code_column.set_resizable(True) + self.job_code_column.set_clickable(True) + self.job_code_column.connect('clicked', self.header_clicked) + self.append_column(self.job_code_column) + + # Date column + cell = gtk.CellRendererText() + cell.set_property("yalign", 0) + date_column = gtk.TreeViewColumn(_("Date"), cell, text=3) + date_column.set_sort_column_id(2) + date_column.set_resizable(True) + date_column.set_clickable(True) + date_column.connect('clicked', self.header_clicked) + self.append_column(date_column) + + # Size column (displays at user request) + cell = gtk.CellRendererText() + cell.set_property("yalign", 0) + self.size_column = gtk.TreeViewColumn(_("Size"), cell, text=5) + self.size_column.set_sort_column_id(4) + self.size_column.set_resizable(True) + self.size_column.set_clickable(True) + self.size_column.connect('clicked', self.header_clicked) + self.append_column(self.size_column) + self.display_size_column(self.rapidApp.prefs.display_size_column) + + # Device column (displays at user request) + cell = gtk.CellRendererText() + cell.set_property("yalign", 0) + self.device_column = gtk.TreeViewColumn(_("Device"), cell, text=13) + self.device_column.set_sort_column_id(13) + self.device_column.set_resizable(True) + self.device_column.set_clickable(True) + self.device_column.connect('clicked', self.header_clicked) + self.append_column(self.device_column) + self.display_device_column(self.rapidApp.prefs.display_device_column) + + # Filename column (displays at user request) + cell = gtk.CellRendererText() + cell.set_property("yalign", 0) + self.filename_column = gtk.TreeViewColumn(_("Filename"), cell, text=1) + self.filename_column.set_sort_column_id(1) + self.filename_column.set_resizable(True) + self.filename_column.set_clickable(True) + self.filename_column.connect('clicked', self.header_clicked) + self.append_column(self.filename_column) + self.display_filename_column(self.rapidApp.prefs.display_filename_column) + + # Path column (displays at user request) + cell = gtk.CellRendererText() + cell.set_property("yalign", 0) + self.path_column = gtk.TreeViewColumn(_("Path"), cell, text=12) + self.path_column.set_sort_column_id(12) + self.path_column.set_resizable(True) + self.path_column.set_clickable(True) + self.path_column.connect('clicked', self.header_clicked) + self.append_column(self.path_column) + self.display_path_column(self.rapidApp.prefs.display_path_column) + + self.show_all() + + # flag used to determine if a preview should be generated or not + # there is no point generating a preview for each photo when + # select all photos is called, for instance + self.suspend_previews = False + + self.user_has_clicked_header = False + + # icons to be displayed in status column + + self.downloaded_icon = self.render_icon('rapid-photo-downloader-downloaded', gtk.ICON_SIZE_MENU) + self.download_failed_icon = self.render_icon(gtk.STOCK_DIALOG_ERROR, gtk.ICON_SIZE_MENU) + self.error_icon = self.render_icon(gtk.STOCK_DIALOG_ERROR, gtk.ICON_SIZE_MENU) + self.warning_icon = self.render_icon(gtk.STOCK_DIALOG_WARNING, gtk.ICON_SIZE_MENU) + + self.download_pending_icon = self.render_icon('rapid-photo-downloader-download-pending', gtk.ICON_SIZE_MENU) + self.downloaded_with_warning_icon = self.render_icon('rapid-photo-downloader-downloaded-with-warning', gtk.ICON_SIZE_MENU) + self.downloaded_with_error_icon = self.render_icon('rapid-photo-downloader-downloaded-with-error', gtk.ICON_SIZE_MENU) + + # make the not yet downloaded icon a transparent square + self.not_downloaded_icon = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8, 16, 16) + self.not_downloaded_icon.fill(0xffffffff) + self.not_downloaded_icon = self.not_downloaded_icon.add_alpha(True, chr(255), chr(255), chr(255)) + # but make it be a tick in the preview pane + self.not_downloaded_icon_tick = self.render_icon(gtk.STOCK_YES, gtk.ICON_SIZE_MENU) + + #preload generic icons + self.icon_photo = gtk.gdk.pixbuf_new_from_file(paths.share_dir('glade3/photo24.png')) + self.icon_video = gtk.gdk.pixbuf_new_from_file(paths.share_dir('glade3/video24.png')) + #with shadows + self.generic_photo_with_shadow = gtk.gdk.pixbuf_new_from_file(paths.share_dir('glade3/photo_small_shadow.png')) + self.generic_video_with_shadow = gtk.gdk.pixbuf_new_from_file(paths.share_dir('glade3/video_small_shadow.png')) + + if DROP_SHADOW: + self.iconDropShadow = DropShadow(offset=(3,3), shadow = (0x34, 0x34, 0x34, 0xff), border=6) + self.previewDropShadow = DropShadow(shadow = (0x44, 0x44, 0x44, 0xff), trim_border = True) + + self.previewed_file_treerowref = None + self.icontheme = gtk.icon_theme_get_default() + + + + def get_thread(self, iter): + """ + Returns the thread associated with the liststore's iter + """ + return self.liststore.get_value(iter, 14) + + def get_status(self, iter): + """ + Returns the status associated with the liststore's iter + """ + return self.liststore.get_value(iter, 11) + + def get_mediaFile(self, iter): + """ + Returns the mediaFile associated with the liststore's iter + """ + return self.liststore.get_value(iter, 9) + + def get_is_image(self, iter): + """ + Returns the file type (is image or video) associated with the liststore's iter + """ + return self.liststore.get_value(iter, 6) + + def get_type_icon(self, iter): + """ + Returns the file type's pixbuf associated with the liststore's iter + """ + return self.liststore.get_value(iter, 7) + + def get_job_code(self, iter): + """ + Returns the job code associated with the liststore's iter + """ + return self.liststore.get_value(iter, 8) + + def get_status_icon(self, status, preview=False): + """ + Returns the correct icon, based on the status + """ + if status == STATUS_WARNING: + status_icon = self.warning_icon + elif status == STATUS_CANNOT_DOWNLOAD: + status_icon = self.error_icon + elif status == STATUS_DOWNLOADED: + status_icon = self.downloaded_icon + elif status == STATUS_NOT_DOWNLOADED: + if preview: + status_icon = self.not_downloaded_icon_tick + else: + status_icon = self.not_downloaded_icon + elif status in [STATUS_DOWNLOADED_WITH_WARNING, STATUS_BACKUP_PROBLEM]: + status_icon = self.downloaded_with_warning_icon + elif status in [STATUS_DOWNLOAD_FAILED, STATUS_DOWNLOAD_AND_BACKUP_FAILED]: + status_icon = self.downloaded_with_error_icon + elif status == STATUS_DOWNLOAD_PENDING: + status_icon = self.download_pending_icon + else: + sys.stderr.write("FIXME: unknown status: %s\n" % status) + status_icon = self.not_downloaded_icon + return status_icon + + def get_tree_row_refs(self): + """ + Returns a list of all tree row references + """ + tree_row_refs = [] + iter = self.liststore.get_iter_first() + while iter: + tree_row_refs.append(self.get_mediaFile(iter).treerowref) + iter = self.liststore.iter_next(iter) + return tree_row_refs + + def get_selected_tree_row_refs(self): + """ + Returns a list of tree row references for the selected rows + """ + tree_row_refs = [] + selection = self.get_selection() + model, pathlist = selection.get_selected_rows() + for path in pathlist: + iter = self.liststore.get_iter(path) + tree_row_refs.append(self.get_mediaFile(iter).treerowref) + return tree_row_refs + + def get_tree_row_iters(self, selected_only=False): + """ + Yields tree row iters + + If selected_only is True, then only those from the selected + rows will be returned. + + This function is essential when modifying any content + in the list store (because rows can easily be moved when their + content changes) + """ + if selected_only: + tree_row_refs = self.get_selected_tree_row_refs() + else: + tree_row_refs = self.get_tree_row_refs() + for reference in tree_row_refs: + path = reference.get_path() + yield self.liststore.get_iter(path) + + def add_file(self, mediaFile): + if mediaFile.metadata: + date = mediaFile.dateTime() + timestamp = mediaFile.metadata.timeStamp(missing=None) + if timestamp is None: + timestamp = mediaFile.modificationTime + else: + timestamp = mediaFile.modificationTime + date = datetime.datetime.fromtimestamp(timestamp) + + timestamp = int(timestamp) + + date_human_readable = date_time_human_readable(date) + name = mediaFile.name + size = mediaFile.size + thumbnail = mediaFile.thumbnail + thumbnail_icon = common.scale2pixbuf(60, 36, mediaFile.thumbnail) + if DROP_SHADOW: + if not mediaFile.genericThumbnail: + pil_image = pixbuf_to_image(thumbnail_icon) + pil_image = self.iconDropShadow.dropShadow(pil_image) + thumbnail_icon = image_to_pixbuf(pil_image) + else: + if mediaFile.isImage: + thumbnail_icon = self.generic_photo_with_shadow + else: + thumbnail_icon = self.generic_video_with_shadow + + if mediaFile.isImage: + type_icon = self.icon_photo + else: + type_icon = self.icon_video + + status_icon = self.get_status_icon(mediaFile.status) + + iter = self.liststore.append((thumbnail_icon, name, timestamp, date_human_readable, size, common.formatSizeForUser(size), mediaFile.isImage, type_icon, '', mediaFile, status_icon, mediaFile.status, mediaFile.path, mediaFile.deviceName, mediaFile.thread_id)) + + #create a reference to this row and store it in the mediaFile + path = self.liststore.get_path(iter) + mediaFile.treerowref = gtk.TreeRowReference(self.liststore, path) + + if mediaFile.status in [STATUS_CANNOT_DOWNLOAD, STATUS_WARNING]: + if not self.user_has_clicked_header: + self.liststore.set_sort_column_id(11, gtk.SORT_DESCENDING) + + def no_selected_rows_available_for_download(self): + """ + Gets the number of rows the user has selected that can actually + be downloaded, and the threads they are found in + """ + v = 0 + threads = [] + model, paths = self.get_selection().get_selected_rows() + for path in paths: + iter = self.liststore.get_iter(path) + status = self.get_status(iter) + if status in [STATUS_NOT_DOWNLOADED, STATUS_WARNING]: + v += 1 + thread = self.get_thread(iter) + if thread not in threads: + threads.append(thread) + return v, threads + + def rows_available_for_download(self): + """ + Returns true if one or more rows has their status as STATUS_NOT_DOWNLOADED or STATUS_WARNING + """ + iter = self.liststore.get_iter_first() + while iter: + status = self.get_status(iter) + if status in [STATUS_NOT_DOWNLOADED, STATUS_WARNING]: + return True + iter = self.liststore.iter_next(iter) + return False + + def update_download_selected_button(self): + """ + Updates the text on the Download Selection button, and set its sensitivity + """ + no_available_for_download = 0 + selection = self.get_selection() + model, paths = selection.get_selected_rows() + if paths: + path = paths[0] + iter = self.liststore.get_iter(path) + + #update button text + no_available_for_download, threads = self.no_selected_rows_available_for_download() + + if no_available_for_download and workers.scanComplete(threads): + self.rapidApp.download_selected_button.set_label(self.rapidApp.DOWNLOAD_SELECTED_LABEL + " (%s)" % no_available_for_download) + self.rapidApp.download_selected_button.set_sensitive(True) + else: + #nothing was selected, or nothing is available from what the user selected, or should not download right now + self.rapidApp.download_selected_button.set_label(self.rapidApp.DOWNLOAD_SELECTED_LABEL) + self.rapidApp.download_selected_button.set_sensitive(False) + + def on_selection_changed(self, selection): + """ + Update download selected button and preview the most recently + selected row in the treeview + """ + self.update_download_selected_button() + size = selection.count_selected_rows() + if size == 0: + self.selected_rows = set() + self.show_preview(None) + else: + if size <= len(self.selected_rows): + # discard everything, start over + self.selected_rows = set() + self.selection_size = size + model, paths = selection.get_selected_rows() + for path in paths: + iter = self.liststore.get_iter(path) + ref = self.get_mediaFile(iter).treerowref + + if ref not in self.selected_rows: + self.show_preview(iter) + self.selected_rows.add(ref) + + def clear_all(self, thread_id = None): + if thread_id is None: + self.liststore.clear() + self.show_preview(None) + else: + iter = self.liststore.get_iter_first() + while iter: + t = self.get_thread(iter) + if t == thread_id: + if self.previewed_file_treerowref: + mediaFile = self.get_mediaFile(iter) + if mediaFile.treerowref == self.previewed_file_treerowref: + self.show_preview(None) + self.liststore.remove(iter) + # need to start over, or else bad things happen + iter = self.liststore.get_iter_first() + else: + iter = self.liststore.iter_next(iter) + + def refreshSampleDownloadFolders(self, thread_id = None): + """ + Refreshes the download folder of every file that has not yet been downloaded + + This is useful when the user updates the preferences, and the scan has already occurred (or is occurring) + + If thread_id is specified, will only update rows with that thread + """ + for iter in self.get_tree_row_iters(): + status = self.get_status(iter) + if status in [STATUS_NOT_DOWNLOADED, STATUS_WARNING, STATUS_CANNOT_DOWNLOAD]: + regenerate = True + if thread_id is not None: + t = self.get_thread(iter) + regenerate = t == thread_id + + if regenerate: + mediaFile = self.get_mediaFile(iter) + if mediaFile.isImage: + mediaFile.downloadFolder = self.rapidApp.prefs.download_folder + else: + mediaFile.downloadFolder = self.rapidApp.prefs.video_download_folder + mediaFile.samplePath = os.path.join(mediaFile.downloadFolder, mediaFile.sampleSubfolder) + if mediaFile.treerowref == self.previewed_file_treerowref: + self.show_preview(iter) + + def _refreshNameFactories(self): + self.imageRenamePrefsFactory = rn.ImageRenamePreferences(self.rapidApp.prefs.image_rename, self, + self.rapidApp.fileSequenceLock, sequences) + self.videoRenamePrefsFactory = rn.VideoRenamePreferences(self.rapidApp.prefs.video_rename, self, + self.rapidApp.fileSequenceLock, sequences) + self.subfolderPrefsFactory = rn.SubfolderPreferences(self.rapidApp.prefs.subfolder, self) + self.videoSubfolderPrefsFactory = rn.VideoSubfolderPreferences(self.rapidApp.prefs.video_subfolder, self) + self.strip_characters = self.rapidApp.prefs.strip_characters + + + def refreshGeneratedSampleSubfolderAndName(self, thread_id = None): + """ + Refreshes the name, subfolder and status of every file that has not yet been downloaded + + This is useful when the user updates the preferences, and the scan has already occurred (or is occurring) + + If thread_id is specified, will only update rows with that thread + """ + self._setUsesJobCode() + self._refreshNameFactories() + for iter in self.get_tree_row_iters(): + status = self.get_status(iter) + if status in [STATUS_NOT_DOWNLOADED, STATUS_WARNING, STATUS_CANNOT_DOWNLOAD]: + regenerate = True + if thread_id is not None: + t = self.get_thread(iter) + regenerate = t == thread_id + + if regenerate: + mediaFile = self.get_mediaFile(iter) + self.generateSampleSubfolderAndName(mediaFile, iter) + if mediaFile.treerowref == self.previewed_file_treerowref: + self.show_preview(iter) + + def generateSampleSubfolderAndName(self, mediaFile, iter): + problem = pn.Problem() + if mediaFile.isImage: + fallback_date = None + subfolderPrefsFactory = self.subfolderPrefsFactory + renamePrefsFactory = self.imageRenamePrefsFactory + nameUsesJobCode = self.imageRenameUsesJobCode + subfolderUsesJobCode = self.imageSubfolderUsesJobCode + else: + fallback_date = mediaFile.modificationTime + subfolderPrefsFactory = self.videoSubfolderPrefsFactory + renamePrefsFactory = self.videoRenamePrefsFactory + nameUsesJobCode = self.videoRenameUsesJobCode + subfolderUsesJobCode = self.videoSubfolderUsesJobCode + + renamePrefsFactory.setJobCode(self.get_job_code(iter)) + subfolderPrefsFactory.setJobCode(self.get_job_code(iter)) + + generateSubfolderAndName(mediaFile, problem, subfolderPrefsFactory, renamePrefsFactory, + nameUsesJobCode, subfolderUsesJobCode, + self.strip_characters, fallback_date) + if self.get_status(iter) != mediaFile.status: + self.liststore.set(iter, 11, mediaFile.status) + self.liststore.set(iter, 10, self.get_status_icon(mediaFile.status)) + mediaFile.sampleStale = False + + def _setUsesJobCode(self): + self.imageRenameUsesJobCode = rn.usesJobCode(self.rapidApp.prefs.image_rename) + self.imageSubfolderUsesJobCode = rn.usesJobCode(self.rapidApp.prefs.subfolder) + self.videoRenameUsesJobCode = rn.usesJobCode(self.rapidApp.prefs.video_rename) + self.videoSubfolderUsesJobCode = rn.usesJobCode(self.rapidApp.prefs.video_subfolder) + + def show_preview(self, iter): + + def status_human_readable(mediaFile): + if mediaFile.status == STATUS_DOWNLOADED: + v = _('%(filetype)s was downloaded successfully') % {'filetype': mediaFile.displayNameCap} + elif mediaFile.status == STATUS_DOWNLOAD_FAILED: + v = _('%(filetype)s was not downloaded') % {'filetype': mediaFile.displayNameCap} + elif mediaFile.status == STATUS_DOWNLOADED_WITH_WARNING: + v = _('%(filetype)s was downloaded with warnings') % {'filetype': mediaFile.displayNameCap} + elif mediaFile.status == STATUS_BACKUP_PROBLEM: + v = _('%(filetype)s was downloaded but there were problems backing up') % {'filetype': mediaFile.displayNameCap} + elif mediaFile.status == STATUS_DOWNLOAD_AND_BACKUP_FAILED: + v = _('%(filetype)s was neither downloaded nor backed up') % {'filetype': mediaFile.displayNameCap} + elif mediaFile.status == STATUS_NOT_DOWNLOADED: + v = _('%(filetype)s is ready to be downloaded') % {'filetype': mediaFile.displayNameCap} + elif mediaFile.status == STATUS_DOWNLOAD_PENDING: + v = _('%(filetype)s is about to be downloaded') % {'filetype': mediaFile.displayNameCap} + elif mediaFile.status == STATUS_WARNING: + v = _('%(filetype)s will be downloaded with warnings')% {'filetype': mediaFile.displayNameCap} + elif mediaFile.status == STATUS_CANNOT_DOWNLOAD: + v = _('%(filetype)s cannot be downloaded') % {'filetype': mediaFile.displayNameCap} + return v + + + if not iter: + # clear everything except the label Preview at the top + for widget in [self.parentApp.preview_original_name_label, + self.parentApp.preview_name_label, + self.parentApp.preview_status_label, + self.parentApp.preview_problem_title_label, + self.parentApp.preview_problem_label]: + widget.set_text('') + + for widget in [self.parentApp.preview_image, + self.parentApp.preview_name_label, + self.parentApp.preview_original_name_label, + self.parentApp.preview_status_label, + self.parentApp.preview_problem_title_label, + self.parentApp.preview_problem_label + ]: + widget.set_tooltip_text('') + + self.parentApp.preview_image.clear() + self.parentApp.preview_status_icon.clear() + self.parentApp.preview_destination_expander.hide() + self.parentApp.preview_device_expander.hide() + self.previewed_file_treerowref = None + + + elif not self.suspend_previews: + mediaFile = self.get_mediaFile(iter) + + self.previewed_file_treerowref = mediaFile.treerowref + + thumbnail = mediaFile.thumbnail + + if DROP_SHADOW and not mediaFile.genericThumbnail: + pil_image = pixbuf_to_image(thumbnail) + pil_image = self.previewDropShadow.dropShadow(pil_image) + thumbnail = image_to_pixbuf(pil_image) + + self.parentApp.preview_image.set_from_pixbuf(thumbnail) + + image_tool_tip = "%s\n%s" % (date_time_human_readable(mediaFile.dateTime(), False), common.formatSizeForUser(mediaFile.size)) + self.parentApp.preview_image.set_tooltip_text(image_tool_tip) + + if mediaFile.sampleStale and mediaFile.status in [STATUS_NOT_DOWNLOADED, STATUS_WARNING]: + self._refreshNameFactories() + self._setUsesJobCode() + self.generateSampleSubfolderAndName(mediaFile, iter) + + self.parentApp.preview_original_name_label.set_text(mediaFile.name) + self.parentApp.preview_original_name_label.set_tooltip_text(mediaFile.name) + if mediaFile.volume: + pixbuf = mediaFile.volume.get_icon_pixbuf(16) + else: + pixbuf = self.icontheme.load_icon('gtk-harddisk', 16, gtk.ICON_LOOKUP_USE_BUILTIN) + self.parentApp.preview_device_image.set_from_pixbuf(pixbuf) + self.parentApp.preview_device_label.set_text(mediaFile.deviceName) + self.parentApp.preview_device_path_label.set_text(mediaFile.path) + self.parentApp.preview_device_path_label.set_tooltip_text(mediaFile.path) + + if using_gio: + folder = gio.File(mediaFile.downloadFolder) + fileInfo = folder.query_info(gio.FILE_ATTRIBUTE_STANDARD_ICON) + icon = fileInfo.get_icon() + pixbuf = common.get_icon_pixbuf(using_gio, icon, 16, fallback='folder') + else: + pixbuf = self.icontheme.load_icon('folder', 16, gtk.ICON_LOOKUP_USE_BUILTIN) + + self.parentApp.preview_destination_image.set_from_pixbuf(pixbuf) + downloadFolderName = os.path.split(mediaFile.downloadFolder)[1] + self.parentApp.preview_destination_label.set_text(downloadFolderName) + + if mediaFile.status in [STATUS_WARNING, STATUS_CANNOT_DOWNLOAD, STATUS_NOT_DOWNLOADED, STATUS_DOWNLOAD_PENDING]: + + self.parentApp.preview_name_label.set_text(mediaFile.sampleName) + self.parentApp.preview_name_label.set_tooltip_text(mediaFile.sampleName) + self.parentApp.preview_destination_path_label.set_text(mediaFile.samplePath) + self.parentApp.preview_destination_path_label.set_tooltip_text(mediaFile.samplePath) + else: + self.parentApp.preview_name_label.set_text(mediaFile.downloadName) + self.parentApp.preview_name_label.set_tooltip_text(mediaFile.downloadName) + self.parentApp.preview_destination_path_label.set_text(mediaFile.downloadPath) + self.parentApp.preview_destination_path_label.set_tooltip_text(mediaFile.downloadPath) + + status_text = status_human_readable(mediaFile) + self.parentApp.preview_status_icon.set_from_pixbuf(self.get_status_icon(mediaFile.status, preview=True)) + self.parentApp.preview_status_label.set_markup('' + status_text + '') + self.parentApp.preview_status_label.set_tooltip_text(status_text) + + + if mediaFile.status in [STATUS_WARNING, STATUS_DOWNLOAD_FAILED, + STATUS_DOWNLOADED_WITH_WARNING, + STATUS_CANNOT_DOWNLOAD, + STATUS_BACKUP_PROBLEM, + STATUS_DOWNLOAD_AND_BACKUP_FAILED]: + problem_title = mediaFile.problem.get_title() + self.parentApp.preview_problem_title_label.set_markup('' + problem_title + '') + self.parentApp.preview_problem_title_label.set_tooltip_text(problem_title) + + problem_text = mediaFile.problem.get_problems() + self.parentApp.preview_problem_label.set_text(problem_text) + self.parentApp.preview_problem_label.set_tooltip_text(problem_text) + else: + self.parentApp.preview_problem_label.set_markup('') + self.parentApp.preview_problem_title_label.set_markup('') + for widget in [self.parentApp.preview_problem_title_label, + self.parentApp.preview_problem_label + ]: + widget.set_tooltip_text('') + + if self.rapidApp.prefs.display_preview_folders: + self.parentApp.preview_destination_expander.show() + self.parentApp.preview_device_expander.show() + + + def select_rows(self, range): + selection = self.get_selection() + if range == 'all': + selection.select_all() + elif range == 'none': + selection.unselect_all() + else: + # User chose to select all photos or all videos, + # or select all files with or without job codes. + + # Temporarily suspend previews while a large number of rows + # are being selected / unselected + self.suspend_previews = True + + iter = self.liststore.get_iter_first() + while iter is not None: + if range in ['photos', 'videos']: + type = self.get_is_image(iter) + select_row = (type and range == 'photos') or (not type and range == 'videos') + else: + job_code = self.get_job_code(iter) + select_row = (job_code and range == 'withjobcode') or (not job_code and range == 'withoutjobcode') + + if select_row: + selection.select_iter(iter) + else: + selection.unselect_iter(iter) + iter = self.liststore.iter_next(iter) + + self.suspend_previews = False + # select the first photo / video + iter = self.liststore.get_iter_first() + while iter is not None: + type = self.get_is_image(iter) + if (type and range == 'photos') or (not type and range == 'videos'): + self.show_preview(iter) + break + iter = self.liststore.iter_next(iter) + + + def header_clicked(self, column): + self.user_has_clicked_header = True + + def display_filename_column(self, display): + """ + if display is true, the column will be shown + otherwise, it will not be shown + """ + self.filename_column.set_visible(display) + + def display_size_column(self, display): + self.size_column.set_visible(display) + + def display_type_column(self, display): + if not DOWNLOAD_VIDEO: + self.type_column.set_visible(False) + else: + self.type_column.set_visible(display) + + def display_path_column(self, display): + self.path_column.set_visible(display) + + def display_device_column(self, display): + self.device_column.set_visible(display) + + def apply_job_code(self, job_code, overwrite=True, to_all_rows=False, thread_id=None): + """ + Applies the Job code to the selected rows, or all rows if to_all_rows is True. + + If overwrite is True, then it will overwrite any existing job code. + """ + + def _apply_job_code(): + status = self.get_status(iter) + if status in [STATUS_DOWNLOAD_PENDING, STATUS_WARNING, STATUS_NOT_DOWNLOADED]: + + if mediaFile.isImage: + apply = rn.usesJobCode(self.rapidApp.prefs.image_rename) or rn.usesJobCode(self.rapidApp.prefs.subfolder) + else: + apply = rn.usesJobCode(self.rapidApp.prefs.video_rename) or rn.usesJobCode(self.rapidApp.prefs.video_subfolder) + if apply: + if overwrite: + self.liststore.set(iter, 8, job_code) + mediaFile.jobcode = job_code + mediaFile.sampleStale = True + else: + if not self.get_job_code(iter): + self.liststore.set(iter, 8, job_code) + mediaFile.jobcode = job_code + mediaFile.sampleStale = True + else: + pass + #if they got an existing job code, may as well keep it there in case the user + #reactivates job codes again in their prefs + + if to_all_rows or thread_id is not None: + for iter in self.get_tree_row_iters(): + apply = True + if thread_id is not None: + t = self.get_thread(iter) + apply = t == thread_id + + if apply: + mediaFile = self.get_mediaFile(iter) + _apply_job_code() + if mediaFile.treerowref == self.previewed_file_treerowref: + self.show_preview(iter) + else: + for iter in self.get_tree_row_iters(selected_only = True): + mediaFile = self.get_mediaFile(iter) + _apply_job_code() + if mediaFile.treerowref == self.previewed_file_treerowref: + self.show_preview(iter) + + def job_code_missing(self, selected_only): + """ + Returns True if any of the pending downloads do not have a + job code assigned. + + If selected_only is True, will only check in rows that the + user has selected. + """ + + def _job_code_missing(iter): + status = self.get_status(iter) + if status in [STATUS_WARNING, STATUS_NOT_DOWNLOADED]: + is_image = self.get_is_image(iter) + job_code = self.get_job_code(iter) + return needAJobCode.needAJobCode(job_code, is_image) + return False + + self._setUsesJobCode() + needAJobCode = NeedAJobCode(self.rapidApp.prefs) + + v = False + if selected_only: + selection = self.get_selection() + model, pathlist = selection.get_selected_rows() + for path in pathlist: + iter = self.liststore.get_iter(path) + v = _job_code_missing(iter) + if v: + break + else: + iter = self.liststore.get_iter_first() + while iter: + v = _job_code_missing(iter) + if v: + break + iter = self.liststore.iter_next(iter) + return v + + + def _set_download_pending(self, iter, threads): + existing_status = self.get_status(iter) + if existing_status in [STATUS_WARNING, STATUS_NOT_DOWNLOADED]: + self.liststore.set(iter, 11, STATUS_DOWNLOAD_PENDING) + self.liststore.set(iter, 10, self.download_pending_icon) + # this value is in a thread's list of files to download + mediaFile = self.get_mediaFile(iter) + # each thread will see this change in status + mediaFile.status = STATUS_DOWNLOAD_PENDING + thread = self.get_thread(iter) + if thread not in threads: + threads.append(thread) + + def set_status_to_download_pending(self, selected_only, thread_id=None): + """ + Sets status of files to be download pending, if they are waiting to be downloaded + if selected_only is true, only applies to selected rows + + If thread_id is not None, then after the statuses have been set, + the thread will be restarted (this is intended for the cases + where this method is called from a thread and auto start is True) + + Returns a list of threads which can be downloaded + """ + threads = [] + + if selected_only: + for iter in self.get_tree_row_iters(selected_only = True): + self._set_download_pending(iter, threads) + else: + for iter in self.get_tree_row_iters(): + apply = True + if thread_id is not None: + t = self.get_thread(iter) + apply = t == thread_id + if apply: + self._set_download_pending(iter, threads) + + if thread_id is not None: + # restart the thread + workers[thread_id].startStop() + return threads + + def update_status_post_download(self, treerowref): + path = treerowref.get_path() + if not path: + sys.stderr.write("FIXME: SelectionTreeView treerowref no longer refers to valid row\n") + else: + iter = self.liststore.get_iter(path) + mediaFile = self.get_mediaFile(iter) + status = mediaFile.status + self.liststore.set(iter, 11, status) + self.liststore.set(iter, 10, self.get_status_icon(status)) + + # If this row is currently previewed, then should update the preview + if mediaFile.treerowref == self.previewed_file_treerowref: + self.show_preview(iter) + + +class SelectionVBox(gtk.VBox): + """ + Dialog from which the user can select photos and videos to download + """ + + + def __init__(self, parentApp): + """ + Initialize values for log dialog, but do not display. + """ + + gtk.VBox.__init__(self) + self.parentApp = parentApp + + selection_scrolledwindow = gtk.ScrolledWindow() + selection_scrolledwindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) + selection_viewport = gtk.Viewport() - def on_response(self, device_dialog, response): - userSelected = response == gtk.RESPONSE_OK - self.postChoiceCB(self, userSelected) + self.selection_treeview = SelectionTreeView(self) -class JobCodeDialog(gtk.Dialog): - """ Dialog prompting for a job code""" - - def __init__(self, parent_window, job_codes, default_job_code, postJobCodeEntryCB, autoStart, entryOnly): - # Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode - gtk.Dialog.__init__(self, _('Enter a Job Code'), None, - gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, - (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, - gtk.STOCK_OK, gtk.RESPONSE_OK)) - + selection_scrolledwindow.add(self.selection_treeview) + + + # Job code controls + self.add_job_code_combo() + left_pane_vbox = gtk.VBox(spacing = 12) + left_pane_vbox.pack_start(selection_scrolledwindow, True, True) + left_pane_vbox.pack_start(self.job_code_hbox, False, True) + + # Window sizes + #selection_scrolledwindow.set_size_request(350, -1) - self.set_icon_from_file(paths.share_dir('glade3/rapid-photo-downloader-about.png')) - self.postJobCodeEntryCB = postJobCodeEntryCB - self.autoStart = autoStart - self.combobox = gtk.combo_box_entry_new_text() - for text in job_codes: - self.combobox.append_text(text) - - self.job_code_hbox = gtk.HBox(homogeneous = False) + #Preview pane - if len(job_codes) and not entryOnly: - # Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode - task_label = gtk.Label(_('Enter a new job code, or select a previous one.')) + #Preview title + self.preview_title_label = gtk.Label() + self.preview_title_label.set_markup("%s" % _("Preview")) + self.preview_title_label.set_alignment(0, 0.5) + self.preview_title_label.set_padding(12, 0) + + #Preview image + self.preview_image = gtk.Image() + self.preview_image.set_alignment(0, 0.5) + #leave room for thumbnail shadow + if DROP_SHADOW: + shadow_size = 21 else: - # Translators: for an explanation of what this means, see http://damonlynch.net/rapid/documentation/index.html#jobcode - task_label = gtk.Label(_('Enter a new job code.')) - task_label.set_line_wrap(True) - task_hbox = gtk.HBox() - task_hbox.pack_start(task_label, False, False, padding=6) - - label = gtk.Label(_('Job Code:')) - self.job_code_hbox.pack_start(label, False, False, padding=6) - self.job_code_hbox.pack_start(self.combobox, True, True, padding=6) + shadow_size = 0 + self.preview_image.set_size_request(MAX_THUMBNAIL_SIZE + shadow_size, MAX_THUMBNAIL_SIZE + shadow_size) + + #labels to display file information + + #Original filename + self.preview_original_name_label = gtk.Label() + self.preview_original_name_label.set_alignment(0, 0.5) + self.preview_original_name_label.set_ellipsize(pango.ELLIPSIZE_END) + + #Device (where it will be downloaded to) + self.preview_device_expander = gtk.Expander() + self.preview_device_label = gtk.Label() + self.preview_device_label.set_alignment(0, 0.5) + self.preview_device_image = gtk.Image() + + self.preview_device_path_label = gtk.Label() + self.preview_device_path_label.set_alignment(0, 0.5) + self.preview_device_path_label.set_ellipsize(pango.ELLIPSIZE_MIDDLE) + self.preview_device_path_label.set_padding(30, 0) + self.preview_device_expander.add(self.preview_device_path_label) + + device_hbox = gtk.HBox(False, spacing = 6) + device_hbox.pack_start(self.preview_device_image) + device_hbox.pack_start(self.preview_device_label, True, True) + + self.preview_device_expander.set_label_widget(device_hbox) + + #Filename that has been generated (path in tooltip) + self.preview_name_label = gtk.Label() + self.preview_name_label.set_alignment(0, 0.5) + self.preview_name_label.set_ellipsize(pango.ELLIPSIZE_END) + + #Download destination + self.preview_destination_expander = gtk.Expander() + self.preview_destination_label = gtk.Label() + self.preview_destination_label.set_alignment(0, 0.5) + self.preview_destination_image = gtk.Image() + + self.preview_destination_path_label = gtk.Label() + self.preview_destination_path_label.set_alignment(0, 0.5) + self.preview_destination_path_label.set_ellipsize(pango.ELLIPSIZE_MIDDLE) + self.preview_destination_path_label.set_padding(30, 0) + self.preview_destination_expander.add(self.preview_destination_path_label) + + destination_hbox = gtk.HBox(False, spacing = 6) + destination_hbox.pack_start(self.preview_destination_image) + destination_hbox.pack_start(self.preview_destination_label, True, True) + + self.preview_destination_expander.set_label_widget(destination_hbox) + + + #Status of the file + + self.preview_status_icon = gtk.Image() + self.preview_status_icon.set_size_request(16,16) + + self.preview_status_label = gtk.Label() + self.preview_status_label.set_alignment(0, 0.5) + self.preview_status_label.set_ellipsize(pango.ELLIPSIZE_END) + self.preview_status_label.set_padding(12, 0) + + #Title of problems encountered in generating the name / subfolder + self.preview_problem_title_label = gtk.Label() + self.preview_problem_title_label.set_alignment(0, 0.5) + self.preview_problem_title_label.set_ellipsize(pango.ELLIPSIZE_END) + self.preview_problem_title_label.set_padding(12, 0) + + #Details of what the problem(s) are + self.preview_problem_label = gtk.Label() + self.preview_problem_label.set_alignment(0, 0) + self.preview_problem_label.set_line_wrap(True) + self.preview_problem_label.set_padding(12, 0) + #Can't combine wrapping and ellipsize, sadly + #self.preview_problem_label.set_ellipsize(pango.ELLIPSIZE_END) + + #Put content into table + # Use a table so we can do the Gnome HIG layout more easily + self.preview_table = gtk.Table(10, 4) + self.preview_table.set_row_spacings(12) + left_spacer = gtk.Label('') + left_spacer.set_padding(12, 0) + right_spacer = gtk.Label('') + right_spacer.set_padding(6, 0) - self.set_border_width(6) - self.set_has_separator(False) - # make entry box have entry completion - self.entry = self.combobox.child + spacer2 = gtk.Label('') - completion = gtk.EntryCompletion() - completion.set_match_func(self.match_func) - completion.connect("match-selected", - self.on_completion_match) - completion.set_model(self.combobox.get_model()) - completion.set_text_column(0) - self.entry.set_completion(completion) + self.preview_table.attach(left_spacer, 0, 1, 1, 2, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK) + self.preview_table.attach(right_spacer, 3, 4, 1, 2, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK) + + self.preview_table.attach(self.preview_title_label, 0, 3, 0, 1, yoptions=gtk.SHRINK) + self.preview_table.attach(self.preview_image, 1, 3, 1, 2, yoptions=gtk.SHRINK) - # when user hits enter, close the dialog window - self.set_default_response(gtk.RESPONSE_OK) - self.entry.set_activates_default(True) + self.preview_table.attach(self.preview_original_name_label, 1, 3, 2, 3, xoptions=gtk.EXPAND|gtk.FILL, yoptions=gtk.SHRINK) + self.preview_table.attach(self.preview_device_expander, 1, 3, 3, 4, xoptions=gtk.EXPAND|gtk.FILL, yoptions=gtk.SHRINK) + + self.preview_table.attach(self.preview_name_label, 1, 3, 5, 6, xoptions=gtk.EXPAND|gtk.FILL, yoptions=gtk.SHRINK) + self.preview_table.attach(self.preview_destination_expander, 1, 3, 6, 7, xoptions=gtk.EXPAND|gtk.FILL, yoptions=gtk.SHRINK) - if default_job_code: - self.entry.set_text(default_job_code) + self.preview_table.attach(spacer2, 0, 7, 7, 8, yoptions=gtk.SHRINK) - self.vbox.pack_start(task_hbox, False, False, padding = 6) - self.vbox.pack_start(self.job_code_hbox, False, False, padding=12) + self.preview_table.attach(self.preview_status_icon, 1, 2, 8, 9, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK) + self.preview_table.attach(self.preview_status_label, 2, 3, 8, 9, yoptions=gtk.SHRINK) - self.set_transient_for(parent_window) + self.preview_table.attach(self.preview_problem_title_label, 2, 3, 9, 10, yoptions=gtk.SHRINK) + self.preview_table.attach(self.preview_problem_label, 2, 4, 10, 11, xoptions=gtk.EXPAND|gtk.FILL, yoptions=gtk.EXPAND|gtk.FILL) + + self.file_hpaned = gtk.HPaned() + self.file_hpaned.pack1(left_pane_vbox, shrink=False) + #self.file_hpaned.pack2(self.preview_vbox, shrink=False) + self.file_hpaned.pack2(self.preview_table, resize=True, shrink=False) + self.pack_start(self.file_hpaned, True, True) + if self.parentApp.prefs.hpaned_pos > 0: + self.file_hpaned.set_position(self.parentApp.prefs.hpaned_pos) + else: + # this is what the user will see the first time they run the app + self.file_hpaned.set_position(300) + self.show_all() - self.connect('response', self.on_job_code_resp) - - def match_func(self, completion, key, iter): - model = completion.get_model() - return model[iter][0].startswith(self.entry.get_text()) - - def on_completion_match(self, completion, model, iter): - self.entry.set_text(model[iter][0]) - self.entry.set_position(-1) + + + def set_display_preview_folders(self, value): + if value and self.selection_treeview.previewed_file_treerowref: + self.preview_destination_expander.show() + self.preview_device_expander.show() - def get_job_code(self): - return self.combobox.child.get_text() + else: + self.preview_destination_expander.hide() + self.preview_device_expander.hide() + + def set_job_code_display(self): + """ + Shows or hides the job code entry - def on_job_code_resp(self, jc_dialog, response): - userChoseCode = False - if response == gtk.RESPONSE_OK: - userChoseCode = True - cmd_line(_("Job Code entered")) + If user is not using job codes in their file or subfolder names + then do not prompt for it + """ + + if self.parentApp.needJobCodeForRenaming(): + self.job_code_hbox.show() + self.job_code_label.show() + self.job_code_combo.show() + self.selection_treeview.job_code_column.set_visible(True) else: - cmd_line(_("Job Code not entered")) - self.postJobCodeEntryCB(self, userChoseCode, self.get_job_code(), self.autoStart) + self.job_code_hbox.hide() + self.job_code_label.hide() + self.job_code_combo.hide() + self.selection_treeview.job_code_column.set_visible(False) + + def update_job_code_combo(self): + # delete existing rows + while len(self.job_code_combo.get_model()) > 0: + self.job_code_combo.remove_text(0) + # add new ones + for text in self.parentApp.prefs.job_codes: + self.job_code_combo.append_text(text) + # clear existing entry displayed in entry box + self.job_code_entry.set_text('') + + + + + def add_job_code_combo(self): + self.job_code_hbox = gtk.HBox(spacing = 12) + self.job_code_hbox.set_no_show_all(True) + self.job_code_label = gtk.Label(_("Job Code:")) + + self.job_code_combo = gtk.combo_box_entry_new_text() + for text in self.parentApp.prefs.job_codes: + self.job_code_combo.append_text(text) + + # make entry box have entry completion + self.job_code_entry = self.job_code_combo.child + + self.completion = gtk.EntryCompletion() + self.completion.set_match_func(self.job_code_match_func) + self.completion.connect("match-selected", + self.on_job_code_combo_completion_match) + self.completion.set_model(self.job_code_combo.get_model()) + self.completion.set_text_column(0) + self.job_code_entry.set_completion(self.completion) + + + self.job_code_combo.connect('changed', self.on_job_code_resp) + + self.job_code_entry.connect('activate', self.on_job_code_entry_resp) + + self.job_code_combo.set_tooltip_text(_("Enter a new Job Code and press Enter, or select an existing Job Code")) + + #add widgets + self.job_code_hbox.pack_start(self.job_code_label, False, False) + self.job_code_hbox.pack_start(self.job_code_combo, True, True) + self.set_job_code_display() + def job_code_match_func(self, completion, key, iter): + model = completion.get_model() + return model[iter][0].lower().startswith(self.job_code_entry.get_text().lower()) + + def on_job_code_combo_completion_match(self, completion, model, iter): + self.job_code_entry.set_text(model[iter][0]) + self.job_code_entry.set_position(-1) + + def on_job_code_resp(self, widget): + """ + When the user has clicked on an existing job code + """ + + # ignore changes because the user is typing in a new value + if widget.get_active() >= 0: + self.job_code_chosen(widget.get_active_text()) + + def on_job_code_entry_resp(self, widget): + """ + When the user has hit enter after entering a new job code + """ + self.job_code_chosen(widget.get_text()) + + def job_code_chosen(self, job_code): + """ + The user has selected a Job code, apply it to selected images. + """ + self.selection_treeview.apply_job_code(job_code, overwrite = True) + self.completion.set_model(None) + self.parentApp.assignJobCode(job_code) + self.completion.set_model(self.job_code_combo.get_model()) + + def add_file(self, mediaFile): + self.selection_treeview.add_file(mediaFile) + class LogDialog(gnomeglade.Component): """ @@ -3167,8 +4618,7 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): gladefile = paths.share_dir(config.GLADE_FILE) gnomeglade.GnomeApp.__init__(self, "rapid", __version__, gladefile, "rapidapp") - - + # notifications self.displayDownloadSummaryNotification = False self.initPyNotify() @@ -3182,8 +4632,25 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): # sys.exit(0) + # remember the window size from the last time the program was run + if self.prefs.main_window_maximized: + self.rapidapp.maximize() + elif self.prefs.main_window_size_x > 0: + self.rapidapp.set_default_size(self.prefs.main_window_size_x, self.prefs.main_window_size_y) + else: + # set a default size + self.rapidapp.set_default_size(650, 650) + self.widget.show() + self._setupIcons() + + # this must come after the window is shown + if self.prefs.vpaned_pos > 0: + self.main_vpaned.set_position(self.prefs.vpaned_pos) + else: + self.main_vpaned.set_position(66) + self.checkIfFirstTimeProgramEverRun() displayPreferences = self.checkForUpgrade(__version__) @@ -3202,8 +4669,7 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): displayPreferences = not self.checkPreferencesOnStartup() # display download information using threads - global media_collection_treeview, thumbnail_hbox, log_dialog - global download_queue, image_queue, log_queue + global media_collection_treeview, log_dialog global workers #track files that should have a suffix added to them @@ -3216,13 +4682,13 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): global sequences # whether we need to prompt for a job code - global need_job_code + global need_job_code_for_renaming duplicate_files = {} downloaded_files = DownloadedFiles() downloadsToday = self.prefs.getAndMaybeResetDownloadsToday() - sequences = rn.Sequences(downloadsToday, self.prefs.stored_sequence_no) + sequences = rn.Sequences(downloadsToday, self.prefs.stored_sequence_no) self.downloadStats = DownloadStats() @@ -3247,7 +4713,21 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): # flag to indicate whether the user changed some preferences that # indicate the image and backup devices should be setup again - self.rerunSetupAvailableImageAndBackupMedia = False + self.rerunSetupAvailableImageAndVideoMedia = False + self.rerunSetupAvailableBackupMedia = False + + # flag to indicate the user changes some preferences and the display + # of sample names and subfolders needs to be refreshed + self.refreshGeneratedSampleSubfolderAndName = False + + # counter to indicate how many threads need their sample names and subfolders regenerated because the user + # changes their prefs at the same time as devices were being scanned + self.noAfterScanRefreshGeneratedSampleSubfolderAndName = 0 + + # flag to indicate the user changes some preferences and the display + # of sample download folders needs to be refreshed + self.refreshSampleDownloadFolder = False + self.noAfterScanRefreshSampleDownloadFolders = 0 # flag to indicate that the preferences dialog window is being # displayed to the user @@ -3258,15 +4738,16 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): self.media_collection_vbox.pack_start(media_collection_treeview) - #thumbnail display - thumbnail_hbox = ThumbnailHBox(self) - self.image_viewport.add(thumbnail_hbox) - self.image_viewport.modify_bg(gtk.STATE_NORMAL, gdk.color_parse("white")) - self.set_display_thumbnails(self.prefs.display_thumbnails) + #Selection display + self.selection_vbox = SelectionVBox(self) + self.selection_hbox.pack_start(self.selection_vbox, padding=12) + self.set_display_selection(self.prefs.display_selection) + self.set_display_preview_folders(self.prefs.display_preview_folders) self.backupVolumes = {} - self._setupDownloadbutton() + #Help button and download buttons + self._setupDownloadbuttons() #status bar progress bar self.download_progressbar = gtk.ProgressBar() @@ -3278,11 +4759,28 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): # menus - self.menu_display_thumbnails.set_active(self.prefs.display_thumbnails) + #preview panes + self.menu_display_selection.set_active(self.prefs.display_selection) + self.menu_preview_folders.set_active(self.prefs.display_preview_folders) + + #preview columns in pane + if not DOWNLOAD_VIDEO: + self.menu_type_column.set_active(False) + self.menu_type_column.set_sensitive(False) + else: + self.menu_type_column.set_active(self.prefs.display_type_column) + self.menu_size_column.set_active(self.prefs.display_size_column) + self.menu_filename_column.set_active(self.prefs.display_filename_column) + self.menu_device_column.set_active(self.prefs.display_device_column) + self.menu_path_column.set_active(self.prefs.display_path_column) + self.menu_clear.set_sensitive(False) + + need_job_code_for_renaming = self.needJobCodeForRenaming() + self.menu_select_all_without_job_code.set_sensitive(need_job_code_for_renaming) + self.menu_select_all_with_job_code.set_sensitive(need_job_code_for_renaming) #job code initialization - need_job_code = self.needJobCode() self.last_chosen_job_code = None self.prompting_for_job_code = False @@ -3300,8 +4798,12 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): #adjust viewport size for displaying media #this is important because the code in MediaTreeView.addCard() is inaccurate at program startup - height = self.media_collection_viewport.size_request()[1] - self.media_collection_scrolledwindow.set_size_request(-1, height) + if media_collection_treeview.mapThreadToRow: + height = self.media_collection_viewport.size_request()[1] + self.media_collection_scrolledwindow.set_size_request(-1, height) + else: + # don't allow the media collection to be absolutely empty + self.media_collection_scrolledwindow.set_size_request(-1, 47) self.download_button.grab_default() # for some reason, the grab focus command is not working... unsure why @@ -3342,7 +4844,17 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): self.prefs.video_download_folder = f + def _setupIcons(self): + icons = ['rapid-photo-downloader-downloaded', + 'rapid-photo-downloader-downloaded-with-error', + 'rapid-photo-downloader-downloaded-with-warning', + 'rapid-photo-downloader-download-pending', + 'rapid-photo-downloader-jobcode'] + icon_list = [(icon, paths.share_dir('glade3/%s.svg' % icon)) for icon in icons] + common.register_iconsets(icon_list) + + def checkImageDevicePathOnStartup(self): msg = None if not os.path.isdir(self.prefs.device_location): @@ -3403,7 +4915,7 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): sys.stderr.write(msg +'\n') return prefsOk - def needJobCode(self): + def needJobCodeForRenaming(self): return rn.usesJobCode(self.prefs.image_rename) or rn.usesJobCode(self.prefs.subfolder) or rn.usesJobCode(self.prefs.video_rename) or rn.usesJobCode(self.prefs.video_subfolder) def assignJobCode(self, code): @@ -3429,6 +4941,15 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): self.prefs.job_codes = [code] + jcs + def getShowWarningDownloadingFromCamera(self): + if self.prefs.show_warning_downloading_from_camera: + cmd_line(_("Displaying warning about downloading directly from camera")) + d = ShowWarningDialog(self.widget, self.gotShowWarningDownloadingFromCamera) + + def gotShowWarningDownloadingFromCamera(self, dialog, showWarningAgain): + dialog.destroy() + self.prefs.show_warning_downloading_from_camera = showWarningAgain + def getUseDevice(self, path, volume, autostart): """ Prompt user whether or not to download from this device """ @@ -3455,40 +4976,73 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): else: self.prefs.device_blacklist = [path] - def _getJobCode(self, postJobCodeEntryCB, autoStart): + def _getJobCode(self, postJobCodeEntryCB, autoStart, downloadSelected): """ prompt for a job code """ - if not self.prompting_for_job_code: cmd_line(_("Prompting for Job Code")) self.prompting_for_job_code = True - j = JobCodeDialog(self.widget, self.prefs.job_codes, self.last_chosen_job_code, postJobCodeEntryCB, autoStart, False) + j = JobCodeDialog(self.widget, self.prefs.job_codes, self.last_chosen_job_code, postJobCodeEntryCB, autoStart, downloadSelected, False) else: cmd_line(_("Already prompting for Job Code, do not prompt again")) - def getJobCode(self, autoStart=True): - """ called from the copyphotos thread""" + def getJobCode(self, autoStart=True, downloadSelected=False): + """ called from the copyphotos thread, or when the user clicks one of the two download buttons""" - self._getJobCode(self.gotJobCode, autoStart) + self._getJobCode(self.gotJobCode, autoStart, downloadSelected) - def gotJobCode(self, dialog, userChoseCode, code, autoStart): + def gotJobCode(self, dialog, userChoseCode, code, autoStart, downloadSelected): dialog.destroy() self.prompting_for_job_code = False if userChoseCode: self.assignJobCode(code) self.last_chosen_job_code = code - if autoStart: + self.selection_vbox.selection_treeview.apply_job_code(code, overwrite=False, to_all_rows = not downloadSelected) + threads = self.selection_vbox.selection_treeview.set_status_to_download_pending(selected_only = downloadSelected) + if downloadSelected or not autoStart: + cmd_line(_("Starting downloads")) + self.startDownload(threads) + else: + # autostart is true cmd_line(_("Starting downloads that have been waiting for a Job Code")) for w in workers.getWaitingForJobCodeWorkers(): w.startStop() - else: - cmd_line(_("Starting downloads")) - self.startDownload() - - # FIXME: what happens to these workers that are waiting? How will the user start their download? - # check if need to add code to start button + else: + # user cancelled + for w in workers.getWaitingForJobCodeWorkers(): + w.waitingForJobCode = False + + if autoStart: + for w in workers.getAutoStartWorkers(): + w.autoStart = False + + def addFile(self, mediaFile): + self.selection_vbox.add_file(mediaFile) + + def update_status_post_download(self, treerowref): + self.selection_vbox.selection_treeview.update_status_post_download(treerowref) + + def on_menu_size_column_toggled(self, widget): + self.prefs.display_size_column = widget.get_active() + self.selection_vbox.selection_treeview.display_size_column(self.prefs.display_size_column) + + def on_menu_type_column_toggled(self, widget): + self.prefs.display_type_column = widget.get_active() + self.selection_vbox.selection_treeview.display_type_column(self.prefs.display_type_column) + + def on_menu_filename_column_toggled(self, widget): + self.prefs.display_filename_column = widget.get_active() + self.selection_vbox.selection_treeview.display_filename_column(self.prefs.display_filename_column) + + def on_menu_path_column_toggled(self, widget): + self.prefs.display_path_column = widget.get_active() + self.selection_vbox.selection_treeview.display_path_column(self.prefs.display_path_column) + + def on_menu_device_column_toggled(self, widget): + self.prefs.display_device_column = widget.get_active() + self.selection_vbox.selection_treeview.display_device_column(self.prefs.display_device_column) def checkIfFirstTimeProgramEverRun(self): """ @@ -3593,23 +5147,27 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): for cap in caps: capabilities[cap] = True + do_not_size_icon = False + self.notification_icon_size = 48 try: info = pynotify.get_server_info() except: cmd_line(_("Warning: desktop environment notification server is incorrectly configured.")) - self.notification_icon_size = 48 else: try: - if info['name'] == 'Notification Daemon': - self.notification_icon_size = 128 - else: - self.notification_icon_size = 48 + if info["name"] == 'notify-osd': + do_not_size_icon = True except: - self.notification_icon_size = 48 - - self.application_icon = gtk.gdk.pixbuf_new_from_file_at_size( - paths.share_dir('glade3/rapid-photo-downloader-about.png'), - self.notification_icon_size, self.notification_icon_size) + pass + + if do_not_size_icon: + self.application_icon = gtk.gdk.pixbuf_new_from_file( + paths.share_dir('glade3/rapid-photo-downloader.svg')) + else: + self.application_icon = gtk.gdk.pixbuf_new_from_file_at_size( + paths.share_dir('glade3/rapid-photo-downloader.svg'), + self.notification_icon_size, self.notification_icon_size) + def usingVolumeMonitor(self): @@ -3662,12 +5220,23 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): return self.prefs.device_autodetection_psd and self.prefs.device_autodetection - def isGProxyShadowMount(self, gvfsVolume): + def isGProxyShadowMount(self, gMount): - """ gvfs GProxyShadowMount are used for camera specific things, not the data in the memory card """ + """ gvfs GProxyShadowMount is used for the camera itself, not the data in the memory card """ + if using_gio: + if hasattr(gMount, 'is_shadowed'): + return gMount.is_shadowed() + else: + return str(type(gMount)).find('GProxyShadowMount') >= 0 + else: + return False + + def isCamera(self, volume): if using_gio: - #FIXME: this is a hack, but what is the correct function? - return str(type(gvfsVolume)).find('GProxyShadowMount') >= 0 + try: + return volume.get_root().query_filesystem_info(gio.FILE_ATTRIBUTE_GVFS_BACKEND).get_attribute_as_string(gio.FILE_ATTRIBUTE_GVFS_BACKEND) == 'gphoto2' + except: + return False else: return False @@ -3703,17 +5272,19 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): self.backupVolumes[path] = volume self.rapid_statusbar.push(self.statusbar_context_id, self.displayBackupVolumes()) - elif media.is_DCIM_Media(path) or self.searchForPsd(): + elif self.prefs.device_autodetection and (media.is_DCIM_Media(path) or self.searchForPsd()): + if self.isCamera(volume.volume): + self.getShowWarningDownloadingFromCamera() if self.searchForPsd() and path not in self.prefs.device_whitelist: # prompt user if device should be used or not - self.getUseDevice(path, volume, self.prefs.auto_download_upon_device_insertion) + self.getUseDevice(path, volume, self.prefs.auto_download_upon_device_insertion) else: self._printAutoStart(self.prefs.auto_download_upon_device_insertion) self.initiateScan(path, volume, self.prefs.auto_download_upon_device_insertion) def initiateScan(self, path, volume, autostart): """ initiates scan of image device""" - cardMedia = CardMedia(path, volume, True) + cardMedia = CardMedia(path, volume) i = workers.getNextThread_id() workers.append(CopyPhotos(i, self, self.fileRenameLock, @@ -3748,12 +5319,14 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): if w.cardMedia.volume: if w.cardMedia.volume.volume == volume: media_collection_treeview.removeCard(w.thread_id) + self.selection_vbox.selection_treeview.clear_all(w.thread_id) workers.disableWorker(w.thread_id) # second scenario for w in workers.getReadyToDownloadWorkers(): if w.cardMedia.volume: if w.cardMedia.volume.volume == volume: media_collection_treeview.removeCard(w.thread_id) + self.selection_vbox.selection_treeview.clear_all(w.thread_id) workers.disableWorker(w.thread_id) # fourth scenario - nothing to do @@ -3774,6 +5347,7 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): for w in workers.getFinishedWorkers(): media_collection_treeview.removeCard(w.thread_id) + self.selection_vbox.selection_treeview.clear_all(w.thread_id) @@ -3822,7 +5396,7 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): program's initialization. onPreferenceChange should be True if this is being called as the result of a preference - bring changed + being changed Removes any image media that are currently not downloaded, or finished downloading @@ -3839,10 +5413,10 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): if self.usingVolumeMonitor(): # either using automatically detected backup devices - # or image devices + # or download devices for v in self.volumeMonitor.get_mounts(): - volume = Volume(v) + volume = Volume(v) #'volumes' are actually mounts (legacy variable name at work here) path = volume.get_path(avoid_gnomeVFS_bug = True) if path: @@ -3888,25 +5462,86 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): autoStart = (not onPreferenceChange) and ((self.prefs.auto_download_at_startup and onStartup) or (self.prefs.auto_download_upon_device_insertion and not onStartup)) self._printAutoStart(autoStart) + + shownWarning = False for i in range(len(volumeList)): path, volume = volumeList[i] + if volume: + if self.isCamera(volume.volume) and not shownWarning: + self.getShowWarningDownloadingFromCamera() + shownWarning = True if self.searchForPsd() and path not in self.prefs.device_whitelist: # prompt user to see if device should be used or not self.getUseDevice(path, volume, autoStart) else: self.initiateScan(path, volume, autoStart) + + def refreshBackupMedia(self): + """ + Setup the backup media - def _setupDownloadbutton(self): - + Assumptions: this is being called after the user has changed their preferences AND download media has already been setup + """ + self.backupVolumes = {} + if self.prefs.backup_images: + if not self.prefs.backup_device_autodetection: + # user manually specified backup location + # will backup to this path, but don't need any volume info associated with it + self.backupVolumes[self.prefs.backup_location] = None + self.rapid_statusbar.push(self.statusbar_context_id, _('Backing up to %(path)s') % {'path':self.prefs.backup_location}) + else: + for v in self.volumeMonitor.get_mounts(): + volume = Volume(v) + path = volume.get_path(avoid_gnomeVFS_bug = True) + if path: + if self.checkIfBackupVolume(path): + # is a backup volume + if path not in self.backupVolumes: + # ensure it is not in a list of workers which have not started downloading + # if it is, remove it + for w in workers.getNotDownloadingAndNotFinishedWorkers(): + if w.cardMedia.path == path: + media_collection_treeview.removeCard(w.thread_id) + self.selection_vbox.selection_treeview.clear_all(w.thread_id) + workers.disableWorker(w.thread_id) + + downloading_workers = [] + for w in workers.getDownloadingWorkers(): + downloading_workers.append(w) + + for w in downloading_workers: + if w.cardMedia.path == path: + # the user is trying to backup to a device that is currently being downloaded from..... we don't normally allow that, but what to do? + cmd_line(_("Warning: backup device %(device)s is currently being downloaded from") % {'device': volume.get_name(limit=0)}) + + self.backupVolumes[path] = volume + + self.rapid_statusbar.push(self.statusbar_context_id, self.displayBackupVolumes()) + + + def _setupDownloadbuttons(self): self.download_hbutton_box = gtk.HButtonBox() + self.download_hbutton_box.set_spacing(12) + self.download_hbutton_box.set_homogeneous(False) + + help_button = gtk.Button(stock=gtk.STOCK_HELP) + help_button.connect("clicked", self.on_help_button_clicked) + self.download_hbutton_box.pack_start(help_button) + self.download_hbutton_box.set_child_secondary(help_button, True) + + self.DOWNLOAD_SELECTED_LABEL = _("D_ownload Selected") self.download_button_is_download = True self.download_button = gtk.Button() self.download_button.set_use_underline(True) self.download_button.set_flags(gtk.CAN_DEFAULT) + self.download_selected_button = gtk.Button() + self.download_selected_button.set_use_underline(True) self._set_download_button() self.download_button.connect('clicked', self.on_download_button_clicked) - self.download_hbutton_box.set_layout(gtk.BUTTONBOX_START) + self.download_selected_button.connect('clicked', self.on_download_selected_button_clicked) + self.download_hbutton_box.set_layout(gtk.BUTTONBOX_END) + self.download_hbutton_box.pack_start(self.download_selected_button) self.download_hbutton_box.pack_start(self.download_button) self.download_hbutton_box.show_all() self.buttons_hbox.pack_start(self.download_hbutton_box, @@ -3914,14 +5549,16 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): self.setDownloadButtonSensitivity() - - def set_display_thumbnails(self, value): + def set_display_selection(self, value): if value: - self.image_scrolledwindow.show_all() + self.selection_vbox.preview_table.show_all() else: - self.image_scrolledwindow.hide() - - + self.selection_vbox.preview_table.hide() + self.selection_vbox.set_display_preview_folders(self.prefs.display_preview_folders) + + def set_display_preview_folders(self, value): + self.selection_vbox.set_display_preview_folders(value) + def _resetDownloadInfo(self): self.markSet = False self.startTime = None @@ -3947,28 +5584,29 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): self.timeMark = self.startTime self.sizeMark = 0 - def startOrResumeWorkers(self): + def startOrResumeWorkers(self, threads): # resume any paused workers for w in workers.getPausedDownloadingWorkers(): w.startStop() self.timeRemaining.setTimeMark(w) - #start any new workers - workers.startDownloadingWorkers() + #start any new workers that have downloads pending + for i in threads: + workers[i].startStop() - if is_beta and verbose: + if is_beta and verbose and False: workers.printWorkerStatus() - def updateOverallProgress(self, thread_id, imageSize, percentComplete): + def updateOverallProgress(self, thread_id, bytesDownloaded, percentComplete): """ Updates progress bar and status bar text with time remaining to download images """ - self.totalDownloadedSoFar += imageSize - self.totalDownloadedSoFarThisRun += imageSize + self.totalDownloadedSoFar += bytesDownloaded + self.totalDownloadedSoFarThisRun += bytesDownloaded fraction = self.totalDownloadedSoFar / float(self.totalDownloadSize) @@ -3985,12 +5623,13 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): self._set_download_button() self.setDownloadButtonSensitivity() cmd_line(_("All downloads complete")) - if is_beta and verbose: + job_code = None + if is_beta and verbose and False: workers.printWorkerStatus() else: now = time.time() - self.timeRemaining.update(thread_id, imageSize) + self.timeRemaining.update(thread_id, bytesDownloaded) if now > (self.downloadTimeGap + self.timeMark): amtTime = now - self.timeMark @@ -4035,22 +5674,43 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): if self.displayDownloadSummaryNotification: message = _("All downloads complete") if self.downloadStats.noImagesDownloaded: - message += "\n%s " % self.downloadStats.noImagesDownloaded + _("photos downloaded") + filetype = file_types_by_number(self.downloadStats.noImagesDownloaded, 0) + message += "\n" + _("%(number)s %(numberdownloaded)s") % \ + {'number': self.downloadStats.noImagesDownloaded, + 'numberdownloaded': _("%(filetype)s downloaded") % \ + {'filetype': filetype}} if self.downloadStats.noImagesSkipped: - message = "%s\n%s " % (message, self.downloadStats.noImagesSkipped) + _("photos skipped") + filetype = file_types_by_number(self.downloadStats.noImagesSkipped, 0) + message += "\n" + _("%(number)s %(numberdownloaded)s") % \ + {'number': self.downloadStats.noImagesSkipped, + 'numberdownloaded': _("%(filetype)s failed to download") % \ + {'filetype': filetype}} if self.downloadStats.noVideosDownloaded: - message += "\n%s " % self.downloadStats.noVideosDownloaded + _("videos downloaded") + filetype = file_types_by_number(0, self.downloadStats.noVideosDownloaded) + message += "\n" + _("%(number)s %(numberdownloaded)s") % \ + {'number': self.downloadStats.noVideosDownloaded, + 'numberdownloaded': _("%(filetype)s downloaded") % \ + {'filetype': filetype}} if self.downloadStats.noVideosSkipped: - message = "%s\n%s " % (message, self.downloadStats.noVideosSkipped) + _("videos skipped") + filetype = file_types_by_number(0, self.downloadStats.noVideosSkipped) + message += "\n" + _("%(number)s %(numberdownloaded)s") % \ + {'number': self.downloadStats.noVideosSkipped, + 'numberdownloaded': _("%(filetype)s failed to download") % \ + {'filetype': filetype}} if self.downloadStats.noWarnings: - message = "%s\n%s " % (message, self.downloadStats.noWarnings) + _("warnings") + message += "\n" + _("%(number)s %(numberdownloaded)s") % \ + {'number': self.downloadStats.noWarnings, + 'numberdownloaded': _("warnings")} if self.downloadStats.noErrors: - message = "%s\n%s " % (message, self.downloadStats.noErrors) +_("errors") + message += "\n" + _("%(number)s %(numberdownloaded)s") % \ + {'number': self.downloadStats.noErrors, + 'numberdownloaded': _("errors")} + n = pynotify.Notification(PROGRAM_NAME, message) n.set_icon_from_pixbuf(self.application_icon) n.show() self.displayDownloadSummaryNotification = False # don't show it again unless needed - self.downloadStats.clear() + # download statistics are cleared in exitOnDownloadComplete() self._resetDownloadInfo() self.speed_label.set_text(' ') @@ -4060,6 +5720,9 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): if self.prefs.auto_exit: if not (self.downloadStats.noErrors or self.downloadStats.noWarnings): self.quit() + # since for whatever reason am not exiting, clear the download statistics + self.downloadStats.clear() + def downloadFailed(self, thread_id): if workers.noDownloadingWorkers() == 0: @@ -4072,13 +5735,19 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): def setDownloadButtonSensitivity(self): - isSensitive = workers.noReadyToDownloadWorkers() > 0 or workers.noDownloadingWorkers() > 0 + isSensitive = (workers.noReadyToDownloadWorkers() > 0 and + workers.noScanningWorkers() == 0 and + self.selection_vbox.selection_treeview.rows_available_for_download()) or \ + workers.noDownloadingWorkers() > 0 if isSensitive: self.download_button.props.sensitive = True + # download selected button sensitity is enabled only when the user selects something + self.selection_vbox.selection_treeview.update_download_selected_button() self.menu_download_pause.props.sensitive = True else: self.download_button.props.sensitive = False + self.download_selected_button.props.sensitive = False self.menu_download_pause.props.sensitive = False return isSensitive @@ -4086,6 +5755,15 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): def on_rapidapp_destroy(self, widget): """Called when the application is going to quit""" + + # save window and component sizes + self.prefs.hpaned_pos = self.selection_vbox.file_hpaned.get_position() + self.prefs.vpaned_pos = self.main_vpaned.get_position() + + x, y = self.rapidapp.get_size() + self.prefs.main_window_size_x = x + self.prefs.main_window_size_y = y + workers.quitAllWorkers() self.flushevents() @@ -4093,10 +5771,20 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): display_queue.close("w") + def on_rapidapp_window_state_event(self, widget, event): + """ Checkto see if the user maximized the main application window or not. """ + if event.changed_mask & gdk.WINDOW_STATE_MAXIMIZED: + self.prefs.main_window_maximized = event.new_window_state & gdk.WINDOW_STATE_MAXIMIZED + + def on_menu_clear_activate(self, widget): self.clearCompletedDownloads() widget.set_sensitive(False) + def on_menu_refresh_activate(self, widget): + self.selection_vbox.selection_treeview.clear_all() + self.setupAvailableImageAndBackupMedia(onStartup = False, onPreferenceChange = True, doNotAllowAutoStart = True) + def on_menu_report_problem_activate(self, widget): webbrowser.open("https://bugs.launchpad.net/rapid") @@ -4122,8 +5810,30 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): else: log_dialog.widget.hide() - def on_menu_display_thumbnails_toggled(self, check_button): - self.prefs.display_thumbnails = check_button.get_active() + def on_menu_display_selection_toggled(self, check_button): + self.prefs.display_selection = check_button.get_active() + + def on_menu_preview_folders_toggled(self, check_button): + self.prefs.display_preview_folders = check_button.get_active() + + def on_menu_select_all_activate(self, widget): + self.selection_vbox.selection_treeview.select_rows('all') + + def on_menu_select_all_photos_activate(self, widget): + self.selection_vbox.selection_treeview.select_rows('photos') + + def on_menu_select_all_videos_activate(self, widget): + self.selection_vbox.selection_treeview.select_rows('videos') + + def on_menu_select_none_activate(self, widget): + self.selection_vbox.selection_treeview.select_rows('none') + + def on_menu_select_all_with_job_code_activate(self, widget): + self.selection_vbox.selection_treeview.select_rows('withjobcode') + + def on_menu_select_all_without_job_code_activate(self, widget): + self.selection_vbox.selection_treeview.select_rows('withoutjobcode') + def on_menu_about_activate(self, widget): """ Display about dialog box """ @@ -4138,20 +5848,35 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): """ Sets download button to appropriate state """ + if self.download_button_is_download: # This text will be displayed to the user on the Download / Pause button. - # Please note the space at the end of the label - it is needed to meet the Gnome Human Interface Guidelines - self.download_button.set_label(_("_Download ")) + self.download_selected_button.set_label(self.DOWNLOAD_SELECTED_LABEL) + self.download_selected_button.set_image(gtk.image_new_from_stock( + gtk.STOCK_CONVERT, + gtk.ICON_SIZE_BUTTON)) + self.selection_vbox.selection_treeview.update_download_selected_button() + self.download_button.set_image(gtk.image_new_from_stock( gtk.STOCK_CONVERT, - gtk.ICON_SIZE_BUTTON)) + gtk.ICON_SIZE_BUTTON)) + + if workers.noPausedWorkers(): + self.download_button.set_label(_("_Resume")) + self.download_selected_button.hide() + else: + self.download_button.set_label(_("_Download All")) + self.download_selected_button.show_all() + else: # button should indicate paused state self.download_button.set_image(gtk.image_new_from_stock( gtk.STOCK_MEDIA_PAUSE, gtk.ICON_SIZE_BUTTON)) # This text will be displayed to the user on the Download / Pause button. - self.download_button.set_label(_("_Pause") + " ") + self.download_button.set_label(_("_Pause")) + self.download_selected_button.set_sensitive(False) + self.download_selected_button.hide() def on_menu_download_pause_activate(self, widget): self.on_download_button_clicked(widget) @@ -4160,8 +5885,6 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): if workers.noReadyToStartWorkers() > 0: workers.startWorkers() - - def postStartDownloadTasks(self): if workers.noDownloadingWorkers() > 1: self.displayDownloadSummaryNotification = True @@ -4170,8 +5893,8 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): self.download_button_is_download = False self._set_download_button() - def startDownload(self): - self.startOrResumeWorkers() + def startDownload(self, threads): + self.startOrResumeWorkers(threads) self.postStartDownloadTasks() def pauseDownload(self): @@ -4186,55 +5909,141 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): """ Handle download button click. - Button is in one of two states: download, or pause. + Button is in one of three states: download all, resume, or pause. If download, a click indicates to start or resume a download run. If pause, a click indicates to pause all running downloads. """ if self.download_button_is_download: - if need_job_code and job_code == None and not self.prompting_for_job_code: - self.getJobCode(autoStart=False) + if need_job_code_for_renaming and self.selection_vbox.selection_treeview.job_code_missing(False) and not self.prompting_for_job_code: + self.getJobCode(autoStart=False, downloadSelected=False) else: - self.startDownload() + threads = self.selection_vbox.selection_treeview.set_status_to_download_pending(selected_only = False) + self.startDownload(threads) + self._set_download_button() else: self.pauseDownload() + + def on_download_selected_button_clicked(self, widget): + # set the status of the selected workers to be downloading pending + if need_job_code_for_renaming and self.selection_vbox.selection_treeview.job_code_missing(True) and not self.prompting_for_job_code: + self.getJobCode(autoStart=False, downloadSelected=True) + else: + threads = self.selection_vbox.selection_treeview.set_status_to_download_pending(selected_only = True) + self.startDownload(threads) + + + + def on_help_button_clicked(self, widget): + webbrowser.open("http://www.damonlynch.net/rapid/help.html") def on_preference_changed(self, key, value): """ Called when user changes the program's preferences """ - if key == 'display_thumbnails': - self.set_display_thumbnails(value) + if key == 'display_selection': + self.set_display_selection(value) + elif key == 'display_preview_folders': + self.set_display_preview_folders(value) elif key == 'show_log_dialog': self.menu_log_window.set_active(value) - elif key in ['device_autodetection', 'device_autodetection_psd', 'backup_images', 'device_location', - 'backup_device_autodetection', 'backup_location' ]: - self.rerunSetupAvailableImageAndBackupMedia = True + elif key in ['device_autodetection', 'device_autodetection_psd', 'device_location']: + self.rerunSetupAvailableImageAndVideoMedia = True + if not self.preferencesDialogDisplayed: + self.postPreferenceChange() + + elif key in ['backup_images', 'backup_device_autodetection', 'backup_location', 'backup_identifier', 'video_backup_identifier']: + self.rerunSetupAvailableBackupMedia = True if not self.preferencesDialogDisplayed: self.postPreferenceChange() elif key in ['subfolder', 'image_rename', 'video_subfolder', 'video_rename']: - global need_job_code - need_job_code = self.needJobCode() + global need_job_code_for_renaming + need_job_code_for_renaming = self.needJobCodeForRenaming() + self.selection_vbox.set_job_code_display() + self.menu_select_all_without_job_code.set_sensitive(need_job_code_for_renaming) + self.menu_select_all_with_job_code.set_sensitive(need_job_code_for_renaming) + self.refreshGeneratedSampleSubfolderAndName = True + + if not self.preferencesDialogDisplayed: + self.postPreferenceChange() + + elif key in ['download_folder', 'video_download_folder']: + self.refreshSampleDownloadFolder = True + if not self.preferencesDialogDisplayed: + self.postPreferenceChange() + + elif key == 'job_codes': + # update job code list in left pane + self.selection_vbox.update_job_code_combo() + def postPreferenceChange(self): """ Handle changes in program preferences after the preferences dialog window has been closed """ - if self.rerunSetupAvailableImageAndBackupMedia: + if self.rerunSetupAvailableImageAndVideoMedia: if self.usingVolumeMonitor(): self.startVolumeMonitor() - cmd_line("\n" + _("Preferences were changed.")) - - self.setupAvailableImageAndBackupMedia(onStartup = False, onPreferenceChange = True, doNotAllowAutoStart = False) - if is_beta and verbose: - print "Current worker status:" + cmd_line("\n" + _("Download device settings preferences were changed.")) + + self.selection_vbox.selection_treeview.clear_all() + self.setupAvailableImageAndBackupMedia(onStartup = False, onPreferenceChange = True, doNotAllowAutoStart = True) + if is_beta and verbose and False: workers.printWorkerStatus() - self.rerunSetupAvailableImageAndBackupMedia = False + self.rerunSetupAvailableImageAndVideoMedia = False + + if self.rerunSetupAvailableBackupMedia: + if self.usingVolumeMonitor(): + self.startVolumeMonitor() + cmd_line("\n" + _("Backup preferences were changed.")) + + self.refreshBackupMedia() + self.rerunSetupAvailableBackupMedia = False + + if self.refreshGeneratedSampleSubfolderAndName: + cmd_line("\n" + _("Subfolder and filename preferences were changed.")) + for w in workers.getScanningWorkers(): + if not w.scanResultsStale: + w.scanResultsStale = True + self.noAfterScanRefreshGeneratedSampleSubfolderAndName += 1 + + self.selection_vbox.selection_treeview.refreshGeneratedSampleSubfolderAndName() + self.refreshGeneratedSampleSubfolderAndName = False + self.setDownloadButtonSensitivity() + + if self.refreshSampleDownloadFolder: + cmd_line("\n" + _("Download folder preferences were changed.")) + for w in workers.getScanningWorkers(): + if not w.scanResultsStaleDownloadFolder: + w.scanResultsStaleDownloadFolder = True + self.noAfterScanRefreshSampleDownloadFolders += 1 + + self.selection_vbox.selection_treeview.refreshSampleDownloadFolders() + self.refreshSampleDownloadFolder = False + def regenerateScannedDevices(self, thread_id): + """ + Regenerate the filenames / subfolders / download folders for this thread + + The user must have adjusted their preferences as the device was being scanned + """ + + if self.noAfterScanRefreshSampleDownloadFolders: + # no point updating it if we're going to update it in the + # refresh of sample names and subfolders anway! + if not self.noAfterScanRefreshGeneratedSampleSubfolderAndName: + self.selection_vbox.selection_treeview.refreshSampleDownloadFolders(thread_id) + self.noAfterScanRefreshSampleDownloadFolders -= 1 + + if self.noAfterScanRefreshGeneratedSampleSubfolderAndName: + self.selection_vbox.selection_treeview.refreshGeneratedSampleSubfolderAndName(thread_id) + self.noAfterScanRefreshGeneratedSampleSubfolderAndName -= 1 + + def on_error_eventbox_button_press_event(self, widget, event): self.prefs.show_log_dialog = True @@ -4264,7 +6073,6 @@ class Volume: """ Transistion to gvfs from gnomevfs""" def __init__(self, volume): self.volume = volume - self.using_gio = using_gio def get_name(self, limit=config.MAX_LENGTH_DEVICE_NAME): if using_gio: @@ -4296,25 +6104,7 @@ class Volume: def get_icon_pixbuf(self, size): """ returns icon for the volume, or None if not available""" - icontheme = gtk.icon_theme_get_default() - - if using_gio: - gicon = self.volume.get_icon() - f = None - if isinstance(gicon, gio.ThemedIcon): - try: - # on some user's systems, themes do not have icons associated with them - iconinfo = icontheme.choose_icon(gicon.get_names(), size, gtk.ICON_LOOKUP_USE_BUILTIN) - f = iconinfo.get_filename() - v = gtk.gdk.pixbuf_new_from_file_at_size(f, size, size) - except: - f = None - if not f: - v = icontheme.load_icon('gtk-harddisk', size, gtk.ICON_LOOKUP_USE_BUILTIN) - else: - gicon = self.volume.get_icon() - v = icontheme.load_icon(gicon, size, gtk.ICON_LOOKUP_USE_BUILTIN) - return v + return common.get_icon_pixbuf(using_gio, self.volume.get_icon(), size) def unmount(self, callback): self.volume.unmount(callback) @@ -4323,7 +6113,7 @@ class DownloadStats: def __init__(self): self.clear() - def adjust(self, size, noImagesDownloaded, noVideosDownloaded, noImagesSkipped, noVideosSkipped, noWarnings, noErrors): + def adjust(self, size, noImagesDownloaded, noVideosDownloaded, noImagesSkipped, noVideosSkipped, noWarnings, noErrors): self.downloadSize += size self.noImagesDownloaded += noImagesDownloaded self.noVideosDownloaded += noVideosDownloaded @@ -4381,15 +6171,14 @@ class TimeRemaining: def __init__(self): self.clear() - def add(self, w, size): - if w not in self.times: - t = TimeForDownload() - t.timeRemaining = None - t.size = size - t.downloaded = 0 - t.sizeMark = 0 - t.timeMark = time.time() - self.times[w] = t + def set(self, w, size): + t = TimeForDownload() + t.timeRemaining = None + t.size = size + t.downloaded = 0 + t.sizeMark = 0 + t.timeMark = time.time() + self.times[w] = t def update(self, w, size): if w in self.times: @@ -4401,9 +6190,10 @@ class TimeRemaining: self.times[w].timeMark = now amtDownloaded = self.times[w].downloaded - self.times[w].sizeMark self.times[w].sizeMark = self.times[w].downloaded - timefraction = amtDownloaded / amtTime + timefraction = amtDownloaded / float(amtTime) amtToDownload = float(self.times[w].size) - self.times[w].downloaded - self.times[w].timeRemaining = amtToDownload / timefraction + if timefraction: + self.times[w].timeRemaining = amtToDownload / timefraction def _timeEstimates(self): for t in self.times: diff --git a/rapid/renamesubfolderprefs.py b/rapid/renamesubfolderprefs.py index feb7366..727eef0 100644 --- a/rapid/renamesubfolderprefs.py +++ b/rapid/renamesubfolderprefs.py @@ -68,6 +68,8 @@ import ValidatedEntry import config from common import pythonifyVersion +import problemnotification as pn + # Special key in each dictionary which specifies the order of elements. # It is very important to have a consistent and rational order when displaying @@ -649,7 +651,7 @@ def upgradePreferencesToCurrent(imageRenamePrefs, subfolderPrefs, previousVersio def usesJobCode(prefs): """ Returns True if the preferences contain a job code, else returns False""" - for i in range(0, len(prefs), 3): + for i in range(0, len(prefs), 3): if prefs[i] == JOB_CODE: return True return False @@ -834,7 +836,7 @@ class Comboi18n(gtk.ComboBox): def append_text(self, text): model = self.get_model() - model.append((text, _(text))) + model.append((text, _(text))) def get_active_text(self): model = self.get_model() @@ -870,8 +872,23 @@ class ImageRenamePreferences: self.defaultRow = self.defaultPrefs self.stripForwardSlash = True self.L1DateCheck = IMAGE_DATE #used in _getDateComponent() + self.component = pn.FILENAME_COMPONENT + def initializeProblem(self, problem): + """ + Set the problem tracker used in name generation + """ + self.problem = problem + + def getProblems(self): + """ + Returns Problem class if there were problems, else returns None. + """ + if self.problem.has_problem(): + return self.problem + else: + return None def checkPrefsForValidity(self): """ @@ -905,40 +922,24 @@ class ImageRenamePreferences: self.job_code = job_code - def _fixMangledDateTime(self, d): - """ Some EXIF dates are badly formed. Try to fix them """ - - _datetime = d.strip() - # remove any weird characters at the end of the string - while _datetime and not _datetime[-1].isdigit(): - _datetime = _datetime[:-1] - _date, _time = _datetime.split(' ') - _datetime = "%s %s" % (_date.replace(":", "-") , _time.replace("-", ":")) - try: - d = datetime.datetime.strptime(_datetime, '%Y-%m-%d %H:%M:%S') - except: - d = None - return d - + def _getDateComponent(self): """ Returns portion of new image / subfolder name based on date time. If the date is missing, will attempt to use the fallback date. """ - problem = None - + # step 1: get the correct value from metadata if self.L1 == self.L1DateCheck: if self.L2 == SUBSECONDS: - d = self.photo.subSeconds() - problem = _("Subsecond metadata not present in photo") + d = self.metadata.subSeconds() if d == '00': - return ('', problem) + self.problem.add_problem(self.component, pn.MISSING_METADATA, _(self.L2)) + return '' else: - return (d, None) + return d else: - d = self.photo.dateTime(missing=None) - problem = _("%s metadata is not present") % self.L1.lower() + d = self.metadata.dateTime(missing=None) elif self.L1 == TODAY: d = datetime.datetime.now() @@ -948,34 +949,23 @@ class ImageRenamePreferences: else: raise("Date options invalid") - if d: - # if format is not the standard floating point representation - # of a date time, there is a problem - if type(d) == type('string'): - # will be a string only if the date time could not be converted in the datetime type - # try to massage badly formed date / times into a valid value - d = self._fixMangledDateTime(d) - if d is None: - v = '' - problem = _('Error in date time component. Value %s appears invalid') % '' - return (v, problem) - else: + # step 2: handle a missing value + if not d: if self.fallback_date: try: d = datetime.datetime.fromtimestamp(self.fallback_date) except: - v = '' - problem = _('Error in date time component. Value %s appears invalid') % '' - return (v, problem) + self.problem.add_problem(self.component, pn.INVALID_DATE_TIME, '') + return '' else: - return ('', problem) + self.problem.add_problem(self.component, pn.MISSING_METADATA, _(self.L1)) + return '' try: - return (d.strftime(convertDateForStrftime(self.L2)), None) + return d.strftime(convertDateForStrftime(self.L2)) except: - v = '' - problem = _('Error in date time component. Value %s appears invalid') % d - return (v, problem) + self.problem.add_problem(self.component, pn.INVALID_DATE_TIME, d) + return '' def _getFilenameComponent(self): """ @@ -983,7 +973,6 @@ class ImageRenamePreferences: """ name, extension = os.path.splitext(self.existingFilename) - problem = None if self.L1 == NAME_EXTENSION: filename = self.existingFilename @@ -1000,12 +989,13 @@ class ImageRenamePreferences: # is a bad idea! filename = extension[1:] else: - filename = "" - problem = _("extension was specified but filename does not have an extension") + self.problem.add_problem(self.component, pn.MISSING_FILE_EXTENSION) + return "" elif self.L1 == IMAGE_NUMBER or self.L1 == VIDEO_NUMBER: n = re.search("(?P[0-9]+$)", name) if not n: - problem = _("image or video number was specified but filename has no number") + self.problem.add_problem(self.component, pn.MISSING_IMAGE_NUMBER) + return '' else: image_number = n.group("image_number") @@ -1027,7 +1017,7 @@ class ImageRenamePreferences: elif self.L2 == LOWERCASE: filename = filename.lower() - return (filename, problem) + return filename def _getMetadataComponent(self): """ @@ -1036,27 +1026,26 @@ class ImageRenamePreferences: Note: date time metadata found in _getDateComponent() """ - problem = None if self.L1 == APERTURE: - v = self.photo.aperture() + v = self.metadata.aperture() elif self.L1 == ISO: - v = self.photo.iso() + v = self.metadata.iso() elif self.L1 == EXPOSURE_TIME: - v = self.photo.exposureTime(alternativeFormat=True) + v = self.metadata.exposureTime(alternativeFormat=True) elif self.L1 == FOCAL_LENGTH: - v = self.photo.focalLength() + v = self.metadata.focalLength() elif self.L1 == CAMERA_MAKE: - v = self.photo.cameraMake() + v = self.metadata.cameraMake() elif self.L1 == CAMERA_MODEL: - v = self.photo.cameraModel() + v = self.metadata.cameraModel() elif self.L1 == SHORT_CAMERA_MODEL: - v = self.photo.shortCameraModel() + v = self.metadata.shortCameraModel() elif self.L1 == SHORT_CAMERA_MODEL_HYPHEN: - v = self.photo.shortCameraModel(includeCharacters = "\-") + v = self.metadata.shortCameraModel(includeCharacters = "\-") elif self.L1 == SERIAL_NUMBER: - v = self.photo.cameraSerial() + v = self.metadata.cameraSerial() elif self.L1 == SHUTTER_COUNT: - v = self.photo.shutterCount() + v = self.metadata.shutterCount() if v: v = int(v) padding = LIST_SHUTTER_COUNT_L2.index(self.L2) + 3 @@ -1064,7 +1053,7 @@ class ImageRenamePreferences: v = formatter % v elif self.L1 == OWNER_NAME: - v = self.photo.ownerName() + v = self.metadata.ownerName() else: raise TypeError("Invalid metadata option specified") if self.L1 in [CAMERA_MAKE, CAMERA_MODEL, SHORT_CAMERA_MODEL, @@ -1074,12 +1063,8 @@ class ImageRenamePreferences: elif self.L2 == LOWERCASE: v = v.lower() if not v: - if self.L1 <> ISO: - md = self.L1.lower() - else: - md = ISO - problem = _("%s metadata is not present in photo") % md - return (v, problem) + self.problem.add_problem(self.component, pn.MISSING_METADATA, _(self.L1)) + return v def _formatSequenceNo(self, value, amountToPad): @@ -1119,7 +1104,6 @@ class ImageRenamePreferences: than one subfolder sequence number in the same file name """ - problem = None self.subfolderSeqNoInstanceInFilename += 1 if self.downloadSubfolder: @@ -1135,33 +1119,23 @@ class ImageRenamePreferences: v = self.sequenceNos.calculate(subfolder) v = self.formatSequenceNo(v, self.L1) - return (v, problem) + return v def _getSessionSequenceNo(self): - problem = None - v = self._formatSequenceNo(self.sequences.getSessionSequenceNoUsingCounter(self.sequenceCounter), self.L2) - return (v, problem) + return self._formatSequenceNo(self.sequences.getSessionSequenceNoUsingCounter(self.sequenceCounter), self.L2) def _getDownloadsTodaySequenceNo(self): - problem = None - v = self._formatSequenceNo(self.sequences.getDownloadsTodayUsingCounter(self.sequenceCounter), self.L2) - - return (v, problem) + return self._formatSequenceNo(self.sequences.getDownloadsTodayUsingCounter(self.sequenceCounter), self.L2) + def _getStoredSequenceNo(self): - problem = None - v = self._formatSequenceNo(self.sequences.getStoredSequenceNoUsingCounter(self.sequenceCounter), self.L2) - - return (v, problem) + return self._formatSequenceNo(self.sequences.getStoredSequenceNoUsingCounter(self.sequenceCounter), self.L2) def _getSequenceLetter(self): + return self._calculateLetterSequence(self.sequences.getSequenceLetterUsingCounter(self.sequenceCounter)) - problem = None - v = self._calculateLetterSequence(self.sequences.getSequenceLetterUsingCounter(self.sequenceCounter)) - return (v, problem) def _getSequencesComponent(self): - problem = None if self.L1 == DOWNLOAD_SEQ_NUMBER: return self._getDownloadsTodaySequenceNo() elif self.L1 == SESSION_SEQ_NUMBER: @@ -1178,7 +1152,7 @@ class ImageRenamePreferences: if self.L0 == DATE_TIME: return self._getDateComponent() elif self.L0 == TEXT: - return (self.L1, None) + return self.L1 elif self.L0 == FILENAME: return self._getFilenameComponent() elif self.L0 == METADATA: @@ -1186,27 +1160,25 @@ class ImageRenamePreferences: elif self.L0 == SEQUENCES: return self._getSequencesComponent() elif self.L0 == JOB_CODE: - return (self.job_code, None) + return self.job_code elif self.L0 == SEPARATOR: - return (os.sep, None) + return os.sep except: - v = "" - problem = _("error generating name with component %s") % self.L0 - return (v, problem) - + self.problem.add_problem(self.component, pn.ERROR_IN_GENERATION, _(self.L0)) + return '' + def _getValuesFromList(self): for i in range(0, len(self.prefList), 3): yield (self.prefList[i], self.prefList[i+1], self.prefList[i+2]) - def _generateName(self, photo, existingFilename, stripCharacters, subfolder, stripInitialPeriodFromExtension, sequence, fallback_date): - self.photo = photo + def _generateName(self, metadata, existingFilename, stripCharacters, subfolder, stripInitialPeriodFromExtension, sequence, fallback_date): + self.metadata = metadata self.existingFilename = existingFilename self.stripInitialPeriodFromExtension = stripInitialPeriodFromExtension self.fallback_date = fallback_date name = '' - problem = '' #the subfolder in which the image will be downloaded to self.downloadSubfolder = subfolder @@ -1214,37 +1186,34 @@ class ImageRenamePreferences: self.sequenceCounter = sequence for self.L0, self.L1, self.L2 in self._getValuesFromList(): - v, p = self._getComponent() + v = self._getComponent() if v: name += v - if p: - problem += p + "; " - if problem: - # remove final semicolon and space - problem = problem[:-2] + '.' - if stripCharacters: for c in r'\:*?"<>|': name = name.replace(c, '') if self.stripForwardSlash: name = name.replace('/', '') + + name = name.strip() - return (name, problem) + return name - def generateNameUsingPreferences(self, photo, existingFilename=None, + def generateNameUsingPreferences(self, metadata, existingFilename=None, stripCharacters = False, subfolder=None, stripInitialPeriodFromExtension=False, sequencesPreliminary = True, sequence_to_use = None, fallback_date = None): """ - Generate a filename for the photo in string format based on user prefs. + Generate a filename for the photo or video in string format based on user preferences. - Returns a tuple of two strings: - - the name - - any problems generating the name. If blank, there were no problems + Returns the name in string format + + Any problems encountered during the generation of the name can be accessed + through the method getProblems() """ if self.sequences: @@ -1257,18 +1226,18 @@ class ImageRenamePreferences: else: sequence = 0 - return self._generateName(photo, existingFilename, stripCharacters, subfolder, - stripInitialPeriodFromExtension, sequence, fallback_date) + return self._generateName(metadata, existingFilename, stripCharacters, subfolder, + stripInitialPeriodFromExtension, sequence, fallback_date) - def generateNameSequencePossibilities(self, photo, existingFilename, + def generateNameSequencePossibilities(self, metadata, existingFilename, stripCharacters=False, subfolder=None, stripInitialPeriodFromExtension=False): """ Generates the possible image names using the sequence numbers / letter possibilities""" for sequence in self.sequences.getSequencePossibilities(): - yield self._generateName(photo, existingFilename, stripCharacters , subfolder, - stripInitialPeriodFromExtension, sequence) + yield self._generateName(metadata, existingFilename, stripCharacters, subfolder, + stripInitialPeriodFromExtension, sequence) def filterPreferences(self): """ @@ -1430,15 +1399,15 @@ def getVideoMetadataComponent(video): problem = None if video.L1 == CODEC: - v = video.photo.codec() + v = video.metadata.codec() elif video.L1 == WIDTH: - v = video.photo.width() + v = video.metadata.width() elif video.L1 == HEIGHT: - v = video.photo.height() + v = video.metadata.height() elif video.L1 == FPS: - v = video.photo.fps() + v = video.metadata.fps() elif video.L1 == LENGTH: - v = video.photo.length() + v = video.metadata.length() else: raise TypeError("Invalid metadata option specified") if video.L1 in [CODEC]: @@ -1447,8 +1416,8 @@ def getVideoMetadataComponent(video): elif video.L2 == LOWERCASE: v = v.lower() if not v: - problem = _("%s metadata is not present in video") % video.L1 - return (v, problem) + self.problem.add_problem(self.component, pn.MISSING_METADATA, _(video.L1)) + return v class VideoRenamePreferences(ImageRenamePreferences): def __init__(self, prefList, parent, fileSequenceLock=None, sequences=None): @@ -1457,6 +1426,7 @@ class VideoRenamePreferences(ImageRenamePreferences): self.defaultRow = self.defaultPrefs self.stripForwardSlash = True self.L1DateCheck = VIDEO_DATE + self.component = pn.FILENAME_COMPONENT ImageRenamePreferences.__init__(self, prefList, parent, fileSequenceLock, sequences) def _getMetadataComponent(self): @@ -1475,6 +1445,7 @@ class SubfolderPreferences(ImageRenamePreferences): self.defaultRow = [DATE_TIME, IMAGE_DATE, LIST_DATE_TIME_L2[0]] self.stripForwardSlash = False self.L1DateCheck = IMAGE_DATE + self.component = pn.SUBFOLDER_COMPONENT ImageRenamePreferences.__init__(self, prefList, parent) def generateNameUsingPreferences(self, photo, existingFilename=None, @@ -1487,7 +1458,7 @@ class SubfolderPreferences(ImageRenamePreferences): - any problems generating the name. If blank, there were no problems """ - subfolders, problem = ImageRenamePreferences.generateNameUsingPreferences( + subfolders = ImageRenamePreferences.generateNameUsingPreferences( self, photo, existingFilename, stripCharacters, stripInitialPeriodFromExtension=True, @@ -1499,7 +1470,7 @@ class SubfolderPreferences(ImageRenamePreferences): if subfolders[0] == os.sep: subfolders = subfolders[1:] - return (subfolders, problem) + return subfolders def filterPreferences(self): filtered, prefList = filterSubfolderPreferences(self.prefList) @@ -1561,6 +1532,7 @@ class VideoSubfolderPreferences(SubfolderPreferences): self.defaultPrefs = DEFAULT_VIDEO_SUBFOLDER_PREFS self.defaultRow = [DATE_TIME, VIDEO_DATE, LIST_DATE_TIME_L2[0]] self.L1DateCheck = VIDEO_DATE + self.component = pn.SUBFOLDER_COMPONENT def _getMetadataComponent(self): """ diff --git a/rapid/videometadata.py b/rapid/videometadata.py index 210da33..ab5d18c 100755 --- a/rapid/videometadata.py +++ b/rapid/videometadata.py @@ -27,6 +27,7 @@ import tempfile import gtk import media import paths +from filmstrip import add_filmstrip try: import kaa.metadata @@ -34,10 +35,13 @@ except ImportError: DOWNLOAD_VIDEO = False VIDEO_THUMBNAIL_FILE_EXTENSIONS = ['thm'] -VIDEO_FILE_EXTENSIONS = ['avi', 'mov', 'mp4'] +VIDEO_FILE_EXTENSIONS = ['avi', 'mov', 'mp4', 'mpg'] + + if DOWNLOAD_VIDEO: + try: subprocess.check_call(["ffmpegthumbnailer", "-h"], stdout=subprocess.PIPE) ffmpeg = True @@ -47,14 +51,31 @@ if DOWNLOAD_VIDEO: def version_info(): return str(kaa.metadata.VERSION) + + def get_video_THM_file(fullFileName): + """ + Checks to see if a thumbnail file (THM) is in the same directory as the + file. Expects a full path to be part of the file name. + + Returns the filename, including path, if found, else returns None. + """ + + f = None + name, ext = os.path.splitext(fullFileName) + for e in VIDEO_THUMBNAIL_FILE_EXTENSIONS: + if os.path.exists(name + '.' + e): + f = name + '.' + e + break + if os.path.exists(name + '.' + e.upper()): + f = name + '.' + e.upper() + break + + return f class VideoMetaData(): def __init__(self, filename): self.info = kaa.metadata.parse(filename) self.filename = filename - self.filmstrip = gtk.gdk.pixbuf_new_from_file(paths.share_dir('glade3/filmstrip-100x75.xpm')) - self.FILMSTRIP_WIDTH = 100 - self.FILMSTRIP_HEIGHT = 75 def rpd_keys(self): return self.info.keys() @@ -78,6 +99,17 @@ if DOWNLOAD_VIDEO: return missing else: return missing + + def timeStamp(self, missing=''): + """ + Returns a float value representing the time stamp, if it exists + """ + v = self._get('timestamp', missing=missing) + try: + v = float(v) + except: + v = missing + return v def codec(self, stream=0, missing=''): return self._get('codec', missing, stream) @@ -108,17 +140,24 @@ if DOWNLOAD_VIDEO: return self._get('fourcc', missing, stream) def getThumbnailData(self, size, tempWorkingDir): - thm = media.getVideoThumbnailFile(self.filename) + """ + Returns a pixbuf of the video's thumbnail + + If it cannot be created, returns None + """ + thm = get_video_THM_file(self.filename) if thm: - thumbnail = gtk.gdk.pixbuf_new_from_file_at_size(thm, size, size) - if thumbnail.get_width() <> self.FILMSTRIP_WIDTH or thumbnail.get_height() <> self.FILMSTRIP_HEIGHT: - thumbnail = thumbnail.scale_simple(self.FILMSTRIP_WIDTH, self.FILMSTRIP_HEIGHT, gtk.gdk.INTERP_BILINEAR) - - self.filmstrip.composite(thumbnail, 0, 0, self.filmstrip.props.width, self.filmstrip.props.height, 0, 0, 1.0, 1.0, gtk.gdk.INTERP_HYPER, 255) + thumbnail = gtk.gdk.pixbuf_new_from_file(thm) + aspect = float(thumbnail.get_height()) / thumbnail.get_width() + thumbnail = thumbnail.scale_simple(size, int(aspect*size), gtk.gdk.INTERP_BILINEAR) + thumbnail = add_filmstrip(thumbnail) else: if ffmpeg: - tmp = tempfile.NamedTemporaryFile(dir=tempWorkingDir, prefix="rpd-tmp") - tmp.close() + try: + tmp = tempfile.NamedTemporaryFile(dir=tempWorkingDir, prefix="rpd-tmp") + tmp.close() + except: + return None thm = os.path.join(tempWorkingDir, tmp.name) diff --git a/setup.py b/setup.py index 0e2fa9f..a1bebf5 100644 --- a/setup.py +++ b/setup.py @@ -43,7 +43,22 @@ class InstallData(install_data): return data_files -package_data={'rapid': ['glade3/rapid.glade', 'glade3/rapid-photo-downloader-about.png', 'glade3/image-missing.svg', 'glade3/video.svg', 'glade3/filmstrip-100x75.xpm']} +package_data={'rapid': ['glade3/rapid.glade', + 'glade3/rapid-photo-downloader.svg', + 'glade3/rapid-photo-downloader-download-pending.svg', + 'glade3/rapid-photo-downloader-downloaded-with-error.svg', + 'glade3/rapid-photo-downloader-downloaded-with-warning.svg', + 'glade3/rapid-photo-downloader-downloaded.svg', + 'glade3/rapid-photo-downloader-jobcode.svg', + 'glade3/video.png', + 'glade3/video24.png', + 'glade3/video_shadow.png', + 'glade3/video_small_shadow.png', + 'glade3/photo.png', + 'glade3/photo_shadow.png', + 'glade3/photo_small_shadow.png', + 'glade3/photo24.png' + ]} setup(name=name, version=version, -- cgit v1.2.3