13 #include <QTextStream> 
   16 void usage( 
const QString &app )
 
   18     qDebug() << 
"Usage: " << app << 
" input.ts input.po";
 
   21 int main( 
int argc, 
char** argv )
 
   28     QFileInfo 
const ts = QFileInfo( QString( argv[1] ) );
 
   34     QFileInfo 
const po = QFileInfo( QString( argv[2] ) );
 
   40     QMap<QString,QString> translations;
 
   43     QFile poFile( po.absoluteFilePath() );
 
   44     poFile.open( QFile::ReadOnly );
 
   45     QTextStream poStream( &poFile );
 
   46     poStream.setCodec( 
"UTF-8" );
 
   47     poStream.setAutoDetectUnicode( 
true );
 
   50     while( !poStream.atEnd() ) {
 
   51         QString line = poStream.readLine();
 
   52         if ( line.startsWith( QLatin1String( 
"#, fuzzy" ) ) ) {
 
   54         } 
else if ( line.startsWith( QLatin1String( 
"msgid " ) ) ) {
 
   55             source = line.mid( 7, line.size() - 8 );
 
   56         } 
else if ( !source.isEmpty() && line.startsWith( QLatin1String( 
"msgstr " ) ) ) {
 
   60                 QString translation = line.mid( 8, line.size() - 9 );
 
   61                 source.replace( QLatin1Char( 
'&' ), QLatin1String( 
"&" ) );
 
   62                 translation.replace( QLatin1Char( 
'&' ), QLatin1String( 
"& ") );
 
   63                 source.replace( QLatin1Char( 
'<' ), QLatin1String( 
"<" ) );
 
   64                 translation.replace( QLatin1Char( 
'<' ), QLatin1String( 
"<" ) );
 
   65                 source.replace( QLatin1Char( 
'>' ), QLatin1String( 
">" ) );
 
   66                 translation.replace( QLatin1Char( 
'>' ), QLatin1String( 
">" ) );
 
   67                 if ( !translation.isEmpty() ) {
 
   68                     translations[source] = translation;
 
   74     QTextStream console( stdout );
 
   75     console.setCodec( 
"UTF-8" );
 
   79     QFile tsFile( ts.absoluteFilePath() );
 
   80     tsFile.open( QFile::ReadOnly );
 
   81     QTextStream tsStream( &tsFile );
 
   82     tsStream.setCodec( 
"UTF-8" );
 
   83     tsStream.setAutoDetectUnicode( 
true );
 
   85     while( !tsStream.atEnd() ) {
 
   86         QString line = tsStream.readLine().trimmed();
 
   87         if ( line.startsWith( QLatin1String( 
"<source>" ) ) ) {
 
   88             source = line.mid( 8, line.size() - 17 );
 
   89             console << line << 
"\n";
 
   90         } 
else if ( !source.isEmpty() &&
 
   91                    line == 
"<translation type=\"unfinished\"></translation>" &&
 
   92                    translations.contains( source ) ) {
 
   93             console << 
"<translation>" << translations[source] << 
"</translation>\n";
 
   94         } 
else if ( !source.isEmpty() &&
 
   95                    line == 
"<translation type=\"unfinished\"></translation>" ) {
 
   96             console << line << 
"\n";
 
   98             console << line << 
"\n";
 
int main(int argc, char **argv)
void usage(const QString &app)