server shutdown function

This commit is contained in:
Max-Wilhelm Bruker 2011-06-24 18:45:39 +02:00
parent 5e3db65846
commit a4c3d48389
33 changed files with 1410 additions and 604 deletions

View file

@ -32,15 +32,16 @@ void AbstractClient::processProtocolItem(ProtocolItem *item)
GenericEvent *genericEvent = qobject_cast<GenericEvent *>(item); GenericEvent *genericEvent = qobject_cast<GenericEvent *>(item);
if (genericEvent) { if (genericEvent) {
switch (genericEvent->getItemId()) { switch (genericEvent->getItemId()) {
case ItemId_Event_ConnectionClosed: emit connectionClosedEventReceived(qobject_cast<Event_ConnectionClosed *>(item)); break; case ItemId_Event_ConnectionClosed: emit connectionClosedEventReceived(static_cast<Event_ConnectionClosed *>(item)); break;
case ItemId_Event_AddToList: emit addToListEventReceived(qobject_cast<Event_AddToList *>(item)); break; case ItemId_Event_ServerShutdown: emit serverShutdownEventReceived(static_cast<Event_ServerShutdown *>(item)); break;
case ItemId_Event_RemoveFromList: emit removeFromListEventReceived(qobject_cast<Event_RemoveFromList *>(item)); break; case ItemId_Event_AddToList: emit addToListEventReceived(static_cast<Event_AddToList *>(item)); break;
case ItemId_Event_UserJoined: emit userJoinedEventReceived(qobject_cast<Event_UserJoined *>(item)); break; case ItemId_Event_RemoveFromList: emit removeFromListEventReceived(static_cast<Event_RemoveFromList *>(item)); break;
case ItemId_Event_UserLeft: emit userLeftEventReceived(qobject_cast<Event_UserLeft *>(item)); break; case ItemId_Event_UserJoined: emit userJoinedEventReceived(static_cast<Event_UserJoined *>(item)); break;
case ItemId_Event_ServerMessage: emit serverMessageEventReceived(qobject_cast<Event_ServerMessage *>(item)); break; case ItemId_Event_UserLeft: emit userLeftEventReceived(static_cast<Event_UserLeft *>(item)); break;
case ItemId_Event_ListRooms: emit listRoomsEventReceived(qobject_cast<Event_ListRooms *>(item)); break; case ItemId_Event_ServerMessage: emit serverMessageEventReceived(static_cast<Event_ServerMessage *>(item)); break;
case ItemId_Event_GameJoined: emit gameJoinedEventReceived(qobject_cast<Event_GameJoined *>(item)); break; case ItemId_Event_ListRooms: emit listRoomsEventReceived(static_cast<Event_ListRooms *>(item)); break;
case ItemId_Event_Message: emit messageEventReceived(qobject_cast<Event_Message *>(item)); break; case ItemId_Event_GameJoined: emit gameJoinedEventReceived(static_cast<Event_GameJoined *>(item)); break;
case ItemId_Event_Message: emit messageEventReceived(static_cast<Event_Message *>(item)); break;
} }
if (genericEvent->getReceiverMayDelete()) if (genericEvent->getReceiverMayDelete())
delete genericEvent; delete genericEvent;

View file

@ -21,6 +21,7 @@ class Event_ListRooms;
class Event_GameJoined; class Event_GameJoined;
class Event_Message; class Event_Message;
class Event_ConnectionClosed; class Event_ConnectionClosed;
class Event_ServerShutdown;
enum ClientStatus { enum ClientStatus {
StatusDisconnected, StatusDisconnected,
@ -43,6 +44,7 @@ signals:
void gameEventContainerReceived(GameEventContainer *event); void gameEventContainerReceived(GameEventContainer *event);
// Generic events // Generic events
void connectionClosedEventReceived(Event_ConnectionClosed *event); void connectionClosedEventReceived(Event_ConnectionClosed *event);
void serverShutdownEventReceived(Event_ServerShutdown *event);
void addToListEventReceived(Event_AddToList *event); void addToListEventReceived(Event_AddToList *event);
void removeFromListEventReceived(Event_RemoveFromList *event); void removeFromListEventReceived(Event_RemoveFromList *event);
void userJoinedEventReceived(Event_UserJoined *event); void userJoinedEventReceived(Event_UserJoined *event);

View file

@ -18,8 +18,9 @@ private:
ResponseCode cmdDeckDel(Command_DeckDel * /*cmd*/, CommandContainer * /*cont*/) { return RespFunctionNotAllowed; } ResponseCode cmdDeckDel(Command_DeckDel * /*cmd*/, CommandContainer * /*cont*/) { return RespFunctionNotAllowed; }
ResponseCode cmdDeckUpload(Command_DeckUpload * /*cmd*/, CommandContainer * /*cont*/) { return RespFunctionNotAllowed; } ResponseCode cmdDeckUpload(Command_DeckUpload * /*cmd*/, CommandContainer * /*cont*/) { return RespFunctionNotAllowed; }
ResponseCode cmdDeckDownload(Command_DeckDownload * /*cmd*/, CommandContainer * /*cont*/) { return RespFunctionNotAllowed; } ResponseCode cmdDeckDownload(Command_DeckDownload * /*cmd*/, CommandContainer * /*cont*/) { return RespFunctionNotAllowed; }
ResponseCode cmdUpdateServerMessage(Command_UpdateServerMessage * /*cmd*/, CommandContainer * /*cont*/) { return RespFunctionNotAllowed; }
ResponseCode cmdBanFromServer(Command_BanFromServer * /*cmd*/, CommandContainer * /*cont*/) { return RespFunctionNotAllowed; } ResponseCode cmdBanFromServer(Command_BanFromServer * /*cmd*/, CommandContainer * /*cont*/) { return RespFunctionNotAllowed; }
ResponseCode cmdShutdownServer(Command_ShutdownServer * /*cmd*/, CommandContainer * /*cont*/) { return RespFunctionNotAllowed; }
ResponseCode cmdUpdateServerMessage(Command_UpdateServerMessage * /*cmd*/, CommandContainer * /*cont*/) { return RespFunctionNotAllowed; }
public: public:
LocalServerInterface(LocalServer *_server); LocalServerInterface(LocalServer *_server);
~LocalServerInterface(); ~LocalServerInterface();

View file

@ -1,19 +1,72 @@
#include <QHBoxLayout>
#include <QVBoxLayout> #include <QVBoxLayout>
#include <QGridLayout>
#include <QPushButton> #include <QPushButton>
#include <QGroupBox> #include <QGroupBox>
#include <QMessageBox> #include <QMessageBox>
#include <QSpinBox>
#include <QLabel>
#include <QLineEdit>
#include "tab_admin.h" #include "tab_admin.h"
#include "abstractclient.h" #include "abstractclient.h"
#include "protocol_items.h" #include "protocol_items.h"
TabAdmin::TabAdmin(TabSupervisor *_tabSupervisor, AbstractClient *_client, QWidget *parent) ShutdownDialog::ShutdownDialog(QWidget *parent)
: Tab(_tabSupervisor, parent), locked(true), client(_client) : QDialog(parent)
{
QLabel *reasonLabel = new QLabel(tr("&Reason for shutdown:"));
reasonEdit = new QLineEdit;
reasonLabel->setBuddy(reasonEdit);
QLabel *minutesLabel = new QLabel(tr("&Time until shutdown (minutes):"));
minutesEdit = new QSpinBox;
minutesLabel->setBuddy(minutesEdit);
minutesEdit->setMinimum(0);
minutesEdit->setValue(5);
QPushButton *okButton = new QPushButton(tr("&OK"));
okButton->setAutoDefault(true);
okButton->setDefault(true);
connect(okButton, SIGNAL(clicked()), this, SLOT(accept()));
QPushButton *cancelButton = new QPushButton(tr("&Cancel"));
connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject()));
QHBoxLayout *buttonLayout = new QHBoxLayout;
buttonLayout->addStretch();
buttonLayout->addWidget(okButton);
buttonLayout->addWidget(cancelButton);
QGridLayout *mainLayout = new QGridLayout;
mainLayout->addWidget(reasonLabel, 0, 0);
mainLayout->addWidget(reasonEdit, 0, 1);
mainLayout->addWidget(minutesLabel, 1, 0);
mainLayout->addWidget(minutesEdit, 1, 1);
mainLayout->addLayout(buttonLayout, 2, 0, 1, 2);
setLayout(mainLayout);
setWindowTitle(tr("Shut down server"));
}
QString ShutdownDialog::getReason() const
{
return reasonEdit->text();
}
int ShutdownDialog::getMinutes() const
{
return minutesEdit->value();
}
TabAdmin::TabAdmin(TabSupervisor *_tabSupervisor, AbstractClient *_client, bool _fullAdmin, QWidget *parent)
: Tab(_tabSupervisor, parent), locked(true), client(_client), fullAdmin(_fullAdmin)
{ {
updateServerMessageButton = new QPushButton; updateServerMessageButton = new QPushButton;
connect(updateServerMessageButton, SIGNAL(clicked()), this, SLOT(actUpdateServerMessage())); connect(updateServerMessageButton, SIGNAL(clicked()), this, SLOT(actUpdateServerMessage()));
shutdownServerButton = new QPushButton;
connect(shutdownServerButton, SIGNAL(clicked()), this, SLOT(actShutdownServer()));
QVBoxLayout *vbox = new QVBoxLayout; QVBoxLayout *vbox = new QVBoxLayout;
vbox->addWidget(updateServerMessageButton); vbox->addWidget(updateServerMessageButton);
vbox->addWidget(shutdownServerButton);
vbox->addStretch(); vbox->addStretch();
adminGroupBox = new QGroupBox; adminGroupBox = new QGroupBox;
@ -38,6 +91,7 @@ TabAdmin::TabAdmin(TabSupervisor *_tabSupervisor, AbstractClient *_client, QWidg
void TabAdmin::retranslateUi() void TabAdmin::retranslateUi()
{ {
updateServerMessageButton->setText(tr("Update server &message")); updateServerMessageButton->setText(tr("Update server &message"));
shutdownServerButton->setText(tr("&Shut down server"));
adminGroupBox->setTitle(tr("Server administration functions")); adminGroupBox->setTitle(tr("Server administration functions"));
unlockButton->setText(tr("&Unlock functions")); unlockButton->setText(tr("&Unlock functions"));
@ -49,10 +103,18 @@ void TabAdmin::actUpdateServerMessage()
client->sendCommand(new Command_UpdateServerMessage()); client->sendCommand(new Command_UpdateServerMessage());
} }
void TabAdmin::actShutdownServer()
{
ShutdownDialog dlg;
if (dlg.exec())
client->sendCommand(new Command_ShutdownServer(dlg.getReason(), dlg.getMinutes()));
}
void TabAdmin::actUnlock() void TabAdmin::actUnlock()
{ {
if (QMessageBox::question(this, tr("Unlock administration functions"), tr("Do you really want to unlock the administration functions?"), QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) { if (QMessageBox::question(this, tr("Unlock administration functions"), tr("Do you really want to unlock the administration functions?"), QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) {
adminGroupBox->setEnabled(true); if (fullAdmin)
adminGroupBox->setEnabled(true);
lockButton->setEnabled(true); lockButton->setEnabled(true);
unlockButton->setEnabled(false); unlockButton->setEnabled(false);
locked = false; locked = false;
@ -61,7 +123,8 @@ void TabAdmin::actUnlock()
void TabAdmin::actLock() void TabAdmin::actLock()
{ {
adminGroupBox->setEnabled(false); if (fullAdmin)
adminGroupBox->setEnabled(false);
lockButton->setEnabled(false); lockButton->setEnabled(false);
unlockButton->setEnabled(true); unlockButton->setEnabled(true);
locked = true; locked = true;

View file

@ -2,27 +2,43 @@
#define TAB_ADMIN_H #define TAB_ADMIN_H
#include "tab.h" #include "tab.h"
#include <QDialog>
class AbstractClient; class AbstractClient;
class QGroupBox; class QGroupBox;
class QPushButton; class QPushButton;
class QSpinBox;
class QLineEdit;
class ShutdownDialog : public QDialog {
Q_OBJECT
private:
QLineEdit *reasonEdit;
QSpinBox *minutesEdit;
public:
ShutdownDialog(QWidget *parent = 0);
QString getReason() const;
int getMinutes() const;
};
class TabAdmin : public Tab { class TabAdmin : public Tab {
Q_OBJECT Q_OBJECT
private: private:
bool locked; bool locked;
AbstractClient *client; AbstractClient *client;
QPushButton *updateServerMessageButton; bool fullAdmin;
QPushButton *updateServerMessageButton, *shutdownServerButton;
QGroupBox *adminGroupBox; QGroupBox *adminGroupBox;
QPushButton *unlockButton, *lockButton; QPushButton *unlockButton, *lockButton;
private slots: private slots:
void actUpdateServerMessage(); void actUpdateServerMessage();
void actShutdownServer();
void actUnlock(); void actUnlock();
void actLock(); void actLock();
public: public:
TabAdmin(TabSupervisor *_tabSupervisor, AbstractClient *_client, QWidget *parent = 0); TabAdmin(TabSupervisor *_tabSupervisor, AbstractClient *_client, bool _fullAdmin, QWidget *parent = 0);
void retranslateUi(); void retranslateUi();
QString getTabText() const { return tr("Administration"); } QString getTabText() const { return tr("Administration"); }
bool getLocked() const { return locked; } bool getLocked() const { return locked; }

View file

@ -135,8 +135,8 @@ void TabSupervisor::start(AbstractClient *_client, ServerInfo_User *userInfo)
} else } else
tabDeckStorage = 0; tabDeckStorage = 0;
if (userInfo->getUserLevel() & ServerInfo_User::IsAdmin) { if (userInfo->getUserLevel() & ServerInfo_User::IsModerator) {
tabAdmin = new TabAdmin(this, client); tabAdmin = new TabAdmin(this, client, (userInfo->getUserLevel() & ServerInfo_User::IsAdmin));
myAddTab(tabAdmin); myAddTab(tabAdmin);
} else } else
tabAdmin = 0; tabAdmin = 0;

View file

@ -56,11 +56,18 @@ void MainWindow::processConnectionClosedEvent(Event_ConnectionClosed *event)
reasonStr = tr("There are too many concurrent connections from your address."); reasonStr = tr("There are too many concurrent connections from your address.");
else if (reason == "banned") else if (reason == "banned")
reasonStr = tr("Banned by moderator."); reasonStr = tr("Banned by moderator.");
else if (reason == "server_shutdown")
reasonStr = tr("Scheduled server shutdown.");
else else
reasonStr = tr("Unknown reason."); reasonStr = tr("Unknown reason.");
QMessageBox::critical(this, tr("Connection closed"), tr("The server has terminated your connection.\nReason: %1").arg(reasonStr)); QMessageBox::critical(this, tr("Connection closed"), tr("The server has terminated your connection.\nReason: %1").arg(reasonStr));
} }
void MainWindow::processServerShutdownEvent(Event_ServerShutdown *event)
{
QMessageBox::information(this, tr("Scheduled server shutdown"), tr("The server is going to be restarted in %n minute(s).\nAll running games will be lost.\nReason for shutdown: %1", "", event->getMinutes()).arg(event->getReason()));
}
void MainWindow::statusChanged(ClientStatus _status) void MainWindow::statusChanged(ClientStatus _status)
{ {
setClientStatusTitle(); setClientStatusTitle();
@ -290,6 +297,7 @@ MainWindow::MainWindow(QWidget *parent)
client = new RemoteClient(this); client = new RemoteClient(this);
connect(client, SIGNAL(connectionClosedEventReceived(Event_ConnectionClosed *)), this, SLOT(processConnectionClosedEvent(Event_ConnectionClosed *))); connect(client, SIGNAL(connectionClosedEventReceived(Event_ConnectionClosed *)), this, SLOT(processConnectionClosedEvent(Event_ConnectionClosed *)));
connect(client, SIGNAL(serverShutdownEventReceived(Event_ServerShutdown *)), this, SLOT(processServerShutdownEvent(Event_ServerShutdown *)));
connect(client, SIGNAL(serverError(ResponseCode)), this, SLOT(serverError(ResponseCode))); connect(client, SIGNAL(serverError(ResponseCode)), this, SLOT(serverError(ResponseCode)));
connect(client, SIGNAL(socketError(const QString &)), this, SLOT(socketError(const QString &))); connect(client, SIGNAL(socketError(const QString &)), this, SLOT(socketError(const QString &)));
connect(client, SIGNAL(serverTimeout()), this, SLOT(serverTimeout())); connect(client, SIGNAL(serverTimeout()), this, SLOT(serverTimeout()));

View file

@ -36,6 +36,7 @@ private slots:
void updateTabMenu(QMenu *menu); void updateTabMenu(QMenu *menu);
void statusChanged(ClientStatus _status); void statusChanged(ClientStatus _status);
void processConnectionClosedEvent(Event_ConnectionClosed *event); void processConnectionClosedEvent(Event_ConnectionClosed *event);
void processServerShutdownEvent(Event_ServerShutdown *event);
void serverTimeout(); void serverTimeout();
void serverError(ResponseCode r); void serverError(ResponseCode r);
void socketError(const QString &errorStr); void socketError(const QString &errorStr);

View file

@ -1390,216 +1390,237 @@
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="60"/> <location filename="../src/window_main.cpp" line="60"/>
<source>Scheduled server shutdown.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/window_main.cpp" line="62"/>
<source>Unknown reason.</source> <source>Unknown reason.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="61"/> <location filename="../src/window_main.cpp" line="63"/>
<source>Connection closed</source> <source>Connection closed</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="61"/> <location filename="../src/window_main.cpp" line="63"/>
<source>The server has terminated your connection. <source>The server has terminated your connection.
Reason: %1</source> Reason: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="110"/> <location filename="../src/window_main.cpp" line="68"/>
<source>Scheduled server shutdown</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location filename="../src/window_main.cpp" line="68"/>
<source>The server is going to be restarted in %n minute(s).
All running games will be lost.
Reason for shutdown: %1</source>
<translation type="unfinished">
<numerusform></numerusform>
<numerusform></numerusform>
<numerusform></numerusform>
</translation>
</message>
<message>
<location filename="../src/window_main.cpp" line="117"/>
<source>Number of players</source> <source>Number of players</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="110"/> <location filename="../src/window_main.cpp" line="117"/>
<source>Please enter the number of players.</source> <source>Please enter the number of players.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="119"/> <location filename="../src/window_main.cpp" line="126"/>
<location filename="../src/window_main.cpp" line="125"/> <location filename="../src/window_main.cpp" line="132"/>
<source>Player %1</source> <source>Player %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="170"/> <location filename="../src/window_main.cpp" line="177"/>
<source>About Cockatrice</source> <source>About Cockatrice</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="172"/> <location filename="../src/window_main.cpp" line="179"/>
<source>Version %1</source> <source>Version %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="173"/> <location filename="../src/window_main.cpp" line="180"/>
<source>Authors:</source> <source>Authors:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="174"/> <location filename="../src/window_main.cpp" line="181"/>
<source>Translators:</source> <source>Translators:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="175"/> <location filename="../src/window_main.cpp" line="182"/>
<source>Spanish:</source> <source>Spanish:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="176"/> <location filename="../src/window_main.cpp" line="183"/>
<source>Portugese (Portugal):</source> <source>Portugese (Portugal):</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="177"/> <location filename="../src/window_main.cpp" line="184"/>
<source>Portugese (Brazil):</source> <source>Portugese (Brazil):</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="178"/> <location filename="../src/window_main.cpp" line="185"/>
<source>French:</source> <source>French:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="179"/> <location filename="../src/window_main.cpp" line="186"/>
<source>Japanese:</source> <source>Japanese:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="180"/> <location filename="../src/window_main.cpp" line="187"/>
<source>Russian:</source> <source>Russian:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="181"/> <location filename="../src/window_main.cpp" line="188"/>
<source>Czech:</source> <source>Czech:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="182"/> <location filename="../src/window_main.cpp" line="189"/>
<source>Slovak:</source> <source>Slovak:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="188"/>
<location filename="../src/window_main.cpp" line="194"/>
<location filename="../src/window_main.cpp" line="195"/> <location filename="../src/window_main.cpp" line="195"/>
<location filename="../src/window_main.cpp" line="201"/>
<location filename="../src/window_main.cpp" line="202"/> <location filename="../src/window_main.cpp" line="202"/>
<location filename="../src/window_main.cpp" line="208"/> <location filename="../src/window_main.cpp" line="209"/>
<location filename="../src/window_main.cpp" line="210"/> <location filename="../src/window_main.cpp" line="215"/>
<location filename="../src/window_main.cpp" line="217"/>
<source>Error</source> <source>Error</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="188"/> <location filename="../src/window_main.cpp" line="195"/>
<source>Server timeout</source> <source>Server timeout</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="194"/> <location filename="../src/window_main.cpp" line="201"/>
<source>Invalid login data.</source> <source>Invalid login data.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="195"/> <location filename="../src/window_main.cpp" line="202"/>
<source>There is already an active session using this user name. <source>There is already an active session using this user name.
Please close that session first and re-login.</source> Please close that session first and re-login.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="202"/> <location filename="../src/window_main.cpp" line="209"/>
<source>Socket error: %1</source> <source>Socket error: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="208"/> <location filename="../src/window_main.cpp" line="215"/>
<source>You are trying to connect to an obsolete server. Please downgrade your Cockatrice version or connect to a suitable server. <source>You are trying to connect to an obsolete server. Please downgrade your Cockatrice version or connect to a suitable server.
Local version is %1, remote version is %2.</source> Local version is %1, remote version is %2.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="210"/> <location filename="../src/window_main.cpp" line="217"/>
<source>Your Cockatrice client is obsolete. Please update your Cockatrice version. <source>Your Cockatrice client is obsolete. Please update your Cockatrice version.
Local version is %1, remote version is %2.</source> Local version is %1, remote version is %2.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="216"/> <location filename="../src/window_main.cpp" line="223"/>
<source>Connecting to %1...</source> <source>Connecting to %1...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="217"/> <location filename="../src/window_main.cpp" line="224"/>
<source>Disconnected</source> <source>Disconnected</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="218"/> <location filename="../src/window_main.cpp" line="225"/>
<source>Logged in at %1</source> <source>Logged in at %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="227"/> <location filename="../src/window_main.cpp" line="234"/>
<source>&amp;Connect...</source> <source>&amp;Connect...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="228"/> <location filename="../src/window_main.cpp" line="235"/>
<source>&amp;Disconnect</source> <source>&amp;Disconnect</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="229"/> <location filename="../src/window_main.cpp" line="236"/>
<source>Start &amp;local game...</source> <source>Start &amp;local game...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="230"/> <location filename="../src/window_main.cpp" line="237"/>
<source>&amp;Deck editor</source> <source>&amp;Deck editor</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="231"/> <location filename="../src/window_main.cpp" line="238"/>
<source>&amp;Full screen</source> <source>&amp;Full screen</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="232"/> <location filename="../src/window_main.cpp" line="239"/>
<source>Ctrl+F</source> <source>Ctrl+F</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="233"/> <location filename="../src/window_main.cpp" line="240"/>
<source>&amp;Settings...</source> <source>&amp;Settings...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="234"/> <location filename="../src/window_main.cpp" line="241"/>
<source>&amp;Exit</source> <source>&amp;Exit</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="236"/> <location filename="../src/window_main.cpp" line="243"/>
<source>&amp;Cockatrice</source> <source>&amp;Cockatrice</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="238"/> <location filename="../src/window_main.cpp" line="245"/>
<source>&amp;About Cockatrice</source> <source>&amp;About Cockatrice</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="239"/> <location filename="../src/window_main.cpp" line="246"/>
<source>&amp;Help</source> <source>&amp;Help</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="317"/> <location filename="../src/window_main.cpp" line="325"/>
<source>Are you sure?</source> <source>Are you sure?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="317"/> <location filename="../src/window_main.cpp" line="325"/>
<source>There are still open games. Are you sure you want to quit?</source> <source>There are still open games. Are you sure you want to quit?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -2705,40 +2726,73 @@ Local version is %1, remote version is %2.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context>
<name>ShutdownDialog</name>
<message>
<location filename="../src/tab_admin.cpp" line="17"/>
<source>&amp;Reason for shutdown:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="20"/>
<source>&amp;Time until shutdown (minutes):</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="26"/>
<source>&amp;OK</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="30"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="46"/>
<source>Shut down server</source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>TabAdmin</name> <name>TabAdmin</name>
<message> <message>
<location filename="../src/tab_admin.cpp" line="40"/> <location filename="../src/tab_admin.cpp" line="93"/>
<source>Update server &amp;message</source> <source>Update server &amp;message</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="41"/> <location filename="../src/tab_admin.cpp" line="94"/>
<source>&amp;Shut down server</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="95"/>
<source>Server administration functions</source> <source>Server administration functions</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="43"/> <location filename="../src/tab_admin.cpp" line="97"/>
<source>&amp;Unlock functions</source> <source>&amp;Unlock functions</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="44"/> <location filename="../src/tab_admin.cpp" line="98"/>
<source>&amp;Lock functions</source> <source>&amp;Lock functions</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="54"/> <location filename="../src/tab_admin.cpp" line="115"/>
<source>Unlock administration functions</source> <source>Unlock administration functions</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="54"/> <location filename="../src/tab_admin.cpp" line="115"/>
<source>Do you really want to unlock the administration functions?</source> <source>Do you really want to unlock the administration functions?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.h" line="27"/> <location filename="../src/tab_admin.h" line="43"/>
<source>Administration</source> <source>Administration</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View file

@ -2140,138 +2140,162 @@
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="60"/> <location filename="../src/window_main.cpp" line="60"/>
<source>Scheduled server shutdown.</source>
<translation>Planmäßige Serverabschaltung.</translation>
</message>
<message>
<location filename="../src/window_main.cpp" line="62"/>
<source>Unknown reason.</source> <source>Unknown reason.</source>
<translation>Unbekannter Grund.</translation> <translation>Unbekannter Grund.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="61"/> <location filename="../src/window_main.cpp" line="63"/>
<source>Connection closed</source> <source>Connection closed</source>
<translation>Verbindung geschlossen</translation> <translation>Verbindung geschlossen</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="61"/> <location filename="../src/window_main.cpp" line="63"/>
<source>The server has terminated your connection. <source>The server has terminated your connection.
Reason: %1</source> Reason: %1</source>
<translation>Der Server hat Ihre Verbindung beendet. <translation>Der Server hat Ihre Verbindung beendet.
Grund: %1</translation> Grund: %1</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="110"/> <location filename="../src/window_main.cpp" line="68"/>
<source>Scheduled server shutdown</source>
<translation>Planmäßige Serverabschaltung</translation>
</message>
<message numerus="yes">
<location filename="../src/window_main.cpp" line="68"/>
<source>The server is going to be restarted in %n minute(s).
All running games will be lost.
Reason for shutdown: %1</source>
<translation>
<numerusform>Der Server wird in %n Minute neu gestartet.
Alle laufenden Spiele werden beendet.
Grund für die Abschaltung: %1</numerusform>
<numerusform>Der Server wird in %n Minuten neu gestartet.
Alle laufenden Spiele werden beendet.
Grund für die Abschaltung: %1</numerusform>
</translation>
</message>
<message>
<location filename="../src/window_main.cpp" line="117"/>
<source>Number of players</source> <source>Number of players</source>
<translation>Spieleranzahl</translation> <translation>Spieleranzahl</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="110"/> <location filename="../src/window_main.cpp" line="117"/>
<source>Please enter the number of players.</source> <source>Please enter the number of players.</source>
<translation>Bitte die Spieleranzahl eingeben:</translation> <translation>Bitte die Spieleranzahl eingeben:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="119"/> <location filename="../src/window_main.cpp" line="126"/>
<location filename="../src/window_main.cpp" line="125"/> <location filename="../src/window_main.cpp" line="132"/>
<source>Player %1</source> <source>Player %1</source>
<translation>Spieler %1</translation> <translation>Spieler %1</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="170"/> <location filename="../src/window_main.cpp" line="177"/>
<source>About Cockatrice</source> <source>About Cockatrice</source>
<translation>Über Cockatrice</translation> <translation>Über Cockatrice</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="172"/> <location filename="../src/window_main.cpp" line="179"/>
<source>Version %1</source> <source>Version %1</source>
<translation>Version %1</translation> <translation>Version %1</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="173"/> <location filename="../src/window_main.cpp" line="180"/>
<source>Authors:</source> <source>Authors:</source>
<translation>Autoren:</translation> <translation>Autoren:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="174"/> <location filename="../src/window_main.cpp" line="181"/>
<source>Translators:</source> <source>Translators:</source>
<translation>Übersetzer:</translation> <translation>Übersetzer:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="175"/> <location filename="../src/window_main.cpp" line="182"/>
<source>Spanish:</source> <source>Spanish:</source>
<translation>Spanisch:</translation> <translation>Spanisch:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="176"/> <location filename="../src/window_main.cpp" line="183"/>
<source>Portugese (Portugal):</source> <source>Portugese (Portugal):</source>
<translation>Portugiesisch (Portugal):</translation> <translation>Portugiesisch (Portugal):</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="177"/> <location filename="../src/window_main.cpp" line="184"/>
<source>Portugese (Brazil):</source> <source>Portugese (Brazil):</source>
<translation>Portugiesisch (Brasilien):</translation> <translation>Portugiesisch (Brasilien):</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="178"/> <location filename="../src/window_main.cpp" line="185"/>
<source>French:</source> <source>French:</source>
<translation>Französisch:</translation> <translation>Französisch:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="179"/> <location filename="../src/window_main.cpp" line="186"/>
<source>Japanese:</source> <source>Japanese:</source>
<translation>Japanisch:</translation> <translation>Japanisch:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="180"/> <location filename="../src/window_main.cpp" line="187"/>
<source>Russian:</source> <source>Russian:</source>
<translation>Russisch:</translation> <translation>Russisch:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="181"/> <location filename="../src/window_main.cpp" line="188"/>
<source>Czech:</source> <source>Czech:</source>
<translation>Tschechisch:</translation> <translation>Tschechisch:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="182"/> <location filename="../src/window_main.cpp" line="189"/>
<source>Slovak:</source> <source>Slovak:</source>
<translation>Slowakisch:</translation> <translation>Slowakisch:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="188"/>
<location filename="../src/window_main.cpp" line="194"/>
<location filename="../src/window_main.cpp" line="195"/> <location filename="../src/window_main.cpp" line="195"/>
<location filename="../src/window_main.cpp" line="201"/>
<location filename="../src/window_main.cpp" line="202"/> <location filename="../src/window_main.cpp" line="202"/>
<location filename="../src/window_main.cpp" line="208"/> <location filename="../src/window_main.cpp" line="209"/>
<location filename="../src/window_main.cpp" line="210"/> <location filename="../src/window_main.cpp" line="215"/>
<location filename="../src/window_main.cpp" line="217"/>
<source>Error</source> <source>Error</source>
<translation>Fehler</translation> <translation>Fehler</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="188"/> <location filename="../src/window_main.cpp" line="195"/>
<source>Server timeout</source> <source>Server timeout</source>
<translation>Server Zeitüberschreitung</translation> <translation>Server Zeitüberschreitung</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="194"/> <location filename="../src/window_main.cpp" line="201"/>
<source>Invalid login data.</source> <source>Invalid login data.</source>
<translation>Ungültige Anmeldedaten.</translation> <translation>Ungültige Anmeldedaten.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="195"/> <location filename="../src/window_main.cpp" line="202"/>
<source>There is already an active session using this user name. <source>There is already an active session using this user name.
Please close that session first and re-login.</source> Please close that session first and re-login.</source>
<translation>Es gibt bereits eine aktive Verbindung mit diesem Benutzernamen. <translation>Es gibt bereits eine aktive Verbindung mit diesem Benutzernamen.
Bitte schließen Sie diese Verbindung zuerst und versuchen Sie es dann erneut.</translation> Bitte schließen Sie diese Verbindung zuerst und versuchen Sie es dann erneut.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="202"/> <location filename="../src/window_main.cpp" line="209"/>
<source>Socket error: %1</source> <source>Socket error: %1</source>
<translation>Netzwerkfehler: %1</translation> <translation>Netzwerkfehler: %1</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="208"/> <location filename="../src/window_main.cpp" line="215"/>
<source>You are trying to connect to an obsolete server. Please downgrade your Cockatrice version or connect to a suitable server. <source>You are trying to connect to an obsolete server. Please downgrade your Cockatrice version or connect to a suitable server.
Local version is %1, remote version is %2.</source> Local version is %1, remote version is %2.</source>
<translation>Sie versuchen sich an einem veralteten Server anzumelden. Bitte verwenden Sie eine ältere Cockatrice-Version oder melden Sie sich an einem aktuellen Server an. <translation>Sie versuchen sich an einem veralteten Server anzumelden. Bitte verwenden Sie eine ältere Cockatrice-Version oder melden Sie sich an einem aktuellen Server an.
Lokale Version ist %1, Serverversion ist %2.</translation> Lokale Version ist %1, Serverversion ist %2.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="210"/> <location filename="../src/window_main.cpp" line="217"/>
<source>Your Cockatrice client is obsolete. Please update your Cockatrice version. <source>Your Cockatrice client is obsolete. Please update your Cockatrice version.
Local version is %1, remote version is %2.</source> Local version is %1, remote version is %2.</source>
<translation>Ihr Cockatrice-Client ist veraltet. Bitte laden Sie sich die neueste Version herunter. <translation>Ihr Cockatrice-Client ist veraltet. Bitte laden Sie sich die neueste Version herunter.
@ -2282,52 +2306,52 @@ Lokale Version ist %1, Serverversion ist %2.</translation>
<translation type="obsolete">Protokollversionen stimmen nicht überein. Lokale Version: %1, Serverversion: %2.</translation> <translation type="obsolete">Protokollversionen stimmen nicht überein. Lokale Version: %1, Serverversion: %2.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="216"/> <location filename="../src/window_main.cpp" line="223"/>
<source>Connecting to %1...</source> <source>Connecting to %1...</source>
<translation>Verbinde zu %1...</translation> <translation>Verbinde zu %1...</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="217"/> <location filename="../src/window_main.cpp" line="224"/>
<source>Disconnected</source> <source>Disconnected</source>
<translation>nicht verbunden</translation> <translation>nicht verbunden</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="218"/> <location filename="../src/window_main.cpp" line="225"/>
<source>Logged in at %1</source> <source>Logged in at %1</source>
<translation>Angemeldet bei %1</translation> <translation>Angemeldet bei %1</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="227"/> <location filename="../src/window_main.cpp" line="234"/>
<source>&amp;Connect...</source> <source>&amp;Connect...</source>
<translation>&amp;Verbinden...</translation> <translation>&amp;Verbinden...</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="228"/> <location filename="../src/window_main.cpp" line="235"/>
<source>&amp;Disconnect</source> <source>&amp;Disconnect</source>
<translation>Verbindung &amp;trennen</translation> <translation>Verbindung &amp;trennen</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="229"/> <location filename="../src/window_main.cpp" line="236"/>
<source>Start &amp;local game...</source> <source>Start &amp;local game...</source>
<translation>&amp;Lokales Spiel starten...</translation> <translation>&amp;Lokales Spiel starten...</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="238"/> <location filename="../src/window_main.cpp" line="245"/>
<source>&amp;About Cockatrice</source> <source>&amp;About Cockatrice</source>
<translation>&amp;Über Cockatrice</translation> <translation>&amp;Über Cockatrice</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="239"/> <location filename="../src/window_main.cpp" line="246"/>
<source>&amp;Help</source> <source>&amp;Help</source>
<translation>&amp;Hilfe</translation> <translation>&amp;Hilfe</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="317"/> <location filename="../src/window_main.cpp" line="325"/>
<source>Are you sure?</source> <source>Are you sure?</source>
<translation>Sind Sie sicher?</translation> <translation>Sind Sie sicher?</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="317"/> <location filename="../src/window_main.cpp" line="325"/>
<source>There are still open games. Are you sure you want to quit?</source> <source>There are still open games. Are you sure you want to quit?</source>
<translation>Es gibt noch offene Spiele. Wollen Sie das Programm wirklich beenden?</translation> <translation>Es gibt noch offene Spiele. Wollen Sie das Programm wirklich beenden?</translation>
</message> </message>
@ -2344,27 +2368,27 @@ Lokale Version ist %1, Serverversion ist %2.</translation>
<translation type="obsolete">Spiel ver&amp;lassen</translation> <translation type="obsolete">Spiel ver&amp;lassen</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="230"/> <location filename="../src/window_main.cpp" line="237"/>
<source>&amp;Deck editor</source> <source>&amp;Deck editor</source>
<translation>&amp;Deck-Editor</translation> <translation>&amp;Deck-Editor</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="231"/> <location filename="../src/window_main.cpp" line="238"/>
<source>&amp;Full screen</source> <source>&amp;Full screen</source>
<translation>&amp;Vollbild</translation> <translation>&amp;Vollbild</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="232"/> <location filename="../src/window_main.cpp" line="239"/>
<source>Ctrl+F</source> <source>Ctrl+F</source>
<translation>Ctrl+F</translation> <translation>Ctrl+F</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="233"/> <location filename="../src/window_main.cpp" line="240"/>
<source>&amp;Settings...</source> <source>&amp;Settings...</source>
<translation>&amp;Einstellungen...</translation> <translation>&amp;Einstellungen...</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="234"/> <location filename="../src/window_main.cpp" line="241"/>
<source>&amp;Exit</source> <source>&amp;Exit</source>
<translation>&amp;Beenden</translation> <translation>&amp;Beenden</translation>
</message> </message>
@ -2377,7 +2401,7 @@ Lokale Version ist %1, Serverversion ist %2.</translation>
<translation type="obsolete">Esc</translation> <translation type="obsolete">Esc</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="236"/> <location filename="../src/window_main.cpp" line="243"/>
<source>&amp;Cockatrice</source> <source>&amp;Cockatrice</source>
<translation>&amp;Cockatrice</translation> <translation>&amp;Cockatrice</translation>
</message> </message>
@ -4021,40 +4045,77 @@ Lokale Version ist %1, Serverversion ist %2.</translation>
<translation>Langer Name</translation> <translation>Langer Name</translation>
</message> </message>
</context> </context>
<context>
<name>ShutdownDialog</name>
<message>
<location filename="../src/tab_admin.cpp" line="17"/>
<source>&amp;Reason for shutdown:</source>
<translation>G&amp;rund für die Abschaltung:</translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="20"/>
<source>&amp;Time until shutdown (minutes):</source>
<translation>&amp;Zeit bis zur Abschaltung (Minuten):</translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="26"/>
<source>&amp;OK</source>
<translation>&amp;OK</translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="30"/>
<source>&amp;Cancel</source>
<translation>&amp;Abbrechen</translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="46"/>
<source>Shut down server</source>
<translation>Server abschalten</translation>
</message>
</context>
<context> <context>
<name>TabAdmin</name> <name>TabAdmin</name>
<message> <message>
<location filename="../src/tab_admin.cpp" line="40"/> <location filename="../src/tab_admin.cpp" line="93"/>
<source>Update server &amp;message</source> <source>Update server &amp;message</source>
<translation>Server&amp;nachricht aktualisieren</translation> <translation>Server&amp;nachricht aktualisieren</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="41"/> <source>Shut down server</source>
<translation type="obsolete">Server abschalten</translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="94"/>
<source>&amp;Shut down server</source>
<translation>&amp;Server abschalten</translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="95"/>
<source>Server administration functions</source> <source>Server administration functions</source>
<translation>Funktionen zur Serverwartung</translation> <translation>Funktionen zur Serverwartung</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="43"/> <location filename="../src/tab_admin.cpp" line="97"/>
<source>&amp;Unlock functions</source> <source>&amp;Unlock functions</source>
<translation>&amp;Sperre aufheben</translation> <translation>&amp;Sperre aufheben</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="44"/> <location filename="../src/tab_admin.cpp" line="98"/>
<source>&amp;Lock functions</source> <source>&amp;Lock functions</source>
<translation>Funktionen s&amp;perren</translation> <translation>Funktionen s&amp;perren</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="54"/> <location filename="../src/tab_admin.cpp" line="115"/>
<source>Unlock administration functions</source> <source>Unlock administration functions</source>
<translation>Wartungsfunktionen entsperren</translation> <translation>Wartungsfunktionen entsperren</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="54"/> <location filename="../src/tab_admin.cpp" line="115"/>
<source>Do you really want to unlock the administration functions?</source> <source>Do you really want to unlock the administration functions?</source>
<translation>Möchten Sie wirklich die Sperre der Wartungsfunktionen aufheben?</translation> <translation>Möchten Sie wirklich die Sperre der Wartungsfunktionen aufheben?</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.h" line="27"/> <location filename="../src/tab_admin.h" line="43"/>
<source>Administration</source> <source>Administration</source>
<translation>Wartung</translation> <translation>Wartung</translation>
</message> </message>

View file

@ -1390,216 +1390,236 @@
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="60"/> <location filename="../src/window_main.cpp" line="60"/>
<source>Scheduled server shutdown.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/window_main.cpp" line="62"/>
<source>Unknown reason.</source> <source>Unknown reason.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="61"/> <location filename="../src/window_main.cpp" line="63"/>
<source>Connection closed</source> <source>Connection closed</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="61"/> <location filename="../src/window_main.cpp" line="63"/>
<source>The server has terminated your connection. <source>The server has terminated your connection.
Reason: %1</source> Reason: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="110"/> <location filename="../src/window_main.cpp" line="68"/>
<source>Scheduled server shutdown</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location filename="../src/window_main.cpp" line="68"/>
<source>The server is going to be restarted in %n minute(s).
All running games will be lost.
Reason for shutdown: %1</source>
<translation type="unfinished">
<numerusform></numerusform>
<numerusform></numerusform>
</translation>
</message>
<message>
<location filename="../src/window_main.cpp" line="117"/>
<source>Number of players</source> <source>Number of players</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="110"/> <location filename="../src/window_main.cpp" line="117"/>
<source>Please enter the number of players.</source> <source>Please enter the number of players.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="119"/> <location filename="../src/window_main.cpp" line="126"/>
<location filename="../src/window_main.cpp" line="125"/> <location filename="../src/window_main.cpp" line="132"/>
<source>Player %1</source> <source>Player %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="170"/> <location filename="../src/window_main.cpp" line="177"/>
<source>About Cockatrice</source> <source>About Cockatrice</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="172"/> <location filename="../src/window_main.cpp" line="179"/>
<source>Version %1</source> <source>Version %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="173"/> <location filename="../src/window_main.cpp" line="180"/>
<source>Authors:</source> <source>Authors:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="174"/> <location filename="../src/window_main.cpp" line="181"/>
<source>Translators:</source> <source>Translators:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="175"/> <location filename="../src/window_main.cpp" line="182"/>
<source>Spanish:</source> <source>Spanish:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="176"/> <location filename="../src/window_main.cpp" line="183"/>
<source>Portugese (Portugal):</source> <source>Portugese (Portugal):</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="177"/> <location filename="../src/window_main.cpp" line="184"/>
<source>Portugese (Brazil):</source> <source>Portugese (Brazil):</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="178"/> <location filename="../src/window_main.cpp" line="185"/>
<source>French:</source> <source>French:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="179"/> <location filename="../src/window_main.cpp" line="186"/>
<source>Japanese:</source> <source>Japanese:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="180"/> <location filename="../src/window_main.cpp" line="187"/>
<source>Russian:</source> <source>Russian:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="181"/> <location filename="../src/window_main.cpp" line="188"/>
<source>Czech:</source> <source>Czech:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="182"/> <location filename="../src/window_main.cpp" line="189"/>
<source>Slovak:</source> <source>Slovak:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="188"/>
<location filename="../src/window_main.cpp" line="194"/>
<location filename="../src/window_main.cpp" line="195"/> <location filename="../src/window_main.cpp" line="195"/>
<location filename="../src/window_main.cpp" line="201"/>
<location filename="../src/window_main.cpp" line="202"/> <location filename="../src/window_main.cpp" line="202"/>
<location filename="../src/window_main.cpp" line="208"/> <location filename="../src/window_main.cpp" line="209"/>
<location filename="../src/window_main.cpp" line="210"/> <location filename="../src/window_main.cpp" line="215"/>
<location filename="../src/window_main.cpp" line="217"/>
<source>Error</source> <source>Error</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="188"/> <location filename="../src/window_main.cpp" line="195"/>
<source>Server timeout</source> <source>Server timeout</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="194"/> <location filename="../src/window_main.cpp" line="201"/>
<source>Invalid login data.</source> <source>Invalid login data.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="195"/> <location filename="../src/window_main.cpp" line="202"/>
<source>There is already an active session using this user name. <source>There is already an active session using this user name.
Please close that session first and re-login.</source> Please close that session first and re-login.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="202"/> <location filename="../src/window_main.cpp" line="209"/>
<source>Socket error: %1</source> <source>Socket error: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="208"/> <location filename="../src/window_main.cpp" line="215"/>
<source>You are trying to connect to an obsolete server. Please downgrade your Cockatrice version or connect to a suitable server. <source>You are trying to connect to an obsolete server. Please downgrade your Cockatrice version or connect to a suitable server.
Local version is %1, remote version is %2.</source> Local version is %1, remote version is %2.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="210"/> <location filename="../src/window_main.cpp" line="217"/>
<source>Your Cockatrice client is obsolete. Please update your Cockatrice version. <source>Your Cockatrice client is obsolete. Please update your Cockatrice version.
Local version is %1, remote version is %2.</source> Local version is %1, remote version is %2.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="216"/> <location filename="../src/window_main.cpp" line="223"/>
<source>Connecting to %1...</source> <source>Connecting to %1...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="217"/> <location filename="../src/window_main.cpp" line="224"/>
<source>Disconnected</source> <source>Disconnected</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="218"/> <location filename="../src/window_main.cpp" line="225"/>
<source>Logged in at %1</source> <source>Logged in at %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="227"/> <location filename="../src/window_main.cpp" line="234"/>
<source>&amp;Connect...</source> <source>&amp;Connect...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="228"/> <location filename="../src/window_main.cpp" line="235"/>
<source>&amp;Disconnect</source> <source>&amp;Disconnect</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="229"/> <location filename="../src/window_main.cpp" line="236"/>
<source>Start &amp;local game...</source> <source>Start &amp;local game...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="230"/> <location filename="../src/window_main.cpp" line="237"/>
<source>&amp;Deck editor</source> <source>&amp;Deck editor</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="231"/> <location filename="../src/window_main.cpp" line="238"/>
<source>&amp;Full screen</source> <source>&amp;Full screen</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="232"/> <location filename="../src/window_main.cpp" line="239"/>
<source>Ctrl+F</source> <source>Ctrl+F</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="233"/> <location filename="../src/window_main.cpp" line="240"/>
<source>&amp;Settings...</source> <source>&amp;Settings...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="234"/> <location filename="../src/window_main.cpp" line="241"/>
<source>&amp;Exit</source> <source>&amp;Exit</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="236"/> <location filename="../src/window_main.cpp" line="243"/>
<source>&amp;Cockatrice</source> <source>&amp;Cockatrice</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="238"/> <location filename="../src/window_main.cpp" line="245"/>
<source>&amp;About Cockatrice</source> <source>&amp;About Cockatrice</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="239"/> <location filename="../src/window_main.cpp" line="246"/>
<source>&amp;Help</source> <source>&amp;Help</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="317"/> <location filename="../src/window_main.cpp" line="325"/>
<source>Are you sure?</source> <source>Are you sure?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="317"/> <location filename="../src/window_main.cpp" line="325"/>
<source>There are still open games. Are you sure you want to quit?</source> <source>There are still open games. Are you sure you want to quit?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -2712,40 +2732,73 @@ Local version is %1, remote version is %2.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context>
<name>ShutdownDialog</name>
<message>
<location filename="../src/tab_admin.cpp" line="17"/>
<source>&amp;Reason for shutdown:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="20"/>
<source>&amp;Time until shutdown (minutes):</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="26"/>
<source>&amp;OK</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="30"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="46"/>
<source>Shut down server</source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>TabAdmin</name> <name>TabAdmin</name>
<message> <message>
<location filename="../src/tab_admin.cpp" line="40"/> <location filename="../src/tab_admin.cpp" line="93"/>
<source>Update server &amp;message</source> <source>Update server &amp;message</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="41"/> <location filename="../src/tab_admin.cpp" line="94"/>
<source>&amp;Shut down server</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="95"/>
<source>Server administration functions</source> <source>Server administration functions</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="43"/> <location filename="../src/tab_admin.cpp" line="97"/>
<source>&amp;Unlock functions</source> <source>&amp;Unlock functions</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="44"/> <location filename="../src/tab_admin.cpp" line="98"/>
<source>&amp;Lock functions</source> <source>&amp;Lock functions</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="54"/> <location filename="../src/tab_admin.cpp" line="115"/>
<source>Unlock administration functions</source> <source>Unlock administration functions</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="54"/> <location filename="../src/tab_admin.cpp" line="115"/>
<source>Do you really want to unlock the administration functions?</source> <source>Do you really want to unlock the administration functions?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.h" line="27"/> <location filename="../src/tab_admin.h" line="43"/>
<source>Administration</source> <source>Administration</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View file

@ -1755,138 +1755,158 @@
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="60"/> <location filename="../src/window_main.cpp" line="60"/>
<source>Scheduled server shutdown.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/window_main.cpp" line="62"/>
<source>Unknown reason.</source> <source>Unknown reason.</source>
<translation>Motivo desconocido.</translation> <translation>Motivo desconocido.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="61"/> <location filename="../src/window_main.cpp" line="63"/>
<source>Connection closed</source> <source>Connection closed</source>
<translation>Conexión cerrada</translation> <translation>Conexión cerrada</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="61"/> <location filename="../src/window_main.cpp" line="63"/>
<source>The server has terminated your connection. <source>The server has terminated your connection.
Reason: %1</source> Reason: %1</source>
<translation>El servidor ha finalizado tu conexión. <translation>El servidor ha finalizado tu conexión.
Motivo: %1</translation> Motivo: %1</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="110"/> <location filename="../src/window_main.cpp" line="68"/>
<source>Scheduled server shutdown</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location filename="../src/window_main.cpp" line="68"/>
<source>The server is going to be restarted in %n minute(s).
All running games will be lost.
Reason for shutdown: %1</source>
<translation type="unfinished">
<numerusform></numerusform>
<numerusform></numerusform>
</translation>
</message>
<message>
<location filename="../src/window_main.cpp" line="117"/>
<source>Number of players</source> <source>Number of players</source>
<translation>Número de jugadores</translation> <translation>Número de jugadores</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="110"/> <location filename="../src/window_main.cpp" line="117"/>
<source>Please enter the number of players.</source> <source>Please enter the number of players.</source>
<translation>Por favor, introduzca el número de jugadores.</translation> <translation>Por favor, introduzca el número de jugadores.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="119"/> <location filename="../src/window_main.cpp" line="126"/>
<location filename="../src/window_main.cpp" line="125"/> <location filename="../src/window_main.cpp" line="132"/>
<source>Player %1</source> <source>Player %1</source>
<translation>Jugador %1</translation> <translation>Jugador %1</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="170"/> <location filename="../src/window_main.cpp" line="177"/>
<source>About Cockatrice</source> <source>About Cockatrice</source>
<translation>Acerca de Cockatrice</translation> <translation>Acerca de Cockatrice</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="172"/> <location filename="../src/window_main.cpp" line="179"/>
<source>Version %1</source> <source>Version %1</source>
<translation>Versión %1</translation> <translation>Versión %1</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="173"/> <location filename="../src/window_main.cpp" line="180"/>
<source>Authors:</source> <source>Authors:</source>
<translation>Autores:</translation> <translation>Autores:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="174"/> <location filename="../src/window_main.cpp" line="181"/>
<source>Translators:</source> <source>Translators:</source>
<translation>Traductores:</translation> <translation>Traductores:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="175"/> <location filename="../src/window_main.cpp" line="182"/>
<source>Spanish:</source> <source>Spanish:</source>
<translation>Español:</translation> <translation>Español:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="176"/> <location filename="../src/window_main.cpp" line="183"/>
<source>Portugese (Portugal):</source> <source>Portugese (Portugal):</source>
<translation>Portugués (Portugal):</translation> <translation>Portugués (Portugal):</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="177"/> <location filename="../src/window_main.cpp" line="184"/>
<source>Portugese (Brazil):</source> <source>Portugese (Brazil):</source>
<translation>Portugués (Brasil):</translation> <translation>Portugués (Brasil):</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="178"/> <location filename="../src/window_main.cpp" line="185"/>
<source>French:</source> <source>French:</source>
<translation>Francés:</translation> <translation>Francés:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="179"/> <location filename="../src/window_main.cpp" line="186"/>
<source>Japanese:</source> <source>Japanese:</source>
<translation>Japonés:</translation> <translation>Japonés:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="180"/> <location filename="../src/window_main.cpp" line="187"/>
<source>Russian:</source> <source>Russian:</source>
<translation>Ruso:</translation> <translation>Ruso:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="181"/> <location filename="../src/window_main.cpp" line="188"/>
<source>Czech:</source> <source>Czech:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="182"/> <location filename="../src/window_main.cpp" line="189"/>
<source>Slovak:</source> <source>Slovak:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="188"/>
<location filename="../src/window_main.cpp" line="194"/>
<location filename="../src/window_main.cpp" line="195"/> <location filename="../src/window_main.cpp" line="195"/>
<location filename="../src/window_main.cpp" line="201"/>
<location filename="../src/window_main.cpp" line="202"/> <location filename="../src/window_main.cpp" line="202"/>
<location filename="../src/window_main.cpp" line="208"/> <location filename="../src/window_main.cpp" line="209"/>
<location filename="../src/window_main.cpp" line="210"/> <location filename="../src/window_main.cpp" line="215"/>
<location filename="../src/window_main.cpp" line="217"/>
<source>Error</source> <source>Error</source>
<translation>Error</translation> <translation>Error</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="188"/> <location filename="../src/window_main.cpp" line="195"/>
<source>Server timeout</source> <source>Server timeout</source>
<translation>Tiempo de espera del servidor agotado</translation> <translation>Tiempo de espera del servidor agotado</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="194"/> <location filename="../src/window_main.cpp" line="201"/>
<source>Invalid login data.</source> <source>Invalid login data.</source>
<translation>Datos de conexión invalidos.</translation> <translation>Datos de conexión invalidos.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="195"/> <location filename="../src/window_main.cpp" line="202"/>
<source>There is already an active session using this user name. <source>There is already an active session using this user name.
Please close that session first and re-login.</source> Please close that session first and re-login.</source>
<translation>Ya existe una sesión activa usando ese nombre de usuario. <translation>Ya existe una sesión activa usando ese nombre de usuario.
Por favor, cierra esa sesión primero y reintentalo.</translation> Por favor, cierra esa sesión primero y reintentalo.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="202"/> <location filename="../src/window_main.cpp" line="209"/>
<source>Socket error: %1</source> <source>Socket error: %1</source>
<translation>Error del Socket: %1</translation> <translation>Error del Socket: %1</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="208"/> <location filename="../src/window_main.cpp" line="215"/>
<source>You are trying to connect to an obsolete server. Please downgrade your Cockatrice version or connect to a suitable server. <source>You are trying to connect to an obsolete server. Please downgrade your Cockatrice version or connect to a suitable server.
Local version is %1, remote version is %2.</source> Local version is %1, remote version is %2.</source>
<translation>Estás intentando conectar a un servidor obsoleto. Por favor, usa una versión anterior de Cockatrice o conecta a un servidor apropiado. <translation>Estás intentando conectar a un servidor obsoleto. Por favor, usa una versión anterior de Cockatrice o conecta a un servidor apropiado.
La versión local es %1, la versión remota es %2.</translation> La versión local es %1, la versión remota es %2.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="210"/> <location filename="../src/window_main.cpp" line="217"/>
<source>Your Cockatrice client is obsolete. Please update your Cockatrice version. <source>Your Cockatrice client is obsolete. Please update your Cockatrice version.
Local version is %1, remote version is %2.</source> Local version is %1, remote version is %2.</source>
<translation>Tu cliente de Cockatrice esta obsoleto. Por favor, actualiza tu versión de Cockatrice. <translation>Tu cliente de Cockatrice esta obsoleto. Por favor, actualiza tu versión de Cockatrice.
@ -1897,82 +1917,82 @@ La versión local es %1, la versión remota es %2.</translation>
<translation type="obsolete">La versión del protocolo es diferente. Version local: %1, version remota: %2.</translation> <translation type="obsolete">La versión del protocolo es diferente. Version local: %1, version remota: %2.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="216"/> <location filename="../src/window_main.cpp" line="223"/>
<source>Connecting to %1...</source> <source>Connecting to %1...</source>
<translation>Conectando a %1...</translation> <translation>Conectando a %1...</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="217"/> <location filename="../src/window_main.cpp" line="224"/>
<source>Disconnected</source> <source>Disconnected</source>
<translation>Desconectado</translation> <translation>Desconectado</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="218"/> <location filename="../src/window_main.cpp" line="225"/>
<source>Logged in at %1</source> <source>Logged in at %1</source>
<translation>Conectado en %1</translation> <translation>Conectado en %1</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="227"/> <location filename="../src/window_main.cpp" line="234"/>
<source>&amp;Connect...</source> <source>&amp;Connect...</source>
<translation>&amp;Conectar...</translation> <translation>&amp;Conectar...</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="228"/> <location filename="../src/window_main.cpp" line="235"/>
<source>&amp;Disconnect</source> <source>&amp;Disconnect</source>
<translation>&amp;Desconectar</translation> <translation>&amp;Desconectar</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="229"/> <location filename="../src/window_main.cpp" line="236"/>
<source>Start &amp;local game...</source> <source>Start &amp;local game...</source>
<translation>Empezar partida &amp;local...</translation> <translation>Empezar partida &amp;local...</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="230"/> <location filename="../src/window_main.cpp" line="237"/>
<source>&amp;Deck editor</source> <source>&amp;Deck editor</source>
<translation>Editor de &amp;mazos</translation> <translation>Editor de &amp;mazos</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="231"/> <location filename="../src/window_main.cpp" line="238"/>
<source>&amp;Full screen</source> <source>&amp;Full screen</source>
<translation>&amp;Pantalla completa</translation> <translation>&amp;Pantalla completa</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="232"/> <location filename="../src/window_main.cpp" line="239"/>
<source>Ctrl+F</source> <source>Ctrl+F</source>
<translation>CTRL+F</translation> <translation>CTRL+F</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="233"/> <location filename="../src/window_main.cpp" line="240"/>
<source>&amp;Settings...</source> <source>&amp;Settings...</source>
<translation>&amp;Preferencias...</translation> <translation>&amp;Preferencias...</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="234"/> <location filename="../src/window_main.cpp" line="241"/>
<source>&amp;Exit</source> <source>&amp;Exit</source>
<translation>&amp;Salir</translation> <translation>&amp;Salir</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="236"/> <location filename="../src/window_main.cpp" line="243"/>
<source>&amp;Cockatrice</source> <source>&amp;Cockatrice</source>
<translation>&amp;Cockatrice</translation> <translation>&amp;Cockatrice</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="238"/> <location filename="../src/window_main.cpp" line="245"/>
<source>&amp;About Cockatrice</source> <source>&amp;About Cockatrice</source>
<translation>&amp;Acerca de Cockatrice</translation> <translation>&amp;Acerca de Cockatrice</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="239"/> <location filename="../src/window_main.cpp" line="246"/>
<source>&amp;Help</source> <source>&amp;Help</source>
<translation>A&amp;yuda</translation> <translation>A&amp;yuda</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="317"/> <location filename="../src/window_main.cpp" line="325"/>
<source>Are you sure?</source> <source>Are you sure?</source>
<translation>¿Estás seguro?</translation> <translation>¿Estás seguro?</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="317"/> <location filename="../src/window_main.cpp" line="325"/>
<source>There are still open games. Are you sure you want to quit?</source> <source>There are still open games. Are you sure you want to quit?</source>
<translation>Todavía hay partidas abiertas. ¿Estás seguro que quieres salir?</translation> <translation>Todavía hay partidas abiertas. ¿Estás seguro que quieres salir?</translation>
</message> </message>
@ -3140,40 +3160,73 @@ La versión local es %1, la versión remota es %2.</translation>
<translation>Nombre largo</translation> <translation>Nombre largo</translation>
</message> </message>
</context> </context>
<context>
<name>ShutdownDialog</name>
<message>
<location filename="../src/tab_admin.cpp" line="17"/>
<source>&amp;Reason for shutdown:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="20"/>
<source>&amp;Time until shutdown (minutes):</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="26"/>
<source>&amp;OK</source>
<translation type="unfinished">&amp;Aceptar</translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="30"/>
<source>&amp;Cancel</source>
<translation type="unfinished">&amp;Cancelar</translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="46"/>
<source>Shut down server</source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>TabAdmin</name> <name>TabAdmin</name>
<message> <message>
<location filename="../src/tab_admin.cpp" line="40"/> <location filename="../src/tab_admin.cpp" line="93"/>
<source>Update server &amp;message</source> <source>Update server &amp;message</source>
<translation>Actualizar &amp;mensaje del servidor</translation> <translation>Actualizar &amp;mensaje del servidor</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="41"/> <location filename="../src/tab_admin.cpp" line="94"/>
<source>&amp;Shut down server</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="95"/>
<source>Server administration functions</source> <source>Server administration functions</source>
<translation>Funciones de administración del servidor</translation> <translation>Funciones de administración del servidor</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="43"/> <location filename="../src/tab_admin.cpp" line="97"/>
<source>&amp;Unlock functions</source> <source>&amp;Unlock functions</source>
<translation>&amp;Desbloquear funciones</translation> <translation>&amp;Desbloquear funciones</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="44"/> <location filename="../src/tab_admin.cpp" line="98"/>
<source>&amp;Lock functions</source> <source>&amp;Lock functions</source>
<translation>&amp;Bloquear funciones</translation> <translation>&amp;Bloquear funciones</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="54"/> <location filename="../src/tab_admin.cpp" line="115"/>
<source>Unlock administration functions</source> <source>Unlock administration functions</source>
<translation>Desbloquear funciones de administración</translation> <translation>Desbloquear funciones de administración</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="54"/> <location filename="../src/tab_admin.cpp" line="115"/>
<source>Do you really want to unlock the administration functions?</source> <source>Do you really want to unlock the administration functions?</source>
<translation>¿Realmente quieres desbloquear las funciones de administración?</translation> <translation>¿Realmente quieres desbloquear las funciones de administración?</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.h" line="27"/> <location filename="../src/tab_admin.h" line="43"/>
<source>Administration</source> <source>Administration</source>
<translation>Administración</translation> <translation>Administración</translation>
</message> </message>

View file

@ -1595,23 +1595,23 @@
<context> <context>
<name>MainWindow</name> <name>MainWindow</name>
<message> <message>
<location filename="../src/window_main.cpp" line="110"/> <location filename="../src/window_main.cpp" line="117"/>
<source>Number of players</source> <source>Number of players</source>
<translation>Nombre de joueurs</translation> <translation>Nombre de joueurs</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="110"/> <location filename="../src/window_main.cpp" line="117"/>
<source>Please enter the number of players.</source> <source>Please enter the number of players.</source>
<translation>Entrez s&apos;il vous plait le nombre de joueurs.</translation> <translation>Entrez s&apos;il vous plait le nombre de joueurs.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="119"/> <location filename="../src/window_main.cpp" line="126"/>
<location filename="../src/window_main.cpp" line="125"/> <location filename="../src/window_main.cpp" line="132"/>
<source>Player %1</source> <source>Player %1</source>
<translation>Joueur %1</translation> <translation>Joueur %1</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="170"/> <location filename="../src/window_main.cpp" line="177"/>
<source>About Cockatrice</source> <source>About Cockatrice</source>
<translation>à propos de Cockatrice</translation> <translation>à propos de Cockatrice</translation>
</message> </message>
@ -1620,67 +1620,67 @@
<translation type="obsolete">&lt;font size=&quot;8&quot;&gt;&lt;b&gt;Cockatrice&lt;/b&gt;&lt;/font&gt;&lt;br&gt;Version %1&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Auteurs:&lt;/b&gt;&lt;br&gt;Max-Wilhelm Bruker&lt;br&gt;Marcus Schütz&lt;br&gt;Marius van Zundert&lt;br&gt;&lt;br&gt;&lt;b&gt;Tranducteurs:&lt;/b&gt;&lt;br&gt;Espagnol: Gocho&lt;br&gt;Portugais: Milton Gonçalves&lt;br&gt;Portugais: Milton Gonçalves&lt;br&gt;Français: Yannick HAMMER&lt;br&gt;</translation> <translation type="obsolete">&lt;font size=&quot;8&quot;&gt;&lt;b&gt;Cockatrice&lt;/b&gt;&lt;/font&gt;&lt;br&gt;Version %1&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Auteurs:&lt;/b&gt;&lt;br&gt;Max-Wilhelm Bruker&lt;br&gt;Marcus Schütz&lt;br&gt;Marius van Zundert&lt;br&gt;&lt;br&gt;&lt;b&gt;Tranducteurs:&lt;/b&gt;&lt;br&gt;Espagnol: Gocho&lt;br&gt;Portugais: Milton Gonçalves&lt;br&gt;Portugais: Milton Gonçalves&lt;br&gt;Français: Yannick HAMMER&lt;br&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="172"/> <location filename="../src/window_main.cpp" line="179"/>
<source>Version %1</source> <source>Version %1</source>
<translation>Version %1</translation> <translation>Version %1</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="173"/> <location filename="../src/window_main.cpp" line="180"/>
<source>Authors:</source> <source>Authors:</source>
<translation>Auteurs:</translation> <translation>Auteurs:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="174"/> <location filename="../src/window_main.cpp" line="181"/>
<source>Translators:</source> <source>Translators:</source>
<translation>Traducteurs:</translation> <translation>Traducteurs:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="175"/> <location filename="../src/window_main.cpp" line="182"/>
<source>Spanish:</source> <source>Spanish:</source>
<translation>Espagnol:</translation> <translation>Espagnol:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="176"/> <location filename="../src/window_main.cpp" line="183"/>
<source>Portugese (Portugal):</source> <source>Portugese (Portugal):</source>
<translation>Portugais (Portugal):</translation> <translation>Portugais (Portugal):</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="177"/> <location filename="../src/window_main.cpp" line="184"/>
<source>Portugese (Brazil):</source> <source>Portugese (Brazil):</source>
<translation>Portugais (Brésil):</translation> <translation>Portugais (Brésil):</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="178"/> <location filename="../src/window_main.cpp" line="185"/>
<source>French:</source> <source>French:</source>
<translation>Français:</translation> <translation>Français:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="179"/> <location filename="../src/window_main.cpp" line="186"/>
<source>Japanese:</source> <source>Japanese:</source>
<translation>Japonais:</translation> <translation>Japonais:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="188"/>
<location filename="../src/window_main.cpp" line="194"/>
<location filename="../src/window_main.cpp" line="195"/> <location filename="../src/window_main.cpp" line="195"/>
<location filename="../src/window_main.cpp" line="201"/>
<location filename="../src/window_main.cpp" line="202"/> <location filename="../src/window_main.cpp" line="202"/>
<location filename="../src/window_main.cpp" line="208"/> <location filename="../src/window_main.cpp" line="209"/>
<location filename="../src/window_main.cpp" line="210"/> <location filename="../src/window_main.cpp" line="215"/>
<location filename="../src/window_main.cpp" line="217"/>
<source>Error</source> <source>Error</source>
<translation>Erreur</translation> <translation>Erreur</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="188"/> <location filename="../src/window_main.cpp" line="195"/>
<source>Server timeout</source> <source>Server timeout</source>
<translation>Délai de la demande dépassé</translation> <translation>Délai de la demande dépassé</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="194"/> <location filename="../src/window_main.cpp" line="201"/>
<source>Invalid login data.</source> <source>Invalid login data.</source>
<translation>Information de connexion érronée.</translation> <translation>Information de connexion érronée.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="202"/> <location filename="../src/window_main.cpp" line="209"/>
<source>Socket error: %1</source> <source>Socket error: %1</source>
<translation>Erreur de socket: %1</translation> <translation>Erreur de socket: %1</translation>
</message> </message>
@ -1700,136 +1700,156 @@
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="60"/> <location filename="../src/window_main.cpp" line="60"/>
<source>Scheduled server shutdown.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/window_main.cpp" line="62"/>
<source>Unknown reason.</source> <source>Unknown reason.</source>
<translation>Raison inconnue.</translation> <translation>Raison inconnue.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="61"/> <location filename="../src/window_main.cpp" line="63"/>
<source>Connection closed</source> <source>Connection closed</source>
<translation>Connection fermée</translation> <translation>Connection fermée</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="61"/> <location filename="../src/window_main.cpp" line="63"/>
<source>The server has terminated your connection. <source>The server has terminated your connection.
Reason: %1</source> Reason: %1</source>
<translation>Le serveur a coupé votre connexion. <translation>Le serveur a coupé votre connexion.
Raison: %1</translation> Raison: %1</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="180"/> <location filename="../src/window_main.cpp" line="68"/>
<source>Scheduled server shutdown</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location filename="../src/window_main.cpp" line="68"/>
<source>The server is going to be restarted in %n minute(s).
All running games will be lost.
Reason for shutdown: %1</source>
<translation type="unfinished">
<numerusform></numerusform>
<numerusform></numerusform>
</translation>
</message>
<message>
<location filename="../src/window_main.cpp" line="187"/>
<source>Russian:</source> <source>Russian:</source>
<translatorcomment>putted &quot;France&quot; instead of &quot;Russe&quot; -&gt; meant that I must put the translation laguage country, isn&apos;t it?</translatorcomment> <translatorcomment>putted &quot;France&quot; instead of &quot;Russe&quot; -&gt; meant that I must put the translation laguage country, isn&apos;t it?</translatorcomment>
<translation>France:</translation> <translation>France:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="181"/> <location filename="../src/window_main.cpp" line="188"/>
<source>Czech:</source> <source>Czech:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="182"/> <location filename="../src/window_main.cpp" line="189"/>
<source>Slovak:</source> <source>Slovak:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="195"/> <location filename="../src/window_main.cpp" line="202"/>
<source>There is already an active session using this user name. <source>There is already an active session using this user name.
Please close that session first and re-login.</source> Please close that session first and re-login.</source>
<translation>Il y a déjà une session ouvert avec le même pseudo. <translation>Il y a déjà une session ouvert avec le même pseudo.
Fermez cette session puis re-connectez-vous.</translation> Fermez cette session puis re-connectez-vous.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="208"/> <location filename="../src/window_main.cpp" line="215"/>
<source>You are trying to connect to an obsolete server. Please downgrade your Cockatrice version or connect to a suitable server. <source>You are trying to connect to an obsolete server. Please downgrade your Cockatrice version or connect to a suitable server.
Local version is %1, remote version is %2.</source> Local version is %1, remote version is %2.</source>
<translation>Vous tentez de vous connecter à un serveur obsolète. Chargez la nouvelle version de Cockatrice ou connectez-vous à un serveur approprié. <translation>Vous tentez de vous connecter à un serveur obsolète. Chargez la nouvelle version de Cockatrice ou connectez-vous à un serveur approprié.
La version la plus récente est %1, l&apos;ancienne version est %2.</translation> La version la plus récente est %1, l&apos;ancienne version est %2.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="210"/> <location filename="../src/window_main.cpp" line="217"/>
<source>Your Cockatrice client is obsolete. Please update your Cockatrice version. <source>Your Cockatrice client is obsolete. Please update your Cockatrice version.
Local version is %1, remote version is %2.</source> Local version is %1, remote version is %2.</source>
<translation>Votre client Cockatrice est obsolète. Veuillez charger la nouvelle version. <translation>Votre client Cockatrice est obsolète. Veuillez charger la nouvelle version.
La version la plus récente est %1, l&apos;ancienne version est %2.</translation> La version la plus récente est %1, l&apos;ancienne version est %2.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="216"/> <location filename="../src/window_main.cpp" line="223"/>
<source>Connecting to %1...</source> <source>Connecting to %1...</source>
<translation>Connexion à %1...</translation> <translation>Connexion à %1...</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="217"/> <location filename="../src/window_main.cpp" line="224"/>
<source>Disconnected</source> <source>Disconnected</source>
<translation>Déconnecté</translation> <translation>Déconnecté</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="218"/> <location filename="../src/window_main.cpp" line="225"/>
<source>Logged in at %1</source> <source>Logged in at %1</source>
<translation>Connecté à %1</translation> <translation>Connecté à %1</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="227"/> <location filename="../src/window_main.cpp" line="234"/>
<source>&amp;Connect...</source> <source>&amp;Connect...</source>
<translatorcomment>à verifier</translatorcomment> <translatorcomment>à verifier</translatorcomment>
<translation>&amp;Connecter...</translation> <translation>&amp;Connecter...</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="228"/> <location filename="../src/window_main.cpp" line="235"/>
<source>&amp;Disconnect</source> <source>&amp;Disconnect</source>
<translation>&amp;Déconnecter</translation> <translation>&amp;Déconnecter</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="229"/> <location filename="../src/window_main.cpp" line="236"/>
<source>Start &amp;local game...</source> <source>Start &amp;local game...</source>
<translation>Démarrer une partie &amp;locale...</translation> <translation>Démarrer une partie &amp;locale...</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="230"/> <location filename="../src/window_main.cpp" line="237"/>
<source>&amp;Deck editor</source> <source>&amp;Deck editor</source>
<translation>Éditeur de &amp;deck</translation> <translation>Éditeur de &amp;deck</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="231"/> <location filename="../src/window_main.cpp" line="238"/>
<source>&amp;Full screen</source> <source>&amp;Full screen</source>
<translation>&amp;Plein écran</translation> <translation>&amp;Plein écran</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="232"/> <location filename="../src/window_main.cpp" line="239"/>
<source>Ctrl+F</source> <source>Ctrl+F</source>
<translation>Ctrl+F</translation> <translation>Ctrl+F</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="233"/> <location filename="../src/window_main.cpp" line="240"/>
<source>&amp;Settings...</source> <source>&amp;Settings...</source>
<translation>&amp;Paramètres...</translation> <translation>&amp;Paramètres...</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="234"/> <location filename="../src/window_main.cpp" line="241"/>
<source>&amp;Exit</source> <source>&amp;Exit</source>
<translation>&amp;Quitter</translation> <translation>&amp;Quitter</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="236"/> <location filename="../src/window_main.cpp" line="243"/>
<source>&amp;Cockatrice</source> <source>&amp;Cockatrice</source>
<translation>&amp;Cockatrice</translation> <translation>&amp;Cockatrice</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="238"/> <location filename="../src/window_main.cpp" line="245"/>
<source>&amp;About Cockatrice</source> <source>&amp;About Cockatrice</source>
<translation>À propos de Cock&amp;atrice</translation> <translation>À propos de Cock&amp;atrice</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="239"/> <location filename="../src/window_main.cpp" line="246"/>
<source>&amp;Help</source> <source>&amp;Help</source>
<translation>A&amp;ide</translation> <translation>A&amp;ide</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="317"/> <location filename="../src/window_main.cpp" line="325"/>
<source>Are you sure?</source> <source>Are you sure?</source>
<translation>Êtes-vous sûr?</translation> <translation>Êtes-vous sûr?</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="317"/> <location filename="../src/window_main.cpp" line="325"/>
<source>There are still open games. Are you sure you want to quit?</source> <source>There are still open games. Are you sure you want to quit?</source>
<translation>Il y a encore des parties en cours. Êtes-vous sûr de vouloir quitter?</translation> <translation>Il y a encore des parties en cours. Êtes-vous sûr de vouloir quitter?</translation>
</message> </message>
@ -2999,40 +3019,73 @@ La version la plus récente est %1, l&apos;ancienne version est %2.</translation
<translation>Nom complet</translation> <translation>Nom complet</translation>
</message> </message>
</context> </context>
<context>
<name>ShutdownDialog</name>
<message>
<location filename="../src/tab_admin.cpp" line="17"/>
<source>&amp;Reason for shutdown:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="20"/>
<source>&amp;Time until shutdown (minutes):</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="26"/>
<source>&amp;OK</source>
<translation type="unfinished">&amp;OK</translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="30"/>
<source>&amp;Cancel</source>
<translation type="unfinished">&amp;Annuler</translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="46"/>
<source>Shut down server</source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>TabAdmin</name> <name>TabAdmin</name>
<message> <message>
<location filename="../src/tab_admin.cpp" line="40"/> <location filename="../src/tab_admin.cpp" line="93"/>
<source>Update server &amp;message</source> <source>Update server &amp;message</source>
<translation>Mettre à jour le &amp;message du serveur</translation> <translation>Mettre à jour le &amp;message du serveur</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="41"/> <location filename="../src/tab_admin.cpp" line="94"/>
<source>&amp;Shut down server</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="95"/>
<source>Server administration functions</source> <source>Server administration functions</source>
<translation>Fonctions d&apos;administration du serveur</translation> <translation>Fonctions d&apos;administration du serveur</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="43"/> <location filename="../src/tab_admin.cpp" line="97"/>
<source>&amp;Unlock functions</source> <source>&amp;Unlock functions</source>
<translation>&amp;Débloquer fonctions</translation> <translation>&amp;Débloquer fonctions</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="44"/> <location filename="../src/tab_admin.cpp" line="98"/>
<source>&amp;Lock functions</source> <source>&amp;Lock functions</source>
<translation>&amp;Bloquer fonctions</translation> <translation>&amp;Bloquer fonctions</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="54"/> <location filename="../src/tab_admin.cpp" line="115"/>
<source>Unlock administration functions</source> <source>Unlock administration functions</source>
<translation>Débloquer fonctions d&apos;administration</translation> <translation>Débloquer fonctions d&apos;administration</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="54"/> <location filename="../src/tab_admin.cpp" line="115"/>
<source>Do you really want to unlock the administration functions?</source> <source>Do you really want to unlock the administration functions?</source>
<translation>Êtes-vous sûr de vouloir débloquer les fonctions d&apos;administration?</translation> <translation>Êtes-vous sûr de vouloir débloquer les fonctions d&apos;administration?</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.h" line="27"/> <location filename="../src/tab_admin.h" line="43"/>
<source>Administration</source> <source>Administration</source>
<translation>Administration</translation> <translation>Administration</translation>
</message> </message>

View file

@ -1443,220 +1443,239 @@
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="60"/> <location filename="../src/window_main.cpp" line="60"/>
<source>Scheduled server shutdown.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/window_main.cpp" line="62"/>
<source>Unknown reason.</source> <source>Unknown reason.</source>
<translation>.</translation> <translation>.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="61"/> <location filename="../src/window_main.cpp" line="63"/>
<source>Connection closed</source> <source>Connection closed</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="61"/> <location filename="../src/window_main.cpp" line="63"/>
<source>The server has terminated your connection. <source>The server has terminated your connection.
Reason: %1</source> Reason: %1</source>
<translation>. <translation>.
: %1</translation> : %1</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="110"/> <location filename="../src/window_main.cpp" line="68"/>
<source>Scheduled server shutdown</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location filename="../src/window_main.cpp" line="68"/>
<source>The server is going to be restarted in %n minute(s).
All running games will be lost.
Reason for shutdown: %1</source>
<translation type="unfinished">
<numerusform></numerusform>
</translation>
</message>
<message>
<location filename="../src/window_main.cpp" line="117"/>
<source>Number of players</source> <source>Number of players</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="110"/> <location filename="../src/window_main.cpp" line="117"/>
<source>Please enter the number of players.</source> <source>Please enter the number of players.</source>
<translation>.</translation> <translation>.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="119"/> <location filename="../src/window_main.cpp" line="126"/>
<location filename="../src/window_main.cpp" line="125"/> <location filename="../src/window_main.cpp" line="132"/>
<source>Player %1</source> <source>Player %1</source>
<translation> %1</translation> <translation> %1</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="170"/> <location filename="../src/window_main.cpp" line="177"/>
<source>About Cockatrice</source> <source>About Cockatrice</source>
<translation>Cockatriceについて</translation> <translation>Cockatriceについて</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="172"/> <location filename="../src/window_main.cpp" line="179"/>
<source>Version %1</source> <source>Version %1</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="173"/> <location filename="../src/window_main.cpp" line="180"/>
<source>Authors:</source> <source>Authors:</source>
<translation>:</translation> <translation>:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="174"/> <location filename="../src/window_main.cpp" line="181"/>
<source>Translators:</source> <source>Translators:</source>
<translation>:</translation> <translation>:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="175"/> <location filename="../src/window_main.cpp" line="182"/>
<source>Spanish:</source> <source>Spanish:</source>
<translation>:</translation> <translation>:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="176"/> <location filename="../src/window_main.cpp" line="183"/>
<source>Portugese (Portugal):</source> <source>Portugese (Portugal):</source>
<translation>:</translation> <translation>:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="177"/> <location filename="../src/window_main.cpp" line="184"/>
<source>Portugese (Brazil):</source> <source>Portugese (Brazil):</source>
<translation>:</translation> <translation>:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="178"/> <location filename="../src/window_main.cpp" line="185"/>
<source>French:</source> <source>French:</source>
<translation>:</translation> <translation>:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="179"/> <location filename="../src/window_main.cpp" line="186"/>
<source>Japanese:</source> <source>Japanese:</source>
<translation>:</translation> <translation>:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="180"/> <location filename="../src/window_main.cpp" line="187"/>
<source>Russian:</source> <source>Russian:</source>
<translation>:</translation> <translation>:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="181"/> <location filename="../src/window_main.cpp" line="188"/>
<source>Czech:</source> <source>Czech:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="182"/> <location filename="../src/window_main.cpp" line="189"/>
<source>Slovak:</source> <source>Slovak:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="188"/>
<location filename="../src/window_main.cpp" line="194"/>
<location filename="../src/window_main.cpp" line="195"/> <location filename="../src/window_main.cpp" line="195"/>
<location filename="../src/window_main.cpp" line="201"/>
<location filename="../src/window_main.cpp" line="202"/> <location filename="../src/window_main.cpp" line="202"/>
<location filename="../src/window_main.cpp" line="208"/> <location filename="../src/window_main.cpp" line="209"/>
<location filename="../src/window_main.cpp" line="210"/> <location filename="../src/window_main.cpp" line="215"/>
<location filename="../src/window_main.cpp" line="217"/>
<source>Error</source> <source>Error</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="188"/> <location filename="../src/window_main.cpp" line="195"/>
<source>Server timeout</source> <source>Server timeout</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="194"/> <location filename="../src/window_main.cpp" line="201"/>
<source>Invalid login data.</source> <source>Invalid login data.</source>
<translation>.</translation> <translation>.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="195"/> <location filename="../src/window_main.cpp" line="202"/>
<source>There is already an active session using this user name. <source>There is already an active session using this user name.
Please close that session first and re-login.</source> Please close that session first and re-login.</source>
<translation>使. <translation>使.
.</translation> .</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="202"/> <location filename="../src/window_main.cpp" line="209"/>
<source>Socket error: %1</source> <source>Socket error: %1</source>
<translation>: %1</translation> <translation>: %1</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="208"/> <location filename="../src/window_main.cpp" line="215"/>
<source>You are trying to connect to an obsolete server. Please downgrade your Cockatrice version or connect to a suitable server. <source>You are trying to connect to an obsolete server. Please downgrade your Cockatrice version or connect to a suitable server.
Local version is %1, remote version is %2.</source> Local version is %1, remote version is %2.</source>
<translation>Verのサーバーに接続しようとしています.CockatriceのVerをダウングレードするか適正なサーバーに接続してください. <translation>Verのサーバーに接続しようとしています.CockatriceのVerをダウングレードするか適正なサーバーに接続してください.
Ver %1,Ver %2.</translation> Ver %1,Ver %2.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="210"/> <location filename="../src/window_main.cpp" line="217"/>
<source>Your Cockatrice client is obsolete. Please update your Cockatrice version. <source>Your Cockatrice client is obsolete. Please update your Cockatrice version.
Local version is %1, remote version is %2.</source> Local version is %1, remote version is %2.</source>
<translation>CockatriceのVerが古いです.Cockatriceをアップデートしてください. <translation>CockatriceのVerが古いです.Cockatriceをアップデートしてください.
Ver %1,Ver %2.</translation> Ver %1,Ver %2.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="216"/> <location filename="../src/window_main.cpp" line="223"/>
<source>Connecting to %1...</source> <source>Connecting to %1...</source>
<translation>%1...</translation> <translation>%1...</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="217"/> <location filename="../src/window_main.cpp" line="224"/>
<source>Disconnected</source> <source>Disconnected</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="218"/> <location filename="../src/window_main.cpp" line="225"/>
<source>Logged in at %1</source> <source>Logged in at %1</source>
<translation>%1</translation> <translation>%1</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="227"/> <location filename="../src/window_main.cpp" line="234"/>
<source>&amp;Connect...</source> <source>&amp;Connect...</source>
<translation>...</translation> <translation>...</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="228"/> <location filename="../src/window_main.cpp" line="235"/>
<source>&amp;Disconnect</source> <source>&amp;Disconnect</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="229"/> <location filename="../src/window_main.cpp" line="236"/>
<source>Start &amp;local game...</source> <source>Start &amp;local game...</source>
<translation>...</translation> <translation>...</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="230"/> <location filename="../src/window_main.cpp" line="237"/>
<source>&amp;Deck editor</source> <source>&amp;Deck editor</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="231"/> <location filename="../src/window_main.cpp" line="238"/>
<source>&amp;Full screen</source> <source>&amp;Full screen</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="232"/> <location filename="../src/window_main.cpp" line="239"/>
<source>Ctrl+F</source> <source>Ctrl+F</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="233"/> <location filename="../src/window_main.cpp" line="240"/>
<source>&amp;Settings...</source> <source>&amp;Settings...</source>
<translation>...</translation> <translation>...</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="234"/> <location filename="../src/window_main.cpp" line="241"/>
<source>&amp;Exit</source> <source>&amp;Exit</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="236"/> <location filename="../src/window_main.cpp" line="243"/>
<source>&amp;Cockatrice</source> <source>&amp;Cockatrice</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="238"/> <location filename="../src/window_main.cpp" line="245"/>
<source>&amp;About Cockatrice</source> <source>&amp;About Cockatrice</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="239"/> <location filename="../src/window_main.cpp" line="246"/>
<source>&amp;Help</source> <source>&amp;Help</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="317"/> <location filename="../src/window_main.cpp" line="325"/>
<source>Are you sure?</source> <source>Are you sure?</source>
<translation>?</translation> <translation>?</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="317"/> <location filename="../src/window_main.cpp" line="325"/>
<source>There are still open games. Are you sure you want to quit?</source> <source>There are still open games. Are you sure you want to quit?</source>
<translation>.退?</translation> <translation>.退?</translation>
</message> </message>
@ -2779,40 +2798,73 @@ Local version is %1, remote version is %2.</source>
<translation></translation> <translation></translation>
</message> </message>
</context> </context>
<context>
<name>ShutdownDialog</name>
<message>
<location filename="../src/tab_admin.cpp" line="17"/>
<source>&amp;Reason for shutdown:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="20"/>
<source>&amp;Time until shutdown (minutes):</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="26"/>
<source>&amp;OK</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="30"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="46"/>
<source>Shut down server</source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>TabAdmin</name> <name>TabAdmin</name>
<message> <message>
<location filename="../src/tab_admin.cpp" line="40"/> <location filename="../src/tab_admin.cpp" line="93"/>
<source>Update server &amp;message</source> <source>Update server &amp;message</source>
<translation>&amp;</translation> <translation>&amp;</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="41"/> <location filename="../src/tab_admin.cpp" line="94"/>
<source>&amp;Shut down server</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="95"/>
<source>Server administration functions</source> <source>Server administration functions</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="43"/> <location filename="../src/tab_admin.cpp" line="97"/>
<source>&amp;Unlock functions</source> <source>&amp;Unlock functions</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="44"/> <location filename="../src/tab_admin.cpp" line="98"/>
<source>&amp;Lock functions</source> <source>&amp;Lock functions</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="54"/> <location filename="../src/tab_admin.cpp" line="115"/>
<source>Unlock administration functions</source> <source>Unlock administration functions</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="54"/> <location filename="../src/tab_admin.cpp" line="115"/>
<source>Do you really want to unlock the administration functions?</source> <source>Do you really want to unlock the administration functions?</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.h" line="27"/> <location filename="../src/tab_admin.h" line="43"/>
<source>Administration</source> <source>Administration</source>
<translation></translation> <translation></translation>
</message> </message>

View file

@ -1390,216 +1390,237 @@
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="60"/> <location filename="../src/window_main.cpp" line="60"/>
<source>Scheduled server shutdown.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/window_main.cpp" line="62"/>
<source>Unknown reason.</source> <source>Unknown reason.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="61"/> <location filename="../src/window_main.cpp" line="63"/>
<source>Connection closed</source> <source>Connection closed</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="61"/> <location filename="../src/window_main.cpp" line="63"/>
<source>The server has terminated your connection. <source>The server has terminated your connection.
Reason: %1</source> Reason: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="110"/> <location filename="../src/window_main.cpp" line="68"/>
<source>Scheduled server shutdown</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location filename="../src/window_main.cpp" line="68"/>
<source>The server is going to be restarted in %n minute(s).
All running games will be lost.
Reason for shutdown: %1</source>
<translation type="unfinished">
<numerusform></numerusform>
<numerusform></numerusform>
<numerusform></numerusform>
</translation>
</message>
<message>
<location filename="../src/window_main.cpp" line="117"/>
<source>Number of players</source> <source>Number of players</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="110"/> <location filename="../src/window_main.cpp" line="117"/>
<source>Please enter the number of players.</source> <source>Please enter the number of players.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="119"/> <location filename="../src/window_main.cpp" line="126"/>
<location filename="../src/window_main.cpp" line="125"/> <location filename="../src/window_main.cpp" line="132"/>
<source>Player %1</source> <source>Player %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="170"/> <location filename="../src/window_main.cpp" line="177"/>
<source>About Cockatrice</source> <source>About Cockatrice</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="172"/> <location filename="../src/window_main.cpp" line="179"/>
<source>Version %1</source> <source>Version %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="173"/> <location filename="../src/window_main.cpp" line="180"/>
<source>Authors:</source> <source>Authors:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="174"/> <location filename="../src/window_main.cpp" line="181"/>
<source>Translators:</source> <source>Translators:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="175"/> <location filename="../src/window_main.cpp" line="182"/>
<source>Spanish:</source> <source>Spanish:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="176"/> <location filename="../src/window_main.cpp" line="183"/>
<source>Portugese (Portugal):</source> <source>Portugese (Portugal):</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="177"/> <location filename="../src/window_main.cpp" line="184"/>
<source>Portugese (Brazil):</source> <source>Portugese (Brazil):</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="178"/> <location filename="../src/window_main.cpp" line="185"/>
<source>French:</source> <source>French:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="179"/> <location filename="../src/window_main.cpp" line="186"/>
<source>Japanese:</source> <source>Japanese:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="180"/> <location filename="../src/window_main.cpp" line="187"/>
<source>Russian:</source> <source>Russian:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="181"/> <location filename="../src/window_main.cpp" line="188"/>
<source>Czech:</source> <source>Czech:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="182"/> <location filename="../src/window_main.cpp" line="189"/>
<source>Slovak:</source> <source>Slovak:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="188"/>
<location filename="../src/window_main.cpp" line="194"/>
<location filename="../src/window_main.cpp" line="195"/> <location filename="../src/window_main.cpp" line="195"/>
<location filename="../src/window_main.cpp" line="201"/>
<location filename="../src/window_main.cpp" line="202"/> <location filename="../src/window_main.cpp" line="202"/>
<location filename="../src/window_main.cpp" line="208"/> <location filename="../src/window_main.cpp" line="209"/>
<location filename="../src/window_main.cpp" line="210"/> <location filename="../src/window_main.cpp" line="215"/>
<location filename="../src/window_main.cpp" line="217"/>
<source>Error</source> <source>Error</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="188"/> <location filename="../src/window_main.cpp" line="195"/>
<source>Server timeout</source> <source>Server timeout</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="194"/> <location filename="../src/window_main.cpp" line="201"/>
<source>Invalid login data.</source> <source>Invalid login data.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="195"/> <location filename="../src/window_main.cpp" line="202"/>
<source>There is already an active session using this user name. <source>There is already an active session using this user name.
Please close that session first and re-login.</source> Please close that session first and re-login.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="202"/> <location filename="../src/window_main.cpp" line="209"/>
<source>Socket error: %1</source> <source>Socket error: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="208"/> <location filename="../src/window_main.cpp" line="215"/>
<source>You are trying to connect to an obsolete server. Please downgrade your Cockatrice version or connect to a suitable server. <source>You are trying to connect to an obsolete server. Please downgrade your Cockatrice version or connect to a suitable server.
Local version is %1, remote version is %2.</source> Local version is %1, remote version is %2.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="210"/> <location filename="../src/window_main.cpp" line="217"/>
<source>Your Cockatrice client is obsolete. Please update your Cockatrice version. <source>Your Cockatrice client is obsolete. Please update your Cockatrice version.
Local version is %1, remote version is %2.</source> Local version is %1, remote version is %2.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="216"/> <location filename="../src/window_main.cpp" line="223"/>
<source>Connecting to %1...</source> <source>Connecting to %1...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="217"/> <location filename="../src/window_main.cpp" line="224"/>
<source>Disconnected</source> <source>Disconnected</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="218"/> <location filename="../src/window_main.cpp" line="225"/>
<source>Logged in at %1</source> <source>Logged in at %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="227"/> <location filename="../src/window_main.cpp" line="234"/>
<source>&amp;Connect...</source> <source>&amp;Connect...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="228"/> <location filename="../src/window_main.cpp" line="235"/>
<source>&amp;Disconnect</source> <source>&amp;Disconnect</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="229"/> <location filename="../src/window_main.cpp" line="236"/>
<source>Start &amp;local game...</source> <source>Start &amp;local game...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="230"/> <location filename="../src/window_main.cpp" line="237"/>
<source>&amp;Deck editor</source> <source>&amp;Deck editor</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="231"/> <location filename="../src/window_main.cpp" line="238"/>
<source>&amp;Full screen</source> <source>&amp;Full screen</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="232"/> <location filename="../src/window_main.cpp" line="239"/>
<source>Ctrl+F</source> <source>Ctrl+F</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="233"/> <location filename="../src/window_main.cpp" line="240"/>
<source>&amp;Settings...</source> <source>&amp;Settings...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="234"/> <location filename="../src/window_main.cpp" line="241"/>
<source>&amp;Exit</source> <source>&amp;Exit</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="236"/> <location filename="../src/window_main.cpp" line="243"/>
<source>&amp;Cockatrice</source> <source>&amp;Cockatrice</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="238"/> <location filename="../src/window_main.cpp" line="245"/>
<source>&amp;About Cockatrice</source> <source>&amp;About Cockatrice</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="239"/> <location filename="../src/window_main.cpp" line="246"/>
<source>&amp;Help</source> <source>&amp;Help</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="317"/> <location filename="../src/window_main.cpp" line="325"/>
<source>Are you sure?</source> <source>Are you sure?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="317"/> <location filename="../src/window_main.cpp" line="325"/>
<source>There are still open games. Are you sure you want to quit?</source> <source>There are still open games. Are you sure you want to quit?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -2705,40 +2726,73 @@ Local version is %1, remote version is %2.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context>
<name>ShutdownDialog</name>
<message>
<location filename="../src/tab_admin.cpp" line="17"/>
<source>&amp;Reason for shutdown:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="20"/>
<source>&amp;Time until shutdown (minutes):</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="26"/>
<source>&amp;OK</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="30"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="46"/>
<source>Shut down server</source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>TabAdmin</name> <name>TabAdmin</name>
<message> <message>
<location filename="../src/tab_admin.cpp" line="40"/> <location filename="../src/tab_admin.cpp" line="93"/>
<source>Update server &amp;message</source> <source>Update server &amp;message</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="41"/> <location filename="../src/tab_admin.cpp" line="94"/>
<source>&amp;Shut down server</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="95"/>
<source>Server administration functions</source> <source>Server administration functions</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="43"/> <location filename="../src/tab_admin.cpp" line="97"/>
<source>&amp;Unlock functions</source> <source>&amp;Unlock functions</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="44"/> <location filename="../src/tab_admin.cpp" line="98"/>
<source>&amp;Lock functions</source> <source>&amp;Lock functions</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="54"/> <location filename="../src/tab_admin.cpp" line="115"/>
<source>Unlock administration functions</source> <source>Unlock administration functions</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="54"/> <location filename="../src/tab_admin.cpp" line="115"/>
<source>Do you really want to unlock the administration functions?</source> <source>Do you really want to unlock the administration functions?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.h" line="27"/> <location filename="../src/tab_admin.h" line="43"/>
<source>Administration</source> <source>Administration</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View file

@ -1598,23 +1598,23 @@
<context> <context>
<name>MainWindow</name> <name>MainWindow</name>
<message> <message>
<location filename="../src/window_main.cpp" line="110"/> <location filename="../src/window_main.cpp" line="117"/>
<source>Number of players</source> <source>Number of players</source>
<translation>Número de jogadores</translation> <translation>Número de jogadores</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="110"/> <location filename="../src/window_main.cpp" line="117"/>
<source>Please enter the number of players.</source> <source>Please enter the number of players.</source>
<translation>Por favor, entre o número de jogadores.</translation> <translation>Por favor, entre o número de jogadores.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="119"/> <location filename="../src/window_main.cpp" line="126"/>
<location filename="../src/window_main.cpp" line="125"/> <location filename="../src/window_main.cpp" line="132"/>
<source>Player %1</source> <source>Player %1</source>
<translation>Jogador %1</translation> <translation>Jogador %1</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="170"/> <location filename="../src/window_main.cpp" line="177"/>
<source>About Cockatrice</source> <source>About Cockatrice</source>
<translation>Sobre o Cockatrice</translation> <translation>Sobre o Cockatrice</translation>
</message> </message>
@ -1623,72 +1623,72 @@
<translation type="obsolete">&lt;font size=&quot;8&quot;&gt;&lt;b&gt;Cockatrice&lt;/b&gt;&lt;/font&gt;&lt;br&gt;Version %1&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Authors:&lt;/b&gt;&lt;br&gt;Max-Wilhelm Bruker&lt;br&gt;Marcus Schütz&lt;br&gt;Marius van Zundert&lt;br&gt;&lt;br&gt;&lt;b&gt;Translators:&lt;/b&gt;&lt;br&gt;Spanish: Gocho&lt;br&gt;Portugese: Milton Gonçalves&lt;br&gt;Brazilian Portuguese: Thiago Queiroz&lt;br&gt;</translation> <translation type="obsolete">&lt;font size=&quot;8&quot;&gt;&lt;b&gt;Cockatrice&lt;/b&gt;&lt;/font&gt;&lt;br&gt;Version %1&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Authors:&lt;/b&gt;&lt;br&gt;Max-Wilhelm Bruker&lt;br&gt;Marcus Schütz&lt;br&gt;Marius van Zundert&lt;br&gt;&lt;br&gt;&lt;b&gt;Translators:&lt;/b&gt;&lt;br&gt;Spanish: Gocho&lt;br&gt;Portugese: Milton Gonçalves&lt;br&gt;Brazilian Portuguese: Thiago Queiroz&lt;br&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="172"/> <location filename="../src/window_main.cpp" line="179"/>
<source>Version %1</source> <source>Version %1</source>
<translation>Versão %1</translation> <translation>Versão %1</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="173"/> <location filename="../src/window_main.cpp" line="180"/>
<source>Authors:</source> <source>Authors:</source>
<translation>Autores:</translation> <translation>Autores:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="174"/> <location filename="../src/window_main.cpp" line="181"/>
<source>Translators:</source> <source>Translators:</source>
<translation>Tradutores:</translation> <translation>Tradutores:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="175"/> <location filename="../src/window_main.cpp" line="182"/>
<source>Spanish:</source> <source>Spanish:</source>
<translation>Espanhol:</translation> <translation>Espanhol:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="176"/> <location filename="../src/window_main.cpp" line="183"/>
<source>Portugese (Portugal):</source> <source>Portugese (Portugal):</source>
<translation>Português (Portugal):</translation> <translation>Português (Portugal):</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="177"/> <location filename="../src/window_main.cpp" line="184"/>
<source>Portugese (Brazil):</source> <source>Portugese (Brazil):</source>
<translation>Português (Brasil):</translation> <translation>Português (Brasil):</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="178"/> <location filename="../src/window_main.cpp" line="185"/>
<source>French:</source> <source>French:</source>
<translation>Francês:</translation> <translation>Francês:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="179"/> <location filename="../src/window_main.cpp" line="186"/>
<source>Japanese:</source> <source>Japanese:</source>
<translation>Japonês:</translation> <translation>Japonês:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="180"/> <location filename="../src/window_main.cpp" line="187"/>
<source>Russian:</source> <source>Russian:</source>
<translation>Russo:</translation> <translation>Russo:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="188"/>
<location filename="../src/window_main.cpp" line="194"/>
<location filename="../src/window_main.cpp" line="195"/> <location filename="../src/window_main.cpp" line="195"/>
<location filename="../src/window_main.cpp" line="201"/>
<location filename="../src/window_main.cpp" line="202"/> <location filename="../src/window_main.cpp" line="202"/>
<location filename="../src/window_main.cpp" line="208"/> <location filename="../src/window_main.cpp" line="209"/>
<location filename="../src/window_main.cpp" line="210"/> <location filename="../src/window_main.cpp" line="215"/>
<location filename="../src/window_main.cpp" line="217"/>
<source>Error</source> <source>Error</source>
<translation>Erro</translation> <translation>Erro</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="188"/> <location filename="../src/window_main.cpp" line="195"/>
<source>Server timeout</source> <source>Server timeout</source>
<translation>Tempo esgotado do servidor</translation> <translation>Tempo esgotado do servidor</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="194"/> <location filename="../src/window_main.cpp" line="201"/>
<source>Invalid login data.</source> <source>Invalid login data.</source>
<translation>Informações de login inválidas.</translation> <translation>Informações de login inválidas.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="202"/> <location filename="../src/window_main.cpp" line="209"/>
<source>Socket error: %1</source> <source>Socket error: %1</source>
<translation>Erro de ligação:%1</translation> <translation>Erro de ligação:%1</translation>
</message> </message>
@ -1708,129 +1708,149 @@
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="60"/> <location filename="../src/window_main.cpp" line="60"/>
<source>Scheduled server shutdown.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/window_main.cpp" line="62"/>
<source>Unknown reason.</source> <source>Unknown reason.</source>
<translation>Razão desconhecida.</translation> <translation>Razão desconhecida.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="61"/> <location filename="../src/window_main.cpp" line="63"/>
<source>Connection closed</source> <source>Connection closed</source>
<translation>Conexão fechada</translation> <translation>Conexão fechada</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="61"/> <location filename="../src/window_main.cpp" line="63"/>
<source>The server has terminated your connection. <source>The server has terminated your connection.
Reason: %1</source> Reason: %1</source>
<translation>O servidor terminou sua conexão. <translation>O servidor terminou sua conexão.
Razão: %1</translation> Razão: %1</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="181"/> <location filename="../src/window_main.cpp" line="68"/>
<source>Scheduled server shutdown</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location filename="../src/window_main.cpp" line="68"/>
<source>The server is going to be restarted in %n minute(s).
All running games will be lost.
Reason for shutdown: %1</source>
<translation type="unfinished">
<numerusform></numerusform>
<numerusform></numerusform>
</translation>
</message>
<message>
<location filename="../src/window_main.cpp" line="188"/>
<source>Czech:</source> <source>Czech:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="182"/> <location filename="../src/window_main.cpp" line="189"/>
<source>Slovak:</source> <source>Slovak:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="195"/> <location filename="../src/window_main.cpp" line="202"/>
<source>There is already an active session using this user name. <source>There is already an active session using this user name.
Please close that session first and re-login.</source> Please close that session first and re-login.</source>
<translation> existe uma sessão ativa usando este nome de usuário. <translation> existe uma sessão ativa usando este nome de usuário.
Por favor, feche a sessão primeiro e logue novamente.</translation> Por favor, feche a sessão primeiro e logue novamente.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="208"/> <location filename="../src/window_main.cpp" line="215"/>
<source>You are trying to connect to an obsolete server. Please downgrade your Cockatrice version or connect to a suitable server. <source>You are trying to connect to an obsolete server. Please downgrade your Cockatrice version or connect to a suitable server.
Local version is %1, remote version is %2.</source> Local version is %1, remote version is %2.</source>
<translation>Você está tentando conectar a um servidor obsoleto. Por favor, faça um downgrade na versão do seu Cockatrice ou conecte-se ao servidor correto. <translation>Você está tentando conectar a um servidor obsoleto. Por favor, faça um downgrade na versão do seu Cockatrice ou conecte-se ao servidor correto.
A versão local é %1 e a versão remota é %2.</translation> A versão local é %1 e a versão remota é %2.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="210"/> <location filename="../src/window_main.cpp" line="217"/>
<source>Your Cockatrice client is obsolete. Please update your Cockatrice version. <source>Your Cockatrice client is obsolete. Please update your Cockatrice version.
Local version is %1, remote version is %2.</source> Local version is %1, remote version is %2.</source>
<translation>A versão do seu Cockatrice é obsoleta. Por favor, atualize a sua versão. <translation>A versão do seu Cockatrice é obsoleta. Por favor, atualize a sua versão.
A versão local é %1 e a versão remota é %2.</translation> A versão local é %1 e a versão remota é %2.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="216"/> <location filename="../src/window_main.cpp" line="223"/>
<source>Connecting to %1...</source> <source>Connecting to %1...</source>
<translation>Conectando a %1...</translation> <translation>Conectando a %1...</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="217"/> <location filename="../src/window_main.cpp" line="224"/>
<source>Disconnected</source> <source>Disconnected</source>
<translation>Desconectado</translation> <translation>Desconectado</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="218"/> <location filename="../src/window_main.cpp" line="225"/>
<source>Logged in at %1</source> <source>Logged in at %1</source>
<translation>Logado em %1</translation> <translation>Logado em %1</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="227"/> <location filename="../src/window_main.cpp" line="234"/>
<source>&amp;Connect...</source> <source>&amp;Connect...</source>
<translation>&amp;Conectar...</translation> <translation>&amp;Conectar...</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="228"/> <location filename="../src/window_main.cpp" line="235"/>
<source>&amp;Disconnect</source> <source>&amp;Disconnect</source>
<translation>&amp;Desconectar</translation> <translation>&amp;Desconectar</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="229"/> <location filename="../src/window_main.cpp" line="236"/>
<source>Start &amp;local game...</source> <source>Start &amp;local game...</source>
<translation>Iniciar jogo &amp;local...</translation> <translation>Iniciar jogo &amp;local...</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="230"/> <location filename="../src/window_main.cpp" line="237"/>
<source>&amp;Deck editor</source> <source>&amp;Deck editor</source>
<translation>Editor de &amp;decks</translation> <translation>Editor de &amp;decks</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="231"/> <location filename="../src/window_main.cpp" line="238"/>
<source>&amp;Full screen</source> <source>&amp;Full screen</source>
<translation>Tela &amp;cheia</translation> <translation>Tela &amp;cheia</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="232"/> <location filename="../src/window_main.cpp" line="239"/>
<source>Ctrl+F</source> <source>Ctrl+F</source>
<translation>Ctrl+F</translation> <translation>Ctrl+F</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="233"/> <location filename="../src/window_main.cpp" line="240"/>
<source>&amp;Settings...</source> <source>&amp;Settings...</source>
<translation>&amp;Configurações...</translation> <translation>&amp;Configurações...</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="234"/> <location filename="../src/window_main.cpp" line="241"/>
<source>&amp;Exit</source> <source>&amp;Exit</source>
<translation>&amp;Sair</translation> <translation>&amp;Sair</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="236"/> <location filename="../src/window_main.cpp" line="243"/>
<source>&amp;Cockatrice</source> <source>&amp;Cockatrice</source>
<translation>&amp;Cockatrice</translation> <translation>&amp;Cockatrice</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="238"/> <location filename="../src/window_main.cpp" line="245"/>
<source>&amp;About Cockatrice</source> <source>&amp;About Cockatrice</source>
<translation>So&amp;bre o Cockatrice</translation> <translation>So&amp;bre o Cockatrice</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="239"/> <location filename="../src/window_main.cpp" line="246"/>
<source>&amp;Help</source> <source>&amp;Help</source>
<translation>&amp;Ajuda</translation> <translation>&amp;Ajuda</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="317"/> <location filename="../src/window_main.cpp" line="325"/>
<source>Are you sure?</source> <source>Are you sure?</source>
<translation>Você tem certeza?</translation> <translation>Você tem certeza?</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="317"/> <location filename="../src/window_main.cpp" line="325"/>
<source>There are still open games. Are you sure you want to quit?</source> <source>There are still open games. Are you sure you want to quit?</source>
<translation>Ainda existem jogos abertos. Você tem certeza que deseja sair?</translation> <translation>Ainda existem jogos abertos. Você tem certeza que deseja sair?</translation>
</message> </message>
@ -2982,40 +3002,73 @@ A versão local é %1 e a versão remota é %2.</translation>
<translation>Nome longo</translation> <translation>Nome longo</translation>
</message> </message>
</context> </context>
<context>
<name>ShutdownDialog</name>
<message>
<location filename="../src/tab_admin.cpp" line="17"/>
<source>&amp;Reason for shutdown:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="20"/>
<source>&amp;Time until shutdown (minutes):</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="26"/>
<source>&amp;OK</source>
<translation type="unfinished">&amp;OK</translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="30"/>
<source>&amp;Cancel</source>
<translation type="unfinished">&amp;Cancelar</translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="46"/>
<source>Shut down server</source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>TabAdmin</name> <name>TabAdmin</name>
<message> <message>
<location filename="../src/tab_admin.cpp" line="40"/> <location filename="../src/tab_admin.cpp" line="93"/>
<source>Update server &amp;message</source> <source>Update server &amp;message</source>
<translation>&amp;Atualizar mensagem do servidor</translation> <translation>&amp;Atualizar mensagem do servidor</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="41"/> <location filename="../src/tab_admin.cpp" line="94"/>
<source>&amp;Shut down server</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="95"/>
<source>Server administration functions</source> <source>Server administration functions</source>
<translation>Funções do administrador do servidor</translation> <translation>Funções do administrador do servidor</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="43"/> <location filename="../src/tab_admin.cpp" line="97"/>
<source>&amp;Unlock functions</source> <source>&amp;Unlock functions</source>
<translation>&amp;Desbloquear funções</translation> <translation>&amp;Desbloquear funções</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="44"/> <location filename="../src/tab_admin.cpp" line="98"/>
<source>&amp;Lock functions</source> <source>&amp;Lock functions</source>
<translation>&amp;Bloquear funções</translation> <translation>&amp;Bloquear funções</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="54"/> <location filename="../src/tab_admin.cpp" line="115"/>
<source>Unlock administration functions</source> <source>Unlock administration functions</source>
<translation>Desbloquear funções do administrador</translation> <translation>Desbloquear funções do administrador</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="54"/> <location filename="../src/tab_admin.cpp" line="115"/>
<source>Do you really want to unlock the administration functions?</source> <source>Do you really want to unlock the administration functions?</source>
<translation>Você quer mesmo desbloquear as funções do administrador?</translation> <translation>Você quer mesmo desbloquear as funções do administrador?</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.h" line="27"/> <location filename="../src/tab_admin.h" line="43"/>
<source>Administration</source> <source>Administration</source>
<translation>Administração</translation> <translation>Administração</translation>
</message> </message>

View file

@ -1598,23 +1598,23 @@
<context> <context>
<name>MainWindow</name> <name>MainWindow</name>
<message> <message>
<location filename="../src/window_main.cpp" line="110"/> <location filename="../src/window_main.cpp" line="117"/>
<source>Number of players</source> <source>Number of players</source>
<translation>Número de jogadores</translation> <translation>Número de jogadores</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="110"/> <location filename="../src/window_main.cpp" line="117"/>
<source>Please enter the number of players.</source> <source>Please enter the number of players.</source>
<translation>Por favor introduza o número de jogadores.</translation> <translation>Por favor introduza o número de jogadores.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="119"/> <location filename="../src/window_main.cpp" line="126"/>
<location filename="../src/window_main.cpp" line="125"/> <location filename="../src/window_main.cpp" line="132"/>
<source>Player %1</source> <source>Player %1</source>
<translation>Jogador %1</translation> <translation>Jogador %1</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="170"/> <location filename="../src/window_main.cpp" line="177"/>
<source>About Cockatrice</source> <source>About Cockatrice</source>
<translation>Sobre o Cockatrice</translation> <translation>Sobre o Cockatrice</translation>
</message> </message>
@ -1623,22 +1623,22 @@
<translation type="obsolete">&lt;font size=&quot;8&quot;&gt;&lt;b&gt;Cockatrice&lt;/b&gt;&lt;/font&gt;&lt;br&gt;Versão %1&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Autores:&lt;/b&gt;&lt;br&gt;Max-Wilhelm Bruker&lt;br&gt;Marcus Schütz&lt;br&gt;Marius van Zundert&lt;br&gt;&lt;br&gt;&lt;b&gt;Tradutores:&lt;/b&gt;&lt;br&gt;Espanhol: Gocho&lt;br&gt;Português: Milton Gonçalves&lt;br&gt;</translation> <translation type="obsolete">&lt;font size=&quot;8&quot;&gt;&lt;b&gt;Cockatrice&lt;/b&gt;&lt;/font&gt;&lt;br&gt;Versão %1&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Autores:&lt;/b&gt;&lt;br&gt;Max-Wilhelm Bruker&lt;br&gt;Marcus Schütz&lt;br&gt;Marius van Zundert&lt;br&gt;&lt;br&gt;&lt;b&gt;Tradutores:&lt;/b&gt;&lt;br&gt;Espanhol: Gocho&lt;br&gt;Português: Milton Gonçalves&lt;br&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="172"/> <location filename="../src/window_main.cpp" line="179"/>
<source>Version %1</source> <source>Version %1</source>
<translation>Versão %1</translation> <translation>Versão %1</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="173"/> <location filename="../src/window_main.cpp" line="180"/>
<source>Authors:</source> <source>Authors:</source>
<translation>Autores:</translation> <translation>Autores:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="174"/> <location filename="../src/window_main.cpp" line="181"/>
<source>Translators:</source> <source>Translators:</source>
<translation>Tradutores:</translation> <translation>Tradutores:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="175"/> <location filename="../src/window_main.cpp" line="182"/>
<source>Spanish:</source> <source>Spanish:</source>
<translation>Espanhol:</translation> <translation>Espanhol:</translation>
</message> </message>
@ -1647,52 +1647,52 @@
<translation type="obsolete">Português:</translation> <translation type="obsolete">Português:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="176"/> <location filename="../src/window_main.cpp" line="183"/>
<source>Portugese (Portugal):</source> <source>Portugese (Portugal):</source>
<translation>Português (Portugal):</translation> <translation>Português (Portugal):</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="177"/> <location filename="../src/window_main.cpp" line="184"/>
<source>Portugese (Brazil):</source> <source>Portugese (Brazil):</source>
<translation>Português (Brasil):</translation> <translation>Português (Brasil):</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="178"/> <location filename="../src/window_main.cpp" line="185"/>
<source>French:</source> <source>French:</source>
<translation>Francês:</translation> <translation>Francês:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="179"/> <location filename="../src/window_main.cpp" line="186"/>
<source>Japanese:</source> <source>Japanese:</source>
<translation>Japonês:</translation> <translation>Japonês:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="180"/> <location filename="../src/window_main.cpp" line="187"/>
<source>Russian:</source> <source>Russian:</source>
<translation>Russo:</translation> <translation>Russo:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="188"/>
<location filename="../src/window_main.cpp" line="194"/>
<location filename="../src/window_main.cpp" line="195"/> <location filename="../src/window_main.cpp" line="195"/>
<location filename="../src/window_main.cpp" line="201"/>
<location filename="../src/window_main.cpp" line="202"/> <location filename="../src/window_main.cpp" line="202"/>
<location filename="../src/window_main.cpp" line="208"/> <location filename="../src/window_main.cpp" line="209"/>
<location filename="../src/window_main.cpp" line="210"/> <location filename="../src/window_main.cpp" line="215"/>
<location filename="../src/window_main.cpp" line="217"/>
<source>Error</source> <source>Error</source>
<translation>Erro</translation> <translation>Erro</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="188"/> <location filename="../src/window_main.cpp" line="195"/>
<source>Server timeout</source> <source>Server timeout</source>
<translation>Tempo do servidor esgotado</translation> <translation>Tempo do servidor esgotado</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="194"/> <location filename="../src/window_main.cpp" line="201"/>
<source>Invalid login data.</source> <source>Invalid login data.</source>
<translation>Informação de login incorrecta.</translation> <translation>Informação de login incorrecta.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="202"/> <location filename="../src/window_main.cpp" line="209"/>
<source>Socket error: %1</source> <source>Socket error: %1</source>
<translation>Erro de ligação:%1</translation> <translation>Erro de ligação:%1</translation>
</message> </message>
@ -1712,129 +1712,149 @@
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="60"/> <location filename="../src/window_main.cpp" line="60"/>
<source>Scheduled server shutdown.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/window_main.cpp" line="62"/>
<source>Unknown reason.</source> <source>Unknown reason.</source>
<translation>Razão desconhecida.</translation> <translation>Razão desconhecida.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="61"/> <location filename="../src/window_main.cpp" line="63"/>
<source>Connection closed</source> <source>Connection closed</source>
<translation>Ligação terminada</translation> <translation>Ligação terminada</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="61"/> <location filename="../src/window_main.cpp" line="63"/>
<source>The server has terminated your connection. <source>The server has terminated your connection.
Reason: %1</source> Reason: %1</source>
<translation>O servidor terminou a sua ligação. <translation>O servidor terminou a sua ligação.
Motivo: %1</translation> Motivo: %1</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="181"/> <location filename="../src/window_main.cpp" line="68"/>
<source>Scheduled server shutdown</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location filename="../src/window_main.cpp" line="68"/>
<source>The server is going to be restarted in %n minute(s).
All running games will be lost.
Reason for shutdown: %1</source>
<translation type="unfinished">
<numerusform></numerusform>
<numerusform></numerusform>
</translation>
</message>
<message>
<location filename="../src/window_main.cpp" line="188"/>
<source>Czech:</source> <source>Czech:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="182"/> <location filename="../src/window_main.cpp" line="189"/>
<source>Slovak:</source> <source>Slovak:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="195"/> <location filename="../src/window_main.cpp" line="202"/>
<source>There is already an active session using this user name. <source>There is already an active session using this user name.
Please close that session first and re-login.</source> Please close that session first and re-login.</source>
<translation> existe uma sessão activa com este nome de utilizador. <translation> existe uma sessão activa com este nome de utilizador.
Por favor termine essa sessão e volte a ligar-se.</translation> Por favor termine essa sessão e volte a ligar-se.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="208"/> <location filename="../src/window_main.cpp" line="215"/>
<source>You are trying to connect to an obsolete server. Please downgrade your Cockatrice version or connect to a suitable server. <source>You are trying to connect to an obsolete server. Please downgrade your Cockatrice version or connect to a suitable server.
Local version is %1, remote version is %2.</source> Local version is %1, remote version is %2.</source>
<translation>Está a tentar ligar-se a um servidor obsoleto. Por favor faça downgrade à sua versão do Cockatrice ou ligue-se a servidor adequado. <translation>Está a tentar ligar-se a um servidor obsoleto. Por favor faça downgrade à sua versão do Cockatrice ou ligue-se a servidor adequado.
Versão local é %1, versão remota é %2.</translation> Versão local é %1, versão remota é %2.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="210"/> <location filename="../src/window_main.cpp" line="217"/>
<source>Your Cockatrice client is obsolete. Please update your Cockatrice version. <source>Your Cockatrice client is obsolete. Please update your Cockatrice version.
Local version is %1, remote version is %2.</source> Local version is %1, remote version is %2.</source>
<translation>A sua versão do Cockatrice é obsoleta. Por favor actualize-a. <translation>A sua versão do Cockatrice é obsoleta. Por favor actualize-a.
Versão local é %1, versão remota é %2.</translation> Versão local é %1, versão remota é %2.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="216"/> <location filename="../src/window_main.cpp" line="223"/>
<source>Connecting to %1...</source> <source>Connecting to %1...</source>
<translation>Ligando a %1...</translation> <translation>Ligando a %1...</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="217"/> <location filename="../src/window_main.cpp" line="224"/>
<source>Disconnected</source> <source>Disconnected</source>
<translation>Desligado</translation> <translation>Desligado</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="218"/> <location filename="../src/window_main.cpp" line="225"/>
<source>Logged in at %1</source> <source>Logged in at %1</source>
<translation>Logado em %1</translation> <translation>Logado em %1</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="227"/> <location filename="../src/window_main.cpp" line="234"/>
<source>&amp;Connect...</source> <source>&amp;Connect...</source>
<translation>&amp;Ligar...</translation> <translation>&amp;Ligar...</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="228"/> <location filename="../src/window_main.cpp" line="235"/>
<source>&amp;Disconnect</source> <source>&amp;Disconnect</source>
<translation>&amp;Desligar</translation> <translation>&amp;Desligar</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="229"/> <location filename="../src/window_main.cpp" line="236"/>
<source>Start &amp;local game...</source> <source>Start &amp;local game...</source>
<translation>Começar &amp;jogo local...</translation> <translation>Começar &amp;jogo local...</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="230"/> <location filename="../src/window_main.cpp" line="237"/>
<source>&amp;Deck editor</source> <source>&amp;Deck editor</source>
<translation>&amp;Editor de decks</translation> <translation>&amp;Editor de decks</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="231"/> <location filename="../src/window_main.cpp" line="238"/>
<source>&amp;Full screen</source> <source>&amp;Full screen</source>
<translation>Ecrã &amp;inteiro</translation> <translation>Ecrã &amp;inteiro</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="232"/> <location filename="../src/window_main.cpp" line="239"/>
<source>Ctrl+F</source> <source>Ctrl+F</source>
<translation>Ctrl+F</translation> <translation>Ctrl+F</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="233"/> <location filename="../src/window_main.cpp" line="240"/>
<source>&amp;Settings...</source> <source>&amp;Settings...</source>
<translation>&amp;Configurações...</translation> <translation>&amp;Configurações...</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="234"/> <location filename="../src/window_main.cpp" line="241"/>
<source>&amp;Exit</source> <source>&amp;Exit</source>
<translation>&amp;Sair</translation> <translation>&amp;Sair</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="236"/> <location filename="../src/window_main.cpp" line="243"/>
<source>&amp;Cockatrice</source> <source>&amp;Cockatrice</source>
<translation>&amp;Cockatrice</translation> <translation>&amp;Cockatrice</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="238"/> <location filename="../src/window_main.cpp" line="245"/>
<source>&amp;About Cockatrice</source> <source>&amp;About Cockatrice</source>
<translation>S&amp;obre o Cockatrice</translation> <translation>S&amp;obre o Cockatrice</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="239"/> <location filename="../src/window_main.cpp" line="246"/>
<source>&amp;Help</source> <source>&amp;Help</source>
<translation>&amp;Ajuda</translation> <translation>&amp;Ajuda</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="317"/> <location filename="../src/window_main.cpp" line="325"/>
<source>Are you sure?</source> <source>Are you sure?</source>
<translation>Tens a certeza?</translation> <translation>Tens a certeza?</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="317"/> <location filename="../src/window_main.cpp" line="325"/>
<source>There are still open games. Are you sure you want to quit?</source> <source>There are still open games. Are you sure you want to quit?</source>
<translation>Ainda jogos abertos. Tem a certeza que deseja sair?</translation> <translation>Ainda jogos abertos. Tem a certeza que deseja sair?</translation>
</message> </message>
@ -2986,40 +3006,73 @@ Versão local é %1, versão remota é %2.</translation>
<translation>Nome longo</translation> <translation>Nome longo</translation>
</message> </message>
</context> </context>
<context>
<name>ShutdownDialog</name>
<message>
<location filename="../src/tab_admin.cpp" line="17"/>
<source>&amp;Reason for shutdown:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="20"/>
<source>&amp;Time until shutdown (minutes):</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="26"/>
<source>&amp;OK</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="30"/>
<source>&amp;Cancel</source>
<translation type="unfinished">&amp;Cancelar</translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="46"/>
<source>Shut down server</source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>TabAdmin</name> <name>TabAdmin</name>
<message> <message>
<location filename="../src/tab_admin.cpp" line="40"/> <location filename="../src/tab_admin.cpp" line="93"/>
<source>Update server &amp;message</source> <source>Update server &amp;message</source>
<translation>&amp;Actualizar mensagem do servidor</translation> <translation>&amp;Actualizar mensagem do servidor</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="41"/> <location filename="../src/tab_admin.cpp" line="94"/>
<source>&amp;Shut down server</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="95"/>
<source>Server administration functions</source> <source>Server administration functions</source>
<translation>Funções do administrador do servidor</translation> <translation>Funções do administrador do servidor</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="43"/> <location filename="../src/tab_admin.cpp" line="97"/>
<source>&amp;Unlock functions</source> <source>&amp;Unlock functions</source>
<translation>&amp;Desbloquear funções</translation> <translation>&amp;Desbloquear funções</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="44"/> <location filename="../src/tab_admin.cpp" line="98"/>
<source>&amp;Lock functions</source> <source>&amp;Lock functions</source>
<translation>&amp;Bloquear funções</translation> <translation>&amp;Bloquear funções</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="54"/> <location filename="../src/tab_admin.cpp" line="115"/>
<source>Unlock administration functions</source> <source>Unlock administration functions</source>
<translation>Desbloquear funções de administração</translation> <translation>Desbloquear funções de administração</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="54"/> <location filename="../src/tab_admin.cpp" line="115"/>
<source>Do you really want to unlock the administration functions?</source> <source>Do you really want to unlock the administration functions?</source>
<translation>Quer mesmo desbloquear as funçõesde administração?</translation> <translation>Quer mesmo desbloquear as funçõesde administração?</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.h" line="27"/> <location filename="../src/tab_admin.h" line="43"/>
<source>Administration</source> <source>Administration</source>
<translation>Administração</translation> <translation>Administração</translation>
</message> </message>

View file

@ -1544,220 +1544,241 @@
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="60"/> <location filename="../src/window_main.cpp" line="60"/>
<source>Scheduled server shutdown.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/window_main.cpp" line="62"/>
<source>Unknown reason.</source> <source>Unknown reason.</source>
<translation>Неизвестная причина.</translation> <translation>Неизвестная причина.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="61"/> <location filename="../src/window_main.cpp" line="63"/>
<source>Connection closed</source> <source>Connection closed</source>
<translation>Соединение прервано</translation> <translation>Соединение прервано</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="61"/> <location filename="../src/window_main.cpp" line="63"/>
<source>The server has terminated your connection. <source>The server has terminated your connection.
Reason: %1</source> Reason: %1</source>
<translation>Ваше подключение было прервано сервером. <translation>Ваше подключение было прервано сервером.
Причина: %1</translation> Причина: %1</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="110"/> <location filename="../src/window_main.cpp" line="68"/>
<source>Scheduled server shutdown</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location filename="../src/window_main.cpp" line="68"/>
<source>The server is going to be restarted in %n minute(s).
All running games will be lost.
Reason for shutdown: %1</source>
<translation type="unfinished">
<numerusform></numerusform>
<numerusform></numerusform>
<numerusform></numerusform>
</translation>
</message>
<message>
<location filename="../src/window_main.cpp" line="117"/>
<source>Number of players</source> <source>Number of players</source>
<translation>Количество игроков</translation> <translation>Количество игроков</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="110"/> <location filename="../src/window_main.cpp" line="117"/>
<source>Please enter the number of players.</source> <source>Please enter the number of players.</source>
<translation>Введите количество игроков.</translation> <translation>Введите количество игроков.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="119"/> <location filename="../src/window_main.cpp" line="126"/>
<location filename="../src/window_main.cpp" line="125"/> <location filename="../src/window_main.cpp" line="132"/>
<source>Player %1</source> <source>Player %1</source>
<translation>Игрок %1</translation> <translation>Игрок %1</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="170"/> <location filename="../src/window_main.cpp" line="177"/>
<source>About Cockatrice</source> <source>About Cockatrice</source>
<translation>О программе</translation> <translation>О программе</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="172"/> <location filename="../src/window_main.cpp" line="179"/>
<source>Version %1</source> <source>Version %1</source>
<translation>Версия %1</translation> <translation>Версия %1</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="173"/> <location filename="../src/window_main.cpp" line="180"/>
<source>Authors:</source> <source>Authors:</source>
<translation>Разработчики:</translation> <translation>Разработчики:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="174"/> <location filename="../src/window_main.cpp" line="181"/>
<source>Translators:</source> <source>Translators:</source>
<translation>Переводчики:</translation> <translation>Переводчики:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="175"/> <location filename="../src/window_main.cpp" line="182"/>
<source>Spanish:</source> <source>Spanish:</source>
<translation>Испанский:</translation> <translation>Испанский:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="176"/> <location filename="../src/window_main.cpp" line="183"/>
<source>Portugese (Portugal):</source> <source>Portugese (Portugal):</source>
<translation>Португальский:</translation> <translation>Португальский:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="177"/> <location filename="../src/window_main.cpp" line="184"/>
<source>Portugese (Brazil):</source> <source>Portugese (Brazil):</source>
<translation>Португальский (Brazil):</translation> <translation>Португальский (Brazil):</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="178"/> <location filename="../src/window_main.cpp" line="185"/>
<source>French:</source> <source>French:</source>
<translation>Французский:</translation> <translation>Французский:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="179"/> <location filename="../src/window_main.cpp" line="186"/>
<source>Japanese:</source> <source>Japanese:</source>
<translation>Японский:</translation> <translation>Японский:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="180"/> <location filename="../src/window_main.cpp" line="187"/>
<source>Russian:</source> <source>Russian:</source>
<translation>Русский:</translation> <translation>Русский:</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="181"/> <location filename="../src/window_main.cpp" line="188"/>
<source>Czech:</source> <source>Czech:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="182"/> <location filename="../src/window_main.cpp" line="189"/>
<source>Slovak:</source> <source>Slovak:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="188"/>
<location filename="../src/window_main.cpp" line="194"/>
<location filename="../src/window_main.cpp" line="195"/> <location filename="../src/window_main.cpp" line="195"/>
<location filename="../src/window_main.cpp" line="201"/>
<location filename="../src/window_main.cpp" line="202"/> <location filename="../src/window_main.cpp" line="202"/>
<location filename="../src/window_main.cpp" line="208"/> <location filename="../src/window_main.cpp" line="209"/>
<location filename="../src/window_main.cpp" line="210"/> <location filename="../src/window_main.cpp" line="215"/>
<location filename="../src/window_main.cpp" line="217"/>
<source>Error</source> <source>Error</source>
<translation>Ошибка</translation> <translation>Ошибка</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="188"/> <location filename="../src/window_main.cpp" line="195"/>
<source>Server timeout</source> <source>Server timeout</source>
<translation>Временная ошибка</translation> <translation>Временная ошибка</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="194"/> <location filename="../src/window_main.cpp" line="201"/>
<source>Invalid login data.</source> <source>Invalid login data.</source>
<translation>Неверный логин/пароль.</translation> <translation>Неверный логин/пароль.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="195"/> <location filename="../src/window_main.cpp" line="202"/>
<source>There is already an active session using this user name. <source>There is already an active session using this user name.
Please close that session first and re-login.</source> Please close that session first and re-login.</source>
<translation>Пользователь с таким именем уже подключен. <translation>Пользователь с таким именем уже подключен.
Пожалуйста, закройте это подключение и войдите заново.</translation> Пожалуйста, закройте это подключение и войдите заново.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="202"/> <location filename="../src/window_main.cpp" line="209"/>
<source>Socket error: %1</source> <source>Socket error: %1</source>
<translation>Ошибка сокета: %1</translation> <translation>Ошибка сокета: %1</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="208"/> <location filename="../src/window_main.cpp" line="215"/>
<source>You are trying to connect to an obsolete server. Please downgrade your Cockatrice version or connect to a suitable server. <source>You are trying to connect to an obsolete server. Please downgrade your Cockatrice version or connect to a suitable server.
Local version is %1, remote version is %2.</source> Local version is %1, remote version is %2.</source>
<translation>Вы пытаетесь подключиться к несуществующему серверу. Пожалуйста, обновите Cockatrice или выберите другой сервер. <translation>Вы пытаетесь подключиться к несуществующему серверу. Пожалуйста, обновите Cockatrice или выберите другой сервер.
Локальная версия %1, удаленная версия %2.</translation> Локальная версия %1, удаленная версия %2.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="210"/> <location filename="../src/window_main.cpp" line="217"/>
<source>Your Cockatrice client is obsolete. Please update your Cockatrice version. <source>Your Cockatrice client is obsolete. Please update your Cockatrice version.
Local version is %1, remote version is %2.</source> Local version is %1, remote version is %2.</source>
<translation>Ваш клиент Cockatrice устарел. Пожалуйста, обновите Cockatrice. <translation>Ваш клиент Cockatrice устарел. Пожалуйста, обновите Cockatrice.
Локальная версия %1, удаленная версия %2.</translation> Локальная версия %1, удаленная версия %2.</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="216"/> <location filename="../src/window_main.cpp" line="223"/>
<source>Connecting to %1...</source> <source>Connecting to %1...</source>
<translation>Подключение к %1...</translation> <translation>Подключение к %1...</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="217"/> <location filename="../src/window_main.cpp" line="224"/>
<source>Disconnected</source> <source>Disconnected</source>
<translation>Подключение прервано</translation> <translation>Подключение прервано</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="218"/> <location filename="../src/window_main.cpp" line="225"/>
<source>Logged in at %1</source> <source>Logged in at %1</source>
<translation>Подключено к %1</translation> <translation>Подключено к %1</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="227"/> <location filename="../src/window_main.cpp" line="234"/>
<source>&amp;Connect...</source> <source>&amp;Connect...</source>
<translation>&amp;Подключение...</translation> <translation>&amp;Подключение...</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="228"/> <location filename="../src/window_main.cpp" line="235"/>
<source>&amp;Disconnect</source> <source>&amp;Disconnect</source>
<translation>П&amp;рервать подключение</translation> <translation>П&amp;рервать подключение</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="229"/> <location filename="../src/window_main.cpp" line="236"/>
<source>Start &amp;local game...</source> <source>Start &amp;local game...</source>
<translation>&amp;Начать локальную игру...</translation> <translation>&amp;Начать локальную игру...</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="230"/> <location filename="../src/window_main.cpp" line="237"/>
<source>&amp;Deck editor</source> <source>&amp;Deck editor</source>
<translation>Редактор &amp;колод</translation> <translation>Редактор &amp;колод</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="231"/> <location filename="../src/window_main.cpp" line="238"/>
<source>&amp;Full screen</source> <source>&amp;Full screen</source>
<translation>П&amp;олный экран</translation> <translation>П&amp;олный экран</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="232"/> <location filename="../src/window_main.cpp" line="239"/>
<source>Ctrl+F</source> <source>Ctrl+F</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="233"/> <location filename="../src/window_main.cpp" line="240"/>
<source>&amp;Settings...</source> <source>&amp;Settings...</source>
<translation>Н&amp;астройки</translation> <translation>Н&amp;астройки</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="234"/> <location filename="../src/window_main.cpp" line="241"/>
<source>&amp;Exit</source> <source>&amp;Exit</source>
<translation>&amp;Выход</translation> <translation>&amp;Выход</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="236"/> <location filename="../src/window_main.cpp" line="243"/>
<source>&amp;Cockatrice</source> <source>&amp;Cockatrice</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="238"/> <location filename="../src/window_main.cpp" line="245"/>
<source>&amp;About Cockatrice</source> <source>&amp;About Cockatrice</source>
<translation>О про&amp;грамме</translation> <translation>О про&amp;грамме</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="239"/> <location filename="../src/window_main.cpp" line="246"/>
<source>&amp;Help</source> <source>&amp;Help</source>
<translation>&amp;Справка</translation> <translation>&amp;Справка</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="317"/> <location filename="../src/window_main.cpp" line="325"/>
<source>Are you sure?</source> <source>Are you sure?</source>
<translation>Вы уверены?</translation> <translation>Вы уверены?</translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="317"/> <location filename="../src/window_main.cpp" line="325"/>
<source>There are still open games. Are you sure you want to quit?</source> <source>There are still open games. Are you sure you want to quit?</source>
<translation>Вы подключены к игре. Выйти?</translation> <translation>Вы подключены к игре. Выйти?</translation>
</message> </message>
@ -2903,40 +2924,73 @@ Local version is %1, remote version is %2.</source>
<translation>Полное название</translation> <translation>Полное название</translation>
</message> </message>
</context> </context>
<context>
<name>ShutdownDialog</name>
<message>
<location filename="../src/tab_admin.cpp" line="17"/>
<source>&amp;Reason for shutdown:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="20"/>
<source>&amp;Time until shutdown (minutes):</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="26"/>
<source>&amp;OK</source>
<translation type="unfinished">&amp;Ок</translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="30"/>
<source>&amp;Cancel</source>
<translation type="unfinished">&amp;Отмена</translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="46"/>
<source>Shut down server</source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>TabAdmin</name> <name>TabAdmin</name>
<message> <message>
<location filename="../src/tab_admin.cpp" line="40"/> <location filename="../src/tab_admin.cpp" line="93"/>
<source>Update server &amp;message</source> <source>Update server &amp;message</source>
<translation>Обновить сооб&amp;щения сервера</translation> <translation>Обновить сооб&amp;щения сервера</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="41"/> <location filename="../src/tab_admin.cpp" line="94"/>
<source>&amp;Shut down server</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="95"/>
<source>Server administration functions</source> <source>Server administration functions</source>
<translation>Функции администрирования сервера</translation> <translation>Функции администрирования сервера</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="43"/> <location filename="../src/tab_admin.cpp" line="97"/>
<source>&amp;Unlock functions</source> <source>&amp;Unlock functions</source>
<translation>&amp;Разблокировать функции</translation> <translation>&amp;Разблокировать функции</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="44"/> <location filename="../src/tab_admin.cpp" line="98"/>
<source>&amp;Lock functions</source> <source>&amp;Lock functions</source>
<translation>&amp;Заблокировать функции</translation> <translation>&amp;Заблокировать функции</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="54"/> <location filename="../src/tab_admin.cpp" line="115"/>
<source>Unlock administration functions</source> <source>Unlock administration functions</source>
<translation>Разблокировать административные права</translation> <translation>Разблокировать административные права</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="54"/> <location filename="../src/tab_admin.cpp" line="115"/>
<source>Do you really want to unlock the administration functions?</source> <source>Do you really want to unlock the administration functions?</source>
<translation>Вы действительно хотите разблокировать административные права?</translation> <translation>Вы действительно хотите разблокировать административные права?</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.h" line="27"/> <location filename="../src/tab_admin.h" line="43"/>
<source>Administration</source> <source>Administration</source>
<translation>Администрирование</translation> <translation>Администрирование</translation>
</message> </message>

View file

@ -1390,216 +1390,237 @@
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="60"/> <location filename="../src/window_main.cpp" line="60"/>
<source>Scheduled server shutdown.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/window_main.cpp" line="62"/>
<source>Unknown reason.</source> <source>Unknown reason.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="61"/> <location filename="../src/window_main.cpp" line="63"/>
<source>Connection closed</source> <source>Connection closed</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="61"/> <location filename="../src/window_main.cpp" line="63"/>
<source>The server has terminated your connection. <source>The server has terminated your connection.
Reason: %1</source> Reason: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="110"/> <location filename="../src/window_main.cpp" line="68"/>
<source>Scheduled server shutdown</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location filename="../src/window_main.cpp" line="68"/>
<source>The server is going to be restarted in %n minute(s).
All running games will be lost.
Reason for shutdown: %1</source>
<translation type="unfinished">
<numerusform></numerusform>
<numerusform></numerusform>
<numerusform></numerusform>
</translation>
</message>
<message>
<location filename="../src/window_main.cpp" line="117"/>
<source>Number of players</source> <source>Number of players</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="110"/> <location filename="../src/window_main.cpp" line="117"/>
<source>Please enter the number of players.</source> <source>Please enter the number of players.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="119"/> <location filename="../src/window_main.cpp" line="126"/>
<location filename="../src/window_main.cpp" line="125"/> <location filename="../src/window_main.cpp" line="132"/>
<source>Player %1</source> <source>Player %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="170"/> <location filename="../src/window_main.cpp" line="177"/>
<source>About Cockatrice</source> <source>About Cockatrice</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="172"/> <location filename="../src/window_main.cpp" line="179"/>
<source>Version %1</source> <source>Version %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="173"/> <location filename="../src/window_main.cpp" line="180"/>
<source>Authors:</source> <source>Authors:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="174"/> <location filename="../src/window_main.cpp" line="181"/>
<source>Translators:</source> <source>Translators:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="175"/> <location filename="../src/window_main.cpp" line="182"/>
<source>Spanish:</source> <source>Spanish:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="176"/> <location filename="../src/window_main.cpp" line="183"/>
<source>Portugese (Portugal):</source> <source>Portugese (Portugal):</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="177"/> <location filename="../src/window_main.cpp" line="184"/>
<source>Portugese (Brazil):</source> <source>Portugese (Brazil):</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="178"/> <location filename="../src/window_main.cpp" line="185"/>
<source>French:</source> <source>French:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="179"/> <location filename="../src/window_main.cpp" line="186"/>
<source>Japanese:</source> <source>Japanese:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="180"/> <location filename="../src/window_main.cpp" line="187"/>
<source>Russian:</source> <source>Russian:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="181"/> <location filename="../src/window_main.cpp" line="188"/>
<source>Czech:</source> <source>Czech:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="182"/> <location filename="../src/window_main.cpp" line="189"/>
<source>Slovak:</source> <source>Slovak:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="188"/>
<location filename="../src/window_main.cpp" line="194"/>
<location filename="../src/window_main.cpp" line="195"/> <location filename="../src/window_main.cpp" line="195"/>
<location filename="../src/window_main.cpp" line="201"/>
<location filename="../src/window_main.cpp" line="202"/> <location filename="../src/window_main.cpp" line="202"/>
<location filename="../src/window_main.cpp" line="208"/> <location filename="../src/window_main.cpp" line="209"/>
<location filename="../src/window_main.cpp" line="210"/> <location filename="../src/window_main.cpp" line="215"/>
<location filename="../src/window_main.cpp" line="217"/>
<source>Error</source> <source>Error</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="188"/> <location filename="../src/window_main.cpp" line="195"/>
<source>Server timeout</source> <source>Server timeout</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="194"/> <location filename="../src/window_main.cpp" line="201"/>
<source>Invalid login data.</source> <source>Invalid login data.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="195"/> <location filename="../src/window_main.cpp" line="202"/>
<source>There is already an active session using this user name. <source>There is already an active session using this user name.
Please close that session first and re-login.</source> Please close that session first and re-login.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="202"/> <location filename="../src/window_main.cpp" line="209"/>
<source>Socket error: %1</source> <source>Socket error: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="208"/> <location filename="../src/window_main.cpp" line="215"/>
<source>You are trying to connect to an obsolete server. Please downgrade your Cockatrice version or connect to a suitable server. <source>You are trying to connect to an obsolete server. Please downgrade your Cockatrice version or connect to a suitable server.
Local version is %1, remote version is %2.</source> Local version is %1, remote version is %2.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="210"/> <location filename="../src/window_main.cpp" line="217"/>
<source>Your Cockatrice client is obsolete. Please update your Cockatrice version. <source>Your Cockatrice client is obsolete. Please update your Cockatrice version.
Local version is %1, remote version is %2.</source> Local version is %1, remote version is %2.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="216"/> <location filename="../src/window_main.cpp" line="223"/>
<source>Connecting to %1...</source> <source>Connecting to %1...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="217"/> <location filename="../src/window_main.cpp" line="224"/>
<source>Disconnected</source> <source>Disconnected</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="218"/> <location filename="../src/window_main.cpp" line="225"/>
<source>Logged in at %1</source> <source>Logged in at %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="227"/> <location filename="../src/window_main.cpp" line="234"/>
<source>&amp;Connect...</source> <source>&amp;Connect...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="228"/> <location filename="../src/window_main.cpp" line="235"/>
<source>&amp;Disconnect</source> <source>&amp;Disconnect</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="229"/> <location filename="../src/window_main.cpp" line="236"/>
<source>Start &amp;local game...</source> <source>Start &amp;local game...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="230"/> <location filename="../src/window_main.cpp" line="237"/>
<source>&amp;Deck editor</source> <source>&amp;Deck editor</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="231"/> <location filename="../src/window_main.cpp" line="238"/>
<source>&amp;Full screen</source> <source>&amp;Full screen</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="232"/> <location filename="../src/window_main.cpp" line="239"/>
<source>Ctrl+F</source> <source>Ctrl+F</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="233"/> <location filename="../src/window_main.cpp" line="240"/>
<source>&amp;Settings...</source> <source>&amp;Settings...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="234"/> <location filename="../src/window_main.cpp" line="241"/>
<source>&amp;Exit</source> <source>&amp;Exit</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="236"/> <location filename="../src/window_main.cpp" line="243"/>
<source>&amp;Cockatrice</source> <source>&amp;Cockatrice</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="238"/> <location filename="../src/window_main.cpp" line="245"/>
<source>&amp;About Cockatrice</source> <source>&amp;About Cockatrice</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="239"/> <location filename="../src/window_main.cpp" line="246"/>
<source>&amp;Help</source> <source>&amp;Help</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="317"/> <location filename="../src/window_main.cpp" line="325"/>
<source>Are you sure?</source> <source>Are you sure?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/window_main.cpp" line="317"/> <location filename="../src/window_main.cpp" line="325"/>
<source>There are still open games. Are you sure you want to quit?</source> <source>There are still open games. Are you sure you want to quit?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -2705,40 +2726,73 @@ Local version is %1, remote version is %2.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context>
<name>ShutdownDialog</name>
<message>
<location filename="../src/tab_admin.cpp" line="17"/>
<source>&amp;Reason for shutdown:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="20"/>
<source>&amp;Time until shutdown (minutes):</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="26"/>
<source>&amp;OK</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="30"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="46"/>
<source>Shut down server</source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>TabAdmin</name> <name>TabAdmin</name>
<message> <message>
<location filename="../src/tab_admin.cpp" line="40"/> <location filename="../src/tab_admin.cpp" line="93"/>
<source>Update server &amp;message</source> <source>Update server &amp;message</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="41"/> <location filename="../src/tab_admin.cpp" line="94"/>
<source>&amp;Shut down server</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tab_admin.cpp" line="95"/>
<source>Server administration functions</source> <source>Server administration functions</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="43"/> <location filename="../src/tab_admin.cpp" line="97"/>
<source>&amp;Unlock functions</source> <source>&amp;Unlock functions</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="44"/> <location filename="../src/tab_admin.cpp" line="98"/>
<source>&amp;Lock functions</source> <source>&amp;Lock functions</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="54"/> <location filename="../src/tab_admin.cpp" line="115"/>
<source>Unlock administration functions</source> <source>Unlock administration functions</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.cpp" line="54"/> <location filename="../src/tab_admin.cpp" line="115"/>
<source>Do you really want to unlock the administration functions?</source> <source>Do you really want to unlock the administration functions?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_admin.h" line="27"/> <location filename="../src/tab_admin.h" line="43"/>
<source>Administration</source> <source>Administration</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View file

@ -167,6 +167,15 @@ public:
void setGameId(int _gameId) { static_cast<SerializableItem_Int *>(itemMap.value("game_id"))->setData(_gameId); } void setGameId(int _gameId) { static_cast<SerializableItem_Int *>(itemMap.value("game_id"))->setData(_gameId); }
}; };
class ModeratorCommand : public Command {
Q_OBJECT
public:
ModeratorCommand(const QString &_cmdName)
: Command(_cmdName)
{
}
};
class AdminCommand : public Command { class AdminCommand : public Command {
Q_OBJECT Q_OBJECT
public: public:

View file

@ -65,19 +65,21 @@ ItemId_Event_DumpZone = 1063,
ItemId_Event_StopDumpZone = 1064, ItemId_Event_StopDumpZone = 1064,
ItemId_Event_RemoveFromList = 1065, ItemId_Event_RemoveFromList = 1065,
ItemId_Event_ServerMessage = 1066, ItemId_Event_ServerMessage = 1066,
ItemId_Event_ConnectionClosed = 1067, ItemId_Event_ServerShutdown = 1067,
ItemId_Event_Message = 1068, ItemId_Event_ConnectionClosed = 1068,
ItemId_Event_GameJoined = 1069, ItemId_Event_Message = 1069,
ItemId_Event_UserLeft = 1070, ItemId_Event_GameJoined = 1070,
ItemId_Event_LeaveRoom = 1071, ItemId_Event_UserLeft = 1071,
ItemId_Event_RoomSay = 1072, ItemId_Event_LeaveRoom = 1072,
ItemId_Context_ReadyStart = 1073, ItemId_Event_RoomSay = 1073,
ItemId_Context_Concede = 1074, ItemId_Context_ReadyStart = 1074,
ItemId_Context_DeckSelect = 1075, ItemId_Context_Concede = 1075,
ItemId_Context_UndoDraw = 1076, ItemId_Context_DeckSelect = 1076,
ItemId_Context_MoveCard = 1077, ItemId_Context_UndoDraw = 1077,
ItemId_Context_Mulligan = 1078, ItemId_Context_MoveCard = 1078,
ItemId_Command_UpdateServerMessage = 1079, ItemId_Context_Mulligan = 1079,
ItemId_Command_BanFromServer = 1080, ItemId_Command_UpdateServerMessage = 1080,
ItemId_Other = 1081 ItemId_Command_ShutdownServer = 1081,
ItemId_Command_BanFromServer = 1082,
ItemId_Other = 1083
}; };

View file

@ -398,6 +398,12 @@ Event_ServerMessage::Event_ServerMessage(const QString &_message)
{ {
insertItem(new SerializableItem_String("message", _message)); insertItem(new SerializableItem_String("message", _message));
} }
Event_ServerShutdown::Event_ServerShutdown(const QString &_reason, int _minutes)
: GenericEvent("server_shutdown")
{
insertItem(new SerializableItem_String("reason", _reason));
insertItem(new SerializableItem_Int("minutes", _minutes));
}
Event_ConnectionClosed::Event_ConnectionClosed(const QString &_reason) Event_ConnectionClosed::Event_ConnectionClosed(const QString &_reason)
: GenericEvent("connection_closed") : GenericEvent("connection_closed")
{ {
@ -467,8 +473,14 @@ Command_UpdateServerMessage::Command_UpdateServerMessage()
: AdminCommand("update_server_message") : AdminCommand("update_server_message")
{ {
} }
Command_ShutdownServer::Command_ShutdownServer(const QString &_reason, int _minutes)
: AdminCommand("shutdown_server")
{
insertItem(new SerializableItem_String("reason", _reason));
insertItem(new SerializableItem_Int("minutes", _minutes));
}
Command_BanFromServer::Command_BanFromServer(const QString &_userName, int _minutes) Command_BanFromServer::Command_BanFromServer(const QString &_userName, int _minutes)
: AdminCommand("ban_from_server") : ModeratorCommand("ban_from_server")
{ {
insertItem(new SerializableItem_String("user_name", _userName)); insertItem(new SerializableItem_String("user_name", _userName));
insertItem(new SerializableItem_Int("minutes", _minutes)); insertItem(new SerializableItem_Int("minutes", _minutes));
@ -541,6 +553,7 @@ void ProtocolItem::initializeHashAuto()
itemNameHash.insert("game_eventstop_dump_zone", Event_StopDumpZone::newItem); itemNameHash.insert("game_eventstop_dump_zone", Event_StopDumpZone::newItem);
itemNameHash.insert("generic_eventremove_from_list", Event_RemoveFromList::newItem); itemNameHash.insert("generic_eventremove_from_list", Event_RemoveFromList::newItem);
itemNameHash.insert("generic_eventserver_message", Event_ServerMessage::newItem); itemNameHash.insert("generic_eventserver_message", Event_ServerMessage::newItem);
itemNameHash.insert("generic_eventserver_shutdown", Event_ServerShutdown::newItem);
itemNameHash.insert("generic_eventconnection_closed", Event_ConnectionClosed::newItem); itemNameHash.insert("generic_eventconnection_closed", Event_ConnectionClosed::newItem);
itemNameHash.insert("generic_eventmessage", Event_Message::newItem); itemNameHash.insert("generic_eventmessage", Event_Message::newItem);
itemNameHash.insert("generic_eventgame_joined", Event_GameJoined::newItem); itemNameHash.insert("generic_eventgame_joined", Event_GameJoined::newItem);
@ -554,5 +567,6 @@ void ProtocolItem::initializeHashAuto()
itemNameHash.insert("game_event_contextmove_card", Context_MoveCard::newItem); itemNameHash.insert("game_event_contextmove_card", Context_MoveCard::newItem);
itemNameHash.insert("game_event_contextmulligan", Context_Mulligan::newItem); itemNameHash.insert("game_event_contextmulligan", Context_Mulligan::newItem);
itemNameHash.insert("cmdupdate_server_message", Command_UpdateServerMessage::newItem); itemNameHash.insert("cmdupdate_server_message", Command_UpdateServerMessage::newItem);
itemNameHash.insert("cmdshutdown_server", Command_ShutdownServer::newItem);
itemNameHash.insert("cmdban_from_server", Command_BanFromServer::newItem); itemNameHash.insert("cmdban_from_server", Command_BanFromServer::newItem);
} }

View file

@ -64,6 +64,7 @@
3:stop_dump_zone:i,zone_owner_id:s,zone 3:stop_dump_zone:i,zone_owner_id:s,zone
4:remove_from_list:s,list:s,user_name 4:remove_from_list:s,list:s,user_name
4:server_message:s,message 4:server_message:s,message
4:server_shutdown:s,reason:i,minutes
4:connection_closed:s,reason 4:connection_closed:s,reason
4:message:s,sender_name:s,receiver_name:s,text 4:message:s,sender_name:s,receiver_name:s,text
4:game_joined:i,game_id:s,game_description:i,player_id:b,spectator:b,spectators_can_talk:b,spectators_see_everything:b,resuming 4:game_joined:i,game_id:s,game_description:i,player_id:b,spectator:b,spectators_can_talk:b,spectators_see_everything:b,resuming
@ -77,4 +78,5 @@
6:move_card 6:move_card
6:mulligan:i,number 6:mulligan:i,number
7:update_server_message 7:update_server_message
7:ban_from_server:s,user_name:i,minutes 7:shutdown_server:s,reason:i,minutes
8:ban_from_server:s,user_name:i,minutes

View file

@ -598,6 +598,15 @@ public:
static SerializableItem *newItem() { return new Event_ServerMessage; } static SerializableItem *newItem() { return new Event_ServerMessage; }
int getItemId() const { return ItemId_Event_ServerMessage; } int getItemId() const { return ItemId_Event_ServerMessage; }
}; };
class Event_ServerShutdown : public GenericEvent {
Q_OBJECT
public:
Event_ServerShutdown(const QString &_reason = QString(), int _minutes = -1);
QString getReason() const { return static_cast<SerializableItem_String *>(itemMap.value("reason"))->getData(); };
int getMinutes() const { return static_cast<SerializableItem_Int *>(itemMap.value("minutes"))->getData(); };
static SerializableItem *newItem() { return new Event_ServerShutdown; }
int getItemId() const { return ItemId_Event_ServerShutdown; }
};
class Event_ConnectionClosed : public GenericEvent { class Event_ConnectionClosed : public GenericEvent {
Q_OBJECT Q_OBJECT
public: public:
@ -706,7 +715,16 @@ public:
static SerializableItem *newItem() { return new Command_UpdateServerMessage; } static SerializableItem *newItem() { return new Command_UpdateServerMessage; }
int getItemId() const { return ItemId_Command_UpdateServerMessage; } int getItemId() const { return ItemId_Command_UpdateServerMessage; }
}; };
class Command_BanFromServer : public AdminCommand { class Command_ShutdownServer : public AdminCommand {
Q_OBJECT
public:
Command_ShutdownServer(const QString &_reason = QString(), int _minutes = -1);
QString getReason() const { return static_cast<SerializableItem_String *>(itemMap.value("reason"))->getData(); };
int getMinutes() const { return static_cast<SerializableItem_Int *>(itemMap.value("minutes"))->getData(); };
static SerializableItem *newItem() { return new Command_ShutdownServer; }
int getItemId() const { return ItemId_Command_ShutdownServer; }
};
class Command_BanFromServer : public ModeratorCommand {
Q_OBJECT Q_OBJECT
public: public:
Command_BanFromServer(const QString &_userName = QString(), int _minutes = -1); Command_BanFromServer(const QString &_userName = QString(), int _minutes = -1);

View file

@ -80,6 +80,13 @@ while (<file>) {
$parentConstructorCall = "$baseClass(\"$name1\")"; $parentConstructorCall = "$baseClass(\"$name1\")";
$constructorParamsH = ""; $constructorParamsH = "";
$constructorParamsCpp = ""; $constructorParamsCpp = "";
} elsif ($type == 8) {
$type = 'cmd';
$namePrefix = 'Command';
$baseClass = 'ModeratorCommand';
$parentConstructorCall = "$baseClass(\"$name1\")";
$constructorParamsH = "";
$constructorParamsCpp = "";
} }
$className = $namePrefix . '_' . $name2; $className = $namePrefix . '_' . $name2;
$itemEnum .= "ItemId_$className = " . ++$itemId . ",\n"; $itemEnum .= "ItemId_$className = " . ++$itemId . ",\n";

View file

@ -23,6 +23,7 @@
#include "server_room.h" #include "server_room.h"
#include "server_protocolhandler.h" #include "server_protocolhandler.h"
#include "protocol_datastructures.h" #include "protocol_datastructures.h"
#include <QCoreApplication>
#include <QDebug> #include <QDebug>
Server::Server(QObject *parent) Server::Server(QObject *parent)

View file

@ -142,6 +142,17 @@ ResponseCode Server_ProtocolHandler::processCommandHelper(Command *command, Comm
default: return RespInvalidCommand; default: return RespInvalidCommand;
} }
} }
ModeratorCommand *moderatorCommand = qobject_cast<ModeratorCommand *>(command);
if (moderatorCommand) {
qDebug() << "received ModeratorCommand";
if (!(userInfo->getUserLevel() & ServerInfo_User::IsModerator))
return RespLoginNeeded;
switch (command->getItemId()) {
case ItemId_Command_BanFromServer: return cmdBanFromServer(static_cast<Command_BanFromServer *>(command), cont);
default: return RespInvalidCommand;
}
}
AdminCommand *adminCommand = qobject_cast<AdminCommand *>(command); AdminCommand *adminCommand = qobject_cast<AdminCommand *>(command);
if (adminCommand) { if (adminCommand) {
qDebug() << "received AdminCommand"; qDebug() << "received AdminCommand";
@ -149,8 +160,8 @@ ResponseCode Server_ProtocolHandler::processCommandHelper(Command *command, Comm
return RespLoginNeeded; return RespLoginNeeded;
switch (command->getItemId()) { switch (command->getItemId()) {
case ItemId_Command_ShutdownServer: return cmdShutdownServer(static_cast<Command_ShutdownServer *>(command), cont);
case ItemId_Command_UpdateServerMessage: return cmdUpdateServerMessage(static_cast<Command_UpdateServerMessage *>(command), cont); case ItemId_Command_UpdateServerMessage: return cmdUpdateServerMessage(static_cast<Command_UpdateServerMessage *>(command), cont);
case ItemId_Command_BanFromServer: return cmdBanFromServer(static_cast<Command_BanFromServer *>(command), cont);
default: return RespInvalidCommand; default: return RespInvalidCommand;
} }
} }

View file

@ -87,8 +87,9 @@ private:
ResponseCode cmdDumpZone(Command_DumpZone *cmd, CommandContainer *cont, Server_Game *game, Server_Player *player); ResponseCode cmdDumpZone(Command_DumpZone *cmd, CommandContainer *cont, Server_Game *game, Server_Player *player);
ResponseCode cmdStopDumpZone(Command_StopDumpZone *cmd, CommandContainer *cont, Server_Game *game, Server_Player *player); ResponseCode cmdStopDumpZone(Command_StopDumpZone *cmd, CommandContainer *cont, Server_Game *game, Server_Player *player);
ResponseCode cmdRevealCards(Command_RevealCards *cmd, CommandContainer *cont, Server_Game *game, Server_Player *player); ResponseCode cmdRevealCards(Command_RevealCards *cmd, CommandContainer *cont, Server_Game *game, Server_Player *player);
virtual ResponseCode cmdUpdateServerMessage(Command_UpdateServerMessage *cmd, CommandContainer *cont) = 0;
virtual ResponseCode cmdBanFromServer(Command_BanFromServer *cmd, CommandContainer *cont) = 0; virtual ResponseCode cmdBanFromServer(Command_BanFromServer *cmd, CommandContainer *cont) = 0;
virtual ResponseCode cmdShutdownServer(Command_ShutdownServer *cmd, CommandContainer *cont) = 0;
virtual ResponseCode cmdUpdateServerMessage(Command_UpdateServerMessage *cmd, CommandContainer *cont) = 0;
ResponseCode processCommandHelper(Command *command, CommandContainer *cont); ResponseCode processCommandHelper(Command *command, CommandContainer *cont);
private slots: private slots:

View file

@ -130,12 +130,16 @@ int main(int argc, char *argv[])
testRNG(); testRNG();
Servatrice server(settings); Servatrice server(settings);
QObject::connect(&server, SIGNAL(destroyed()), &app, SLOT(quit()), Qt::QueuedConnection);
std::cerr << "-------------------------" << std::endl; std::cerr << "-------------------------" << std::endl;
std::cerr << "Server initialized." << std::endl; std::cerr << "Server initialized." << std::endl;
int retval = app.exec(); int retval = app.exec();
std::cerr << "Server quit." << std::endl;
std::cerr << "-------------------------" << std::endl;
delete rng; delete rng;
delete settings; delete settings;

View file

@ -44,7 +44,7 @@ void Servatrice_TcpServer::incomingConnection(int socketDescriptor)
} }
Servatrice::Servatrice(QSettings *_settings, QObject *parent) Servatrice::Servatrice(QSettings *_settings, QObject *parent)
: Server(parent), dbMutex(QMutex::Recursive), settings(_settings), uptime(0) : Server(parent), dbMutex(QMutex::Recursive), settings(_settings), uptime(0), shutdownTimer(0)
{ {
pingClock = new QTimer(this); pingClock = new QTimer(this);
connect(pingClock, SIGNAL(timeout()), this, SIGNAL(pingClockTimeout())); connect(pingClock, SIGNAL(timeout()), this, SIGNAL(pingClockTimeout()));
@ -119,6 +119,7 @@ Servatrice::Servatrice(QSettings *_settings, QObject *parent)
Servatrice::~Servatrice() Servatrice::~Servatrice()
{ {
prepareDestroy(); prepareDestroy();
QSqlDatabase::database().close();
} }
bool Servatrice::openDatabase() bool Servatrice::openDatabase()
@ -233,7 +234,7 @@ ServerInfo_User *Servatrice::evalUserQueryResult(const QSqlQuery &query, bool co
int userLevel = ServerInfo_User::IsUser | ServerInfo_User::IsRegistered; int userLevel = ServerInfo_User::IsUser | ServerInfo_User::IsRegistered;
if (is_admin == 1) if (is_admin == 1)
userLevel |= ServerInfo_User::IsAdmin; userLevel |= ServerInfo_User::IsAdmin | ServerInfo_User::IsModerator;
else if (is_admin == 2) else if (is_admin == 2)
userLevel |= ServerInfo_User::IsModerator; userLevel |= ServerInfo_User::IsModerator;
@ -388,4 +389,38 @@ void Servatrice::statusUpdate()
execSqlQuery(query); execSqlQuery(query);
} }
void Servatrice::scheduleShutdown(const QString &reason, int minutes)
{
QMutexLocker locker(&serverMutex);
shutdownReason = reason;
shutdownMinutes = minutes + 1;
if (minutes > 0) {
shutdownTimer = new QTimer;
connect(shutdownTimer, SIGNAL(timeout()), this, SLOT(shutdownTimeout()));
shutdownTimer->start(60000);
}
shutdownTimeout();
}
void Servatrice::shutdownTimeout()
{
QMutexLocker locker(&serverMutex);
--shutdownMinutes;
GenericEvent *event;
if (shutdownMinutes)
event = new Event_ServerShutdown(shutdownReason, shutdownMinutes);
else
event = new Event_ConnectionClosed("server_shutdown");
for (int i = 0; i < clients.size(); ++i)
clients[i]->sendProtocolItem(event, false);
delete event;
if (!shutdownMinutes)
deleteLater();
}
const QString Servatrice::versionString = "Servatrice 0.20110527"; const QString Servatrice::versionString = "Servatrice 0.20110527";

View file

@ -50,6 +50,7 @@ class Servatrice : public Server
private slots: private slots:
void statusUpdate(); void statusUpdate();
void updateBanTimer(); void updateBanTimer();
void shutdownTimeout();
public: public:
QMutex dbMutex; QMutex dbMutex;
static const QString versionString; static const QString versionString;
@ -76,6 +77,7 @@ public:
bool getUserBanned(Server_ProtocolHandler *client, const QString &userName) const; bool getUserBanned(Server_ProtocolHandler *client, const QString &userName) const;
void addAddressBan(const QHostAddress &address, int minutes) { addressBanList.append(QPair<QHostAddress, int>(address, minutes)); } void addAddressBan(const QHostAddress &address, int minutes) { addressBanList.append(QPair<QHostAddress, int>(address, minutes)); }
void addNameBan(const QString &name, int minutes) { nameBanList.append(QPair<QString, int>(name, minutes)); } void addNameBan(const QString &name, int minutes) { nameBanList.append(QPair<QString, int>(name, minutes)); }
void scheduleShutdown(const QString &reason, int minutes);
protected: protected:
bool userExists(const QString &user); bool userExists(const QString &user);
AuthenticationResult checkUserPassword(const QString &user, const QString &password); AuthenticationResult checkUserPassword(const QString &user, const QString &password);
@ -92,6 +94,10 @@ private:
int maxGameInactivityTime, maxPlayerInactivityTime; int maxGameInactivityTime, maxPlayerInactivityTime;
int maxUsersPerAddress, messageCountingInterval, maxMessageCountPerInterval, maxMessageSizePerInterval, maxGamesPerUser; int maxUsersPerAddress, messageCountingInterval, maxMessageCountPerInterval, maxMessageSizePerInterval, maxGamesPerUser;
ServerInfo_User *evalUserQueryResult(const QSqlQuery &query, bool complete); ServerInfo_User *evalUserQueryResult(const QSqlQuery &query, bool complete);
QString shutdownReason;
int shutdownMinutes;
QTimer *shutdownTimer;
}; };
#endif #endif

View file

@ -454,8 +454,8 @@ ResponseCode ServerSocketInterface::cmdDeckDownload(Command_DeckDownload *cmd, C
return RespNothing; return RespNothing;
} }
// ADMIN FUNCTIONS. // MODERATOR FUNCTIONS.
// Permission is checked by the calling function. // May be called by admins and moderators. Permission is checked by the calling function.
ResponseCode ServerSocketInterface::cmdUpdateServerMessage(Command_UpdateServerMessage * /*cmd*/, CommandContainer * /*cont*/) ResponseCode ServerSocketInterface::cmdUpdateServerMessage(Command_UpdateServerMessage * /*cmd*/, CommandContainer * /*cont*/)
{ {
@ -463,6 +463,15 @@ ResponseCode ServerSocketInterface::cmdUpdateServerMessage(Command_UpdateServerM
return RespOk; return RespOk;
} }
// ADMIN FUNCTIONS.
// Permission is checked by the calling function.
ResponseCode ServerSocketInterface::cmdShutdownServer(Command_ShutdownServer *cmd, CommandContainer * /*cont*/)
{
servatrice->scheduleShutdown(cmd->getReason(), cmd->getMinutes());
return RespOk;
}
ResponseCode ServerSocketInterface::cmdBanFromServer(Command_BanFromServer *cmd, CommandContainer * /*cont*/) ResponseCode ServerSocketInterface::cmdBanFromServer(Command_BanFromServer *cmd, CommandContainer * /*cont*/)
{ {
QString userName = cmd->getUserName(); QString userName = cmd->getUserName();

View file

@ -66,8 +66,9 @@ private:
ResponseCode cmdDeckUpload(Command_DeckUpload *cmd, CommandContainer *cont); ResponseCode cmdDeckUpload(Command_DeckUpload *cmd, CommandContainer *cont);
DeckList *getDeckFromDatabase(int deckId); DeckList *getDeckFromDatabase(int deckId);
ResponseCode cmdDeckDownload(Command_DeckDownload *cmd, CommandContainer *cont); ResponseCode cmdDeckDownload(Command_DeckDownload *cmd, CommandContainer *cont);
ResponseCode cmdUpdateServerMessage(Command_UpdateServerMessage *cmd, CommandContainer *cont);
ResponseCode cmdBanFromServer(Command_BanFromServer *cmd, CommandContainer *cont); ResponseCode cmdBanFromServer(Command_BanFromServer *cmd, CommandContainer *cont);
ResponseCode cmdShutdownServer(Command_ShutdownServer *cmd, CommandContainer *cont);
ResponseCode cmdUpdateServerMessage(Command_UpdateServerMessage *cmd, CommandContainer *cont);
public: public:
ServerSocketInterface(Servatrice *_server, QTcpSocket *_socket, QObject *parent = 0); ServerSocketInterface(Servatrice *_server, QTcpSocket *_socket, QObject *parent = 0);
~ServerSocketInterface(); ~ServerSocketInterface();