diff -Nru pdfarranger-1.4.2/AUTHORS pdfarranger-1.6.2/AUTHORS --- pdfarranger-1.4.2/AUTHORS 2020-03-14 20:55:12.000000000 +0000 +++ pdfarranger-1.6.2/AUTHORS 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -Konstantinos Poulios diff -Nru pdfarranger-1.4.2/data/com.github.jeromerobert.pdfarranger.desktop pdfarranger-1.6.2/data/com.github.jeromerobert.pdfarranger.desktop --- pdfarranger-1.4.2/data/com.github.jeromerobert.pdfarranger.desktop 1970-01-01 00:00:00.000000000 +0000 +++ pdfarranger-1.6.2/data/com.github.jeromerobert.pdfarranger.desktop 2020-08-01 09:52:15.000000000 +0000 @@ -0,0 +1,18 @@ +[Desktop Entry] +Version=1.0 +Name=PDF Arranger +Name[hu]=PDF-rendező (PDF Arranger) +Comment=PDF Merging, Rearranging, Splitting, Rotating and Cropping +Comment[de]=PDFs zusammenfügen, umsortieren, trennen, rotieren und zuschneiden +Comment[es]=Mezcle, reordene, divida, rote y recorte documentos PDF +Comment[hu]=PDF egyesítése, átrendezése, felosztása, elforgatása és körülvágása +Comment[sk]=Grafický nástroj na manipuláciu s PDF +Comment[sv]=Slå samman, arrangera om, dela, rotera och beskär PDF filer +Type=Application +Exec=pdfarranger %U +Icon=com.github.jeromerobert.pdfarranger +MimeType=application/pdf; +Categories=Office; +Terminal=false +StartupNotify=false +Keywords=pdfarranger;pdfshuffler;PDF Shuffler; diff -Nru pdfarranger-1.4.2/data/com.github.jeromerobert.pdfarranger.metainfo.xml pdfarranger-1.6.2/data/com.github.jeromerobert.pdfarranger.metainfo.xml --- pdfarranger-1.4.2/data/com.github.jeromerobert.pdfarranger.metainfo.xml 1970-01-01 00:00:00.000000000 +0000 +++ pdfarranger-1.6.2/data/com.github.jeromerobert.pdfarranger.metainfo.xml 2020-08-01 09:52:15.000000000 +0000 @@ -0,0 +1,45 @@ + + + + + com.github.jeromerobert.pdfarranger + PDF Arranger + PDF file merging, rearranging, and splitting + com.github.jeromerobert.pdfarranger.desktop + CC0-1.0 + + +

+ pdfarranger is a small application, which helps the user to merge or split pdf + documents and rotate, crop and rearrange their pages using an interactive and + intuitive graphical interface. + It is a frontend for pikepdf. +

+
+ https://github.com/jeromerobert/pdfarranger + + + https://github.com/jeromerobert/pdfarranger/raw/master/data/screenshot.png + + + + jeromerobert@gmx.com + + + + + + + + + + + + + GPL-3.0-or-later + https://github.com/jeromerobert/pdfarranger/issues +
Binary files /tmp/tmp4Xcnhk/uuoJLRnBIv/pdfarranger-1.4.2/data/icons/hicolor/16x16/apps/com.github.jeromerobert.pdfarranger.png and /tmp/tmp4Xcnhk/Aly3UbzjNt/pdfarranger-1.6.2/data/icons/hicolor/16x16/apps/com.github.jeromerobert.pdfarranger.png differ Binary files /tmp/tmp4Xcnhk/uuoJLRnBIv/pdfarranger-1.4.2/data/icons/hicolor/16x16/apps/pdfarranger.png and /tmp/tmp4Xcnhk/Aly3UbzjNt/pdfarranger-1.6.2/data/icons/hicolor/16x16/apps/pdfarranger.png differ Binary files /tmp/tmp4Xcnhk/uuoJLRnBIv/pdfarranger-1.4.2/data/icons/hicolor/256x256/apps/com.github.jeromerobert.pdfarranger.png and /tmp/tmp4Xcnhk/Aly3UbzjNt/pdfarranger-1.6.2/data/icons/hicolor/256x256/apps/com.github.jeromerobert.pdfarranger.png differ Binary files /tmp/tmp4Xcnhk/uuoJLRnBIv/pdfarranger-1.4.2/data/icons/hicolor/256x256/apps/pdfarranger.png and /tmp/tmp4Xcnhk/Aly3UbzjNt/pdfarranger-1.6.2/data/icons/hicolor/256x256/apps/pdfarranger.png differ Binary files /tmp/tmp4Xcnhk/uuoJLRnBIv/pdfarranger-1.4.2/data/icons/hicolor/32x32/apps/com.github.jeromerobert.pdfarranger.png and /tmp/tmp4Xcnhk/Aly3UbzjNt/pdfarranger-1.6.2/data/icons/hicolor/32x32/apps/com.github.jeromerobert.pdfarranger.png differ Binary files /tmp/tmp4Xcnhk/uuoJLRnBIv/pdfarranger-1.4.2/data/icons/hicolor/32x32/apps/pdfarranger.png and /tmp/tmp4Xcnhk/Aly3UbzjNt/pdfarranger-1.6.2/data/icons/hicolor/32x32/apps/pdfarranger.png differ Binary files /tmp/tmp4Xcnhk/uuoJLRnBIv/pdfarranger-1.4.2/data/icons/hicolor/48x48/apps/com.github.jeromerobert.pdfarranger.png and /tmp/tmp4Xcnhk/Aly3UbzjNt/pdfarranger-1.6.2/data/icons/hicolor/48x48/apps/com.github.jeromerobert.pdfarranger.png differ Binary files /tmp/tmp4Xcnhk/uuoJLRnBIv/pdfarranger-1.4.2/data/icons/hicolor/48x48/apps/pdfarranger.png and /tmp/tmp4Xcnhk/Aly3UbzjNt/pdfarranger-1.6.2/data/icons/hicolor/48x48/apps/pdfarranger.png differ diff -Nru pdfarranger-1.4.2/data/icons/hicolor/scalable/apps/com.github.jeromerobert.pdfarranger.svg pdfarranger-1.6.2/data/icons/hicolor/scalable/apps/com.github.jeromerobert.pdfarranger.svg --- pdfarranger-1.4.2/data/icons/hicolor/scalable/apps/com.github.jeromerobert.pdfarranger.svg 1970-01-01 00:00:00.000000000 +0000 +++ pdfarranger-1.6.2/data/icons/hicolor/scalable/apps/com.github.jeromerobert.pdfarranger.svg 2020-08-01 09:52:15.000000000 +0000 @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru pdfarranger-1.4.2/data/icons/hicolor/scalable/apps/pdfarranger.svg pdfarranger-1.6.2/data/icons/hicolor/scalable/apps/pdfarranger.svg --- pdfarranger-1.4.2/data/icons/hicolor/scalable/apps/pdfarranger.svg 2020-03-14 20:55:12.000000000 +0000 +++ pdfarranger-1.6.2/data/icons/hicolor/scalable/apps/pdfarranger.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -PDFPDF \ No newline at end of file diff -Nru pdfarranger-1.4.2/data/menu.ui pdfarranger-1.6.2/data/menu.ui --- pdfarranger-1.4.2/data/menu.ui 1970-01-01 00:00:00.000000000 +0000 +++ pdfarranger-1.6.2/data/menu.ui 2020-08-01 09:52:15.000000000 +0000 @@ -0,0 +1,223 @@ + + + + +
+ + _Import + win.import + +
+
+ + _Save + win.save + document-save-symbolic + + + Save _As… + win.save-as + document-save-as-symbolic + + + E_xport Selection… + win.export-selection + +
+
+ + _Undo + win.undo + + + _Redo + win.redo + +
+ + _Edit +
+ + Rotate _Left + win.rotate + -90 + + + _Rotate Right + win.rotate + 90 + + + Cro_p + win.crop + + + _Delete + win.delete + + + Dupl_icate + win.duplicate + + + Re_verse Order + win.reverse-order + + + _Split pages + win.split + + + Cu_t + win.cut + + + _Copy + win.copy + + + Paste _After + win.paste + 0 + + + Paste _Before + win.paste + 1 + + + Paste Interleave _Odd + win.paste + 2 + + + Paste Interleave _Even + win.paste + 3 + +
+
+
+ + Zoom _In + win.zoom + 5 + + + Zoom _Out + win.zoom + -5 + +
+
+ + Edit _Properties + win.metadata + +
+
+ + _About + win.about + +
+
+ + _Quit + win.quit + +
+
+ +
+ + _Delete + win.delete + + + Cu_t + win.cut + + + _Copy + win.copy + + + Paste _After + win.paste + 0 + + + Past_e Special +
+ + Paste _Before + win.paste + 1 + + + Paste Interleave _Odd + win.paste + 2 + + + Paste Interleave _Even + win.paste + 3 + +
+
+
+
+ + Rotate _Left + win.rotate + -90 + + + _Rotate Right + win.rotate + 90 + + + Cro_p + win.crop + + + Dupl_icate + win.duplicate + + + Re_verse Order + win.reverse-order + + + _Split Pages + win.split + +
+
+ + E_xport Selection… + win.export-selection + +
+
+
diff -Nru pdfarranger-1.4.2/data/pdfarranger.appdata.xml pdfarranger-1.6.2/data/pdfarranger.appdata.xml --- pdfarranger-1.4.2/data/pdfarranger.appdata.xml 2020-03-14 20:55:12.000000000 +0000 +++ pdfarranger-1.6.2/data/pdfarranger.appdata.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,29 +0,0 @@ - - - - - - pdfarranger.desktop - CC0-1.0 - -

- pdfarranger is a small application, which helps the user to merge or split pdf - documents and rotate, crop and rearrange their pages using an interactive and - intuitive graphical interface. - It is a frontend for pikepdf. -

