-rw-r--r-- | development/translation/opie-lrelease/main.cpp | 213 |
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,14 +1,14 @@ | |||
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. |
@@ -25,129 +25,160 @@ | |||
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 | ||
33 | typedef QValueList<MetaTranslatorMessage> TML; | 33 | typedef QValueList<MetaTranslatorMessage> TML; |
34 | 34 | ||
35 | static void printUsage() | 35 | static 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 | "-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 | } |
48 | static void releaseQmFile( const QString& tsFileName, bool verbose ) | 48 | static 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 | } |
68 | |||
68 | static void metaQmFile( const QString &opiedir, | 69 | static void metaQmFile( const QString &opiedir, |
69 | const QStringList& lang, | 70 | const QStringList& lang, |
70 | const QString& basename, | 71 | const QString& basename, |
71 | bool isLib, bool verb ) { | 72 | bool isLib, bool verb ) { |
72 | QString target = basename + ".ts"; | 73 | QString target = basename + ".ts"; |
73 | if ( isLib ) target.prepend("lib"); | 74 | |
74 | 75 | if ( isLib ) target.prepend("lib"); | |
75 | for ( QStringList::ConstIterator it = lang.begin(); it != lang.end(); | 76 | |
76 | ++it ) { | 77 | for ( 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 | |||
82 | int main( int argc, char **argv ) | 85 | int main( int argc, char **argv ) |
83 | { | 86 | { |
84 | bool verbose = FALSE; | 87 | bool verbose = FALSE; |
85 | bool metTranslations = FALSE; | 88 | // bool metTranslations = FALSE; |
86 | int numFiles = 0; | 89 | int numFiles = 0; |
87 | QString opiedir; | 90 | QString opiedir; |
88 | QStringList languageList = OPIE::self()->languageList( opiedir ); | 91 | QStringList languageList = OPIE::self()->languageList( opiedir ); |
89 | 92 | ||
90 | for ( int i = 1; i < argc; i++ ) { | 93 | for ( 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 ) { | 178 | if ( numFiles == 0 ) |
179 | { | ||
149 | printUsage(); | 180 | printUsage(); |
150 | return 1; | 181 | return 1; |
151 | } | 182 | } |
152 | return 0; | 183 | return 0; |
153 | } | 184 | } |