tools/linguist/shared/translator.h
changeset 3 41300fa6a67c
parent 0 1918ee327afb
child 4 3b1da2848fc7
child 7 f7bc934e204c
equal deleted inserted replaced
2:56cd8111b7f7 3:41300fa6a67c
    51 #include <QString>
    51 #include <QString>
    52 #include <QSet>
    52 #include <QSet>
    53 
    53 
    54 
    54 
    55 QT_BEGIN_NAMESPACE
    55 QT_BEGIN_NAMESPACE
       
    56 
       
    57 #ifdef QT_BOOTSTRAPPED
       
    58 class QObject {
       
    59 public:
       
    60     static QString tr(const char *sourceText, const char * = 0, int n = -1);
       
    61 };
       
    62 class QCoreApplication : public QObject {
       
    63 public:
       
    64     enum Encoding { CodecForTr };
       
    65     static QString translate(const char *, const char *sourceText, const char * = 0,
       
    66                              Encoding = CodecForTr, int n = -1)
       
    67         { return tr(sourceText, 0, n); }
       
    68 };
       
    69 #endif
    56 
    70 
    57 class QIODevice;
    71 class QIODevice;
    58 
    72 
    59 // A struct of "interesting" data passed to and from the load and save routines
    73 // A struct of "interesting" data passed to and from the load and save routines
    60 class ConversionData
    74 class ConversionData
    83     void clearErrors() { m_errors.clear(); }
    97     void clearErrors() { m_errors.clear(); }
    84 
    98 
    85 public:
    99 public:
    86     QString m_defaultContext;
   100     QString m_defaultContext;
    87     QByteArray m_codecForSource; // CPP, PO & QM specific
   101     QByteArray m_codecForSource; // CPP, PO & QM specific
    88     QByteArray m_outputCodec; // PO specific
   102     QByteArray m_outputCodec; // CPP & PO specific
       
   103     QString m_unTrPrefix; // QM specific
    89     QString m_sourceFileName;
   104     QString m_sourceFileName;
    90     QString m_targetFileName;
   105     QString m_targetFileName;
    91     QDir m_sourceDir;
   106     QDir m_sourceDir;
    92     QDir m_targetDir; // FIXME: TS specific
   107     QDir m_targetDir; // FIXME: TS specific
    93     QSet<QString> m_projectRoots;
   108     QSet<QString> m_projectRoots;
   110 
   125 
   111     bool load(const QString &filename, ConversionData &err, const QString &format /*= "auto"*/);
   126     bool load(const QString &filename, ConversionData &err, const QString &format /*= "auto"*/);
   112     bool save(const QString &filename, ConversionData &err, const QString &format /*= "auto"*/) const;
   127     bool save(const QString &filename, ConversionData &err, const QString &format /*= "auto"*/) const;
   113     bool release(QFile *iod, ConversionData &cd) const;
   128     bool release(QFile *iod, ConversionData &cd) const;
   114 
   129 
   115     bool contains(const QString &context, const QString &sourceText,
   130     int find(const TranslatorMessage &msg) const;
   116         const QString &comment) const;
       
   117     TranslatorMessage find(const QString &context,
       
   118         const QString &sourceText, const QString &comment) const;
       
   119 
       
   120     TranslatorMessage find(const QString &context,
   131     TranslatorMessage find(const QString &context,
   121         const QString &comment, const TranslatorMessage::References &refs) const;
   132         const QString &comment, const TranslatorMessage::References &refs) const;
   122 
   133 
   123     bool contains(const QString &context) const;
   134     bool contains(const QString &context) const;
   124     TranslatorMessage find(const QString &context) const;
   135     TranslatorMessage find(const QString &context) const;
   125 
   136 
   126     void replace(const TranslatorMessage &msg);
       
   127     void replaceSorted(const TranslatorMessage &msg);
   137     void replaceSorted(const TranslatorMessage &msg);
   128     void extend(const TranslatorMessage &msg); // Only for single-location messages
   138     void extend(const TranslatorMessage &msg); // Only for single-location messages
   129     void append(const TranslatorMessage &msg);
   139     void append(const TranslatorMessage &msg);
   130     void appendSorted(const TranslatorMessage &msg);
   140     void appendSorted(const TranslatorMessage &msg);
   131 
   141 
   135     void stripNonPluralForms();
   145     void stripNonPluralForms();
   136     void stripIdenticalSourceTranslations();
   146     void stripIdenticalSourceTranslations();
   137     void dropTranslations();
   147     void dropTranslations();
   138     void dropUiLines();
   148     void dropUiLines();
   139     void makeFileNamesAbsolute(const QDir &originalPath);
   149     void makeFileNamesAbsolute(const QDir &originalPath);
   140     QSet<TranslatorMessagePtr> resolveDuplicates();
   150 
   141     static void reportDuplicates(const QSet<TranslatorMessagePtr> &dupes,
   151     struct Duplicates { QSet<int> byId, byContents; };
   142                                  const QString &fileName, bool verbose);
   152     Duplicates resolveDuplicates();
       
   153     void reportDuplicates(const Duplicates &dupes, const QString &fileName, bool verbose);
   143 
   154 
   144     void setCodecName(const QByteArray &name);
   155     void setCodecName(const QByteArray &name);
   145     QByteArray codecName() const { return m_codecName; }
   156     QByteArray codecName() const;
       
   157     QTextCodec *codec() const { return m_codec; }
   146 
   158 
   147     QString languageCode() const { return m_language; }
   159     QString languageCode() const { return m_language; }
   148     QString sourceLanguageCode() const { return m_sourceLanguage; }
   160     QString sourceLanguageCode() const { return m_sourceLanguage; }
   149 
   161 
   150     enum LocationsType { DefaultLocations, NoLocations, RelativeLocations, AbsoluteLocations };
   162     enum LocationsType { DefaultLocations, NoLocations, RelativeLocations, AbsoluteLocations };
   200 
   212 
   201 private:
   213 private:
   202     typedef QList<TranslatorMessage> TMM;       // int stores the sequence position.
   214     typedef QList<TranslatorMessage> TMM;       // int stores the sequence position.
   203 
   215 
   204     TMM m_messages;
   216     TMM m_messages;
   205     QByteArray m_codecName;
   217     QTextCodec *m_codec;
   206     LocationsType m_locationsType;
   218     LocationsType m_locationsType;
   207 
   219 
   208     // A string beginning with a 2 or 3 letter language code (ISO 639-1
   220     // A string beginning with a 2 or 3 letter language code (ISO 639-1
   209     // or ISO-639-2), followed by the optional country variant to distinguish
   221     // or ISO-639-2), followed by the optional country variant to distinguish
   210     //  between country-specific variations of the language. The language code
   222     //  between country-specific variations of the language. The language code