Fix regression from Qt4 with layout direction

In Qt4, if the result of the translation

 QApplication::translate("QT_LAYOUT_DIRECTION")

returned "RTL", Qt usually called

 QApplication::setLayoutDirection(Qt::RightToLeft)

in order for a translation file to specify if the UI should be
left-to-right or right-to-left.

However, due to modularization, we could no longer call
QApplication::translate(), so the code was wrongly changed to call

 QCoreApplication::translate(....) instead.

This was wrong, and in addition the translation files was never updated
with the new context.

This patch fixes it to only translate it with the QGuiApplication context.
This is the only sensible context, since QApplication would lack QtQuick
support, and QCoreApplication would not know how to change layout
direction.

[ChangeLog][QtGui][i18n] Fixed bug where layout direction did not switch
according to the instruction in the translation file.

Task-number: QTBUG-43447
Change-Id: Id0409a42d41b3b9ff1cd53d090c4d9c9802f5659
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
This commit is contained in:
Jan Arve Saether 2015-02-03 14:54:52 +01:00 committed by Oswald Buddenhagen
parent 1043bf202b
commit 49af548abb
2 changed files with 2 additions and 2 deletions

View File

@ -179,7 +179,7 @@ extern void qInitImageConversions();
static bool qt_detectRTLLanguage()
{
return force_reverse ^
(QCoreApplication::tr("QT_LAYOUT_DIRECTION",
(QGuiApplication::tr("QT_LAYOUT_DIRECTION",
"Translate this string to the string 'LTR' in left-to-right"
" languages or to 'RTL' in right-to-left languages (such as Hebrew"
" and Arabic) to get proper widget layout.") == QLatin1String("RTL"));

View File

@ -243,7 +243,7 @@ void tst_languageChange::retranslatability()
QSKIP("The input data are not suitable for this layout (QDialogButtonBox::GnomeLayout)");
// This will always be queried for when a language changes
expected.insert("QCoreApplication::QT_LAYOUT_DIRECTION::Translate this string to the string 'LTR' in left-to-right "
expected.insert("QGuiApplication::QT_LAYOUT_DIRECTION::Translate this string to the string 'LTR' in left-to-right "
"languages or to 'RTL' in right-to-left languages (such as Hebrew and Arabic) to "
"get proper widget layout.");