diff --git a/src/libcalamares/locale/Translation.cpp b/src/libcalamares/locale/Translation.cpp index d439f51b7..f0d74b0bf 100644 --- a/src/libcalamares/locale/Translation.cpp +++ b/src/libcalamares/locale/Translation.cpp @@ -54,13 +54,39 @@ specialCase( const CalamaresUtils::Locale::Translation::Id& locale ) return { nullptr, nullptr }; } +static QString +specialCaseSystemLanguage() +{ + const QByteArray lang_p = qgetenv( "LANG" ); + if ( lang_p.isEmpty() ) + return {}; + QString lang = QString::fromLatin1( lang_p ); + if ( lang.isEmpty() ) + return {}; + + const QString serbian_latin = QStringLiteral( "sr@latin" ); + const QString serbian_latin_variant = QStringLiteral( "sr@latn" ); + if ( ( lang == serbian_latin ) || ( lang == serbian_latin_variant ) ) + { + return serbian_latin; + } + + const QString valencian = QStringLiteral( "ca@valencia" ); + if ( lang == valencian ) + { + return valencian; + } + + return {}; +} + namespace CalamaresUtils { namespace Locale { Translation::Translation( QObject* parent ) - : Translation( { QString() }, LabelFormat::IfNeededWithCountry, parent ) + : Translation( { specialCaseSystemLanguage() }, LabelFormat::IfNeededWithCountry, parent ) { } diff --git a/src/libcalamares/locale/Translation.h b/src/libcalamares/locale/Translation.h index 5e5ce33ba..784c8652e 100644 --- a/src/libcalamares/locale/Translation.h +++ b/src/libcalamares/locale/Translation.h @@ -12,6 +12,8 @@ #ifndef LOCALE_TRANSLATION_H #define LOCALE_TRANSLATION_H +#include "utils/Logger.h" + #include #include #include @@ -110,6 +112,12 @@ private: QString m_englishLabel; }; +static inline QDebug& +operator<<( QDebug& s, const Translation::Id& id ) +{ + return s << id.name; +} + } // namespace Locale } // namespace CalamaresUtils diff --git a/src/libcalamares/utils/Retranslator.cpp b/src/libcalamares/utils/Retranslator.cpp index 48b61c12a..74617fa47 100644 --- a/src/libcalamares/utils/Retranslator.cpp +++ b/src/libcalamares/utils/Retranslator.cpp @@ -184,8 +184,7 @@ installTranslator( const CalamaresUtils::Locale::Translation::Id& locale, const void installTranslator() { - // Just wrap it up like an Id - installTranslator( { QLocale::system().name() }, QString() ); + installTranslator( CalamaresUtils::Locale::Translation().id(), QString() ); } CalamaresUtils::Locale::Translation::Id