From bfb7a47e138b2c91a319da5aefe3d6b670c3d921 Mon Sep 17 00:00:00 2001 From: Emir SARI Date: Sat, 15 Mar 2025 22:35:47 +0300 Subject: [PATCH] QPrintPreviewDialog: Improve i18n for percent value This fixes the initial percent value being in the wrong format for languages that have a different format set. Also enables locale-aware decimals separator. Change-Id: I77db487635284e58ed47ed3807fe4390d8d97123 Reviewed-by: Eirik Aavitsland --- src/printsupport/dialogs/qprintpreviewdialog.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/printsupport/dialogs/qprintpreviewdialog.cpp b/src/printsupport/dialogs/qprintpreviewdialog.cpp index 3c19e25c647..86742c4906e 100644 --- a/src/printsupport/dialogs/qprintpreviewdialog.cpp +++ b/src/printsupport/dialogs/qprintpreviewdialog.cpp @@ -141,6 +141,7 @@ public: void layoutPages(); void setupActions(); void updateNavActions(); + QString formattedZoomFactor(double value); void setFitting(bool on); bool isFitting(); void updatePageNumLabel(); @@ -223,7 +224,7 @@ void QPrintPreviewDialogPrivate::init(QPrinter *_printer) zoomFactor->setLineEdit(zoomEditor); static const short factorsX2[] = { 25, 50, 100, 200, 250, 300, 400, 800, 1600 }; for (auto factorX2 : factorsX2) - zoomFactor->addItem(QPrintPreviewDialog::tr("%1%").arg(factorX2 / 2.0)); + zoomFactor->addItem(formattedZoomFactor(factorX2 / 2.0)); QObject::connect(zoomFactor->lineEdit(), SIGNAL(editingFinished()), q, SLOT(_q_zoomFactorChanged())); QObject::connect(zoomFactor, SIGNAL(currentIndexChanged(int)), @@ -436,6 +437,12 @@ void QPrintPreviewDialogPrivate::setFitting(bool on) } } +QString QPrintPreviewDialogPrivate::formattedZoomFactor(double value) +{ + //: Zoom factor percentage value, % is the percent sign + return QPrintPreviewDialog::tr("%1%").arg(QLocale().toString(value, 'f', 1)); +} + void QPrintPreviewDialogPrivate::updateNavActions() { int curPage = preview->currentPage(); @@ -464,7 +471,7 @@ void QPrintPreviewDialogPrivate::updatePageNumLabel() void QPrintPreviewDialogPrivate::updateZoomFactor() { - zoomFactor->lineEdit()->setText(QString::asprintf("%.1f%%", preview->zoomFactor()*100)); + zoomFactor->lineEdit()->setText(formattedZoomFactor(preview->zoomFactor() * 100)); } void QPrintPreviewDialogPrivate::_q_fit(QAction* action) @@ -601,7 +608,7 @@ void QPrintPreviewDialogPrivate::_q_zoomFactorChanged() factor = qMax(qreal(1.0), qMin(qreal(1000.0), factor)); if (ok) { preview->setZoomFactor(factor/100.0); - zoomFactor->setEditText(QString::fromLatin1("%1%").arg(factor)); + zoomFactor->setEditText(formattedZoomFactor(factor)); setFitting(false); } }