summaryrefslogtreecommitdiff
authorchristophe <christophe>2003-10-18 19:53:17 (UTC)
committer christophe <christophe>2003-10-18 19:53:17 (UTC)
commit38d72acc2225b88b2f561fa59565d4c66261f1c3 (patch) (unidiff)
treee4e11af47e75a5147a0028195c861b4af82fa38f
parent1f128cbf0741b2e4baf1ab5051a7a293fef7e22c (diff)
downloadopie-38d72acc2225b88b2f561fa59565d4c66261f1c3.zip
opie-38d72acc2225b88b2f561fa59565d4c66261f1c3.tar.gz
opie-38d72acc2225b88b2f561fa59565d4c66261f1c3.tar.bz2
Little bug fix on -opie option handling.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--development/translation/opie-lrelease/main.cpp213
1 files changed, 122 insertions, 91 deletions
diff --git a/development/translation/opie-lrelease/main.cpp b/development/translation/opie-lrelease/main.cpp
index e5c1a0c..4c7352f 100644
--- a/development/translation/opie-lrelease/main.cpp
+++ b/development/translation/opie-lrelease/main.cpp
@@ -1,153 +1,184 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS.All rights reserved.
3** 3**
4** This file is part of Qt Linguist. 4** This file is part of Qt Linguist.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21#include <metatranslator.h> 21#include <metatranslator.h>
22#include <proparser.h> 22#include <proparser.h>
23#include <opie.h> 23#include <opie.h>
24 24
25#include <qfile.h> 25#include <qfile.h>
26#include <qregexp.h> 26#include <qregexp.h>
27#include <qstring.h> 27#include <qstring.h>
28#include <qstringlist.h> 28#include <qstringlist.h>
29#include <qtextstream.h> 29#include <qtextstream.h>
30 30
31#include <errno.h> 31#include <errno.h>
32 32
33typedef QValueList<MetaTranslatorMessage> TML; 33typedef QValueList<MetaTranslatorMessage> TML;
34 34
35static void printUsage() 35static void printUsage()
36{ 36{
37 fprintf( stderr, "Usage:\n" 37fprintf( stderr, "Usage:\n"
38 " lrelease [options] project-file\n" 38 "lrelease [options] project-file\n"
39 " lrelease [options] ts-files\n" 39 "lrelease [options] ts-files\n"
40 "Options:\n" 40 "Options:\n"
41 " -opie OPIE dir overrides $OPIEDIR\n" 41 "-opieOPIE dir overrides $OPIEDIR\n"
42 " -help Display this information and exit\n" 42 "-helpDisplay this information and exit\n"
43 " -verbose\n" 43 "-verbose\n"
44 " Explain what is being done\n" 44 " Explain what is being done\n"
45 " -version\n" 45 "-version\n"
46 " Display the version of lrelease and exit\n" ); 46 " Display the version of lrelease and exit\n" );
47} 47}
48static void releaseQmFile( const QString& tsFileName, bool verbose ) 48static void releaseQmFile( const QString& tsFileName, bool verbose )
49{ 49{
50 MetaTranslator tor; 50MetaTranslator tor;
51 QString qmFileName = tsFileName; 51QString qmFileName = tsFileName;
52 qmFileName.replace( QRegExp("\\.ts$"), "" ); 52qmFileName.replace( QRegExp("\\.ts$"), "" );
53 qmFileName += ".qm"; 53qmFileName += ".qm";
54 54
55 if ( tor.load(tsFileName) ) { 55if ( tor.load(tsFileName) ) {
56 if ( verbose ) 56 if ( verbose )
57 fprintf( stderr, "Updating '%s'...\n", qmFileName.latin1() ); 57 fprintf( stderr, "Updating '%s'...\n", qmFileName.latin1() );
58 if ( !tor.release(qmFileName, verbose) ) 58 if ( !tor.release(qmFileName, verbose) )
59 fprintf( stderr, 59 fprintf( stderr,
60 "lrelease warning: For some reason, I cannot save '%s'\n", 60 "lrelease warning: For some reason, I cannot save '%s'\n",
61 qmFileName.latin1() ); 61 qmFileName.latin1() );
62 } else { 62 } else {
63 fprintf( stderr, 63 fprintf( stderr,
64 "lrelease warning: For some reason, I cannot load '%s'\n", 64 "lrelease warning: For some reason, I cannot load '%s'\n",
65 tsFileName.latin1() ); 65 tsFileName.latin1() );
66 } 66 }
67} 67}
68
68static void metaQmFile( const QString &opiedir, 69static void metaQmFile( const QString &opiedir,
69 const QStringList& lang, 70const QStringList& lang,
70 const QString& basename, 71const QString& basename,
71 bool isLib, bool verb ) { 72bool isLib, bool verb ) {
72 QString target = basename + ".ts"; 73QString target = basename + ".ts";
73 if ( isLib ) target.prepend("lib"); 74
74 75if ( isLib ) target.prepend("lib");
75 for ( QStringList::ConstIterator it = lang.begin(); it != lang.end(); 76
76 ++it ) { 77for ( QStringList::ConstIterator it = lang.begin(); it != lang.end(); ++it )
77 QString fileName = opiedir + "/i18n/" + (*it) + "/" + target; 78{
78 qWarning("Target is %s", fileName.latin1() ); 79 QString fileName = opiedir + "/i18n/" + (*it) + "/" + target;
80 qWarning("Target is %s", fileName.latin1() );
79 releaseQmFile( fileName, verb ); 81 releaseQmFile( fileName, verb );
80 }
81} 82}
83}
84
82int main( int argc, char **argv ) 85int main( int argc, char **argv )
83{ 86{
84 bool verbose = FALSE; 87bool verbose = FALSE;
85 bool metTranslations = FALSE; 88// bool metTranslations = FALSE;
86 int numFiles = 0; 89int numFiles = 0;
87 QString opiedir; 90QString opiedir;
88 QStringList languageList = OPIE::self()->languageList( opiedir ); 91QStringList languageList = OPIE::self()->languageList( opiedir );
89 92
90 for ( int i = 1; i < argc; i++ ) { 93for ( int i = 1; i < argc; i++ )
91 if ( qstrcmp(argv[i], "-help") == 0 ) { 94{
92 printUsage(); 95 if ( qstrcmp(argv[i], "-help") == 0 )
93 return 0; 96 {
94 } else if ( qstrcmp(argv[i], "-verbose") == 0 ) { 97 printUsage();
95 verbose = TRUE; 98 return 0;
96 continue; 99 }
97 } else if ( qstrcmp(argv[i], "-version") == 0 ) { 100 else if ( qstrcmp(argv[i], "-verbose") == 0 )
98 fprintf( stderr, "lrelease version %s\n", QT_VERSION_STR ); 101 {
99 return 0; 102 verbose = TRUE;
100 } else if ( qstrcmp(argv[i], "-opie") == 0 ) { 103 continue;
101 if ( i+1 < argc ) { 104 }
102 opiedir = argv[i+1]; 105 else if ( qstrcmp(argv[i], "-version") == 0 )
103 languageList = OPIE::self()->languageList(opiedir); 106 {
104 } 107 fprintf( stderr, "lrelease version %s\n", QT_VERSION_STR );
105 } 108 return 0;
109 }
110 else if ( qstrcmp(argv[i], "-opie") == 0 )
111 {
112 i++;
113 if ( i < argc )
114 {
115 opiedir = argv[i];
116 languageList = OPIE::self()->languageList(opiedir);
117 continue;
118 }
119 // else
120 // {
121 fprintf( stderr, "lrelease error: -opie option need a parameter\n" );
122 printUsage();
123 return 1;
124 // }
125 }
106 126
107 numFiles++; 127 numFiles++;
108 QFile f( argv[i] ); 128 QFile f( argv[i] );
109 if ( !f.open(IO_ReadOnly) ) { 129 if ( !f.open(IO_ReadOnly) )
110 fprintf( stderr, 130 {
111 "lrelease error: Cannot open file '%s': %s\n", argv[i], 131 fprintf( stderr,
112 strerror(errno) ); 132 "lrelease error: Cannot open file '%s': %s\n",
113 return 1; 133 argv[i],
134 strerror(errno) );
135 return 1;
114 } 136 }
115 137
116 QTextStream t( &f ); 138 QTextStream t( &f );
117 QString fullText = t.read(); 139 QString fullText = t.read();
118 f.close(); 140 f.close();
119 141
120 if ( fullText.find(QString("<!DOCTYPE TS>")) >= 0 ) { 142 if ( fullText.find(QString("<!DOCTYPE TS>")) >= 0 )
121 releaseQmFile( argv[i], verbose ); 143 {
122 } else { 144 releaseQmFile( argv[i], verbose );
123 QString target; 145 }
124 bool isLib = FALSE; 146 else
125 QMap<QString, QString> tagMap = proFileTagMap( fullText ); 147 {
126 QMap<QString, QString>::Iterator it; 148 QString target;
127 149 bool isLib = FALSE;
128 for ( it = tagMap.begin(); it != tagMap.end(); ++it ) { 150 QMap<QString, QString> tagMap = proFileTagMap( fullText );
129 QStringList toks = QStringList::split( ' ', it.data() ); 151 QMap<QString, QString>::Iterator it;
130 QStringList::Iterator t; 152
131 153 for ( it = tagMap.begin(); it != tagMap.end(); ++it )
132 for ( t = toks.begin(); t != toks.end(); ++t ) { 154 {
133 if ( it.key() == "TARGET" ) { 155 QStringList toks = QStringList::split( ' ', it.data() );
134 target = *t; 156 QStringList::Iterator t;
135 qWarning("%s %s", it.key().latin1(), (*t).latin1() ); 157
136 }else if ( it.key() == "TEMPLATE" ) { 158 for ( t = toks.begin(); t != toks.end(); ++t )
137 if ( (*t).stripWhiteSpace().lower() == "lib" ) 159 {
138 isLib = TRUE; 160 if ( it.key() == "TARGET" )
139 } 161 {
162 target = *t;
163 qWarning("%s %s", it.key().latin1(), (*t).latin1() );
164 }
165 else if ( it.key() == "TEMPLATE" )
166 {
167 if ( (*t).stripWhiteSpace().lower() == "lib" )
168 isLib = TRUE;
169 }
170 }
140 } 171 }
141 } 172 qWarning("%s", target.latin1() );
142 qWarning("%s", target.latin1() ); 173 metaQmFile( OPIE::self()->opieDir(opiedir),
143 metaQmFile( OPIE::self()->opieDir(opiedir), 174 languageList,target, isLib, verbose );
144 languageList, target, isLib, verbose );
145 } 175 }
146 } 176}
147 177
148 if ( numFiles == 0 ) { 178if ( numFiles == 0 )
179{
149 printUsage(); 180 printUsage();
150 return 1; 181 return 1;
151 } 182}
152 return 0; 183return 0;
153} 184}