int main(int argc, char **argv) { QCoreApplication app(argc, argv); QStringList args = app.arguments(); QTranslator translator; if (translator.load(QLatin1String("lrelease_") + QLocale::system().name())) app.installTranslator(&translator); bool verbose = true; // the default is true starting with Qt 4.2 bool ignoreUnfinished = false; // the default mode is SaveEverything starting with Qt 4.2 TranslatorSaveMode mode = SaveEverything; bool removeIdentical = false; Translator tor; QString outputFile; int numFiles = 0; for (int i = 1; i < argc; ++i) { if (args[i] == QLatin1String("-compress")) { mode = SaveStripped; continue; } else if (args[i] == QLatin1String("-nocompress")) { mode = SaveEverything; continue; } else if (args[i] == QLatin1String("-removeidentical")) { removeIdentical = true; continue; } else if (args[i] == QLatin1String("-nounfinished")) { ignoreUnfinished = true; continue; } else if (args[i] == QLatin1String("-silent")) { verbose = false; continue; } else if (args[i] == QLatin1String("-verbose")) { verbose = true; continue; } else if (args[i] == QLatin1String("-version")) { printOut(QCoreApplication::tr( "lrelease version %1\n").arg(QLatin1String(QT_VERSION_STR)) ); return 0; } else if (args[i] == QLatin1String("-qm")) { if (i == argc - 1) { printUsage(); return 1; } i++; outputFile = args[i]; } else if (args[i] == QLatin1String("-help")) { printUsage(); return 0; } else if (args[i][0] == QLatin1Char('-')) { printUsage(); return 1; } else { numFiles++; } } if (numFiles == 0) { printUsage(); return 1; } for (int i = 1; i < argc; ++i) { if (args[i][0] == QLatin1Char('-') || args[i] == outputFile) continue; if (args[i].endsWith(QLatin1String(".pro"), Qt::CaseInsensitive) || args[i].endsWith(QLatin1String(".pri"), Qt::CaseInsensitive)) { QHash<QByteArray, QStringList> varMap; bool ok = evaluateProFile(args[i], verbose, &varMap ); if (ok) { QStringList translations = varMap.value("TRANSLATIONS"); if (translations.isEmpty()) { qWarning("lrelease warning: Met no 'TRANSLATIONS' entry in" " project file '%s'\n", qPrintable(args[i])); } else { foreach (const QString &trans, translations) if (!releaseTsFile(trans, verbose, ignoreUnfinished, removeIdentical, mode)) return 1; } } else { qWarning("error: lrelease encountered project file functionality that is currently not supported.\n" "You might want to consider using .ts files as input instead of a project file.\n" "Try the following syntax:\n" " lrelease [options] ts-files [-qm qm-file]\n"); } } else {
int main(int argc, char **argv) { #ifdef QT_BOOTSTRAPPED initBinaryDir( #ifndef Q_OS_WIN argv[0] #endif ); #else QCoreApplication app(argc, argv); #ifndef Q_OS_WIN32 QTranslator translator; QTranslator qtTranslator; QString sysLocale = QLocale::system().name(); QString resourceDir = QLibraryInfo::location(QLibraryInfo::TranslationsPath); if (translator.load(QLatin1String("linguist_") + sysLocale, resourceDir) && qtTranslator.load(QLatin1String("qt_") + sysLocale, resourceDir)) { app.installTranslator(&translator); app.installTranslator(&qtTranslator); } #endif // Q_OS_WIN32 #endif // QT_BOOTSTRAPPED ConversionData cd; cd.m_verbose = true; // the default is true starting with Qt 4.2 bool removeIdentical = false; Translator tor; QStringList inputFiles; QString outputFile; for (int i = 1; i < argc; ++i) { if (!strcmp(argv[i], "-compress")) { cd.m_saveMode = SaveStripped; continue; } else if (!strcmp(argv[i], "-idbased")) { cd.m_idBased = true; continue; } else if (!strcmp(argv[i], "-nocompress")) { cd.m_saveMode = SaveEverything; continue; } else if (!strcmp(argv[i], "-removeidentical")) { removeIdentical = true; continue; } else if (!strcmp(argv[i], "-nounfinished")) { cd.m_ignoreUnfinished = true; continue; } else if (!strcmp(argv[i], "-markuntranslated")) { if (i == argc - 1) { printUsage(); return 1; } cd.m_unTrPrefix = QString::fromLocal8Bit(argv[++i]); } else if (!strcmp(argv[i], "-silent")) { cd.m_verbose = false; continue; } else if (!strcmp(argv[i], "-verbose")) { cd.m_verbose = true; continue; } else if (!strcmp(argv[i], "-version")) { printOut(LR::tr("lrelease version %1\n").arg(QLatin1String(QT_VERSION_STR))); return 0; } else if (!strcmp(argv[i], "-qm")) { if (i == argc - 1) { printUsage(); return 1; } outputFile = QString::fromLocal8Bit(argv[++i]); } else if (!strcmp(argv[i], "-help")) { printUsage(); return 0; } else if (argv[i][0] == '-') { printUsage(); return 1; } else { inputFiles << QString::fromLocal8Bit(argv[i]); } } if (inputFiles.isEmpty()) { printUsage(); return 1; } foreach (const QString &inputFile, inputFiles) { if (inputFile.endsWith(QLatin1String(".pro"), Qt::CaseInsensitive) || inputFile.endsWith(QLatin1String(".pri"), Qt::CaseInsensitive)) { QFileInfo fi(inputFile); parseHandler.verbose = evalHandler.verbose = cd.isVerbose(); ProFileOption option; #ifdef QT_BOOTSTRAPPED option.initProperties(binDir + QLatin1String("/qmake")); #else option.initProperties(app.applicationDirPath() + QLatin1String("/qmake")); #endif ProFileParser parser(0, &parseHandler); ProFileEvaluator visitor(&option, &parser, &evalHandler); ProFile *pro; if (!(pro = parser.parsedProFile(QDir::cleanPath(fi.absoluteFilePath())))) { printErr(LR::tr( "lrelease error: cannot read project file '%1'.\n") .arg(inputFile)); continue; } if (!visitor.accept(pro)) { printErr(LR::tr( "lrelease error: cannot process project file '%1'.\n") .arg(inputFile)); pro->deref(); continue; } pro->deref(); QStringList translations = visitor.values(QLatin1String("TRANSLATIONS")); if (translations.isEmpty()) { printErr(LR::tr( "lrelease warning: Met no 'TRANSLATIONS' entry in project file '%1'\n") .arg(inputFile)); } else { QDir proDir(fi.absolutePath()); foreach (const QString &trans, translations) if (!releaseTsFile(QFileInfo(proDir, trans).filePath(), cd, removeIdentical)) return 1; } } else { if (outputFile.isEmpty()) {
int main( int argc, char **argv ) { bool verbose = FALSE; bool stripped = TRUE; bool metTranslations = FALSE; MetaTranslator tor; QString outputFile; int numFiles = 0; int i; for ( i = 1; i < argc; i++ ) { if ( qstrcmp(argv[i], "-nocompress") == 0 ) { stripped = FALSE; continue; } else if ( qstrcmp(argv[i], "-verbose") == 0 ) { verbose = TRUE; continue; } else if ( qstrcmp(argv[i], "-version") == 0 ) { fprintf( stderr, "lrelease version %s\n", QT_VERSION_STR ); return 0; } else if ( qstrcmp(argv[i], "-qm") == 0 ) { if ( i == argc - 1 ) { printUsage(); return 1; } else { i++; outputFile = argv[i]; argv[i][0] = '-'; } } else if ( qstrcmp(argv[i], "-help") == 0 ) { printUsage(); return 0; } else if ( argv[i][0] == '-' ) { printUsage(); return 1; } else { numFiles++; } } if ( numFiles == 0 ) { printUsage(); return 1; } for ( i = 1; i < argc; i++ ) { if ( argv[i][0] == '-' ) continue; QFile f( argv[i] ); if ( !f.open(IO_ReadOnly) ) { fprintf( stderr, "lrelease error: Cannot open file '%s': %s\n", argv[i], strerror(errno) ); return 1; } QTextStream t( &f ); QString fullText = t.read(); f.close(); if ( fullText.find(QString("<!DOCTYPE TS>")) >= 0 ) { if ( outputFile.isEmpty() ) { releaseTsFile( argv[i], verbose, stripped ); } else { loadTsFile( tor, argv[i], verbose ); } } else { QString oldDir = QDir::currentDirPath(); QDir::setCurrent( QFileInfo(argv[i]).dirPath() ); QMap<QString, QString> tagMap = proFileTagMap( fullText ); QMap<QString, QString>::Iterator it; for ( it = tagMap.begin(); it != tagMap.end(); ++it ) { QStringList toks = QStringList::split( ' ', it.data() ); QStringList::Iterator t; for ( t = toks.begin(); t != toks.end(); ++t ) { if ( it.key() == QString("TRANSLATIONS") ) { metTranslations = TRUE; releaseTsFile( *t, verbose, stripped ); } } } if ( !metTranslations ) fprintf( stderr, "lrelease warning: Met no 'TRANSLATIONS' entry in" " project file '%s'\n", argv[i] ); QDir::setCurrent( oldDir ); } } if ( !outputFile.isEmpty() ) releaseMetaTranslator( tor, outputFile, verbose, stripped ); return 0; }
int main(int argc, char **argv) { QCoreApplication app(argc, argv); #ifndef Q_OS_WIN32 QTranslator translator; QTranslator qtTranslator; QString sysLocale = QLocale::system().name(); QString resourceDir = QLibraryInfo::location(QLibraryInfo::TranslationsPath); if (translator.load(QLatin1String("linguist_") + sysLocale, resourceDir) && qtTranslator.load(QLatin1String("qt_") + sysLocale, resourceDir)) { app.installTranslator(&translator); app.installTranslator(&qtTranslator); } #endif ConversionData cd; cd.m_verbose = true; // the default is true starting with Qt 4.2 bool removeIdentical = false; Translator tor; QStringList inputFiles; QString outputFile; for (int i = 1; i < argc; ++i) { if (!strcmp(argv[i], "-compress")) { cd.m_saveMode = SaveStripped; continue; } else if (!strcmp(argv[i], "-idbased")) { cd.m_idBased = true; continue; } else if (!strcmp(argv[i], "-nocompress")) { cd.m_saveMode = SaveEverything; continue; } else if (!strcmp(argv[i], "-removeidentical")) { removeIdentical = true; continue; } else if (!strcmp(argv[i], "-nounfinished")) { cd.m_ignoreUnfinished = true; continue; } else if (!strcmp(argv[i], "-markuntranslated")) { if (i == argc - 1) { printUsage(); return 1; } cd.m_unTrPrefix = QString::fromLocal8Bit(argv[++i]); } else if (!strcmp(argv[i], "-silent")) { cd.m_verbose = false; continue; } else if (!strcmp(argv[i], "-verbose")) { cd.m_verbose = true; continue; } else if (!strcmp(argv[i], "-version")) { printOut(LR::tr("lrelease version %1\n").arg(QLatin1String(CS_VERSION_STR))); return 0; } else if (!strcmp(argv[i], "-qm")) { if (i == argc - 1) { printUsage(); return 1; } outputFile = QString::fromLocal8Bit(argv[++i]); } else if (!strcmp(argv[i], "-help")) { printUsage(); return 0; } else if (argv[i][0] == '-') { printUsage(); return 1; } else { inputFiles << QString::fromLocal8Bit(argv[i]); } } if (inputFiles.isEmpty()) { printUsage(); return 1; } foreach (const QString &inputFile, inputFiles) { if (outputFile.isEmpty()) { if (!releaseTsFile(inputFile, cd, removeIdentical)) return 1; } else { if (!loadTsFile(tor, inputFile, cd.isVerbose())) return 1; } } if (!outputFile.isEmpty()) return releaseTranslator(tor, outputFile, cd, removeIdentical) ? 0 : 1; return 0; }