File indexing completed on 2024-04-21 03:42:04

0001 /*
0002     SPDX-FileCopyrightText: 2007 Pino Toscano <pino@kde.org>
0003     SPDX-FileCopyrightText: 2007-2008 Anne-Marie Mahfouf <annma@kde.org>
0004 
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 //project headers
0009 #include "langutils.h"
0010 #include "prefs.h"
0011 #include "klettres_debug.h"
0012 
0013 #include <QDir>
0014 
0015 #include <KLocalizedString>
0016 
0017 bool LangUtils::hasSpecialChars(const QString& lang)
0018 {
0019     if (lang== QLatin1String("cs")
0020         || lang== QLatin1String("da")
0021         || lang== QLatin1String("sk")
0022         || lang== QLatin1String("es")
0023         || lang== QLatin1String("de")
0024         || lang== QLatin1String("hu")
0025         || lang== QLatin1String("nds")
0026         || lang== QLatin1String("lt"))
0027         return true;
0028     return false;
0029 }
0030 
0031 bool LangUtils::isIndian(const QString& lang)
0032 {
0033     if (lang == QLatin1String("kn")
0034         || lang == QLatin1String("ml")
0035         || lang == QLatin1String("te")
0036         || lang == QLatin1String("pa"))
0037         return true;
0038     return false;
0039 }
0040 
0041 QStringList LangUtils::getLanguages()
0042 {
0043     QStringList m_languages;
0044     m_languages.clear();
0045     //the program scans in klettres/data/ to see what languages data is found
0046     const QStringList mdirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation,
0047                             QStringLiteral("klettres/"),
0048                             QStandardPaths::LocateDirectory);
0049     //qDebug() << mdirs;
0050 
0051     //if (mdirs.isEmpty()) return NULL;
0052     for (QStringList::const_iterator it =mdirs.constBegin(); it !=mdirs.constEnd(); ++it ) {
0053         QDir dir(*it);
0054         m_languages += dir.entryList(QDir::Dirs, QDir::Name);
0055         m_languages.removeAll(QStringLiteral("."));
0056         m_languages.removeAll(QStringLiteral(".."));
0057     }
0058     m_languages.removeAll(QStringLiteral("pics"));
0059     m_languages.removeAll(QStringLiteral("data"));
0060     m_languages.removeAll(QStringLiteral("icons"));
0061     m_languages.sort();
0062 
0063     //find duplicated entries in KDEDIR and KDEHOME
0064     QStringList temp_languages;
0065     for (int i=0;  i<m_languages.count(); i++)  {
0066         if (m_languages.count(m_languages[i])>1)  {
0067             temp_languages.append(m_languages[i]);
0068             m_languages.removeAll(m_languages[i]);
0069         }
0070         for (int i=0;  i<temp_languages.count(); i++)  {
0071             if (i%2==0)
0072             m_languages.append(temp_languages[i]);//append 1 of the 2 instances found
0073         }
0074         temp_languages.clear();
0075     }
0076     //TODO TEST in FRENCH
0077     m_languages.sort();
0078     qCDebug(KLETTRES_LOG) <<m_languages;
0079     return m_languages;
0080 }
0081 
0082 QStringList LangUtils::getLanguagesNames(const QStringList &languagesList)
0083 {
0084     QStringList languagesNames;
0085 
0086     for (const QString &language : languagesList) {
0087         if (language == QLatin1String("hi-ro")) {
0088             languagesNames.append(i18n("Romanized Hindi"));
0089         } else if (language == QLatin1String("lug_UG")) {
0090             languagesNames.append(i18n("Luganda"));
0091         } else if (language == QLatin1String("ep")) {
0092             languagesNames.append(i18n("English Phonics"));
0093         } else if (language == QLatin1String("tn")) {
0094             languagesNames.append(i18n("Tswana"));
0095         } else {
0096             QLocale locale(language);
0097             QString languageName = locale.nativeLanguageName();
0098             if (locale == QLocale::c())
0099                 languageName = i18nc("@item:inlistbox no language for that locale", "None");
0100             languagesNames.append(languageName);
0101         }
0102     }
0103     //never sort m_languageNames as it's m_languages translated
0104     return languagesNames;
0105 }
0106 
0107 void LangUtils::writeLangConfig()
0108 {
0109     //write the present languages in config so they cannot be downloaded
0110     KConfigGroup config(KSharedConfig::openConfig(), QStringLiteral("KNewStuffStatus"));
0111     QStringList m_languages = getLanguages();
0112     for (int i=0;  i<m_languages.count(); i++)  {
0113         QString tmp = m_languages[i];
0114         if (!config.readEntry(tmp, QString()).isEmpty()) {
0115             config.writeEntry(tmp, QDate::currentDate().toString());
0116         }
0117     }
0118     config.sync();
0119 }
0120 
0121