QTranslator switching in CalamaresUtils.

main
Teo Mrnjavac 10 years ago
parent fc4ce3d23b
commit 8b343ace4a

@ -44,6 +44,10 @@ namespace CalamaresUtils
static QDir s_appDataDir( CMAKE_INSTALL_FULL_DATADIR ); static QDir s_appDataDir( CMAKE_INSTALL_FULL_DATADIR );
static bool s_isAppDataDirOverridden = false; static bool s_isAppDataDirOverridden = false;
static QTranslator* s_translator = nullptr;
static QTranslator* s_qtTranslator = nullptr;
static bool static bool
isWritableDir( const QDir& dir ) isWritableDir( const QDir& dir )
{ {
@ -122,9 +126,10 @@ appLogDir()
void void
installTranslator( QObject* parent ) installTranslator( const QString& localeName, QObject* parent )
{ {
QString locale = QLocale::system().uiLanguages().first().replace( "-", "_" ); QString locale = localeName;
locale.replace( "-", "_" );
if ( locale == "C" ) if ( locale == "C" )
locale = "en"; locale = "en";
@ -141,7 +146,14 @@ installTranslator( QObject* parent )
translator->load( QString( ":/lang/calamares_en" ) ); translator->load( QString( ":/lang/calamares_en" ) );
} }
if ( s_translator )
{
QCoreApplication::removeTranslator( s_translator );
delete s_translator;
}
QCoreApplication::installTranslator( translator ); QCoreApplication::installTranslator( translator );
s_translator = translator;
// Qt translations // Qt translations
translator = new QTranslator( parent ); translator = new QTranslator( parent );
@ -154,7 +166,13 @@ installTranslator( QObject* parent )
qDebug() << "Translation: Qt: Using default locale, system locale one not found:" << locale; qDebug() << "Translation: Qt: Using default locale, system locale one not found:" << locale;
} }
if ( s_qtTranslator )
{
QCoreApplication::removeTranslator( s_qtTranslator );
delete s_qtTranslator;
}
QCoreApplication::installTranslator( translator ); QCoreApplication::installTranslator( translator );
s_qtTranslator = translator;
} }

@ -36,7 +36,7 @@ namespace CalamaresUtils
DLLEXPORT QDir appDataDir(); DLLEXPORT QDir appDataDir();
DLLEXPORT QDir appLogDir(); DLLEXPORT QDir appLogDir();
DLLEXPORT QDir systemLibDir(); DLLEXPORT QDir systemLibDir();
DLLEXPORT void installTranslator( QObject* parent ); DLLEXPORT void installTranslator( const QString& localeName, QObject* parent );
/** /**
* Override app data dir. Only for testing purposes. * Override app data dir. Only for testing purposes.

Loading…
Cancel
Save