summaryrefslogtreecommitdiff
path: root/development/translation/opie-lrelease/main.cpp
Unidiff
Diffstat (limited to 'development/translation/opie-lrelease/main.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--development/translation/opie-lrelease/main.cpp150
1 files changed, 150 insertions, 0 deletions
diff --git a/development/translation/opie-lrelease/main.cpp b/development/translation/opie-lrelease/main.cpp
new file mode 100644
index 0000000..6008c4e
--- a/dev/null
+++ b/development/translation/opie-lrelease/main.cpp
@@ -0,0 +1,150 @@
1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3**
4** This file is part of Qt Linguist.
5**
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
8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file.
10**
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.
13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15**
16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you.
18**
19**********************************************************************/
20
21#include <metatranslator.h>
22#include <proparser.h>
23#include <opie.h>
24
25#include <qfile.h>
26#include <qregexp.h>
27#include <qstring.h>
28#include <qstringlist.h>
29#include <qtextstream.h>
30
31#include <errno.h>
32
33typedef QValueList<MetaTranslatorMessage> TML;
34
35static void printUsage()
36{
37 fprintf( stderr, "Usage:\n"
38 " lrelease [options] project-file\n"
39 " lrelease [options] ts-files\n"
40 "Options:\n"
41 " -opie OPIE dir overrides $OPIEDIR\n"
42 " -help Display this information and exit\n"
43 " -verbose\n"
44 " Explain what is being done\n"
45 " -version\n"
46 " Display the version of lrelease and exit\n" );
47}
48static void releaseQmFile( const QString& tsFileName, bool verbose )
49{
50 MetaTranslator tor;
51 QString qmFileName = tsFileName;
52 qmFileName.replace( QRegExp("\\.ts$"), "" );
53 qmFileName += ".qm";
54
55 if ( tor.load(tsFileName) ) {
56 if ( verbose )
57 fprintf( stderr, "Updating '%s'...\n", qmFileName.latin1() );
58 if ( !tor.release(qmFileName, verbose) )
59 fprintf( stderr,
60 "lrelease warning: For some reason, I cannot save '%s'\n",
61 qmFileName.latin1() );
62 } else {
63 fprintf( stderr,
64 "lrelease warning: For some reason, I cannot load '%s'\n",
65 tsFileName.latin1() );
66 }
67}
68static void metaQmFile( const QString &opiedir,
69 const QStringList& lang,
70 const QString& basename,
71 bool isLib, bool verb ) {
72 QString target = basename + ".ts";
73 if ( isLib ) target.prepend("lib");
74
75 for ( QStringList::ConstIterator it = lang.begin(); it != lang.end();
76 ++it ) {
77 QString fileName = opiedir + "/i18n/" + (*it) + "/" + target;
78 qWarning("Target is %s", fileName.latin1() );
79 }
80}
81int main( int argc, char **argv )
82{
83 bool verbose = FALSE;
84 bool metTranslations = FALSE;
85 int numFiles = 0;
86 QString opiedir;
87 QStringList languageList = OPIE::self()->languageList( opiedir );
88
89 for ( int i = 1; i < argc; i++ ) {
90 if ( qstrcmp(argv[i], "-help") == 0 ) {
91 printUsage();
92 return 0;
93 } else if ( qstrcmp(argv[i], "-verbose") == 0 ) {
94 verbose = TRUE;
95 continue;
96 } else if ( qstrcmp(argv[i], "-version") == 0 ) {
97 fprintf( stderr, "lrelease version %s\n", QT_VERSION_STR );
98 return 0;
99 } else if ( qstrcmp(argv[i], "-opie") == 0 ) {
100 if ( i+1 < argc ) {
101 opiedir = argv[i+1];
102 languageList = OPIE::self()->languageList(opiedir);
103 }
104 }
105
106 numFiles++;
107 QFile f( argv[i] );
108 if ( !f.open(IO_ReadOnly) ) {
109 fprintf( stderr,
110 "lrelease error: Cannot open file '%s': %s\n", argv[i],
111 strerror(errno) );
112 return 1;
113 }
114
115 QTextStream t( &f );
116 QString fullText = t.read();
117 f.close();
118
119 if ( fullText.find(QString("<!DOCTYPE TS>")) >= 0 ) {
120 releaseQmFile( argv[i], verbose );
121 } else {
122 QString target;
123 bool isLib = FALSE;
124 QMap<QString, QString> tagMap = proFileTagMap( fullText );
125 QMap<QString, QString>::Iterator it;
126
127 for ( it = tagMap.begin(); it != tagMap.end(); ++it ) {
128 QStringList toks = QStringList::split( ' ', it.data() );
129 QStringList::Iterator t;
130
131 for ( t = toks.begin(); t != toks.end(); ++t ) {
132 if ( it.key() == "TARGET" ) {
133 target = *t;
134 }else if ( it.key() == "TEMPLATE" ) {
135 if ( (*t).stripWhiteSpace().lower() == "lib" )
136 isLib = TRUE;
137 }
138 }
139 }
140 metaQmFile( OPIE::self()->opieDir(opiedir),
141 languageList, target, isLib, verbose );
142 }
143 }
144
145 if ( numFiles == 0 ) {
146 printUsage();
147 return 1;
148 }
149 return 0;
150}