@ -28,29 +28,8 @@ static bool s_allowLocalTranslations = false;
*/
struct TranslationLoader
{
static QString mungeLocaleName ( const QLocale & locale )
{
QString localeName = locale . name ( ) ;
localeName . replace ( " - " , " _ " ) ;
if ( localeName = = " C " )
{
localeName = " en " ;
}
// Special case of sr@latin
//
// See top-level CMakeLists.txt about special cases for translation loading.
if ( locale . language ( ) = = QLocale : : Language : : Serbian & & locale . script ( ) = = QLocale : : Script : : LatinScript )
{
localeName = QStringLiteral ( " sr@latin " ) ;
}
return localeName ;
}
TranslationLoader ( const QLocale & locale )
: m_locale ( locale )
, m_localeName ( mungeLocaleName ( locale ) )
TranslationLoader ( const QString & locale )
: m_localeName ( locale )
{
}
@ -58,14 +37,13 @@ struct TranslationLoader
/// @brief Loads @p translator with the specific translations of this type
virtual bool tryLoad ( QTranslator * translator ) = 0 ;
const QLocale & m_locale ;
QString m_localeName ;
} ;
/// @brief Loads translations for branding
struct BrandingLoader : public TranslationLoader
{
BrandingLoader ( const Q Locale & locale , const QString & prefix )
BrandingLoader ( const Q String & locale , const QString & prefix )
: TranslationLoader ( locale )
, m_prefix ( prefix )
{
@ -106,7 +84,7 @@ BrandingLoader::tryLoad( QTranslator* translator )
{
QString filenameBase ( m_prefix ) ;
filenameBase . remove ( 0 , m_prefix . lastIndexOf ( QDir : : separator ( ) ) + 1 ) ;
if ( translator - > load ( m_locale , filenameBase , " _ " , brandingTranslationsDir . absolutePath ( ) ) )
if ( translator - > load ( m_locale Name , filenameBase , " _ " , brandingTranslationsDir . absolutePath ( ) ) )
{
cDebug ( ) < < Logger : : SubEntry < < " Branding using locale: " < < m_localeName ;
return true ;
@ -189,26 +167,32 @@ static QTranslator* s_tztranslator = nullptr;
static QString s_translatorLocaleName ;
void
installTranslator ( const QLocale & locale , const QString & brandingTranslationsPrefix )
installTranslator ( const CalamaresUtils: : Locale : : Translation : : Id & locale , const QString & brandingTranslationsPrefix )
{
loadSingletonTranslator ( BrandingLoader ( locale , brandingTranslationsPrefix ) , s_brandingTranslator ) ;
loadSingletonTranslator ( TZLoader ( locale ) , s_tztranslator ) ;
loadSingletonTranslator ( CalamaresLoader ( locale ) , s_translator ) ;
s_translatorLocaleName = locale . name ;
s_translatorLocaleName = CalamaresLoader : : mungeLocaleName ( locale ) ;
loadSingletonTranslator ( BrandingLoader ( locale . name , brandingTranslationsPrefix ) , s_brandingTranslator ) ;
loadSingletonTranslator ( TZLoader ( locale . name ) , s_tztranslator ) ;
loadSingletonTranslator ( CalamaresLoader ( locale . name ) , s_translator ) ;
}
void
installTranslator ( )
{
// Just wrap it up like an Id
installTranslator ( { QLocale : : system ( ) . name ( ) } , QString ( ) ) ;
}
QString
CalamaresUtils: : Locale : : Translation : : Id
translatorLocaleName ( )
{
return s_translatorLocaleName ;
return { s_translatorLocaleName } ;
}
bool
loadTranslator ( const QLocale & locale , const QString & prefix , QTranslator * translator )
loadTranslator ( const CalamaresUtils: : Locale : : Translation : : Id & locale , const QString & prefix , QTranslator * translator )
{
return : : tryLoad ( translator , prefix , locale . name ( ) ) ;
return : : tryLoad ( translator , prefix , locale . name ) ;
}
Retranslator : : Retranslator ( QObject * parent )