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 |