/**************************************************************************** ** ** Copyright (C) 1992-2005 Trolltech AS. All rights reserved. ** ** This file is part of the Qt Linguist of the Qt Toolkit. ** ** This file may be used under the terms of the GNU General Public ** License version 2.0 as published by the Free Software Foundation ** and appearing in the file LICENSE.GPL included in the packaging of ** this file. Please review the following information to ensure GNU ** General Public Licensing requirements will be met: ** http://www.trolltech.com/products/qt/opensource.html ** ** If you are unsure which license is appropriate for your use, please ** review the following information: ** http://www.trolltech.com/products/qt/licensing.html or contact the ** sales department at sales@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 #include #include #include 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 messages() const; QList translatedMessages() const; private: typedef QMap TMM; typedef QMap 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