1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
|
/****************************************************************************
**
** Copyright (C) 1992-2005 Trolltech AS. All rights reserved.
**
** This file is part of the Qt Linguist of the Qt Toolkit.
**
** Licensees holding a valid Qt License Agreement may use this file in
** accordance with the rights, responsibilities and obligations
** contained therein. Please consult your licensing agreement or
** contact sales@trolltech.com if any conditions of this licensing
** agreement are not clear to you.
**
** Further information about Qt licensing is available at:
** http://www.trolltech.com/products/qt/licensing.html or by
** contacting info@trolltech.com.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
****************************************************************************/
#ifndef METATRANSLATOR_H
#define METATRANSLATOR_H
#include <qmap.h>
#include <qstring.h>
#include <translator.h>
#include <qlist.h>
class QTextCodec;
class MetaTranslatorMessage : public TranslatorMessage
{
public:
enum Type { Unfinished, Finished, Obsolete };
MetaTranslatorMessage();
MetaTranslatorMessage( const char *context, const char *sourceText,
const char *comment,
const QString& translation = QString(),
bool utf8 = false, Type type = Unfinished );
MetaTranslatorMessage( const MetaTranslatorMessage& m );
MetaTranslatorMessage& operator=( const MetaTranslatorMessage& m );
void setType( Type nt ) { ty = nt; }
Type type() const { return ty; }
bool utf8() const { return utfeight; }
bool operator==( const MetaTranslatorMessage& m ) const;
bool operator!=( const MetaTranslatorMessage& m ) const
{ return !operator==( m ); }
bool operator<( const MetaTranslatorMessage& m ) const;
bool operator<=( const MetaTranslatorMessage& m )
{ return !operator>( m ); }
bool operator>( const MetaTranslatorMessage& m ) const
{ return this->operator<( m ); }
bool operator>=( const MetaTranslatorMessage& m ) const
{ return !operator<( m ); }
private:
bool utfeight;
Type ty;
};
class MetaTranslator
{
public:
MetaTranslator();
MetaTranslator( const MetaTranslator& tor );
MetaTranslator& operator=( const MetaTranslator& tor );
void clear();
bool load( const QString& filename );
bool save( const QString& filename ) const;
bool release( const QString& filename, bool verbose = false,
bool ignoreUnfinished = false,
Translator::SaveMode mode = Translator::Stripped ) const;
bool contains( const char *context, const char *sourceText,
const char *comment ) const;
void insert( const MetaTranslatorMessage& m );
void stripObsoleteMessages();
void stripEmptyContexts();
void setCodec( const char *name ); // kill me
void setCodecForTr( const char *name ) { setCodec(name); }
QTextCodec *codecForTr() const { return codec; }
QString toUnicode( const char *str, bool utf8 ) const;
QList<MetaTranslatorMessage> messages() const;
QList<MetaTranslatorMessage> translatedMessages() const;
private:
typedef QMap<MetaTranslatorMessage, int> TMM;
typedef QMap<int, MetaTranslatorMessage> TMMInv;
TMM mm;
QByteArray codecName;
QTextCodec *codec;
};
/*
This is a quick hack. The proper way to handle this would be
to extend MetaTranslator's interface.
*/
#define ContextComment "QT_LINGUIST_INTERNAL_CONTEXT_COMMENT"
#endif
|