diff --git a/aboutdialog.cpp b/aboutdialog.cpp
index 32a9eaf..f92b2be 100644
--- a/aboutdialog.cpp
+++ b/aboutdialog.cpp
@@ -8,13 +8,13 @@ AboutDialog::AboutDialog(QWidget *parent, QString version) :
ui(new Ui::AboutDialog)
{
ui->setupUi(this);
- ui->version->setText("Version "+version);
+ ui->version->setText(tr("Version ")+version);
ui->btnFermer->setFocus();
}
void AboutDialog::on_btnQt_clicked()
{
- QMessageBox::aboutQt(this, "À propos de Qt");
+ QMessageBox::aboutQt(this, tr("À propos de Qt"));
}
AboutDialog::~AboutDialog()
diff --git a/aboutdialog.ui b/aboutdialog.ui
index 6ecba17..2af6b18 100644
--- a/aboutdialog.ui
+++ b/aboutdialog.ui
@@ -42,7 +42,7 @@
- Version
+ Version
diff --git a/deuchnord-hermes.pro b/deuchnord-hermes.pro
index d24d4ac..e5d725e 100644
--- a/deuchnord-hermes.pro
+++ b/deuchnord-hermes.pro
@@ -40,6 +40,8 @@ FORMS += mainwindow.ui \
scannerdialog.ui \
settingsdialog.ui
+TRANSLATIONS = strings.ts
+
RESOURCES += \
resources.qrc
diff --git a/deuchnord-hermes.pro.user b/deuchnord-hermes.pro.user
index fec12c3..0fff5ee 100644
--- a/deuchnord-hermes.pro.user
+++ b/deuchnord-hermes.pro.user
@@ -1,6 +1,6 @@
-
+
ProjectExplorer.Project.ActiveTarget
diff --git a/gestionmagasinsdialog.cpp b/gestionmagasinsdialog.cpp
index 83e0cf2..922f0b4 100644
--- a/gestionmagasinsdialog.cpp
+++ b/gestionmagasinsdialog.cpp
@@ -46,7 +46,7 @@ GestionMagasinsDialog::GestionMagasinsDialog(QWidget *parent) :
void GestionMagasinsDialog::on_btnAjoutMagasin_clicked()
{
- QString nom = QInputDialog::getText(this, "Ajouter un magasin", "Veuillez entrer le nom du nouveau magasin :");
+ QString nom = QInputDialog::getText(this, tr("Ajouter un magasin"), tr("Veuillez entrer le nom du nouveau magasin :"));
if(nom != "")
{
int nb = ui->listMagasins->count();
@@ -59,7 +59,7 @@ void GestionMagasinsDialog::on_btnAjoutMagasin_clicked()
}
if(alreadyHere)
- QMessageBox::warning(this, "Ajout impossible", "Le magasin est déjà présent dans la liste !");
+ QMessageBox::warning(this, tr("Ajout impossible"), tr("Le magasin est déjà présent dans la liste !"));
else
ui->listMagasins->addItem(nom);
}
@@ -67,7 +67,7 @@ void GestionMagasinsDialog::on_btnAjoutMagasin_clicked()
void GestionMagasinsDialog::on_btnSupprMagasin_clicked()
{
- if(QMessageBox::question(this, "Supprimer "+ui->listMagasins->currentItem()->text()+" ?", "Voulez-vous vraiment supprimer ce magasin ? Tous les produits associés perdront cette information, même si vous cliquez sur Annuler plus tard.", QMessageBox::Yes|QMessageBox::No) == QMessageBox::Yes)
+ if(QMessageBox::question(this, tr("Suppression"), tr("Voulez-vous vraiment supprimer ce magasin ? Tous les produits associés perdront cette information, même si vous cliquez sur Annuler plus tard."), QMessageBox::Yes|QMessageBox::No) == QMessageBox::Yes)
{
int row = ui->listMagasins->currentRow();
delete ui->listMagasins->currentItem();
diff --git a/gestionmagasinsdialog.ui b/gestionmagasinsdialog.ui
index 9932631..13f9ff2 100644
--- a/gestionmagasinsdialog.ui
+++ b/gestionmagasinsdialog.ui
@@ -74,9 +74,6 @@
-
- Qt::Horizontal
- QDialogButtonBox::Cancel|QDialogButtonBox::Ok
diff --git a/infosproduitdialog.cpp b/infosproduitdialog.cpp
index 2d0ea36..55af783 100644
--- a/infosproduitdialog.cpp
+++ b/infosproduitdialog.cpp
@@ -20,7 +20,7 @@ InfosProduitDialog::InfosProduitDialog(QWidget *parent, QWidget *mainWindow, QSt
ui->setupUi(this);
parentWidget = parent;
- // On ajoute une ligne vide, conrrespondant à un magasin non reseigné. Il correspond à un indexMagasin de -1
+ // On ajoute une ligne vide, correspondant à un magasin non renseigné. Il correspond à un indexMagasin de -1
ui->comboMagasin->addItem("");
// Récupération de la liste des magasins enregistrés
@@ -90,7 +90,7 @@ InfosProduitDialog::InfosProduitDialog(QWidget *parent, QWidget *mainWindow, QSt
void InfosProduitDialog::on_btnImageParcourir_clicked()
{
- QString filename = QFileDialog::getOpenFileName(this, "Sélectionnez une image", "", "Images supportées (*.bmp *.gif *.jpg *.jpeg *.png *.pbm *.pgm *.ppm *.xbm *.xpm)");
+ QString filename = QFileDialog::getOpenFileName(this, tr("Sélectionnez une image"), "", tr("Images supportées")+" (*.bmp *.gif *.jpg *.jpeg *.png *.pbm *.pgm *.ppm *.xbm *.xpm)");
if(filename != "")
{
image = QPixmap(filename);
@@ -107,7 +107,7 @@ void InfosProduitDialog::on_btnImageSupprimer_clicked()
void InfosProduitDialog::on_btnAjoutFacture_clicked()
{
- QString fileName = QFileDialog::getOpenFileName(this, "Sélectionnez une facture", "", "Fichiers supportés (*.pdf *.jpg *.jpeg *.png);;Fichiers PDF (*.pdf);;Images (*.jpg *.jpeg *.png)");
+ QString fileName = QFileDialog::getOpenFileName(this, tr("Sélectionnez une facture"), "", tr("Fichiers supportés")+" (*.pdf *.jpg *.jpeg *.png);;"+tr("Fichiers PDF")+" (*.pdf);;"+tr("Images")+" (*.jpg *.jpeg *.png)");
if(fileName != "")
{
QFile fichier(fileName);
@@ -122,7 +122,7 @@ void InfosProduitDialog::on_btnAjoutFacture_clicked()
ui->listFactures->addItem(infoFile.fileName());
}
else
- QMessageBox::critical(this, "Erreur", "Impossible de lire le fichier "+fichier.fileName()+"\nVérifiez qu'il est bien accessible en lecture et réessayez.");
+ QMessageBox::critical(this, tr("Erreur"), tr("Impossible de lire le fichier %1\nVérifiez qu'il est bien accessible en lecture et réessayez.", "%1 represents the file name").arg(fichier.fileName()));
}
}
@@ -155,7 +155,7 @@ void InfosProduitDialog::on_factureScanned()
ui->listFactures->addItem(infoFile.fileName());
}
else
- QMessageBox::critical(this, "Erreur", "Une erreur s'est produite lors de l'ajout de votre document numérisé.\nVous pouvez toujours ajouter le document manuellement, il se trouve ici : "+fileName);
+ QMessageBox::critical(this, tr("Erreur"), tr("Une erreur s'est produite lors de l'ajout de votre document numérisé.\nVous pouvez toujours ajouter le document manuellement, il se trouve ici : %1", "%1 represents the place of the file in the temp directory").arg(fileName));
}
void InfosProduitDialog::on_listFactures_currentRowChanged()
@@ -175,7 +175,7 @@ void InfosProduitDialog::on_listFactures_itemDoubleClicked(QListWidgetItem *item
void InfosProduitDialog::on_btnSupprFacture_clicked()
{
- if(QMessageBox::question(this, "Hermès", "Voulez-vous vraiment supprimer cette facture ?\nCette action n'est pas réversible.", QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes)
+ if(QMessageBox::question(this, tr("Hermès"), tr("Voulez-vous vraiment supprimer cette facture ?\nCette action n'est pas réversible."), QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes)
{
QListWidgetItem *item = ui->listFactures->selectedItems().value(0);
facturePDF.remove(item->text());
@@ -188,7 +188,7 @@ void InfosProduitDialog::on_btnSupprFacture_clicked()
void InfosProduitDialog::on_btnAjoutGarantie_clicked()
{
- QString fileName = QFileDialog::getOpenFileName(this, "Sélectionnez une fiche garantie", "", "Fichiers PDF (*.pdf);;Image (*.jpg *.jpeg *.png)");
+ QString fileName = QFileDialog::getOpenFileName(this, tr("Sélectionnez une fiche garantie"), "", tr("Fichiers supportés")+" (*.pdf *.jpg *.jpeg *.png);;"+tr("Fichiers PDF")+" (*.pdf);;"+tr("Images")+" (*.jpg *.jpeg *.png)");
if(fileName != "")
{
QFile fichier(fileName);
@@ -203,7 +203,7 @@ void InfosProduitDialog::on_btnAjoutGarantie_clicked()
ui->listGaranties->addItem(infoFile.fileName());
}
else
- QMessageBox::critical(this, "Erreur", "Impossible de lire le fichier "+fichier.fileName()+"\nVérifiez qu'il est bien accessible en lecture et réessayez.");
+ QMessageBox::critical(this, tr("Erreur"), tr("Impossible de lire le fichier %1\nVérifiez qu'il est bien accessible en lecture et réessayez.", "%1 represents the file name").arg(fichier.fileName()));
}
}
@@ -235,7 +235,7 @@ void InfosProduitDialog::on_garantieScanned()
ui->listGaranties->addItem(infoFile.fileName());
}
else
- QMessageBox::critical(this, "Erreur", "Une erreur s'est produite lors de l'ajout de votre document numérisé.\nVous pouvez toujours ajouter le document manuellement, il se trouve ici : "+fileName);
+ QMessageBox::critical(this, tr("Erreur"), tr("Une erreur s'est produite lors de l'ajout de votre document numérisé.\nVous pouvez toujours ajouter le document manuellement, il se trouve ici : %1", "%1 represents the place of the file in the temp directory").arg(fileName));
}
void InfosProduitDialog::on_listGaranties_currentRowChanged()
@@ -255,7 +255,7 @@ void InfosProduitDialog::on_listGaranties_itemDoubleClicked(QListWidgetItem *ite
void InfosProduitDialog::on_btnSupprGarantie_clicked()
{
- if(QMessageBox::question(this, "Hermès", "Voulez-vous vraiment supprimer cette fiche garantie ?\nCette action n'est pas réversible.", QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes)
+ if(QMessageBox::question(this, tr("Hermès"), tr("Voulez-vous vraiment supprimer cette fiche garantie ?\nCette action n'est pas réversible."), QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes)
{
QListWidgetItem *item = ui->listGaranties->selectedItems().value(0);
garantiePDF.remove(item->text());
diff --git a/main.cpp b/main.cpp
index b47b2c1..78d2cdd 100644
--- a/main.cpp
+++ b/main.cpp
@@ -7,12 +7,14 @@
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
- MainWindow w;
QString locale = QLocale::system().name().section('_', 0, 0);
- QTranslator translator;
- translator.load(QString("qt_") + locale, QLibraryInfo::location(QLibraryInfo::TranslationsPath));
- a.installTranslator(&translator);
+
+ QTranslator* translator = new QTranslator();
+ translator->load("translations/"+locale+".qm");
+ a.installTranslator(translator);
+
+ MainWindow w;
w.show();
return a.exec();
diff --git a/mainwindow.cpp b/mainwindow.cpp
index 06ac59f..db3bf4f 100644
--- a/mainwindow.cpp
+++ b/mainwindow.cpp
@@ -33,12 +33,11 @@ MainWindow::MainWindow(QWidget *parent) :
saveOnQuit = true;
- version = "0.4.1";
+ version = "0.5";
searchBox = new QLineEdit(this);
searchBox->addAction(QIcon(":/icons/icon-search.png"), QLineEdit::LeadingPosition);
- searchBox->setPlaceholderText("Rechercher...");
- searchBox->setToolTip("Recherchez un produit à partir de son nom.\nLa casse n'est pas prise en compte.");
+ searchBox->setPlaceholderText(tr("Rechercher..."));
searchBox->setClearButtonEnabled(true);
connect(searchBox, SIGNAL(textChanged(QString)), SLOT(searchProduit(QString)));
@@ -99,8 +98,8 @@ void MainWindow::dlVersionFinished(QNetworkReply *reply)
QString versionAvailable = reply->readAll();
if(versionAvailable != "" && version != versionAvailable)
{
- ui->statusBar->showMessage("Une nouvelle version ("+versionAvailable+") est disponible !");
- QPushButton* btnUpdate = new QPushButton("Télécharger la nouvelle version");
+ ui->statusBar->showMessage(tr("Une nouvelle version (%1) est disponible !", "%1 represents the number of the new version (for instance: 0.4.1)").arg(versionAvailable));
+ QPushButton* btnUpdate = new QPushButton(tr("Télécharger la nouvelle version"));
connect(btnUpdate, SIGNAL(clicked()), this, SLOT(dlNewVersionBtnClicked()));
ui->statusBar->addPermanentWidget(btnUpdate);
}
@@ -166,12 +165,12 @@ void MainWindow::on_actionNouveauProduit_triggered()
if(nbMagasins == 0)
{
- QMessageBox::critical(this, "Erreur", "Aucun magasin ne semble avoir été enregistré.\nVeuillez les enregistrer avant d'entrer vos produits.");
+ QMessageBox::critical(this, tr("Erreur"), tr("Aucun magasin ne semble avoir été enregistré.\nVeuillez les enregistrer avant d'entrer vos produits."));
ui->actionGererMagasins->trigger();
}
else
{
- ProduitItem *prod = new ProduitItem(this, "Nouveau produit", QDate::currentDate(), QDate::currentDate().addYears(1));
+ ProduitItem *prod = new ProduitItem(this, tr("Nouveau produit", "Showed in the field \"Name\" in the product information window by default."), QDate::currentDate(), QDate::currentDate().addYears(1));
prod->openDialog(true);
QListWidgetItem* item = ajouterProduit(prod);
item->setSelected(true);
@@ -193,7 +192,7 @@ void MainWindow::on_actionSupprimerProduit_triggered(bool dontAskConfirm)
int answer;
if(!dontAskConfirm)
- answer = QMessageBox::question(this, "Supprimer le produit", "Êtes-vous sûr de vouloir supprimer ce produit ?\nCette action n'est pas réversible.", QMessageBox::Yes | QMessageBox::No);
+ answer = QMessageBox::question(this, tr("Supprimer le produit"), tr("Êtes-vous sûr de vouloir supprimer ce produit ?\nCette action n'est pas réversible."), QMessageBox::Yes | QMessageBox::No);
else
answer = QMessageBox::Yes;
@@ -290,7 +289,7 @@ void MainWindow::updateStatusMessage()
if(!ui->listeProduits->item(i)->isHidden())
nb++;
- ui->statusBar->showMessage(QString::number(nb)+" produit(s) affiché(s).");
+ ui->statusBar->showMessage(tr("%n produit(s) affiché(s).", "", nb));
}
MainWindow::~MainWindow()
diff --git a/produititem.cpp b/produititem.cpp
index fb833f9..db3fdc7 100644
--- a/produititem.cpp
+++ b/produititem.cpp
@@ -38,7 +38,7 @@ ProduitItem::ProduitItem(QWidget *parent, QString nomProduit, QDate dateAchat, Q
this->image = image;
this->image.scaled(QSize(128, 128), Qt::KeepAspectRatio);
ui->image->setPixmap(this->image);
- ui->btnMoreInfo->setToolTip("Ouvre une fenêtre contenant toutes les informations\nsur votre "+nomProduit+".");
+ ui->btnMoreInfo->setToolTip(tr("Ouvre une fenêtre contenant toutes les informations\nsur votre %1.", "%1 represents the name of the product, as given in the Name field.").arg(nomProduit));
}
void ProduitItem::on_btnMoreInfo_clicked(bool deleteOnCancel)
@@ -117,40 +117,19 @@ void ProduitItem::setGaranties(QHash garanties)
// Permet de mettre à jour le petit texte en-dessous du nom du produit
void ProduitItem::updateDescription()
{
- QString jourAchat = QString::number(dateAchat.day());
-
- if(dateAchat.day() < 10)
- jourAchat = "0"+jourAchat;
-
- QString moisAchat = QString::number(dateAchat.month());
-
- if(dateAchat.month() < 10)
- moisAchat = "0"+moisAchat;
-
- descriptionListe = "Acheté le "+jourAchat+"/"+moisAchat+"/"+QString::number(dateAchat.year())+", ";
-
- QString jourFinGarantie = QString::number(dateFinGarantie.day());
-
- if(dateFinGarantie.day() < 10)
- jourFinGarantie = "0"+jourFinGarantie;
-
- QString moisFinGarantie = QString::number(dateFinGarantie.month());
-
- if(dateFinGarantie.month() < 10)
- moisFinGarantie = "0"+moisFinGarantie;
if(dateFinGarantie != QDate(1970, 1, 1))
{
if(QDate::currentDate() < dateFinGarantie)
- descriptionListe += "fin de la garantie le "+jourFinGarantie+"/"+moisFinGarantie+"/"+QString::number(dateFinGarantie.year());
+ descriptionListe = tr("Acheté le %1, fin de la garantie le %2", "%1 and %2 are dates").arg(dateAchat.toString(Qt::LocaleDate), dateAchat.toString(Qt::LocaleDate));
else
- descriptionListe += "garantie expirée";
+ descriptionListe = tr("Acheté le %1, garantie expirée", "%1 is a date").arg(dateAchat.toString(Qt::LocaleDate));
}
else
- descriptionListe += "garantie à vie";
+ descriptionListe = tr("Acheté le %1, garantie à vie", "%1 is a date").arg(dateAchat.toString(Qt::LocaleDate));
if(this->enSAV)
- descriptionListe += "\nParti en SAV";
+ descriptionListe += tr("\nParti en SAV");
ui->infosProduit->setText(descriptionListe);
}
diff --git a/produititem.ui b/produititem.ui
index 81bbf8a..ddc9fe8 100644
--- a/produititem.ui
+++ b/produititem.ui
@@ -17,7 +17,7 @@
- Form
+ Form
@@ -29,7 +29,7 @@
- <img src="~/Images/sw2.jpg" />
+
@@ -49,7 +49,7 @@
- <h1>Nom produit</h1>
+ <h1>Nom produit</h1>
@@ -84,7 +84,7 @@
- TextLabel
+ TextLabelQt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
diff --git a/scannerdialog.cpp b/scannerdialog.cpp
index 2335758..5514eca 100644
--- a/scannerdialog.cpp
+++ b/scannerdialog.cpp
@@ -65,10 +65,10 @@ void ScannerDialog::scanTestFinished(int r = 0)
if(c == 0)
QDesktopServices::openUrl(QUrl("file://"+QDir::tempPath()+"/test.pdf"));
else
- QMessageBox::critical(this, "Erreur", "Votre document a pu être numérisé, mais un problème est survenu lors de son traitement.\nErreur "+QString::number(c));
+ QMessageBox::critical(this, tr("Erreur"), tr("Votre document a pu être numérisé, mais un problème est survenu lors de son traitement.\nErreur %1").arg(QString::number(c)));
}
else
- QMessageBox::critical(this, "Erreur", "Impossible de communiquer avec votre scanner. Vérifiez qu'il est bien relié à l'ordinateur' et qu'il est sous tension, puis réessayez.\nSi le problème persiste, il est probable que votre scanner ne soit pas pris en charge.");
+ QMessageBox::critical(this, tr("Erreur"), tr("Impossible de communiquer avec votre scanner. Vérifiez qu'il est bien relié à l'ordinateur' et qu'il est sous tension, puis réessayez.\nSi le problème persiste, il est probable que votre scanner ne soit pas pris en charge."));
#endif
}
@@ -97,10 +97,10 @@ void ScannerDialog::scanFinished(int r)
{
int c = system(s.c_str());
if(c != 0)
- QMessageBox::critical(this, "Erreur", "Votre document a pu être numérisé, mais un problème est survenu lors de son traitement.\nErreur "+QString::number(c));
+ QMessageBox::critical(this, tr("Erreur"), tr("Votre document a pu être numérisé, mais un problème est survenu lors de son traitement.\nErreur %1").arg(QString::number(c)));
else
this->accept();
}
else
- QMessageBox::critical(this, "Erreur", "Impossible de communiquer avec votre scanner. Vérifiez qu'il est bien relié à l'ordinateur' et qu'il est sous tension, puis réessayez.\nSi le problème persiste, il est probable que votre scanner ne soit pas pris en charge.");
+ QMessageBox::critical(this, tr("Erreur"), tr("Impossible de communiquer avec votre scanner. Vérifiez qu'il est bien relié à l'ordinateur' et qu'il est sous tension, puis réessayez.\nSi le problème persiste, il est probable que votre scanner ne soit pas pris en charge."));
}
diff --git a/settingsdialog.cpp b/settingsdialog.cpp
index b22ade5..0922813 100644
--- a/settingsdialog.cpp
+++ b/settingsdialog.cpp
@@ -19,13 +19,13 @@ SettingsDialog::SettingsDialog(QWidget *parent) :
void SettingsDialog::on_btnChangeSavePlace_clicked()
{
- QString savePlace = QFileDialog::getExistingDirectory(this, "Choisir un dossier de sauvegarde", settings->value("placeSave").toString());
+ QString savePlace = QFileDialog::getExistingDirectory(this, tr("Choisir un dossier de sauvegarde"), settings->value("placeSave").toString());
bool ok = true;
bool replaceFile = false;
QDir dir(savePlace+"/deuchnord-hermes");
if(dir.exists())
{
- int whatToDo = QMessageBox::question(this, "Confirmation", "Des fichiers appartenant à Hermès semblent être déjà présents. Que voulez-vous faire ? Cliquez sur Appliquer pour utiliser les fichiers présents à cet emplacement. Cliquez sur Réinitialiser pour écraser les fichiers présents à cet emplacement. Cliquez sur Annuler pour ne pas changer l'emplacement.", QMessageBox::Apply | QMessageBox::Reset | QMessageBox::Cancel, QMessageBox::Cancel);
+ int whatToDo = QMessageBox::question(this, tr("Confirmation"), tr("Des fichiers appartenant à Hermès semblent être déjà présents. Que voulez-vous faire ? Cliquez sur Appliquer pour utiliser les fichiers présents à cet emplacement. Cliquez sur Réinitialiser pour écraser les fichiers présents à cet emplacement. Cliquez sur Annuler pour ne pas changer l'emplacement.", "The texts in italic should correspond to the texts on the buttons."), QMessageBox::Apply | QMessageBox::Reset | QMessageBox::Cancel, QMessageBox::Cancel);
switch(whatToDo)
{
@@ -75,10 +75,10 @@ void SettingsDialog::on_buttonBox_accepted()
// Affichage d'un message s'il faut redémarrer Hermès
if(restartNeeded)
{
- QString message = "Certains changements dans votre configuration nécessite de relancer Hermès.";
+ QString message = tr("Certains changements dans votre configuration nécessitent de relancer Hermès.");
if(!restartWillSave)
- message += "\nAttention, les changements effectués ne seront pas enregistrés !";
- QMessageBox::warning(this, "Mise à jour de la configuration", message);
+ message += tr("\nAttention, les changements effectués ne seront pas enregistrés !");
+ QMessageBox::warning(this, tr("Mise à jour de la configuration"), message);
}
}
diff --git a/settingsdialog.ui b/settingsdialog.ui
index 87b0a3a..47f68e4 100644
--- a/settingsdialog.ui
+++ b/settingsdialog.ui
@@ -36,7 +36,7 @@
font-weight: bold
- TextLabel
+ TextLabeltrue
diff --git a/translations/en.qm b/translations/en.qm
new file mode 100644
index 0000000..fab2d69
Binary files /dev/null and b/translations/en.qm differ
diff --git a/translations/strings_en.ts b/translations/strings_en.ts
new file mode 100644
index 0000000..d46e7bd
--- /dev/null
+++ b/translations/strings_en.ts
@@ -0,0 +1,575 @@
+
+
+
+
+ AboutDialog
+
+
+
+ About Hermes
+
+
+
+
+ <html><head/><body><h1>Heuchnord Hermes</h1></body></html>
+
+
+
+
+ <html><head/><body><p>Hermes is a free software distributed by Jérôme Deuchnord under the MIT licensed.</p><p>Based on Qt 5.</p></body></html>
+
+
+
+
+
+ About Qt
+
+
+
+
+ Close
+
+
+
+
+ Version
+
+
+
+ GestionMagasinsDialog
+
+
+
+ Manage the shops...
+
+
+
+
+ Add
+
+
+
+
+ Delete
+
+
+
+
+ Add a shop
+
+
+
+
+ Please enter the name of the new shop:
+
+
+
+
+ Unable to add the shop
+
+
+
+
+ The shop is already in your list!
+
+
+
+
+ Delete the shop
+
+
+
+
+ Do you really want to delete this shop?<br />All the products associated willl lose this information, <em>even is you click Cancel later</em>.
+
+
+
+ InfosProduitDialog
+
+
+
+ Product information
+
+
+
+
+ Product
+
+
+
+
+ Name:
+
+
+
+
+ Buy on:
+
+
+
+
+ End of warranty:
+
+
+
+
+ Check this box if you sent the product to the manufacturer.
+
+
+
+
+ Sent to the manufacturer
+
+
+
+
+ Picture to display:
+
+
+
+
+ Picture
+
+
+
+
+ Set the picture...
+
+
+
+
+ Delete
+
+
+
+
+ Recommended height: 128px
+
+
+
+
+ This product's warranty has no end
+
+
+
+
+ Shop:
+
+
+
+
+ Bills && warranty cards
+
+
+
+
+ This tab allows you to store the digitized versions of your bills and warranties, in order to get rid of bulky paper. Your scanner should be good quality, because you will need to print them if you have to return the product to the manufacturer.
+You may open a bill or a warranty just by clicking it.
+
+
+
+
+ Bills
+
+
+
+
+ Add a bill
+
+
+
+
+ Digitize a bill and add it
+
+
+
+
+ Delete the bill
+
+
+
+
+ Warranty cards
+
+
+
+
+ Add a warranty card
+
+
+
+
+ Digitize a waranty card and add it
+
+
+
+
+ Delete the warranty card
+
+
+
+
+ Select a picture
+
+
+
+
+ Supported pictures
+
+
+
+
+ Select a bill
+
+
+
+
+
+ Supported files
+
+
+
+
+
+ PDF files
+
+
+
+
+
+ Pictures
+
+
+
+
+
+
+
+ Error
+
+
+
+
+
+ %1 represents the file name
+ Cannot read the file %1
+Please check it is readable and try again.
+
+
+
+
+
+ %1 represents the place of the file in the temp directory
+ An error has occured while adding the digitized document.
+You can add it manually, here is its place: %1
+
+
+
+
+
+ Hermes
+
+
+
+
+ Do really want to delete this bill?
+This action is irreversible.
+
+
+
+
+ Select a warranty card
+
+
+
+
+ Do you really want to delete this warranty card?
+This action is irreversible.
+
+
+
+ MainWindow
+
+
+
+ Warranties manager Hermes
+
+
+
+
+ File
+
+
+
+
+ Help
+
+
+
+
+ Tools
+
+
+
+
+ New product...
+
+
+
+
+ Ctrl+N
+
+
+
+
+
+ Delete the product
+
+
+
+
+ Ctrl+D
+
+
+
+
+ Manage the shops...
+
+
+
+
+ Help center (currently only in French)...
+
+
+
+
+ F1
+
+
+
+
+ About...
+
+
+
+
+ Report a bug...
+
+
+
+
+ Preferences
+
+
+
+
+ Search...
+
+
+
+
+ %1 represents the number of the new version (for instance: 0.4.1)
+ A new version (%1) is available!
+
+
+
+
+ Download the new version
+
+
+
+
+ Error
+
+
+
+
+ It seems you have no shops currently.
+Please enter your shops before to add your products.
+
+
+
+
+ Showed in the field "Name" in the product information window by default.
+ New product
+
+
+
+
+ Do really want to delete this product?
+This action is irreversible.
+
+
+
+
+
+ %n product displayed
+ %n products displayed
+
+
+
+
+ ProduitItem
+
+
+
+ More info...
+
+
+
+
+ %1 represents the name of the product, as given in the Name field.
+ Open a window containing all the information
+about your %1.
+
+
+
+
+ %1 and %2 are dates
+ Bought on %1, your warranty ends on %2
+
+
+
+
+ %1 is a date
+ Bought on %1, warranty expired
+
+
+
+
+ %1 is a date
+ Bought on %1, warranty without end
+
+
+
+
+ Returned to the manufacturer
+
+
+
+ ScannerDialog
+
+
+
+ Digitize a document
+
+
+
+
+ <html><head/><body><p><span style=" font-size:xx-large; font-weight:600;">Digitize a document</span></p></body></html>
+
+
+
+
+ <html><head/><body><p>This window allows you to digitize your document quickly.</p><p>Put your document into your scanner, and click the button <span style=" font-style:italic;">Digitize</span> bellow. You can make a test to check that your document is well placed too.</p><p>Notice that the test digitization is done in low resolution. It will not be saved on Hermes.</p></body></html>
+
+
+
+
+ Test
+
+
+
+
+ Digitize
+
+
+
+
+ Cancel
+
+
+
+
+
+
+
+ Error
+
+
+
+
+
+ Your document could be digitized, but a problem has occured while processing it.
+Error %1
+
+
+
+
+
+ Unable to find your scanner. Please check it is connected to your computer, and that it is switched on, then try again.
+If the problem persist, your scanner may be incompatible.
+
+
+
+ SettingsDialog
+
+
+
+ Preferences
+
+
+
+
+ Save place
+
+
+
+
+ Your current save place is:
+
+
+
+
+ Set the save place
+
+
+
+
+ <html><head/><body><p>A directory named <span style=" font-style:italic;">deuchnord-hermes</span> will be created with your data.</p></body></html>
+
+
+
+
+ Choose a save place
+
+
+
+
+ Confirmation
+
+
+
+
+ The texts in italic should correspond to the texts on the buttons.
+ There are files that seem to belong to Hermes here. What do you want to do?<br />Click <em>Apply</em> to use the files on this place.<br />Click <em>Reset</em> to delete the files on this place.<br />Click <em>Cancel</em> to not change the place.
+
+
+
+
+ Some changes in your configuration need to restart Hermes.
+
+
+
+
+ Caution, any changes will not be saved!
+
+
+
+
+ Changing the configuration
+
+
+