]> gitweb.hamatoma.de Git - reqt/commitdiff
rebackgui speaks German
authorhama <hama@siduction.net>
Thu, 18 Feb 2016 23:22:59 +0000 (00:22 +0100)
committerhama <hama@siduction.net>
Thu, 18 Feb 2016 23:22:59 +0000 (00:22 +0100)
appl/rebackgui/main.cpp
appl/rebackgui/mainwindow.cpp
appl/rebackgui/mainwindow.hpp
appl/rebackgui/rebackgui.de.qm [new file with mode: 0644]
appl/rebackgui/rebackgui.de.ts [new file with mode: 0644]
appl/rebackgui/rebackgui_de.ts [deleted file]
gui/ReGuiApplication.cpp
gui/ReGuiApplication.hpp
gui/regui.hpp

index 0d45da37c32ca7f5859ce165dcbf3e544f18f72a..bfa513e66026d7d5275b7f6460eff29b6ab7f805 100644 (file)
@@ -18,7 +18,7 @@ int main(int argc, char *argv[]){
    g_argv = argv;
    QString homeDir = argc > 1 ? argv[1] : "";
    QApplication a(argc, argv);
-   MainWindow w(homeDir);
+   MainWindow w(a, homeDir);
        w.show();
        return a.exec();
 }
index 2ab04606bdde49cef17d0a913d0cded620412efb..00c035de8b96e982b369d22e323593ede5023a83 100644 (file)
@@ -21,8 +21,9 @@ const QString VERSION("2016.02.17");
  * @param homeDir      the home directory. If "": usage of the user's homedir
  * @param parent       QT parent or NULL
  */
-MainWindow::MainWindow(const QString& homeDir, QWidget *parent) :
-       ReGuiApplication("rebackupgui", homeDir, 2, 100100100, parent),
+MainWindow::MainWindow(QApplication& application, const QString& homeDir,
+                                          QWidget *parent) :
+       ReGuiApplication(application, "rebackupgui", homeDir, 2, 100100100, "de", parent),
        ReGuiValidator(),
        ui(new Ui::MainWindow),
        m_configuration(this),
index b043ff4e7ac05340347a4d4217a50d60ba14b94a..4560a55909dedf1635522dbc12239b80baaf66e7 100644 (file)
@@ -23,7 +23,8 @@ class MainWindow : public ReGuiApplication, public ReGuiValidator
        Q_OBJECT
 
 public:
-       explicit MainWindow(const QString& homeDir, QWidget *parent = 0);
+       explicit MainWindow(QApplication& application, const QString& homeDir,
+               QWidget *parent = 0);
        ~MainWindow();
 public:
        void addToFileList(const QString info);
