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();
}
* @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),
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);
--- /dev/null
+<?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><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Droid Sans'; font-size:10pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif'; font-size:9pt; font-weight:600;">ReBackupGui</span><span style=" font-family:'Sans Serif'; font-size:9pt;"> for backup of directories to external media.</span></p>
+<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif'; font-size:9pt;">This is a program of the project</span></p>
+<p align="center" style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif'; font-size:9pt; font-weight:600;">Re</span><span style=" font-family:'Sans Serif'; font-size:9pt;">al </span><span style=" font-family:'Sans Serif'; font-size:9pt; font-weight:600;">Pub</span><span style=" font-family:'Sans Serif'; font-size:9pt;">lic </span><span style=" font-family:'Sans Serif'; font-size:9pt; font-weight:600;">Lib</span><span style=" font-family:'Sans Serif'; font-size:9pt;">rary (RePubLib)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif'; font-size:9pt;">Sources are public domain and available under</span></p>
+<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="https://github.com/republib"><span style=" font-family:'Sans Serif'; font-size:9pt; text-decoration: underline; color:#0000ff;">https://github.com/republib</span></a><span style=" font-family:'Sans Serif'; font-size:9pt;"> </span></p>
+<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif'; font-size:9pt;">Implemented in QT (C++) 5.x</span></p>
+<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif'; font-size:9pt;">Icons: Mark James, </span><a href="http://famfamfam.com"><span style=" font-family:'Sans Serif'; font-size:9pt; text-decoration: underline; color:#0000ff;">http://famfamfam.com</span></a><span style=" font-family:'Sans Serif'; font-size:9pt;"> </span></p></body></html></source>
+ <translation type="unfinished"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Droid Sans'; font-size:10pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif'; font-size:9pt; font-weight:600;">ReBackupGui</span><span style=" font-family:'Sans Serif'; font-size:9pt;"> kann Dateisicherungen auf externen Medien durchführen.</span></p>
+<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif'; font-size:9pt;">This is a program of the project</span></p>
+<p align="center" style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif'; font-size:9pt; font-weight:600;">Re</span><span style=" font-family:'Sans Serif'; font-size:9pt;">al </span><span style=" font-family:'Sans Serif'; font-size:9pt; font-weight:600;">Pub</span><span style=" font-family:'Sans Serif'; font-size:9pt;">lic </span><span style=" font-family:'Sans Serif'; font-size:9pt; font-weight:600;">Lib</span><span style=" font-family:'Sans Serif'; font-size:9pt;">rary (RePubLib)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif'; font-size:9pt;">Der Quelltext ist Public Domain und unter</span></p>
+<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="https://github.com/republib"><span style=" font-family:'Sans Serif'; font-size:9pt; text-decoration: underline; color:#0000ff;">https://github.com/republib</span></a> verf&uuml;gbar.<span style=" font-family:'Sans Serif'; font-size:9pt;"> </span></p>
+<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif'; font-size:9pt;">Implementiert in QT (C++) 5.x</span></p>
+<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif'; font-size:9pt;">Icons: Mark James, </span><a href="http://famfamfam.com"><span style=" font-family:'Sans Serif'; font-size:9pt; text-decoration: underline; color:#0000ff;">http://famfamfam.com</span></a><span style=" font-family:'Sans Serif'; font-size:9pt;"> </span></p></body></html></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>&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><html><head/><body><p>A comma (',') separated list of filename patterns. A prefix of '-' means inversion: if a filename matches it will not be found.</p><p>Example: *.txt,*.odt</p></body></html></source>
+ <translation type="unfinished"><html><head/><body><p>Eine Liste von Dateinamensmustern, getrennt mit Komma (',') . Ein Präfix '-' bedeuted Umkehrung: Wenn ein Dateiname passt, wird er nicht gefunden.</p><p>Beispiel: *.txt,*.odt</p></body></html></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><html><head/><body><p>A comma (',') separated list of directory name patterns. A prefix of '-' means inversion: if a directory name matches it will not be found.</p><p>Example: *,-.git,-*cache*</p></body></html></source>
+ <translation type="unfinished"><html><head/><body><p>Eine Liste von Verzeichnisnamensmustern, getrennt mit Komma (',') . Ein Präfix '-' bedeuted Umkehrung: Wenn ein Verzeichnisname passt, wird er nicht gefunden.</p><p>Beispiel: *,-.git,-*cache*</p></body></html></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 -> %3</source>
+ <translation type="unfinished">Kann Zieldatei nicht umbenennen (%1): %2 -> %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 -> %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'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'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. '2^3^4'</source>
+ <translation type="unfinished">Mehr als 2 Potenzoperatoren, z.B. '2^3^4'</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 ':' in unit definition, e.g. 'k:1000': </source>
+ <translation type="unfinished">';' fehlt in der Einheitendefinition, z.B. 'k:1000': </translation>
+ </message>
+ <message>
+ <location filename="../../base/ReQStringUtils.cpp" line="773"/>
+ <source>too many ':' in unit definition: </source>
+ <translation type="unfinished">Zu viele ':' 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 '$1'. Allowed: </source>
+ <translation type="unfinished">Unbekannte Einheit '%1'. 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>
+++ /dev/null
-<?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><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Droid Sans'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif'; font-size:9pt; font-weight:600;">ReBackupGui</span><span style=" font-family:'Sans Serif'; font-size:9pt;"> for backup of directories to external media.</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif'; font-size:9pt;">This is a program of the project</span></p>
-<p align="center" style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif'; font-size:9pt; font-weight:600;">Re</span><span style=" font-family:'Sans Serif'; font-size:9pt;">al </span><span style=" font-family:'Sans Serif'; font-size:9pt; font-weight:600;">Pub</span><span style=" font-family:'Sans Serif'; font-size:9pt;">lic </span><span style=" font-family:'Sans Serif'; font-size:9pt; font-weight:600;">Lib</span><span style=" font-family:'Sans Serif'; font-size:9pt;">rary (RePubLib)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif'; font-size:9pt;">Sources are public domain and available under</span></p>
-<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="https://github.com/republib"><span style=" font-family:'Sans Serif'; font-size:9pt; text-decoration: underline; color:#0000ff;">https://github.com/republib</span></a><span style=" font-family:'Sans Serif'; font-size:9pt;"> </span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif'; font-size:9pt;">Implemented in QT (C++) 5.x</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif'; font-size:9pt;">Icons: Mark James, </span><a href="http://famfamfam.com"><span style=" font-family:'Sans Serif'; font-size:9pt; text-decoration: underline; color:#0000ff;">http://famfamfam.com</span></a><span style=" font-family:'Sans Serif'; font-size:9pt;"> </span></p></body></html></source>
- <translation type="unfinished"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Droid Sans'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif'; font-size:9pt; font-weight:600;">ReBackupGui</span><span style=" font-family:'Sans Serif'; font-size:9pt;"> kann Dateisicherungen auf externen Medien durchführen.</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif'; font-size:9pt;">This is a program of the project</span></p>
-<p align="center" style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif'; font-size:9pt; font-weight:600;">Re</span><span style=" font-family:'Sans Serif'; font-size:9pt;">al </span><span style=" font-family:'Sans Serif'; font-size:9pt; font-weight:600;">Pub</span><span style=" font-family:'Sans Serif'; font-size:9pt;">lic </span><span style=" font-family:'Sans Serif'; font-size:9pt; font-weight:600;">Lib</span><span style=" font-family:'Sans Serif'; font-size:9pt;">rary (RePubLib)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif'; font-size:9pt;">Der Quelltext ist Public Domain und unter</span></p>
-<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="https://github.com/republib"><span style=" font-family:'Sans Serif'; font-size:9pt; text-decoration: underline; color:#0000ff;">https://github.com/republib</span></a> verf&uuml;gbar.<span style=" font-family:'Sans Serif'; font-size:9pt;"> </span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif'; font-size:9pt;">Implementiert in QT (C++) 5.x</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif'; font-size:9pt;">Icons: Mark James, </span><a href="http://famfamfam.com"><span style=" font-family:'Sans Serif'; font-size:9pt; text-decoration: underline; color:#0000ff;">http://famfamfam.com</span></a><span style=" font-family:'Sans Serif'; font-size:9pt;"> </span></p></body></html></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>&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><html><head/><body><p>A comma (',') separated list of filename patterns. A prefix of '-' means inversion: if a filename matches it will not be found.</p><p>Example: *.txt,*.odt</p></body></html></source>
- <translation type="unfinished"><html><head/><body><p>Eine Liste von Dateinamensmustern, getrennt mit Komma (',') . Ein Präfix '-' bedeuted Umkehrung: Wenn ein Dateiname passt, wird er nicht gefunden.</p><p>Beispiel: *.txt,*.odt</p></body></html></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><html><head/><body><p>A comma (',') separated list of directory name patterns. A prefix of '-' means inversion: if a directory name matches it will not be found.</p><p>Example: *,-.git,-*cache*</p></body></html></source>
- <translation type="unfinished"><html><head/><body><p>Eine Liste von Verzeichnisnamensmustern, getrennt mit Komma (',') . Ein Präfix '-' bedeuted Umkehrung: Wenn ein Verzeichnisname passt, wird er nicht gefunden.</p><p>Beispiel: *,-.git,-*cache*</p></body></html></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 -> %3</source>
- <translation type="unfinished">Kann Zieldatei nicht umbenennen (%1): %2 -> %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 -> %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'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'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. '2^3^4'</source>
- <translation type="unfinished">Mehr als 2 Potenzoperatoren, z.B. '2^3^4'</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 ':' in unit definition, e.g. 'k:1000': </source>
- <translation type="unfinished">';' fehlt in der Einheitendefinition, z.B. 'k:1000': </translation>
- </message>
- <message>
- <location filename="../../base/ReQStringUtils.cpp" line="773"/>
- <source>too many ':' in unit definition: </source>
- <translation type="unfinished">Zu viele ':' 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 '$1'. Allowed: </source>
- <translation type="unfinished">Unbekannte Einheit '%1'. 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>
* 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")),
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("");
}
/**
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.
*
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.
*
}
}
+/**
+ * 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);
+ }
+ }
+}
*/
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);
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>.
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_ */
#include <QLabel>
#include <QTableWidget>
#include <QListWidget>
+#include <QApplication>
#include "gui/ReGuiUtils.hpp"
#include "gui/ReGuiQueue.hpp"
#include "gui/ReStateStorage.hpp"