diff --git a/ChangeLog.txt b/ChangeLog.txt index b0b58f20e..8b289f78f 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -44,6 +44,7 @@ - [#729] Moved Bezier curves can't be rotated. - [#742] Valentina produces wrong seam allowance. - [#743] Valentina doesn't update update pattern after adding item. +- Fix translation variables. # Version 0.5.0 May 9, 2017 - [#581] User can now filter input lists by keyword in function wizard. diff --git a/src/libs/ifc/xml/vabstractpattern.cpp b/src/libs/ifc/xml/vabstractpattern.cpp index 1b9366d6c..a98b44577 100644 --- a/src/libs/ifc/xml/vabstractpattern.cpp +++ b/src/libs/ifc/xml/vabstractpattern.cpp @@ -2046,7 +2046,14 @@ bool VAbstractPattern::IsVariable(const QString &token) const { if (token.indexOf( builInVariables.at(i) ) == 0) { - return true; + if (builInVariables.at(i) == currentLength || builInVariables.at(i) == currentSeamAllowance) + { + return token == builInVariables.at(i); + } + else + { + return true; + } } } diff --git a/src/libs/vpatterndb/vtranslatevars.cpp b/src/libs/vpatterndb/vtranslatevars.cpp index 627464819..e0ca6c460 100644 --- a/src/libs/vpatterndb/vtranslatevars.cpp +++ b/src/libs/vpatterndb/vtranslatevars.cpp @@ -530,15 +530,26 @@ void VTranslateVars::BiasTokens(int position, int bias, QMap &toke */ bool VTranslateVars::VariablesFromUser(QString &newFormula, int position, const QString &token, int &bias) const { + const QString currentLengthTr = variables.value(currentLength).translate(); + const QString currentSeamAllowanceTr = variables.value(currentSeamAllowance).translate(); + QMap::const_iterator i = variables.constBegin(); while (i != variables.constEnd()) { const qmu::QmuTranslation &var = i.value(); - if (token.indexOf( var.translate() ) == 0) + const QString varTr = var.translate(); + + if (token.indexOf(varTr) == 0) { - newFormula.replace(position, var.translate().length(), i.key()); + if ((varTr == currentLengthTr || varTr == currentSeamAllowanceTr) && token != varTr) + { + ++i; + continue; + } + + newFormula.replace(position, varTr.length(), i.key()); QString newToken = token; - newToken.replace(0, var.translate().length(), i.key()); + newToken.replace(0, varTr.length(), i.key()); bias = token.length() - newToken.length(); return true; } @@ -613,6 +624,12 @@ bool VTranslateVars::VariablesToUser(QString &newFormula, int position, const QS { if (token.indexOf( i.key() ) == 0) { + if ((i.key() == currentLength || i.key() == currentSeamAllowance) && token != i.key()) + { + ++i; + continue; + } + newFormula.replace(position, i.key().length(), i.value().translate()); QString newToken = token;