diff options
33 files changed, 4648 insertions, 257 deletions
@@ -7086,9 +7086,6 @@ FNR == 1 { if ( \$3 == "moc" || \$3 ~ /^Qt/ ) { target_file = first matched_target = 1 - } else if ( \$3 == "lrelease" || \$3 == "qm_phony_target" ) { - target_file = second - matched_target = 1 } } @@ -7173,7 +7170,6 @@ for part in $CFG_BUILD_PARTS; do case "$part" in tools) PART_ROOTS="$PART_ROOTS tools" ;; libs) PART_ROOTS="$PART_ROOTS src" ;; - translations) PART_ROOTS="$PART_ROOTS tools/linguist/lrelease translations" ;; examples) PART_ROOTS="$PART_ROOTS examples demos" ;; *) ;; esac diff --git a/doc/src/known-issues.qdoc b/doc/src/known-issues.qdoc index e005b14..9c90908 100644 --- a/doc/src/known-issues.qdoc +++ b/doc/src/known-issues.qdoc @@ -58,13 +58,6 @@ \section1 Issues with Third Party Software - \section2 Intel Compiler Support - - Although it is possible to build applications against Qt 4.5.x using Intel - CC 10, these applications will crash when run. We recommend that developers - who rely on this compiler wait until a fix is available before upgrading to - the Qt 4.5.x series of releases. - \section2 X11 Hardware Support \list diff --git a/projects.pro b/projects.pro index 2d8e7f4..953eae8 100644 --- a/projects.pro +++ b/projects.pro @@ -41,12 +41,7 @@ for(PROJECT, $$list($$lower($$unique(QT_BUILD_PARTS)))) { } else:isEqual(PROJECT, docs) { contains(QT_BUILD_PARTS, tools):include(doc/doc.pri) } else:isEqual(PROJECT, translations) { - contains(QT_BUILD_PARTS, tools) { - include(translations/translations.pri) # ts targets - } else { - SUBDIRS += tools/linguist/lrelease - } - SUBDIRS += translations # qm build step + contains(QT_BUILD_PARTS, tools):include(translations/translations.pri) } else:isEqual(PROJECT, qmake) { # SUBDIRS += qmake } else { diff --git a/src/gui/dialogs/qinputdialog.cpp b/src/gui/dialogs/qinputdialog.cpp index 8c0c2c7..e2c5742 100644 --- a/src/gui/dialogs/qinputdialog.cpp +++ b/src/gui/dialogs/qinputdialog.cpp @@ -1128,8 +1128,8 @@ void QInputDialog::done(int result) is \a parent. The dialog will be modal and uses the specified widget \a flags. - This function returns the text which has been entered in the line - edit. It will not return an empty string. + If the dialog is accepted, this function returns the text in the dialog's + line edit. If the dialog is rejected, a null QString is returned. Use this static function like this: @@ -1158,7 +1158,7 @@ QString QInputDialog::getText(QWidget *parent, const QString &title, const QStri if (ret) { return dialog.textValue(); } else { - return text; + return QString(); } } diff --git a/src/gui/itemviews/qitemeditorfactory.cpp b/src/gui/itemviews/qitemeditorfactory.cpp index c576e40..480a472 100644 --- a/src/gui/itemviews/qitemeditorfactory.cpp +++ b/src/gui/itemviews/qitemeditorfactory.cpp @@ -158,6 +158,10 @@ QByteArray QItemEditorFactory::valuePropertyName(QVariant::Type type) const */ QItemEditorFactory::~QItemEditorFactory() { + //we make sure we delete all the QItemEditorCreatorBase + //this has to be done only once, hence the QSet + QSet<QItemEditorCreatorBase*> set = creatorMap.values().toSet(); + qDeleteAll(set); } /*! @@ -170,8 +174,16 @@ QItemEditorFactory::~QItemEditorFactory() */ void QItemEditorFactory::registerEditor(QVariant::Type type, QItemEditorCreatorBase *creator) { - delete creatorMap.value(type, 0); - creatorMap[type] = creator; + QHash<QVariant::Type, QItemEditorCreatorBase *>::iterator it = creatorMap.find(type); + if (it != creatorMap.end()) { + QItemEditorCreatorBase *oldCreator = it.value(); + Q_ASSERT(oldCreator); + creatorMap.erase(it); + if (!creatorMap.values().contains(oldCreator)) + delete oldCreator; // if it is no more in use we can delete it + } + + creatorMap[type] = creator; } class QDefaultItemEditorFactory : public QItemEditorFactory diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp index 1d3e38e..78515ac 100644 --- a/src/gui/painting/qpaintengine_raster.cpp +++ b/src/gui/painting/qpaintengine_raster.cpp @@ -3996,7 +3996,7 @@ void QRasterPaintEnginePrivate::initializeRasterizer(QSpanData *data) const QClipData *c = clip(); if (c) { const QRect r(QPoint(c->xmin, c->ymin), - QPoint(c->xmax, c->ymax)); + QSize(c->xmax - c->xmin, c->ymax - c->ymin)); clipRect = clipRect.intersected(r); blend = data->blend; } else { diff --git a/src/gui/painting/qpathclipper.cpp b/src/gui/painting/qpathclipper.cpp index 9625b28..053955c 100644 --- a/src/gui/painting/qpathclipper.cpp +++ b/src/gui/painting/qpathclipper.cpp @@ -45,9 +45,6 @@ #include <private/qdatabuffer_p.h> #include <qmath.h> -#include <QImage> -#include <QPainter> - /** The algorithm is as follows: @@ -68,6 +65,20 @@ QT_BEGIN_NAMESPACE +static inline bool fuzzyIsNull(qreal d) +{ + if (sizeof(qreal) == sizeof(double)) + return qAbs(d) <= 1e-12; + else + return qAbs(d) <= 1e-5f; +} + +static inline bool comparePoints(const QPointF &a, const QPointF &b) +{ + return fuzzyIsNull(a.x() - b.x()) + && fuzzyIsNull(a.y() - b.y()); +} + //#define QDEBUG_CLIPPER static qreal dot(const QPointF &a, const QPointF &b) { @@ -105,8 +116,10 @@ private: bool QIntersectionFinder::beziersIntersect(const QBezier &one, const QBezier &two) const { - return (one.pt1() == two.pt1() && one.pt2() == two.pt2() && one.pt3() == two.pt3() && one.pt4() == two.pt4()) - || (one.pt1() == two.pt4() && one.pt2() == two.pt3() && one.pt3() == two.pt2() && one.pt4() == two.pt1()) + return (comparePoints(one.pt1(), two.pt1()) && comparePoints(one.pt2(), two.pt2()) + && comparePoints(one.pt3(), two.pt3()) && comparePoints(one.pt4(), two.pt4())) + || (comparePoints(one.pt1(), two.pt4()) && comparePoints(one.pt2(), two.pt3()) + && comparePoints(one.pt3(), two.pt2()) && comparePoints(one.pt4(), two.pt1())) || QBezier::findIntersections(one, two, 0); } @@ -118,17 +131,17 @@ bool QIntersectionFinder::linesIntersect(const QLineF &a, const QLineF &b) const const QPointF q1 = b.p1(); const QPointF q2 = b.p2(); - if (p1 == p2 || q1 == q2) + if (comparePoints(p1, p2) || comparePoints(q1, q2)) return false; - const bool p1_equals_q1 = (p1 == q1); - const bool p2_equals_q2 = (p2 == q2); + const bool p1_equals_q1 = comparePoints(p1, q1); + const bool p2_equals_q2 = comparePoints(p2, q2); if (p1_equals_q1 && p2_equals_q2) return true; - const bool p1_equals_q2 = (p1 == q2); - const bool p2_equals_q1 = (p2 == q1); + const bool p1_equals_q2 = comparePoints(p1, q2); + const bool p2_equals_q1 = comparePoints(p2, q1); if (p1_equals_q2 && p2_equals_q1) return true; @@ -184,8 +197,10 @@ bool QIntersectionFinder::linesIntersect(const QLineF &a, const QLineF &b) const void QIntersectionFinder::intersectBeziers(const QBezier &one, const QBezier &two, QVector<QPair<qreal, qreal> > &t, QDataBuffer<QIntersection> &intersections) { - if ((one.pt1() == two.pt1() && one.pt2() == two.pt2() && one.pt3() == two.pt3() && one.pt4() == two.pt4()) - || (one.pt1() == two.pt4() && one.pt2() == two.pt3() && one.pt3() == two.pt2() && one.pt4() == two.pt1())) { + if ((comparePoints(one.pt1(), two.pt1()) && comparePoints(one.pt2(), two.pt2()) + && comparePoints(one.pt3(), two.pt3()) && comparePoints(one.pt4(), two.pt4())) + || (comparePoints(one.pt1(), two.pt4()) && comparePoints(one.pt2(), two.pt3()) + && comparePoints(one.pt3(), two.pt2()) && comparePoints(one.pt4(), two.pt1()))) { return; } @@ -230,17 +245,17 @@ void QIntersectionFinder::intersectLines(const QLineF &a, const QLineF &b, QData const QPointF q1 = b.p1(); const QPointF q2 = b.p2(); - if (p1 == p2 || q1 == q2) + if (comparePoints(p1, p2) || comparePoints(q1, q2)) return; - const bool p1_equals_q1 = (p1 == q1); - const bool p2_equals_q2 = (p2 == q2); + const bool p1_equals_q1 = comparePoints(p1, q1); + const bool p2_equals_q2 = comparePoints(p2, q2); if (p1_equals_q1 && p2_equals_q2) return; - const bool p1_equals_q2 = (p1 == q2); - const bool p2_equals_q1 = (p2 == q1); + const bool p1_equals_q2 = comparePoints(p1, q2); + const bool p2_equals_q1 = comparePoints(p2, q1); if (p1_equals_q2 && p2_equals_q1) return; @@ -624,11 +639,11 @@ public: const qreal pivot = pivotComponents[depth & 1]; const qreal value = pointComponents[depth & 1]; - if (qFuzzyCompare(pivot, value)) { + if (fuzzyIsNull(pivot - value)) { const qreal pivot2 = pivotComponents[(depth + 1) & 1]; const qreal value2 = pointComponents[(depth + 1) & 1]; - if (qFuzzyCompare(pivot2, value2)) { + if (fuzzyIsNull(pivot2 - value2)) { if (node.id < 0) node.id = m_tree->nextId(); @@ -802,15 +817,15 @@ QWingedEdge::TraversalStatus QWingedEdge::next(const QWingedEdge::TraversalStatu static bool isLine(const QBezier &bezier) { - const bool equal_1_2 = bezier.pt1() == bezier.pt2(); - const bool equal_2_3 = bezier.pt2() == bezier.pt3(); - const bool equal_3_4 = bezier.pt3() == bezier.pt4(); + const bool equal_1_2 = comparePoints(bezier.pt1(), bezier.pt2()); + const bool equal_2_3 = comparePoints(bezier.pt2(), bezier.pt3()); + const bool equal_3_4 = comparePoints(bezier.pt3(), bezier.pt4()); // point? if (equal_1_2 && equal_2_3 && equal_3_4) return true; - if (bezier.pt1() == bezier.pt4()) + if (comparePoints(bezier.pt1(), bezier.pt4())) return equal_1_2 || equal_3_4; return (equal_1_2 && equal_3_4) || (equal_1_2 && equal_2_3) || (equal_2_3 && equal_3_4); @@ -844,14 +859,14 @@ void QPathSegments::addPath(const QPainterPath &path) else currentPoint = path.elementAt(i); - if (i > 0 && m_points.at(lastMoveTo) == currentPoint) + if (i > 0 && comparePoints(m_points.at(lastMoveTo), currentPoint)) current = lastMoveTo; else m_points << currentPoint; switch (path.elementAt(i).type) { case QPainterPath::MoveToElement: - if (hasMoveTo && last != lastMoveTo && m_points.at(last) != m_points.at(lastMoveTo)) + if (hasMoveTo && last != lastMoveTo && !comparePoints(m_points.at(last), m_points.at(lastMoveTo))) m_segments << Segment(m_pathId, last, lastMoveTo); hasMoveTo = true; last = lastMoveTo = current; @@ -879,7 +894,7 @@ void QPathSegments::addPath(const QPainterPath &path) } } - if (hasMoveTo && last != lastMoveTo && m_points.at(last) != m_points.at(lastMoveTo)) + if (hasMoveTo && last != lastMoveTo && !comparePoints(m_points.at(last), m_points.at(lastMoveTo))) m_segments << Segment(m_pathId, last, lastMoveTo); for (int i = firstSegment; i < m_segments.size(); ++i) { @@ -1357,7 +1372,7 @@ void QWingedEdge::addBezierEdge(const QBezier *bezier, const QPointF &a, const Q if (qFuzzyCompare(alphaA, alphaB)) return; - if (a == b) { + if (comparePoints(a, b)) { int v = insert(a); addBezierEdge(bezier, v, v, alphaA, alphaB, path); diff --git a/src/gui/painting/qrasterizer.cpp b/src/gui/painting/qrasterizer.cpp index 629b38e..58e4b4e 100644 --- a/src/gui/painting/qrasterizer.cpp +++ b/src/gui/painting/qrasterizer.cpp @@ -703,7 +703,7 @@ static inline qreal qRoundF(qreal v) void QRasterizer::rasterizeLine(const QPointF &a, const QPointF &b, qreal width, bool squareCap) { - if (a == b || width == 0) + if (a == b || width == 0 || d->clipRect.isEmpty()) return; QPointF pa = a; diff --git a/src/network/access/qhttpnetworkconnection.cpp b/src/network/access/qhttpnetworkconnection.cpp index cfce735..f0c694d 100644 --- a/src/network/access/qhttpnetworkconnection.cpp +++ b/src/network/access/qhttpnetworkconnection.cpp @@ -1020,7 +1020,8 @@ void QHttpNetworkConnectionPrivate::removeReply(QHttpNetworkReply *reply) for (int i = 0; i < channelCount; ++i) { if (channels[i].reply == reply) { channels[i].reply = 0; - closeChannel(i); + if (reply->d_func()->connectionCloseEnabled()) + closeChannel(i); QMetaObject::invokeMethod(q, "_q_startNextRequest", Qt::QueuedConnection); return; } diff --git a/src/svg/qsvghandler.cpp b/src/svg/qsvghandler.cpp index 44477e5..e2c1312 100644 --- a/src/svg/qsvghandler.cpp +++ b/src/svg/qsvghandler.cpp @@ -3378,6 +3378,7 @@ void QSvgHandler::init() { m_doc = 0; m_style = 0; + m_animEnd = 0; m_defaultCoords = LT_PX; m_defaultPen = QPen(Qt::black, 1, Qt::NoPen, Qt::FlatCap, Qt::SvgMiterJoin); m_defaultPen.setMiterLimit(4); diff --git a/tests/auto/qinputdialog/tst_qinputdialog.cpp b/tests/auto/qinputdialog/tst_qinputdialog.cpp index a658aeb..7e4b828 100644 --- a/tests/auto/qinputdialog/tst_qinputdialog.cpp +++ b/tests/auto/qinputdialog/tst_qinputdialog.cpp @@ -56,6 +56,7 @@ class tst_QInputDialog : public QObject { Q_OBJECT QWidget *parent; + QDialog::DialogCode doneCode; void (*testFunc)(QInputDialog *); static void testFuncGetInteger(QInputDialog *dialog); static void testFuncGetDouble(QInputDialog *dialog); @@ -72,6 +73,7 @@ private slots: void getText(); void getItem_data(); void getItem(); + void task256299_getTextReturnNullStringOnRejected(); }; QString stripFraction(const QString &s) @@ -245,8 +247,9 @@ void tst_QInputDialog::timerEvent(QTimerEvent *event) killTimer(event->timerId()); QInputDialog *dialog = qFindChild<QInputDialog *>(parent); Q_ASSERT(dialog); - testFunc(dialog); - dialog->done(QDialog::Accepted); // cause static function call to return + if (testFunc) + testFunc(dialog); + dialog->done(doneCode); // cause static function call to return } void tst_QInputDialog::getInteger_data() @@ -266,6 +269,7 @@ void tst_QInputDialog::getInteger() QFETCH(int, max); Q_ASSERT(min < max); parent = new QWidget; + doneCode = QDialog::Accepted; testFunc = &tst_QInputDialog::testFuncGetInteger; startTimer(0); bool ok = false; @@ -305,6 +309,7 @@ void tst_QInputDialog::getDouble() QFETCH(int, decimals); Q_ASSERT(min < max && decimals >= 0 && decimals <= 13); parent = new QWidget; + doneCode = QDialog::Accepted; testFunc = &tst_QInputDialog::testFuncGetDouble; startTimer(0); bool ok = false; @@ -322,6 +327,7 @@ void tst_QInputDialog::getDouble() void tst_QInputDialog::task255502getDouble() { parent = new QWidget; + doneCode = QDialog::Accepted; testFunc = &tst_QInputDialog::testFuncGetDouble; startTimer(0); bool ok = false; @@ -347,6 +353,7 @@ void tst_QInputDialog::getText() { QFETCH(QString, text); parent = new QWidget; + doneCode = QDialog::Accepted; testFunc = &tst_QInputDialog::testFuncGetText; startTimer(0); bool ok = false; @@ -356,6 +363,19 @@ void tst_QInputDialog::getText() delete parent; } +void tst_QInputDialog::task256299_getTextReturnNullStringOnRejected() +{ + parent = new QWidget; + doneCode = QDialog::Rejected; + testFunc = 0; + startTimer(0); + bool ok = true; + const QString result = QInputDialog::getText(parent, "", "", QLineEdit::Normal, "foobar", &ok); + QVERIFY(!ok); + QVERIFY(result.isNull()); + delete parent; +} + void tst_QInputDialog::getItem_data() { QTest::addColumn<QStringList>("items"); @@ -373,6 +393,7 @@ void tst_QInputDialog::getItem() QFETCH(QStringList, items); QFETCH(bool, editable); parent = new QWidget; + doneCode = QDialog::Accepted; testFunc = &tst_QInputDialog::testFuncGetItem; startTimer(0); bool ok = false; diff --git a/tests/auto/qitemeditorfactory/tst_qitemeditorfactory.cpp b/tests/auto/qitemeditorfactory/tst_qitemeditorfactory.cpp index 5540b38..d9a7d56 100644 --- a/tests/auto/qitemeditorfactory/tst_qitemeditorfactory.cpp +++ b/tests/auto/qitemeditorfactory/tst_qitemeditorfactory.cpp @@ -61,16 +61,40 @@ void tst_QItemEditorFactory::createEditor() void tst_QItemEditorFactory::createCustomEditor() { - QItemEditorFactory editorFactory; + //we make it inherit from QObject so that we can use QPointer + class MyEditor : public QObject, public QStandardItemEditorCreator<QDoubleSpinBox> + { + }; - QItemEditorCreatorBase *creator = new QStandardItemEditorCreator<QDoubleSpinBox>(); - editorFactory.registerEditor(QVariant::Rect, creator); + QPointer<MyEditor> creator = new MyEditor; + QPointer<MyEditor> creator2 = new MyEditor; - QWidget parent; + { + QItemEditorFactory editorFactory; + + editorFactory.registerEditor(QVariant::Rect, creator); + editorFactory.registerEditor(QVariant::RectF, creator); + + //creator should not be deleted as a result of calling the next line + editorFactory.registerEditor(QVariant::Rect, creator2); + QVERIFY(creator); + + //this should erase creator2 + editorFactory.registerEditor(QVariant::Rect, creator); + QVERIFY(creator2.isNull()); + + + QWidget parent; + + QWidget *w = editorFactory.createEditor(QVariant::Rect, &parent); + QCOMPARE(w->metaObject()->className(), "QDoubleSpinBox"); + QCOMPARE(w->metaObject()->userProperty().type(), QVariant::Double); + } - QWidget *w = editorFactory.createEditor(QVariant::Rect, &parent); - QCOMPARE(w->metaObject()->className(), "QDoubleSpinBox"); - QCOMPARE(w->metaObject()->userProperty().type(), QVariant::Double); + //editorFactory has been deleted, so should be creator + //because editorFActory has the ownership + QVERIFY(creator.isNull()); + QVERIFY(creator2.isNull()); delete creator; } diff --git a/tests/auto/qpainter/tst_qpainter.cpp b/tests/auto/qpainter/tst_qpainter.cpp index 3f36729..7e42da8 100644 --- a/tests/auto/qpainter/tst_qpainter.cpp +++ b/tests/auto/qpainter/tst_qpainter.cpp @@ -228,6 +228,7 @@ private slots: void zeroOpacity(); void clippingBug(); + void emptyClip(); private: void fillData(); @@ -4218,5 +4219,23 @@ void tst_QPainter::clippingBug() QCOMPARE(img, expected); } +void tst_QPainter::emptyClip() +{ + QImage img(64, 64, QImage::Format_ARGB32_Premultiplied); + QPainter p(&img); + p.setRenderHints(QPainter::Antialiasing); + p.setClipRect(0, 32, 64, 0); + p.fillRect(0, 0, 64, 64, Qt::white); + + QPainterPath path; + path.lineTo(64, 0); + path.lineTo(64, 64); + path.lineTo(40, 64); + path.lineTo(40, 80); + path.lineTo(0, 80); + + p.fillPath(path, Qt::green); +} + QTEST_MAIN(tst_QPainter) #include "tst_qpainter.moc" diff --git a/tests/auto/qpathclipper/tst_qpathclipper.cpp b/tests/auto/qpathclipper/tst_qpathclipper.cpp index f3077ee..6e6b632 100644 --- a/tests/auto/qpathclipper/tst_qpathclipper.cpp +++ b/tests/auto/qpathclipper/tst_qpathclipper.cpp @@ -93,6 +93,7 @@ private slots: void task204301(); void task209056(); + void task251909(); }; Q_DECLARE_METATYPE(QPainterPath) @@ -1397,6 +1398,25 @@ void tst_QPathClipper::task209056() QVERIFY(p3 != QPainterPath()); } +void tst_QPathClipper::task251909() +{ + QPainterPath p1; + p1.moveTo(0, -10); + p1.lineTo(10, -10); + p1.lineTo(10, 0); + p1.lineTo(0, 0); + + QPainterPath p2; + p2.moveTo(0, 8e-14); + p2.lineTo(10, -8e-14); + p2.lineTo(10, 10); + p2.lineTo(0, 10); + + QPainterPath result = p1.united(p2); + + QVERIFY(result.elementCount() <= 5); +} + QTEST_APPLESS_MAIN(tst_QPathClipper) diff --git a/tests/auto/qsqlquery/tst_qsqlquery.cpp b/tests/auto/qsqlquery/tst_qsqlquery.cpp index d17706b..825db6c 100644 --- a/tests/auto/qsqlquery/tst_qsqlquery.cpp +++ b/tests/auto/qsqlquery/tst_qsqlquery.cpp @@ -177,9 +177,10 @@ private slots: #ifdef NOT_READY_YET void task_217003_data() { generic_data(); } void task_217003(); - void task_229811(); void task_229811_data() { generic_data(); } + void task_234422_data() { generic_data(); } + void task_234422(); #endif void task_250026_data() { generic_data("QODBC"); } void task_250026(); @@ -2775,6 +2776,44 @@ void tst_QSqlQuery::task_229811() q.exec("DROP TABLE " + tableName ); } + +void tst_QSqlQuery::task_234422() +{ + QFETCH( QString, dbName ); + QSqlDatabase db = QSqlDatabase::database( dbName ); + CHECK_DATABASE( db ); + + QSqlQuery query(db); + QStringList m_airlines; + QStringList m_countries; + + m_airlines << "Lufthansa" << "SAS" << "United" << "KLM" << "Aeroflot"; + m_countries << "DE" << "SE" << "US" << "NL" << "RU"; + + QString tableName = qTableName( "task_234422" ); + + query.exec("DROP TABLE " + tableName); + QVERIFY_SQL(query,exec("CREATE TABLE " + tableName + " (id int primary key, " + "name varchar(20), homecountry varchar(2))")); + for (int i = 0; i < m_airlines.count(); ++i) { + QVERIFY(query.exec(QString("INSERT INTO " + tableName + " values(%1, '%2', '%3')") + .arg(i).arg(m_airlines[i], m_countries[i]))); + } + + QVERIFY_SQL(query, exec("SELECT name FROM " + tableName)); + QVERIFY(query.isSelect()); + QVERIFY(query.first()); + QVERIFY(query.next()); + QCOMPARE(query.at(), 1); + + QSqlQuery query2(query); + + QVERIFY_SQL(query2,exec()); + QVERIFY(query2.first()); + QCOMPARE(query2.at(), 0); + QCOMPARE(query.at(), 1); +} + #endif QTEST_MAIN( tst_QSqlQuery ) diff --git a/tools/assistant/tools/assistant/bookmarkmanager.cpp b/tools/assistant/tools/assistant/bookmarkmanager.cpp index fbd9923..3bca573 100644 --- a/tools/assistant/tools/assistant/bookmarkmanager.cpp +++ b/tools/assistant/tools/assistant/bookmarkmanager.cpp @@ -63,7 +63,7 @@ QT_BEGIN_NAMESPACE BookmarkDialog::BookmarkDialog(BookmarkManager *manager, const QString &title, - const QString &url, QWidget *parent) + const QString &url, QWidget *parent) : QDialog(parent) , m_url(url) , m_title(title) @@ -95,21 +95,21 @@ BookmarkDialog::BookmarkDialog(BookmarkManager *manager, const QString &title, connect(ui.buttonBox, SIGNAL(accepted()), this, SLOT(addAccepted())); connect(ui.newFolderButton, SIGNAL(clicked()), this, SLOT(addNewFolder())); connect(ui.toolButton, SIGNAL(clicked()), this, SLOT(toolButtonClicked())); - connect(ui.bookmarkEdit, SIGNAL(textChanged(const QString&)), this, - SLOT(textChanged(const QString&))); + connect(ui.bookmarkEdit, SIGNAL(textChanged(QString)), this, + SLOT(textChanged(QString))); - connect(bookmarkManager->treeBookmarkModel(), SIGNAL(itemChanged(QStandardItem*)), + connect(bookmarkManager->treeBookmarkModel(), + SIGNAL(itemChanged(QStandardItem*)), this, SLOT(itemChanged(QStandardItem*))); - connect(ui.bookmarkFolders, SIGNAL(currentIndexChanged(const QString&)), this, - SLOT(selectBookmarkFolder(const QString&))); + connect(ui.bookmarkFolders, SIGNAL(currentIndexChanged(QString)), this, + SLOT(selectBookmarkFolder(QString))); - connect(ui.treeView, SIGNAL(customContextMenuRequested(const QPoint&)), this, - SLOT(customContextMenuRequested(const QPoint&))); + connect(ui.treeView, SIGNAL(customContextMenuRequested(QPoint)), this, + SLOT(customContextMenuRequested(QPoint))); - connect(ui.treeView->selectionModel(), - SIGNAL(currentChanged(const QModelIndex&, const QModelIndex&)), - this, SLOT(currentChanged(const QModelIndex&, const QModelIndex&))); + connect(ui.treeView->selectionModel(), SIGNAL(currentChanged(QModelIndex, + QModelIndex)), this, SLOT(currentChanged(QModelIndex))); } BookmarkDialog::~BookmarkDialog() @@ -118,8 +118,8 @@ BookmarkDialog::~BookmarkDialog() void BookmarkDialog::addAccepted() { - const QItemSelection selection = ui.treeView->selectionModel()->selection(); - const QModelIndexList list = selection.indexes(); + QItemSelectionModel *model = ui.treeView->selectionModel(); + const QModelIndexList &list = model->selection().indexes(); QModelIndex index; if (!list.isEmpty()) @@ -131,8 +131,8 @@ void BookmarkDialog::addAccepted() void BookmarkDialog::addNewFolder() { - const QItemSelection selection = ui.treeView->selectionModel()->selection(); - const QModelIndexList list = selection.indexes(); + QItemSelectionModel *model = ui.treeView->selectionModel(); + const QModelIndexList &list = model->selection().indexes(); QModelIndex index; if (!list.isEmpty()) @@ -143,13 +143,12 @@ void BookmarkDialog::addNewFolder() if (newFolder.isValid()) { ui.treeView->expand(index); const QModelIndex &index = proxyModel->mapFromSource(newFolder); - ui.treeView->selectionModel()->setCurrentIndex(index, - QItemSelectionModel::ClearAndSelect); + model->setCurrentIndex(index, QItemSelectionModel::ClearAndSelect); ui.bookmarkFolders->clear(); ui.bookmarkFolders->addItems(bookmarkManager->bookmarkFolders()); - const QString name = index.data().toString(); + const QString &name = index.data().toString(); ui.bookmarkFolders->setCurrentIndex(ui.bookmarkFolders->findText(name)); } ui.treeView->setFocus(); @@ -183,14 +182,14 @@ void BookmarkDialog::itemChanged(QStandardItem *item) ui.bookmarkFolders->addItems(bookmarkManager->bookmarkFolders()); QString name = tr("Bookmarks"); - const QModelIndex& index = ui.treeView->currentIndex(); + const QModelIndex &index = ui.treeView->currentIndex(); if (index.isValid()) name = index.data().toString(); ui.bookmarkFolders->setCurrentIndex(ui.bookmarkFolders->findText(name)); } } -void BookmarkDialog::textChanged(const QString& string) +void BookmarkDialog::textChanged(const QString &string) { ui.buttonBox->button(QDialogButtonBox::Ok)->setEnabled(!string.isEmpty()); } @@ -209,9 +208,12 @@ void BookmarkDialog::selectBookmarkFolder(const QString &folderName) QList<QStandardItem*> list = model->findItems(folderName, Qt::MatchCaseSensitive | Qt::MatchRecursive, 0); if (!list.isEmpty()) { - QModelIndex index = model->indexFromItem(list.at(0)); - ui.treeView->selectionModel()->setCurrentIndex( - proxyModel->mapFromSource(index), QItemSelectionModel::ClearAndSelect); + const QModelIndex &index = model->indexFromItem(list.at(0)); + QItemSelectionModel *model = ui.treeView->selectionModel(); + if (model) { + model->setCurrentIndex(proxyModel->mapFromSource(index), + QItemSelectionModel::ClearAndSelect); + } } } @@ -226,13 +228,13 @@ void BookmarkDialog::customContextMenuRequested(const QPoint &point) QAction *removeItem = menu.addAction(tr("Delete Folder")); QAction *renameItem = menu.addAction(tr("Rename Folder")); - QAction *picked_action = menu.exec(ui.treeView->mapToGlobal(point)); - if (!picked_action) + QAction *picked = menu.exec(ui.treeView->mapToGlobal(point)); + if (!picked) return; - if (picked_action == removeItem) { - bookmarkManager->removeBookmarkItem(ui.treeView, - proxyModel->mapToSource(index)); + const QModelIndex &proxyIndex = proxyModel->mapToSource(index); + if (picked == removeItem) { + bookmarkManager->removeBookmarkItem(ui.treeView, proxyIndex); ui.bookmarkFolders->clear(); ui.bookmarkFolders->addItems(bookmarkManager->bookmarkFolders()); @@ -242,10 +244,9 @@ void BookmarkDialog::customContextMenuRequested(const QPoint &point) name = index.data().toString(); ui.bookmarkFolders->setCurrentIndex(ui.bookmarkFolders->findText(name)); } - else if (picked_action == renameItem) { - QStandardItem *item = bookmarkManager->treeBookmarkModel()-> - itemFromIndex(proxyModel->mapToSource(index)); - if (item) { + else if (picked == renameItem) { + BookmarkModel *model = bookmarkManager->treeBookmarkModel(); + if (QStandardItem *item = model->itemFromIndex(proxyIndex)) { item->setEditable(true); ui.treeView->edit(index); item->setEditable(false); @@ -253,19 +254,12 @@ void BookmarkDialog::customContextMenuRequested(const QPoint &point) } } -void BookmarkDialog::currentChanged(const QModelIndex& current, - const QModelIndex& previous) +void BookmarkDialog::currentChanged(const QModelIndex ¤t) { - Q_UNUSED(previous) - - if (!current.isValid()) { - ui.bookmarkFolders->setCurrentIndex( - ui.bookmarkFolders->findText(tr("Bookmarks"))); - return; - } - - ui.bookmarkFolders->setCurrentIndex( - ui.bookmarkFolders->findText(current.data().toString())); + QString text = tr("Bookmarks"); + if (current.isValid()) + text = current.data().toString(); + ui.bookmarkFolders->setCurrentIndex(ui.bookmarkFolders->findText(text)); } bool BookmarkDialog::eventFilter(QObject *object, QEvent *e) @@ -276,7 +270,7 @@ bool BookmarkDialog::eventFilter(QObject *object, QEvent *e) QModelIndex index = ui.treeView->currentIndex(); switch (ke->key()) { case Qt::Key_F2: { - const QModelIndex& source = proxyModel->mapToSource(index); + const QModelIndex &source = proxyModel->mapToSource(index); QStandardItem *item = bookmarkManager->treeBookmarkModel()->itemFromIndex(source); if (item) { @@ -307,10 +301,11 @@ bool BookmarkDialog::eventFilter(QObject *object, QEvent *e) } +// #pragma mark -- BookmarkWidget BookmarkWidget::BookmarkWidget(BookmarkManager *manager, QWidget *parent, - bool showButtons) + bool showButtons) : QWidget(parent) , addButton(0) , removeButton(0) @@ -326,7 +321,7 @@ BookmarkWidget::~BookmarkWidget() void BookmarkWidget::removeClicked() { - const QModelIndex& index = treeView->currentIndex(); + const QModelIndex &index = treeView->currentIndex(); if (searchField->text().isEmpty()) { bookmarkManager->removeBookmarkItem(treeView, filterBookmarkModel->mapToSource(index)); @@ -360,10 +355,11 @@ void BookmarkWidget::filterChanged() expandItems(); } -void BookmarkWidget::expand(const QModelIndex& index) +void BookmarkWidget::expand(const QModelIndex &index) { - const QModelIndex& source = filterBookmarkModel->mapToSource(index); - QStandardItem *item = bookmarkManager->treeBookmarkModel()->itemFromIndex(source); + const QModelIndex &source = filterBookmarkModel->mapToSource(index); + QStandardItem *item = + bookmarkManager->treeBookmarkModel()->itemFromIndex(source); if (item) item->setData(treeView->isExpanded(index), Qt::UserRole + 11); } @@ -404,22 +400,22 @@ void BookmarkWidget::customContextMenuRequested(const QPoint &point) } } - QAction *picked_action = menu.exec(treeView->mapToGlobal(point)); - if (!picked_action) + QAction *pickedAction = menu.exec(treeView->mapToGlobal(point)); + if (!pickedAction) return; - if (picked_action == showItem) { + if (pickedAction == showItem) { emit requestShowLink(data); } - else if (picked_action == showItemNewTab) { + else if (pickedAction == showItemNewTab) { CentralWidget::instance()->setSourceInNewTab(data); } - else if (picked_action == removeItem) { + else if (pickedAction == removeItem) { bookmarkManager->removeBookmarkItem(treeView, filterBookmarkModel->mapToSource(index)); } - else if (picked_action == renameItem) { - const QModelIndex& source = filterBookmarkModel->mapToSource(index); + else if (pickedAction == renameItem) { + const QModelIndex &source = filterBookmarkModel->mapToSource(index); QStandardItem *item = bookmarkManager->treeBookmarkModel()->itemFromIndex(source); if (item) { @@ -443,7 +439,7 @@ void BookmarkWidget::setup(bool showButtons) searchField = new QLineEdit(this); vlayout->addWidget(searchField); - connect(searchField, SIGNAL(textChanged(const QString &)), this, + connect(searchField, SIGNAL(textChanged(QString)), this, SLOT(filterChanged())); treeView = new TreeView(this); @@ -490,17 +486,14 @@ void BookmarkWidget::setup(bool showButtons) treeView->viewport()->installEventFilter(this); treeView->setContextMenuPolicy(Qt::CustomContextMenu); - connect(treeView, SIGNAL(expanded(const QModelIndex&)), this, - SLOT(expand(const QModelIndex&))); - - connect(treeView, SIGNAL(collapsed(const QModelIndex&)), this, - SLOT(expand(const QModelIndex&))); - - connect(treeView, SIGNAL(activated(const QModelIndex&)), this, - SLOT(activated(const QModelIndex&))); - - connect(treeView, SIGNAL(customContextMenuRequested(const QPoint&)), - this, SLOT(customContextMenuRequested(const QPoint&))); + connect(treeView, SIGNAL(expanded(QModelIndex)), this, + SLOT(expand(QModelIndex))); + connect(treeView, SIGNAL(collapsed(QModelIndex)), this, + SLOT(expand(QModelIndex))); + connect(treeView, SIGNAL(activated(QModelIndex)), this, + SLOT(activated(QModelIndex))); + connect(treeView, SIGNAL(customContextMenuRequested(QPoint)), + this, SLOT(customContextMenuRequested(QPoint))); filterBookmarkModel->setFilterKeyColumn(0); filterBookmarkModel->setDynamicSortFilter(true); @@ -514,8 +507,8 @@ void BookmarkWidget::expandItems() QStandardItemModel *model = bookmarkManager->treeBookmarkModel(); QList<QStandardItem*>list = model->findItems(QLatin1String("*"), Qt::MatchWildcard | Qt::MatchRecursive, 0); - foreach (const QStandardItem* item, list) { - const QModelIndex& index = model->indexFromItem(item); + foreach (const QStandardItem *item, list) { + const QModelIndex &index = model->indexFromItem(item); treeView->setExpanded(filterBookmarkModel->mapFromSource(index), item->data(Qt::UserRole + 11).toBool()); } @@ -541,17 +534,17 @@ bool BookmarkWidget::eventFilter(QObject *object, QEvent *e) if (e->type() == QEvent::KeyPress) { QKeyEvent *ke = static_cast<QKeyEvent*>(e); if (index.isValid() && searchField->text().isEmpty()) { + const QModelIndex &src = filterBookmarkModel->mapToSource(index); if (ke->key() == Qt::Key_F2) { - QStandardItem *item = bookmarkManager->treeBookmarkModel() - ->itemFromIndex(filterBookmarkModel->mapToSource(index)); + QStandardItem *item = + bookmarkManager->treeBookmarkModel()->itemFromIndex(src); if (item) { item->setEditable(true); treeView->edit(index); item->setEditable(false); } } else if (ke->key() == Qt::Key_Delete) { - bookmarkManager->removeBookmarkItem(treeView, - filterBookmarkModel->mapToSource(index)); + bookmarkManager->removeBookmarkItem(treeView, src); } } @@ -559,7 +552,7 @@ bool BookmarkWidget::eventFilter(QObject *object, QEvent *e) default: break; case Qt::Key_Up: { case Qt::Key_Down: - treeView->subclassKeyPressEvent(ke); + treeView->subclassKeyPressEvent(ke); } break; case Qt::Key_Enter: { @@ -593,9 +586,10 @@ bool BookmarkWidget::eventFilter(QObject *object, QEvent *e) } +// #pragma mark -- BookmarkModel -BookmarkModel::BookmarkModel(int rows, int columns, QObject * parent) +BookmarkModel::BookmarkModel(int rows, int columns, QObject *parent) : QStandardItemModel(rows, columns, parent) { } @@ -612,23 +606,23 @@ Qt::DropActions BookmarkModel::supportedDropActions() const Qt::ItemFlags BookmarkModel::flags(const QModelIndex &index) const { Qt::ItemFlags defaultFlags = QStandardItemModel::flags(index); - if (index.data(Qt::UserRole + 10).toString() == QLatin1String("Folder")) + if ((!index.isValid()) // can only happen for the invisible root item + || index.data(Qt::UserRole + 10).toString() == QLatin1String("Folder")) return (Qt::ItemIsDropEnabled | defaultFlags) &~ Qt::ItemIsDragEnabled; return (Qt::ItemIsDragEnabled | defaultFlags) &~ Qt::ItemIsDropEnabled; } +// #pragma mark -- BookmarkManager -BookmarkManager::BookmarkManager(QHelpEngineCore* _helpEngine) +BookmarkManager::BookmarkManager(QHelpEngineCore *_helpEngine) : treeModel(new BookmarkModel(0, 1, this)) , listModel(new BookmarkModel(0, 1, this)) , helpEngine(_helpEngine) { folderIcon = QApplication::style()->standardIcon(QStyle::SP_DirClosedIcon); - treeModel->setHeaderData(0, Qt::Horizontal, QObject::tr("Bookmark")); - listModel->setHeaderData(0, Qt::Horizontal, QObject::tr("Bookmark")); connect(treeModel, SIGNAL(itemChanged(QStandardItem*)), this, SLOT(itemChanged(QStandardItem*))); @@ -652,22 +646,10 @@ BookmarkModel* BookmarkManager::listBookmarkModel() void BookmarkManager::saveBookmarks() { - qint32 depth = 0; QByteArray bookmarks; QDataStream stream(&bookmarks, QIODevice::WriteOnly); - QStandardItem *root = treeModel->invisibleRootItem(); - - for (int i = 0; i < root->rowCount(); ++i) { - const QStandardItem *item = root->child(i); - stream << depth; // root - stream << item->data(Qt::DisplayRole).toString(); - stream << item->data(Qt::UserRole + 10).toString(); - stream << item->data(Qt::UserRole + 11).toBool(); - if (item->rowCount() > 0) { - readBookmarksRecursive(item, stream, (depth +1)); - } - } + readBookmarksRecursive(treeModel->invisibleRootItem(), stream, 0); helpEngine->setCustomValue(QLatin1String("Bookmarks"), bookmarks); } @@ -687,7 +669,7 @@ QStringList BookmarkManager::bookmarkFolders() const return folders; } -QModelIndex BookmarkManager::addNewFolder(const QModelIndex& index) +QModelIndex BookmarkManager::addNewFolder(const QModelIndex &index) { QStandardItem *item = new QStandardItem(uniqueFolderName()); item->setEditable(false); @@ -703,16 +685,17 @@ QModelIndex BookmarkManager::addNewFolder(const QModelIndex& index) return treeModel->indexFromItem(item); } -void BookmarkManager::removeBookmarkItem(QTreeView *treeView, const QModelIndex& index) +void BookmarkManager::removeBookmarkItem(QTreeView *treeView, + const QModelIndex &index) { QStandardItem *item = treeModel->itemFromIndex(index); if (item) { QString data = index.data(Qt::UserRole + 10).toString(); if (data == QLatin1String("Folder") && item->rowCount() > 0) { int value = QMessageBox::question(treeView, tr("Remove"), - tr("You are going to delete a Folder, this will also<br>" - "remove it's content. Are you sure to continue?"), - QMessageBox::Yes | QMessageBox::Cancel, QMessageBox::Cancel); + tr("You are going to delete a Folder, this will also<br>" + "remove it's content. Are you sure to continue?"), + QMessageBox::Yes | QMessageBox::Cancel, QMessageBox::Cancel); if (value == QMessageBox::Cancel) return; @@ -733,28 +716,26 @@ void BookmarkManager::removeBookmarkItem(QTreeView *treeView, const QModelIndex& } } -void BookmarkManager::showBookmarkDialog(QWidget* parent, const QString &name, - const QString &url) +void BookmarkManager::showBookmarkDialog(QWidget *parent, const QString &name, + const QString &url) { BookmarkDialog dialog(this, name, url, parent); dialog.exec(); } -void BookmarkManager::addNewBookmark(const QModelIndex& index, - const QString &name, const QString &url) +void BookmarkManager::addNewBookmark(const QModelIndex &index, + const QString &name, const QString &url) { QStandardItem *item = new QStandardItem(name); item->setEditable(false); item->setData(false, Qt::UserRole + 11); item->setData(url, Qt::UserRole + 10); - if (index.isValid()) { + if (index.isValid()) treeModel->itemFromIndex(index)->appendRow(item); - listModel->appendRow(item->clone()); - } else { + else treeModel->appendRow(item); - listModel->appendRow(item->clone()); - } + listModel->appendRow(item->clone()); } void BookmarkManager::itemChanged(QStandardItem *item) @@ -785,7 +766,8 @@ void BookmarkManager::setupBookmarkModels() QList<int> lastDepths; QList<QStandardItem*> parents; - QByteArray ba = helpEngine->customValue(QLatin1String("Bookmarks")).toByteArray(); + QByteArray ba = + helpEngine->customValue(QLatin1String("Bookmarks")).toByteArray(); QDataStream stream(ba); while (!stream.atEnd()) { stream >> depth >> name >> type >> expanded; @@ -855,8 +837,7 @@ void BookmarkManager::removeBookmarkFolderItems(QStandardItem *item) } void BookmarkManager::readBookmarksRecursive(const QStandardItem *item, - QDataStream &stream, - const qint32 depth) const + QDataStream &stream, const qint32 depth) const { for (int j = 0; j < item->rowCount(); ++j) { const QStandardItem *child = item->child(j); diff --git a/tools/assistant/tools/assistant/bookmarkmanager.h b/tools/assistant/tools/assistant/bookmarkmanager.h index 29da5f3..bf7af41 100644 --- a/tools/assistant/tools/assistant/bookmarkmanager.h +++ b/tools/assistant/tools/assistant/bookmarkmanager.h @@ -74,7 +74,7 @@ class BookmarkDialog : public QDialog Q_OBJECT public: - BookmarkDialog(BookmarkManager *manager, const QString &title, + BookmarkDialog(BookmarkManager *manager, const QString &title, const QString &url, QWidget *parent = 0); ~BookmarkDialog(); @@ -86,8 +86,8 @@ private slots: void textChanged(const QString& string); void selectBookmarkFolder(const QString &folderName); void customContextMenuRequested(const QPoint &point); - void currentChanged(const QModelIndex& current, const QModelIndex& previous); - + void currentChanged(const QModelIndex& current); + private: bool eventFilter(QObject *object, QEvent *e); @@ -177,14 +177,16 @@ public: QStringList bookmarkFolders() const; QModelIndex addNewFolder(const QModelIndex& index); void removeBookmarkItem(QTreeView *treeView, const QModelIndex& index); - void showBookmarkDialog(QWidget* parent, const QString &name, const QString &url); - void addNewBookmark(const QModelIndex& index, const QString &name, const QString &url); + void showBookmarkDialog(QWidget* parent, const QString &name, + const QString &url); + void addNewBookmark(const QModelIndex& index, const QString &name, + const QString &url); void setupBookmarkModels(); private slots: void itemChanged(QStandardItem *item); -private: +private: QString uniqueFolderName() const; void removeBookmarkFolderItems(QStandardItem *item); void readBookmarksRecursive(const QStandardItem *item, QDataStream &stream, @@ -193,7 +195,7 @@ private: private: QString oldText; QIcon folderIcon; - + BookmarkModel *treeModel; BookmarkModel *listModel; QStandardItem *renameItem; diff --git a/tools/assistant/translations/qt_help.pro b/tools/assistant/translations/qt_help.pro index e6208a6..9f4d7d8 100644 --- a/tools/assistant/translations/qt_help.pro +++ b/tools/assistant/translations/qt_help.pro @@ -42,6 +42,7 @@ HEADERS += ../lib/qhelpcollectionhandler_p.h \ TRANSLATIONS=$$[QT_INSTALL_TRANSLATIONS]/qt_help_de.ts \ $$[QT_INSTALL_TRANSLATIONS]/qt_help_ja.ts \ $$[QT_INSTALL_TRANSLATIONS]/qt_help_pl.ts \ + $$[QT_INSTALL_TRANSLATIONS]/qt_help_ru.ts \ $$[QT_INSTALL_TRANSLATIONS]/qt_help_untranslated.ts \ $$[QT_INSTALL_TRANSLATIONS]/qt_help_zh_CN.ts \ $$[QT_INSTALL_TRANSLATIONS]/qt_help_zh_TW.ts \ diff --git a/tools/assistant/translations/translations.pro b/tools/assistant/translations/translations.pro index 8572123..4b836e6 100644 --- a/tools/assistant/translations/translations.pro +++ b/tools/assistant/translations/translations.pro @@ -43,6 +43,7 @@ HEADERS += ../tools/assistant/aboutdialog.h \ TRANSLATIONS=$$[QT_INSTALL_TRANSLATIONS]/assistant_de.ts \ $$[QT_INSTALL_TRANSLATIONS]/assistant_ja.ts \ $$[QT_INSTALL_TRANSLATIONS]/assistant_pl.ts \ + $$[QT_INSTALL_TRANSLATIONS]/assistant_ru.ts \ $$[QT_INSTALL_TRANSLATIONS]/assistant_untranslated.ts \ $$[QT_INSTALL_TRANSLATIONS]/assistant_zh_CN.ts \ $$[QT_INSTALL_TRANSLATIONS]/assistant_zh_TW.ts \ diff --git a/tools/assistant/translations/translations_adp.pro b/tools/assistant/translations/translations_adp.pro index e3edca4..c6f3e81 100644 --- a/tools/assistant/translations/translations_adp.pro +++ b/tools/assistant/translations/translations_adp.pro @@ -34,6 +34,7 @@ HEADERS += ../compat/helpwindow.h \ TRANSLATIONS=$$[QT_INSTALL_TRANSLATIONS]/assistant_adp_de.ts \ $$[QT_INSTALL_TRANSLATIONS]/assistant_adp_ja.ts \ $$[QT_INSTALL_TRANSLATIONS]/assistant_adp_pl.ts \ + $$[QT_INSTALL_TRANSLATIONS]/assistant_adp_ru.ts \ $$[QT_INSTALL_TRANSLATIONS]/assistant_adp_untranslated.ts \ $$[QT_INSTALL_TRANSLATIONS]/assistant_adp_zh_CN.ts \ $$[QT_INSTALL_TRANSLATIONS]/assistant_adp_zh_TW.ts diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp index dcc955b..e8fb282 100644 --- a/tools/configure/configureapp.cpp +++ b/tools/configure/configureapp.cpp @@ -3087,7 +3087,6 @@ void Configure::buildHostTools() << "src/tools/moc" << "src/tools/rcc" << "src/tools/uic" - << "tools/linguist/lrelease" << "tools/checksdk"; if (dictionary[ "CETEST" ] == "yes") diff --git a/tools/linguist/linguist/linguist.pro b/tools/linguist/linguist/linguist.pro index 234b0b1..890b252 100644 --- a/tools/linguist/linguist/linguist.pro +++ b/tools/linguist/linguist/linguist.pro @@ -101,6 +101,7 @@ RESOURCES += linguist.qrc TRANSLATIONS=$$[QT_INSTALL_TRANSLATIONS]/linguist_ja.ts \ $$[QT_INSTALL_TRANSLATIONS]/linguist_pl.ts \ + $$[QT_INSTALL_TRANSLATIONS]/linguist_ru.ts \ $$[QT_INSTALL_TRANSLATIONS]/linguist_untranslated.ts \ $$[QT_INSTALL_TRANSLATIONS]/linguist_zh_CN.ts \ $$[QT_INSTALL_TRANSLATIONS]/linguist_zh_TW.ts \ diff --git a/tools/linguist/phrasebooks/russian.qph b/tools/linguist/phrasebooks/russian.qph index 0b06cea..629c60b 100644 --- a/tools/linguist/phrasebooks/russian.qph +++ b/tools/linguist/phrasebooks/russian.qph @@ -1,4 +1,5 @@ -<!DOCTYPE QPH><QPH language="ru"> +<!DOCTYPE QPH> +<QPH language="ru"> <phrase> <source>About</source> <target>О программе</target> @@ -68,10 +69,6 @@ <target>авто-прокрутка</target> </phrase> <phrase> - <source>Back</source> - <target>Назад</target> -</phrase> -<phrase> <source>boxed edit</source> <target>окно редактирования</target> </phrase> @@ -117,11 +114,11 @@ </phrase> <phrase> <source>Close button</source> - <target>кнопка закрытия</target> + <target>Кнопка закрытия</target> </phrase> <phrase> <source>collapse</source> - <target>крах</target> + <target>свернуть</target> </phrase> <phrase> <source>column heading</source> @@ -257,7 +254,7 @@ </phrase> <phrase> <source>expand</source> - <target>расширять</target> + <target>развернуть</target> </phrase> <phrase> <source>Explore</source> @@ -285,15 +282,15 @@ </phrase> <phrase> <source>Find Next</source> - <target>Продолжить поиск</target> + <target>Найти далее</target> </phrase> <phrase> <source>Find What</source> - <target>Поиск</target> + <target>Искать</target> </phrase> <phrase> <source>folder</source> - <target>каталог</target> + <target>папка</target> </phrase> <phrase> <source>font</source> @@ -385,7 +382,7 @@ </phrase> <phrase> <source>landscape</source> - <target>альбом</target> + <target>альбомная</target> </phrase> <phrase> <source>link</source> @@ -513,7 +510,7 @@ </phrase> <phrase> <source>OK</source> - <target>OK</target> + <target>Готово</target> </phrase> <phrase> <source>OLE</source> @@ -525,7 +522,7 @@ </phrase> <phrase> <source>OLE embedded object</source> - <target>внедренный OLE-объект</target> + <target>внедрённый OLE-объект</target> </phrase> <phrase> <source>OLE linked object</source> @@ -533,7 +530,7 @@ </phrase> <phrase> <source>OLE nondefault drag and drop</source> - <target>предопределенный OLE-механизм</target> + <target>предопределённый OLE-механизм</target> </phrase> <phrase> <source>Open</source> @@ -557,7 +554,7 @@ </phrase> <phrase> <source>Page Setup</source> - <target>шаг установки</target> + <target>Параметры страницы</target> </phrase> <phrase> <source>palette window</source> @@ -625,11 +622,11 @@ </phrase> <phrase> <source>portrait</source> - <target>портрет</target> + <target>книжная</target> </phrase> <phrase> <source>press</source> - <target>нажимать</target> + <target>нажать</target> </phrase> <phrase> <source>primary container</source> @@ -757,7 +754,7 @@ </phrase> <phrase> <source>secondary window</source> - <target>подчиненное окно</target> + <target>подчинённое окно</target> </phrase> <phrase> <source>select</source> @@ -765,7 +762,7 @@ </phrase> <phrase> <source>Select All</source> - <target>Выделить все</target> + <target>Выделить всё</target> </phrase> <phrase> <source>selection</source> @@ -861,11 +858,11 @@ </phrase> <phrase> <source>status bar</source> - <target>статусная строка</target> + <target>строка состояния</target> </phrase> <phrase> <source>Stop</source> - <target>Стоп</target> + <target>Остановить</target> </phrase> <phrase> <source>tab control</source> @@ -897,7 +894,7 @@ </phrase> <phrase> <source>toggle key</source> - <target>кнопка-выключатель</target> + <target>кнопка-переключатель</target> </phrase> <phrase> <source>toolbar</source> @@ -979,4 +976,88 @@ <source>Yes</source> <target>Да</target> </phrase> +<phrase> + <source>No</source> + <target>Нет</target> +</phrase> +<phrase> + <source>Options</source> + <target>Параметры</target> +</phrase> +<phrase> + <source>directory</source> + <target>каталог</target> +</phrase> +<phrase> + <source>Finish</source> + <target>Завершить</target> +</phrase> +<phrase> + <source>Continue</source> + <target>Продолжить</target> +</phrase> +<phrase> + <source>advanced</source> + <target>расширенный</target> +</phrase> +<phrase> + <source>layout</source> + <target>компоновка</target> +</phrase> +<phrase> + <source>layout</source> + <target>компоновщик</target> +</phrase> +<phrase> + <source>plugin</source> + <target>модуль</target> +</phrase> +<phrase> + <source>script</source> + <target>сценарий</target> +</phrase> +<phrase> + <source>spacer</source> + <target>разделитель</target> +</phrase> +<phrase> + <source>tabbar</source> + <target>панель вкладок</target> +</phrase> +<phrase> + <source>whitespace</source> + <target>символ пробела</target> +</phrase> +<phrase> + <source>Forward</source> + <target>Вперёд</target> +</phrase> +<phrase> + <source>Back</source> + <target>Назад</target> +</phrase> +<phrase> + <source>Search wrapped</source> + <target>Поиск с начала</target> +</phrase> +<phrase> + <source>OK</source> + <target>Выбрать</target> +</phrase> +<phrase> + <source>OK</source> + <target>Закрыть</target> +</phrase> +<phrase> + <source>Match case</source> + <target>С учётом регистра</target> +</phrase> +<phrase> + <source>Case Sensitive</source> + <target>Регистрозависимо</target> +</phrase> +<phrase> + <source>Whole words</source> + <target>Слова полностью</target> +</phrase> </QPH> diff --git a/tools/porting/src/qt3headers0.resource b/tools/porting/src/qt3headers0.resource Binary files differindex 13be468..8e24385 100644 --- a/tools/porting/src/qt3headers0.resource +++ b/tools/porting/src/qt3headers0.resource diff --git a/tools/porting/src/qt3headers1.resource b/tools/porting/src/qt3headers1.resource Binary files differindex e06d270..8da4b9a 100644 --- a/tools/porting/src/qt3headers1.resource +++ b/tools/porting/src/qt3headers1.resource diff --git a/tools/porting/src/qt3headers2.resource b/tools/porting/src/qt3headers2.resource Binary files differindex e44c81d..62bdb8e 100644 --- a/tools/porting/src/qt3headers2.resource +++ b/tools/porting/src/qt3headers2.resource diff --git a/tools/porting/src/qt3headers3.resource b/tools/porting/src/qt3headers3.resource Binary files differindex 6d259f2..6a096e8 100644 --- a/tools/porting/src/qt3headers3.resource +++ b/tools/porting/src/qt3headers3.resource diff --git a/translations/assistant_adp_ru.ts b/translations/assistant_adp_ru.ts new file mode 100644 index 0000000..a587a91 --- /dev/null +++ b/translations/assistant_adp_ru.ts @@ -0,0 +1,780 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="ru"> +<context> + <name>AssistantServer</name> + <message> + <source>Failed to bind to port %1</source> + <translation>Не удалось открыть порт %1</translation> + </message> + <message> + <source>Qt Assistant</source> + <translation>Qt Assistant</translation> + </message> +</context> +<context> + <name>FontPanel</name> + <message> + <source>&Family</source> + <translation>Се&мейство</translation> + </message> + <message> + <source>&Style</source> + <translation>&Стиль</translation> + </message> + <message> + <source>Font</source> + <translation>Шрифт</translation> + </message> + <message> + <source>&Writing system</source> + <translation>Система &письма</translation> + </message> + <message> + <source>&Point size</source> + <translation>&Размер в пикселях</translation> + </message> +</context> +<context> + <name>FontSettingsDialog</name> + <message> + <source>Application</source> + <translation>Приложение</translation> + </message> + <message> + <source>Browser</source> + <translation>Обозреватель</translation> + </message> + <message> + <source>Font settings for:</source> + <translation>Настройки шрифта для:</translation> + </message> + <message> + <source>Use custom settings</source> + <translation>Использование индивидуальных настроек</translation> + </message> + <message> + <source>Font Settings</source> + <translation>Настройки шрифта</translation> + </message> +</context> +<context> + <name>HelpDialog</name> + <message> + <source>&Index</source> + <translation>&Указатель</translation> + </message> + <message> + <source>&Look For:</source> + <translation>&Искать:</translation> + </message> + <message> + <source>&New</source> + <translation>&Создать</translation> + </message> + <message> + <source>&Search</source> + <translation>&Поиск</translation> + </message> + <message> + <source><b>Enter a keyword.</b><p>The list will select an item that matches the entered string best.</p></source> + <translation><b>Ввод слова.</b><p>В список попадет то, что лучше соответствует введенной строке.</p></translation> + </message> + <message> + <source><b>Enter search word(s).</b><p>Enter here the word(s) you are looking for. The words may contain wildcards (*). For a sequence of words quote them.</p></source> + <translation><b>Ввод одного или более слов для поиска.</b><p>Сюда следует ввести одно или несколько слов, которые требуется найти. Слова могут содержкать символы-заменители (*). Если требуется найти словосочетание, то его нужно заключить в кавычки.</p></translation> + </message> + <message> + <source><b>Found documents</b><p>This list contains all found documents from the last search. The documents are ordered, i.e. the first document has the most matches.</p></source> + <translation><b>Найденные документы</b><p>В этом списке представлены все найденные при последнем поиске документы. Документы упорядочены по релевантности, т.е. чем выше, тем чаще в нём встречаются указанные слова.</p></translation> + </message> + <message> + <source><b>Help topics organized by category.</b><p>Double-click an item to see the topics in that category. To view a topic, just double-click it.</p></source> + <translation><b>Статьи справки распределённые по разделам.</b><p>Дважды кликните по одному из пунктов, чтобы увидеть какие статьи содержатся в данном разделе. Для открытия статьи просто дважды щелкните на ней.</p></translation> + </message> + <message> + <source><b>Help</b><p>Choose the topic you want help on from the contents list, or search the index for keywords.</p></source> + <translation><b>Справка</b><p>Выберите необходимую статью справки из списка разделов или воспользуйтесь поиском по предметному указателю.</p></translation> + </message> + <message> + <source><b>List of available help topics.</b><p>Double-click on an item to open its help page. If more than one is found, you must specify which page you want.</p></source> + <translation><b>Список доступных статей справки.</b><p>Дважды щёлкните на пункте для открытия страницы помощи. Если найдено более одной, то потребуется выбрать желаемую страницу.</p></translation> + </message> + <message> + <source>Add new bookmark</source> + <translation>Добавить новую закладку</translation> + </message> + <message> + <source>Add the currently displayed page as a new bookmark.</source> + <translation>Добавление текущей открытой страницы в закладки.</translation> + </message> + <message> + <source>Cannot open the index file %1</source> + <translation>Не удаётся открыть файл индекса %1</translation> + </message> + <message> + <source>Con&tents</source> + <translation>Содер&жание</translation> + </message> + <message> + <source>Delete bookmark</source> + <translation>Удалить закладку</translation> + </message> + <message> + <source>Delete the selected bookmark.</source> + <translation>Удаление выбранной закладки.</translation> + </message> + <message> + <source>Display the help page for the full text search.</source> + <translation>Открытие справки по полнотекстовому поиску.</translation> + </message> + <message> + <source>Display the help page.</source> + <translation>Открыть страницу справки.</translation> + </message> + <message> + <source>Displays help topics organized by category, index or bookmarks. Another tab inherits the full text search.</source> + <translation>Здесь отображается список тем, распределенных по разделам, указатель или закладки. Последняя вкладка содержит полнотекстовый поиск.</translation> + </message> + <message> + <source>Displays the list of bookmarks.</source> + <translation>Отображает список закладок.</translation> + </message> + <message> + <source>Documentation file %1 does not exist! +Skipping file.</source> + <translation>Файл документации %1 не существует! +Пропущен.</translation> + </message> + <message> + <source>Documentation file %1 is not compatible! +Skipping file.</source> + <translation>Файл документации %1 не совместим! +Пропущен.</translation> + </message> + <message> + <source>Done</source> + <translation>Готово</translation> + </message> + <message> + <source>Enter keyword</source> + <translation>Введите ключевое слово</translation> + </message> + <message> + <source>Enter searchword(s).</source> + <translation>Введите одно или более слов для поиска.</translation> + </message> + <message> + <source>Failed to load keyword index file +Assistant will not work!</source> + <translation>Не удалось загрузить файл индекса ключевых слов +Assistant не будет работать!</translation> + </message> + <message> + <source>Failed to save fulltext search index +Assistant will not work!</source> + <translation>Не удалось сохранить индекс полнотекстового поиска +Assistant не будет работать!</translation> + </message> + <message> + <source>Found &Documents:</source> + <translation>Найденные &документы:</translation> + </message> + <message> + <source>Full Text Search</source> + <translation>Полнотекстовый поиск</translation> + </message> + <message> + <source>He&lp</source> + <translation>&Справка</translation> + </message> + <message> + <source>Help</source> + <translation>Справка</translation> + </message> + <message> + <source>Indexing files...</source> + <translation>Индексирование файлов...</translation> + </message> + <message> + <source>Open Link in New Tab</source> + <translation>Открыть ссылку в новой вкладке</translation> + </message> + <message> + <source>Open Link in New Window</source> + <translation>Открыть ссылку в новом окне</translation> + </message> + <message> + <source>Parse Error</source> + <translation>Ошибка обработки</translation> + </message> + <message> + <source>Prepare...</source> + <translation>Подготовка...</translation> + </message> + <message> + <source>Preparing...</source> + <translation>Подготовка...</translation> + </message> + <message> + <source>Pressing this button starts the search.</source> + <translation>Нажатие на эту кнопку запустит процесс поиска.</translation> + </message> + <message> + <source>Qt Assistant</source> + <translation>Qt Assistant</translation> + </message> + <message> + <source>Reading dictionary...</source> + <translation>Чтение каталога...</translation> + </message> + <message> + <source>Searching f&or:</source> + <translation>&Искать:</translation> + </message> + <message> + <source>Start searching.</source> + <translation>Начать поиск.</translation> + </message> + <message> + <source>The closing quotation mark is missing.</source> + <translation>Пропущена закрывающая кавычка.</translation> + </message> + <message> + <source>Using a wildcard within phrases is not allowed.</source> + <translation>Использование символов-заменителей внутри фраз не допустимо.</translation> + </message> + <message> + <source>Warning</source> + <translation>Предупреждение</translation> + </message> + <message> + <source>column 1</source> + <translation>столбец 1</translation> + </message> + <message> + <source>Open Link in Current Tab</source> + <translation>Открыть ссылку в текущей вкладке</translation> + </message> + <message numerus="yes"> + <source>%n document(s) found.</source> + <translation> + <numerusform>Найден %n документ.</numerusform> + <numerusform>Найдено %n документа.</numerusform> + <numerusform>Найдено %n документов.</numerusform> + </translation> + </message> + <message> + <source>&Bookmarks</source> + <translation>&Закладки</translation> + </message> + <message> + <source>&Delete</source> + <translation>&Удалить</translation> + </message> +</context> +<context> + <name>HelpWindow</name> + <message> + <source><div align="center"><h1>The page could not be found</h1><br><h3>'%1'</h3></div></source> + <translation><div align="center"><h1>Страница не найдена</h1><br><h3>'%1'</h3></div></translation> + </message> + <message> + <source>Copy &Link Location</source> + <translation>Копировать &адрес ссылки</translation> + </message> + <message> + <source>Error...</source> + <translation>Ошибка...</translation> + </message> + <message> + <source>Failed to open link: '%1'</source> + <translation>Не удалось открыть ссылку: '%1'</translation> + </message> + <message> + <source>Help</source> + <translation>Справка</translation> + </message> + <message> + <source>OK</source> + <translation>Закрыть</translation> + </message> + <message> + <source>Open Link in New Tab</source> + <translation>Открыть ссылку в новой вкладке</translation> + </message> + <message> + <source>Open Link in New Window Shift+LMB</source> + <translation>Открыть ссылку в новом окне Shift+LMB</translation> + </message> + <message> + <source>Unable to launch web browser. +</source> + <translation>Невозможно запустить вэб-браузер. +</translation> + </message> +</context> +<context> + <name>Index</name> + <message> + <source>Untitled</source> + <translation>Неозаглавлено</translation> + </message> +</context> +<context> + <name>MainWindow</name> + <message> + <source>"What's This?" context sensitive help.</source> + <translation>"Что это?" - контекстная справка.</translation> + </message> + <message> + <source>&Add Bookmark</source> + <translation>&Добавление закладки</translation> + </message> + <message> + <source>&Close</source> + <translation>&Закрыть</translation> + </message> + <message> + <source>&Copy</source> + <translation>&Копировать</translation> + </message> + <message> + <source>&Edit</source> + <translation>&Правка</translation> + </message> + <message> + <source>&File</source> + <translation>&Файл</translation> + </message> + <message> + <source>&Find in Text...</source> + <translation>П&оиск по тексту...</translation> + </message> + <message> + <source>&Go</source> + <translation>&Перейти</translation> + </message> + <message> + <source>&Help</source> + <translation>&Справка</translation> + </message> + <message> + <source>&Home</source> + <translation>&Домой</translation> + </message> + <message> + <source>&Next</source> + <translation>&Вперёд</translation> + </message> + <message> + <source>&Previous</source> + <translation>&Назад</translation> + </message> + <message> + <source>&Print...</source> + <translation>&Печать...</translation> + </message> + <message> + <source>&View</source> + <translation>&Вид</translation> + </message> + <message> + <source>&Window</source> + <translation>&Окно</translation> + </message> + <message> + <source>...</source> + <translation>...</translation> + </message> + <message> + <source>About Qt</source> + <translation>О Qt</translation> + </message> + <message> + <source>About Qt Assistant</source> + <translation>О Qt Assistant</translation> + </message> + <message> + <source>Add Tab</source> + <translation>Добавить вкладку</translation> + </message> + <message> + <source>Add the currently displayed page as a new bookmark.</source> + <translation>Добавление текущей открытой страницы в закладки.</translation> + </message> + <message> + <source>Boo&kmarks</source> + <translation>&Закладки</translation> + </message> + <message> + <source>Cannot open file for writing!</source> + <translation>Не удается открыть файл для записи!</translation> + </message> + <message> + <source>Close Tab</source> + <translation>Закрыть вкладку</translation> + </message> + <message> + <source>Close the current window.</source> + <translation>Закрыть текущее окно.</translation> + </message> + <message> + <source>Display further information about Qt Assistant.</source> + <translation>Показать дополнительную информацию о Qt Assistant.</translation> + </message> + <message> + <source>Displays the main page of a specific documentation set.</source> + <translation>Открывает главную страницу выбранного набора документации.</translation> + </message> + <message> + <source>E&xit</source> + <translation>Вы&ход</translation> + </message> + <message> + <source>Failed to open about application contents in file: '%1'</source> + <translation>Не удалось получить информацию о приложении из файла: '%1'</translation> + </message> + <message> + <source>Find &Next</source> + <translation>Продолжить п&оиск</translation> + </message> + <message> + <source>Find &Previous</source> + <translation>Найти &предыдущее</translation> + </message> + <message> + <source>Font Settings...</source> + <translation>Настройки шрифта...</translation> + </message> + <message> + <source>Go</source> + <translation>Перейти</translation> + </message> + <message> + <source>Go to the home page. Qt Assistant's home page is the Qt Reference Documentation.</source> + <translation>Перейти на домашнюю страницу. Домашная страница Qt Assistant - Справочная документация по Qt.</translation> + </message> + <message> + <source>Go to the next page.</source> + <translation>Переход на следующую страницу.</translation> + </message> + <message> + <source>Initializing Qt Assistant...</source> + <translation>Инициализация Qt Assistant...</translation> + </message> + <message> + <source>Minimize</source> + <translation>Свернуть</translation> + </message> + <message> + <source>New Window</source> + <translation>Новое окно</translation> + </message> + <message> + <source>Next Tab</source> + <translation>Следующая вкладка</translation> + </message> + <message> + <source>Open a new window.</source> + <translation>Открыть новое окно.</translation> + </message> + <message> + <source>Open the Find dialog. Qt Assistant will search the currently displayed page for the text you enter.</source> + <translation>Открыть окно поиска. Qt Assistant произведёт поиск введённого текста на текущей открытой странице.</translation> + </message> + <message> + <source>Previous Tab</source> + <translation>Предыдущая вкладка</translation> + </message> + <message> + <source>Print the currently displayed page.</source> + <translation>Печать текущей открытой страницы.</translation> + </message> + <message> + <source>Qt Assistant</source> + <translation>Qt Assistant</translation> + </message> + <message> + <source>Qt Assistant Manual</source> + <translation>Руководство по Qt Assistant</translation> + </message> + <message> + <source>Qt Assistant by Nokia</source> + <translation>Qt Assistant от Nokia</translation> + </message> + <message> + <source>Quit Qt Assistant.</source> + <translation>Выйти из Qt Assistant.</translation> + </message> + <message> + <source>Save Page</source> + <translation>Сохранить страницу</translation> + </message> + <message> + <source>Save Page As...</source> + <translation>Сохранить страницу как...</translation> + </message> + <message> + <source>Select the page in contents tab.</source> + <translation>Выбор страницы в оглавлении.</translation> + </message> + <message> + <source>Sidebar</source> + <translation>Боковая панель</translation> + </message> + <message> + <source>Sync with Table of Contents</source> + <translation>Синхронизировать с оглавлением</translation> + </message> + <message> + <source>Toolbar</source> + <translation>Панель инструментов</translation> + </message> + <message> + <source>Views</source> + <translation>Виды</translation> + </message> + <message> + <source>What's This?</source> + <translation>Что это?</translation> + </message> + <message> + <source>Zoom &in</source> + <translation>У&величить</translation> + </message> + <message> + <source>Zoom &out</source> + <translation>У&меньшить</translation> + </message> + <message> + <source>Zoom in on the document, i.e. increase the font size.</source> + <translation>Увеличение масштаба документа, т.е. увеличение размера шрифта.</translation> + </message> + <message> + <source>Zoom out on the document, i.e. decrease the font size.</source> + <translation>Уменьшение масштаба документа, т.е. уменьшение размера шрифта.</translation> + </message> + <message> + <source>Ctrl+M</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>SHIFT+CTRL+=</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Ctrl+T</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Ctrl+I</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Ctrl+B</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Ctrl+S</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Ctrl+]</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Ctrl+[</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Ctrl+P</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Ctrl+Q</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Copy the selected text to the clipboard.</source> + <translation>Скопировать выделенный текст в буфер обмена.</translation> + </message> + <message> + <source>Ctrl+C</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Ctrl+F</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>F3</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Shift+F3</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Ctrl+Home</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Go to the previous page.</source> + <translation>Переход на предыдущую страницу.</translation> + </message> + <message> + <source>Alt+Left</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Alt+Right</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Ctrl++</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Ctrl+-</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Ctrl+N</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Ctrl+W</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Shift+F1</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Ctrl+Alt+N</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Ctrl+Alt+Right</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Ctrl+Alt+Left</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Ctrl+Alt+Q</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>F1</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Ctrl+Alt+S</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QObject</name> + <message> + <source>Qt Assistant by Nokia</source> + <translation>Qt Assistant от Nokia</translation> + </message> +</context> +<context> + <name>TabbedBrowser</name> + <message> + <source>...</source> + <translation>...</translation> + </message> + <message> + <source><img src=":/trolltech/assistant/images/wrap.png">&nbsp;Search wrapped</source> + <translation><img src=":/trolltech/assistant/images/wrap.png">&nbsp;Поиск с начала</translation> + </message> + <message> + <source>Add page</source> + <translation>Добавить страницу</translation> + </message> + <message> + <source>Case Sensitive</source> + <translation>Регистрозависимо</translation> + </message> + <message> + <source>Close Other Tabs</source> + <translation>Закрыть остальные вкладки</translation> + </message> + <message> + <source>Close Tab</source> + <translation>Закрыть вкладку</translation> + </message> + <message> + <source>Close page</source> + <translation>Закрыть страницу</translation> + </message> + <message> + <source>New Tab</source> + <translation>Новая вкладка</translation> + </message> + <message> + <source>Next</source> + <translation>Следующий</translation> + </message> + <message> + <source>Previous</source> + <translation>Предыдущий</translation> + </message> + <message> + <source>Untitled</source> + <translation>Безымянный</translation> + </message> + <message> + <source>Whole words</source> + <translation>Слова полностью</translation> + </message> + <message> + <source>TabbedBrowser</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TopicChooser</name> + <message> + <source>&Close</source> + <translation>&Закрыть</translation> + </message> + <message> + <source>&Display</source> + <translation>&Показать</translation> + </message> + <message> + <source>&Topics</source> + <translation>&Статьи</translation> + </message> + <message> + <source>Choose Topic</source> + <translation>Выбор статьи</translation> + </message> + <message> + <source>Choose a topic for <b>%1</b></source> + <translation>Выберите статью для <b>%1</b></translation> + </message> + <message> + <source>Close the Dialog.</source> + <translation>Закрытие окна.</translation> + </message> + <message> + <source>Displays a list of available help topics for the keyword.</source> + <translation>Показывает список доступных статей справки, соответствующих ключевому слову.</translation> + </message> + <message> + <source>Open the topic selected in the list.</source> + <translation>Открытие выбранной в списке темы.</translation> + </message> + <message> + <source>Select a topic from the list and click the <b>Display</b>-button to open the online help.</source> + <translation>Выберите статью из списка и нажмите на кнопку <b>Показать</b> для открытия онлайн справки.</translation> + </message> +</context> +</TS> diff --git a/translations/assistant_ru.ts b/translations/assistant_ru.ts new file mode 100644 index 0000000..32aa739 --- /dev/null +++ b/translations/assistant_ru.ts @@ -0,0 +1,1063 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="ru"> +<context> + <name>AboutDialog</name> + <message> + <location filename="../tools/assistant/tools/assistant/aboutdialog.cpp" line="+110"/> + <source>&Close</source> + <translation>&Закрыть</translation> + </message> +</context> +<context> + <name>AboutLabel</name> + <message> + <location line="-14"/> + <source>Warning</source> + <translation>Предупреждение</translation> + </message> + <message> + <location line="+1"/> + <source>Unable to launch external application. +</source> + <translation>Невозможно запустить внешнее приложение. +</translation> + </message> + <message> + <location line="+1"/> + <source>OK</source> + <translation>Закрыть</translation> + </message> +</context> +<context> + <name>BookmarkDialog</name> + <message> + <location filename="../tools/assistant/tools/assistant/bookmarkdialog.ui" line="+19"/> + <source>Add Bookmark</source> + <translation>Добавление закладки</translation> + </message> + <message> + <location line="+10"/> + <source>Bookmark:</source> + <translation>Закладка:</translation> + </message> + <message> + <location line="+7"/> + <source>Add in Folder:</source> + <translation>Добавить в папку:</translation> + </message> + <message> + <location line="+29"/> + <source>+</source> + <translation>+</translation> + </message> + <message> + <location line="+28"/> + <source>New Folder</source> + <translation>Новая папка</translation> + </message> + <message> + <location filename="../tools/assistant/tools/assistant/bookmarkmanager.cpp" line="+185"/> + <location line="+18"/> + <location line="+36"/> + <location line="+24"/> + <location line="+32"/> + <source>Bookmarks</source> + <translation>Закладки</translation> + </message> + <message> + <location line="-69"/> + <source>Delete Folder</source> + <translation>Удалить папку</translation> + </message> + <message> + <location line="+1"/> + <source>Rename Folder</source> + <translation>Переименовать папку</translation> + </message> +</context> +<context> + <name>BookmarkManager</name> + <message> + <location line="+449"/> + <source>Bookmarks</source> + <translation>Закладки</translation> + </message> + <message> + <location line="+36"/> + <source>Remove</source> + <translation>Удалить</translation> + </message> + <message> + <location line="+1"/> + <source>You are going to delete a Folder, this will also<br>remove it's content. Are you sure to continue?</source> + <translation>Удаление папки приведёт к удалению её содержимого.<br>Желаете продолжить?</translation> + </message> + <message> + <location line="+109"/> + <location line="+9"/> + <source>New Folder</source> + <translation>Новая папка</translation> + </message> +</context> +<context> + <name>BookmarkWidget</name> + <message> + <location line="-436"/> + <source>Delete Folder</source> + <translation>Удалить папку</translation> + </message> + <message> + <location line="+1"/> + <source>Rename Folder</source> + <translation>Переименовать папку</translation> + </message> + <message> + <location line="+2"/> + <source>Show Bookmark</source> + <translation>Открыть закладку</translation> + </message> + <message> + <location line="+1"/> + <source>Show Bookmark in New Tab</source> + <translation>Открыть закладку в новой вкладке</translation> + </message> + <message> + <location line="+3"/> + <source>Delete Bookmark</source> + <translation>Удалить закладку</translation> + </message> + <message> + <location line="+1"/> + <source>Rename Bookmark</source> + <translation>Переименовать закладку</translation> + </message> + <message> + <location line="+38"/> + <source>Filter:</source> + <translation>Фильтр:</translation> + </message> + <message> + <location line="+23"/> + <source>Add</source> + <translation>Добавить</translation> + </message> + <message> + <location line="+9"/> + <source>Remove</source> + <translation>Удалить</translation> + </message> +</context> +<context> + <name>CentralWidget</name> + <message> + <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="+237"/> + <source>Add new page</source> + <translation>Открыть новую страницу</translation> + </message> + <message> + <location line="+9"/> + <source>Close current page</source> + <translation>Закрыть текущую страницу</translation> + </message> + <message> + <location line="+284"/> + <source>Print Document</source> + <translation>Печать документа</translation> + </message> + <message> + <location line="+148"/> + <location line="+2"/> + <source>unknown</source> + <translation>безымянная вкладка</translation> + </message> + <message> + <location line="+91"/> + <source>Add New Page</source> + <translation>Открыть новую страницу</translation> + </message> + <message> + <location line="+3"/> + <source>Close This Page</source> + <translation>Закрыть данную страницу</translation> + </message> + <message> + <location line="+3"/> + <source>Close Other Pages</source> + <translation>Закрыть остальные страницы</translation> + </message> + <message> + <location line="+5"/> + <source>Add Bookmark for this Page...</source> + <translation>Добавить закладку для этой страницы...</translation> + </message> + <message> + <location line="+255"/> + <source>Search</source> + <translation>Поиск</translation> + </message> +</context> +<context> + <name>ContentWindow</name> + <message> + <location filename="../tools/assistant/tools/assistant/contentwindow.cpp" line="+158"/> + <source>Open Link</source> + <translation>Открыть ссылку</translation> + </message> + <message> + <location line="+1"/> + <source>Open Link in New Tab</source> + <translation>Открыть ссылку в новой вкладке</translation> + </message> +</context> +<context> + <name>FilterNameDialogClass</name> + <message> + <location filename="../tools/assistant/tools/assistant/filternamedialog.ui" line="+13"/> + <source>Add Filter Name</source> + <translation>Добавление фильтра</translation> + </message> + <message> + <location line="+12"/> + <source>Filter Name:</source> + <translation>Название фильтра:</translation> + </message> +</context> +<context> + <name>FindWidget</name> + <message> + <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="-925"/> + <source>Previous</source> + <translation>Предыдущее совпадение</translation> + </message> + <message> + <location line="+4"/> + <source>Next</source> + <translation>Следующее совпадение</translation> + </message> + <message> + <location line="+4"/> + <source>Case Sensitive</source> + <translation>Регистрозависимо</translation> + </message> + <message> + <location line="+3"/> + <source>Whole words</source> + <translation>Слова полностью</translation> + </message> + <message> + <location line="+12"/> + <source><img src=":/trolltech/assistant/images/wrap.png">&nbsp;Search wrapped</source> + <translation><img src=":/trolltech/assistant/images/wrap.png">&nbsp;Поиск с начала</translation> + </message> +</context> +<context> + <name>FontPanel</name> + <message> + <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+63"/> + <source>Font</source> + <translation>Шрифт</translation> + </message> + <message> + <location line="+11"/> + <source>&Writing system</source> + <translation>Система &письма</translation> + </message> + <message> + <location line="+3"/> + <source>&Family</source> + <translation>Се&мейство</translation> + </message> + <message> + <location line="+4"/> + <source>&Style</source> + <translation>&Стиль</translation> + </message> + <message> + <location line="+4"/> + <source>&Point size</source> + <translation>&Размер в точках</translation> + </message> +</context> +<context> + <name>HelpViewer</name> + <message> + <location filename="../tools/assistant/tools/assistant/helpviewer.cpp" line="+284"/> + <source>Open Link in New Tab</source> + <translation>Открыть ссылку в новой вкладке</translation> + </message> + <message> + <location line="+147"/> + <source><title>Error 404...</title><div align="center"><br><br><h1>The page could not be found</h1><br><h3>'%1'</h3></div></source> + <translation><title>Ошибка 404...</title><div align="center"><br><br><h1>Страница не найдена</h1><br><h3>'%1'</h3></div></translation> + </message> + <message> + <location line="+61"/> + <source>Help</source> + <translation>Справка</translation> + </message> + <message> + <location line="+1"/> + <source>Unable to launch external application. +</source> + <translation>Невозможно запустить внешнее приложение. +</translation> + </message> + <message> + <location line="+0"/> + <source>OK</source> + <translation>Закрыть</translation> + </message> + <message> + <location line="+63"/> + <source>Copy &Link Location</source> + <translation>Копировать &адрес ссылки</translation> + </message> + <message> + <location line="+3"/> + <source>Open Link in New Tab Ctrl+LMB</source> + <translation>Открыть ссылку в новой вкладке Ctrl+LMB</translation> + </message> +</context> +<context> + <name>IndexWindow</name> + <message> + <location filename="../tools/assistant/tools/assistant/indexwindow.cpp" line="+66"/> + <source>&Look for:</source> + <translation>&Искать:</translation> + </message> + <message> + <location line="+68"/> + <source>Open Link</source> + <translation>Открыть ссылку</translation> + </message> + <message> + <location line="+1"/> + <source>Open Link in New Tab</source> + <translation>Открыть ссылку в новой вкладке</translation> + </message> +</context> +<context> + <name>InstallDialog</name> + <message> + <location filename="../tools/assistant/tools/assistant/installdialog.cpp" line="+75"/> + <location filename="../tools/assistant/tools/assistant/installdialog.ui" line="+13"/> + <source>Install Documentation</source> + <translation>Установка документации</translation> + </message> + <message> + <location line="+30"/> + <source>Downloading documentation info...</source> + <translation>Загрузка информации о документации...</translation> + </message> + <message> + <location line="+48"/> + <source>Download canceled.</source> + <translation>Загрузка отменена.</translation> + </message> + <message> + <location line="+26"/> + <location line="+78"/> + <location line="+27"/> + <source>Done.</source> + <translation>Готово.</translation> + </message> + <message> + <location line="-90"/> + <source>The file %1 already exists. Do you want to overwrite it?</source> + <translation>Файл %1 уже существует. Желаете перезаписать его?</translation> + </message> + <message> + <location line="+11"/> + <source>Unable to save the file %1: %2.</source> + <translation>Невозможно сохранить файл %1: %2.</translation> + </message> + <message> + <location line="+8"/> + <source>Downloading %1...</source> + <translation>Загрузка %1...</translation> + </message> + <message> + <location line="+19"/> + <location line="+42"/> + <location line="+38"/> + <source>Download failed: %1.</source> + <translation>Загрузка не удалась: %1.</translation> + </message> + <message> + <location line="-70"/> + <source>Documentation info file is corrupt!</source> + <translation>Файл информации о документации повреждён!</translation> + </message> + <message> + <location line="+37"/> + <source>Download failed: Downloaded file is corrupted.</source> + <translation>Загрузка не удалась: загруженный файл повреждён.</translation> + </message> + <message> + <location line="+2"/> + <source>Installing documentation %1...</source> + <translation>Установка документации %1...</translation> + </message> + <message> + <location line="+22"/> + <source>Error while installing documentation: +%1</source> + <translation>При установке документации возникла ошибка: +%1</translation> + </message> + <message> + <location filename="../tools/assistant/tools/assistant/installdialog.ui" line="+6"/> + <source>Available Documentation:</source> + <translation>Доступная документация:</translation> + </message> + <message> + <location line="+10"/> + <source>Install</source> + <translation>Установить</translation> + </message> + <message> + <location line="+7"/> + <source>Cancel</source> + <translation>Отмена</translation> + </message> + <message> + <location line="+7"/> + <source>Close</source> + <translation>Закрыть</translation> + </message> + <message> + <location line="+20"/> + <source>Installation Path:</source> + <translation>Путь установки:</translation> + </message> + <message> + <location line="+10"/> + <source>...</source> + <translation>...</translation> + </message> +</context> +<context> + <name>MainWindow</name> + <message> + <location filename="../tools/assistant/tools/assistant/mainwindow.cpp" line="+108"/> + <location line="+354"/> + <source>Index</source> + <translation>Индекс</translation> + </message> + <message> + <location line="-348"/> + <location line="+346"/> + <source>Contents</source> + <translation>Содержание</translation> + </message> + <message> + <location line="-341"/> + <location line="+345"/> + <source>Bookmarks</source> + <translation>Закладки</translation> + </message> + <message> + <location line="-333"/> + <location line="+208"/> + <location line="+476"/> + <source>Qt Assistant</source> + <translation>Qt Assistant</translation> + </message> + <message> + <location line="-508"/> + <location line="+5"/> + <source>Unfiltered</source> + <translation>Без фильтрации</translation> + </message> + <message> + <location line="+21"/> + <source>Looking for Qt Documentation...</source> + <translation type="unfinished">Поиск по документации Qt...</translation> + </message> + <message> + <location line="+61"/> + <source>&File</source> + <translation>&Файл</translation> + </message> + <message> + <location line="+2"/> + <source>Page Set&up...</source> + <translation>Параметры &страницы...</translation> + </message> + <message> + <location line="+2"/> + <source>Print Preview...</source> + <translation>Предпросмотр печати...</translation> + </message> + <message> + <location line="+3"/> + <source>&Print...</source> + <translation>&Печать...</translation> + </message> + <message> + <location line="+6"/> + <source>New &Tab</source> + <translation>Новая &вкладка</translation> + </message> + <message> + <location line="+3"/> + <source>&Close Tab</source> + <translation>&Закрыть вкладку</translation> + </message> + <message> + <location line="+4"/> + <source>&Quit</source> + <translation>В&ыход</translation> + </message> + <message> + <location line="+1"/> + <source>CTRL+Q</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>&Edit</source> + <translation>&Правка</translation> + </message> + <message> + <location line="+1"/> + <source>&Copy selected Text</source> + <translation>&Копировать выделенный текст</translation> + </message> + <message> + <location line="+6"/> + <source>&Find in Text...</source> + <translation>П&оиск в тексте...</translation> + </message> + <message> + <location line="+5"/> + <source>Find &Next</source> + <translation>Найти &следующее</translation> + </message> + <message> + <location line="+4"/> + <source>Find &Previous</source> + <translation>Найти &предыдущее</translation> + </message> + <message> + <location line="+5"/> + <source>Preferences...</source> + <translation>Настройки...</translation> + </message> + <message> + <location line="+3"/> + <source>&View</source> + <translation>&Вид</translation> + </message> + <message> + <location line="+1"/> + <source>Zoom &in</source> + <translation>У&величить</translation> + </message> + <message> + <location line="+5"/> + <source>Zoom &out</source> + <translation>У&меньшить</translation> + </message> + <message> + <location line="+5"/> + <source>Normal &Size</source> + <translation>Нормальный р&азмер</translation> + </message> + <message> + <location line="+3"/> + <source>Ctrl+0</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>ALT+C</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>ALT+I</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>ALT+O</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Search</source> + <translation>Поиск</translation> + </message> + <message> + <location line="+1"/> + <source>ALT+S</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>&Go</source> + <translation>&Перейти</translation> + </message> + <message> + <location line="+1"/> + <source>&Home</source> + <translation>&Домой</translation> + </message> + <message> + <location line="+1"/> + <source>ALT+Home</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>&Back</source> + <translation>&Назад</translation> + </message> + <message> + <location line="+5"/> + <source>&Forward</source> + <translation>&Вперёд</translation> + </message> + <message> + <location line="+5"/> + <source>Sync with Table of Contents</source> + <translation>Синхронизировать с содержанием</translation> + </message> + <message> + <location line="+6"/> + <source>Next Page</source> + <translation>Следующая страница</translation> + </message> + <message> + <location line="+1"/> + <source>Ctrl+Alt+Right</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Previous Page</source> + <translation>Предыдущая страница</translation> + </message> + <message> + <location line="+1"/> + <source>Ctrl+Alt+Left</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>&Bookmarks</source> + <translation>&Закладки</translation> + </message> + <message> + <location line="+1"/> + <source>Add Bookmark...</source> + <translation>Добавить закладку...</translation> + </message> + <message> + <location line="+1"/> + <source>CTRL+D</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>&Help</source> + <translation>&Справка</translation> + </message> + <message> + <location line="+1"/> + <source>About...</source> + <translation>О программе...</translation> + </message> + <message> + <location line="+3"/> + <source>Navigation Toolbar</source> + <translation>Панель навигации</translation> + </message> + <message> + <location line="+22"/> + <source>&Window</source> + <translation>&Окно</translation> + </message> + <message> + <location line="+2"/> + <source>Zoom</source> + <translation>Масштаб</translation> + </message> + <message> + <location line="+1"/> + <source>Minimize</source> + <translation>Свернуть</translation> + </message> + <message> + <location line="+1"/> + <source>Ctrl+M</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+50"/> + <source>Toolbars</source> + <translation>Панели инструментов</translation> + </message> + <message> + <location line="+15"/> + <source>Filter Toolbar</source> + <translation>Панель фильтров</translation> + </message> + <message> + <location line="+2"/> + <source>Filtered by:</source> + <translation>Отфильтровано по:</translation> + </message> + <message> + <location line="+23"/> + <source>Address Toolbar</source> + <translation>Панель адреса</translation> + </message> + <message> + <location line="+4"/> + <source>Address:</source> + <translation>Адрес:</translation> + </message> + <message> + <location line="+114"/> + <source>Could not find the associated content item.</source> + <translation type="unfinished">Не удалось найти элемент, связанный с содержанием.</translation> + </message> + <message> + <location line="+81"/> + <source>About %1</source> + <translation type="unfinished">О %1</translation> + </message> + <message> + <location line="+114"/> + <source>Updating search index</source> + <translation>Обновление поискового индекса</translation> + </message> +</context> +<context> + <name>PreferencesDialog</name> + <message> + <location filename="../tools/assistant/tools/assistant/preferencesdialog.cpp" line="+256"/> + <location line="+43"/> + <source>Add Documentation</source> + <translation>Добавить документацию</translation> + </message> + <message> + <location line="-43"/> + <source>Qt Compressed Help Files (*.qch)</source> + <translation>Сжатые файлы справки Qt (*.qch)</translation> + </message> + <message> + <location line="+29"/> + <source>The namespace %1 is already registered!</source> + <translation>Пространство имён %1 уже зарегистрировано!</translation> + </message> + <message> + <location line="+8"/> + <source>The specified file is not a valid Qt Help File!</source> + <translation>Указанный файл не является корректным файлом справки Qt!</translation> + </message> + <message> + <location line="+23"/> + <source>Remove Documentation</source> + <translation>Удалить документацию</translation> + </message> + <message> + <location line="+1"/> + <source>Some documents currently opened in Assistant reference the documentation you are attempting to remove. Removing the documentation will close those documents.</source> + <translation>Некоторые открытые в Qt Assistant документы ссылаются на документацию, которую вы пытаетесь удалить. Удаление данной документации приведёт к закрытию таких документов.</translation> + </message> + <message> + <location line="+2"/> + <source>Cancel</source> + <translation>Отмена</translation> + </message> + <message> + <location line="+1"/> + <source>OK</source> + <translation>Удалить</translation> + </message> + <message> + <location line="+86"/> + <source>Use custom settings</source> + <translation>Использовать индивидуальные настройки</translation> + </message> +</context> +<context> + <name>PreferencesDialogClass</name> + <message> + <location filename="../tools/assistant/tools/assistant/preferencesdialog.ui" line="+14"/> + <source>Preferences</source> + <translation>Настройки</translation> + </message> + <message> + <location line="+10"/> + <source>Fonts</source> + <translation>Шрифты</translation> + </message> + <message> + <location line="+14"/> + <source>Font settings:</source> + <translation>Настройки шрифта:</translation> + </message> + <message> + <location line="+8"/> + <source>Browser</source> + <translation>Обозреватель</translation> + </message> + <message> + <location line="+5"/> + <source>Application</source> + <translation>Приложение</translation> + </message> + <message> + <location line="+19"/> + <source>Filters</source> + <translation>Фильтры</translation> + </message> + <message> + <location line="+6"/> + <source>Filter:</source> + <translation>Фильтр:</translation> + </message> + <message> + <location line="+10"/> + <source>Attributes:</source> + <translation>Атрибуты:</translation> + </message> + <message> + <location line="+11"/> + <source>1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Add</source> + <translation>Добавить</translation> + </message> + <message> + <location line="+7"/> + <location line="+51"/> + <source>Remove</source> + <translation>Удалить</translation> + </message> + <message> + <location line="-43"/> + <source>Documentation</source> + <translation>Документация</translation> + </message> + <message> + <location line="+6"/> + <source>Registered Documentation:</source> + <translation>Зарегистрированная документация:</translation> + </message> + <message> + <location line="+30"/> + <source>Add...</source> + <translation>Добавить...</translation> + </message> + <message> + <location line="+32"/> + <source>Options</source> + <translation>Параметры</translation> + </message> + <message> + <location line="+6"/> + <source>Homepage</source> + <translation>Домашная страница</translation> + </message> + <message> + <location line="+26"/> + <source>Current Page</source> + <translation>Текущая страница</translation> + </message> + <message> + <location line="+7"/> + <source>Restore to default</source> + <translation type="unfinished">Восстановить по умолчанию</translation> + </message> +</context> +<context> + <name>QObject</name> + <message> + <location filename="../tools/assistant/tools/assistant/bookmarkmanager.cpp" line="+157"/> + <location line="+1"/> + <source>Bookmark</source> + <translation>Закладка</translation> + </message> + <message> + <location filename="../tools/assistant/tools/assistant/cmdlineparser.cpp" line="+112"/> + <source>The specified collection file does not exist!</source> + <translation type="unfinished">Указанный файл набора отсутствует!</translation> + </message> + <message> + <location line="+4"/> + <source>Missing collection file!</source> + <translation type="unfinished">Отсутствует файл набора!</translation> + </message> + <message> + <location line="+9"/> + <source>Invalid URL!</source> + <translation>Некорректный URL!</translation> + </message> + <message> + <location line="+4"/> + <source>Missing URL!</source> + <translation>Отсутствует URL!</translation> + </message> + <message> + <location line="+17"/> + <location line="+19"/> + <location line="+19"/> + <source>Unknown widget: %1</source> + <translation>Неизвестный виджет: %1</translation> + </message> + <message> + <location line="-34"/> + <location line="+19"/> + <location line="+19"/> + <source>Missing widget!</source> + <translation>Отсутствует виджет!</translation> + </message> + <message> + <location line="+7"/> + <location line="+12"/> + <source>The specified Qt help file does not exist!</source> + <translation>Указанный файл справки Qt отсутствует!</translation> + </message> + <message> + <location line="-7"/> + <location line="+12"/> + <source>Missing help file!</source> + <translation>Отсутствует файл справки!</translation> + </message> + <message> + <location line="+7"/> + <source>Missing filter argument!</source> + <translation>Отсутствует параметр фильтра!</translation> + </message> + <message> + <location line="+12"/> + <source>Unknown option: %1</source> + <translation>Неизвестный параметр: %1</translation> + </message> + <message> + <location line="+30"/> + <location line="+2"/> + <source>Qt Assistant</source> + <translation>Qt Assistant</translation> + </message> + <message> + <location filename="../tools/assistant/tools/assistant/main.cpp" line="+203"/> + <source>Could not register documentation file +%1 + +Reason: +%2</source> + <translation>Не удалось зарегистрировать файл документации +%1 + +Причина: +%2</translation> + </message> + <message> + <location line="+4"/> + <source>Documentation successfully registered.</source> + <translation>Документация успешно зарегистрирована.</translation> + </message> + <message> + <location line="+8"/> + <source>Documentation successfully unregistered.</source> + <translation>Документация успешно дерегистрирована.</translation> + </message> + <message> + <location line="+3"/> + <source>Could not unregister documentation file +%1 + +Reason: +%2</source> + <translation>Не удалось дерегистрировать файл документации +%1 + +Причина: +%2</translation> + </message> + <message> + <location line="+37"/> + <source>Cannot load sqlite database driver!</source> + <translation>Не удалось загрузить драйвер базы данных sqlite!</translation> + </message> + <message> + <location line="+9"/> + <source>The specified collection file could not be read!</source> + <translation type="unfinished">Не удалось прочитать указанный файл набора!</translation> + </message> +</context> +<context> + <name>RemoteControl</name> + <message> + <location filename="../tools/assistant/tools/assistant/remotecontrol.cpp" line="+157"/> + <source>Debugging Remote Control</source> + <translation>Отладочное удалённое управление</translation> + </message> + <message> + <location line="+1"/> + <source>Received Command: %1 %2</source> + <translation>Получена команда: %1 %2</translation> + </message> +</context> +<context> + <name>SearchWidget</name> + <message> + <location filename="../tools/assistant/tools/assistant/searchwidget.cpp" line="+195"/> + <source>&Copy</source> + <translation>&Копировать</translation> + </message> + <message> + <location line="+4"/> + <source>Copy &Link Location</source> + <translation>Копировать &адрес ссылки</translation> + </message> + <message> + <location line="+4"/> + <source>Open Link in New Tab</source> + <translation>Открыть ссылку в новой вкладке</translation> + </message> + <message> + <location line="+8"/> + <source>Select All</source> + <translation>Выделить всё</translation> + </message> +</context> +<context> + <name>TopicChooser</name> + <message> + <location filename="../tools/assistant/tools/assistant/topicchooser.cpp" line="+54"/> + <source>Choose a topic for <b>%1</b>:</source> + <translation>Выберите статью для <b>%1</b>:</translation> + </message> + <message> + <location filename="../tools/assistant/tools/assistant/topicchooser.ui" line="+16"/> + <source>Choose Topic</source> + <translation>Выбор статьи</translation> + </message> + <message> + <location line="+21"/> + <source>&Topics</source> + <translation>&Статьи</translation> + </message> + <message> + <location line="+51"/> + <source>&Display</source> + <translation>&Показать</translation> + </message> + <message> + <location line="+16"/> + <source>&Close</source> + <translation>&Закрыть</translation> + </message> +</context> +</TS> diff --git a/translations/linguist_ru.ts b/translations/linguist_ru.ts new file mode 100644 index 0000000..058d86a --- /dev/null +++ b/translations/linguist_ru.ts @@ -0,0 +1,2002 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="ru"> +<context> + <name></name> + <message> + <location filename="../tools/linguist/linguist/phrasebookbox.cpp" line="+59"/> + <source>(New Entry)</source> + <translation>(Новая запись)</translation> + </message> +</context> +<context> + <name>AboutDialog</name> + <message> + <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+1357"/> + <source>Qt Linguist</source> + <translation>Qt Linguist</translation> + </message> +</context> +<context> + <name>BatchTranslationDialog</name> + <message> + <location filename="../tools/linguist/linguist/batchtranslation.ui" line="+54"/> + <source>Qt Linguist - Batch Translation</source> + <translation>Qt Linguist - Пакетный перевод</translation> + </message> + <message> + <location line="+18"/> + <source>Options</source> + <translation>Параметры</translation> + </message> + <message> + <location line="+18"/> + <source>Set translated entries to finished</source> + <translation>Помечать переведенные записи как завершённые</translation> + </message> + <message> + <location line="+10"/> + <source>Retranslate entries with existing translation</source> + <translation>Переводить записи, уже имеющие перевод</translation> + </message> + <message> + <location line="+7"/> + <source>Note that the modified entries will be reset to unfinished if 'Set translated entries to finished' above is unchecked.</source> + <translation>Имейте в виду, что изменённые записи будут отмечены как незавершённые, если не включен параметр "Помечать переведенные записи как завершённые".</translation> + </message> + <message> + <location line="+3"/> + <source>Translate also finished entries</source> + <translation>Также переводить записи с завершёнными переводами</translation> + </message> + <message> + <location line="+16"/> + <source>Phrase book preference</source> + <translation>Предпочитаемые разговорники</translation> + </message> + <message> + <location line="+35"/> + <source>Move up</source> + <translation>Поднять</translation> + </message> + <message> + <location line="+7"/> + <source>Move down</source> + <translation>Опустить</translation> + </message> + <message> + <location line="+24"/> + <source>The batch translator will search through the selected phrase books in the order given above.</source> + <translation>Пакетный переводчик будет искать в выбранных разговорниках в указанном выше порядке.</translation> + </message> + <message> + <location line="+34"/> + <source>&Run</source> + <translation>&Выполнить</translation> + </message> + <message> + <location line="+7"/> + <source>Cancel</source> + <translation>Отмена</translation> + </message> + <message> + <location filename="../tools/linguist/linguist/batchtranslationdialog.cpp" line="+79"/> + <source>Batch Translation of '%1' - Qt Linguist</source> + <translation>Пакетный перевод '%1' - Qt Linguist</translation> + </message> + <message> + <location line="+37"/> + <source>Searching, please wait...</source> + <translation>Идёт поиск, ждите...</translation> + </message> + <message> + <location line="+0"/> + <source>&Cancel</source> + <translation>&Отмена</translation> + </message> + <message> + <location line="+42"/> + <source>Linguist batch translator</source> + <translation>Пакетный переводчик Qt Linguist</translation> + </message> + <message numerus="yes"> + <location line="+1"/> + <source>Batch translated %n entries</source> + <translation> + <numerusform>Автоматически переведена %n запись</numerusform> + <numerusform>Автоматически переведены %n записи</numerusform> + <numerusform>Автоматически переведено %n записей</numerusform> + </translation> + </message> +</context> +<context> + <name>DataModel</name> + <message> + <location filename="../tools/linguist/linguist/messagemodel.cpp" line="+214"/> + <source><qt>Duplicate messages found in '%1':</source> + <translation><qt>В '%1' обнаружены повторяющиеся сообщения:</translation> + </message> + <message> + <location line="+4"/> + <source><p>[more duplicates omitted]</source> + <translation><p>[остальные повторы не указаны]</translation> + </message> + <message> + <location line="+3"/> + <source><p>* Context: %1<br>* Source: %2</source> + <translation><p>* Контекст: %1<br>* Источник: %2</translation> + </message> + <message> + <location line="+3"/> + <source><br>* Comment: %3</source> + <translation><br>* Комментарий: %3</translation> + </message> + <message> + <location line="+70"/> + <source>Linguist does not know the plural rules for '%1'. +Will assume a single universal form.</source> + <translation>Qt Linguist не знает правила множественных форм для '%1'. +Будет использована универсальная единичная форма.</translation> + </message> + <message> + <location line="+56"/> + <source>Cannot create '%2': %1</source> + <translation>Не удалось создать '%2': %1</translation> + </message> + <message> + <location line="+56"/> + <source>Universal Form</source> + <translation>Универсальная форма</translation> + </message> +</context> +<context> + <name>ErrorsView</name> + <message> + <location filename="../tools/linguist/linguist/errorsview.cpp" line="+76"/> + <source>Accelerator possibly superfluous in translation.</source> + <translation>Возможно, лишний акселератор в переводе.</translation> + </message> + <message> + <location line="+3"/> + <source>Accelerator possibly missing in translation.</source> + <translation>Возможно, пропущен акселератор в переводе.</translation> + </message> + <message> + <location line="+3"/> + <source>Translation does not end with the same punctuation as the source text.</source> + <translation>Перевод не заканчивается тем же знаком препинания, что и исходный текст.</translation> + </message> + <message> + <location line="+3"/> + <source>A phrase book suggestion for '%1' was ignored.</source> + <translation>Предложение разговорника для '%1' пропущено.</translation> + </message> + <message> + <location line="+3"/> + <source>Translation does not refer to the same place markers as in the source text.</source> + <translation>Перевод не содержит тех же маркеров форматирования, что и исходный текст.</translation> + </message> + <message> + <location line="+3"/> + <source>Translation does not contain the necessary %n place marker.</source> + <translation>Перевод не содержит необходимого маркера форматирования %n.</translation> + </message> + <message> + <location line="+3"/> + <source>Unknown error</source> + <translation>Неизвестная ошибка</translation> + </message> +</context> +<context> + <name>FindDialog</name> + <message> + <location filename="../tools/linguist/linguist/finddialog.cpp" line="+42"/> + <source></source> + <comment>Choose Edit|Find from the menu bar or press Ctrl+F to pop up the Find dialog</comment> + <translation></translation> + </message> + <message> + <location filename="../tools/linguist/linguist/finddialog.ui" line="+60"/> + <source>Find</source> + <translation>Поиск</translation> + </message> + <message> + <location line="+3"/> + <source>This window allows you to search for some text in the translation source file.</source> + <translation>Данное окно позволяет искать текст в файле перевода.</translation> + </message> + <message> + <location line="+28"/> + <source>&Find what:</source> + <translation>&Искать:</translation> + </message> + <message> + <location line="+10"/> + <source>Type in the text to search for.</source> + <translation>Введите искомый текст.</translation> + </message> + <message> + <location line="+9"/> + <source>Options</source> + <translation>Параметры</translation> + </message> + <message> + <location line="+12"/> + <source>Source texts are searched when checked.</source> + <translation>Если отмечено, поиск будет вестись в исходных текстах.</translation> + </message> + <message> + <location line="+3"/> + <source>&Source texts</source> + <translation>&Исходные тексты</translation> + </message> + <message> + <location line="+10"/> + <source>Translations are searched when checked.</source> + <translation>Если отмечено, поиск будет вестись в переведённых текстах.</translation> + </message> + <message> + <location line="+3"/> + <source>&Translations</source> + <translation>&Переводы</translation> + </message> + <message> + <location line="+10"/> + <source>Texts such as 'TeX' and 'tex' are considered as different when checked.</source> + <translation>Если отмечено, строки "ПрИмЕр" и "пример" будет считаться разными.</translation> + </message> + <message> + <location line="+3"/> + <source>&Match case</source> + <translation>С учётом &регистра</translation> + </message> + <message> + <location line="+7"/> + <source>Comments and contexts are searched when checked.</source> + <translation>Если отмечено, поиск будет вестись по контекстам и комментариям.</translation> + </message> + <message> + <location line="+3"/> + <source>&Comments</source> + <translation>&Комментарии</translation> + </message> + <message> + <location line="+10"/> + <source>Ignore &accelerators</source> + <translation>Пропускать &акселераторы</translation> + </message> + <message> + <location line="+23"/> + <source>Click here to find the next occurrence of the text you typed in.</source> + <translation>Найти следующее совпадение для введённого текста.</translation> + </message> + <message> + <location line="+3"/> + <source>Find Next</source> + <translation>Найти далее</translation> + </message> + <message> + <location line="+13"/> + <source>Click here to close this window.</source> + <translation>Закрыть окно.</translation> + </message> + <message> + <location line="+3"/> + <source>Cancel</source> + <translation>Отмена</translation> + </message> +</context> +<context> + <name>LRelease</name> + <message numerus="yes"> + <location filename="../tools/linguist/shared/qm.cpp" line="+715"/> + <source> Generated %n translation(s) (%1 finished and %2 unfinished) +</source> + <translation> + <numerusform> Создан %n перевод (%1 завершённых и %2 незавершённых) +</numerusform> + <numerusform> Создано %n перевода (%1 завершённых и %2 незавершённых) +</numerusform> + <numerusform> Создано %n переводов (%1 завершённых и %2 незавершённых) +</numerusform> + </translation> + </message> + <message numerus="yes"> + <location line="+4"/> + <source> Ignored %n untranslated source text(s) +</source> + <translation> + <numerusform> Пропущен %n непереведённый исходный текст +</numerusform> + <numerusform> Пропущено %n непереведённых исходных текста +</numerusform> + <numerusform> Пропущено %n непереведённых исходных текстов +</numerusform> + </translation> + </message> +</context> +<context> + <name>MainWindow</name> + <message> + <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1315"/> + <source></source> + <comment>This is the application's main window.</comment> + <translatorcomment>Основное окно программы.</translatorcomment> + <translation></translation> + </message> + <message> + <location line="+165"/> + <source>Source text</source> + <translation>Исходный текст</translation> + </message> + <message> + <location line="+1"/> + <location line="+25"/> + <source>Index</source> + <translation>Индекс</translation> + </message> + <message> + <location line="-2"/> + <location line="+61"/> + <source>Context</source> + <translation>Контекст</translation> + </message> + <message> + <location line="-60"/> + <source>Items</source> + <translation>Записи</translation> + </message> + <message> + <location line="+77"/> + <source>This panel lists the source contexts.</source> + <translation>В данной панели перечислены исходные контексты.</translation> + </message> + <message> + <location line="+15"/> + <source>Strings</source> + <translation>Строки</translation> + </message> + <message> + <location line="+39"/> + <source>Phrases and guesses</source> + <translation>Фразы и похожие переводы</translation> + </message> + <message> + <location line="+10"/> + <source>Sources and Forms</source> + <translation>Исходники и формы</translation> + </message> + <message> + <location line="+15"/> + <source>Warnings</source> + <translation>Предупреждения</translation> + </message> + <message> + <location line="+59"/> + <source> MOD </source> + <comment>status bar: file(s) modified</comment> + <translation> ИЗМ </translation> + </message> + <message> + <location line="+125"/> + <source>Loading...</source> + <translation>Загрузка...</translation> + </message> + <message> + <location line="+32"/> + <location line="+22"/> + <source>Loading File - Qt Linguist</source> + <translation>Загрузка файла - Qt Linguist</translation> + </message> + <message> + <location line="-21"/> + <source>The file '%1' does not seem to be related to the currently open file(s) '%2'. + +Close the open file(s) first?</source> + <translation>Файл '%1', похоже, не связан с открытым файлом(ами) '%2'. + +Закрыть открытые файлы?</translation> + </message> + <message> + <location line="+22"/> + <source>The file '%1' does not seem to be related to the file '%2' which is being loaded as well. + +Skip loading the first named file?</source> + <translation>Файл '%1', похоже, не связан с загруженным файлом '%2'. + +Пропустить загрузку файла?</translation> + </message> + <message numerus="yes"> + <location line="+61"/> + <source>%n translation unit(s) loaded.</source> + <translation> + <numerusform>Загружена %n запись.</numerusform> + <numerusform>Загружено %n записи.</numerusform> + <numerusform>Загружено %n записей.</numerusform> + </translation> + </message> + <message> + <location line="+93"/> + <source>Related files (%1);;</source> + <translation>Связанные файлы (%1);;</translation> + </message> + <message> + <location line="+4"/> + <source>Open Translation Files</source> + <translation>Открыть файлы перевода</translation> + </message> + <message> + <location line="+10"/> + <location line="+31"/> + <source>File saved.</source> + <translation>Файл сохранён.</translation> + </message> + <message> + <location line="+15"/> + <location line="+1164"/> + <location filename="../tools/linguist/linguist/mainwindow.ui" line="+246"/> + <source>Release</source> + <translation>Компиляция</translation> + </message> + <message> + <location line="-1163"/> + <source>Qt message files for released applications (*.qm) +All files (*)</source> + <translation>Скомпилированные файлы перевода для приложений Qt (*.qm) +Все файлы (*)</translation> + </message> + <message> + <location line="+3"/> + <location line="+12"/> + <source>File created.</source> + <translation>Файл создан.</translation> + </message> + <message> + <location line="+27"/> + <location line="+355"/> + <source>Printing...</source> + <translation>Печать...</translation> + </message> + <message> + <location line="-347"/> + <source>Context: %1</source> + <translation>Контекст: %1</translation> + </message> + <message> + <location line="+32"/> + <source>finished</source> + <translation>завершён</translation> + </message> + <message> + <location line="+3"/> + <source>unresolved</source> + <translation>неразрешённый</translation> + </message> + <message> + <location line="+3"/> + <source>obsolete</source> + <translation>устаревший</translation> + </message> + <message> + <location line="+15"/> + <location line="+307"/> + <source>Printing... (page %1)</source> + <translation>Печать... (страница %1)</translation> + </message> + <message> + <location line="-300"/> + <location line="+307"/> + <source>Printing completed</source> + <translation>Печать завершена</translation> + </message> + <message> + <location line="-305"/> + <location line="+307"/> + <source>Printing aborted</source> + <translation>Печать прервана</translation> + </message> + <message> + <location line="-232"/> + <source>Search wrapped.</source> + <translation>Поиск с начала.</translation> + </message> + <message> + <location line="+17"/> + <location line="+278"/> + <location line="+40"/> + <location line="+24"/> + <location line="+22"/> + <location line="+516"/> + <location line="+1"/> + <location line="+274"/> + <location line="+40"/> + <location line="+10"/> + <source>Qt Linguist</source> + <translation>Qt Linguist</translation> + </message> + <message> + <location line="-1204"/> + <location line="+102"/> + <source>Cannot find the string '%1'.</source> + <translation>Не удалось найти строку '%1'.</translation> + </message> + <message> + <location line="-82"/> + <source>Search And Translate in '%1' - Qt Linguist</source> + <translation>Поиск и перевод '%1' - Qt Linguist</translation> + </message> + <message> + <location line="+34"/> + <location line="+23"/> + <location line="+24"/> + <source>Translate - Qt Linguist</source> + <translation>Перевод - Qt Linguist</translation> + </message> + <message numerus="yes"> + <location line="-46"/> + <source>Translated %n entry(s)</source> + <translation> + <numerusform>Переведена %n запись</numerusform> + <numerusform>Переведено %n записи</numerusform> + <numerusform>Переведено %n записей</numerusform> + </translation> + </message> + <message> + <location line="+23"/> + <source>No more occurrences of '%1'. Start over?</source> + <translation>Нет больше совпадений с '%1'. Начать заново?</translation> + </message> + <message> + <location line="+30"/> + <source>Create New Phrase Book</source> + <translation>Создать разговорник</translation> + </message> + <message> + <location line="+1"/> + <source>Qt phrase books (*.qph) +All files (*)</source> + <translation>Разговорники Qt (*.qph) +Все файлы (*)</translation> + </message> + <message> + <location line="+11"/> + <source>Phrase book created.</source> + <translation>Разговорник создан.</translation> + </message> + <message> + <location line="+17"/> + <source>Open Phrase Book</source> + <translation>Открыть разговорник</translation> + </message> + <message> + <location line="+1"/> + <source>Qt phrase books (*.qph);;All files (*)</source> + <translation>Разговорники Qt (*.qph);;Все файлы (*)</translation> + </message> + <message numerus="yes"> + <location line="+7"/> + <source>%n phrase(s) loaded.</source> + <translation> + <numerusform>Загружена %n фраза.</numerusform> + <numerusform>Загружено %n фразы.</numerusform> + <numerusform>Загружено %n фраз.</numerusform> + </translation> + </message> + <message> + <location line="+93"/> + <location line="+3"/> + <location line="+7"/> + <source>Add to phrase book</source> + <translation>Добавить в разговорник</translation> + </message> + <message> + <location line="-9"/> + <source>No appropriate phrasebook found.</source> + <translation>Подходящий разговорник не найден.</translation> + </message> + <message> + <location line="+3"/> + <source>Adding entry to phrasebook %1</source> + <translation>Добавление записи в разговорник %1</translation> + </message> + <message> + <location line="+7"/> + <source>Select phrase book to add to</source> + <translation>Выберите разговорник, в который желаете добавить фразу</translation> + </message> + <message> + <location line="+29"/> + <source>Unable to launch Qt Assistant (%1)</source> + <translation>Не удалось запустить Qt Assistant (%1)</translation> + </message> + <message> + <location line="+17"/> + <source>Version %1</source> + <translation>Версия %1</translation> + </message> + <message> + <location line="+6"/> + <source><center><img src=":/images/splash.png"/></img><p>%1</p></center><p>Qt Linguist is a tool for adding translations to Qt applications.</p><p>%2</p><p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p><p>The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.</p></source> + <translation type="unfinished"><center><img src=":/images/splash.png"/></img><p>%1</p></center><p>Qt Linguist - инструмент для добавления переводов в приложения на основе Qt.</p><p>%2</p><p>Copyright (C) 2009 Корпорация Nokia и/или её дочерние подразделения.</p><p>Программа предоставляется "как есть" без гарантий любого рода, включая гарантии дизайна, коммерческой ценности и пригодности для определённой цели.</p></translation> + </message> + <message> + <location line="+41"/> + <source>Do you want to save the modified files?</source> + <translation>Желаете сохранить изменённые файлы?</translation> + </message> + <message> + <location line="+22"/> + <source>Do you want to save '%1'?</source> + <translation>Желаете сохранить '%1'?</translation> + </message> + <message> + <location line="+43"/> + <source>Qt Linguist[*]</source> + <translation>Qt Linguist[*]</translation> + </message> + <message> + <location line="+2"/> + <source>%1[*] - Qt Linguist</source> + <translation>%1[*] - Qt Linguist</translation> + </message> + <message> + <location line="+267"/> + <location line="+12"/> + <source>No untranslated translation units left.</source> + <translation>Непереведённых записей не осталось.</translation> + </message> + <message> + <location line="+176"/> + <source>&Window</source> + <translation>&Окно</translation> + </message> + <message> + <location line="+2"/> + <source>Minimize</source> + <translation>Свернуть</translation> + </message> + <message> + <location line="+1"/> + <source>Ctrl+M</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> + <source>Display the manual for %1.</source> + <translation>Показать руководство для %1.</translation> + </message> + <message> + <location line="+1"/> + <source>Display information about %1.</source> + <translation>Показать информацию о %1.</translation> + </message> + <message> + <location line="+70"/> + <source>&Save '%1'</source> + <translation>&Сохранить'%1'</translation> + </message> + <message> + <location line="+1"/> + <source>Save '%1' &As...</source> + <translation>Сохранить'%1' &как...</translation> + </message> + <message> + <location line="+1"/> + <source>Release '%1'</source> + <translation>Скомпилировать '%1'</translation> + </message> + <message> + <location line="+1"/> + <source>Release '%1' As...</source> + <translation>Скомпилировать '%1' как...</translation> + </message> + <message> + <location line="+1"/> + <source>&Close '%1'</source> + <translation>&Закрыть '%1'</translation> + </message> + <message> + <location line="+2"/> + <location line="+15"/> + <source>&Save</source> + <translation>&Сохранить</translation> + </message> + <message> + <location line="-14"/> + <location line="+11"/> + <location filename="../tools/linguist/linguist/mainwindow.ui" line="-11"/> + <source>Save &As...</source> + <translation>Сохранить &как...</translation> + </message> + <message> + <location line="-9"/> + <location line="+10"/> + <location filename="../tools/linguist/linguist/mainwindow.ui" line="+508"/> + <location line="+3"/> + <source>Release As...</source> + <translation>Скомпилировать как...</translation> + </message> + <message> + <location line="-9"/> + <location line="+13"/> + <source>&Close</source> + <translation>&Закрыть</translation> + </message> + <message> + <location line="-10"/> + <source>Save All</source> + <translation>Сохранить все</translation> + </message> + <message> + <location line="+1"/> + <location filename="../tools/linguist/linguist/mainwindow.ui" line="+118"/> + <source>&Release All</source> + <translation>С&компилировать все</translation> + </message> + <message> + <location line="+1"/> + <source>Close All</source> + <translation>Закрыть все</translation> + </message> + <message> + <location line="+7"/> + <source>&Release</source> + <translation>С&компилировать</translation> + </message> + <message> + <location line="+16"/> + <source>Translation File &Settings for '%1'...</source> + <translation>&Параметры файла перевода для '%1'...</translation> + </message> + <message> + <location line="+1"/> + <source>&Batch Translation of '%1'...</source> + <translation>Пак&етный перевод '%1'...</translation> + </message> + <message> + <location line="+1"/> + <source>Search And &Translate in '%1'...</source> + <translation>&Найти и перевести в '%1'...</translation> + </message> + <message> + <location line="+2"/> + <location filename="../tools/linguist/linguist/mainwindow.ui" line="-32"/> + <source>Translation File &Settings...</source> + <translation>&Параметры файла перевода...</translation> + </message> + <message> + <location line="+1"/> + <location filename="../tools/linguist/linguist/mainwindow.ui" line="-100"/> + <source>&Batch Translation...</source> + <translation>Пак&етный перевод...</translation> + </message> + <message> + <location line="+1"/> + <source>Search And &Translate...</source> + <translation>&Найти и перевести...</translation> + </message> + <message> + <location line="+51"/> + <location filename="../tools/linguist/linguist/mainwindow.ui" line="+28"/> + <source>File</source> + <translation>Файл</translation> + </message> + <message> + <location line="+7"/> + <location filename="../tools/linguist/linguist/mainwindow.ui" line="+11"/> + <source>Edit</source> + <translation>Правка</translation> + </message> + <message> + <location line="+6"/> + <location filename="../tools/linguist/linguist/mainwindow.ui" line="+11"/> + <source>Translation</source> + <translation>Перевод</translation> + </message> + <message> + <location line="+6"/> + <location filename="../tools/linguist/linguist/mainwindow.ui" line="+11"/> + <source>Validation</source> + <translation>Проверка</translation> + </message> + <message> + <location line="+7"/> + <location filename="../tools/linguist/linguist/mainwindow.ui" line="+11"/> + <source>Help</source> + <translation>Справка</translation> + </message> + <message> + <location line="+84"/> + <source>Cannot read from phrase book '%1'.</source> + <translation>Не удалось прочитать из разговорника '%1'.</translation> + </message> + <message> + <location line="+15"/> + <source>Close this phrase book.</source> + <translation>Закрыть разговорник.</translation> + </message> + <message> + <location line="+4"/> + <source>Enables you to add, modify, or delete entries in this phrase book.</source> + <translation>Позволяет добавлять, изменять и удалять записи в разговорнике.</translation> + </message> + <message> + <location line="+5"/> + <source>Print the entries in this phrase book.</source> + <translation>Печать записей фраз разговорника.</translation> + </message> + <message> + <location line="+16"/> + <source>Cannot create phrase book '%1'.</source> + <translation>Не удалось создать разговорник '%1'.</translation> + </message> + <message> + <location line="+10"/> + <source>Do you want to save phrase book '%1'?</source> + <translation>Желаете сохранить разговорник '%1'?</translation> + </message> + <message> + <location line="+314"/> + <source>All</source> + <translation>Все</translation> + </message> + <message> + <location filename="../tools/linguist/linguist/mainwindow.ui" line="-750"/> + <source>MainWindow</source> + <translation>Главное окно</translation> + </message> + <message> + <location line="+14"/> + <source>&Phrases</source> + <translation>Фра&зы</translation> + </message> + <message> + <location line="+4"/> + <source>&Close Phrase Book</source> + <translation>&Закрыть разговорник</translation> + </message> + <message> + <location line="+5"/> + <source>&Edit Phrase Book</source> + <translation>&Редактироваь разговорник</translation> + </message> + <message> + <location line="+5"/> + <source>&Print Phrase Book</source> + <translation>&Печатать разговорник</translation> + </message> + <message> + <location line="+13"/> + <source>V&alidation</source> + <translation>П&роверка</translation> + </message> + <message> + <location line="+9"/> + <source>&View</source> + <translation>&Вид</translation> + </message> + <message> + <location line="+4"/> + <source>Vie&ws</source> + <translation>Вид&ы</translation> + </message> + <message> + <location line="+5"/> + <source>&Toolbars</source> + <translation>Пан&ели инструментов</translation> + </message> + <message> + <location line="+12"/> + <source>&Help</source> + <translation>&Справка</translation> + </message> + <message> + <location line="+9"/> + <source>&Translation</source> + <translation>П&еревод</translation> + </message> + <message> + <location line="+11"/> + <source>&File</source> + <translation>&Файл</translation> + </message> + <message> + <location line="+4"/> + <source>Recently Opened &Files</source> + <translation>Недавно открытые &файлы</translation> + </message> + <message> + <location line="+23"/> + <source>&Edit</source> + <translation>&Правка</translation> + </message> + <message> + <location line="+27"/> + <source>&Open...</source> + <translation>&Открыть...</translation> + </message> + <message> + <location line="+3"/> + <source>Open a Qt translation source file (TS file) for editing</source> + <translation>Открыть исходный файл переводов Qt (файл TS) для изменения</translation> + </message> + <message> + <location line="+3"/> + <source>Ctrl+O</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>E&xit</source> + <translation>В&ыход</translation> + </message> + <message> + <location line="+6"/> + <source>Close this window and exit.</source> + <translation>Закрыть окно и выйти.</translation> + </message> + <message> + <location line="+3"/> + <source>Ctrl+Q</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Save</source> + <translation>Сохранить</translation> + </message> + <message> + <location line="+3"/> + <source>Save changes made to this Qt translation source file</source> + <translation>Сохранить изменения в данном исходном файле перевода Qt</translation> + </message> + <message> + <location line="+8"/> + <source>Save As...</source> + <translation>Сохранить как...</translation> + </message> + <message> + <location line="+3"/> + <source>Save changes made to this Qt translation source file into a new file.</source> + <translation>Сохранить изменения в данном исходном файле перевода Qt в новый файл.</translation> + </message> + <message> + <location line="+8"/> + <source>Create a Qt message file suitable for released applications from the current message file.</source> + <translation>Скомпилировать файл перевода Qt из текущего файла.</translation> + </message> + <message> + <location line="+5"/> + <source>&Print...</source> + <translation>&Печать...</translation> + </message> + <message> + <location line="+3"/> + <source>Print a list of all the translation units in the current translation source file.</source> + <translation>Печать списка всех записей перевода из текущего файла.</translation> + </message> + <message> + <location line="+3"/> + <source>Ctrl+P</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>&Undo</source> + <translation>&Отменить</translation> + </message> + <message> + <location line="+3"/> + <source>Undo the last editing operation performed on the current translation.</source> + <translation>Отменить последнее изменение текущего перевода.</translation> + </message> + <message> + <location line="+3"/> + <source>Ctrl+Z</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> + <source>&Redo</source> + <translation>&Повторить</translation> + </message> + <message> + <location line="+3"/> + <source>Redo an undone editing operation performed on the translation.</source> + <translation>Повторить отменённую правку перевода.</translation> + </message> + <message> + <location line="+3"/> + <source>Ctrl+Y</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> + <source>Cu&t</source> + <translation>Выр&езать</translation> + </message> + <message> + <location line="+3"/> + <source>Copy the selected translation text to the clipboard and deletes it.</source> + <translation>Скопировать отмеченный текст в буфер обмена и удалить его из оригинала.</translation> + </message> + <message> + <location line="+3"/> + <source>Ctrl+X</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> + <source>&Copy</source> + <translation>&Копировать</translation> + </message> + <message> + <location line="+3"/> + <source>Copy the selected translation text to the clipboard.</source> + <translation>Скопировать отмеченный текст в буфер обмена.</translation> + </message> + <message> + <location line="+3"/> + <source>Ctrl+C</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> + <source>&Paste</source> + <translation>&Вставить</translation> + </message> + <message> + <location line="+3"/> + <source>Paste the clipboard text into the translation.</source> + <translation>Вставить текст из буфера обмена в перевод.</translation> + </message> + <message> + <location line="+3"/> + <source>Ctrl+V</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> + <source>Select &All</source> + <translation>В&ыделить всё</translation> + </message> + <message> + <location line="+3"/> + <source>Select the whole translation text.</source> + <translation>Выделить весь текст перевода.</translation> + </message> + <message> + <location line="+3"/> + <source>Ctrl+A</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> + <source>&Find...</source> + <translation>&Найти...</translation> + </message> + <message> + <location line="+3"/> + <source>Search for some text in the translation source file.</source> + <translation>Найти текст в исходном файле перевода.</translation> + </message> + <message> + <location line="+3"/> + <source>Ctrl+F</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> + <source>Find &Next</source> + <translation>Найти д&алее</translation> + </message> + <message> + <location line="+3"/> + <source>Continue the search where it was left.</source> + <translation>Продолжить поиск с места, где он был остановлен.</translation> + </message> + <message> + <location line="+3"/> + <source>F3</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>&Prev Unfinished</source> + <translation>&Пред. незавершённый</translation> + </message> + <message> + <location line="+3"/> + <source>Previous unfinished item.</source> + <translation>Предыдущий незавершённый перевод.</translation> + </message> + <message> + <location line="+3"/> + <source>Move to the previous unfinished item.</source> + <translation>Перейти к предыдущему незавершённому переводу.</translation> + </message> + <message> + <location line="+3"/> + <source>Ctrl+K</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>&Next Unfinished</source> + <translation>&След. незавершённый</translation> + </message> + <message> + <location line="+3"/> + <source>Next unfinished item.</source> + <translation>Следующий незавершённый перевод.</translation> + </message> + <message> + <location line="+3"/> + <source>Move to the next unfinished item.</source> + <translation>Перейти к следующему незавершённому переводу.</translation> + </message> + <message> + <location line="+3"/> + <source>Ctrl+J</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>P&rev</source> + <translation>Пр&едыдущий</translation> + </message> + <message> + <location line="+3"/> + <source>Move to previous item.</source> + <translation>Предыдущий перевод.</translation> + </message> + <message> + <location line="+3"/> + <source>Move to the previous item.</source> + <translation>Перейти к предыдущему переводу.</translation> + </message> + <message> + <location line="+3"/> + <source>Ctrl+Shift+K</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Ne&xt</source> + <translation>С&ледующий</translation> + </message> + <message> + <location line="+3"/> + <source>Next item.</source> + <translation>Следующий перевод.</translation> + </message> + <message> + <location line="+3"/> + <source>Move to the next item.</source> + <translation>Перейти к следующему переводу.</translation> + </message> + <message> + <location line="+3"/> + <source>Ctrl+Shift+J</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> + <source>&Done and Next</source> + <translation>&Готово и далее</translation> + </message> + <message> + <location line="+3"/> + <source>Mark item as done and move to the next unfinished item.</source> + <translation>Пометить перевод как завершённый и перейти к следующему незавершённому.</translation> + </message> + <message> + <location line="+3"/> + <source>Mark this item as done and move to the next unfinished item.</source> + <translation>Пометить перевод как завершённый и перейти к следующему незавершённому.</translation> + </message> + <message> + <location line="+11"/> + <location line="+3"/> + <source>Copy from source text</source> + <translation>Скопировать из исходного текста</translation> + </message> + <message> + <location line="+3"/> + <location line="+3"/> + <source>Copies the source text into the translation field.</source> + <translation>Скопировать исходный текст в поле перевода.</translation> + </message> + <message> + <location line="+3"/> + <source>Ctrl+B</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> + <source>&Accelerators</source> + <translation>&Акселераторы</translation> + </message> + <message> + <location line="+3"/> + <source>Toggle the validity check of accelerators.</source> + <translation>Переключение проверки акселераторов.</translation> + </message> + <message> + <location line="+3"/> + <source>Toggle the validity check of accelerators, i.e. whether the number of ampersands in the source and translation text is the same. If the check fails, a message is shown in the warnings window.</source> + <translation>Переключение проверки акселераторов, т.е. совпадает ли количество амперсандов в исходном и переведённом текстах. Если выявлено несовпадение, будет показано сообщение в окне предупреждений.</translation> + </message> + <message> + <location line="+11"/> + <source>&Ending Punctuation</source> + <translation>&Знаки препинания</translation> + </message> + <message> + <location line="+3"/> + <source>Toggle the validity check of ending punctuation.</source> + <translation>Переключение проверки знаков препинания в конце текста.</translation> + </message> + <message> + <location line="+3"/> + <source>Toggle the validity check of ending punctuation. If the check fails, a message is shown in the warnings window.</source> + <translation>Переключение проверки знаков препинания в конце текста. Если выявлено несовпадение, будет показано сообщение в окне предупреждений.</translation> + </message> + <message> + <location line="+11"/> + <source>&Phrase matches</source> + <translation>Совпадение &фраз</translation> + </message> + <message> + <location line="+3"/> + <source>Toggle checking that phrase suggestions are used.</source> + <translation>Переключение проверки использования предложений для фраз. Если выявлено несовпадение, будет показано сообщение в окне предупреждений.</translation> + </message> + <message> + <location line="+3"/> + <source>Toggle checking that phrase suggestions are used. If the check fails, a message is shown in the warnings window.</source> + <translation>Переключение проверки использования предложений для фраз. Если выявлено несовпадение, будет показано сообщение в окне предупреждений.</translation> + </message> + <message> + <location line="+11"/> + <source>Place &Marker Matches</source> + <translation>Совпадение &маркеров</translation> + </message> + <message> + <location line="+3"/> + <source>Toggle the validity check of place markers.</source> + <translation>Переключение проверки маркеров форматирования.</translation> + </message> + <message> + <location line="+3"/> + <source>Toggle the validity check of place markers, i.e. whether %1, %2, ... are used consistently in the source text and translation text. If the check fails, a message is shown in the warnings window.</source> + <translation>Переключение проверки маркеров форматирования, т.е. все ли маркеры (%1, %2, ...) исходного текста присутствуют в переведённом. Если выявлено несовпадение, будет показано сообщение в окне предупреждений.</translation> + </message> + <message> + <location line="+8"/> + <source>&New Phrase Book...</source> + <translation>&Новый разговорник...</translation> + </message> + <message> + <location line="+3"/> + <source>Create a new phrase book.</source> + <translation>Создать разговорник.</translation> + </message> + <message> + <location line="+3"/> + <source>Ctrl+N</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>&Open Phrase Book...</source> + <translation>&Открыть разговорник...</translation> + </message> + <message> + <location line="+3"/> + <source>Open a phrase book to assist translation.</source> + <translation>Открыть разговорник для помощи в переводе.</translation> + </message> + <message> + <location line="+3"/> + <source>Ctrl+H</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+14"/> + <source>&Reset Sorting</source> + <translation>&Сброс сортировки</translation> + </message> + <message> + <location line="+3"/> + <source>Sort the items back in the same order as in the message file.</source> + <translation>Упорядочить элементы в той последовательности, в которой они находятся в файле.</translation> + </message> + <message> + <location line="+14"/> + <source>&Display guesses</source> + <translation>&Предлагать похожие</translation> + </message> + <message> + <location line="+3"/> + <source>Set whether or not to display translation guesses.</source> + <translation>Определяет необходимо или нет отображать похожие переводы.</translation> + </message> + <message> + <location line="+14"/> + <source>&Statistics</source> + <translation>&Статистика</translation> + </message> + <message> + <location line="+3"/> + <source>Display translation statistics.</source> + <translation>Показать статистику перевода.</translation> + </message> + <message> + <location line="+8"/> + <source>&Manual</source> + <translation>&Руководство</translation> + </message> + <message> + <location line="+6"/> + <source>F1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>About Qt Linguist</source> + <translation>О Qt Linguist</translation> + </message> + <message> + <location line="+8"/> + <source>About Qt</source> + <translation>О Qt</translation> + </message> + <message> + <location line="+3"/> + <source>Display information about the Qt toolkit by Trolltech.</source> + <translation>Показать информацию об инструментарии Qt от Nokia.</translation> + </message> + <message> + <location line="+14"/> + <source>&What's This?</source> + <translation>&Что это?</translation> + </message> + <message> + <location line="+3"/> + <location line="+3"/> + <source>What's This?</source> + <translation>Что это?</translation> + </message> + <message> + <location line="+3"/> + <source>Enter What's This? mode.</source> + <translation>Переход в режим "Что это?".</translation> + </message> + <message> + <location line="+3"/> + <source>Shift+F1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> + <source>&Search And Translate...</source> + <translation>&Найти и перевести...</translation> + </message> + <message> + <location line="+3"/> + <source>Replace the translation on all entries that matches the search source text.</source> + <translation>Заменить перевод всех записей, которые совпадают с искомым исходным текстом.</translation> + </message> + <message> + <location line="+14"/> + <source>Batch translate all entries using the information in the phrase books.</source> + <translation>Перевести все записи в пакетном режиме, используя информацию из разговорника.</translation> + </message> + <message> + <location line="+14"/> + <source>Create a Qt message file suitable for released applications from the current message file. The filename will automatically be determined from the name of the .ts file.</source> + <translation>Создание готового файла перевода Qt из текущего файла. Имя файла будет автоматически определено из имени .ts файла.</translation> + </message> + <message> + <location line="+63"/> + <source>Open/Refresh Form &Preview</source> + <translation>Открыть/обновить предпрос&мотр формы</translation> + </message> + <message> + <location line="+3"/> + <location line="+3"/> + <source>Form Preview Tool</source> + <translation>Инструмент предпросмотра форм</translation> + </message> + <message> + <location line="+3"/> + <source>F5</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>&Add to Phrase Book</source> + <translation>&Добавить в разговорник</translation> + </message> + <message> + <location line="+3"/> + <source>Ctrl+T</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Open Read-O&nly...</source> + <translation>Открыть только для &чтения...</translation> + </message> + <message> + <location line="+5"/> + <source>&Save All</source> + <translation>&Сохранить все</translation> + </message> + <message> + <location line="+3"/> + <source>Ctrl+S</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>Close</source> + <translation>Закрыть</translation> + </message> + <message> + <location line="+5"/> + <source>&Close All</source> + <translation>&Закрыть все</translation> + </message> + <message> + <location line="+3"/> + <source>Ctrl+W</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>MessageEditor</name> + <message> + <location filename="../tools/linguist/linguist/messageeditor.cpp" line="+42"/> + <source></source> + <comment>This is the right panel of the main window.</comment> + <translatorcomment>Правая панель основного окна</translatorcomment> + <translation></translation> + </message> + <message> + <location line="+30"/> + <source>German</source> + <translation>Немецкий</translation> + </message> + <message> + <location line="+1"/> + <source>Japanese</source> + <translation>Японский</translation> + </message> + <message> + <location line="+1"/> + <source>French</source> + <translation>Французский</translation> + </message> + <message> + <location line="+1"/> + <source>Polish</source> + <translation>Польский</translation> + </message> + <message> + <location line="+1"/> + <source>Chinese</source> + <translation>Китайский</translation> + </message> + <message> + <location line="+50"/> + <source>This whole panel allows you to view and edit the translation of some source text.</source> + <translation>Данная панель позволяет просматривать и редактировать перевод исходного текста.</translation> + </message> + <message> + <location line="+18"/> + <source>Source text</source> + <translation>Исходный текст</translation> + </message> + <message> + <location line="+2"/> + <source>This area shows the source text.</source> + <translation>В данной области отображается исходный текст.</translation> + </message> + <message> + <location line="+3"/> + <source>Source text (Plural)</source> + <translation>Исходный текст (множественная форма)</translation> + </message> + <message> + <location line="+2"/> + <source>This area shows the plural form of the source text.</source> + <translation>В данной области отображается исходный текст во множественной форме.</translation> + </message> + <message> + <location line="+3"/> + <source>Developer comments</source> + <translation>Комментарии разработчика</translation> + </message> + <message> + <location line="+3"/> + <source>This area shows a comment that may guide you, and the context in which the text occurs.</source> + <translation>В данной области отображается комментарий, который поможет определить в каком контексте встречается переводимый текст.</translation> + </message> + <message> + <location line="+59"/> + <source>Here you can enter comments for your own use. They have no effect on the translated applications.</source> + <translation>Здесь вы можете оставить комментарий для собственного использования. Комментарии не влияют на перевод приложений.</translation> + </message> + <message> + <location line="+205"/> + <source>%1 translation (%2)</source> + <translation>%1 перевод (%2)</translation> + </message> + <message> + <location line="+19"/> + <source>This is where you can enter or modify the translation of the above source text.</source> + <translation>Здесь вы можете ввести или изменить перевод текста, представленного выше.</translation> + </message> + <message> + <location line="+5"/> + <source>%1 translation</source> + <translation>%1 перевод</translation> + </message> + <message> + <location line="+1"/> + <source>%1 translator comments</source> + <translation>Комментарий переводчика на %1</translation> + </message> + <message> + <location line="+140"/> + <source>'%1' +Line: %2</source> + <translation>'%1' +Строка: %2</translation> + </message> +</context> +<context> + <name>MessageModel</name> + <message> + <location filename="../tools/linguist/linguist/messagemodel.cpp" line="+832"/> + <source>Completion status for %1</source> + <translation>Состояние завершённости для %1</translation> + </message> + <message> + <location line="+15"/> + <source><file header></source> + <translation><заголовок файла></translation> + </message> + <message> + <location line="+2"/> + <source><context comment></source> + <translation><контекстный комментарий></translation> + </message> + <message> + <location line="+71"/> + <source><unnamed context></source> + <translation><безымянный контекст></translation> + </message> +</context> +<context> + <name>MsgEdit</name> + <message> + <location filename="../tools/linguist/linguist/messageeditor.cpp" line="-544"/> + <source></source> + <comment>This is the right panel of the main window.</comment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PhraseBookBox</name> + <message> + <location filename="../tools/linguist/linguist/phrasebookbox.cpp" line="-17"/> + <source></source> + <comment>Go to Phrase > Edit Phrase Book... The dialog that pops up is a PhraseBookBox.</comment> + <translation></translation> + </message> + <message> + <location line="+25"/> + <source>%1[*] - Qt Linguist</source> + <translation>%1[*] - Qt Linguist</translation> + </message> + <message> + <location line="+90"/> + <source>Qt Linguist</source> + <translation>Qt Linguist</translation> + </message> + <message> + <location line="+1"/> + <source>Cannot save phrase book '%1'.</source> + <translation>Не удалось сохранить разговорник '%1'.</translation> + </message> + <message> + <location filename="../tools/linguist/linguist/phrasebookbox.ui" line="+54"/> + <source>Edit Phrase Book</source> + <translation>Правка разговорника</translation> + </message> + <message> + <location line="+3"/> + <source>This window allows you to add, modify, or delete entries in a phrase book.</source> + <translation>Данное окно позволяет добавлять, изменять и удалять записи в разговорнике.</translation> + </message> + <message> + <location line="+10"/> + <source>&Translation:</source> + <translation>&Перевод:</translation> + </message> + <message> + <location line="+10"/> + <source>This is the phrase in the target language corresponding to the source phrase.</source> + <translation>Перевод, соответствующий исходной фразе.</translation> + </message> + <message> + <location line="+7"/> + <source>S&ource phrase:</source> + <translation>&Исходная фраза:</translation> + </message> + <message> + <location line="+10"/> + <source>This is a definition for the source phrase.</source> + <translation>Определение исходной фразы.</translation> + </message> + <message> + <location line="+7"/> + <source>This is the phrase in the source language.</source> + <translation>Фраза на исходном языке.</translation> + </message> + <message> + <location line="+7"/> + <source>&Definition:</source> + <translation>&Определение:</translation> + </message> + <message> + <location line="+35"/> + <source>Click here to add the phrase to the phrase book.</source> + <translation>Добавить фразу в разговорник.</translation> + </message> + <message> + <location line="+3"/> + <source>&New Entry</source> + <translation>Новая &запись</translation> + </message> + <message> + <location line="+7"/> + <source>Click here to remove the entry from the phrase book.</source> + <translation>Удалить фразу из разговорника.</translation> + </message> + <message> + <location line="+3"/> + <source>&Remove Entry</source> + <translation>&Удалить</translation> + </message> + <message> + <location line="+7"/> + <source>Settin&gs...</source> + <translation>&Настройки...</translation> + </message> + <message> + <location line="+7"/> + <source>Click here to save the changes made.</source> + <translation>Сохранить изменения.</translation> + </message> + <message> + <location line="+3"/> + <source>&Save</source> + <translation>&Сохранить</translation> + </message> + <message> + <location line="+7"/> + <source>Click here to close this window.</source> + <translation>Закрыть окно.</translation> + </message> + <message> + <location line="+3"/> + <source>Close</source> + <translation>Закрыть</translation> + </message> +</context> +<context> + <name>PhraseModel</name> + <message> + <location filename="../tools/linguist/linguist/phrasemodel.cpp" line="+117"/> + <source>Source phrase</source> + <translation>Исходная фраза</translation> + </message> + <message> + <location line="+2"/> + <source>Translation</source> + <translation>Перевод</translation> + </message> + <message> + <location line="+2"/> + <source>Definition</source> + <translation>Определение</translation> + </message> +</context> +<context> + <name>PhraseView</name> + <message> + <location filename="../tools/linguist/linguist/phraseview.cpp" line="+121"/> + <source>Insert</source> + <translation>Вставить</translation> + </message> + <message> + <location line="+3"/> + <source>Edit</source> + <translation>Правка</translation> + </message> + <message> + <location line="+113"/> + <source>Guess (%1)</source> + <translation>Похожая (%1)</translation> + </message> + <message> + <location line="+2"/> + <source>Guess</source> + <translation>Похожая</translation> + </message> +</context> +<context> + <name>QObject</name> + <message> + <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1806"/> + <source>Translation files (%1);;</source> + <translation>Файлы перевода (%1);;</translation> + </message> + <message> + <location line="+5"/> + <source>All files (*)</source> + <translation>Все файлы (*)</translation> + </message> + <message> + <location filename="../tools/linguist/linguist/messagemodel.cpp" line="-1118"/> + <location line="+18"/> + <location line="+67"/> + <location line="+39"/> + <location line="+17"/> + <location line="+15"/> + <location filename="../tools/linguist/linguist/phrase.cpp" line="+196"/> + <source>Qt Linguist</source> + <translation>Qt Linguist</translation> + </message> + <message> + <location filename="../tools/linguist/shared/po.cpp" line="+651"/> + <source>GNU Gettext localization files</source> + <translation>Файлы локализации GNU Gettext</translation> + </message> + <message> + <location filename="../tools/linguist/shared/qm.cpp" line="+12"/> + <source>Compiled Qt translations</source> + <translation>Скомпилированные переводы Qt</translation> + </message> + <message> + <location filename="../tools/linguist/shared/qph.cpp" line="+192"/> + <source>Qt Linguist 'Phrase Book'</source> + <translation>'Разговорник' Qt Linguist</translation> + </message> + <message> + <location filename="../tools/linguist/shared/ts.cpp" line="+752"/> + <source>Qt translation sources (format 1.1)</source> + <translation>Исходные файлы перевода Qt (формат 1.1)</translation> + </message> + <message> + <location line="+8"/> + <source>Qt translation sources (format 2.0)</source> + <translation>Исходные файлы перевода Qt (формат 2.0)</translation> + </message> + <message> + <location line="+9"/> + <source>Qt translation sources (latest format)</source> + <translation>Исходные файлы перевода Qt (последний формат)</translation> + </message> + <message> + <location filename="../tools/linguist/shared/xliff.cpp" line="+817"/> + <source>XLIFF localization files</source> + <translation>Файлы локализации XLIFF</translation> + </message> + <message> + <location filename="../tools/linguist/shared/cpp.cpp" line="+1089"/> + <source>C++ source files</source> + <translation>Исходные коды C++</translation> + </message> + <message> + <location filename="../tools/linguist/shared/java.cpp" line="+652"/> + <source>Java source files</source> + <translation>Исходные коды Java</translation> + </message> + <message> + <location filename="../tools/linguist/shared/qscript.cpp" line="+2399"/> + <source>Qt Script source files</source> + <translation>Исходные коды Qt Script</translation> + </message> + <message> + <location filename="../tools/linguist/shared/ui.cpp" line="+213"/> + <source>Qt Designer form files</source> + <translation>Формы Qt Designer</translation> + </message> + <message> + <location line="+9"/> + <source>Qt Jambi form files</source> + <translation>Формы Qt Jambi</translation> + </message> +</context> +<context> + <name>SourceCodeView</name> + <message> + <location filename="../tools/linguist/linguist/sourcecodeview.cpp" line="+70"/> + <source><i>Source code not available</i></source> + <translation><i>Исходный код недоступен</i></translation> + </message> + <message> + <location line="+33"/> + <source><i>File %1 not available</i></source> + <translation><i>Файл %1 недоступен</i></translation> + </message> + <message> + <location line="+5"/> + <source><i>File %1 not readable</i></source> + <translation><i>Невозможно прочитать файл %1</i></translation> + </message> +</context> +<context> + <name>Statistics</name> + <message> + <location filename="../tools/linguist/linguist/statistics.ui" line="+54"/> + <source>Statistics</source> + <translation>Статистика</translation> + </message> + <message> + <location line="+24"/> + <source>Close</source> + <translation>Закрыть</translation> + </message> + <message> + <location line="+34"/> + <source>Translation</source> + <translation>Перевод</translation> + </message> + <message> + <location line="+7"/> + <source>Source</source> + <translation>Источник</translation> + </message> + <message> + <location line="+7"/> + <location line="+7"/> + <location line="+14"/> + <location line="+7"/> + <location line="+21"/> + <location line="+7"/> + <source>0</source> + <translation>0</translation> + </message> + <message> + <location line="-42"/> + <source>Words:</source> + <translation>Слов:</translation> + </message> + <message> + <location line="+21"/> + <source>Characters:</source> + <translation>Символов:</translation> + </message> + <message> + <location line="+7"/> + <source>Characters (with spaces):</source> + <translation>Символов (с пробелами):</translation> + </message> +</context> +<context> + <name>TranslateDialog</name> + <message> + <location filename="../tools/linguist/linguist/translatedialog.ui" line="+60"/> + <source>This window allows you to search for some text in the translation source file.</source> + <translation>Данное окно позволяет искать текст в файле перевода.</translation> + </message> + <message> + <location line="+28"/> + <location line="+27"/> + <source>Type in the text to search for.</source> + <translation>Введите искомый текст.</translation> + </message> + <message> + <location line="-20"/> + <source>Find &source text:</source> + <translation>&Найти текст:</translation> + </message> + <message> + <location line="+10"/> + <source>&Translate to:</source> + <translation>&Перевести как:</translation> + </message> + <message> + <location line="+19"/> + <source>Search options</source> + <translation>Параметры поиска</translation> + </message> + <message> + <location line="+6"/> + <source>Texts such as 'TeX' and 'tex' are considered as different when checked.</source> + <translation>Если отмечено, строки "ПрИмЕр" и "пример" будет считаться разными.</translation> + </message> + <message> + <location line="+3"/> + <source>Match &case</source> + <translation>С учётом &регистра</translation> + </message> + <message> + <location line="+7"/> + <source>Mark new translation as &finished</source> + <translation>Помечать перевод как завер&шённый</translation> + </message> + <message> + <location line="+33"/> + <source>Click here to find the next occurrence of the text you typed in.</source> + <translation>Найти следующее совпадение для введённого текста.</translation> + </message> + <message> + <location line="+3"/> + <source>Find Next</source> + <translation>Найти далее</translation> + </message> + <message> + <location line="+13"/> + <source>Translate</source> + <translation>Перевести</translation> + </message> + <message> + <location line="+7"/> + <source>Translate All</source> + <translation>Перевести все</translation> + </message> + <message> + <location line="+7"/> + <source>Click here to close this window.</source> + <translation>Закрыть окно.</translation> + </message> + <message> + <location line="+3"/> + <source>Cancel</source> + <translation>Отмена</translation> + </message> +</context> +<context> + <name>TranslationSettingsDialog</name> + <message> + <location filename="../tools/linguist/linguist/translationsettings.ui" line="+20"/> + <source>Source language</source> + <translation>Исходный язык</translation> + </message> + <message> + <location line="+15"/> + <location line="+38"/> + <source>Language</source> + <translation>Язык</translation> + </message> + <message> + <location line="-25"/> + <location line="+38"/> + <source>Country/Region</source> + <translation>Страна/Регион</translation> + </message> + <message> + <location line="-28"/> + <source>Target language</source> + <translation>Язык перевода</translation> + </message> + <message> + <location filename="../tools/linguist/linguist/translationsettingsdialog.cpp" line="+68"/> + <source>Any Country</source> + <translation>Любая страна</translation> + </message> + <message> + <location line="+11"/> + <location line="+8"/> + <source>Settings for '%1' - Qt Linguist</source> + <translation>Настройки для '%1' - Qt Linguist</translation> + </message> +</context> +</TS> diff --git a/translations/qt_help_ru.ts b/translations/qt_help_ru.ts new file mode 100644 index 0000000..16748fb --- /dev/null +++ b/translations/qt_help_ru.ts @@ -0,0 +1,361 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="ru"> +<context> + <name>QCLuceneResultWidget</name> + <message> + <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="+110"/> + <source>Search Results</source> + <translation>Результаты поиска</translation> + </message> + <message> + <location line="+7"/> + <source>Note:</source> + <translation>Замечание:</translation> + </message> + <message> + <location line="+1"/> + <source>The search results may not be complete since the documentation is still being indexed!</source> + <translation>Могли быть показаны не все результаты, так как документация ещё индексируется!</translation> + </message> + <message> + <location line="+11"/> + <source>Your search did not match any documents.</source> + <translation>По вашему запросу не найдено ни одного документа.</translation> + </message> + <message> + <location line="+4"/> + <source>(The reason for this might be that the documentation is still being indexed.)</source> + <translation>(Причиной этого может быть то, что документация ещё индексируется.)</translation> + </message> +</context> +<context> + <name>QHelpCollectionHandler</name> + <message> + <location filename="../tools/assistant/lib/qhelpcollectionhandler.cpp" line="+79"/> + <source>The collection file is not set up yet!</source> + <translation type="unfinished">Файл набора ещё не установлен!</translation> + </message> + <message> + <location line="+22"/> + <source>Cannot load sqlite database driver!</source> + <translation>Не удалось загрузить драйвер базы данных sqlite!</translation> + </message> + <message> + <location line="+11"/> + <location line="+48"/> + <source>Cannot open collection file: %1</source> + <translation>Не удалось открыть файл набора: %1</translation> + </message> + <message> + <location line="-39"/> + <source>Cannot create tables in file %1!</source> + <translation>Не удалось создать таблицы в файле %1!</translation> + </message> + <message> + <location line="+16"/> + <source>The specified collection file already exists!</source> + <translation type="unfinished">Указанный файла набора уже существует!</translation> + </message> + <message> + <location line="+5"/> + <source>Cannot create directory: %1</source> + <translation>Не удалось создать каталог: %1</translation> + </message> + <message> + <location line="+23"/> + <source>Cannot copy collection file: %1</source> + <translation type="unfinished">Не удалось скопировать файл набора: %1</translation> + </message> + <message> + <location line="+119"/> + <source>Unknown filter!</source> + <translation>Неизвестный фильтр!</translation> + </message> + <message> + <location line="+55"/> + <source>Cannot register filter %1!</source> + <translation>Не удалось зарегистрировать фильтр %1!</translation> + </message> + <message> + <location line="+44"/> + <source>Cannot open documentation file %1!</source> + <translation>Не удалось открыть файл документации %1!</translation> + </message> + <message> + <location line="+6"/> + <source>Invalid documentation file!</source> + <translation>Некорректный файл документации!</translation> + </message> + <message> + <location line="+34"/> + <source>The namespace %1 was not registered!</source> + <translation>Пространство имён %1 не зарегистрировано!</translation> + </message> + <message> + <location line="+120"/> + <source>Namespace %1 already exists!</source> + <translation>Пространство имён %1 уже существует!</translation> + </message> + <message> + <location line="+13"/> + <source>Cannot register namespace!</source> + <translation>Не удалось зарегистрировать пространство имён!</translation> + </message> + <message> + <location line="+24"/> + <source>Cannot open database to optimize!</source> + <translation>Не удалось открыть базу данных для оптимизации!</translation> + </message> +</context> +<context> + <name>QHelpDBReader</name> + <message> + <location filename="../tools/assistant/lib/qhelpdbreader.cpp" line="+98"/> + <source>Cannot open database '%1' '%2': %3</source> + <extracomment>The placeholders are: %1 - The name of the database which cannot be opened %2 - The unique id for the connection %3 - The actual error string</extracomment> + <translation>Не удалось открыть базу данных '%1' '%2': %3</translation> + </message> +</context> +<context> + <name>QHelpEngineCore</name> + <message> + <location filename="../tools/assistant/lib/qhelpenginecore.cpp" line="+516"/> + <source>The specified namespace does not exist!</source> + <translation>Указанное пространство имён не существует!</translation> + </message> +</context> +<context> + <name>QHelpEngineCorePrivate</name> + <message> + <location line="-394"/> + <source>Cannot open documentation file %1: %2!</source> + <translation>Не удалось открыть файл документации %1: %2!</translation> + </message> +</context> +<context> + <name>QHelpGenerator</name> + <message> + <location filename="../tools/assistant/lib/qhelpgenerator.cpp" line="+157"/> + <source>Invalid help data!</source> + <translation>Некорректные данные справки!</translation> + </message> + <message> + <location line="+6"/> + <source>No output file name specified!</source> + <translation>Не указано имя результирующего файла!</translation> + </message> + <message> + <location line="+14"/> + <source>Building up file structure...</source> + <translation>Создание структуры файла...</translation> + </message> + <message> + <location line="-7"/> + <source>The file %1 cannot be overwritten!</source> + <translation>Невозможно перезаписать файл %1!</translation> + </message> + <message> + <location line="+18"/> + <source>Cannot open data base file %1!</source> + <translation>Не удалось открыть файл базы данных %1!</translation> + </message> + <message> + <location line="+11"/> + <source>Cannot register namespace %1!</source> + <translation>Не удалось зарегистрировать пространство имён %1!</translation> + </message> + <message> + <location line="+6"/> + <source>Insert custom filters...</source> + <translation>Вставка индивидуальных фильтров...</translation> + </message> + <message> + <location line="+12"/> + <source>Insert help data for filter section (%1 of %2)...</source> + <translation>Вставка данных справки для секции фильтра (%1 из %2)...</translation> + </message> + <message> + <location line="+18"/> + <source>Documentation successfully generated.</source> + <translation>Документация успешно создана.</translation> + </message> + <message> + <location line="+76"/> + <source>Some tables already exist!</source> + <translation>Некоторые таблицы уже существуют!</translation> + </message> + <message> + <location line="+61"/> + <source>Cannot create tables!</source> + <translation>Не удалось создать таблицы!</translation> + </message> + <message> + <location line="+86"/> + <source>Cannot register virtual folder!</source> + <translation>Не удалось зарегистрировать виртуальный каталог!</translation> + </message> + <message> + <location line="+10"/> + <source>Insert files...</source> + <translation>Вставка файлов...</translation> + </message> + <message> + <location line="+42"/> + <source>The referenced file %1 must be inside or within a subdirectory of (%2). Skipping it.</source> + <translation>Файл %1 должен быть в каталоге '%2' или в его подкаталоге. Пропускаем.</translation> + </message> + <message> + <location line="+7"/> + <source>The file %1 does not exist! Skipping it.</source> + <translation>Файл %1 не существует! Пропускаем.</translation> + </message> + <message> + <location line="+6"/> + <source>Cannot open file %1! Skipping it.</source> + <translation>Не удалось открыть файл %1! Пропускаем.</translation> + </message> + <message> + <location line="+131"/> + <source>The filter %1 is already registered!</source> + <translation>Фильтр %1 уже зарегистрирован!</translation> + </message> + <message> + <location line="+5"/> + <source>Cannot register filter %1!</source> + <translation>Не удалось зарегистрировать фильтр %1!</translation> + </message> + <message> + <location line="+24"/> + <source>Insert indices...</source> + <translation>Вставка указателей...</translation> + </message> + <message> + <location line="+80"/> + <source>Insert contents...</source> + <translation>Вставка оглавления...</translation> + </message> + <message> + <location line="+8"/> + <source>Cannot insert contents!</source> + <translation>Не удаётся вставить оглавление!</translation> + </message> + <message> + <location line="+12"/> + <source>Cannot register contents!</source> + <translation>Не удаётся зарегистрировать оглавление!</translation> + </message> +</context> +<context> + <name>QHelpSearchQueryWidget</name> + <message> + <location filename="../tools/assistant/lib/qhelpsearchquerywidget.cpp" line="+200"/> + <source>Search for:</source> + <translation>Искать:</translation> + </message> + <message> + <location line="+2"/> + <source>Search</source> + <translation>Поиск</translation> + </message> + <message> + <location line="+16"/> + <source>Advanced search</source> + <translation>Расширенный поиск</translation> + </message> + <message> + <location line="+18"/> + <source>words <B>similar</B> to:</source> + <translation><B>похожие</B> слова:</translation> + </message> + <message> + <location line="+5"/> + <source><B>without</B> the words:</source> + <translation><B>не содержит</B> слова:</translation> + </message> + <message> + <location line="+5"/> + <source>with <B>exact phrase</B>:</source> + <translation>содержит <B>фразу полностью</B>:</translation> + </message> + <message> + <location line="+5"/> + <source>with <B>all</B> of the words:</source> + <translation>содержит <B>все</B> слова:</translation> + </message> + <message> + <location line="+5"/> + <source>with <B>at least one</B> of the words:</source> + <translation>содержит <B> минимум одно</B> из слов:</translation> + </message> +</context> +<context> + <name>QHelpSearchResultWidget</name> + <message> + <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="+235"/> + <source>0 - 0 of 0 Hits</source> + <translation>0 - 0 из 0 соответствий</translation> + </message> +</context> +<context> + <name>QHelpSearchResultWidgetPrivate</name> + <message> + <location line="-61"/> + <source>%1 - %2 of %3 Hits</source> + <translation>%1 - %2 из %3 соответствий</translation> + </message> +</context> +<context> + <name>QObject</name> + <message> + <location filename="../tools/assistant/lib/qhelp_global.h" line="+83"/> + <source>Untitled</source> + <translation>Безымянный</translation> + </message> + <message> + <location filename="../tools/assistant/lib/qhelpprojectdata.cpp" line="+80"/> + <source>Unknown token.</source> + <translation type="unfinished">Неизвестный токен.</translation> + </message> + <message> + <location line="+13"/> + <source>Unknown token. Expected "QtHelpProject"!</source> + <translation type="unfinished">Неизвестный токен. Ожидается "QtHelpProject"!</translation> + </message> + <message> + <location line="+5"/> + <source>Error in line %1: %2</source> + <translation>Ошибка в строке %1: %2</translation> + </message> + <message> + <location line="+13"/> + <source>A virtual folder must not contain a '/' character!</source> + <translation>Виртуальный каталог не должен содержать символ '/'!</translation> + </message> + <message> + <location line="+4"/> + <source>A namespace must not contain a '/' character!</source> + <translation>Пространство имён не должно содержать символ '/'!</translation> + </message> + <message> + <location line="+16"/> + <source>Missing namespace in QtHelpProject.</source> + <translation>Отсутствует пространство имён в QtHelpProject.</translation> + </message> + <message> + <location line="+2"/> + <source>Missing virtual folder in QtHelpProject</source> + <translation>Отсутствует виртуальный каталог в QtHelpProject</translation> + </message> + <message> + <location line="+88"/> + <source>Missing attribute in keyword at line %1.</source> + <translation>Отсутствует атрибут у ключевого слова в строке %1.</translation> + </message> + <message> + <location line="+83"/> + <source>The input file %1 could not be opened!</source> + <translation>Невозможно открыть исходный файл %1!</translation> + </message> +</context> +</TS> diff --git a/translations/translations.pri b/translations/translations.pri index cdb157e..480849f 100644 --- a/translations/translations.pri +++ b/translations/translations.pri @@ -8,8 +8,16 @@ defineReplace(prependAll) { return ($$result) } -LUPDATE = $$QT_BUILD_TREE/bin/lupdate -locations relative -no-ui-lines -win32:LUPDATE ~= s|/|\|g +defineReplace(fixPath) { +WIN { + return ($$replace($$1, /, \)) +} ELSE { + return ($$1) +} +} + +LUPDATE = $$fixPath($$QT_BUILD_TREE/bin/lupdate) -locations relative -no-ui-lines +LRELEASE = $$fixPath($$QT_BUILD_TREE/bin/lrelease) ###### Qt Libraries @@ -34,18 +42,27 @@ ts-qt.commands = (cd $$QT_SOURCE_TREE/src && $$LUPDATE \ -ts $$prependAll($$[QT_INSTALL_TRANSLATIONS]/qt_,$$QT_TS,.ts)) ts-qt.depends = sub-tools +qm-qt.commands = $$LRELEASE $$prependAll($$[QT_INSTALL_TRANSLATIONS]/qt_,$$QT_TS,.ts) +qm-qt.depends = sub-tools + ###### Designer ts-designer.commands = (cd $$QT_SOURCE_TREE/src && $$LUPDATE \ ../tools/designer/translations/translations.pro) ts-designer.depends = sub-tools +qm-designer.commands = $$LRELEASE $$QT_SOURCE_TREE/tools/designer/translations/translations.pro +qm-designer.depends = sub-tools + ###### Linguist ts-linguist.commands = (cd $$QT_SOURCE_TREE/src && $$LUPDATE \ ../tools/linguist/linguist/linguist.pro) ts-linguist.depends = sub-tools +qm-linguist.commands = $$LRELEASE $$QT_SOURCE_TREE/tools/linguist/linguist/linguist.pro +qm-linguist.depends = sub-tools + ###### Assistant ts-assistant.commands = (cd $$QT_SOURCE_TREE/src && $$LUPDATE \ @@ -56,21 +73,36 @@ ts-assistant.commands = (cd $$QT_SOURCE_TREE/src && $$LUPDATE \ ../tools/assistant/translations/translations_adp.pro) ts-assistant.depends = sub-tools +qm-assistant.commands = ($$LRELEASE $$QT_SOURCE_TREE/tools/assistant/translations/translations.pro \ + && $$LRELEASE \ + $$QT_SOURCE_TREE/tools/assistant/translations/qt_help.pro \ + && $$LRELEASE \ + $$QT_SOURCE_TREE/tools/assistant/translations/translations_adp.pro) +qm-assistant.depends = sub-tools + ###### Qtconfig ts-qtconfig.commands = (cd $$QT_SOURCE_TREE/src && $$LUPDATE \ ../tools/qtconfig/translations/translations.pro) ts-qtconfig.depends = sub-tools +qm-qtconfig.commands = $$LRELEASE $$QT_SOURCE_TREE/tools/qtconfig/translations/translations.pro +qm-qtconfig.depends = sub-tools + ###### Qvfp ts-qvfb.commands = (cd $$QT_SOURCE_TREE/src && $$LUPDATE \ ../tools/qvfb/translations/translations.pro) ts-qvfb.depends = sub-tools +qm-qvfb.commands = $$LRELEASE $$QT_SOURCE_TREE/tools/qvfb/translations/translations.pro +qm-qvfb.depends = sub-tools + ###### Overall Rules ts.depends = ts-qt ts-designer ts-linguist ts-assistant ts-qtconfig ts-qvfb +qm.depends = qm-qt qm-designer qm-linguist qm-assistant qm-qtconfig qm-qvfb QMAKE_EXTRA_TARGETS += ts-qt ts-designer ts-linguist ts-assistant ts-qtconfig ts-qvfb \ - ts + qm-qt qm-designer qm-linguist qm-assistant qm-qtconfig qm-qvfb \ + ts qm diff --git a/translations/translations.pro b/translations/translations.pro deleted file mode 100644 index 6f14108..0000000 --- a/translations/translations.pro +++ /dev/null @@ -1,50 +0,0 @@ -TRANSLATIONS = $$files(*.ts) - -LRELEASE = $$QT_BUILD_TREE/bin/lrelease -win32 { - LRELEASE ~= s|/|\|g -} else:!static { - path = $$QT_BUILD_TREE/lib - !macx:var = LD_LIBRARY_PATH - else:qt_no_framework:var = DYLD_LIBRARY_PATH - else:var = DYLD_FRAMEWORK_PATH - - LRELEASE = test -z \"\$\$$$var\" && $$var=$$path || $$var=$$path:\$\$$$var; export $$var; $$LRELEASE -} - -contains(TEMPLATE_PREFIX, vc):vcproj = 1 - -TEMPLATE = app -TARGET = qm_phony_target -CONFIG -= qt separate_debug_info -QT = -LIBS = - -updateqm.input = TRANSLATIONS -updateqm.output = ${QMAKE_FILE_BASE}.qm -isEmpty(vcproj):updateqm.variable_out = PRE_TARGETDEPS -updateqm.commands = @echo lrelease ${QMAKE_FILE_IN}; $$LRELEASE ${QMAKE_FILE_IN} -qm ${QMAKE_FILE_OUT} -updateqm.name = LRELEASE ${QMAKE_FILE_IN} -updateqm.CONFIG += no_link -QMAKE_EXTRA_COMPILERS += updateqm - -isEmpty(vcproj) { - QMAKE_LINK = @: IGNORE THIS LINE - OBJECTS_DIR = - win32:CONFIG -= embed_manifest_exe -} else { - CONFIG += console - PHONY_DEPS = . - phony_src.input = PHONY_DEPS - phony_src.output = phony.c - phony_src.variable_out = GENERATED_SOURCES - phony_src.commands = echo int main() { return 0; } > phony.c - phony_src.name = CREATE phony.c - phony_src.CONFIG += combine - QMAKE_EXTRA_COMPILERS += phony_src -} - -translations.path = $$[QT_INSTALL_TRANSLATIONS] -translations.files = $$TRANSLATIONS -translations.files ~= s,\\.ts$,.qm,g -INSTALLS += translations |