From: hama Date: Fri, 19 Feb 2016 23:30:50 +0000 (+0100) Subject: rebackgui: switch English/German X-Git-Url: https://gitweb.hamatoma.de/?a=commitdiff_plain;h=e992a055d9d1ed9c787c032395da3c61644b79dd;p=reqt rebackgui: switch English/German --- diff --git a/appl/rebackgui/aboutdialog.ui b/appl/rebackgui/aboutdialog.ui index 5870ff0..bbaa9b4 100644 --- a/appl/rebackgui/aboutdialog.ui +++ b/appl/rebackgui/aboutdialog.ui @@ -11,7 +11,7 @@ - Dialog + About the program true diff --git a/appl/rebackgui/main.cpp b/appl/rebackgui/main.cpp index bfa513e..df7047f 100644 --- a/appl/rebackgui/main.cpp +++ b/appl/rebackgui/main.cpp @@ -14,11 +14,11 @@ #include "mainwindow.hpp" #include char** g_argv; -int main(int argc, char *argv[]){ - g_argv = argv; - QString homeDir = argc > 1 ? argv[1] : ""; - QApplication a(argc, argv); - MainWindow w(a, homeDir); - w.show(); - return a.exec(); +int main(int argc, char* argv[]) { + g_argv = argv; + QString homeDir = argc > 1 ? argv[1] : ""; + QApplication a(argc, argv); + MainWindow w(a, homeDir); + w.show(); + return a.exec(); } diff --git a/appl/rebackgui/mainwindow.cpp b/appl/rebackgui/mainwindow.cpp index 00c035d..4dfad13 100644 --- a/appl/rebackgui/mainwindow.cpp +++ b/appl/rebackgui/mainwindow.cpp @@ -13,7 +13,7 @@ #include "aboutdialog.hpp" #include -const QString VERSION("2016.02.17"); +const QString VERSION("2016.02.19"); /** * Constructor. @@ -23,7 +23,7 @@ const QString VERSION("2016.02.17"); */ MainWindow::MainWindow(QApplication& application, const QString& homeDir, QWidget *parent) : - ReGuiApplication(application, "rebackupgui", homeDir, 2, 100100100, "de", parent), + ReGuiApplication(application, "rebackgui", homeDir, 2, 100100100, "de", parent), ReGuiValidator(), ui(new Ui::MainWindow), m_configuration(this), @@ -39,48 +39,64 @@ MainWindow::MainWindow(QApplication& application, const QString& homeDir, m_errors(0), m_maxListSize(1000) { + initializeGui(); +} + +/** + * Initializes the Graphical User Interface. + */ +void MainWindow::initializeGui(){ ui->setupUi(this); initializeGuiElements(); - startStop(false); - connect(ui->actionStart, SIGNAL(triggered()), this, - SLOT(onStart())); - connect(ui->actionChecksums, SIGNAL(triggered()), this, - SLOT(onChecksums())); - connect(ui->actionClean, SIGNAL(triggered()), this, - SLOT(onClean())); - connect(ui->actionStop, SIGNAL(triggered()), this, - SLOT(onStop())); - connect(ui->pushButtonBackup, SIGNAL(clicked()), this, SLOT(onStart())); - connect(ui->pushButtonChecksum, SIGNAL(clicked()), this, SLOT(onChecksums())); - connect(ui->pushButtonStop, SIGNAL(clicked()), this, SLOT(onStop())); - connect(ui->pushButtonAddItem, SIGNAL(clicked()), this, SLOT(onAddItem())); - connect(ui->pushButtonDeleteItem, SIGNAL(clicked()), this, SLOT(onDeleteItem())); - connect(ui->pushButtonAddSource, SIGNAL(clicked()), this, SLOT(onAddSource())); - connect(ui->pushButtonDeleteSource, SIGNAL(clicked()), this, SLOT(onDeleteSource())); - connect(ui->pushButtonSelectTarget, SIGNAL(clicked()), this, SLOT(onSelectTarget())); - connect(ui->pushButtonSaveConfig, SIGNAL(clicked()), this, SLOT(onSaveConfig())); - connect(ui->pushButtonUpdate, SIGNAL(clicked()), this, SLOT(onUpdate())); - connect(ui->actionLoadConfig, SIGNAL(triggered()), this, - SLOT(onLoadConfig())); - connect(ui->actionSaveConfig, SIGNAL(triggered()), this, - SLOT(onSaveConfig())); - connect(ui->actionAbout, SIGNAL(triggered()), this, SLOT(onAbout())); - connect(ui->tableWidgetConfiguration->selectionModel(), - SIGNAL( selectionChanged(const QItemSelection&, const QItemSelection&)), - this, SLOT( onSelectionChanged(const QItemSelection&, const QItemSelection&) )); - connect(ui->tableWidgetConfiguration->selectionModel(), - SIGNAL(currentChanged(const QModelIndex&, const QModelIndex&)), - this, - SLOT(onCurrentChanged(const QModelIndex&, const QModelIndex&))); - connect(ui->pushButtonClearFileList, SIGNAL(clicked()), this, SLOT(onClearFileList())); - connect(ui->pushButtonClearErrorList, SIGNAL(clicked()), this, SLOT(onClearErrorList())); - connect(ui->pushButtonClear, SIGNAL(clicked()), this, SLOT(onClearLog())); - connect(ui->pushButtonClean, SIGNAL(clicked()), this, SLOT(onClean())); - connect(ui->comboBoxVerbose, SIGNAL(currentIndexChanged(int)), this, SLOT(onVerboseIndexChanged(int))); - m_configuration.load(""); - ui->tableWidgetConfiguration->selectRow(0); - updateTable(); - updateItem(0); + initializeGuiLanguage(ui->actionEnglish, ui->actionGerman); + startStop(false); + connect(ui->actionStart, SIGNAL(triggered()), this, + SLOT(onStart())); + connect(ui->actionChecksums, SIGNAL(triggered()), this, + SLOT(onChecksums())); + connect(ui->actionClean, SIGNAL(triggered()), this, + SLOT(onClean())); + connect(ui->actionStop, SIGNAL(triggered()), this, + SLOT(onStop())); + connect(ui->pushButtonBackup, SIGNAL(clicked()), this, SLOT(onStart())); + connect(ui->pushButtonChecksum, SIGNAL(clicked()), this, SLOT(onChecksums())); + connect(ui->pushButtonStop, SIGNAL(clicked()), this, SLOT(onStop())); + connect(ui->pushButtonAddItem, SIGNAL(clicked()), this, SLOT(onAddItem())); + connect(ui->pushButtonDeleteItem, SIGNAL(clicked()), this, SLOT(onDeleteItem())); + connect(ui->pushButtonAddSource, SIGNAL(clicked()), this, SLOT(onAddSource())); + connect(ui->pushButtonDeleteSource, SIGNAL(clicked()), this, SLOT(onDeleteSource())); + connect(ui->pushButtonSelectTarget, SIGNAL(clicked()), this, SLOT(onSelectTarget())); + connect(ui->pushButtonSaveConfig, SIGNAL(clicked()), this, SLOT(onSaveConfig())); + connect(ui->pushButtonUpdate, SIGNAL(clicked()), this, SLOT(onUpdate())); + connect(ui->actionLoadConfig, SIGNAL(triggered()), this, + SLOT(onLoadConfig())); + connect(ui->actionSaveConfig, SIGNAL(triggered()), this, + SLOT(onSaveConfig())); + connect(ui->actionAbout, SIGNAL(triggered()), this, SLOT(onAbout())); + connect(ui->tableWidgetConfiguration->selectionModel(), + SIGNAL( selectionChanged(const QItemSelection&, const QItemSelection&)), + this, SLOT( onSelectionChanged(const QItemSelection&, const QItemSelection&) )); + connect(ui->tableWidgetConfiguration->selectionModel(), + SIGNAL(currentChanged(const QModelIndex&, const QModelIndex&)), + this, + SLOT(onCurrentChanged(const QModelIndex&, const QModelIndex&))); + connect(ui->pushButtonClearFileList, SIGNAL(clicked()), this, SLOT(onClearFileList())); + connect(ui->pushButtonClearErrorList, SIGNAL(clicked()), this, SLOT(onClearErrorList())); + connect(ui->pushButtonClear, SIGNAL(clicked()), this, SLOT(onClearLog())); + connect(ui->pushButtonClean, SIGNAL(clicked()), this, SLOT(onClean())); + connect(ui->comboBoxVerbose, SIGNAL(currentIndexChanged(int)), this, SLOT(onVerboseIndexChanged(int))); + //connect(m_defaultLanguage, SIGNAL(triggered()), this, + // SLOT(onDefault())); + connect(ui->actionEnglish, SIGNAL(triggered()), this, SLOT(onEnglish())); + connect(ui->actionGerman, SIGNAL(triggered()), this, SLOT(onGerman())); + m_configuration.load(""); + ui->tableWidgetConfiguration->selectRow(0); + updateTable(); + updateItem(0); + if (m_currentTranslator == NULL) + ui->actionEnglish->setChecked(true); + else + ui->actionGerman->setChecked(true); } /** @@ -274,6 +290,19 @@ void MainWindow::onDeleteSource() } } +/** + * Action "switch to English". + */ +void MainWindow::onEnglish(){ + ReGuiApplication::onEnglish(); +} +/** + * Action "switch to German". + */ +void MainWindow::onGerman(){ + ReGuiApplication::onGerman(); +} + /** * @brief MainWindow::onSelectionChanged * @param selected @@ -290,6 +319,13 @@ void MainWindow::onSelectionChanged(const QItemSelection& selected, } +/** + * The language has been changed. + */ +void MainWindow::onLanguageChange() +{ + initializeGui(); +} /** * Starts the backup. */ @@ -629,7 +665,7 @@ void MainWindow::updateTableRow(int row, BackupItem& item, QTableWidget* target) updateTableRow(row, item, ui->tableWidgetConfiguration); } else { int base = target == ui->tableWidget ? 1 : 0; - QString active = QObject::tr(item.m_active ? "yes" : "no"); + QString active = item.m_active ? QObject::tr("yes") : QObject::tr("no"); if (base == 1) target->setItem(row, 0, new QTableWidgetItem(active)); target->setItem(row, base + 0, new QTableWidgetItem(item.m_name)); @@ -668,3 +704,5 @@ void MainWindow::writeTargetConfiguration(BackupItem& item, const QString& targe + + diff --git a/appl/rebackgui/mainwindow.hpp b/appl/rebackgui/mainwindow.hpp index 4560a55..912e7f7 100644 --- a/appl/rebackgui/mainwindow.hpp +++ b/appl/rebackgui/mainwindow.hpp @@ -38,6 +38,7 @@ public: private: QString extractTarget(const QString& dir); + void initializeGui(); bool initializeStart(); void writeTargetConfiguration(BackupItem& item, const QString& target); private slots: @@ -53,6 +54,8 @@ private slots: void onCurrentChanged(const QModelIndex& current, const QModelIndex& previous); void onDeleteItem(); void onDeleteSource(); + void onEnglish(); + void onGerman(); virtual void onGuiTimerUpdate(); void onSaveConfig(); void onStart(); @@ -79,6 +82,8 @@ private: CleanTask* m_cleanTask; int m_errors; int m_maxListSize; +protected slots: + virtual void onLanguageChange(); }; #endif // MAINWINDOW_HPP diff --git a/appl/rebackgui/mainwindow.ui b/appl/rebackgui/mainwindow.ui index b032479..35ce0ee 100644 --- a/appl/rebackgui/mainwindow.ui +++ b/appl/rebackgui/mainwindow.ui @@ -207,7 +207,7 @@ - Start + Backup @@ -539,7 +539,7 @@ - Select target + ... @@ -798,6 +798,10 @@ Help + + + + @@ -865,8 +869,49 @@ Clean + + + true + + + English + + + + + true + + + German + + + + + true + + + Default + + - + + + actionExit + triggered() + MainWindow + close() + + + -1 + -1 + + + 419 + 330 + + + + diff --git a/appl/rebackgui/rebackgui.de.qm b/appl/rebackgui/rebackgui.de.qm index 278cbd6..1c8395d 100644 Binary files a/appl/rebackgui/rebackgui.de.qm and b/appl/rebackgui/rebackgui.de.qm differ diff --git a/appl/rebackgui/rebackgui.de.ts b/appl/rebackgui/rebackgui.de.ts index 7a3de2e..13869d3 100644 --- a/appl/rebackgui/rebackgui.de.ts +++ b/appl/rebackgui/rebackgui.de.ts @@ -5,8 +5,8 @@ AboutDialog - Dialog - + About the program + Über das Programm @@ -21,12 +21,12 @@ p, li { white-space: pre-wrap; } <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> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!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 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;">Das ist ein Programm des Projekts</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> @@ -36,17 +36,17 @@ p, li { white-space: pre-wrap; } Version: - + 2015.05.00 - + &OK - + @@ -54,22 +54,22 @@ p, li { white-space: pre-wrap; } cannot remove file (for making a directory (%1): %2 - kann Datei nicht löschen, um ein Verzeichnis anzulegen (%1): %2 + kann Datei nicht löschen, um ein Verzeichnis anzulegen (%1): %2 cannot make directory (%1): %2 - kann Verzeichnis nicht anlegen (%1): %2 + kann Verzeichnis nicht anlegen (%1): %2 %1 of %2 (%3 of %4) %5 MB/sec runtime: %6 - %1 von %2 (%3 von %4) %5 MB/sec Laufzeit: %6 + %1 von %2 (%3 von %4) %5 MB/sec Laufzeit: %6 backup complete after %1. Errors: %2 - Sicherung nach %1 fertiggestellt Fehler: %2 + Sicherung nach %1 fertiggestellt Fehler: %2 @@ -77,7 +77,7 @@ p, li { white-space: pre-wrap; } Building source checksum complete after %1. Processed: %2 - Erzeugen der Prüfsummen für die Quelldateien fertig nach %1. Bearbeitet: %2 + Erzeugen der Prüfsummen für die Quelldateien fertig nach %1. Bearbeitet: %2 @@ -85,12 +85,12 @@ p, li { white-space: pre-wrap; } %1 of %2 (%3 of %4) %5 MB/sec runtime: %6 - %1 von %2 (%3 von %4) %5 MB/sec Laufzeit: %6 + %1 von %2 (%3 von %4) %5 MB/sec Laufzeit: %6 Building target checksums complete after %1. Processed: %2 Errors: %3 - Erzeugen der Prüfsummen für die Zieldateien fertig nach %1. Bearbeitet: %2 Fehler: %3 + Erzeugen der Prüfsummen für die Zieldateien fertig nach %1. Bearbeitet: %2 Fehler: %3 @@ -98,12 +98,12 @@ p, li { white-space: pre-wrap; } %1 of %2 files %3 files/sec runtime: %6 - %1 von %2 Dateien %3 Dateien/sec Laufzeit: %6 + %1 von %2 Dateien %3 Dateien/sec Laufzeit: %6 clean complete after %1. Errors: %2 - Bereinigen fertig nach %1. Fehler: %2 + Bereinigen fertig nach %1. Fehler: %2 @@ -111,314 +111,332 @@ p, li { white-space: pre-wrap; } RePubLib rebackgui - RePubLib rebackgui + RePubLib rebackgui - + Action - Aktion + Aktion Active - Aktiv + Aktiv Name - Name + Name Target - Ziel + Ziel Last backup - Letzte Sicherung + Letzte Sicherung Source(s) - Quelle(n) + Quelle(n) Options: - Optionen: + Optionen: Max. list length: - Max. Listenlänge: + Max. Listenlänge: Max. length of the file list / error list. 0: unlimited - Max. Länge der Datei-/Fehlerliste. 0: unbeschränkt + Max. Länge der Datei-/Fehlerliste. 0: unbeschränkt 100 - 100 + 100 Starting a task cleans filelist and errorlist - Start löscht Datei- und Fehlerliste + Start löscht Datei- und Fehlerliste Start cleans - Start löscht + Start löscht Verbose level - Ausgabenstufe + Ausgabenstufe Quiet - Still + Still Summary - Zusammenfassung + Kurzfassung File log - Dateiliste + Dateiliste Chatty - Geschwätzig + Geschwätzig - Start - Start + Start + + + + Backup + Sicherung - + Stop - Beenden + Beenden - + Calculates checksums for source and target files and reports differences - Berechnet Prüfsummen für Quell- und Zieldateien und meldet Unterschiede + Berechnet Prüfsummen für Quell- und Zieldateien und meldet Unterschiede - + Checksums - Prüfsummen + Prüfsummen Detects files/dirs not found in the source directory. Old files will be remove, the other will be moved to the shadow directory - Entdeckt Dateien/Verzeichnisse, die nicht im Quellverzeichnis stehen. Alte Dateien werden gelöscht, die anderen werden ins Schattenverzeichnis verschoben + Entdeckt Dateien/Verzeichnisse, die nicht im Quellverzeichnis stehen. Alte Dateien werden gelöscht, die anderen werden ins Schattenverzeichnis verschoben - + Clean Protokoll: - Bereinigen + Bereinigen Log: - + Protokoll: Clear - Löschen + Löschen Configuration - Konfiguration + Konfiguration Backup elements: - Sicherungselemente: + Sicherungselemente: Add item - Element hinzufügen + Hinzufügen Delete item - Element löschen + Löschen Save config - Konfiguration speichern + Konf. speichern Name: - Name: + Name: Update - Aktualisieren + Aktualisieren Target: - Ziel: + Ziel: - Select target - Wähle Ziel + Wähle Ziel File patterns: - Dateinamensmuster: + Dateimuster: <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> - <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> + <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> Dir patterns: - Verzeichnismuster: + Verzeichnismuster: <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> - <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> + <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> Source dirs: - Quelldateien: + Quelldateien: Add source - Quelle hinzufügen + Hinzufügen Delete source - Quelle löschen + Löschen Files - Dateien + Dateien File log: - Dateiliste: + Dateiliste: Errors - Fehler: + Fehler Error log: - Fehlerprotokoll: + Fehlerprotokoll: File Bearbeiten - Datei + Datei Edit - Bearbeiten + Bearbeiten Help - Hilfe + Hilfe - + Load Config - Konfiguration laden + Konfiguration laden - + Save Config - Konfiguration sichern + Konfiguration sichern - + Exit - Beenden + Beenden - + Start backup - Sicherung starten + Sicherung starten - + About - Über + Über - - - + + English + + + + + German + + + + + Default + + + + + + no backup item selected - Kein Sicherungselement ausgewählt + Kein Sicherungselement ausgewählt - - - + + + Target not available - Ziel nicht vorhanden + Ziel nicht vorhanden - + Select Source Directory - Quellverzeichnis auswählen + Quellverzeichnis auswählen - + Select Target Directory - Zielverzeichnis auswählen + Zielverzeichnis auswählen - + target initialized with %1 - Ziel mit %1 vorbelegt + Ziel mit %1 vorbelegt @@ -426,52 +444,52 @@ p, li { white-space: pre-wrap; } cannot build checksum: %1 - Kann Prüfsumme nicht ermitteln: %1 + Kann Prüfsumme nicht ermitteln: %1 checksum differs: - Prüfsummen unterscheiden sich: + Prüfsummen unterscheiden sich: cannot delete (%1): %2 - Kann nicht löschen (%1): %2 + Kann nicht löschen (%1): %2 cannot remove directory (%1): %2 - Kann Verzeichnis nicht erstellen (%1): %2 + Kann Verzeichnis nicht erstellen (%1): %2 cannot create the shadow directory: %1 - Kann das Schattenverzeichnis nicht erstellen (%1): %2 + Kann das Schattenverzeichnis nicht erstellen: %1 cannot delete shadow file (%1): %2 - Kann Schattendatei nicht löschen (%1): %2 + Kann Schattendatei nicht löschen (%1): %2 cannot rename target file (%1): %2 -> %3 - Kann Zieldatei nicht umbenennen (%1): %2 -> %3 + Kann Zieldatei nicht umbenennen (%1): %2 -> %3 cannot create shadow directory (%1): %2 - Kann Schattenverzeichnis nicht erstellen (%1): %2 + Kann Schattenverzeichnis nicht erstellen (%1): %2 cannot move to shadow directory (%1): %2 -> %3 - Kann Datei nicht in Schattenverzeichnis verschieben (%1): %2 + Kann Datei nicht in Schattenverzeichnis verschieben (%1): %2 -> %3 item - Element + Element @@ -479,120 +497,138 @@ p, li { white-space: pre-wrap; } cannot open (%1): %2 - Kann nicht öffnen (%1): %2 + Kann nicht öffnen (%1): %2 unknown format in %1-%2: %3 - Unbekanntes Format in %1-%2: %3 + Unbekanntes Format in %1-%2: %3 cannot write (%1): %2 - Kann nicht schreiben (%1): %2 + Kann nicht schreiben (%1): %2 - + Search started... - Suche gestartet... + Suche gestartet... + + + + yes + Ja + + + + no + nein not found: %1 - Nicht gefunden: %1 + Nicht gefunden: %1 - cannot write (%1): $2 [%3/%4] - Kann nicht schreiben(%1): %2 [%3/%4] + Kann nicht schreiben(%1): %2 [%3/%4] + + + + cannot write (%1): %2 [%3/%4] + Kann nicht schreiben(%1): %2 [%3/%4] file can be read only partitionally: %1 [%2/%3] - Datei kann nur teilweise gelesen werden: %1 [%2/%3] + Datei kann nur teilweise gelesen werden: %1 [%2/%3] cannot set date/time (%1): %2 - Kann Datum/Zeit nicht setzen (%1): %2 + Kann Datum/Zeit nicht setzen (%1): %2 cannot set permissions (%1): %2 - Kann Dateirechte nicht setzen (%1): %2 + Kann Dateirechte nicht setzen (%1): %2 can't create directory (%1): %2 - Kann Verzeichnis nicht erzeugen (%1): %2 + Kann Verzeichnis nicht erzeugen (%1): %2 can't create directory (is a file): - Kann Verzeichnis nicht erzeugen (ist eine Datei): + Kann Verzeichnis nicht erzeugen (ist eine Datei): unknown placeholder: - Unbekannter Platzhalter: + Unbekannter Platzhalter: %1 of %2 (%3 %) - %1 von %2 (%3 %) + %1 von %2 (%3 %) more than 2 power operators, e.g. '2^3^4' - Mehr als 2 Potenzoperatoren, z.B. '2^3^4' + Mehr als 2 Potenzoperatoren, z.B. '2^3^4' number overflow while power operation - Zahlüberlauf während Potenzoperation + Zahlüberlauf während Potenzoperation number expected: - Zahl erwartet: + Zahl erwartet: missing ':' in unit definition, e.g. 'k:1000': - ';' fehlt in der Einheitendefinition, z.B. 'k:1000': + ';' fehlt in der Einheitendefinition, z.B. 'k:1000': too many ':' in unit definition: - Zu viele ':' in der Einheitsdefinition: + Zu viele ':' in der Einheitsdefinition: not a number: - Keine Zahl: + Keine Zahl: + unknown unit '%1'. Allowed: + Unbekannte Einheit '%1'. Erlaubt: + + unknown unit '$1'. Allowed: - Unbekannte Einheit '%1'. Erlaubt: + Unbekannte Einheit '%1'. Erlaubt: empty string is not a date/time - Leerer String ist kein Datum bzw. keine Zeit + Leerer String ist kein Datum bzw. keine Zeit not an integer: - Keine Ganzzahl: + Keine Ganzzahl: ReGuiApplication - + Welcome! - Willkommen! + Willkommen! @@ -600,7 +636,7 @@ p, li { white-space: pre-wrap; } Search in target finished: to process: %1 with %2 dirs to delete: %3 total: %4 subdirs: %5 runtime: %6 - Suche im Ziel bendet: zu behandeln: %1 mit %2 zu löschende Verzeichnisse: %3 gesamt: %4 Unterverz.: %5 Laufzeit: %6 + Suche im Ziel bendet: zu behandeln: %1 mit %2 zu löschende Verzeichnisse: %3 gesamt: %4 Unterverz.: %5 Laufzeit: %6 @@ -608,7 +644,7 @@ p, li { white-space: pre-wrap; } Search finished: to process: %1 with %2 matching: %3 total: %4 subdirs: %5 runtime: %6 - Suche beendet: zu behandeln: %1 mit %2 passend: %3 gesamt: %4 Unterverz: %5 Laufzeit: %6 + Suche beendet: zu behandeln: %1 mit %2 passend: %3 gesamt: %4 Unterverz: %5 Laufzeit: %6 diff --git a/appl/rebackgui/rebackgui.pro b/appl/rebackgui/rebackgui.pro index acc94ea..b24d4e4 100644 --- a/appl/rebackgui/rebackgui.pro +++ b/appl/rebackgui/rebackgui.pro @@ -54,6 +54,6 @@ DISTFILES += \ ReBackGui.html \ osconnect.pl -TRANSLATIONS = rebackgui_de.ts +TRANSLATIONS = rebackgui.de.ts CODECFORTR = UTF-8 diff --git a/base/ReQStringUtils.cpp b/base/ReQStringUtils.cpp index dfb3346..bd60ebd 100644 --- a/base/ReQStringUtils.cpp +++ b/base/ReQStringUtils.cpp @@ -547,7 +547,7 @@ QString ReQStringUtils::readableDuration(qint64 durationMilliSec){ QString ReQStringUtils::runtimeEstimation(const QDateTime& start, double factor){ qint64 duration = QDateTime::currentMSecsSinceEpoch() - start.toMSecsSinceEpoch(); - if (factor > 1) + if (factor > 1) factor = 1; else if (factor <= 0.001) factor = 0.001; @@ -785,7 +785,7 @@ quint64 ReUnitParser::valueOf(const QString& value) const { } if (!found) throw ReParserException( - QObject::tr("unknown unit '$1'. Allowed: ").arg(unit) + QObject::tr("unknown unit '%1'. Allowed: ").arg(unit) + QString(m_unitList)); } return rc; diff --git a/gui/ReGuiApplication.cpp b/gui/ReGuiApplication.cpp index ebe26ec..f2aff5f 100644 --- a/gui/ReGuiApplication.cpp +++ b/gui/ReGuiApplication.cpp @@ -47,7 +47,9 @@ ReGuiApplication::ReGuiApplication(QApplication& application, m_currentTranslator(NULL), m_translators(), m_languages(languages), - m_installPath() + m_installPath(), + m_english(NULL), + m_german(NULL) { m_installPath = QDir(ReFileUtils::parentOf(m_application.arguments().at(0))) @@ -55,8 +57,8 @@ ReGuiApplication::ReGuiApplication(QApplication& application, 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_logger.log(LOG_INFO, LOC_CONSTRUCTOR_1, "start"); } /** @@ -200,6 +202,8 @@ void ReGuiApplication::initializeGuiElements(){ /** * Initializes the possibility to switch the GUI language. + * + * @param language the language, e.g. "de" */ void ReGuiApplication::initializeLanguage(const QString& language) { @@ -232,6 +236,36 @@ void ReGuiApplication::initializeLanguage(const QString& language) m_translators.insert(language, translator); } } +/** + * Initializes the possibility to switch the GUI language. + * + * @param language the language, e.g. "de" + * @param english the action for choosing English + * @param german the action for choosing German + */ +void ReGuiApplication::initializeGuiLanguage(QAction* english, QAction* german) +{ + m_english = english; + m_german = german; +} +/** + * Action "switch to English". + */ +void ReGuiApplication::onEnglish(){ + switchLanguage("en"); + onLanguageChange(); + m_english->setChecked(true); + m_german->setChecked(false); +} +/** + * Action "switch to German". + */ +void ReGuiApplication::onGerman(){ + switchLanguage("de"); + onLanguageChange(); + m_english->setChecked(false); + m_german->setChecked(true); +} /** * Returns the path of the program file. @@ -285,6 +319,8 @@ void ReGuiApplication::switchLanguage(const QString& language){ } } if (translator != NULL){ + if (m_currentTranslator != NULL) + m_application.removeTranslator(m_currentTranslator); m_currentTranslator = translator; m_application.installTranslator(translator); } diff --git a/gui/ReGuiApplication.hpp b/gui/ReGuiApplication.hpp index 449c400..a1cd0ae 100644 --- a/gui/ReGuiApplication.hpp +++ b/gui/ReGuiApplication.hpp @@ -37,14 +37,18 @@ public: static QString buildHomeDir(QString homeDirBase, const QString& node); protected: + void onEnglish(); + void onGerman(); void initializeGuiElements(); void initializeLanguage(const QString& language); + void initializeGuiLanguage(QAction* english, QAction* german); protected slots: /** * Reads the m_guiQueue. */ - virtual void onGuiTimerUpdate() = 0; virtual void onAboutToQuit(); + virtual void onGuiTimerUpdate() = 0; + virtual void onLanguageChange() = 0; protected: QByteArray m_applicationName; /// the base directory for resources of the program like configuration file. @@ -62,6 +66,8 @@ protected: QString m_languages; // Path of the program file QString m_installPath; + QAction* m_english; + QAction* m_german; }; #endif /* REGUIAPPLICATION_HPP_ */ diff --git a/gui/regui.hpp b/gui/regui.hpp index b65228f..6fb6451 100644 --- a/gui/regui.hpp +++ b/gui/regui.hpp @@ -16,6 +16,7 @@ #include #include #include +#include #include #include "gui/ReGuiUtils.hpp" #include "gui/ReGuiQueue.hpp"