Git commit 7b868e4f0cfca7ba0ad63e110c1ba7ce7d2dee17 by Nick Shaforostoff. Committed on 30/11/2014 at 22:17. Pushed by shaforo into branch 'frameworks'. kde5port gettextheader parsing + speedup langlist model M +17 -31 src/catalog/gettextheader.cpp M +8 -8 src/common/languagelistmodel.cpp M +0 -1 src/lokalizemainwindow.cpp M +1 -1 src/tm/tmtab.cpp http://commits.kde.org/lokalize/7b868e4f0cfca7ba0ad63e110c1ba7ce7d2dee17 diff --git a/src/catalog/gettextheader.cpp b/src/catalog/gettextheader.cpp index 2701b36..9f03bf4 100644 --- a/src/catalog/gettextheader.cpp +++ b/src/catalog/gettextheader.cpp @@ -1,7 +1,7 @@ /* ***********************************************************************= ***** This file is part of Lokalize = - Copyright (C) 2008-2009 by Nick Shaforostoff + Copyright (C) 2008-2014 by Nick Shaforostoff = This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -309,38 +309,27 @@ void updateHeader(QString& header, QString language; //initialized with preexisting value or later QString mailingList; //initialized with preexisting value or later = - static KConfig* allLanguagesConfig=3D0; - if (!allLanguagesConfig) - { -#if 0 //KDE5PORT - allLanguagesConfig =3D new KConfig("all_languages", KConfig::NoGloba= ls, "locale"); - allLanguagesConfig->setLocale(QString()); -#endif - } - QRegExp langTeamRegExp("^ *Language-Team:.*"); + static QMap langEnums; + if (!langEnums.size()) + for (int l=3DQLocale::Abkhazian; l<=3DQLocale::Akoose; ++l) + langEnums[QLocale::languageToString((QLocale::Language)l)]=3D(QLoc= ale::Language)l; + = + static QRegExp langTeamRegExp(QStringLiteral("^ *Language-Team:.*")); for ( it =3D headerList.begin(),found=3Dfalse; it !=3D headerList.end(= ) && !found; ++it ) { found=3Dit->contains(langTeamRegExp); if (found) { //really parse header - QMap map; - foreach (const QString &runningLangCode, KGlobal::locale()->al= lLanguagesList()) - { - ///// KDE5PORT KConfigGroup cg(allLanguagesConfig, running= LangCode); - //////map[cg.readEntry("Name")]=3DrunningLangCode; - } - if (map.size()<16) //may be just "en_US" and "" - kWarning()<<"seems that all_languages file is missing (usu= ally located under /usr/share/locale)"; - - QRegExp re("^ *Language-Team: *(.*) *<([^>]*)>"); + QRegExp re(QStringLiteral("^ *Language-Team: *(.*) *<([^>]*)>"= )); if (re.indexIn(*it) !=3D -1 ) { - if (map.contains( re.cap(1).trimmed() )) + if (langEnums.contains( re.cap(1).trimmed() )) { language=3Dre.cap(1).trimmed(); mailingList=3Dre.cap(2).trimmed(); - langCode=3Dmap.value(language); = + QList locales =3D QLocale::matchingLocales(la= ngEnums.value(language), QLocale::AnyScript, QLocale::AnyCountry); + if (locales.size()) langCode=3Dlocales.first().name().= left(2); } } = @@ -350,10 +339,7 @@ void updateHeader(QString& header, = if (language.isEmpty()) { - //language=3Dlocale.languageCodeToName(d->_langCode); - ////KDE5PORT - //////KConfigGroup cg(allLanguagesConfig, langCode); - /////language=3Dcg.readEntry("Name"); + language=3DQLocale::languageToString(QLocale(langCode).language()); if (language.isEmpty()) language=3DlangCode; } @@ -368,14 +354,13 @@ void updateHeader(QString& header, = = = - temp=3D"Language-Team: "%language%" <"%mailingList%'>'; - temp+=3D"\\n"; + temp=3D"Language-Team: "%language%" <"%mailingList%'>' % "\\n"; if (KDE_ISLIKELY( found )) (*ait) =3D temp; else headerList.append(temp); = - QRegExp langCodeRegExp("^ *Language: *([^ \\\\]*)"); + static QRegExp langCodeRegExp(QStringLiteral("^ *Language: *([^ \\\\]*= )")); temp=3D"Language: "%langCode%"\\n"; for ( it =3D headerList.begin(),found=3Dfalse; it !=3D headerList.end(= ) && !found; ++it ) { @@ -388,9 +373,10 @@ void updateHeader(QString& header, headerList.append(temp); = temp=3D"Content-Type: text/plain; charset=3D"%codec->name()%"\\n"; + static QRegExp ctRe("^ *Content-Type:.*"); for ( it =3D headerList.begin(),found=3Dfalse; it !=3D headerList.end(= ) && !found; ++it ) { - found=3Dit->contains(QRegExp("^ *Content-Type:.*")); + found=3Dit->contains(ctRe); if (found) *it=3Dtemp; } if (KDE_ISUNLIKELY( !found )) @@ -437,7 +423,7 @@ void updateHeader(QString& header, //kWarning()<<"generated: " << t; if ( !t.isEmpty() ) { - QRegExp pf("^ *Plural-Forms:\\s*nplurals.*\\\\n"); + static QRegExp pf(QStringLiteral("^ *Plural-Forms:\\s*= nplurals.*\\\\n")); pf.setMinimal(true); temp=3DQString("Plural-Forms: %1\\n").arg(t); it->replace(pf,temp); diff --git a/src/common/languagelistmodel.cpp b/src/common/languagelistmode= l.cpp index 71da2dc..2e22204 100644 --- a/src/common/languagelistmodel.cpp +++ b/src/common/languagelistmodel.cpp @@ -85,13 +85,7 @@ QVariant LanguageListModel::data(const QModelIndex& inde= x, int role) const if (!iconCache.contains(langCode)) { // NOTE workaround for QTBUG-9370 - it will be removed later - QString code; - if(langCode =3D=3D "mn") - code =3D "mn_MN"; - else if(langCode =3D=3D "ne") - code =3D "ne_NP"; - else - code=3DQLocale(langCode).name(); + QString code=3DQLocale(langCode).name(); QString path; if (code.contains('_')) code=3DQString::fromRawData(code.unico= de()+3, 2).toLower(); if (code!=3D"C") @@ -108,7 +102,13 @@ QVariant LanguageListModel::data(const QModelIndex& in= dex, int role) const const QString& code=3DstringList().at(index.row()); if (code.isEmpty()) return code; //kDebug()<<"languageCodeToName"<(KGlobal::locale()->languageCod= eToName(code)%" ("%code%")"); + static QVector displayNames(stringList().size()); + if (displayNames.at(index.row()).length()) + return displayNames.at(index.row()); +// QLocale l(code); +// if (l.language()=3D=3DQLocale::C && code!=3D"C") + return QVariant::fromValue(displayNames[index.row()]= =3DKGlobal::locale()->languageCodeToName(code)%" ("%code%")"); +// return QVariant::fromValue(displayNames[index.row()]=3D= QLocale::languageToString(l.language())%" ("%code%")"); } return QStringListModel::data(index, role); } diff --git a/src/lokalizemainwindow.cpp b/src/lokalizemainwindow.cpp index 9e6a8c5..3f64d00 100644 --- a/src/lokalizemainwindow.cpp +++ b/src/lokalizemainwindow.cpp @@ -105,7 +105,6 @@ LokalizeMainWindow::LokalizeMainWindow() = connect(Project::instance(), SIGNAL(configChanged()), this, SLOT(proje= ctSettingsChanged())); showProjectOverview(); - showTranslationMemory(); //temp HACK to workaround non-responding proj= ect tab = for (int i=3DID_STATUS_CURRENT;i<=3DID_STATUS_ISFUZZY;i++) { diff --git a/src/tm/tmtab.cpp b/src/tm/tmtab.cpp index 38732d1..1bfc950 100644 --- a/src/tm/tmtab.cpp +++ b/src/tm/tmtab.cpp @@ -568,7 +568,7 @@ void TMTab::handleResults() } if(!filemask.isEmpty() && !filemask.contains('*')) { - ui_queryOptions->filemask->setText('*'+filemask+'*'); + ui_queryOptions->filemask->setText('*'%filemask%'*'); return performQuery(); } }