[locale] Improve LocaleConfiguration constructors
- Allow split-setting of the language and formats - Test new constructors - Since fromLanguageAndLocation can handle empty localeGen lists just fine, skip all the weird checks that return invalid guessed locale configurations.
This commit is contained in:
parent
0a526febae
commit
dbe50fe3db
@ -27,16 +27,17 @@ LocaleConfiguration::LocaleConfiguration()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
LocaleConfiguration::LocaleConfiguration( const QString& localeName )
|
LocaleConfiguration::LocaleConfiguration( const QString& localeName, const QString& formatsName )
|
||||||
: LocaleConfiguration()
|
: LocaleConfiguration()
|
||||||
{
|
{
|
||||||
lc_numeric = lc_time = lc_monetary = lc_paper = lc_name
|
lc_numeric = lc_time = lc_monetary = lc_paper = lc_name
|
||||||
= lc_address = lc_telephone = lc_measurement
|
= lc_address = lc_telephone = lc_measurement
|
||||||
= lc_identification = localeName;
|
= lc_identification = formatsName;
|
||||||
|
|
||||||
(void) setLanguage( localeName );
|
(void) setLanguage( localeName );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
QString
|
QString
|
||||||
LocaleConfiguration::setLanguage(const QString& localeName )
|
LocaleConfiguration::setLanguage(const QString& localeName )
|
||||||
{
|
{
|
||||||
@ -51,8 +52,7 @@ LocaleConfiguration::fromLanguageAndLocation( const QString& languageLocale,
|
|||||||
const QStringList& availableLocales,
|
const QStringList& availableLocales,
|
||||||
const QString& countryCode )
|
const QString& countryCode )
|
||||||
{
|
{
|
||||||
LocaleConfiguration lc;
|
QString language = languageLocale.split( '_' ).first();
|
||||||
QString language = lc.setLanguage( languageLocale );
|
|
||||||
|
|
||||||
QStringList linesForLanguage;
|
QStringList linesForLanguage;
|
||||||
for ( const QString &line : availableLocales )
|
for ( const QString &line : availableLocales )
|
||||||
@ -269,12 +269,7 @@ LocaleConfiguration::fromLanguageAndLocation( const QString& languageLocale,
|
|||||||
if ( lc_formats.isEmpty() )
|
if ( lc_formats.isEmpty() )
|
||||||
lc_formats = lang;
|
lc_formats = lang;
|
||||||
|
|
||||||
lc.lang = lang;
|
return LocaleConfiguration( lang, lc_formats );
|
||||||
lc.lc_address = lc.lc_identification = lc.lc_measurement = lc.lc_monetary
|
|
||||||
= lc.lc_name = lc.lc_numeric = lc.lc_paper = lc.lc_telephone
|
|
||||||
= lc.lc_time = lc_formats;
|
|
||||||
|
|
||||||
return lc;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -29,7 +29,10 @@ public:
|
|||||||
/// @brief Create an empty locale, with nothing set
|
/// @brief Create an empty locale, with nothing set
|
||||||
explicit LocaleConfiguration();
|
explicit LocaleConfiguration();
|
||||||
/// @brief Create a locale with everything set to the given @p localeName
|
/// @brief Create a locale with everything set to the given @p localeName
|
||||||
explicit LocaleConfiguration( const QString& localeName /* "en_US.UTF-8" */ );
|
explicit LocaleConfiguration( const QString& localeName /* "en_US.UTF-8" */ )
|
||||||
|
: LocaleConfiguration( localeName, localeName ) { };
|
||||||
|
/// @brief Create a locale with language and formats separate
|
||||||
|
explicit LocaleConfiguration( const QString& localeName, const QString& formatsName );
|
||||||
|
|
||||||
static LocaleConfiguration fromLanguageAndLocation( const QString& language,
|
static LocaleConfiguration fromLanguageAndLocation( const QString& language,
|
||||||
const QStringList& availableLocales,
|
const QStringList& availableLocales,
|
||||||
|
@ -452,22 +452,7 @@ LocalePage::onActivate()
|
|||||||
LocaleConfiguration
|
LocaleConfiguration
|
||||||
LocalePage::guessLocaleConfiguration() const
|
LocalePage::guessLocaleConfiguration() const
|
||||||
{
|
{
|
||||||
static QString defaultLocale = QStringLiteral( "en_US.UTF-8" );
|
return LocaleConfiguration::fromLanguageAndLocation( QLocale().name(),
|
||||||
|
|
||||||
QLocale myLocale; // User-selected language
|
|
||||||
|
|
||||||
// If we cannot say anything about available locales
|
|
||||||
if ( m_localeGenLines.isEmpty() )
|
|
||||||
{
|
|
||||||
cWarning() << "guessLocaleConfiguration can't guess from an empty list.";
|
|
||||||
return LocaleConfiguration( defaultLocale );
|
|
||||||
}
|
|
||||||
|
|
||||||
QString myLanguageLocale = myLocale.name();
|
|
||||||
if ( myLanguageLocale.isEmpty() )
|
|
||||||
return LocaleConfiguration( defaultLocale );
|
|
||||||
|
|
||||||
return LocaleConfiguration::fromLanguageAndLocation( myLanguageLocale,
|
|
||||||
m_localeGenLines,
|
m_localeGenLines,
|
||||||
m_tzWidget->getCurrentLocation().country );
|
m_tzWidget->getCurrentLocation().country );
|
||||||
}
|
}
|
||||||
|
@ -50,4 +50,27 @@ void LocaleTests::testDefaultLocaleConfiguration()
|
|||||||
LocaleConfiguration lc( "en_US.UTF-8" );
|
LocaleConfiguration lc( "en_US.UTF-8" );
|
||||||
QVERIFY( !lc.isEmpty() );
|
QVERIFY( !lc.isEmpty() );
|
||||||
QCOMPARE( lc.toBcp47(), "en" );
|
QCOMPARE( lc.toBcp47(), "en" );
|
||||||
|
|
||||||
|
LocaleConfiguration lc2( "de_DE.UTF-8" );
|
||||||
|
QVERIFY( !lc2.isEmpty() );
|
||||||
|
QCOMPARE( lc2.toBcp47(), "de" );
|
||||||
|
}
|
||||||
|
|
||||||
|
void LocaleTests::testSplitLocaleConfiguration()
|
||||||
|
{
|
||||||
|
LocaleConfiguration lc( "en_US.UTF-8", "de_DE.UTF-8" );
|
||||||
|
QVERIFY( !lc.isEmpty() );
|
||||||
|
QCOMPARE( lc.toBcp47(), "en" );
|
||||||
|
QCOMPARE( lc.lc_numeric, QStringLiteral( "de_DE.UTF-8" ) );
|
||||||
|
|
||||||
|
LocaleConfiguration lc2( "de_DE.UTF-8", "da_DK.UTF-8" );
|
||||||
|
QVERIFY( !lc2.isEmpty() );
|
||||||
|
QCOMPARE( lc2.toBcp47(), "de" );
|
||||||
|
QCOMPARE( lc2.lc_numeric, "da_DK.UTF-8" );
|
||||||
|
|
||||||
|
LocaleConfiguration lc3( "da_DK.UTF-8", "de_DE.UTF-8" );
|
||||||
|
QVERIFY( !lc3.isEmpty() );
|
||||||
|
QCOMPARE( lc3.toBcp47(), "da" );
|
||||||
|
QCOMPARE( lc3.lc_numeric, "de_DE.UTF-8" );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -34,6 +34,7 @@ private Q_SLOTS:
|
|||||||
// Check the sample config file is processed correctly
|
// Check the sample config file is processed correctly
|
||||||
void testEmptyLocaleConfiguration();
|
void testEmptyLocaleConfiguration();
|
||||||
void testDefaultLocaleConfiguration();
|
void testDefaultLocaleConfiguration();
|
||||||
|
void testSplitLocaleConfiguration();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user