50 #include <QtCore/qdebug.h> |
50 #include <QtCore/qdebug.h> |
51 #include <QtCore/qnumeric.h> |
51 #include <QtCore/qnumeric.h> |
52 #include <QtCore/qstring.h> |
52 #include <QtCore/qstring.h> |
53 #include <QtCore/qtextcodec.h> |
53 #include <QtCore/qtextcodec.h> |
54 #include <QtCore/qvariant.h> |
54 #include <QtCore/qvariant.h> |
|
55 |
|
56 #include <iostream> |
55 |
57 |
56 #include <ctype.h> |
58 #include <ctype.h> |
57 #include <stdlib.h> |
59 #include <stdlib.h> |
58 #include <stdio.h> |
60 #include <stdio.h> |
59 #include <string.h> |
61 #include <string.h> |
2212 case 66: { |
2214 case 66: { |
2213 QString name = sym(1).toString(); |
2215 QString name = sym(1).toString(); |
2214 if ((name == QLatin1String("qsTranslate")) || (name == QLatin1String("QT_TRANSLATE_NOOP"))) { |
2216 if ((name == QLatin1String("qsTranslate")) || (name == QLatin1String("QT_TRANSLATE_NOOP"))) { |
2215 QVariantList args = sym(2).toList(); |
2217 QVariantList args = sym(2).toList(); |
2216 if (args.size() < 2) { |
2218 if (args.size() < 2) { |
2217 qWarning("%s:%d: %s() requires at least two arguments", |
2219 std::cerr << qPrintable(fileName) << ':' << identLineNo << ": " |
2218 qPrintable(fileName), identLineNo, qPrintable(name)); |
2220 << qPrintable(name) << "() requires at least two arguments.\n"; |
2219 } else { |
2221 } else { |
2220 if ((args.at(0).type() != QVariant::String) |
2222 if ((args.at(0).type() != QVariant::String) |
2221 || (args.at(1).type() != QVariant::String)) { |
2223 || (args.at(1).type() != QVariant::String)) { |
2222 qWarning("%s:%d: %s(): both arguments must be literal strings", |
2224 std::cerr << qPrintable(fileName) << ':' << identLineNo << ": " |
2223 qPrintable(fileName), identLineNo, qPrintable(name)); |
2225 << qPrintable(name) << "(): both arguments must be literal strings.\n"; |
2224 } else { |
2226 } else { |
2225 QString context = args.at(0).toString(); |
2227 QString context = args.at(0).toString(); |
2226 QString text = args.at(1).toString(); |
2228 QString text = args.at(1).toString(); |
2227 QString comment = args.value(2).toString(); |
2229 QString comment = args.value(2).toString(); |
2228 QString extracomment; |
2230 QString extracomment; |
2232 } |
2234 } |
2233 } |
2235 } |
2234 } else if ((name == QLatin1String("qsTr")) || (name == QLatin1String("QT_TR_NOOP"))) { |
2236 } else if ((name == QLatin1String("qsTr")) || (name == QLatin1String("QT_TR_NOOP"))) { |
2235 QVariantList args = sym(2).toList(); |
2237 QVariantList args = sym(2).toList(); |
2236 if (args.size() < 1) { |
2238 if (args.size() < 1) { |
2237 qWarning("%s:%d: %s() requires at least one argument", |
2239 std::cerr << qPrintable(fileName) << ':' << identLineNo << ": " |
2238 qPrintable(fileName), identLineNo, qPrintable(name)); |
2240 << qPrintable(name) << "() requires at least one argument.\n"; |
2239 } else { |
2241 } else { |
2240 if (args.at(0).type() != QVariant::String) { |
2242 if (args.at(0).type() != QVariant::String) { |
2241 qWarning("%s:%d: %s(): text to translate must be a literal string", |
2243 std::cerr << qPrintable(fileName) << ':' << identLineNo << ": " |
2242 qPrintable(fileName), identLineNo, qPrintable(name)); |
2244 << qPrintable(name) << "(): text to translate must be a literal string.\n"; |
2243 } else { |
2245 } else { |
2244 QString context = QFileInfo(fileName).baseName(); |
2246 QString context = QFileInfo(fileName).baseName(); |
2245 QString text = args.at(0).toString(); |
2247 QString text = args.at(0).toString(); |
2246 QString comment = args.value(1).toString(); |
2248 QString comment = args.value(1).toString(); |
2247 QString extracomment; |
2249 QString extracomment; |
2375 QString code = ts.readAll(); |
2377 QString code = ts.readAll(); |
2376 QScript::Lexer lexer; |
2378 QScript::Lexer lexer; |
2377 lexer.setCode(code, /*lineNumber=*/1); |
2379 lexer.setCode(code, /*lineNumber=*/1); |
2378 QScriptParser parser; |
2380 QScriptParser parser; |
2379 if (!parser.parse(&lexer, filename, &translator)) { |
2381 if (!parser.parse(&lexer, filename, &translator)) { |
2380 qWarning("%s:%d: %s", qPrintable(filename), parser.errorLineNumber(), |
2382 std::cerr << qPrintable(filename) << ':' << parser.errorLineNumber() << ": " |
2381 qPrintable(parser.errorMessage())); |
2383 << qPrintable(parser.errorMessage()) << std::endl; |
2382 return false; |
2384 return false; |
2383 } |
2385 } |
2384 |
2386 |
2385 // Java uses UTF-16 internally and Jambi makes UTF-8 for tr() purposes of it. |
2387 // Java uses UTF-16 internally and Jambi makes UTF-8 for tr() purposes of it. |
2386 translator.setCodecName("UTF-8"); |
2388 translator.setCodecName("UTF-8"); |