- -
- https://github.com/jeromerobert/pdfarranger - - http://screenshots.debian.net/screenshots/000/017/031/large.png - - jeromerobert@gmx.com -
diff -Nru pdfarranger-1.4.2/data/pdfarranger.desktop pdfarranger-1.6.2/data/pdfarranger.desktop --- pdfarranger-1.4.2/data/pdfarranger.desktop 2020-03-14 20:55:12.000000000 +0000 +++ pdfarranger-1.6.2/data/pdfarranger.desktop 1970-01-01 00:00:00.000000000 +0000 @@ -1,14 +0,0 @@ -[Desktop Entry] -Version=1.0 -Name=PDF Arranger -Comment=PDF Merging, Rearranging, Splitting, Rotating and Cropping -Comment[de]=PDFs zusammenfügen, umsortieren, trennen, rotieren und zuschneiden -Comment[es]=Mezcle, reordene, divida, rote y recorte documentos PDF -Comment[sk]=Grafický nástroj na manipuláciu s PDF -Type=Application -Exec=pdfarranger %U -Icon=pdfarranger -MimeType=application/pdf; -Categories=Office; -Terminal=false -StartupNotify=false Binary files /tmp/tmp4Xcnhk/uuoJLRnBIv/pdfarranger-1.4.2/data/pdfarranger.ico and /tmp/tmp4Xcnhk/Aly3UbzjNt/pdfarranger-1.6.2/data/pdfarranger.ico differ diff -Nru pdfarranger-1.4.2/data/pdfarranger.ui pdfarranger-1.6.2/data/pdfarranger.ui --- pdfarranger-1.4.2/data/pdfarranger.ui 2020-03-14 20:55:12.000000000 +0000 +++ pdfarranger-1.6.2/data/pdfarranger.ui 2020-08-01 09:52:15.000000000 +0000 @@ -1,470 +1,284 @@ - + - - - - - + False - - + False + + True False - vertical + 4 + True - + True False + True - - False - True - False - _File - True - - - True - False - - - gtk-add - True - False - True - True - win.import - - - - - gtk-save - True - False - True - True - win.save - - - - - gtk-save-as - True - False - True - True - win.save-as - - - - - _Export selection... - True - True - False - win.export-selection - - - - - True - False - - - - - gtk-quit - True - False - True - True - win.quit - - - - - - - - - False + True False - _Edit - True - - + False + False + Open a file and append it to the current document + win.import + + True False - - - gtk-undo - False - False - True - True - win.undo - - - - - gtk-redo - False - False - True - True - win.redo - - - - - False - False - - - - - Rotate left - True - False - False - win.rotate - -90 - - - - - Rotate right - True - False - False - win.rotate - 90 - - - - - True - False - - - - - Crop - True - False - False - win.crop - - - - - gtk-delete - True - False - True - True - win.delete - - - - - Du_plicate - True - False - False - True - False - win.duplicate - - - - - Reverse Order - True - False - False - False - win.reverse-order - - - - - Split pages - True - False - False - False - win.split - - - - - Edit properties - True - False - False - False - win.metadata - - + insert-image-symbolic + True + + False + True + 0 + - - False + True False - _View - True - - + False + Save + win.save + + True False - - - Zoom in - True - False - True - True - win.zoom - 5 - - - - - Zoom out - True - False - True - True - win.zoom - -5 - - + document-save-symbolic + + False + True + 1 + - - False + True False - _Help - True - - + False + Save As + win.save-as + + True False - - - gtk-about - False - True - False - True - True - - - + document-save-as-symbolic + + False + True + 2 + + + + + + + True + False + False + False + 3 + 0 + etched-out + digits + Number of Pages - False - True - 0 + 4 - + True False + False + False + Main Menu - + True False - True - Open a file and append it to the current document - Import - True - gtk-add - win.import + open-menu-symbolic - - False - True - - - - - False - False - False - True - Save - True - gtk-save - - - False - True - - - - - True - False - Save as - True - gtk-save-as - win.save-as - - - False - True - - - - - True - False - - - False - True - + + + end + 1 + + + + + True + False + True - + True False - True - Zoom in - Zoom in - True - gtk-zoom-in + False + False + Zoom In win.zoom 5 + + + True + False + zoom-in-symbolic + + + False - True + True + 0 - + True False - True - Zoom out - Zoom out - True - gtk-zoom-out + False + False + Zoom Out win.zoom -5 + + + True + False + zoom-out-symbolic + + + False - True - - - - - True - False - - - False - True + True + 1 + + + + end + 2 + + + + + True + False + True - + True False - True - Rotate left - Rotate left - True - object-rotate-left + False + False + Rotate Left win.rotate -90 + + + True + False + object-rotate-left-symbolic + + + False - True + True + 0 - + True False - True - Rotate right - Rotate right - True - object-rotate-right + False + False + Rotate Right win.rotate 90 + + + True + False + object-rotate-right-symbolic + + + False - True - - - - - True - False - True - Delete - Delete - True - gtk-delete - win.delete - - - False - True + True + 1 + - False - True - 1 + end + 3 + + + + + True + False + vertical True @@ -495,71 +309,4 @@ - - - - Rotate _Left - True - True - False - win.rotate - -90 - - - - - _Rotate Right - True - True - False - win.rotate - 90 - - - - - C_rop - True - True - False - win.crop - - - - - _Delete - True - True - False - win.delete - - - - - Du_plicate - True - True - False - win.duplicate - - - - - Re_verse Order - True - True - False - win.reverse-order - - - - - _Export selection... - True - True - False - win.export-selection - - - diff -Nru pdfarranger-1.4.2/data/README pdfarranger-1.6.2/data/README --- pdfarranger-1.4.2/data/README 2020-03-14 20:55:12.000000000 +0000 +++ pdfarranger-1.6.2/data/README 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -# Copyright (C) 2008-2017 Konstantinos Poulios - -All data files under this directory all any subdirectories are part of PDF-Shuffler -which is released under the GNU General Public License version 3 or later. -See file COPYING or go to for full license details. Binary files /tmp/tmp4Xcnhk/uuoJLRnBIv/pdfarranger-1.4.2/data/screenshot.png and /tmp/tmp4Xcnhk/Aly3UbzjNt/pdfarranger-1.6.2/data/screenshot.png differ diff -Nru pdfarranger-1.4.2/debian/changelog pdfarranger-1.6.2/debian/changelog --- pdfarranger-1.4.2/debian/changelog 2020-03-17 13:44:57.000000000 +0000 +++ pdfarranger-1.6.2/debian/changelog 2020-08-25 18:36:12.000000000 +0000 @@ -1,3 +1,14 @@ +pdfarranger (1.6.2-1) unstable; urgency=medium + + * Team upload. + * New upstream version 1.6.2 (Closes: #968866). + - Update debian/copyright. + * Add missing python3-pkg-resources dep (Closes: #965104). + * Bump debhelper from old 12 to 13. + * Set Rules-Requires-Root: no. + + -- Tristan Seligmann Tue, 25 Aug 2020 20:36:12 +0200 + pdfarranger (1.4.2-1) unstable; urgency=medium * Team upload. diff -Nru pdfarranger-1.4.2/debian/control pdfarranger-1.6.2/debian/control --- pdfarranger-1.4.2/debian/control 2020-03-17 13:43:29.000000000 +0000 +++ pdfarranger-1.6.2/debian/control 2020-08-25 18:36:12.000000000 +0000 @@ -5,15 +5,17 @@ Uploaders: Vincent Cheng , Jeremy Lainé , Jeremy Bicha -Build-Depends: debhelper-compat (= 12), +Build-Depends: debhelper-compat (= 13), dh-python, python3, python3-distutils-extra, + python3-pkg-resources, python3-setuptools Standards-Version: 4.5.0 Homepage: https://github.com/jeromerobert/pdfarranger Vcs-Git: https://salsa.debian.org/python-team/applications/pdfarranger.git Vcs-Browser: https://salsa.debian.org/python-team/applications/pdfarranger +Rules-Requires-Root: no Package: pdfarranger Architecture: all @@ -25,7 +27,8 @@ python3-cairo, python3-gi, python3-gi-cairo, - python3-pikepdf + python3-pikepdf, + python3-pkg-resources Description: merge, split and re-arrange pages from PDF documents PDF Arranger is a small application which allows one to merge or split pdf documents and rotate, crop and rearrange their pages using an interactive diff -Nru pdfarranger-1.4.2/debian/copyright pdfarranger-1.6.2/debian/copyright --- pdfarranger-1.4.2/debian/copyright 2020-03-17 13:35:55.000000000 +0000 +++ pdfarranger-1.6.2/debian/copyright 2020-08-25 18:36:12.000000000 +0000 @@ -12,7 +12,7 @@ 2014-2016 Vincent Cheng License: GPL-3+ -Files: data/pdfarranger.appdata.xml +Files: data/com.github.jeromerobert.pdfarranger.metainfo.xml Copyright: 2014 Richard Hughes License: CC0-1.0 diff -Nru pdfarranger-1.4.2/debian/pdfarranger.docs pdfarranger-1.6.2/debian/pdfarranger.docs --- pdfarranger-1.4.2/debian/pdfarranger.docs 2020-03-17 13:35:55.000000000 +0000 +++ pdfarranger-1.6.2/debian/pdfarranger.docs 2020-08-25 18:36:12.000000000 +0000 @@ -1,3 +1 @@ -AUTHORS README.md -TODO diff -Nru pdfarranger-1.4.2/flatpak.yaml pdfarranger-1.6.2/flatpak.yaml --- pdfarranger-1.4.2/flatpak.yaml 2020-03-14 20:55:12.000000000 +0000 +++ pdfarranger-1.6.2/flatpak.yaml 1970-01-01 00:00:00.000000000 +0000 @@ -1,68 +0,0 @@ ---- -id: com.github.jeromerobert.pdfarranger -runtime: org.gnome.Platform -runtime-version: '3.34' -sdk: org.gnome.Sdk -command: pdfarranger -modules: -- name: intltool - cleanup: [ "*" ] - sources: - - type: archive - url: https://launchpad.net/intltool/trunk/0.51.0/+download/intltool-0.51.0.tar.gz - sha256: 67c74d94196b153b774ab9f89b2fa6c6ba79352407037c8c14d5aeb334e959cd -- name: openjpeg - buildsystem: cmake - sources: - - url: https://github.com/uclouvain/openjpeg/archive/v2.3.0.tar.gz - sha256: 3dc787c1bb6023ba846c2a0d9b1f6e179f1cd255172bde9eb75b01f1e6c7d71a - type: archive - config-opts: [ "-DBUILD_STATIC_LIBS=OFF" ] -- name: poppler - buildsystem: cmake - sources: - - url: https://poppler.freedesktop.org/poppler-0.71.0.tar.xz - sha256: badbecd2dddf63352fd85ec08a9c2ed122fdadacf2a34fcb4cc227c4d01f2cf9 - type: archive - config-opts: [ "-DENABLE_UTILS=OFF", "-DENABLE_CPP=OFF" ] -- name: python-distutils-extra - buildsystem: simple - sources: - - url: https://launchpad.net/python-distutils-extra/trunk/2.39/+download/python-distutils-extra-2.39.tar.gz - sha256: 723f24f4d65fc8d99b33a002fbbb3771d4cc9d664c97085bf37f3997ae8063af - type: archive - build-commands: - - pip3 install --prefix=/app . -- name: pikepdf - buildsystem: simple - build-commands: - - pip3 install --no-index --prefix=$FLATPAK_DEST lxml-*.whl pikepdf-*.whl - sources: - - type: file - url: https://files.pythonhosted.org/packages/25/a0/816397f097ec58af4a9959130c0f748861ecf29d71e1f184b868738aa203/pikepdf-1.8.1-cp37-cp37m-manylinux2010_x86_64.whl - sha256: ce43742788e5757877b6d83134f8a554aef8fc90990a844075464b757bc57cd8 - - type: file - url: https://files.pythonhosted.org/packages/95/60/552fc6e027bc1158ba4691cccfdf6eb77f206f2f21d3c1c5f23b89f68a0e/lxml-4.4.2-cp37-cp37m-manylinux1_x86_64.whl - sha256: 61409bd745a265a742f2693e4600e4dbd45cc1daebe1d5fad6fcb22912d44145 -- name: pdfarranger - buildsystem: simple - sources: - - url: https://github.com/jeromerobert/pdfarranger - commit: master - type: git - build-commands: - - pip3 install --prefix=/app . -cleanup: -- /include -- /lib/pkgconfig -- /app/lib/openjpeg-2.3 -- /app/bin/opj_* -finish-args: -- --socket=wayland -- --socket=x11 -- --share=ipc -- --filesystem=home -- --filesystem=xdg-run/dconf -- --filesystem=~/.config/dconf:ro -- --talk-name=ca.desrt.dconf -- --env=DCONF_USER_CONFIG_DIR=.config/dconf diff -Nru pdfarranger-1.4.2/pdfarranger/exporter.py pdfarranger-1.6.2/pdfarranger/exporter.py --- pdfarranger-1.4.2/pdfarranger/exporter.py 2020-03-14 20:55:12.000000000 +0000 +++ pdfarranger-1.6.2/pdfarranger/exporter.py 2020-08-01 09:52:15.000000000 +0000 @@ -78,7 +78,18 @@ pdf_output.pages.append(new_page) ppae = metadata.PRODUCER not in mdata with pdf_output.open_metadata(set_pikepdf_as_editor=ppae) as outmeta: - outmeta.load_from_docinfo(pdf_input[0].docinfo) + if len(pdf_input) > 0: + metadata.load_from_docinfo(outmeta, pdf_input[0]) for k, v in mdata.items(): outmeta[k] = v pdf_output.save(file_out) + +def num_pages(filepath): + """Get number of pages for filepath.""" + try: + pdf = pikepdf.Pdf.open(filepath) + except pikepdf._qpdf.PdfError: + return None + npages = len(pdf.pages) + pdf.close() + return npages diff -Nru pdfarranger-1.4.2/pdfarranger/iconview.py pdfarranger-1.6.2/pdfarranger/iconview.py --- pdfarranger-1.4.2/pdfarranger/iconview.py 2020-03-14 20:55:12.000000000 +0000 +++ pdfarranger-1.6.2/pdfarranger/iconview.py 2020-08-01 09:52:15.000000000 +0000 @@ -64,8 +64,8 @@ w1, h1 = w0, h0 scale = self.resample * self.scale - w2 = int(scale * (1. - self.cropL - self.cropR) * w1) - h2 = int(scale * (1. - self.cropT - self.cropB) * h1) + w2 = int(0.5 + scale * (1. - self.cropL - self.cropR) * w1) + h2 = int(0.5 + scale * (1. - self.cropT - self.cropB) * h1) return w0, h0, w1, h1, w2, h2, rotation @@ -87,10 +87,8 @@ x = cell_area.x y = cell_area.y if cell_area and w > 0 and h > 0: - x += self.get_property('xalign') * ( - cell_area.width - w - self.get_property('xpad')) - y += self.get_property('yalign') * ( - cell_area.height - h - self.get_property('ypad')) + x += self.get_property('xalign') * (cell_area.width - w) + y += self.get_property('yalign') * (cell_area.height - h) window.translate(x, y) diff -Nru pdfarranger-1.4.2/pdfarranger/metadata.py pdfarranger-1.6.2/pdfarranger/metadata.py --- pdfarranger-1.4.2/pdfarranger/metadata.py 2020-03-14 20:55:12.000000000 +0000 +++ pdfarranger-1.6.2/pdfarranger/metadata.py 2020-08-01 09:52:15.000000000 +0000 @@ -20,6 +20,7 @@ import gettext import re import json +import traceback from gi.repository import Gtk _ = gettext.gettext @@ -54,13 +55,25 @@ return True +def load_from_docinfo(meta, doc): + """ + wrapper of pikepdf.models.PdfMetadata.load_from_docinfo with a workaround + for https://github.com/pikepdf/pikepdf/issues/100 + """ + try: + meta.load_from_docinfo(doc.docinfo) + except NotImplementedError: + # DocumentInfo cannot be loaded and will be lost. Not a that big issue. + traceback.print_exc() + + def merge(metadata, input_files): """ Merge current global metadata and each imported files meta data """ r = metadata.copy() for p in input_files: doc = pikepdf.open(p.copyname) with doc.open_metadata() as meta: - meta.load_from_docinfo(doc.docinfo) + load_from_docinfo(meta, doc) for k, v in meta.items(): if not _pikepdf_meta_is_valid(v): # workaround for https://github.com/pikepdf/pikepdf/issues/84 @@ -72,19 +85,17 @@ def _metatostr(value, name): """ Convert a meta data value from list to string if it's not a string """ - if isinstance(value, str) and len(value) > 0: + if isinstance(value, str): return value - elif isinstance(value, list) and len(value) > 0 and name == _CREATOR: + elif isinstance(value, list) and name == _CREATOR: if len(value) == 1: return _metatostr(value[0], name) else: return json.dumps(value) - return None + return '' def _strtometa(value, name): - if value is None or len(value) == 0: - return None try: r = json.loads(value) if name == _CREATOR else value if isinstance(r, list): @@ -170,10 +181,5 @@ dialog.destroy() if r: for row in liststore: - value = _strtometa(row[1], row[2]) - if value is None: - if row[2] in metadata: - del metadata[row[2]] - else: - metadata[row[2]] = value + metadata[row[2]] = _strtometa(row[1], row[2]) return r diff -Nru pdfarranger-1.4.2/pdfarranger/pdfarranger.py pdfarranger-1.6.2/pdfarranger/pdfarranger.py --- pdfarranger-1.4.2/pdfarranger/pdfarranger.py 2020-03-14 20:55:12.000000000 +0000 +++ pdfarranger-1.6.2/pdfarranger/pdfarranger.py 2020-08-01 09:52:15.000000000 +0000 @@ -20,6 +20,7 @@ import threading import tempfile import signal +import mimetypes import pathlib import platform import configparser @@ -27,8 +28,16 @@ import traceback import locale # for multilanguage support import gettext +import gc from urllib.request import url2pathname +try: + import img2pdf + img2pdf.Image.init() + img2pdf_supported_img = [i for i in img2pdf.Image.MIME.values() if i.split('/')[0] == 'image'] +except ImportError: + img2pdf = None + sharedir = os.path.join(sys.prefix, 'share') basedir = '.' if getattr(sys, 'frozen', False): @@ -48,6 +57,7 @@ locale.setlocale(locale.LC_ALL, '') DOMAIN = 'pdfarranger' +ICON_ID = 'com.github.jeromerobert.' + DOMAIN if os.name == 'nt': from ctypes import cdll @@ -63,9 +73,13 @@ pass APPNAME = 'PDF Arranger' -VERSION = '1.4.2' +VERSION = '1.6.2' WEBSITE = 'https://github.com/jeromerobert/pdfarranger' -LICENSE = 'GNU General Public License (GPL) Version 3.' + +# Add support for dnd to other instance and insert file at drop location in Windows +if os.name == 'nt': + import keyboard # to get control key state when drag to other instance + os.environ['GDK_WIN32_USE_EXPERIMENTAL_OLE2_DND'] = 'true' import gi @@ -74,13 +88,13 @@ gi.require_version('Gtk', '3.0') from gi.repository import Gtk -if Gtk.check_version(3, 4, 0): +if Gtk.check_version(3, 12, 0): raise Exception('You do not have the required version of GTK+ installed. ' + 'Installed GTK+ version is ' + '.'.join([str(Gtk.get_major_version()), str(Gtk.get_minor_version()), str(Gtk.get_micro_version())]) + - '. Required GTK+ version is 3.4 or higher.') + '. Required GTK+ version is 3.12 or higher.') from gi.repository import Gdk from gi.repository import GObject # for using custom signals @@ -159,14 +173,14 @@ def maximized(self): return self.data.getboolean('window', 'maximized', fallback=False) - def set_maximized(self, m): - self.data.set('window', 'maximized', str(m)) + def set_maximized(self, maximized): + self.data.set('window', 'maximized', str(maximized)) def zoom_level(self): return self.data.getint('DEFAULT', 'zoom-level', fallback=0) - def set_zoom_level(self, l): - self.data.set('DEFAULT', 'zoom-level', str(l)) + def set_zoom_level(self, level): + self.data.set('DEFAULT', 'zoom-level', str(level)) def save(self): conffile = Config._config_file() @@ -184,7 +198,8 @@ def __call__(self, message, category, filename, lineno, f=None, line=None): s = warnings.formatwarning(message, category, filename, lineno, line) - sys.stderr.write(s + '\n') + if sys.stderr is not None: + sys.stderr.write(s + '\n') self.buffer += str(message) + '\n' def wrapper(*args, **kwargs): @@ -201,18 +216,13 @@ return wrapper -def get_file_path_from_dnd_dropped_uri(uri): +def get_file_path_from_uri(uri): """Extracts the path from an uri""" + uri = uri[5:] # remove 'file:' path = url2pathname(uri) # escape special chars - path = path.strip('\r\n\x00') # remove \r\n and NULL - - # get the path to file - if path.startswith('file:\\\\\\'): # windows - path = path[8:] # 8 is len('file:///') - elif path.startswith('file://'): # nautilus, rox - path = path[7:] # 7 is len('file://') - elif path.startswith('file:'): # xffm - path = path[5:] # 5 is len('file:') + path = path.strip('\r\n\x00\x2F') # remove \r\n and NULL and \ + if os.name == 'posix': + path = '/' + path return path @@ -257,17 +267,28 @@ self.is_unsaved = False self.zoom_level = None self.zoom_scale = None + self.target_is_intern = True self.export_directory = os.path.expanduser('~') self.import_directory = self.export_directory self.nfile = 0 self.iv_auto_scroll_direction = 0 self.iv_auto_scroll_timer = None + self.vp_css_margin = 0 self.pdfqueue = [] self.metadata = {} self.pressed_button = None self.rendering_thread = None self.export_file = None + self.drag_path = None + self.drag_pos = Gtk.IconViewDropPosition.DROP_RIGHT + + # Clipboard for cut copy paste + self.clipboard_default = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD) + if os.name == 'posix': + # "private" clipboard does not work in Windows so we can't use it here + self.clipboard_pdfarranger = Gtk.Clipboard.get(Gdk.Atom.intern('_SELECTION_PDFARRANGER', + False)) def do_open(self, files, _n, _hints): """ https://lazka.github.io/pgi-docs/Gio-2.0/classes/Application.html#Gio.Application.do_open """ @@ -276,17 +297,42 @@ a = PageAdder(self) for f in files: a.addpages(f.get_path()) - a.commit() + a.commit(select_added=False, add_to_undomanager=True) if len(files) == 1: self.set_unsaved(False) + def __build_from_file(self, path): + """ Return the path of a resource file """ + # TODO: May be we could use Application.set_resource_base_path and + # get_menu_by_id in place of that + # Trying different possible locations + f = os.path.join(basedir, 'share', DOMAIN, path) + if not os.path.exists(f): + f = os.path.join(basedir, 'data', path) + if not os.path.exists(f): + f = '/usr/share/{}/{}'.format(DOMAIN, path) + if not os.path.exists(f): + f = '/usr/local/share/{}/{}'.format(DOMAIN, path) + b = Gtk.Builder() + b.set_translation_domain(DOMAIN) + b.add_from_file(f) + b.connect_signals(self) + return b + + def __create_menus(self): + b = self.__build_from_file("menu.ui") + self.popup = Gtk.Menu.new_from_model(b.get_object("popup_menu")) + self.popup.attach_to_widget(self.window, None) + main_menu = self.uiXML.get_object("main_menu_button") + main_menu.set_menu_model(b.get_object("main_menu")) + def __create_actions(self): # Both Gtk.ApplicationWindow and Gtk.Application are Gio.ActionMap. Some action are window # related some other are application related. As pdfarrager is a single window app does not # matter that much. self.window.add_action_entries([ ('rotate', self.rotate_page_action, 'i'), - ('delete', self.clear_selected), + ('delete', self.on_action_delete), ('duplicate', self.duplicate), ('crop', self.crop_page_dialog), ('export-selection', self.choose_export_selection_pdf_name), @@ -300,7 +346,15 @@ ('redo', self.undomanager.redo), ('split', self.split_pages), ('metadata', self.edit_metadata), + ('cut', self.on_action_cut), + ('copy', self.on_action_copy), + ('paste', self.on_action_paste, 'i'), + ('about', self.about_dialog), ]) + + main_menu = self.uiXML.get_object("main_menu_button") + self.window.add_action(Gio.PropertyAction.new("main-menu", main_menu, "active")) + accels = [ ('delete', 'Delete'), ('crop', 'c'), @@ -311,23 +365,22 @@ ('export-selection', 'e'), ('quit', 'q'), ('import', 'Insert'), - ('zoom(5)', 'plus'), - ('zoom(-5)', 'minus'), + ('zoom(5)', ['plus', 'KP_Add']), + ('zoom(-5)', ['minus', 'KP_Subtract']), ('undo', 'z'), ('redo', 'y'), + ('cut', 'x'), + ('copy', 'c'), + ('paste(0)', 'v'), + ('paste(1)', 'v'), + ('main-menu', 'F10'), ] for a, k in accels: - self.set_accels_for_action("win." + a, [k]) + self.set_accels_for_action("win." + a, [k] if isinstance(k, str) else k) # Disable actions self.iv_selection_changed_event() - # Display accelerators in the menus - for o in self.uiXML.get_objects(): - if isinstance(o, Gtk.MenuItem) and o.get_action_name() is not None: - an = Gio.Action.print_detailed_name(o.get_action_name(), - o.get_action_target_value()) - a = self.get_accels_for_action(an) - if len(a) > 0: - o.get_child().set_accel(*Gtk.accelerator_parse(a[0])) + self.window_focus_in_out_event() + self.__update_num_pages(self.iconview.get_model()) self.undomanager.set_actions(self.window.lookup_action('undo'), self.window.lookup_action('redo')) @@ -339,22 +392,8 @@ if not os.path.exists(iconsdir): iconsdir = os.path.join(sharedir, 'data', 'icons') Gtk.IconTheme.get_default().append_search_path(iconsdir) - Gtk.Window.set_default_icon_name(DOMAIN) - - # Import the user interface file, trying different possible locations - ui_path = os.path.join(basedir, 'share', DOMAIN, DOMAIN + '.ui') - if not os.path.exists(ui_path): - ui_path = os.path.join(basedir, 'data', DOMAIN + '.ui') - if not os.path.exists(ui_path): - ui_path = '/usr/share/{}/{}.ui'.format(DOMAIN, DOMAIN) - if not os.path.exists(ui_path): - ui_path = '/usr/local/share/{}/{}.ui'.format(DOMAIN, DOMAIN) - - self.uiXML = Gtk.Builder() - self.uiXML.set_translation_domain(DOMAIN) - self.uiXML.add_from_file(ui_path) - self.uiXML.connect_signals(self) - + Gtk.Window.set_default_icon_name(ICON_ID) + self.uiXML = self.__build_from_file(DOMAIN + '.ui') # Create the main window, and attach delete_event signal to terminating # the application self.window = self.uiXML.get_object('main_window') @@ -364,20 +403,19 @@ if self.config.maximized(): self.window.maximize() self.window.set_default_size(*self.config.window_size()) - self.window.connect('delete_event', self.close_application) + self.window.connect('delete_event', self.on_quit) + self.window.connect('focus_in_event', self.window_focus_in_out_event) + self.window.connect('focus_out_event', self.window_focus_in_out_event) if hasattr(GLib, "unix_signal_add"): GLib.unix_signal_add(GLib.PRIORITY_DEFAULT, signal.SIGINT, self.close_application) # Create a scrolled window to hold the thumbnails-container self.sw = self.uiXML.get_object('scrolledwindow') - self.sw.drag_dest_set(Gtk.DestDefaults.MOTION | - Gtk.DestDefaults.HIGHLIGHT | - Gtk.DestDefaults.DROP | - Gtk.DestDefaults.MOTION, + self.sw.drag_dest_set(Gtk.DestDefaults.HIGHLIGHT | + Gtk.DestDefaults.DROP, self.TARGETS_SW, - Gdk.DragAction.COPY | - Gdk.DragAction.MOVE) + Gdk.DragAction.COPY) self.sw.connect('drag_data_received', self.sw_dnd_received_data) self.sw.connect('button_press_event', self.sw_button_press_event) self.sw.connect('scroll_event', self.sw_scroll_event) @@ -406,6 +444,8 @@ self.iconview.set_item_width(-1) self.cellthmb = CellRendererImage() + self.cellthmb.set_padding(3, 3) + self.cellthmb.set_alignment(0.5, 0.5) self.iconview.pack_start(self.cellthmb, False) self.iconview.set_cell_data_func(self.cellthmb, self.set_cellrenderer_data, None) self.iconview.set_text_column(0) @@ -418,7 +458,8 @@ Gdk.DragAction.COPY | Gdk.DragAction.MOVE) self.iconview.enable_model_drag_dest(self.TARGETS_IV, - Gdk.DragAction.DEFAULT) + Gdk.DragAction.COPY | + Gdk.DragAction.MOVE) self.iconview.connect('drag_begin', self.iv_drag_begin) self.iconview.connect('drag_data_get', self.iv_dnd_get_data) self.iconview.connect('drag_data_received', self.iv_dnd_received_data) @@ -433,6 +474,10 @@ self.sw.add_with_viewport(self.iconview) + self.model.connect('row-inserted', self.__update_num_pages) + self.model.connect('row-deleted', self.__update_num_pages) + self.model.connect('row-deleted', self.reset_export_file) + # Progress bar self.progress_bar = self.uiXML.get_object('progressbar') @@ -455,8 +500,22 @@ self.iconview.override_background_color(Gtk.StateFlags.PRELIGHT, color_prelight) - self.popup = self.uiXML.get_object('popup_menu') - self.popup.attach_to_widget(self.window, None) + # Set outline properties for iconview items i.e. cursor look + style_provider = Gtk.CssProvider() + css_data = """ + iconview { + outline-color: alpha(currentColor, 0.8); + outline-style: dashed; + outline-offset: -2px; + outline-width: 2px; + -gtk-outline-radius: 2px; + } + """ + style_provider.load_from_data(bytes(css_data.encode())) + Gtk.StyleContext.add_provider_for_screen( + Gdk.Screen.get_default(), + style_provider, + Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION) GObject.type_register(PDFRenderer) GObject.signal_new('update_thumbnail', PDFRenderer, @@ -465,6 +524,7 @@ GObject.TYPE_FLOAT]) self.set_unsaved(False) self.__create_actions() + self.__create_menus() @staticmethod def set_cellrenderer_data(_column, cell, model, it, _data=None): @@ -492,22 +552,32 @@ self.progress_bar_timeout_id = \ GObject.timeout_add(50, self.progress_bar_timeout) + def set_export_file(self, file): + if file != self.export_file: + self.export_file = file + self.set_unsaved(True) + def set_unsaved(self, flag): self.is_unsaved = flag GObject.idle_add(self.retitle) def retitle(self): - all_files = self.active_file_names() - title = '' - if len(all_files) == 1: - title += all_files.pop() - elif len(all_files) == 0: - title += _("No document") + if self.export_file: + title = self.export_file + if self.is_unsaved: + title += '*' else: - title += _("Several documents") - if self.is_unsaved: - title += '*' - title += ' - ' + APPNAME + title = '' + + all_files = self.active_file_names() + if len(all_files) > 0: + if title: + title += ' ' + title += '[' + ', '.join(all_files) + ']' + + if title: + title += ' – ' + title += APPNAME self.window.set_title(title) return False @@ -521,7 +591,7 @@ fraction = 1 if cnt_all == 0 else cnt_finished / cnt_all self.progress_bar.set_fraction(fraction) - self.progress_bar.set_text(_('Rendering thumbnails... [%(i1)s/%(i2)s]') + self.progress_bar.set_text(_('Rendering thumbnails… [%(i1)s/%(i2)s]') % {'i1': cnt_finished, 'i2': cnt_all}) if fraction >= 0.999: self.progress_bar.hide() @@ -543,26 +613,41 @@ iconview cols no.""" if len(self.model) > 0: # scale*page_width*(1-crop_left-crop_right) - item_width = int(max(row[4] * row[11] * (1. - row[7] - row[8]) + item_width = int(max(0.5 + int(row[4] * row[11]) * (1. - row[7] - row[8]) for row in self.model)) - # FIXME: those are magic number found with my current GTK - # style. This might not be portable. - min_col_spacing = 19 - min_margin = 14 + item_padding = self.iconview.get_item_padding() + cellthmb_xpad, _cellthmb_ypad = self.cellthmb.get_padding() + border_and_shadow = 7 # 2*th1+th2 set in iconview.py + # cell width min limit 50 is set in gtkiconview.c + cell_width = max(item_width + 2 * cellthmb_xpad + border_and_shadow, 50) + self.cellthmb.set_fixed_size(cell_width, -1) + padded_cell_width = cell_width + 2 * item_padding + min_col_spacing = 5 + min_margin = 11 iw_width = window.get_size()[0] - # 2 * min_margin + col_num * item_width - # + min_col_spacing * (col_num-1) = iw_width - # min_margin+margin = min_col_spacing+col_spacing - # = (iw_width - col_num * item_width) / (col_num+1) + # 2 * min_margin + col_num * padded_cell_width + # + min_col_spacing * (col_num+1) = iw_width col_num = (iw_width - 2 * min_margin - min_col_spacing) //\ - (item_width + min_col_spacing) - spacing = (iw_width - col_num * item_width) // (col_num + 1) + (padded_cell_width + min_col_spacing) + spacing = (iw_width - col_num * padded_cell_width - 2 * min_margin) // (col_num + 1) + margin = (iw_width - col_num * (padded_cell_width + spacing) + spacing) // 2 if col_num == 0: col_num = 1 - spacing = min_margin + margin = 6 self.iconview.set_columns(col_num) - self.iconview.set_column_spacing(spacing - min_col_spacing) - self.iconview.set_margin_left(spacing - min_margin) + self.iconview.set_column_spacing(spacing) + self.iconview.set_margin(margin) + if self.vp_css_margin != 6 - margin: + # remove margin on top and bottom + self.vp_css_margin = 6 - margin + css_data = 'viewport {margin-top:' + str(self.vp_css_margin) + 'px;\ + margin-bottom:' + str(self.vp_css_margin) + 'px;}' + style_provider = Gtk.CssProvider() + style_provider.load_from_data(bytes(css_data.encode())) + Gtk.StyleContext.add_provider_for_screen( + Gdk.Screen.get_default(), + style_provider, + Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION) def update_geometry(self, treeiter): """Recomputes the width and height of the rotated page and saves @@ -584,7 +669,28 @@ self.model.set(treeiter, 11, w1, 12, h1) - def on_quit(self, _action, _param, _unknown): + def on_quit(self, _action, _param=None, _unknown=None): + if self.is_unsaved: + if self.export_file: + msg = _('Save changes to “{}” before closing?').format(os.path.basename(self.export_file)) + else: + msg = _('Save changes before closing?') + d = Gtk.MessageDialog(self.window, 0, Gtk.MessageType.WARNING, Gtk.ButtonsType.NONE, msg) + d.format_secondary_markup(_("Your changes will be lost if you don’t save them.")) + d.add_buttons(_('Do_n’t Save'), 1, _('_Cancel'), 2, _('_Save'), 3) + response = d.run() + d.destroy() + + if response == 2: + # Returning True to stop self.window delete_event propagation. + return True + elif response == 3: + # Save. + self.save_or_choose() + # Quit only if it has been really saved. + if self.is_unsaved: + return True + self.close_application() def close_application(self, _widget=None, _event=None, _data=None): @@ -600,6 +706,7 @@ # Release Poppler.Document instances to unlock all temporay files self.pdfqueue = [] + gc.collect() self.config.set_window_size(self.window.get_size()) self.config.set_maximized(self.window.is_maximized()) self.config.set_zoom_level(self.zoom_level) @@ -611,7 +718,7 @@ def choose_export_pdf_name(self, only_selected=False): """Handles choosing a name for exporting """ - chooser = Gtk.FileChooserDialog(title=_('Export ...'), + chooser = Gtk.FileChooserDialog(title=_('Export…'), parent=self.window, action=Gtk.FileChooserAction.SAVE, buttons=(Gtk.STOCK_CANCEL, @@ -633,19 +740,16 @@ filter_all.add_pattern('*') chooser.add_filter(filter_all) - while True: - response = chooser.run() - if response == Gtk.ResponseType.ACCEPT: - file_out = chooser.get_filename() - try: - self.save(only_selected, file_out) - except Exception as e: - traceback.print_exc() - chooser.destroy() - self.error_message_dialog(e) - return - break + response = chooser.run() + file_out = chooser.get_filename() chooser.destroy() + if response == Gtk.ResponseType.ACCEPT: + try: + self.save(only_selected, file_out) + except Exception as e: + traceback.print_exc() + self.error_message_dialog(e) + return def active_file_names(self): """Returns the file names currently associated with pages in the model.""" @@ -653,10 +757,16 @@ for row in self.model: nfile = row[2] f = self.pdfqueue[nfile - 1] - all_files.add(f.filename) + f = os.path.splitext(os.path.basename(f.filename))[0] + all_files.add(f) return all_files def on_action_save(self, _action, _param, _unknown): + self.save_or_choose() + + def save_or_choose(self): + """Saves to the previously exported file or shows the export dialog if + there was none.""" try: if self.export_file: self.save(False, self.export_file) @@ -681,17 +791,18 @@ to_export = [row for row in self.model if row.path in selection] else: self.export_directory = path - self.export_file = file_out - self.set_unsaved(False) + self.set_export_file(file_out) m = metadata.merge(self.metadata, self.pdfqueue) exporter.export(self.pdfqueue, to_export, file_out, m) + if not only_selected: + self.set_unsaved(False) def choose_export_selection_pdf_name(self, _action, _target, _unknown): self.choose_export_pdf_name(True) def on_action_add_doc_activate(self, _action, _param, _unknown): """Import doc""" - chooser = Gtk.FileChooserDialog(title=_('Import...'), + chooser = Gtk.FileChooserDialog(title=_('Import…'), parent=self.window, action=Gtk.FileChooserAction.OPEN, buttons=(Gtk.STOCK_CANCEL, @@ -706,6 +817,15 @@ filter_all.add_pattern('*') chooser.add_filter(filter_all) + if img2pdf: + filter_image = Gtk.FileFilter() + filter_image.set_name(_('Supported image files')) + for mime in img2pdf_supported_img: + filter_image.add_mime_type(mime) + for extension in mimetypes.guess_all_extensions(mime): + filter_image.add_pattern('*' + extension) + chooser.add_filter(filter_image) + filter_pdf = Gtk.FileFilter() filter_pdf.set_name(_('PDF files')) filter_pdf.add_pattern('*.pdf') @@ -717,17 +837,11 @@ if response == Gtk.ResponseType.ACCEPT: adder = PageAdder(self) for filename in chooser.get_filenames(): - try: - adder.addpages(filename) - except Exception as e: - traceback.print_exc() - chooser.destroy() - self.error_message_dialog(e) - return - adder.commit() + adder.addpages(filename) + adder.commit(select_added=False, add_to_undomanager=True) chooser.destroy() - def clear_selected(self, _action, _parameter, _unknown): + def clear_selected(self): """Removes the selected elements in the IconView""" self.undomanager.commit("Delete") @@ -746,100 +860,336 @@ self.iconview.select_path(path) self.iconview.grab_focus() - @staticmethod - def iv_drag_begin(iconview, context): - """Sets custom icon on drag begin for multiple items selected""" - if len(iconview.get_selected_items()) > 1: - iconview.stop_emission('drag_begin') - Gtk.drag_set_icon_name(context, "gtk-dnd-multiple", 0, 0) - - def iv_dnd_get_data(self, iconview, _context, - selection_data, _target_id, _etime): - """Handles requests for data by drag and drop in iconview""" + def copy_pages(self): + """Collect data from selected pages""" - model = iconview.get_model() + model = self.iconview.get_model() selection = self.iconview.get_selected_items() selection.sort(key=lambda x: x.get_indices()[0]) + data = [] for path in selection: - target = str(selection_data.get_target()) - if target == 'MODEL_ROW_INTERN': - data.append(str(path[0])) - elif target == 'MODEL_ROW_EXTERN': - it = model.get_iter(path) - nfile, npage, angle = model.get(it, 2, 3, 6) - crop = model.get(it, 7, 8, 9, 10) - pdfdoc = self.pdfqueue[nfile - 1] - data.append('\n'.join([pdfdoc.filename, - str(npage), - str(angle)] + - [str(side) for side in crop])) + it = model.get_iter(path) + nfile, npage, angle = model.get(it, 2, 3, 6) + crop = model.get(it, 7, 8, 9, 10) + pdfdoc = self.pdfqueue[nfile - 1] + data.append('\n'.join([pdfdoc.filename, + str(npage), + str(angle)] + + [str(side) for side in crop])) if data: data = '\n;\n'.join(data) - selection_data.set(selection_data.get_target(), 8, data.encode()) - def iv_dnd_received_data(self, iconview, context, x, y, - selection_data, _target_id, etime): - """Handles received data by drag and drop in iconview""" + return data - model = iconview.get_model() - data = selection_data.get_data() - if data: - data = data.decode().split('\n;\n') - item = iconview.get_dest_item_at_pos(x, y) - if item: - path, position = item + @staticmethod + def data_to_pageadder(data, pageadder): + """Data to pageadder.""" + tmp = data.pop(0).split('\n') + filename = tmp[0] + npage = int(tmp[1]) + if len(tmp) < 3: # Only when paste files interleaved + pageadder.addpages(filename, npage) + else: + angle = int(tmp[2]) + crop = [float(side) for side in tmp[3:7]] + pageadder.addpages(filename, npage, angle, crop) + + def is_data_valid(self, data): + """Validate data to be pasted from clipboard. Only used in Windows.""" + data_copy = data.copy() + data_valid = True + while data_copy: + try: + tmp = data_copy.pop(0).split('\n') + filename = tmp[0] + npage = int(tmp[1]) + angle = int(tmp[2]) + crop = [float(side) for side in tmp[3:7]] + if not (os.path.isfile(filename) and len(tmp) == 7 and + npage > 0 and angle in [0, 90, 180, 270] and + all((cr >= 0.0 and cr <= 0.99) for cr in crop) and + (crop[0] + crop[1] <= 0.99) and (crop[2] + crop[3] <= 0.99)): + data_valid = False + break + except (ValueError, IndexError): + data_valid = False + break + if not data_valid: + message = _('Pasted data not valid. Aborting paste.') + self.error_message_dialog(message) + return data_valid + + def paste_pages(self, data, before, ref_to, select_added): + """Paste pages to iconview""" + + pageadder = PageAdder(self) + if ref_to: + pageadder.move(ref_to, before) + if not before and ref_to: + data.reverse() + + while data: + self.data_to_pageadder(data, pageadder) + return pageadder.commit(select_added, add_to_undomanager=True) + + def paste_files(self, filepaths, before, ref_to): + """Paste files to iconview.""" + pageadder = PageAdder(self) + + for filepath in filepaths: + pageadder.move(ref_to, before) + pageadder.addpages(filepath) + pageadder.commit(select_added=False, add_to_undomanager=True) + + def paste_pages_interleave(self, data, before, ref_to): + """Paste pages or files interleved to iconview.""" + pageadder = PageAdder(self) + model = self.iconview.get_model() + iter_to = None + + self.undomanager.commit("Paste") + self.set_unsaved(True) + + while data: + self.data_to_pageadder(data, pageadder) + + pageadder.move(ref_to, before) + pageadder.commit(select_added=False, add_to_undomanager=False) + + if ref_to: + path = ref_to.get_path() + iter_to = model.get_iter(path) + iter_to = model.iter_next(iter_to) + if not before: + iter_to = model.iter_next(iter_to) + if iter_to: + path = model.get_path(iter_to) ref_to = Gtk.TreeRowReference.new(model, path) else: ref_to = None - position = Gtk.IconViewDropPosition.DROP_RIGHT - if len(model) > 0: # find the iterator of the last row - row = model[-1] - ref_to = Gtk.TreeRowReference.new(model, row.path) - if ref_to: - before = (position == Gtk.IconViewDropPosition.DROP_LEFT - or position == Gtk.IconViewDropPosition.DROP_ABOVE) - target = selection_data.get_target().name() - if target == 'MODEL_ROW_INTERN': - move = context.get_actions() & Gdk.DragAction.MOVE - self.undomanager.commit("Move" if move else "Copy") - self.set_unsaved(True) - data.sort(key=int, reverse=not before) - ref_from_list = [Gtk.TreeRowReference.new(model, Gtk.TreePath(p)) - for p in data] - iter_to = self.model.get_iter(ref_to.get_path()) - for ref_from in ref_from_list: - row = model[model.get_iter(ref_from.get_path())] - if before: - model.insert_before(iter_to, row[:]) + + def on_action_delete(self, _action, _parameter, _unknown): + """Removes the selected elements in the IconView""" + + self.clear_selected() + + def on_action_cut(self, _action, _param, _unknown): + """Cut selected pages to clipboard.""" + data = self.copy_pages() + if os.name == 'posix': + self.clipboard_pdfarranger.set_text(data, -1) + self.clipboard_default.set_text('', -1) + if os.name == 'nt': + self.clipboard_default.set_text('pdfarranger-clipboard\n' + data, -1) + + self.clear_selected() + self.window.lookup_action("paste").set_enabled(True) + + def on_action_copy(self, _action, _param, _unknown): + """Copy selected pages to clipboard.""" + data = self.copy_pages() + if os.name == 'posix': + self.clipboard_pdfarranger.set_text(data, -1) + self.clipboard_default.set_text('', -1) + if os.name == 'nt': + self.clipboard_default.set_text('pdfarranger-clipboard\n' + data, -1) + self.window.lookup_action("paste").set_enabled(True) + + def on_action_paste(self, _action, mode, _unknown): + """Paste pages or files from clipboard.""" + data, data_is_filepaths = self.read_from_clipboard() + if not data: + return + + pastemodes = {0: 'AFTER', 1: 'BEFORE', 2: 'ODD', 3: 'EVEN'} + pastemode = pastemodes[mode.get_int32()] + + ref_to, before = self.set_paste_location(pastemode, data_is_filepaths) + + if pastemode in ['AFTER', 'BEFORE']: + if data_is_filepaths: + self.paste_files(data, before, ref_to) + else: + self.paste_pages(data, before, ref_to, select_added=False) + elif pastemode in ['ODD', 'EVEN']: + if data_is_filepaths: + # Generate data to send to paste_pages_interleave + filepaths = [] + try: + for filepath in data: + filemime = mimetypes.guess_type(filepath)[0] + if not filemime: + raise PDFDocError(filepath + ':\n' + _('Unknown file format')) + if filemime == 'application/pdf': + num_pages = exporter.num_pages(filepath) + if num_pages is None: + raise PDFDocError(filepath + ':\n' + _('PDF document is damaged')) + for page in range(1, num_pages + 1): + filepaths.append('\n'.join([filepath, str(page)])) + elif filemime.split('/')[0] == 'image': + filepaths.append('\n'.join([filepath, str(1)])) else: - model.insert_after(iter_to, row[:]) - if move: - for ref_from in ref_from_list: - model.remove(model.get_iter(ref_from.get_path())) - - elif target == 'MODEL_ROW_EXTERN': - pageadder = PageAdder(self) - pageadder.move(ref_to, before) - if not before: - data.reverse() - while data: - tmp = data.pop(0).split('\n') - filename = tmp[0] - npage, angle = [int(k) for k in tmp[1:3]] - crop = [float(side) for side in tmp[3:7]] - pageadder.addpages(filename, npage, angle, crop) - if pageadder.commit() and context.get_actions() & Gdk.DragAction.MOVE: - context.finish(True, True, etime) + raise PDFDocError(filepath + ':\n' + _('File is neither pdf nor image')) + except PDFDocError as e: + print(e.message, file=sys.stderr) + self.error_message_dialog(e.message) + return + data = filepaths + self.paste_pages_interleave(data, before, ref_to) + + def read_from_clipboard(self): + """Read data from clipboards. Check if data is copied pages or files.""" + # In Linux, if default clipboard holds path to pdf or image files, + # these files will be pasted with precedence over copied pages. + # In Windows default clipboard is used for both copied pages and copied files. + # If id "pdfarranger-clipboard" is found pages is expected to be in clipboard, else files. + data = self.clipboard_default.wait_for_text() + if not data: + data = '' + + data_is_filepaths = False + if os.name == 'posix' and not data: + data = self.clipboard_pdfarranger.wait_for_text() + if data: + data = data.split('\n;\n') + elif os.name == 'nt' and data.startswith('pdfarranger-clipboard\n'): + data = data.replace('pdfarranger-clipboard\n', '', 1) + data = data.split('\n;\n') + if not self.is_data_valid(data): + data = [] + else: + data_is_filepaths = True + if os.name == 'posix' and data.startswith('x-special/nautilus-clipboard\ncopy'): + data = data.replace('x-special/nautilus-clipboard\ncopy', '', 1) + rows = data.split('\n') + rows = filter(None, rows) + data = [] + for row in rows: + if os.name == 'posix' and row.startswith('file:///'): # Dolphin, Nautilus + row = get_file_path_from_uri(row) + elif os.name == 'nt' and row.startswith('"') and row.endswith('"'): + row = row[1:-1] + if os.path.isfile(row): + data.append(row) + else: + data = [] + break + + return data, data_is_filepaths + + def set_paste_location(self, pastemode, data_is_filepaths): + """Sets reference where pages should be pasted and if before or after that.""" + model = self.iconview.get_model() + + selection = self.iconview.get_selected_items() + selection.sort(key=lambda x: x.get_indices()[0]) + if len(model) == 0: + before = True + ref_to = None + elif pastemode == 'AFTER': + last_row = model[-1] + if len(selection) == 0 or selection[-1] == last_row.path: + before = False + ref_to = None + elif data_is_filepaths: + before = True + path = selection[-1] + iter_next = model.iter_next(model.get_iter(path)) + path_next = model.get_path(iter_next) + ref_to = Gtk.TreeRowReference.new(model, path_next) + else: + before = False + ref_to = Gtk.TreeRowReference.new(model, selection[-1]) + else: + if pastemode == 'EVEN': + before = False + else: # BEFORE or ODD + before = True + if len(selection) == 0: + ref_to = Gtk.TreeRowReference.new(model, Gtk.TreePath(0)) + else: + ref_to = Gtk.TreeRowReference.new(model, selection[0]) + return ref_to, before + + @staticmethod + def iv_drag_begin(iconview, context): + """Sets custom drag icon.""" + selected_count = len(iconview.get_selected_items()) + stock_icon = "gtk-dnd-multiple" if selected_count > 1 else "gtk-dnd" + iconview.stop_emission('drag_begin') + Gtk.drag_set_icon_name(context, stock_icon, 16, 16) + + def iv_dnd_get_data(self, _iconview, _context, + selection_data, _target_id, _etime): + """Handles requests for data by drag and drop in iconview""" + + target = str(selection_data.get_target()) + if target == 'MODEL_ROW_INTERN': + self.target_is_intern = True + selection = self.iconview.get_selected_items() + selection.sort(key=lambda x: x.get_indices()[0]) + data = [] + for path in selection: + data.append(str(path[0])) + if data: + data = '\n;\n'.join(data) + elif target == 'MODEL_ROW_EXTERN': + self.target_is_intern = False + data = self.copy_pages() + else: + return + selection_data.set(selection_data.get_target(), 8, data.encode()) + + def iv_dnd_received_data(self, iconview, context, _x, _y, + selection_data, _target_id, etime): + """Handles received data by drag and drop in iconview""" + + model = iconview.get_model() + data = selection_data.get_data() + if not data: + return + data = data.decode().split('\n;\n') + if self.drag_path and len(model) > 0: + ref_to = Gtk.TreeRowReference.new(model, self.drag_path) + else: + ref_to = None + before = self.drag_pos == Gtk.IconViewDropPosition.DROP_LEFT + target = selection_data.get_target().name() + if target == 'MODEL_ROW_INTERN': + move = context.get_selected_action() & Gdk.DragAction.MOVE + self.undomanager.commit("Move" if move else "Copy") + self.set_unsaved(True) + data.sort(key=int, reverse=not before) + ref_from_list = [Gtk.TreeRowReference.new(model, Gtk.TreePath(p)) + for p in data] + iter_to = self.model.get_iter(ref_to.get_path()) + for ref_from in ref_from_list: + row = model[model.get_iter(ref_from.get_path())] + if before: + it = model.insert_before(iter_to, row[:]) + else: + it = model.insert_after(iter_to, row[:]) + path = model.get_path(it) + iconview.select_path(path) + if move: + for ref_from in ref_from_list: + model.remove(model.get_iter(ref_from.get_path())) + + elif target == 'MODEL_ROW_EXTERN': + changed = self.paste_pages(data, before, ref_to, select_added=True) + if changed and context.get_selected_action() & Gdk.DragAction.MOVE: + context.finish(True, True, etime) def iv_dnd_data_delete(self, _widget, _context): """Delete pages from a pdfarranger instance after they have been moved to another instance.""" - selection = self.iconview.get_selected_items() - if len(selection) == 0: - # On Windows this method is triggered even for drag & drop within the same - # pdfarranger instance + if self.target_is_intern and os.name == 'nt': + # Workaround for windows + # On Windows this method is in some situations triggered even for drag & drop + # within the same pdfarranger instance return + selection = self.iconview.get_selected_items() self.undomanager.commit("Move") self.set_unsaved(True) model = self.iconview.get_model() @@ -848,18 +1198,18 @@ path = ref_del.get_path() model.remove(model.get_iter(path)) - def iv_dnd_motion(self, _iconview, _context, _x, y, _etime): - """Handles the drag-motion signal in order to auto-scroll the view""" - + def iv_dnd_motion(self, iconview, context, x, y, etime): + """Handles drag motion: autoscroll, select move or copy, select drag cursor location.""" + # Auto-scroll when drag up/down autoscroll_area = 40 sw_vadj = self.sw.get_vadjustment() sw_height = self.sw.get_allocation().height - if y - sw_vadj.get_value() < autoscroll_area: + if y - sw_vadj.get_value() < autoscroll_area - self.vp_css_margin: if not self.iv_auto_scroll_timer: self.iv_auto_scroll_direction = Gtk.DirectionType.UP self.iv_auto_scroll_timer = GObject.timeout_add(150, self.iv_auto_scroll) - elif y - sw_vadj.get_value() > sw_height - autoscroll_area: + elif y - sw_vadj.get_value() > sw_height - autoscroll_area - self.vp_css_margin: if not self.iv_auto_scroll_timer: self.iv_auto_scroll_direction = Gtk.DirectionType.DOWN self.iv_auto_scroll_timer = GObject.timeout_add(150, @@ -868,6 +1218,55 @@ GObject.source_remove(self.iv_auto_scroll_timer) self.iv_auto_scroll_timer = None + # Select move or copy dragAction + drag_move_posix = os.name == 'posix' and context.get_actions() & Gdk.DragAction.MOVE + drag_move_nt = os.name == 'nt' and not keyboard.is_pressed('control') + if drag_move_posix or drag_move_nt: + Gdk.drag_status(context, Gdk.DragAction.MOVE, etime) + else: + Gdk.drag_status(context, Gdk.DragAction.COPY, etime) + + # By default 5 drag & drop positions are possible: into, left, right, above and below. + # We override default behaviour and only allow drag & drop to left or right. + # When drag location is a valid drop location True is returned. + model = iconview.get_model() + if len(model) == 0: + return True + cell_width, _cell_height = self.cellthmb.get_fixed_size() + row_distance = iconview.get_row_spacing() + 2 * iconview.get_item_padding() + column_distance = iconview.get_column_spacing() + 2 * iconview.get_item_padding() + search_positions = [('XY', x, y), + ('Right', x + column_distance / 2, y), + ('Left', x - column_distance / 2, y), + ('Below', x, y + row_distance / 2), + ('Above', x, y - row_distance / 2), + ('Left-Above', x - column_distance, y - row_distance), + ('Right-Far', x + cell_width, y), + ('Left-Far', x - cell_width, y), + ('Right-Below-Far', x + cell_width, y + row_distance), + ('Left-Below-Far', x - cell_width, y + row_distance), + ('Below-Far', x, y + row_distance)] + for search_pos, x_s, y_s in search_positions: + path = iconview.get_path_at_pos(x_s, y_s) + if path: + break + if search_pos in ['XY', 'Right', 'Left', 'Below', 'Above']: + self.drag_path = path + if path == iconview.get_path_at_pos(x_s + cell_width * 0.6, y_s): + self.drag_pos = Gtk.IconViewDropPosition.DROP_LEFT + elif path == iconview.get_path_at_pos(x_s - cell_width * 0.6, y_s): + self.drag_pos = Gtk.IconViewDropPosition.DROP_RIGHT + elif search_pos == 'Left-Above' and iconview.get_drag_dest_item()[0]: + return True + elif not path or (path == model[-1].path and x_s < x): + self.drag_path = model[-1].path + self.drag_pos = Gtk.IconViewDropPosition.DROP_RIGHT + else: + iconview.stop_emission('drag_motion') + return False + iconview.set_drag_dest_item(self.drag_path, self.drag_pos) + return True + def iv_dnd_leave_end(self, _widget, _context, _ignored=None): """Ends the auto-scroll during DND""" @@ -966,18 +1365,38 @@ ne = len(selection) > 0 for a, e in [("reverse-order", self.reverse_order_available(selection)), ("delete", ne), ("duplicate", ne), ("crop", ne), ("rotate", ne), - ("export-selection", ne), ("split", ne)]: + ("export-selection", ne), ("cut", ne), ("copy", ne), + ("split", ne)]: self.window.lookup_action(a).set_enabled(e) + def window_focus_in_out_event(self, _widget=None, _event=None): + """Enable or disable paste actions based on clipboard content.""" + cb_d_data = self.clipboard_default.wait_for_text() + cb_p_data = os.name == 'posix' and self.clipboard_pdfarranger.wait_for_text() + data_available = True if cb_d_data or cb_p_data else False + self.window.lookup_action("paste").set_enabled(data_available) + def sw_dnd_received_data(self, _scrolledwindow, _context, _x, _y, selection_data, target_id, _etime): """Handles received data by drag and drop in scrolledwindow""" if target_id == self.TEXT_URI_LIST: pageadder = PageAdder(self) + model = self.iconview.get_model() + ref_to = None + before = True + if len(model) > 0: + last_row = model[-1] + if self.drag_pos == Gtk.IconViewDropPosition.DROP_LEFT: + ref_to = Gtk.TreeRowReference.new(model, self.drag_path) + elif self.drag_path != last_row.path: + iter_next = model.iter_next(model.get_iter(self.drag_path)) + path_next = model.get_path(iter_next) + ref_to = Gtk.TreeRowReference.new(model, path_next) + pageadder.move(ref_to, before) for uri in selection_data.get_uris(): - filename = get_file_path_from_dnd_dropped_uri(uri) + filename = get_file_path_from_uri(uri) pageadder.addpages(filename) - pageadder.commit() + pageadder.commit(select_added=False, add_to_undomanager=True) def sw_button_press_event(self, _scrolledwindow, event): """Unselects all items in iconview on mouse click in scrolledwindow""" @@ -1048,7 +1467,6 @@ def split_pages(self, _action, _parameter, _unknown): """ Split selected pages """ model = self.iconview.get_model() - selection = self.iconview.get_selected_items() self.set_unsaved(True) self.undomanager.commit("Split") # selection is a list of 1-tuples, not in order @@ -1211,7 +1629,7 @@ self.undomanager.commit("Reorder") model.reorder(new_order) - def about_dialog(self, _widget, _data=None): + def about_dialog(self, _action, _parameter, _unknown): about_dialog = Gtk.AboutDialog() about_dialog.set_transient_for(self.window) about_dialog.set_modal(True) @@ -1222,15 +1640,26 @@ '%s is a tool for rearranging and modifying PDF files. ' 'Developed using GTK+ and Python') % APPNAME) about_dialog.set_authors(['Konstantinos Poulios']) - about_dialog.add_credit_section('Maintainers and contributors', [ + about_dialog.add_credit_section(_('Maintainers and contributors'), [ 'https://github.com/jeromerobert/pdfarranger/graphs/contributors']) about_dialog.set_website_label(WEBSITE) - about_dialog.set_logo_icon_name(DOMAIN) - about_dialog.set_license(LICENSE) + about_dialog.set_logo_icon_name(ICON_ID) + about_dialog.set_license(_('GNU General Public License (GPL) Version 3.')) about_dialog.connect('response', lambda w, *args: w.destroy()) about_dialog.connect('delete_event', lambda w, *args: w.destroy()) about_dialog.show_all() + def reset_export_file(self, model, _path, _itr=None, _user_data=None): + if len(model) == 0: + self.set_export_file(None) + self.set_unsaved(False) + + def __update_num_pages(self, model, _path=None, _itr=None, _user_data=None): + num_pages = len(model) + self.uiXML.get_object("num_pages").set_text(str(num_pages)) + for a in ["save", "save-as"]: + self.window.lookup_action(a).set_enabled(num_pages > 0) + def error_message_dialog(self, msg, msg_type=Gtk.MessageType.ERROR): error_msg_dlg = Gtk.MessageDialog(flags=Gtk.DialogFlags.MODAL, type=msg_type, parent=self.window, @@ -1241,19 +1670,47 @@ error_msg_dlg.destroy() +class PDFDocError(Exception): + def __init__(self, message): + self.message = message + + class PDFDoc: """Class handling PDF documents""" def __init__(self, filename, tmp_dir): - self.filename = os.path.abspath(filename) self.shortname = os.path.splitext(os.path.split(self.filename)[1])[0] self.mtime = os.path.getmtime(filename) - fd, self.copyname = tempfile.mkstemp(dir=tmp_dir) - os.close(fd) - shutil.copy(self.filename, self.copyname) - uri = pathlib.Path(self.copyname).as_uri() - self.document = Poppler.Document.new_from_file(uri, None) + filemime = mimetypes.guess_type(self.filename)[0] + if not filemime: + raise PDFDocError(_('Unknown file format')) + if filemime == 'application/pdf': + try: + fd, self.copyname = tempfile.mkstemp(dir=tmp_dir) + os.close(fd) + shutil.copy(self.filename, self.copyname) + uri = pathlib.Path(self.copyname).as_uri() + self.document = Poppler.Document.new_from_file(uri, None) + except GLib.Error as e: + raise PDFDocError(e.message + ': ' + filename) + elif filemime.split('/')[0] == 'image': + if not img2pdf: + raise PDFDocError(_('Image files are only supported with img2pdf')) + if mimetypes.guess_type(filename)[0] in img2pdf_supported_img: + try: + fd, self.copyname = tempfile.mkstemp(dir=tmp_dir) + os.close(fd) + with open(self.copyname, 'wb') as f: + f.write(img2pdf.convert(filename)) + uri = pathlib.Path(self.copyname).as_uri() + self.document = Poppler.Document.new_from_file(uri, None) + except img2pdf.AlphaChannelError as e: + raise PDFDocError(e) + else: + raise PDFDocError(_('Image format is not supported by img2pdf')) + else: + raise PDFDocError(_('File is neither pdf nor image')) class PageAdder(object): @@ -1287,7 +1744,12 @@ break if not pdfdoc: - pdfdoc = PDFDoc(filename, self.app.tmp_dir) + try: + pdfdoc = PDFDoc(filename, self.app.tmp_dir) + except PDFDocError as e: + print(e.message, file=sys.stderr) + self.app.error_message_dialog(e.message) + return self.app.import_directory = os.path.split(filename)[0] self.app.export_directory = self.app.import_directory self.app.pdfqueue.append(pdfdoc) @@ -1314,22 +1776,28 @@ w, h, # 11-12 2.)) # 13 FIXME - def commit(self): + def commit(self, select_added, add_to_undomanager): if len(self.pages) == 0: return False - self.app.undomanager.commit("Add") - self.app.set_unsaved(True) + if add_to_undomanager: + self.app.undomanager.commit("Add") + self.app.set_unsaved(True) for p in self.pages: - it = self.app.model.append(p) if self.treerowref: iter_to = self.app.model.get_iter(self.treerowref.get_path()) if self.before: - self.app.model.move_before(it, iter_to) + it = self.app.model.insert_before(iter_to, p) else: - self.app.model.move_after(it, iter_to) + it = self.app.model.insert_after(iter_to, p) + else: + it = self.app.model.append(p) + if select_added: + path = self.app.model.get_path(it) + self.app.iconview.select_path(path) self.app.update_geometry(it) GObject.idle_add(self.app.retitle) GObject.idle_add(self.app.render) + self.pages = [] return True diff -Nru pdfarranger-1.4.2/po/ca@valencia.po pdfarranger-1.6.2/po/ca@valencia.po --- pdfarranger-1.4.2/po/ca@valencia.po 2020-03-14 20:55:12.000000000 +0000 +++ pdfarranger-1.6.2/po/ca@valencia.po 2020-08-01 09:52:15.000000000 +0000 @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-12 10:16+0100\n" +"POT-Creation-Date: 2020-04-11 10:54+0200\n" "PO-Revision-Date: 2018-10-10 09:09+0200\n" "Last-Translator: Pilar Embid Giner \n" "Language-Team: LliureX\n" @@ -17,108 +17,108 @@ "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 2.0.6\n" -#: pdfarranger/metadata.py:30 +#: pdfarranger/metadata.py:35 msgid "Title" msgstr "" -#: pdfarranger/metadata.py:31 +#: pdfarranger/metadata.py:36 msgid "Creator" msgstr "" -#: pdfarranger/metadata.py:32 +#: pdfarranger/metadata.py:37 msgid "Producer" msgstr "" -#: pdfarranger/metadata.py:33 +#: pdfarranger/metadata.py:38 msgid "Creator tool" msgstr "" -#: pdfarranger/metadata.py:91 data/pdfarranger.ui.h:10 +#: pdfarranger/metadata.py:141 msgid "Edit properties" msgstr "" -#: pdfarranger/metadata.py:104 +#: pdfarranger/metadata.py:154 msgid "Property" msgstr "" -#: pdfarranger/metadata.py:104 +#: pdfarranger/metadata.py:154 msgid "Value" msgstr "" -#: pdfarranger/pdfarranger.py:506 +#: pdfarranger/pdfarranger.py:520 msgid "No document" msgstr "Cap document" -#: pdfarranger/pdfarranger.py:508 +#: pdfarranger/pdfarranger.py:522 msgid "Several documents" msgstr "Diversos documents" -#: pdfarranger/pdfarranger.py:525 +#: pdfarranger/pdfarranger.py:539 #, python-format -msgid "Rendering thumbnails... [%(i1)s/%(i2)s]" -msgstr "S'estan renderitzant les miniatures... [%(i1)s/%(i2)s]" +msgid "Rendering thumbnails… [%(i1)s/%(i2)s]" +msgstr "S'estan renderitzant les miniatures… [%(i1)s/%(i2)s]" -#: pdfarranger/pdfarranger.py:614 -msgid "Export ..." -msgstr "Exporta..." +#: pdfarranger/pdfarranger.py:629 +msgid "Export…" +msgstr "Exporta…" -#: pdfarranger/pdfarranger.py:626 pdfarranger/pdfarranger.py:709 +#: pdfarranger/pdfarranger.py:641 pdfarranger/pdfarranger.py:725 msgid "PDF files" msgstr "Fitxers PDF" -#: pdfarranger/pdfarranger.py:632 pdfarranger/pdfarranger.py:704 +#: pdfarranger/pdfarranger.py:647 pdfarranger/pdfarranger.py:720 msgid "All files" msgstr "Tots els fitxers" -#: pdfarranger/pdfarranger.py:693 -msgid "Import..." -msgstr "Importa..." +#: pdfarranger/pdfarranger.py:709 +msgid "Import…" +msgstr "Importa…" # Netscape_4.7->Dialog Box Control:EDITOR32.DLL -#: pdfarranger/pdfarranger.py:1072 +#: pdfarranger/pdfarranger.py:1223 msgid "Left" msgstr "Esquerra" # Netscape_4.7->Dialog Box Control:EDITOR32.DLL -#: pdfarranger/pdfarranger.py:1072 +#: pdfarranger/pdfarranger.py:1223 msgid "Right" msgstr "Dreta" # Netscape_4.7->String:RESDLL.DLL -#: pdfarranger/pdfarranger.py:1073 +#: pdfarranger/pdfarranger.py:1224 msgid "Top" msgstr "Dalt" # Netscape_4.7->Dialog Box Control:EDITOR32.DLL -#: pdfarranger/pdfarranger.py:1073 +#: pdfarranger/pdfarranger.py:1224 msgid "Bottom" msgstr "Baix" -#: pdfarranger/pdfarranger.py:1090 +#: pdfarranger/pdfarranger.py:1241 msgid "Crop Selected Pages" msgstr "Retalla les pàgines seleccionades" -#: pdfarranger/pdfarranger.py:1098 +#: pdfarranger/pdfarranger.py:1249 msgid "" "Cropping does not remove any content\n" "from the PDF file, it only hides it." msgstr "" -#: pdfarranger/pdfarranger.py:1101 +#: pdfarranger/pdfarranger.py:1252 msgid "Crop Margins" msgstr "Retalla els marges" -#: pdfarranger/pdfarranger.py:1111 +#: pdfarranger/pdfarranger.py:1262 #, python-format msgid "% of width" msgstr "% d'amplària" -#: pdfarranger/pdfarranger.py:1111 +#: pdfarranger/pdfarranger.py:1262 #, python-format msgid "% of height" msgstr "% d'alçària" -#: pdfarranger/pdfarranger.py:1218 +#: pdfarranger/pdfarranger.py:1369 #, python-format msgid "" "%s is a tool for rearranging and modifying PDF files. Developed using GTK+ " @@ -127,99 +127,161 @@ "El %s és una ferramenta per a organitzar i modificar fitxers PDF. S'ha " "realitzat utilitzant GTK+ i Python" -#: pdfarranger/pdfarranger.py:1298 +#: pdfarranger/pdfarranger.py:1449 msgid "page" msgstr "pàgina" #: data/pdfarranger.ui.h:1 -msgid "_File" -msgstr "_Fitxer" +msgid "Open a file and append it to the current document" +msgstr "Obri un fitxer i afig-lo al document actual" #: data/pdfarranger.ui.h:2 -msgid "_Export selection..." -msgstr "_Exporta la selecció..." +msgid "Save" +msgstr "Guarda" #: data/pdfarranger.ui.h:3 -msgid "_Edit" -msgstr "_Edita" +#, fuzzy +msgid "Save As" +msgstr "Guarda com" #: data/pdfarranger.ui.h:4 -msgid "Rotate left" -msgstr "Gira cap a l'esquerra" +msgid "Number of Pages" +msgstr "" #: data/pdfarranger.ui.h:5 -msgid "Rotate right" -msgstr "Gira cap a la dreta" +msgid "Main Menu" +msgstr "" #: data/pdfarranger.ui.h:6 -msgid "Crop" -msgstr "Retalla" +#, fuzzy +msgid "Zoom In" +msgstr "Amplia" #: data/pdfarranger.ui.h:7 -msgid "Du_plicate" -msgstr "" +#, fuzzy +msgid "Zoom Out" +msgstr "Redueïx" #: data/pdfarranger.ui.h:8 -msgid "Reverse Order" -msgstr "" +#, fuzzy +msgid "Rotate Left" +msgstr "Gira a _l'esquerra" #: data/pdfarranger.ui.h:9 -msgid "Split pages" -msgstr "" - -#: data/pdfarranger.ui.h:11 -msgid "_View" -msgstr "_Visualitza" - -#: data/pdfarranger.ui.h:12 -msgid "Zoom in" -msgstr "Amplia" - -#: data/pdfarranger.ui.h:13 -msgid "Zoom out" -msgstr "Redueïx" - -#: data/pdfarranger.ui.h:14 -msgid "_Help" -msgstr "A_juda" - -#: data/pdfarranger.ui.h:15 -msgid "Open a file and append it to the current document" -msgstr "Obri un fitxer i afig-lo al document actual" +#, fuzzy +msgid "Rotate Right" +msgstr "Gi_ra a la dreta" -#: data/pdfarranger.ui.h:16 -msgid "Import" +#: data/menu.ui.h:1 +#, fuzzy +msgid "_Import" msgstr "Importa" -#: data/pdfarranger.ui.h:17 -msgid "Save" +#: data/menu.ui.h:2 +#, fuzzy +msgid "_Save" msgstr "Guarda" -#: data/pdfarranger.ui.h:18 -msgid "Save as" +#: data/menu.ui.h:3 +#, fuzzy +msgid "Save _As…" msgstr "Guarda com" -#: data/pdfarranger.ui.h:19 -msgid "Delete" -msgstr "Esborra" +#: data/menu.ui.h:4 +#, fuzzy +msgid "E_xport Selection…" +msgstr "_Exporta la selecció…" + +#: data/menu.ui.h:5 +msgid "_Undo" +msgstr "" + +#: data/menu.ui.h:6 +msgid "_Redo" +msgstr "" -#: data/pdfarranger.ui.h:20 +#: data/menu.ui.h:7 +msgid "_Edit" +msgstr "_Edita" + +#: data/menu.ui.h:8 msgid "Rotate _Left" msgstr "Gira a _l'esquerra" -#: data/pdfarranger.ui.h:21 +#: data/menu.ui.h:9 msgid "_Rotate Right" msgstr "Gi_ra a la dreta" -#: data/pdfarranger.ui.h:22 -#, fuzzy -msgid "C_rop" -msgstr "_Retalla..." +#: data/menu.ui.h:10 +msgid "Cro_p" +msgstr "" -#: data/pdfarranger.ui.h:23 +#: data/menu.ui.h:11 msgid "_Delete" msgstr "_Esborra" -#: data/pdfarranger.ui.h:24 +#: data/menu.ui.h:12 +msgid "Dupl_icate" +msgstr "" + +#: data/menu.ui.h:13 msgid "Re_verse Order" msgstr "" + +#: data/menu.ui.h:14 +msgid "_Split pages" +msgstr "" + +#: data/menu.ui.h:15 +msgid "Cu_t" +msgstr "" + +#: data/menu.ui.h:16 +msgid "_Copy" +msgstr "" + +#: data/menu.ui.h:17 +msgid "Paste _After" +msgstr "" + +#: data/menu.ui.h:18 +msgid "Paste _Before" +msgstr "" + +#: data/menu.ui.h:19 +msgid "Paste Interleave _Odd" +msgstr "" + +#: data/menu.ui.h:20 +msgid "Paste Interleave _Even" +msgstr "" + +#: data/menu.ui.h:21 +#, fuzzy +msgid "Zoom _In" +msgstr "Amplia" + +#: data/menu.ui.h:22 +#, fuzzy +msgid "Zoom _Out" +msgstr "Redueïx" + +#: data/menu.ui.h:23 +msgid "Edit _Properties" +msgstr "" + +#: data/menu.ui.h:24 +msgid "_About" +msgstr "" + +#: data/menu.ui.h:25 +msgid "_Quit" +msgstr "" + +#: data/menu.ui.h:26 +msgid "Past_e Special" +msgstr "" + +#: data/menu.ui.h:27 +msgid "_Split Pages" +msgstr "" diff -Nru pdfarranger-1.4.2/po/cleanuppo.sh pdfarranger-1.6.2/po/cleanuppo.sh --- pdfarranger-1.4.2/po/cleanuppo.sh 2020-03-14 20:55:12.000000000 +0000 +++ pdfarranger-1.6.2/po/cleanuppo.sh 2020-08-01 09:52:15.000000000 +0000 @@ -20,6 +20,9 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # -# Update translation files -find ./po -type f -iname "*.po" -exec msgattrib --output-file={} --no-obsolete {} \; - +cd $(dirname $0)/.. +for po in po/*.po +do + # Remove #~ lines + msgattrib --no-obsolete -o $po $po +done diff -Nru pdfarranger-1.4.2/po/cs.po pdfarranger-1.6.2/po/cs.po --- pdfarranger-1.4.2/po/cs.po 2020-03-14 20:55:12.000000000 +0000 +++ pdfarranger-1.6.2/po/cs.po 2020-08-01 09:52:15.000000000 +0000 @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: PDF-Shuffler 0.7\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-12 10:16+0100\n" +"POT-Creation-Date: 2020-04-11 10:54+0200\n" "PO-Revision-Date: 2017-02-26 16:16+0000\n" "Last-Translator: fri\n" "Language-Team: Czech (http://www.transifex.com/logari81/pdfshuffler/language/" @@ -21,104 +21,104 @@ "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: pdfarranger/metadata.py:30 +#: pdfarranger/metadata.py:35 msgid "Title" msgstr "" -#: pdfarranger/metadata.py:31 +#: pdfarranger/metadata.py:36 msgid "Creator" msgstr "" -#: pdfarranger/metadata.py:32 +#: pdfarranger/metadata.py:37 msgid "Producer" msgstr "" -#: pdfarranger/metadata.py:33 +#: pdfarranger/metadata.py:38 msgid "Creator tool" msgstr "" -#: pdfarranger/metadata.py:91 data/pdfarranger.ui.h:10 +#: pdfarranger/metadata.py:141 msgid "Edit properties" msgstr "" -#: pdfarranger/metadata.py:104 +#: pdfarranger/metadata.py:154 msgid "Property" msgstr "" -#: pdfarranger/metadata.py:104 +#: pdfarranger/metadata.py:154 msgid "Value" msgstr "" -#: pdfarranger/pdfarranger.py:506 +#: pdfarranger/pdfarranger.py:520 msgid "No document" msgstr "Žádný dokument" -#: pdfarranger/pdfarranger.py:508 +#: pdfarranger/pdfarranger.py:522 msgid "Several documents" msgstr "Několik dokumentů" -#: pdfarranger/pdfarranger.py:525 +#: pdfarranger/pdfarranger.py:539 #, python-format -msgid "Rendering thumbnails... [%(i1)s/%(i2)s]" -msgstr "Vykreslují se náhledy... [%(i1)s/%(i2)s]" +msgid "Rendering thumbnails… [%(i1)s/%(i2)s]" +msgstr "Vykreslují se náhledy… [%(i1)s/%(i2)s]" -#: pdfarranger/pdfarranger.py:614 -msgid "Export ..." -msgstr "Vyvést..." +#: pdfarranger/pdfarranger.py:629 +msgid "Export…" +msgstr "Vyvést…" -#: pdfarranger/pdfarranger.py:626 pdfarranger/pdfarranger.py:709 +#: pdfarranger/pdfarranger.py:641 pdfarranger/pdfarranger.py:725 msgid "PDF files" msgstr "Soubory PDF" -#: pdfarranger/pdfarranger.py:632 pdfarranger/pdfarranger.py:704 +#: pdfarranger/pdfarranger.py:647 pdfarranger/pdfarranger.py:720 msgid "All files" msgstr "Všechny soubory" -#: pdfarranger/pdfarranger.py:693 -msgid "Import..." -msgstr "Zavést..." +#: pdfarranger/pdfarranger.py:709 +msgid "Import…" +msgstr "Zavést…" -#: pdfarranger/pdfarranger.py:1072 +#: pdfarranger/pdfarranger.py:1223 msgid "Left" msgstr "Levý" -#: pdfarranger/pdfarranger.py:1072 +#: pdfarranger/pdfarranger.py:1223 msgid "Right" msgstr "Pravý" -#: pdfarranger/pdfarranger.py:1073 +#: pdfarranger/pdfarranger.py:1224 msgid "Top" msgstr "Horní" -#: pdfarranger/pdfarranger.py:1073 +#: pdfarranger/pdfarranger.py:1224 msgid "Bottom" msgstr "Dolní" -#: pdfarranger/pdfarranger.py:1090 +#: pdfarranger/pdfarranger.py:1241 msgid "Crop Selected Pages" msgstr "Oříznout vybrané stránky" -#: pdfarranger/pdfarranger.py:1098 +#: pdfarranger/pdfarranger.py:1249 msgid "" "Cropping does not remove any content\n" "from the PDF file, it only hides it." msgstr "" -#: pdfarranger/pdfarranger.py:1101 +#: pdfarranger/pdfarranger.py:1252 msgid "Crop Margins" msgstr "Oříznout okraje" -#: pdfarranger/pdfarranger.py:1111 +#: pdfarranger/pdfarranger.py:1262 #, fuzzy, python-format msgid "% of width" msgstr "% šířky" -#: pdfarranger/pdfarranger.py:1111 +#: pdfarranger/pdfarranger.py:1262 #, fuzzy, python-format msgid "% of height" msgstr "% výšky" -#: pdfarranger/pdfarranger.py:1218 +#: pdfarranger/pdfarranger.py:1369 #, python-format msgid "" "%s is a tool for rearranging and modifying PDF files. Developed using GTK+ " @@ -127,99 +127,161 @@ "%s je nástroj na přeuspořádání a měnění souborů PDF. Vyvíjeno za použití GTK" "+ a Pythonu" -#: pdfarranger/pdfarranger.py:1298 +#: pdfarranger/pdfarranger.py:1449 msgid "page" msgstr "stránka" #: data/pdfarranger.ui.h:1 -msgid "_File" -msgstr "So_ubor" +msgid "Open a file and append it to the current document" +msgstr "Otevřít soubor a připojit jej k nynějšímu dokumentu" #: data/pdfarranger.ui.h:2 -msgid "_Export selection..." -msgstr "_Vyvést výběr..." +msgid "Save" +msgstr "Uložit" #: data/pdfarranger.ui.h:3 -msgid "_Edit" -msgstr "Ú_pravy" +#, fuzzy +msgid "Save As" +msgstr "Uložit jako" #: data/pdfarranger.ui.h:4 -msgid "Rotate left" -msgstr "Otočit vlevo" +msgid "Number of Pages" +msgstr "" #: data/pdfarranger.ui.h:5 -msgid "Rotate right" -msgstr "Otočit vpravo" +msgid "Main Menu" +msgstr "" #: data/pdfarranger.ui.h:6 -msgid "Crop" -msgstr "Ořezat" +#, fuzzy +msgid "Zoom In" +msgstr "Přiblížit" #: data/pdfarranger.ui.h:7 -msgid "Du_plicate" -msgstr "" +#, fuzzy +msgid "Zoom Out" +msgstr "Oddálit" #: data/pdfarranger.ui.h:8 -msgid "Reverse Order" -msgstr "" +#, fuzzy +msgid "Rotate Left" +msgstr "Otočit _vlevo" #: data/pdfarranger.ui.h:9 -msgid "Split pages" -msgstr "" - -#: data/pdfarranger.ui.h:11 -msgid "_View" -msgstr "Po_hled" - -#: data/pdfarranger.ui.h:12 -msgid "Zoom in" -msgstr "Přiblížit" - -#: data/pdfarranger.ui.h:13 -msgid "Zoom out" -msgstr "Oddálit" - -#: data/pdfarranger.ui.h:14 -msgid "_Help" -msgstr "_Nápověda" - -#: data/pdfarranger.ui.h:15 -msgid "Open a file and append it to the current document" -msgstr "Otevřít soubor a připojit jej k nynějšímu dokumentu" +#, fuzzy +msgid "Rotate Right" +msgstr "_Otočit vpravo" -#: data/pdfarranger.ui.h:16 -msgid "Import" +#: data/menu.ui.h:1 +#, fuzzy +msgid "_Import" msgstr "Zavést" -#: data/pdfarranger.ui.h:17 -msgid "Save" +#: data/menu.ui.h:2 +#, fuzzy +msgid "_Save" msgstr "Uložit" -#: data/pdfarranger.ui.h:18 -msgid "Save as" +#: data/menu.ui.h:3 +#, fuzzy +msgid "Save _As…" msgstr "Uložit jako" -#: data/pdfarranger.ui.h:19 -msgid "Delete" -msgstr "Smazat" +#: data/menu.ui.h:4 +#, fuzzy +msgid "E_xport Selection…" +msgstr "_Vyvést výběr…" + +#: data/menu.ui.h:5 +msgid "_Undo" +msgstr "" + +#: data/menu.ui.h:6 +msgid "_Redo" +msgstr "" -#: data/pdfarranger.ui.h:20 +#: data/menu.ui.h:7 +msgid "_Edit" +msgstr "Ú_pravy" + +#: data/menu.ui.h:8 msgid "Rotate _Left" msgstr "Otočit _vlevo" -#: data/pdfarranger.ui.h:21 +#: data/menu.ui.h:9 msgid "_Rotate Right" msgstr "_Otočit vpravo" -#: data/pdfarranger.ui.h:22 -#, fuzzy -msgid "C_rop" -msgstr "Oř_ezat..." +#: data/menu.ui.h:10 +msgid "Cro_p" +msgstr "" -#: data/pdfarranger.ui.h:23 +#: data/menu.ui.h:11 msgid "_Delete" msgstr "_Smazat" -#: data/pdfarranger.ui.h:24 +#: data/menu.ui.h:12 +msgid "Dupl_icate" +msgstr "" + +#: data/menu.ui.h:13 msgid "Re_verse Order" msgstr "" + +#: data/menu.ui.h:14 +msgid "_Split pages" +msgstr "" + +#: data/menu.ui.h:15 +msgid "Cu_t" +msgstr "" + +#: data/menu.ui.h:16 +msgid "_Copy" +msgstr "" + +#: data/menu.ui.h:17 +msgid "Paste _After" +msgstr "" + +#: data/menu.ui.h:18 +msgid "Paste _Before" +msgstr "" + +#: data/menu.ui.h:19 +msgid "Paste Interleave _Odd" +msgstr "" + +#: data/menu.ui.h:20 +msgid "Paste Interleave _Even" +msgstr "" + +#: data/menu.ui.h:21 +#, fuzzy +msgid "Zoom _In" +msgstr "Přiblížit" + +#: data/menu.ui.h:22 +#, fuzzy +msgid "Zoom _Out" +msgstr "Oddálit" + +#: data/menu.ui.h:23 +msgid "Edit _Properties" +msgstr "" + +#: data/menu.ui.h:24 +msgid "_About" +msgstr "" + +#: data/menu.ui.h:25 +msgid "_Quit" +msgstr "" + +#: data/menu.ui.h:26 +msgid "Past_e Special" +msgstr "" + +#: data/menu.ui.h:27 +msgid "_Split Pages" +msgstr "" diff -Nru pdfarranger-1.4.2/po/de.po pdfarranger-1.6.2/po/de.po --- pdfarranger-1.4.2/po/de.po 2020-03-14 20:55:12.000000000 +0000 +++ pdfarranger-1.6.2/po/de.po 2020-08-01 09:52:15.000000000 +0000 @@ -1,104 +1,139 @@ -# PDF-Shuffler translation files. -# Copyright (C) 2008-2017 Konstantinos Poulios -# This file is part of PDF-Shuffler which is released under the GNU General -# Public License version 3 or later. -# See file COPYING or go to for full license details. +# German translation for pdfarranger. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the pdfarranger package. # Translators: # Konstantinos Poulios, 2008-2017 +# David Auer, 2020 +# Milo Ivir , 2020 msgid "" msgstr "" -"Project-Id-Version: PDF-Shuffler 0.7\n" +"Project-Id-Version: pdfarranger\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-12 10:16+0100\n" -"PO-Revision-Date: 2019-07-18 20:51+0200\n" -"Last-Translator: O. Giesmann \n" -"Language-Team: German (http://www.transifex.com/logari81/pdfshuffler/" -"language/de/)\n" +"POT-Creation-Date: 2020-07-22 06:04+0200\n" +"PO-Revision-Date: 2020-07-22 13:12+0200\n" +"Last-Translator: Milo Ivir \n" +"Language-Team: \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 2.2.3\n" +"X-Generator: Poedit 2.3.1\n" -#: pdfarranger/metadata.py:30 +#: pdfarranger/metadata.py:36 msgid "Title" msgstr "Titel" -#: pdfarranger/metadata.py:31 +#: pdfarranger/metadata.py:37 msgid "Creator" msgstr "Ersteller" -#: pdfarranger/metadata.py:32 +#: pdfarranger/metadata.py:38 msgid "Producer" msgstr "Hersteller" -#: pdfarranger/metadata.py:33 +#: pdfarranger/metadata.py:39 msgid "Creator tool" msgstr "Erstellungswerkzeug" -#: pdfarranger/metadata.py:91 data/pdfarranger.ui.h:10 +#: pdfarranger/metadata.py:154 msgid "Edit properties" msgstr "Eigenschaften ändern" -#: pdfarranger/metadata.py:104 +#: pdfarranger/metadata.py:167 msgid "Property" msgstr "Eigenschaft" -#: pdfarranger/metadata.py:104 +#: pdfarranger/metadata.py:167 msgid "Value" msgstr "Wert" -#: pdfarranger/pdfarranger.py:506 -msgid "No document" -msgstr "Keine Datei" - -#: pdfarranger/pdfarranger.py:508 -msgid "Several documents" -msgstr "Mehrere Dateien" - -#: pdfarranger/pdfarranger.py:525 +#: pdfarranger/pdfarranger.py:591 #, python-format -msgid "Rendering thumbnails... [%(i1)s/%(i2)s]" -msgstr "Vorschauen werden erstellt... [%(i1)s/%(i2)s]" +msgid "Rendering thumbnails… [%(i1)s/%(i2)s]" +msgstr "Miniaturbilder werden erstellt… [%(i1)s/%(i2)s]" -#: pdfarranger/pdfarranger.py:614 -msgid "Export ..." -msgstr "Exportieren ..." +#: pdfarranger/pdfarranger.py:672 +msgid "Save changes to “{}” before closing?" +msgstr "Änderungen an „{}“ vor dem Schließen speichern?" + +#: pdfarranger/pdfarranger.py:674 +msgid "Save changes before closing?" +msgstr "Änderungen vor dem Schließen speichern?" + +#: pdfarranger/pdfarranger.py:676 +msgid "Your changes will be lost if you don’t save them." +msgstr "Änderungen gehen verloren, wenn sie nicht gespeichert werden." + +#: pdfarranger/pdfarranger.py:677 +msgid "Do_n’t Save" +msgstr "Nicht speicher_n" + +#: pdfarranger/pdfarranger.py:677 +msgid "_Cancel" +msgstr "_Abbrechen" + +#: pdfarranger/pdfarranger.py:677 data/menu.ui.h:2 +msgid "_Save" +msgstr "_Speichern" + +#: pdfarranger/pdfarranger.py:718 +msgid "Export…" +msgstr "Exportieren…" -#: pdfarranger/pdfarranger.py:626 pdfarranger/pdfarranger.py:709 +#: pdfarranger/pdfarranger.py:730 pdfarranger/pdfarranger.py:827 msgid "PDF files" msgstr "PDF-Dateien" -#: pdfarranger/pdfarranger.py:632 pdfarranger/pdfarranger.py:704 +#: pdfarranger/pdfarranger.py:736 pdfarranger/pdfarranger.py:813 msgid "All files" msgstr "Alle Dateien" -#: pdfarranger/pdfarranger.py:693 -msgid "Import..." -msgstr "Importieren..." +#: pdfarranger/pdfarranger.py:802 +msgid "Import…" +msgstr "Importieren…" + +#: pdfarranger/pdfarranger.py:819 +msgid "Supported image files" +msgstr "Unterstützte Bilddateien" + +#: pdfarranger/pdfarranger.py:916 +msgid "Pasted data not valid. Aborting paste." +msgstr "Eingefügte Daten nicht gültig. Einfügen wird abgebrochen." + +#: pdfarranger/pdfarranger.py:1018 pdfarranger/pdfarranger.py:1675 +msgid "Unknown file format" +msgstr "Unbekanntes Dateiformat" + +#: pdfarranger/pdfarranger.py:1022 +msgid "PDF document is damaged" +msgstr "PDF-Dokument ist beschädigt" + +#: pdfarranger/pdfarranger.py:1028 pdfarranger/pdfarranger.py:1701 +msgid "File is neither pdf nor image" +msgstr "Datei ist weder ein pdf noch ein Bild" -#: pdfarranger/pdfarranger.py:1072 +#: pdfarranger/pdfarranger.py:1482 msgid "Left" msgstr "Links" -#: pdfarranger/pdfarranger.py:1072 +#: pdfarranger/pdfarranger.py:1482 msgid "Right" msgstr "Rechts" -#: pdfarranger/pdfarranger.py:1073 +#: pdfarranger/pdfarranger.py:1483 msgid "Top" msgstr "Oben" -#: pdfarranger/pdfarranger.py:1073 +#: pdfarranger/pdfarranger.py:1483 msgid "Bottom" msgstr "Unten" -#: pdfarranger/pdfarranger.py:1090 +#: pdfarranger/pdfarranger.py:1500 msgid "Crop Selected Pages" msgstr "Markierte Seiten zuschneiden" -#: pdfarranger/pdfarranger.py:1098 +#: pdfarranger/pdfarranger.py:1508 msgid "" "Cropping does not remove any content\n" "from the PDF file, it only hides it." @@ -106,21 +141,21 @@ "Das Zuschneiden entfernt keinen Inhalt\n" "aus der PDF-Datei, es blendet ihn nur aus." -#: pdfarranger/pdfarranger.py:1101 +#: pdfarranger/pdfarranger.py:1511 msgid "Crop Margins" msgstr "Seitenränder zuschneiden" -#: pdfarranger/pdfarranger.py:1111 +#: pdfarranger/pdfarranger.py:1521 #, python-format msgid "% of width" msgstr "% der Breite" -#: pdfarranger/pdfarranger.py:1111 +#: pdfarranger/pdfarranger.py:1521 #, python-format msgid "% of height" msgstr "% der Höhe" -#: pdfarranger/pdfarranger.py:1218 +#: pdfarranger/pdfarranger.py:1628 #, python-format msgid "" "%s is a tool for rearranging and modifying PDF files. Developed using GTK+ " @@ -129,99 +164,162 @@ "%s ist ein Programm zum Umsortieren und Modifizieren von PDF-Dokumenten. " "Geschrieben in GTK+ und Python." -#: pdfarranger/pdfarranger.py:1298 +#: pdfarranger/pdfarranger.py:1631 +msgid "Maintainers and contributors" +msgstr "Verwalter und Mitwirkende" + +#: pdfarranger/pdfarranger.py:1635 +msgid "GNU General Public License (GPL) Version 3." +msgstr "GNU Allgemeine öffentliche Lizenz Version 3." + +#: pdfarranger/pdfarranger.py:1687 +msgid "Image files are only supported with img2pdf" +msgstr "Bilddateien werden nur mit img2pdf unterstützt" + +#: pdfarranger/pdfarranger.py:1699 +msgid "Image format is not supported by img2pdf" +msgstr "Bildformat wird von img2pdf nicht unterstützt" + +#: pdfarranger/pdfarranger.py:1752 msgid "page" msgstr "Seite" #: data/pdfarranger.ui.h:1 -msgid "_File" -msgstr "_Datei" +msgid "Open a file and append it to the current document" +msgstr "Eine Datei öffnen und zum bereits geöffneten Dokument hinzufügen" #: data/pdfarranger.ui.h:2 -msgid "_Export selection..." -msgstr "Markierte Seiten _exportieren ..." +msgid "Save" +msgstr "Speichern" #: data/pdfarranger.ui.h:3 -msgid "_Edit" -msgstr "Bearbeiten" +msgid "Save As" +msgstr "Speichern unter" #: data/pdfarranger.ui.h:4 -msgid "Rotate left" -msgstr "Nach links drehen" +msgid "Number of Pages" +msgstr "Anzahl Seiten" #: data/pdfarranger.ui.h:5 -msgid "Rotate right" -msgstr "Nach rechts drehen" +msgid "Main Menu" +msgstr "Hauptmenü" #: data/pdfarranger.ui.h:6 -msgid "Crop" -msgstr "Zuschneiden" +msgid "Zoom In" +msgstr "Vergrössern" #: data/pdfarranger.ui.h:7 -msgid "Du_plicate" -msgstr "Duplizieren" +msgid "Zoom Out" +msgstr "Verkleinern" #: data/pdfarranger.ui.h:8 -msgid "Reverse Order" -msgstr "Reihenfolge umkehren" +msgid "Rotate Left" +msgstr "Nach links drehen" #: data/pdfarranger.ui.h:9 -msgid "Split pages" -msgstr "Seiten teilen" - -#: data/pdfarranger.ui.h:11 -msgid "_View" -msgstr "Ansicht" - -#: data/pdfarranger.ui.h:12 -msgid "Zoom in" -msgstr "Vergrössern" - -#: data/pdfarranger.ui.h:13 -msgid "Zoom out" -msgstr "Verkleinern" - -#: data/pdfarranger.ui.h:14 -msgid "_Help" -msgstr "_Hilfe" - -#: data/pdfarranger.ui.h:15 -msgid "Open a file and append it to the current document" -msgstr "Eine Datei öffnen und zum bereits geöffneten Dokument hinzufügen" - -#: data/pdfarranger.ui.h:16 -msgid "Import" -msgstr "Importieren" +msgid "Rotate Right" +msgstr "Nach rechts drehen" -#: data/pdfarranger.ui.h:17 -msgid "Save" -msgstr "Speichern" +#: data/menu.ui.h:1 +msgid "_Import" +msgstr "_Importieren" + +#: data/menu.ui.h:3 +msgid "Save _As…" +msgstr "Speichern _unter…" + +#: data/menu.ui.h:4 +msgid "E_xport Selection…" +msgstr "Markierte Seiten e_xportieren…" + +#: data/menu.ui.h:5 +msgid "_Undo" +msgstr "_Rückgängig" + +#: data/menu.ui.h:6 +msgid "_Redo" +msgstr "_Wiederholen" -#: data/pdfarranger.ui.h:18 -msgid "Save as" -msgstr "Speichern als" - -#: data/pdfarranger.ui.h:19 -msgid "Delete" -msgstr "Löschen" +#: data/menu.ui.h:7 +msgid "_Edit" +msgstr "_Bearbeiten" -#: data/pdfarranger.ui.h:20 +#: data/menu.ui.h:8 msgid "Rotate _Left" msgstr "Nach _links drehen" -#: data/pdfarranger.ui.h:21 +#: data/menu.ui.h:9 msgid "_Rotate Right" msgstr "Nach _rechts drehen" -#: data/pdfarranger.ui.h:22 -#, fuzzy -msgid "C_rop" -msgstr "_Zuschneiden..." +#: data/menu.ui.h:10 +msgid "Cro_p" +msgstr "_Zuschneiden" -#: data/pdfarranger.ui.h:23 +#: data/menu.ui.h:11 msgid "_Delete" -msgstr "Entfernen" +msgstr "_Entfernen" + +#: data/menu.ui.h:12 +msgid "Dupl_icate" +msgstr "_Duplizieren" -#: data/pdfarranger.ui.h:24 +#: data/menu.ui.h:13 msgid "Re_verse Order" -msgstr "Reihenfolge _umkehren" +msgstr "Rei_henfolge umkehren" + +#: data/menu.ui.h:14 +msgid "_Split pages" +msgstr "Seiten _teilen" + +#: data/menu.ui.h:15 +msgid "Cu_t" +msgstr "_Ausschneiden" + +#: data/menu.ui.h:16 +msgid "_Copy" +msgstr "_Kopieren" + +#: data/menu.ui.h:17 +msgid "Paste _After" +msgstr "Einfügen _nach Auswahl" + +#: data/menu.ui.h:18 +msgid "Paste _Before" +msgstr "Einfügen _vor Auswahl" + +#: data/menu.ui.h:19 +msgid "Paste Interleave _Odd" +msgstr "Abwechselnd einfügen _ungerade" + +#: data/menu.ui.h:20 +msgid "Paste Interleave _Even" +msgstr "Abwechselnd einfügen _gerade" + +#: data/menu.ui.h:21 +msgid "Zoom _In" +msgstr "Ver_grössern" + +#: data/menu.ui.h:22 +msgid "Zoom _Out" +msgstr "Ver_kleinern" + +#: data/menu.ui.h:23 +msgid "Edit _Properties" +msgstr "Eige_nschaften ändern" + +#: data/menu.ui.h:24 +msgid "_About" +msgstr "Info zu _PDF Arranger" + +#: data/menu.ui.h:25 +msgid "_Quit" +msgstr "Been_den" + +#: data/menu.ui.h:26 +msgid "Past_e Special" +msgstr "Ein_fügen" + +#: data/menu.ui.h:27 +msgid "_Split Pages" +msgstr "Seiten _teilen" diff -Nru pdfarranger-1.4.2/po/el.po pdfarranger-1.6.2/po/el.po --- pdfarranger-1.4.2/po/el.po 2020-03-14 20:55:12.000000000 +0000 +++ pdfarranger-1.6.2/po/el.po 2020-08-01 09:52:15.000000000 +0000 @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: PDF-Shuffler 0.7\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-12 10:16+0100\n" +"POT-Creation-Date: 2020-04-11 10:54+0200\n" "PO-Revision-Date: 2017-02-26 16:16+0000\n" "Last-Translator: Konstantinos Poulios \n" "Language-Team: Greek (http://www.transifex.com/logari81/pdfshuffler/language/" @@ -20,104 +20,104 @@ "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: pdfarranger/metadata.py:30 +#: pdfarranger/metadata.py:35 msgid "Title" msgstr "" -#: pdfarranger/metadata.py:31 +#: pdfarranger/metadata.py:36 msgid "Creator" msgstr "" -#: pdfarranger/metadata.py:32 +#: pdfarranger/metadata.py:37 msgid "Producer" msgstr "" -#: pdfarranger/metadata.py:33 +#: pdfarranger/metadata.py:38 msgid "Creator tool" msgstr "" -#: pdfarranger/metadata.py:91 data/pdfarranger.ui.h:10 +#: pdfarranger/metadata.py:141 msgid "Edit properties" msgstr "" -#: pdfarranger/metadata.py:104 +#: pdfarranger/metadata.py:154 msgid "Property" msgstr "" -#: pdfarranger/metadata.py:104 +#: pdfarranger/metadata.py:154 msgid "Value" msgstr "" -#: pdfarranger/pdfarranger.py:506 +#: pdfarranger/pdfarranger.py:520 msgid "No document" msgstr "Κανένα έγγραφο" -#: pdfarranger/pdfarranger.py:508 +#: pdfarranger/pdfarranger.py:522 msgid "Several documents" msgstr "Διάφορα έγγραφα" -#: pdfarranger/pdfarranger.py:525 +#: pdfarranger/pdfarranger.py:539 #, python-format -msgid "Rendering thumbnails... [%(i1)s/%(i2)s]" -msgstr "Απεικόνιση μικρογραφιών... [%(i1)s/%(i2)s]" +msgid "Rendering thumbnails… [%(i1)s/%(i2)s]" +msgstr "Απεικόνιση μικρογραφιών… [%(i1)s/%(i2)s]" -#: pdfarranger/pdfarranger.py:614 -msgid "Export ..." -msgstr "Εξαγωγή ..." +#: pdfarranger/pdfarranger.py:629 +msgid "Export…" +msgstr "Εξαγωγή…" -#: pdfarranger/pdfarranger.py:626 pdfarranger/pdfarranger.py:709 +#: pdfarranger/pdfarranger.py:641 pdfarranger/pdfarranger.py:725 msgid "PDF files" msgstr "Αρχεία PDF" -#: pdfarranger/pdfarranger.py:632 pdfarranger/pdfarranger.py:704 +#: pdfarranger/pdfarranger.py:647 pdfarranger/pdfarranger.py:720 msgid "All files" msgstr "Όλα τα αρχεία" -#: pdfarranger/pdfarranger.py:693 -msgid "Import..." -msgstr "Εισαγωγή ..." +#: pdfarranger/pdfarranger.py:709 +msgid "Import…" +msgstr "Εισαγωγή…" -#: pdfarranger/pdfarranger.py:1072 +#: pdfarranger/pdfarranger.py:1223 msgid "Left" msgstr "Αριστερά" -#: pdfarranger/pdfarranger.py:1072 +#: pdfarranger/pdfarranger.py:1223 msgid "Right" msgstr "Δεξιά" -#: pdfarranger/pdfarranger.py:1073 +#: pdfarranger/pdfarranger.py:1224 msgid "Top" msgstr "Πάνω" -#: pdfarranger/pdfarranger.py:1073 +#: pdfarranger/pdfarranger.py:1224 msgid "Bottom" msgstr "Κάτω" -#: pdfarranger/pdfarranger.py:1090 +#: pdfarranger/pdfarranger.py:1241 msgid "Crop Selected Pages" msgstr "Περικοπή επιλεγμένων σελίδων" -#: pdfarranger/pdfarranger.py:1098 +#: pdfarranger/pdfarranger.py:1249 msgid "" "Cropping does not remove any content\n" "from the PDF file, it only hides it." msgstr "" -#: pdfarranger/pdfarranger.py:1101 +#: pdfarranger/pdfarranger.py:1252 msgid "Crop Margins" msgstr "Αποκοπή περιθωρίων" -#: pdfarranger/pdfarranger.py:1111 +#: pdfarranger/pdfarranger.py:1262 #, fuzzy, python-format msgid "% of width" msgstr "% του πλάτους" -#: pdfarranger/pdfarranger.py:1111 +#: pdfarranger/pdfarranger.py:1262 #, fuzzy, python-format msgid "% of height" msgstr "% του ύψους" -#: pdfarranger/pdfarranger.py:1218 +#: pdfarranger/pdfarranger.py:1369 #, python-format msgid "" "%s is a tool for rearranging and modifying PDF files. Developed using GTK+ " @@ -126,99 +126,161 @@ "Το %s είναι ένα εργαλείο για αναδιάταξη και τροποποίηση αρχείων PDF. Είναι " "γραμμένο σε GTK+ και Python" -#: pdfarranger/pdfarranger.py:1298 +#: pdfarranger/pdfarranger.py:1449 msgid "page" msgstr "σελίδα" #: data/pdfarranger.ui.h:1 -msgid "_File" -msgstr "_Αρχείο" +msgid "Open a file and append it to the current document" +msgstr "Άνοιγμα ενός αρχείου και προσάρτηση στο τρέχον έγγραφο" #: data/pdfarranger.ui.h:2 -msgid "_Export selection..." -msgstr "Εξαγωγή επιλεγμένων..." +msgid "Save" +msgstr "Αποθήκευση" #: data/pdfarranger.ui.h:3 -msgid "_Edit" -msgstr "_Επεξεργασία" +#, fuzzy +msgid "Save As" +msgstr "Αποθήκευση ως" #: data/pdfarranger.ui.h:4 -msgid "Rotate left" -msgstr "Περιστροφή αριστερά" +msgid "Number of Pages" +msgstr "" #: data/pdfarranger.ui.h:5 -msgid "Rotate right" -msgstr "Περιστροφή δεξιά" +msgid "Main Menu" +msgstr "" #: data/pdfarranger.ui.h:6 -msgid "Crop" -msgstr "Περικοπή" +#, fuzzy +msgid "Zoom In" +msgstr "Μεγέθυνση" #: data/pdfarranger.ui.h:7 -msgid "Du_plicate" -msgstr "" +#, fuzzy +msgid "Zoom Out" +msgstr "Σμίκρυνση" #: data/pdfarranger.ui.h:8 -msgid "Reverse Order" -msgstr "" +#, fuzzy +msgid "Rotate Left" +msgstr "Περιστροφή _Αριστερά" #: data/pdfarranger.ui.h:9 -msgid "Split pages" -msgstr "" - -#: data/pdfarranger.ui.h:11 -msgid "_View" -msgstr "_Προβολή" - -#: data/pdfarranger.ui.h:12 -msgid "Zoom in" -msgstr "Μεγέθυνση" - -#: data/pdfarranger.ui.h:13 -msgid "Zoom out" -msgstr "Σμίκρυνση" - -#: data/pdfarranger.ui.h:14 -msgid "_Help" -msgstr "_Βοήθεια" - -#: data/pdfarranger.ui.h:15 -msgid "Open a file and append it to the current document" -msgstr "Άνοιγμα ενός αρχείου και προσάρτηση στο τρέχον έγγραφο" +#, fuzzy +msgid "Rotate Right" +msgstr "Περιστροφή _Δεξιά" -#: data/pdfarranger.ui.h:16 -msgid "Import" +#: data/menu.ui.h:1 +#, fuzzy +msgid "_Import" msgstr "Εισαγωγή" -#: data/pdfarranger.ui.h:17 -msgid "Save" +#: data/menu.ui.h:2 +#, fuzzy +msgid "_Save" msgstr "Αποθήκευση" -#: data/pdfarranger.ui.h:18 -msgid "Save as" +#: data/menu.ui.h:3 +#, fuzzy +msgid "Save _As…" msgstr "Αποθήκευση ως" -#: data/pdfarranger.ui.h:19 -msgid "Delete" -msgstr "Διαγραφή" +#: data/menu.ui.h:4 +#, fuzzy +msgid "E_xport Selection…" +msgstr "Εξαγωγή επιλεγμένων…" + +#: data/menu.ui.h:5 +msgid "_Undo" +msgstr "" -#: data/pdfarranger.ui.h:20 +#: data/menu.ui.h:6 +msgid "_Redo" +msgstr "" + +#: data/menu.ui.h:7 +msgid "_Edit" +msgstr "_Επεξεργασία" + +#: data/menu.ui.h:8 msgid "Rotate _Left" msgstr "Περιστροφή _Αριστερά" -#: data/pdfarranger.ui.h:21 +#: data/menu.ui.h:9 msgid "_Rotate Right" msgstr "Περιστροφή _Δεξιά" -#: data/pdfarranger.ui.h:22 -#, fuzzy -msgid "C_rop" -msgstr "_Περικοπή" +#: data/menu.ui.h:10 +msgid "Cro_p" +msgstr "" -#: data/pdfarranger.ui.h:23 +#: data/menu.ui.h:11 msgid "_Delete" msgstr "Διαγραφή" -#: data/pdfarranger.ui.h:24 +#: data/menu.ui.h:12 +msgid "Dupl_icate" +msgstr "" + +#: data/menu.ui.h:13 msgid "Re_verse Order" msgstr "" + +#: data/menu.ui.h:14 +msgid "_Split pages" +msgstr "" + +#: data/menu.ui.h:15 +msgid "Cu_t" +msgstr "" + +#: data/menu.ui.h:16 +msgid "_Copy" +msgstr "" + +#: data/menu.ui.h:17 +msgid "Paste _After" +msgstr "" + +#: data/menu.ui.h:18 +msgid "Paste _Before" +msgstr "" + +#: data/menu.ui.h:19 +msgid "Paste Interleave _Odd" +msgstr "" + +#: data/menu.ui.h:20 +msgid "Paste Interleave _Even" +msgstr "" + +#: data/menu.ui.h:21 +#, fuzzy +msgid "Zoom _In" +msgstr "Μεγέθυνση" + +#: data/menu.ui.h:22 +#, fuzzy +msgid "Zoom _Out" +msgstr "Σμίκρυνση" + +#: data/menu.ui.h:23 +msgid "Edit _Properties" +msgstr "" + +#: data/menu.ui.h:24 +msgid "_About" +msgstr "" + +#: data/menu.ui.h:25 +msgid "_Quit" +msgstr "" + +#: data/menu.ui.h:26 +msgid "Past_e Special" +msgstr "" + +#: data/menu.ui.h:27 +msgid "_Split Pages" +msgstr "" diff -Nru pdfarranger-1.4.2/po/es.po pdfarranger-1.6.2/po/es.po --- pdfarranger-1.4.2/po/es.po 2020-03-14 20:55:12.000000000 +0000 +++ pdfarranger-1.6.2/po/es.po 2020-08-01 09:52:15.000000000 +0000 @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: PDF-Shuffler 0.7\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-12 10:16+0100\n" +"POT-Creation-Date: 2020-04-11 10:54+0200\n" "PO-Revision-Date: 2017-02-26 16:16+0000\n" "Last-Translator: Konstantinos Poulios \n" "Language-Team: Spanish (http://www.transifex.com/logari81/pdfshuffler/" @@ -21,104 +21,104 @@ "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: pdfarranger/metadata.py:30 +#: pdfarranger/metadata.py:35 msgid "Title" msgstr "" -#: pdfarranger/metadata.py:31 +#: pdfarranger/metadata.py:36 msgid "Creator" msgstr "" -#: pdfarranger/metadata.py:32 +#: pdfarranger/metadata.py:37 msgid "Producer" msgstr "" -#: pdfarranger/metadata.py:33 +#: pdfarranger/metadata.py:38 msgid "Creator tool" msgstr "" -#: pdfarranger/metadata.py:91 data/pdfarranger.ui.h:10 +#: pdfarranger/metadata.py:141 msgid "Edit properties" msgstr "" -#: pdfarranger/metadata.py:104 +#: pdfarranger/metadata.py:154 msgid "Property" msgstr "" -#: pdfarranger/metadata.py:104 +#: pdfarranger/metadata.py:154 msgid "Value" msgstr "" -#: pdfarranger/pdfarranger.py:506 +#: pdfarranger/pdfarranger.py:520 msgid "No document" msgstr "No hay documento seleccionado" -#: pdfarranger/pdfarranger.py:508 +#: pdfarranger/pdfarranger.py:522 msgid "Several documents" msgstr "Varios documentos" -#: pdfarranger/pdfarranger.py:525 +#: pdfarranger/pdfarranger.py:539 #, python-format -msgid "Rendering thumbnails... [%(i1)s/%(i2)s]" -msgstr "Renderizando las miniaturas... [%(i1)s/%(i2)s]" +msgid "Rendering thumbnails… [%(i1)s/%(i2)s]" +msgstr "Renderizando las miniaturas… [%(i1)s/%(i2)s]" -#: pdfarranger/pdfarranger.py:614 -msgid "Export ..." -msgstr "Exportar ..." +#: pdfarranger/pdfarranger.py:629 +msgid "Export…" +msgstr "Exportar…" -#: pdfarranger/pdfarranger.py:626 pdfarranger/pdfarranger.py:709 +#: pdfarranger/pdfarranger.py:641 pdfarranger/pdfarranger.py:725 msgid "PDF files" msgstr "Archivos PDF" -#: pdfarranger/pdfarranger.py:632 pdfarranger/pdfarranger.py:704 +#: pdfarranger/pdfarranger.py:647 pdfarranger/pdfarranger.py:720 msgid "All files" msgstr "Todos los archivos" -#: pdfarranger/pdfarranger.py:693 -msgid "Import..." -msgstr "Importar..." +#: pdfarranger/pdfarranger.py:709 +msgid "Import…" +msgstr "Importar…" -#: pdfarranger/pdfarranger.py:1072 +#: pdfarranger/pdfarranger.py:1223 msgid "Left" msgstr "Izquierdo" -#: pdfarranger/pdfarranger.py:1072 +#: pdfarranger/pdfarranger.py:1223 msgid "Right" msgstr "Derecho" -#: pdfarranger/pdfarranger.py:1073 +#: pdfarranger/pdfarranger.py:1224 msgid "Top" msgstr "Superior" -#: pdfarranger/pdfarranger.py:1073 +#: pdfarranger/pdfarranger.py:1224 msgid "Bottom" msgstr "Inferior" -#: pdfarranger/pdfarranger.py:1090 +#: pdfarranger/pdfarranger.py:1241 msgid "Crop Selected Pages" msgstr "Recortar las páginas seleccionadas" -#: pdfarranger/pdfarranger.py:1098 +#: pdfarranger/pdfarranger.py:1249 msgid "" "Cropping does not remove any content\n" "from the PDF file, it only hides it." msgstr "" -#: pdfarranger/pdfarranger.py:1101 +#: pdfarranger/pdfarranger.py:1252 msgid "Crop Margins" msgstr "Recortar los márgenes" -#: pdfarranger/pdfarranger.py:1111 +#: pdfarranger/pdfarranger.py:1262 #, python-format msgid "% of width" msgstr "% de la anchura" -#: pdfarranger/pdfarranger.py:1111 +#: pdfarranger/pdfarranger.py:1262 #, python-format msgid "% of height" msgstr "% de la altura" -#: pdfarranger/pdfarranger.py:1218 +#: pdfarranger/pdfarranger.py:1369 #, python-format msgid "" "%s is a tool for rearranging and modifying PDF files. Developed using GTK+ " @@ -127,100 +127,162 @@ "%s es una herramienta para reordenar y modificar ficheros PDF. Desarrollado " "usando GTK+ y Python" -#: pdfarranger/pdfarranger.py:1298 +#: pdfarranger/pdfarranger.py:1449 msgid "page" msgstr "página" #: data/pdfarranger.ui.h:1 -msgid "_File" -msgstr "_Fichero" +msgid "Open a file and append it to the current document" +msgstr "Abrir un fichero y añadirlo al documento actual" #: data/pdfarranger.ui.h:2 -msgid "_Export selection..." -msgstr "E_xportar las páginas seleccionadas..." +msgid "Save" +msgstr "Guardar" #: data/pdfarranger.ui.h:3 -msgid "_Edit" -msgstr "_Editar" +#, fuzzy +msgid "Save As" +msgstr "Guardar como" #: data/pdfarranger.ui.h:4 -msgid "Rotate left" -msgstr "Rotar a la izquierda" +msgid "Number of Pages" +msgstr "" #: data/pdfarranger.ui.h:5 -msgid "Rotate right" -msgstr "Rotar a la derecha" +msgid "Main Menu" +msgstr "" #: data/pdfarranger.ui.h:6 -msgid "Crop" -msgstr "Recortar" +#, fuzzy +msgid "Zoom In" +msgstr "Acercar" #: data/pdfarranger.ui.h:7 -msgid "Du_plicate" -msgstr "" +#, fuzzy +msgid "Zoom Out" +msgstr "Alejar" #: data/pdfarranger.ui.h:8 -msgid "Reverse Order" -msgstr "" +#, fuzzy +msgid "Rotate Left" +msgstr "Rotar a la _izquierda" #: data/pdfarranger.ui.h:9 -msgid "Split pages" -msgstr "" - -#: data/pdfarranger.ui.h:11 -msgid "_View" -msgstr "" - -#: data/pdfarranger.ui.h:12 -msgid "Zoom in" -msgstr "Acercar" - -#: data/pdfarranger.ui.h:13 -msgid "Zoom out" -msgstr "Alejar" - -#: data/pdfarranger.ui.h:14 -msgid "_Help" -msgstr "_Ayuda" - -#: data/pdfarranger.ui.h:15 -msgid "Open a file and append it to the current document" -msgstr "Abrir un fichero y añadirlo al documento actual" +#, fuzzy +msgid "Rotate Right" +msgstr "_Rotar a la derecha" -#: data/pdfarranger.ui.h:16 -msgid "Import" +#: data/menu.ui.h:1 +#, fuzzy +msgid "_Import" msgstr "Importar" -#: data/pdfarranger.ui.h:17 -msgid "Save" +#: data/menu.ui.h:2 +#, fuzzy +msgid "_Save" msgstr "Guardar" -#: data/pdfarranger.ui.h:18 -msgid "Save as" +#: data/menu.ui.h:3 +#, fuzzy +msgid "Save _As…" msgstr "Guardar como" -#: data/pdfarranger.ui.h:19 -msgid "Delete" -msgstr "Borrar" +#: data/menu.ui.h:4 +#, fuzzy +msgid "E_xport Selection…" +msgstr "E_xportar las páginas seleccionadas…" + +#: data/menu.ui.h:5 +msgid "_Undo" +msgstr "" -#: data/pdfarranger.ui.h:20 +#: data/menu.ui.h:6 +msgid "_Redo" +msgstr "" + +#: data/menu.ui.h:7 +msgid "_Edit" +msgstr "_Editar" + +#: data/menu.ui.h:8 msgid "Rotate _Left" msgstr "Rotar a la _izquierda" -#: data/pdfarranger.ui.h:21 +#: data/menu.ui.h:9 msgid "_Rotate Right" msgstr "_Rotar a la derecha" -#: data/pdfarranger.ui.h:22 -#, fuzzy -msgid "C_rop" -msgstr "R_ecortar.." +#: data/menu.ui.h:10 +msgid "Cro_p" +msgstr "" -#: data/pdfarranger.ui.h:23 +#: data/menu.ui.h:11 #, fuzzy msgid "_Delete" msgstr "Borrar" -#: data/pdfarranger.ui.h:24 +#: data/menu.ui.h:12 +msgid "Dupl_icate" +msgstr "" + +#: data/menu.ui.h:13 msgid "Re_verse Order" msgstr "" + +#: data/menu.ui.h:14 +msgid "_Split pages" +msgstr "" + +#: data/menu.ui.h:15 +msgid "Cu_t" +msgstr "" + +#: data/menu.ui.h:16 +msgid "_Copy" +msgstr "" + +#: data/menu.ui.h:17 +msgid "Paste _After" +msgstr "" + +#: data/menu.ui.h:18 +msgid "Paste _Before" +msgstr "" + +#: data/menu.ui.h:19 +msgid "Paste Interleave _Odd" +msgstr "" + +#: data/menu.ui.h:20 +msgid "Paste Interleave _Even" +msgstr "" + +#: data/menu.ui.h:21 +#, fuzzy +msgid "Zoom _In" +msgstr "Acercar" + +#: data/menu.ui.h:22 +#, fuzzy +msgid "Zoom _Out" +msgstr "Alejar" + +#: data/menu.ui.h:23 +msgid "Edit _Properties" +msgstr "" + +#: data/menu.ui.h:24 +msgid "_About" +msgstr "" + +#: data/menu.ui.h:25 +msgid "_Quit" +msgstr "" + +#: data/menu.ui.h:26 +msgid "Past_e Special" +msgstr "" + +#: data/menu.ui.h:27 +msgid "_Split Pages" +msgstr "" diff -Nru pdfarranger-1.4.2/po/fr.po pdfarranger-1.6.2/po/fr.po --- pdfarranger-1.4.2/po/fr.po 2020-03-14 20:55:12.000000000 +0000 +++ pdfarranger-1.6.2/po/fr.po 2020-08-01 09:52:15.000000000 +0000 @@ -1,6 +1,6 @@ -# PDF-Shuffler translation files. -# Copyright (C) 2008-2017 Konstantinos Poulios -# This file is part of PDF-Shuffler which is released under the GNU General +# pdfarranger translation files. +# Copyright (C) 2020 Jérôme Robert +# This file is part of pdfarranger which is released under the GNU General # Public License version 3 or later. # See file COPYING or go to for full license details. # Translators: @@ -12,96 +12,132 @@ msgstr "" "Project-Id-Version: unnamed project\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-12 10:16+0100\n" -"PO-Revision-Date: 2020-01-12 10:30+0100\n" -"Last-Translator: Charles Monzat \n" +"POT-Creation-Date: 2020-07-23 18:57+0200\n" +"PO-Revision-Date: 2020-07-23 19:02+0200\n" +"Last-Translator: Jérôme Robert \n" "Language-Team: French - France <>\n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-SourceCharset: utf-8\n" -"X-Generator: Poedit 2.2.4\n" +"X-Generator: Poedit 2.3.1\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: pdfarranger/metadata.py:30 +#: pdfarranger/metadata.py:36 msgid "Title" msgstr "Titre" -#: pdfarranger/metadata.py:31 +#: pdfarranger/metadata.py:37 msgid "Creator" msgstr "Auteur" -#: pdfarranger/metadata.py:32 +#: pdfarranger/metadata.py:38 msgid "Producer" msgstr "Producteur" -#: pdfarranger/metadata.py:33 +#: pdfarranger/metadata.py:39 msgid "Creator tool" msgstr "Outil" -#: pdfarranger/metadata.py:91 data/pdfarranger.ui.h:10 +#: pdfarranger/metadata.py:154 msgid "Edit properties" msgstr "Éditer les propriétés" -#: pdfarranger/metadata.py:104 +#: pdfarranger/metadata.py:167 msgid "Property" msgstr "Propriété" -#: pdfarranger/metadata.py:104 +#: pdfarranger/metadata.py:167 msgid "Value" msgstr "Valeur" -#: pdfarranger/pdfarranger.py:506 -msgid "No document" -msgstr "Aucun document" - -#: pdfarranger/pdfarranger.py:508 -msgid "Several documents" -msgstr "Plusieurs documents" - -#: pdfarranger/pdfarranger.py:525 +#: pdfarranger/pdfarranger.py:591 #, python-format -msgid "Rendering thumbnails... [%(i1)s/%(i2)s]" +msgid "Rendering thumbnails… [%(i1)s/%(i2)s]" msgstr "Création des miniatures… [%(i1)s/%(i2)s]" -#: pdfarranger/pdfarranger.py:614 -msgid "Export ..." +#: pdfarranger/pdfarranger.py:672 +msgid "Save changes to “{}” before closing?" +msgstr "Enregistrer les modifications du document «{}» avant la fermeture ?" + +#: pdfarranger/pdfarranger.py:674 +msgid "Save changes before closing?" +msgstr "Enregistrer les modifications avant la fermeture ?" + +#: pdfarranger/pdfarranger.py:676 +msgid "Your changes will be lost if you don’t save them." +msgstr "Vos modifications seront perdues si vous ne les enregistrez pas." + +#: pdfarranger/pdfarranger.py:677 +msgid "Do_n’t Save" +msgstr "_Ne pas enregistrer" + +#: pdfarranger/pdfarranger.py:677 +msgid "_Cancel" +msgstr "_Annuler" + +#: pdfarranger/pdfarranger.py:677 data/menu.ui.h:2 +msgid "_Save" +msgstr "_Enregistrer" + +#: pdfarranger/pdfarranger.py:718 +msgid "Export…" msgstr "Exporter…" -#: pdfarranger/pdfarranger.py:626 pdfarranger/pdfarranger.py:709 +#: pdfarranger/pdfarranger.py:730 pdfarranger/pdfarranger.py:827 msgid "PDF files" msgstr "Fichiers PDF" -#: pdfarranger/pdfarranger.py:632 pdfarranger/pdfarranger.py:704 +#: pdfarranger/pdfarranger.py:736 pdfarranger/pdfarranger.py:813 msgid "All files" msgstr "Tous les fichiers" -#: pdfarranger/pdfarranger.py:693 -msgid "Import..." +#: pdfarranger/pdfarranger.py:802 +msgid "Import…" msgstr "Importer…" -#: pdfarranger/pdfarranger.py:1072 +#: pdfarranger/pdfarranger.py:819 +msgid "Supported image files" +msgstr "Fichiers image pris en charge" + +#: pdfarranger/pdfarranger.py:916 +msgid "Pasted data not valid. Aborting paste." +msgstr "Données collées invalides. Annulation du collage." + +#: pdfarranger/pdfarranger.py:1018 pdfarranger/pdfarranger.py:1675 +msgid "Unknown file format" +msgstr "Format de fichier inconnu" + +#: pdfarranger/pdfarranger.py:1022 +msgid "PDF document is damaged" +msgstr "Le document PDF est endommagé" + +#: pdfarranger/pdfarranger.py:1028 pdfarranger/pdfarranger.py:1701 +msgid "File is neither pdf nor image" +msgstr "Le fichier n'est pas un PDF ni une image" + +#: pdfarranger/pdfarranger.py:1482 msgid "Left" msgstr "À gauche" -#: pdfarranger/pdfarranger.py:1072 +#: pdfarranger/pdfarranger.py:1482 msgid "Right" msgstr "À droite" -#: pdfarranger/pdfarranger.py:1073 +#: pdfarranger/pdfarranger.py:1483 msgid "Top" msgstr "En haut" -#: pdfarranger/pdfarranger.py:1073 +#: pdfarranger/pdfarranger.py:1483 msgid "Bottom" msgstr "En bas" -#: pdfarranger/pdfarranger.py:1090 +#: pdfarranger/pdfarranger.py:1500 msgid "Crop Selected Pages" msgstr "Rogner les pages sélectionnées" -#: pdfarranger/pdfarranger.py:1098 +#: pdfarranger/pdfarranger.py:1508 msgid "" "Cropping does not remove any content\n" "from the PDF file, it only hides it." @@ -109,21 +145,21 @@ "Le contenu rogné reste présent dans le\n" "fichier PDF. Il est simplement caché." -#: pdfarranger/pdfarranger.py:1101 +#: pdfarranger/pdfarranger.py:1511 msgid "Crop Margins" msgstr "Rogner les marges" -#: pdfarranger/pdfarranger.py:1111 +#: pdfarranger/pdfarranger.py:1521 #, python-format msgid "% of width" msgstr "% de la largeur" -#: pdfarranger/pdfarranger.py:1111 +#: pdfarranger/pdfarranger.py:1521 #, python-format msgid "% of height" msgstr "% de la hauteur" -#: pdfarranger/pdfarranger.py:1218 +#: pdfarranger/pdfarranger.py:1628 #, python-format msgid "" "%s is a tool for rearranging and modifying PDF files. Developed using GTK+ " @@ -132,98 +168,162 @@ "%s est un outil pour réorganiser et modifier les fichiers PDF. Développé " "avec GTK+ et Python" -#: pdfarranger/pdfarranger.py:1298 +#: pdfarranger/pdfarranger.py:1631 +msgid "Maintainers and contributors" +msgstr "Mainteneurs et contributeurs" + +#: pdfarranger/pdfarranger.py:1635 +msgid "GNU General Public License (GPL) Version 3." +msgstr "Licence publique générale GNU (GPL), version 3." + +#: pdfarranger/pdfarranger.py:1687 +msgid "Image files are only supported with img2pdf" +msgstr "Les fichiers images sont seulement pris en charge avec img2pdf" + +#: pdfarranger/pdfarranger.py:1699 +msgid "Image format is not supported by img2pdf" +msgstr "Le format d’image n’est pas pris en charge par img2pdf" + +#: pdfarranger/pdfarranger.py:1752 msgid "page" msgstr "page" #: data/pdfarranger.ui.h:1 -msgid "_File" -msgstr "_Fichier" +msgid "Open a file and append it to the current document" +msgstr "Ouvrir un fichier et l’ajouter au document actuel" #: data/pdfarranger.ui.h:2 -msgid "_Export selection..." -msgstr "_Exporter la sélection…" +msgid "Save" +msgstr "Enregistrer" #: data/pdfarranger.ui.h:3 -msgid "_Edit" -msgstr "É_dition" +msgid "Save As" +msgstr "Enregistrer sous" #: data/pdfarranger.ui.h:4 -msgid "Rotate left" -msgstr "Rotation vers la gauche" +msgid "Number of Pages" +msgstr "Nombre de pages" #: data/pdfarranger.ui.h:5 -msgid "Rotate right" -msgstr "Rotation vers la droite" +msgid "Main Menu" +msgstr "Menu principal" #: data/pdfarranger.ui.h:6 -msgid "Crop" -msgstr "Rogner" +msgid "Zoom In" +msgstr "Zoom avant" #: data/pdfarranger.ui.h:7 -msgid "Du_plicate" -msgstr "Dupliquer" +msgid "Zoom Out" +msgstr "Zoom arrière" #: data/pdfarranger.ui.h:8 -msgid "Reverse Order" -msgstr "Inverser l’ordre" +msgid "Rotate Left" +msgstr "Rotation vers la gauche" #: data/pdfarranger.ui.h:9 -msgid "Split pages" -msgstr "Séparer les pages" - -#: data/pdfarranger.ui.h:11 -msgid "_View" -msgstr "_Affichage" - -#: data/pdfarranger.ui.h:12 -msgid "Zoom in" -msgstr "Zoom avant" - -#: data/pdfarranger.ui.h:13 -msgid "Zoom out" -msgstr "Zoom arrière" - -#: data/pdfarranger.ui.h:14 -msgid "_Help" -msgstr "Aid_e" - -#: data/pdfarranger.ui.h:15 -msgid "Open a file and append it to the current document" -msgstr "Ouvrir un fichier et l’ajouter au document actuel" - -#: data/pdfarranger.ui.h:16 -msgid "Import" -msgstr "Importer" - -#: data/pdfarranger.ui.h:17 -msgid "Save" -msgstr "Enregistrer" +msgid "Rotate Right" +msgstr "Rotation vers la droite" -#: data/pdfarranger.ui.h:18 -msgid "Save as" -msgstr "Enregistrer sous" +#: data/menu.ui.h:1 +msgid "_Import" +msgstr "_Importer" + +#: data/menu.ui.h:3 +msgid "Save _As…" +msgstr "Enregistrer _sous…" + +#: data/menu.ui.h:4 +msgid "E_xport Selection…" +msgstr "E_xporter la sélection…" + +#: data/menu.ui.h:5 +msgid "_Undo" +msgstr "Ann_uler" + +#: data/menu.ui.h:6 +msgid "_Redo" +msgstr "_Rétablir" -#: data/pdfarranger.ui.h:19 -msgid "Delete" -msgstr "Supprimer" +#: data/menu.ui.h:7 +msgid "_Edit" +msgstr "É_dition" -#: data/pdfarranger.ui.h:20 +#: data/menu.ui.h:8 msgid "Rotate _Left" msgstr "Rotation vers la _gauche" -#: data/pdfarranger.ui.h:21 +#: data/menu.ui.h:9 msgid "_Rotate Right" msgstr "Rotation vers la _droite" -#: data/pdfarranger.ui.h:22 -msgid "C_rop" +#: data/menu.ui.h:10 +msgid "Cro_p" msgstr "_Rogner" -#: data/pdfarranger.ui.h:23 +#: data/menu.ui.h:11 msgid "_Delete" msgstr "_Supprimer" -#: data/pdfarranger.ui.h:24 +#: data/menu.ui.h:12 +msgid "Dupl_icate" +msgstr "D_upliquer" + +#: data/menu.ui.h:13 msgid "Re_verse Order" -msgstr "In_verser l’ordre" +msgstr "_Inverser l’ordre" + +#: data/menu.ui.h:14 +msgid "_Split pages" +msgstr "S_éparer les pages" + +#: data/menu.ui.h:15 +msgid "Cu_t" +msgstr "C_ouper" + +#: data/menu.ui.h:16 +msgid "_Copy" +msgstr "_Copier" + +#: data/menu.ui.h:17 +msgid "Paste _After" +msgstr "Co_ller après" + +#: data/menu.ui.h:18 +msgid "Paste _Before" +msgstr "Coller a_vant" + +#: data/menu.ui.h:19 +msgid "Paste Interleave _Odd" +msgstr "Collage entrelacé _pair" + +#: data/menu.ui.h:20 +msgid "Paste Interleave _Even" +msgstr "Collage entrelacé i_mpair" + +#: data/menu.ui.h:21 +msgid "Zoom _In" +msgstr "Zoom a_vant" + +#: data/menu.ui.h:22 +msgid "Zoom _Out" +msgstr "Zoom _arrière" + +#: data/menu.ui.h:23 +msgid "Edit _Properties" +msgstr "Édi_ter les propriétés" + +#: data/menu.ui.h:24 +msgid "_About" +msgstr "À _propos" + +#: data/menu.ui.h:25 +msgid "_Quit" +msgstr "_Quitter" + +#: data/menu.ui.h:26 +msgid "Past_e Special" +msgstr "Coll_age spécial" + +#: data/menu.ui.h:27 +msgid "_Split Pages" +msgstr "_Séparer les pages" diff -Nru pdfarranger-1.4.2/po/genpot.sh pdfarranger-1.6.2/po/genpot.sh --- pdfarranger-1.4.2/po/genpot.sh 2020-03-14 20:55:12.000000000 +0000 +++ pdfarranger-1.6.2/po/genpot.sh 2020-08-01 09:52:15.000000000 +0000 @@ -21,5 +21,8 @@ # # Make translation files +cd $(dirname $0)/.. intltool-extract --type=gettext/glade data/pdfarranger.ui -xgettext --language=Python --keyword=_ --keyword=N_ --output=po/pdfarranger.pot pdfarranger/*.py data/pdfarranger.ui.h +intltool-extract --type=gettext/glade data/menu.ui +xgettext --from-code=utf-8 --language=Python --keyword=_ --keyword=N_ --output=po/pdfarranger.pot \ + pdfarranger/*.py data/pdfarranger.ui.h data/menu.ui.h diff -Nru pdfarranger-1.4.2/po/hr.po pdfarranger-1.6.2/po/hr.po --- pdfarranger-1.4.2/po/hr.po 1970-01-01 00:00:00.000000000 +0000 +++ pdfarranger-1.6.2/po/hr.po 2020-08-01 09:52:15.000000000 +0000 @@ -0,0 +1,324 @@ +# Croatian translation for pdfarranger. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the pdfarranger package. +# Milo Ivir , 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: pdfarranger\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-07-22 06:04+0200\n" +"PO-Revision-Date: 2020-07-22 13:12+0200\n" +"Last-Translator: Milo Ivir \n" +"Language-Team: \n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.3.1\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" + +#: pdfarranger/metadata.py:36 +msgid "Title" +msgstr "Naslov" + +#: pdfarranger/metadata.py:37 +msgid "Creator" +msgstr "Autor" + +#: pdfarranger/metadata.py:38 +msgid "Producer" +msgstr "Stvaralac" + +#: pdfarranger/metadata.py:39 +msgid "Creator tool" +msgstr "Alat" + +#: pdfarranger/metadata.py:154 +msgid "Edit properties" +msgstr "Uredi svojstva" + +#: pdfarranger/metadata.py:167 +msgid "Property" +msgstr "Svojstvo" + +#: pdfarranger/metadata.py:167 +msgid "Value" +msgstr "Vrijednost" + +#: pdfarranger/pdfarranger.py:591 +#, python-format +msgid "Rendering thumbnails… [%(i1)s/%(i2)s]" +msgstr "Iscrtavanje sličica … [%(i1)s/%(i2)s]" + +#: pdfarranger/pdfarranger.py:672 +msgid "Save changes to “{}” before closing?" +msgstr "Spremiti promjene u „{}” prije zatvaranja?" + +#: pdfarranger/pdfarranger.py:674 +msgid "Save changes before closing?" +msgstr "Spremiti promjene prije zatvaranja?" + +#: pdfarranger/pdfarranger.py:676 +msgid "Your changes will be lost if you don’t save them." +msgstr "Ako promjene ne spremiš, izgubit ćeš ih." + +#: pdfarranger/pdfarranger.py:677 +msgid "Do_n’t Save" +msgstr "Nemoj spremiti" + +#: pdfarranger/pdfarranger.py:677 +msgid "_Cancel" +msgstr "O_dustani" + +#: pdfarranger/pdfarranger.py:677 data/menu.ui.h:2 +msgid "_Save" +msgstr "_Spremi" + +#: pdfarranger/pdfarranger.py:718 +msgid "Export…" +msgstr "Izvezi …" + +#: pdfarranger/pdfarranger.py:730 pdfarranger/pdfarranger.py:827 +msgid "PDF files" +msgstr "PDF datoteke" + +#: pdfarranger/pdfarranger.py:736 pdfarranger/pdfarranger.py:813 +msgid "All files" +msgstr "Sve datoteke" + +#: pdfarranger/pdfarranger.py:802 +msgid "Import…" +msgstr "Uvezi …" + +#: pdfarranger/pdfarranger.py:819 +msgid "Supported image files" +msgstr "Podržane slikovne datoteke" + +#: pdfarranger/pdfarranger.py:916 +msgid "Pasted data not valid. Aborting paste." +msgstr "Umetnuti podaci nisu ispravni. Umetanje se prekida." + +#: pdfarranger/pdfarranger.py:1018 pdfarranger/pdfarranger.py:1675 +msgid "Unknown file format" +msgstr "Nepoznat datotečni format" + +#: pdfarranger/pdfarranger.py:1022 +msgid "PDF document is damaged" +msgstr "PDF dokument je oštećen" + +#: pdfarranger/pdfarranger.py:1028 pdfarranger/pdfarranger.py:1701 +msgid "File is neither pdf nor image" +msgstr "Datoteka nije pdf niti slika" + +#: pdfarranger/pdfarranger.py:1482 +msgid "Left" +msgstr "Lijevo" + +#: pdfarranger/pdfarranger.py:1482 +msgid "Right" +msgstr "Desno" + +#: pdfarranger/pdfarranger.py:1483 +msgid "Top" +msgstr "Gore" + +#: pdfarranger/pdfarranger.py:1483 +msgid "Bottom" +msgstr "Dolje" + +#: pdfarranger/pdfarranger.py:1500 +msgid "Crop Selected Pages" +msgstr "Obreži odabrane stranice" + +#: pdfarranger/pdfarranger.py:1508 +msgid "" +"Cropping does not remove any content\n" +"from the PDF file, it only hides it." +msgstr "" +"Obrezivanje ne uklanja sadržaj\n" +"PDF datoteke, već ga samo skriva." + +#: pdfarranger/pdfarranger.py:1511 +msgid "Crop Margins" +msgstr "Margine obrezivanja" + +#: pdfarranger/pdfarranger.py:1521 +#, python-format +msgid "% of width" +msgstr "% širine" + +#: pdfarranger/pdfarranger.py:1521 +#, python-format +msgid "% of height" +msgstr "% visine" + +#: pdfarranger/pdfarranger.py:1628 +#, python-format +msgid "" +"%s is a tool for rearranging and modifying PDF files. Developed using GTK+ " +"and Python" +msgstr "" +"%s je alat za preraspoređivanje i mijenjenje stranica PDF datoteka. Razvijen " +"je pomoću GTK+ i Pythona" + +#: pdfarranger/pdfarranger.py:1631 +msgid "Maintainers and contributors" +msgstr "Održavatelji i doprinositelji" + +#: pdfarranger/pdfarranger.py:1635 +msgid "GNU General Public License (GPL) Version 3." +msgstr "GNU opća javna licenca, verzija 3." + +#: pdfarranger/pdfarranger.py:1687 +msgid "Image files are only supported with img2pdf" +msgstr "Slikovne datoteke su podržane samo s img2pdf" + +#: pdfarranger/pdfarranger.py:1699 +msgid "Image format is not supported by img2pdf" +msgstr "img2pdf ne podržava format slike" + +#: pdfarranger/pdfarranger.py:1752 +msgid "page" +msgstr "stranica" + +#: data/pdfarranger.ui.h:1 +msgid "Open a file and append it to the current document" +msgstr "Otvori datoteku i dodaj je trenutačnom dokumentu" + +#: data/pdfarranger.ui.h:2 +msgid "Save" +msgstr "Spremi" + +#: data/pdfarranger.ui.h:3 +msgid "Save As" +msgstr "Spremi kao" + +#: data/pdfarranger.ui.h:4 +msgid "Number of Pages" +msgstr "Broj stranica" + +#: data/pdfarranger.ui.h:5 +msgid "Main Menu" +msgstr "Glavni izbornik" + +#: data/pdfarranger.ui.h:6 +msgid "Zoom In" +msgstr "Uvećaj" + +#: data/pdfarranger.ui.h:7 +msgid "Zoom Out" +msgstr "Umanji" + +#: data/pdfarranger.ui.h:8 +msgid "Rotate Left" +msgstr "Okreni lijevo" + +#: data/pdfarranger.ui.h:9 +msgid "Rotate Right" +msgstr "Okreni desno" + +#: data/menu.ui.h:1 +msgid "_Import" +msgstr "_Uvezi" + +#: data/menu.ui.h:3 +msgid "Save _As…" +msgstr "Spremi k_ao …" + +#: data/menu.ui.h:4 +msgid "E_xport Selection…" +msgstr "_Izvezi odabir …" + +#: data/menu.ui.h:5 +msgid "_Undo" +msgstr "_Vrati" + +#: data/menu.ui.h:6 +msgid "_Redo" +msgstr "_Ponovi" + +#: data/menu.ui.h:7 +msgid "_Edit" +msgstr "Ur_edi" + +#: data/menu.ui.h:8 +msgid "Rotate _Left" +msgstr "Okreni _lijevo" + +#: data/menu.ui.h:9 +msgid "_Rotate Right" +msgstr "Okreni _desno" + +#: data/menu.ui.h:10 +msgid "Cro_p" +msgstr "_Obreži" + +#: data/menu.ui.h:11 +msgid "_Delete" +msgstr "Iz_briši" + +#: data/menu.ui.h:12 +msgid "Dupl_icate" +msgstr "Dupli_ciraj" + +#: data/menu.ui.h:13 +msgid "Re_verse Order" +msgstr "Preo_kreni redoslijed" + +#: data/menu.ui.h:14 +msgid "_Split pages" +msgstr "_Rastavi stranice" + +#: data/menu.ui.h:15 +msgid "Cu_t" +msgstr "_Izreži" + +#: data/menu.ui.h:16 +msgid "_Copy" +msgstr "_Kopiraj" + +#: data/menu.ui.h:17 +msgid "Paste _After" +msgstr "Umetni i_za" + +#: data/menu.ui.h:18 +msgid "Paste _Before" +msgstr "Umetni i_spred" + +#: data/menu.ui.h:19 +msgid "Paste Interleave _Odd" +msgstr "Umetni naizmjenično _neparno" + +#: data/menu.ui.h:20 +msgid "Paste Interleave _Even" +msgstr "Umetni naizmjenično _parno" + +#: data/menu.ui.h:21 +msgid "Zoom _In" +msgstr "U_većaj" + +#: data/menu.ui.h:22 +msgid "Zoom _Out" +msgstr "U_manji" + +#: data/menu.ui.h:23 +msgid "Edit _Properties" +msgstr "Uredi _svojstva" + +#: data/menu.ui.h:24 +msgid "_About" +msgstr "_Informacije" + +#: data/menu.ui.h:25 +msgid "_Quit" +msgstr "_Zatvori program" + +#: data/menu.ui.h:26 +msgid "Past_e Special" +msgstr "Um_etni" + +#: data/menu.ui.h:27 +msgid "_Split Pages" +msgstr "Ras_tavi stranice" diff -Nru pdfarranger-1.4.2/po/hu.po pdfarranger-1.6.2/po/hu.po --- pdfarranger-1.4.2/po/hu.po 2020-03-14 20:55:12.000000000 +0000 +++ pdfarranger-1.6.2/po/hu.po 2020-08-01 09:52:15.000000000 +0000 @@ -1,19 +1,10 @@ -# PDF-Shuffler translation files. -# Copyright (C) 2008-2017 Konstantinos Poulios -# This file is part of PDF-Shuffler which is released under the GNU General +# This file is part of PDF-Arranger which is released under the GNU General # Public License version 3 or later. # See file COPYING or go to for full license details. # Translators: -# Peter Bojtos , 2011 +# Péter Bojtos , 2011 msgid "" msgstr "" -"Project-Id-Version: PDF-Shuffler 0.6.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-12 10:16+0100\n" -"PO-Revision-Date: 2011-11-25 18:26+0100\n" -"Last-Translator: Peter Bojtos \n" -"Language-Team: SuliX Support Team \n" -"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -21,106 +12,104 @@ "X-Poedit-Country: HUNGARY\n" "X-Poedit-SourceCharset: utf-8\n" -#: pdfarranger/metadata.py:30 +#: pdfarranger/metadata.py:35 msgid "Title" -msgstr "" +msgstr "Cím" -#: pdfarranger/metadata.py:31 +#: pdfarranger/metadata.py:36 msgid "Creator" -msgstr "" +msgstr "Készítő" -#: pdfarranger/metadata.py:32 +#: pdfarranger/metadata.py:37 msgid "Producer" -msgstr "" +msgstr "Gyártó" -#: pdfarranger/metadata.py:33 +#: pdfarranger/metadata.py:38 msgid "Creator tool" -msgstr "" +msgstr "Készítő eszköz" -#: pdfarranger/metadata.py:91 data/pdfarranger.ui.h:10 +#: pdfarranger/metadata.py:141 msgid "Edit properties" -msgstr "" +msgstr "Tulajdonságok szerkesztése" -#: pdfarranger/metadata.py:104 +#: pdfarranger/metadata.py:154 msgid "Property" -msgstr "" +msgstr "Tulajdonság" -#: pdfarranger/metadata.py:104 +#: pdfarranger/metadata.py:154 msgid "Value" -msgstr "" +msgstr "Érték" -#: pdfarranger/pdfarranger.py:506 +#: pdfarranger/pdfarranger.py:520 msgid "No document" msgstr "Nincs dokumentum" -#: pdfarranger/pdfarranger.py:508 +#: pdfarranger/pdfarranger.py:522 msgid "Several documents" msgstr "Néhány dokumentum" -#: pdfarranger/pdfarranger.py:525 +#: pdfarranger/pdfarranger.py:539 #, python-format -msgid "Rendering thumbnails... [%(i1)s/%(i2)s]" -msgstr "Bélyegképek előállítása... [%(i1)s/%(i2)s]" +msgid "Rendering thumbnails… [%(i1)s/%(i2)s]" +msgstr "Bélyegképek előállítása… [%(i1)s/%(i2)s]" -#: pdfarranger/pdfarranger.py:614 -msgid "Export ..." -msgstr "Exportálás..." +#: pdfarranger/pdfarranger.py:629 +msgid "Export…" +msgstr "Exportálás…" -#: pdfarranger/pdfarranger.py:626 pdfarranger/pdfarranger.py:709 +#: pdfarranger/pdfarranger.py:641 pdfarranger/pdfarranger.py:725 msgid "PDF files" -msgstr "PDF fájlok" +msgstr "PDF-fájlok" -#: pdfarranger/pdfarranger.py:632 pdfarranger/pdfarranger.py:704 +#: pdfarranger/pdfarranger.py:647 pdfarranger/pdfarranger.py:720 msgid "All files" msgstr "Minden fájl" -#: pdfarranger/pdfarranger.py:693 -#, fuzzy -msgid "Import..." -msgstr "_Importálás..." +#: pdfarranger/pdfarranger.py:709 +msgid "Import…" +msgstr "Importálás…" -#: pdfarranger/pdfarranger.py:1072 +#: pdfarranger/pdfarranger.py:1223 msgid "Left" msgstr "Balra" -#: pdfarranger/pdfarranger.py:1072 +#: pdfarranger/pdfarranger.py:1223 msgid "Right" msgstr "Jobbra" -#: pdfarranger/pdfarranger.py:1073 +#: pdfarranger/pdfarranger.py:1224 msgid "Top" msgstr "Fent" -#: pdfarranger/pdfarranger.py:1073 +#: pdfarranger/pdfarranger.py:1224 msgid "Bottom" msgstr "Lent" -#: pdfarranger/pdfarranger.py:1090 +#: pdfarranger/pdfarranger.py:1241 msgid "Crop Selected Pages" -msgstr "A kiválasztott oldalak levágása" +msgstr "Kijelölt oldalak körülvágása" -#: pdfarranger/pdfarranger.py:1098 +#: pdfarranger/pdfarranger.py:1249 msgid "" "Cropping does not remove any content\n" "from the PDF file, it only hides it." msgstr "" +"A körülvágás nem távolít el tartalmat\n" +"a PDF-fájlból, csak elrejti." -#: pdfarranger/pdfarranger.py:1101 +#: pdfarranger/pdfarranger.py:1252 msgid "Crop Margins" -msgstr "Margók levágása" +msgstr "Margók körülvágása" -#: pdfarranger/pdfarranger.py:1111 -#, fuzzy, python-format +#: pdfarranger/pdfarranger.py:1262 msgid "% of width" msgstr "% szélesség" -#: pdfarranger/pdfarranger.py:1111 -#, fuzzy, python-format +#: pdfarranger/pdfarranger.py:1262 msgid "% of height" msgstr "% magasság" -#: pdfarranger/pdfarranger.py:1218 -#, fuzzy, python-format +#: pdfarranger/pdfarranger.py:1369 msgid "" "%s is a tool for rearranging and modifying PDF files. Developed using GTK+ " "and Python" @@ -128,102 +117,150 @@ "A %s egy olyan eszköz, mellyel átrendezhetők és módosíthatóak a PDF fájlok. " "GTK+ és Python segítségével írták" -#: pdfarranger/pdfarranger.py:1298 +#: pdfarranger/pdfarranger.py:1449 msgid "page" msgstr "oldal" #: data/pdfarranger.ui.h:1 -msgid "_File" -msgstr "_Fájl" +msgid "Open a file and append it to the current document" +msgstr "Fájl megnyitása és hozzáfűzése a jelenlegi dokumentumhoz" #: data/pdfarranger.ui.h:2 -#, fuzzy -msgid "_Export selection..." -msgstr "Exportálás..." +msgid "Save" +msgstr "Mentés" #: data/pdfarranger.ui.h:3 -msgid "_Edit" -msgstr "_Szerkesztés" +msgid "Save As" +msgstr "Mentés másként…" #: data/pdfarranger.ui.h:4 -msgid "Rotate left" -msgstr "Forgatás balra" +msgid "Number of Pages" +msgstr "Oldalak száma" #: data/pdfarranger.ui.h:5 -msgid "Rotate right" -msgstr "Forgatás jobbra" +msgid "Main Menu" +msgstr "Főmenü" #: data/pdfarranger.ui.h:6 -msgid "Crop" -msgstr "Levágás" +msgid "Zoom In" +msgstr "Nagyítás" #: data/pdfarranger.ui.h:7 -msgid "Du_plicate" -msgstr "" +msgid "Zoom Out" +msgstr "Kicsinyítés" #: data/pdfarranger.ui.h:8 -msgid "Reverse Order" -msgstr "" +msgid "Rotate Left" +msgstr "Forgatás balra" #: data/pdfarranger.ui.h:9 -msgid "Split pages" -msgstr "" - -#: data/pdfarranger.ui.h:11 -msgid "_View" -msgstr "_Nézet" - -#: data/pdfarranger.ui.h:12 -msgid "Zoom in" -msgstr "Nagyítás" - -#: data/pdfarranger.ui.h:13 -msgid "Zoom out" -msgstr "Kicsinyítés" - -#: data/pdfarranger.ui.h:14 -msgid "_Help" -msgstr "_Súgó" - -#: data/pdfarranger.ui.h:15 -msgid "Open a file and append it to the current document" -msgstr "" - -#: data/pdfarranger.ui.h:16 -#, fuzzy -msgid "Import" -msgstr "_Importálás..." +msgid "Rotate Right" +msgstr "Forgatás jobbra" -#: data/pdfarranger.ui.h:17 -msgid "Save" -msgstr "Mentés" +#: data/menu.ui.h:1 +msgid "_Import" +msgstr "_Importálás…" + +#: data/menu.ui.h:2 +msgid "_Save" +msgstr "_Mentés" + +#: data/menu.ui.h:3 +msgid "Save _As…" +msgstr "Menté_s másként…" + +#: data/menu.ui.h:4 +msgid "E_xport Selection…" +msgstr "Kijelölés e_xportálása…" + +#: data/menu.ui.h:5 +msgid "_Undo" +msgstr "_Visszavonás" + +#: data/menu.ui.h:6 +msgid "_Redo" +msgstr "Új_ra" -#: data/pdfarranger.ui.h:18 -msgid "Save as" -msgstr "Mentés másként" - -#: data/pdfarranger.ui.h:19 -msgid "Delete" -msgstr "Törlés" +#: data/menu.ui.h:7 +msgid "_Edit" +msgstr "S_zerkesztés" -#: data/pdfarranger.ui.h:20 +#: data/menu.ui.h:8 msgid "Rotate _Left" -msgstr "Forgatás _Balra" +msgstr "Forgatás _balra" -#: data/pdfarranger.ui.h:21 +#: data/menu.ui.h:9 msgid "_Rotate Right" -msgstr "Forgatás _Jobbra" +msgstr "Forgatás _jobbra" -#: data/pdfarranger.ui.h:22 -#, fuzzy -msgid "C_rop" -msgstr "_Vágás..." +#: data/menu.ui.h:10 +msgid "Cro_p" +msgstr "Körül_vágás" -#: data/pdfarranger.ui.h:23 -#, fuzzy +#: data/menu.ui.h:11 msgid "_Delete" -msgstr "Törlés" +msgstr "_Törlés" + +#: data/menu.ui.h:12 +msgid "Dupl_icate" +msgstr "Megkettő_zés" -#: data/pdfarranger.ui.h:24 +#: data/menu.ui.h:13 msgid "Re_verse Order" -msgstr "" +msgstr "Sorrend meg_fordítása" + +#: data/menu.ui.h:14 +msgid "_Split pages" +msgstr "Oldalak fel_osztása" + +#: data/menu.ui.h:15 +msgid "Cu_t" +msgstr "_Kivágás" + +#: data/menu.ui.h:16 +msgid "_Copy" +msgstr "_Másolás" + +#: data/menu.ui.h:17 +msgid "Paste _After" +msgstr "Beillesztés _után" + +#: data/menu.ui.h:18 +msgid "Paste _Before" +msgstr "Beillesztés _előtt" + +#: data/menu.ui.h:19 +msgid "Paste Interleave _Odd" +msgstr "Összefűzés beillesztése párat_lan" + +#: data/menu.ui.h:20 +msgid "Paste Interleave _Even" +msgstr "Összefűzés beillesztése _páros" + +#: data/menu.ui.h:21 +msgid "Zoom _In" +msgstr "Na_gyítás" + +#: data/menu.ui.h:22 +msgid "Zoom _Out" +msgstr "Ki_csinyítés" + +#: data/menu.ui.h:23 +msgid "Edit _Properties" +msgstr "_Tulajdonságok szerkesztése" + +#: data/menu.ui.h:24 +msgid "_About" +msgstr "_Névjegy" + +#: data/menu.ui.h:25 +msgid "_Quit" +msgstr "_Kilépés" + +#: data/menu.ui.h:26 +msgid "Past_e Special" +msgstr "Irá_nyított beillesztés" + +#: data/menu.ui.h:27 +msgid "_Split Pages" +msgstr "Oldalak fel_osztása" diff -Nru pdfarranger-1.4.2/po/id.po pdfarranger-1.6.2/po/id.po --- pdfarranger-1.4.2/po/id.po 2020-03-14 20:55:12.000000000 +0000 +++ pdfarranger-1.6.2/po/id.po 2020-08-01 09:52:15.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-12 10:16+0100\n" +"POT-Creation-Date: 2020-04-11 10:54+0200\n" "PO-Revision-Date: 2019-09-06 14:54+0700\n" "Last-Translator: Abdul Munif Hanafi \n" "Language-Team: \n" @@ -18,84 +18,84 @@ "X-Generator: Poedit 2.2.1\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: pdfarranger/metadata.py:30 +#: pdfarranger/metadata.py:35 msgid "Title" msgstr "" -#: pdfarranger/metadata.py:31 +#: pdfarranger/metadata.py:36 msgid "Creator" msgstr "" -#: pdfarranger/metadata.py:32 +#: pdfarranger/metadata.py:37 msgid "Producer" msgstr "" -#: pdfarranger/metadata.py:33 +#: pdfarranger/metadata.py:38 msgid "Creator tool" msgstr "" -#: pdfarranger/metadata.py:91 data/pdfarranger.ui.h:10 +#: pdfarranger/metadata.py:141 msgid "Edit properties" msgstr "" -#: pdfarranger/metadata.py:104 +#: pdfarranger/metadata.py:154 msgid "Property" msgstr "" -#: pdfarranger/metadata.py:104 +#: pdfarranger/metadata.py:154 msgid "Value" msgstr "" -#: pdfarranger/pdfarranger.py:506 +#: pdfarranger/pdfarranger.py:520 msgid "No document" msgstr "Tidak ada dokumen" -#: pdfarranger/pdfarranger.py:508 +#: pdfarranger/pdfarranger.py:522 msgid "Several documents" msgstr "Beberapa dokumen" -#: pdfarranger/pdfarranger.py:525 +#: pdfarranger/pdfarranger.py:539 #, python-format -msgid "Rendering thumbnails... [%(i1)s/%(i2)s]" -msgstr "Merender thumbnail... [%(i1)s/%(i2)s]" +msgid "Rendering thumbnails… [%(i1)s/%(i2)s]" +msgstr "Merender thumbnail… [%(i1)s/%(i2)s]" -#: pdfarranger/pdfarranger.py:614 -msgid "Export ..." -msgstr "Ekspor ..." +#: pdfarranger/pdfarranger.py:629 +msgid "Export…" +msgstr "Ekspor…" -#: pdfarranger/pdfarranger.py:626 pdfarranger/pdfarranger.py:709 +#: pdfarranger/pdfarranger.py:641 pdfarranger/pdfarranger.py:725 msgid "PDF files" msgstr "Berkas PDF" -#: pdfarranger/pdfarranger.py:632 pdfarranger/pdfarranger.py:704 +#: pdfarranger/pdfarranger.py:647 pdfarranger/pdfarranger.py:720 msgid "All files" msgstr "Semua berkas" -#: pdfarranger/pdfarranger.py:693 -msgid "Import..." -msgstr "Impor..." +#: pdfarranger/pdfarranger.py:709 +msgid "Import…" +msgstr "Impor…" -#: pdfarranger/pdfarranger.py:1072 +#: pdfarranger/pdfarranger.py:1223 msgid "Left" msgstr "Kiri" -#: pdfarranger/pdfarranger.py:1072 +#: pdfarranger/pdfarranger.py:1223 msgid "Right" msgstr "Kanan" -#: pdfarranger/pdfarranger.py:1073 +#: pdfarranger/pdfarranger.py:1224 msgid "Top" msgstr "Atas" -#: pdfarranger/pdfarranger.py:1073 +#: pdfarranger/pdfarranger.py:1224 msgid "Bottom" msgstr "Bawah" -#: pdfarranger/pdfarranger.py:1090 +#: pdfarranger/pdfarranger.py:1241 msgid "Crop Selected Pages" msgstr "Pangkas Halaman Terpilih" -#: pdfarranger/pdfarranger.py:1098 +#: pdfarranger/pdfarranger.py:1249 msgid "" "Cropping does not remove any content\n" "from the PDF file, it only hides it." @@ -103,21 +103,21 @@ "Pemangkasan tidak menghapus konten apa pun\n" "dari berkas PDF, melainkan hanya menyembunyikannya." -#: pdfarranger/pdfarranger.py:1101 +#: pdfarranger/pdfarranger.py:1252 msgid "Crop Margins" msgstr "Pangkas Margin" -#: pdfarranger/pdfarranger.py:1111 +#: pdfarranger/pdfarranger.py:1262 #, python-format msgid "% of width" msgstr "% dari lebar" -#: pdfarranger/pdfarranger.py:1111 +#: pdfarranger/pdfarranger.py:1262 #, python-format msgid "% of height" msgstr "% dari tinggi" -#: pdfarranger/pdfarranger.py:1218 +#: pdfarranger/pdfarranger.py:1369 #, python-format msgid "" "%s is a tool for rearranging and modifying PDF files. Developed using GTK+ " @@ -126,98 +126,161 @@ "%s adalah alat untuk menata ulang dan memodifikasi berkas PDF. Dikembangkan " "menggunakan GTK+ dan Python" -#: pdfarranger/pdfarranger.py:1298 +#: pdfarranger/pdfarranger.py:1449 msgid "page" msgstr "halaman" #: data/pdfarranger.ui.h:1 -msgid "_File" -msgstr "_Berkas" +msgid "Open a file and append it to the current document" +msgstr "Buka berkas dan tambahkan ke dokumen saat ini" #: data/pdfarranger.ui.h:2 -msgid "_Export selection..." -msgstr "_Ekspor terpilih..." +msgid "Save" +msgstr "Simpan" #: data/pdfarranger.ui.h:3 -msgid "_Edit" -msgstr "_Sunting" +#, fuzzy +msgid "Save As" +msgstr "Simpan sebagai" #: data/pdfarranger.ui.h:4 -msgid "Rotate left" -msgstr "Putar ke kiri" +msgid "Number of Pages" +msgstr "" #: data/pdfarranger.ui.h:5 -msgid "Rotate right" -msgstr "Putar ke kanan" +msgid "Main Menu" +msgstr "" #: data/pdfarranger.ui.h:6 -msgid "Crop" -msgstr "Pangkas" +#, fuzzy +msgid "Zoom In" +msgstr "Zoom masuk" #: data/pdfarranger.ui.h:7 -msgid "Du_plicate" -msgstr "" +#, fuzzy +msgid "Zoom Out" +msgstr "Zoom keluar" #: data/pdfarranger.ui.h:8 -msgid "Reverse Order" -msgstr "Balikkan Urutan" +#, fuzzy +msgid "Rotate Left" +msgstr "Putar ke K_iri" #: data/pdfarranger.ui.h:9 -msgid "Split pages" -msgstr "" - -#: data/pdfarranger.ui.h:11 -msgid "_View" -msgstr "_Tampilan" - -#: data/pdfarranger.ui.h:12 -msgid "Zoom in" -msgstr "Zoom masuk" - -#: data/pdfarranger.ui.h:13 -msgid "Zoom out" -msgstr "Zoom keluar" - -#: data/pdfarranger.ui.h:14 -msgid "_Help" -msgstr "Ba_ntuan" - -#: data/pdfarranger.ui.h:15 -msgid "Open a file and append it to the current document" -msgstr "Buka berkas dan tambahkan ke dokumen saat ini" +#, fuzzy +msgid "Rotate Right" +msgstr "Putar ke K_anan" -#: data/pdfarranger.ui.h:16 -msgid "Import" +#: data/menu.ui.h:1 +#, fuzzy +msgid "_Import" msgstr "Impor" -#: data/pdfarranger.ui.h:17 -msgid "Save" +#: data/menu.ui.h:2 +#, fuzzy +msgid "_Save" msgstr "Simpan" -#: data/pdfarranger.ui.h:18 -msgid "Save as" +#: data/menu.ui.h:3 +#, fuzzy +msgid "Save _As…" msgstr "Simpan sebagai" -#: data/pdfarranger.ui.h:19 -msgid "Delete" -msgstr "Hapus" +#: data/menu.ui.h:4 +#, fuzzy +msgid "E_xport Selection…" +msgstr "_Ekspor terpilih…" + +#: data/menu.ui.h:5 +msgid "_Undo" +msgstr "" + +#: data/menu.ui.h:6 +msgid "_Redo" +msgstr "" + +#: data/menu.ui.h:7 +msgid "_Edit" +msgstr "_Sunting" -#: data/pdfarranger.ui.h:20 +#: data/menu.ui.h:8 msgid "Rotate _Left" msgstr "Putar ke K_iri" -#: data/pdfarranger.ui.h:21 +#: data/menu.ui.h:9 msgid "_Rotate Right" msgstr "Putar ke K_anan" -#: data/pdfarranger.ui.h:22 -msgid "C_rop" -msgstr "Pang_kas" +#: data/menu.ui.h:10 +msgid "Cro_p" +msgstr "" -#: data/pdfarranger.ui.h:23 +#: data/menu.ui.h:11 msgid "_Delete" msgstr "_Hapus" -#: data/pdfarranger.ui.h:24 +#: data/menu.ui.h:12 +msgid "Dupl_icate" +msgstr "" + +#: data/menu.ui.h:13 msgid "Re_verse Order" msgstr "_Balikkan Urutan" + +#: data/menu.ui.h:14 +msgid "_Split pages" +msgstr "" + +#: data/menu.ui.h:15 +msgid "Cu_t" +msgstr "" + +#: data/menu.ui.h:16 +msgid "_Copy" +msgstr "" + +#: data/menu.ui.h:17 +msgid "Paste _After" +msgstr "" + +#: data/menu.ui.h:18 +msgid "Paste _Before" +msgstr "" + +#: data/menu.ui.h:19 +msgid "Paste Interleave _Odd" +msgstr "" + +#: data/menu.ui.h:20 +msgid "Paste Interleave _Even" +msgstr "" + +#: data/menu.ui.h:21 +#, fuzzy +msgid "Zoom _In" +msgstr "Zoom masuk" + +#: data/menu.ui.h:22 +#, fuzzy +msgid "Zoom _Out" +msgstr "Zoom keluar" + +#: data/menu.ui.h:23 +msgid "Edit _Properties" +msgstr "" + +#: data/menu.ui.h:24 +msgid "_About" +msgstr "" + +#: data/menu.ui.h:25 +msgid "_Quit" +msgstr "" + +#: data/menu.ui.h:26 +msgid "Past_e Special" +msgstr "" + +#: data/menu.ui.h:27 +msgid "_Split Pages" +msgstr "" diff -Nru pdfarranger-1.4.2/po/it.po pdfarranger-1.6.2/po/it.po --- pdfarranger-1.4.2/po/it.po 2020-03-14 20:55:12.000000000 +0000 +++ pdfarranger-1.6.2/po/it.po 2020-08-01 09:52:15.000000000 +0000 @@ -1,218 +1,314 @@ +# Italian translation of pdfarranger +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the pdfarranger package. +# msgid "" msgstr "" -"Project-Id-Version: PDF-Shuffler 0.4\n" +"Project-Id-Version: pdfarranger master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-12 10:16+0100\n" -"PO-Revision-Date: 2015-12-04 12:00+0100\n" -"Last-Translator: Marco Ciampa\n" -"Language-Team: Italian\n" -"Language: it\n" +"POT-Creation-Date: 2020-05-24 17:01+0200\n" +"PO-Revision-Date: 2020-07-14 13:54+0200\n" +"Language-Team: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: Italian\n" -"X-Poedit-Country: ITALY\n" +"X-Generator: Poedit 2.3.1\n" +"Last-Translator: Michele Pezza\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: it\n" -#: pdfarranger/metadata.py:30 +#: pdfarranger/metadata.py:36 msgid "Title" -msgstr "" +msgstr "Titolo" -#: pdfarranger/metadata.py:31 +#: pdfarranger/metadata.py:37 msgid "Creator" -msgstr "" +msgstr "Creatore" -#: pdfarranger/metadata.py:32 +#: pdfarranger/metadata.py:38 msgid "Producer" -msgstr "" +msgstr "Produttore" -#: pdfarranger/metadata.py:33 +#: pdfarranger/metadata.py:39 msgid "Creator tool" -msgstr "" +msgstr "Strumento di creazione" -#: pdfarranger/metadata.py:91 data/pdfarranger.ui.h:10 +#: pdfarranger/metadata.py:154 msgid "Edit properties" -msgstr "" +msgstr "Modifica proprietà" -#: pdfarranger/metadata.py:104 +#: pdfarranger/metadata.py:167 msgid "Property" -msgstr "" +msgstr "Proprietà" -#: pdfarranger/metadata.py:104 +#: pdfarranger/metadata.py:167 msgid "Value" -msgstr "" +msgstr "Valore" -#: pdfarranger/pdfarranger.py:506 -msgid "No document" -msgstr "Nessun documento" - -#: pdfarranger/pdfarranger.py:508 -msgid "Several documents" -msgstr "Diversi documenti" - -#: pdfarranger/pdfarranger.py:525 +#: pdfarranger/pdfarranger.py:585 #, python-format -msgid "Rendering thumbnails... [%(i1)s/%(i2)s]" -msgstr "Disegno miniature... [%(i1)s/%(i2)s]" +msgid "Rendering thumbnails… [%(i1)s/%(i2)s]" +msgstr "Disegno miniature… [%(i1)s/%(i2)s]" -#: pdfarranger/pdfarranger.py:614 -msgid "Export ..." -msgstr "Esporta ..." +#: pdfarranger/pdfarranger.py:665 +msgid "Save changes to “{}” before closing?" +msgstr "Salvare le modifiche apportate a “{}”prima di chiudere?" + +#: pdfarranger/pdfarranger.py:667 +msgid "Save changes before closing?" +msgstr "Salvare le modifiche prima di chiudere?" + +#: pdfarranger/pdfarranger.py:669 +msgid "Your changes will be lost if you don’t save them." +msgstr "Le modifiche andranno perse se non le salvi." + +#: pdfarranger/pdfarranger.py:670 +msgid "Do_n’t Save" +msgstr "_Non salvare" + +#: pdfarranger/pdfarranger.py:670 +msgid "_Cancel" +msgstr "_Annulla" + +#: pdfarranger/pdfarranger.py:670 data/menu.ui.h:2 +msgid "_Save" +msgstr "_Salva" + +#: pdfarranger/pdfarranger.py:710 +msgid "Export…" +msgstr "Esporta…" -#: pdfarranger/pdfarranger.py:626 pdfarranger/pdfarranger.py:709 +#: pdfarranger/pdfarranger.py:722 pdfarranger/pdfarranger.py:819 msgid "PDF files" msgstr "File PDF" -#: pdfarranger/pdfarranger.py:632 pdfarranger/pdfarranger.py:704 +#: pdfarranger/pdfarranger.py:728 pdfarranger/pdfarranger.py:805 msgid "All files" msgstr "Tutti i file" -#: pdfarranger/pdfarranger.py:693 -msgid "Import..." -msgstr "Importa..." +#: pdfarranger/pdfarranger.py:794 +msgid "Import…" +msgstr "Importa…" + +#: pdfarranger/pdfarranger.py:811 +msgid "Supported image files" +msgstr "File di immagine supportati" + +#: pdfarranger/pdfarranger.py:908 +msgid "Pasted data not valid. Aborting paste." +msgstr "Dati incollati non validi. Incolla annullato." + +#: pdfarranger/pdfarranger.py:1012 +msgid "PDF document is damaged: " +msgstr "Il documento PDF è danneggiato: " -#: pdfarranger/pdfarranger.py:1072 +#: pdfarranger/pdfarranger.py:1442 msgid "Left" msgstr "Sinistra" -#: pdfarranger/pdfarranger.py:1072 +#: pdfarranger/pdfarranger.py:1442 msgid "Right" msgstr "Destra" -#: pdfarranger/pdfarranger.py:1073 +#: pdfarranger/pdfarranger.py:1443 msgid "Top" msgstr "Alto" -#: pdfarranger/pdfarranger.py:1073 +#: pdfarranger/pdfarranger.py:1443 msgid "Bottom" msgstr "Basso" -#: pdfarranger/pdfarranger.py:1090 +#: pdfarranger/pdfarranger.py:1460 msgid "Crop Selected Pages" msgstr "Taglia pagine selezionate" -#: pdfarranger/pdfarranger.py:1098 +#: pdfarranger/pdfarranger.py:1468 msgid "" "Cropping does not remove any content\n" "from the PDF file, it only hides it." msgstr "" +"Il ritaglio non rimuove alcun contenuto\n" +"dal file PDF, lo nasconde solo." -#: pdfarranger/pdfarranger.py:1101 +#: pdfarranger/pdfarranger.py:1471 msgid "Crop Margins" msgstr "Taglia margini" -#: pdfarranger/pdfarranger.py:1111 -#, fuzzy, python-format +#: pdfarranger/pdfarranger.py:1481 +#, python-format msgid "% of width" msgstr "% in larghezza" -#: pdfarranger/pdfarranger.py:1111 -#, fuzzy, python-format +#: pdfarranger/pdfarranger.py:1481 +#, python-format msgid "% of height" msgstr "% in altezza" -#: pdfarranger/pdfarranger.py:1218 +#: pdfarranger/pdfarranger.py:1588 #, python-format msgid "" "%s is a tool for rearranging and modifying PDF files. Developed using GTK+ " "and Python" msgstr "" -"%s è uno strumento per riordinare e modificare file PDF. Sviluppato usando " -"GTK+ e Python" +"%s è uno strumento per riordinare e modificare file PDF. Sviluppato con GTK" +"+ e Python" + +#: pdfarranger/pdfarranger.py:1632 +msgid "Unknown file format" +msgstr "Formato file sconosciuto" + +#: pdfarranger/pdfarranger.py:1644 +msgid "Image files are only supported with img2pdf" +msgstr "I file di immagine sono supportati solo con img2pdf" + +#: pdfarranger/pdfarranger.py:1656 +msgid "Image format is not supported by img2pdf" +msgstr "Il formato dell'immagine non è supportato da img2pdf" + +#: pdfarranger/pdfarranger.py:1658 +msgid "File is neither pdf nor image" +msgstr "Il file non è un pdf o una immagine" -#: pdfarranger/pdfarranger.py:1298 +#: pdfarranger/pdfarranger.py:1709 msgid "page" msgstr "pagina" #: data/pdfarranger.ui.h:1 -msgid "_File" -msgstr "_File" +msgid "Open a file and append it to the current document" +msgstr "Apri un file e aggiungilo al documento corrente" #: data/pdfarranger.ui.h:2 -msgid "_Export selection..." -msgstr "_Esporta selezione..." +msgid "Save" +msgstr "Salva" #: data/pdfarranger.ui.h:3 -msgid "_Edit" -msgstr "_Modifica" +msgid "Save As" +msgstr "Salva come" #: data/pdfarranger.ui.h:4 -msgid "Rotate left" -msgstr "Routa a sinistra" +msgid "Number of Pages" +msgstr "Numero di Pagine" #: data/pdfarranger.ui.h:5 -msgid "Rotate right" -msgstr "Ruota a destra" +msgid "Main Menu" +msgstr "Menù Principale" #: data/pdfarranger.ui.h:6 -msgid "Crop" -msgstr "Ritaglia" +msgid "Zoom In" +msgstr "Zoom avanti" #: data/pdfarranger.ui.h:7 -msgid "Du_plicate" -msgstr "" +msgid "Zoom Out" +msgstr "Zoom indietro" #: data/pdfarranger.ui.h:8 -msgid "Reverse Order" -msgstr "" +msgid "Rotate Left" +msgstr "Ruota a sinistra" #: data/pdfarranger.ui.h:9 -msgid "Split pages" -msgstr "" - -#: data/pdfarranger.ui.h:11 -msgid "_View" -msgstr "_Visualizza" - -#: data/pdfarranger.ui.h:12 -msgid "Zoom in" -msgstr "Ingrandisci" - -#: data/pdfarranger.ui.h:13 -msgid "Zoom out" -msgstr "Rimpicciolisci" - -#: data/pdfarranger.ui.h:14 -msgid "_Help" -msgstr "_Aiuto" - -#: data/pdfarranger.ui.h:15 -msgid "Open a file and append it to the current document" -msgstr "Apri un file e accodalo al documento corrente" - -#: data/pdfarranger.ui.h:16 -msgid "Import" -msgstr "Importa" +msgid "Rotate Right" +msgstr "Ruota a destra" -#: data/pdfarranger.ui.h:17 -msgid "Save" -msgstr "Salva" +#: data/menu.ui.h:1 +msgid "_Import" +msgstr "Impor_ta" + +#: data/menu.ui.h:3 +msgid "Save _As…" +msgstr "Save _come…" + +#: data/menu.ui.h:4 +msgid "E_xport Selection…" +msgstr "Esporta Sele_zione…" + +#: data/menu.ui.h:5 +msgid "_Undo" +msgstr "_Annulla" + +#: data/menu.ui.h:6 +msgid "_Redo" +msgstr "_Ripristina" -#: data/pdfarranger.ui.h:18 -msgid "Save as" -msgstr "Salva con nome" - -#: data/pdfarranger.ui.h:19 -msgid "Delete" -msgstr "Cancella" +#: data/menu.ui.h:7 +msgid "_Edit" +msgstr "_Modifica" -#: data/pdfarranger.ui.h:20 +#: data/menu.ui.h:8 msgid "Rotate _Left" msgstr "Ruota a _sinistra" -#: data/pdfarranger.ui.h:21 +#: data/menu.ui.h:9 msgid "_Rotate Right" -msgstr "_Ruota a destra" +msgstr "Ruota a _destra" -#: data/pdfarranger.ui.h:22 -#, fuzzy -msgid "C_rop" -msgstr "_Ritaglia..." +#: data/menu.ui.h:10 +msgid "Cro_p" +msgstr "_Ritaglia" -#: data/pdfarranger.ui.h:23 -#, fuzzy +#: data/menu.ui.h:11 msgid "_Delete" -msgstr "Cancella" +msgstr "_Elimina" + +#: data/menu.ui.h:12 +msgid "Dupl_icate" +msgstr "D_uplica" -#: data/pdfarranger.ui.h:24 +#: data/menu.ui.h:13 msgid "Re_verse Order" -msgstr "" +msgstr "_Inverti Ordine" + +#: data/menu.ui.h:14 +msgid "_Split pages" +msgstr "_Dividi Pagine" + +#: data/menu.ui.h:15 +msgid "Cu_t" +msgstr "_Taglia" + +#: data/menu.ui.h:16 +msgid "_Copy" +msgstr "_Copia" + +#: data/menu.ui.h:17 +msgid "Paste _After" +msgstr "Incolla _prima" + +#: data/menu.ui.h:18 +msgid "Paste _Before" +msgstr "Incolla _dopo" + +#: data/menu.ui.h:19 +msgid "Paste Interleave _Odd" +msgstr "Incolla inserendo pagine _dispari" + +#: data/menu.ui.h:20 +msgid "Paste Interleave _Even" +msgstr "Incolla inserendo pagine _pari" + +#: data/menu.ui.h:21 +msgid "Zoom _In" +msgstr "Zoom _avanti" + +#: data/menu.ui.h:22 +msgid "Zoom _Out" +msgstr "Zoom _indietro" + +#: data/menu.ui.h:23 +msgid "Edit _Properties" +msgstr "Modifica _proprietà" + +#: data/menu.ui.h:24 +msgid "_About" +msgstr "Informazioni _su" + +#: data/menu.ui.h:25 +msgid "_Quit" +msgstr "_Esci" + +#: data/menu.ui.h:26 +msgid "Past_e Special" +msgstr "Incolla Specia_le" + +#: data/menu.ui.h:27 +msgid "_Split Pages" +msgstr "Di_vidi pagine" diff -Nru pdfarranger-1.4.2/po/ja.po pdfarranger-1.6.2/po/ja.po --- pdfarranger-1.4.2/po/ja.po 2020-03-14 20:55:12.000000000 +0000 +++ pdfarranger-1.6.2/po/ja.po 2020-08-01 09:52:15.000000000 +0000 @@ -9,8 +9,8 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-12 10:16+0100\n" -"PO-Revision-Date: 2020-01-13 18:00+0900\n" +"POT-Creation-Date: 2020-05-24 17:01+0200\n" +"PO-Revision-Date: 2020-06-14 20:00+0900\n" "Last-Translator: sicklylife \n" "Language-Team: Japanese\n" "Language: ja\n" @@ -19,84 +19,112 @@ "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: pdfarranger/metadata.py:30 +#: pdfarranger/metadata.py:36 msgid "Title" msgstr "タイトル" -#: pdfarranger/metadata.py:31 +#: pdfarranger/metadata.py:37 msgid "Creator" msgstr "作成" -#: pdfarranger/metadata.py:32 +#: pdfarranger/metadata.py:38 msgid "Producer" msgstr "変換" -#: pdfarranger/metadata.py:33 +#: pdfarranger/metadata.py:39 msgid "Creator tool" msgstr "作成ツール" -#: pdfarranger/metadata.py:91 data/pdfarranger.ui.h:10 +#: pdfarranger/metadata.py:154 msgid "Edit properties" msgstr "プロパティを編集" -#: pdfarranger/metadata.py:104 +#: pdfarranger/metadata.py:167 msgid "Property" msgstr "プロパティ" -#: pdfarranger/metadata.py:104 +#: pdfarranger/metadata.py:167 msgid "Value" msgstr "値" -#: pdfarranger/pdfarranger.py:506 -msgid "No document" -msgstr "ドキュメントなし" - -#: pdfarranger/pdfarranger.py:508 -msgid "Several documents" -msgstr "複数のドキュメント" - -#: pdfarranger/pdfarranger.py:525 +#: pdfarranger/pdfarranger.py:585 #, python-format -msgid "Rendering thumbnails... [%(i1)s/%(i2)s]" -msgstr "サムネイルを描画中... [%(i1)s/%(i2)s]" +msgid "Rendering thumbnails… [%(i1)s/%(i2)s]" +msgstr "サムネイルを描画中… [%(i1)s/%(i2)s]" -#: pdfarranger/pdfarranger.py:614 -msgid "Export ..." -msgstr "エクスポート ..." +#: pdfarranger/pdfarranger.py:665 +msgid "Save changes to “{}” before closing?" +msgstr "閉じる前に変更内容を“{}”に保存しますか?" + +#: pdfarranger/pdfarranger.py:667 +msgid "Save changes before closing?" +msgstr "閉じる前に変更内容を保存しますか?" + +#: pdfarranger/pdfarranger.py:669 +msgid "Your changes will be lost if you don’t save them." +msgstr "保存しないと変更内容は失われます。" + +#: pdfarranger/pdfarranger.py:670 +msgid "Do_n’t Save" +msgstr "保存しない(_N)" + +#: pdfarranger/pdfarranger.py:670 +msgid "_Cancel" +msgstr "キャンセル(_C)" + +#: pdfarranger/pdfarranger.py:670 data/menu.ui.h:2 +msgid "_Save" +msgstr "保存(_S)" + +#: pdfarranger/pdfarranger.py:710 +msgid "Export…" +msgstr "エクスポート…" -#: pdfarranger/pdfarranger.py:626 pdfarranger/pdfarranger.py:709 +#: pdfarranger/pdfarranger.py:722 pdfarranger/pdfarranger.py:819 msgid "PDF files" msgstr "PDF ファイル" -#: pdfarranger/pdfarranger.py:632 pdfarranger/pdfarranger.py:704 +#: pdfarranger/pdfarranger.py:728 pdfarranger/pdfarranger.py:805 msgid "All files" msgstr "すべてのファイル" -#: pdfarranger/pdfarranger.py:693 -msgid "Import..." -msgstr "インポート..." +#: pdfarranger/pdfarranger.py:794 +msgid "Import…" +msgstr "インポート…" + +#: pdfarranger/pdfarranger.py:811 +msgid "Supported image files" +msgstr "サポートしている画像ファイル" + +#: pdfarranger/pdfarranger.py:908 +msgid "Pasted data not valid. Aborting paste." +msgstr "不正なデータが貼り付けられました。貼り付けを中止します。" + +#: pdfarranger/pdfarranger.py:1012 +msgid "PDF document is damaged: " +msgstr "PDF 文書が破損しています: " -#: pdfarranger/pdfarranger.py:1072 +#: pdfarranger/pdfarranger.py:1442 msgid "Left" msgstr "左" -#: pdfarranger/pdfarranger.py:1072 +#: pdfarranger/pdfarranger.py:1442 msgid "Right" msgstr "右" -#: pdfarranger/pdfarranger.py:1073 +#: pdfarranger/pdfarranger.py:1443 msgid "Top" msgstr "上" -#: pdfarranger/pdfarranger.py:1073 +#: pdfarranger/pdfarranger.py:1443 msgid "Bottom" msgstr "下" -#: pdfarranger/pdfarranger.py:1090 +#: pdfarranger/pdfarranger.py:1460 msgid "Crop Selected Pages" msgstr "選択したページのトリミング" -#: pdfarranger/pdfarranger.py:1098 +#: pdfarranger/pdfarranger.py:1468 msgid "" "Cropping does not remove any content\n" "from the PDF file, it only hides it." @@ -104,21 +132,21 @@ "トリミングは PDF ファイルから内容自体は\n" "削除せずに、指定部分を見えなくします。" -#: pdfarranger/pdfarranger.py:1101 +#: pdfarranger/pdfarranger.py:1471 msgid "Crop Margins" msgstr "余白のトリミング" -#: pdfarranger/pdfarranger.py:1111 +#: pdfarranger/pdfarranger.py:1481 #, python-format msgid "% of width" msgstr "% (幅)" -#: pdfarranger/pdfarranger.py:1111 +#: pdfarranger/pdfarranger.py:1481 #, python-format msgid "% of height" msgstr "% (高さ)" -#: pdfarranger/pdfarranger.py:1218 +#: pdfarranger/pdfarranger.py:1588 #, python-format msgid "" "%s is a tool for rearranging and modifying PDF files. Developed using GTK+ " @@ -127,98 +155,162 @@ "%s は PDF ファイルの内容の追加や削除、順序の入れ替えやその他のちょっとした変" "更を行うための、GTK+ と Python で作成されたツールです" -#: pdfarranger/pdfarranger.py:1298 +#: pdfarranger/pdfarranger.py:1632 +msgid "Unknown file format" +msgstr "不明なファイル形式です" + +#: pdfarranger/pdfarranger.py:1644 +msgid "Image files are only supported with img2pdf" +msgstr "画像ファイルは img2pdf でのみサポートしています" + +#: pdfarranger/pdfarranger.py:1656 +msgid "Image format is not supported by img2pdf" +msgstr "img2pdf がサポートしていない画像形式です" + +#: pdfarranger/pdfarranger.py:1658 +msgid "File is neither pdf nor image" +msgstr "ファイルが PDF でも画像でもありません" + +#: pdfarranger/pdfarranger.py:1709 msgid "page" msgstr "ページ" #: data/pdfarranger.ui.h:1 -msgid "_File" -msgstr "ファイル(_F)" +msgid "Open a file and append it to the current document" +msgstr "ファイルを開いて現在のドキュメントに追加します" #: data/pdfarranger.ui.h:2 -msgid "_Export selection..." -msgstr "選択したものをエクスポート(_E)..." +msgid "Save" +msgstr "保存" #: data/pdfarranger.ui.h:3 -msgid "_Edit" -msgstr "編集(_E)" +msgid "Save As" +msgstr "名前を付けて保存" #: data/pdfarranger.ui.h:4 -msgid "Rotate left" -msgstr "左に回転" +msgid "Number of Pages" +msgstr "ページ数" #: data/pdfarranger.ui.h:5 -msgid "Rotate right" -msgstr "右に回転" +msgid "Main Menu" +msgstr "メインメニュー" #: data/pdfarranger.ui.h:6 -msgid "Crop" -msgstr "トリミング" +msgid "Zoom In" +msgstr "拡大" #: data/pdfarranger.ui.h:7 -msgid "Du_plicate" -msgstr "複製(_P)" +msgid "Zoom Out" +msgstr "縮小" #: data/pdfarranger.ui.h:8 -msgid "Reverse Order" -msgstr "逆順" +msgid "Rotate Left" +msgstr "左に回転" #: data/pdfarranger.ui.h:9 -msgid "Split pages" -msgstr "ページを分割" - -#: data/pdfarranger.ui.h:11 -msgid "_View" -msgstr "表示(_V)" - -#: data/pdfarranger.ui.h:12 -msgid "Zoom in" -msgstr "拡大" - -#: data/pdfarranger.ui.h:13 -msgid "Zoom out" -msgstr "縮小" - -#: data/pdfarranger.ui.h:14 -msgid "_Help" -msgstr "ヘルプ(_H)" - -#: data/pdfarranger.ui.h:15 -msgid "Open a file and append it to the current document" -msgstr "ファイルを開いて現在のドキュメントに追加します" - -#: data/pdfarranger.ui.h:16 -msgid "Import" -msgstr "インポート" - -#: data/pdfarranger.ui.h:17 -msgid "Save" -msgstr "保存" +msgid "Rotate Right" +msgstr "右に回転" -#: data/pdfarranger.ui.h:18 -msgid "Save as" -msgstr "名前を付けて保存" +#: data/menu.ui.h:1 +msgid "_Import" +msgstr "インポート(_I)" + +#: data/menu.ui.h:3 +msgid "Save _As…" +msgstr "名前を付けて保存(_A)…" + +#: data/menu.ui.h:4 +msgid "E_xport Selection…" +msgstr "選択したものをエクスポート(_X)…" + +#: data/menu.ui.h:5 +msgid "_Undo" +msgstr "元に戻す(_U)" + +#: data/menu.ui.h:6 +msgid "_Redo" +msgstr "やり直す(_R)" -#: data/pdfarranger.ui.h:19 -msgid "Delete" -msgstr "削除" +#: data/menu.ui.h:7 +msgid "_Edit" +msgstr "編集(_E)" -#: data/pdfarranger.ui.h:20 +#: data/menu.ui.h:8 msgid "Rotate _Left" msgstr "左に回転(_L)" -#: data/pdfarranger.ui.h:21 +#: data/menu.ui.h:9 msgid "_Rotate Right" msgstr "右に回転(_R)" -#: data/pdfarranger.ui.h:22 -msgid "C_rop" -msgstr "トリミング(_R)" +#: data/menu.ui.h:10 +msgid "Cro_p" +msgstr "トリミング(_P)" -#: data/pdfarranger.ui.h:23 +#: data/menu.ui.h:11 msgid "_Delete" msgstr "削除(_D)" -#: data/pdfarranger.ui.h:24 +#: data/menu.ui.h:12 +msgid "Dupl_icate" +msgstr "複製(_I)" + +#: data/menu.ui.h:13 msgid "Re_verse Order" msgstr "逆順(_V)" + +#: data/menu.ui.h:14 +msgid "_Split pages" +msgstr "ページを分割(_S)" + +#: data/menu.ui.h:15 +msgid "Cu_t" +msgstr "切り取り(_T)" + +#: data/menu.ui.h:16 +msgid "_Copy" +msgstr "コピー(_C)" + +#: data/menu.ui.h:17 +msgid "Paste _After" +msgstr "後に貼り付け(_A)" + +#: data/menu.ui.h:18 +msgid "Paste _Before" +msgstr "前に貼り付け(_B)" + +#: data/menu.ui.h:19 +msgid "Paste Interleave _Odd" +msgstr "奇数ページに割り込み貼り付け(_O)" + +#: data/menu.ui.h:20 +msgid "Paste Interleave _Even" +msgstr "偶数ページに割り込み貼り付け(_E)" + +#: data/menu.ui.h:21 +msgid "Zoom _In" +msgstr "拡大(_I)" + +#: data/menu.ui.h:22 +msgid "Zoom _Out" +msgstr "縮小(_O)" + +#: data/menu.ui.h:23 +msgid "Edit _Properties" +msgstr "プロパティを編集(_P)" + +#: data/menu.ui.h:24 +msgid "_About" +msgstr "情報(_A)" + +#: data/menu.ui.h:25 +msgid "_Quit" +msgstr "終了(_Q)" + +#: data/menu.ui.h:26 +msgid "Past_e Special" +msgstr "特殊貼り付け(_E)" + +#: data/menu.ui.h:27 +msgid "_Split Pages" +msgstr "ページを分割(_S)" diff -Nru pdfarranger-1.4.2/po/nl.po pdfarranger-1.6.2/po/nl.po --- pdfarranger-1.4.2/po/nl.po 2020-03-14 20:55:12.000000000 +0000 +++ pdfarranger-1.6.2/po/nl.po 2020-08-01 09:52:15.000000000 +0000 @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: PDF-Shuffler 0.7\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-12 10:16+0100\n" +"POT-Creation-Date: 2020-04-11 10:54+0200\n" "PO-Revision-Date: 2017-02-26 16:16+0000\n" "Last-Translator: Heimen Stoffels \n" "Language-Team: Dutch (http://www.transifex.com/logari81/pdfshuffler/language/" @@ -21,104 +21,104 @@ "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: pdfarranger/metadata.py:30 +#: pdfarranger/metadata.py:35 msgid "Title" msgstr "" -#: pdfarranger/metadata.py:31 +#: pdfarranger/metadata.py:36 msgid "Creator" msgstr "" -#: pdfarranger/metadata.py:32 +#: pdfarranger/metadata.py:37 msgid "Producer" msgstr "" -#: pdfarranger/metadata.py:33 +#: pdfarranger/metadata.py:38 msgid "Creator tool" msgstr "" -#: pdfarranger/metadata.py:91 data/pdfarranger.ui.h:10 +#: pdfarranger/metadata.py:141 msgid "Edit properties" msgstr "" -#: pdfarranger/metadata.py:104 +#: pdfarranger/metadata.py:154 msgid "Property" msgstr "" -#: pdfarranger/metadata.py:104 +#: pdfarranger/metadata.py:154 msgid "Value" msgstr "" -#: pdfarranger/pdfarranger.py:506 +#: pdfarranger/pdfarranger.py:520 msgid "No document" msgstr "Geen document" -#: pdfarranger/pdfarranger.py:508 +#: pdfarranger/pdfarranger.py:522 msgid "Several documents" msgstr "Meerdere documenten" -#: pdfarranger/pdfarranger.py:525 +#: pdfarranger/pdfarranger.py:539 #, python-format -msgid "Rendering thumbnails... [%(i1)s/%(i2)s]" -msgstr "Bezig met laden van miniaturen... [%(i1)s/%(i2)s]" +msgid "Rendering thumbnails… [%(i1)s/%(i2)s]" +msgstr "Bezig met laden van miniaturen… [%(i1)s/%(i2)s]" -#: pdfarranger/pdfarranger.py:614 -msgid "Export ..." -msgstr "Exporteren..." +#: pdfarranger/pdfarranger.py:629 +msgid "Export…" +msgstr "Exporteren…" -#: pdfarranger/pdfarranger.py:626 pdfarranger/pdfarranger.py:709 +#: pdfarranger/pdfarranger.py:641 pdfarranger/pdfarranger.py:725 msgid "PDF files" msgstr "PDF-bestanden" -#: pdfarranger/pdfarranger.py:632 pdfarranger/pdfarranger.py:704 +#: pdfarranger/pdfarranger.py:647 pdfarranger/pdfarranger.py:720 msgid "All files" msgstr "Alle bestanden" -#: pdfarranger/pdfarranger.py:693 -msgid "Import..." -msgstr "Importeren..." +#: pdfarranger/pdfarranger.py:709 +msgid "Import…" +msgstr "Importeren…" -#: pdfarranger/pdfarranger.py:1072 +#: pdfarranger/pdfarranger.py:1223 msgid "Left" msgstr "Links" -#: pdfarranger/pdfarranger.py:1072 +#: pdfarranger/pdfarranger.py:1223 msgid "Right" msgstr "Rechts" -#: pdfarranger/pdfarranger.py:1073 +#: pdfarranger/pdfarranger.py:1224 msgid "Top" msgstr "Boven" -#: pdfarranger/pdfarranger.py:1073 +#: pdfarranger/pdfarranger.py:1224 msgid "Bottom" msgstr "Onder" -#: pdfarranger/pdfarranger.py:1090 +#: pdfarranger/pdfarranger.py:1241 msgid "Crop Selected Pages" msgstr "Geselecteerde pagina's bijsnijden" -#: pdfarranger/pdfarranger.py:1098 +#: pdfarranger/pdfarranger.py:1249 msgid "" "Cropping does not remove any content\n" "from the PDF file, it only hides it." msgstr "" -#: pdfarranger/pdfarranger.py:1101 +#: pdfarranger/pdfarranger.py:1252 msgid "Crop Margins" msgstr "Marges bijsnijden" -#: pdfarranger/pdfarranger.py:1111 +#: pdfarranger/pdfarranger.py:1262 #, fuzzy, python-format msgid "% of width" msgstr "% van breedte" -#: pdfarranger/pdfarranger.py:1111 +#: pdfarranger/pdfarranger.py:1262 #, fuzzy, python-format msgid "% of height" msgstr "% van hoogte" -#: pdfarranger/pdfarranger.py:1218 +#: pdfarranger/pdfarranger.py:1369 #, python-format msgid "" "%s is a tool for rearranging and modifying PDF files. Developed using GTK+ " @@ -127,99 +127,161 @@ "%s is een hulpprogramma voor het herordenen en bewerken van PDF-bestanden, " "ontwikkeld in GTK+ en Python" -#: pdfarranger/pdfarranger.py:1298 +#: pdfarranger/pdfarranger.py:1449 msgid "page" msgstr "pagina" #: data/pdfarranger.ui.h:1 -msgid "_File" -msgstr "_Bestand" +msgid "Open a file and append it to the current document" +msgstr "Open een bestand en wijs het toe aan het huidige document" #: data/pdfarranger.ui.h:2 -msgid "_Export selection..." -msgstr "Selectie _exporteren..." +msgid "Save" +msgstr "Opslaan" #: data/pdfarranger.ui.h:3 -msgid "_Edit" -msgstr "_Bewerken" +#, fuzzy +msgid "Save As" +msgstr "Opslaan als" #: data/pdfarranger.ui.h:4 -msgid "Rotate left" -msgstr "Naar links draaien" +msgid "Number of Pages" +msgstr "" #: data/pdfarranger.ui.h:5 -msgid "Rotate right" -msgstr "Naar rechts draaien" +msgid "Main Menu" +msgstr "" #: data/pdfarranger.ui.h:6 -msgid "Crop" -msgstr "Bijsnijden" +#, fuzzy +msgid "Zoom In" +msgstr "Inzoomen" #: data/pdfarranger.ui.h:7 -msgid "Du_plicate" -msgstr "" +#, fuzzy +msgid "Zoom Out" +msgstr "Uitzoomen" #: data/pdfarranger.ui.h:8 -msgid "Reverse Order" -msgstr "" +#, fuzzy +msgid "Rotate Left" +msgstr "Naar _links draaien" #: data/pdfarranger.ui.h:9 -msgid "Split pages" -msgstr "" - -#: data/pdfarranger.ui.h:11 -msgid "_View" -msgstr "_Beeld" - -#: data/pdfarranger.ui.h:12 -msgid "Zoom in" -msgstr "Inzoomen" - -#: data/pdfarranger.ui.h:13 -msgid "Zoom out" -msgstr "Uitzoomen" - -#: data/pdfarranger.ui.h:14 -msgid "_Help" -msgstr "_Hulp" - -#: data/pdfarranger.ui.h:15 -msgid "Open a file and append it to the current document" -msgstr "Open een bestand en wijs het toe aan het huidige document" +#, fuzzy +msgid "Rotate Right" +msgstr "Naar rechts _draaien" -#: data/pdfarranger.ui.h:16 -msgid "Import" +#: data/menu.ui.h:1 +#, fuzzy +msgid "_Import" msgstr "Importeren" -#: data/pdfarranger.ui.h:17 -msgid "Save" +#: data/menu.ui.h:2 +#, fuzzy +msgid "_Save" msgstr "Opslaan" -#: data/pdfarranger.ui.h:18 -msgid "Save as" +#: data/menu.ui.h:3 +#, fuzzy +msgid "Save _As…" msgstr "Opslaan als" -#: data/pdfarranger.ui.h:19 -msgid "Delete" -msgstr "Verwijderen" +#: data/menu.ui.h:4 +#, fuzzy +msgid "E_xport Selection…" +msgstr "Selectie _exporteren…" + +#: data/menu.ui.h:5 +msgid "_Undo" +msgstr "" + +#: data/menu.ui.h:6 +msgid "_Redo" +msgstr "" -#: data/pdfarranger.ui.h:20 +#: data/menu.ui.h:7 +msgid "_Edit" +msgstr "_Bewerken" + +#: data/menu.ui.h:8 msgid "Rotate _Left" msgstr "Naar _links draaien" -#: data/pdfarranger.ui.h:21 +#: data/menu.ui.h:9 msgid "_Rotate Right" msgstr "Naar rechts _draaien" -#: data/pdfarranger.ui.h:22 -#, fuzzy -msgid "C_rop" -msgstr "Bij_snijden..." +#: data/menu.ui.h:10 +msgid "Cro_p" +msgstr "" -#: data/pdfarranger.ui.h:23 +#: data/menu.ui.h:11 msgid "_Delete" msgstr "_Verwijderen" -#: data/pdfarranger.ui.h:24 +#: data/menu.ui.h:12 +msgid "Dupl_icate" +msgstr "" + +#: data/menu.ui.h:13 msgid "Re_verse Order" msgstr "" + +#: data/menu.ui.h:14 +msgid "_Split pages" +msgstr "" + +#: data/menu.ui.h:15 +msgid "Cu_t" +msgstr "" + +#: data/menu.ui.h:16 +msgid "_Copy" +msgstr "" + +#: data/menu.ui.h:17 +msgid "Paste _After" +msgstr "" + +#: data/menu.ui.h:18 +msgid "Paste _Before" +msgstr "" + +#: data/menu.ui.h:19 +msgid "Paste Interleave _Odd" +msgstr "" + +#: data/menu.ui.h:20 +msgid "Paste Interleave _Even" +msgstr "" + +#: data/menu.ui.h:21 +#, fuzzy +msgid "Zoom _In" +msgstr "Inzoomen" + +#: data/menu.ui.h:22 +#, fuzzy +msgid "Zoom _Out" +msgstr "Uitzoomen" + +#: data/menu.ui.h:23 +msgid "Edit _Properties" +msgstr "" + +#: data/menu.ui.h:24 +msgid "_About" +msgstr "" + +#: data/menu.ui.h:25 +msgid "_Quit" +msgstr "" + +#: data/menu.ui.h:26 +msgid "Past_e Special" +msgstr "" + +#: data/menu.ui.h:27 +msgid "_Split Pages" +msgstr "" diff -Nru pdfarranger-1.4.2/po/pdfarranger.pot pdfarranger-1.6.2/po/pdfarranger.pot --- pdfarranger-1.4.2/po/pdfarranger.pot 2020-03-14 20:55:12.000000000 +0000 +++ pdfarranger-1.6.2/po/pdfarranger.pot 2020-08-01 09:52:15.000000000 +0000 @@ -8,211 +8,311 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-12 10:16+0100\n" +"POT-Creation-Date: 2020-07-22 06:04+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: pdfarranger/metadata.py:30 +#: pdfarranger/metadata.py:36 msgid "Title" msgstr "" -#: pdfarranger/metadata.py:31 +#: pdfarranger/metadata.py:37 msgid "Creator" msgstr "" -#: pdfarranger/metadata.py:32 +#: pdfarranger/metadata.py:38 msgid "Producer" msgstr "" -#: pdfarranger/metadata.py:33 +#: pdfarranger/metadata.py:39 msgid "Creator tool" msgstr "" -#: pdfarranger/metadata.py:91 data/pdfarranger.ui.h:10 +#: pdfarranger/metadata.py:154 msgid "Edit properties" msgstr "" -#: pdfarranger/metadata.py:104 +#: pdfarranger/metadata.py:167 msgid "Property" msgstr "" -#: pdfarranger/metadata.py:104 +#: pdfarranger/metadata.py:167 msgid "Value" msgstr "" -#: pdfarranger/pdfarranger.py:506 -msgid "No document" +#: pdfarranger/pdfarranger.py:591 +#, python-format +msgid "Rendering thumbnails… [%(i1)s/%(i2)s]" msgstr "" -#: pdfarranger/pdfarranger.py:508 -msgid "Several documents" +#: pdfarranger/pdfarranger.py:672 +msgid "Save changes to “{}” before closing?" msgstr "" -#: pdfarranger/pdfarranger.py:525 -#, python-format -msgid "Rendering thumbnails... [%(i1)s/%(i2)s]" +#: pdfarranger/pdfarranger.py:674 +msgid "Save changes before closing?" msgstr "" -#: pdfarranger/pdfarranger.py:614 -msgid "Export ..." +#: pdfarranger/pdfarranger.py:676 +msgid "Your changes will be lost if you don’t save them." msgstr "" -#: pdfarranger/pdfarranger.py:626 pdfarranger/pdfarranger.py:709 +#: pdfarranger/pdfarranger.py:677 +msgid "Do_n’t Save" +msgstr "" + +#: pdfarranger/pdfarranger.py:677 +msgid "_Cancel" +msgstr "" + +#: pdfarranger/pdfarranger.py:677 data/menu.ui.h:2 +msgid "_Save" +msgstr "" + +#: pdfarranger/pdfarranger.py:718 +msgid "Export…" +msgstr "" + +#: pdfarranger/pdfarranger.py:730 pdfarranger/pdfarranger.py:827 msgid "PDF files" msgstr "" -#: pdfarranger/pdfarranger.py:632 pdfarranger/pdfarranger.py:704 +#: pdfarranger/pdfarranger.py:736 pdfarranger/pdfarranger.py:813 msgid "All files" msgstr "" -#: pdfarranger/pdfarranger.py:693 -msgid "Import..." +#: pdfarranger/pdfarranger.py:802 +msgid "Import…" +msgstr "" + +#: pdfarranger/pdfarranger.py:819 +msgid "Supported image files" +msgstr "" + +#: pdfarranger/pdfarranger.py:916 +msgid "Pasted data not valid. Aborting paste." +msgstr "" + +#: pdfarranger/pdfarranger.py:1018 pdfarranger/pdfarranger.py:1675 +msgid "Unknown file format" msgstr "" -#: pdfarranger/pdfarranger.py:1072 +#: pdfarranger/pdfarranger.py:1022 +msgid "PDF document is damaged" +msgstr "" + +#: pdfarranger/pdfarranger.py:1028 pdfarranger/pdfarranger.py:1701 +msgid "File is neither pdf nor image" +msgstr "" + +#: pdfarranger/pdfarranger.py:1482 msgid "Left" msgstr "" -#: pdfarranger/pdfarranger.py:1072 +#: pdfarranger/pdfarranger.py:1482 msgid "Right" msgstr "" -#: pdfarranger/pdfarranger.py:1073 +#: pdfarranger/pdfarranger.py:1483 msgid "Top" msgstr "" -#: pdfarranger/pdfarranger.py:1073 +#: pdfarranger/pdfarranger.py:1483 msgid "Bottom" msgstr "" -#: pdfarranger/pdfarranger.py:1090 +#: pdfarranger/pdfarranger.py:1500 msgid "Crop Selected Pages" msgstr "" -#: pdfarranger/pdfarranger.py:1098 +#: pdfarranger/pdfarranger.py:1508 msgid "" "Cropping does not remove any content\n" "from the PDF file, it only hides it." msgstr "" -#: pdfarranger/pdfarranger.py:1101 +#: pdfarranger/pdfarranger.py:1511 msgid "Crop Margins" msgstr "" -#: pdfarranger/pdfarranger.py:1111 +#: pdfarranger/pdfarranger.py:1521 #, python-format msgid "% of width" msgstr "" -#: pdfarranger/pdfarranger.py:1111 +#: pdfarranger/pdfarranger.py:1521 #, python-format msgid "% of height" msgstr "" -#: pdfarranger/pdfarranger.py:1218 +#: pdfarranger/pdfarranger.py:1628 #, python-format msgid "" "%s is a tool for rearranging and modifying PDF files. Developed using GTK+ " "and Python" msgstr "" -#: pdfarranger/pdfarranger.py:1298 +#: pdfarranger/pdfarranger.py:1631 +msgid "Maintainers and contributors" +msgstr "" + +#: pdfarranger/pdfarranger.py:1635 +msgid "GNU General Public License (GPL) Version 3." +msgstr "" + +#: pdfarranger/pdfarranger.py:1687 +msgid "Image files are only supported with img2pdf" +msgstr "" + +#: pdfarranger/pdfarranger.py:1699 +msgid "Image format is not supported by img2pdf" +msgstr "" + +#: pdfarranger/pdfarranger.py:1752 msgid "page" msgstr "" #: data/pdfarranger.ui.h:1 -msgid "_File" +msgid "Open a file and append it to the current document" msgstr "" #: data/pdfarranger.ui.h:2 -msgid "_Export selection..." +msgid "Save" msgstr "" #: data/pdfarranger.ui.h:3 -msgid "_Edit" +msgid "Save As" msgstr "" #: data/pdfarranger.ui.h:4 -msgid "Rotate left" +msgid "Number of Pages" msgstr "" #: data/pdfarranger.ui.h:5 -msgid "Rotate right" +msgid "Main Menu" msgstr "" #: data/pdfarranger.ui.h:6 -msgid "Crop" +msgid "Zoom In" msgstr "" #: data/pdfarranger.ui.h:7 -msgid "Du_plicate" +msgid "Zoom Out" msgstr "" #: data/pdfarranger.ui.h:8 -msgid "Reverse Order" +msgid "Rotate Left" msgstr "" #: data/pdfarranger.ui.h:9 -msgid "Split pages" +msgid "Rotate Right" msgstr "" -#: data/pdfarranger.ui.h:11 -msgid "_View" +#: data/menu.ui.h:1 +msgid "_Import" msgstr "" -#: data/pdfarranger.ui.h:12 -msgid "Zoom in" +#: data/menu.ui.h:3 +msgid "Save _As…" msgstr "" -#: data/pdfarranger.ui.h:13 -msgid "Zoom out" +#: data/menu.ui.h:4 +msgid "E_xport Selection…" msgstr "" -#: data/pdfarranger.ui.h:14 -msgid "_Help" +#: data/menu.ui.h:5 +msgid "_Undo" msgstr "" -#: data/pdfarranger.ui.h:15 -msgid "Open a file and append it to the current document" +#: data/menu.ui.h:6 +msgid "_Redo" +msgstr "" + +#: data/menu.ui.h:7 +msgid "_Edit" msgstr "" -#: data/pdfarranger.ui.h:16 -msgid "Import" +#: data/menu.ui.h:8 +msgid "Rotate _Left" msgstr "" -#: data/pdfarranger.ui.h:17 -msgid "Save" +#: data/menu.ui.h:9 +msgid "_Rotate Right" msgstr "" -#: data/pdfarranger.ui.h:18 -msgid "Save as" +#: data/menu.ui.h:10 +msgid "Cro_p" msgstr "" -#: data/pdfarranger.ui.h:19 -msgid "Delete" +#: data/menu.ui.h:11 +msgid "_Delete" msgstr "" -#: data/pdfarranger.ui.h:20 -msgid "Rotate _Left" +#: data/menu.ui.h:12 +msgid "Dupl_icate" msgstr "" -#: data/pdfarranger.ui.h:21 -msgid "_Rotate Right" +#: data/menu.ui.h:13 +msgid "Re_verse Order" msgstr "" -#: data/pdfarranger.ui.h:22 -msgid "C_rop" +#: data/menu.ui.h:14 +msgid "_Split pages" msgstr "" -#: data/pdfarranger.ui.h:23 -msgid "_Delete" +#: data/menu.ui.h:15 +msgid "Cu_t" msgstr "" -#: data/pdfarranger.ui.h:24 -msgid "Re_verse Order" +#: data/menu.ui.h:16 +msgid "_Copy" +msgstr "" + +#: data/menu.ui.h:17 +msgid "Paste _After" +msgstr "" + +#: data/menu.ui.h:18 +msgid "Paste _Before" +msgstr "" + +#: data/menu.ui.h:19 +msgid "Paste Interleave _Odd" +msgstr "" + +#: data/menu.ui.h:20 +msgid "Paste Interleave _Even" +msgstr "" + +#: data/menu.ui.h:21 +msgid "Zoom _In" +msgstr "" + +#: data/menu.ui.h:22 +msgid "Zoom _Out" +msgstr "" + +#: data/menu.ui.h:23 +msgid "Edit _Properties" +msgstr "" + +#: data/menu.ui.h:24 +msgid "_About" +msgstr "" + +#: data/menu.ui.h:25 +msgid "_Quit" +msgstr "" + +#: data/menu.ui.h:26 +msgid "Past_e Special" +msgstr "" + +#: data/menu.ui.h:27 +msgid "_Split Pages" msgstr "" diff -Nru pdfarranger-1.4.2/po/pl_PL.po pdfarranger-1.6.2/po/pl_PL.po --- pdfarranger-1.4.2/po/pl_PL.po 2020-03-14 20:55:12.000000000 +0000 +++ pdfarranger-1.6.2/po/pl_PL.po 2020-08-01 09:52:15.000000000 +0000 @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: PDF-Shuffler 0.7\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-12 10:16+0100\n" +"POT-Creation-Date: 2020-04-11 10:54+0200\n" "PO-Revision-Date: 2017-02-26 16:16+0000\n" "Last-Translator: Toratora \n" "Language-Team: Polish (Poland) (http://www.transifex.com/logari81/" @@ -22,104 +22,104 @@ "%100<12 || n%100>=14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n" "%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" -#: pdfarranger/metadata.py:30 +#: pdfarranger/metadata.py:35 msgid "Title" msgstr "" -#: pdfarranger/metadata.py:31 +#: pdfarranger/metadata.py:36 msgid "Creator" msgstr "" -#: pdfarranger/metadata.py:32 +#: pdfarranger/metadata.py:37 msgid "Producer" msgstr "" -#: pdfarranger/metadata.py:33 +#: pdfarranger/metadata.py:38 msgid "Creator tool" msgstr "" -#: pdfarranger/metadata.py:91 data/pdfarranger.ui.h:10 +#: pdfarranger/metadata.py:141 msgid "Edit properties" msgstr "" -#: pdfarranger/metadata.py:104 +#: pdfarranger/metadata.py:154 msgid "Property" msgstr "" -#: pdfarranger/metadata.py:104 +#: pdfarranger/metadata.py:154 msgid "Value" msgstr "" -#: pdfarranger/pdfarranger.py:506 +#: pdfarranger/pdfarranger.py:520 msgid "No document" msgstr "Brak dokumentu" -#: pdfarranger/pdfarranger.py:508 +#: pdfarranger/pdfarranger.py:522 msgid "Several documents" msgstr "Kilka dokumentów" -#: pdfarranger/pdfarranger.py:525 +#: pdfarranger/pdfarranger.py:539 #, python-format -msgid "Rendering thumbnails... [%(i1)s/%(i2)s]" -msgstr "Podgląd miniaturek... [%(i1)s/%(i2)s] " +msgid "Rendering thumbnails… [%(i1)s/%(i2)s]" +msgstr "Podgląd miniaturek… [%(i1)s/%(i2)s] " -#: pdfarranger/pdfarranger.py:614 -msgid "Export ..." -msgstr "Zapisz ..." +#: pdfarranger/pdfarranger.py:629 +msgid "Export…" +msgstr "Zapisz…" -#: pdfarranger/pdfarranger.py:626 pdfarranger/pdfarranger.py:709 +#: pdfarranger/pdfarranger.py:641 pdfarranger/pdfarranger.py:725 msgid "PDF files" msgstr "Pliki PDF" -#: pdfarranger/pdfarranger.py:632 pdfarranger/pdfarranger.py:704 +#: pdfarranger/pdfarranger.py:647 pdfarranger/pdfarranger.py:720 msgid "All files" msgstr "Wszystkie pliki" -#: pdfarranger/pdfarranger.py:693 -msgid "Import..." -msgstr "Zaimportuj... " +#: pdfarranger/pdfarranger.py:709 +msgid "Import…" +msgstr "Zaimportuj… " -#: pdfarranger/pdfarranger.py:1072 +#: pdfarranger/pdfarranger.py:1223 msgid "Left" msgstr "Lewo" -#: pdfarranger/pdfarranger.py:1072 +#: pdfarranger/pdfarranger.py:1223 msgid "Right" msgstr "Prawo" -#: pdfarranger/pdfarranger.py:1073 +#: pdfarranger/pdfarranger.py:1224 msgid "Top" msgstr "Górę " -#: pdfarranger/pdfarranger.py:1073 +#: pdfarranger/pdfarranger.py:1224 msgid "Bottom" msgstr "Dół" -#: pdfarranger/pdfarranger.py:1090 +#: pdfarranger/pdfarranger.py:1241 msgid "Crop Selected Pages" msgstr "Przytnij wybrane strony" -#: pdfarranger/pdfarranger.py:1098 +#: pdfarranger/pdfarranger.py:1249 msgid "" "Cropping does not remove any content\n" "from the PDF file, it only hides it." msgstr "" -#: pdfarranger/pdfarranger.py:1101 +#: pdfarranger/pdfarranger.py:1252 msgid "Crop Margins" msgstr "Przytnij margines" -#: pdfarranger/pdfarranger.py:1111 +#: pdfarranger/pdfarranger.py:1262 #, fuzzy, python-format msgid "% of width" msgstr "% szerokość" -#: pdfarranger/pdfarranger.py:1111 +#: pdfarranger/pdfarranger.py:1262 #, fuzzy, python-format msgid "% of height" msgstr "% wysokości" -#: pdfarranger/pdfarranger.py:1218 +#: pdfarranger/pdfarranger.py:1369 #, python-format msgid "" "%s is a tool for rearranging and modifying PDF files. Developed using GTK+ " @@ -128,99 +128,161 @@ "%s jest narzędziem do układania i modyfikowania plików PDF. Opracowanym przy " "użyciu GTK i Python" -#: pdfarranger/pdfarranger.py:1298 +#: pdfarranger/pdfarranger.py:1449 msgid "page" msgstr "strona" #: data/pdfarranger.ui.h:1 -msgid "_File" -msgstr "_Plik" +msgid "Open a file and append it to the current document" +msgstr "Otwórz plik i dołączyć go do bieżącego dokumentu" #: data/pdfarranger.ui.h:2 -msgid "_Export selection..." -msgstr "_Zapisz wybrany/wybrane " +msgid "Save" +msgstr "Zapisz" #: data/pdfarranger.ui.h:3 -msgid "_Edit" -msgstr "_Edytuj " +#, fuzzy +msgid "Save As" +msgstr "Zapisz jako" #: data/pdfarranger.ui.h:4 -msgid "Rotate left" -msgstr "Obróć w lewo" +msgid "Number of Pages" +msgstr "" #: data/pdfarranger.ui.h:5 -msgid "Rotate right" -msgstr "Obróć w prawo" +msgid "Main Menu" +msgstr "" #: data/pdfarranger.ui.h:6 -msgid "Crop" -msgstr "Przytnij " +#, fuzzy +msgid "Zoom In" +msgstr "Powiększ " #: data/pdfarranger.ui.h:7 -msgid "Du_plicate" -msgstr "" +#, fuzzy +msgid "Zoom Out" +msgstr "Pomniejsz" #: data/pdfarranger.ui.h:8 -msgid "Reverse Order" -msgstr "" +#, fuzzy +msgid "Rotate Left" +msgstr "Obróć w_lewo" #: data/pdfarranger.ui.h:9 -msgid "Split pages" -msgstr "" - -#: data/pdfarranger.ui.h:11 -msgid "_View" -msgstr "_Widok" - -#: data/pdfarranger.ui.h:12 -msgid "Zoom in" -msgstr "Powiększ " - -#: data/pdfarranger.ui.h:13 -msgid "Zoom out" -msgstr "Pomniejsz" - -#: data/pdfarranger.ui.h:14 -msgid "_Help" -msgstr "_Pomoc" - -#: data/pdfarranger.ui.h:15 -msgid "Open a file and append it to the current document" -msgstr "Otwórz plik i dołączyć go do bieżącego dokumentu" +#, fuzzy +msgid "Rotate Right" +msgstr "_Obróć w prawo" -#: data/pdfarranger.ui.h:16 -msgid "Import" +#: data/menu.ui.h:1 +#, fuzzy +msgid "_Import" msgstr "Zaimportuj " -#: data/pdfarranger.ui.h:17 -msgid "Save" +#: data/menu.ui.h:2 +#, fuzzy +msgid "_Save" msgstr "Zapisz" -#: data/pdfarranger.ui.h:18 -msgid "Save as" +#: data/menu.ui.h:3 +#, fuzzy +msgid "Save _As…" msgstr "Zapisz jako" -#: data/pdfarranger.ui.h:19 -msgid "Delete" -msgstr "Usuń" +#: data/menu.ui.h:4 +#, fuzzy +msgid "E_xport Selection…" +msgstr "_Zapisz wybrany/wybrane " + +#: data/menu.ui.h:5 +msgid "_Undo" +msgstr "" + +#: data/menu.ui.h:6 +msgid "_Redo" +msgstr "" + +#: data/menu.ui.h:7 +msgid "_Edit" +msgstr "_Edytuj " -#: data/pdfarranger.ui.h:20 +#: data/menu.ui.h:8 msgid "Rotate _Left" msgstr "Obróć w_lewo" -#: data/pdfarranger.ui.h:21 +#: data/menu.ui.h:9 msgid "_Rotate Right" msgstr "_Obróć w prawo" -#: data/pdfarranger.ui.h:22 -#, fuzzy -msgid "C_rop" -msgstr "P_rzytnij..." +#: data/menu.ui.h:10 +msgid "Cro_p" +msgstr "" -#: data/pdfarranger.ui.h:23 +#: data/menu.ui.h:11 msgid "_Delete" -msgstr "_Usuń..." +msgstr "_Usuń…" -#: data/pdfarranger.ui.h:24 +#: data/menu.ui.h:12 +msgid "Dupl_icate" +msgstr "" + +#: data/menu.ui.h:13 msgid "Re_verse Order" msgstr "" + +#: data/menu.ui.h:14 +msgid "_Split pages" +msgstr "" + +#: data/menu.ui.h:15 +msgid "Cu_t" +msgstr "" + +#: data/menu.ui.h:16 +msgid "_Copy" +msgstr "" + +#: data/menu.ui.h:17 +msgid "Paste _After" +msgstr "" + +#: data/menu.ui.h:18 +msgid "Paste _Before" +msgstr "" + +#: data/menu.ui.h:19 +msgid "Paste Interleave _Odd" +msgstr "" + +#: data/menu.ui.h:20 +msgid "Paste Interleave _Even" +msgstr "" + +#: data/menu.ui.h:21 +#, fuzzy +msgid "Zoom _In" +msgstr "Powiększ " + +#: data/menu.ui.h:22 +#, fuzzy +msgid "Zoom _Out" +msgstr "Pomniejsz" + +#: data/menu.ui.h:23 +msgid "Edit _Properties" +msgstr "" + +#: data/menu.ui.h:24 +msgid "_About" +msgstr "" + +#: data/menu.ui.h:25 +msgid "_Quit" +msgstr "" + +#: data/menu.ui.h:26 +msgid "Past_e Special" +msgstr "" + +#: data/menu.ui.h:27 +msgid "_Split Pages" +msgstr "" diff -Nru pdfarranger-1.4.2/po/POTFILES.in pdfarranger-1.6.2/po/POTFILES.in --- pdfarranger-1.4.2/po/POTFILES.in 2020-03-14 20:55:12.000000000 +0000 +++ pdfarranger-1.6.2/po/POTFILES.in 2020-08-01 09:52:15.000000000 +0000 @@ -1,3 +1,4 @@ pdfarranger/pdfarranger.py pdfarranger/metadata.py data/pdfarranger.ui +data/menu.ui diff -Nru pdfarranger-1.4.2/po/pt_BR.po pdfarranger-1.6.2/po/pt_BR.po --- pdfarranger-1.4.2/po/pt_BR.po 2020-03-14 20:55:12.000000000 +0000 +++ pdfarranger-1.6.2/po/pt_BR.po 2020-08-01 09:52:15.000000000 +0000 @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: PDF-Shuffler 0.7\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-12 10:16+0100\n" +"POT-Creation-Date: 2020-04-11 10:54+0200\n" "PO-Revision-Date: 2013-03-28 10:48-0300\n" "Last-Translator: Rogênio L. Belém \n" "Language-Team: Rogênio L. Belém \n" @@ -19,104 +19,104 @@ "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: pdfarranger/metadata.py:30 +#: pdfarranger/metadata.py:35 msgid "Title" msgstr "" -#: pdfarranger/metadata.py:31 +#: pdfarranger/metadata.py:36 msgid "Creator" msgstr "" -#: pdfarranger/metadata.py:32 +#: pdfarranger/metadata.py:37 msgid "Producer" msgstr "" -#: pdfarranger/metadata.py:33 +#: pdfarranger/metadata.py:38 msgid "Creator tool" msgstr "" -#: pdfarranger/metadata.py:91 data/pdfarranger.ui.h:10 +#: pdfarranger/metadata.py:141 msgid "Edit properties" msgstr "" -#: pdfarranger/metadata.py:104 +#: pdfarranger/metadata.py:154 msgid "Property" msgstr "" -#: pdfarranger/metadata.py:104 +#: pdfarranger/metadata.py:154 msgid "Value" msgstr "" -#: pdfarranger/pdfarranger.py:506 +#: pdfarranger/pdfarranger.py:520 msgid "No document" msgstr "Nenhum documento" -#: pdfarranger/pdfarranger.py:508 +#: pdfarranger/pdfarranger.py:522 msgid "Several documents" msgstr "Vários documentos" -#: pdfarranger/pdfarranger.py:525 +#: pdfarranger/pdfarranger.py:539 #, python-format -msgid "Rendering thumbnails... [%(i1)s/%(i2)s]" -msgstr "Gerando miniaturas... [%(i1)s/%(i2)s]" +msgid "Rendering thumbnails… [%(i1)s/%(i2)s]" +msgstr "Gerando miniaturas… [%(i1)s/%(i2)s]" -#: pdfarranger/pdfarranger.py:614 -msgid "Export ..." -msgstr "Exportar ..." +#: pdfarranger/pdfarranger.py:629 +msgid "Export…" +msgstr "Exportar…" -#: pdfarranger/pdfarranger.py:626 pdfarranger/pdfarranger.py:709 +#: pdfarranger/pdfarranger.py:641 pdfarranger/pdfarranger.py:725 msgid "PDF files" msgstr "Arquivos PDF" -#: pdfarranger/pdfarranger.py:632 pdfarranger/pdfarranger.py:704 +#: pdfarranger/pdfarranger.py:647 pdfarranger/pdfarranger.py:720 msgid "All files" msgstr "Todos os arquivos" -#: pdfarranger/pdfarranger.py:693 -msgid "Import..." -msgstr "Importar..." +#: pdfarranger/pdfarranger.py:709 +msgid "Import…" +msgstr "Importar…" -#: pdfarranger/pdfarranger.py:1072 +#: pdfarranger/pdfarranger.py:1223 msgid "Left" msgstr "Esquerda" -#: pdfarranger/pdfarranger.py:1072 +#: pdfarranger/pdfarranger.py:1223 msgid "Right" msgstr "Direita" -#: pdfarranger/pdfarranger.py:1073 +#: pdfarranger/pdfarranger.py:1224 msgid "Top" msgstr "Superior" -#: pdfarranger/pdfarranger.py:1073 +#: pdfarranger/pdfarranger.py:1224 msgid "Bottom" msgstr "Inferior" -#: pdfarranger/pdfarranger.py:1090 +#: pdfarranger/pdfarranger.py:1241 msgid "Crop Selected Pages" msgstr "Recortar as páginas selecionadas" -#: pdfarranger/pdfarranger.py:1098 +#: pdfarranger/pdfarranger.py:1249 msgid "" "Cropping does not remove any content\n" "from the PDF file, it only hides it." msgstr "" -#: pdfarranger/pdfarranger.py:1101 +#: pdfarranger/pdfarranger.py:1252 msgid "Crop Margins" msgstr "Recortar as márgens" -#: pdfarranger/pdfarranger.py:1111 +#: pdfarranger/pdfarranger.py:1262 #, python-format msgid "% of width" msgstr "% da largura" -#: pdfarranger/pdfarranger.py:1111 +#: pdfarranger/pdfarranger.py:1262 #, python-format msgid "% of height" msgstr "% da altura" -#: pdfarranger/pdfarranger.py:1218 +#: pdfarranger/pdfarranger.py:1369 #, python-format msgid "" "%s is a tool for rearranging and modifying PDF files. Developed using GTK+ " @@ -125,99 +125,161 @@ "%s é uma ferramenta que rearranja e modifica arquivos PDF. Desenvolvido " "utilizando GTK+ e Python" -#: pdfarranger/pdfarranger.py:1298 +#: pdfarranger/pdfarranger.py:1449 msgid "page" msgstr "página" #: data/pdfarranger.ui.h:1 -msgid "_File" -msgstr "_Arquivo" +msgid "Open a file and append it to the current document" +msgstr "Abrir um arquivo e adicioná-lo ao documento atual" #: data/pdfarranger.ui.h:2 -msgid "_Export selection..." -msgstr "_Exportar as páginas selecionadas..." +msgid "Save" +msgstr "Salvar" #: data/pdfarranger.ui.h:3 -msgid "_Edit" -msgstr "_Editar" +#, fuzzy +msgid "Save As" +msgstr "Salvar como" #: data/pdfarranger.ui.h:4 -msgid "Rotate left" -msgstr "Rotacionar à esquerda" +msgid "Number of Pages" +msgstr "" #: data/pdfarranger.ui.h:5 -msgid "Rotate right" -msgstr "Rotacionar à direita" +msgid "Main Menu" +msgstr "" #: data/pdfarranger.ui.h:6 -msgid "Crop" -msgstr "Recortar" +#, fuzzy +msgid "Zoom In" +msgstr "Ampliar" #: data/pdfarranger.ui.h:7 -msgid "Du_plicate" -msgstr "" +#, fuzzy +msgid "Zoom Out" +msgstr "Reduzir" #: data/pdfarranger.ui.h:8 -msgid "Reverse Order" -msgstr "" +#, fuzzy +msgid "Rotate Left" +msgstr "Rotacionar à _esquerda" #: data/pdfarranger.ui.h:9 -msgid "Split pages" -msgstr "" - -#: data/pdfarranger.ui.h:11 -msgid "_View" -msgstr "_Ver" - -#: data/pdfarranger.ui.h:12 -msgid "Zoom in" -msgstr "Ampliar" - -#: data/pdfarranger.ui.h:13 -msgid "Zoom out" -msgstr "Reduzir" - -#: data/pdfarranger.ui.h:14 -msgid "_Help" -msgstr "_Ajuda" - -#: data/pdfarranger.ui.h:15 -msgid "Open a file and append it to the current document" -msgstr "Abrir um arquivo e adicioná-lo ao documento atual" +#, fuzzy +msgid "Rotate Right" +msgstr "Rotacionar à _direita" -#: data/pdfarranger.ui.h:16 -msgid "Import" +#: data/menu.ui.h:1 +#, fuzzy +msgid "_Import" msgstr "Importar" -#: data/pdfarranger.ui.h:17 -msgid "Save" +#: data/menu.ui.h:2 +#, fuzzy +msgid "_Save" msgstr "Salvar" -#: data/pdfarranger.ui.h:18 -msgid "Save as" +#: data/menu.ui.h:3 +#, fuzzy +msgid "Save _As…" msgstr "Salvar como" -#: data/pdfarranger.ui.h:19 -msgid "Delete" -msgstr "Remover" +#: data/menu.ui.h:4 +#, fuzzy +msgid "E_xport Selection…" +msgstr "_Exportar as páginas selecionadas…" + +#: data/menu.ui.h:5 +msgid "_Undo" +msgstr "" -#: data/pdfarranger.ui.h:20 +#: data/menu.ui.h:6 +msgid "_Redo" +msgstr "" + +#: data/menu.ui.h:7 +msgid "_Edit" +msgstr "_Editar" + +#: data/menu.ui.h:8 msgid "Rotate _Left" msgstr "Rotacionar à _esquerda" -#: data/pdfarranger.ui.h:21 +#: data/menu.ui.h:9 msgid "_Rotate Right" msgstr "Rotacionar à _direita" -#: data/pdfarranger.ui.h:22 -#, fuzzy -msgid "C_rop" -msgstr "_Recortar.." +#: data/menu.ui.h:10 +msgid "Cro_p" +msgstr "" -#: data/pdfarranger.ui.h:23 +#: data/menu.ui.h:11 msgid "_Delete" msgstr "Remover" -#: data/pdfarranger.ui.h:24 +#: data/menu.ui.h:12 +msgid "Dupl_icate" +msgstr "" + +#: data/menu.ui.h:13 msgid "Re_verse Order" msgstr "" + +#: data/menu.ui.h:14 +msgid "_Split pages" +msgstr "" + +#: data/menu.ui.h:15 +msgid "Cu_t" +msgstr "" + +#: data/menu.ui.h:16 +msgid "_Copy" +msgstr "" + +#: data/menu.ui.h:17 +msgid "Paste _After" +msgstr "" + +#: data/menu.ui.h:18 +msgid "Paste _Before" +msgstr "" + +#: data/menu.ui.h:19 +msgid "Paste Interleave _Odd" +msgstr "" + +#: data/menu.ui.h:20 +msgid "Paste Interleave _Even" +msgstr "" + +#: data/menu.ui.h:21 +#, fuzzy +msgid "Zoom _In" +msgstr "Ampliar" + +#: data/menu.ui.h:22 +#, fuzzy +msgid "Zoom _Out" +msgstr "Reduzir" + +#: data/menu.ui.h:23 +msgid "Edit _Properties" +msgstr "" + +#: data/menu.ui.h:24 +msgid "_About" +msgstr "" + +#: data/menu.ui.h:25 +msgid "_Quit" +msgstr "" + +#: data/menu.ui.h:26 +msgid "Past_e Special" +msgstr "" + +#: data/menu.ui.h:27 +msgid "_Split Pages" +msgstr "" diff -Nru pdfarranger-1.4.2/po/sv.po pdfarranger-1.6.2/po/sv.po --- pdfarranger-1.4.2/po/sv.po 1970-01-01 00:00:00.000000000 +0000 +++ pdfarranger-1.6.2/po/sv.po 2020-08-01 09:52:15.000000000 +0000 @@ -0,0 +1,323 @@ +# Swedish translation for pdfarranger. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the pdfarranger package. +# Translators: +# kbengs, 2020 +msgid "" +msgstr "" +"Project-Id-Version: pdfarranger\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-07-24 18:29+0300\n" +"PO-Revision-Date: 2020-07-24 18:48+0300\n" +"Language-Team: Swedish\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.3\n" +"Last-Translator: kbengs\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: sv\n" + +#: pdfarranger/metadata.py:36 +msgid "Title" +msgstr "Titel" + +#: pdfarranger/metadata.py:37 +msgid "Creator" +msgstr "Författare" + +#: pdfarranger/metadata.py:38 +msgid "Producer" +msgstr "PDF-framställning" + +#: pdfarranger/metadata.py:39 +msgid "Creator tool" +msgstr "Program" + +#: pdfarranger/metadata.py:154 +msgid "Edit properties" +msgstr "Dokument egenskaper" + +#: pdfarranger/metadata.py:167 +msgid "Property" +msgstr "Fält" + +#: pdfarranger/metadata.py:167 +msgid "Value" +msgstr "Innehåll" + +#: pdfarranger/pdfarranger.py:591 +#, python-format +msgid "Rendering thumbnails… [%(i1)s/%(i2)s]" +msgstr "Renderar miniatyrer… [%(i1)s/%(i2)s]" + +#: pdfarranger/pdfarranger.py:672 +msgid "Save changes to “{}” before closing?" +msgstr "Spara ändringar till “{}” innan stängning?" + +#: pdfarranger/pdfarranger.py:674 +msgid "Save changes before closing?" +msgstr "Spara ändringar innan stängning?" + +#: pdfarranger/pdfarranger.py:676 +msgid "Your changes will be lost if you don’t save them." +msgstr "Dina ändringar går förlorade om du inte sparar dem." + +#: pdfarranger/pdfarranger.py:677 +msgid "Do_n’t Save" +msgstr "Spara _inte" + +#: pdfarranger/pdfarranger.py:677 +msgid "_Cancel" +msgstr "_Avbryt" + +#: pdfarranger/pdfarranger.py:677 data/menu.ui.h:2 +msgid "_Save" +msgstr "_Spara" + +#: pdfarranger/pdfarranger.py:718 +msgid "Export…" +msgstr "Exportera…" + +#: pdfarranger/pdfarranger.py:730 pdfarranger/pdfarranger.py:827 +msgid "PDF files" +msgstr "PDF filer" + +#: pdfarranger/pdfarranger.py:736 pdfarranger/pdfarranger.py:813 +msgid "All files" +msgstr "Alla filer" + +#: pdfarranger/pdfarranger.py:802 +msgid "Import…" +msgstr "Importera…" + +#: pdfarranger/pdfarranger.py:819 +msgid "Supported image files" +msgstr "Bildfiler som stöds" + +#: pdfarranger/pdfarranger.py:916 +msgid "Pasted data not valid. Aborting paste." +msgstr "Inklistrat data är inte giltigt. Inklistringen avbryts." + +#: pdfarranger/pdfarranger.py:1018 pdfarranger/pdfarranger.py:1675 +msgid "Unknown file format" +msgstr "Okänt filformat" + +#: pdfarranger/pdfarranger.py:1022 +msgid "PDF document is damaged" +msgstr "PDF dokumentet är skadat" + +#: pdfarranger/pdfarranger.py:1028 pdfarranger/pdfarranger.py:1701 +msgid "File is neither pdf nor image" +msgstr "Filen är varken en PDF eller en bildfil" + +#: pdfarranger/pdfarranger.py:1482 +msgid "Left" +msgstr "Vänster" + +#: pdfarranger/pdfarranger.py:1482 +msgid "Right" +msgstr "Höger" + +#: pdfarranger/pdfarranger.py:1483 +msgid "Top" +msgstr "Över" + +#: pdfarranger/pdfarranger.py:1483 +msgid "Bottom" +msgstr "Under" + +#: pdfarranger/pdfarranger.py:1500 +msgid "Crop Selected Pages" +msgstr "Beskär markerade sidor" + +#: pdfarranger/pdfarranger.py:1508 +msgid "" +"Cropping does not remove any content\n" +"from the PDF file, it only hides it." +msgstr "" +"Innehåll tas inte bort från PDF-filen vid\n" +"beskärning, utan döljs endast." + +#: pdfarranger/pdfarranger.py:1511 +msgid "Crop Margins" +msgstr "Beskär marginaler" + +#: pdfarranger/pdfarranger.py:1521 +#, python-format +msgid "% of width" +msgstr "% av bredd" + +#: pdfarranger/pdfarranger.py:1521 +#, python-format +msgid "% of height" +msgstr "% av höjd" + +#: pdfarranger/pdfarranger.py:1628 +#, python-format +msgid "" +"%s is a tool for rearranging and modifying PDF files. Developed using GTK+ " +"and Python" +msgstr "" +"%s är ett verktyg för att arrangera om och modifiera PDF filer. Utvecklat " +"med hjälp av GTK+ och Python" + +#: pdfarranger/pdfarranger.py:1631 +msgid "Maintainers and contributors" +msgstr "Administratörer och bidragsgivare" + +#: pdfarranger/pdfarranger.py:1635 +msgid "GNU General Public License (GPL) Version 3." +msgstr "GNU General Public License (GPL) Version 3." + +#: pdfarranger/pdfarranger.py:1687 +msgid "Image files are only supported with img2pdf" +msgstr "Bildfiler stöds endast om img2pdf är installerat" + +#: pdfarranger/pdfarranger.py:1699 +msgid "Image format is not supported by img2pdf" +msgstr "Bildformatet stöds inte av img2pdf" + +#: pdfarranger/pdfarranger.py:1752 +msgid "page" +msgstr "sida" + +#: data/pdfarranger.ui.h:1 +msgid "Open a file and append it to the current document" +msgstr "Importera filer" + +#: data/pdfarranger.ui.h:2 +msgid "Save" +msgstr "Spara" + +#: data/pdfarranger.ui.h:3 +msgid "Save As" +msgstr "Spara som" + +#: data/pdfarranger.ui.h:4 +msgid "Number of Pages" +msgstr "Antal sidor" + +#: data/pdfarranger.ui.h:5 +msgid "Main Menu" +msgstr "Huvudmeny" + +#: data/pdfarranger.ui.h:6 +msgid "Zoom In" +msgstr "Zooma in" + +#: data/pdfarranger.ui.h:7 +msgid "Zoom Out" +msgstr "Zooma ut" + +#: data/pdfarranger.ui.h:8 +msgid "Rotate Left" +msgstr "Rotera åt vänster" + +#: data/pdfarranger.ui.h:9 +msgid "Rotate Right" +msgstr "Rotera åt höger" + +#: data/menu.ui.h:1 +msgid "_Import" +msgstr "Im_portera" + +#: data/menu.ui.h:3 +msgid "Save _As…" +msgstr "Spara s_om" + +#: data/menu.ui.h:4 +msgid "E_xport Selection…" +msgstr "E_xportera markerade sidor" + +#: data/menu.ui.h:5 +msgid "_Undo" +msgstr "_Ångra" + +#: data/menu.ui.h:6 +msgid "_Redo" +msgstr "_Gör om" + +#: data/menu.ui.h:7 +msgid "_Edit" +msgstr "_Redigera" + +#: data/menu.ui.h:8 +msgid "Rotate _Left" +msgstr "Rotera åt _vänster" + +#: data/menu.ui.h:9 +msgid "_Rotate Right" +msgstr "Rotera åt _höger" + +#: data/menu.ui.h:10 +msgid "Cro_p" +msgstr "_Beskär" + +#: data/menu.ui.h:11 +msgid "_Delete" +msgstr "_Ta bort" + +#: data/menu.ui.h:12 +msgid "Dupl_icate" +msgstr "Dupli_cera" + +#: data/menu.ui.h:13 +msgid "Re_verse Order" +msgstr "Omv_änd ordningen" + +#: data/menu.ui.h:14 +msgid "_Split pages" +msgstr "_Dela sidor" + +#: data/menu.ui.h:15 +msgid "Cu_t" +msgstr "_Klipp ut" + +#: data/menu.ui.h:16 +msgid "_Copy" +msgstr "K_opiera" + +#: data/menu.ui.h:17 +msgid "Paste _After" +msgstr "Klistra in _efter" + +#: data/menu.ui.h:18 +msgid "Paste _Before" +msgstr "Klistra in _före" + +#: data/menu.ui.h:19 +msgid "Paste Interleave _Odd" +msgstr "Klistra in som _udda sidor" + +#: data/menu.ui.h:20 +msgid "Paste Interleave _Even" +msgstr "Klistra in som _jämna sidor" + +#: data/menu.ui.h:21 +msgid "Zoom _In" +msgstr "Zooma _in" + +#: data/menu.ui.h:22 +msgid "Zoom _Out" +msgstr "Zooma _ut" + +#: data/menu.ui.h:23 +msgid "Edit _Properties" +msgstr "Redigera _egenskaper" + +#: data/menu.ui.h:24 +msgid "_About" +msgstr "_Om PDF Arranger" + +#: data/menu.ui.h:25 +msgid "_Quit" +msgstr "_Avsluta" + +#: data/menu.ui.h:26 +msgid "Past_e Special" +msgstr "Klistra in _special" + +#: data/menu.ui.h:27 +msgid "_Split Pages" +msgstr "_Dela sidor" diff -Nru pdfarranger-1.4.2/po/tr.po pdfarranger-1.6.2/po/tr.po --- pdfarranger-1.4.2/po/tr.po 2020-03-14 20:55:12.000000000 +0000 +++ pdfarranger-1.6.2/po/tr.po 2020-08-01 09:52:15.000000000 +0000 @@ -1,222 +1,316 @@ -# SOME DESCRIPTIVE TITLE. +# Turkish translation of pdfarranger # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , 2018. +# This file is distributed under the same license as the pdfarranger package. +# Murathan BOSTANCI , 2018 +# Emin Tufan Çetin , 2020 # msgid "" msgstr "" -"Project-Id-Version: PDF-Shuffler 0.5\n" +"Project-Id-Version: pdfarranger master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-12 10:16+0100\n" -"PO-Revision-Date: \n" -"Last-Translator: Murathan BOSTANCI \n" -"Language-Team: Turkish\n" +"POT-Creation-Date: 2020-05-24 17:01+0200\n" +"PO-Revision-Date: 2020-07-11 19:33+0300\n" +"Last-Translator: Emin Tufan Çetin \n" +"Language-Team: Turkish \n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.2\n" +"Plural-Forms: nplurals=1; plural=0\n" +"X-Generator: Poedit 2.3.1\n" -#: pdfarranger/metadata.py:30 +#: pdfarranger/metadata.py:36 msgid "Title" -msgstr "" +msgstr "Başlık" -#: pdfarranger/metadata.py:31 +#: pdfarranger/metadata.py:37 msgid "Creator" -msgstr "" +msgstr "Oluşturucu" -#: pdfarranger/metadata.py:32 +#: pdfarranger/metadata.py:38 msgid "Producer" -msgstr "" +msgstr "Üretici" -#: pdfarranger/metadata.py:33 +#: pdfarranger/metadata.py:39 msgid "Creator tool" -msgstr "" +msgstr "Oluşturucu araç" -#: pdfarranger/metadata.py:91 data/pdfarranger.ui.h:10 +#: pdfarranger/metadata.py:154 msgid "Edit properties" -msgstr "" +msgstr "Özellikleri düzenle" -#: pdfarranger/metadata.py:104 +#: pdfarranger/metadata.py:167 msgid "Property" -msgstr "" +msgstr "Özellik" -#: pdfarranger/metadata.py:104 +#: pdfarranger/metadata.py:167 msgid "Value" -msgstr "" +msgstr "Değer" -#: pdfarranger/pdfarranger.py:506 -msgid "No document" -msgstr "belge yok" - -#: pdfarranger/pdfarranger.py:508 -msgid "Several documents" -msgstr "Çeşitli belgeler" - -#: pdfarranger/pdfarranger.py:525 +#: pdfarranger/pdfarranger.py:585 #, python-format -msgid "Rendering thumbnails... [%(i1)s/%(i2)s]" -msgstr "Küçük resimler işleniyor… [% (I2) s/% (I2) s]" +msgid "Rendering thumbnails… [%(i1)s/%(i2)s]" +msgstr "Küçük resimler çiziliyor… [%(i1)s/%(i2)s]" -#: pdfarranger/pdfarranger.py:614 -msgid "Export ..." -msgstr "Dışa Aktar …" +#: pdfarranger/pdfarranger.py:665 +msgid "Save changes to “{}” before closing?" +msgstr "Kapatmadan önce değişiklikler “{}” dosyasına kaydedilsin mi?" + +#: pdfarranger/pdfarranger.py:667 +msgid "Save changes before closing?" +msgstr "Kapatmadan önce değişiklikler kaydedilsin mi?" + +#: pdfarranger/pdfarranger.py:669 +msgid "Your changes will be lost if you don’t save them." +msgstr "Kaydetmezseniz değişiklikleriniz kaybolacaktır." + +#: pdfarranger/pdfarranger.py:670 +msgid "Do_n’t Save" +msgstr "Kaydet_me" + +#: pdfarranger/pdfarranger.py:670 +msgid "_Cancel" +msgstr "_İptal" + +#: pdfarranger/pdfarranger.py:670 data/menu.ui.h:2 +msgid "_Save" +msgstr "_Kaydet" + +#: pdfarranger/pdfarranger.py:710 +msgid "Export…" +msgstr "Dışa Aktar…" -#: pdfarranger/pdfarranger.py:626 pdfarranger/pdfarranger.py:709 +#: pdfarranger/pdfarranger.py:722 pdfarranger/pdfarranger.py:819 msgid "PDF files" msgstr "PDF dosyaları" -#: pdfarranger/pdfarranger.py:632 pdfarranger/pdfarranger.py:704 +#: pdfarranger/pdfarranger.py:728 pdfarranger/pdfarranger.py:805 msgid "All files" msgstr "Tüm dosyalar" -#: pdfarranger/pdfarranger.py:693 -msgid "Import..." -msgstr "İçe Aktar.." +#: pdfarranger/pdfarranger.py:794 +msgid "Import…" +msgstr "İçe Aktar…" + +#: pdfarranger/pdfarranger.py:811 +msgid "Supported image files" +msgstr "Desteklenen resim dosyaları" + +#: pdfarranger/pdfarranger.py:908 +msgid "Pasted data not valid. Aborting paste." +msgstr "Yapıştırılan veri geçersiz. Yapıştırılmıyor." + +#: pdfarranger/pdfarranger.py:1012 +msgid "PDF document is damaged: " +msgstr "PDF belgesi hasarlı: " -#: pdfarranger/pdfarranger.py:1072 +#: pdfarranger/pdfarranger.py:1442 msgid "Left" msgstr "Sol" -#: pdfarranger/pdfarranger.py:1072 +#: pdfarranger/pdfarranger.py:1442 msgid "Right" msgstr "Sağ" -#: pdfarranger/pdfarranger.py:1073 +#: pdfarranger/pdfarranger.py:1443 msgid "Top" msgstr "Üst" -#: pdfarranger/pdfarranger.py:1073 +#: pdfarranger/pdfarranger.py:1443 msgid "Bottom" msgstr "Alt" -#: pdfarranger/pdfarranger.py:1090 +#: pdfarranger/pdfarranger.py:1460 msgid "Crop Selected Pages" -msgstr "Seçilen sayfaları kırp" +msgstr "Seçili Sayfaları Kırp" -#: pdfarranger/pdfarranger.py:1098 +#: pdfarranger/pdfarranger.py:1468 msgid "" "Cropping does not remove any content\n" "from the PDF file, it only hides it." msgstr "" +"Kırparak PDF dosyasından herhangi bir\n" +"veri kaldırılmaz, yalnızca gizlenir." -#: pdfarranger/pdfarranger.py:1101 +#: pdfarranger/pdfarranger.py:1471 msgid "Crop Margins" -msgstr "Kenar boşluklarını kırp" +msgstr "Kenarları Kırp" -#: pdfarranger/pdfarranger.py:1111 -#, fuzzy, python-format +#: pdfarranger/pdfarranger.py:1481 +#, python-format msgid "% of width" -msgstr "% genişlik" +msgstr "% olarak genişlik" -#: pdfarranger/pdfarranger.py:1111 -#, fuzzy, python-format +#: pdfarranger/pdfarranger.py:1481 +#, python-format msgid "% of height" -msgstr "% yükseklik" +msgstr "% olarak yükselik" -#: pdfarranger/pdfarranger.py:1218 +#: pdfarranger/pdfarranger.py:1588 #, python-format msgid "" "%s is a tool for rearranging and modifying PDF files. Developed using GTK+ " "and Python" msgstr "" -"%s PDF dosyalarını değiştirme ve yeniden ayarlama aracıdır. GTK+ and Python " +"%s, PDF dosyalarını yeniden sıralama ve düzenleme aracıdır. GTK+ ve Python " "kullanılarak geliştirilmiştir" -#: pdfarranger/pdfarranger.py:1298 +#: pdfarranger/pdfarranger.py:1632 +msgid "Unknown file format" +msgstr "Bilinmeyen dosya biçimi" + +#: pdfarranger/pdfarranger.py:1644 +msgid "Image files are only supported with img2pdf" +msgstr "Resim dosyaları yalnızca img2pdf ile desteklenir" + +#: pdfarranger/pdfarranger.py:1656 +msgid "Image format is not supported by img2pdf" +msgstr "Resim dosyası, img2pdf tarafından desteklenmiyor" + +#: pdfarranger/pdfarranger.py:1658 +msgid "File is neither pdf nor image" +msgstr "Dosya ne pdf ne de resimdir" + +#: pdfarranger/pdfarranger.py:1709 msgid "page" msgstr "sayfa" #: data/pdfarranger.ui.h:1 -msgid "_File" -msgstr "Dosya" +msgid "Open a file and append it to the current document" +msgstr "Dosya aç ve geçerli belgenin sonuna iliştir" #: data/pdfarranger.ui.h:2 -msgid "_Export selection..." -msgstr "Seçimi dışa aktar" +msgid "Save" +msgstr "Kaydet" #: data/pdfarranger.ui.h:3 -msgid "_Edit" -msgstr "Düzenle" +msgid "Save As" +msgstr "Farklı Kaydet" #: data/pdfarranger.ui.h:4 -msgid "Rotate left" -msgstr "Sola döndür" +msgid "Number of Pages" +msgstr "Sayfa Sayısı" #: data/pdfarranger.ui.h:5 -msgid "Rotate right" -msgstr "Sağa döndür" +msgid "Main Menu" +msgstr "Ana Menü" #: data/pdfarranger.ui.h:6 -msgid "Crop" -msgstr "Kırp" +msgid "Zoom In" +msgstr "Yakınlaştır" #: data/pdfarranger.ui.h:7 -msgid "Du_plicate" -msgstr "" +msgid "Zoom Out" +msgstr "Uzaklaştır" #: data/pdfarranger.ui.h:8 -msgid "Reverse Order" -msgstr "" +msgid "Rotate Left" +msgstr "Sola Döndür" #: data/pdfarranger.ui.h:9 -msgid "Split pages" -msgstr "" - -#: data/pdfarranger.ui.h:11 -msgid "_View" -msgstr "Görünüm" - -#: data/pdfarranger.ui.h:12 -msgid "Zoom in" -msgstr "Yakınlaştır" - -#: data/pdfarranger.ui.h:13 -msgid "Zoom out" -msgstr "Uzaklaş" - -#: data/pdfarranger.ui.h:14 -msgid "_Help" -msgstr "Yardım" - -#: data/pdfarranger.ui.h:15 -msgid "Open a file and append it to the current document" -msgstr "Bir dosya açın ve mevcut dokümana ekleyin" - -#: data/pdfarranger.ui.h:16 -msgid "Import" -msgstr "İçe aktar" +msgid "Rotate Right" +msgstr "Sağa Döndür" -#: data/pdfarranger.ui.h:17 -msgid "Save" -msgstr "Kaydet" +#: data/menu.ui.h:1 +msgid "_Import" +msgstr "İ_çe Aktar" + +#: data/menu.ui.h:3 +msgid "Save _As…" +msgstr "_Farklı Kaydet…" + +#: data/menu.ui.h:4 +msgid "E_xport Selection…" +msgstr "Seçimi Dı_şa Aktar…" + +#: data/menu.ui.h:5 +msgid "_Undo" +msgstr "_Geri Al" + +#: data/menu.ui.h:6 +msgid "_Redo" +msgstr "_Yinele" -#: data/pdfarranger.ui.h:18 -msgid "Save as" -msgstr "Farklı kaydet" - -#: data/pdfarranger.ui.h:19 -msgid "Delete" -msgstr "Sil" +#: data/menu.ui.h:7 +msgid "_Edit" +msgstr "_Düzenle" -#: data/pdfarranger.ui.h:20 +#: data/menu.ui.h:8 msgid "Rotate _Left" -msgstr "Sola Döndür" +msgstr "So_la Döndür" -#: data/pdfarranger.ui.h:21 +#: data/menu.ui.h:9 msgid "_Rotate Right" -msgstr "Sağa Döndür" +msgstr "Sağa Döndü_r" -#: data/pdfarranger.ui.h:22 -#, fuzzy -msgid "C_rop" -msgstr "Kırp" +#: data/menu.ui.h:10 +msgid "Cro_p" +msgstr "_Kırp" -#: data/pdfarranger.ui.h:23 -#, fuzzy +#: data/menu.ui.h:11 msgid "_Delete" -msgstr "Sil" +msgstr "_Sil" + +#: data/menu.ui.h:12 +msgid "Dupl_icate" +msgstr "_Çoğalt" -#: data/pdfarranger.ui.h:24 +#: data/menu.ui.h:13 msgid "Re_verse Order" -msgstr "" +msgstr "Sırayı Tersine Çe_vir" + +#: data/menu.ui.h:14 +msgid "_Split pages" +msgstr "Sayfaları _böl" + +#: data/menu.ui.h:15 +msgid "Cu_t" +msgstr "_Kes" + +#: data/menu.ui.h:16 +msgid "_Copy" +msgstr "K_opyala" + +#: data/menu.ui.h:17 +msgid "Paste _After" +msgstr "_Sonrasına Yapıştır" + +#: data/menu.ui.h:18 +msgid "Paste _Before" +msgstr "_Öncesine Yapıştır" + +#: data/menu.ui.h:19 +msgid "Paste Interleave _Odd" +msgstr "_Tek Aralıkta Yapıştır" + +#: data/menu.ui.h:20 +msgid "Paste Interleave _Even" +msgstr "_Çift Aralıkta Yapıştır" + +#: data/menu.ui.h:21 +msgid "Zoom _In" +msgstr "_Yakınlaştır" + +#: data/menu.ui.h:22 +msgid "Zoom _Out" +msgstr "_Uzaklaştır" + +#: data/menu.ui.h:23 +msgid "Edit _Properties" +msgstr "_Özellikleri Düzenle" + +#: data/menu.ui.h:24 +msgid "_About" +msgstr "_Hakkında" + +#: data/menu.ui.h:25 +msgid "_Quit" +msgstr "_Çık" + +#: data/menu.ui.h:26 +msgid "Past_e Special" +msgstr "Öz_el Yapıştır" + +#: data/menu.ui.h:27 +msgid "_Split Pages" +msgstr "Sayfaları _Böl" diff -Nru pdfarranger-1.4.2/po/updatepo.sh pdfarranger-1.6.2/po/updatepo.sh --- pdfarranger-1.4.2/po/updatepo.sh 2020-03-14 20:55:12.000000000 +0000 +++ pdfarranger-1.6.2/po/updatepo.sh 2020-08-01 09:52:15.000000000 +0000 @@ -21,4 +21,8 @@ # # Update translation files -find ./po -type f -iname "*.po" -exec msgmerge -U {} po/pdfarranger.pot \; +cd $(dirname $0)/.. +for po in po/*.po +do + msgmerge --backup none -U $po po/pdfarranger.pot +done diff -Nru pdfarranger-1.4.2/po/zh_CN.po pdfarranger-1.6.2/po/zh_CN.po --- pdfarranger-1.4.2/po/zh_CN.po 2020-03-14 20:55:12.000000000 +0000 +++ pdfarranger-1.6.2/po/zh_CN.po 2020-08-01 09:52:15.000000000 +0000 @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: PDF-Shuffler 0.7\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-12 10:16+0100\n" +"POT-Creation-Date: 2020-04-11 10:54+0200\n" "PO-Revision-Date: 2014-11-05 07:31+0000\n" "Last-Translator: Dean Lee \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/" @@ -20,203 +20,265 @@ "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: pdfarranger/metadata.py:30 +#: pdfarranger/metadata.py:35 msgid "Title" msgstr "" -#: pdfarranger/metadata.py:31 +#: pdfarranger/metadata.py:36 msgid "Creator" msgstr "" -#: pdfarranger/metadata.py:32 +#: pdfarranger/metadata.py:37 msgid "Producer" msgstr "" -#: pdfarranger/metadata.py:33 +#: pdfarranger/metadata.py:38 msgid "Creator tool" msgstr "" -#: pdfarranger/metadata.py:91 data/pdfarranger.ui.h:10 +#: pdfarranger/metadata.py:141 msgid "Edit properties" msgstr "" -#: pdfarranger/metadata.py:104 +#: pdfarranger/metadata.py:154 msgid "Property" msgstr "" -#: pdfarranger/metadata.py:104 +#: pdfarranger/metadata.py:154 msgid "Value" msgstr "" -#: pdfarranger/pdfarranger.py:506 +#: pdfarranger/pdfarranger.py:520 msgid "No document" msgstr "无文档" -#: pdfarranger/pdfarranger.py:508 +#: pdfarranger/pdfarranger.py:522 msgid "Several documents" msgstr "多个文档" -#: pdfarranger/pdfarranger.py:525 +#: pdfarranger/pdfarranger.py:539 #, python-format -msgid "Rendering thumbnails... [%(i1)s/%(i2)s]" -msgstr "正在渲染缩略图... [%(i1)s/%(i2)s]" +msgid "Rendering thumbnails… [%(i1)s/%(i2)s]" +msgstr "正在渲染缩略图… [%(i1)s/%(i2)s]" -#: pdfarranger/pdfarranger.py:614 -msgid "Export ..." -msgstr "导出..." +#: pdfarranger/pdfarranger.py:629 +msgid "Export…" +msgstr "导出…" -#: pdfarranger/pdfarranger.py:626 pdfarranger/pdfarranger.py:709 +#: pdfarranger/pdfarranger.py:641 pdfarranger/pdfarranger.py:725 msgid "PDF files" msgstr "PDF 文件" -#: pdfarranger/pdfarranger.py:632 pdfarranger/pdfarranger.py:704 +#: pdfarranger/pdfarranger.py:647 pdfarranger/pdfarranger.py:720 msgid "All files" msgstr "所有文件" -#: pdfarranger/pdfarranger.py:693 -msgid "Import..." -msgstr "导入..." +#: pdfarranger/pdfarranger.py:709 +msgid "Import…" +msgstr "导入…" -#: pdfarranger/pdfarranger.py:1072 +#: pdfarranger/pdfarranger.py:1223 msgid "Left" msgstr "左边" -#: pdfarranger/pdfarranger.py:1072 +#: pdfarranger/pdfarranger.py:1223 msgid "Right" msgstr "右边" -#: pdfarranger/pdfarranger.py:1073 +#: pdfarranger/pdfarranger.py:1224 msgid "Top" msgstr "顶部" -#: pdfarranger/pdfarranger.py:1073 +#: pdfarranger/pdfarranger.py:1224 msgid "Bottom" msgstr "底部" -#: pdfarranger/pdfarranger.py:1090 +#: pdfarranger/pdfarranger.py:1241 msgid "Crop Selected Pages" msgstr "裁剪所选页面" -#: pdfarranger/pdfarranger.py:1098 +#: pdfarranger/pdfarranger.py:1249 msgid "" "Cropping does not remove any content\n" "from the PDF file, it only hides it." msgstr "" -#: pdfarranger/pdfarranger.py:1101 +#: pdfarranger/pdfarranger.py:1252 msgid "Crop Margins" msgstr "裁剪边距" -#: pdfarranger/pdfarranger.py:1111 +#: pdfarranger/pdfarranger.py:1262 #, fuzzy, python-format msgid "% of width" msgstr "% 的宽度" -#: pdfarranger/pdfarranger.py:1111 +#: pdfarranger/pdfarranger.py:1262 #, fuzzy, python-format msgid "% of height" msgstr "% 的高度" -#: pdfarranger/pdfarranger.py:1218 +#: pdfarranger/pdfarranger.py:1369 #, python-format msgid "" "%s is a tool for rearranging and modifying PDF files. Developed using GTK+ " "and Python" msgstr "%s 是用于重排及修改 PDF 文件的工具。采用 GTK+ 及 Python 开发" -#: pdfarranger/pdfarranger.py:1298 +#: pdfarranger/pdfarranger.py:1449 msgid "page" msgstr "页面" #: data/pdfarranger.ui.h:1 -msgid "_File" -msgstr "文件(_F)" +msgid "Open a file and append it to the current document" +msgstr "打开文件,并将其追加到当前文件末尾" #: data/pdfarranger.ui.h:2 -msgid "_Export selection..." -msgstr "导出所选(_E)..." +msgid "Save" +msgstr "保存" #: data/pdfarranger.ui.h:3 -msgid "_Edit" -msgstr "编辑(_E)" +#, fuzzy +msgid "Save As" +msgstr "另存为" #: data/pdfarranger.ui.h:4 -msgid "Rotate left" -msgstr "向左旋转" +msgid "Number of Pages" +msgstr "" #: data/pdfarranger.ui.h:5 -msgid "Rotate right" -msgstr "向右旋转" +msgid "Main Menu" +msgstr "" #: data/pdfarranger.ui.h:6 -msgid "Crop" -msgstr "裁剪" +#, fuzzy +msgid "Zoom In" +msgstr "放大" #: data/pdfarranger.ui.h:7 -msgid "Du_plicate" -msgstr "" +#, fuzzy +msgid "Zoom Out" +msgstr "缩小" #: data/pdfarranger.ui.h:8 -msgid "Reverse Order" -msgstr "" +#, fuzzy +msgid "Rotate Left" +msgstr "向左旋转(_L)" #: data/pdfarranger.ui.h:9 -msgid "Split pages" -msgstr "" - -#: data/pdfarranger.ui.h:11 -msgid "_View" -msgstr "查看(_V)" - -#: data/pdfarranger.ui.h:12 -msgid "Zoom in" -msgstr "放大" - -#: data/pdfarranger.ui.h:13 -msgid "Zoom out" -msgstr "缩小" - -#: data/pdfarranger.ui.h:14 -msgid "_Help" -msgstr "帮助(_H)" - -#: data/pdfarranger.ui.h:15 -msgid "Open a file and append it to the current document" -msgstr "打开文件,并将其追加到当前文件末尾" +#, fuzzy +msgid "Rotate Right" +msgstr "向右旋转(_R)" -#: data/pdfarranger.ui.h:16 -msgid "Import" +#: data/menu.ui.h:1 +#, fuzzy +msgid "_Import" msgstr "导入" -#: data/pdfarranger.ui.h:17 -msgid "Save" +#: data/menu.ui.h:2 +#, fuzzy +msgid "_Save" msgstr "保存" -#: data/pdfarranger.ui.h:18 -msgid "Save as" +#: data/menu.ui.h:3 +#, fuzzy +msgid "Save _As…" msgstr "另存为" -#: data/pdfarranger.ui.h:19 -msgid "Delete" -msgstr "删除" +#: data/menu.ui.h:4 +#, fuzzy +msgid "E_xport Selection…" +msgstr "导出所选(_E)…" + +#: data/menu.ui.h:5 +msgid "_Undo" +msgstr "" + +#: data/menu.ui.h:6 +msgid "_Redo" +msgstr "" -#: data/pdfarranger.ui.h:20 +#: data/menu.ui.h:7 +msgid "_Edit" +msgstr "编辑(_E)" + +#: data/menu.ui.h:8 msgid "Rotate _Left" msgstr "向左旋转(_L)" -#: data/pdfarranger.ui.h:21 +#: data/menu.ui.h:9 msgid "_Rotate Right" msgstr "向右旋转(_R)" -#: data/pdfarranger.ui.h:22 -#, fuzzy -msgid "C_rop" -msgstr "裁剪(_R)..." +#: data/menu.ui.h:10 +msgid "Cro_p" +msgstr "" -#: data/pdfarranger.ui.h:23 +#: data/menu.ui.h:11 msgid "_Delete" msgstr "删除(_D)" -#: data/pdfarranger.ui.h:24 +#: data/menu.ui.h:12 +msgid "Dupl_icate" +msgstr "" + +#: data/menu.ui.h:13 msgid "Re_verse Order" msgstr "" + +#: data/menu.ui.h:14 +msgid "_Split pages" +msgstr "" + +#: data/menu.ui.h:15 +msgid "Cu_t" +msgstr "" + +#: data/menu.ui.h:16 +msgid "_Copy" +msgstr "" + +#: data/menu.ui.h:17 +msgid "Paste _After" +msgstr "" + +#: data/menu.ui.h:18 +msgid "Paste _Before" +msgstr "" + +#: data/menu.ui.h:19 +msgid "Paste Interleave _Odd" +msgstr "" + +#: data/menu.ui.h:20 +msgid "Paste Interleave _Even" +msgstr "" + +#: data/menu.ui.h:21 +#, fuzzy +msgid "Zoom _In" +msgstr "放大" + +#: data/menu.ui.h:22 +#, fuzzy +msgid "Zoom _Out" +msgstr "缩小" + +#: data/menu.ui.h:23 +msgid "Edit _Properties" +msgstr "" + +#: data/menu.ui.h:24 +msgid "_About" +msgstr "" + +#: data/menu.ui.h:25 +msgid "_Quit" +msgstr "" + +#: data/menu.ui.h:26 +msgid "Past_e Special" +msgstr "" + +#: data/menu.ui.h:27 +msgid "_Split Pages" +msgstr "" diff -Nru pdfarranger-1.4.2/po/zh_TW.po pdfarranger-1.6.2/po/zh_TW.po --- pdfarranger-1.4.2/po/zh_TW.po 2020-03-14 20:55:12.000000000 +0000 +++ pdfarranger-1.6.2/po/zh_TW.po 2020-08-01 09:52:15.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PDF-Shuffler 0.7\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-12 10:16+0100\n" +"POT-Creation-Date: 2020-04-11 10:54+0200\n" "PO-Revision-Date: 2013-11-12 08:38+0800\n" "Last-Translator: Franklin Weng \n" "Language-Team: Chinese Traditional \n" @@ -17,204 +17,266 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: pdfarranger/metadata.py:30 +#: pdfarranger/metadata.py:35 msgid "Title" msgstr "" -#: pdfarranger/metadata.py:31 +#: pdfarranger/metadata.py:36 msgid "Creator" msgstr "" -#: pdfarranger/metadata.py:32 +#: pdfarranger/metadata.py:37 msgid "Producer" msgstr "" -#: pdfarranger/metadata.py:33 +#: pdfarranger/metadata.py:38 msgid "Creator tool" msgstr "" -#: pdfarranger/metadata.py:91 data/pdfarranger.ui.h:10 +#: pdfarranger/metadata.py:141 msgid "Edit properties" msgstr "" -#: pdfarranger/metadata.py:104 +#: pdfarranger/metadata.py:154 msgid "Property" msgstr "" -#: pdfarranger/metadata.py:104 +#: pdfarranger/metadata.py:154 msgid "Value" msgstr "" -#: pdfarranger/pdfarranger.py:506 +#: pdfarranger/pdfarranger.py:520 msgid "No document" msgstr "沒有文件" -#: pdfarranger/pdfarranger.py:508 +#: pdfarranger/pdfarranger.py:522 msgid "Several documents" msgstr "一些文件" -#: pdfarranger/pdfarranger.py:525 +#: pdfarranger/pdfarranger.py:539 #, python-format -msgid "Rendering thumbnails... [%(i1)s/%(i2)s]" -msgstr "縮圖成像中... [%(i1)s/%(i2)s]" +msgid "Rendering thumbnails… [%(i1)s/%(i2)s]" +msgstr "縮圖成像中… [%(i1)s/%(i2)s]" -#: pdfarranger/pdfarranger.py:614 -msgid "Export ..." -msgstr "匯出..." +#: pdfarranger/pdfarranger.py:629 +msgid "Export…" +msgstr "匯出…" -#: pdfarranger/pdfarranger.py:626 pdfarranger/pdfarranger.py:709 +#: pdfarranger/pdfarranger.py:641 pdfarranger/pdfarranger.py:725 msgid "PDF files" msgstr "PDF 檔案" -#: pdfarranger/pdfarranger.py:632 pdfarranger/pdfarranger.py:704 +#: pdfarranger/pdfarranger.py:647 pdfarranger/pdfarranger.py:720 msgid "All files" msgstr "所有檔案" -#: pdfarranger/pdfarranger.py:693 -msgid "Import..." -msgstr "匯入..." +#: pdfarranger/pdfarranger.py:709 +msgid "Import…" +msgstr "匯入…" -#: pdfarranger/pdfarranger.py:1072 +#: pdfarranger/pdfarranger.py:1223 msgid "Left" msgstr "左側" -#: pdfarranger/pdfarranger.py:1072 +#: pdfarranger/pdfarranger.py:1223 msgid "Right" msgstr "右側" -#: pdfarranger/pdfarranger.py:1073 +#: pdfarranger/pdfarranger.py:1224 msgid "Top" msgstr "頂部" -#: pdfarranger/pdfarranger.py:1073 +#: pdfarranger/pdfarranger.py:1224 msgid "Bottom" msgstr "底部" -#: pdfarranger/pdfarranger.py:1090 +#: pdfarranger/pdfarranger.py:1241 msgid "Crop Selected Pages" msgstr "裁剪選取的頁面" -#: pdfarranger/pdfarranger.py:1098 +#: pdfarranger/pdfarranger.py:1249 msgid "" "Cropping does not remove any content\n" "from the PDF file, it only hides it." msgstr "" -#: pdfarranger/pdfarranger.py:1101 +#: pdfarranger/pdfarranger.py:1252 msgid "Crop Margins" msgstr "裁剪邊緣" -#: pdfarranger/pdfarranger.py:1111 +#: pdfarranger/pdfarranger.py:1262 #, fuzzy, python-format msgid "% of width" msgstr "% 的寬度" -#: pdfarranger/pdfarranger.py:1111 +#: pdfarranger/pdfarranger.py:1262 #, fuzzy, python-format msgid "% of height" msgstr "% 的高度" -#: pdfarranger/pdfarranger.py:1218 +#: pdfarranger/pdfarranger.py:1369 #, python-format msgid "" "%s is a tool for rearranging and modifying PDF files. Developed using GTK+ " "and Python" msgstr "%s 是個變更重新編排 PDF 檔的工具。用 GTK+ 與 Python 開發" -#: pdfarranger/pdfarranger.py:1298 +#: pdfarranger/pdfarranger.py:1449 msgid "page" msgstr "頁面" #: data/pdfarranger.ui.h:1 -msgid "_File" -msgstr "檔案(_F)" +msgid "Open a file and append it to the current document" +msgstr "開啟檔案並將它附加到現有文件之後" #: data/pdfarranger.ui.h:2 -msgid "_Export selection..." -msgstr "匯出選取項目(_E)..." +msgid "Save" +msgstr "儲存" #: data/pdfarranger.ui.h:3 -msgid "_Edit" -msgstr "編輯(_E)" +#, fuzzy +msgid "Save As" +msgstr "另存新檔" #: data/pdfarranger.ui.h:4 -msgid "Rotate left" -msgstr "向左旋轉" +msgid "Number of Pages" +msgstr "" #: data/pdfarranger.ui.h:5 -msgid "Rotate right" -msgstr "向右旋轉" +msgid "Main Menu" +msgstr "" #: data/pdfarranger.ui.h:6 -msgid "Crop" -msgstr "裁剪" +#, fuzzy +msgid "Zoom In" +msgstr "放大" #: data/pdfarranger.ui.h:7 -msgid "Du_plicate" -msgstr "" +#, fuzzy +msgid "Zoom Out" +msgstr "縮小" #: data/pdfarranger.ui.h:8 -msgid "Reverse Order" -msgstr "" +#, fuzzy +msgid "Rotate Left" +msgstr "向左旋轉(_L)" #: data/pdfarranger.ui.h:9 -msgid "Split pages" -msgstr "" - -#: data/pdfarranger.ui.h:11 -msgid "_View" -msgstr "檢視(_V)" - -#: data/pdfarranger.ui.h:12 -msgid "Zoom in" -msgstr "放大" - -#: data/pdfarranger.ui.h:13 -msgid "Zoom out" -msgstr "縮小" - -#: data/pdfarranger.ui.h:14 -msgid "_Help" -msgstr "說明(_H)" - -#: data/pdfarranger.ui.h:15 -msgid "Open a file and append it to the current document" -msgstr "開啟檔案並將它附加到現有文件之後" +#, fuzzy +msgid "Rotate Right" +msgstr "向右旋轉(_R)" -#: data/pdfarranger.ui.h:16 -msgid "Import" +#: data/menu.ui.h:1 +#, fuzzy +msgid "_Import" msgstr "匯入" -#: data/pdfarranger.ui.h:17 -msgid "Save" +#: data/menu.ui.h:2 +#, fuzzy +msgid "_Save" msgstr "儲存" -#: data/pdfarranger.ui.h:18 -msgid "Save as" +#: data/menu.ui.h:3 +#, fuzzy +msgid "Save _As…" msgstr "另存新檔" -#: data/pdfarranger.ui.h:19 -msgid "Delete" -msgstr "刪除" +#: data/menu.ui.h:4 +#, fuzzy +msgid "E_xport Selection…" +msgstr "匯出選取項目(_E)…" + +#: data/menu.ui.h:5 +msgid "_Undo" +msgstr "" -#: data/pdfarranger.ui.h:20 +#: data/menu.ui.h:6 +msgid "_Redo" +msgstr "" + +#: data/menu.ui.h:7 +msgid "_Edit" +msgstr "編輯(_E)" + +#: data/menu.ui.h:8 msgid "Rotate _Left" msgstr "向左旋轉(_L)" -#: data/pdfarranger.ui.h:21 +#: data/menu.ui.h:9 msgid "_Rotate Right" msgstr "向右旋轉(_R)" -#: data/pdfarranger.ui.h:22 -#, fuzzy -msgid "C_rop" -msgstr "裁剪(_R)" +#: data/menu.ui.h:10 +msgid "Cro_p" +msgstr "" -#: data/pdfarranger.ui.h:23 +#: data/menu.ui.h:11 #, fuzzy msgid "_Delete" msgstr "刪除" -#: data/pdfarranger.ui.h:24 +#: data/menu.ui.h:12 +msgid "Dupl_icate" +msgstr "" + +#: data/menu.ui.h:13 msgid "Re_verse Order" msgstr "" + +#: data/menu.ui.h:14 +msgid "_Split pages" +msgstr "" + +#: data/menu.ui.h:15 +msgid "Cu_t" +msgstr "" + +#: data/menu.ui.h:16 +msgid "_Copy" +msgstr "" + +#: data/menu.ui.h:17 +msgid "Paste _After" +msgstr "" + +#: data/menu.ui.h:18 +msgid "Paste _Before" +msgstr "" + +#: data/menu.ui.h:19 +msgid "Paste Interleave _Odd" +msgstr "" + +#: data/menu.ui.h:20 +msgid "Paste Interleave _Even" +msgstr "" + +#: data/menu.ui.h:21 +#, fuzzy +msgid "Zoom _In" +msgstr "放大" + +#: data/menu.ui.h:22 +#, fuzzy +msgid "Zoom _Out" +msgstr "縮小" + +#: data/menu.ui.h:23 +msgid "Edit _Properties" +msgstr "" + +#: data/menu.ui.h:24 +msgid "_About" +msgstr "" + +#: data/menu.ui.h:25 +msgid "_Quit" +msgstr "" + +#: data/menu.ui.h:26 +msgid "Past_e Special" +msgstr "" + +#: data/menu.ui.h:27 +msgid "_Split Pages" +msgstr "" diff -Nru pdfarranger-1.4.2/README.md pdfarranger-1.6.2/README.md --- pdfarranger-1.4.2/README.md 2020-03-14 20:55:12.000000000 +0000 +++ pdfarranger-1.6.2/README.md 2020-08-01 09:52:15.000000000 +0000 @@ -1,5 +1,7 @@ ## About +[![Total alerts](https://img.shields.io/lgtm/alerts/g/jeromerobert/pdfarranger.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/jeromerobert/pdfarranger/alerts/) +[![Language grade: Python](https://img.shields.io/lgtm/grade/python/g/jeromerobert/pdfarranger.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/jeromerobert/pdfarranger/context:python) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/f30fcd52c2fe4d438542275876221ecd)](https://app.codacy.com/app/jeromerobert/pdfarranger?utm_source=github.com&utm_medium=referral&utm_content=jeromerobert/pdfarranger&utm_campaign=Badge_Grade_Settings) [![pdfarranger](https://github.com/jeromerobert/pdfarranger/workflows/pdfarranger/badge.svg)](https://github.com/jeromerobert/pdfarranger/actions?query=workflow%3Apdfarranger+branch%3Amaster) @@ -8,20 +10,26 @@ interactive and intuitive graphical interface. It is a frontend for [pikepdf](https://github.com/pikepdf/pikepdf). -*pdfarranger* is a fork of Konstantinos Poulios's pdfshuffler +*pdfarranger* is a fork of Konstantinos Poulios’s pdfshuffler (see [Savannah](https://savannah.nongnu.org/projects/pdfshuffler) or [Sourceforge](http://sourceforge.net/projects/pdfshuffler)). -It's a humble attempt to make the project a bit more active. +It’s a humble attempt to make the project a bit more active. -![screenshot of pdfarranger](http://screenshots.debian.net/screenshots/000/017/031/large.png) -## Binary distribution +![screenshot of pdfarranger](https://github.com/jeromerobert/pdfarranger/raw/master/data/screenshot.png) -See this [wiki page](https://github.com/jeromerobert/pdfarranger/wiki/Binary-packages). +## Downloads + +| [Microsoft® Windows®](https://github.com/jeromerobert/pdfarranger/releases) | Download on Flathub | [More…](https://github.com/jeromerobert/pdfarranger/wiki/Binary-packages) | +| --------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | + +### Linux packages + +[![Linux packages](https://repology.org/badge/vertical-allrepos/pdfarranger.svg?columns=4)](https://repology.org/project/pdfarranger/versions) ## Install from source -*pdfarranger* require [pikepdf](https://github.com/pikepdf/pikepdf) >= 1.7.0. Older versions may work -but are not supported. +*pdfarranger* requires [pikepdf](https://github.com/pikepdf/pikepdf) >= 1.7.0. Older versions may work +but are not supported. [pikepdf](https://github.com/pikepdf/pikepdf) >= 1.15.1 is highly recommended. **On Debian based distributions** @@ -48,13 +56,49 @@ pip3 install --user --upgrade https://github.com/jeromerobert/pdfarranger/zipball/master ``` -## For developers +In addition, *pdfarranger* supports image file import if [img2pdf](https://gitlab.mister-muffin.de/josch/img2pdf) is installed. -From a git clone: +## For developers ``` +git clone https://github.com/jeromerobert/pdfarranger.git +cd pdfarranger +pip install -e . ./setup.py build python3 -m pdfarranger ``` For Windows see [Win32.md](Win32.md). + +## For translators + +- Download the master branch (see [For developers](#for-developers)) + +- Run `po/genpot.sh`. The `pot` is an automatically generated file and as such + should not be in the repository. It is to make life of some translators + easier, but it may be often not synchronized with the source code. If you can + regenerate it before adding or updating a translation, then do it. + +- Translations are in the following files: + - [`po`](po)`/*.po` + - [data/com.github.jeromerobert.pdfarranger.metainfo.xml](data/com.github.jeromerobert.pdfarranger.metainfo.xml) + - [data/com.github.jeromerobert.pdfarranger.desktop](data/com.github.jeromerobert.pdfarranger.desktop) + +- For mnemonics accelerators (letters preceded by an underscore) try to follow + those rules by priority order: + - be consistent with other GTK/GNOME software + - pick a unique letter **within that given menu** if possible + - pick the same letter as the original string if available + - pick a strong letter (e.g. in "Search and replace" rather pick `s`, `r` or `p` than `a`) + +- If possible test your translation to see it in context (see [For developers](#for-developers)) + +- You may test different languages with `LANG=xx_YY python3 -m pdfarranger` + +- Do not include `pdfarranger.pot` (or any `*.po` file which was just + automatically regenerated) in your pull request. Submit only the translations + you actually updated or added. + +- If you don’t want or can’t use the developers tooling (`git`, + `po/genpot.sh`, `python`, …) you can edit, download or upload the `*.po` + files from the GitHub web pages. diff -Nru pdfarranger-1.4.2/setup.py pdfarranger-1.6.2/setup.py --- pdfarranger-1.4.2/setup.py 2020-03-14 20:55:12.000000000 +0000 +++ pdfarranger-1.6.2/setup.py 2020-08-01 09:52:15.000000000 +0000 @@ -25,15 +25,15 @@ build_i18n, clean_i18n, build_extra, build_icons) data_files = [ - ('share/applications', ['data/pdfarranger.desktop']), - ('share/pdfarranger', ['data/pdfarranger.ui']), + ('share/applications', ['data/com.github.jeromerobert.pdfarranger.desktop']), + ('share/pdfarranger', ['data/pdfarranger.ui', 'data/menu.ui']), ('share/man/man1', ['doc/pdfarranger.1']), - ('share/metainfo', ['data/pdfarranger.appdata.xml']), + ('share/metainfo', ['data/com.github.jeromerobert.pdfarranger.metainfo.xml']), ] setup( name='pdfarranger', - version='1.4.2', + version='1.6.2', author='Jerome Robert', author_email='jeromerobert@gmx.com', description='A simple application for PDF Merging, Rearranging, and Splitting', @@ -51,5 +51,8 @@ entry_points={ 'console_scripts': ['pdfarranger=pdfarranger.pdfarranger:main'] }, - install_requires=['pikepdf'], + install_requires=['pikepdf>=1.7.0'], + extras_require={ + 'image': ['img2pdf>=0.3.4'], + }, ) diff -Nru pdfarranger-1.4.2/setup_win32.py pdfarranger-1.6.2/setup_win32.py --- pdfarranger-1.4.2/setup_win32.py 2020-03-14 20:55:12.000000000 +0000 +++ pdfarranger-1.6.2/setup_win32.py 2020-08-01 09:52:15.000000000 +0000 @@ -1,3 +1,5 @@ +VERSION='1.6.2' + from cx_Freeze import setup, Executable import os import sys @@ -7,6 +9,7 @@ include_files = [ ('data/pdfarranger.ui', 'share/pdfarranger/pdfarranger.ui'), + ('data/menu.ui', 'share/pdfarranger/menu.ui'), ('data/icons/hicolor/scalable', 'share/icons/hicolor/scalable'), ('build/mo', 'share/locale'), ] @@ -40,13 +43,26 @@ 'places/user-home', 'actions/bookmark-new', 'actions/document-open-recent', + 'actions/folder-new', 'actions/list-add', 'actions/list-remove', 'actions/media-eject', + 'actions/document-save', + 'actions/document-save-as', + 'actions/insert-image', + 'actions/object-rotate-left', + 'actions/object-rotate-right', + 'actions/open-menu', + 'actions/zoom-in', + 'actions/zoom-out', 'ui/pan-down', 'ui/pan-end', 'ui/pan-start', 'ui/pan-up', + 'ui/window-close', + 'ui/window-maximize', + 'ui/window-minimize', + 'ui/window-restore', 'devices/drive-harddisk', 'devices/drive-optical', 'places/folder-documents', @@ -56,13 +72,9 @@ 'places/folder-videos', 'places/user-trash', ] + for i in icons: addfile(os.path.join('share/icons/Adwaita/16x16/', i + '-symbolic.symbolic.png')) - icons24 = ['document-save-as', 'edit-delete', 'list-add', 'object-rotate-left', - 'object-rotate-right', 'zoom-in', 'zoom-out'] - for i in icons24: - addfile(os.path.join('share/icons/Adwaita/24x24/legacy', i + '.png')) - required_dlls = [ 'gtk-3-0', @@ -108,12 +120,18 @@ build_options = dict( packages=['gi', 'packaging', 'pikepdf'], - excludes=['tkinter', 'test', 'distutils'], + excludes=['tkinter', 'test'], include_files=include_files, ) + +def get_target_name(suffix): + return 'pdfarranger-{}-windows-{}'.format(VERSION, suffix) + + msi_options = dict( - initial_target_dir=os.environ['ProgramW6432'] + '\\pdfarranger' + target_name=get_target_name('installer.msi'), + upgrade_code='{ab1752a6-575c-42e1-a261-b85cb8a6b524}' ) @@ -135,13 +153,13 @@ build_exe.build_exe = os.path.join(build_base, fullname) build_exe.run() dist_dir = self.get_finalized_command('bdist').dist_dir - archname = os.path.join(dist_dir, fullname + '-mingw') + archname = os.path.join(dist_dir, get_target_name('portable')) self.make_archive(archname, 'zip', root_dir=build_base, base_dir=fullname) shutil.rmtree(build_exe.build_exe) setup(name='pdfarranger', - version='1.4.2', + version=VERSION, description='A simple application for PDF Merging, Rearranging, and Splitting', options=dict(build_exe=build_options, bdist_msi=msi_options), cmdclass={'bdist_zip': bdist_zip}, diff -Nru pdfarranger-1.4.2/TODO pdfarranger-1.6.2/TODO --- pdfarranger-1.4.2/TODO 2020-03-14 20:55:12.000000000 +0000 +++ pdfarranger-1.6.2/TODO 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ -This file is part of PDF-Shuffler which is released under the GNU General Public -License version 3 or later. -See file COPYING or go to for full license details. - - -TODO list for PDF-Shuffler --------------------------- - -* Add crop inspection mode. - -* Add program configuration dialog. - -* Add an export image option. - -* Add an import image option. - -* Add support for encrypted files. - -* Lazy thumbnails rendering. - -* Support autoscroll during navigation with the keyboard arrows. - diff -Nru pdfarranger-1.4.2/Win32.md pdfarranger-1.6.2/Win32.md --- pdfarranger-1.4.2/Win32.md 2020-03-14 20:55:12.000000000 +0000 +++ pdfarranger-1.6.2/Win32.md 2020-08-01 09:52:15.000000000 +0000 @@ -18,16 +18,17 @@ ``` pacman -S mingw-w64-x86_64-gtk3 mingw-w64-x86_64-python-gobject \ - mingw-w64-x86_64-python-cairo mingw-w64-x86_64-poppler \ + mingw-w64-x86_64-python-cairo mingw-w64-x86_64-poppler mingw-w64-x86_64-gcc \ mingw-w64-x86_64-python-lxml mingw-w64-x86_64-qpdf mingw-w64-x86_64-pybind11 \ - mingw-w64-x86_64-gettext mingw-w64-x86_64-gnutls \ - mingw-w64-x86_64-python-pip python3-distutils-extra git + mingw-w64-x86_64-gettext mingw-w64-x86_64-gnutls mingw-w64-x86_64-python-pillow \ + mingw-w64-x86_64-python-pip git python-pip intltool ``` and ``` -/mingw64/bin/python3 -m pip install --user pikepdf https://github.com/jeromerobert/cx_Freeze/zipball/pdfarranger +pip install --user https://launchpad.net/python-distutils-extra/trunk/2.39/+download/python-distutils-extra-2.39.tar.gz +/mingw64/bin/python3 -m pip install --user keyboard img2pdf pikepdf https://github.com/jeromerobert/cx_Freeze/zipball/pdfarranger ``` Get the pdfarranger sources from a MSYS2 shell: @@ -57,3 +58,13 @@ ``` unset $(env |grep ^XDG_ | cut -d= -f1) ``` + +## Docker + +``` +cd pdfarranger +./setup.py build +alias pythonwin32="docker run -v $PWD:/pdfarranger -w /pdfarranger -it jeromerobert/wine-mingw64 wine cmd /c z:/mingw64/bin/python" +pythonwin32 setup_win32.py bdist_msi +pythonwin32 setup_win32.py bdist_zip +```