mirror of
https://bitbucket.org/smil3y/kdelibs.git
synced 2025-02-24 02:42:48 +00:00
kdecore: actually install the KDETranslator
was non-operational code due to QT_NO_TRANSLATION being defined in the kglobal source file for some reason, it has a huge impact on performance ofcourse because anything Katie will attempt to translate will go trough it Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
parent
95ee157d51
commit
b8b37e01a3
4 changed files with 63 additions and 58 deletions
|
@ -33,9 +33,10 @@
|
|||
#include <unistd.h> // umask
|
||||
|
||||
#include <QThread>
|
||||
#include <QtCore/qatomic.h>
|
||||
#include <QtCore/QList>
|
||||
#include <QtCore/QSet>
|
||||
#include <QAtomicInt>
|
||||
#include <QList>
|
||||
#include <QSet>
|
||||
#include <QCoreApplication>
|
||||
|
||||
#include <kaboutdata.h>
|
||||
#include <kconfig.h>
|
||||
|
@ -43,12 +44,8 @@
|
|||
#include <kcharsets.h>
|
||||
#include <kstandarddirs.h>
|
||||
#include <kcomponentdata.h>
|
||||
#undef QT_NO_TRANSLATION
|
||||
#include <QtCore/QCoreApplication>
|
||||
#define QT_NO_TRANSLATION
|
||||
#include <QtCore/QDebug>
|
||||
#include <QtCore/QTextCodec>
|
||||
#include "kcmdlineargs.h"
|
||||
#include "kcatalog_p.h"
|
||||
|
||||
mode_t s_umsk;
|
||||
|
||||
|
@ -58,6 +55,9 @@ class KGlobalPrivate
|
|||
inline KGlobalPrivate()
|
||||
: locale(0),
|
||||
charsets(0),
|
||||
#ifndef QT_NO_TRANSLATION
|
||||
translator(0),
|
||||
#endif
|
||||
localeIsFromFakeComponent(false)
|
||||
{
|
||||
// the umask is read here before any threads are created to avoid race conditions
|
||||
|
@ -68,6 +68,10 @@ class KGlobalPrivate
|
|||
|
||||
inline ~KGlobalPrivate()
|
||||
{
|
||||
#ifndef QT_NO_TRANSLATION
|
||||
delete translator;
|
||||
translator = 0;
|
||||
#endif
|
||||
delete locale;
|
||||
locale = 0;
|
||||
delete charsets;
|
||||
|
@ -78,6 +82,9 @@ class KGlobalPrivate
|
|||
KComponentData mainComponent; // holds a refcount
|
||||
KLocale *locale;
|
||||
KCharsets *charsets;
|
||||
#ifndef QT_NO_TRANSLATION
|
||||
KDETranslator* translator;
|
||||
#endif
|
||||
bool localeIsFromFakeComponent;
|
||||
QStringList catalogsToInsert;
|
||||
|
||||
|
@ -173,7 +180,10 @@ KLocale *KGlobal::locale()
|
|||
" takes care of this. If not using KApplication, call KGlobal::locale() during initialization.");
|
||||
#ifndef QT_NO_TRANSLATION
|
||||
} else {
|
||||
QCoreApplication::installTranslator(new KDETranslator(coreApp));
|
||||
delete d->translator;
|
||||
d->translator = 0;
|
||||
d->translator = new KDETranslator();
|
||||
QCoreApplication::installTranslator(d->translator);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
|
|
@ -32,7 +32,8 @@ namespace KGlobal
|
|||
|
||||
#include "kglobal.h"
|
||||
#include "klocale.h"
|
||||
#include <QtCore/QTranslator>
|
||||
|
||||
#include <QTranslator>
|
||||
|
||||
#ifndef QT_NO_TRANSLATION
|
||||
class KDETranslator : public QTranslator
|
||||
|
|
|
@ -24,30 +24,14 @@
|
|||
#include <QFile>
|
||||
#include <QTranslator>
|
||||
|
||||
static QByteArray translationData(const QByteArray &localeDir, const QByteArray &language, const QByteArray &name)
|
||||
{
|
||||
QByteArray translationpath = localeDir;
|
||||
translationpath.append('/');
|
||||
translationpath.append(language);
|
||||
translationpath.append('/');
|
||||
translationpath.append(name);
|
||||
translationpath.append(".tr");
|
||||
QFile translationfile(QFile::decodeName(translationpath));
|
||||
if (!translationfile.open(QFile::ReadOnly)) {
|
||||
return QByteArray();
|
||||
}
|
||||
return translationfile.readAll();
|
||||
}
|
||||
|
||||
class KCatalogPrivate
|
||||
{
|
||||
public:
|
||||
KCatalogPrivate();
|
||||
~KCatalogPrivate();
|
||||
|
||||
QByteArray language;
|
||||
QByteArray name;
|
||||
QByteArray localeDir;
|
||||
QString language;
|
||||
QString name;
|
||||
|
||||
#ifndef QT_NO_TRANSLATION
|
||||
QTranslator* translator;
|
||||
|
@ -66,20 +50,19 @@ KCatalogPrivate::~KCatalogPrivate()
|
|||
|
||||
QDebug operator<<(QDebug debug, const KCatalog &c)
|
||||
{
|
||||
return debug << c.d->language << " " << c.d->name << " " << c.d->localeDir;
|
||||
return debug << c.d->language << " " << c.d->name;
|
||||
}
|
||||
|
||||
KCatalog::KCatalog(const QString &name, const QString &language)
|
||||
: d(new KCatalogPrivate())
|
||||
{
|
||||
d->language = QFile::encodeName(language);
|
||||
d->name = QFile::encodeName(name);
|
||||
d->localeDir = QFile::encodeName(catalogLocaleDir(name, language));
|
||||
d->language = language;
|
||||
d->name = name;
|
||||
|
||||
#ifndef QT_NO_TRANSLATION
|
||||
d->translator = new QTranslator();
|
||||
d->translator->loadFromData(translationData(d->localeDir, d->language, d->name));
|
||||
// kDebug() << << name << language << localeDir;
|
||||
d->translator->loadFromData(catalogData(d->name, d->language));
|
||||
// kDebug() << << name << language;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -88,11 +71,10 @@ KCatalog::KCatalog(const KCatalog &rhs)
|
|||
{
|
||||
d->language = rhs.d->language;
|
||||
d->name = rhs.d->name;
|
||||
d->localeDir = rhs.d->localeDir;
|
||||
|
||||
#ifndef QT_NO_TRANSLATION
|
||||
d->translator = new QTranslator();
|
||||
d->translator->loadFromData(translationData(d->localeDir, d->language, d->name));
|
||||
d->translator->loadFromData(catalogData(d->name, d->language));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -100,10 +82,9 @@ KCatalog & KCatalog::operator=(const KCatalog & rhs)
|
|||
{
|
||||
d->language = rhs.d->language;
|
||||
d->name = rhs.d->name;
|
||||
d->localeDir = rhs.d->localeDir;
|
||||
|
||||
#ifndef QT_NO_TRANSLATION
|
||||
d->translator->loadFromData(translationData(d->localeDir, d->language, d->name));
|
||||
d->translator->loadFromData(catalogData(d->name, d->language));
|
||||
#endif
|
||||
return *this;
|
||||
}
|
||||
|
@ -116,23 +97,33 @@ KCatalog::~KCatalog()
|
|||
QString KCatalog::catalogLocaleDir(const QString &name,
|
||||
const QString &language)
|
||||
{
|
||||
QString relpath = QString::fromLatin1("%1/%2.tr").arg(language).arg(name);
|
||||
const QString relpath = QString::fromLatin1("%1/%2.tr").arg(language).arg(name);
|
||||
return KGlobal::dirs()->findResourceDir("locale", relpath);
|
||||
}
|
||||
|
||||
QByteArray KCatalog::catalogData(const QString &name, const QString &language)
|
||||
{
|
||||
const QString relpath = QString::fromLatin1("%1/%2.tr").arg(language).arg(name);
|
||||
const QString translationpath = KGlobal::dirs()->locate("locale", relpath);
|
||||
if (translationpath.isEmpty()) {
|
||||
return QByteArray();
|
||||
}
|
||||
QFile translationfile(translationpath);
|
||||
if (!translationfile.open(QFile::ReadOnly)) {
|
||||
return QByteArray();
|
||||
}
|
||||
return translationfile.readAll();
|
||||
}
|
||||
|
||||
|
||||
QString KCatalog::name() const
|
||||
{
|
||||
return QFile::decodeName(d->name);
|
||||
return d->name;
|
||||
}
|
||||
|
||||
QString KCatalog::language() const
|
||||
{
|
||||
return QFile::decodeName(d->language);
|
||||
}
|
||||
|
||||
QString KCatalog::localeDir() const
|
||||
{
|
||||
return QFile::decodeName(d->localeDir);
|
||||
return d->language;
|
||||
}
|
||||
|
||||
QString KCatalog::translate(const char * msgid) const
|
||||
|
|
|
@ -42,17 +42,17 @@ public:
|
|||
* @param name The name of the catalog
|
||||
* @param language The language of this catalog
|
||||
*/
|
||||
KCatalog( const QString &name, const QString &language );
|
||||
KCatalog(const QString &name, const QString &language);
|
||||
|
||||
/**
|
||||
* Copy constructor.
|
||||
*/
|
||||
KCatalog(const KCatalog & rhs);
|
||||
KCatalog(const KCatalog &rhs);
|
||||
|
||||
/**
|
||||
* Assignment operator.
|
||||
*/
|
||||
KCatalog & operator = ( const KCatalog & rhs);
|
||||
KCatalog& operator=(const KCatalog &rhs);
|
||||
|
||||
/**
|
||||
* Destructor.
|
||||
|
@ -67,8 +67,18 @@ public:
|
|||
*
|
||||
* @return The locale directory if found, QString() otherwise.
|
||||
*/
|
||||
static QString catalogLocaleDir( const QString &name,
|
||||
const QString &language );
|
||||
static QString catalogLocaleDir(const QString &name, const QString &language);
|
||||
|
||||
/**
|
||||
* Finds the catalog file for the given catalog in given language, reads it
|
||||
* and returns its data.
|
||||
*
|
||||
* @param name The name of the catalog
|
||||
* @param language The language of this catalog
|
||||
*
|
||||
* @return The catalog data if found, QByteArray() otherwise.
|
||||
*/
|
||||
static QByteArray catalogData(const QString &name, const QString &language);
|
||||
|
||||
/**
|
||||
* Returns the name of the catalog.
|
||||
|
@ -84,13 +94,6 @@ public:
|
|||
*/
|
||||
QString language() const;
|
||||
|
||||
/**
|
||||
* Returns locale directory of the catalog.
|
||||
*
|
||||
* @return The locale directory of the catalog.
|
||||
*/
|
||||
QString localeDir() const;
|
||||
|
||||
/**
|
||||
* Retrieves a translation of the specified message id.
|
||||
*
|
||||
|
|
Loading…
Add table
Reference in a new issue