39 m_currentField = NoField;
42 if (isStartElement()) {
43 if (name() == QLatin1String(
"source")) {
44 m_currentField = SourceField;
45 }
else if (name() == QLatin1String(
"target")) {
46 m_currentField = TargetField;
47 }
else if (name() == QLatin1String(
"definition")) {
48 m_currentField = DefinitionField;
50 m_currentField = NoField;
51 if (name() == QLatin1String(
"QPH")) {
52 QXmlStreamAttributes atts = attributes();
53 translator.setLanguageCode(atts.value(QLatin1String(
"language")).toString());
54 translator.setSourceLanguageCode(atts.value(QLatin1String(
"sourcelanguage")).toString());
57 }
else if (isWhiteSpace()) {
59 }
else if (isCharacters()) {
60 if (m_currentField == SourceField)
61 m_currentSource += text();
62 else if (m_currentField == TargetField)
63 m_currentTarget += text();
64 else if (m_currentField == DefinitionField)
65 m_currentDefinition += text();
66 }
else if (isEndElement() && name() == QLatin1String(
"phrase")) {
67 m_currentTarget.replace(QChar(Translator::TextVariantSeparator),
68 QChar(Translator::BinaryVariantSeparator));
70 msg.setSourceText(m_currentSource);
71 msg.setTranslation(m_currentTarget);
72 msg.setComment(m_currentDefinition);
74 m_currentSource.clear();
75 m_currentTarget.clear();
76 m_currentDefinition.clear();
124 t <<
"<!DOCTYPE QPH>\n<QPH";
125 QString languageCode = translator.languageCode();
126 if (!languageCode.isEmpty() && languageCode != QLatin1String(
"C"))
127 t <<
" language=\"" << languageCode <<
"\"";
128 languageCode = translator.sourceLanguageCode();
129 if (!languageCode.isEmpty() && languageCode != QLatin1String(
"C"))
130 t <<
" sourcelanguage=\"" << languageCode <<
"\"";
132 for (
const TranslatorMessage &msg : translator.messages()) {
134 t <<
" <source>" << qphProtect(msg.sourceText()) <<
"</source>\n";
135 QString str = msg.translations().join(QLatin1Char(
'@'));
136 str.replace(QChar(Translator::BinaryVariantSeparator),
137 QChar(Translator::TextVariantSeparator));
138 t <<
" <target>" << qphProtect(str)
140 if (!msg.comment().isEmpty())
141 t <<
" <definition>" << qphProtect(msg.comment()) <<
"</definition>\n";