Diffstat (limited to 'development/translation/opie-lrelease/main.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | development/translation/opie-lrelease/main.cpp | 150 |
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 | |||
33 | typedef QValueList<MetaTranslatorMessage> TML; | ||
34 | |||
35 | static 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 | } | ||
48 | static 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 | } | ||
68 | static 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 | } | ||
81 | int 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 | } | ||