From f769a6b029779ba3f1308fd4c66a799a7390cb77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Remko=20Tron=C3=A7on?= Date: Sat, 19 Feb 2011 09:48:05 +0100 Subject: Make Swift translatable. diff --git a/BuildTools/SCons/Tools/WindowsBundle.py b/BuildTools/SCons/Tools/WindowsBundle.py index 7d0f4ff..e351884 100644 --- a/BuildTools/SCons/Tools/WindowsBundle.py +++ b/BuildTools/SCons/Tools/WindowsBundle.py @@ -1,19 +1,20 @@ import SCons.Util, os def generate(env) : - def createWindowsBundle(env, bundle, resources = [], qtimageformats = [], qtlibs = []) : + def createWindowsBundle(env, bundle, resources = {}, qtimageformats = [], qtlibs = []) : env.Install(bundle, bundle + ".exe") for lib in qtlibs : env.Install(bundle, os.path.join(env["QTDIR"], "bin", lib + ".dll")) env.Install(os.path.join(bundle, "imageformats"), [os.path.join(env["QTDIR"], "plugins", "imageformats", "q" + codec + "4.dll") for codec in qtimageformats]) - for resource in resources : - e = env.Entry(resource) - if e.isdir() : - for subresource in env.Glob(str(e) + "/*") : - env.Install(os.path.join(bundle, e.name), subresource) - else : - env.Install(bundle, resource) + for dir, resourceFiles in resources.items() : + for resource in resourceFiles : + e = env.Entry(resource) + if e.isdir() : + for subresource in env.Glob(str(e) + "/*") : + env.Install(os.path.join(bundle, dir, e.name), subresource) + else : + env.Install(os.path.join(bundle, dir), resource) env.AddMethod(createWindowsBundle, "WindowsBundle") diff --git a/SwifTools/Application/UnixApplicationPathProvider.cpp b/SwifTools/Application/UnixApplicationPathProvider.cpp index c0d24ab..a68f249 100644 --- a/SwifTools/Application/UnixApplicationPathProvider.cpp +++ b/SwifTools/Application/UnixApplicationPathProvider.cpp @@ -14,6 +14,7 @@ namespace Swift { UnixApplicationPathProvider::UnixApplicationPathProvider(const std::string& name) : ApplicationPathProvider(name) { resourceDirs.push_back(getExecutableDir() / "../resources"); // Development + resourceDirs.push_back(getExecutableDir() / ".." / "share" / boost::to_lower_copy(getApplicationName())); // Local install char* xdgDataDirs = getenv("XDG_DATA_DIRS"); if (xdgDataDirs) { std::vector dataDirs = String::split(xdgDataDirs, ':'); @@ -24,8 +25,8 @@ UnixApplicationPathProvider::UnixApplicationPathProvider(const std::string& name return; } } - resourceDirs.push_back("/usr/local/share/swift"); - resourceDirs.push_back("/usr/share/swift"); + resourceDirs.push_back("/usr/local/share/" + boost::to_lower_copy(getApplicationName())); + resourceDirs.push_back("/usr/share/" + boost::to_lower_copy(getApplicationName())); } boost::filesystem::path UnixApplicationPathProvider::getHomeDir() const { diff --git a/Swift/Controllers/Chat/MUCController.cpp b/Swift/Controllers/Chat/MUCController.cpp index ce8c946..aaa9d3a 100644 --- a/Swift/Controllers/Chat/MUCController.cpp +++ b/Swift/Controllers/Chat/MUCController.cpp @@ -122,13 +122,13 @@ void MUCController::receivedActivity() { void MUCController::handleJoinFailed(boost::shared_ptr error) { receivedActivity(); - std::string errorMessage = QT_TRANSLATE_NOOP("", "Unable to join this room"); + std::string errorMessage = QT_TRANSLATE_NOOP("", "Unable to enter this room"); std::string rejoinNick; if (error) { switch (error->getCondition()) { case ErrorPayload::Conflict: rejoinNick = nick_ + "_"; - errorMessage = str(format(QT_TRANSLATE_NOOP("", "Unable to join this room as %1%, retrying as %2%")) % nick_ % rejoinNick); + errorMessage = str(format(QT_TRANSLATE_NOOP("", "Unable to enter this room as %1%, retrying as %2%")) % nick_ % rejoinNick); break; case ErrorPayload::JIDMalformed: errorMessage += ": "; @@ -140,7 +140,7 @@ void MUCController::handleJoinFailed(boost::shared_ptr error) { break; case ErrorPayload::RegistrationRequired: errorMessage += ": "; - errorMessage += QT_TRANSLATE_NOOP("", "Only members may join"); + errorMessage += QT_TRANSLATE_NOOP("", "Only members may enter"); break; case ErrorPayload::Forbidden: errorMessage += ": "; @@ -170,7 +170,7 @@ void MUCController::handleJoinFailed(boost::shared_ptr error) { void MUCController::handleJoinComplete(const std::string& nick) { receivedActivity(); joined_ = true; - std::string joinMessage = str(format(QT_TRANSLATE_NOOP("", "You have joined room %1% as %2%")) % toJID_.toString() % nick); + std::string joinMessage = str(format(QT_TRANSLATE_NOOP("", "You have entered room %1% as a %2%.")) % toJID_.toString() % nick); nick_ = nick; chatWindow_->addSystemMessage(joinMessage); clearPresenceQueue(); @@ -211,10 +211,10 @@ void MUCController::handleOccupantJoined(const MUCOccupant& occupant) { std::string joinString; MUCOccupant::Role role = occupant.getRole(); if (role != MUCOccupant::NoRole && role != MUCOccupant::Participant) { - joinString = str(format(QT_TRANSLATE_NOOP("", "%1% has joined the room as a %2%.")) % occupant.getNick() % roleToFriendlyName(role)); + joinString = str(format(QT_TRANSLATE_NOOP("", "%1% has entered the room as a %2%.")) % occupant.getNick() % roleToFriendlyName(role)); } else { - joinString = str(format(QT_TRANSLATE_NOOP("", "%1% has joined the room.")) % occupant.getNick()); + joinString = str(format(QT_TRANSLATE_NOOP("", "%1% has entered the room.")) % occupant.getNick()); } if (shouldUpdateJoinParts()) { updateJoinParts(); @@ -327,7 +327,7 @@ void MUCController::setOnline(bool online) { processUserPart(); } else { if (shouldJoinOnReconnect_) { - chatWindow_->addSystemMessage(str(format(QT_TRANSLATE_NOOP("", "Trying to join room %1%")) % toJID_.toString())); + chatWindow_->addSystemMessage(str(format(QT_TRANSLATE_NOOP("", "Trying to enter room %1%")) % toJID_.toString())); if (loginCheckTimer_) { loginCheckTimer_->start(); } @@ -454,10 +454,10 @@ std::string MUCController::generateJoinPartString(const std::vector 1) { - eventString = QT_TRANSLATE_NOOP("", "%1% have joined the room"); + eventString = QT_TRANSLATE_NOOP("", "%1% have entered the room"); } else { - eventString = QT_TRANSLATE_NOOP("", "%1% has joined the room"); + eventString = QT_TRANSLATE_NOOP("", "%1% has entered the room"); } break; case Part: @@ -470,18 +470,18 @@ std::string MUCController::generateJoinPartString(const std::vector 1) { - eventString = QT_TRANSLATE_NOOP("", "%1% have joined then left the room"); + eventString = QT_TRANSLATE_NOOP("", "%1% have entered then left the room"); } else { - eventString = QT_TRANSLATE_NOOP("", "%1% has joined then left the room"); + eventString = QT_TRANSLATE_NOOP("", "%1% has entered then left the room"); } break; case PartThenJoin: if (sorted[i].size() > 1) { - eventString = QT_TRANSLATE_NOOP("", "%1% have left then rejoined the room"); + eventString = QT_TRANSLATE_NOOP("", "%1% have left then returned to the room"); } else { - eventString = QT_TRANSLATE_NOOP("", "%1% has left then rejoined the room"); + eventString = QT_TRANSLATE_NOOP("", "%1% has left then returned to the room"); } break; } diff --git a/Swift/Controllers/Chat/UnitTest/MUCControllerTest.cpp b/Swift/Controllers/Chat/UnitTest/MUCControllerTest.cpp index e66fa9e..5f5e44d 100644 --- a/Swift/Controllers/Chat/UnitTest/MUCControllerTest.cpp +++ b/Swift/Controllers/Chat/UnitTest/MUCControllerTest.cpp @@ -200,25 +200,25 @@ public: void testJoinPartStringContructionSimple() { std::vector list; list.push_back(NickJoinPart("Kev", Join)); - CPPUNIT_ASSERT_EQUAL(std::string("Kev has joined the room"), MUCController::generateJoinPartString(list)); + CPPUNIT_ASSERT_EQUAL(std::string("Kev has entered the room"), MUCController::generateJoinPartString(list)); list.push_back(NickJoinPart("Remko", Part)); - CPPUNIT_ASSERT_EQUAL(std::string("Kev has joined the room and Remko has left the room"), MUCController::generateJoinPartString(list)); + CPPUNIT_ASSERT_EQUAL(std::string("Kev has entered the room and Remko has left the room"), MUCController::generateJoinPartString(list)); list.push_back(NickJoinPart("Bert", Join)); - CPPUNIT_ASSERT_EQUAL(std::string("Kev and Bert have joined the room and Remko has left the room"), MUCController::generateJoinPartString(list)); + CPPUNIT_ASSERT_EQUAL(std::string("Kev and Bert have entered the room and Remko has left the room"), MUCController::generateJoinPartString(list)); list.push_back(NickJoinPart("Ernie", Join)); - CPPUNIT_ASSERT_EQUAL(std::string("Kev, Bert and Ernie have joined the room and Remko has left the room"), MUCController::generateJoinPartString(list)); + CPPUNIT_ASSERT_EQUAL(std::string("Kev, Bert and Ernie have entered the room and Remko has left the room"), MUCController::generateJoinPartString(list)); } void testJoinPartStringContructionMixed() { std::vector list; list.push_back(NickJoinPart("Kev", JoinThenPart)); - CPPUNIT_ASSERT_EQUAL(std::string("Kev has joined then left the room"), MUCController::generateJoinPartString(list)); + CPPUNIT_ASSERT_EQUAL(std::string("Kev has entered then left the room"), MUCController::generateJoinPartString(list)); list.push_back(NickJoinPart("Remko", Part)); - CPPUNIT_ASSERT_EQUAL(std::string("Remko has left the room and Kev has joined then left the room"), MUCController::generateJoinPartString(list)); + CPPUNIT_ASSERT_EQUAL(std::string("Remko has left the room and Kev has entered then left the room"), MUCController::generateJoinPartString(list)); list.push_back(NickJoinPart("Bert", PartThenJoin)); - CPPUNIT_ASSERT_EQUAL(std::string("Remko has left the room, Kev has joined then left the room and Bert has left then rejoined the room"), MUCController::generateJoinPartString(list)); + CPPUNIT_ASSERT_EQUAL(std::string("Remko has left the room, Kev has entered then left the room and Bert has left then returned to the room"), MUCController::generateJoinPartString(list)); list.push_back(NickJoinPart("Ernie", JoinThenPart)); - CPPUNIT_ASSERT_EQUAL(std::string("Remko has left the room, Kev and Ernie have joined then left the room and Bert has left then rejoined the room"), MUCController::generateJoinPartString(list)); + CPPUNIT_ASSERT_EQUAL(std::string("Remko has left the room, Kev and Ernie have entered then left the room and Bert has left then returned to the room"), MUCController::generateJoinPartString(list)); } private: diff --git a/Swift/Controllers/MainController.cpp b/Swift/Controllers/MainController.cpp index 6263636..adde70a 100644 --- a/Swift/Controllers/MainController.cpp +++ b/Swift/Controllers/MainController.cpp @@ -458,7 +458,7 @@ void MainController::handleDisconnected(const boost::optional& erro case ClientError::CertificateSelfSignedError: certificateErrorMessage = QT_TRANSLATE_NOOP("", "Certificate is self-signed"); break; case ClientError::CertificateRejectedError: certificateErrorMessage = QT_TRANSLATE_NOOP("", "Certificate has been rejected"); break; case ClientError::CertificateUntrustedError: certificateErrorMessage = QT_TRANSLATE_NOOP("", "Certificate is not trusted"); break; - case ClientError::InvalidCertificatePurposeError: certificateErrorMessage = QT_TRANSLATE_NOOP("", "Certificate cannot be used for encryptig your connection"); break; + case ClientError::InvalidCertificatePurposeError: certificateErrorMessage = QT_TRANSLATE_NOOP("", "Certificate cannot be used for encrypting your connection"); break; case ClientError::CertificatePathLengthExceededError: certificateErrorMessage = QT_TRANSLATE_NOOP("", "Certificate path length constraint exceeded"); break; case ClientError::InvalidCertificateSignatureError: certificateErrorMessage = QT_TRANSLATE_NOOP("", "Invalid certificate signature"); break; case ClientError::InvalidCAError: certificateErrorMessage = QT_TRANSLATE_NOOP("", "Invalid Certificate Authority"); break; diff --git a/Swift/Controllers/Roster/RosterController.cpp b/Swift/Controllers/Roster/RosterController.cpp index 8a0fd53..83291e4 100644 --- a/Swift/Controllers/Roster/RosterController.cpp +++ b/Swift/Controllers/Roster/RosterController.cpp @@ -247,7 +247,7 @@ void RosterController::handleRosterSetError(ErrorPayload::ref error, boost::shar if (!error) { return; } - std::string text = str(format(QT_TRANSLATE_NOOP("", "Server %1% rejected roster change to item '%2%'")) % myJID_.getDomain() % rosterPayload->getItems()[0].getJID().toString()); + std::string text = str(format(QT_TRANSLATE_NOOP("", "Server %1% rejected contact list change to item '%2%'")) % myJID_.getDomain() % rosterPayload->getItems()[0].getJID().toString()); if (!error->getText().empty()) { text += ": " + error->getText(); } diff --git a/Swift/QtUI/EventViewer/QtEventWindow.cpp b/Swift/QtUI/EventViewer/QtEventWindow.cpp index aa5e27d..fdc0194 100644 --- a/Swift/QtUI/EventViewer/QtEventWindow.cpp +++ b/Swift/QtUI/EventViewer/QtEventWindow.cpp @@ -44,7 +44,7 @@ QtEventWindow::QtEventWindow(UIEventStream* eventStream) : EventWindow(false) { view_->setIndentation(0); view_->setRootIsDecorated(true); - readButton_ = new QPushButton("Display Notice", this); + readButton_ = new QPushButton(tr("Display Notice"), this); layout->addWidget(readButton_); readButton_->setEnabled(false); connect(readButton_, SIGNAL(clicked()), this, SLOT(handleReadClicked())); diff --git a/Swift/QtUI/MUCSearch/QtMUCSearchWindow.cpp b/Swift/QtUI/MUCSearch/QtMUCSearchWindow.cpp index 618ed65..135b4ce 100644 --- a/Swift/QtUI/MUCSearch/QtMUCSearchWindow.cpp +++ b/Swift/QtUI/MUCSearch/QtMUCSearchWindow.cpp @@ -27,7 +27,6 @@ QtMUCSearchWindow::QtMUCSearchWindow() { setWindowIcon(QIcon(":/logo-icon-16.png")); #endif setModal(true); - setWindowTitle(tr("Search Room")); ui_.filter_->hide(); model_ = new MUCSearchModel(); delegate_ = new MUCSearchDelegate(); diff --git a/Swift/QtUI/MUCSearch/QtMUCSearchWindow.ui b/Swift/QtUI/MUCSearch/QtMUCSearchWindow.ui index e078d34..6416042 100644 --- a/Swift/QtUI/MUCSearch/QtMUCSearchWindow.ui +++ b/Swift/QtUI/MUCSearch/QtMUCSearchWindow.ui @@ -11,7 +11,7 @@ - Dialog + Search Room diff --git a/Swift/QtUI/QtAboutWidget.cpp b/Swift/QtUI/QtAboutWidget.cpp index 2f68769..8bea27a 100644 --- a/Swift/QtUI/QtAboutWidget.cpp +++ b/Swift/QtUI/QtAboutWidget.cpp @@ -39,8 +39,8 @@ QtAboutWidget::QtAboutWidget() : QDialog() { QLabel* versionLabel = new QLabel(QString("
Version ") + QCoreApplication::applicationVersion() + "
", this); mainLayout->addWidget(versionLabel); - QString buildString = QString("
") + QString(tr("Built with: Qt version %1")).arg(QT_VERSION_STR); - buildString += QString("
") + QString(tr("Running with Qt version ")).arg(qVersion()); + QString buildString = QString("
") + QString(tr("Built with Qt %1")).arg(QT_VERSION_STR); + buildString += QString("
") + QString(tr("Running with Qt %1")).arg(qVersion()); buildString += "
"; QLabel* buildLabel = new QLabel(buildString, this); mainLayout->addWidget(buildLabel); diff --git a/Swift/QtUI/QtAvatarWidget.cpp b/Swift/QtUI/QtAvatarWidget.cpp index ebdf1a6..173d074 100644 --- a/Swift/QtUI/QtAvatarWidget.cpp +++ b/Swift/QtUI/QtAvatarWidget.cpp @@ -58,7 +58,7 @@ void QtAvatarWidget::setAvatar(const ByteArray& data, const std::string& type) { QFont font = painter.font(); font.setPointSize(14); painter.setFont(font); - painter.drawText(0, 0, image.height(), image.width(), Qt::AlignHCenter | Qt::AlignVCenter, "No picture"); + painter.drawText(0, 0, image.height(), image.width(), Qt::AlignHCenter | Qt::AlignVCenter, tr("No picture")); } if (image.height() > label->height() || image.width() > label->width()) { diff --git a/Swift/QtUI/QtBookmarkDetailWindow.ui b/Swift/QtUI/QtBookmarkDetailWindow.ui index d6df255..a77ac76 100644 --- a/Swift/QtUI/QtBookmarkDetailWindow.ui +++ b/Swift/QtUI/QtBookmarkDetailWindow.ui @@ -47,7 +47,7 @@ - Room JID: + Room Address: diff --git a/Swift/QtUI/QtChatWindow.cpp b/Swift/QtUI/QtChatWindow.cpp index 4b67ef0..3e314e5 100644 --- a/Swift/QtUI/QtChatWindow.cpp +++ b/Swift/QtUI/QtChatWindow.cpp @@ -289,7 +289,7 @@ void QtChatWindow::setAckState(std::string const& id, ChatWindow::AckState state switch (state) { case ChatWindow::Pending: xml = "" + tr("This message has not been received by your server yet.") + ""; break; case ChatWindow::Received: xml = ""; break; - case ChatWindow::Failed: xml = "" + tr("This message may not have been transmitted."; break; + case ChatWindow::Failed: xml = "" + tr("This message may not have been transmitted.") + ""; break; } messageLog_->setAckXML(P2QSTRING(id), xml); } diff --git a/Swift/QtUI/QtJoinMUCWindow.ui b/Swift/QtUI/QtJoinMUCWindow.ui index 6b718b3..14774d8 100644 --- a/Swift/QtUI/QtJoinMUCWindow.ui +++ b/Swift/QtUI/QtJoinMUCWindow.ui @@ -17,7 +17,7 @@ - Join Room + Enter Room @@ -86,14 +86,14 @@ - Join automatically in future + Enter automatically in future - Join Room + Enter Room diff --git a/Swift/QtUI/QtLoginWindow.cpp b/Swift/QtUI/QtLoginWindow.cpp index 24e6d76..ef8ceac 100644 --- a/Swift/QtUI/QtLoginWindow.cpp +++ b/Swift/QtUI/QtLoginWindow.cpp @@ -154,7 +154,11 @@ QtLoginWindow::QtLoginWindow(UIEventStream* uiEventStream) : QMainWindow() { generalMenu_ = swiftMenu_; #endif +#ifdef SWIFTEN_PLATFORM_MACOSX + QAction* aboutAction = new QAction(QString("&About %1").arg("Swift"), this); +#else QAction* aboutAction = new QAction(QString(tr("&About %1")).arg("Swift"), this); +#endif connect(aboutAction, SIGNAL(triggered()), SLOT(handleAbout())); swiftMenu_->addAction(aboutAction); @@ -180,7 +184,11 @@ QtLoginWindow::QtLoginWindow(UIEventStream* uiEventStream) : QMainWindow() { swiftMenu_->addSeparator(); #endif +#ifdef SWIFTEN_PLATFORM_MACOSX + QAction* quitAction = new QAction("&Quit", this); +#else QAction* quitAction = new QAction(tr("&Quit"), this); +#endif connect(quitAction, SIGNAL(triggered()), SLOT(handleQuit())); swiftMenu_->addAction(quitAction); diff --git a/Swift/QtUI/QtMainWindow.cpp b/Swift/QtUI/QtMainWindow.cpp index 0f43f7e..55ceabc 100644 --- a/Swift/QtUI/QtMainWindow.cpp +++ b/Swift/QtUI/QtMainWindow.cpp @@ -85,7 +85,7 @@ QtMainWindow::QtMainWindow(QtSettingsProvider* settings, UIEventStream* uiEventS QAction* editProfileAction = new QAction(tr("Edit Profile"), this); connect(editProfileAction, SIGNAL(triggered()), SLOT(handleEditProfileAction())); actionsMenu->addAction(editProfileAction); - QAction* joinMUCAction = new QAction(tr("&Join Room"), this); + QAction* joinMUCAction = new QAction(tr("&Enter Room"), this); connect(joinMUCAction, SIGNAL(triggered()), SLOT(handleJoinMUCAction())); actionsMenu->addAction(joinMUCAction); addUserAction_ = new QAction(tr("&Add Contact"), this); diff --git a/Swift/QtUI/QtNameWidget.cpp b/Swift/QtUI/QtNameWidget.cpp index 6124c65..96f9c0d 100644 --- a/Swift/QtUI/QtNameWidget.cpp +++ b/Swift/QtUI/QtNameWidget.cpp @@ -44,7 +44,7 @@ void QtNameWidget::mousePressEvent(QMouseEvent* event) { QMenu menu; bool hasNick = !nick.isEmpty(); - QAction* showAsNick = new QAction(hasNick ? tr("Show nickname") : tr("(No Nickname Set)"), this); + QAction* showAsNick = new QAction(hasNick ? tr("Show Nickname") : tr("(No Nickname Set)"), this); showAsNick->setCheckable(true); showAsNick->setEnabled(hasNick); if (mode == ShowNick && hasNick) { @@ -52,7 +52,7 @@ void QtNameWidget::mousePressEvent(QMouseEvent* event) { } menu.addAction(showAsNick); - QAction* showAsJID = new QAction(tr("Show ID"), this); + QAction* showAsJID = new QAction(tr("Show Address"), this); showAsJID->setCheckable(true); if (mode == ShowJID || !hasNick) { showAsJID->setChecked(true); diff --git a/Swift/QtUI/QtStatusWidget.cpp b/Swift/QtUI/QtStatusWidget.cpp index 78bbb03..47f0afe 100644 --- a/Swift/QtUI/QtStatusWidget.cpp +++ b/Swift/QtUI/QtStatusWidget.cpp @@ -26,8 +26,6 @@ namespace Swift { -const QString QtStatusWidget::NO_MESSAGE = QString(QT_TRANSLATE_NOOP("QtStatusWidget", "(No message)")); - QtStatusWidget::QtStatusWidget(QWidget *parent) : QWidget(parent), editCursor_(Qt::IBeamCursor), viewCursor_(Qt::PointingHandCursor) { isClicking_ = false; connecting_ = false; @@ -130,7 +128,7 @@ void QtStatusWidget::generateList() { newStatusText_ = text; menu_->clear(); foreach (StatusShow::Type type, icons_.keys()) { - QListWidgetItem* item = new QListWidgetItem(text == "" ? NO_MESSAGE : text, menu_); + QListWidgetItem* item = new QListWidgetItem(text == "" ? getNoMessage() : text, menu_); item->setIcon(icons_[type]); item->setToolTip(P2QSTRING(statusShowTypeToFriendlyName(type)) + ": " + item->text()); item->setStatusTip(item->toolTip()); @@ -223,7 +221,7 @@ void QtStatusWidget::handleItemClicked(QListWidgetItem* item) { editing_ = false; selectedStatusType_ = static_cast(item->data(Qt::UserRole).toInt()); QString message = item->data(Qt::DisplayRole).toString(); - newStatusText_ = message == NO_MESSAGE ? "" : message; + newStatusText_ = message == getNoMessage() ? "" : message; statusEdit_->setText(newStatusText_); handleEditComplete(); } @@ -240,7 +238,7 @@ void QtStatusWidget::setStatusText(const QString& text) { connectingMovie_->stop(); statusText_ = text; statusEdit_->setText(text); - QString escapedText(text.isEmpty() ? NO_MESSAGE : text); + QString escapedText(text.isEmpty() ? getNoMessage() : text); escapedText.replace("<","<"); // statusTextLabel_->setText("" + escapedText + ""); statusTextLabel_->setText(escapedText); @@ -261,10 +259,8 @@ void QtStatusWidget::setStatusType(StatusShow::Type type) { setNewToolTip(); } - - +QString QtStatusWidget::getNoMessage() { + return QString(tr("(No message)")); } - - - +} diff --git a/Swift/QtUI/QtStatusWidget.h b/Swift/QtUI/QtStatusWidget.h index f302c64..75bcf52 100644 --- a/Swift/QtUI/QtStatusWidget.h +++ b/Swift/QtUI/QtStatusWidget.h @@ -43,6 +43,7 @@ namespace Swift { protected slots: virtual void mousePressEvent(QMouseEvent* event); void handleItemClicked(QListWidgetItem* item); + static QString getNoMessage(); private: void viewMode(); void setNewToolTip(); diff --git a/Swift/QtUI/SConscript b/Swift/QtUI/SConscript index e52d76a..2255808 100644 --- a/Swift/QtUI/SConscript +++ b/Swift/QtUI/SConscript @@ -161,17 +161,18 @@ commonResources = { } # Translation -translation_sources = [env.File("../Translations/Swift.ts").abspath] +translation_sources = [env.File("../Translations/swift.ts").abspath] for file in os.listdir(Dir("../Translations").abspath) : - if file.startswith("Swift_") and file.endswith(".ts") : + if file.startswith("swift_") and file.endswith(".ts") : lang = file[6:-3] - translation_resource = "../resources/translations/Swift_" + lang + ".qm" - translation_source = "../Translations/Swift_" + lang + ".ts" + translation_resource = "../resources/translations/swift_" + lang + ".qm" + translation_source = "../Translations/swift_" + lang + ".ts" translation_sources.append(env.File(translation_source).abspath) myenv.Qm(translation_resource, translation_source) commonResources["translations"] = commonResources.get("translations", []) + [translation_resource] if ARGUMENTS.get("update_translations", False) : - t = myenv.Command(translation_sources, [], [myenv.Action("$QT4_LUPDATE -I " + env.Dir("#").abspath + " -silent -codecfortr utf-8 -recursive Swift -ts " + " ".join(translation_sources), cmdstr = "$QT4_LUPDATECOMSTR")]) + myenv.Precious(translation_sources) + t = myenv.Command(translation_sources, [], [myenv.Action("$QT4_LUPDATE -I " + env.Dir("#").abspath + " -silent -no-ui-lines -codecfortr utf-8 -recursive Swift -ts " + " ".join(translation_sources), cmdstr = "$QT4_LUPDATECOMSTR")]) myenv.AlwaysBuild(t) if env["PLATFORM"] == "darwin" : diff --git a/Swift/QtUI/UserSearch/QtUserSearchFieldsPage.ui b/Swift/QtUI/UserSearch/QtUserSearchFieldsPage.ui index f2b5916..fa6e376 100644 --- a/Swift/QtUI/UserSearch/QtUserSearchFieldsPage.ui +++ b/Swift/QtUI/UserSearch/QtUserSearchFieldsPage.ui @@ -11,7 +11,7 @@ - WizardPage + @@ -77,7 +77,7 @@ - TextLabel + diff --git a/Swift/QtUI/UserSearch/QtUserSearchFirstPage.ui b/Swift/QtUI/UserSearch/QtUserSearchFirstPage.ui index 3139f66..46a1277 100644 --- a/Swift/QtUI/UserSearch/QtUserSearchFirstPage.ui +++ b/Swift/QtUI/UserSearch/QtUserSearchFirstPage.ui @@ -11,19 +11,19 @@ - WizardPage + Add a user - Add another user to your roster. If you know their JID you can add them directly, or you can search for them. + Add another user to your contact list. If you know their address you can add them directly, or you can search for them. - howLabel_ + @@ -32,7 +32,7 @@ - I know their JID: + I know their address: @@ -88,7 +88,7 @@ - <font color='red'>errorLabel_</font> + Qt::AlignCenter diff --git a/Swift/QtUI/UserSearch/QtUserSearchResultsPage.ui b/Swift/QtUI/UserSearch/QtUserSearchResultsPage.ui index e980a2f..f312fde 100644 --- a/Swift/QtUI/UserSearch/QtUserSearchResultsPage.ui +++ b/Swift/QtUI/UserSearch/QtUserSearchResultsPage.ui @@ -11,7 +11,7 @@ - WizardPage + diff --git a/Swift/QtUI/UserSearch/QtUserSearchWindow.cpp b/Swift/QtUI/UserSearch/QtUserSearchWindow.cpp index a384f5d..e06cd31 100644 --- a/Swift/QtUI/UserSearch/QtUserSearchWindow.cpp +++ b/Swift/QtUI/UserSearch/QtUserSearchWindow.cpp @@ -23,7 +23,7 @@ namespace Swift { QtUserSearchFirstPage::QtUserSearchFirstPage(UserSearchWindow::Type type, const QString& title) { setupUi(this); setTitle(title); - setSubTitle(QString(tr("%1. If you know their JID you can enter it directly, or you can search for them.")).arg(type == UserSearchWindow::AddContact ? tr("Add another user to your roster") : tr("Chat to another user"))); + setSubTitle(QString(tr("%1. If you know their address you can enter it directly, or you can search for them.")).arg(type == UserSearchWindow::AddContact ? tr("Add another user to your contact list") : tr("Chat to another user"))); connect(jid_, SIGNAL(textChanged(const QString&)), this, SLOT(emitCompletenessCheck())); connect(service_->lineEdit(), SIGNAL(textChanged(const QString&)), this, SLOT(emitCompletenessCheck())); } @@ -291,10 +291,10 @@ void QtUserSearchWindow::clear() { firstPage_->errorLabel_->setVisible(false); QString howText; if (type_ == AddContact) { - howText = QString("How would you like to find the user to add?"); + howText = QString(tr("How would you like to find the user to add?")); } else { - howText = QString("How would you like to find the user to chat to?"); + howText = QString(tr("How would you like to find the user to chat to?")); } firstPage_->howLabel_->setText(howText); firstPage_->byJID_->setChecked(true); diff --git a/Swift/QtUI/UserSearch/QtUserSearchWindow.ui b/Swift/QtUI/UserSearch/QtUserSearchWindow.ui deleted file mode 100644 index 56047ce..0000000 --- a/Swift/QtUI/UserSearch/QtUserSearchWindow.ui +++ /dev/null @@ -1,292 +0,0 @@ - - - QtUserSearchWindow - - - - 0 - 0 - 698 - 569 - - - - - 0 - 0 - - - - Find other users - - - - - - QLayout::SetNoConstraint - - - - - - 0 - 0 - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - Service to search: - - - - - - - true - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Get Search Form - - - - - - - - - 1 - - - - - - - TextLabel - - - Qt::AlignHCenter|Qt::AlignTop - - - true - - - - - - - - - - - - - Enter search terms - - - - - - - Nickname: - - - - - - - - - - First name: - - - - - - - - - - Last name: - - - - - - - - - - E-Mail: - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Search - - - - - - - - - - - - - 0 - 0 - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - Results: - - - - - - - - - - Address: - - - - - - - - - - - - Add to Roster. Nickname: - - - - - - - - - - - - - - Start Chat With Contact - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - - - - - diff --git a/Swift/QtUI/main.cpp b/Swift/QtUI/main.cpp index 3cbb170..c98937d 100644 --- a/Swift/QtUI/main.cpp +++ b/Swift/QtUI/main.cpp @@ -32,7 +32,7 @@ int main(int argc, char* argv[]) { QTranslator qtTranslator; if (!someTranslationPath.empty()) { //std::cout << "Loading " << std::string(QLocale::system().name().toUtf8()) << std::endl; - qtTranslator.load("Swift_" + QLocale::system().name(), someTranslationPath.parent_path().string().c_str()); + qtTranslator.load(QString(SWIFT_APPLICATION_NAME).toLower() + "_" + QLocale::system().name(), someTranslationPath.parent_path().string().c_str()); } app.installTranslator(&qtTranslator); QtTranslator swiftTranslator; diff --git a/Swift/Translations/swift.ts b/Swift/Translations/swift.ts new file mode 100644 index 0000000..32ca913 --- /dev/null +++ b/Swift/Translations/swift.ts @@ -0,0 +1,1289 @@ + + + +UTF-8 + + + + + Starting chat with %1% in chatroom %2% + + + + + Starting chat with %1% - %2% + + + + + me + + + + + %1% has gone offline + + + + + %1% has become available + + + + + %1% has gone away + + + + + %1% is now busy + + + + + The day is now %1% + + + + + Error sending message + + + + + Bad request + + + + + Conflict + + + + + This feature is not implemented + + + + + Forbidden + + + + + Recipient can no longer be contacted + + + + + Internal server error + + + + + Item not found + + + + + JID Malformed + + + + + Message was rejected + + + + + Not allowed + + + + + Not authorized + + + + + Payment is required + + + + + Recipient is unavailable + + + + + Redirect + + + + + Registration required + + + + + Recipient's server not found + + + + + Remote server timeout + + + + + The server is low on resources + + + + + The service is unavailable + + + + + A subscription is required + + + + + Undefined condition + + + + + Unexpected request + + + + + Room %1% is not responding. This operation may never complete. + + + + + No nickname specified + + + + + A password needed + + + + + You are banned from the room + + + + + The room is full + + + + + The room does not exist + + + + + Unable to enter this room + + + + + Unable to enter this room as %1%, retrying as %2% + + + + + Only members may enter + + + + + %1% has entered the room as a %2%. + + + + + %1% has entered the room. + + + + + moderator + + + + + participant + + + + + visitor + + + + + The room subject is now: %1% + + + + + %1% is now a %2% + + + + + Moderators + + + + + Participants + + + + + Visitors + + + + + Occupants + + + + + Trying to enter room %1% + + + + + %1% have left then returned to the room + + + + + %1% has left then returned to the room + + + + + + %1% has left the room + + + + + You have entered room %1% as a %2%. + + + + + You have left the room + + + + + + and + + + + + %1% have entered the room + + + + + %1% has entered the room + + + + + %1% have entered then left the room + + + + + %1% has entered then left the room + + + + + %1% have left the room + + + + + Unknown Error + + + + + Unable to find server + + + + + Error connecting to server + + + + + Error while receiving server data + + + + + Error while sending data to the server + + + + + Error parsing server data + + + + + Login/password invalid + + + + + Error while compressing stream + + + + + Server verification failed + + + + + Authentication mechanisms not supported + + + + + Unexpected response + + + + + Error binding resource + + + + + Error starting session + + + + + Stream error + + + + + Encryption error + + + + + Error loading certificate (Invalid password?) + + + + + Certificate not authorized + + + + + Unknown certificate + + + + + Certificate has expired + + + + + Certificate is not yet valid + + + + + Certificate is self-signed + + + + + Certificate has been rejected + + + + + Certificate is not trusted + + + + + Certificate cannot be used for encrypting your connection + + + + + Certificate path length constraint exceeded + + + + + Invalid certificate signature + + + + + Invalid Certificate Authority + + + + + Certificate does not match the host identity + + + + + Certificate error + + + + + Reconnect to %1% failed: %2%. Will retry in %3% seconds. + + + + + Disconnected from %1%: %2%. + + + + + + + Contacts + + + + + Server %1% rejected contact list change to item '%2%' + + + + + + Available + + + + + + Away + + + + + Busy + + + + + Offline + + + + + QObject + + + No rooms found + + + + + QtBookmarkDetailWindow + + + + Edit Bookmark Details + + + + + + Bookmark Name: + + + + + + Your Nickname: + + + + + + Room password: + + + + + + Join automatically + + + + + + Room Address: + + + + + QtJoinMUCWindow + + + + Room: + + + + + + Search ... + + + + + + Nickname: + + + + + + + Enter Room + + + + + + Enter automatically in future + + + + + QtMUCSearchWindow + + + + Search Room + + + + + + Service: + + + + + + Cancel + + + + + + Ok + + + + + + List rooms + + + + + QtUserSearchFieldsPage + + + + Nickname: + + + + + + First name: + + + + + + Last name: + + + + + + E-Mail: + + + + + + Fetching search fields + + + + + QtUserSearchFirstPage + + + + Add a user + + + + + + I'd like to search my server + + + + + + I'd like to search another server: + + + + + + Add another user to your contact list. If you know their address you can add them directly, or you can search for them. + + + + + + I know their address: + + + + + QtUserSearchWizard + + + + Find User + + + + + Swift::ChatListModel + + + Bookmarked Rooms + + + + + Swift::QtAboutWidget + + + About %1 + + + + + Built with Qt %1 + + + + + Running with Qt %1 + + + + + View License + + + + + Swift::QtAvatarWidget + + + No picture + + + + + Select picture ... + + + + + Clear picture + + + + + Select picture + + + + + Image Files (*.png *.jpg *.gif) + + + + + Error + + + + + The selected picture is in an unrecognized format + + + + + Swift::QtBookmarkDetailWindow + + + Bookmark not valid + + + + + You must specify a valid room address (e.g. myroom@chats.example.com). + + + + + Swift::QtChatListWindow + + + + Add New Bookmark + + + + + Edit Bookmark + + + + + Remove Bookmark + + + + + Swift::QtChatView + + + Clear log + + + + + You are about to clear the contents of your chat log. + + + + + Are you sure? + + + + + Swift::QtChatWindow + + + This message has not been received by your server yet. + + + + + This message may not have been transmitted. + + + + + Couldn't send message: %1 + + + + + Swift::QtContactEditWidget + + + Name: + + + + + Groups: + + + + + New Group: + + + + + Swift::QtContactEditWindow + + + Edit contact + + + + + Remove contact + + + + + Ok + + + + + Confirm contact deletion + + + + + Are you sure you want to delete this contact? + + + + + This will remove the contact '%1' from all groups they may be in. + + + + + Swift::QtEventWindow + + + Display Notice + + + + + Swift::QtLoginWindow + + + User address: + + + + + + User address - looks like someuser@someserver.com + + + + + Example: alice@wonderland.lit + + + + + Password: + + + + + + Click if you have a personal certificate used for login to the service. + + + + + + Connect + + + + + Remember Password? + + + + + Login Automatically? + + + + + &Swift + + + + + &General + + + + + &About %1 + + + + + &Show Debug Console + + + + + &Play Sounds + + + + + Show &Notifications + + + + + &Quit + + + + + Remove profile + + + + + Remove the profile '%1'? + + + + + Cancel + + + + + Select an authentication certificate + + + + + The certificate presented by the server is not valid. + + + + + Would you like to permanently trust this certificate? This must only be done if you know it is correct. + + + + + Subject: %1 + + + + + SHA-1 Fingerprint: %1 + + + + + Swift::QtMUCSearchWindow + + + + Searching + + + + + Swift::QtMainWindow + + + &Contacts + + + + + &Notices + + + + + C&hats + + + + + &View + + + + + Show offline contacts + + + + + &Actions + + + + + Edit Profile + + + + + &Enter Room + + + + + &Add Contact + + + + + Start &Chat + + + + + &Sign Out + + + + + Notices + + + + + Swift::QtNameWidget + + + (No Nickname Set) + + + + + Show Nickname + + + + + Show Address + + + + + Edit Profile + + + + + Swift::QtProfileWindow + + + Edit Profile + + + + + Nickname: + + + + + Save + + + + + Swift::QtStatusWidget + + + Connecting + + + + + (No message) + + + + + Swift::QtSubscriptionRequestWindow + + + You have already replied to this request + + + + + Ok + + + + + Yes + + + + + No + + + + + Defer + + + + + Swift::QtTreeWidget + + + Edit + + + + + Rename + + + + + Rename group + + + + + New name for %1 + + + + + Swift::QtUserSearchFirstPage + + + Chat to another user + + + + + %1. If you know their address you can enter it directly, or you can search for them. + + + + + Add another user to your contact list + + + + + Swift::QtUserSearchWindow + + + Add Contact + + + + + Chat to User + + + + + How would you like to find the user to add? + + + + + How would you like to find the user to chat to? + + + + + Error while searching + + + + + This server doesn't support searching for users. + + + + + Swift::QtWebView + + + Clear + + + + + Swift::QtXMLConsoleWidget + + + Console + + + + + Trace input/output + + + + + Clear + + + + + Debug Console + + + + + <!-- IN --> + + + + + <!-- OUT --> + + + + diff --git a/Swift/Translations/swift_nl.ts b/Swift/Translations/swift_nl.ts new file mode 100644 index 0000000..f6d6220 --- /dev/null +++ b/Swift/Translations/swift_nl.ts @@ -0,0 +1,1290 @@ + + + +UTF-8 + + + + + Starting chat with %1% in chatroom %2% + Conversatie begonnen met %1% in kamer %2% + + + + Starting chat with %1% - %2% + Conversatie begonnen met %1% - %2% + + + + me + ik + + + + %1% has gone offline + %1% is offline gegaan + + + + %1% has become available + %1% is beschikbaar geworden + + + + %1% has gone away + %1% is afwezig + + + + %1% is now busy + %1% is nu bezet + + + + The day is now %1% + Vandaag is nu %1% + + + + Error sending message + Fout tijdens het versturen van bericht + + + + Bad request + Ongeldig verzoek + + + + Conflict + Conflict + + + + This feature is not implemented + Deze functie is niet geïmplementeerd + + + + Forbidden + Verboden + + + + Recipient can no longer be contacted + Begunstigde is onbereikbaar + + + + Internal server error + Interne serverfout + + + + Item not found + Element niet gevonden + + + + JID Malformed + JID misvormd + + + + Message was rejected + Bericht geweigerd + + + + Not allowed + Niet toegelaten + + + + Not authorized + Niet toegestaan + + + + Payment is required + Betaling is vereist + + + + Recipient is unavailable + Begunstigde is niet beschikbaar + + + + Redirect + Omleiding + + + + Registration required + Registratie vereist + + + + Recipient's server not found + Server begunstigde niet gevonden + + + + Remote server timeout + Server time-out + + + + The server is low on resources + De server heeft een tekort aan bronnen + + + + The service is unavailable + De server is niet beschikbaar + + + + A subscription is required + Inschrijving is vereist + + + + Undefined condition + Onbekende fout + + + + Unexpected request + Onverwacht verzoek + + + + Room %1% is not responding. This operation may never complete. + Kamer %1% antwoordt niet. Deze operatie kan mogelijk nooit voltooien. + + + + No nickname specified + Geen roepnaam gespecifieerd + + + + A password needed + Wachtwoord vereist + + + + You are banned from the room + U bent verbannen uit de kamer + + + + The room is full + De kamer is vol + + + + The room does not exist + Deze kamer bestaat niet + + + + Unable to enter this room + Kan deze kamer niet betreden + + + + Unable to enter this room as %1%, retrying as %2% + Kan deze kamer niet betreden als %1%; als %2% opniew aan het proberen + + + + Only members may enter + Enkel leden mogen deze kamer betreden + + + + %1% has entered the room as a %2%. + %1% heeft de kamer betreden als %2%. + + + + %1% has entered the room. + %1% heeft de kamer betreden. + + + + moderator + moderator + + + + participant + deelnemer + + + + visitor + bezoeker + + + + The room subject is now: %1% + Het onderwerp van deze kamer is nu: %1% + + + + %1% is now a %2% + %1% is nu een %2% + + + + Moderators + Moderators + + + + Participants + Deelnemers + + + + Visitors + Bezoekers + + + + Occupants + Bewoners + + + + Trying to enter room %1% + Aan het proberen om de kamer %1% te betreden + + + + %1% have left then returned to the room + %1% hebben de kamer verlaten en terug betreden + + + + %1% has left then returned to the room + %1% heeft de kamer verlaten en terug betreden + + + + + %1% has left the room + %1% heeft de kamer verlaten + + + + You have entered room %1% as a %2%. + U heeft de kamer %1% als %2% betreden. + + + + You have left the room + U heeft de kamer verlaten + + + + + and + en + + + + %1% have entered the room + %1% hebben de kamer betreden + + + + %1% has entered the room + %1% heeft de kamer betreden + + + + %1% have entered then left the room + %1% hebben de kamer betreden en terug verlaten + + + + %1% has entered then left the room + %1% heeft de kamer betreden en terug verlaten + + + + %1% have left the room + %1% hebben de kamer verlaten + + + + Unknown Error + Onbekende fout + + + + Unable to find server + Kan server niet vinden + + + + Error connecting to server + Fout tijdens het verbinden met de server + + + + Error while receiving server data + Fout tijdens het ontvangen van gegevens + + + + Error while sending data to the server + Fout tijdens het verzenden van gegevens + + + + Error parsing server data + Fout tijdens het ontleden van gegevens + + + + Login/password invalid + Gebruikersnaam/wachtwoord ongeldig + + + + Error while compressing stream + Fout tijdens het comprimeren + + + + Server verification failed + Serververificatie gefaald + + + + Authentication mechanisms not supported + Authenticatiemechanismen niet ondersteund + + + + Unexpected response + Onverwacht antwoord + + + + Error binding resource + Fout tijdens het binden van de resource + + + + Error starting session + Fout bij het starten van de sessie + + + + Stream error + Stroomfout + + + + Encryption error + Beveiligingsfout + + + + Error loading certificate (Invalid password?) + Fout bij het laden van het certificaat (Ongeldig wachtwoord?) + + + + Certificate not authorized + Certificaat heeft geen toestemming + + + + Unknown certificate + Onbekend certificaat + + + + Certificate has expired + Certificaat is verstreken + + + + Certificate is not yet valid + Certificaat is nog niet geldig + + + + Certificate is self-signed + Certificaat is zelfondertekend + + + + Certificate has been rejected + Certificaat werd afgewezen + + + + Certificate is not trusted + Certificaat wordt niet vertrouwd + + + + Certificate cannot be used for encrypting your connection + Certificaat kan niet gebruikt worden om verbinding te beveiligen + + + + Certificate path length constraint exceeded + Padlengte certificaat overschreden + + + + Invalid certificate signature + Certificaat heeft ongeldige handtekening + + + + Invalid Certificate Authority + Ongeldige certificeringsinstantie + + + + Certificate does not match the host identity + Certificaat komt niet overeen met identiteit + + + + Certificate error + Certificaatfout + + + + Reconnect to %1% failed: %2%. Will retry in %3% seconds. + Herverbinding met %1% mislukt: %2%. Zal opnieuw proberen binnen %3% seconden. + + + + Disconnected from %1%: %2%. + Verbinding met %1% verbroken: %2%. + + + + + + Contacts + Contacten + + + + Server %1% rejected contact list change to item '%2%' + Server %1% heeft de aanpassing van contact '%2' geweigerd + + + + + Available + Beschikbaar + + + + + Away + Afwezig + + + + Busy + Bezet + + + + Offline + Offline + + + + QObject + + + No rooms found + Geen kamers gevonden + + + + QtBookmarkDetailWindow + + + + Edit Bookmark Details + Bladwijzerdetails Aanpassen + + + + + Bookmark Name: + Naam Bladwijzer: + + + + + Your Nickname: + Uw Roepnaam: + + + + + Room password: + Wachtwoord Kamer: + + + + + Join automatically + Automatisch betreden + + + + + Room Address: + Adres Kamer: + + + + QtJoinMUCWindow + + + + Room: + Kamer: + + + + + Search ... + Zoek ... + + + + + Nickname: + Roepnaam: + + + + + + Enter Room + Kamer Betreden + + + + + Enter automatically in future + Automatisch Betreden + + + + QtMUCSearchWindow + + + + Search Room + Zoek Kamer + + + + + Service: + Dienst: + + + + + Cancel + Annuleren + + + + + Ok + Ok + + + + + List rooms + Kamerlijst + + + + QtUserSearchFieldsPage + + + + Nickname: + Roepnaam: + + + + + First name: + Voornaam: + + + + + Last name: + Familienaam: + + + + + E-Mail: + E-Mail: + + + + + Fetching search fields + Gegevens aan het ophalen + + + + QtUserSearchFirstPage + + + + Add a user + Gebruiker toevoegen + + + + + Add another user to your contact list. If you know their address you can add them directly, or you can search for them. + Voeg een andere gebruiker aan je contactlijst toe. Indien u zijn/haar JID kent kan u hem/haar onmiddelijk toevoegen; anders kan u hem/haar zoeken. + + + + + I'd like to search my server + Ik wil mijn server doorzoeken + + + + + I'd like to search another server: + Ik wil een andere server doorzoeken: + + + + + I know their address: + Ik ken het adres: + + + + QtUserSearchWizard + + + + Find User + Zoek Gebruiker + + + + Swift::ChatListModel + + + Bookmarked Rooms + Bladwijzers + + + + Swift::QtAboutWidget + + + About %1 + Over %1 + + + + Built with Qt %1 + Gebouwd met Qt %1 + + + + Running with Qt %1 + Actief met Qt %1 + + + + View License + Bekijk Licentie + + + + Swift::QtAvatarWidget + + + No picture + Geen +Afbeelding + + + + Select picture ... + Selecteer afbeelding ... + + + + Clear picture + Verwijder afbeelding + + + + Select picture + Selecteer afbeelding + + + + Image Files (*.png *.jpg *.gif) + Afbeeldingen (*.png *.jpg *.gif) + + + + Error + Fout + + + + The selected picture is in an unrecognized format + De geselecteerde afbeelding is in een ongekend formaat + + + + Swift::QtBookmarkDetailWindow + + + Bookmark not valid + Bladwijzer ongeldig + + + + You must specify a valid room address (e.g. myroom@chats.example.com). + Specifieer een geldige kamer (bv. mijnkamer@kamers.voorbeeld.com). + + + + Swift::QtChatListWindow + + + + Add New Bookmark + Nieuwe Bladwijzer + + + + Edit Bookmark + Bewerk Bladwijzer + + + + Remove Bookmark + Verwijder Bladwijzer + + + + Swift::QtChatView + + + Clear log + Inhoud wissen + + + + You are about to clear the contents of your chat log. + De inhoud van dit venster zal gewist worden. + + + + Are you sure? + Bent u zeker? + + + + Swift::QtChatWindow + + + This message has not been received by your server yet. + Deze boodschap werd nog niet door uw server ontvangen. + + + + This message may not have been transmitted. + Dit bericht kan mogelijk niet verzonden zijn. + + + + Couldn't send message: %1 + Kon boodschap niet verzenden: %1 + + + + Swift::QtContactEditWidget + + + Name: + Naam: + + + + Groups: + Groupen: + + + + New Group: + Nieuwe Groep: + + + + Swift::QtContactEditWindow + + + Edit contact + Contact bewerken + + + + Remove contact + Contact verwijderen + + + + Ok + Ok + + + + Confirm contact deletion + Bevestig verwijderen van contact + + + + Are you sure you want to delete this contact? + Bent u zeker dat u diet contact wil verwijderen? + + + + This will remove the contact '%1' from all groups they may be in. + Dit zal het contact '%1' uit alle groepen verwijderen waar deze zich in bevindt. + + + + Swift::QtEventWindow + + + Display Notice + Toon Boodschap + + + + Swift::QtLoginWindow + + + User address: + Gebruikersadres: + + + + + User address - looks like someuser@someserver.com + Gebruikersadres van de vorm iemand@ergens.com + + + + Example: alice@wonderland.lit + Voorbeeld: alice@wonderland.lit + + + + Password: + Wachtwoord: + + + + + Click if you have a personal certificate used for login to the service. + Klik hier indien u een persoonlijk certificaat gekregen heeft om in te loggen. + + + + + Connect + Verbinden + + + + Remember Password? + Wachtwoord Onthouden? + + + + Login Automatically? + Automatisch Inloggen? + + + + &Swift + &Swift + + + + &General + &Algemeen + + + + &About %1 + &Over %1 + + + + &Show Debug Console + Toon &Debug Console + + + + &Play Sounds + &Geluid Aan + + + + Show &Notifications + Toon &Schermboodschappen + + + + &Quit + &Afsluiten + + + + Remove profile + Verwijder profiel + + + + Remove the profile '%1'? + Profiel '%1' verwijderen? + + + + Cancel + Annuleren + + + + Select an authentication certificate + Selecteer een authenticatiecertificaat + + + + The certificate presented by the server is not valid. + Het certificaat aangeboden door de server is ongeldig. + + + + Would you like to permanently trust this certificate? This must only be done if you know it is correct. + Wilt u dit certificaat permanent vertrouwen? Dit mag enkel gedaan worden als u zeker bent dat het certificaat juist is. + + + + Subject: %1 + Onderwerp: %1 + + + + SHA-1 Fingerprint: %1 + SHA-1 Vingerafdruk: %1 + + + + Swift::QtMUCSearchWindow + + + + Searching + Zoeken + + + + Swift::QtMainWindow + + + &Contacts + &Contacten + + + + &Notices + &Boodschappen + + + + C&hats + C&onversaties + + + + &View + &Beeld + + + + Show offline contacts + Toon offline contacten + + + + &Actions + &Acties + + + + Edit Profile + Bewerk Profiel + + + + &Enter Room + &Kamer Betreden + + + + &Add Contact + Contact &Toevoegen + + + + Start &Chat + &Conversatie Starten + + + + &Sign Out + &Afmelden + + + + Notices + Boodschappen + + + + Swift::QtNameWidget + + + (No Nickname Set) + (Geen Roepnaam Ingesteld) + + + + Show Nickname + Toon Roepnaam + + + + Show Address + Toon Gebruikersadres + + + + Edit Profile + Bewerk Profiel + + + + Swift::QtProfileWindow + + + Edit Profile + Bewerk Profiel + + + + Nickname: + Roepnaam: + + + + Save + Bewaar + + + + Swift::QtStatusWidget + + + Connecting + Aan het verbinden + + + + (No message) + (Geen boodschap) + + + + Swift::QtSubscriptionRequestWindow + + + You have already replied to this request + Dit verzoek is reeds beantwoord + + + + Ok + Ok + + + + Yes + Ja + + + + No + Neen + + + + Defer + Uitstellen + + + + Swift::QtTreeWidget + + + Edit + Bewerk + + + + Rename + Naam wijzigen + + + + Rename group + Groepsnaam wijzigen + + + + New name for %1 + Niewe naam voor %1 + + + + Swift::QtUserSearchFirstPage + + + Chat to another user + Start conversatie met andere gebruiker + + + + %1. If you know their address you can enter it directly, or you can search for them. + %1. Indien u het adres kent kan u dit rechtstreeks invoeren, anders kan u het adres opzoeken. + + + + Add another user to your contact list + Voeg een andere gebruiker toe aan uw contactenlijst + + + + Swift::QtUserSearchWindow + + + Add Contact + Voeg Contact Toe + + + + Chat to User + Start Conversatie met Gebruiker + + + + How would you like to find the user to add? + Hoe wilt u de gebruiker toevoegen? + + + + How would you like to find the user to chat to? + Hoe wilt u de gebruiker contacteren? + + + + Error while searching + Fout tijdens zoeken + + + + This server doesn't support searching for users. + Deze server ondersteunt het zoeken van gebruikers niet. + + + + Swift::QtWebView + + + Clear + Wissen + + + + Swift::QtXMLConsoleWidget + + + Console + Console + + + + Trace input/output + Toon invoer/uitvoer + + + + Clear + Wissen + + + + Debug Console + Debug Console + + + + <!-- IN --> + <!-- IN --> + + + + <!-- OUT --> + <!-- UIT --> + + + -- cgit v0.10.2-6-g49f6