bool DataModel::load(const QString &fileName, bool *langGuessed, QWidget *parent) { Translator tor; ConversionData cd; bool ok = tor.load(fileName, cd, QLatin1String("auto")); if (!ok) { QMessageBox::warning(parent, QObject::tr("Qt Linguist"), cd.error()); return false; } if (!tor.messageCount()) { QMessageBox::warning(parent, QObject::tr("Qt Linguist"), tr("The translation file '%1' will not be loaded because it is empty.") .arg(fileName.toHtmlEscaped())); return false; } Translator::Duplicates dupes = tor.resolveDuplicates(); if (!dupes.byId.isEmpty() || !dupes.byContents.isEmpty()) { QString err = tr("<qt>Duplicate messages found in '%1':").arg(fileName.toHtmlEscaped()); int numdups = 0; foreach (int i, dupes.byId) { if (++numdups >= 5) { err += tr("<p>[more duplicates omitted]"); goto doWarn; } err += tr("<p>* ID: %1").arg(tor.message(i).id().toHtmlEscaped()); } foreach (int j, dupes.byContents) { const TranslatorMessage &msg = tor.message(j); if (++numdups >= 5) { err += tr("<p>[more duplicates omitted]"); break; } err += tr("<p>* Context: %1<br>* Source: %2") .arg(msg.context().toHtmlEscaped(), msg.sourceText().toHtmlEscaped()); if (!msg.comment().isEmpty()) err += tr("<br>* Comment: %3").arg(msg.comment().toHtmlEscaped()); } doWarn: QMessageBox::warning(parent, QObject::tr("Qt Linguist"), err); }
static void updateTsFiles(const Translator &fetchedTor, const QStringList &tsFileNames, const QStringList &alienFiles, const QString &sourceLanguage, const QString &targetLanguage, UpdateOptions options, bool *fail) { for (int i = 0; i < fetchedTor.messageCount(); i++) { const TranslatorMessage &msg = fetchedTor.constMessage(i); if (!msg.id().isEmpty() && msg.sourceText().isEmpty()) printErr(LU::tr("lupdate warning: Message with id '%1' has no source.\n") .arg(msg.id())); } QList<Translator> aliens; foreach (const QString &fileName, alienFiles) { ConversionData cd; Translator tor; if (!tor.load(fileName, cd, QLatin1String("auto"))) { printErr(cd.error()); *fail = true; continue; } tor.resolveDuplicates(); aliens << tor; }