summaryrefslogtreecommitdiff
path: root/development
Unidiff
Diffstat (limited to 'development') (more/less context) (ignore whitespace changes)
-rw-r--r--development/translation/opie-lrelease/main.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/development/translation/opie-lrelease/main.cpp b/development/translation/opie-lrelease/main.cpp
index 6008c4e..e5c1a0c 100644
--- a/development/translation/opie-lrelease/main.cpp
+++ b/development/translation/opie-lrelease/main.cpp
@@ -1,150 +1,153 @@
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" 37 fprintf( 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 " -opie OPIE dir overrides $OPIEDIR\n"
42 " -help Display this information and exit\n" 42 " -help Display 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; 50 MetaTranslator tor;
51 QString qmFileName = tsFileName; 51 QString qmFileName = tsFileName;
52 qmFileName.replace( QRegExp("\\.ts$"), "" ); 52 qmFileName.replace( QRegExp("\\.ts$"), "" );
53 qmFileName += ".qm"; 53 qmFileName += ".qm";
54 54
55 if ( tor.load(tsFileName) ) { 55 if ( 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}
68static void metaQmFile( const QString &opiedir, 68static void metaQmFile( const QString &opiedir,
69 const QStringList& lang, 69 const QStringList& lang,
70 const QString& basename, 70 const QString& basename,
71 bool isLib, bool verb ) { 71 bool isLib, bool verb ) {
72 QString target = basename + ".ts"; 72 QString target = basename + ".ts";
73 if ( isLib ) target.prepend("lib"); 73 if ( isLib ) target.prepend("lib");
74 74
75 for ( QStringList::ConstIterator it = lang.begin(); it != lang.end(); 75 for ( QStringList::ConstIterator it = lang.begin(); it != lang.end();
76 ++it ) { 76 ++it ) {
77 QString fileName = opiedir + "/i18n/" + (*it) + "/" + target; 77 QString fileName = opiedir + "/i18n/" + (*it) + "/" + target;
78 qWarning("Target is %s", fileName.latin1() ); 78 qWarning("Target is %s", fileName.latin1() );
79 releaseQmFile( fileName, verb );
79 } 80 }
80} 81}
81int main( int argc, char **argv ) 82int main( int argc, char **argv )
82{ 83{
83 bool verbose = FALSE; 84 bool verbose = FALSE;
84 bool metTranslations = FALSE; 85 bool metTranslations = FALSE;
85 int numFiles = 0; 86 int numFiles = 0;
86 QString opiedir; 87 QString opiedir;
87 QStringList languageList = OPIE::self()->languageList( opiedir ); 88 QStringList languageList = OPIE::self()->languageList( opiedir );
88 89
89 for ( int i = 1; i < argc; i++ ) { 90 for ( int i = 1; i < argc; i++ ) {
90 if ( qstrcmp(argv[i], "-help") == 0 ) { 91 if ( qstrcmp(argv[i], "-help") == 0 ) {
91 printUsage(); 92 printUsage();
92 return 0; 93 return 0;
93 } else if ( qstrcmp(argv[i], "-verbose") == 0 ) { 94 } else if ( qstrcmp(argv[i], "-verbose") == 0 ) {
94 verbose = TRUE; 95 verbose = TRUE;
95 continue; 96 continue;
96 } else if ( qstrcmp(argv[i], "-version") == 0 ) { 97 } else if ( qstrcmp(argv[i], "-version") == 0 ) {
97 fprintf( stderr, "lrelease version %s\n", QT_VERSION_STR ); 98 fprintf( stderr, "lrelease version %s\n", QT_VERSION_STR );
98 return 0; 99 return 0;
99 } else if ( qstrcmp(argv[i], "-opie") == 0 ) { 100 } else if ( qstrcmp(argv[i], "-opie") == 0 ) {
100 if ( i+1 < argc ) { 101 if ( i+1 < argc ) {
101 opiedir = argv[i+1]; 102 opiedir = argv[i+1];
102 languageList = OPIE::self()->languageList(opiedir); 103 languageList = OPIE::self()->languageList(opiedir);
103 } 104 }
104 } 105 }
105 106
106 numFiles++; 107 numFiles++;
107 QFile f( argv[i] ); 108 QFile f( argv[i] );
108 if ( !f.open(IO_ReadOnly) ) { 109 if ( !f.open(IO_ReadOnly) ) {
109 fprintf( stderr, 110 fprintf( stderr,
110 "lrelease error: Cannot open file '%s': %s\n", argv[i], 111 "lrelease error: Cannot open file '%s': %s\n", argv[i],
111 strerror(errno) ); 112 strerror(errno) );
112 return 1; 113 return 1;
113 } 114 }
114 115
115 QTextStream t( &f ); 116 QTextStream t( &f );
116 QString fullText = t.read(); 117 QString fullText = t.read();
117 f.close(); 118 f.close();
118 119
119 if ( fullText.find(QString("<!DOCTYPE TS>")) >= 0 ) { 120 if ( fullText.find(QString("<!DOCTYPE TS>")) >= 0 ) {
120 releaseQmFile( argv[i], verbose ); 121 releaseQmFile( argv[i], verbose );
121 } else { 122 } else {
122 QString target; 123 QString target;
123 bool isLib = FALSE; 124 bool isLib = FALSE;
124 QMap<QString, QString> tagMap = proFileTagMap( fullText ); 125 QMap<QString, QString> tagMap = proFileTagMap( fullText );
125 QMap<QString, QString>::Iterator it; 126 QMap<QString, QString>::Iterator it;
126 127
127 for ( it = tagMap.begin(); it != tagMap.end(); ++it ) { 128 for ( it = tagMap.begin(); it != tagMap.end(); ++it ) {
128 QStringList toks = QStringList::split( ' ', it.data() ); 129 QStringList toks = QStringList::split( ' ', it.data() );
129 QStringList::Iterator t; 130 QStringList::Iterator t;
130 131
131 for ( t = toks.begin(); t != toks.end(); ++t ) { 132 for ( t = toks.begin(); t != toks.end(); ++t ) {
132 if ( it.key() == "TARGET" ) { 133 if ( it.key() == "TARGET" ) {
133 target = *t; 134 target = *t;
135 qWarning("%s %s", it.key().latin1(), (*t).latin1() );
134 }else if ( it.key() == "TEMPLATE" ) { 136 }else if ( it.key() == "TEMPLATE" ) {
135 if ( (*t).stripWhiteSpace().lower() == "lib" ) 137 if ( (*t).stripWhiteSpace().lower() == "lib" )
136 isLib = TRUE; 138 isLib = TRUE;
137 } 139 }
138 } 140 }
139 } 141 }
142 qWarning("%s", target.latin1() );
140 metaQmFile( OPIE::self()->opieDir(opiedir), 143 metaQmFile( OPIE::self()->opieDir(opiedir),
141 languageList, target, isLib, verbose ); 144 languageList, target, isLib, verbose );
142 } 145 }
143 } 146 }
144 147
145 if ( numFiles == 0 ) { 148 if ( numFiles == 0 ) {
146 printUsage(); 149 printUsage();
147 return 1; 150 return 1;
148 } 151 }
149 return 0; 152 return 0;
150} 153}