diff --git a/appl/rebackgui/rebackgui.de.qm b/appl/rebackgui/rebackgui.de.qm
new file mode 100644 (file)
index 0000000..278cbd6
Binary files /dev/null and b/appl/rebackgui/rebackgui.de.qm differ
diff --git a/appl/rebackgui/rebackgui.de.ts b/appl/rebackgui/rebackgui.de.ts
new file mode 100644 (file)
index 0000000..7a3de2e
--- /dev/null
@@ -0,0 +1,614 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="de_DE">
+<context>
+    <name>AboutDialog</name>
+    <message>
+        <location filename="aboutdialog.ui" line="14"/>
+        <source>Dialog</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="aboutdialog.ui" line="32"/>
+        <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Droid Sans&apos;; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; font-weight:600;&quot;&gt;ReBackupGui&lt;/span&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt; for backup of directories to external media.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;This is a program of the project&lt;/span&gt;&lt;/p&gt;
+&lt;p align=&quot;center&quot; style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; font-weight:600;&quot;&gt;Re&lt;/span&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;al &lt;/span&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; font-weight:600;&quot;&gt;Pub&lt;/span&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;lic &lt;/span&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; font-weight:600;&quot;&gt;Lib&lt;/span&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;rary (RePubLib)&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;Sources are public domain and available under&lt;/span&gt;&lt;/p&gt;
+&lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a href=&quot;https://github.com/republib&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; text-decoration: underline; color:#0000ff;&quot;&gt;https://github.com/republib&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt; &lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;Implemented in QT (C++) 5.x&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;Icons: Mark James, &lt;/span&gt;&lt;a href=&quot;http://famfamfam.com&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; text-decoration: underline; color:#0000ff;&quot;&gt;http://famfamfam.com&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt; &lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Droid Sans&apos;; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; font-weight:600;&quot;&gt;ReBackupGui&lt;/span&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt; kann Dateisicherungen auf externen Medien durchführen.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;This is a program of the project&lt;/span&gt;&lt;/p&gt;
+&lt;p align=&quot;center&quot; style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; font-weight:600;&quot;&gt;Re&lt;/span&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;al &lt;/span&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; font-weight:600;&quot;&gt;Pub&lt;/span&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;lic &lt;/span&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; font-weight:600;&quot;&gt;Lib&lt;/span&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;rary (RePubLib)&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;Der Quelltext ist Public Domain und unter&lt;/span&gt;&lt;/p&gt;
+&lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a href=&quot;https://github.com/republib&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; text-decoration: underline; color:#0000ff;&quot;&gt;https://github.com/republib&lt;/span&gt;&lt;/a&gt; verf&amp;uuml;gbar.&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt; &lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;Implementiert in QT (C++) 5.x&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;Icons: Mark James, &lt;/span&gt;&lt;a href=&quot;http://famfamfam.com&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; text-decoration: underline; color:#0000ff;&quot;&gt;http://famfamfam.com&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt; &lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+    </message>
+    <message>
+        <location filename="aboutdialog.ui" line="64"/>
+        <source>Version:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="aboutdialog.ui" line="71"/>
+        <source>2015.05.00</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="aboutdialog.ui" line="91"/>
+        <source>&amp;OK</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>BackupTask</name>
+    <message>
+        <location filename="BackupEngine.cpp" line="154"/>
+        <source>cannot remove file (for making a directory (%1): %2</source>
+        <translation type="unfinished">kann Datei nicht löschen, um ein Verzeichnis anzulegen (%1): %2</translation>
+    </message>
+    <message>
+        <location filename="BackupEngine.cpp" line="158"/>
+        <source>cannot make directory (%1): %2</source>
+        <translation type="unfinished">kann Verzeichnis nicht anlegen (%1): %2</translation>
+    </message>
+    <message>
+        <location filename="BackupEngine.cpp" line="222"/>
+        <source>%1 of %2 (%3 of %4) %5 MB/sec runtime: %6</source>
+        <translation type="unfinished">%1 von %2 (%3 von %4) %5 MB/sec Laufzeit: %6</translation>
+    </message>
+    <message>
+        <location filename="BackupEngine.cpp" line="231"/>
+        <source>backup complete after %1. Errors: %2</source>
+        <translation type="unfinished">Sicherung nach %1 fertiggestellt Fehler: %2</translation>
+    </message>
+</context>
+<context>
+    <name>ChecksumOfSourceTask</name>
+    <message>
+        <location filename="BackupEngine.cpp" line="347"/>
+        <source>Building source checksum complete after %1. Processed: %2</source>
+        <translation type="unfinished">Erzeugen der Prüfsummen für die Quelldateien fertig nach %1. Bearbeitet: %2</translation>
+    </message>
+</context>
+<context>
+    <name>ChecksumOfTargetTask</name>
+    <message>
+        <location filename="BackupEngine.cpp" line="425"/>
+        <source>%1 of %2 (%3 of %4) %5 MB/sec runtime: %6</source>
+        <translation type="unfinished">%1 von %2 (%3 von %4) %5 MB/sec Laufzeit: %6</translation>
+    </message>
+    <message>
+        <location filename="BackupEngine.cpp" line="436"/>
+        <source>Building target checksums complete after %1. Processed: %2 Errors: %3</source>
+        <translation type="unfinished">Erzeugen der Prüfsummen für die Zieldateien fertig nach %1. Bearbeitet: %2 Fehler: %3</translation>
+    </message>
+</context>
+<context>
+    <name>CleanTask</name>
+    <message>
+        <location filename="BackupEngine.cpp" line="548"/>
+        <source>%1 of %2 files  %3 files/sec runtime: %6</source>
+        <translation type="unfinished">%1 von %2 Dateien  %3 Dateien/sec Laufzeit: %6</translation>
+    </message>
+    <message>
+        <location filename="BackupEngine.cpp" line="556"/>
+        <source>clean complete after %1. Errors: %2</source>
+        <translation type="unfinished">Bereinigen fertig nach %1. Fehler: %2</translation>
+    </message>
+</context>
+<context>
+    <name>MainWindow</name>
+    <message>
+        <location filename="mainwindow.ui" line="14"/>
+        <source>RePubLib rebackgui</source>
+        <translation type="unfinished">RePubLib rebackgui</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="25"/>
+        <location filename="mainwindow.ui" line="804"/>
+        <source>Action</source>
+        <translation type="unfinished">Aktion</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="51"/>
+        <source>Active</source>
+        <translation type="unfinished">Aktiv</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="56"/>
+        <location filename="mainwindow.ui" line="389"/>
+        <source>Name</source>
+        <translation type="unfinished">Name</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="61"/>
+        <location filename="mainwindow.ui" line="394"/>
+        <source>Target</source>
+        <translation type="unfinished">Ziel</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="66"/>
+        <location filename="mainwindow.ui" line="399"/>
+        <source>Last backup</source>
+        <translation type="unfinished">Letzte Sicherung</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="71"/>
+        <location filename="mainwindow.ui" line="404"/>
+        <source>Source(s)</source>
+        <translation type="unfinished">Quelle(n)</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="87"/>
+        <source>Options:</source>
+        <translation type="unfinished">Optionen:</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="100"/>
+        <source>Max. list length:</source>
+        <translation type="unfinished">Max. Listenlänge:</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="113"/>
+        <source>Max. length of the file list / error list. 0: unlimited</source>
+        <translation type="unfinished">Max. Länge der Datei-/Fehlerliste. 0: unbeschränkt</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="119"/>
+        <source>100</source>
+        <translation type="unfinished">100</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="138"/>
+        <source>Starting a task cleans filelist and errorlist</source>
+        <translation type="unfinished">Start löscht Datei- und Fehlerliste</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="141"/>
+        <source>Start cleans</source>
+        <translation type="unfinished">Start löscht</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="170"/>
+        <source>Verbose level</source>
+        <translation type="unfinished">Ausgabenstufe</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="177"/>
+        <source>Quiet</source>
+        <translation type="unfinished">Still</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="182"/>
+        <source>Summary</source>
+        <translation type="unfinished">Zusammenfassung</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="187"/>
+        <source>File log</source>
+        <translation type="unfinished">Dateiliste</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="192"/>
+        <source>Chatty</source>
+        <translation type="unfinished">Geschwätzig</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="210"/>
+        <source>Start</source>
+        <translation type="unfinished">Start</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="226"/>
+        <location filename="mainwindow.ui" line="847"/>
+        <source>Stop</source>
+        <translation type="unfinished">Beenden</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="252"/>
+        <location filename="mainwindow.ui" line="860"/>
+        <source>Calculates checksums for source and target files and reports differences</source>
+        <translation type="unfinished">Berechnet Prüfsummen für Quell- und Zieldateien und meldet Unterschiede</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="255"/>
+        <location filename="mainwindow.ui" line="857"/>
+        <source>Checksums</source>
+        <translation type="unfinished">Prüfsummen</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="268"/>
+        <source>Detects files/dirs not found in the source directory. Old files will be remove, the other will be moved to the shadow directory</source>
+        <translation type="unfinished">Entdeckt Dateien/Verzeichnisse, die nicht im Quellverzeichnis stehen. Alte Dateien werden gelöscht, die anderen werden ins Schattenverzeichnis verschoben</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="271"/>
+        <location filename="mainwindow.ui" line="865"/>
+        <source>Clean</source>
+        <translatorcomment>Protokoll:</translatorcomment>
+        <translation type="unfinished">Bereinigen</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="292"/>
+        <source>Log:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="305"/>
+        <location filename="mainwindow.ui" line="692"/>
+        <location filename="mainwindow.ui" line="745"/>
+        <source>Clear</source>
+        <translation type="unfinished">Löschen</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="339"/>
+        <source>Configuration</source>
+        <translation type="unfinished">Konfiguration</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="354"/>
+        <source>Backup elements:</source>
+        <translation type="unfinished">Sicherungselemente:</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="420"/>
+        <source>Add item</source>
+        <translation type="unfinished">Element hinzufügen</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="433"/>
+        <source>Delete item</source>
+        <translation type="unfinished">Element löschen</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="459"/>
+        <source>Save config</source>
+        <translation type="unfinished">Konfiguration speichern</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="480"/>
+        <source>Name:</source>
+        <translation type="unfinished">Name:</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="509"/>
+        <source>Update</source>
+        <translation type="unfinished">Aktualisieren</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="526"/>
+        <source>Target:</source>
+        <translation type="unfinished">Ziel:</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="542"/>
+        <source>Select target</source>
+        <translation type="unfinished">Wähle Ziel</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="559"/>
+        <source>File patterns:</source>
+        <translation type="unfinished">Dateinamensmuster:</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="566"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;A comma (&apos;,&apos;) separated list of filename patterns. A prefix of &apos;-&apos;  means inversion: if a filename matches it will not be found.&lt;/p&gt;&lt;p&gt;Example: *.txt,*.odt&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Eine Liste von Dateinamensmustern, getrennt mit Komma (&apos;,&apos;) . Ein Präfix &apos;-&apos;  bedeuted Umkehrung: Wenn ein Dateiname passt, wird er nicht gefunden.&lt;/p&gt;&lt;p&gt;Beispiel: *.txt,*.odt&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="582"/>
+        <source>Dir patterns:</source>
+        <translation type="unfinished">Verzeichnismuster:</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="589"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;A comma (&apos;,&apos;) separated list of directory name patterns. A prefix of &apos;-&apos;  means inversion: if a directory name matches it will not be found.&lt;/p&gt;&lt;p&gt;Example: *,-.git,-*cache*&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Eine Liste von Verzeichnisnamensmustern, getrennt mit Komma (&apos;,&apos;) . Ein Präfix &apos;-&apos;  bedeuted Umkehrung: Wenn ein Verzeichnisname passt, wird er nicht gefunden.&lt;/p&gt;&lt;p&gt;Beispiel: *,-.git,-*cache*&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="609"/>
+        <source>Source dirs:</source>
+        <translation type="unfinished">Quelldateien:</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="635"/>
+        <source>Add source</source>
+        <translation type="unfinished">Quelle hinzufügen</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="648"/>
+        <source>Delete source</source>
+        <translation type="unfinished">Quelle löschen</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="665"/>
+        <source>Files</source>
+        <translation type="unfinished">Dateien</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="679"/>
+        <source>File log:</source>
+        <translation type="unfinished">Dateiliste:</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="718"/>
+        <source>Errors</source>
+        <translation type="unfinished">Fehler:</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="732"/>
+        <source>Error log:</source>
+        <translation type="unfinished">Fehlerprotokoll:</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="784"/>
+        <source>File</source>
+        <translatorcomment>Bearbeiten</translatorcomment>
+        <translation type="unfinished">Datei</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="793"/>
+        <source>Edit</source>
+        <translation type="unfinished">Bearbeiten</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="798"/>
+        <source>Help</source>
+        <translation type="unfinished">Hilfe</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="827"/>
+        <source>Load Config</source>
+        <translation type="unfinished">Konfiguration laden</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="832"/>
+        <source>Save Config</source>
+        <translation type="unfinished">Konfiguration sichern</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="837"/>
+        <source>Exit</source>
+        <translation type="unfinished">Beenden</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="842"/>
+        <source>Start backup</source>
+        <translation type="unfinished">Sicherung starten</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.ui" line="852"/>
+        <source>About</source>
+        <translation type="unfinished">Über</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="298"/>
+        <location filename="mainwindow.cpp" line="355"/>
+        <location filename="mainwindow.cpp" line="457"/>
+        <source>no backup item selected</source>
+        <translation type="unfinished">Kein Sicherungselement ausgewählt</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="303"/>
+        <location filename="mainwindow.cpp" line="360"/>
+        <location filename="mainwindow.cpp" line="462"/>
+        <source>Target not available</source>
+        <translation type="unfinished">Ziel nicht vorhanden</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="329"/>
+        <source>Select Source Directory</source>
+        <translation type="unfinished">Quellverzeichnis auswählen</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="414"/>
+        <source>Select Target Directory</source>
+        <translation type="unfinished">Zielverzeichnis auswählen</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="420"/>
+        <source>target initialized with %1</source>
+        <translation type="unfinished">Ziel mit %1 vorbelegt</translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <location filename="BackupEngine.cpp" line="281"/>
+        <source>cannot build checksum: %1</source>
+        <translation type="unfinished">Kann Prüfsumme nicht ermitteln: %1</translation>
+    </message>
+    <message>
+        <location filename="BackupEngine.cpp" line="407"/>
+        <source>checksum differs: </source>
+        <translation type="unfinished">Prüfsummen unterscheiden sich:</translation>
+    </message>
+    <message>
+        <location filename="BackupEngine.cpp" line="501"/>
+        <source>cannot delete (%1): %2</source>
+        <translation type="unfinished">Kann nicht löschen (%1): %2</translation>
+    </message>
+    <message>
+        <location filename="BackupEngine.cpp" line="510"/>
+        <source>cannot remove directory (%1): %2</source>
+        <translation type="unfinished">Kann Verzeichnis nicht erstellen (%1): %2</translation>
+    </message>
+    <message>
+        <location filename="BackupEngine.cpp" line="524"/>
+        <source>cannot create the shadow directory: %1</source>
+        <translation type="unfinished">Kann das Schattenverzeichnis nicht erstellen (%1): %2</translation>
+    </message>
+    <message>
+        <location filename="BackupEngine.cpp" line="530"/>
+        <source>cannot delete shadow file (%1): %2</source>
+        <translation type="unfinished">Kann Schattendatei nicht löschen (%1): %2</translation>
+    </message>
+    <message>
+        <location filename="BackupEngine.cpp" line="534"/>
+        <source>cannot rename target file (%1): %2 -&gt; %3</source>
+        <translation type="unfinished">Kann Zieldatei nicht umbenennen (%1): %2 -&gt; %3</translation>
+    </message>
+    <message>
+        <location filename="BackupEngine.cpp" line="904"/>
+        <source>cannot create shadow directory (%1): %2</source>
+        <translation type="unfinished">Kann Schattenverzeichnis nicht erstellen (%1): %2</translation>
+    </message>
+    <message>
+        <location filename="BackupEngine.cpp" line="909"/>
+        <source>cannot move to shadow directory (%1): %2 -&gt; %3</source>
+        <translation type="unfinished">Kann Datei nicht in Schattenverzeichnis verschieben (%1): %2</translation>
+    </message>
+    <message>
+        <location filename="Configuration.cpp" line="68"/>
+        <source>item</source>
+        <translation type="unfinished">Element</translation>
+    </message>
+    <message>
+        <location filename="Configuration.cpp" line="119"/>
+        <location filename="Configuration.cpp" line="206"/>
+        <location filename="../../base/ReFileUtils.cpp" line="181"/>
+        <location filename="../../base/ReFileUtils.cpp" line="185"/>
+        <source>cannot open (%1): %2</source>
+        <translation type="unfinished">Kann nicht öffnen (%1): %2</translation>
+    </message>
+    <message>
+        <location filename="Configuration.cpp" line="151"/>
+        <source>unknown format in %1-%2: %3</source>
+        <translation type="unfinished">Unbekanntes Format in %1-%2: %3</translation>
+    </message>
+    <message>
+        <location filename="Configuration.cpp" line="227"/>
+        <source>cannot write (%1): %2</source>
+        <translation type="unfinished">Kann nicht schreiben (%1): %2</translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="196"/>
+        <source>Search started...</source>
+        <translation type="unfinished">Suche gestartet...</translation>
+    </message>
+    <message>
+        <location filename="../../base/ReFileUtils.cpp" line="177"/>
+        <source>not found: %1</source>
+        <translation type="unfinished">Nicht gefunden: %1</translation>
+    </message>
+    <message>
+        <location filename="../../base/ReFileUtils.cpp" line="202"/>
+        <source>cannot write (%1): $2 [%3/%4]</source>
+        <translation type="unfinished">Kann nicht schreiben(%1): %2 [%3/%4]</translation>
+    </message>
+    <message>
+        <location filename="../../base/ReFileUtils.cpp" line="209"/>
+        <source>file can be read only partitionally: %1 [%2/%3]</source>
+        <translation type="unfinished">Datei kann nur teilweise gelesen werden: %1 [%2/%3]</translation>
+    </message>
+    <message>
+        <location filename="../../base/ReFileUtils.cpp" line="214"/>
+        <source>cannot set date/time (%1): %2</source>
+        <translation type="unfinished">Kann Datum/Zeit nicht setzen (%1): %2</translation>
+    </message>
+    <message>
+        <location filename="../../base/ReFileUtils.cpp" line="217"/>
+        <source>cannot set permissions (%1): %2</source>
+        <translation type="unfinished">Kann Dateirechte nicht setzen (%1): %2</translation>
+    </message>
+    <message>
+        <location filename="../../base/ReFileUtils.cpp" line="491"/>
+        <source>can&apos;t create directory (%1): %2</source>
+        <translation type="unfinished">Kann Verzeichnis nicht erzeugen (%1): %2</translation>
+    </message>
+    <message>
+        <location filename="../../base/ReFileUtils.cpp" line="497"/>
+        <source>can&apos;t create directory (is a file): </source>
+        <translation type="unfinished">Kann Verzeichnis nicht erzeugen (ist eine Datei): </translation>
+    </message>
+    <message>
+        <location filename="../../base/ReQStringUtils.cpp" line="472"/>
+        <source>unknown placeholder: </source>
+        <translation type="unfinished">Unbekannter Platzhalter:</translation>
+    </message>
+    <message>
+        <location filename="../../base/ReQStringUtils.cpp" line="555"/>
+        <source>%1 of %2 (%3 %)</source>
+        <translation type="unfinished">%1 von %2 (%3 %)</translation>
+    </message>
+    <message>
+        <location filename="../../base/ReQStringUtils.cpp" line="715"/>
+        <source>more than 2 power operators, e.g. &apos;2^3^4&apos;</source>
+        <translation type="unfinished">Mehr als 2 Potenzoperatoren, z.B. &apos;2^3^4&apos;</translation>
+    </message>
+    <message>
+        <location filename="../../base/ReQStringUtils.cpp" line="728"/>
+        <source>number overflow while power operation</source>
+        <translation type="unfinished">Zahlüberlauf während Potenzoperation</translation>
+    </message>
+    <message>
+        <location filename="../../base/ReQStringUtils.cpp" line="758"/>
+        <source>number expected: </source>
+        <translation type="unfinished">Zahl erwartet: </translation>
+    </message>
+    <message>
+        <location filename="../../base/ReQStringUtils.cpp" line="768"/>
+        <source>missing &apos;:&apos; in unit definition, e.g. &apos;k:1000&apos;: </source>
+        <translation type="unfinished">&apos;;&apos; fehlt in der Einheitendefinition, z.B. &apos;k:1000&apos;: </translation>
+    </message>
+    <message>
+        <location filename="../../base/ReQStringUtils.cpp" line="773"/>
+        <source>too many  &apos;:&apos; in unit definition: </source>
+        <translation type="unfinished">Zu viele &apos;:&apos; in der Einheitsdefinition: </translation>
+    </message>
+    <message>
+        <location filename="../../base/ReQStringUtils.cpp" line="779"/>
+        <source>not a number: </source>
+        <translation type="unfinished">Keine Zahl: </translation>
+    </message>
+    <message>
+        <location filename="../../base/ReQStringUtils.cpp" line="788"/>
+        <source>unknown unit &apos;$1&apos;. Allowed: </source>
+        <translation type="unfinished">Unbekannte Einheit &apos;%1&apos;. Erlaubt: </translation>
+    </message>
+    <message>
+        <location filename="../../base/ReQStringUtils.cpp" line="839"/>
+        <source>empty string is not a date/time</source>
+        <translation type="unfinished">Leerer String ist kein Datum bzw. keine Zeit</translation>
+    </message>
+    <message>
+        <location filename="../../gui/ReGuiValidator.cpp" line="73"/>
+        <source>not an integer: </source>
+        <translation type="unfinished">Keine Ganzzahl: </translation>
+    </message>
+</context>
+<context>
+    <name>ReGuiApplication</name>
+    <message>
+        <location filename="../../gui/ReGuiApplication.cpp" line="42"/>
+        <source>Welcome!</source>
+        <translation type="unfinished">Willkommen!</translation>
+    </message>
+</context>
+<context>
+    <name>SearchTargetTask</name>
+    <message>
+        <location filename="BackupEngine.cpp" line="934"/>
+        <source>Search in target finished: to process: %1 with %2 dirs to delete: %3 total: %4 subdirs: %5 runtime: %6</source>
+        <translation type="unfinished">Suche im Ziel bendet: zu behandeln: %1 mit %2 zu löschende Verzeichnisse: %3 gesamt: %4 Unterverz.: %5 Laufzeit: %6</translation>
+    </message>
+</context>
+<context>
+    <name>SearchTask</name>
+    <message>
+        <location filename="BackupEngine.cpp" line="602"/>
+        <source>Search finished: to process: %1 with %2 matching: %3 total: %4 subdirs: %5 runtime: %6</source>
+        <translation type="unfinished">Suche beendet: zu behandeln: %1 mit %2 passend: %3 gesamt: %4 Unterverz: %5 Laufzeit: %6</translation>
+    </message>
+</context>
+</TS>
diff --git a/appl/rebackgui/rebackgui_de.ts b/appl/rebackgui/rebackgui_de.ts
deleted file mode 100644 (file)
index 7a3de2e..0000000
+++ /dev/null
@@ -1,614 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.1" language="de_DE">
-<context>
-    <name>AboutDialog</name>
-    <message>
-        <location filename="aboutdialog.ui" line="14"/>
-        <source>Dialog</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="aboutdialog.ui" line="32"/>
-        <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
-&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
-p, li { white-space: pre-wrap; }
-&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Droid Sans&apos;; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; font-weight:600;&quot;&gt;ReBackupGui&lt;/span&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt; for backup of directories to external media.&lt;/span&gt;&lt;/p&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;This is a program of the project&lt;/span&gt;&lt;/p&gt;
-&lt;p align=&quot;center&quot; style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; font-weight:600;&quot;&gt;Re&lt;/span&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;al &lt;/span&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; font-weight:600;&quot;&gt;Pub&lt;/span&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;lic &lt;/span&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; font-weight:600;&quot;&gt;Lib&lt;/span&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;rary (RePubLib)&lt;/span&gt;&lt;/p&gt;
-&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;Sources are public domain and available under&lt;/span&gt;&lt;/p&gt;
-&lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a href=&quot;https://github.com/republib&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; text-decoration: underline; color:#0000ff;&quot;&gt;https://github.com/republib&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt; &lt;/span&gt;&lt;/p&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;Implemented in QT (C++) 5.x&lt;/span&gt;&lt;/p&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;Icons: Mark James, &lt;/span&gt;&lt;a href=&quot;http://famfamfam.com&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; text-decoration: underline; color:#0000ff;&quot;&gt;http://famfamfam.com&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt; &lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
-        <translation type="unfinished">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
-&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
-p, li { white-space: pre-wrap; }
-&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Droid Sans&apos;; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; font-weight:600;&quot;&gt;ReBackupGui&lt;/span&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt; kann Dateisicherungen auf externen Medien durchführen.&lt;/span&gt;&lt;/p&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;This is a program of the project&lt;/span&gt;&lt;/p&gt;
-&lt;p align=&quot;center&quot; style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; font-weight:600;&quot;&gt;Re&lt;/span&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;al &lt;/span&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; font-weight:600;&quot;&gt;Pub&lt;/span&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;lic &lt;/span&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; font-weight:600;&quot;&gt;Lib&lt;/span&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;rary (RePubLib)&lt;/span&gt;&lt;/p&gt;
-&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;Der Quelltext ist Public Domain und unter&lt;/span&gt;&lt;/p&gt;
-&lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a href=&quot;https://github.com/republib&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; text-decoration: underline; color:#0000ff;&quot;&gt;https://github.com/republib&lt;/span&gt;&lt;/a&gt; verf&amp;uuml;gbar.&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt; &lt;/span&gt;&lt;/p&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;Implementiert in QT (C++) 5.x&lt;/span&gt;&lt;/p&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;Icons: Mark James, &lt;/span&gt;&lt;a href=&quot;http://famfamfam.com&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; text-decoration: underline; color:#0000ff;&quot;&gt;http://famfamfam.com&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt; &lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
-    </message>
-    <message>
-        <location filename="aboutdialog.ui" line="64"/>
-        <source>Version:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="aboutdialog.ui" line="71"/>
-        <source>2015.05.00</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="aboutdialog.ui" line="91"/>
-        <source>&amp;OK</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>BackupTask</name>
-    <message>
-        <location filename="BackupEngine.cpp" line="154"/>
-        <source>cannot remove file (for making a directory (%1): %2</source>
-        <translation type="unfinished">kann Datei nicht löschen, um ein Verzeichnis anzulegen (%1): %2</translation>
-    </message>
-    <message>
-        <location filename="BackupEngine.cpp" line="158"/>
-        <source>cannot make directory (%1): %2</source>
-        <translation type="unfinished">kann Verzeichnis nicht anlegen (%1): %2</translation>
-    </message>
-    <message>
-        <location filename="BackupEngine.cpp" line="222"/>
-        <source>%1 of %2 (%3 of %4) %5 MB/sec runtime: %6</source>
-        <translation type="unfinished">%1 von %2 (%3 von %4) %5 MB/sec Laufzeit: %6</translation>
-    </message>
-    <message>
-        <location filename="BackupEngine.cpp" line="231"/>
-        <source>backup complete after %1. Errors: %2</source>
-        <translation type="unfinished">Sicherung nach %1 fertiggestellt Fehler: %2</translation>
-    </message>
-</context>
-<context>
-    <name>ChecksumOfSourceTask</name>
-    <message>
-        <location filename="BackupEngine.cpp" line="347"/>
-        <source>Building source checksum complete after %1. Processed: %2</source>
-        <translation type="unfinished">Erzeugen der Prüfsummen für die Quelldateien fertig nach %1. Bearbeitet: %2</translation>
-    </message>
-</context>
-<context>
-    <name>ChecksumOfTargetTask</name>
-    <message>
-        <location filename="BackupEngine.cpp" line="425"/>
-        <source>%1 of %2 (%3 of %4) %5 MB/sec runtime: %6</source>
-        <translation type="unfinished">%1 von %2 (%3 von %4) %5 MB/sec Laufzeit: %6</translation>
-    </message>
-    <message>
-        <location filename="BackupEngine.cpp" line="436"/>
-        <source>Building target checksums complete after %1. Processed: %2 Errors: %3</source>
-        <translation type="unfinished">Erzeugen der Prüfsummen für die Zieldateien fertig nach %1. Bearbeitet: %2 Fehler: %3</translation>
-    </message>
-</context>
-<context>
-    <name>CleanTask</name>
-    <message>
-        <location filename="BackupEngine.cpp" line="548"/>
-        <source>%1 of %2 files  %3 files/sec runtime: %6</source>
-        <translation type="unfinished">%1 von %2 Dateien  %3 Dateien/sec Laufzeit: %6</translation>
-    </message>
-    <message>
-        <location filename="BackupEngine.cpp" line="556"/>
-        <source>clean complete after %1. Errors: %2</source>
-        <translation type="unfinished">Bereinigen fertig nach %1. Fehler: %2</translation>
-    </message>
-</context>
-<context>
-    <name>MainWindow</name>
-    <message>
-        <location filename="mainwindow.ui" line="14"/>
-        <source>RePubLib rebackgui</source>
-        <translation type="unfinished">RePubLib rebackgui</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="25"/>
-        <location filename="mainwindow.ui" line="804"/>
-        <source>Action</source>
-        <translation type="unfinished">Aktion</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="51"/>
-        <source>Active</source>
-        <translation type="unfinished">Aktiv</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="56"/>
-        <location filename="mainwindow.ui" line="389"/>
-        <source>Name</source>
-        <translation type="unfinished">Name</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="61"/>
-        <location filename="mainwindow.ui" line="394"/>
-        <source>Target</source>
-        <translation type="unfinished">Ziel</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="66"/>
-        <location filename="mainwindow.ui" line="399"/>
-        <source>Last backup</source>
-        <translation type="unfinished">Letzte Sicherung</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="71"/>
-        <location filename="mainwindow.ui" line="404"/>
-        <source>Source(s)</source>
-        <translation type="unfinished">Quelle(n)</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="87"/>
-        <source>Options:</source>
-        <translation type="unfinished">Optionen:</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="100"/>
-        <source>Max. list length:</source>
-        <translation type="unfinished">Max. Listenlänge:</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="113"/>
-        <source>Max. length of the file list / error list. 0: unlimited</source>
-        <translation type="unfinished">Max. Länge der Datei-/Fehlerliste. 0: unbeschränkt</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="119"/>
-        <source>100</source>
-        <translation type="unfinished">100</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="138"/>
-        <source>Starting a task cleans filelist and errorlist</source>
-        <translation type="unfinished">Start löscht Datei- und Fehlerliste</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="141"/>
-        <source>Start cleans</source>
-        <translation type="unfinished">Start löscht</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="170"/>
-        <source>Verbose level</source>
-        <translation type="unfinished">Ausgabenstufe</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="177"/>
-        <source>Quiet</source>
-        <translation type="unfinished">Still</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="182"/>
-        <source>Summary</source>
-        <translation type="unfinished">Zusammenfassung</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="187"/>
-        <source>File log</source>
-        <translation type="unfinished">Dateiliste</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="192"/>
-        <source>Chatty</source>
-        <translation type="unfinished">Geschwätzig</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="210"/>
-        <source>Start</source>
-        <translation type="unfinished">Start</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="226"/>
-        <location filename="mainwindow.ui" line="847"/>
-        <source>Stop</source>
-        <translation type="unfinished">Beenden</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="252"/>
-        <location filename="mainwindow.ui" line="860"/>
-        <source>Calculates checksums for source and target files and reports differences</source>
-        <translation type="unfinished">Berechnet Prüfsummen für Quell- und Zieldateien und meldet Unterschiede</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="255"/>
-        <location filename="mainwindow.ui" line="857"/>
-        <source>Checksums</source>
-        <translation type="unfinished">Prüfsummen</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="268"/>
-        <source>Detects files/dirs not found in the source directory. Old files will be remove, the other will be moved to the shadow directory</source>
-        <translation type="unfinished">Entdeckt Dateien/Verzeichnisse, die nicht im Quellverzeichnis stehen. Alte Dateien werden gelöscht, die anderen werden ins Schattenverzeichnis verschoben</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="271"/>
-        <location filename="mainwindow.ui" line="865"/>
-        <source>Clean</source>
-        <translatorcomment>Protokoll:</translatorcomment>
-        <translation type="unfinished">Bereinigen</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="292"/>
-        <source>Log:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="305"/>
-        <location filename="mainwindow.ui" line="692"/>
-        <location filename="mainwindow.ui" line="745"/>
-        <source>Clear</source>
-        <translation type="unfinished">Löschen</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="339"/>
-        <source>Configuration</source>
-        <translation type="unfinished">Konfiguration</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="354"/>
-        <source>Backup elements:</source>
-        <translation type="unfinished">Sicherungselemente:</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="420"/>
-        <source>Add item</source>
-        <translation type="unfinished">Element hinzufügen</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="433"/>
-        <source>Delete item</source>
-        <translation type="unfinished">Element löschen</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="459"/>
-        <source>Save config</source>
-        <translation type="unfinished">Konfiguration speichern</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="480"/>
-        <source>Name:</source>
-        <translation type="unfinished">Name:</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="509"/>
-        <source>Update</source>
-        <translation type="unfinished">Aktualisieren</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="526"/>
-        <source>Target:</source>
-        <translation type="unfinished">Ziel:</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="542"/>
-        <source>Select target</source>
-        <translation type="unfinished">Wähle Ziel</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="559"/>
-        <source>File patterns:</source>
-        <translation type="unfinished">Dateinamensmuster:</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="566"/>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;A comma (&apos;,&apos;) separated list of filename patterns. A prefix of &apos;-&apos;  means inversion: if a filename matches it will not be found.&lt;/p&gt;&lt;p&gt;Example: *.txt,*.odt&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
-        <translation type="unfinished">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Eine Liste von Dateinamensmustern, getrennt mit Komma (&apos;,&apos;) . Ein Präfix &apos;-&apos;  bedeuted Umkehrung: Wenn ein Dateiname passt, wird er nicht gefunden.&lt;/p&gt;&lt;p&gt;Beispiel: *.txt,*.odt&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="582"/>
-        <source>Dir patterns:</source>
-        <translation type="unfinished">Verzeichnismuster:</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="589"/>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;A comma (&apos;,&apos;) separated list of directory name patterns. A prefix of &apos;-&apos;  means inversion: if a directory name matches it will not be found.&lt;/p&gt;&lt;p&gt;Example: *,-.git,-*cache*&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
-        <translation type="unfinished">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Eine Liste von Verzeichnisnamensmustern, getrennt mit Komma (&apos;,&apos;) . Ein Präfix &apos;-&apos;  bedeuted Umkehrung: Wenn ein Verzeichnisname passt, wird er nicht gefunden.&lt;/p&gt;&lt;p&gt;Beispiel: *,-.git,-*cache*&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="609"/>
-        <source>Source dirs:</source>
-        <translation type="unfinished">Quelldateien:</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="635"/>
-        <source>Add source</source>
-        <translation type="unfinished">Quelle hinzufügen</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="648"/>
-        <source>Delete source</source>
-        <translation type="unfinished">Quelle löschen</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="665"/>
-        <source>Files</source>
-        <translation type="unfinished">Dateien</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="679"/>
-        <source>File log:</source>
-        <translation type="unfinished">Dateiliste:</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="718"/>
-        <source>Errors</source>
-        <translation type="unfinished">Fehler:</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="732"/>
-        <source>Error log:</source>
-        <translation type="unfinished">Fehlerprotokoll:</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="784"/>
-        <source>File</source>
-        <translatorcomment>Bearbeiten</translatorcomment>
-        <translation type="unfinished">Datei</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="793"/>
-        <source>Edit</source>
-        <translation type="unfinished">Bearbeiten</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="798"/>
-        <source>Help</source>
-        <translation type="unfinished">Hilfe</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="827"/>
-        <source>Load Config</source>
-        <translation type="unfinished">Konfiguration laden</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="832"/>
-        <source>Save Config</source>
-        <translation type="unfinished">Konfiguration sichern</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="837"/>
-        <source>Exit</source>
-        <translation type="unfinished">Beenden</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="842"/>
-        <source>Start backup</source>
-        <translation type="unfinished">Sicherung starten</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.ui" line="852"/>
-        <source>About</source>
-        <translation type="unfinished">Über</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="298"/>
-        <location filename="mainwindow.cpp" line="355"/>
-        <location filename="mainwindow.cpp" line="457"/>
-        <source>no backup item selected</source>
-        <translation type="unfinished">Kein Sicherungselement ausgewählt</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="303"/>
-        <location filename="mainwindow.cpp" line="360"/>
-        <location filename="mainwindow.cpp" line="462"/>
-        <source>Target not available</source>
-        <translation type="unfinished">Ziel nicht vorhanden</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="329"/>
-        <source>Select Source Directory</source>
-        <translation type="unfinished">Quellverzeichnis auswählen</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="414"/>
-        <source>Select Target Directory</source>
-        <translation type="unfinished">Zielverzeichnis auswählen</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="420"/>
-        <source>target initialized with %1</source>
-        <translation type="unfinished">Ziel mit %1 vorbelegt</translation>
-    </message>
-</context>
-<context>
-    <name>QObject</name>
-    <message>
-        <location filename="BackupEngine.cpp" line="281"/>
-        <source>cannot build checksum: %1</source>
-        <translation type="unfinished">Kann Prüfsumme nicht ermitteln: %1</translation>
-    </message>
-    <message>
-        <location filename="BackupEngine.cpp" line="407"/>
-        <source>checksum differs: </source>
-        <translation type="unfinished">Prüfsummen unterscheiden sich:</translation>
-    </message>
-    <message>
-        <location filename="BackupEngine.cpp" line="501"/>
-        <source>cannot delete (%1): %2</source>
-        <translation type="unfinished">Kann nicht löschen (%1): %2</translation>
-    </message>
-    <message>
-        <location filename="BackupEngine.cpp" line="510"/>
-        <source>cannot remove directory (%1): %2</source>
-        <translation type="unfinished">Kann Verzeichnis nicht erstellen (%1): %2</translation>
-    </message>
-    <message>
-        <location filename="BackupEngine.cpp" line="524"/>
-        <source>cannot create the shadow directory: %1</source>
-        <translation type="unfinished">Kann das Schattenverzeichnis nicht erstellen (%1): %2</translation>
-    </message>
-    <message>
-        <location filename="BackupEngine.cpp" line="530"/>
-        <source>cannot delete shadow file (%1): %2</source>
-        <translation type="unfinished">Kann Schattendatei nicht löschen (%1): %2</translation>
-    </message>
-    <message>
-        <location filename="BackupEngine.cpp" line="534"/>
-        <source>cannot rename target file (%1): %2 -&gt; %3</source>
-        <translation type="unfinished">Kann Zieldatei nicht umbenennen (%1): %2 -&gt; %3</translation>
-    </message>
-    <message>
-        <location filename="BackupEngine.cpp" line="904"/>
-        <source>cannot create shadow directory (%1): %2</source>
-        <translation type="unfinished">Kann Schattenverzeichnis nicht erstellen (%1): %2</translation>
-    </message>
-    <message>
-        <location filename="BackupEngine.cpp" line="909"/>
-        <source>cannot move to shadow directory (%1): %2 -&gt; %3</source>
-        <translation type="unfinished">Kann Datei nicht in Schattenverzeichnis verschieben (%1): %2</translation>
-    </message>
-    <message>
-        <location filename="Configuration.cpp" line="68"/>
-        <source>item</source>
-        <translation type="unfinished">Element</translation>
-    </message>
-    <message>
-        <location filename="Configuration.cpp" line="119"/>
-        <location filename="Configuration.cpp" line="206"/>
-        <location filename="../../base/ReFileUtils.cpp" line="181"/>
-        <location filename="../../base/ReFileUtils.cpp" line="185"/>
-        <source>cannot open (%1): %2</source>
-        <translation type="unfinished">Kann nicht öffnen (%1): %2</translation>
-    </message>
-    <message>
-        <location filename="Configuration.cpp" line="151"/>
-        <source>unknown format in %1-%2: %3</source>
-        <translation type="unfinished">Unbekanntes Format in %1-%2: %3</translation>
-    </message>
-    <message>
-        <location filename="Configuration.cpp" line="227"/>
-        <source>cannot write (%1): %2</source>
-        <translation type="unfinished">Kann nicht schreiben (%1): %2</translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="196"/>
-        <source>Search started...</source>
-        <translation type="unfinished">Suche gestartet...</translation>
-    </message>
-    <message>
-        <location filename="../../base/ReFileUtils.cpp" line="177"/>
-        <source>not found: %1</source>
-        <translation type="unfinished">Nicht gefunden: %1</translation>
-    </message>
-    <message>
-        <location filename="../../base/ReFileUtils.cpp" line="202"/>
-        <source>cannot write (%1): $2 [%3/%4]</source>
-        <translation type="unfinished">Kann nicht schreiben(%1): %2 [%3/%4]</translation>
-    </message>
-    <message>
-        <location filename="../../base/ReFileUtils.cpp" line="209"/>
-        <source>file can be read only partitionally: %1 [%2/%3]</source>
-        <translation type="unfinished">Datei kann nur teilweise gelesen werden: %1 [%2/%3]</translation>
-    </message>
-    <message>
-        <location filename="../../base/ReFileUtils.cpp" line="214"/>
-        <source>cannot set date/time (%1): %2</source>
-        <translation type="unfinished">Kann Datum/Zeit nicht setzen (%1): %2</translation>
-    </message>
-    <message>
-        <location filename="../../base/ReFileUtils.cpp" line="217"/>
-        <source>cannot set permissions (%1): %2</source>
-        <translation type="unfinished">Kann Dateirechte nicht setzen (%1): %2</translation>
-    </message>
-    <message>
-        <location filename="../../base/ReFileUtils.cpp" line="491"/>
-        <source>can&apos;t create directory (%1): %2</source>
-        <translation type="unfinished">Kann Verzeichnis nicht erzeugen (%1): %2</translation>
-    </message>
-    <message>
-        <location filename="../../base/ReFileUtils.cpp" line="497"/>
-        <source>can&apos;t create directory (is a file): </source>
-        <translation type="unfinished">Kann Verzeichnis nicht erzeugen (ist eine Datei): </translation>
-    </message>
-    <message>
-        <location filename="../../base/ReQStringUtils.cpp" line="472"/>
-        <source>unknown placeholder: </source>
-        <translation type="unfinished">Unbekannter Platzhalter:</translation>
-    </message>
-    <message>
-        <location filename="../../base/ReQStringUtils.cpp" line="555"/>
-        <source>%1 of %2 (%3 %)</source>
-        <translation type="unfinished">%1 von %2 (%3 %)</translation>
-    </message>
-    <message>
-        <location filename="../../base/ReQStringUtils.cpp" line="715"/>
-        <source>more than 2 power operators, e.g. &apos;2^3^4&apos;</source>
-        <translation type="unfinished">Mehr als 2 Potenzoperatoren, z.B. &apos;2^3^4&apos;</translation>
-    </message>
-    <message>
-        <location filename="../../base/ReQStringUtils.cpp" line="728"/>
-        <source>number overflow while power operation</source>
-        <translation type="unfinished">Zahlüberlauf während Potenzoperation</translation>
-    </message>
-    <message>
-        <location filename="../../base/ReQStringUtils.cpp" line="758"/>
-        <source>number expected: </source>
-        <translation type="unfinished">Zahl erwartet: </translation>
-    </message>
-    <message>
-        <location filename="../../base/ReQStringUtils.cpp" line="768"/>
-        <source>missing &apos;:&apos; in unit definition, e.g. &apos;k:1000&apos;: </source>
-        <translation type="unfinished">&apos;;&apos; fehlt in der Einheitendefinition, z.B. &apos;k:1000&apos;: </translation>
-    </message>
-    <message>
-        <location filename="../../base/ReQStringUtils.cpp" line="773"/>
-        <source>too many  &apos;:&apos; in unit definition: </source>
-        <translation type="unfinished">Zu viele &apos;:&apos; in der Einheitsdefinition: </translation>
-    </message>
-    <message>
-        <location filename="../../base/ReQStringUtils.cpp" line="779"/>
-        <source>not a number: </source>
-        <translation type="unfinished">Keine Zahl: </translation>
-    </message>
-    <message>
-        <location filename="../../base/ReQStringUtils.cpp" line="788"/>
-        <source>unknown unit &apos;$1&apos;. Allowed: </source>
-        <translation type="unfinished">Unbekannte Einheit &apos;%1&apos;. Erlaubt: </translation>
-    </message>
-    <message>
-        <location filename="../../base/ReQStringUtils.cpp" line="839"/>
-        <source>empty string is not a date/time</source>
-        <translation type="unfinished">Leerer String ist kein Datum bzw. keine Zeit</translation>
-    </message>
-    <message>
-        <location filename="../../gui/ReGuiValidator.cpp" line="73"/>
-        <source>not an integer: </source>
-        <translation type="unfinished">Keine Ganzzahl: </translation>
-    </message>
-</context>
-<context>
-    <name>ReGuiApplication</name>
-    <message>
-        <location filename="../../gui/ReGuiApplication.cpp" line="42"/>
-        <source>Welcome!</source>
-        <translation type="unfinished">Willkommen!</translation>
-    </message>
-</context>
-<context>
-    <name>SearchTargetTask</name>
-    <message>
-        <location filename="BackupEngine.cpp" line="934"/>
-        <source>Search in target finished: to process: %1 with %2 dirs to delete: %3 total: %4 subdirs: %5 runtime: %6</source>
-        <translation type="unfinished">Suche im Ziel bendet: zu behandeln: %1 mit %2 zu löschende Verzeichnisse: %3 gesamt: %4 Unterverz.: %5 Laufzeit: %6</translation>
-    </message>
-</context>
-<context>
-    <name>SearchTask</name>
-    <message>
-        <location filename="BackupEngine.cpp" line="602"/>
-        <source>Search finished: to process: %1 with %2 matching: %3 total: %4 subdirs: %5 runtime: %6</source>
-        <translation type="unfinished">Suche beendet: zu behandeln: %1 mit %2 passend: %3 gesamt: %4 Unterverz: %5 Laufzeit: %6</translation>
-    </message>
-</context>
-</TS>
index 131bd68d6f44b87733430f3b19ef01420dcc0a73..ebe26ec3c1bb001695fd0dd2b26e90a0b3f2078d 100644 (file)
@@ -27,11 +27,13 @@ enum {
  *                                                     directory
  * @param maxLogFiles          max. count of (rotating) log files
  * @param maxLogSize           max. size of the (rotating) log files
+ * @param languages                    a comma separated list of supported languages,
+ *                                                     e.g. "de,fr"
  */
-ReGuiApplication::ReGuiApplication(const char* applicationName,
-                                                                                  const QString& homeDirBase,
-                                                                                  int maxLogFiles, int maxLogSize,
-                                                                        QWidget *parent = NULL) :
+ReGuiApplication::ReGuiApplication(QApplication& application,
+               const char* applicationName,const QString& homeDirBase,
+               int maxLogFiles, int maxLogSize, const QString& languages = "de",
+               QWidget *parent = NULL) :
        QMainWindow(parent),
        m_applicationName(applicationName),
        m_homeDir(buildHomeDir(homeDirBase, ".reappl")),
@@ -40,12 +42,21 @@ ReGuiApplication::ReGuiApplication(const char* applicationName,
        m_guiQueue(),
        m_guiTimer(new QTimer(this)),
        m_statusMessage(new QLabel(tr("Welcome!"))),
-       m_mutexGuiQueue()
+       m_mutexGuiQueue(),
+       m_application(application),
+       m_currentTranslator(NULL),
+       m_translators(),
+       m_languages(languages),
+       m_installPath()
+
 {
+       m_installPath = QDir(ReFileUtils::parentOf(m_application.arguments().at(0)))
+                       .absolutePath();
        m_logger.buildStandardAppender(I18N::s2b(m_homeDir) + applicationName,
                                                                   maxLogSize, maxLogFiles);
        m_storageFile = m_homeDir + applicationName + ".state.conf";
        m_logger.log(LOG_INFO, LOC_CONSTRUCTOR_1, "start");
+       initializeLanguage("");
 }
 
 /**
@@ -107,19 +118,6 @@ void ReGuiApplication::externalTaskFinished(const QString& message){
        m_mutexGuiQueue.unlock();
 }
 
-/**
- * Initializes the GUI elements of this class.
- *
- * Should be called after initializing the formular (<code>ui->setupUi()</code>).
- */
-void ReGuiApplication::initializeGuiElements(){
-       QCoreApplication* app = QCoreApplication::instance();
-       QObject::connect(app, SIGNAL(aboutToQuit()), this, SLOT(onAboutToQuit()));
-       connect(m_guiTimer, SIGNAL(timeout()), this, SLOT(onGuiTimerUpdate()));
-       m_guiTimer->start(100);
-       statusBar()->addWidget(m_statusMessage);
-}
-
 /**
  * Returns the application's name.
  *
@@ -187,6 +185,63 @@ void ReGuiApplication::externalLog(const QString& message){
        m_mutexGuiQueue.unlock();
 }
 
+/**
+ * Initializes the GUI elements of this class.
+ *
+ * Should be called after initializing the formular (<code>ui->setupUi()</code>).
+ */
+void ReGuiApplication::initializeGuiElements(){
+       QCoreApplication* app = QCoreApplication::instance();
+       QObject::connect(app, SIGNAL(aboutToQuit()), this, SLOT(onAboutToQuit()));
+       connect(m_guiTimer, SIGNAL(timeout()), this, SLOT(onGuiTimerUpdate()));
+       m_guiTimer->start(100);
+       statusBar()->addWidget(m_statusMessage);
+}
+
+/**
+ * Initializes the possibility to switch the GUI language.
+ */
+void ReGuiApplication::initializeLanguage(const QString& language)
+{
+       if (language.isEmpty()){
+               QStringList languages = m_languages.split(',');
+               for (int ix = 0; ix < languages.count(); ix++){
+                       QString lang = languages.at(ix);
+                       if (lang != "en")
+                               initializeLanguage(lang);
+               }
+               QLocale locale;
+               QString lang = locale.name();
+               if (lang.length() == 5)
+                       switchLanguage(lang.mid(0, 2));
+               if (m_currentTranslator == NULL)
+                       switchLanguage(lang);
+       } else {
+               QTranslator* translator = new QTranslator();
+               QString fn = QString(m_applicationName) + "." + language;
+               if (translator->load(fn, m_installPath)){
+                       // found, nothing to do
+               } else if (translator->load(fn, m_homeDir)){
+                       // found, nothing to do
+               } else {
+                       // forget it:
+                       delete translator;
+                       translator = NULL;
+               }
+               if (translator != NULL)
+                       m_translators.insert(language, translator);
+       }
+}
+
+/**
+ * Returns the path of the program file.
+ * @return the path of the program file
+ */
+const QString& ReGuiApplication::installPath() const
+{
+       return m_installPath;
+}
+
 /**
 * Writes a text to the status line.
 *
@@ -207,3 +262,31 @@ void ReGuiApplication::setStatusMessage(ReLoggerLevel level, const QString& mess
    }
 }
 
+/**
+ * Switch the GUI language.
+ *
+ * @param language
+ */
+void ReGuiApplication::switchLanguage(const QString& language){
+       if (language == "en"){
+               if (m_currentTranslator != NULL){
+                       m_application.removeTranslator(m_currentTranslator);
+                       m_currentTranslator = NULL;
+               }
+       } else {
+               QString lang = language;
+               QTranslator* translator = NULL;
+               if (m_translators.contains(lang)){
+                       translator = m_translators.value(lang);
+               } else if (lang.length() == 5 && lang.at(2) == '_'){
+                       lang = lang.mid(0, 2);
+                       if (m_translators.contains(lang)){
+                               translator = m_translators.value(lang);
+                       }
+               }
+               if (translator != NULL){
+                       m_currentTranslator = translator;
+                       m_application.installTranslator(translator);
+               }
+       }
+}
index 0d6c7bf06f293565d1156af19d2509157774a339..449c400b0a5c9cc016967d18c25419d8c56820e3 100644 (file)
@@ -19,9 +19,9 @@
  */
 class ReGuiApplication : public QMainWindow{
 public:
-       ReGuiApplication(const char* applicationName,
+       ReGuiApplication(QApplication& application, const char* applicationName,
                                                 const QString& homeDir, int maxLogFiles, int maxLogSize,
-                                         QWidget *parent);
+                                         const QString& languages, QWidget *parent);
 public:
        const QByteArray& applicationName() const;
        QString fileOfHome(const QString& node);
@@ -29,12 +29,16 @@ public:
        void externalError(const QString& message);
        void externalLog(const QString& message);
        void externalTaskFinished(const QString& message);
+       const QString& installPath() const;
        ReLogger* logger();
+       void setStatusMessage(ReLoggerLevel level, const QString& message);
+       void switchLanguage(const QString& language);
 public:
        static QString buildHomeDir(QString homeDirBase, const QString& node);
-       void setStatusMessage(ReLoggerLevel level, const QString& message);
+
 protected:
        void initializeGuiElements();
+       void initializeLanguage(const QString& language);
 protected slots:
        /**
         * Reads the <code>m_guiQueue</code>.
@@ -52,7 +56,12 @@ protected:
        QTimer* m_guiTimer;
        QLabel* m_statusMessage;
        QMutex m_mutexGuiQueue;
-
+       QApplication& m_application;
+       QTranslator* m_currentTranslator;
+       QHash<QString, QTranslator*> m_translators;
+       QString m_languages;
+       // Path of the program file
+       QString m_installPath;
 };
 
 #endif /* REGUIAPPLICATION_HPP_ */
index 8e8f9e7d5a4956e62e48ba9d8340bf1f3cfc1ee1..b65228fabfcba0190ad5a0b82b347100713aafb4 100644 (file)
@@ -16,6 +16,7 @@
 #include <QLabel>
 #include <QTableWidget>
 #include <QListWidget>
+#include <QApplication>
 #include "gui/ReGuiUtils.hpp"
 #include "gui/ReGuiQueue.hpp"
 #include "gui/ReStateStorage.hpp"