diff --git a/src/app/valentina/dialogs/dialogpatternproperties.cpp b/src/app/valentina/dialogs/dialogpatternproperties.cpp
index ce257ac43..9e3fe361b 100644
--- a/src/app/valentina/dialogs/dialogpatternproperties.cpp
+++ b/src/app/valentina/dialogs/dialogpatternproperties.cpp
@@ -173,6 +173,11 @@ DialogPatternProperties::DialogPatternProperties(const QString &filePath, VPatte
ui->lineEditCustomerName->setText(doc->GetCustomerName());
ui->labelCreationDate->setText(QDate::currentDate().toString(Qt::SystemLocaleLongDate));
ui->lineEditSize->setText(doc->GetPatternSize());
+
+ const QString plSize = QLatin1String("%") + qApp->TrVars()->PlaceholderToUser(pl_size) + QLatin1String("%");
+ const QString plHeight = QLatin1String("%") + qApp->TrVars()->PlaceholderToUser(pl_height) + QLatin1String("%");
+ ui->lineEditSize->setToolTip(tr("Use %1 and %2 to insert pattern size and height").arg(plSize, plHeight));
+
ui->checkBoxShowDate->setChecked(doc->IsDateVisible());
if (doc->MPath().isEmpty() == true)
{
@@ -184,7 +189,6 @@ DialogPatternProperties::DialogPatternProperties(const QString &filePath, VPatte
ui->checkBoxShowMeasurements->setChecked(doc->IsMeasurementsVisible());
}
-
connect(ui->lineEditPatternName, &QLineEdit::editingFinished, this, &DialogPatternProperties::GeneralInfoChanged);
connect(ui->lineEditPatternNumber, &QLineEdit::editingFinished, this, &DialogPatternProperties::GeneralInfoChanged);
connect(ui->lineEditCompanyName, &QLineEdit::editingFinished, this, &DialogPatternProperties::GeneralInfoChanged);
diff --git a/src/app/valentina/dialogs/dialogpatternproperties.ui b/src/app/valentina/dialogs/dialogpatternproperties.ui
index 5e04e4baf..2ef6a2803 100644
--- a/src/app/valentina/dialogs/dialogpatternproperties.ui
+++ b/src/app/valentina/dialogs/dialogpatternproperties.ui
@@ -1053,7 +1053,7 @@
10
10
401
- 241
+ 252
@@ -1139,9 +1139,6 @@
-
-
- Use %size% and %height% to insert pattern size and height
-
40
@@ -1189,8 +1186,8 @@
accept()
- 248
- 254
+ 257
+ 682
157
@@ -1205,8 +1202,8 @@
reject()
- 316
- 260
+ 325
+ 682
286
diff --git a/src/libs/vlayout/vtextmanager.cpp b/src/libs/vlayout/vtextmanager.cpp
index bd571b356..dfd19ca1b 100644
--- a/src/libs/vlayout/vtextmanager.cpp
+++ b/src/libs/vlayout/vtextmanager.cpp
@@ -35,6 +35,7 @@
#include "../ifc/xml/vabstractpattern.h"
#include "../vpatterndb/vpatternpiecedata.h"
+#include "../vmisc/vabstractapplication.h"
#include "vtextmanager.h"
//---------------------------------------------------------------------------------------------------------------------
@@ -324,8 +325,14 @@ void VTextManager::Update(const VAbstractPattern *pDoc, qreal dSize, qreal dHeig
tl.m_qsText = pDoc->GetPatternSize();
if (tl.m_qsText.isEmpty() == false)
{
- tl.m_qsText.replace(QApplication::translate("Detail", "%size%", 0), QString::number(dSize));
- tl.m_qsText.replace(QApplication::translate("Detail", "%height%", 0), QString::number(dHeight));
+ // Such describing placeholders will help avoid mistake of localization.
+ // Translators very often remove '%'.
+ QString placeholder = QLatin1String("%") + qApp->TrVars()->PlaceholderToUser(pl_size) + QLatin1String("%");
+ tl.m_qsText.replace(placeholder, QString::number(dSize));
+
+ placeholder = QLatin1String("%") + qApp->TrVars()->PlaceholderToUser(pl_height) + QLatin1String("%");
+ tl.m_qsText.replace(placeholder, QString::number(dHeight));
+
tl.m_eFontWeight = QFont::Normal;
tl.m_eStyle = QFont::StyleNormal;
tl.m_iFontSize = 0;
diff --git a/src/libs/vmisc/def.cpp b/src/libs/vmisc/def.cpp
index 3af5215fd..9aeb2904a 100644
--- a/src/libs/vmisc/def.cpp
+++ b/src/libs/vmisc/def.cpp
@@ -423,6 +423,9 @@ const QStringList builInPostfixOperators = QStringList() << cm_Oprt
<< mm_Oprt
<< in_Oprt;
+const QString pl_size = QStringLiteral("size");
+const QString pl_height = QStringLiteral("height");
+
const QString cursorArrowOpenHand = QStringLiteral("://cursor/cursor-arrow-openhand.png");
const QString cursorArrowCloseHand = QStringLiteral("://cursor/cursor-arrow-closehand.png");
diff --git a/src/libs/vmisc/def.h b/src/libs/vmisc/def.h
index 9a9d385b1..ad437abd6 100644
--- a/src/libs/vmisc/def.h
+++ b/src/libs/vmisc/def.h
@@ -592,6 +592,10 @@ extern const QString in_Oprt;
extern const QStringList builInPostfixOperators;
+// Placeholders
+extern const QString pl_size;
+extern const QString pl_height;
+
extern const QString cursorArrowOpenHand;
extern const QString cursorArrowCloseHand;
diff --git a/src/libs/vpatterndb/vtranslatevars.cpp b/src/libs/vpatterndb/vtranslatevars.cpp
index d3c0a04e4..ed994d762 100644
--- a/src/libs/vpatterndb/vtranslatevars.cpp
+++ b/src/libs/vpatterndb/vtranslatevars.cpp
@@ -55,12 +55,14 @@ VTranslateVars::VTranslateVars()
variables(QMap()),
functions(QMap()),
postfixOperators(QMap()),
+ placeholders(QMap()),
stDescriptions(QMap())
{
InitPatternMakingSystems();
InitVariables();
InitFunctions();
InitPostfixOperators();
+ InitPlaceholder();
}
//---------------------------------------------------------------------------------------------------------------------
@@ -430,6 +432,13 @@ void VTranslateVars::InitPostfixOperators()
postfixOperators.insert(in_Oprt, translate("VTranslateVars", "in", "inch"));
}
+//---------------------------------------------------------------------------------------------------------------------
+void VTranslateVars::InitPlaceholder()
+{
+ placeholders.insert(pl_size, translate("VTranslateVars", "size", "placeholder"));
+ placeholders.insert(pl_height, translate("VTranslateVars", "height", "placeholder"));
+}
+
#undef translate
//---------------------------------------------------------------------------------------------------------------------
@@ -614,6 +623,17 @@ QString VTranslateVars::InternalVarToUser(const QString &var) const
}
}
+//---------------------------------------------------------------------------------------------------------------------
+QString VTranslateVars::PlaceholderToUser(const QString &var) const
+{
+ if (placeholders.contains(var))
+ {
+ return placeholders.value(var).translate();
+ }
+
+ return var;
+}
+
//---------------------------------------------------------------------------------------------------------------------
QString VTranslateVars::VarToUser(const QString &var) const
{
@@ -945,6 +965,7 @@ void VTranslateVars::Retranslate()
InitVariables();
InitFunctions();
InitPostfixOperators();
+ InitPlaceholder();
}
//---------------------------------------------------------------------------------------------------------------------
diff --git a/src/libs/vpatterndb/vtranslatevars.h b/src/libs/vpatterndb/vtranslatevars.h
index badace6f0..b95eeef97 100644
--- a/src/libs/vpatterndb/vtranslatevars.h
+++ b/src/libs/vpatterndb/vtranslatevars.h
@@ -46,6 +46,7 @@ public:
bool VariablesToUser(QString &newFormula, int position, const QString &token, int &bias) const;
QString InternalVarToUser(const QString &var) const;
+ QString PlaceholderToUser(const QString &var) const;
QString VarToUser(const QString &var) const;
QString VarFromUser(const QString &var) const;
@@ -61,6 +62,7 @@ public:
QString FormulaToUser(const QString &formula, bool osSeparator) const;
virtual void Retranslate() Q_DECL_OVERRIDE;
+
QMap GetFunctions() const;
private:
@@ -71,12 +73,14 @@ private:
QMap variables;
QMap functions;
QMap postfixOperators;
+ QMap placeholders;
QMap stDescriptions;
void InitPatternMakingSystems();
void InitVariables();
void InitFunctions();
void InitPostfixOperators();
+ void InitPlaceholder();
void InitSystem(const QString &code, const qmu::QmuTranslation &name, const qmu::QmuTranslation &author,
const qmu::QmuTranslation &book);