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)