@@ -19,8 +19,7 @@ SettingsView* SettingsManager::getView()
1919{
2020 if (m_view == nullptr ) {
2121 auto view = new SettingsView ();
22- view->init (m_zoomFactor * 100 , m_downloadDir, m_monitorDir,
23- m_moveToTrash, m_reopenTab);
22+ view->init (m_zoomFactor * 100 , m_downloadDir, m_monitorDir, m_appLangIndex, m_moveToTrash, m_reopenTab);
2423 connect (view, &QObject::destroyed, this , [=]() { m_view = nullptr ; });
2524 m_view = view;
2625 }
@@ -127,13 +126,20 @@ SettingsManager::FilterList SettingsManager::deducePair(QList<QVariant> variantL
127126 return pairList;
128127}
129128
130- void SettingsManager::setLanguage (FilterList langList)
129+ void SettingsManager::setLanguage (FilterList langList) // This regards the search filter languages
131130{
132131 m_langList = flattenPair (langList);
133132 setSettings (" language" , m_langList);
134133 emit (languageChanged (m_langList));
135134}
136135
136+ void SettingsManager::setAppLanguage (int languageIndex) // This regards the application language
137+ {
138+ m_appLangIndex = languageIndex;
139+ KiwixApp::instance ()->setAppLanguage ();
140+ m_settings.setValue (" app/languageIndex" , languageIndex);
141+ }
142+
137143void SettingsManager::setCategory (FilterList categoryList)
138144{
139145 m_categoryList = flattenPair (categoryList);
@@ -157,8 +163,30 @@ void SettingsManager::initSettings()
157163 m_monitorDir = m_settings.value (" monitor/dir" , QString (" " )).toString ();
158164 m_moveToTrash = m_settings.value (" moveToTrash" , true ).toBool ();
159165 m_reopenTab = m_settings.value (" reopenTab" , false ).toBool ();
166+ // This regards the application language
167+ m_appLangCodes = {
168+ " ar" , " bcl" , " bn" , " br" , " ca" , " cs" , " da" , " dag" , " de" , " diq" ,
169+ " en" , " eo" , " es" , " fa" , " fi" , " fr" , " gsw" , " ha" , " he" , " hi" ,
170+ " hy" , " ia" , " id" , " ie" , " ig" , " igl" , " io" , " it" , " ja" , " ko" ,
171+ " ku-latn" , " lb" , " mk" , " ms" , " my" , " nb" , " nl" , " nqo" , " or" ,
172+ " pl" , " pt-br" , " pt" , " qqq" , " ro" , " roa-tara" , " ru" , " sc" ,
173+ " scn" , " sdc" , " se" , " sk" , " skr-arab" , " sl" , " sms" , " sq" ,
174+ " sr-ec" , " sro" , " sv" , " sw" , " ta" , " te" , " th" , " tn" , " tr" ,
175+ " uk" , " yo" , " zgh" , " zh-hans" , " zh-hant"
176+ };
177+ int i = 0 , defaultLanguage = -1 ;
178+ for (const QString& code : m_appLangCodes) {
179+ QString name = QLocale::languageToString (QLocale (code).language ());
180+ if (name == " English" ) defaultLanguage = i;
181+ i++;
182+ }
183+ m_appLangIndex = m_settings.value (" app/languageIndex" , defaultLanguage).toInt ();
184+ // Below regards the search filters
160185 QString defaultLang = QLocale::languageToString (QLocale ().language ()) + ' |' + QLocale ().name ().split (" _" ).at (0 );
161-
186+ QList<QString> defaultLangList; // Qt5 QList doesn't support supplying a constructor list
187+ defaultLangList.append (defaultLang);
188+ QVariant defaultLangVariant (defaultLangList);
189+ m_langList = m_settings.value (" language" , defaultLangVariant).toList ();
162190 /*
163191 * Qt5 & Qt6 have slightly different behaviors with regards to initializing QVariant.
164192 * The below approach is specifically chosen to work with both versions.
@@ -170,15 +198,6 @@ void SettingsManager::initSettings()
170198 *
171199 * QList(QVariant(QChar, 'E'), QVariant(QChar, 'n'), QVariant(QChar, 'g'), ...
172200 */
173-
174- QList<QString> defaultLangList; // Qt5 QList doesn't support supplying a constructor list
175- defaultLangList.append (defaultLang);
176- QVariant defaultLangVariant (defaultLangList);
177- m_langList = m_settings.value (" language" , defaultLangVariant).toList ();
178-
179-
180- // ui->comboBoxLanguage->addItems(languageList);
181-
182201 m_categoryList = m_settings.value (" category" , {}).toList ();
183202 m_contentTypeList = m_settings.value (" contentType" , {}).toList ();
184203}
0 commit comments