[libcalamares] Implement getting the string

This commit is contained in:
Adriaan de Groot 2019-08-05 23:54:53 +02:00
parent 50d74c4eca
commit a9292d0c75
3 changed files with 98 additions and 67 deletions

View File

@ -21,8 +21,8 @@
#include "locale/LabelModel.h"
#include "locale/TranslatableConfiguration.h"
#include "utils/Logger.h"
#include "CalamaresVersion.h"
#include "utils/Logger.h"
#include <QtTest/QtTest>
@ -93,7 +93,8 @@ someLanguages()
}
void LocaleTests::testTranslatableLanguages()
void
LocaleTests::testTranslatableLanguages()
{
QStringList availableLanguages = QString( CALAMARES_TRANSLATION_LANGUAGES ).split( ';' );
cDebug() << "Translation languages:" << availableLanguages;
@ -104,7 +105,8 @@ someLanguages()
}
}
void LocaleTests::testTranslatableConfig1()
void
LocaleTests::testTranslatableConfig1()
{
CalamaresUtils::Locale::TranslatedString ts1( "Hello" );
QCOMPARE( ts1.count(), 1 );
@ -121,13 +123,15 @@ void LocaleTests::testTranslatableConfig1()
QCOMPARE( ts2.get( QLocale( "nl" ) ), "description (no language)" );
}
void LocaleTests::testTranslatableConfig2()
void
LocaleTests::testTranslatableConfig2()
{
QVariantMap map;
for ( const auto& language : someLanguages() )
{
map.insert( QString("description[%1]").arg(language), QString("description (language %1)").arg(language) );
map.insert( QString( "description[%1]" ).arg( language ),
QString( "description (language %1)" ).arg( language ) );
if ( language != "nl" )
{
map.insert( QString( "name[%1]" ).arg( language ), QString( "name (language %1)" ).arg( language ) );

View File

@ -63,14 +63,41 @@ TranslatedString::TranslatedString(const QVariantMap& map, const QString& key)
}
}
QString TranslatedString::get() const
QString
TranslatedString::get() const
{
return get( QLocale() );
}
QString TranslatedString::get(const QLocale& locale) const
QString
TranslatedString::get( const QLocale& locale ) const
{
cDebug() << "Getting locale" << locale.name();
QString localeName = locale.name();
cDebug() << "Getting locale" << localeName;
if ( m_strings.contains( localeName ) )
{
return m_strings[ localeName ];
}
int index = localeName.indexOf( '@' );
if ( index > 0 )
{
localeName.truncate( index );
if ( m_strings.contains( localeName ) )
{
return m_strings[ localeName ];
}
}
index = localeName.indexOf( '_' );
if ( index > 0 )
{
localeName.truncate( index );
if ( m_strings.contains( localeName ) )
{
return m_strings[ localeName ];
}
}
return m_strings[ QString() ];
}