diff --git a/src/core/CsvParser.cpp b/src/core/CsvParser.cpp index 2032e8f6..4fc4281b 100644 --- a/src/core/CsvParser.cpp +++ b/src/core/CsvParser.cpp @@ -377,10 +377,8 @@ int CsvParser::getCsvRows() const { void CsvParser::appendStatusMsg(QString s, bool isCritical) { - m_statusMsg += s - .append(": (row,col) " + QString::number(m_currRow)) - .append(",") - .append(QString::number(m_currCol)) + m_statusMsg += QObject::tr("%1: (row, col) %2,%3") + .arg(s, m_currRow, m_currCol) .append("\n"); m_isGood = !isCritical; } diff --git a/src/core/Entry.cpp b/src/core/Entry.cpp index 25ef6b50..00fec506 100644 --- a/src/core/Entry.cpp +++ b/src/core/Entry.cpp @@ -681,7 +681,7 @@ Entry* Entry::clone(CloneFlags flags) const } if (flags & CloneRenameTitle) - entry->setTitle(entry->title() + tr(" - Clone", "Suffix added to cloned entries")); + entry->setTitle(tr("%1 - Clone").arg(entry->title())); return entry; } diff --git a/src/core/Group.cpp b/src/core/Group.cpp index 69267265..262a4af8 100644 --- a/src/core/Group.cpp +++ b/src/core/Group.cpp @@ -616,7 +616,7 @@ QString Group::print(bool recursive, int depth) QString indentation = QString(" ").repeated(depth); if (entries().isEmpty() && children().isEmpty()) { - response += indentation + "[empty]\n"; + response += indentation + tr("[empty]", "group has no children") + "\n"; return response; } @@ -911,7 +911,7 @@ void Group::markOlderEntry(Entry* entry) { entry->attributes()->set( "merged", - QString("older entry merged from database \"%1\"").arg(entry->group()->database()->metadata()->name())); + tr("older entry merged from database \"%1\"").arg(entry->group()->database()->metadata()->name())); } bool Group::resolveSearchingEnabled() const diff --git a/src/format/Kdbx3Reader.cpp b/src/format/Kdbx3Reader.cpp index 84f7db67..82d59bc6 100644 --- a/src/format/Kdbx3Reader.cpp +++ b/src/format/Kdbx3Reader.cpp @@ -42,7 +42,7 @@ Database* Kdbx3Reader::readDatabaseImpl(QIODevice* device, const QByteArray& hea if (m_masterSeed.isEmpty() || m_encryptionIV.isEmpty() || m_streamStartBytes.isEmpty() || m_protectedStreamKey.isEmpty() || m_db->cipher().isNull()) { - raiseError("missing database headers"); + raiseError(tr("missing database headers")); return nullptr; } @@ -134,7 +134,7 @@ Database* Kdbx3Reader::readDatabaseImpl(QIODevice* device, const QByteArray& hea if (!xmlReader.headerHash().isEmpty()) { QByteArray headerHash = CryptoHash::hash(headerData, CryptoHash::Sha256); if (headerHash != xmlReader.headerHash()) { - raiseError("Header doesn't match hash"); + raiseError(tr("Header doesn't match hash")); return nullptr; } } @@ -146,7 +146,7 @@ bool Kdbx3Reader::readHeaderField(StoreDataStream& headerStream) { QByteArray fieldIDArray = headerStream.read(1); if (fieldIDArray.size() != 1) { - raiseError("Invalid header id size"); + raiseError(tr("Invalid header id size")); return false; } char fieldID = fieldIDArray.at(0); @@ -154,7 +154,7 @@ bool Kdbx3Reader::readHeaderField(StoreDataStream& headerStream) bool ok; auto fieldLen = Endian::readSizedInt(&headerStream, KeePass2::BYTEORDER, &ok); if (!ok) { - raiseError("Invalid header field length"); + raiseError(tr("Invalid header field length")); return false; } @@ -162,7 +162,7 @@ bool Kdbx3Reader::readHeaderField(StoreDataStream& headerStream) if (fieldLen != 0) { fieldData = headerStream.read(fieldLen); if (fieldData.size() != fieldLen) { - raiseError("Invalid header data length"); + raiseError(tr("Invalid header data length")); return false; } } diff --git a/src/format/KdbxXmlReader.cpp b/src/format/KdbxXmlReader.cpp index 0eb9e1c6..77ec2604 100644 --- a/src/format/KdbxXmlReader.cpp +++ b/src/format/KdbxXmlReader.cpp @@ -179,8 +179,9 @@ QString KdbxXmlReader::errorString() const { if (m_error) { return m_errorStr; - }if (m_xml.hasError()) { - return QString("XML error:\n%1\nLine %2, column %3") + } + if (m_xml.hasError()) { + return tr("XML error:\n%1\nLine %2, column %3") .arg(m_xml.errorString()) .arg(m_xml.lineNumber()) .arg(m_xml.columnNumber()); diff --git a/src/format/KeePass1Reader.cpp b/src/format/KeePass1Reader.cpp index 39085707..02810b98 100644 --- a/src/format/KeePass1Reader.cpp +++ b/src/format/KeePass1Reader.cpp @@ -363,7 +363,7 @@ SymmetricCipherStream* KeePass1Reader::testKeys(const QString& password, const Q cipherStream->reset(); cipherStream->close(); if (!m_device->seek(contentPos)) { - QString msg = "unable to seek to content position"; + QString msg = tr("unable to seek to content position"); if (!m_device->errorString().isEmpty()) { msg.append("\n").append(m_device->errorString()); } diff --git a/src/gui/AboutDialog.cpp b/src/gui/AboutDialog.cpp index 249807ee..10f42cd7 100644 --- a/src/gui/AboutDialog.cpp +++ b/src/gui/AboutDialog.cpp @@ -82,23 +82,23 @@ AboutDialog::AboutDialog(QWidget* parent) QString extensions; #ifdef WITH_XC_AUTOTYPE - extensions += "\n- Auto-Type"; + extensions += "\n- " + tr("Auto-Type"); #endif #ifdef WITH_XC_BROWSER - extensions += "\n- Browser Integration"; + extensions += "\n- " + tr("Browser Integration"); #endif #ifdef WITH_XC_HTTP - extensions += "\n- Legacy Browser Integration (KeePassHTTP)"; + extensions += "\n- " + tr("Legacy Browser Integration (KeePassHTTP)"); #endif #ifdef WITH_XC_SSHAGENT - extensions += "\n- SSH Agent"; + extensions += "\n- " + tr("SSH Agent"); #endif #ifdef WITH_XC_YUBIKEY - extensions += "\n- YubiKey"; + extensions += "\n- " + tr("YubiKey"); #endif if (extensions.isEmpty()) - extensions = " None"; + extensions = " " + tr("None"); debugInfo.append(tr("Enabled extensions:").append(extensions)); diff --git a/src/gui/DatabaseTabWidget.cpp b/src/gui/DatabaseTabWidget.cpp index ef25e90f..832512e9 100644 --- a/src/gui/DatabaseTabWidget.cpp +++ b/src/gui/DatabaseTabWidget.cpp @@ -534,12 +534,12 @@ void DatabaseTabWidget::updateTabName(Database* db) if (db->metadata()->name().isEmpty()) { tabName = tr("New database"); } else { - tabName = QString("%1 [%2]").arg(db->metadata()->name(), tr("New database")); + tabName = tr("%1 [New database]", "tab modifier").arg(db->metadata()->name()); } } if (dbStruct.dbWidget->currentMode() == DatabaseWidget::LockedMode) { - tabName.append(QString(" [%1]").arg(tr("locked"))); + tabName = tr("%1 [locked]", "tab modifier").arg(tabName); } if (dbStruct.modified) { diff --git a/src/gui/DetailsWidget.cpp b/src/gui/DetailsWidget.cpp index 77de2466..fcf8ecb5 100644 --- a/src/gui/DetailsWidget.cpp +++ b/src/gui/DetailsWidget.cpp @@ -216,7 +216,7 @@ void DetailsWidget::updateEntryAttributesTab() if (m_currentEntry->attributes()->isProtected(key)) { value = "" + tr("[PROTECTED]") + ""; } - attributesText.append(QString("%1: %2
").arg(key, value)); + attributesText.append(tr("%1: %2", "attributes line").arg(key, value).append("
")); } m_ui->entryAttributesEdit->setText(attributesText); } diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index 1822c48d..2e059544 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -673,7 +673,7 @@ void MainWindow::updateWindowTitle() customWindowTitlePart.remove(customWindowTitlePart.size() - 1, 1); } if (m_ui->tabWidget->readOnly(tabWidgetIndex)) { - customWindowTitlePart.append(QString(" [%1]").arg(tr("read-only"))); + customWindowTitlePart = tr("%1 [read-only]", "window title modifier").arg(customWindowTitlePart); } m_ui->actionDatabaseSave->setEnabled(m_ui->tabWidget->canSave(tabWidgetIndex)); } else if (stackedWidgetIndex == 1) {