diff --git a/.gitignore b/.gitignore index a98fa226..55ecf1b0 100644 --- a/.gitignore +++ b/.gitignore @@ -4,5 +4,4 @@ build* .directory mysql.cnf .DS_Store -.idea/ -.tx/ +.idea/ \ No newline at end of file diff --git a/.tx/config b/.tx/config new file mode 100644 index 00000000..57a4f790 --- /dev/null +++ b/.tx/config @@ -0,0 +1,13 @@ +[main] +host = https://www.transifex.com + +[cockatrice.cockatrice] +file_filter = cockatrice/translations/cockatrice_.ts +source_file = cockatrice/translations/cockatrice_en.ts +source_lang = en + +[cockatrice.oracle] +file_filter = oracle/translations/oracle_.ts +source_file = oracle/translations/oracle_en.ts +source_lang = en + diff --git a/CMakeLists.txt b/CMakeLists.txt index c7ac1eb9..c4d239fe 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -221,7 +221,7 @@ option(WITH_CLIENT "build cockatrice" ON) if(WITH_CLIENT) add_subdirectory(cockatrice) add_subdirectory(sounds) - add_subdirectory(zonebg) + add_subdirectory(themes) SET(CPACK_INSTALL_CMAKE_PROJECTS "cockatrice;cockatrice;ALL;/" ${CPACK_INSTALL_CMAKE_PROJECTS}) endif() diff --git a/README.md b/README.md index d1177ca0..f7b6de23 100644 --- a/README.md +++ b/README.md @@ -63,9 +63,10 @@ To compile: The following flags can be passed to `cmake`: -- `-DWITH_SERVER=1` Build the server -- `-DWITH_CLIENT=0` Do not build the client -- `-DWITH_ORACLE=0` Do not build Oracle +- `-DWITH_SERVER=1` Build the server. +- `-DWITH_CLIENT=0` Do not build the client. +- `-DWITH_ORACLE=0` Do not build oracle. +- `-DPORTABLE=1` Build portable versions of client & oracle. - `-DWITH_QT4=1` Force compilation to use Qt4 instead of Qt5. - `-DCMAKE_BUILD_TYPE=Debug` Compile in debug mode. Enables extra logging output, debug symbols, and much more verbose compiler warnings. - `-DUPDATE_TRANSLATIONS=1` Configure `make` to update the translation .ts files for new strings in the source code. Note: Running `make clean` will remove the .ts files. diff --git a/cockatrice/CMakeLists.txt b/cockatrice/CMakeLists.txt index 8efc1e0e..eceeb590 100644 --- a/cockatrice/CMakeLists.txt +++ b/cockatrice/CMakeLists.txt @@ -6,8 +6,8 @@ PROJECT(cockatrice) SET(cockatrice_SOURCES src/abstractcounter.cpp - src/counter_general.cpp - src/dlg_creategame.cpp + src/counter_general.cpp + src/dlg_creategame.cpp src/dlg_filter_games.cpp src/dlg_connect.cpp src/dlg_create_token.cpp @@ -87,6 +87,7 @@ SET(cockatrice_SOURCES src/playerlistwidget.cpp src/pixmapgenerator.cpp src/settingscache.cpp + src/thememanager.cpp src/localserver.cpp src/localserverinterface.cpp src/localclient.cpp @@ -98,6 +99,12 @@ SET(cockatrice_SOURCES src/sequenceEdit/sequenceedit.cpp src/sequenceEdit/shortcutstab.cpp src/lineeditcompleter.cpp + src/settings/settingsmanager.cpp + src/settings/carddatabasesettings.cpp + src/settings/serverssettings.cpp + src/settings/messagesettings.cpp + src/settings/gamefilterssettings.cpp + src/settings/layoutssettings.cpp ${VERSION_STRING_CPP} ) @@ -130,22 +137,14 @@ set(COCKATRICE_LIBS) # Qt4 stuff if(Qt4_FOUND) - if (NOT QT_QTMULTIMEDIA_FOUND) - FIND_PACKAGE(QtMobility REQUIRED) - endif() - SET(QT_USE_QTNETWORK TRUE) - SET(QT_USE_QTMULTIMEDIA TRUE) SET(QT_USE_QTSVG TRUE) # Include directories INCLUDE(${QT_USE_FILE}) INCLUDE_DIRECTORIES(${QT_INCLUDES}) - INCLUDE_DIRECTORIES(${QT_MOBILITY_INCLUDE_DIR}) - INCLUDE_DIRECTORIES(${QT_MOBILITY_MULTIMEDIAKIT_INCLUDE_DIR}) LIST(APPEND COCKATRICE_LIBS ${QT_LIBRARIES}) LIST(APPEND COCKATRICE_LIBS ${QT_QTMAIN_LIBRARY}) - LIST(APPEND COCKATRICE_LIBS ${QT_MOBILITY_MULTIMEDIAKIT_LIBRARY}) # Let cmake chew Qt4's translations and resource files # Note: header files are MOC-ed automatically by cmake @@ -274,11 +273,11 @@ if(APPLE) set(plugin_dest_dir cockatrice.app/Contents/Plugins) set(qtconf_dest_dir cockatrice.app/Contents/Resources) - # qt4: codecs, iconengines, imageformats, phonon_backend + # qt4: codecs, iconengines, imageformats # qt5: audio, iconengines, imageformats, platforms, printsupport install(DIRECTORY "${QT_PLUGINS_DIR}/" DESTINATION ${plugin_dest_dir} COMPONENT Runtime - FILES_MATCHING REGEX "(audio|codecs|iconengines|imageformats|phonon_backend|platforms|printsupport)/.*\\.dylib" + FILES_MATCHING REGEX "(audio|codecs|iconengines|imageformats|platforms|printsupport)/.*\\.dylib" REGEX ".*_debug\\.dylib" EXCLUDE) install(CODE " @@ -302,11 +301,11 @@ if(WIN32) set(plugin_dest_dir Plugins) set(qtconf_dest_dir .) - # qt4: codecs, iconengines, imageformats, phonon_backend + # qt4: codecs, iconengines, imageformats # qt5: audio, iconengines, imageformats, platforms, printsupport install(DIRECTORY "${QT_PLUGINS_DIR}/" DESTINATION ${plugin_dest_dir} COMPONENT Runtime - FILES_MATCHING REGEX "(audio|codecs|iconengines|imageformats|phonon_backend|platforms|printsupport)/.*[^d]\\.dll") + FILES_MATCHING REGEX "(audio|codecs|iconengines|imageformats|platforms|printsupport)/.*[^d]\\.dll") install(CODE " file(WRITE \"\${CMAKE_INSTALL_PREFIX}/${qtconf_dest_dir}/qt.conf\" \"[Paths] @@ -327,3 +326,8 @@ Data = Resources\") install(FILES ${WIN32SSLRUNTIME_LIBRARIES} DESTINATION ./) endif() endif() +#Compile a portable version, default off +option(PORTABLE "portable build" OFF) +IF(PORTABLE) +add_definitions(-DPORTABLE_BUILD) +endif() diff --git a/cockatrice/cockatrice.qrc b/cockatrice/cockatrice.qrc index 2e66b2df..84a5e651 100644 --- a/cockatrice/cockatrice.qrc +++ b/cockatrice/cockatrice.qrc @@ -1,57 +1,58 @@ - - resources/back.svg - resources/lock.svg - resources/icon_delete.svg - resources/icon_tab_changed.svg - resources/icon_config_general.svg - resources/icon_config_appearance.svg - resources/icon_config_interface.svg - resources/icon_config_messages.svg - resources/icon_config_deckeditor.svg - resources/icon_config_sound.svg - resources/phases/icon_phase_untap.svg - resources/phases/icon_phase_upkeep.svg - resources/phases/icon_phase_draw.svg - resources/phases/icon_phase_main1.svg - resources/phases/icon_phase_combat_start.svg - resources/phases/icon_phase_combat_attackers.svg - resources/phases/icon_phase_combat_blockers.svg - resources/phases/icon_phase_combat_damage.svg - resources/phases/icon_phase_combat_end.svg - resources/phases/icon_phase_main2.svg - resources/phases/icon_phase_cleanup.svg - resources/phases/icon_phase_nextturn.svg - resources/icon_settings.svg + + resources/back.svg + resources/cockatrice.svg resources/hand.svg - resources/pencil.svg - resources/icon_search_black.svg - resources/icon_clearsearch.svg - resources/icon_update.png - resources/icon_view.svg resources/hr.jpg - resources/cockatrice.svg - resources/add_to_sideboard.svg - resources/decrement.svg - resources/increment.svg - resources/remove_row.svg - resources/arrow_left_green.svg - resources/arrow_right_green.svg - resources/arrow_top_green.svg - resources/arrow_up_green.svg - resources/arrow_down_green.svg - resources/arrow_bottom_green.svg - resources/icon_ready_start.svg - resources/icon_not_ready_start.svg - resources/icon_conceded.svg - resources/icon_player.svg - resources/icon_spectator.svg - resources/replay_start.svg - resources/replay_fastforward.svg - resources/replay_pause.svg - resources/genders/male.svg - resources/genders/female.svg - resources/genders/unknown.svg + + resources/icons/arrow_bottom_green.svg + resources/icons/arrow_down_green.svg + resources/icons/arrow_left_green.svg + resources/icons/arrow_right_blue.svg + resources/icons/arrow_right_green.svg + resources/icons/arrow_top_green.svg + resources/icons/arrow_up_green.svg + resources/icons/clearsearch.svg + resources/icons/conceded.svg + resources/icons/decrement.svg + resources/icons/delete.svg + resources/icons/increment.svg + resources/icons/lock.svg + resources/icons/not_ready_start.svg + resources/icons/pencil.svg + resources/icons/player.svg + resources/icons/ready_start.svg + resources/icons/remove_row.svg + resources/icons/search.svg + resources/icons/settings.svg + resources/icons/spectator.svg + resources/icons/tab_changed.svg + resources/icons/update.png + resources/icons/view.svg + + resources/config/general.svg + resources/config/appearance.svg + resources/config/interface.svg + resources/config/messages.svg + resources/config/deckeditor.svg + resources/config/shorcuts.svg + resources/config/sound.svg + + resources/counters/w.svg + resources/counters/w_highlight.svg + resources/counters/u.svg + resources/counters/u_highlight.svg + resources/counters/b.svg + resources/counters/b_highlight.svg + resources/counters/r.svg + resources/counters/r_highlight.svg + resources/counters/g.svg + resources/counters/g_highlight.svg + resources/counters/storm.svg + resources/counters/storm_highlight.svg + resources/counters/general.svg + resources/counters/general_highlight.svg + resources/countries/ad.svg resources/countries/ae.svg resources/countries/af.svg @@ -301,20 +302,28 @@ resources/countries/za.svg resources/countries/zm.svg resources/countries/zw.svg - resources/counters/w.svg - resources/counters/w_highlight.svg - resources/counters/u.svg - resources/counters/u_highlight.svg - resources/counters/b.svg - resources/counters/b_highlight.svg - resources/counters/r.svg - resources/counters/r_highlight.svg - resources/counters/g.svg - resources/counters/g_highlight.svg - resources/counters/storm.svg - resources/counters/storm_highlight.svg - resources/counters/general.svg - resources/counters/general_highlight.svg + + resources/genders/male.svg + resources/genders/female.svg + resources/genders/unknown.svg + + resources/phases/untap.svg + resources/phases/upkeep.svg + resources/phases/draw.svg + resources/phases/main1.svg + resources/phases/combat_start.svg + resources/phases/combat_attackers.svg + resources/phases/combat_blockers.svg + resources/phases/combat_damage.svg + resources/phases/combat_end.svg + resources/phases/main2.svg + resources/phases/cleanup.svg + resources/phases/nextturn.svg + + resources/replay/start.svg + resources/replay/fastforward.svg + resources/replay/pause.svg + resources/userlevels/normal.svg resources/userlevels/registered.svg resources/userlevels/registered_buddy.svg @@ -322,8 +331,5 @@ resources/userlevels/moderator_buddy.svg resources/userlevels/admin.svg resources/userlevels/admin_buddy.svg - resources/news/exclamation_mark.svg - resources/news/question_mark.svg - resources/icon_config_shorcuts.svg diff --git a/cockatrice/resources/icon_config_appearance.svg b/cockatrice/resources/config/appearance.svg similarity index 100% rename from cockatrice/resources/icon_config_appearance.svg rename to cockatrice/resources/config/appearance.svg diff --git a/cockatrice/resources/icon_config_deckeditor.svg b/cockatrice/resources/config/deckeditor.svg similarity index 100% rename from cockatrice/resources/icon_config_deckeditor.svg rename to cockatrice/resources/config/deckeditor.svg diff --git a/cockatrice/resources/icon_config_general.svg b/cockatrice/resources/config/general.svg similarity index 100% rename from cockatrice/resources/icon_config_general.svg rename to cockatrice/resources/config/general.svg diff --git a/cockatrice/resources/icon_config_interface.svg b/cockatrice/resources/config/interface.svg similarity index 100% rename from cockatrice/resources/icon_config_interface.svg rename to cockatrice/resources/config/interface.svg diff --git a/cockatrice/resources/icon_config_messages.svg b/cockatrice/resources/config/messages.svg similarity index 100% rename from cockatrice/resources/icon_config_messages.svg rename to cockatrice/resources/config/messages.svg diff --git a/cockatrice/resources/icon_config_shorcuts.svg b/cockatrice/resources/config/shorcuts.svg similarity index 100% rename from cockatrice/resources/icon_config_shorcuts.svg rename to cockatrice/resources/config/shorcuts.svg diff --git a/cockatrice/resources/icon_config_sound.svg b/cockatrice/resources/config/sound.svg similarity index 100% rename from cockatrice/resources/icon_config_sound.svg rename to cockatrice/resources/config/sound.svg diff --git a/cockatrice/resources/arrow_bottom_green.svg b/cockatrice/resources/icons/arrow_bottom_green.svg similarity index 100% rename from cockatrice/resources/arrow_bottom_green.svg rename to cockatrice/resources/icons/arrow_bottom_green.svg diff --git a/cockatrice/resources/arrow_down_green.svg b/cockatrice/resources/icons/arrow_down_green.svg similarity index 100% rename from cockatrice/resources/arrow_down_green.svg rename to cockatrice/resources/icons/arrow_down_green.svg diff --git a/cockatrice/resources/arrow_left_green.svg b/cockatrice/resources/icons/arrow_left_green.svg similarity index 100% rename from cockatrice/resources/arrow_left_green.svg rename to cockatrice/resources/icons/arrow_left_green.svg diff --git a/cockatrice/resources/add_to_sideboard.svg b/cockatrice/resources/icons/arrow_right_blue.svg similarity index 100% rename from cockatrice/resources/add_to_sideboard.svg rename to cockatrice/resources/icons/arrow_right_blue.svg diff --git a/cockatrice/resources/arrow_right_green.svg b/cockatrice/resources/icons/arrow_right_green.svg similarity index 100% rename from cockatrice/resources/arrow_right_green.svg rename to cockatrice/resources/icons/arrow_right_green.svg diff --git a/cockatrice/resources/arrow_top_green.svg b/cockatrice/resources/icons/arrow_top_green.svg similarity index 100% rename from cockatrice/resources/arrow_top_green.svg rename to cockatrice/resources/icons/arrow_top_green.svg diff --git a/cockatrice/resources/arrow_up_green.svg b/cockatrice/resources/icons/arrow_up_green.svg similarity index 100% rename from cockatrice/resources/arrow_up_green.svg rename to cockatrice/resources/icons/arrow_up_green.svg diff --git a/cockatrice/resources/icon_clearsearch.svg b/cockatrice/resources/icons/clearsearch.svg similarity index 100% rename from cockatrice/resources/icon_clearsearch.svg rename to cockatrice/resources/icons/clearsearch.svg diff --git a/cockatrice/resources/icon_conceded.svg b/cockatrice/resources/icons/conceded.svg similarity index 100% rename from cockatrice/resources/icon_conceded.svg rename to cockatrice/resources/icons/conceded.svg diff --git a/cockatrice/resources/decrement.svg b/cockatrice/resources/icons/decrement.svg similarity index 100% rename from cockatrice/resources/decrement.svg rename to cockatrice/resources/icons/decrement.svg diff --git a/cockatrice/resources/icon_delete.svg b/cockatrice/resources/icons/delete.svg similarity index 100% rename from cockatrice/resources/icon_delete.svg rename to cockatrice/resources/icons/delete.svg diff --git a/cockatrice/resources/increment.svg b/cockatrice/resources/icons/increment.svg similarity index 100% rename from cockatrice/resources/increment.svg rename to cockatrice/resources/icons/increment.svg diff --git a/cockatrice/resources/lock.svg b/cockatrice/resources/icons/lock.svg similarity index 100% rename from cockatrice/resources/lock.svg rename to cockatrice/resources/icons/lock.svg diff --git a/cockatrice/resources/icon_not_ready_start.svg b/cockatrice/resources/icons/not_ready_start.svg similarity index 100% rename from cockatrice/resources/icon_not_ready_start.svg rename to cockatrice/resources/icons/not_ready_start.svg diff --git a/cockatrice/resources/pencil.svg b/cockatrice/resources/icons/pencil.svg similarity index 100% rename from cockatrice/resources/pencil.svg rename to cockatrice/resources/icons/pencil.svg diff --git a/cockatrice/resources/icon_player.svg b/cockatrice/resources/icons/player.svg similarity index 100% rename from cockatrice/resources/icon_player.svg rename to cockatrice/resources/icons/player.svg diff --git a/cockatrice/resources/icon_ready_start.svg b/cockatrice/resources/icons/ready_start.svg similarity index 100% rename from cockatrice/resources/icon_ready_start.svg rename to cockatrice/resources/icons/ready_start.svg diff --git a/cockatrice/resources/remove_row.svg b/cockatrice/resources/icons/remove_row.svg similarity index 100% rename from cockatrice/resources/remove_row.svg rename to cockatrice/resources/icons/remove_row.svg diff --git a/cockatrice/resources/icon_search_black.svg b/cockatrice/resources/icons/search.svg similarity index 100% rename from cockatrice/resources/icon_search_black.svg rename to cockatrice/resources/icons/search.svg diff --git a/cockatrice/resources/icon_settings.svg b/cockatrice/resources/icons/settings.svg similarity index 100% rename from cockatrice/resources/icon_settings.svg rename to cockatrice/resources/icons/settings.svg diff --git a/cockatrice/resources/icon_spectator.svg b/cockatrice/resources/icons/spectator.svg similarity index 100% rename from cockatrice/resources/icon_spectator.svg rename to cockatrice/resources/icons/spectator.svg diff --git a/cockatrice/resources/icon_tab_changed.svg b/cockatrice/resources/icons/tab_changed.svg similarity index 100% rename from cockatrice/resources/icon_tab_changed.svg rename to cockatrice/resources/icons/tab_changed.svg diff --git a/cockatrice/resources/icon_update.png b/cockatrice/resources/icons/update.png similarity index 100% rename from cockatrice/resources/icon_update.png rename to cockatrice/resources/icons/update.png diff --git a/cockatrice/resources/icon_view.svg b/cockatrice/resources/icons/view.svg similarity index 100% rename from cockatrice/resources/icon_view.svg rename to cockatrice/resources/icons/view.svg diff --git a/cockatrice/resources/news/exclamation_mark.svg b/cockatrice/resources/news/exclamation_mark.svg deleted file mode 100644 index a4994777..00000000 --- a/cockatrice/resources/news/exclamation_mark.svg +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/cockatrice/resources/news/question_mark.svg b/cockatrice/resources/news/question_mark.svg deleted file mode 100644 index 9272381f..00000000 --- a/cockatrice/resources/news/question_mark.svg +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - ? - - diff --git a/cockatrice/resources/phases/icon_phase_cleanup.svg b/cockatrice/resources/phases/cleanup.svg similarity index 100% rename from cockatrice/resources/phases/icon_phase_cleanup.svg rename to cockatrice/resources/phases/cleanup.svg diff --git a/cockatrice/resources/phases/icon_phase_combat_attackers.svg b/cockatrice/resources/phases/combat_attackers.svg similarity index 100% rename from cockatrice/resources/phases/icon_phase_combat_attackers.svg rename to cockatrice/resources/phases/combat_attackers.svg diff --git a/cockatrice/resources/phases/icon_phase_combat_blockers.svg b/cockatrice/resources/phases/combat_blockers.svg similarity index 100% rename from cockatrice/resources/phases/icon_phase_combat_blockers.svg rename to cockatrice/resources/phases/combat_blockers.svg diff --git a/cockatrice/resources/phases/icon_phase_combat_damage.svg b/cockatrice/resources/phases/combat_damage.svg similarity index 100% rename from cockatrice/resources/phases/icon_phase_combat_damage.svg rename to cockatrice/resources/phases/combat_damage.svg diff --git a/cockatrice/resources/phases/icon_phase_combat_end.svg b/cockatrice/resources/phases/combat_end.svg similarity index 100% rename from cockatrice/resources/phases/icon_phase_combat_end.svg rename to cockatrice/resources/phases/combat_end.svg diff --git a/cockatrice/resources/phases/icon_phase_combat_start.svg b/cockatrice/resources/phases/combat_start.svg similarity index 100% rename from cockatrice/resources/phases/icon_phase_combat_start.svg rename to cockatrice/resources/phases/combat_start.svg diff --git a/cockatrice/resources/phases/icon_phase_draw.svg b/cockatrice/resources/phases/draw.svg similarity index 100% rename from cockatrice/resources/phases/icon_phase_draw.svg rename to cockatrice/resources/phases/draw.svg diff --git a/cockatrice/resources/phases/icon_phase_main1.svg b/cockatrice/resources/phases/main1.svg similarity index 100% rename from cockatrice/resources/phases/icon_phase_main1.svg rename to cockatrice/resources/phases/main1.svg diff --git a/cockatrice/resources/phases/icon_phase_main2.svg b/cockatrice/resources/phases/main2.svg similarity index 100% rename from cockatrice/resources/phases/icon_phase_main2.svg rename to cockatrice/resources/phases/main2.svg diff --git a/cockatrice/resources/phases/icon_phase_nextturn.svg b/cockatrice/resources/phases/nextturn.svg similarity index 100% rename from cockatrice/resources/phases/icon_phase_nextturn.svg rename to cockatrice/resources/phases/nextturn.svg diff --git a/cockatrice/resources/phases/icon_phase_untap.svg b/cockatrice/resources/phases/untap.svg similarity index 100% rename from cockatrice/resources/phases/icon_phase_untap.svg rename to cockatrice/resources/phases/untap.svg diff --git a/cockatrice/resources/phases/icon_phase_upkeep.svg b/cockatrice/resources/phases/upkeep.svg similarity index 100% rename from cockatrice/resources/phases/icon_phase_upkeep.svg rename to cockatrice/resources/phases/upkeep.svg diff --git a/cockatrice/resources/replay_fastforward.svg b/cockatrice/resources/replay/fastforward.svg similarity index 100% rename from cockatrice/resources/replay_fastforward.svg rename to cockatrice/resources/replay/fastforward.svg diff --git a/cockatrice/resources/replay_pause.svg b/cockatrice/resources/replay/pause.svg similarity index 100% rename from cockatrice/resources/replay_pause.svg rename to cockatrice/resources/replay/pause.svg diff --git a/cockatrice/resources/replay_start.svg b/cockatrice/resources/replay/start.svg similarity index 100% rename from cockatrice/resources/replay_start.svg rename to cockatrice/resources/replay/start.svg diff --git a/cockatrice/resources/replay_stop.svg b/cockatrice/resources/replay_stop.svg deleted file mode 100644 index 8791b3c0..00000000 --- a/cockatrice/resources/replay_stop.svg +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - diff --git a/cockatrice/src/abstractclient.cpp b/cockatrice/src/abstractclient.cpp index 6faf6b33..a91ea784 100644 --- a/cockatrice/src/abstractclient.cpp +++ b/cockatrice/src/abstractclient.cpp @@ -19,6 +19,7 @@ #include "get_pb_extension.h" #include #include "client_metatypes.h" +#include "featureset.h" AbstractClient::AbstractClient(QObject *parent) : QObject(parent), nextCmdId(0), status(StatusDisconnected) @@ -45,6 +46,10 @@ AbstractClient::AbstractClient(QObject *parent) qRegisterMetaType("ServerInfo_User"); qRegisterMetaType >("QList"); qRegisterMetaType("Event_ReplayAdded"); + qRegisterMetaType >("missingFeatures"); + + FeatureSet features; + features.initalizeFeatureList(clientFeatures); connect(this, SIGNAL(sigQueuePendingCommand(PendingCommand *)), this, SLOT(queuePendingCommand(PendingCommand *))); } diff --git a/cockatrice/src/abstractclient.h b/cockatrice/src/abstractclient.h index 939066bc..9c7606a2 100644 --- a/cockatrice/src/abstractclient.h +++ b/cockatrice/src/abstractclient.h @@ -25,6 +25,7 @@ class Event_NotifyUser; class Event_ConnectionClosed; class Event_ServerShutdown; class Event_ReplayAdded; +class FeatureSet; enum ClientStatus { StatusDisconnected, @@ -96,6 +97,8 @@ public: static PendingCommand *prepareRoomCommand(const ::google::protobuf::Message &cmd, int roomId); static PendingCommand *prepareModeratorCommand(const ::google::protobuf::Message &cmd); static PendingCommand *prepareAdminCommand(const ::google::protobuf::Message &cmd); + + QMap clientFeatures; }; #endif diff --git a/cockatrice/src/carddatabase.cpp b/cockatrice/src/carddatabase.cpp index 0f80a7a1..0a4cd876 100644 --- a/cockatrice/src/carddatabase.cpp +++ b/cockatrice/src/carddatabase.cpp @@ -1,12 +1,12 @@ #include "carddatabase.h" #include "settingscache.h" +#include "thememanager.h" + #include #include #include #include #include -#include -#include #include #include #include @@ -50,46 +50,29 @@ QString CardSet::getCorrectedShortName() const return invalidFileNames.contains(shortName) ? shortName + "_" : shortName; } +void CardSet::loadSetOptions() +{ + sortKey = settingsCache->cardDatabase().getSortKey(shortName); + enabled = settingsCache->cardDatabase().isEnabled(shortName); + isknown = settingsCache->cardDatabase().isKnown(shortName); +} + void CardSet::setSortKey(unsigned int _sortKey) { sortKey = _sortKey; - - QSettings settings; - settings.beginGroup("sets"); - settings.beginGroup(shortName); - settings.setValue("sortkey", sortKey); -} - -void CardSet::loadSetOptions() -{ - QSettings settings; - settings.beginGroup("sets"); - settings.beginGroup(shortName); - - sortKey = settings.value("sortkey", 0).toInt(); - enabled = settings.value("enabled", false).toBool(); - isknown = settings.value("isknown", false).toBool(); - // qDebug() << "load set" << shortName << "key" << sortKey; + settingsCache->cardDatabase().setSortKey(shortName,_sortKey); } void CardSet::setEnabled(bool _enabled) { enabled = _enabled; - - QSettings settings; - settings.beginGroup("sets"); - settings.beginGroup(shortName); - settings.setValue("enabled", enabled); + settingsCache->cardDatabase().setEnabled(shortName,_enabled); } void CardSet::setIsKnown(bool _isknown) { isknown = _isknown; - - QSettings settings; - settings.beginGroup("sets"); - settings.beginGroup(shortName); - settings.setValue("isknown", isknown); + settingsCache->cardDatabase().setIsKnown(shortName,_isknown); } class SetList::KeyCompareFunctor { @@ -642,7 +625,7 @@ void CardInfo::loadPixmap(QPixmap &pixmap) pixmap = QPixmap(); if (getName().isEmpty()) { - pixmap.load(settingsCache->getCardBackPicturePath()); + pixmap = themeManager->getCardBackPixmap(); return; } @@ -672,15 +655,11 @@ void CardInfo::getPixmap(QSize size, QPixmap &pixmap) QPixmap bigPixmap; loadPixmap(bigPixmap); if (bigPixmap.isNull()) { - if (!getName().isEmpty()) { + if (getName().isEmpty()) { + pixmap = themeManager->getCardBackPixmap(); + } else { pixmap = QPixmap(); // null return; - } else { - QSvgRenderer svg(QString(":/back.svg")); - bigPixmap = QPixmap(svg.defaultSize()); - bigPixmap.fill(Qt::transparent); - QPainter painter(&bigPixmap); - svg.render(&painter); } } @@ -808,7 +787,7 @@ CardDatabase::CardDatabase(QObject *parent) noCard = new CardInfo(this); QPixmap tmp; noCard->loadPixmap(tmp); // cache pixmap for card back - connect(settingsCache, SIGNAL(cardBackPicturePathChanged()), noCard, SLOT(updatePixmapCache())); + connect(themeManager, SIGNAL(themeChanged()), noCard, SLOT(updatePixmapCache())); } CardDatabase::~CardDatabase() @@ -1253,4 +1232,4 @@ bool CardDatabase::hasDetectedFirstRun() } return false; -} \ No newline at end of file +} diff --git a/cockatrice/src/chatview.cpp b/cockatrice/src/chatview.cpp index 00dbd3a6..9f77faaf 100644 --- a/cockatrice/src/chatview.cpp +++ b/cockatrice/src/chatview.cpp @@ -11,6 +11,7 @@ #include "pixmapgenerator.h" #include "settingscache.h" #include "tab_userlists.h" +#include "soundengine.h" const QColor DEFAULT_MENTION_COLOR = QColor(194, 31, 47); const QColor OTHER_USER_COLOR = QColor(0, 65, 255); // dark blue @@ -276,6 +277,7 @@ void ChatView::checkMention(QTextCursor &cursor, QString &message, QString &send if (userName.toLower() == fullMentionUpToSpaceOrEnd.toLower()) // Is this user you? { // You have received a valid mention!! + soundEngine->playSound("chat_mention"); mentionFormat.setBackground(QBrush(getCustomMentionColor())); mentionFormat.setForeground(settingsCache->getChatMentionForeground() ? QBrush(Qt::white) : QBrush(Qt::black)); cursor.insertText(mention, mentionFormat); @@ -301,6 +303,7 @@ void ChatView::checkMention(QTextCursor &cursor, QString &message, QString &send if (isModeratorSendingGlobal(userLevel, fullMentionUpToSpaceOrEnd)) { // Moderator Sending Global Message + soundEngine->playSound("all_mention"); mentionFormat.setBackground(QBrush(getCustomMentionColor())); mentionFormat.setForeground(settingsCache->getChatMentionForeground() ? QBrush(Qt::white) : QBrush(Qt::black)); cursor.insertText("@" + fullMentionUpToSpaceOrEnd, mentionFormat); diff --git a/cockatrice/src/client_metatypes.h b/cockatrice/src/client_metatypes.h index db1c90f7..d0ece007 100644 --- a/cockatrice/src/client_metatypes.h +++ b/cockatrice/src/client_metatypes.h @@ -24,6 +24,6 @@ Q_DECLARE_METATYPE(Event_UserMessage) Q_DECLARE_METATYPE(ServerInfo_User) Q_DECLARE_METATYPE(QList) Q_DECLARE_METATYPE(Event_ReplayAdded) - +Q_DECLARE_METATYPE(QList) #endif diff --git a/cockatrice/src/decklistmodel.cpp b/cockatrice/src/decklistmodel.cpp index 3b04bf06..d2f1319e 100644 --- a/cockatrice/src/decklistmodel.cpp +++ b/cockatrice/src/decklistmodel.cpp @@ -469,7 +469,7 @@ void DeckListModel::printDeckList(QPrinter *printer) cursor.insertBlock(headerBlockFormat, headerCharFormat); for (int i = 0; i < root->size(); i++) { - cursor.insertHtml("
"); + cursor.insertHtml("
"); //cursor.insertHtml("
"); cursor.insertBlock(headerBlockFormat, headerCharFormat); diff --git a/cockatrice/src/deckview.cpp b/cockatrice/src/deckview.cpp index 9cda1524..cd5d1022 100644 --- a/cockatrice/src/deckview.cpp +++ b/cockatrice/src/deckview.cpp @@ -5,6 +5,7 @@ #include "decklist.h" #include "carddatabase.h" #include "settingscache.h" +#include "thememanager.h" #include "main.h" DeckViewCardDragItem::DeckViewCardDragItem(DeckViewCard *_item, const QPointF &_hotSpot, AbstractCardDragItem *parentDrag) @@ -128,10 +129,6 @@ void DeckViewCard::hoverEnterEvent(QGraphicsSceneHoverEvent *event) DeckViewCardContainer::DeckViewCardContainer(const QString &_name) : QGraphicsItem(), name(_name), width(0), height(0) { - QString bgPath = settingsCache->getTableBgPath(); - if (!bgPath.isEmpty()) - bgPixmap.load(bgPath); - setCacheMode(DeviceCoordinateCache); } @@ -144,17 +141,7 @@ void DeckViewCardContainer::paint(QPainter *painter, const QStyleOptionGraphicsI { qreal totalTextWidth = getCardTypeTextWidth(); - if (bgPixmap.isNull()) { - QLinearGradient grad1(0, 0, 1, 0); - grad1.setCoordinateMode(QGradient::ObjectBoundingMode); - grad1.setColorAt(0, QColor(30, 30, 30)); - grad1.setColorAt(1, QColor(80, 80, 80)); - painter->fillRect(QRectF(0, 0, width, height), QBrush(grad1)); - - painter->fillRect(boundingRect(), QColor(0, 0, 0, 80)); - } - else - painter->fillRect(boundingRect(), QBrush(bgPixmap)); + painter->fillRect(boundingRect(), themeManager->getTableBgBrush()); painter->setPen(QColor(255, 255, 255, 100)); painter->drawLine(QPointF(0, separatorY), QPointF(width, separatorY)); diff --git a/cockatrice/src/deckview.h b/cockatrice/src/deckview.h index cc064ef6..080f80c1 100644 --- a/cockatrice/src/deckview.h +++ b/cockatrice/src/deckview.h @@ -53,7 +53,6 @@ private: QMultiMap cardsByType; QList > currentRowsAndCols; qreal width, height; - QPixmap bgPixmap; int getCardTypeTextWidth() const; public: enum { Type = typeDeckViewCardContainer }; diff --git a/cockatrice/src/dlg_connect.cpp b/cockatrice/src/dlg_connect.cpp index c97e4e6d..13cf5480 100644 --- a/cockatrice/src/dlg_connect.cpp +++ b/cockatrice/src/dlg_connect.cpp @@ -1,4 +1,3 @@ -#include #include #include #include @@ -11,25 +10,23 @@ #include #include #include "dlg_connect.h" +#include "settingscache.h" DlgConnect::DlgConnect(QWidget *parent) : QDialog(parent) { - QSettings settings; - settings.beginGroup("server"); - previousHostButton = new QRadioButton(tr("Previous Host"), this); - previousHosts = new QComboBox(this); previousHosts->installEventFilter(new DeleteHighlightedItemWhenShiftDelPressedEventFilter); - QStringList previousHostList = settings.value("previoushosts").toStringList(); + + QStringList previousHostList = settingsCache->servers().getPreviousHostList(); if (previousHostList.isEmpty()) { previousHostList << "cockatrice.woogerworks.com"; previousHostList << "vps.poixen.com"; previousHostList << "chickatrice.net"; } previousHosts->addItems(previousHostList); - previousHosts->setCurrentIndex(settings.value("previoushostindex").toInt()); + previousHosts->setCurrentIndex(settingsCache->servers().getPrevioushostindex()); newHostButton = new QRadioButton(tr("New Host"), this); @@ -39,28 +36,28 @@ DlgConnect::DlgConnect(QWidget *parent) hostLabel->setBuddy(hostEdit); portLabel = new QLabel(tr("&Port:")); - portEdit = new QLineEdit(settings.value("port", "4747").toString()); + portEdit = new QLineEdit(settingsCache->servers().getPort("4747")); portLabel->setBuddy(portEdit); playernameLabel = new QLabel(tr("Player &name:")); - playernameEdit = new QLineEdit(settings.value("playername", "Player").toString()); + playernameEdit = new QLineEdit(settingsCache->servers().getPlayerName("Player")); playernameLabel->setBuddy(playernameEdit); passwordLabel = new QLabel(tr("P&assword:")); - passwordEdit = new QLineEdit(settings.value("password").toString()); + passwordEdit = new QLineEdit(settingsCache->servers().getPassword()); passwordLabel->setBuddy(passwordEdit); passwordEdit->setEchoMode(QLineEdit::Password); savePasswordCheckBox = new QCheckBox(tr("&Save password")); - savePasswordCheckBox->setChecked(settings.value("save_password", 1).toInt()); + savePasswordCheckBox->setChecked(settingsCache->servers().getSavePassword()); autoConnectCheckBox = new QCheckBox(tr("A&uto connect at start")); if(savePasswordCheckBox->isChecked()) { - autoConnectCheckBox->setChecked(settings.value("auto_connect", 0).toInt()); + autoConnectCheckBox->setChecked(settingsCache->servers().getAutoConnect()); autoConnectCheckBox->setEnabled(true); } else { - settings.setValue("auto_connect", 0); + settingsCache->servers().setAutoConnect(0); autoConnectCheckBox->setChecked(0); autoConnectCheckBox->setEnabled(false); } @@ -98,7 +95,7 @@ DlgConnect::DlgConnect(QWidget *parent) connect(previousHostButton, SIGNAL(toggled(bool)), this, SLOT(previousHostSelected(bool))); connect(newHostButton, SIGNAL(toggled(bool)), this, SLOT(newHostSelected(bool))); - if (settings.value("previoushostlogin", 1).toInt()) + if (settingsCache->servers().getPreviousHostLogin()) previousHostButton->setChecked(true); else newHostButton->setChecked(true); @@ -133,14 +130,12 @@ void DlgConnect::passwordSaved(int state) void DlgConnect::actOk() { - QSettings settings; - settings.beginGroup("server"); - settings.setValue("port", portEdit->text()); - settings.setValue("playername", playernameEdit->text()); - settings.setValue("password", savePasswordCheckBox->isChecked() ? passwordEdit->text() : QString()); - settings.setValue("save_password", savePasswordCheckBox->isChecked() ? 1 : 0); - settings.setValue("auto_connect", autoConnectCheckBox->isChecked() ? 1 : 0); - settings.setValue("previoushostlogin", previousHostButton->isChecked() ? 1 : 0); + settingsCache->servers().setPort(portEdit->text()); + settingsCache->servers().setPlayerName(playernameEdit->text()); + settingsCache->servers().setPassword(savePasswordCheckBox->isChecked() ? passwordEdit->text() : QString()); + settingsCache->servers().setSavePassword(savePasswordCheckBox->isChecked() ? 1 : 0); + settingsCache->servers().setAutoConnect(autoConnectCheckBox->isChecked() ? 1 : 0); + settingsCache->servers().setPreviousHostLogin(previousHostButton->isChecked() ? 1 : 0); QStringList hostList; if (newHostButton->isChecked()) @@ -151,9 +146,8 @@ void DlgConnect::actOk() if(!previousHosts->itemText(i).trimmed().isEmpty()) hostList << previousHosts->itemText(i); - settings.setValue("previoushosts", hostList); - settings.setValue("previoushostindex", previousHosts->currentIndex()); - settings.endGroup(); + settingsCache->servers().setPreviousHostList(hostList); + settingsCache->servers().setPrevioushostindex(previousHosts->currentIndex()); accept(); } @@ -165,12 +159,8 @@ QString DlgConnect::getHost() const { void DlgConnect::actCancel() { - QSettings settings; - settings.beginGroup("server"); - settings.setValue("save_password", savePasswordCheckBox->isChecked() ? 1 : 0); - settings.setValue("auto_connect", autoConnectCheckBox->isChecked() ? 1 : 0); - settings.endGroup(); - + settingsCache->servers().setSavePassword(savePasswordCheckBox->isChecked() ? 1 : 0); + settingsCache->servers().setAutoConnect( autoConnectCheckBox->isChecked() ? 1 : 0); reject(); } diff --git a/cockatrice/src/dlg_edit_password.cpp b/cockatrice/src/dlg_edit_password.cpp index 729b8974..7637e208 100644 --- a/cockatrice/src/dlg_edit_password.cpp +++ b/cockatrice/src/dlg_edit_password.cpp @@ -3,21 +3,19 @@ #include #include #include -#include +#include "settingscache.h" #include "dlg_edit_password.h" DlgEditPassword::DlgEditPassword(QWidget *parent) : QDialog(parent) { - QSettings settings; - settings.beginGroup("server"); oldPasswordLabel = new QLabel(tr("Old password:")); oldPasswordEdit = new QLineEdit(); - if(settings.value("save_password", 1).toInt()) - oldPasswordEdit->setText(settings.value("password").toString()); + if(settingsCache->servers().getSavePassword()) + oldPasswordEdit->setText(settingsCache->servers().getPassword()); oldPasswordLabel->setBuddy(oldPasswordEdit); oldPasswordEdit->setEchoMode(QLineEdit::Password); @@ -62,12 +60,8 @@ void DlgEditPassword::actOk() return; } - QSettings settings; - settings.beginGroup("server"); // always save the password so it will be picked up by the connect dialog - settings.setValue("password", newPasswordEdit->text()); - settings.endGroup(); - + settingsCache->servers().setPassword(newPasswordEdit->text()); accept(); } diff --git a/cockatrice/src/dlg_edit_tokens.cpp b/cockatrice/src/dlg_edit_tokens.cpp index 4f2b6372..9f024ed5 100644 --- a/cockatrice/src/dlg_edit_tokens.cpp +++ b/cockatrice/src/dlg_edit_tokens.cpp @@ -83,10 +83,10 @@ DlgEditTokens::DlgEditTokens(CardDatabaseModel *_cardDatabaseModel, QWidget *par connect(chooseTokenView->selectionModel(), SIGNAL(currentRowChanged(QModelIndex, QModelIndex)), this, SLOT(tokenSelectionChanged(QModelIndex, QModelIndex))); QAction *aAddToken = new QAction(tr("Add token"), this); - aAddToken->setIcon(QIcon(":/resources/increment.svg")); + aAddToken->setIcon(QIcon("theme:icons/increment.svg")); connect(aAddToken, SIGNAL(triggered()), this, SLOT(actAddToken())); QAction *aRemoveToken = new QAction(tr("Remove token"), this); - aRemoveToken->setIcon(QIcon(":/resources/decrement.svg")); + aRemoveToken->setIcon(QIcon("theme:icons/decrement.svg")); connect(aRemoveToken, SIGNAL(triggered()), this, SLOT(actRemoveToken())); QToolBar *databaseToolBar = new QToolBar; diff --git a/cockatrice/src/dlg_edit_user.cpp b/cockatrice/src/dlg_edit_user.cpp index 932dfa12..570a1058 100644 --- a/cockatrice/src/dlg_edit_user.cpp +++ b/cockatrice/src/dlg_edit_user.cpp @@ -1,4 +1,3 @@ -#include #include #include #include @@ -19,9 +18,9 @@ DlgEditUser::DlgEditUser(QWidget *parent, QString email, int gender, QString cou genderLabel = new QLabel(tr("Pronouns:")); genderEdit = new QComboBox(); genderLabel->setBuddy(genderEdit); - genderEdit->insertItem(0, QIcon(":/resources/genders/unknown.svg"), tr("Neutral")); - genderEdit->insertItem(1, QIcon(":/resources/genders/male.svg"), tr("Masculine")); - genderEdit->insertItem(2, QIcon(":/resources/genders/female.svg"), tr("Feminine")); + genderEdit->insertItem(0, QIcon("theme:genders/unknown.svg"), tr("Neutral")); + genderEdit->insertItem(1, QIcon("theme:genders/male.svg"), tr("Masculine")); + genderEdit->insertItem(2, QIcon("theme:genders/female.svg"), tr("Feminine")); genderEdit->setCurrentIndex(gender + 1); countryLabel = new QLabel(tr("Country:")); @@ -34,7 +33,7 @@ DlgEditUser::DlgEditUser(QWidget *parent, QString email, int gender, QString cou int i = 1; foreach(QString c, countries) { - countryEdit->addItem(QPixmap(":/resources/countries/" + c + ".svg"), c); + countryEdit->addItem(QPixmap("theme:countries/" + c.toLower() + ".svg"), c); if (c == country) countryEdit->setCurrentIndex(i); diff --git a/cockatrice/src/dlg_filter_games.cpp b/cockatrice/src/dlg_filter_games.cpp index 28f2c8d7..ff02dcc6 100644 --- a/cockatrice/src/dlg_filter_games.cpp +++ b/cockatrice/src/dlg_filter_games.cpp @@ -9,7 +9,6 @@ #include #include #include -#include #include DlgFilterGames::DlgFilterGames(const QMap &_allGameTypes, const GamesProxyModel *_gamesProxyModel, QWidget *parent) @@ -17,9 +16,6 @@ DlgFilterGames::DlgFilterGames(const QMap &_allGameTypes, const Ga allGameTypes(_allGameTypes), gamesProxyModel(_gamesProxyModel) { - QSettings settings; - settings.beginGroup("filter_games"); - unavailableGamesVisibleCheckBox = new QCheckBox(tr("Show &unavailable games")); unavailableGamesVisibleCheckBox->setChecked(gamesProxyModel->getUnavailableGamesVisible()); diff --git a/cockatrice/src/dlg_register.cpp b/cockatrice/src/dlg_register.cpp index bda76b48..f97a954d 100644 --- a/cockatrice/src/dlg_register.cpp +++ b/cockatrice/src/dlg_register.cpp @@ -1,4 +1,3 @@ -#include #include #include #include @@ -14,23 +13,20 @@ DlgRegister::DlgRegister(QWidget *parent) : QDialog(parent) { - QSettings settings; - settings.beginGroup("server"); - hostLabel = new QLabel(tr("&Host:")); - hostEdit = new QLineEdit(settings.value("hostname", "cockatrice.woogerworks.com").toString()); + hostEdit = new QLineEdit(settingsCache->servers().getHostname("cockatrice.woogerworks.com")); hostLabel->setBuddy(hostEdit); - portLabel = new QLabel(tr("&Port:")); - portEdit = new QLineEdit(settings.value("port", "4747").toString()); + portLabel = new QLabel(tr("&Port:")); + portEdit = new QLineEdit(settingsCache->servers().getPort("4747")); portLabel->setBuddy(portEdit); - playernameLabel = new QLabel(tr("Player &name:")); - playernameEdit = new QLineEdit(settings.value("playername", "Player").toString()); + playernameLabel = new QLabel(tr("Player &name:")); + playernameEdit = new QLineEdit(settingsCache->servers().getPlayerName("Player")); playernameLabel->setBuddy(playernameEdit); - passwordLabel = new QLabel(tr("P&assword:")); - passwordEdit = new QLineEdit(settings.value("password").toString()); + passwordLabel = new QLabel(tr("P&assword:")); + passwordEdit = new QLineEdit(settingsCache->servers().getPassword()); passwordLabel->setBuddy(passwordEdit); passwordEdit->setEchoMode(QLineEdit::Password); @@ -50,19 +46,268 @@ DlgRegister::DlgRegister(QWidget *parent) genderLabel = new QLabel(tr("Pronouns:")); genderEdit = new QComboBox(); genderLabel->setBuddy(genderEdit); - genderEdit->insertItem(0, QIcon(":/resources/genders/unknown.svg"), tr("Neutral")); - genderEdit->insertItem(1, QIcon(":/resources/genders/male.svg"), tr("Masculine")); - genderEdit->insertItem(2, QIcon(":/resources/genders/female.svg"), tr("Feminine")); + genderEdit->insertItem(0, QIcon("theme:genders/unknown.svg"), tr("Neutral")); + genderEdit->insertItem(1, QIcon("theme:genders/male.svg"), tr("Masculine")); + genderEdit->insertItem(2, QIcon("theme:genders/female.svg"), tr("Feminine")); genderEdit->setCurrentIndex(0); countryLabel = new QLabel(tr("Country:")); countryEdit = new QComboBox(); countryLabel->setBuddy(countryEdit); countryEdit->insertItem(0, tr("Undefined")); + countryEdit->addItem(QPixmap("theme:countries/ad.svg"), "ad"); + countryEdit->addItem(QIcon("theme:countries/ae.svg"), "ae"); + countryEdit->addItem(QIcon("theme:countries/af.svg"), "af"); + countryEdit->addItem(QIcon("theme:countries/ag.svg"), "ag"); + countryEdit->addItem(QIcon("theme:countries/ai.svg"), "ai"); + countryEdit->addItem(QIcon("theme:countries/al.svg"), "al"); + countryEdit->addItem(QIcon("theme:countries/am.svg"), "am"); + countryEdit->addItem(QIcon("theme:countries/ao.svg"), "ao"); + countryEdit->addItem(QIcon("theme:countries/aq.svg"), "aq"); + countryEdit->addItem(QIcon("theme:countries/ar.svg"), "ar"); + countryEdit->addItem(QIcon("theme:countries/as.svg"), "as"); + countryEdit->addItem(QIcon("theme:countries/at.svg"), "at"); + countryEdit->addItem(QIcon("theme:countries/au.svg"), "au"); + countryEdit->addItem(QIcon("theme:countries/aw.svg"), "aw"); + countryEdit->addItem(QIcon("theme:countries/ax.svg"), "ax"); + countryEdit->addItem(QIcon("theme:countries/az.svg"), "az"); + countryEdit->addItem(QIcon("theme:countries/ba.svg"), "ba"); + countryEdit->addItem(QIcon("theme:countries/bb.svg"), "bb"); + countryEdit->addItem(QIcon("theme:countries/bd.svg"), "bd"); + countryEdit->addItem(QIcon("theme:countries/be.svg"), "be"); + countryEdit->addItem(QIcon("theme:countries/bf.svg"), "bf"); + countryEdit->addItem(QIcon("theme:countries/bg.svg"), "bg"); + countryEdit->addItem(QIcon("theme:countries/bh.svg"), "bh"); + countryEdit->addItem(QIcon("theme:countries/bi.svg"), "bi"); + countryEdit->addItem(QIcon("theme:countries/bj.svg"), "bj"); + countryEdit->addItem(QIcon("theme:countries/bl.svg"), "bl"); + countryEdit->addItem(QIcon("theme:countries/bm.svg"), "bm"); + countryEdit->addItem(QIcon("theme:countries/bn.svg"), "bn"); + countryEdit->addItem(QIcon("theme:countries/bo.svg"), "bo"); + countryEdit->addItem(QIcon("theme:countries/bq.svg"), "bq"); + countryEdit->addItem(QIcon("theme:countries/br.svg"), "br"); + countryEdit->addItem(QIcon("theme:countries/bs.svg"), "bs"); + countryEdit->addItem(QIcon("theme:countries/bt.svg"), "bt"); + countryEdit->addItem(QIcon("theme:countries/bv.svg"), "bv"); + countryEdit->addItem(QIcon("theme:countries/bw.svg"), "bw"); + countryEdit->addItem(QIcon("theme:countries/by.svg"), "by"); + countryEdit->addItem(QIcon("theme:countries/bz.svg"), "bz"); + countryEdit->addItem(QIcon("theme:countries/ca.svg"), "ca"); + countryEdit->addItem(QIcon("theme:countries/cc.svg"), "cc"); + countryEdit->addItem(QIcon("theme:countries/cd.svg"), "cd"); + countryEdit->addItem(QIcon("theme:countries/cf.svg"), "cf"); + countryEdit->addItem(QIcon("theme:countries/cg.svg"), "cg"); + countryEdit->addItem(QIcon("theme:countries/ch.svg"), "ch"); + countryEdit->addItem(QIcon("theme:countries/ci.svg"), "ci"); + countryEdit->addItem(QIcon("theme:countries/ck.svg"), "ck"); + countryEdit->addItem(QIcon("theme:countries/cl.svg"), "cl"); + countryEdit->addItem(QIcon("theme:countries/cm.svg"), "cm"); + countryEdit->addItem(QIcon("theme:countries/cn.svg"), "cn"); + countryEdit->addItem(QIcon("theme:countries/co.svg"), "co"); + countryEdit->addItem(QIcon("theme:countries/cr.svg"), "cr"); + countryEdit->addItem(QIcon("theme:countries/cu.svg"), "cu"); + countryEdit->addItem(QIcon("theme:countries/cv.svg"), "cv"); + countryEdit->addItem(QIcon("theme:countries/cw.svg"), "cw"); + countryEdit->addItem(QIcon("theme:countries/cx.svg"), "cx"); + countryEdit->addItem(QIcon("theme:countries/cy.svg"), "cy"); + countryEdit->addItem(QIcon("theme:countries/cz.svg"), "cz"); + countryEdit->addItem(QIcon("theme:countries/de.svg"), "de"); + countryEdit->addItem(QIcon("theme:countries/dj.svg"), "dj"); + countryEdit->addItem(QIcon("theme:countries/dk.svg"), "dk"); + countryEdit->addItem(QIcon("theme:countries/dm.svg"), "dm"); + countryEdit->addItem(QIcon("theme:countries/do.svg"), "do"); + countryEdit->addItem(QIcon("theme:countries/dz.svg"), "dz"); + countryEdit->addItem(QIcon("theme:countries/ec.svg"), "ec"); + countryEdit->addItem(QIcon("theme:countries/ee.svg"), "ee"); + countryEdit->addItem(QIcon("theme:countries/eg.svg"), "eg"); + countryEdit->addItem(QIcon("theme:countries/eh.svg"), "eh"); + countryEdit->addItem(QIcon("theme:countries/er.svg"), "er"); + countryEdit->addItem(QIcon("theme:countries/es.svg"), "es"); + countryEdit->addItem(QIcon("theme:countries/et.svg"), "et"); + countryEdit->addItem(QIcon("theme:countries/fi.svg"), "fi"); + countryEdit->addItem(QIcon("theme:countries/fj.svg"), "fj"); + countryEdit->addItem(QIcon("theme:countries/fk.svg"), "fk"); + countryEdit->addItem(QIcon("theme:countries/fm.svg"), "fm"); + countryEdit->addItem(QIcon("theme:countries/fo.svg"), "fo"); + countryEdit->addItem(QIcon("theme:countries/fr.svg"), "fr"); + countryEdit->addItem(QIcon("theme:countries/ga.svg"), "ga"); + countryEdit->addItem(QIcon("theme:countries/gb.svg"), "gb"); + countryEdit->addItem(QIcon("theme:countries/gd.svg"), "gd"); + countryEdit->addItem(QIcon("theme:countries/ge.svg"), "ge"); + countryEdit->addItem(QIcon("theme:countries/gf.svg"), "gf"); + countryEdit->addItem(QIcon("theme:countries/gg.svg"), "gg"); + countryEdit->addItem(QIcon("theme:countries/gh.svg"), "gh"); + countryEdit->addItem(QIcon("theme:countries/gi.svg"), "gi"); + countryEdit->addItem(QIcon("theme:countries/gl.svg"), "gl"); + countryEdit->addItem(QIcon("theme:countries/gm.svg"), "gm"); + countryEdit->addItem(QIcon("theme:countries/gn.svg"), "gn"); + countryEdit->addItem(QIcon("theme:countries/gp.svg"), "gp"); + countryEdit->addItem(QIcon("theme:countries/gq.svg"), "gq"); + countryEdit->addItem(QIcon("theme:countries/gr.svg"), "gr"); + countryEdit->addItem(QIcon("theme:countries/gs.svg"), "gs"); + countryEdit->addItem(QIcon("theme:countries/gt.svg"), "gt"); + countryEdit->addItem(QIcon("theme:countries/gu.svg"), "gu"); + countryEdit->addItem(QIcon("theme:countries/gw.svg"), "gw"); + countryEdit->addItem(QIcon("theme:countries/gy.svg"), "gy"); + countryEdit->addItem(QIcon("theme:countries/hk.svg"), "hk"); + countryEdit->addItem(QIcon("theme:countries/hm.svg"), "hm"); + countryEdit->addItem(QIcon("theme:countries/hn.svg"), "hn"); + countryEdit->addItem(QIcon("theme:countries/hr.svg"), "hr"); + countryEdit->addItem(QIcon("theme:countries/ht.svg"), "ht"); + countryEdit->addItem(QIcon("theme:countries/hu.svg"), "hu"); + countryEdit->addItem(QIcon("theme:countries/id.svg"), "id"); + countryEdit->addItem(QIcon("theme:countries/ie.svg"), "ie"); + countryEdit->addItem(QIcon("theme:countries/il.svg"), "il"); + countryEdit->addItem(QIcon("theme:countries/im.svg"), "im"); + countryEdit->addItem(QIcon("theme:countries/in.svg"), "in"); + countryEdit->addItem(QIcon("theme:countries/io.svg"), "io"); + countryEdit->addItem(QIcon("theme:countries/iq.svg"), "iq"); + countryEdit->addItem(QIcon("theme:countries/ir.svg"), "ir"); + countryEdit->addItem(QIcon("theme:countries/is.svg"), "is"); + countryEdit->addItem(QIcon("theme:countries/it.svg"), "it"); + countryEdit->addItem(QIcon("theme:countries/je.svg"), "je"); + countryEdit->addItem(QIcon("theme:countries/jm.svg"), "jm"); + countryEdit->addItem(QIcon("theme:countries/jo.svg"), "jo"); + countryEdit->addItem(QIcon("theme:countries/jp.svg"), "jp"); + countryEdit->addItem(QIcon("theme:countries/ke.svg"), "ke"); + countryEdit->addItem(QIcon("theme:countries/kg.svg"), "kg"); + countryEdit->addItem(QIcon("theme:countries/kh.svg"), "kh"); + countryEdit->addItem(QIcon("theme:countries/ki.svg"), "ki"); + countryEdit->addItem(QIcon("theme:countries/km.svg"), "km"); + countryEdit->addItem(QIcon("theme:countries/kn.svg"), "kn"); + countryEdit->addItem(QIcon("theme:countries/kp.svg"), "kp"); + countryEdit->addItem(QIcon("theme:countries/kr.svg"), "kr"); + countryEdit->addItem(QIcon("theme:countries/kw.svg"), "kw"); + countryEdit->addItem(QIcon("theme:countries/ky.svg"), "ky"); + countryEdit->addItem(QIcon("theme:countries/kz.svg"), "kz"); + countryEdit->addItem(QIcon("theme:countries/la.svg"), "la"); + countryEdit->addItem(QIcon("theme:countries/lb.svg"), "lb"); + countryEdit->addItem(QIcon("theme:countries/lc.svg"), "lc"); + countryEdit->addItem(QIcon("theme:countries/li.svg"), "li"); + countryEdit->addItem(QIcon("theme:countries/lk.svg"), "lk"); + countryEdit->addItem(QIcon("theme:countries/lr.svg"), "lr"); + countryEdit->addItem(QIcon("theme:countries/ls.svg"), "ls"); + countryEdit->addItem(QIcon("theme:countries/lt.svg"), "lt"); + countryEdit->addItem(QIcon("theme:countries/lu.svg"), "lu"); + countryEdit->addItem(QIcon("theme:countries/lv.svg"), "lv"); + countryEdit->addItem(QIcon("theme:countries/ly.svg"), "ly"); + countryEdit->addItem(QIcon("theme:countries/ma.svg"), "ma"); + countryEdit->addItem(QIcon("theme:countries/mc.svg"), "mc"); + countryEdit->addItem(QIcon("theme:countries/md.svg"), "md"); + countryEdit->addItem(QIcon("theme:countries/me.svg"), "me"); + countryEdit->addItem(QIcon("theme:countries/mf.svg"), "mf"); + countryEdit->addItem(QIcon("theme:countries/mg.svg"), "mg"); + countryEdit->addItem(QIcon("theme:countries/mh.svg"), "mh"); + countryEdit->addItem(QIcon("theme:countries/mk.svg"), "mk"); + countryEdit->addItem(QIcon("theme:countries/ml.svg"), "ml"); + countryEdit->addItem(QIcon("theme:countries/mm.svg"), "mm"); + countryEdit->addItem(QIcon("theme:countries/mn.svg"), "mn"); + countryEdit->addItem(QIcon("theme:countries/mo.svg"), "mo"); + countryEdit->addItem(QIcon("theme:countries/mp.svg"), "mp"); + countryEdit->addItem(QIcon("theme:countries/mq.svg"), "mq"); + countryEdit->addItem(QIcon("theme:countries/mr.svg"), "mr"); + countryEdit->addItem(QIcon("theme:countries/ms.svg"), "ms"); + countryEdit->addItem(QIcon("theme:countries/mt.svg"), "mt"); + countryEdit->addItem(QIcon("theme:countries/mu.svg"), "mu"); + countryEdit->addItem(QIcon("theme:countries/mv.svg"), "mv"); + countryEdit->addItem(QIcon("theme:countries/mw.svg"), "mw"); + countryEdit->addItem(QIcon("theme:countries/mx.svg"), "mx"); + countryEdit->addItem(QIcon("theme:countries/my.svg"), "my"); + countryEdit->addItem(QIcon("theme:countries/mz.svg"), "mz"); + countryEdit->addItem(QIcon("theme:countries/na.svg"), "na"); + countryEdit->addItem(QIcon("theme:countries/nc.svg"), "nc"); + countryEdit->addItem(QIcon("theme:countries/ne.svg"), "ne"); + countryEdit->addItem(QIcon("theme:countries/nf.svg"), "nf"); + countryEdit->addItem(QIcon("theme:countries/ng.svg"), "ng"); + countryEdit->addItem(QIcon("theme:countries/ni.svg"), "ni"); + countryEdit->addItem(QIcon("theme:countries/nl.svg"), "nl"); + countryEdit->addItem(QIcon("theme:countries/no.svg"), "no"); + countryEdit->addItem(QIcon("theme:countries/np.svg"), "np"); + countryEdit->addItem(QIcon("theme:countries/nr.svg"), "nr"); + countryEdit->addItem(QIcon("theme:countries/nu.svg"), "nu"); + countryEdit->addItem(QIcon("theme:countries/nz.svg"), "nz"); + countryEdit->addItem(QIcon("theme:countries/om.svg"), "om"); + countryEdit->addItem(QIcon("theme:countries/pa.svg"), "pa"); + countryEdit->addItem(QIcon("theme:countries/pe.svg"), "pe"); + countryEdit->addItem(QIcon("theme:countries/pf.svg"), "pf"); + countryEdit->addItem(QIcon("theme:countries/pg.svg"), "pg"); + countryEdit->addItem(QIcon("theme:countries/ph.svg"), "ph"); + countryEdit->addItem(QIcon("theme:countries/pk.svg"), "pk"); + countryEdit->addItem(QIcon("theme:countries/pl.svg"), "pl"); + countryEdit->addItem(QIcon("theme:countries/pm.svg"), "pm"); + countryEdit->addItem(QIcon("theme:countries/pn.svg"), "pn"); + countryEdit->addItem(QIcon("theme:countries/pr.svg"), "pr"); + countryEdit->addItem(QIcon("theme:countries/ps.svg"), "ps"); + countryEdit->addItem(QIcon("theme:countries/pt.svg"), "pt"); + countryEdit->addItem(QIcon("theme:countries/pw.svg"), "pw"); + countryEdit->addItem(QIcon("theme:countries/py.svg"), "py"); + countryEdit->addItem(QIcon("theme:countries/qa.svg"), "qa"); + countryEdit->addItem(QIcon("theme:countries/re.svg"), "re"); + countryEdit->addItem(QIcon("theme:countries/ro.svg"), "ro"); + countryEdit->addItem(QIcon("theme:countries/rs.svg"), "rs"); + countryEdit->addItem(QIcon("theme:countries/ru.svg"), "ru"); + countryEdit->addItem(QIcon("theme:countries/rw.svg"), "rw"); + countryEdit->addItem(QIcon("theme:countries/sa.svg"), "sa"); + countryEdit->addItem(QIcon("theme:countries/sb.svg"), "sb"); + countryEdit->addItem(QIcon("theme:countries/sc.svg"), "sc"); + countryEdit->addItem(QIcon("theme:countries/sd.svg"), "sd"); + countryEdit->addItem(QIcon("theme:countries/se.svg"), "se"); + countryEdit->addItem(QIcon("theme:countries/sg.svg"), "sg"); + countryEdit->addItem(QIcon("theme:countries/sh.svg"), "sh"); + countryEdit->addItem(QIcon("theme:countries/si.svg"), "si"); + countryEdit->addItem(QIcon("theme:countries/sj.svg"), "sj"); + countryEdit->addItem(QIcon("theme:countries/sk.svg"), "sk"); + countryEdit->addItem(QIcon("theme:countries/sl.svg"), "sl"); + countryEdit->addItem(QIcon("theme:countries/sm.svg"), "sm"); + countryEdit->addItem(QIcon("theme:countries/sn.svg"), "sn"); + countryEdit->addItem(QIcon("theme:countries/so.svg"), "so"); + countryEdit->addItem(QIcon("theme:countries/sr.svg"), "sr"); + countryEdit->addItem(QIcon("theme:countries/ss.svg"), "ss"); + countryEdit->addItem(QIcon("theme:countries/st.svg"), "st"); + countryEdit->addItem(QIcon("theme:countries/sv.svg"), "sv"); + countryEdit->addItem(QIcon("theme:countries/sx.svg"), "sx"); + countryEdit->addItem(QIcon("theme:countries/sy.svg"), "sy"); + countryEdit->addItem(QIcon("theme:countries/sz.svg"), "sz"); + countryEdit->addItem(QIcon("theme:countries/tc.svg"), "tc"); + countryEdit->addItem(QIcon("theme:countries/td.svg"), "td"); + countryEdit->addItem(QIcon("theme:countries/tf.svg"), "tf"); + countryEdit->addItem(QIcon("theme:countries/tg.svg"), "tg"); + countryEdit->addItem(QIcon("theme:countries/th.svg"), "th"); + countryEdit->addItem(QIcon("theme:countries/tj.svg"), "tj"); + countryEdit->addItem(QIcon("theme:countries/tk.svg"), "tk"); + countryEdit->addItem(QIcon("theme:countries/tl.svg"), "tl"); + countryEdit->addItem(QIcon("theme:countries/tm.svg"), "tm"); + countryEdit->addItem(QIcon("theme:countries/tn.svg"), "tn"); + countryEdit->addItem(QIcon("theme:countries/to.svg"), "to"); + countryEdit->addItem(QIcon("theme:countries/tr.svg"), "tr"); + countryEdit->addItem(QIcon("theme:countries/tt.svg"), "tt"); + countryEdit->addItem(QIcon("theme:countries/tv.svg"), "tv"); + countryEdit->addItem(QIcon("theme:countries/tw.svg"), "tw"); + countryEdit->addItem(QIcon("theme:countries/tz.svg"), "tz"); + countryEdit->addItem(QIcon("theme:countries/ua.svg"), "ua"); + countryEdit->addItem(QIcon("theme:countries/ug.svg"), "ug"); + countryEdit->addItem(QIcon("theme:countries/um.svg"), "um"); + countryEdit->addItem(QIcon("theme:countries/us.svg"), "us"); + countryEdit->addItem(QIcon("theme:countries/uy.svg"), "uy"); + countryEdit->addItem(QIcon("theme:countries/uz.svg"), "uz"); + countryEdit->addItem(QIcon("theme:countries/va.svg"), "va"); + countryEdit->addItem(QIcon("theme:countries/vc.svg"), "vc"); + countryEdit->addItem(QIcon("theme:countries/ve.svg"), "ve"); + countryEdit->addItem(QIcon("theme:countries/vg.svg"), "vg"); + countryEdit->addItem(QIcon("theme:countries/vi.svg"), "vi"); + countryEdit->addItem(QIcon("theme:countries/vn.svg"), "vn"); + countryEdit->addItem(QIcon("theme:countries/vu.svg"), "vu"); + countryEdit->addItem(QIcon("theme:countries/wf.svg"), "wf"); + countryEdit->addItem(QIcon("theme:countries/ws.svg"), "ws"); + countryEdit->addItem(QIcon("theme:countries/ye.svg"), "ye"); + countryEdit->addItem(QIcon("theme:countries/yt.svg"), "yt"); + countryEdit->addItem(QIcon("theme:countries/za.svg"), "za"); + countryEdit->addItem(QIcon("theme:countries/zm.svg"), "zm"); + countryEdit->addItem(QIcon("theme:countries/zw.svg"), "zw"); countryEdit->setCurrentIndex(0); QStringList countries = settingsCache->getCountries(); foreach(QString c, countries) - countryEdit->addItem(QPixmap(":/resources/countries/" + c + ".svg"), c); + countryEdit->addItem(QPixmap("theme:countries/" + c.toLower() + ".svg"), c); realnameLabel = new QLabel(tr("Real name:")); realnameEdit = new QLineEdit(); @@ -117,14 +362,11 @@ void DlgRegister::actOk() return; } - QSettings settings; - settings.beginGroup("server"); - settings.setValue("hostname", hostEdit->text()); - settings.setValue("port", portEdit->text()); - settings.setValue("playername", playernameEdit->text()); + settingsCache->servers().setHostName(hostEdit->text()); + settingsCache->servers().setPort(portEdit->text()); + settingsCache->servers().setPlayerName(playernameEdit->text()); // always save the password so it will be picked up by the connect dialog - settings.setValue("password", passwordEdit->text()); - settings.endGroup(); + settingsCache->servers().setPassword(passwordEdit->text()); accept(); } diff --git a/cockatrice/src/dlg_settings.cpp b/cockatrice/src/dlg_settings.cpp index da47aa8d..f75bc50c 100644 --- a/cockatrice/src/dlg_settings.cpp +++ b/cockatrice/src/dlg_settings.cpp @@ -13,7 +13,6 @@ #include #include #include -#include #include #include #include @@ -26,6 +25,7 @@ #include "dlg_settings.h" #include "main.h" #include "settingscache.h" +#include "thememanager.h" #include "priceupdater.h" #include "soundengine.h" #include "sequenceEdit/shortcutstab.h" @@ -45,6 +45,7 @@ GeneralSettingsPage::GeneralSettingsPage() picDownloadCheckBox.setChecked(settingsCache->getPicDownload()); picDownloadHqCheckBox.setChecked(settingsCache->getPicDownloadHq()); + updateNotificationCheckBox.setChecked(settingsCache->getNotifyAboutUpdates()); pixmapCacheEdit.setMinimum(PIXMAPCACHE_SIZE_MIN); // 2047 is the max value to avoid overflowing of QPixmapCache::setCacheLimit(int size) @@ -64,19 +65,21 @@ GeneralSettingsPage::GeneralSettingsPage() connect(&picDownloadHqCheckBox, SIGNAL(stateChanged(int)), settingsCache, SLOT(setPicDownloadHq(int))); connect(&pixmapCacheEdit, SIGNAL(valueChanged(int)), settingsCache, SLOT(setPixmapCacheSize(int))); connect(&picDownloadHqCheckBox, SIGNAL(clicked(bool)), this, SLOT(setEnabledStatus(bool))); + connect(&updateNotificationCheckBox, SIGNAL(stateChanged(int)), settingsCache, SLOT(setNotifyAboutUpdate(int))); connect(highQualityURLEdit, SIGNAL(textChanged(QString)), settingsCache, SLOT(setPicUrlHq(QString))); QGridLayout *personalGrid = new QGridLayout; personalGrid->addWidget(&languageLabel, 0, 0); personalGrid->addWidget(&languageBox, 0, 1); - personalGrid->addWidget(&pixmapCacheLabel, 1, 0, 1, 1); - personalGrid->addWidget(&pixmapCacheEdit, 1, 1, 1, 1); - personalGrid->addWidget(&picDownloadCheckBox, 2, 0, 1, 2); - personalGrid->addWidget(&picDownloadHqCheckBox, 3, 0, 1, 2); - personalGrid->addWidget(&clearDownloadedPicsButton, 4, 0, 1, 1); - personalGrid->addWidget(&highQualityURLLabel, 5, 0, 1, 1); - personalGrid->addWidget(highQualityURLEdit, 5, 1, 1, 1); - personalGrid->addWidget(&highQualityURLLinkLabel, 6, 1, 1, 1); + personalGrid->addWidget(&pixmapCacheLabel, 1, 0); + personalGrid->addWidget(&pixmapCacheEdit, 1, 1); + personalGrid->addWidget(&updateNotificationCheckBox, 2, 0); + personalGrid->addWidget(&picDownloadCheckBox, 3, 0); + personalGrid->addWidget(&picDownloadHqCheckBox, 4, 0); + personalGrid->addWidget(&highQualityURLLabel, 5, 0); + personalGrid->addWidget(highQualityURLEdit, 5, 1); + personalGrid->addWidget(&highQualityURLLinkLabel, 6, 1); + personalGrid->addWidget(&clearDownloadedPicsButton, 6, 0); highQualityURLLinkLabel.setTextInteractionFlags(Qt::LinksAccessibleByMouse); highQualityURLLinkLabel.setOpenExternalLinks(true); @@ -246,6 +249,7 @@ void GeneralSettingsPage::retranslateUi() highQualityURLLabel.setText(tr("Custom Card Download URL:")); highQualityURLLinkLabel.setText(QString("%2").arg(LINKING_FAQ_URL).arg(tr("Linking FAQ"))); clearDownloadedPicsButton.setText(tr("Reset/Clear Downloaded Pictures")); + updateNotificationCheckBox.setText(tr("Notify when new client features are available")); } void GeneralSettingsPage::setEnabledStatus(bool status) @@ -255,67 +259,23 @@ void GeneralSettingsPage::setEnabledStatus(bool status) AppearanceSettingsPage::AppearanceSettingsPage() { - QIcon deleteIcon(":/resources/icon_delete.svg"); - - handBgEdit = new QLineEdit(settingsCache->getHandBgPath()); - handBgEdit->setReadOnly(true); - QPushButton *handBgClearButton = new QPushButton(deleteIcon, QString()); - connect(handBgClearButton, SIGNAL(clicked()), this, SLOT(handBgClearButtonClicked())); - QPushButton *handBgButton = new QPushButton("..."); - connect(handBgButton, SIGNAL(clicked()), this, SLOT(handBgButtonClicked())); - - stackBgEdit = new QLineEdit(settingsCache->getStackBgPath()); - stackBgEdit->setReadOnly(true); - QPushButton *stackBgClearButton = new QPushButton(deleteIcon, QString()); - connect(stackBgClearButton, SIGNAL(clicked()), this, SLOT(stackBgClearButtonClicked())); - QPushButton *stackBgButton = new QPushButton("..."); - connect(stackBgButton, SIGNAL(clicked()), this, SLOT(stackBgButtonClicked())); + QString themeName = settingsCache->getThemeName(); - tableBgEdit = new QLineEdit(settingsCache->getTableBgPath()); - tableBgEdit->setReadOnly(true); - QPushButton *tableBgClearButton = new QPushButton(deleteIcon, QString()); - connect(tableBgClearButton, SIGNAL(clicked()), this, SLOT(tableBgClearButtonClicked())); - QPushButton *tableBgButton = new QPushButton("..."); - connect(tableBgButton, SIGNAL(clicked()), this, SLOT(tableBgButtonClicked())); - - playerAreaBgEdit = new QLineEdit(settingsCache->getPlayerBgPath()); - playerAreaBgEdit->setReadOnly(true); - QPushButton *playerAreaBgClearButton = new QPushButton(deleteIcon, QString()); - connect(playerAreaBgClearButton, SIGNAL(clicked()), this, SLOT(playerAreaBgClearButtonClicked())); - QPushButton *playerAreaBgButton = new QPushButton("..."); - connect(playerAreaBgButton, SIGNAL(clicked()), this, SLOT(playerAreaBgButtonClicked())); - - cardBackPicturePathEdit = new QLineEdit(settingsCache->getCardBackPicturePath()); - cardBackPicturePathEdit->setReadOnly(true); - QPushButton *cardBackPicturePathClearButton = new QPushButton(deleteIcon, QString()); - connect(cardBackPicturePathClearButton, SIGNAL(clicked()), this, SLOT(cardBackPicturePathClearButtonClicked())); - QPushButton *cardBackPicturePathButton = new QPushButton("..."); - connect(cardBackPicturePathButton, SIGNAL(clicked()), this, SLOT(cardBackPicturePathButtonClicked())); - - QGridLayout *zoneBgGrid = new QGridLayout; - zoneBgGrid->addWidget(&handBgLabel, 0, 0); - zoneBgGrid->addWidget(handBgEdit, 0, 1); - zoneBgGrid->addWidget(handBgClearButton, 0, 2); - zoneBgGrid->addWidget(handBgButton, 0, 3); - zoneBgGrid->addWidget(&stackBgLabel, 1, 0); - zoneBgGrid->addWidget(stackBgEdit, 1, 1); - zoneBgGrid->addWidget(stackBgClearButton, 1, 2); - zoneBgGrid->addWidget(stackBgButton, 1, 3); - zoneBgGrid->addWidget(&tableBgLabel, 2, 0); - zoneBgGrid->addWidget(tableBgEdit, 2, 1); - zoneBgGrid->addWidget(tableBgClearButton, 2, 2); - zoneBgGrid->addWidget(tableBgButton, 2, 3); - zoneBgGrid->addWidget(&playerAreaBgLabel, 3, 0); - zoneBgGrid->addWidget(playerAreaBgEdit, 3, 1); - zoneBgGrid->addWidget(playerAreaBgClearButton, 3, 2); - zoneBgGrid->addWidget(playerAreaBgButton, 3, 3); - zoneBgGrid->addWidget(&cardBackPicturePathLabel, 4, 0); - zoneBgGrid->addWidget(cardBackPicturePathEdit, 4, 1); - zoneBgGrid->addWidget(cardBackPicturePathClearButton, 4, 2); - zoneBgGrid->addWidget(cardBackPicturePathButton, 4, 3); + QStringList themeDirs = themeManager->getAvailableThemes().keys(); + for (int i = 0; i < themeDirs.size(); i++) { + themeBox.addItem(themeDirs[i]); + if (themeDirs[i] == themeName) + themeBox.setCurrentIndex(i); + } - zoneBgGroupBox = new QGroupBox; - zoneBgGroupBox->setLayout(zoneBgGrid); + connect(&themeBox, SIGNAL(currentIndexChanged(int)), this, SLOT(themeBoxChanged(int))); + + QGridLayout *themeGrid = new QGridLayout; + themeGrid->addWidget(&themeLabel, 0, 0); + themeGrid->addWidget(&themeBox, 0, 1); + + themeGroupBox = new QGroupBox; + themeGroupBox->setLayout(themeGrid); displayCardNamesCheckBox.setChecked(settingsCache->getDisplayCardNames()); connect(&displayCardNamesCheckBox, SIGNAL(stateChanged(int)), settingsCache, SLOT(setDisplayCardNames(int))); @@ -360,7 +320,7 @@ AppearanceSettingsPage::AppearanceSettingsPage() tableGroupBox->setLayout(tableGrid); QVBoxLayout *mainLayout = new QVBoxLayout; - mainLayout->addWidget(zoneBgGroupBox); + mainLayout->addWidget(themeGroupBox); mainLayout->addWidget(cardsGroupBox); mainLayout->addWidget(handGroupBox); mainLayout->addWidget(tableGroupBox); @@ -368,14 +328,17 @@ AppearanceSettingsPage::AppearanceSettingsPage() setLayout(mainLayout); } +void AppearanceSettingsPage::themeBoxChanged(int index) +{ + QStringList themeDirs = themeManager->getAvailableThemes().keys(); + if(index >= 0 && index < themeDirs.count()) + settingsCache->setThemeName(themeDirs.at(index)); +} + void AppearanceSettingsPage::retranslateUi() { - zoneBgGroupBox->setTitle(tr("Zone background pictures")); - handBgLabel.setText(tr("Hand background:")); - stackBgLabel.setText(tr("Stack background:")); - tableBgLabel.setText(tr("Table background:")); - playerAreaBgLabel.setText(tr("Player info background:")); - cardBackPicturePathLabel.setText(tr("Card back:")); + themeGroupBox->setTitle(tr("Theme settings")); + themeLabel.setText(tr("Current theme:")); cardsGroupBox->setTitle(tr("Card rendering")); displayCardNamesCheckBox.setText(tr("Display card names on cards having a picture")); @@ -390,86 +353,6 @@ void AppearanceSettingsPage::retranslateUi() minPlayersForMultiColumnLayoutLabel.setText(tr("Minimum player count for multi-column layout:")); } -void AppearanceSettingsPage::handBgClearButtonClicked() -{ - handBgEdit->setText(QString()); - settingsCache->setHandBgPath(QString()); -} - -void AppearanceSettingsPage::handBgButtonClicked() -{ - QString path = QFileDialog::getOpenFileName(this, tr("Choose path")); - if (path.isEmpty()) - return; - - handBgEdit->setText(path); - settingsCache->setHandBgPath(path); -} - -void AppearanceSettingsPage::stackBgClearButtonClicked() -{ - stackBgEdit->setText(QString()); - settingsCache->setStackBgPath(QString()); -} - -void AppearanceSettingsPage::stackBgButtonClicked() -{ - QString path = QFileDialog::getOpenFileName(this, tr("Choose path")); - if (path.isEmpty()) - return; - - stackBgEdit->setText(path); - settingsCache->setStackBgPath(path); -} - -void AppearanceSettingsPage::tableBgClearButtonClicked() -{ - tableBgEdit->setText(QString()); - settingsCache->setTableBgPath(QString()); -} - -void AppearanceSettingsPage::tableBgButtonClicked() -{ - QString path = QFileDialog::getOpenFileName(this, tr("Choose path")); - if (path.isEmpty()) - return; - - tableBgEdit->setText(path); - settingsCache->setTableBgPath(path); -} - -void AppearanceSettingsPage::playerAreaBgClearButtonClicked() -{ - playerAreaBgEdit->setText(QString()); - settingsCache->setPlayerBgPath(QString()); -} - -void AppearanceSettingsPage::playerAreaBgButtonClicked() -{ - QString path = QFileDialog::getOpenFileName(this, tr("Choose path")); - if (path.isEmpty()) - return; - - playerAreaBgEdit->setText(path); - settingsCache->setPlayerBgPath(path); -} - -void AppearanceSettingsPage::cardBackPicturePathClearButtonClicked() -{ - cardBackPicturePathEdit->setText(QString()); - settingsCache->setCardBackPicturePath(QString()); -} - -void AppearanceSettingsPage::cardBackPicturePathButtonClicked() -{ - QString path = QFileDialog::getOpenFileName(this, tr("Choose path")); - if (path.isEmpty()) - return; - - cardBackPicturePathEdit->setText(path); - settingsCache->setCardBackPicturePath(path); -} - UserInterfaceSettingsPage::UserInterfaceSettingsPage() { notificationsEnabledCheckBox.setChecked(settingsCache->getNotificationsEnabled()); @@ -632,18 +515,17 @@ MessagesSettingsPage::MessagesSettingsPage() highlightGroupBox = new QGroupBox; highlightGroupBox->setLayout(highlightNotice); - QSettings settings; messageList = new QListWidget; - settings.beginGroup("messages"); - int count = settings.value("count", 0).toInt(); + + int count = settingsCache->messages().getCount(); for (int i = 0; i < count; i++) - messageList->addItem(settings.value(QString("msg%1").arg(i)).toString()); + messageList->addItem(settingsCache->messages().getMessageAt(i)); aAdd = new QAction(this); - aAdd->setIcon(QIcon(":/resources/increment.svg")); + aAdd->setIcon(QIcon("theme:icons/increment.svg")); connect(aAdd, SIGNAL(triggered()), this, SLOT(actAdd())); aRemove = new QAction(this); - aRemove->setIcon(QIcon(":/resources/decrement.svg")); + aRemove->setIcon(QIcon("theme:icons/decrement.svg")); connect(aRemove, SIGNAL(triggered()), this, SLOT(actRemove())); QToolBar *messageToolBar = new QToolBar; @@ -709,11 +591,9 @@ void MessagesSettingsPage::updateHighlightPreview() { void MessagesSettingsPage::storeSettings() { - QSettings settings; - settings.beginGroup("messages"); - settings.setValue("count", messageList->count()); + settingsCache->messages().setCount(messageList->count()); for (int i = 0; i < messageList->count(); i++) - settings.setValue(QString("msg%1").arg(i), messageList->item(i)->text()); + settingsCache->messages().setMessageAt(i, messageList->item(i)->text()); } void MessagesSettingsPage::actAdd() @@ -755,7 +635,7 @@ void MessagesSettingsPage::retranslateUi() SoundSettingsPage::SoundSettingsPage() { - QIcon deleteIcon(":/resources/icon_delete.svg"); + QIcon deleteIcon("theme:icons/delete.svg"); soundEnabledCheckBox.setChecked(settingsCache->getSoundEnabled()); connect(&soundEnabledCheckBox, SIGNAL(stateChanged(int)), settingsCache, SLOT(setSoundEnabled(int))); @@ -766,7 +646,7 @@ SoundSettingsPage::SoundSettingsPage() connect(soundPathClearButton, SIGNAL(clicked()), this, SLOT(soundPathClearButtonClicked())); QPushButton *soundPathButton = new QPushButton("..."); connect(soundPathButton, SIGNAL(clicked()), this, SLOT(soundPathButtonClicked())); - connect(&soundTestButton, SIGNAL(clicked()), soundEngine, SLOT(playerJoined())); + connect(&soundTestButton, SIGNAL(clicked()), soundEngine, SLOT(testSound())); masterVolumeSlider = new QSlider(Qt::Horizontal); masterVolumeSlider->setMinimum(0); @@ -774,7 +654,7 @@ SoundSettingsPage::SoundSettingsPage() masterVolumeSlider->setValue(settingsCache->getMasterVolume()); masterVolumeSlider->setToolTip(QString::number(settingsCache->getMasterVolume())); connect(settingsCache, SIGNAL(masterVolumeChanged(int)), this, SLOT(masterVolumeChanged(int))); - connect(masterVolumeSlider, SIGNAL(sliderReleased()), soundEngine, SLOT(playerJoined())); + connect(masterVolumeSlider, SIGNAL(sliderReleased()), soundEngine, SLOT(testSound())); connect(masterVolumeSlider, SIGNAL(valueChanged(int)), settingsCache, SLOT(setMasterVolume(int))); @@ -892,37 +772,37 @@ void DlgSettings::createIcons() generalButton = new QListWidgetItem(contentsWidget); generalButton->setTextAlignment(Qt::AlignHCenter); generalButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - generalButton->setIcon(QIcon(":/resources/icon_config_general.svg")); + generalButton->setIcon(QIcon("theme:config/general.svg")); appearanceButton = new QListWidgetItem(contentsWidget); appearanceButton->setTextAlignment(Qt::AlignHCenter); appearanceButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - appearanceButton->setIcon(QIcon(":/resources/icon_config_appearance.svg")); + appearanceButton->setIcon(QIcon("theme:config/appearance.svg")); userInterfaceButton = new QListWidgetItem(contentsWidget); userInterfaceButton->setTextAlignment(Qt::AlignHCenter); userInterfaceButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - userInterfaceButton->setIcon(QIcon(":/resources/icon_config_interface.svg")); + userInterfaceButton->setIcon(QIcon("theme:config/interface.svg")); deckEditorButton = new QListWidgetItem(contentsWidget); deckEditorButton->setTextAlignment(Qt::AlignHCenter); deckEditorButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - deckEditorButton->setIcon(QIcon(":/resources/icon_config_deckeditor.svg")); + deckEditorButton->setIcon(QIcon("theme:config/deckeditor.svg")); messagesButton = new QListWidgetItem(contentsWidget); messagesButton->setTextAlignment(Qt::AlignHCenter); messagesButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - messagesButton->setIcon(QIcon(":/resources/icon_config_messages.svg")); + messagesButton->setIcon(QIcon("theme:config/messages.svg")); soundButton = new QListWidgetItem(contentsWidget); soundButton->setTextAlignment(Qt::AlignHCenter); soundButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - soundButton->setIcon(QIcon(":/resources/icon_config_sound.svg")); + soundButton->setIcon(QIcon("theme:config/sound.svg")); shortcutsButton = new QListWidgetItem(contentsWidget); shortcutsButton->setTextAlignment(Qt::AlignHCenter); shortcutsButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - shortcutsButton->setIcon(QIcon(":/resources/icon_config_shorcuts.svg")); + shortcutsButton->setIcon(QIcon("theme:config/shorcuts.svg")); connect(contentsWidget, SIGNAL(currentItemChanged(QListWidgetItem *, QListWidgetItem *)), this, SLOT(changePage(QListWidgetItem *, QListWidgetItem *))); } @@ -1037,4 +917,7 @@ void DlgSettings::retranslateUi() for (int i = 0; i < pagesWidget->count(); i++) dynamic_cast(pagesWidget->widget(i))->retranslateUi(); + + contentsWidget->reset(); } + diff --git a/cockatrice/src/dlg_settings.h b/cockatrice/src/dlg_settings.h index 208c9b63..45443c0b 100644 --- a/cockatrice/src/dlg_settings.h +++ b/cockatrice/src/dlg_settings.h @@ -60,6 +60,7 @@ private: QComboBox languageBox; QCheckBox picDownloadCheckBox; QCheckBox picDownloadHqCheckBox; + QCheckBox updateNotificationCheckBox; QLabel languageLabel; QLabel pixmapCacheLabel; QLabel deckPathLabel; @@ -75,40 +76,17 @@ private: class AppearanceSettingsPage : public AbstractSettingsPage { Q_OBJECT private slots: - void handBgClearButtonClicked(); - void handBgButtonClicked(); - void stackBgClearButtonClicked(); - void stackBgButtonClicked(); - void tableBgClearButtonClicked(); - void tableBgButtonClicked(); - void playerAreaBgClearButtonClicked(); - void playerAreaBgButtonClicked(); - void cardBackPicturePathClearButtonClicked(); - void cardBackPicturePathButtonClicked(); -signals: - void handBgChanged(const QString &path); - void stackBgChanged(const QString &path); - void tableBgChanged(const QString &path); - void playerAreaBgChanged(const QString &path); - void cardBackPicturePathChanged(const QString &path); + void themeBoxChanged(int index); private: - QLabel handBgLabel; - QLabel stackBgLabel; - QLabel tableBgLabel; - QLabel playerAreaBgLabel; - QLabel cardBackPicturePathLabel; + QLabel themeLabel; + QComboBox themeBox; QLabel minPlayersForMultiColumnLayoutLabel; - QLineEdit *handBgEdit; - QLineEdit *stackBgEdit; - QLineEdit *tableBgEdit; - QLineEdit *playerAreaBgEdit; - QLineEdit *cardBackPicturePathEdit; QCheckBox displayCardNamesCheckBox; QCheckBox cardScalingCheckBox; QCheckBox horizontalHandCheckBox; QCheckBox leftJustifiedHandCheckBox; QCheckBox invertVerticalCoordinateCheckBox; - QGroupBox *zoneBgGroupBox; + QGroupBox *themeGroupBox; QGroupBox *cardsGroupBox; QGroupBox *handGroupBox; QGroupBox *tableGroupBox; diff --git a/cockatrice/src/filterbuilder.cpp b/cockatrice/src/filterbuilder.cpp index b6e33ff6..a07e40c5 100644 --- a/cockatrice/src/filterbuilder.cpp +++ b/cockatrice/src/filterbuilder.cpp @@ -26,7 +26,7 @@ FilterBuilder::FilterBuilder(QWidget *parent) QVariant(i) ); - QPushButton *ok = new QPushButton(QIcon(":/resources/increment.svg"), QString()); + QPushButton *ok = new QPushButton(QIcon("theme:icons/increment.svg"), QString()); ok->setObjectName("ok"); ok->setMaximumSize(20, 20); diff --git a/cockatrice/src/gameselector.cpp b/cockatrice/src/gameselector.cpp index 06b46c3e..6c58b842 100644 --- a/cockatrice/src/gameselector.cpp +++ b/cockatrice/src/gameselector.cpp @@ -60,10 +60,10 @@ GameSelector::GameSelector(AbstractClient *_client, const TabSupervisor *_tabSup gameListView->header()->setSectionResizeMode(0, QHeaderView::ResizeToContents); #endif filterButton = new QPushButton; - filterButton->setIcon(QIcon(":/resources/icon_search_black.svg")); + filterButton->setIcon(QIcon("theme:icons/search.svg")); connect(filterButton, SIGNAL(clicked()), this, SLOT(actSetFilter())); clearFilterButton = new QPushButton; - clearFilterButton->setIcon(QIcon(":/resources/icon_clearsearch.svg")); + clearFilterButton->setIcon(QIcon("theme:icons/clearsearch.svg")); clearFilterButton->setEnabled(true); connect(clearFilterButton, SIGNAL(clicked()), this, SLOT(actClearFilter())); diff --git a/cockatrice/src/gamesmodel.cpp b/cockatrice/src/gamesmodel.cpp index d88fafbe..0e537fee 100644 --- a/cockatrice/src/gamesmodel.cpp +++ b/cockatrice/src/gamesmodel.cpp @@ -1,12 +1,12 @@ #include "gamesmodel.h" #include "pb/serverinfo_game.pb.h" #include "pixmapgenerator.h" +#include "settingscache.h" + #include #include #include #include -#include -#include enum GameListColumn {ROOM, CREATED, DESCRIPTION, CREATOR, GAME_TYPE, RESTRICTIONS, PLAYERS, SPECTATORS}; @@ -283,19 +283,17 @@ void GamesProxyModel::resetFilterParameters() void GamesProxyModel::loadFilterParameters(const QMap &allGameTypes) { - QSettings settings; - settings.beginGroup("filter_games"); - unavailableGamesVisible = settings.value("unavailable_games_visible", false).toBool(); - showPasswordProtectedGames = settings.value("show_password_protected_games", true).toBool(); - gameNameFilter = settings.value("game_name_filter", "").toString(); - maxPlayersFilterMin = settings.value("min_players", 1).toInt(); - maxPlayersFilterMax = settings.value("max_players", DEFAULT_MAX_PLAYERS_MAX).toInt(); + unavailableGamesVisible = settingsCache->gameFilters().isUnavailableGamesVisible(); + showPasswordProtectedGames = settingsCache->gameFilters().isShowPasswordProtectedGames(); + gameNameFilter = settingsCache->gameFilters().getGameNameFilter(); + maxPlayersFilterMin = settingsCache->gameFilters().getMinPlayers(); + maxPlayersFilterMax = settingsCache->gameFilters().getMaxPlayers(); QMapIterator gameTypesIterator(allGameTypes); while (gameTypesIterator.hasNext()) { gameTypesIterator.next(); - if (settings.value("game_type/" + hashGameType(gameTypesIterator.value()), false).toBool()) { + if (settingsCache->gameFilters().isGameTypeEnabled(gameTypesIterator.value())){ gameTypeFilter.insert(gameTypesIterator.key()); } } @@ -305,28 +303,19 @@ void GamesProxyModel::loadFilterParameters(const QMap &allGameType void GamesProxyModel::saveFilterParameters(const QMap &allGameTypes) { - QSettings settings; - settings.beginGroup("filter_games"); - - settings.setValue("unavailable_games_visible", unavailableGamesVisible); - settings.setValue( - "show_password_protected_games", - showPasswordProtectedGames - ); - settings.setValue("game_name_filter", gameNameFilter); + settingsCache->gameFilters().setUnavailableGamesVisible(unavailableGamesVisible); + settingsCache->gameFilters().setShowPasswordProtectedGames(showPasswordProtectedGames); + settingsCache->gameFilters().setGameNameFilter(gameNameFilter); QMapIterator gameTypeIterator(allGameTypes); while (gameTypeIterator.hasNext()) { gameTypeIterator.next(); - - settings.setValue( - "game_type/" + hashGameType(gameTypeIterator.value()), - gameTypeFilter.contains(gameTypeIterator.key()) - ); + bool enabled = gameTypeFilter.contains(gameTypeIterator.key()); + settingsCache->gameFilters().setGameTypeEnabled(gameTypeIterator.value(),enabled); } - settings.setValue("min_players", maxPlayersFilterMin); - settings.setValue("max_players", maxPlayersFilterMax); + settingsCache->gameFilters().setMinPlayers(maxPlayersFilterMin); + settingsCache->gameFilters().setMaxPlayers(maxPlayersFilterMax); } bool GamesProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex &/*sourceParent*/) const @@ -367,7 +356,3 @@ bool GamesProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex &/*sourc return true; } - -QString GamesProxyModel::hashGameType(const QString &gameType) const { - return QCryptographicHash::hash(gameType.toUtf8(), QCryptographicHash::Md5).toHex(); -} diff --git a/cockatrice/src/gamesmodel.h b/cockatrice/src/gamesmodel.h index df252958..97d31b94 100644 --- a/cockatrice/src/gamesmodel.h +++ b/cockatrice/src/gamesmodel.h @@ -52,13 +52,7 @@ private: QSet gameTypeFilter; int maxPlayersFilterMin, maxPlayersFilterMax; - static const int DEFAULT_MAX_PLAYERS_MAX = 99; - - /* - * The game type might contain special characters, so to use it in - * QSettings we just hash it. - */ - QString hashGameType(const QString &gameType) const; + static const int DEFAULT_MAX_PLAYERS_MAX = 99; public: GamesProxyModel(QObject *parent = 0, ServerInfo_User *_ownUser = 0); diff --git a/cockatrice/src/handcounter.cpp b/cockatrice/src/handcounter.cpp index 4aa33d69..3b7ba1d9 100644 --- a/cockatrice/src/handcounter.cpp +++ b/cockatrice/src/handcounter.cpp @@ -36,7 +36,7 @@ void HandCounter::paint(QPainter *painter, const QStyleOptionGraphicsItem * /*op #else if (!QPixmapCache::find("handCounter" + QString::number(translatedSize.width()), cachedPixmap)) { #endif - QSvgRenderer svg(QString(":/resources/hand.svg")); + QSvgRenderer svg(QString("theme:hand.svg")); cachedPixmap = QPixmap(translatedSize); cachedPixmap.fill(Qt::transparent); QPainter painter(&cachedPixmap); diff --git a/cockatrice/src/handzone.cpp b/cockatrice/src/handzone.cpp index 80e1194c..0db67f13 100644 --- a/cockatrice/src/handzone.cpp +++ b/cockatrice/src/handzone.cpp @@ -1,6 +1,7 @@ #include #include "handzone.h" #include "settingscache.h" +#include "thememanager.h" #include "player.h" #include "carddragitem.h" #include "carditem.h" @@ -10,16 +11,13 @@ HandZone::HandZone(Player *_p, bool _contentsKnown, int _zoneHeight, QGraphicsItem *parent) : SelectZone(_p, "hand", false, false, _contentsKnown, parent), zoneHeight(_zoneHeight) { - connect(settingsCache, SIGNAL(handBgPathChanged()), this, SLOT(updateBgPixmap())); - updateBgPixmap(); + connect(themeManager, SIGNAL(themeChanged()), this, SLOT(updateBg())); + updateBg(); setCacheMode(DeviceCoordinateCache); } -void HandZone::updateBgPixmap() +void HandZone::updateBg() { - QString bgPath = settingsCache->getHandBgPath(); - if (!bgPath.isEmpty()) - bgPixmap.load(bgPath); update(); } @@ -77,10 +75,7 @@ QRectF HandZone::boundingRect() const void HandZone::paint(QPainter *painter, const QStyleOptionGraphicsItem * /*option*/, QWidget * /*widget*/) { - if (bgPixmap.isNull()) - painter->fillRect(boundingRect(), QColor(30, 30, 30)); - else - painter->fillRect(boundingRect(), QBrush(bgPixmap)); + painter->fillRect(boundingRect(), themeManager->getHandBgBrush()); } void HandZone::reorganizeCards() diff --git a/cockatrice/src/handzone.h b/cockatrice/src/handzone.h index 66245c50..47fb5075 100644 --- a/cockatrice/src/handzone.h +++ b/cockatrice/src/handzone.h @@ -7,9 +7,8 @@ class HandZone : public SelectZone { Q_OBJECT private: qreal width, zoneHeight; - QPixmap bgPixmap; private slots: - void updateBgPixmap(); + void updateBg(); public slots: void updateOrientation(); public: diff --git a/cockatrice/src/main.cpp b/cockatrice/src/main.cpp index 5bd07ef9..f01e993e 100644 --- a/cockatrice/src/main.cpp +++ b/cockatrice/src/main.cpp @@ -26,7 +26,6 @@ #include #include #include -#include #include #include #include @@ -34,15 +33,16 @@ #include #include "QtNetwork/QNetworkInterface" #include - #include "main.h" #include "window_main.h" #include "dlg_settings.h" #include "carddatabase.h" #include "settingscache.h" +#include "thememanager.h" #include "pixmapgenerator.h" #include "rng_sfmt.h" #include "soundengine.h" +#include "featureset.h" //Q_IMPORT_PLUGIN(qjpeg) @@ -52,7 +52,7 @@ SettingsCache *settingsCache; RNG_Abstract *rng; SoundEngine *soundEngine; QSystemTrayIcon *trayIcon; - +ThemeManager *themeManager; const QString translationPrefix = "cockatrice"; #ifdef TRANSLATION_PATH @@ -147,6 +147,7 @@ int main(int argc, char *argv[]) rng = new RNG_SFMT; settingsCache = new SettingsCache; + themeManager = new ThemeManager; db = new CardDatabase; qtTranslator = new QTranslator; @@ -154,12 +155,15 @@ int main(int argc, char *argv[]) installNewTranslator(); qsrand(QDateTime::currentDateTime().toTime_t()); - -#if QT_VERSION < 0x050000 + +#ifdef PORTABLE_BUILD + const QString dataDir = "data/"; +#elif QT_VERSION < 0x050000 const QString dataDir = QDesktopServices::storageLocation(QDesktopServices::DataLocation); #else const QString dataDir = QStandardPaths::standardLocations(QStandardPaths::DataLocation).first(); #endif + if (!db->getLoadSuccess()) if (!db->loadCardDatabase(dataDir + "/cards.xml")) settingsCache->setCardDatabasePath(dataDir + "/cards.xml"); @@ -210,17 +214,17 @@ int main(int argc, char *argv[]) if (settingsValid()) { qDebug("main(): starting main program"); + soundEngine = new SoundEngine; qDebug("main(): SoundEngine constructor finished"); MainWindow ui; qDebug("main(): MainWindow constructor finished"); - QIcon icon(":/resources/appicon.svg"); + QIcon icon("theme:cockatrice.svg"); ui.setWindowIcon(icon); settingsCache->setClientID(generateClientID()); - qDebug() << "ClientID In Cache: " << settingsCache->getClientID(); ui.show(); qDebug("main(): ui.show() finished"); diff --git a/cockatrice/src/messagelogwidget.cpp b/cockatrice/src/messagelogwidget.cpp index 7b76d8b9..127c0d3d 100644 --- a/cockatrice/src/messagelogwidget.cpp +++ b/cockatrice/src/messagelogwidget.cpp @@ -37,7 +37,7 @@ bool MessageLogWidget::userIsFemale() const void MessageLogWidget::logGameJoined(int gameId) { - soundEngine->playerJoined(); + soundEngine->playSound("player_join"); if (userIsFemale()) appendHtmlServerMessage(tr("You have joined game #%1.", "female").arg(""+ QString::number(gameId) + "")); else @@ -54,7 +54,7 @@ void MessageLogWidget::logReplayStarted(int gameId) void MessageLogWidget::logJoin(Player *player) { - soundEngine->playerJoined(); + soundEngine->playSound("player_join"); if (isFemale(player)) appendHtmlServerMessage(tr("%1 has joined the game.", "female").arg(sanitizeHtml(player->getName()))); else @@ -63,6 +63,7 @@ void MessageLogWidget::logJoin(Player *player) void MessageLogWidget::logLeave(Player *player) { + soundEngine->playSound("player_leave"); if (isFemale(player)) appendHtmlServerMessage(tr("%1 has left the game.", "female").arg(sanitizeHtml(player->getName()))); else @@ -81,11 +82,13 @@ void MessageLogWidget::logKicked() void MessageLogWidget::logJoinSpectator(QString name) { + soundEngine->playSound("spectator_join"); appendHtmlServerMessage(tr("%1 is now watching the game.").arg(sanitizeHtml(name))); } void MessageLogWidget::logLeaveSpectator(QString name) { + soundEngine->playSound("spectator_leave"); appendHtmlServerMessage(tr("%1 is not watching the game any more.").arg(sanitizeHtml(name))); } @@ -134,6 +137,7 @@ void MessageLogWidget::logSetSideboardLock(Player *player, bool locked) void MessageLogWidget::logConcede(Player *player) { + soundEngine->playSound("player_concede"); if (isFemale(player)) appendHtmlServerMessage(tr("%1 has conceded the game.", "female").arg(sanitizeHtml(player->getName()))); else @@ -148,11 +152,13 @@ void MessageLogWidget::logGameStart() void MessageLogWidget::logConnectionStateChanged(Player *player, bool connectionState) { if (connectionState) { + soundEngine->playSound("player_reconnect"); if (isFemale(player)) appendHtmlServerMessage(tr("%1 has restored connection to the game.", "female").arg(sanitizeHtml(player->getName()))); else appendHtmlServerMessage(tr("%1 has restored connection to the game.", "male").arg(sanitizeHtml(player->getName()))); } else { + soundEngine->playSound("player_disconnect"); if (isFemale(player)) appendHtmlServerMessage(tr("%1 has lost connection to the game.", "female").arg(sanitizeHtml(player->getName()))); else @@ -172,6 +178,7 @@ void MessageLogWidget::logSpectatorSay(QString spectatorName, UserLevelFlags spe void MessageLogWidget::logShuffle(Player *player, CardZone *zone) { + soundEngine->playSound("shuffle"); if (currentContext != MessageContext_Mulligan) { appendHtmlServerMessage((isFemale(player) ? tr("%1 shuffles %2.", "female") @@ -183,6 +190,7 @@ void MessageLogWidget::logShuffle(Player *player, CardZone *zone) void MessageLogWidget::logRollDie(Player *player, int sides, int roll) { + soundEngine->playSound("roll_dice"); if (isFemale(player)) appendHtmlServerMessage(tr("%1 rolls a %2 with a %3-sided die.", "female").arg(sanitizeHtml(player->getName())).arg("" + QString::number(roll) + "").arg("" + QString::number(sides) + "")); else @@ -194,6 +202,7 @@ void MessageLogWidget::logDrawCards(Player *player, int number) if (currentContext == MessageContext_Mulligan) mulliganPlayer = player; else { + soundEngine->playSound("draw_card"); if (isFemale(player)) appendHtmlServerMessage(tr("%1 draws %2 card(s).", "female").arg(sanitizeHtml(player->getName())).arg("" + QString::number(number) + "")); else @@ -296,6 +305,7 @@ void MessageLogWidget::doMoveCard(LogMoveCard &attributes) QString finalStr; if (targetName == "table") { + soundEngine->playSound("play_card"); if (moveCardTapped.value(attributes.card)) finalStr = tr("%1 puts %2 into play tapped%3."); else @@ -318,6 +328,7 @@ void MessageLogWidget::doMoveCard(LogMoveCard &attributes) } else if (targetName == "sb") finalStr = tr("%1 moves %2%3 to sideboard."); else if (targetName == "stack") { + soundEngine->playSound("play_card"); finalStr = tr("%1 plays %2%3."); } @@ -565,7 +576,10 @@ void MessageLogWidget::logSetCardCounter(Player *player, QString cardName, int c void MessageLogWidget::logSetTapped(Player *player, CardItem *card, bool tapped) { - soundEngine->tap(); + if (tapped) + soundEngine->playSound("tap_card"); + else + soundEngine->playSound("untap_card"); if (currentContext == MessageContext_MoveCard) moveCardTapped.insert(card, tapped); @@ -603,6 +617,9 @@ void MessageLogWidget::logSetTapped(Player *player, CardItem *card, bool tapped) void MessageLogWidget::logSetCounter(Player *player, QString counterName, int value, int oldValue) { + if (counterName == "life") + soundEngine->playSound("life_change"); + QString str; if (isFemale(player)) str = tr("%1 sets counter %2 to %3 (%4%5).", "female"); @@ -799,17 +816,17 @@ void MessageLogWidget::logSetActivePhase(int phase) { QString phaseName; switch (phase) { - case 0: phaseName = tr("untap step"); break; - case 1: phaseName = tr("upkeep step"); break; - case 2: phaseName = tr("draw step"); break; - case 3: phaseName = tr("first main phase"); break; - case 4: phaseName = tr("beginning of combat step"); break; - case 5: phaseName = tr("declare attackers step"); soundEngine->attack(); break; - case 6: phaseName = tr("declare blockers step"); break; - case 7: phaseName = tr("combat damage step"); break; - case 8: phaseName = tr("end of combat step"); break; - case 9: phaseName = tr("second main phase"); break; - case 10: phaseName = tr("ending phase"); soundEngine->endStep(); break; + case 0: phaseName = tr("untap step"); soundEngine->playSound("untap_step"); break; + case 1: phaseName = tr("upkeep step"); soundEngine->playSound("upkeep_step"); break; + case 2: phaseName = tr("draw step"); soundEngine->playSound("draw_step"); break; + case 3: phaseName = tr("first main phase"); soundEngine->playSound("main_1"); break; + case 4: phaseName = tr("beginning of combat step"); soundEngine->playSound("start_combat"); break; + case 5: phaseName = tr("declare attackers step"); soundEngine->playSound("attack_step"); break; + case 6: phaseName = tr("declare blockers step"); soundEngine->playSound("block_step"); break; + case 7: phaseName = tr("combat damage step"); soundEngine->playSound("damage_step"); break; + case 8: phaseName = tr("end of combat step"); soundEngine->playSound("end_combat"); break; + case 9: phaseName = tr("second main phase"); soundEngine->playSound("main_2"); break; + case 10: phaseName = tr("ending phase"); soundEngine->playSound("end_step"); break; } appendHtml("" + QDateTime::currentDateTime().toString("[hh:mm:ss] ") + tr("It is now the %1.").arg(phaseName) + ""); } diff --git a/cockatrice/src/pixmapgenerator.cpp b/cockatrice/src/pixmapgenerator.cpp index 17d576c9..dd324037 100644 --- a/cockatrice/src/pixmapgenerator.cpp +++ b/cockatrice/src/pixmapgenerator.cpp @@ -16,7 +16,7 @@ QPixmap PhasePixmapGenerator::generatePixmap(int height, QString name) if (pmCache.contains(key)) return pmCache.value(key); - QSvgRenderer svg(QString(":/resources/phases/icon_phase_" + name + ".svg")); + QSvgRenderer svg(QString("theme:phases/" + name + ".svg")); QPixmap pixmap(height, height); pixmap.fill(Qt::transparent); @@ -36,13 +36,13 @@ QPixmap CounterPixmapGenerator::generatePixmap(int height, QString name, bool hi if (pmCache.contains(key)) return pmCache.value(key); - QSvgRenderer svg(QString(":/resources/counters/" + name + ".svg")); + QSvgRenderer svg(QString("theme:counters/" + name + ".svg")); if (!svg.isValid()) { name = "general"; if (highlight) name.append("_highlight"); - svg.load(QString(":/resources/counters/" + name + ".svg")); + svg.load(QString("theme:counters/" + name + ".svg")); } int width = (int) round(height * (double) svg.defaultSize().width() / (double) svg.defaultSize().height()); @@ -98,7 +98,7 @@ QPixmap GenderPixmapGenerator::generatePixmap(int height, int _gender) default: genderStr = "unknown"; }; - QSvgRenderer svg(QString(":/resources/genders/" + genderStr + ".svg")); + QSvgRenderer svg(QString("theme:genders/" + genderStr + ".svg")); int width = (int) round(height * (double) svg.defaultSize().width() / (double) svg.defaultSize().height()); QPixmap pixmap(width, height); pixmap.fill(Qt::transparent); @@ -119,7 +119,7 @@ QPixmap CountryPixmapGenerator::generatePixmap(int height, const QString &countr if (pmCache.contains(key)) return pmCache.value(key); - QSvgRenderer svg(QString(":/resources/countries/" + countryCode.toLower() + ".svg")); + QSvgRenderer svg(QString("theme:countries/" + countryCode.toLower() + ".svg")); int width = (int) round(height * (double) svg.defaultSize().width() / (double) svg.defaultSize().height()); QPixmap pixmap(width, height); pixmap.fill(Qt::transparent); @@ -154,7 +154,7 @@ QPixmap UserLevelPixmapGenerator::generatePixmap(int height, UserLevelFlags user if (isBuddy) levelString.append("_buddy"); - QSvgRenderer svg(QString(":/resources/userlevels/" + levelString + ".svg")); + QSvgRenderer svg(QString("theme:userlevels/" + levelString + ".svg")); int width = (int) round(height * (double) svg.defaultSize().width() / (double) svg.defaultSize().height()); QPixmap pixmap(width, height); pixmap.fill(Qt::transparent); @@ -175,7 +175,7 @@ QPixmap LockPixmapGenerator::generatePixmap(int height) if (pmCache.contains(key)) return pmCache.value(key); - QSvgRenderer svg(QString(":/resources/lock.svg")); + QSvgRenderer svg(QString("theme:icons/lock.svg")); int width = (int) round(height * (double) svg.defaultSize().width() / (double) svg.defaultSize().height()); QPixmap pixmap(width, height); pixmap.fill(Qt::transparent); diff --git a/cockatrice/src/player.cpp b/cockatrice/src/player.cpp index 1caeba45..ca5ab211 100644 --- a/cockatrice/src/player.cpp +++ b/cockatrice/src/player.cpp @@ -15,12 +15,12 @@ #include "tab_game.h" #include "gamescene.h" #include "settingscache.h" +#include "thememanager.h" #include "dlg_create_token.h" #include "carddatabase.h" #include "color.h" #include "deck_loader.h" #include "main.h" -#include #include #include #include @@ -69,25 +69,18 @@ PlayerArea::PlayerArea(QGraphicsItem *parentItem) : QObject(), QGraphicsItem(parentItem) { setCacheMode(DeviceCoordinateCache); - connect(settingsCache, SIGNAL(playerBgPathChanged()), this, SLOT(updateBgPixmap())); - updateBgPixmap(); + connect(themeManager, SIGNAL(themeChanged()), this, SLOT(updateBg())); + updateBg(); } -void PlayerArea::updateBgPixmap() +void PlayerArea::updateBg() { - QString bgPath = settingsCache->getPlayerBgPath(); - if (bgPath.isEmpty()) - bgPixmapBrush = QBrush(QColor(200, 200, 200)); - else { - qDebug() << "loading" << bgPath; - bgPixmapBrush = QBrush(QPixmap(bgPath)); - } update(); } void PlayerArea::paint(QPainter *painter, const QStyleOptionGraphicsItem * /*option*/, QWidget * /*widget*/) { - painter->fillRect(bRect, bgPixmapBrush); + painter->fillRect(bRect, themeManager->getPlayerBgBrush()); } void PlayerArea::setSize(qreal width, qreal height) @@ -832,12 +825,10 @@ void Player::initSayMenu() { sayMenu->clear(); - QSettings settings; - settings.beginGroup("messages"); - int count = settings.value("count", 0).toInt(); + int count = settingsCache->messages().getCount(); for (int i = 0; i < count; i++) { - QAction *newAction = new QAction(settings.value(QString("msg%1").arg(i)).toString(), this); + QAction *newAction = new QAction(settingsCache->messages().getMessageAt(i), this); if (i <= 10){ newAction->setShortcut(QKeySequence("Ctrl+" + QString::number((i + 1) % 10))); } diff --git a/cockatrice/src/player.h b/cockatrice/src/player.h index 5eb1a57f..db13d7f8 100644 --- a/cockatrice/src/player.h +++ b/cockatrice/src/player.h @@ -60,10 +60,9 @@ class PlayerArea : public QObject, public QGraphicsItem { Q_OBJECT Q_INTERFACES(QGraphicsItem) private: - QBrush bgPixmapBrush; QRectF bRect; private slots: - void updateBgPixmap(); + void updateBg(); public: enum { Type = typeOther }; int type() const { return Type; } diff --git a/cockatrice/src/playerlistwidget.cpp b/cockatrice/src/playerlistwidget.cpp index 6aac922d..1d780ce3 100644 --- a/cockatrice/src/playerlistwidget.cpp +++ b/cockatrice/src/playerlistwidget.cpp @@ -50,12 +50,12 @@ bool PlayerListTWI::operator<(const QTreeWidgetItem &other) const PlayerListWidget::PlayerListWidget(TabSupervisor *_tabSupervisor, AbstractClient *_client, TabGame *_game, QWidget *parent) : QTreeWidget(parent), tabSupervisor(_tabSupervisor), client(_client), game(_game), gameStarted(false) { - readyIcon = QIcon(":/resources/icon_ready_start.svg"); - notReadyIcon = QIcon(":/resources/icon_not_ready_start.svg"); - concededIcon = QIcon(":/resources/icon_conceded.svg"); - playerIcon = QIcon(":/resources/icon_player.svg"); - spectatorIcon = QIcon(":/resources/icon_spectator.svg"); - lockIcon = QIcon(":/resources/lock.svg"); + readyIcon = QIcon("theme:icons/ready_start.svg"); + notReadyIcon = QIcon("theme:icons/not_ready_start.svg"); + concededIcon = QIcon("theme:icons/conceded.svg"); + playerIcon = QIcon("theme:icons/player.svg"); + spectatorIcon = QIcon("theme:icons/spectator.svg"); + lockIcon = QIcon("theme:icons/lock.svg"); if (tabSupervisor) { itemDelegate = new PlayerListItemDelegate(this); diff --git a/cockatrice/src/remoteclient.cpp b/cockatrice/src/remoteclient.cpp index e149082b..b652726d 100644 --- a/cockatrice/src/remoteclient.cpp +++ b/cockatrice/src/remoteclient.cpp @@ -1,3 +1,4 @@ +#include #include #include #include "remoteclient.h" @@ -81,7 +82,6 @@ void RemoteClient::processServerIdentificationEvent(const Event_ServerIdentifica cmdRegister.set_country(country.toStdString()); cmdRegister.set_real_name(realName.toStdString()); cmdRegister.set_clientid(settingsCache->getClientID().toStdString()); - PendingCommand *pend = prepareSessionCommand(cmdRegister); connect(pend, SIGNAL(finished(Response, CommandContainer, QVariant)), this, SLOT(registerResponse(Response))); sendCommand(pend); @@ -105,8 +105,7 @@ void RemoteClient::processServerIdentificationEvent(const Event_ServerIdentifica doLogin(); } -void RemoteClient::doLogin() -{ +void RemoteClient::doLogin() { setStatus(StatusLoggingIn); Command_Login cmdLogin; @@ -114,6 +113,13 @@ void RemoteClient::doLogin() cmdLogin.set_password(password.toStdString()); cmdLogin.set_clientid(settingsCache->getClientID().toStdString()); cmdLogin.set_clientver(VERSION_STRING); + + if (!clientFeatures.isEmpty()) { + QMap::iterator i; + for (i = clientFeatures.begin(); i != clientFeatures.end(); ++i) + cmdLogin.add_clientfeatures(i.key().toStdString().c_str()); + } + PendingCommand *pend = prepareSessionCommand(cmdLogin); connect(pend, SIGNAL(finished(Response, CommandContainer, QVariant)), this, SLOT(loginResponse(Response))); sendCommand(pend); @@ -140,8 +146,17 @@ void RemoteClient::loginResponse(const Response &response) for (int i = resp.ignore_list_size() - 1; i >= 0; --i) ignoreList.append(resp.ignore_list(i)); emit ignoreListReceived(ignoreList); + + if (resp.missing_features_size() > 0 && settingsCache->getNotifyAboutUpdates()) + emit notifyUserAboutUpdate(); + } else { - emit loginError(response.response_code(), QString::fromStdString(resp.denied_reason_str()), resp.denied_end_time()); + QList missingFeatures; + if (resp.missing_features_size() > 0) { + for (int i = 0; i < resp.missing_features_size(); ++i) + missingFeatures << QString::fromStdString(resp.missing_features(i)); + } + emit loginError(response.response_code(), QString::fromStdString(resp.denied_reason_str()), resp.denied_end_time(), missingFeatures); setStatus(StatusDisconnecting); } } diff --git a/cockatrice/src/remoteclient.h b/cockatrice/src/remoteclient.h index c1478732..3e0ae971 100644 --- a/cockatrice/src/remoteclient.h +++ b/cockatrice/src/remoteclient.h @@ -11,7 +11,7 @@ class RemoteClient : public AbstractClient { signals: void maxPingTime(int seconds, int maxSeconds); void serverTimeout(); - void loginError(Response::ResponseCode resp, QString reasonStr, quint32 endTime); + void loginError(Response::ResponseCode resp, QString reasonStr, quint32 endTime, QList missingFeatures); void registerError(Response::ResponseCode resp, QString reasonStr, quint32 endTime); void activateError(); void socketError(const QString &errorString); @@ -21,6 +21,7 @@ signals: void sigRegisterToServer(const QString &hostname, unsigned int port, const QString &_userName, const QString &_password, const QString &_email, const int _gender, const QString &_country, const QString &_realname); void sigActivateToServer(const QString &_token); void sigDisconnectFromServer(); + void notifyUserAboutUpdate(); private slots: void slotConnected(); void readData(); diff --git a/cockatrice/src/remotereplaylist_treewidget.cpp b/cockatrice/src/remotereplaylist_treewidget.cpp index 5357596f..fa6a2e98 100644 --- a/cockatrice/src/remotereplaylist_treewidget.cpp +++ b/cockatrice/src/remotereplaylist_treewidget.cpp @@ -35,7 +35,7 @@ RemoteReplayList_TreeModel::RemoteReplayList_TreeModel(AbstractClient *_client, QFileIconProvider fip; dirIcon = fip.icon(QFileIconProvider::Folder); fileIcon = fip.icon(QFileIconProvider::File); - lockIcon = QIcon(":/resources/lock.svg"); + lockIcon = QIcon("theme:icons/lock.svg"); refreshTree(); } diff --git a/cockatrice/src/sequenceEdit/sequenceedit.cpp b/cockatrice/src/sequenceEdit/sequenceedit.cpp index 1056b576..f3b5d0de 100644 --- a/cockatrice/src/sequenceEdit/sequenceedit.cpp +++ b/cockatrice/src/sequenceEdit/sequenceedit.cpp @@ -25,8 +25,8 @@ SequenceEdit::SequenceEdit(QString _shorcutName, QWidget *parent) : QWidget(pare clearButton->setMaximumHeight(lineEdit->height()); defaultButton->setMaximumHeight(lineEdit->height()); - clearButton->setIcon(QIcon(":/resources/icon_clearsearch.svg")); - defaultButton->setIcon(QIcon(":/resources/icon_update.png")); + clearButton->setIcon(QIcon("theme:icons/clearsearch.svg")); + defaultButton->setIcon(QIcon("theme:icons/update.png")); clearButton->setAttribute(Qt::WA_LayoutUsesWidgetRect); defaultButton->setAttribute(Qt::WA_LayoutUsesWidgetRect); diff --git a/cockatrice/src/sequenceEdit/ui_shortcutstab.h b/cockatrice/src/sequenceEdit/ui_shortcutstab.h index e4f7f884..16cb5e36 100644 --- a/cockatrice/src/sequenceEdit/ui_shortcutstab.h +++ b/cockatrice/src/sequenceEdit/ui_shortcutstab.h @@ -596,7 +596,7 @@ public: gridLayout_4->addWidget(lbl_abstractCounter_aInc, 1, 0, 1, 1); - abstractCounter_Inc = new SequenceEdit("Player/Inc",groupBox_4); + abstractCounter_Inc = new SequenceEdit("Player/aInc",groupBox_4); abstractCounter_Inc->setObjectName("abstractCounter_Inc"); gridLayout_4->addWidget(abstractCounter_Inc, 1, 1, 1, 1); diff --git a/cockatrice/src/settings/carddatabasesettings.cpp b/cockatrice/src/settings/carddatabasesettings.cpp new file mode 100644 index 00000000..39b23bfc --- /dev/null +++ b/cockatrice/src/settings/carddatabasesettings.cpp @@ -0,0 +1,36 @@ +#include "carddatabasesettings.h" + +CardDatabaseSettings::CardDatabaseSettings(QString settingPath, QObject *parent) + : SettingsManager(settingPath+"cardDatabase.ini", parent) +{ +} + +void CardDatabaseSettings::setSortKey(QString shortName, unsigned int sortKey) +{ + setValue(sortKey,"sortkey", "sets", shortName); +} + +void CardDatabaseSettings::setEnabled(QString shortName, bool enabled) +{ + setValue(enabled, "enabled", "sets", shortName); +} + +void CardDatabaseSettings::setIsKnown(QString shortName, bool isknown) +{ + setValue(isknown, "isknown", "sets", shortName); +} + +unsigned int CardDatabaseSettings::getSortKey(QString shortName) +{ + return getValue("sortkey", "sets", shortName).toUInt(); +} + +bool CardDatabaseSettings::isEnabled(QString shortName) +{ + return getValue("enabled", "sets", shortName).toBool(); +} + +bool CardDatabaseSettings::isKnown(QString shortName) +{ + return getValue("isknown", "sets", shortName).toBool(); +} diff --git a/cockatrice/src/settings/carddatabasesettings.h b/cockatrice/src/settings/carddatabasesettings.h new file mode 100644 index 00000000..0f00d7dd --- /dev/null +++ b/cockatrice/src/settings/carddatabasesettings.h @@ -0,0 +1,34 @@ +#ifndef CARDDATABASESETTINGS_H +#define CARDDATABASESETTINGS_H + +#include "settingsmanager.h" + +#include +#include +#include + +class CardDatabaseSettings : public SettingsManager +{ + Q_OBJECT + friend class SettingsCache; +public: + void setSortKey(QString shortName, unsigned int sortKey); + void setEnabled(QString shortName, bool enabled); + void setIsKnown(QString shortName, bool isknown); + + unsigned int getSortKey(QString shortName); + bool isEnabled(QString shortName); + bool isKnown(QString shortName); +signals: + +public slots: + +private: + CardDatabaseSettings(QString settingPath, QObject *parent = 0); + CardDatabaseSettings( const CardDatabaseSettings& /*other*/ ); + CardDatabaseSettings( CardDatabaseSettings& /*other*/ ); + CardDatabaseSettings( volatile const CardDatabaseSettings& /*other*/ ); + CardDatabaseSettings( volatile CardDatabaseSettings& /*other*/ ); +}; + +#endif // CARDDATABASESETTINGS_H diff --git a/cockatrice/src/settings/gamefilterssettings.cpp b/cockatrice/src/settings/gamefilterssettings.cpp new file mode 100644 index 00000000..105924a4 --- /dev/null +++ b/cockatrice/src/settings/gamefilterssettings.cpp @@ -0,0 +1,88 @@ +#include "gamefilterssettings.h" +#include + +GameFiltersSettings::GameFiltersSettings(QString settingPath, QObject *parent) + : SettingsManager(settingPath+"gamefilters.ini", parent) +{ +} + +/* + * The game type might contain special characters, so to use it in + * QSettings we just hash it. + */ +QString GameFiltersSettings::hashGameType(const QString &gameType) const +{ + return QCryptographicHash::hash(gameType.toUtf8(), QCryptographicHash::Md5).toHex(); +} + +void GameFiltersSettings::setUnavailableGamesVisible(bool enabled) +{ + setValue(enabled, "unavailable_games_visible","filter_games"); +} + +bool GameFiltersSettings::isUnavailableGamesVisible() +{ + QVariant previous = getValue("unavailable_games_visible","filter_games"); + return previous == QVariant() ? false : previous.toBool(); +} + +void GameFiltersSettings::setShowPasswordProtectedGames(bool show) +{ + setValue(show, "show_password_protected_games","filter_games"); +} + +bool GameFiltersSettings::isShowPasswordProtectedGames() +{ + QVariant previous = getValue("show_password_protected_games","filter_games"); + return previous == QVariant() ? true : previous.toBool(); +} + +void GameFiltersSettings::setGameNameFilter(QString gameName) +{ + setValue(gameName, "game_name_filter","filter_games"); +} + +QString GameFiltersSettings::getGameNameFilter() +{ + return getValue("game_name_filter","filter_games").toString(); +} + +void GameFiltersSettings::setMinPlayers(int min) +{ + setValue(min, "min_players","filter_games"); +} + +int GameFiltersSettings::getMinPlayers() +{ + QVariant previous = getValue("min_players","filter_games"); + return previous == QVariant() ? 1 : previous.toInt(); +} + +void GameFiltersSettings::setMaxPlayers(int max) +{ + setValue(max, "max_players","filter_games"); +} + +int GameFiltersSettings::getMaxPlayers() +{ + QVariant previous = getValue("max_players","filter_games"); + return previous == QVariant() ? 99 : previous.toInt(); +} + +void GameFiltersSettings::setGameTypeEnabled(QString gametype, bool enabled) +{ + setValue(enabled, "game_type/"+hashGameType(gametype),"filter_games"); +} + +void GameFiltersSettings::setGameHashedTypeEnabled(QString gametypeHASHED, bool enabled) +{ + setValue(enabled, gametypeHASHED,"filter_games"); +} + +bool GameFiltersSettings::isGameTypeEnabled(QString gametype) +{ + QVariant previous = getValue("game_type/"+hashGameType(gametype),"filter_games"); + return previous == QVariant() ? false : previous.toBool(); +} + + diff --git a/cockatrice/src/settings/gamefilterssettings.h b/cockatrice/src/settings/gamefilterssettings.h new file mode 100644 index 00000000..16035960 --- /dev/null +++ b/cockatrice/src/settings/gamefilterssettings.h @@ -0,0 +1,39 @@ +#ifndef GAMEFILTERSSETTINGS_H +#define GAMEFILTERSSETTINGS_H + +#include "settingsmanager.h" + +class GameFiltersSettings : public SettingsManager +{ + Q_OBJECT + friend class SettingsCache; +public: + bool isUnavailableGamesVisible(); + bool isShowPasswordProtectedGames(); + QString getGameNameFilter(); + int getMinPlayers(); + int getMaxPlayers(); + bool isGameTypeEnabled(QString gametype); + + void setUnavailableGamesVisible(bool enabled); + void setShowPasswordProtectedGames(bool show); + void setGameNameFilter(QString gameName); + void setMinPlayers(int min); + void setMaxPlayers(int max); + void setGameTypeEnabled(QString gametype, bool enabled); + void setGameHashedTypeEnabled(QString gametypeHASHED, bool enabled); +signals: + +public slots: + +private: + GameFiltersSettings(QString settingPath,QObject *parent = 0); + GameFiltersSettings( const GameFiltersSettings& /*other*/ ); + GameFiltersSettings( GameFiltersSettings& /*other*/ ); + GameFiltersSettings( volatile const GameFiltersSettings& /*other*/ ); + GameFiltersSettings( volatile GameFiltersSettings& /*other*/ ); + + QString hashGameType(const QString &gameType) const; +}; + +#endif // GAMEFILTERSSETTINGS_H diff --git a/cockatrice/src/settings/layoutssettings.cpp b/cockatrice/src/settings/layoutssettings.cpp new file mode 100644 index 00000000..d81b2bcf --- /dev/null +++ b/cockatrice/src/settings/layoutssettings.cpp @@ -0,0 +1,59 @@ +#include "layoutssettings.h" + +LayoutsSettings::LayoutsSettings(QString settingPath, QObject *parent) + : SettingsManager(settingPath+"layouts.ini", parent) +{ +} + +const QByteArray LayoutsSettings::getDeckEditorLayoutState() +{ + return getValue("layouts/deckEditor_state").toByteArray(); +} + +void LayoutsSettings::setDeckEditorLayoutState(const QByteArray &value) +{ + setValue(value,"layouts/deckEditor_state"); +} + +const QByteArray LayoutsSettings::getDeckEditorGeometry() +{ + return getValue("layouts/deckEditor_geometry").toByteArray(); +} + +void LayoutsSettings::setDeckEditorGeometry(const QByteArray &value) +{ + setValue(value,"layouts/deckEditor_geometry"); +} + +const QSize LayoutsSettings::getDeckEditorCardSize() +{ + QVariant previous = getValue("layouts/deckEditor_CardSize"); + return previous == QVariant() ? QSize(250,500) : previous.toSize(); +} + +void LayoutsSettings::setDeckEditorCardSize(const QSize &value) +{ + setValue(value,"layouts/deckEditor_CardSize"); +} + +const QSize LayoutsSettings::getDeckEditorDeckSize() +{ + QVariant previous = getValue("layouts/deckEditor_DeckSize"); + return previous == QVariant() ? QSize(250,360) : previous.toSize(); +} + +void LayoutsSettings::setDeckEditorDeckSize(const QSize &value) +{ + setValue(value,"layouts/deckEditor_DeckSize"); +} + +const QSize LayoutsSettings::getDeckEditorFilterSize() +{ + QVariant previous = getValue("layouts/deckEditor_FilterSize"); + return previous == QVariant() ? QSize(250,250) : previous.toSize(); +} + +void LayoutsSettings::setDeckEditorFilterSize(const QSize &value) +{ + setValue(value,"layouts/deckEditor_FilterSize"); +} diff --git a/cockatrice/src/settings/layoutssettings.h b/cockatrice/src/settings/layoutssettings.h new file mode 100644 index 00000000..4a42586e --- /dev/null +++ b/cockatrice/src/settings/layoutssettings.h @@ -0,0 +1,36 @@ +#ifndef LAYOUTSSETTINGS_H +#define LAYOUTSSETTINGS_H + +#include "settingsmanager.h" +#include + +class LayoutsSettings : public SettingsManager +{ + Q_OBJECT + friend class SettingsCache; +public: + + void setDeckEditorLayoutState(const QByteArray &value); + void setDeckEditorGeometry(const QByteArray &value); + void setDeckEditorCardSize(const QSize &value); + void setDeckEditorDeckSize(const QSize &value); + void setDeckEditorFilterSize(const QSize &value); + + const QByteArray getDeckEditorLayoutState(); + const QByteArray getDeckEditorGeometry(); + const QSize getDeckEditorCardSize(); + const QSize getDeckEditorDeckSize(); + const QSize getDeckEditorFilterSize(); +signals: + +public slots: + +private: + LayoutsSettings(QString settingPath,QObject *parent = 0); + LayoutsSettings( const LayoutsSettings& /*other*/ ); + LayoutsSettings( LayoutsSettings& /*other*/ ); + LayoutsSettings( volatile const LayoutsSettings& /*other*/ ); + LayoutsSettings( volatile LayoutsSettings& /*other*/ ); +}; + +#endif // LAYOUTSSETTINGS_H diff --git a/cockatrice/src/settings/messagesettings.cpp b/cockatrice/src/settings/messagesettings.cpp new file mode 100644 index 00000000..fbcfc237 --- /dev/null +++ b/cockatrice/src/settings/messagesettings.cpp @@ -0,0 +1,26 @@ +#include "messagesettings.h" + +MessageSettings::MessageSettings(QString settingPath, QObject *parent) + : SettingsManager(settingPath+"messages.ini",parent) +{ +} + +QString MessageSettings::getMessageAt(int index) +{ + return getValue(QString("msg%1").arg(index),"messages").toString(); +} + +int MessageSettings::getCount() +{ + return getValue("count", "messages").toInt(); +} + +void MessageSettings::setCount(int count) +{ + setValue(count,"count","messages"); +} + +void MessageSettings::setMessageAt(int index, QString message) +{ + setValue(message,QString("msg%1").arg(index),"messages"); +} diff --git a/cockatrice/src/settings/messagesettings.h b/cockatrice/src/settings/messagesettings.h new file mode 100644 index 00000000..4ac4592e --- /dev/null +++ b/cockatrice/src/settings/messagesettings.h @@ -0,0 +1,29 @@ +#ifndef MESSAGESETTINGS_H +#define MESSAGESETTINGS_H + +#include "settingsmanager.h" + +class MessageSettings : public SettingsManager +{ + Q_OBJECT + friend class SettingsCache; + +public: + int getCount(); + QString getMessageAt(int index); + + void setCount(int count); + void setMessageAt(int index, QString message); +signals: + +public slots: + +private: + MessageSettings(QString settingPath, QObject *parent = 0); + MessageSettings( const MessageSettings& /*other*/ ); + MessageSettings( MessageSettings& /*other*/ ); + MessageSettings( volatile const MessageSettings& /*other*/ ); + MessageSettings( volatile MessageSettings& /*other*/ ); +}; + +#endif // MESSAGESETTINGS_H diff --git a/cockatrice/src/settings/serverssettings.cpp b/cockatrice/src/settings/serverssettings.cpp new file mode 100644 index 00000000..e698e127 --- /dev/null +++ b/cockatrice/src/settings/serverssettings.cpp @@ -0,0 +1,102 @@ +#include "serverssettings.h" + +ServersSettings::ServersSettings(QString settingPath, QObject *parent) + : SettingsManager(settingPath+"servers.ini", parent) +{ +} + +void ServersSettings::setPreviousHostLogin(int previous) +{ + setValue(previous, "previoushostlogin", "server"); +} + +int ServersSettings::getPreviousHostLogin() +{ + QVariant previous = getValue("previoushostlogin", "server"); + return previous == QVariant() ? 1 : previous.toInt(); +} + +void ServersSettings::setPreviousHostList(QStringList list) +{ + setValue(list, "previoushosts", "server"); +} + +QStringList ServersSettings::getPreviousHostList() +{ + return getValue("previoushosts", "server").toStringList(); +} + +void ServersSettings::setPrevioushostindex(int index) +{ + setValue(index, "previoushostindex", "server"); +} + +int ServersSettings::getPrevioushostindex() +{ + return getValue("previoushostindex", "server").toInt(); +} + +void ServersSettings::setHostName(QString hostname) +{ + setValue(hostname, "hostname", "server"); +} + +QString ServersSettings::getHostname(QString defaultHost) +{ + QVariant hostname = getValue("hostname","server"); + return hostname == QVariant() ? defaultHost : hostname.toString(); +} + +void ServersSettings::setPort(QString port) +{ + setValue(port, "port", "server"); +} + +QString ServersSettings::getPort(QString defaultPort) +{ + QVariant port = getValue("port","server"); + return port == QVariant() ? defaultPort : port.toString(); +} + +void ServersSettings::setPlayerName(QString playerName) +{ + setValue(playerName, "playername", "server"); +} + +QString ServersSettings::getPlayerName(QString defaultName) +{ + QVariant name = getValue("playername", "server"); + return name == QVariant() ? defaultName : name.toString(); +} + +void ServersSettings::setPassword(QString password) +{ + setValue(password, "password", "server"); +} + +QString ServersSettings::getPassword() +{ + return getValue("password", "server").toString(); +} + +void ServersSettings::setSavePassword(int save) +{ + setValue(save, "save_password", "server"); +} + +int ServersSettings::getSavePassword() +{ + QVariant save = getValue("save_password", "server"); + return save == QVariant() ? 1 : save.toInt(); +} + +void ServersSettings::setAutoConnect(int autoconnect) +{ + setValue(autoconnect, "auto_connect", "server"); +} + +int ServersSettings::getAutoConnect() +{ + QVariant autoconnect = getValue("auto_connect", "server"); + return autoconnect == QVariant() ? 0 : autoconnect.toInt(); +} diff --git a/cockatrice/src/settings/serverssettings.h b/cockatrice/src/settings/serverssettings.h new file mode 100644 index 00000000..9d3fad8c --- /dev/null +++ b/cockatrice/src/settings/serverssettings.h @@ -0,0 +1,44 @@ +#ifndef SERVERSSETTINGS_H +#define SERVERSSETTINGS_H + +#include "settingsmanager.h" +#include + +class ServersSettings : public SettingsManager +{ + Q_OBJECT + friend class SettingsCache; + +public: + int getPreviousHostLogin(); + QStringList getPreviousHostList(); + int getPrevioushostindex(); + QString getHostname(QString defaultHost = ""); + QString getPort(QString defaultPort = ""); + QString getPlayerName(QString defaultName = ""); + QString getPassword(); + int getSavePassword(); + int getAutoConnect(); + + void setPreviousHostLogin(int previous); + void setPreviousHostList(QStringList list); + void setPrevioushostindex(int index); + void setHostName(QString hostname); + void setPort(QString port); + void setPlayerName(QString playerName); + void setPassword(QString password); + void setSavePassword(int save); + void setAutoConnect(int autoconnect); +signals: + +public slots: + +private: + ServersSettings(QString settingPath,QObject *parent = 0); + ServersSettings( const ServersSettings& /*other*/ ); + ServersSettings( ServersSettings& /*other*/ ); + ServersSettings( volatile const ServersSettings& /*other*/ ); + ServersSettings( volatile ServersSettings& /*other*/ ); +}; + +#endif // SERVERSSETTINGS_H diff --git a/cockatrice/src/settings/settingsmanager.cpp b/cockatrice/src/settings/settingsmanager.cpp new file mode 100644 index 00000000..0735fd41 --- /dev/null +++ b/cockatrice/src/settings/settingsmanager.cpp @@ -0,0 +1,43 @@ +#include "settingsmanager.h" + +SettingsManager::SettingsManager(QString settingPath, QObject *parent) + : QObject(parent), + settings(settingPath, QSettings::IniFormat) +{ +} + +void SettingsManager::setValue(QVariant value, QString name, QString group, QString subGroup) +{ + if(!group.isEmpty()) + settings.beginGroup(group); + + if(!subGroup.isEmpty()) + settings.beginGroup(subGroup); + + settings.setValue(name, value); + + if(!subGroup.isEmpty()) + settings.endGroup(); + + if(!group.isEmpty()) + settings.endGroup(); +} + +QVariant SettingsManager::getValue(QString name, QString group, QString subGroup) +{ + if(!group.isEmpty()) + settings.beginGroup(group); + + if(!subGroup.isEmpty()) + settings.beginGroup(subGroup); + + QVariant value = settings.value(name); + + if(!subGroup.isEmpty()) + settings.endGroup(); + + if(!group.isEmpty()) + settings.endGroup(); + + return value; +} diff --git a/cockatrice/src/settings/settingsmanager.h b/cockatrice/src/settings/settingsmanager.h new file mode 100644 index 00000000..1ff6bf65 --- /dev/null +++ b/cockatrice/src/settings/settingsmanager.h @@ -0,0 +1,25 @@ +#ifndef SETTINGSMANAGER_H +#define SETTINGSMANAGER_H + +#include +#include +#include +#include + +class SettingsManager : public QObject +{ + Q_OBJECT +public: + SettingsManager(QString settingPath, QObject *parent = 0); + +signals: + +public slots: + +protected: + QSettings settings; + QVariant getValue(QString name, QString group = "", QString subGroup = "" ); + void setValue(QVariant value, QString name, QString group = "", QString subGroup = "" ); +}; + +#endif // SETTINGSMANAGER_H diff --git a/cockatrice/src/settingscache.cpp b/cockatrice/src/settingscache.cpp index a640e5f6..404a20e2 100644 --- a/cockatrice/src/settingscache.cpp +++ b/cockatrice/src/settingscache.cpp @@ -1,5 +1,8 @@ #include "settingscache.h" #include +#include +#include + #if QT_VERSION >= 0x050000 #include #else @@ -8,39 +11,145 @@ QString SettingsCache::getSettingsPath() { - QString file = ""; + QString file = qApp->applicationDirPath() + "/settings/"; #ifndef PORTABLE_BUILD -#if QT_VERSION >= 0x050000 + #if QT_VERSION >= 0x050000 file = QStandardPaths::writableLocation(QStandardPaths::DataLocation); #else file = QDesktopServices::storageLocation(QDesktopServices::DataLocation); #endif file.append("/settings/"); -#endif +#endif return file; } +void SettingsCache::translateLegacySettings() +{ +#ifdef PORTABLE_BUILD + return; +#endif + + //Layouts + QFile layoutFile(getSettingsPath()+"layouts/deckLayout.ini"); + if(layoutFile.exists()) + if(layoutFile.copy(getSettingsPath()+"layouts.ini")) + layoutFile.remove(); + + QStringList usedKeys; + QSettings legacySetting; + + //Sets + legacySetting.beginGroup("sets"); + QStringList setsGroups = legacySetting.childGroups(); + for(int i = 0; i < setsGroups.size(); i++){ + legacySetting.beginGroup(setsGroups.at(i)); + cardDatabase().setEnabled(setsGroups.at(i), legacySetting.value("enabled").toBool()); + cardDatabase().setIsKnown(setsGroups.at(i), legacySetting.value("isknown").toBool()); + cardDatabase().setSortKey(setsGroups.at(i), legacySetting.value("sortkey").toUInt()); + legacySetting.endGroup(); + } + QStringList setsKeys = legacySetting.allKeys(); + for (int i = 0; i < setsKeys.size(); ++i) { + usedKeys.append("sets/"+setsKeys.at(i)); + } + legacySetting.endGroup(); + + //Servers + legacySetting.beginGroup("server"); + servers().setPreviousHostLogin(legacySetting.value("previoushostlogin").toInt()); + servers().setPreviousHostList(legacySetting.value("previoushosts").toStringList()); + servers().setPrevioushostindex(legacySetting.value("previoushostindex").toInt()); + servers().setHostName(legacySetting.value("hostname").toString()); + servers().setPort(legacySetting.value("port").toString()); + servers().setPlayerName(legacySetting.value("playername").toString()); + servers().setPassword(legacySetting.value("password").toString()); + servers().setSavePassword(legacySetting.value("save_password").toInt()); + servers().setAutoConnect(legacySetting.value("auto_connect").toInt()); + usedKeys.append(legacySetting.allKeys()); + QStringList allKeysServer = legacySetting.allKeys(); + for (int i = 0; i < allKeysServer.size(); ++i) { + usedKeys.append("server/"+allKeysServer.at(i)); + } + legacySetting.endGroup(); + + //Messages + legacySetting.beginGroup("messages"); + QStringList allMessages = legacySetting.allKeys(); + for (int i = 0; i < allMessages.size(); ++i) { + if(allMessages.at(i) != "count"){ + QString temp = allMessages.at(i); + int index = temp.remove("msg").toInt(); + messages().setMessageAt(index,legacySetting.value(allMessages.at(i)).toString()); + } + } + messages().setCount(legacySetting.value("count").toInt()); + QStringList allKeysmessages = legacySetting.allKeys(); + for (int i = 0; i < allKeysmessages.size(); ++i) { + usedKeys.append("messages/"+allKeysmessages.at(i)); + } + legacySetting.endGroup(); + + //Game filters + legacySetting.beginGroup("filter_games"); + gameFilters().setUnavailableGamesVisible(legacySetting.value("unavailable_games_visible").toBool()); + gameFilters().setShowPasswordProtectedGames(legacySetting.value("show_password_protected_games").toBool()); + gameFilters().setGameNameFilter(legacySetting.value("game_name_filter").toString()); + gameFilters().setMinPlayers(legacySetting.value("min_players").toInt()); + gameFilters().setMaxPlayers(legacySetting.value("max_players").toInt()); + + QStringList allFilters = legacySetting.allKeys(); + for (int i = 0; i < allFilters.size(); ++i) { + if(allFilters.at(i).startsWith("game_type")){ + gameFilters().setGameHashedTypeEnabled(allFilters.at(i), legacySetting.value(allFilters.at(i)).toBool()); + } + } + QStringList allKeysfilter_games = legacySetting.allKeys(); + for (int i = 0; i < allKeysfilter_games.size(); ++i) { + usedKeys.append("filter_games/"+allKeysfilter_games.at(i)); + } + legacySetting.endGroup(); + + QStringList allLegacyKeys = legacySetting.allKeys(); + for (int i = 0; i < allLegacyKeys.size(); ++i) { + if(usedKeys.contains(allLegacyKeys.at(i))) + continue; + settings->setValue(allLegacyKeys.at(i), legacySetting.value(allLegacyKeys.at(i))); + } +} + SettingsCache::SettingsCache() { - settings = new QSettings(this); - shortcutsSettings = new ShortcutsSettings(getSettingsPath(),this); + QString settingsPath = getSettingsPath(); + settings = new QSettings(settingsPath+"global.ini", QSettings::IniFormat, this); + shortcutsSettings = new ShortcutsSettings(settingsPath,this); + cardDatabaseSettings = new CardDatabaseSettings(settingsPath,this); + serversSettings = new ServersSettings(settingsPath,this); + messageSettings = new MessageSettings(settingsPath,this); + gameFiltersSettings = new GameFiltersSettings(settingsPath, this); + layoutsSettings = new LayoutsSettings(settingsPath, this); + if(!QFile(settingsPath+"global.ini").exists()) + translateLegacySettings(); + +#ifdef PORTABLE_BUILD + setDeckPath(qApp->applicationDirPath() + "data/decks"); + setReplaysPath(qApp->applicationDirPath() +"data/replays"); + setPicsPath(qApp->applicationDirPath() + "data/pics"); + setSoundPath(qApp->applicationDirPath() +"data/sounds"); +#endif + + notifyAboutUpdates = settings->value("personal/updatenotification", true).toBool(); lang = settings->value("personal/lang").toString(); keepalive = settings->value("personal/keepalive", 5).toInt(); - deckPath = settings->value("paths/decks").toString(); replaysPath = settings->value("paths/replays").toString(); picsPath = settings->value("paths/pics").toString(); cardDatabasePath = settings->value("paths/carddatabase").toString(); tokenDatabasePath = settings->value("paths/tokendatabase").toString(); - handBgPath = settings->value("zonebg/hand").toString(); - stackBgPath = settings->value("zonebg/stack").toString(); - tableBgPath = settings->value("zonebg/table").toString(); - playerBgPath = settings->value("zonebg/playerarea").toString(); - cardBackPicturePath = settings->value("paths/cardbackpicture").toString(); + themeName = settings->value("theme/name").toString(); // we only want to reset the cache once, then its up to the user bool updateCache = settings->value("revert/pixmapCacheSize", false).toBool(); @@ -97,8 +206,6 @@ SettingsCache::SettingsCache() ignoreUnregisteredUsers = settings->value("chat/ignore_unregistered", false).toBool(); ignoreUnregisteredUserMessages = settings->value("chat/ignore_unregistered_messages", false).toBool(); - attemptAutoConnect = settings->value("server/auto_connect", 0).toBool(); - scaleCards = settings->value("cards/scaleCards", true).toBool(); showMessagePopups = settings->value("chat/showmessagepopups", true).toBool(); showMentionPopups = settings->value("chat/showmentionpopups", true).toBool(); @@ -120,17 +227,6 @@ SettingsCache::SettingsCache() spectatorsCanSeeEverything = settings->value("game/spectatorscanseeeverything", false).toBool(); rememberGameSettings = settings->value("game/remembergamesettings", true).toBool(); clientID = settings->value("personal/clientid", "notset").toString(); - - QString file = getSettingsPath(); - file.append("layouts/deckLayout.ini"); - - QSettings layout_settings(file , QSettings::IniFormat); - deckEditorLayoutState = layout_settings.value("layouts/deckEditor_state").toByteArray(); - deckEditorGeometry = layout_settings.value("layouts/deckEditor_geometry").toByteArray(); - - deckEditorCardSize = layout_settings.value("layouts/deckEditor_CardSize", QSize(250,500)).toSize(); - deckEditorFilterSize = layout_settings.value("layouts/deckEditor_FilterSize", QSize(250,250)).toSize(); - deckEditorDeckSize = layout_settings.value("layouts/deckEditor_DeckSize", QSize(250,360)).toSize(); } void SettingsCache::setCardInfoViewMode(const int _viewMode) { @@ -210,39 +306,11 @@ void SettingsCache::setTokenDatabasePath(const QString &_tokenDatabasePath) emit tokenDatabasePathChanged(); } -void SettingsCache::setHandBgPath(const QString &_handBgPath) +void SettingsCache::setThemeName(const QString &_themeName) { - handBgPath = _handBgPath; - settings->setValue("zonebg/hand", handBgPath); - emit handBgPathChanged(); -} - -void SettingsCache::setStackBgPath(const QString &_stackBgPath) -{ - stackBgPath = _stackBgPath; - settings->setValue("zonebg/stack", stackBgPath); - emit stackBgPathChanged(); -} - -void SettingsCache::setTableBgPath(const QString &_tableBgPath) -{ - tableBgPath = _tableBgPath; - settings->setValue("zonebg/table", tableBgPath); - emit tableBgPathChanged(); -} - -void SettingsCache::setPlayerBgPath(const QString &_playerBgPath) -{ - playerBgPath = _playerBgPath; - settings->setValue("zonebg/playerarea", playerBgPath); - emit playerBgPathChanged(); -} - -void SettingsCache::setCardBackPicturePath(const QString &_cardBackPicturePath) -{ - cardBackPicturePath = _cardBackPicturePath; - settings->setValue("paths/cardbackpicture", cardBackPicturePath); - emit cardBackPicturePathChanged(); + themeName = _themeName; + settings->setValue("theme/name", themeName); + emit themeChanged(); } void SettingsCache::setPicDownload(int _picDownload) @@ -452,12 +520,6 @@ void SettingsCache::setMainWindowGeometry(const QByteArray &_mainWindowGeometry) settings->setValue("interface/main_window_geometry", mainWindowGeometry); } -void SettingsCache::setAutoConnect(const bool &_autoConnect) -{ - attemptAutoConnect = _autoConnect; - settings->setValue("server/auto_connect", attemptAutoConnect ? 1 : 0); -} - void SettingsCache::setPixmapCacheSize(const int _pixmapCacheSize) { pixmapCacheSize = _pixmapCacheSize; @@ -503,56 +565,6 @@ QStringList SettingsCache::getCountries() const return countries; } -void SettingsCache::setDeckEditorLayoutState(const QByteArray &value) -{ - deckEditorLayoutState = value; - - QString file = getSettingsPath(); - file.append("layouts/deckLayout.ini"); - QSettings layout_settings(file , QSettings::IniFormat); - layout_settings.setValue("layouts/deckEditor_state",value); -} - -void SettingsCache::setDeckEditorGeometry(const QByteArray &value) -{ - deckEditorGeometry = value; - - QString file = getSettingsPath(); - file.append("layouts/deckLayout.ini"); - QSettings layout_settings(file , QSettings::IniFormat); - layout_settings.setValue("layouts/deckEditor_geometry",value); -} - -void SettingsCache::setDeckEditorCardSize(const QSize &value) -{ - deckEditorCardSize = value; - - QString file = getSettingsPath(); - file.append("layouts/deckLayout.ini"); - QSettings layout_settings(file , QSettings::IniFormat); - layout_settings.setValue("layouts/deckEditor_CardSize",value); -} - -void SettingsCache::setDeckEditorDeckSize(const QSize &value) -{ - deckEditorDeckSize = value; - - QString file = getSettingsPath(); - file.append("layouts/deckLayout.ini"); - QSettings layout_settings(file , QSettings::IniFormat); - layout_settings.setValue("layouts/deckEditor_DeckSize",value); -} - -void SettingsCache::setDeckEditorFilterSize(const QSize &value) -{ - deckEditorFilterSize = value; - - QString file = getSettingsPath(); - file.append("layouts/deckLayout.ini"); - QSettings layout_settings(file , QSettings::IniFormat); - layout_settings.setValue("layouts/deckEditor_FilterSize",value); -} - void SettingsCache::setGameDescription(const QString _gameDescription) { gameDescription = _gameDescription; @@ -611,4 +623,10 @@ void SettingsCache::setRememberGameSettings(const bool _rememberGameSettings) { rememberGameSettings = _rememberGameSettings; settings->setValue("game/remembergamesettings", rememberGameSettings); -} \ No newline at end of file +} + +void SettingsCache::setNotifyAboutUpdate(int _notifyaboutupdate) +{ + notifyAboutUpdates = _notifyaboutupdate; + settings->setValue("personal/updatenotification", notifyAboutUpdates); +} diff --git a/cockatrice/src/settingscache.h b/cockatrice/src/settingscache.h index 3670bc09..6ab03b79 100644 --- a/cockatrice/src/settingscache.h +++ b/cockatrice/src/settingscache.h @@ -5,6 +5,11 @@ #include #include #include "shortcutssettings.h" +#include "settings/carddatabasesettings.h" +#include "settings/serverssettings.h" +#include "settings/messagesettings.h" +#include "settings/gamefilterssettings.h" +#include "settings/layoutssettings.h" // the falbacks are used for cards without a muid #define PIC_URL_DEFAULT "http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=!cardid!&type=card" @@ -25,11 +30,7 @@ signals: void picsPathChanged(); void cardDatabasePathChanged(); void tokenDatabasePathChanged(); - void handBgPathChanged(); - void stackBgPathChanged(); - void tableBgPathChanged(); - void playerBgPathChanged(); - void cardBackPicturePathChanged(); + void themeChanged(); void picDownloadChanged(); void picDownloadHqChanged(); void displayCardNamesChanged(); @@ -48,10 +49,16 @@ signals: private: QSettings *settings; ShortcutsSettings *shortcutsSettings; + CardDatabaseSettings *cardDatabaseSettings; + ServersSettings *serversSettings; + MessageSettings *messageSettings; + GameFiltersSettings *gameFiltersSettings; + LayoutsSettings *layoutsSettings; + QByteArray mainWindowGeometry; QString lang; - QString deckPath, replaysPath, picsPath, cardDatabasePath, tokenDatabasePath; - QString handBgPath, stackBgPath, tableBgPath, playerBgPath, cardBackPicturePath; + QString deckPath, replaysPath, picsPath, cardDatabasePath, tokenDatabasePath, themeName; + bool notifyAboutUpdates; bool picDownload; bool picDownloadHq; bool notificationsEnabled; @@ -84,7 +91,6 @@ private: QString picUrlFallback; QString picUrlHqFallback; QString clientID; - bool attemptAutoConnect; int pixmapCacheSize; bool scaleCards; bool showMessagePopups; @@ -102,14 +108,13 @@ private: bool spectatorsNeedPassword; bool spectatorsCanTalk; bool spectatorsCanSeeEverything; + int keepalive; + void translateLegacySettings(); bool rememberGameSettings; - int keepalive; - QByteArray deckEditorLayoutState, deckEditorGeometry; - QSize deckEditorFilterSize, deckEditorDeckSize, deckEditorCardSize; - QString getSettingsPath(); public: SettingsCache(); + QString getSettingsPath(); const QByteArray &getMainWindowGeometry() const { return mainWindowGeometry; } QString getLang() const { return lang; } QString getDeckPath() const { return deckPath; } @@ -117,17 +122,14 @@ public: QString getPicsPath() const { return picsPath; } QString getCardDatabasePath() const { return cardDatabasePath; } QString getTokenDatabasePath() const { return tokenDatabasePath; } - QString getHandBgPath() const { return handBgPath; } - QString getStackBgPath() const { return stackBgPath; } - QString getTableBgPath() const { return tableBgPath; } - QString getPlayerBgPath() const { return playerBgPath; } - QString getCardBackPicturePath() const { return cardBackPicturePath; } + QString getThemeName() const { return themeName; } QString getChatMentionColor() const { return chatMentionColor; } QString getChatHighlightColor() const { return chatHighlightColor; } bool getPicDownload() const { return picDownload; } bool getPicDownloadHq() const { return picDownloadHq; } bool getNotificationsEnabled() const { return notificationsEnabled; } bool getSpectatorNotificationsEnabled() const { return spectatorNotificationsEnabled; } + bool getNotifyAboutUpdates() const { return notifyAboutUpdates; } bool getDoubleClickToPlay() const { return doubleClickToPlay; } bool getPlayToStack() const { return playToStack; } @@ -160,7 +162,6 @@ public: QString getPicUrlHq() const { return picUrlHq; } QString getPicUrlFallback() const { return picUrlFallback; } QString getPicUrlHqFallback() const { return picUrlHqFallback; } - bool getAutoConnect() const { return attemptAutoConnect; } int getPixmapCacheSize() const { return pixmapCacheSize; } bool getScaleCards() const { return scaleCards; } bool getShowMessagePopup() const { return showMessagePopups; } @@ -182,19 +183,13 @@ public: bool getRememberGameSettings() const { return rememberGameSettings; } int getKeepAlive() const { return keepalive; } void setClientID(QString clientID); - QString getClientID() { return clientID; } - QByteArray getDeckEditorLayoutState() const { return deckEditorLayoutState; } - void setDeckEditorLayoutState(const QByteArray &value); - QByteArray getDeckEditorGeometry() const { return deckEditorGeometry; } - void setDeckEditorGeometry(const QByteArray &value); - QSize getDeckEditorCardSize() const { return deckEditorCardSize; } - void setDeckEditorCardSize(const QSize &value); - QSize getDeckEditorDeckSize() const { return deckEditorDeckSize; } - void setDeckEditorDeckSize(const QSize &value); - QSize getDeckEditorFilterSize() const { return deckEditorFilterSize; } - void setDeckEditorFilterSize(const QSize &value); + QString getClientID() { return clientID; } ShortcutsSettings& shortcuts() const { return *shortcutsSettings; } - + CardDatabaseSettings& cardDatabase() const { return *cardDatabaseSettings; } + ServersSettings& servers() const { return *serversSettings; } + MessageSettings& messages() const { return *messageSettings; } + GameFiltersSettings& gameFilters() const { return *gameFiltersSettings; } + LayoutsSettings& layouts() const { return *layoutsSettings; } public slots: void setMainWindowGeometry(const QByteArray &_mainWindowGeometry); void setLang(const QString &_lang); @@ -203,11 +198,7 @@ public slots: void setPicsPath(const QString &_picsPath); void setCardDatabasePath(const QString &_cardDatabasePath); void setTokenDatabasePath(const QString &_tokenDatabasePath); - void setHandBgPath(const QString &_handBgPath); - void setStackBgPath(const QString &_stackBgPath); - void setTableBgPath(const QString &_tableBgPath); - void setPlayerBgPath(const QString &_playerBgPath); - void setCardBackPicturePath(const QString &_cardBackPicturePath); + void setThemeName(const QString &_themeName); void setChatMentionColor(const QString &_chatMentionColor); void setChatHighlightColor(const QString &_chatHighlightColor); void setPicDownload(int _picDownload); @@ -241,7 +232,6 @@ public slots: void setPicUrlHq(const QString &_picUrlHq); void setPicUrlFallback(const QString &_picUrlFallback); void setPicUrlHqFallback(const QString &_picUrlHqFallback); - void setAutoConnect(const bool &_autoConnect); void setPixmapCacheSize(const int _pixmapCacheSize); void setCardScaling(const int _scaleCards); void setShowMessagePopups(const int _showMessagePopups); @@ -260,6 +250,7 @@ public slots: void setSpectatorsCanTalk(const bool _spectatorsCanTalk); void setSpectatorsCanSeeEverything(const bool _spectatorsCanSeeEverything); void setRememberGameSettings(const bool _rememberGameSettings); + void setNotifyAboutUpdate(int _notifyaboutupdate); }; extern SettingsCache *settingsCache; diff --git a/cockatrice/src/soundengine.cpp b/cockatrice/src/soundengine.cpp index e3192726..324c8ba2 100644 --- a/cockatrice/src/soundengine.cpp +++ b/cockatrice/src/soundengine.cpp @@ -1,102 +1,73 @@ #include "soundengine.h" #include "settingscache.h" -#include -#include -#include -#include + +#include +#include + +/* + fileNames = QStringList() + // Phases + << "untap_step" << "upkeep_step" << "draw_step" << "main_1" + << "start_combat" << "attack_step" << "block_step" << "damage_step" << "end_combat" + << "main_2" << "end_step" + // Game Actions + << "draw_card" << "play_card" << "tap_card" << "untap_card" + << "shuffle" << "roll_dice" << "life_change" + // Player + << "player_join" << "player_leave" << "player_disconnect" << "player_reconnect" << "player_concede" + // Spectator + << "spectator_join" << "spectator_leave" + // Chat & UI + << "chat_mention" << "all_mention" << "private_message"; +*/ + +#define TEST_SOUND_FILENAME "player_join" SoundEngine::SoundEngine(QObject *parent) - : QObject(parent), audio(0) +: QObject(parent), enabled(false) { - inputBuffer = new QBuffer(this); - - connect(settingsCache, SIGNAL(soundPathChanged()), this, SLOT(cacheData())); connect(settingsCache, SIGNAL(soundEnabledChanged()), this, SLOT(soundEnabledChanged())); - cacheData(); + soundEnabledChanged(); - - lastTapPlayed = QDateTime::currentDateTime(); - lastEndStepPlayed = QDateTime::currentDateTime(); - lastAttackStepPlayed = QDateTime::currentDateTime(); -} - -void SoundEngine::cacheData() -{ - static const QStringList fileNames = QStringList() - << "end_step" << "tap" << "player_joined" << "attack"; - for (int i = 0; i < fileNames.size(); ++i) { - QFile file(settingsCache->getSoundPath() + "/" + fileNames[i] + ".raw"); - if(!file.exists()) - continue; - file.open(QIODevice::ReadOnly); - audioData.insert(fileNames[i], file.readAll()); - file.close(); - } } void SoundEngine::soundEnabledChanged() { if (settingsCache->getSoundEnabled()) { - qDebug("SoundEngine: enabling sound"); - QAudioFormat format; -#if QT_VERSION < 0x050000 - format.setFrequency(44100); - format.setChannels(1); +#if QT_VERSION < 0x050000 //QT4 + if(QSound::isAvailable()) + { + qDebug("SoundEngine: enabling sound"); + enabled = true; + } else { + qDebug("SoundEngine: sound not available"); + enabled = false; + } #else - format.setSampleRate(44100); - format.setChannelCount(1); + qDebug("SoundEngine: enabling sound"); + enabled = true; #endif - format.setSampleSize(16); - format.setCodec("audio/pcm"); - format.setByteOrder(QAudioFormat::LittleEndian); - format.setSampleType(QAudioFormat::SignedInt); - audio = new QAudioOutput(format, this); - } else if (audio) { + } else { qDebug("SoundEngine: disabling sound"); - audio->stop(); - audio->deleteLater(); - audio = 0; + enabled = false; } } -void SoundEngine::playSound(const QString &fileName) +#include +void SoundEngine::playSound(QString fileName) { - if (!audio) + if(!enabled) return; - - audio->stop(); - inputBuffer->close(); - inputBuffer->setData(audioData[fileName]); - inputBuffer->open(QIODevice::ReadOnly); -#if QT_VERSION >= 0x050000 - audio->setVolume(settingsCache->getMasterVolume() / 100.0); -#endif - audio->start(inputBuffer); - + + QFileInfo fi(settingsCache->getSoundPath() + "/" + fileName + ".wav"); + qDebug() << "playing" << fi.absoluteFilePath(); + if(!fi.exists()) + return; + + QSound::play(fi.absoluteFilePath()); } -void SoundEngine::endStep() +void SoundEngine::testSound() { - if (lastEndStepPlayed.secsTo(QDateTime::currentDateTime()) >= 1) - playSound("end_step"); - lastEndStepPlayed = QDateTime::currentDateTime(); -} - -void SoundEngine::tap() -{ - if (lastTapPlayed.secsTo(QDateTime::currentDateTime()) >= 1) - playSound("tap"); - lastTapPlayed = QDateTime::currentDateTime(); -} - -void SoundEngine::playerJoined() -{ - playSound("player_joined"); -} - - -void SoundEngine::attack() { - if (lastAttackStepPlayed.secsTo(QDateTime::currentDateTime()) >= 1) - playSound("attack"); - lastAttackStepPlayed = QDateTime::currentDateTime(); -} + playSound(TEST_SOUND_FILENAME); +} \ No newline at end of file diff --git a/cockatrice/src/soundengine.h b/cockatrice/src/soundengine.h index fb1cbd73..3ab2ed8f 100644 --- a/cockatrice/src/soundengine.h +++ b/cockatrice/src/soundengine.h @@ -2,34 +2,19 @@ #define SOUNDENGINE_H #include -#include -#include - -class QAudioOutput; -class QBuffer; class SoundEngine : public QObject { Q_OBJECT private: - void playSound(const QString &fileName); - QMap audioData; - QBuffer *inputBuffer; - QAudioOutput *audio; - QDateTime lastTapPlayed; - QDateTime lastEndStepPlayed; - QDateTime lastAttackStepPlayed; + bool enabled; private slots: - void cacheData(); void soundEnabledChanged(); public: SoundEngine(QObject *parent = 0); + void playSound(QString fileName); public slots: - void endStep(); - void tap(); - void playerJoined(); - void attack(); + void testSound(); }; extern SoundEngine *soundEngine; - #endif diff --git a/cockatrice/src/stackzone.cpp b/cockatrice/src/stackzone.cpp index a60c4037..4b4b6b52 100644 --- a/cockatrice/src/stackzone.cpp +++ b/cockatrice/src/stackzone.cpp @@ -3,6 +3,7 @@ #include "arrowitem.h" #include "stackzone.h" #include "settingscache.h" +#include "thememanager.h" #include "player.h" #include "carddragitem.h" #include "carditem.h" @@ -12,16 +13,13 @@ StackZone::StackZone(Player *_p, int _zoneHeight, QGraphicsItem *parent) : SelectZone(_p, "stack", false, false, true, parent), zoneHeight(_zoneHeight) { - connect(settingsCache, SIGNAL(stackBgPathChanged()), this, SLOT(updateBgPixmap())); - updateBgPixmap(); + connect(themeManager, SIGNAL(themeChanged()), this, SLOT(updateBg())); + updateBg(); setCacheMode(DeviceCoordinateCache); } -void StackZone::updateBgPixmap() +void StackZone::updateBg() { - QString bgPath = settingsCache->getStackBgPath(); - if (!bgPath.isEmpty()) - bgPixmap.load(bgPath); update(); } @@ -48,10 +46,7 @@ QRectF StackZone::boundingRect() const void StackZone::paint(QPainter *painter, const QStyleOptionGraphicsItem * /*option*/, QWidget * /*widget*/) { - if (bgPixmap.isNull()) - painter->fillRect(boundingRect(), QColor(113, 43, 43)); - else - painter->fillRect(boundingRect(), QBrush(bgPixmap)); + painter->fillRect(boundingRect(), themeManager->getStackBgBrush()); } void StackZone::handleDropEvent(const QList &dragItems, CardZone *startZone, const QPoint &/*dropPoint*/) diff --git a/cockatrice/src/stackzone.h b/cockatrice/src/stackzone.h index 948d3bcb..05fb2d24 100644 --- a/cockatrice/src/stackzone.h +++ b/cockatrice/src/stackzone.h @@ -7,9 +7,8 @@ class StackZone : public SelectZone { Q_OBJECT private: qreal zoneHeight; - QPixmap bgPixmap; private slots: - void updateBgPixmap(); + void updateBg(); public: StackZone(Player *_p, int _zoneHeight, QGraphicsItem *parent = 0); void handleDropEvent(const QList &dragItems, CardZone *startZone, const QPoint &dropPoint); diff --git a/cockatrice/src/tab_deck_editor.cpp b/cockatrice/src/tab_deck_editor.cpp index 52c24995..67412a58 100644 --- a/cockatrice/src/tab_deck_editor.cpp +++ b/cockatrice/src/tab_deck_editor.cpp @@ -53,21 +53,21 @@ void SearchLineEdit::keyPressEvent(QKeyEvent *event) void TabDeckEditor::createShowHideDocksButtons() { - btnFilter = new QPushButton(QIcon("://resources/icon_view.svg"),QString()); + btnFilter = new QPushButton(QIcon("theme:icons/view.svg"),QString()); btnFilter->setObjectName("btnFilter"); btnFilter->setCheckable(true); btnFilter->setChecked(true); btnFilter->setMaximumWidth(30); searchLayout->addWidget(btnFilter); - btnDeck = new QPushButton(QIcon("://resources/hand.svg"),QString()); + btnDeck = new QPushButton(QIcon("theme:hand.svg"),QString()); btnDeck->setObjectName("btnDeck"); btnDeck->setCheckable(true); btnDeck->setChecked(true); btnDeck->setMaximumWidth(30); searchLayout->addWidget(btnDeck); - btnCard = new QPushButton(QIcon("://back.svg"),QString()); + btnCard = new QPushButton(QIcon("theme:back.svg"),QString()); btnCard->setObjectName("btnCard"); btnCard->setCheckable(true); btnCard->setChecked(true); @@ -134,7 +134,7 @@ void TabDeckEditor::createDeckDock() /* Update price aUpdatePrices = new QAction(QString(), this); - aUpdatePrices->setIcon(QIcon(":/resources/icon_update.png")); + aUpdatePrices->setIcon(QIcon("theme:icons/update.png")); connect(aUpdatePrices, SIGNAL(triggered()), this, SLOT(actUpdatePrices())); if (!settingsCache->getPriceTagFeature()) aUpdatePrices->setVisible(false); @@ -229,8 +229,10 @@ void TabDeckEditor::createFiltersDock() QGridLayout *filterLayout = new QGridLayout; filterLayout->setObjectName("filterLayout"); filterLayout->setContentsMargins(0,0,0,0); - filterLayout->addWidget(filterBuilder, 0, 0, 1, 2); - filterLayout->addWidget(filterView, 1, 0, 1, 2); + filterLayout->addWidget(filterBuilder, 0, 0, 1, 3); + filterLayout->addWidget(filterView, 1, 0, 1, 3); + filterLayout->addWidget(filterDelOne, 2, 0, 1, 1); + filterLayout->addWidget(filterDelAll, 2, 2, 1, 1); filterBox = new QWidget(); filterBox->setObjectName("filterBox"); @@ -316,11 +318,11 @@ void TabDeckEditor::createMenus() addTabMenu(deckMenu); aClearFilterAll = new QAction(QString(), this); - aClearFilterAll->setIcon(QIcon(":/resources/icon_clearsearch.svg")); + aClearFilterAll->setIcon(QIcon("theme:icons/clearsearch.svg")); connect(aClearFilterAll, SIGNAL(triggered()), this, SLOT(actClearFilterAll())); aClearFilterOne = new QAction(QString(), this); - aClearFilterOne->setIcon(QIcon(":/resources/decrement.svg")); + aClearFilterOne->setIcon(QIcon("theme:icons/decrement.svg")); connect(aClearFilterOne, SIGNAL(triggered()), this, SLOT(actClearFilterOne())); dbMenu = new QMenu(this); @@ -342,7 +344,7 @@ void TabDeckEditor::createCentralFrame() searchEdit = new SearchLineEdit; searchEdit->setObjectName("searchEdit"); #if QT_VERSION >= 0x050300 - searchEdit->addAction(QIcon(":/resources/icon_search_black.svg"), QLineEdit::LeadingPosition); + searchEdit->addAction(QIcon("theme:icons/search.svg"), QLineEdit::LeadingPosition); #endif setFocusProxy(searchEdit); @@ -381,19 +383,19 @@ void TabDeckEditor::createCentralFrame() searchEdit->setTreeView(databaseView); aAddCard = new QAction(QString(), this); - aAddCard->setIcon(QIcon(":/resources/arrow_right_green.svg")); + aAddCard->setIcon(QIcon("theme:icons/arrow_right_green.svg")); connect(aAddCard, SIGNAL(triggered()), this, SLOT(actAddCard())); aAddCardToSideboard = new QAction(QString(), this); - aAddCardToSideboard->setIcon(QIcon(":/resources/add_to_sideboard.svg")); + aAddCardToSideboard->setIcon(QIcon("theme:icons/arrow_right_blue.svg")); connect(aAddCardToSideboard, SIGNAL(triggered()), this, SLOT(actAddCardToSideboard())); aRemoveCard = new QAction(QString(), this); - aRemoveCard->setIcon(QIcon(":/resources/remove_row.svg")); + aRemoveCard->setIcon(QIcon("theme:icons/remove_row.svg")); connect(aRemoveCard, SIGNAL(triggered()), this, SLOT(actRemoveCard())); aIncrement = new QAction(QString(), this); - aIncrement->setIcon(QIcon(":/resources/increment.svg")); + aIncrement->setIcon(QIcon("theme:icons/increment.svg")); connect(aIncrement, SIGNAL(triggered()), this, SLOT(actIncrement())); aDecrement = new QAction(QString(), this); - aDecrement->setIcon(QIcon(":/resources/decrement.svg")); + aDecrement->setIcon(QIcon("theme:icons/decrement.svg")); connect(aDecrement, SIGNAL(triggered()), this, SLOT(actDecrement())); QToolBar *deckEditToolBar = new QToolBar; @@ -494,21 +496,21 @@ void TabDeckEditor::refreshShortcuts() void TabDeckEditor::loadLayout() { - MainWindow->restoreState(settingsCache->getDeckEditorLayoutState()); - MainWindow->restoreGeometry(settingsCache->getDeckEditorGeometry()); + MainWindow->restoreState(settingsCache->layouts().getDeckEditorLayoutState()); + MainWindow->restoreGeometry(settingsCache->layouts().getDeckEditorGeometry()); btnCard->setChecked(!cardInfoDock->isHidden()); btnFilter->setChecked(!filterDock->isHidden()); btnDeck->setChecked(!deckDock->isHidden()); - cardInfoDock->setMinimumSize(settingsCache->getDeckEditorCardSize()); - cardInfoDock->setMaximumSize(settingsCache->getDeckEditorCardSize()); + cardInfoDock->setMinimumSize(settingsCache->layouts().getDeckEditorCardSize()); + cardInfoDock->setMaximumSize(settingsCache->layouts().getDeckEditorCardSize()); - filterDock->setMinimumSize(settingsCache->getDeckEditorFilterSize()); - filterDock->setMaximumSize(settingsCache->getDeckEditorFilterSize()); + filterDock->setMinimumSize(settingsCache->layouts().getDeckEditorFilterSize()); + filterDock->setMaximumSize(settingsCache->layouts().getDeckEditorFilterSize()); - deckDock->setMinimumSize(settingsCache->getDeckEditorDeckSize()); - deckDock->setMaximumSize(settingsCache->getDeckEditorDeckSize()); + deckDock->setMinimumSize(settingsCache->layouts().getDeckEditorDeckSize()); + deckDock->setMaximumSize(settingsCache->layouts().getDeckEditorDeckSize()); QTimer::singleShot(100, this, SLOT(freeDocksSize())); } @@ -1009,11 +1011,11 @@ bool TabDeckEditor::eventFilter(QObject * o, QEvent * e) btnFilter->setChecked(false); } if( o == this && e->type() == QEvent::Hide){ - settingsCache->setDeckEditorLayoutState(MainWindow->saveState()); - settingsCache->setDeckEditorGeometry(MainWindow->saveGeometry()); - settingsCache->setDeckEditorCardSize(cardInfoDock->size()); - settingsCache->setDeckEditorFilterSize(filterDock->size()); - settingsCache->setDeckEditorDeckSize(deckDock->size()); + settingsCache->layouts().setDeckEditorLayoutState(MainWindow->saveState()); + settingsCache->layouts().setDeckEditorGeometry(MainWindow->saveGeometry()); + settingsCache->layouts().setDeckEditorCardSize(cardInfoDock->size()); + settingsCache->layouts().setDeckEditorFilterSize(filterDock->size()); + settingsCache->layouts().setDeckEditorDeckSize(deckDock->size()); } return false; } diff --git a/cockatrice/src/tab_deck_storage.cpp b/cockatrice/src/tab_deck_storage.cpp index 9898c9ee..fa30ff0b 100644 --- a/cockatrice/src/tab_deck_storage.cpp +++ b/cockatrice/src/tab_deck_storage.cpp @@ -80,25 +80,25 @@ TabDeckStorage::TabDeckStorage(TabSupervisor *_tabSupervisor, AbstractClient *_c hbox->addWidget(rightGroupBox); aOpenLocalDeck = new QAction(this); - aOpenLocalDeck->setIcon(QIcon(":/resources/pencil.svg")); + aOpenLocalDeck->setIcon(QIcon("theme:icons/pencil.svg")); connect(aOpenLocalDeck, SIGNAL(triggered()), this, SLOT(actOpenLocalDeck())); aUpload = new QAction(this); - aUpload->setIcon(QIcon(":/resources/arrow_right_green.svg")); + aUpload->setIcon(QIcon("theme:icons/arrow_right_green.svg")); connect(aUpload, SIGNAL(triggered()), this, SLOT(actUpload())); aDeleteLocalDeck = new QAction(this); - aDeleteLocalDeck->setIcon(QIcon(":/resources/remove_row.svg")); + aDeleteLocalDeck->setIcon(QIcon("theme:icons/remove_row.svg")); connect(aDeleteLocalDeck, SIGNAL(triggered()), this, SLOT(actDeleteLocalDeck())); aOpenRemoteDeck = new QAction(this); - aOpenRemoteDeck->setIcon(QIcon(":/resources/pencil.svg")); + aOpenRemoteDeck->setIcon(QIcon("theme:icons/pencil.svg")); connect(aOpenRemoteDeck, SIGNAL(triggered()), this, SLOT(actOpenRemoteDeck())); aDownload = new QAction(this); - aDownload->setIcon(QIcon(":/resources/arrow_left_green.svg")); + aDownload->setIcon(QIcon("theme:icons/arrow_left_green.svg")); connect(aDownload, SIGNAL(triggered()), this, SLOT(actDownload())); aNewFolder = new QAction(this); aNewFolder->setIcon(qApp->style()->standardIcon(QStyle::SP_FileDialogNewFolder)); connect(aNewFolder, SIGNAL(triggered()), this, SLOT(actNewFolder())); aDeleteRemoteDeck = new QAction(this); - aDeleteRemoteDeck->setIcon(QIcon(":/resources/remove_row.svg")); + aDeleteRemoteDeck->setIcon(QIcon("theme:icons/remove_row.svg")); connect(aDeleteRemoteDeck, SIGNAL(triggered()), this, SLOT(actDeleteRemoteDeck())); leftToolBar->addAction(aOpenLocalDeck); diff --git a/cockatrice/src/tab_game.cpp b/cockatrice/src/tab_game.cpp index 53ba95c3..fcf84195 100644 --- a/cockatrice/src/tab_game.cpp +++ b/cockatrice/src/tab_game.cpp @@ -306,6 +306,7 @@ TabGame::TabGame(TabSupervisor *_tabSupervisor, GameReplay *_replay) gameClosed(false), replay(_replay), currentReplayStep(0), + sayLabel(0), sayEdit(0) { setAttribute(Qt::WA_DeleteOnClose); @@ -345,7 +346,6 @@ TabGame::TabGame(TabSupervisor *_tabSupervisor, GameReplay *_replay) connect(messageLog, SIGNAL(cardNameHovered(QString)), cardInfo, SLOT(setCard(QString))); connect(messageLog, SIGNAL(showCardInfoPopup(QPoint, QString)), this, SLOT(showCardInfoPopup(QPoint, QString))); connect(messageLog, SIGNAL(deleteCardInfoPopup(QString)), this, SLOT(deleteCardInfoPopup(QString))); - sayLabel = 0; deckViewContainerLayout = new QVBoxLayout; @@ -363,17 +363,17 @@ TabGame::TabGame(TabSupervisor *_tabSupervisor, GameReplay *_replay) replayStartButton = new QToolButton; replayStartButton->setIconSize(QSize(32, 32)); - replayStartButton->setIcon(QIcon(":/resources/replay_start.svg")); + replayStartButton->setIcon(QIcon("theme:replay/start.svg")); connect(replayStartButton, SIGNAL(clicked()), this, SLOT(replayStartButtonClicked())); replayPauseButton = new QToolButton; replayPauseButton->setIconSize(QSize(32, 32)); replayPauseButton->setEnabled(false); - replayPauseButton->setIcon(QIcon(":/resources/replay_pause.svg")); + replayPauseButton->setIcon(QIcon("theme:replay/pause.svg")); connect(replayPauseButton, SIGNAL(clicked()), this, SLOT(replayPauseButtonClicked())); replayFastForwardButton = new QToolButton; replayFastForwardButton->setIconSize(QSize(32, 32)); replayFastForwardButton->setEnabled(false); - replayFastForwardButton->setIcon(QIcon(":/resources/replay_fastforward.svg")); + replayFastForwardButton->setIcon(QIcon("theme:replay/fastforward.svg")); replayFastForwardButton->setCheckable(true); connect(replayFastForwardButton, SIGNAL(toggled(bool)), this, SLOT(replayFastForwardButtonToggled(bool))); @@ -808,7 +808,7 @@ Player *TabGame::addPlayer(int playerId, const ServerInfo_User &info) Player *newPlayer = new Player(info, playerId, local, this); connect(newPlayer, SIGNAL(openDeckEditor(const DeckLoader *)), this, SIGNAL(openDeckEditor(const DeckLoader *))); QString newPlayerName = "@" + newPlayer->getName(); - if (!autocompleteUserList.contains(newPlayerName)){ + if (sayEdit && !autocompleteUserList.contains(newPlayerName)){ autocompleteUserList << newPlayerName; sayEdit->setCompletionList(autocompleteUserList); } @@ -1006,7 +1006,7 @@ void TabGame::eventSpectatorSay(const Event_GameSay &event, int eventPlayerId, c void TabGame::eventSpectatorLeave(const Event_Leave & /*event*/, int eventPlayerId, const GameEventContext & /*context*/) { QString playerName = "@" + QString::fromStdString(spectators.value(eventPlayerId).name()); - if (autocompleteUserList.removeOne(playerName)) + if (sayEdit && autocompleteUserList.removeOne(playerName)) sayEdit->setCompletionList(autocompleteUserList); messageLog->logLeaveSpectator(QString::fromStdString(spectators.value(eventPlayerId).name())); playerListWidget->removePlayer(eventPlayerId); @@ -1023,7 +1023,7 @@ void TabGame::eventGameStateChanged(const Event_GameStateChanged &event, int /*e const ServerInfo_PlayerProperties &prop = playerInfo.properties(); const int playerId = prop.player_id(); QString playerName = "@" + QString::fromStdString(prop.user_info().name()); - if (!autocompleteUserList.contains(playerName)){ + if (sayEdit && !autocompleteUserList.contains(playerName)){ autocompleteUserList << playerName; sayEdit->setCompletionList(autocompleteUserList); } @@ -1135,7 +1135,7 @@ void TabGame::eventJoin(const Event_Join &event, int /*eventPlayerId*/, const Ga const ServerInfo_PlayerProperties &playerInfo = event.player_properties(); const int playerId = playerInfo.player_id(); QString playerName = QString::fromStdString(playerInfo.user_info().name()); - if (!autocompleteUserList.contains("@" + playerName)){ + if (sayEdit && !autocompleteUserList.contains("@" + playerName)){ autocompleteUserList << "@" + playerName; sayEdit->setCompletionList(autocompleteUserList); } @@ -1161,7 +1161,7 @@ void TabGame::eventLeave(const Event_Leave & /*event*/, int eventPlayerId, const return; QString playerName = "@" + player->getName(); - if(autocompleteUserList.removeOne(playerName)) + if(sayEdit && autocompleteUserList.removeOne(playerName)) sayEdit->setCompletionList(autocompleteUserList); messageLog->logLeave(player); diff --git a/cockatrice/src/tab_message.cpp b/cockatrice/src/tab_message.cpp index 4bc20ed0..61a23fc6 100644 --- a/cockatrice/src/tab_message.cpp +++ b/cockatrice/src/tab_message.cpp @@ -3,13 +3,14 @@ #include #include #include +#include +#include #include "tab_message.h" #include "abstractclient.h" #include "chatview.h" #include "main.h" #include "settingscache.h" -#include -#include +#include "soundengine.h" #include "pending_command.h" #include "pb/session_commands.pb.h" @@ -111,6 +112,8 @@ void TabMessage::processUserMessageEvent(const Event_UserMessage &event) { const UserLevelFlags userLevel(event.sender_name() == otherUserInfo->name() ? otherUserInfo->user_level() : ownUserInfo->user_level()); chatView->appendMessage(QString::fromStdString(event.message()), QString::fromStdString(event.sender_name()), userLevel, true); + if (tabSupervisor->currentIndex() != tabSupervisor->indexOf(this)) + soundEngine->playSound("private_message"); if (settingsCache->getShowMessagePopup() && shouldShowSystemPopup(event)) showSystemPopup(event); diff --git a/cockatrice/src/tab_replays.cpp b/cockatrice/src/tab_replays.cpp index d0e507d0..3947ca08 100644 --- a/cockatrice/src/tab_replays.cpp +++ b/cockatrice/src/tab_replays.cpp @@ -78,24 +78,24 @@ TabReplays::TabReplays(TabSupervisor *_tabSupervisor, AbstractClient *_client) hbox->addWidget(rightGroupBox); aOpenLocalReplay = new QAction(this); - aOpenLocalReplay->setIcon(QIcon(":/resources/icon_view.svg")); + aOpenLocalReplay->setIcon(QIcon("theme:icons/view.svg")); connect(aOpenLocalReplay, SIGNAL(triggered()), this, SLOT(actOpenLocalReplay())); connect(localDirView, SIGNAL(doubleClicked(const QModelIndex &)), this, SLOT(actOpenLocalReplay())); aDeleteLocalReplay = new QAction(this); - aDeleteLocalReplay->setIcon(QIcon(":/resources/remove_row.svg")); + aDeleteLocalReplay->setIcon(QIcon("theme:icons/remove_row.svg")); connect(aDeleteLocalReplay, SIGNAL(triggered()), this, SLOT(actDeleteLocalReplay())); aOpenRemoteReplay = new QAction(this); - aOpenRemoteReplay->setIcon(QIcon(":/resources/icon_view.svg")); + aOpenRemoteReplay->setIcon(QIcon("theme:icons/view.svg")); connect(aOpenRemoteReplay, SIGNAL(triggered()), this, SLOT(actOpenRemoteReplay())); connect(serverDirView, SIGNAL(doubleClicked(const QModelIndex &)), this, SLOT(actOpenRemoteReplay())); aDownload = new QAction(this); - aDownload->setIcon(QIcon(":/resources/arrow_left_green.svg")); + aDownload->setIcon(QIcon("theme:icons/arrow_left_green.svg")); connect(aDownload, SIGNAL(triggered()), this, SLOT(actDownload())); aKeep = new QAction(this); - aKeep->setIcon(QIcon(":/resources/lock.svg")); + aKeep->setIcon(QIcon("theme:icons/lock.svg")); connect(aKeep, SIGNAL(triggered()), this, SLOT(actKeepRemoteReplay())); aDeleteRemoteReplay = new QAction(this); - aDeleteRemoteReplay->setIcon(QIcon(":/resources/remove_row.svg")); + aDeleteRemoteReplay->setIcon(QIcon("theme:icons/remove_row.svg")); connect(aDeleteRemoteReplay, SIGNAL(triggered()), this, SLOT(actDeleteRemoteReplay())); leftToolBar->addAction(aOpenLocalReplay); diff --git a/cockatrice/src/tab_room.cpp b/cockatrice/src/tab_room.cpp index bdf19192..e7e37171 100644 --- a/cockatrice/src/tab_room.cpp +++ b/cockatrice/src/tab_room.cpp @@ -71,7 +71,7 @@ TabRoom::TabRoom(TabSupervisor *_tabSupervisor, AbstractClient *_client, ServerI connect(aOpenChatSettings, SIGNAL(triggered()), this, SLOT(actOpenChatSettings())); QToolButton *chatSettingsButton = new QToolButton; - chatSettingsButton->setIcon(QIcon(":/resources/icon_settings.svg")); + chatSettingsButton->setIcon(QIcon("theme:icons/settings.svg")); chatSettingsButton->setMenu(chatSettingsMenu); chatSettingsButton->setPopupMode(QToolButton::InstantPopup); diff --git a/cockatrice/src/tab_supervisor.cpp b/cockatrice/src/tab_supervisor.cpp index 9bde53b2..5b095911 100644 --- a/cockatrice/src/tab_supervisor.cpp +++ b/cockatrice/src/tab_supervisor.cpp @@ -80,7 +80,7 @@ void CloseButton::paintEvent(QPaintEvent * /*event*/) TabSupervisor::TabSupervisor(AbstractClient *_client, QWidget *parent) : QTabWidget(parent), userInfo(0), client(_client), tabServer(0), tabUserLists(0), tabDeckStorage(0), tabReplays(0), tabAdmin(0) { - tabChangedIcon = new QIcon(":/resources/icon_tab_changed.svg"); + tabChangedIcon = new QIcon("theme:icons/tab_changed.svg"); setElideMode(Qt::ElideRight); setMovable(true); setIconSize(QSize(15, 15)); @@ -281,11 +281,6 @@ void TabSupervisor::stop() while (replayIterator.hasNext()) replayIterator.next()->deleteLater(); replayTabs.clear(); - - QMapIterator messageIterator(messageTabs); - while (messageIterator.hasNext()) - messageIterator.next().value()->deleteLater(); - messageTabs.clear(); delete userInfo; userInfo = 0; @@ -437,7 +432,7 @@ TabMessage *TabSupervisor::addMessageTab(const QString &receiverName, bool focus } void TabSupervisor::maximizeMainWindow() { - emit maximize(); + emit showWindowIfHidden(); } void TabSupervisor::talkLeft(TabMessage *tab) diff --git a/cockatrice/src/tab_supervisor.h b/cockatrice/src/tab_supervisor.h index 13722032..91fc14dd 100644 --- a/cockatrice/src/tab_supervisor.h +++ b/cockatrice/src/tab_supervisor.h @@ -81,7 +81,7 @@ signals: void setMenu(const QList &newMenuList = QList()); void localGameEnded(); void adminLockChanged(bool lock); - void maximize(); + void showWindowIfHidden(); public slots: TabDeckEditor *addDeckEditorTab(const DeckLoader *deckToOpen); void openReplay(GameReplay *replay); diff --git a/cockatrice/src/tablezone.cpp b/cockatrice/src/tablezone.cpp index cfaa6e5f..eebae0f3 100644 --- a/cockatrice/src/tablezone.cpp +++ b/cockatrice/src/tablezone.cpp @@ -8,6 +8,7 @@ #include "tablezone.h" #include "player.h" #include "settingscache.h" +#include "thememanager.h" #include "arrowitem.h" #include "carddragitem.h" #include "carddatabase.h" @@ -16,20 +17,18 @@ #include "pb/command_move_card.pb.h" #include "pb/command_set_card_attr.pb.h" - const QColor TableZone::BACKGROUND_COLOR = QColor(100, 100, 100); const QColor TableZone::FADE_MASK = QColor(0, 0, 0, 80); const QColor TableZone::GRADIENT_COLOR = QColor(255, 255, 255, 150); const QColor TableZone::GRADIENT_COLORLESS = QColor(255, 255, 255, 0); - TableZone::TableZone(Player *_p, QGraphicsItem *parent) : SelectZone(_p, "table", true, false, true, parent), active(false) { - connect(settingsCache, SIGNAL(tableBgPathChanged()), this, SLOT(updateBgPixmap())); + connect(themeManager, SIGNAL(themeChanged()), this, SLOT(updateBg())); connect(settingsCache, SIGNAL(invertVerticalCoordinateChanged()), this, SLOT(reorganizeCards())); - updateBgPixmap(); + updateBg(); height = MARGIN_TOP + MARGIN_BOTTOM + TABLEROWS * CARD_HEIGHT + (TABLEROWS-1) * PADDING_Y; width = MIN_WIDTH; @@ -44,11 +43,8 @@ TableZone::TableZone(Player *_p, QGraphicsItem *parent) } -void TableZone::updateBgPixmap() +void TableZone::updateBg() { - QString bgPath = settingsCache->getTableBgPath(); - if (!bgPath.isEmpty()) - backgroundPixelMap.load(bgPath); update(); } @@ -67,11 +63,7 @@ bool TableZone::isInverted() const void TableZone::paint(QPainter *painter, const QStyleOptionGraphicsItem * /*option*/, QWidget * /*widget*/) { - // if no custom background is provided then use the default color - if (backgroundPixelMap.isNull()) - painter->fillRect(boundingRect(), BACKGROUND_COLOR); - else - painter->fillRect(boundingRect(), QBrush(backgroundPixelMap)); + painter->fillRect(boundingRect(), themeManager->getTableBgBrush()); if (active) { paintZoneOutline(painter); diff --git a/cockatrice/src/tablezone.h b/cockatrice/src/tablezone.h index 2094a48f..55b12b8b 100644 --- a/cockatrice/src/tablezone.h +++ b/cockatrice/src/tablezone.h @@ -49,7 +49,7 @@ private: static const int BOX_LINE_WIDTH = 10; /* - Default background color, inactive mask and boarder gradient + Default inactive mask and border gradient */ static const QColor BACKGROUND_COLOR; static const QColor FADE_MASK; @@ -84,7 +84,7 @@ private slots: /** Loads in any found custom background and updates */ - void updateBgPixmap(); + void updateBg(); public slots: /** diff --git a/cockatrice/src/thememanager.cpp b/cockatrice/src/thememanager.cpp new file mode 100644 index 00000000..97a7dd95 --- /dev/null +++ b/cockatrice/src/thememanager.cpp @@ -0,0 +1,146 @@ +#include "thememanager.h" +#include "settingscache.h" +#include +#include +#include +#include +#if QT_VERSION < 0x050000 + #include +#else + #include +#endif + +#define DEFAULT_THEME_NAME "Default" +#define STYLE_CSS_NAME "style.css" +#define HANDZONE_BG_NAME "handzone" +#define PLAYERZONE_BG_NAME "playerzone" +#define STACKZONE_BG_NAME "stackzone" +#define TABLEZONE_BG_NAME "tablezone" +#define CARD_BACK_NAME "cardback" + +ThemeManager::ThemeManager(QObject *parent) + :QObject(parent) +{ + ensureThemeDirectoryExists(); + connect(settingsCache, SIGNAL(themeChanged()), this, SLOT(themeChangedSlot())); + themeChangedSlot(); +} + +void ThemeManager::ensureThemeDirectoryExists() +{ + if(settingsCache->getThemeName().isEmpty() || + !getAvailableThemes().contains(settingsCache->getThemeName())) + { + qDebug() << "Theme name not set, setting default value"; + settingsCache->setThemeName(DEFAULT_THEME_NAME); + } +} + +QStringMap & ThemeManager::getAvailableThemes() +{ + QDir dir; + availableThemes.clear(); + + // load themes from user profile dir + dir = +#ifdef PORTABLE_BUILD + qApp->applicationDirPath() + +#elif QT_VERSION < 0x050000 + QDesktopServices::storageLocation(QDesktopServices::DataLocation) + +#else + QStandardPaths::standardLocations(QStandardPaths::DataLocation).first() + +#endif + "/themes"; + + foreach(QString themeName, dir.entryList(QDir::AllDirs | QDir::NoDotAndDotDot, QDir::Name)) + { + if(!availableThemes.contains(themeName)) + availableThemes.insert(themeName, dir.absoluteFilePath(themeName)); + } + + // load themes from cockatrice system dir +#ifdef Q_OS_MAC + dir = qApp->applicationDirPath() + "/../Resources/themes"; +#elif defined(Q_OS_WIN) + dir = qApp->applicationDirPath() + "/themes"; +#else // linux + dir = qApp->applicationDirPath() + "/../share/cockatrice/themes"; +#endif + foreach(QString themeName, dir.entryList(QDir::AllDirs | QDir::NoDotAndDotDot, QDir::Name)) + { + if(!availableThemes.contains(themeName)) + availableThemes.insert(themeName, dir.absoluteFilePath(themeName)); + } + + return availableThemes; +} + +QBrush ThemeManager::loadBrush(QDir dir, QString fileName, QColor fallbackColor) +{ + QBrush brush; + QPixmap tmp; + QStringList exts; + exts << ".png" << ".jpg" << ".jpeg" << ".gif" << ".bmp"; + + brush.setColor(fallbackColor); + brush.setStyle(Qt::SolidPattern); + + foreach (const QString &ext, exts) { + if (dir.exists(fileName + ext)) { + tmp.load(dir.absoluteFilePath(fileName + ext)); + if(!tmp.isNull()) + brush.setTexture(tmp); + break; + } + } + + return brush; +} + +QPixmap ThemeManager::loadPixmap(QDir dir, QString fileName) +{ + QPixmap pix; + QStringList exts; + exts << ".png" << ".jpg" << ".jpeg" << ".gif" << ".bmp"; + + foreach (const QString &ext, exts) { + if (dir.exists(fileName + ext)) { + pix.load(dir.absoluteFilePath(fileName + ext)); + break; + } + } + + return pix; +} + +void ThemeManager::themeChangedSlot() +{ + QString themeName = settingsCache->getThemeName(); + qDebug() << "Theme changed:" << themeName; + + QDir dir = getAvailableThemes().value(themeName); + + // css + if(dir.exists(STYLE_CSS_NAME)) + + qApp->setStyleSheet("file:///" + dir.absoluteFilePath(STYLE_CSS_NAME)); + else + qApp->setStyleSheet(""); + + // card background + cardBackPixmap = loadPixmap(dir, CARD_BACK_NAME); + + // zones bg + dir.cd("zones"); + handBgBrush = loadBrush(dir, HANDZONE_BG_NAME, QColor(80, 100, 50)); + tableBgBrush = loadBrush(dir, TABLEZONE_BG_NAME, QColor(70, 50, 100)); + playerBgBrush = loadBrush(dir, PLAYERZONE_BG_NAME, QColor(200, 200, 200)); + stackBgBrush = loadBrush(dir, STACKZONE_BG_NAME, QColor(113, 43, 43)); + + // resources + QStringList resources; + resources << dir.absolutePath() << ":/resources"; + QDir::setSearchPaths("theme", resources); + + emit themeChanged(); +} diff --git a/cockatrice/src/thememanager.h b/cockatrice/src/thememanager.h new file mode 100644 index 00000000..19cb19c5 --- /dev/null +++ b/cockatrice/src/thememanager.h @@ -0,0 +1,42 @@ +#ifndef THEMEMANAGER_H +#define THEMEMANAGER_H + +#include +#include +#include +#include +#include +#include + +typedef QMap QStringMap; + +class QApplication; + +class ThemeManager : public QObject { + Q_OBJECT +public: + ThemeManager(QObject *parent = 0); +private: + QBrush handBgBrush, stackBgBrush, tableBgBrush, playerBgBrush; + QPixmap cardBackPixmap; + QStringMap availableThemes; +protected: + void ensureThemeDirectoryExists(); + QBrush loadBrush(QDir dir, QString fileName, QColor fallbackColor); + QPixmap loadPixmap(QDir dir, QString fileName); +public: + QBrush &getHandBgBrush() { return handBgBrush; } + QBrush &getStackBgBrush() { return stackBgBrush; } + QBrush &getTableBgBrush() { return tableBgBrush; } + QBrush &getPlayerBgBrush() { return playerBgBrush; } + QPixmap &getCardBackPixmap() { return cardBackPixmap; } + QStringMap &getAvailableThemes(); +protected slots: + void themeChangedSlot(); +signals: + void themeChanged(); +}; + +extern ThemeManager * themeManager; + +#endif diff --git a/cockatrice/src/user_context_menu.cpp b/cockatrice/src/user_context_menu.cpp index 9bf0f484..0949f355 100644 --- a/cockatrice/src/user_context_menu.cpp +++ b/cockatrice/src/user_context_menu.cpp @@ -11,12 +11,18 @@ #include "gameselector.h" #include "pending_command.h" +#include +#if QT_VERSION >= 0x050000 +#include +#endif + #include "pb/commands.pb.h" #include "pb/session_commands.pb.h" #include "pb/moderator_commands.pb.h" #include "pb/command_kick_from_game.pb.h" #include "pb/response_get_games_of_user.pb.h" #include "pb/response_get_user_info.pb.h" +#include "pb/response_ban_history.pb.h" UserContextMenu::UserContextMenu(const TabSupervisor *_tabSupervisor, QWidget *parent, TabGame *_game) : QObject(parent), client(_tabSupervisor->getClient()), tabSupervisor(_tabSupervisor), game(_game) @@ -32,6 +38,7 @@ UserContextMenu::UserContextMenu(const TabSupervisor *_tabSupervisor, QWidget *p aRemoveFromIgnoreList = new QAction(QString(), this); aKick = new QAction(QString(), this); aBan = new QAction(QString(), this); + aBanHistory = new QAction(QString(), this); aPromoteToMod = new QAction(QString(), this); aDemoteFromMod = new QAction(QString(), this); @@ -49,6 +56,7 @@ void UserContextMenu::retranslateUi() aRemoveFromIgnoreList->setText(tr("Remove from &ignore list")); aKick->setText(tr("Kick from &game")); aBan->setText(tr("Ban from &server")); + aBanHistory->setText(tr("View user's &ban history")); aPromoteToMod->setText(tr("&Promote user to moderator")); aDemoteFromMod->setText(tr("Dem&ote user from moderator")); } @@ -94,6 +102,39 @@ void UserContextMenu::banUser_processUserInfoResponse(const Response &r) dlg->show(); } +void UserContextMenu::banUserHistory_processResponse(const Response &resp) { + const Response_BanHistory &response = resp.GetExtension(Response_BanHistory::ext); + if (resp.response_code() == Response::RespOk) { + + if (response.ban_list_size() > 0) { + QTableWidget *table = new QTableWidget(); + table->setWindowTitle(tr("Ban History")); + table->setRowCount(response.ban_list_size()); + table->setColumnCount(5); + table->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + + table->setHorizontalHeaderLabels( + QString(tr("Ban Time;Moderator;Ban Length;Ban Reason;Visible Reason")).split(";")); + + ServerInfo_Ban ban; for (int i = 0; i < response.ban_list_size(); ++i) { + ban = response.ban_list(i); + table->setItem(i, 0, new QTableWidgetItem(QString::fromStdString(ban.ban_time()))); + table->setItem(i, 1, new QTableWidgetItem(QString::fromStdString(ban.admin_name()))); + table->setItem(i, 2, new QTableWidgetItem(QString::fromStdString(ban.ban_length()))); + table->setItem(i, 3, new QTableWidgetItem(QString::fromStdString(ban.ban_reason()))); + table->setItem(i, 4, new QTableWidgetItem(QString::fromStdString(ban.visible_reason()))); + } + + table->resizeColumnsToContents(); + table->setMinimumSize(table->horizontalHeader()->length() + (table->columnCount() * 5), table->verticalHeader()->length() + (table->rowCount() * 3)); + table->show(); + } else + QMessageBox::information(static_cast(parent()), tr("Ban History"), tr("User has never been banned.")); + + } else + QMessageBox::critical(static_cast(parent()), tr("Ban History"), tr("Failed to collecting ban information.")); +} + void UserContextMenu::adjustMod_processUserResponse(const Response &resp, const CommandContainer &commandContainer) { @@ -158,6 +199,7 @@ void UserContextMenu::showContextMenu(const QPoint &pos, const QString &userName if (!tabSupervisor->getAdminLocked()) { menu->addSeparator(); menu->addAction(aBan); + menu->addAction(aBanHistory); menu->addSeparator(); if (userLevel.testFlag(ServerInfo_User::IsModerator) && (tabSupervisor->getUserInfo()->user_level() & ServerInfo_User::IsAdmin)) { @@ -177,6 +219,7 @@ void UserContextMenu::showContextMenu(const QPoint &pos, const QString &userName aRemoveFromIgnoreList->setEnabled(anotherUser); aKick->setEnabled(anotherUser); aBan->setEnabled(anotherUser); + aBanHistory->setEnabled(anotherUser); aPromoteToMod->setEnabled(anotherUser); aDemoteFromMod->setEnabled(anotherUser); @@ -239,6 +282,12 @@ void UserContextMenu::showContextMenu(const QPoint &pos, const QString &userName PendingCommand *pend = client->prepareAdminCommand(cmd); connect(pend, SIGNAL(finished(Response, CommandContainer, QVariant)), this, SLOT(adjustMod_processUserResponse(Response, CommandContainer))); client->sendCommand(pend); + } else if (actionClicked == aBanHistory) { + Command_GetBanHistory cmd; + cmd.set_user_name(userName.toStdString()); + PendingCommand *pend = client->prepareModeratorCommand(cmd); + connect(pend, SIGNAL(finished(Response, CommandContainer, QVariant)), this, SLOT(banUserHistory_processResponse(Response))); + client->sendCommand(pend); } delete menu; diff --git a/cockatrice/src/user_context_menu.h b/cockatrice/src/user_context_menu.h index dd0d1ed5..2093616a 100644 --- a/cockatrice/src/user_context_menu.h +++ b/cockatrice/src/user_context_menu.h @@ -26,12 +26,13 @@ private: QAction *aAddToBuddyList, *aRemoveFromBuddyList; QAction *aAddToIgnoreList, *aRemoveFromIgnoreList; QAction *aKick; - QAction *aBan; + QAction *aBan, *aBanHistory; QAction *aPromoteToMod, *aDemoteFromMod; signals: void openMessageDialog(const QString &userName, bool focus); private slots: void banUser_processUserInfoResponse(const Response &resp); + void banUserHistory_processResponse(const Response &resp); void adjustMod_processUserResponse(const Response &resp, const CommandContainer &commandContainer); void banUser_dialogFinished(); void gamesOfUserReceived(const Response &resp, const CommandContainer &commandContainer); diff --git a/cockatrice/src/userlist.cpp b/cockatrice/src/userlist.cpp index 59717608..d438f5f5 100644 --- a/cockatrice/src/userlist.cpp +++ b/cockatrice/src/userlist.cpp @@ -122,6 +122,25 @@ void BanDialog::okClicked() QMessageBox::critical(this, tr("Error"), tr("You have to select a name-based, IP-based, clientId based, or some combination of the three to place a ban.")); return; } + + if (nameBanCheckBox->isChecked()) + if (nameBanEdit->text() == ""){ + QMessageBox::critical(this, tr("Error"), tr("You must have a value in the name ban when selecting the name ban checkbox.")); + return; + } + + if (ipBanCheckBox->isChecked()) + if (ipBanEdit->text() == ""){ + QMessageBox::critical(this, tr("Error"), tr("You must have a value in the ip ban when selecting the ip ban checkbox.")); + return; + } + + if (idBanCheckBox->isChecked()) + if (idBanCheckBox->text() == ""){ + QMessageBox::critical(this, tr("Error"), tr("You must have a value in the clientid ban when selecting the clientid ban checkbox.")); + return; + } + accept(); } diff --git a/cockatrice/src/window_main.cpp b/cockatrice/src/window_main.cpp index 219f1dbe..c63731eb 100644 --- a/cockatrice/src/window_main.cpp +++ b/cockatrice/src/window_main.cpp @@ -30,6 +30,7 @@ #include #include #include + #if QT_VERSION < 0x050000 #include // for Qt::escape() #endif @@ -100,7 +101,7 @@ void MainWindow::processConnectionClosedEvent(const Event_ConnectionClosed &even void MainWindow::processServerShutdownEvent(const Event_ServerShutdown &event) { serverShutdownMessageBox.setInformativeText(tr("The server is going to be restarted in %n minute(s).\nAll running games will be lost.\nReason for shutdown: %1", "", event.minutes()).arg(QString::fromStdString(event.reason()))); - serverShutdownMessageBox.setIconPixmap(QPixmap(":/resources/appicon.svg").scaled(64, 64)); + serverShutdownMessageBox.setIconPixmap(QPixmap("theme:appicon.svg").scaled(64, 64)); serverShutdownMessageBox.setText(tr("Scheduled server shutdown")); serverShutdownMessageBox.setWindowModality(Qt::ApplicationModal); serverShutdownMessageBox.setVisible(true); @@ -293,9 +294,23 @@ void MainWindow::serverTimeout() actConnect(); } -void MainWindow::loginError(Response::ResponseCode r, QString reasonStr, quint32 endTime) +void MainWindow::loginError(Response::ResponseCode r, QString reasonStr, quint32 endTime, QList missingFeatures) { switch (r) { + case Response::RespClientUpdateRequired: { + QString formatedMissingFeatures; + formatedMissingFeatures = "Missing Features: "; + for (int i = 0; i < missingFeatures.size(); ++i) + formatedMissingFeatures.append(QString("\n %1").arg(QChar(0x2022)) + " " + missingFeatures.value(i) ); + + QMessageBox msgBox; + msgBox.setIcon(QMessageBox::Critical); + msgBox.setWindowTitle(tr("Failed Login")); + msgBox.setText(tr("Your client does not support features that the server requires, please update your client and try again.")); + msgBox.setDetailedText(formatedMissingFeatures); + msgBox.exec(); + break; + } case Response::RespWrongPassword: QMessageBox::critical(this, tr("Error"), tr("Incorrect username or password. Please check your authentication information and try again.")); break; @@ -561,13 +576,13 @@ MainWindow::MainWindow(QWidget *parent) client = new RemoteClient; connect(client, SIGNAL(connectionClosedEventReceived(const Event_ConnectionClosed &)), this, SLOT(processConnectionClosedEvent(const Event_ConnectionClosed &))); connect(client, SIGNAL(serverShutdownEventReceived(const Event_ServerShutdown &)), this, SLOT(processServerShutdownEvent(const Event_ServerShutdown &))); - connect(client, SIGNAL(loginError(Response::ResponseCode, QString, quint32)), this, SLOT(loginError(Response::ResponseCode, QString, quint32))); + connect(client, SIGNAL(loginError(Response::ResponseCode, QString, quint32, QList)), this, SLOT(loginError(Response::ResponseCode, QString, quint32, QList))); connect(client, SIGNAL(socketError(const QString &)), this, SLOT(socketError(const QString &))); connect(client, SIGNAL(serverTimeout()), this, SLOT(serverTimeout())); connect(client, SIGNAL(statusChanged(ClientStatus)), this, SLOT(statusChanged(ClientStatus))); connect(client, SIGNAL(protocolVersionMismatch(int, int)), this, SLOT(protocolVersionMismatch(int, int))); connect(client, SIGNAL(userInfoChanged(const ServerInfo_User &)), this, SLOT(userInfoReceived(const ServerInfo_User &)), Qt::BlockingQueuedConnection); - + connect(client, SIGNAL(notifyUserAboutUpdate()), this, SLOT(notifyUserAboutUpdate())); connect(client, SIGNAL(registerAccepted()), this, SLOT(registerAccepted())); connect(client, SIGNAL(registerAcceptedNeedsActivate()), this, SLOT(registerAcceptedNeedsActivate())); connect(client, SIGNAL(registerError(Response::ResponseCode, QString, quint32)), this, SLOT(registerError(Response::ResponseCode, QString, quint32))); @@ -584,7 +599,7 @@ MainWindow::MainWindow(QWidget *parent) tabSupervisor = new TabSupervisor(client); connect(tabSupervisor, SIGNAL(setMenu(QList)), this, SLOT(updateTabMenu(QList))); connect(tabSupervisor, SIGNAL(localGameEnded()), this, SLOT(localGameEnded())); - connect(tabSupervisor, SIGNAL(maximize()), this, SLOT(maximize())); + connect(tabSupervisor, SIGNAL(showWindowIfHidden()), this, SLOT(showWindowIfHidden())); tabSupervisor->addDeckEditorTab(0); setCentralWidget(tabSupervisor); @@ -618,7 +633,7 @@ void MainWindow::createTrayIcon() { trayIcon = new QSystemTrayIcon(this); trayIcon->setContextMenu(trayIconMenu); - trayIcon->setIcon(QIcon(":/resources/appicon.svg")); + trayIcon->setIcon(QIcon("theme:cockatrice.svg")); trayIcon->show(); connect(trayIcon,SIGNAL(activated(QSystemTrayIcon::ActivationReason)),this, @@ -670,7 +685,7 @@ void MainWindow::changeEvent(QEvent *event) else if(event->type() == QEvent::ActivationChange) { if(isActiveWindow() && !bHasActivated){ bHasActivated = true; - if(settingsCache->getAutoConnect()) { + if(settingsCache->servers().getAutoConnect()) { qDebug() << "Attempting auto-connect..."; DlgConnect dlg(this); client->connectToServer(dlg.getHost(), dlg.getPort(), dlg.getPlayerName(), dlg.getPassword()); @@ -688,8 +703,10 @@ void MainWindow::pixmapCacheSizeChanged(int newSizeInMBs) QPixmapCache::setCacheLimit(newSizeInMBs * 1024); } -void MainWindow::maximize() { - showNormal(); +void MainWindow::showWindowIfHidden() { + // keep the previous window state + setWindowState(windowState() & ~Qt::WindowMinimized); + show(); } /* CARD UPDATER */ @@ -795,3 +812,8 @@ void MainWindow::refreshShortcuts() aExit->setShortcuts(settingsCache->shortcuts().getShortcut("MainWindow/aExit")); aCheckCardUpdates->setShortcuts(settingsCache->shortcuts().getShortcut("MainWindow/aCheckCardUpdates")); } + +void MainWindow::notifyUserAboutUpdate() +{ + QMessageBox::information(this, tr("Information"), tr("Your client appears to be missing features that the server supports.\nThis usually means that your client version is out of date, please check to see if there is a new client available for download.")); +} diff --git a/cockatrice/src/window_main.h b/cockatrice/src/window_main.h index 5a12676e..3c7c6ed9 100644 --- a/cockatrice/src/window_main.h +++ b/cockatrice/src/window_main.h @@ -20,6 +20,7 @@ #ifndef WINDOW_H #define WINDOW_H +#include #include #include #include @@ -42,7 +43,7 @@ private slots: void processConnectionClosedEvent(const Event_ConnectionClosed &event); void processServerShutdownEvent(const Event_ServerShutdown &event); void serverTimeout(); - void loginError(Response::ResponseCode r, QString reasonStr, quint32 endTime); + void loginError(Response::ResponseCode r, QString reasonStr, quint32 endTime, QList missingFeatures); void registerError(Response::ResponseCode r, QString reasonStr, quint32 endTime); void activateError(); void socketError(const QString &errorStr); @@ -53,7 +54,7 @@ private slots: void activateAccepted(); void localGameEnded(); void pixmapCacheSizeChanged(int newSizeInMBs); - + void notifyUserAboutUpdate(); void actConnect(); void actDisconnect(); void actSinglePlayer(); @@ -68,7 +69,7 @@ private slots: void iconActivated(QSystemTrayIcon::ActivationReason reason); - void maximize(); + void showWindowIfHidden(); void actCheckCardUpdates(); void cardUpdateError(QProcess::ProcessError err); diff --git a/cockatrice/src/window_sets.cpp b/cockatrice/src/window_sets.cpp index 890688cf..4668c55d 100644 --- a/cockatrice/src/window_sets.cpp +++ b/cockatrice/src/window_sets.cpp @@ -24,28 +24,28 @@ WndSets::WndSets(QWidget *parent) setsEditToolBar->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); aTop = new QAction(QString(), this); - aTop->setIcon(QIcon(":/resources/arrow_top_green.svg")); + aTop->setIcon(QIcon("theme:icons/arrow_top_green.svg")); aTop->setToolTip(tr("Move selected set to the top")); aTop->setEnabled(false); connect(aTop, SIGNAL(triggered()), this, SLOT(actTop())); setsEditToolBar->addAction(aTop); aUp = new QAction(QString(), this); - aUp->setIcon(QIcon(":/resources/arrow_up_green.svg")); + aUp->setIcon(QIcon("theme:icons/arrow_up_green.svg")); aUp->setToolTip(tr("Move selected set up")); aUp->setEnabled(false); connect(aUp, SIGNAL(triggered()), this, SLOT(actUp())); setsEditToolBar->addAction(aUp); aDown = new QAction(QString(), this); - aDown->setIcon(QIcon(":/resources/arrow_down_green.svg")); + aDown->setIcon(QIcon("theme:icons/arrow_down_green.svg")); aDown->setToolTip(tr("Move selected set down")); aDown->setEnabled(false); connect(aDown, SIGNAL(triggered()), this, SLOT(actDown())); setsEditToolBar->addAction(aDown); aBottom = new QAction(QString(), this); - aBottom->setIcon(QIcon(":/resources/arrow_bottom_green.svg")); + aBottom->setIcon(QIcon("theme:icons/arrow_bottom_green.svg")); aBottom->setToolTip(tr("Move selected set to the bottom")); aBottom->setEnabled(false); connect(aBottom, SIGNAL(triggered()), this, SLOT(actBottom())); diff --git a/cockatrice/src/zoneviewwidget.cpp b/cockatrice/src/zoneviewwidget.cpp index ccb36af1..57a438af 100644 --- a/cockatrice/src/zoneviewwidget.cpp +++ b/cockatrice/src/zoneviewwidget.cpp @@ -20,44 +20,6 @@ #include "pb/command_stop_dump_zone.pb.h" #include "pb/command_shuffle.pb.h" -TitleLabel::TitleLabel() - : QGraphicsWidget(), text(" ") -{ - setAcceptHoverEvents(true); -} - -void TitleLabel::paint(QPainter *painter, const QStyleOptionGraphicsItem * /*option*/, QWidget * /*widget*/) -{ - QBrush windowBrush = palette().window(); - windowBrush.setColor(windowBrush.color().darker(150)); - painter->fillRect(boundingRect(), windowBrush); - painter->drawText(boundingRect(), Qt::AlignLeft | Qt::AlignVCenter, text); -} - -QSizeF TitleLabel::sizeHint(Qt::SizeHint which, const QSizeF &constraint) const -{ - QFont f; - QFontMetrics fm(f); - if (which == Qt::MaximumSize) - return QSizeF(constraint.width(), fm.size(Qt::TextSingleLine, text).height() + 10); - else - return fm.size(Qt::TextSingleLine, text) + QSizeF(10, 10); -} - -void TitleLabel::mousePressEvent(QGraphicsSceneMouseEvent *event) -{ - if (event->button() == Qt::LeftButton) { - buttonDownPos = static_cast(scene())->getViewTransform().inverted().map(event->pos()); - event->accept(); - } else - event->ignore(); -} - -void TitleLabel::mouseMoveEvent(QGraphicsSceneMouseEvent *event) -{ - emit mouseMoved(event->scenePos() - buttonDownPos); -} - ZoneViewWidget::ZoneViewWidget(Player *_player, CardZone *_origZone, int numberCards, bool _revealZone, bool _writeableRevealZone, const QList &cardList) : QGraphicsWidget(0, Qt::Window), canBeShuffled(_origZone->getIsShufflable()), player(_player) { @@ -174,8 +136,20 @@ void ZoneViewWidget::retranslateUi() pileViewCheckBox.setText(tr("pile view")); } -void ZoneViewWidget::moveWidget(QPointF scenePos) +void ZoneViewWidget::moveEvent(QGraphicsSceneMoveEvent * /* event */) { + if(!scene()) + return; + + static int titleBarHeight = 0; + if(titleBarHeight == 0) + { + QStyleOptionTitleBar so; + titleBarHeight = style()->pixelMetric(QStyle::PM_TitleBarHeight, &so, (QWidget*) this); + } + + QPointF scenePos = pos(); + if(scenePos.x() < 0) { scenePos.setX(0); @@ -185,16 +159,17 @@ void ZoneViewWidget::moveWidget(QPointF scenePos) scenePos.setX(maxw); } - if(scenePos.y() < 0) + if(scenePos.y() < titleBarHeight) { - scenePos.setY(0); + scenePos.setY(titleBarHeight); } else { - qreal maxh = scene()->sceneRect().height() - 100; + qreal maxh = scene()->sceneRect().height() - titleBarHeight; if(scenePos.y() > maxh) scenePos.setY(maxh); } - setPos(scenePos); + if(scenePos != pos()) + setPos(scenePos); } void ZoneViewWidget::resizeToZoneContents() @@ -250,5 +225,5 @@ void ZoneViewWidget::zoneDeleted() void ZoneViewWidget::initStyleOption(QStyleOption *option) const { QStyleOptionTitleBar *titleBar = qstyleoption_cast(option); if (titleBar) - titleBar->icon = QIcon(":/resources/appicon.svg"); + titleBar->icon = QIcon("theme:cockatrice.svg"); } diff --git a/cockatrice/src/zoneviewwidget.h b/cockatrice/src/zoneviewwidget.h index 7e0a37d5..744b3794 100644 --- a/cockatrice/src/zoneviewwidget.h +++ b/cockatrice/src/zoneviewwidget.h @@ -18,30 +18,12 @@ class QGraphicsSceneMouseEvent; class QGraphicsSceneWheelEvent; class QStyleOption; -class TitleLabel : public QGraphicsWidget { - Q_OBJECT -private: - QString text; - QPointF buttonDownPos; -public: - TitleLabel(); - void paint(QPainter *painter, const QStyleOptionGraphicsItem * /*option*/, QWidget * /*widget*/); - void setText(const QString &_text) { text = _text; update(); } -signals: - void mouseMoved(QPointF scenePos); -protected: - QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint) const; - void mouseMoveEvent(QGraphicsSceneMouseEvent *event); - void mousePressEvent(QGraphicsSceneMouseEvent *event); -}; - class ZoneViewWidget : public QGraphicsWidget { Q_OBJECT private: ZoneViewZone *zone; QGraphicsWidget *zoneContainer; - - TitleLabel *titleLabel; + QPushButton *closeButton; QScrollBar *scrollBar; QCheckBox sortByNameCheckBox; @@ -62,7 +44,7 @@ private slots: void handleWheelEvent(QGraphicsSceneWheelEvent *event); void handleScrollBarChange(int value); void zoneDeleted(); - void moveWidget(QPointF scenePos); + void moveEvent(QGraphicsSceneMoveEvent * /* event */); public: ZoneViewWidget(Player *_player, CardZone *_origZone, int numberCards = 0, bool _revealZone = false, bool _writeableRevealZone = false, const QList &cardList = QList()); ZoneViewZone *getZone() const { return zone; } diff --git a/cockatrice/translations/cockatrice_cs.ts b/cockatrice/translations/cockatrice_cs.ts index 4f504649..cd922634 100644 --- a/cockatrice/translations/cockatrice_cs.ts +++ b/cockatrice/translations/cockatrice_cs.ts @@ -2,17 +2,17 @@ AbstractCounter - + &Set counter... &Nastavit žeton... - + Set counter Nastavit žeton - + New value for counter '%1': Nová hodnota pro žeton '%1': @@ -20,89 +20,60 @@ AppearanceSettingsPage - - Zone background pictures - Pozadí zón + + Theme settings + - - Hand background: - Pozadí ruky + + Current theme: + - - Stack background: - Pozadí stacku - - - - Table background: - Pozadí stolu - - - - Player info background: - Pozadí sekce s informacemi o hráči - - - - Card back: - Pozadí karet - - - + Card rendering Vykreslování karet - + Display card names on cards having a picture Zobrazit jména karet na kartách s obrázky - + Scale cards on mouse over - + Hand layout Rozvržení ruky - + Display hand horizontally (wastes space) Zobrazit ruku horizontálně (plýtvá místem) - + Enable left justification - + Table grid layout Rozložení herní mřížky - + Invert vertical coordinate Převrátit vertikální souřadnice - + Minimum player count for multi-column layout: Minimální počet hráčů pro víceřádkové rozvržení: - - - - - - - Choose path - Vyberte cestu - BanDialog @@ -117,87 +88,110 @@ - + + ban client I&D + + + + Ban type Typ banu - + &permanent ban - + &temporary ban - + &Days: - + &Hours: - + &Minutes: - + Duration of the ban Trvání banu - + Please enter the reason for the ban. This is only saved for moderators and cannot be seen by the banned person. Uveďte prosím důvod pro ban. Toto je uloženo pouze pro moderátory a banovaná osoba to neuvidí. - + Please enter the reason for the ban that will be visible to the banned person. Uveďte prosám důvod pro ban, který uvidí banovaná osoba. - + &OK &OK - + &Cancel - + Ban user from server Zabanovat uživatele ze serveru - + + + + Error Error - - You have to select a name-based or IP-based ban, or both. - Musíte vybrat ban na jméno nebo ban na IP adresu. + + You have to select a name-based, IP-based, clientId based, or some combination of the three to place a ban. + + + + + You must have a value in the name ban when selecting the name ban checkbox. + + + + + You must have a value in the ip ban when selecting the ip ban checkbox. + + + + + You must have a value in the clientid ban when selecting the clientid ban checkbox. + CardDatabase - + New sets found - + %1 new set(s) have been found in the card database. Do you want to enable them? @@ -233,17 +227,17 @@ Toto je uloženo pouze pro moderátory a banovaná osoba to neuvidí. CardFrame - + Image - + Description - + Both @@ -299,27 +293,32 @@ Toto je uloženo pouze pro moderátory a banovaná osoba to neuvidí.Zobrazit všechny informace - + Name: Jméno: - + Mana cost: Sesílací cena: - + + Color(s): + + + + Card type: Typ karty: - + P / T: S / O: - + Loyalty: @@ -583,12 +582,12 @@ Toto je uloženo pouze pro moderátory a banovaná osoba to neuvidí. DeckEditorSettingsPage - + Nothing is here... yet - + General Obecné @@ -596,17 +595,17 @@ Toto je uloženo pouze pro moderátory a banovaná osoba to neuvidí. DeckListModel - + Number Počet - + Card Karta - + Price Cena @@ -628,42 +627,42 @@ Toto je uloženo pouze pro moderátory a banovaná osoba to neuvidí. DeckViewContainer - + Load local deck - + Load deck from server - + Ready to s&tart Připraven ke &hře - + S&ideboard unlocked - + S&ideboard locked - + Load deck Nahrát balíček - + Error - + The selected file could not be loaded. Vybraný soubor se nepodařilo načíst. @@ -709,37 +708,52 @@ Toto je uloženo pouze pro moderátory a banovaná osoba to neuvidí. DlgConnect - + + Previous Host + + + + + New Host + + + + &Host: &Hostitel: - + + Enter host name + + + + &Port: &Port: - + Player &name: Jméno &hráče: - + P&assword: H&eslo: - + &Save password - + A&uto connect at start - + Connect to server Připojit k serveru @@ -747,82 +761,92 @@ Toto je uloženo pouze pro moderátory a banovaná osoba to neuvidí. DlgCreateGame - + &Description: &Popis: - + &Password: &Heslo: - + P&layers: H&ráči: - + + Re&member settings + + + + Game type Formát - + Only &buddies can join Jen pro &přátele - + Only &registered users can join Jen pro &registrované - + Joining restrictions Omezení připojení - + &Spectators can watch - + Spectators &need a password to watch - + Spectators can see &hands - + Spectators can &chat Diváci mohou &chatovat - + Spectators Diváci - + + &Clear + + + + Create game Vytvořit hru - + Game information Informace o hře - + Error Chyba - + Server error. Chyba serveru. @@ -963,32 +987,32 @@ To remove your current avatar, confirm without choosing a new image. DlgEditPassword - + Old password: - + New password: - + Confirm new password: - + Change password - + Error - + The new passwords don't match. @@ -1091,47 +1115,47 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgEditUser - + Email: - + Pronouns: - + Neutral - + Masculine - + Feminine - + Country: - + Undefined - + Real name: - + Edit user profile @@ -1139,47 +1163,47 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgFilterGames - + Show &unavailable games - + Show &password protected games - + Game &description: - + &Creator name: - + &Game types - + at &least: - + at &most: - + Maximum player count - + Filter games Filtrovat hry @@ -1187,7 +1211,7 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgLoadDeckFromClipboard - + &Refresh &Obnovit @@ -1197,14 +1221,14 @@ Make sure to enable the 'token set' in the 'Edit sets...' di Nahrát balíček ze schránky - - + + Error Chyba - - + + Invalid deck list. Neplatný formát balíčku. @@ -1220,67 +1244,93 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgRegister - + &Host: - + &Port: - + Player &name: - + P&assword: - + + Password (again): + + + + Email: - + + Email (again): + + + + Pronouns: - + Neutral - + Masculine - + Feminine - + Undefined - + + + Registration Warning + + + + + Your passwords do not match, please try again. + + + + + Your email addresses do not match, please try again. + + + + Country: - + Real name: - + Register to server @@ -1288,19 +1338,19 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgSettings - - - + + + Error Chyba - + Unknown Error loading card database Neznámý error při nahrávání databáze karet. - + Your card database is invalid. Cockatrice may not function correctly with an invalid database @@ -1314,7 +1364,7 @@ Je možné že bude nutné znovu spustit Oracle pro obnovení databáze karet. Chtěl/a by jste změnit nastavení lokace databáze? - + Your card database version is too old. This can cause problems loading card information or images @@ -1325,21 +1375,21 @@ Would you like to change your database location setting? - + File Error loading your card database. Would you like to change your database location setting? - + Your card database was loaded but contains no cards. Would you like to change your database location setting? - + Your card database did not finish loading Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues with your cards.xml attached @@ -1348,7 +1398,7 @@ Would you like to change your database location setting? - + Unknown card database load status Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues @@ -1357,50 +1407,55 @@ Would you like to change your database location setting? - + The path to your deck directory is invalid. Would you like to go back and set the correct path? Cesta k adresáři s balíčky je neplatná. Chcete se vrátit a nastavit správnou? - + The path to your card pictures directory is invalid. Would you like to go back and set the correct path? Cesta k adresáři s obrázky je neplatná. Chcete se vrátit a nastavit správnou? - + Settings Nastavení - + General Obecné - + Appearance Vzhled - + User Interface - + Deck Editor - + Chat - + Sound + + + Shortcuts + + GameSelector @@ -1413,7 +1468,7 @@ Would you like to change your database location setting? - + Error Chyba @@ -1458,47 +1513,47 @@ Would you like to change your database location setting? Zakladatel hry vás ignoruje. - + Join game Připojit ke hře - + Password: Heslo: - + Please join the respective room first. - + Games Hry + + + &Filter games + + - Filter games + C&lear filter - Clear filter + C&reate - - Create + + &Join - - Join - - - - + J&oin as spectator P&řipojit se jako divák @@ -1615,107 +1670,112 @@ Would you like to change your database location setting? GeneralSettingsPage - + Reset/Clear Downloaded Pictures - - - - - + + + + + Choose path Vyberte cestu - + Success - + Downloaded card pictures have been reset. - + Error - + One or more downloaded card pictures could not be cleared. - + Personal settings Osobní nastavení - + Language: Jazyk: - + Download card pictures on the fly Stahovat obrázky karet za běhu - + Download card pictures from a custom URL - + Custom Card Download URL: - + Linking FAQ - - Paths - Cesty - - - - Decks directory: - Adresář s balíčky: - - - - Replays directory: - - - - - Pictures directory: - Adresář s obrázky: - - - - Card database: - - - - - Token database: + + Notify when new client features are available + Paths + Cesty + + + + Decks directory: + Adresář s balíčky: + + + + Replays directory: + + + + + Pictures directory: + Adresář s obrázky: + + + + Card database: + + + + + Token database: + + + + Picture cache size: - - + + English Česky (Czech) @@ -1723,501 +1783,547 @@ Would you like to change your database location setting? MainWindow - + There are too many concurrent connections from your address. Z vaší adresy jde mnoho současných připojení. - + Scheduled server shutdown. - + Banned by moderator - + Expected end time: %1 - + This ban lasts indefinitely. - + Connection closed Připojení uzavřeno - + The server has terminated your connection. Reason: %1 Server přerušil spojení. Důvod: %1 - + Scheduled server shutdown - + The server is going to be restarted in %n minute(s). All running games will be lost. Reason for shutdown: %1 - + Number of players Počet hráčů - + Please enter the number of players. Vložte počet hráčů. - - + + Player %1 Hráč %1 - + Load replay - + About Cockatrice O Cockatrice - + Version %1 Verze %1 - + Translators: Překlad: - + Project Manager: - - + + The server has reached its maximum user capacity, please check back later. + + + + + Invalid username. - - + + You have been logged out due to logging in at another location. + + + + + Success - + Registration accepted. Will now login. - + Account activation accepted. Will now login. - + Past Project Managers: - + Developers: - + Our Developers - + Help Develop! - + Recognition Page - + Help Translate! - + Support: - + Report an Issue - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + Error Chyba - + Server timeout Vypršel časový limit - + + Failed Login + + + + + Your client does not support features that the server requires, please update your client and try again. + + + + Incorrect username or password. Please check your authentication information and try again. - + There is already an active session using this user name. Please close that session first and re-login. S tímto uživatelským jménem jste již připojeni. Přerušte spojení a znovu se přihlašte. - - + + You are banned until %1. - - + + You are banned indefinitely. - + This server requires user registration. Do you want to register now? - + + This server requires client ID's. Your client is either failing to generate an ID or you are running a modified client. +Please close and reopen your client to try again. + + + + + An internal error has occurred, please try closing and reopening your client and try again. If the error persists try updating your client to the most recent build and if need be contact your software provider. + + + + Account activation - - Your account has not been activated yet. - You need to provide the activation token received in the activation email - - - - - + Unknown login error: %1 - + + + +This usually means that your client version is out of date, and the server sent a reply your client doesn't understand. + + + + Your username must respect these rules: - + is %1 - %2 characters long - + can %1 contain lowercase characters - - - - + + + + NOT - + can %1 contain uppercase characters - + can %1 contain numeric characters - + can contain the following punctuation: %1 - + first character can %1 be a punctuation mark - + You may only use A-Z, a-z, 0-9, _, ., and - in your username. - - - - - + + + + + Registration denied - + Registration is currently disabled on this server - + There is already an existing account with the same user name. - + It's mandatory to specify a valid email address when registering. - + Too many registration attempts from your IP address. - + Password too short. - + Registration failed for a technical problem on the server. - + + Unknown registration error: %1 + + + + Account activation failed - + Socket error: %1 Chyba socketu: %1 - + 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. Snažíte se připojit na zastaralý server. Prosíme, stáhněte si nižší verzi Cockatrice, nebo se připojte k odpovídajícímu serveru. Lokální verze je %1, verze serveru je %2. - + Your Cockatrice client is obsolete. Please update your Cockatrice version. Local version is %1, remote version is %2. Váš klient je zastaralý. Prosíme, aktualizujte Cockatrice na vyšší verzi. Lokální verze je %1, verze serveru je %2. - + Connecting to %1... Připojování k %1... - + Registering to %1 as %2... - + Disconnected Odpojeno - + Connected, logging in at %1 - - Logged in as %1 at %2 - - - - + &Connect... &Připojit... - + &Disconnect &Odpojit - + Start &local game... Spustit &lokální hru... - + &Watch replay... - + &Deck editor &Editor balíčků - + &Full screen &Celá obrazovka - + &Register to server... - + &Settings... &Nastavení... - - + + &Exit &Konec - + A&ctions - + &Cockatrice &Cockatrice - + &About Cockatrice &O Cockatrice - + &Help &Nápověda - + Check for card updates... - + A card database update is already running. - + Unable to run the card database updater: - + The card database updater exited with an error: %1 - + Update completed successfully. Cockatrice will now reload the card database. - - + + Your client appears to be missing features that the server supports. +This usually means that your client version is out of date, please check to see if there is a new client available for download. + + + + + + Information - + Troubleshooting - + F.A.Q. - + + Your account has not been activated yet. +You need to provide the activation token received in the activation email + + + + failed to start. - + crashed. - + timed out. - + write error. - + read error. - + unknown error. @@ -3457,62 +3563,74 @@ Lokální verze je %1, verze serveru je %2. MessagesSettingsPage - + Chat settings - + + Custom alert words + + + + Enable chat mentions - + + Enable mention completer + + + + In-game message macros - - Ignore unregistered users in main chat + + Ignore chat room messages sent by unregistered users - - Ignore chat room messages sent by unregistered users. + + Ignore private messages sent by unregistered users - - Ignore private messages sent by unregistered users. + + Enable desktop notifications for private messages - + + Separate words with a space, alphanumeric characters only + + + + + Invert text color - - Enable desktop notifications for private messages. - - - - + Enable desktop notification for mentions. - + + (Color is hexadecimal) - + Add message Přidat zprávu - + Message: Zpráva: @@ -3578,435 +3696,435 @@ Lokální verze je %1, verze serveru je %2. Player - + &View library &Zobrazit knihovnu - + Move top cards to &graveyard... Přesunout vrchní karty do &hřbitova... - + View &top cards of library... Zobrazit &vrchní karty knihovny... - + &View graveyard &Zobrazit hřbitov - + &View sideboard &Zobrazit sideboard - + Player "%1" Hráč "%1" - - - - + + + + &Hand &Ruka - + &Reveal hand to... - + Reveal r&andom card to... - + &Library &Knihovna - - - - + + + + &Graveyard &Hřbitov - + &Sideboard &Sideboard - + Red - + Yellow - + Green - + View top cards of library Zobrazit vrchní karty knihovny - + Number of cards: Počet karet: - + &Draw card &Líznout kartu - + Reveal top cards of library - + Number of cards: (max. %1) - + &View exile &Zobrazit exilnuté karty - - - - + + + + &Exile &Exilnuté karty - + Reveal t&op cards to... - + D&raw cards... L&íznout karty... - + Take &mulligan &Mulliganovat - + &Shuffle &Zamíchat - + &Counters &Žetony - + &Untap all permanents &Odtapnout všechny permanenty - + R&oll die... H&odit kostkou... - + &Create token... &Vytvořit token... - + C&reate another token V&ytvořit další token - + S&ay &Chat - + &Move hand to... - - - - + + + + &Top of library - - - - + + + + &Bottom of library - + &Move graveyard to... - + &Move exile to... - + Reveal &library to... - + &Always reveal top card - + O&pen deck in deck editor - + &Undo last draw &Vrátit zpět poslední líznutí - + Play top card &face down - + Move top cards to &exile... &Exilnout vrchní karty... - + Put top card on &bottom Dát kartu na &spodek - + Put bottom card &in graveyard - + Cr&eate predefined token - + C&ard K&arta - + &All players &Všem hráčům - + &Play - + &Hide - + Play &Face Down - + &Tap - + &Untap - + Toggle &normal untapping - + &Flip - + &Peek at card face - + &Clone - + Attac&h to card... - + Unattac&h - + &Draw arrow... - + &Increase power - + &Decrease power - + I&ncrease toughness - + D&ecrease toughness - + In&crease power and toughness - + Dec&rease power and toughness - + Set &power and toughness... - + &Set annotation... - + &Add counter (%1) - + &Remove counter (%1) - + &Set counters (%1)... - + Draw cards Líznout karty - - - - + + + + Number: Počet: - + Move top cards to grave Přesunout vrchní karty do hřbitova - + Move top cards to exile Exilnout vrchní karty - + Roll die Hodit kostkou - + Number of sides: Počet stran: - + Set power/toughness Nastavit sílu/odolnost - + Please enter the new PT: Vložte novou odolnost/sílu: - + Set annotation Nastavit poznámku - + Please enter the new annotation: Vložte novou poznámku: - + Set counters Nastavit žetony - + Cr&eate related card @@ -4014,37 +4132,37 @@ Lokální verze je %1, verze serveru je %2. QMenuBar - + Services - + Hide %1 - + Hide Others - + Show All - + Preferences... - + Quit %1 - + About %1 @@ -4052,7 +4170,7 @@ Lokální verze je %1, verze serveru je %2. QObject - + Cockatrice replays (*.cor) @@ -4121,35 +4239,64 @@ Lokální verze je %1, verze serveru je %2. RoomSelector - + Rooms Místnosti - + Joi&n &Připojit - + Room Místnost - + Description Popis - + + Permissions + + + + Players Hráči - + Games Hry + + + + Error + + + + + You do not have the proper permission to join this room. + + + + + Failed to join the room due to an unknown error. + + + + + SequenceEdit + + + Shortcut already in use + + SetsModel @@ -4200,37 +4347,37 @@ Lokální verze je %1, verze serveru je %2. SoundSettingsPage - + Choose path - + Enable &sounds - + Path to sounds directory: - + Test system sound engine - + Sound settings - + Master volume requires QT5 - + Master volume @@ -4286,184 +4433,219 @@ Lokální verze je %1, verze serveru je %2. TabDeckEditor - + &Print deck... - + &Close - + &Edit sets... - + Filters - + &Clear all filters - + Delete selected - + Deck &name: - + &Comments: - + Hash: - + &New deck - + &Load deck... - + &Save deck - + Save deck &as... - + Load deck from cl&ipboard... - + Save deck to clip&board - + &Analyze deck on deckstats.net - + Open custom image folder - + + Open custom sets folder + + + + Add card to &maindeck - + Add card to &sideboard - + &Deck Editor - + C&ard Database - + + Show/Hide card information + + + + + Show/Hide deck + + + + + Show/Hide filters + + + + + Reset layout + + + + + Card Info + + + + + Deck + + + + Welcome - + Hi! It seems like you're running this version of Cockatrice for the first time. All the sets in the card database have been enabled. Read more about changing the set order or disabling specific sets and consequent effects in the "Edit Sets" window. - + &Remove row - + &Increment number - + &Decrement number - + Edit &tokens... - + Deck: %1 - + Are you sure? - + The decklist has been modified. Do you want to save the changes? - + Load deck - - - + + + Error - + The deck could not be saved. - - + + The deck could not be saved. Please check that the directory is writable and try again. - + Save deck @@ -4561,97 +4743,97 @@ Prosím vložte jméno: TabGame - + &Phases &Fáze - + &Game &Hra - + Next &phase Další &fáze - + Next &turn Další &kolo - + &Remove all local arrows &Odstranit všechny lokální šipky - + Rotate View Cl&ockwise - + Rotate View Co&unterclockwise - + Game &information - + &Concede &Ukončit hru - + &Leave game &Opustit hru - + C&lose replay - + &Say: &Chat: - + Concede Ukončit hru - + Are you sure you want to concede this game? Opravdu chcete ukončit tuto hru? - + Leave game Opustit hru - + Are you sure you want to leave this game? Opravdu chcete opustit tuto hru? - + You are flooding the game. Please wait a couple of seconds. - + You have been kicked out of the game. - + REPLAY @@ -4757,47 +4939,47 @@ Prosím vložte jméno: TabRoom - + &Say: &Chat: - + Chat Chatovat - + &Room &Místnost - + &Leave room &Opustit místnost - + &Clear chat - + Chat Settings... - + mentioned you. - + Click to view - + You are flooding the chat. Please wait a couple of seconds. Píšete příliš intenzivně. Počkejte pár sekund. @@ -4813,15 +4995,25 @@ Prosím vložte jméno: TabSupervisor - + Are you sure? - + There are still open games. Are you sure you want to quit? + + + Promotion + + + + + You have been promoted to moderator. Please log out and back in for changes to take effect. + + TabUserLists @@ -4844,55 +5036,97 @@ Prosím vložte jméno: UserContextMenu - + User &details - + Private &chat - + Show this user's &games - + Add to &buddy list - + Remove from &buddy list - + Add to &ignore list - + Remove from &ignore list - + Kick from &game - + Ban from &server - + + &Promote user to moderator + + + + + Dem&ote user from moderator + + + + %1's games + + + + Success + + + + + Successfully promoted user. + + + + + Successfully demoted user. + + + + + + Failed + + + + + Failed to promote user. + + + + + Failed to demote user. + + UserInfoBox @@ -5061,42 +5295,42 @@ Prosím vložte jméno: UserInterfaceSettingsPage - + General interface settings Obecné - + Enable notifications in taskbar - + Notify in the taskbar for game events while you are spectating - + &Double-click cards to play them (instead of single-click) &Pro zahraní karty je třeba dvojklik - + &Play all nonlands onto the stack (not the battlefield) by default - + Annotate card text on tokens - + Animation settings Animace - + &Tap/untap animation &Animace tapnutí/odtapnutí @@ -5104,22 +5338,22 @@ Prosím vložte jméno: UserList - + Users connected to server: %1 - + Users in this room: %1 Uživatelů v této místnosti: %1 - + Buddies online: %1 / %2 Přátelé online: %1 / %2 - + Ignored users online: %1 / %2 Ignorovaných online: %1 / %2 @@ -5178,7 +5412,7 @@ Prosím vložte jméno: - Disabled sets will still be used for loading images + Disabled sets will be used for loading images only if all the enabled sets failed @@ -5187,12 +5421,12 @@ Prosím vložte jméno: Upravit edice - + Success - + The sets database has been saved successfully. @@ -5220,4 +5454,561 @@ Prosím vložte jméno: + + shortcutsTab + + + Form + + + + + Main Window + + + + + Deck editor + + + + + Local gameplay + + + + + Watch replay + + + + + Connect + + + + + Register + + + + + Full screen + + + + + Settings + + + + + Check for card updates + + + + + Exit + + + + + Deck Editor + + + + + Analyze deck + + + + + Load deck (clipboard) + + + + + Clerar all filters + + + + + New deck + + + + + Clear one filter + + + + + Open custom folder + + + + + Close + + + + + Print deck + + + + + Edit sets + + + + + Delete card + + + + + Edit tokens + + + + + Reset layout + + + + + Add card + + + + + Save deck + + + + + Remove card + + + + + Save deck as + + + + + Load deck + + + + + Save deck (clipboard) + + + + + + Counters + + + + + Life + + + + + + + + + Set + + + + + + + + Add + + + + + + + + Remove + + + + + Red + + + + + Green + + + + + Yellow + + + + + Mainwindow / Deck editor + + + + + Power / toughness + + + + + Power and toughness + + + + + Add (+1/+1) + + + + + Remove (-1/-1) + + + + + Toughness + + + + + Remove (-0/-1) + + + + + Add (+0/+1) + + + + + Power + + + + + Remove (-1/-0) + + + + + Add (+1/+0) + + + + + Game Phases + + + + + Untap + + + + + Disconnect + + + + + Upkeep + + + + + + Draw + + + + + Main 1 + + + + + Start combat + + + + + Attack + + + + + Block + + + + + Damage + + + + + End combat + + + + + Main 2 + + + + + End + + + + + Next phase + + + + + Next turn + + + + + Player + + + + + Tap Card + + + + + Untap Card + + + + + Untap all + + + + + Toogle untap + + + + + Flip card + + + + + Peek card + + + + + Play card + + + + + Attach card + + + + + Unattach card + + + + + Clone card + + + + + Create token + + + + + Create another token + + + + + Set annotation + + + + + Phases / P/T / Player + + + + + Move card to + + + + + Bottom library + + + + + Top library + + + + + + Graveyard + + + + + + Exile + + + + + Hand + + + + + View + + + + + Library + + + + + Tops card of library + + + + + Sideboard + + + + + Close recent view + + + + + Pre-play + + + + + Load remote deck + + + + + Load local deck + + + + + Game play + + + + + Draw arrow + + + + + Leave game + + + + + Remove local arrows + + + + + Concede + + + + + Roll dice + + + + + Rotate view CW + + + + + Shuffle library + + + + + Rotate view CCW + + + + + Mulligan + + + + + Draw card + + + + + Draw cards + + + + + Undo draw + + + + + Always reveal top card + + + + + Draw / Move / View / Game play + + + \ No newline at end of file diff --git a/cockatrice/translations/cockatrice_de.ts b/cockatrice/translations/cockatrice_de.ts index ae860081..14223a22 100644 --- a/cockatrice/translations/cockatrice_de.ts +++ b/cockatrice/translations/cockatrice_de.ts @@ -2,17 +2,17 @@ AbstractCounter - + &Set counter... - Marken &setzen (%1)... + Marken &setzen... - + Set counter Zähler setzen - + New value for counter '%1': Neuer Wert für den Zähler: '%1' @@ -20,89 +20,60 @@ AppearanceSettingsPage - - Zone background pictures - Hintergrundbilder für Kartenzonen + + Theme settings + - - Hand background: - Hintergrund für die Hand: + + Current theme: + - - Stack background: - Hintergrund für den Stapel: - - - - Table background: - Hintergrund für das Spielfeld: - - - - Player info background: - Hintergrund für die Spielerinfo: - - - - Card back: - Kartenrückseite: - - - + Card rendering Kartendarstellung - + Display card names on cards having a picture Kartennamen darstellen auch bei Karten, die Bilder haben - + Scale cards on mouse over Karten beim Darüberfahren mit der Maus vergrößern - + Hand layout Handdarstellung - + Display hand horizontally (wastes space) Hand horizontal anzeigen (verschwendet Platz) - + Enable left justification Linksbündige Ausrichtung aktivieren - + Table grid layout Spielfeldraster - + Invert vertical coordinate Vertikale Koordinate umkehren - + Minimum player count for multi-column layout: Mindestspieleranzahl für mehrspaltige Anordnung: - - - - - - - Choose path - Dateipfad auswählen - BanDialog @@ -117,87 +88,110 @@ &IP-Adresse - + + ban client I&D + Client I&D bannen + + + Ban type Art des Banns - + &permanent ban &permanenter Bann - + &temporary ban &temporärer Bann - + &Days: &Tage: - + &Hours: &Stunden: - + &Minutes: &Minuten: - + Duration of the ban Länge des Banns - + Please enter the reason for the ban. This is only saved for moderators and cannot be seen by the banned person. Bitte geben Sie den Grund für den Bann ein. Dies wird nur für Moderatoren gespeichert und kann von der gebannten Person nicht gesehen werden. - + Please enter the reason for the ban that will be visible to the banned person. Bitte geben Sie den Grund ein, den die gebannte Person sehen kann. - + &OK &OK - + &Cancel &Abbrechen - + Ban user from server Benutzer vom Server bannen - + + + + Error Fehler - - You have to select a name-based or IP-based ban, or both. - Bitte wählen Sie einen Namens- oder Adressbann. + + You have to select a name-based, IP-based, clientId based, or some combination of the three to place a ban. + Bitte wählen Sie einen Namens-, Adress- oder Client-ID-Bann oder eine Kombination aus diesen. + + + + You must have a value in the name ban when selecting the name ban checkbox. + + + + + You must have a value in the ip ban when selecting the ip ban checkbox. + + + + + You must have a value in the clientid ban when selecting the clientid ban checkbox. + CardDatabase - + New sets found Neue Editionen gefunden - + %1 new set(s) have been found in the card database. Do you want to enable them? %1 neue Edition(en) wurden in der Kartendatenbank gefunden. Sollen diese aktiviert werden? @@ -233,17 +227,17 @@ Dies wird nur für Moderatoren gespeichert und kann von der gebannten Person nic CardFrame - + Image Bild - + Description Beschreibung - + Both Beide @@ -263,7 +257,7 @@ Dies wird nur für Moderatoren gespeichert und kann von der gebannten Person nic Color(s): - + Farbe(n): @@ -299,27 +293,32 @@ Dies wird nur für Moderatoren gespeichert und kann von der gebannten Person nic Alles anzeigen - + Name: Name: - + Mana cost: Manakosten: - + + Color(s): + Farbe(n) + + + Card type: Kartentyp: - + P / T: S/W: - + Loyalty: Loyalität: @@ -583,12 +582,12 @@ Dies wird nur für Moderatoren gespeichert und kann von der gebannten Person nic DeckEditorSettingsPage - + Nothing is here... yet Hier gibt es noch nichts. - + General Allgemeines @@ -596,17 +595,17 @@ Dies wird nur für Moderatoren gespeichert und kann von der gebannten Person nic DeckListModel - + Number Nummer - + Card Karte - + Price Preis @@ -628,42 +627,42 @@ Dies wird nur für Moderatoren gespeichert und kann von der gebannten Person nic DeckViewContainer - + Load local deck - + Lokales Deck laden - + Load deck from server - + Deck von Server laden - + Ready to s&tart Bereit zum S&tarten - + S&ideboard unlocked S&ideboard entsperrt - + S&ideboard locked S&ideboard gesperrt - + Load deck Deck laden - + Error Fehler - + The selected file could not be loaded. Die gewählte Datei konnte nicht geladen werden. @@ -709,37 +708,52 @@ Dies wird nur für Moderatoren gespeichert und kann von der gebannten Person nic DlgConnect - + + Previous Host + Vorheriger Host + + + + New Host + Neuer Host + + + &Host: &Server: - + + Enter host name + Host-Name eingeben + + + &Port: &Port: - + Player &name: Spieler&name: - + P&assword: P&asswort: - + &Save password Passwort &speichern - + A&uto connect at start beim Start automatisch verbinden - + Connect to server Verbinde zum Server @@ -747,82 +761,92 @@ Dies wird nur für Moderatoren gespeichert und kann von der gebannten Person nic DlgCreateGame - + &Description: &Beschreibung: - + &Password: &Passwort: - + P&layers: &Spieler: - + + Re&member settings + + + + Game type Spieltyp - + Only &buddies can join Nur &Freunde können teilnehmen - + Only &registered users can join Nur &registrierte Benutzer können teilnehmen - + Joining restrictions Teilnahmebedingungen - + &Spectators can watch Zuschauer erlauben - + Spectators &need a password to watch Zuschauer benötigen das Passwort - + Spectators can see &hands Zuschauer sehen die Hände - + Spectators can &chat Zuschauer können &chatten - + Spectators Zuschauer - + + &Clear + Löschen + + + Create game Spiel erstellen - + Game information &Spielinformationen - + Error Fehler - + Server error. Serverfehler. @@ -926,71 +950,72 @@ Dies wird nur für Moderatoren gespeichert und kann von der gebannten Person nic No image chosen. - + Kein Bild gewählt. To change your avatar, choose a new image. To remove your current avatar, confirm without choosing a new image. - + Um deinen Avatar zu wechseln, wähle ein neues Bild. +Um deinen derzeitigen Avatar zu entfernen, bestätige, ohne ein neues Bild zu wählen. Browse... - + Durchsuchen... Change avatar - + Avatar wechseln Open Image - + Bild öffnen Image Files (*.png *.jpg *.bmp) - + Bild-Dateien (*.png *.jpg *.bmp) Invalid image chosen. - + Ungültiges Bild gewählt. DlgEditPassword - + Old password: - + Altes Passwort: - + New password: - + Neues Passwort: - + Confirm new password: - + Bestätige neues Passwort: - + Change password - + Passwort ändern - + Error - + Fehler - + The new passwords don't match. - + Die neuen Passwörter stimmen nicht überein. @@ -1092,95 +1117,95 @@ Aktivieren Sie die Edition „TK“ im „Editionen bearbeiten...“-Menu, damit DlgEditUser - + Email: - + Email: - + Pronouns: - + Pronomen: + + + + Neutral + Neutrum - Neutral - + Masculine + Maskulinum - Masculine - - - - Feminine - + Femininum - + Country: - + Land: - + Undefined - + Undefiniert - + Real name: - + Wahrer Name: - + Edit user profile - + Benutzerprofil bearbeiten DlgFilterGames - + Show &unavailable games &Nicht verfügbare Spiele zeigen - + Show &password protected games &passwortgeschützte Spiele anzeigen - + Game &description: &Spielbeschreibung: - + &Creator name: &Name des Erstellers: - + &Game types Spiel&typen - + at &least: &mindestens: - + at &most: &höchstens: - + Maximum player count Maximale Spielerzahl - + Filter games Spiele filtern @@ -1188,7 +1213,7 @@ Aktivieren Sie die Edition „TK“ im „Editionen bearbeiten...“-Menu, damit DlgLoadDeckFromClipboard - + &Refresh &Aktualisieren @@ -1198,14 +1223,14 @@ Aktivieren Sie die Edition „TK“ im „Editionen bearbeiten...“-Menu, damit Deck aus der Zwischenablage laden - - + + Error Fehler - - + + Invalid deck list. Ungültige Deckliste. @@ -1221,67 +1246,93 @@ Aktivieren Sie die Edition „TK“ im „Editionen bearbeiten...“-Menu, damit DlgRegister - + &Host: - + &Host: - + &Port: - + &Port: - + Player &name: Spieler &Name: - + P&assword: P&asswort - + + Password (again): + Passwort (Wiederholung) + + + Email: Email: - + + Email (again): + Email (Wiederholung) + + + Pronouns: - + Pronomen: - + Neutral - + Neutrum - + Masculine - - - - - Feminine - + Maskulinum + Feminine + Femininum + + + Undefined Undefiniert - + + + Registration Warning + Registrierungswarnung + + + + Your passwords do not match, please try again. + Ihre Passwörter stimmen nicht überein, bitte versuchen Sie es erneut. + + + + Your email addresses do not match, please try again. + Ihre Mailadressen stimmen nicht überein, bitte versuchen Sie es erneut. + + + Country: Land: - + Real name: Wahrer Name: - + Register to server Auf Server registrieren @@ -1289,19 +1340,19 @@ Aktivieren Sie die Edition „TK“ im „Editionen bearbeiten...“-Menu, damit DlgSettings - - - + + + Error Fehler - + Unknown Error loading card database Unbekannter Fehler beim Laden der Kartendatenbank - + Your card database is invalid. Cockatrice may not function correctly with an invalid database @@ -1318,7 +1369,7 @@ Sie müssen Oracle unter Umständen nochmals ausführen um Ihre Kartendatenbank Möchten Sie Ihren Speicherort der Datenbank aktualisieren?? - + Your card database version is too old. This can cause problems loading card information or images @@ -1335,7 +1386,7 @@ Normalerweise kann dies durch einen erneuten Start von Oracle, um die Kartendate Möchten Sie Ihren Speicherort der Datenbank aktualisieren? - + File Error loading your card database. Would you like to change your database location setting? @@ -1344,7 +1395,7 @@ Would you like to change your database location setting? Möchten Sie Ihren Speicherort der Datenbank aktualisieren? - + Your card database was loaded but contains no cards. Would you like to change your database location setting? @@ -1353,7 +1404,7 @@ Would you like to change your database location setting? Möchten Sie Ihren Speicherort der Datenbank aktualisieren? - + Your card database did not finish loading Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues with your cards.xml attached @@ -1366,7 +1417,7 @@ Bitte erstellen Sie ein Ticket auf http://github.com/Cockatrice/Cockatrice/issue Möchten Sie Ihren Speicherort der Datenbank aktualisieren? - + Unknown card database load status Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues @@ -1379,50 +1430,55 @@ Bitte erstellen Sie ein Ticket auf http://github.com/Cockatrice/Cockatrice/issue Möchten Sie Ihren Speicherort der Datenbank aktualisieren? - + The path to your deck directory is invalid. Would you like to go back and set the correct path? Der Pfad zu Ihrem Deckordner ist ungültig. Möchten Sie zurückgehen und den korrekten Pfad einstellen? - + The path to your card pictures directory is invalid. Would you like to go back and set the correct path? Der Pfad zu Ihrem Kartenbilderordner ist ungültig. Möchten Sie zurückgehen und den korrekten Pfad einstellen? - + Settings Einstellungen - + General Allgemeines - + Appearance Erscheinungsbild - + User Interface Benutzeroberfläche - + Deck Editor Deckeditor - + Chat Chat - + Sound Töne + + + Shortcuts + Shortcuts + GameSelector @@ -1435,7 +1491,7 @@ Möchten Sie Ihren Speicherort der Datenbank aktualisieren? - + Error Fehler @@ -1480,47 +1536,47 @@ Möchten Sie Ihren Speicherort der Datenbank aktualisieren? Der Ersteller dieses Spiels ignoriert Sie. - + Join game Spiel beitreten - + Password: Passwort: - + Please join the respective room first. Bitte betreten Sie zuerst den entsprechenden Raum. - + Games Spiele + + + &Filter games + Spiele &filtern + - Filter games - + C&lear filter + Filter &zurücksetzen - Clear filter - + C&reate + E&rstellen - - Create - + + &Join + &Beitreten - - Join - - - - + J&oin as spectator Als Zuschauer beitreten @@ -1637,107 +1693,112 @@ Möchten Sie Ihren Speicherort der Datenbank aktualisieren? GeneralSettingsPage - + Reset/Clear Downloaded Pictures Heruntergeladene Kartenbilder zurücksetzen/löschen - - - - - + + + + + Choose path Pfad auswählen - + Success Erfolgreich - + Downloaded card pictures have been reset. Heruntergeladene Kartenbilder wurden zurückgesetzt. - + Error Fehler - + One or more downloaded card pictures could not be cleared. Mindestens ein heruntergeladenes Kartenbild konnte nicht gelöscht werden. - + Personal settings Persönliche Einstellungen - + Language: Sprache: - + Download card pictures on the fly Kartenbilder dynamisch herunterladen - + Download card pictures from a custom URL - Kartenbilder von einer alternativen URL herunterladen + Kartenbilder von einer benutzerdefinierten URL herunterladen - + Custom Card Download URL: - Alternative Karten-Download-URL + Benutzerdefinierte Karten-Download-URL - + Linking FAQ + Linking FAQ + + + + Notify when new client features are available - + Paths Pfade - + Decks directory: Verzeichnis mit Decklisten: - + Replays directory: Verzeichnis mit aufgezeichneten Spielen: - + Pictures directory: Verzeichnis mit Bilddateien: - + Card database: Kartendatenbank: - + Token database: Spielsteindatenbank: - + Picture cache size: Cachegröße für Bilder: - - + + English Deutsch (German) @@ -1745,49 +1806,49 @@ Möchten Sie Ihren Speicherort der Datenbank aktualisieren? MainWindow - + There are too many concurrent connections from your address. Es gibt zu viele gleichzeitige Verbindungen von Ihrer Adresse. - + Scheduled server shutdown. Planmäßige Serverabschaltung. - + Banned by moderator Gebannt von einem Moderator - + Expected end time: %1 Voraussichtliches Ende: %1 - + This ban lasts indefinitely. Dieser Bann ist unbefristet. - + Connection closed Verbindung geschlossen - + The server has terminated your connection. Reason: %1 Der Server hat Ihre Verbindung beendet. Grund: %1 - + Scheduled server shutdown Planmäßige Serverabschaltung - + The server is going to be restarted in %n minute(s). All running games will be lost. Reason for shutdown: %1 @@ -1798,455 +1859,503 @@ Alle laufenden Spiele werden beendet. Grund für die Abschaltung: %1 - + Number of players Spieleranzahl - + Please enter the number of players. Bitte die Spieleranzahl eingeben: - - + + Player %1 Spieler %1 - + Load replay Aufgezeichnetes Spiel laden - + About Cockatrice Über Cockatrice - + Version %1 Version %1 - + Translators: Übersetzer: - + Project Manager: Projektmanager: - - - Invalid username. - + + The server has reached its maximum user capacity, please check back later. + Der Server hat seine maximale Benutzeranzahl erreicht. Bitte versuchen Sie es später noch einmal. - - + + + Invalid username. + Ungültiger Benutzername. + + + + You have been logged out due to logging in at another location. + Sie wurden abgemeldet, da Sie sich an einer anderen Stelle angemeldet haben. + + + + Success Erfolgreich - + Registration accepted. Will now login. Registrierung angenommen. Login läuft. - + Account activation accepted. Will now login. Accountaktivierung angenommen. Login läuft. - + Past Project Managers: frühere Projektmanager: - + Developers: Entwickler: - + Our Developers unsere Entwickler - + Help Develop! Hilf bei der Entwicklung! - + Recognition Page Anerkennungsseite - + Help Translate! Hilf bei der Übersetzung! - + Support: Unterstützung: - + Report an Issue Problem melden - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + Error Fehler - + Server timeout Server Zeitüberschreitung - + + Failed Login + + + + + Your client does not support features that the server requires, please update your client and try again. + + + + Incorrect username or password. Please check your authentication information and try again. Falscher Benutzername oder Passwort. Bitte überprüfe deine Login Informationen und versuche es erneut. - + There is already an active session using this user name. Please close that session first and re-login. Es gibt bereits eine aktive Verbindung mit diesem Benutzernamen. Bitte schließen Sie diese Verbindung zuerst und versuchen Sie es dann erneut. - - + + You are banned until %1. Sie sind gebannt bis: %1. - - + + You are banned indefinitely. Sie sind auf unbestimmte Zeit gebannt. - + This server requires user registration. Do you want to register now? Diese Server benötigt eine Benutzerregistrierung. Möchten Sie sich jetzt registrieren? - + + This server requires client ID's. Your client is either failing to generate an ID or you are running a modified client. +Please close and reopen your client to try again. + Diese Server erfordert eine Client-ID. Enweder schlägt das Generieren einer ID ihres Clients fehl, oder Sie verwenden einen modifizierten Client. +Schließen Sie bitte Ihren Client und öffnen Sie ihn erneut. + + + + An internal error has occurred, please try closing and reopening your client and try again. If the error persists try updating your client to the most recent build and if need be contact your software provider. + Ein interner Fehler ist aufgetreten. Schließen Sie bitte Ihren Client, öffnen Sie ihn erneut und versuchen Sie es noch einmal. Falls der Fehler bestehen bleibt, aktualisieren Sie Ihren Client auf den aktuellsten Stand und kontaktieren Sie Ihren Software Provider. + + + Account activation Accountaktivierung - - Your account has not been activated yet. - You need to provide the activation token received in the activation email - Ihr Account wurde noch nicht aktiviert. -Sie müssen den Aktivierungstoken aus der Aktivierungsemail verwenden - - - - + Unknown login error: %1 Unbekannter Login-Fehler: %1 - + + + +This usually means that your client version is out of date, and the server sent a reply your client doesn't understand. + +Dies bedeutet normalerweise, dass Ihre Clientversion veraltet ist und der Server eine Antwort geschickt hat, die Ihr Client nicht versteht. + + + Your username must respect these rules: - + Ihr Benutzername muss diesen Regeln entsprechen: - + is %1 - %2 characters long - + %1 - %2 Zeichen lang - + can %1 contain lowercase characters - + kann %1 Kleinbuchstaben beinhalten - - - - + + + + NOT - - - - - can %1 contain uppercase characters - - - - - can %1 contain numeric characters - - - - - can contain the following punctuation: %1 - - - - - first character can %1 be a punctuation mark - - - - - You may only use A-Z, a-z, 0-9, _, ., and - in your username. - + NICHT - - - - + can %1 contain uppercase characters + kann %1 Großbuchstaben beinhalten + + + + can %1 contain numeric characters + kann %1 Zahlen beinhalten + + + + can contain the following punctuation: %1 + kann folgende Sonderzeichen beinhalten: %1 + + + + first character can %1 be a punctuation mark + Das erste Zeichen kann %1 ein Sonderzeichen sein + + + + You may only use A-Z, a-z, 0-9, _, ., and - in your username. + Sie können nur A-Z, a-z, 0-9, _, ., und - in Ihrem Benutzernamen verwenden. + + + + + + + Registration denied Registrierung verweigert - + Registration is currently disabled on this server Momentan ist die Registrierung auf diesem Server deaktiviert - + There is already an existing account with the same user name. Es existiert bereits ein Account mit dem gleichen Benutzernamen. - + It's mandatory to specify a valid email address when registering. Es ist erforderlich, eine korrekte Emailadresse während der Registrierung anzugeben. - + Too many registration attempts from your IP address. Zu viele Registrierungsversuche von Ihrer IP-Adresse. - + Password too short. Passwort zu kurz. - + Registration failed for a technical problem on the server. Registrierung aufgrund eines technischen Problems des Servers fehlgeschlagen. - + + Unknown registration error: %1 + Unbekannter Registrierungsfehler: %1 + + + Account activation failed Accountaktivierung fehlgeschlagen - + Socket error: %1 Netzwerkfehler: %1 - + 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. 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. - + Your Cockatrice client is obsolete. Please update your Cockatrice version. Local version is %1, remote version is %2. Ihr Cockatrice-Client ist veraltet. Bitte laden Sie sich die neueste Version herunter. Lokale Version ist %1, Serverversion ist %2. - + Connecting to %1... Verbinde zu %1... - + Registering to %1 as %2... Registrierung bei %1 als %2... - + Disconnected nicht verbunden - + Connected, logging in at %1 Verbunden, Anmeldung bei %1 - - Logged in as %1 at %2 - Angemeldet als %1 bei %2 - - - + &Connect... &Verbinden... - + &Disconnect Verbindung &trennen - + Start &local game... &Lokales Spiel starten... - + &Watch replay... &Aufgezeichnetes Spiel abspielen... - + &Deck editor &Deck-Editor - + &Full screen &Vollbild - + &Register to server... Beim Server &registrieren... - + &Settings... &Einstellungen... - - + + &Exit &Beenden - + A&ctions Aktionen - + &Cockatrice &Cockatrice - + &About Cockatrice &Über Cockatrice - + &Help &Hilfe - + Check for card updates... Nach Kartenaktualisierungen suchen... - + A card database update is already running. Eine Datenbankaktualisierung wird bereits durchgeführt. - + Unable to run the card database updater: Kartendatenbankaktualisierung nicht ausführbar: - + The card database updater exited with an error: %1 Die Kartendatenbankaktualisierung brach mit einem Fehler ab: %1 - + Update completed successfully. Cockatrice will now reload the card database. Aktualisierung erfolgreich abgeschlossen. Kartendatenbank wird neu geladen. - - + + Your client appears to be missing features that the server supports. +This usually means that your client version is out of date, please check to see if there is a new client available for download. + + + + + + Information Information - + Troubleshooting - + Fehlersuche - + F.A.Q. - + F.A.Q. - + + Your account has not been activated yet. +You need to provide the activation token received in the activation email + Ihr Account wurde noch nicht aktiviert. +Sie müssen den Aktivierungstoken aus der Aktivierungsemail verwenden + + + failed to start. Start fehlgeschlagen. - + crashed. abgestürzt. - + timed out. Zeitüberschreitung. - + write error. Fehler beim Schreiben. - + read error. Fehler beim Lesen. - + unknown error. Unbekannter Fehler. @@ -3486,62 +3595,74 @@ Lokale Version ist %1, Serverversion ist %2. MessagesSettingsPage - + Chat settings Chat Einstellungen - + + Custom alert words + Benutzerdifinierte Warnungen + + + Enable chat mentions Chat Erwähnungen aktivieren - + + Enable mention completer + Autovervollständigung aktivieren + + + In-game message macros Makros für Nachrichten in Spielen - - Ignore unregistered users in main chat - Ignoriere unregistrierte Benutzer im Hauptchat + + Ignore chat room messages sent by unregistered users + Ignoriere Nachrichten von unregistrierten Benutzern im Chatroom. - - Ignore chat room messages sent by unregistered users. - Ignoriere Nachrichten von unregistrierten Benutzern in Räumen. - - - - Ignore private messages sent by unregistered users. + + Ignore private messages sent by unregistered users Ignoriere private Nachrichten von unregistrierten Benutzern. - + + Enable desktop notifications for private messages + Desktop Benachrichtigungen für private Nachrichten aktivieren. + + + + Separate words with a space, alphanumeric characters only + Wörter durch Leerzeichen trennen, nur alphanumerische Zeichen verwenden + + + + Invert text color Textfarbe invertieren - - Enable desktop notifications for private messages. - Desktop Benachrichtigungen für private Nachrichten aktivieren. - - - + Enable desktop notification for mentions. Desktop Benachrichtigungen für Erwähnungen aktivieren. - + + (Color is hexadecimal) (Farbcode in hexadezimal) - + Add message Nachricht hinzufügen - + Message: Nachricht: @@ -3607,435 +3728,435 @@ Lokale Version ist %1, Serverversion ist %2. Player - + &View library Bibliothek &ansehen - + Move top cards to &graveyard... Oberste Karten auf den F&riedhof legen... - + View &top cards of library... Oberste Karten der Bibliothek a&nsehen... - + &View graveyard &Zeige Friedhof - + &View sideboard Zeige &Sideboard - + Player "%1" Spieler "%1" - - - - + + + + &Hand &Hand - + &Reveal hand to... Zeige meine Hand... - + Reveal r&andom card to... Zeige eine zufällige Karte... - + &Library Bib&liothek - - - - + + + + &Graveyard &Friedhof - + &Sideboard &Sideboard - + Red Rot - + Yellow Gelb - + Green Grün - + View top cards of library Zeige die obersten Karten der Bibliothek - + Number of cards: Anzahl der Karten: - + &Draw card Karte &ziehen - + Reveal top cards of library Zeige die obersten Karten der Bibliothek - + Number of cards: (max. %1) Anzahl an Karten: (max. %1) - + &View exile &Zeige Exil - - - - + + + + &Exile &Exil - + Reveal t&op cards to... Zeige die obersten Karten... - + D&raw cards... Ka&rten ziehen... - + Take &mulligan &Mulligan nehmen - + &Shuffle Mi&schen - + &Counters &Zähler - + &Untap all permanents &Enttappe alle bleibenden Karten - + R&oll die... &Würfeln... - + &Create token... Spiels&tein erstellen... - + C&reate another token &Noch einen Spielstein erstellen - + S&ay S&agen - + &Move hand to... Lege Handkarten ... - - - - + + + + &Top of library auf die Bibliothek - - - - + + + + &Bottom of library unter die Bibliothek - + &Move graveyard to... Verschiebe Friedhof... - + &Move exile to... Verschiebe Exil... - + Reveal &library to... Zeige Bibliothek... - + &Always reveal top card &Oberste Karte aufgedeckt lassen - + O&pen deck in deck editor Im &Deckeditor öffnen - + &Undo last draw Zuletzt gezogene Karte zur&ücklegen - + Play top card &face down oberste Karte verdeckt spielen - + Move top cards to &exile... Oberste Karten ins &Exil schicken... - + Put top card on &bottom Oberste Karte nach &unten legen - + Put bottom card &in graveyard Lege die unterste Karte in den Friedhof - + Cr&eate predefined token &Vordefinierten Spielstein erstellen - + C&ard &Karte - + &All players &allen Spielern - + &Play &Ausspielen - + &Hide &Verstecken - + Play &Face Down Karte verdeckt spielen - + &Tap &Tappen - + &Untap E&nttappen - + Toggle &normal untapping &Normales Enttappen umschalten - + &Flip &Umdrehen - + &Peek at card face &Vorderseite anschauen - + &Clone &Kopieren - + Attac&h to card... An Karte &anlegen... - + Unattac&h &Von Karte lösen - + &Draw arrow... &Pfeil zeichnen... - + &Increase power &Stärke erhöhen - + &Decrease power S&tärke verringern - + I&ncrease toughness &Widerstandskraft erhöhen - + D&ecrease toughness W&iderstandskraft verringern - + In&crease power and toughness Stärke und Widerstandskraft &erhöhen - + Dec&rease power and toughness Stärke und Widerstandskraft v&erringern - + Set &power and toughness... Stär&ke und Widerstandskraft setzen... - + &Set annotation... &Notiz setzen... - + &Add counter (%1) Marke &hinzufügen (%1) - + &Remove counter (%1) Marke &entfernen (%1) - + &Set counters (%1)... Marken &setzen (%1)... - + Draw cards Karten ziehen - - - - + + + + Number: Anzahl: - + Move top cards to grave Oberste Karten in den Friedhof legen - + Move top cards to exile Oberste Karten ins Exil schicken - + Roll die Würfeln - + Number of sides: Anzahl der Seiten: - + Set power/toughness Stärke und Widerstandskraft setzen - + Please enter the new PT: Bitte die neue Stärke und Widerstandskraft eingeben: - + Set annotation Notiz setzen - + Please enter the new annotation: Bitte die Notiz eingeben: - + Set counters Setze Marken - + Cr&eate related card Zugehörige Karte kr&eieren @@ -4043,37 +4164,37 @@ Lokale Version ist %1, Serverversion ist %2. QMenuBar - + Services Dienste - + Hide %1 %1 ausblenden - + Hide Others Andere ausblenden - + Show All Alle anzeigen - + Preferences... Einstellungen... - + Quit %1 Schließe %1 - + About %1 Über %1 @@ -4081,7 +4202,7 @@ Lokale Version ist %1, Serverversion ist %2. QObject - + Cockatrice replays (*.cor) Aufgezeichnete Cockatrice-Spiele (*.cor) @@ -4150,35 +4271,64 @@ Lokale Version ist %1, Serverversion ist %2. RoomSelector - + Rooms Räume - + Joi&n Teil&nehmen - + Room Raum - + Description Beschreibung - + + Permissions + Berechtigungen + + + Players Spieler - + Games Spiele + + + + Error + Fehler + + + + You do not have the proper permission to join this room. + Sie haben nicht die erforderlichen Berechtigungen, um diesem Raum beizutreten. + + + + Failed to join the room due to an unknown error. + Beitritt in den Raum aufgrund eines unbekannten Fehlers fehlgeschlagen. + + + + SequenceEdit + + + Shortcut already in use + Shortcut wird bereits benutzt + SetsModel @@ -4229,37 +4379,37 @@ Lokale Version ist %1, Serverversion ist %2. SoundSettingsPage - + Choose path Dateipfad auswählen - + Enable &sounds Töne aktivieren - + Path to sounds directory: Pfad zum Verzeichnis mit den Tondateien: - + Test system sound engine Systemsoundeinstellungen testen - + Sound settings Toneinstellungen - + Master volume requires QT5 Masterlautstärke erfordert QT5 - + Master volume Masterlautstärke @@ -4279,7 +4429,7 @@ Lokale Version ist %1, Serverversion ist %2. &Reload configuration - + Konfigu&ration neuladen @@ -4315,117 +4465,152 @@ Lokale Version ist %1, Serverversion ist %2. TabDeckEditor - + &Print deck... Deck &drucken... - + &Close S&chließen - + &Edit sets... &Editionen bearbeiten... - + Filters Filter - + &Clear all filters Alle Filter entfernen - + Delete selected Ausgewählten löschen - + Deck &name: Deck&name: - + &Comments: &Kommentare: - + Hash: Hash: - + &New deck &Neues Deck - + &Load deck... Deck &laden... - + &Save deck Deck &speichern - + Save deck &as... Deck s&peichern unter... - + Load deck from cl&ipboard... Deck aus &Zwischenablage laden... - + Save deck to clip&board Deck in Z&wischenablage speichern - + &Analyze deck on deckstats.net Deck auf deckstats.net &analysieren - + Open custom image folder - Öffne den Ordner für eigene Kartenbilder + Öffne den Ordner für benutzerdefinierte Kartenbilder - + + Open custom sets folder + Öffne den Ordner für benutzerdifinierte Sets + + + Add card to &maindeck Karte zu&m Hauptdeck hinzufügen - + Add card to &sideboard Karte zum &Sideboard hinzufügen - + &Deck Editor &Deckeditor - + C&ard Database &Kartendatenbank - + + Show/Hide card information + Karteninformationen ein-/ausblenden + + + + Show/Hide deck + Deck ein-/ausblenden + + + + Show/Hide filters + Filter ein-/ausblenden + + + + Reset layout + Darstellung zurücksetzen + + + + Card Info + Karteninformationen + + + + Deck + Deck + + + Welcome Willkommen - + Hi! It seems like you're running this version of Cockatrice for the first time. All the sets in the card database have been enabled. Read more about changing the set order or disabling specific sets and consequent effects in the "Edit Sets" window. @@ -4434,69 +4619,69 @@ Alle Editionen der Kartendatenbank wurden aktiviert. Lesen Sie mehr über das Ändern der Editionsreihenfolge oder die Deaktivierung bestimmter Editionen im „Editionen bearbeiten...“-Menu. - + &Remove row Zeile entfe&rnen - + &Increment number Anzahl er&höhen - + &Decrement number Anzahl v&erringern - + Edit &tokens... Spielsteine &bearbeiten... - + Deck: %1 Deck: %1 - + Are you sure? Sind Sie sicher? - + The decklist has been modified. Do you want to save the changes? Die Deckliste wurde verändert. Möchten Sie die Änderungen speichern? - + Load deck Deck laden - - - + + + Error Fehler - + The deck could not be saved. Das Deck konnte nicht gespeichert werden. - - + + The deck could not be saved. Please check that the directory is writable and try again. Das Deck konnte nicht gespeichert werden. Bitte überprüfen Sie, dass Sie Schreibrechte in dem Verzeichnis haben, und versuchen Sie es erneut. - + Save deck Deck speichern @@ -4594,99 +4779,99 @@ Bitte geben Sie einen Namen ein: TabGame - + &Phases &Phasen - + &Game Spi&el - + Next &phase Nächste &Phase - + Next &turn Nächster &Zug - + &Remove all local arrows &Lokale Pfeile entfernen - + Rotate View Cl&ockwise - + Ansicht im Uhrzeigesinn drehen - + Rotate View Co&unterclockwise - + Ansicht gegen den Uhrzeigersinn drehen - + Game &information &Spielinformationen - + &Concede &Aufgeben - + &Leave game Spiel ver&lassen - + C&lose replay Wiederholung sch&ließen - + &Say: &Sagen: - + Concede Aufgeben - + Are you sure you want to concede this game? Sind Sie sicher, dass Sie das Spiel aufgeben möchten? - + Leave game Spiel verlassen - + Are you sure you want to leave this game? Sind Sie sicher, dass Sie das Spiel verlassen möchten? - + You are flooding the game. Please wait a couple of seconds. Sie senden zu viele Befehle. Bitte warte ein paar Sekunden. - + You have been kicked out of the game. Sie wurden aus dem Spiel geworfen. - + REPLAY - + Wiederholung @@ -4790,47 +4975,47 @@ Bitte geben Sie einen Namen ein: TabRoom - + &Say: &Sagen: - + Chat Chat - + &Room &Raum - + &Leave room Raum ver&lassen - + &Clear chat Chat leeren - + Chat Settings... Chat Einstellungen - + mentioned you. hat dich erwähnt. - + Click to view Zum Anzeigen klicken. - + You are flooding the chat. Please wait a couple of seconds. Sie überfluten den Chatraum. Bitte warten Sie ein paar Sekunden. @@ -4846,15 +5031,25 @@ Bitte geben Sie einen Namen ein: TabSupervisor - + Are you sure? Sind Sie sicher? - + There are still open games. Are you sure you want to quit? Es sind noch Spiele offen. Wollen Sie das Programm trotzdem beenden? + + + Promotion + Beförderung + + + + You have been promoted to moderator. Please log out and back in for changes to take effect. + Sie wurden zum Moderator ernannt. Bitte loggen Sie sich aus und wieder ein, damit die Änderungen in Kraft treten. + TabUserLists @@ -4877,55 +5072,97 @@ Bitte geben Sie einen Namen ein: UserContextMenu - + User &details Benutzer&details - + Private &chat Privater &Chat - + Show this user's &games Spiele dieses &Benutzers anzeigen - + Add to &buddy list Zur &Freundesliste hinzufügen - + Remove from &buddy list Von &Freundesliste entfernen - + Add to &ignore list &Ignorieren - + Remove from &ignore list Nicht mehr &ignorieren - + Kick from &game Aus dem &Spiel werfen - + Ban from &server Vom &Server bannen - + + &Promote user to moderator + Nutzer zum Moderator befördern + + + + Dem&ote user from moderator + Moderator degradieren + + + %1's games %1s Spiele + + + + Success + Erfolgreich + + + + Successfully promoted user. + Nutzer erfolgreich befördert. + + + + Successfully demoted user. + Nutzer erfolgreich degradiert. + + + + + Failed + Fehlgeschlagen + + + + Failed to promote user. + Beförderung des Nutzers fehlgeschlagen. + + + + Failed to demote user. + Degradierung des Nutzers fehlgeschlagen. + UserInfoBox @@ -4942,7 +5179,7 @@ Bitte geben Sie einen Namen ein: Pronouns: - + Pronomen: @@ -4962,17 +5199,17 @@ Bitte geben Sie einen Namen ein: Edit - + Bearbeiten Change password - + Passwort ändern Change avatar - + Avatar wechseln @@ -5025,12 +5262,12 @@ Bitte geben Sie einen Namen ein: Information - + Information User information updated. - + Benutzerinformationen aktualisiert. @@ -5042,94 +5279,94 @@ Bitte geben Sie einen Namen ein: Error - + Fehler This server does not permit you to update your user informations. - + Dieser Server erlaubt Ihnen nicht, Ihre Benutzerinformationen zu aktualisieren. An error occured while trying to update your user informations. - + Ein Fehler ist während der Aktualisierung Ihrer Benutzerinformationen aufgetreten. Password changed. - + Passwort geändert. This server does not permit you to change your password. - + Dieser Server erlaubt Ihnen nicht, Ihr Passwort zu ändern. The new password is too short. - + Das neue Passwort ist zu kurz. The old password is incorrect. - + Altes Passwort inkorrekt. Avatar updated. - + Avatar gewechselt. This server does not permit you to update your avatar. - + Dieser Server erlaubt Ihnen nicht, Ihren Avatar zu ändern. An error occured while trying to updater your avatar. - + Ein Fehler ist während des Wechselns Ihres Avatars aufgetreten. UserInterfaceSettingsPage - + General interface settings Allgemeine Bedienung - + Enable notifications in taskbar Taskbarbenachrichtigungen aktivieren - + Notify in the taskbar for game events while you are spectating Benachrichtigungen für Spielereignisse auch beim Zusehen anderer Spiele in der Taskbar anzeigen - + &Double-click cards to play them (instead of single-click) Karten durch &Doppelklick ausspielen (statt Einzelklick) - + &Play all nonlands onto the stack (not the battlefield) by default alle Nichtländer standardmäßig über den Stapel spielen (anstatt direkt auf den Tisch) - + Annotate card text on tokens - + Kartentext auf Spielstein kommentieren - + Animation settings Animationseinstellungen - + &Tap/untap animation Animiertes &Tappen/Enttappen @@ -5137,22 +5374,22 @@ Bitte geben Sie einen Namen ein: UserList - + Users connected to server: %1 Mit dem Server verbundene Nutzer: %1 - + Users in this room: %1 Benutzer in diesem Raum: %1 - + Buddies online: %1 / %2 Freunde online: %1 / %2 - + Ignored users online: %1 / %2 Ignorierte Benutzer online: %1 / %2 @@ -5211,8 +5448,8 @@ Bitte geben Sie einen Namen ein: - Disabled sets will still be used for loading images - Nicht aktivierte Editionen werden für Kartenbilder weiterhin genutzt + Disabled sets will be used for loading images only if all the enabled sets failed + Deaktivierte Editionen werden nur für Bilder verwendet, wenn die aktivierten Editionen fehlschlagen @@ -5220,12 +5457,12 @@ Bitte geben Sie einen Namen ein: Editionen bearbeiten - + Success Erfolgreich - + The sets database has been saved successfully. Die Editionsdatenbank wurde erfolgreich gespeichert. @@ -5253,4 +5490,561 @@ Bitte geben Sie einen Namen ein: Stapelansicht + + shortcutsTab + + + Form + Form + + + + Main Window + Hauptfenster + + + + Deck editor + Deckeditor + + + + Local gameplay + lokales Gameplay + + + + Watch replay + Wiederholung abspielen + + + + Connect + Verbinden + + + + Register + Registrieren + + + + Full screen + Vollbild + + + + Settings + Einstellungen + + + + Check for card updates + Nach Kartenaktualisierungen suchen + + + + Exit + Beenden + + + + Deck Editor + Deckeditor + + + + Analyze deck + Deck analysieren + + + + Load deck (clipboard) + Deck laden (Zwischenablage) + + + + Clerar all filters + Alle Filter entfernen + + + + New deck + Neues Deck + + + + Clear one filter + Einen Filter entfernen + + + + Open custom folder + Öffne benutzerdefinierten Ordner + + + + Close + Schließen + + + + Print deck + Deck drucken + + + + Edit sets + Editionen bearbeiten + + + + Delete card + Karte löschen + + + + Edit tokens + Spielsteine bearbeiten + + + + Reset layout + Darstellung zurücksetzen + + + + Add card + Karte hinzufügen + + + + Save deck + Deck speichern + + + + Remove card + Karte entfernen + + + + Save deck as + Deck speichern unter... + + + + Load deck + Deck laden + + + + Save deck (clipboard) + Deck speichern (Zwischenablage) + + + + + Counters + Zähler + + + + Life + Leben + + + + + + + + Set + Setzen + + + + + + + Add + Hinzufügen + + + + + + + Remove + Entfernen + + + + Red + Rot + + + + Green + Grün + + + + Yellow + Gelb + + + + Mainwindow / Deck editor + Hauptfenster/Deckeditor + + + + Power / toughness + Stärke/Widerstandskraft + + + + Power and toughness + Stärke und Widerstandskraft + + + + Add (+1/+1) + (+1/+1) hinzufügen + + + + Remove (-1/-1) + (-1/-1) hinzufügen + + + + Toughness + Widerstandskraft + + + + Remove (-0/-1) + (-0/-1) hinzufügen + + + + Add (+0/+1) + (+0/+1) hinzufügen + + + + Power + Stärke + + + + Remove (-1/-0) + (-1/-0) hinzufügen + + + + Add (+1/+0) + (+1/+0) hinzufügen + + + + Game Phases + Spielphasen + + + + Untap + Enttappen + + + + Disconnect + Getrennt + + + + Upkeep + Versorgung + + + + + Draw + Ziehen + + + + Main 1 + 1. Hauptphase + + + + Start combat + Beginn des Kampfes + + + + Attack + Angriff + + + + Block + Blocken + + + + Damage + Schaden + + + + End combat + Ende des Kampfes + + + + Main 2 + 2. Hauptphase + + + + End + Endsegment + + + + Next phase + Nächste Phase + + + + Next turn + Nächster Zug + + + + Player + Spieler + + + + Tap Card + Karte tappen + + + + Untap Card + Karte enttappen + + + + Untap all + Alle enttappen + + + + Toogle untap + Enttappen umschalten + + + + Flip card + Karte drehen + + + + Peek card + Karte ansehen + + + + Play card + Karte spielen + + + + Attach card + Karte anlegen + + + + Unattach card + Karte lösen + + + + Clone card + Karte klonen + + + + Create token + Spielstein erstellen + + + + Create another token + Einen weiteren Spielstein erstellen + + + + Set annotation + Notiz setzen + + + + Phases / P/T / Player + Phasen / P/T /Player + + + + Move card to + Karte verschieben + + + + Bottom library + unter die Bibliothek + + + + Top library + auf die Bibliothek + + + + + Graveyard + in den Friedhof + + + + + Exile + ins Exil + + + + Hand + auf die Hand + + + + View + Ansehen + + + + Library + Bibliothek + + + + Tops card of library + Obersten Karten der Bibliothek + + + + Sideboard + Sideboard + + + + Close recent view + Schließe jüngste Ansicht + + + + Pre-play + Vorspiel + + + + Load remote deck + Deck vom Server laden + + + + Load local deck + Lokales Deck laden + + + + Game play + + + + + Draw arrow + Pfeil zeichnen + + + + Leave game + Spiel verlassen + + + + Remove local arrows + Lokale Pfeile entfernen + + + + Concede + Aufgeben + + + + Roll dice + Würfeln + + + + Rotate view CW + Ansicht im Uhrzeigersinn drehen + + + + Shuffle library + Bibliothek mischen + + + + Rotate view CCW + Ansicht gegen den Uhrzeigersinn drehen + + + + Mulligan + Mulligan + + + + Draw card + Karte ziehen + + + + Draw cards + Karten ziehen + + + + Undo draw + Ziehen rückgängig machen + + + + Always reveal top card + Oberste Karte aufgedeckt lassen + + + + Draw / Move / View / Game play + + + \ No newline at end of file diff --git a/cockatrice/translations/cockatrice_en.ts b/cockatrice/translations/cockatrice_en.ts index 93e4826b..6d351363 100644 --- a/cockatrice/translations/cockatrice_en.ts +++ b/cockatrice/translations/cockatrice_en.ts @@ -22,89 +22,60 @@ AppearanceSettingsPage - - Zone background pictures + + Theme settings - - Hand background: + + Current theme: - - Stack background: - - - - - Table background: - - - - - Player info background: - - - - - Card back: - - - - + Card rendering - + Display card names on cards having a picture - + Scale cards on mouse over - + Hand layout - + Display hand horizontally (wastes space) - + Enable left justification - + Table grid layout - + Invert vertical coordinate - + Minimum player count for multi-column layout: - - - - - - - Choose path - - BanDialog @@ -186,6 +157,9 @@ This is only saved for moderators and cannot be seen by the banned person. + + + Error @@ -194,16 +168,31 @@ This is only saved for moderators and cannot be seen by the banned person.You have to select a name-based, IP-based, clientId based, or some combination of the three to place a ban. + + + You must have a value in the name ban when selecting the name ban checkbox. + + + + + You must have a value in the ip ban when selecting the ip ban checkbox. + + + + + You must have a value in the clientid ban when selecting the clientid ban checkbox. + + CardDatabase - + New sets found - + %1 new set(s) have been found in the card database. Do you want to enable them? @@ -594,12 +583,12 @@ This is only saved for moderators and cannot be seen by the banned person. DeckEditorSettingsPage - + Nothing is here... yet - + General @@ -720,52 +709,52 @@ This is only saved for moderators and cannot be seen by the banned person. DlgConnect - + Previous Host - + New Host - + &Host: - + Enter host name - + &Port: - + Player &name: - + P&assword: - + &Save password - + A&uto connect at start - + Connect to server @@ -773,87 +762,92 @@ This is only saved for moderators and cannot be seen by the banned person. DlgCreateGame - + &Description: - + &Password: - + P&layers: - + + Re&member settings + + + + Game type - + Only &buddies can join - + Only &registered users can join - + Joining restrictions - + &Spectators can watch - + Spectators &need a password to watch - + Spectators can see &hands - + Spectators can &chat - + Spectators - + &Clear - + Create game - + Game information - + Error - + Server error. @@ -994,32 +988,32 @@ To remove your current avatar, confirm without choosing a new image. DlgEditPassword - + Old password: - + New password: - + Confirm new password: - + Change password - + Error - + The new passwords don't match. @@ -1122,47 +1116,47 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgEditUser - + Email: - + Pronouns: - + Neutral - + Masculine - + Feminine - + Country: - + Undefined - + Real name: - + Edit user profile @@ -1170,47 +1164,47 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgFilterGames - + Show &unavailable games - + Show &password protected games - + Game &description: - + &Creator name: - + &Game types - + at &least: - + at &most: - + Maximum player count - + Filter games @@ -1251,93 +1245,93 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgRegister - + &Host: - + &Port: - + Player &name: - + P&assword: - + Password (again): - + Email: - + Email (again): - + Pronouns: - + Neutral - + Masculine - + Feminine - + Undefined - - + + Registration Warning - + Your passwords do not match, please try again. - + Your email addresses do not match, please try again. - + Country: - + Real name: - + Register to server @@ -1345,19 +1339,19 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgSettings - - - + + + Error - + Unknown Error loading card database - + Your card database is invalid. Cockatrice may not function correctly with an invalid database @@ -1368,7 +1362,7 @@ Would you like to change your database location setting? - + Your card database version is too old. This can cause problems loading card information or images @@ -1379,21 +1373,21 @@ Would you like to change your database location setting? - + File Error loading your card database. Would you like to change your database location setting? - + Your card database was loaded but contains no cards. Would you like to change your database location setting? - + Your card database did not finish loading Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues with your cards.xml attached @@ -1402,7 +1396,7 @@ Would you like to change your database location setting? - + Unknown card database load status Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues @@ -1411,52 +1405,52 @@ Would you like to change your database location setting? - + The path to your deck directory is invalid. Would you like to go back and set the correct path? - + The path to your card pictures directory is invalid. Would you like to go back and set the correct path? - + Settings - + General - + Appearance - + User Interface - + Deck Editor - + Chat - + Sound - + Shortcuts @@ -1674,107 +1668,112 @@ Would you like to change your database location setting? GeneralSettingsPage - + Reset/Clear Downloaded Pictures - - - - - + + + + + Choose path - + Success - + Downloaded card pictures have been reset. - + Error - + One or more downloaded card pictures could not be cleared. - + Personal settings - + Language: - + Download card pictures on the fly - + Download card pictures from a custom URL - + Custom Card Download URL: - + Linking FAQ - - Paths - - - - - Decks directory: - - - - - Replays directory: + + Notify when new client features are available - Pictures directory: + Paths - Card database: + Decks directory: - Token database: + Replays directory: + Pictures directory: + + + + + Card database: + + + + + Token database: + + + + Picture cache size: - + English English @@ -1782,48 +1781,48 @@ Would you like to change your database location setting? MainWindow - + There are too many concurrent connections from your address. - + Scheduled server shutdown. - + Banned by moderator - + Expected end time: %1 - + This ban lasts indefinitely. - + Connection closed - + The server has terminated your connection. Reason: %1 - + Scheduled server shutdown - + The server is going to be restarted in %n minute(s). All running games will be lost. Reason for shutdown: %1 @@ -1833,473 +1832,495 @@ Reason for shutdown: %1 - + Number of players - + Please enter the number of players. - - + + Player %1 - + Load replay - + About Cockatrice - + Version %1 - + Translators: - + Project Manager: - + The server has reached its maximum user capacity, please check back later. - - + + Invalid username. - - + + You have been logged out due to logging in at another location. + + + + + Success - + Registration accepted. Will now login. - + Account activation accepted. Will now login. - + Past Project Managers: - + Developers: - + Our Developers - + Help Develop! - + Recognition Page - + Help Translate! - + Support: - + Report an Issue - - - - - - + + + - - - - - - - - - - + + + + + + + + + + + + + Error - + Server timeout - + + Failed Login + + + + + Your client does not support features that the server requires, please update your client and try again. + + + + Incorrect username or password. Please check your authentication information and try again. - + There is already an active session using this user name. Please close that session first and re-login. - - + + You are banned until %1. - - + + You are banned indefinitely. - + This server requires user registration. Do you want to register now? - + This server requires client ID's. Your client is either failing to generate an ID or you are running a modified client. Please close and reopen your client to try again. - + An internal error has occurred, please try closing and reopening your client and try again. If the error persists try updating your client to the most recent build and if need be contact your software provider. - + Account activation - + Unknown login error: %1 - - + + This usually means that your client version is out of date, and the server sent a reply your client doesn't understand. - + Your username must respect these rules: - + is %1 - %2 characters long - + can %1 contain lowercase characters - - - - + + + + NOT - + can %1 contain uppercase characters - + can %1 contain numeric characters - + can contain the following punctuation: %1 - + first character can %1 be a punctuation mark - + You may only use A-Z, a-z, 0-9, _, ., and - in your username. - - - - - + + + + + Registration denied - + Registration is currently disabled on this server - + There is already an existing account with the same user name. - + It's mandatory to specify a valid email address when registering. - + Too many registration attempts from your IP address. - + Password too short. - + Registration failed for a technical problem on the server. - + Unknown registration error: %1 - + Account activation failed - + Socket error: %1 - + 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. - + Your Cockatrice client is obsolete. Please update your Cockatrice version. Local version is %1, remote version is %2. - + Connecting to %1... - + Registering to %1 as %2... - + Disconnected - + Connected, logging in at %1 - + &Connect... - + &Disconnect - + Start &local game... - + &Watch replay... - + &Deck editor - + &Full screen - + &Register to server... - + &Settings... - - + + &Exit - + A&ctions - + &Cockatrice - + &About Cockatrice - + &Help - + Check for card updates... - + A card database update is already running. - + Unable to run the card database updater: - + The card database updater exited with an error: %1 - + Update completed successfully. Cockatrice will now reload the card database. - - + + Your client appears to be missing features that the server supports. +This usually means that your client version is out of date, please check to see if there is a new client available for download. + + + + + + Information - + Troubleshooting - + F.A.Q. - + Your account has not been activated yet. You need to provide the activation token received in the activation email - + failed to start. - + crashed. - + timed out. - + write error. - + read error. - + unknown error. @@ -3572,74 +3593,74 @@ You need to provide the activation token received in the activation email MessagesSettingsPage - + Chat settings - + Custom alert words - + Enable chat mentions - + Enable mention completer - + In-game message macros - + Ignore chat room messages sent by unregistered users - + Ignore private messages sent by unregistered users - + Enable desktop notifications for private messages - + Separate words with a space, alphanumeric characters only - - + + Invert text color - + Enable desktop notification for mentions. - - + + (Color is hexadecimal) - + Add message - + Message: @@ -3705,435 +3726,435 @@ You need to provide the activation token received in the activation email Player - + &View library - + Move top cards to &graveyard... - + View &top cards of library... - + &View graveyard - + &View sideboard - + Player "%1" - - - - - - &Hand - - - - - &Reveal hand to... - - - - - Reveal r&andom card to... - - - - - &Library - - - - - - - - &Graveyard - - - - - &Sideboard - - - - - Red - - - - - Yellow - - - - - Green - - - - - View top cards of library - - - - - Number of cards: - - - - - &Draw card - - - - - Reveal top cards of library - - - - - Number of cards: (max. %1) - - - - - &View exile - - - - - - - - &Exile - - - - - Reveal t&op cards to... - - - - - D&raw cards... - - - - - Take &mulligan - - - - - &Shuffle - - - - - &Counters - - - - - &Untap all permanents - - - - - R&oll die... - - - - - &Create token... - - - - - C&reate another token - - - - - S&ay - - - - - &Move hand to... - - - - - - - - &Top of library - - - - - &Bottom of library - - - - - &Move graveyard to... - - - - - &Move exile to... - - - - - Reveal &library to... - - - - - &Always reveal top card - - - - - O&pen deck in deck editor - - - - - &Undo last draw + + + &Hand - Play top card &face down + &Reveal hand to... - - Move top cards to &exile... + + Reveal r&andom card to... - Put top card on &bottom + &Library - - Put bottom card &in graveyard + + + + + &Graveyard - - Cr&eate predefined token - - - - - C&ard - - - - - &All players - - - - - &Play - - - - - &Hide - - - - - Play &Face Down - - - - - &Tap - - - - - &Untap - - - - - Toggle &normal untapping - - - - - &Flip - - - - - &Peek at card face - - - - - &Clone - - - - - Attac&h to card... - - - - - Unattac&h - - - - - &Draw arrow... - - - - - &Increase power - - - - - &Decrease power - - - - - I&ncrease toughness + + &Sideboard - D&ecrease toughness + Red - In&crease power and toughness + Yellow + Green + + + + + View top cards of library + + + + + Number of cards: + + + + + &Draw card + + + + + Reveal top cards of library + + + + + Number of cards: (max. %1) + + + + + &View exile + + + + + + + + &Exile + + + + + Reveal t&op cards to... + + + + + D&raw cards... + + + + + Take &mulligan + + + + + &Shuffle + + + + + &Counters + + + + + &Untap all permanents + + + + + R&oll die... + + + + + &Create token... + + + + + C&reate another token + + + + + S&ay + + + + + &Move hand to... + + + + + + + + &Top of library + + + + + + + + &Bottom of library + + + + + &Move graveyard to... + + + + + &Move exile to... + + + + + Reveal &library to... + + + + + &Always reveal top card + + + + + O&pen deck in deck editor + + + + + &Undo last draw + + + + + Play top card &face down + + + + + Move top cards to &exile... + + + + + Put top card on &bottom + + + + + Put bottom card &in graveyard + + + + + Cr&eate predefined token + + + + + C&ard + + + + + &All players + + + + + &Play + + + + + &Hide + + + + + Play &Face Down + + + + + &Tap + + + + + &Untap + + + + + Toggle &normal untapping + + + + + &Flip + + + + + &Peek at card face + + + + + &Clone + + + + + Attac&h to card... + + + + + Unattac&h + + + + + &Draw arrow... + + + + + &Increase power + + + + + &Decrease power + + + + + I&ncrease toughness + + + + + D&ecrease toughness + + + + + In&crease power and toughness + + + + Dec&rease power and toughness - + Set &power and toughness... - + &Set annotation... - + &Add counter (%1) - + &Remove counter (%1) - + &Set counters (%1)... - + Draw cards - - - - + + + + Number: - + Move top cards to grave - + Move top cards to exile - + Roll die - + Number of sides: - + Set power/toughness - + Please enter the new PT: - + Set annotation - + Please enter the new annotation: - + Set counters - + Cr&eate related card @@ -4141,37 +4162,37 @@ You need to provide the activation token received in the activation email QMenuBar - + Services - + Hide %1 - + Hide Others - + Show All - + Preferences... - + Quit %1 - + About %1 @@ -4179,7 +4200,7 @@ You need to provide the activation token received in the activation email QObject - + Cockatrice replays (*.cor) @@ -4356,37 +4377,37 @@ You need to provide the activation token received in the activation email SoundSettingsPage - + Choose path - + Enable &sounds - + Path to sounds directory: - + Test system sound engine - + Sound settings - + Master volume requires QT5 - + Master volume @@ -4442,219 +4463,219 @@ You need to provide the activation token received in the activation email TabDeckEditor - + &Print deck... - + &Close - + &Edit sets... - + Filters - + &Clear all filters - + Delete selected - + Deck &name: - + &Comments: - + Hash: - + &New deck - + &Load deck... - + &Save deck - + Save deck &as... - + Load deck from cl&ipboard... - + Save deck to clip&board - + &Analyze deck on deckstats.net - + Open custom image folder - + Open custom sets folder - + Add card to &maindeck - + Add card to &sideboard - + &Deck Editor - + C&ard Database - + Show/Hide card information - + Show/Hide deck - + Show/Hide filters - + Reset layout - + Card Info - + Deck - + Welcome - + Hi! It seems like you're running this version of Cockatrice for the first time. All the sets in the card database have been enabled. Read more about changing the set order or disabling specific sets and consequent effects in the "Edit Sets" window. - + &Remove row - + &Increment number - + &Decrement number - + Edit &tokens... - + Deck: %1 - + Are you sure? - + The decklist has been modified. Do you want to save the changes? - + Load deck - - - + + + Error - + The deck could not be saved. - - + + The deck could not be saved. Please check that the directory is writable and try again. - + Save deck @@ -5303,42 +5324,42 @@ Please enter a name: UserInterfaceSettingsPage - + General interface settings - + Enable notifications in taskbar - + Notify in the taskbar for game events while you are spectating - + &Double-click cards to play them (instead of single-click) - + &Play all nonlands onto the stack (not the battlefield) by default - + Annotate card text on tokens - + Animation settings - + &Tap/untap animation @@ -5346,22 +5367,22 @@ Please enter a name: UserList - + Users connected to server: %1 - + Users in this room: %1 - + Buddies online: %1 / %2 - + Ignored users online: %1 / %2 @@ -5514,11 +5535,6 @@ Please enter a name: Check for card updates - - - Diconnect - - Exit @@ -5735,9 +5751,14 @@ Please enter a name: Untap + + + Disconnect + + - Unkeep + Upkeep diff --git a/cockatrice/translations/cockatrice_en@pirate.ts b/cockatrice/translations/cockatrice_en@pirate.ts new file mode 100644 index 00000000..8d855804 --- /dev/null +++ b/cockatrice/translations/cockatrice_en@pirate.ts @@ -0,0 +1,6008 @@ + + + AbstractCounter + + + &Set counter... + &Set piece o' eight... + + + + Set counter + Set piece o' eight + + + + New value for counter '%1': + Freshly formed value for piece o' eight '%1': + + + + AppearanceSettingsPage + + + Theme settings + + + + + Current theme: + + + + + Card rendering + + + + + Display card names on cards having a picture + + + + + Scale cards on mouse over + + + + + Hand layout + + + + + Display hand horizontally (wastes space) + + + + + Enable left justification + + + + + Table grid layout + + + + + Invert vertical coordinate + + + + + Minimum player count for multi-column layout: + + + + + BanDialog + + + ban &user name + + + + + ban &IP address + + + + + ban client I&D + + + + + Ban type + + + + + &permanent ban + + + + + &temporary ban + + + + + &Days: + + + + + &Hours: + + + + + &Minutes: + + + + + Duration of the ban + + + + + Please enter the reason for the ban. +This is only saved for moderators and cannot be seen by the banned person. + Me hearty, enter t' reason for t' ban. +This be only saved for captains and cannot be seen by t' brutally banned scallywag. + + + + Please enter the reason for the ban that will be visible to the banned person. + Me hearty, enter t' reason for t' ban that be visible to t' brutally banned scallywag. + + + + &OK + Aye + + + + &Cancel + Belay that + + + + Ban user from server + Banish the scurvy dog from the ship! + + + + + + + Error + Cap'n? Thar be a problem + + + + You have to select a name-based, IP-based, clientId based, or some combination of the three to place a ban. + + + + + You must have a value in the name ban when selecting the name ban checkbox. + + + + + You must have a value in the ip ban when selecting the ip ban checkbox. + + + + + You must have a value in the clientid ban when selecting the clientid ban checkbox. + + + + + CardDatabase + + + New sets found + Freshly formed fleets be found + + + + %1 new set(s) have been found in the card database. Do you want to enable them? + %1 freshly formed fleet(s) be found in t' dock. Does ye want to enable 'em? + + + + CardDatabaseModel + + + Name + Name + + + + Sets + Fleets + + + + Mana cost + Magic tax + + + + Card type + + + + + P/T + P/T + + + + CardFrame + + + Image + Pic + + + + Description + + + + + Both + + + + + CardInfoText + + + Name: + Name: + + + + Mana cost: + Magic tax: + + + + Color(s): + Color(s): + + + + Card type: + + + + + P / T: + P / T: + + + + Loyalty: + + + + + CardInfoWidget + + + Show card only + + + + + Show text only + + + + + Show full info + + + + + Name: + Name: + + + + Mana cost: + Magic tax: + + + + Color(s): + + + + + Card type: + + + + + P / T: + P / T: + + + + Loyalty: + + + + + CardItem + + + &Power / toughness + &Power / toughness + + + + &Move to + + + + + CardZone + + + her hand + nominative, female owner + the lass's hand + + + + %1's hand + nominative, female owner + %1's hand + + + + his hand + nominative, male owner + the buccaneer's hand + + + + %1's hand + nominative, male owner + %1's hand + + + + her library + look at zone, female owner + the lass's library + + + + %1's library + look at zone, female owner + %1's library + + + + his library + look at zone, male owner + the buccaneer's library + + + + %1's library + look at zone, male owner + %1's library + + + + of her library + top cards of zone, female owner + o' the lass's library + + + + of %1's library + top cards of zone, female owner + o' %1's library + + + + of his library + top cards of zone, male owner + o' the buccaneer's library + + + + of %1's library + top cards of zone, male owner + o' %1's library + + + + her library + reveal zone, female owner + the lass's library + + + + %1's library + reveal zone, female owner + %1's library + + + + his library + reveal zone, male owner + the buccaneer's library + + + + %1's library + reveal zone, male owner + %1's library + + + + her library + shuffle, female owner + the lass's library + + + + %1's library + shuffle, female owner + %1's library + + + + his library + shuffle, male owner + the buccaneer's library + + + + %1's library + shuffle, male owner + %1's library + + + + her sideboard + look at zone, female owner + the lass's sideplank + + + + %1's sideboard + look at zone, female owner + %1's sideplank + + + + his sideboard + look at zone, male owner + the buccaneer's sideplank + + + + %1's sideboard + look at zone, male owner + %1's sideplank + + + + her library + nominative, female owner + the lass's library + + + + %1's library + nominative, female owner + %1's library + + + + his library + nominative, male owner + the buccaneer's library + + + + %1's library + nominative, male owner + %1's library + + + + her graveyard + nominative, female owner + the lass's Davy Jones' Locker + + + + %1's graveyard + nominative, female owner + %1's Davy Jones' Locker + + + + his graveyard + nominative, male owner + the buccaneer's Davy Jones' Locker + + + + %1's graveyard + nominative, male owner + %1's Davy Jones' Locker + + + + her exile + nominative, female owner + the darkest depths o' the lass's Davy Jones' Locker + + + + %1's exile + nominative, female owner + the darkest depths o' %1's Davy Jones' Locker + + + + his exile + nominative, male owner + the darkest depths o' the buccaneer's Davy Jones' Locker + + + + %1's exile + nominative, male owner + the darkest depths o' %1's Davy Jones' Locker + + + + her sideboard + nominative, female owner + the lass's sideplank + + + + %1's sideboard + nominative, female owner + %1's sideplank + + + + his sideboard + nominative, male owner + the buccaneer's sideplank + + + + %1's sideboard + nominative, male owner + %1's sideplank + + + + DeckEditorSettingsPage + + + Nothing is here... yet + Thar be nothin'... yet + + + + General + + + + + DeckListModel + + + Number + + + + + Card + + + + + Price + + + + + DeckStatsInterface + + + + Error + Cap'n? Thar be a problem + + + + The reply from the server could not be parsed. + + + + + DeckViewContainer + + + Load local deck + Find a nearby flagship + + + + Load deck from server + Find a flagship from t' o'er ship + + + + Ready to s&tart + + + + + S&ideboard unlocked + + + + + S&ideboard locked + + + + + Load deck + Find a flagship + + + + Error + Cap'n? Thar be a problem + + + + The selected file could not be loaded. + + + + + DlgCardSearch + + + Card name: + Card name: + + + + Card text: + + + + + Card type (OR): + + + + + Color (OR): + Color (OR): + + + + O&K + Aye + + + + &Cancel + Belay that + + + + Card search + + + + + DlgConnect + + + Previous Host + + + + + New Host + + + + + &Host: + + + + + Enter host name + + + + + &Port: + + + + + Player &name: + Matey &name: + + + + P&assword: + &A stupendously secret code: + + + + &Save password + Record t' &stupendously secret code + + + + A&uto connect at start + + + + + Connect to server + + + + + DlgCreateGame + + + &Description: + + + + + &Password: + Stu&pendously secret code: + + + + P&layers: + Mateys: + + + + Re&member settings + + + + + Game type + + + + + Only &buddies can join + + + + + Only &registered users can join + + + + + Joining restrictions + + + + + &Spectators can watch + + + + + Spectators &need a password to watch + Landlubbers be &needin' a stupendously secret code to watch + + + + Spectators can see &hands + Landlubbers can see &hands + + + + Spectators can &chat + Landlubbers can &chat + + + + Spectators + Landlubbers + + + + &Clear + + + + + Create game + + + + + Game information + + + + + Error + Cap'n? Thar be a problem + + + + Server error. + Cap'n? Thar be a problem wi' t' ship. + + + + DlgCreateToken + + + &Name: + &Name: + + + + Token + + + + + C&olor: + C&olor + + + + white + pure white + + + + blue + sea blue + + + + black + deathly black + + + + red + blood red + + + + green + emerald green + + + + multicolor + multicolor + + + + colorless + colorless + + + + &P/T: + &P/T: + + + + &Annotation: + + + + + &Destroy token when it leaves the table + + + + + Token data + + + + + Show &all tokens + + + + + Show tokens from this &deck + + + + + Choose token from list + + + + + Create token + + + + + DlgEditAvatar + + + + No image chosen. + No pic be picked! + + + + To change your avatar, choose a new image. +To remove your current avatar, confirm without choosing a new image. + + + + + Browse... + + + + + Change avatar + + + + + Open Image + Open Pic + + + + Image Files (*.png *.jpg *.bmp) + + + + + Invalid image chosen. + Invalid pic be picked! + + + + DlgEditPassword + + + Old password: + Old stupendously secret code: + + + + New password: + Freshly formed stupendously secret code: + + + + Confirm new password: + Confirm freshly formed stupendously secret code: + + + + Change password + Change t' stupendously secret code + + + + Error + Cap'n? Thar be a problem + + + + The new passwords don't match. + T' freshly formed stupendously secret codes be failin' to match! + + + + DlgEditTokens + + + &Name: + &Name: + + + + C&olor: + C&olor + + + + white + pure white + + + + blue + sea blue + + + + black + deathly black + + + + red + blood red + + + + green + emerald green + + + + multicolor + multicolor + + + + colorless + colorless + + + + &P/T: + &P/T: + + + + &Annotation: + + + + + Token data + + + + + + Add token + + + + + Remove token + + + + + Edit tokens + + + + + Please enter the name of the token: + + + + + Error + Cap'n? Thar be a problem + + + + The chosen name conflicts with an existing card or token. +Make sure to enable the 'token set' in the 'Edit sets...' dialog to display them correctly. + + + + + DlgEditUser + + + Email: + + + + + Pronouns: + What we call ye: + + + + Neutral + Just me name + + + + Masculine + Buccaneer + + + + Feminine + Lass + + + + Country: + + + + + Undefined + + + + + Real name: + + + + + Edit user profile + + + + + DlgFilterGames + + + Show &unavailable games + + + + + Show &password protected games + + + + + Game &description: + + + + + &Creator name: + &Cap'n name: + + + + &Game types + + + + + at &least: + + + + + at &most: + + + + + Maximum player count + + + + + Filter games + + + + + DlgLoadDeckFromClipboard + + + &Refresh + + + + + Load deck from clipboard + Find a flagship from t' clipplank + + + + + Error + Cap'n? Thar be a problem + + + + + Invalid deck list. + Invalid flagship list. + + + + DlgLoadRemoteDeck + + + Load deck + Find a flagship + + + + DlgRegister + + + &Host: + + + + + &Port: + + + + + Player &name: + Matey &name: + + + + P&assword: + &A stupendously secret code: + + + + Password (again): + + + + + Email: + + + + + Email (again): + + + + + Pronouns: + What we call ye: + + + + Neutral + Just me name + + + + Masculine + Buccaneer + + + + Feminine + Lass + + + + Undefined + + + + + + Registration Warning + + + + + Your passwords do not match, please try again. + + + + + Your email addresses do not match, please try again. + + + + + Country: + + + + + Real name: + + + + + Register to server + Board t' ship + + + + DlgSettings + + + + + Error + Cap'n? Thar be a problem + + + + Unknown Error loading card database + Cap'n? Thar be a unknown problem wi' t' dock + + + + Your card database is invalid. + +Cockatrice may not function correctly with an invalid database + +You may need to rerun oracle to update your card database. + +Would you like to change your database location setting? + + + + + Your card database version is too old. + +This can cause problems loading card information or images + +Usually this can be fixed by rerunning oracle to to update your card database. + +Would you like to change your database location setting? + + + + + File Error loading your card database. + +Would you like to change your database location setting? + + + + + Your card database was loaded but contains no cards. + +Would you like to change your database location setting? + + + + + Your card database did not finish loading + +Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues with your cards.xml attached + +Would you like to change your database location setting? + + + + + Unknown card database load status + +Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues + +Would you like to change your database location setting? + + + + + The path to your deck directory is invalid. Would you like to go back and set the correct path? + + + + + The path to your card pictures directory is invalid. Would you like to go back and set the correct path? + + + + + Settings + Cap'n's orders + + + + General + + + + + Appearance + + + + + User Interface + + + + + Deck Editor + Dock + + + + Chat + + + + + Sound + + + + + Shortcuts + + + + + GameSelector + + + + + + + + + + + Error + Cap'n? Thar be a problem + + + + Please join the appropriate room first. + + + + + Wrong password. + Ye don't know the stupendously secret code! + + + + Spectators are not allowed in this game. + Liliy-livered landlubbers - get off me ship! + + + + The game is already full. + T' ship be full now. + + + + The game does not exist any more. + T' ship be vanishin'! + + + + This game is only open to registered users. + + + + + This game is only open to its creator's buddies. + T' ship be only open for the cap'n's first mates. + + + + You are being ignored by the creator of this game. + T' cap'n be ignorin' ye. + + + + Join game + Board ship + + + + Password: + Stupendously secret code: + + + + Please join the respective room first. + + + + + Games + Ships + + + + &Filter games + + + + + C&lear filter + + + + + C&reate + + + + + &Join + + + + + J&oin as spectator + B&oard as landlubber + + + + GamesModel + + + Game Created + Ship built + + + + Creator + Cap'n + + + + Description + + + + + <1m ago + + + + + <5m ago + + + + + %1m ago + + + + + 1hr %1m ago + + + + + %1hr ago + + + + + 5+ hrs ago + + + + + password + stupendously secret code + + + + buddies only + first mates only + + + + reg. users only + + + + + + can chat + + + + + see hands + + + + + can see hands + + + + + not allowed + + + + + Room + + + + + Game Type + + + + + Restrictions + + + + + Players + Mateys + + + + Spectators + Landlubbers + + + + GeneralSettingsPage + + + Reset/Clear Downloaded Pictures + + + + + + + + + Choose path + + + + + Success + + + + + Downloaded card pictures have been reset. + + + + + Error + Cap'n? Thar be a problem + + + + One or more downloaded card pictures could not be cleared. + + + + + Personal settings + Cap'n's orders for t' cap'n + + + + Language: + + + + + Download card pictures on the fly + + + + + Download card pictures from a custom URL + + + + + Custom Card Download URL: + + + + + Linking FAQ + + + + + Notify when new client features are available + + + + + Paths + + + + + Decks directory: + + + + + Replays directory: + + + + + Pictures directory: + + + + + Card database: + Dock: + + + + Token database: + + + + + Picture cache size: + + + + + + English + English, arr! (Pirate English) + + + + MainWindow + + + There are too many concurrent connections from your address. + + + + + Scheduled server shutdown. + + + + + Banned by moderator + + + + + Expected end time: %1 + + + + + This ban lasts indefinitely. + + + + + Connection closed + + + + + The server has terminated your connection. +Reason: %1 + + + + + Scheduled server shutdown + + + + + The server is going to be restarted in %n minute(s). +All running games will be lost. +Reason for shutdown: %1 + + + + + Number of players + Number o' mateys + + + + Please enter the number of players. + Me hearty, enter t' number o' mateys + + + + + Player %1 + Matey %1 + + + + Load replay + + + + + About Cockatrice + + + + + Version %1 + + + + + Translators: + + + + + Project Manager: + + + + + The server has reached its maximum user capacity, please check back later. + + + + + + Invalid username. + + + + + You have been logged out due to logging in at another location. + + + + + + Success + + + + + Registration accepted. +Will now login. + + + + + Account activation accepted. +Will now login. + + + + + Past Project Managers: + + + + + Developers: + + + + + Our Developers + + + + + Help Develop! + + + + + Recognition Page + + + + + Help Translate! + + + + + Support: + + + + + Report an Issue + + + + + + + + + + + + + + + + + + + + + + + Error + Cap'n? Thar be a problem + + + + Server timeout + T' ship be timin' out! + + + + Failed Login + + + + + Your client does not support features that the server requires, please update your client and try again. + + + + + Incorrect username or password. Please check your authentication information and try again. + + + + + There is already an active session using this user name. +Please close that session first and re-login. + + + + + + You are banned until %1. + + + + + + You are banned indefinitely. + + + + + This server requires user registration. Do you want to register now? + + + + + This server requires client ID's. Your client is either failing to generate an ID or you are running a modified client. +Please close and reopen your client to try again. + + + + + An internal error has occurred, please try closing and reopening your client and try again. If the error persists try updating your client to the most recent build and if need be contact your software provider. + + + + + Account activation + + + + + Unknown login error: %1 + + + + + + +This usually means that your client version is out of date, and the server sent a reply your client doesn't understand. + + + + + Your username must respect these rules: + + + + + is %1 - %2 characters long + + + + + can %1 contain lowercase characters + + + + + + + + NOT + + + + + can %1 contain uppercase characters + + + + + can %1 contain numeric characters + + + + + can contain the following punctuation: %1 + + + + + first character can %1 be a punctuation mark + + + + + You may only use A-Z, a-z, 0-9, _, ., and - in your username. + + + + + + + + + Registration denied + + + + + Registration is currently disabled on this server + + + + + There is already an existing account with the same user name. + + + + + It's mandatory to specify a valid email address when registering. + + + + + Too many registration attempts from your IP address. + + + + + Password too short. + The code be too piddly to be stupendously secret. + + + + Registration failed for a technical problem on the server. + + + + + Unknown registration error: %1 + + + + + Account activation failed + + + + + Socket error: %1 + + + + + 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. + + + + + Your Cockatrice client is obsolete. Please update your Cockatrice version. +Local version is %1, remote version is %2. + + + + + Connecting to %1... + Boarding %1 + + + + Registering to %1 as %2... + + + + + Disconnected + Disembarked + + + + Connected, logging in at %1 + + + + + &Connect... + + + + + &Disconnect + &Disembark + + + + Start &local game... + Built &local ship + + + + &Watch replay... + + + + + &Deck editor + &Dock + + + + &Full screen + + + + + &Register to server... + + + + + &Settings... + Cap'n'&s orders + + + + + &Exit + Dis&embark + + + + A&ctions + + + + + &Cockatrice + + + + + &About Cockatrice + + + + + &Help + + + + + Check for card updates... + + + + + A card database update is already running. + A dock update be runnin' already! + + + + Unable to run the card database updater: + Cap'n! We can't run the dock updater: + + + + The card database updater exited with an error: %1 + The dock updater sunk. She be havin' a problem: %1 + + + + Update completed successfully. Cockatrice will now reload the card database. + Update be successfully completin'. Cockatrice now be reloadin' the dock. + + + + Your client appears to be missing features that the server supports. +This usually means that your client version is out of date, please check to see if there is a new client available for download. + + + + + + + Information + + + + + Troubleshooting + + + + + F.A.Q. + + + + + Your account has not been activated yet. +You need to provide the activation token received in the activation email + + + + + failed to start. + + + + + crashed. + + + + + timed out. + be timin' out! + + + + write error. + Cap'n? Thar be a writin' problem wi' t' ship. + + + + read error. + Cap'n? Thar be a readin' problem wi' t' ship. + + + + unknown error. + Cap'n? Thar be a unknown problem wi' t' ship. + + + + MessageLogWidget + + + The game has been closed. + T' ship has been sunk! + + + + %1 is now watching the game. + + + + + %1 is not watching the game any more. + + + + %1 draws %n card(s). + + %1 draws a card. + %1 draws %n cards. + + + + + You have joined game #%1. + female + + + + + You have joined game #%1. + male + + + + + You are watching a replay of game #%1. + female + + + + + You are watching a replay of game #%1. + male + + + + + %1 has joined the game. + female + %1 has boarded t' ship. + + + + %1 has joined the game. + male + %1 has boarded t' ship. + + + + %1 has left the game. + female + + + + + %1 has left the game. + male + + + + + You have been kicked out of the game. + + + + + %1 has loaded a deck (%2). + %1 be loadin' a flagship (%2). + + + + %1 has loaded a deck with %2 sideboard cards (%3). + %1 be loadin' a flagship wi' %2 sideplank cards (%3). + + + + %1 is ready to start the game. + female + + + + + %1 is ready to start the game. + male + + + + + %1 is not ready to start the game any more. + female + + + + + %1 is not ready to start the game any more. + male + + + + + %1 has locked her sideboard. + female + %1 be lockin' the lass's sideplank. + + + + %1 has locked his sideboard. + male + %1 be lockin' the buccaneer's sideplank. + + + + %1 has unlocked her sideboard. + female + %1 be unlockin' the lass's sideplank. + + + + %1 has unlocked his sideboard. + male + %1 be unlockin' the buccaneer's sideplank. + + + + %1 has conceded the game. + female + %1 be shootin' the lass's own ship. + + + + %1 has conceded the game. + male + %1 be shootin' the buccaneer's own ship. + + + + %1 has restored connection to the game. + female + + + + + %1 has restored connection to the game. + male + + + + + %1 has lost connection to the game. + female + %1 be abandonin' ship! + + + + %1 has lost connection to the game. + male + %1 be abandonin' ship! + + + + %1 shuffles %2. + female + + + + + %1 shuffles %2. + male + + + + + %1 rolls a %2 with a %3-sided die. + female + + + + + %1 rolls a %2 with a %3-sided die. + male + + + + %1 draws %n card(s). + female + + %1 draws a card. + %1 draws %n cards. + + + + %1 draws %n card(s). + male + + %1 draws a card. + %1 draws %n cards. + + + + + %1 undoes his last draw. + + + + + %1 undoes her last draw. + + + + + %1 undoes his last draw (%2). + + + + + %1 undoes her last draw (%2). + + + + + from exile + from the darkest depths o' the lass's Davy Jones' Locker + + + + the bottom card of %1's library + the bottom card o' %1's library + + + + the bottom card of his library + the bottom card o' the buccaneer's library + + + + the bottom card of her library + the bottom card o' the lass's library + + + + from the bottom of %1's library + from the bottom o' %1's library + + + + from the bottom of his library + from the bottom o' the buccaneer's library + + + + from the bottom of her library + from the bottom o' the lass's library + + + + the top card of %1's library + the top card o' %1's library + + + + the top card of his library + the top card o' the buccaneer's library + + + + the top card of her library + the top card o' the lass's library + + + + from the top of %1's library + from the top of %1's library + + + + from the top of his library + from the top o' the buccaneer's library + + + + from the top of her library + from the top o' the lass's library + + + + from %1's library + from %1's library + + + + from library + from library + + + + from sideboard + from sideplank + + + + from the stack + + + + + %1 gives %2 control over %3. + + + + + %1 puts %2 into play tapped%3. + + + + + %1 puts %2 into play%3. + + + + + %1 exiles %2%3. + + + + + %1 puts %2%3 into his library. + + + + + %1 puts %2%3 into her library. + + + + + %1 puts %2%3 on bottom of his library. + + + + + %1 puts %2%3 on bottom of her library. + + + + + %1 puts %2%3 on top of his library. + + + + + %1 puts %2%3 on top of her library. + + + + + %1 puts %2%3 into his library at position %4. + + + + + %1 puts %2%3 into her library at position %4. + + + + + %1 moves %2%3 to sideboard. + + + + + %1 plays %2%3. + + + + + %1 takes a mulligan to %n. + female + + + + + %1 takes a mulligan to %n. + male + + + + + %1 flips %2 face-down. + female + + + + + %1 flips %2 face-down. + male + + + + + %1 flips %2 face-up. + female + + + + + %1 flips %2 face-up. + male + + + + + %1 destroys %2. + female + %1 be firin' a broadside at %2! + + + + %1 destroys %2. + male + %1 be firin' a broadside at %2! + + + + %1 unattaches %2. + female + %1 be removin' %2. + + + + %1 unattaches %2. + male + %1 be removin' %2. + + + + %1 creates token: %2%3. + female + + + + + %1 creates token: %2%3. + male + + + + + %1 points from her %2 to herself. + female + %1 be pointin' from the lass's %2 to the lass herself. + + + + %1 points from his %2 to himself. + male + %1 be pointin' from the buccaneer's %2 to the buccaneer himself. + + + + %1 points from her %2 to %3. + p1 female, p2 female + + + + + %1 points from her %2 to %3. + p1 female, p2 male + + + + + %1 points from his %2 to %3. + p1 male, p2 female + + + + + %1 points from his %2 to %3. + p1 male, p2 male + + + + + %1 points from %2's %3 to herself. + card owner female, target female + + + + + %1 points from %2's %3 to herself. + card owner male, target female + + + + + %1 points from %2's %3 to himself. + card owner female, target male + + + + + %1 points from %2's %3 to himself. + card owner male, target male + + + + + %1 points from %2's %3 to %4. + p1 female, p2 female, p3 female + %1 be pointin' from %2's %3 to %4. + + + + %1 points from %2's %3 to %4. + p1 female, p2 female, p3 male + %1 be pointin' from %2's %3 to %4. + + + + %1 points from %2's %3 to %4. + p1 female, p2 male, p3 female + %1 be pointin' from %2's %3 to %4. + + + + %1 points from %2's %3 to %4. + p1 female, p2 male, p3 male + %1 be pointin' from %2's %3 to %4. + + + + %1 points from %2's %3 to %4. + p1 male, p2 female, p3 female + %1 be pointin' from %2's %3 to %4. + + + + %1 points from %2's %3 to %4. + p1 male, p2 female, p3 male + %1 be pointin' from %2's %3 to %4. + + + + %1 points from %2's %3 to %4. + p1 male, p2 male, p3 female + %1 be pointin' from %2's %3 to %4. + + + + %1 points from %2's %3 to %4. + p1 male, p2 male, p3 male + %1 be pointin' from %2's %3 to %4. + + + + %1 points from her %2 to her %3. + female + + + + + %1 points from his %2 to his %3. + male + + + + + %1 points from her %2 to %3's %4. + p1 female, p2 female + + + + + %1 points from her %2 to %3's %4. + p1 female, p2 male + + + + + %1 points from his %2 to %3's %4. + p1 male, p2 female + + + + + %1 points from his %2 to %3's %4. + p1 male, p2 male + + + + + %1 points from %2's %3 to her own %4. + card owner female, target female + + + + + %1 points from %2's %3 to her own %4. + card owner male, target female + + + + + %1 points from %2's %3 to his own %4. + card owner female, target male + + + + + %1 points from %2's %3 to his own %4. + card owner male, target male + + + + + %1 points from %2's %3 to %4's %5. + p1 female, p2 female, p3 female + %1 be pointin' from %2's %3 to %4's %5. + + + + %1 points from %2's %3 to %4's %5. + p1 female, p2 female, p3 male + %1 be pointin' from %2's %3 to %4's %5. + + + + %1 points from %2's %3 to %4's %5. + p1 female, p2 male, p3 female + %1 be pointin' from %2's %3 to %4's %5. + + + + %1 points from %2's %3 to %4's %5. + p1 female, p2 male, p3 male + %1 be pointin' from %2's %3 to %4's %5. + + + + %1 points from %2's %3 to %4's %5. + p1 male, p2 female, p3 female + %1 be pointin' from %2's %3 to %4's %5. + + + + %1 points from %2's %3 to %4's %5. + p1 male, p2 female, p3 male + %1 be pointin' from %2's %3 to %4's %5. + + + + %1 points from %2's %3 to %4's %5. + p1 male, p2 male, p3 female + %1 be pointin' from %2's %3 to %4's %5. + + + + %1 points from %2's %3 to %4's %5. + p1 male, p2 male, p3 male + %1 be pointin' from %2's %3 to %4's %5. + + + %1 places %n %2 counter(s) on %3 (now %4). + female + + + + %1 places %n %2 counter(s) on %3 (now %4). + male + + + + %1 removes %n %2 counter(s) from %3 (now %4). + female + %1 be removin' a %2 piece o' eight from %3 (now %4).%1 be removin' %n %2 pieces o' eight from %3 (now %4). + + + %1 removes %n %2 counter(s) from %3 (now %4). + male + %1 be removin' a %2 piece o' eight from %3 (now %4).%1 be removin' %n %2 pieces o' eight from %3 (now %4). + + + + %1 taps her permanents. + female + %1 be tappin' the lass's permanents. + + + + %1 untaps her permanents. + female + %1 be untappin' the lass's permanents. + + + + %1 taps his permanents. + male + %1 be tappin' the buccaneer's permanents. + + + + %1 untaps his permanents. + male + %1 be untappin' the buccaneer's permanents. + + + + %1 taps %2. + female + %1 be tappin' %2. + + + + %1 untaps %2. + female + %1 be untappin' %2. + + + + %1 taps %2. + male + %1 be tappin' %2. + + + + %1 untaps %2. + male + %1 be untappin' %2. + + + + %1 sets counter %2 to %3 (%4%5). + female + + + + + %1 sets counter %2 to %3 (%4%5). + male + + + + + %1 sets %2 to not untap normally. + female + + + + + %1 sets %2 to not untap normally. + male + + + + + %1 sets %2 to untap normally. + female + + + + + %1 sets %2 to untap normally. + male + + + + + %1 sets PT of %2 to %3. + female + + + + + %1 sets PT of %2 to %3. + male + + + + + %1 sets annotation of %2 to %3. + female + + + + + %1 sets annotation of %2 to %3. + male + + + + + %1 is looking at %2. + female + %1 be lookin' at %2. + + + + %1 is looking at %2. + male + %1 be lookin' at %2. + + + %1 is looking at the top %n card(s) %2. + female + + + + %1 is looking at the top %n card(s) %2. + male + + + + + %1 stops looking at %2. + female + + + + + %1 stops looking at %2. + male + + + + + %1 reveals %2 to %3. + p1 female, p2 female + + + + + %1 reveals %2 to %3. + p1 female, p2 male + + + + + %1 reveals %2 to %3. + p1 male, p2 female + + + + + %1 reveals %2 to %3. + p1 male, p2 male + + + + + %1 reveals %2. + female + + + + + %1 reveals %2. + male + + + + + %1 randomly reveals %2%3 to %4. + p1 female, p2 female + + + + + %1 randomly reveals %2%3 to %4. + p1 female, p2 male + + + + + %1 randomly reveals %2%3 to %4. + p1 male, p2 female + + + + + %1 randomly reveals %2%3 to %4. + p1 male, p2 male + + + + + %1 randomly reveals %2%3. + female + + + + + %1 randomly reveals %2%3. + male + + + + + %1 peeks at face down card #%2. + female + + + + + %1 peeks at face down card #%2. + male + + + + + %1 peeks at face down card #%2: %3. + female + + + + + %1 peeks at face down card #%2: %3. + male + + + + + %1 reveals %2%3 to %4. + p1 female, p2 female + + + + + %1 reveals %2%3 to %4. + p1 female, p2 male + + + + + %1 reveals %2%3 to %4. + p1 male, p2 female + + + + + %1 reveals %2%3 to %4. + p1 male, p2 male + + + + + %1 reveals %2%3. + female + + + + + %1 reveals %2%3. + male + + + + + %1 is now keeping the top card %2 revealed. + + + + + %1 is not revealing the top card %2 any longer. + + + + + It is now %1's turn. + female + + + + + It is now %1's turn. + male + + + + + + a card + + + + %1 places %n counter(s) (%2) on %3 (now %4). + + %1 places a counter (%2) on %3 (now %4). + %1 places %n counters (%2) on %3 (now %4). + + + + %1 removes %n counter(s) (%2) from %3 (now %4). + + %1 removes a counter (%2) from %3 (now %4). + %1 removes %n counters (%2) from %3 (now %4). + + + + + red + blood redblood red + + + + yellow + fool's goldfool's gold + + + + green + emerald greenemerald green + + + + The game has started. + + + + + %1 draws his initial hand. + + + + + %1 draws her initial hand. + + + + %1 places %n %2 counter(s) on %3 (now %4). + + %1 places a %2 counter on %3 (now %4). + %1 places %n %2 counters on %3 (now %4). + + + + %1 removes %n %2 counter(s) from %3 (now %4). + + %1 removes a %2 counter from %3 (now %4). + %1 removes %n %2 counters from %3 (now %4). + + + + + ending phase + + + + + untap step + + + + + %1 draws %2 card(s). + female + + + + + %1 draws %2 card(s). + male + + + + + from play + + + + + from her graveyard + + + + + from his graveyard + + + + + from her hand + + + + + from his hand + + + + + %1 puts %2%3 into her graveyard. + + + + + %1 puts %2%3 into his graveyard. + + + + + %1 moves %2%3 to her hand. + + + + + %1 moves %2%3 to his hand. + + + + + %1 attaches %2 to %3's %4. + p1 female, p2 female + + + + + %1 attaches %2 to %3's %4. + p1 female, p2 male + + + + + %1 attaches %2 to %3's %4. + p1 male, p2 female + + + + + %1 attaches %2 to %3's %4. + p1 male, p2 male + + + + + %1 places %2 %3 counter(s) on %4 (now %5). + female + + + + + %1 places %2 %3 counter(s) on %4 (now %5). + male + + + + + %1 removes %2 %3 counter(s) from %4 (now %5). + female + + + + + %1 removes %2 %3 counter(s) from %4 (now %5). + male + + + + + %1 is looking at the top %2 card(s) %3. + female + + + + + %1 is looking at the top %2 card(s) %3. + male + + + + + upkeep step + step where ye be upkeepin' + + + + draw step + step where ye be drawin' + + + + first main phase + first main phase + + + + beginning of combat step + step where ye begin fightin' + + + + declare attackers step + step where ye be orderin' ye men to board + + + + declare blockers step + step where ye be orderin' ye men to repel boarders + + + + combat damage step + step where people get hurt + + + + end of combat step + step where ye stop fightin' + + + + second main phase + second main phase + + + + It is now the %1. + Now it be t' %1. + + + + MessagesSettingsPage + + + Chat settings + Cap'n's orders for t' chat + + + + Custom alert words + + + + + Enable chat mentions + + + + + Enable mention completer + + + + + In-game message macros + + + + + Ignore chat room messages sent by unregistered users + + + + + Ignore private messages sent by unregistered users + + + + + Enable desktop notifications for private messages + + + + + Separate words with a space, alphanumeric characters only + + + + + + Invert text color + + + + + Enable desktop notification for mentions. + + + + + + (Color is hexadecimal) + + + + + Add message + + + + + Message: + + + + + PhasesToolbar + + + Untap step + Step where ye be untappin' + + + + Upkeep step + Step where ye be upkeepin' + + + + Draw step + Step where ye be drawin' + + + + First main phase + First main phase + + + + Beginning of combat step + Step where ye begin fightin' + + + + Declare attackers step + Step where ye be orderin' ye men to board + + + + Declare blockers step + Step where ye be orderin' ye men to repel boarders + + + + Combat damage step + Step where people get hurt + + + + End of combat step + Step where ye stop fightin' + + + + Second main phase + Second main phase + + + + End of turn step + Step where ye be endin' ye turn + + + + Player + + + &View library + &View library + + + + Move top cards to &graveyard... + Move top cards to Davy Jones' Locker + + + + View &top cards of library... + View &top cards o' library... + + + + &View graveyard + &View Davy Jones' Locker + + + + &View sideboard + &View sideplank + + + + Player "%1" + Matey "%1" + + + + + + + &Hand + &Hand + + + + &Reveal hand to... + &Reveal hand to... + + + + Reveal r&andom card to... + + + + + &Library + &Library + + + + + + + &Graveyard + Davy Jones' Locker + + + + &Sideboard + &Sideplank + + + + Red + Blood red + + + + Yellow + Fool's gold + + + + Green + Emerald green + + + + View top cards of library + View top cards o' library + + + + Number of cards: + Number o' cards: + + + + &Draw card + &Draw card + + + + Reveal top cards of library + + + + + Number of cards: (max. %1) + + + + + &View exile + + + + + + + + &Exile + + + + + Reveal t&op cards to... + + + + + D&raw cards... + + + + + Take &mulligan + + + + + &Shuffle + + + + + &Counters + Pie&ces o' eight + + + + &Untap all permanents + + + + + R&oll die... + + + + + &Create token... + + + + + C&reate another token + + + + + S&ay + + + + + &Move hand to... + + + + + + + + &Top of library + + + + + + + + &Bottom of library + + + + + &Move graveyard to... + + + + + &Move exile to... + + + + + Reveal &library to... + + + + + &Always reveal top card + + + + + O&pen deck in deck editor + O&pen flagship in dock + + + + &Undo last draw + + + + + Play top card &face down + + + + + Move top cards to &exile... + + + + + Put top card on &bottom + + + + + Put bottom card &in graveyard + + + + + Cr&eate predefined token + + + + + C&ard + + + + + &All players + + + + + &Play + + + + + &Hide + + + + + Play &Face Down + + + + + &Tap + + + + + &Untap + + + + + Toggle &normal untapping + + + + + &Flip + + + + + &Peek at card face + + + + + &Clone + + + + + Attac&h to card... + + + + + Unattac&h + + + + + &Draw arrow... + + + + + &Increase power + + + + + &Decrease power + + + + + I&ncrease toughness + + + + + D&ecrease toughness + + + + + In&crease power and toughness + + + + + Dec&rease power and toughness + + + + + Set &power and toughness... + + + + + &Set annotation... + + + + + &Add counter (%1) + &Add piece o' eight (%1) + + + + &Remove counter (%1) + &Remove piece o' eight (%1) + + + + &Set counters (%1)... + &Set pieces o' eight (%1)... + + + + Draw cards + + + + + + + + Number: + + + + + Move top cards to grave + + + + + Move top cards to exile + + + + + Roll die + + + + + Number of sides: + + + + + Set power/toughness + + + + + Please enter the new PT: + + + + + Set annotation + + + + + Please enter the new annotation: + + + + + Set counters + Set pieces o' eight + + + + Cr&eate related card + + + + + QMenuBar + + + Services + + + + + Hide %1 + + + + + Hide Others + + + + + Show All + + + + + Preferences... + + + + + Quit %1 + + + + + About %1 + + + + + QObject + + + Cockatrice replays (*.cor) + + + + + Common deck formats (*.cod *.dec *.mwDeck) + Common flagship materials (*.cod *.dec *.mwDeck) + + + + All files (*.*) + + + + + RemoteDeckList_TreeModel + + + Name + Name + + + + ID + + + + + Upload time + + + + + RemoteReplayList_TreeModel + + + ID + + + + + Name + Name + + + + Players + + + + + Keep + + + + + Time started + + + + + Duration (sec) + + + + + RoomSelector + + + Rooms + + + + + Joi&n + + + + + Room + + + + + Description + + + + + Permissions + + + + + Players + + + + + Games + + + + + + Error + + + + + You do not have the proper permission to join this room. + + + + + Failed to join the room due to an unknown error. + + + + + SequenceEdit + + + Shortcut already in use + + + + + SetsModel + + + Enabled + + + + + Set type + + + + + Set code + + + + + Long name + + + + + Release date + + + + + ShutdownDialog + + + &Reason for shutdown: + + + + + &Time until shutdown (minutes): + + + + + Shut down server + + + + + SoundSettingsPage + + + Choose path + + + + + Enable &sounds + + + + + Path to sounds directory: + + + + + Test system sound engine + + + + + Sound settings + Cap'n's orders for t' shanties + + + + Master volume requires QT5 + + + + + Master volume + + + + + TabAdmin + + + Update server &message + + + + + &Shut down server + + + + + &Reload configuration + + + + + Server administration functions + + + + + &Unlock functions + + + + + &Lock functions + + + + + Unlock administration functions + + + + + Do you really want to unlock the administration functions? + + + + + Administration + + + + + TabDeckEditor + + + &Print deck... + &Print flagship... + + + + &Close + + + + + &Edit sets... + &Edit fleets... + + + + Filters + + + + + &Clear all filters + + + + + Delete selected + + + + + Deck &name: + Flagship &name: + + + + &Comments: + + + + + Hash: + + + + + &New deck + Freshly formed flagship + + + + &Load deck... + Find a flagship... + + + + &Save deck + Record flag&ship + + + + Save deck &as... + Record flagship &as... + + + + Load deck from cl&ipboard... + Find a flagship from t' cl&ipplank + + + + Save deck to clip&board + Record flagship on t' clipplank + + + + &Analyze deck on deckstats.net + + + + + Open custom image folder + + + + + Open custom sets folder + + + + + Add card to &maindeck + Add card to t' &mainplank + + + + Add card to &sideboard + + + + + &Deck Editor + &Dock + + + + C&ard Database + + + + + Show/Hide card information + + + + + Show/Hide deck + + + + + Show/Hide filters + + + + + Reset layout + + + + + Card Info + + + + + Deck + + + + + Welcome + + + + + Hi! It seems like you're running this version of Cockatrice for the first time. +All the sets in the card database have been enabled. +Read more about changing the set order or disabling specific sets and consequent effects in the "Edit Sets" window. + Ahoy, me matey! It be seemin' like ye be runnin' this version o' Cockatrice for t' first time! +All t' fleets in the dock be enabled. +Read more about changing the fleet order or decommissioning specific fleet and consequent effects in the "Edit Fleets" window. + + + + &Remove row + + + + + &Increment number + + + + + &Decrement number + + + + + Edit &tokens... + + + + + Deck: %1 + Flagship: %1 + + + + Are you sure? + + + + + The decklist has been modified. +Do you want to save the changes? + + + + + Load deck + Find a flagship + + + + + + Error + Cap'n? Thar be a problem + + + + The deck could not be saved. + T' flagship be failin' to be recordin'! + + + + + The deck could not be saved. +Please check that the directory is writable and try again. + + + + + Save deck + Record flagship + + + + TabDeckStorage + + + Local file system + + + + + Server deck storage + O'er ship's flagship port + + + + + Open in deck editor + Open in dock + + + + Upload deck + + + + + Download deck + + + + + + New folder + + + + + + Delete + + + + + Enter deck name + Enter flagship name + + + + This decklist does not have a name. +Please enter a name: + + + + + Unnamed deck + Unnamed flagship + + + + Delete local file + + + + + + + Are you sure you want to delete "%1"? + + + + + Name of new folder: + + + + + Delete remote folder + + + + + Delete remote deck + + + + + Deck storage + Flagship port + + + + TabGame + + + &Phases + + + + + &Game + + + + + Next &phase + + + + + Next &turn + + + + + &Remove all local arrows + + + + + Rotate View Cl&ockwise + + + + + Rotate View Co&unterclockwise + + + + + Game &information + + + + + &Concede + + + + + &Leave game + + + + + C&lose replay + + + + + &Say: + + + + + Concede + + + + + Are you sure you want to concede this game? + + + + + Leave game + + + + + Are you sure you want to leave this game? + + + + + You are flooding the game. Please wait a couple of seconds. + + + + + You have been kicked out of the game. + + + + + REPLAY + + + + + TabMessage + + + Private &chat + + + + + &Leave + + + + + %1 - Private chat + + + + + This user is ignoring you. + + + + + Private message from + + + + + %1 has left the server. + + + + + %1 has joined the server. + + + + + TabReplays + + + Local file system + + + + + Server replay storage + + + + + + Watch replay + + + + + + Delete + + + + + Download replay + + + + + Toggle expiration lock + + + + + Delete local file + + + + + Are you sure you want to delete "%1"? + + + + + Delete remote replay + + + + + Are you sure you want to delete the replay of game %1? + + + + + Game replays + + + + + TabRoom + + + &Say: + + + + + Chat + + + + + &Room + + + + + &Leave room + + + + + &Clear chat + + + + + Chat Settings... + Cap'n's orders for t' chat... + + + + mentioned you. + + + + + Click to view + + + + + You are flooding the chat. Please wait a couple of seconds. + + + + + TabServer + + + Server + + + + + TabSupervisor + + + Are you sure? + + + + + There are still open games. Are you sure you want to quit? + + + + + Promotion + + + + + You have been promoted to moderator. Please log out and back in for changes to take effect. + + + + + TabUserLists + + + Add to Buddy List + + + + + Add to Ignore List + + + + + Account + + + + + UserContextMenu + + + User &details + + + + + Private &chat + + + + + Show this user's &games + + + + + Add to &buddy list + + + + + Remove from &buddy list + + + + + Add to &ignore list + + + + + Remove from &ignore list + + + + + Kick from &game + + + + + Ban from &server + + + + + &Promote user to moderator + + + + + Dem&ote user from moderator + + + + + %1's games + + + + + + Success + + + + + Successfully promoted user. + + + + + Successfully demoted user. + + + + + + Failed + + + + + Failed to promote user. + + + + + Failed to demote user. + + + + + UserInfoBox + + + User information + + + + + Real name: + + + + + Pronouns: + + + + + Location: + + + + + User level: + + + + + Account Age: + + + + + Edit + + + + + Change password + + + + + Change avatar + + + + + Administrator + + + + + Moderator + + + + + Registered user + + + + + + Unregistered user + + + + + Unknown + + + + + Year + + + + + Years + + + + + Day + + + + + Days + + + + + + + Information + + + + + User information updated. + + + + + + + + + + + + Error + + + + + This server does not permit you to update your user informations. + + + + + + An error occured while trying to update your user informations. + + + + + Password changed. + + + + + This server does not permit you to change your password. + + + + + The new password is too short. + + + + + The old password is incorrect. + + + + + Avatar updated. + + + + + This server does not permit you to update your avatar. + + + + + An error occured while trying to updater your avatar. + + + + + UserInterfaceSettingsPage + + + General interface settings + + + + + Enable notifications in taskbar + + + + + Notify in the taskbar for game events while you are spectating + + + + + &Double-click cards to play them (instead of single-click) + + + + + &Play all nonlands onto the stack (not the battlefield) by default + + + + + Annotate card text on tokens + + + + + Animation settings + Cap'n's orders for t' things that be movin' + + + + &Tap/untap animation + + + + + UserList + + + Users connected to server: %1 + + + + + Users in this room: %1 + + + + + Buddies online: %1 / %2 + + + + + Ignored users online: %1 / %2 + + + + + WndSets + + + Enable all sets + Enable all fleets + + + + Disable all sets + Disable all fleets + + + + Move selected set up + Move selected fleet up + + + + Move selected set to the top + Move selected fleet to the top + + + + Move selected set down + Move selected fleet down + + + + Move selected set to the bottom + Move selected fleet to the bottom + + + + hints: + + + + + Enable the sets that you want to have available in the deck editor + Enable t' fleets that ye want to be ready in the dock + + + + Move sets around to change their order, or click on a column header to sort sets on that field + + + + + Sets order decides the source that will be used when loading images for a specific card + Fleet formation be decidin' t' source that be used to load pics for a specific card + + + + Disabled sets will be used for loading images only if all the enabled sets failed + + + + + Edit sets + Edit fleets + + + + Success + + + + + The sets database has been saved successfully. + + + + + ZoneViewWidget + + + sort by name + + + + + sort by type + + + + + shuffle when closing + + + + + pile view + + + + + shortcutsTab + + + Form + + + + + Main Window + + + + + Deck editor + + + + + Local gameplay + + + + + Watch replay + + + + + Connect + + + + + Register + + + + + Full screen + + + + + Settings + + + + + Check for card updates + + + + + Exit + + + + + Deck Editor + + + + + Analyze deck + + + + + Load deck (clipboard) + + + + + Clerar all filters + + + + + New deck + + + + + Clear one filter + + + + + Open custom folder + + + + + Close + + + + + Print deck + + + + + Edit sets + + + + + Delete card + + + + + Edit tokens + + + + + Reset layout + + + + + Add card + + + + + Save deck + + + + + Remove card + + + + + Save deck as + + + + + Load deck + + + + + Save deck (clipboard) + + + + + + Counters + + + + + Life + + + + + + + + + Set + + + + + + + + Add + + + + + + + + Remove + + + + + Red + + + + + Green + + + + + Yellow + + + + + Mainwindow / Deck editor + + + + + Power / toughness + + + + + Power and toughness + + + + + Add (+1/+1) + + + + + Remove (-1/-1) + + + + + Toughness + + + + + Remove (-0/-1) + + + + + Add (+0/+1) + + + + + Power + + + + + Remove (-1/-0) + + + + + Add (+1/+0) + + + + + Game Phases + + + + + Untap + + + + + Disconnect + + + + + Upkeep + + + + + + Draw + + + + + Main 1 + + + + + Start combat + + + + + Attack + + + + + Block + + + + + Damage + + + + + End combat + + + + + Main 2 + + + + + End + + + + + Next phase + + + + + Next turn + + + + + Player + + + + + Tap Card + + + + + Untap Card + + + + + Untap all + + + + + Toogle untap + + + + + Flip card + + + + + Peek card + + + + + Play card + + + + + Attach card + + + + + Unattach card + + + + + Clone card + + + + + Create token + + + + + Create another token + + + + + Set annotation + + + + + Phases / P/T / Player + + + + + Move card to + + + + + Bottom library + + + + + Top library + + + + + + Graveyard + + + + + + Exile + + + + + Hand + + + + + View + + + + + Library + + + + + Tops card of library + + + + + Sideboard + + + + + Close recent view + + + + + Pre-play + + + + + Load remote deck + + + + + Load local deck + + + + + Game play + + + + + Draw arrow + + + + + Leave game + + + + + Remove local arrows + + + + + Concede + + + + + Roll dice + + + + + Rotate view CW + + + + + Shuffle library + + + + + Rotate view CCW + + + + + Mulligan + + + + + Draw card + + + + + Draw cards + + + + + Undo draw + + + + + Always reveal top card + + + + + Draw / Move / View / Game play + + + + \ No newline at end of file diff --git a/cockatrice/translations/cockatrice_es.ts b/cockatrice/translations/cockatrice_es.ts index de280835..aef58295 100644 --- a/cockatrice/translations/cockatrice_es.ts +++ b/cockatrice/translations/cockatrice_es.ts @@ -2,17 +2,17 @@ AbstractCounter - + &Set counter... - Establecer &contador... + Establecer &contadores - + Set counter - Establecer contador + Poner contadores - + New value for counter '%1': Nuevo valor para el contador '%1': @@ -20,89 +20,60 @@ AppearanceSettingsPage - - Zone background pictures - Imagenes de la zona de fondo + + Theme settings + - - Hand background: - Fondo para la mano + + Current theme: + - - Stack background: - Fondo para la pila - - - - Table background: - Fondo para la mesa - - - - Player info background: - Fondo para la información del jugador - - - - Card back: - Reverso de la carta - - - + Card rendering Renderizado de las cartas - + Display card names on cards having a picture Mostrar nombre de las cartas en aquellas que tengan imagen - + Scale cards on mouse over Cambiar tamaño de las cartas al pasar el ratón por encima - + Hand layout Disposición de la mano - + Display hand horizontally (wastes space) Mostrar la mano horizontalmente (desperdicia espacio) - + Enable left justification Habilitar justificación izquierda - + Table grid layout Disposición de la rejilla de la mesa - + Invert vertical coordinate Invertir coordenada vertical - + Minimum player count for multi-column layout: Número minimo de jugadores para usar la rejilla multicolumna: - - - - - - - Choose path - Elija ruta - BanDialog @@ -117,87 +88,110 @@ dirección &IP baneada - + + ban client I&D + + + + Ban type Tipo de Ban - + &permanent ban - ban &permanente + acceso prohibido &permanentemente - + &temporary ban - ban &temporal + acceso prohibido &temporalmente - + &Days: &Días: - + &Hours: &Horas: - + &Minutes: &Minutos: - + Duration of the ban Duración del ban - + Please enter the reason for the ban. This is only saved for moderators and cannot be seen by the banned person. - Por favor, introduce el motivo del ban -Se almacenará unicamente para moderadores y no podrá ser visto por la persona baneada. + Por favor, introduce el motivo del restricción al acceso +Se almacenará unicamente para moderadores y no podrá ser visto por la persona restringida. - + Please enter the reason for the ban that will be visible to the banned person. - Por favor, introduce el motivo del ban que será visible para la persona baneada. + Por favor, introduce el motivo de la restricción que será visible para la persona restringida. - + &OK - &Aceptar + Aceptar (&O) - + &Cancel &Cancelar - + Ban user from server Banear usuario del servidor - + + + + Error Error - - You have to select a name-based or IP-based ban, or both. - Debes seleccionar banear por nombre, por IP o por ambos. + + You have to select a name-based, IP-based, clientId based, or some combination of the three to place a ban. + + + + + You must have a value in the name ban when selecting the name ban checkbox. + + + + + You must have a value in the ip ban when selecting the ip ban checkbox. + + + + + You must have a value in the clientid ban when selecting the clientid ban checkbox. + CardDatabase - + New sets found Nuevos sets encontrados - + %1 new set(s) have been found in the card database. Do you want to enable them? %1 nuevo(s) set(s) han sido encontrados en la base de datos de cartas. ¿Quieres habilitarlos? @@ -233,17 +227,17 @@ Se almacenará unicamente para moderadores y no podrá ser visto por la persona CardFrame - + Image Imagen - + Description Descripción - + Both Ambos @@ -263,7 +257,7 @@ Se almacenará unicamente para moderadores y no podrá ser visto por la persona Color(s): - + Color(es) @@ -299,27 +293,32 @@ Se almacenará unicamente para moderadores y no podrá ser visto por la persona Mostrar información completa - + Name: Nombre: - + Mana cost: Coste de mana: - + + Color(s): + + + + Card type: Tipo de carta: - + P / T: F / R: - + Loyalty: Lealtad: @@ -329,7 +328,7 @@ Se almacenará unicamente para moderadores y no podrá ser visto por la persona &Power / toughness - &Fuerza / resistencia + Fuerza / resistencia (&P) @@ -583,12 +582,12 @@ Se almacenará unicamente para moderadores y no podrá ser visto por la persona DeckEditorSettingsPage - + Nothing is here... yet No hay nada aquí... aún - + General General @@ -596,17 +595,17 @@ Se almacenará unicamente para moderadores y no podrá ser visto por la persona DeckListModel - + Number Número - + Card Carta - + Price Precio @@ -628,42 +627,42 @@ Se almacenará unicamente para moderadores y no podrá ser visto por la persona DeckViewContainer - + Load local deck - + Cargar mazo desde la PC local - + Load deck from server - + Cargar mazo desde el servidor - + Ready to s&tart - Listo para &empezar + Listo para empezar (&T) - + S&ideboard unlocked - &Reserva desbloqueada + Banquillo desbloqueado (&I) - + S&ideboard locked - R&eserva bloqueada + Banquillo bloqueado (&I) - + Load deck Cargar mazo - + Error Error - + The selected file could not be loaded. El fichero seleccionado no puede cargarse. @@ -693,7 +692,7 @@ Se almacenará unicamente para moderadores y no podrá ser visto por la persona O&K - &Aceptar + Aceptar (&K) @@ -709,37 +708,52 @@ Se almacenará unicamente para moderadores y no podrá ser visto por la persona DlgConnect - + + Previous Host + + + + + New Host + + + + &Host: &Dirección: - + + Enter host name + + + + &Port: &Puerto: - + Player &name: &Nombre del jugador: - + P&assword: &Contraseña: - + &Save password &Guardar contraseña - + A&uto connect at start Conectarse a&utomaticamente al iniciar - + Connect to server Conectar con el servidor @@ -747,82 +761,92 @@ Se almacenará unicamente para moderadores y no podrá ser visto por la persona DlgCreateGame - + &Description: &Descripción: - + &Password: &Contraseña: - + P&layers: &Jugadores: - + + Re&member settings + + + + Game type Tipo de partida - + Only &buddies can join Sólo los &amigos pueden participar - + Only &registered users can join Sólo los usuarios &registrados pueden participar - + Joining restrictions Restricciones de participación - + &Spectators can watch E&spectadores pueden observar - + Spectators &need a password to watch Los espectadores &necesitan contraseña para unirse - + Spectators can see &hands Los espectadores pueden ver las &manos - + Spectators can &chat Los espectadores pueden &chatear - + Spectators Espectadores - + + &Clear + + + + Create game Crear partida - + Game information Información de la partida - + Error Error - + Server error. Error del servidor. @@ -926,71 +950,72 @@ Se almacenará unicamente para moderadores y no podrá ser visto por la persona No image chosen. - + Ninguna imagen seleccionada To change your avatar, choose a new image. To remove your current avatar, confirm without choosing a new image. - + Para cambiar tu avatar, elige una nueva imagen. +Para eliminar tu avatar actual, confirma sin elegir una nueva imagen. Browse... - + Buscar Change avatar - + Cambiar avatar Open Image - + Abrir imagen Image Files (*.png *.jpg *.bmp) - + Archivos de imagen (*.png *.jpg *.bmp) Invalid image chosen. - + La imagen seleccionada no es válida. DlgEditPassword - + Old password: - + Contraseña anterior: - + New password: - + Nueva contraseña: - + Confirm new password: - + Confirmar la nueva contraseña: - + Change password - + Cambiar contraseña - + Error - + Error - + The new passwords don't match. - + Las nuevas contraseñas no coinciden. @@ -1091,95 +1116,95 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgEditUser - + Email: - + Email: - + Pronouns: - + Género: + + + + Neutral + Neutro - Neutral - + Masculine + Masculino - Masculine - - - - Feminine - + Femenino - + Country: - + País: - + Undefined - + Indefinido - + Real name: - + Nombre real: - + Edit user profile - + Editar perfil de usuario DlgFilterGames - + Show &unavailable games Mostrar partidas &no disponibles - + Show &password protected games Mostrar juegos protegidos con contraseña - + Game &description: &Descipción de la partida: - + &Creator name: &Nombre del creador: - + &Game types Tipo de &partida - + at &least: al &menos: - + at &most: &como máximo: - + Maximum player count Máximo número de jugadores - + Filter games Filtrar partidas @@ -1187,7 +1212,7 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgLoadDeckFromClipboard - + &Refresh &Refrescar @@ -1197,14 +1222,14 @@ Make sure to enable the 'token set' in the 'Edit sets...' di Cargar mazo del portapapeles - - + + Error Error - - + + Invalid deck list. Lista de mazo invalida. @@ -1220,67 +1245,93 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgRegister - + &Host: &Host: - + &Port: &Puerto: - + Player &name: &Nombre del jugador: - + P&assword: &Contraseña: - + + Password (again): + + + + Email: Email: - + + Email (again): + + + + Pronouns: - + Genero: - + Neutral - + Neutro - + Masculine - - - - - Feminine - + Masculino + Feminine + Femenino + + + Undefined Indefinido - + + + Registration Warning + + + + + Your passwords do not match, please try again. + + + + + Your email addresses do not match, please try again. + + + + Country: País: - + Real name: Nombre real: - + Register to server Registrar en el servidor @@ -1288,19 +1339,19 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgSettings - - - + + + Error Error - + Unknown Error loading card database Error desconocido cargando la base de datos de cartas. - + Your card database is invalid. Cockatrice may not function correctly with an invalid database @@ -1317,7 +1368,7 @@ Podrías necesitar volver a ejecutar oracle para actualizar tu base de datos de ¿Quieres cambiar la ubicación de tu base de datos? - + Your card database version is too old. This can cause problems loading card information or images @@ -1334,7 +1385,7 @@ Normalmente esto se soluciona volviendo a ejecutar oracle para actualizar tu bas ¿Quieres cambiar la ubicación de tu base de datos? - + File Error loading your card database. Would you like to change your database location setting? @@ -1343,7 +1394,7 @@ Would you like to change your database location setting? ¿Quieres cambiar la ubicación de tu base de datos? - + Your card database was loaded but contains no cards. Would you like to change your database location setting? @@ -1352,7 +1403,7 @@ Would you like to change your database location setting? ¿Quieres cambiar la ubicación de tu base de datos? - + Your card database did not finish loading Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues with your cards.xml attached @@ -1365,7 +1416,7 @@ Por favor, abre un ticket en http://github.com/Cockatrice/Cockatrice/issues adju ¿Quieres cambiar la ubicación de tu base de datos? - + Unknown card database load status Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues @@ -1378,50 +1429,55 @@ Por favor, abre un ticket en http://github.com/Cockatrice/Cockatrice/issues. ¿Quieres cambiar la ubicación de tu base de datos? - + The path to your deck directory is invalid. Would you like to go back and set the correct path? La ruta a tu directorio de mazos es invalida. ¿Deseas volver y seleccionar la ruta correcta? - + The path to your card pictures directory is invalid. Would you like to go back and set the correct path? La ruta a tu directorio de imagenes de las cartas es invalida.¿Deseas volver y seleccionar la ruta correcta? - + Settings Preferencias - + General General - + Appearance Apariencia - + User Interface Interfaz de usuario - + Deck Editor Editor de mazos - + Chat Chat - + Sound Sonido + + + Shortcuts + + GameSelector @@ -1434,7 +1490,7 @@ Por favor, abre un ticket en http://github.com/Cockatrice/Cockatrice/issues. - + Error Error @@ -1479,47 +1535,47 @@ Por favor, abre un ticket en http://github.com/Cockatrice/Cockatrice/issues. Estas siendo ignorado por el creador de la partida. - + Join game Entrar en la partida - + Password: Contraseña: - + Please join the respective room first. Por favor, entre primero en la sala respectiva. - + Games Partidas + + + &Filter games + + - Filter games + C&lear filter - Clear filter + C&reate - - Create + + &Join - - Join - - - - + J&oin as spectator Entrar como e&spectador @@ -1636,107 +1692,112 @@ Por favor, abre un ticket en http://github.com/Cockatrice/Cockatrice/issues. GeneralSettingsPage - + Reset/Clear Downloaded Pictures Reajustar/Borrar Imagenes Descargadas - - - - - + + + + + Choose path Elija ruta - + Success Éxito - + Downloaded card pictures have been reset. Las imágenes descargadas de las cartas han sido reseteadas. - + Error Error - + One or more downloaded card pictures could not be cleared. Una o más imágenes descargadas de las cartas no han podido eliminarse. - + Personal settings Preferencias personales - + Language: Idioma: - + Download card pictures on the fly Descargar imagenes de las cartas al vuelo - + Download card pictures from a custom URL Descargar imágenes de las cartas desde una URL distinta - + Custom Card Download URL: URL de descarga de cartas personalizadas: - + Linking FAQ Enlace a Preguntas Frecuentes - + + Notify when new client features are available + + + + Paths Rutas - + Decks directory: Directorio de mazos: - + Replays directory: Directorio de replays: - + Pictures directory: Directorio de imagenes: - + Card database: Base de datos de cartas: - + Token database: Base de datos de tokens: - + Picture cache size: Tamaño del cache de imágenes: - - + + English Español (Spanish) @@ -1744,49 +1805,49 @@ Por favor, abre un ticket en http://github.com/Cockatrice/Cockatrice/issues. MainWindow - + There are too many concurrent connections from your address. Hay demasiadas conexiones simultaneas desde tu dirección. - + Scheduled server shutdown. Desconexión programada del servidor. - + Banned by moderator Baneado por el moderador - + Expected end time: %1 Tiempo de finalización estimado: %1 - + This ban lasts indefinitely. Este ban permanecerá indefinidamente. - + Connection closed Conexión cerrada - + The server has terminated your connection. Reason: %1 El servidor ha finalizado tu conexión. Motivo: %1 - + Scheduled server shutdown Desconexión programada del servidor - + The server is going to be restarted in %n minute(s). All running games will be lost. Reason for shutdown: %1 @@ -1797,455 +1858,500 @@ Todos los juegos en curso se cerraran. Motivo para la desconexión: %1 - + Number of players Número de jugadores - + Please enter the number of players. Por favor, introduzca el número de jugadores. - - + + Player %1 Jugador %1 - + Load replay Cargar replay - + About Cockatrice Acerca de Cockatrice - + Version %1 Versión %1 - + Translators: Traductores: - + Project Manager: Jefe de Proyecto: - - - Invalid username. + + The server has reached its maximum user capacity, please check back later. - - + + + Invalid username. + El nombre de usuario no es valido. + + + + You have been logged out due to logging in at another location. + + + + + Success Éxito - + Registration accepted. Will now login. Resgistro aceptado. Iniciando sesión. - + Account activation accepted. Will now login. Activación de la cuenta aceptada. Iniciando sesión. - + Past Project Managers: Antiguos Jefes de Proyecto: - + Developers: Desarrolladores: - + Our Developers Nuestros desarrolladores - + Help Develop! ¡Ayuda a desarrollar! - + Recognition Page Página de identificación - + Help Translate! ¡Ayuda a traducir! - + Support: Soporte: - + Report an Issue Reporta un problema - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + Error Error - + Server timeout Tiempo de espera del servidor agotado - + + Failed Login + + + + + Your client does not support features that the server requires, please update your client and try again. + + + + Incorrect username or password. Please check your authentication information and try again. Nombre de usuario o contraseña incorrecto. Por favor, verifica tu información de autentificación y vuelve a intentarlo. - + There is already an active session using this user name. Please close that session first and re-login. Ya existe una sesión activa usando ese nombre de usuario. Por favor, cierra esa sesión primero y reintentalo. - - + + You are banned until %1. Estás baneado hasta %1. - - + + You are banned indefinitely. Estás baneado indefinidamente. - + This server requires user registration. Do you want to register now? Este servidor requiere el registro de usuarios. ¿Quieres registrarte ahora? - + + This server requires client ID's. Your client is either failing to generate an ID or you are running a modified client. +Please close and reopen your client to try again. + + + + + An internal error has occurred, please try closing and reopening your client and try again. If the error persists try updating your client to the most recent build and if need be contact your software provider. + + + + Account activation Activación de cuenta - - Your account has not been activated yet. - You need to provide the activation token received in the activation email - Tu cuenta aún no ha sido activada. -Utiliza el código de activación recibido en el correo de activación - - - - + Unknown login error: %1 Error de login desconocido: %1 - + + + +This usually means that your client version is out of date, and the server sent a reply your client doesn't understand. + + + + Your username must respect these rules: - + Tu nombre de usuario debe: - + is %1 - %2 characters long - + Tener de %1 a %2 caracteres de longitud. - + can %1 contain lowercase characters - + %1 Puede tener minúsculas. - - - - + + + + NOT - - - - - can %1 contain uppercase characters - - - - - can %1 contain numeric characters - - - - - can contain the following punctuation: %1 - - - - - first character can %1 be a punctuation mark - - - - - You may only use A-Z, a-z, 0-9, _, ., and - in your username. - + NO - - - - + can %1 contain uppercase characters + %1 Puede tener mayúsculas. + + + + can %1 contain numeric characters + %1 Puede tener caracteres númericos. + + + + can contain the following punctuation: %1 + Puede tener los siguientes signos de puntuación: %1 + + + + first character can %1 be a punctuation mark + El primer caracter %1 puede ser un signo de puntuación. + + + + You may only use A-Z, a-z, 0-9, _, ., and - in your username. + Sólo puedes usar A-Z, a-z, 0-9, _, ., y - en tu nombre de usuario + + + + + + + Registration denied Registro denegado - + Registration is currently disabled on this server El registro está actualmente deshabilitado en este servidor - + There is already an existing account with the same user name. Ya existe una cuenta con ese nombre - + It's mandatory to specify a valid email address when registering. Es obligatorio especificar una dirección de correo válida al registrarse. - + Too many registration attempts from your IP address. Demasiados intentos de registro desde tu dirección IP. - + Password too short. La contraseña es demasiado corta. - + Registration failed for a technical problem on the server. El registro falló debido a un problema técnico en el servidor. - + + Unknown registration error: %1 + + + + Account activation failed La activación de cuenta falló. - + Socket error: %1 Error del Socket: %1 - + 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. 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. - + Your Cockatrice client is obsolete. Please update your Cockatrice version. Local version is %1, remote version is %2. Tu cliente de Cockatrice esta obsoleto. Por favor, actualiza tu versión de Cockatrice. La versión local es %1, la versión remota es %2. - + Connecting to %1... Conectando a %1... - + Registering to %1 as %2... Registrando en %1 como %2... - + Disconnected Desconectado - + Connected, logging in at %1 Conectado, hora de login: %1 - - Logged in as %1 at %2 - Connectado como %1 en %2 - - - + &Connect... &Conectar... - + &Disconnect &Desconectar - + Start &local game... Empezar partida &local... - + &Watch replay... &Ver replay... - + &Deck editor Editor de &mazos - + &Full screen &Pantalla completa - + &Register to server... &Registrarse en el servidor... - + &Settings... &Preferencias... - - + + &Exit &Salir - + A&ctions A&cciones - + &Cockatrice &Cockatrice - + &About Cockatrice &Acerca de Cockatrice - + &Help A&yuda - + Check for card updates... Comprueba las actualizaciones de las cartas... - + A card database update is already running. La actualización de la carta ya está en marcha. - + Unable to run the card database updater: Imposible iniciar el actualizador de cartas: - + The card database updater exited with an error: %1 El actualizador de cartas terminó con el error: %1 - + Update completed successfully. Cockatrice will now reload the card database. La actualización de cartas ha terminado correctamente. La base de datos de cartas se reiniciará ahora. - - + + Your client appears to be missing features that the server supports. +This usually means that your client version is out of date, please check to see if there is a new client available for download. + + + + + + Information Información - + Troubleshooting - + Problemas frecuentes - + F.A.Q. + Preguntas frecuentes + + + + Your account has not been activated yet. +You need to provide the activation token received in the activation email - + failed to start. falló al iniciar. - + crashed. falló. - + timed out. tiempo agotado. - + write error. error de escritura. - + read error. error de lectura. - + unknown error. error desconocido. @@ -3485,62 +3591,74 @@ La versión local es %1, la versión remota es %2. MessagesSettingsPage - + Chat settings Preferencias de Chat - + + Custom alert words + + + + Enable chat mentions Habilitar las menciones en el chat - + + Enable mention completer + + + + In-game message macros Macros para mensajes durante la partida - - Ignore unregistered users in main chat - Ignorar usuarios no registrados en el chat principal. + + Ignore chat room messages sent by unregistered users + - - Ignore chat room messages sent by unregistered users. - Ignorar mensajes enviados por usuarios no registrados. + + Ignore private messages sent by unregistered users + - - Ignore private messages sent by unregistered users. - Ignorar mensajes privados enviados por usuarios no registrados. + + Enable desktop notifications for private messages + - + + Separate words with a space, alphanumeric characters only + + + + + Invert text color Invertir el color del texto - - Enable desktop notifications for private messages. - Activar notificaciones de escritorio para mensajes privados. - - - + Enable desktop notification for mentions. Activar notificaciones de escritorio para las menciones. - + + (Color is hexadecimal) (El color es hexadecimal) - + Add message Añadir mensaje - + Message: Mensaje: @@ -3606,435 +3724,435 @@ La versión local es %1, la versión remota es %2. Player - + &View library &Ver biblioteca - + Move top cards to &graveyard... Mover cartas de la parte s&uperior de la biblioteca al cementerio... - + View &top cards of library... Ver cartas de la parte &superior de la biblioteca... - + &View graveyard Ver &Cementerio - + &View sideboard Ver &sideboard - + Player "%1" Jugador "%1" - - - - + + + + &Hand &Mano - + &Reveal hand to... &Enseñar mano a... - + Reveal r&andom card to... Revelar una carta al &azar a... - + &Library &Biblioteca - - - - + + + + &Graveyard &Cementerio - + &Sideboard &Reserva - + Red Rojo - + Yellow Amarillo - + Green Verde - + View top cards of library Ver cartas de la parte superior de la biblioteca - + Number of cards: Número de cartas: - + &Draw card &Robar carta - + Reveal top cards of library Muestra las primeras cartas de la biblioteca - + Number of cards: (max. %1) Número de cartas: (máx. %1) - + &View exile Ver &exilio - - - - + + + + &Exile &Exilio - + Reveal t&op cards to... Mostrar las &primeras cartas a... - + D&raw cards... &Robar cartas... - + Take &mulligan Hacer &mulligan - + &Shuffle &Barajar - + &Counters &Contadores - + &Untap all permanents &Enderezar todos los permanentes - + R&oll die... &Lanzar dado... - + &Create token... Crear &Ficha... - + C&reate another token C&rea otra ficha - + S&ay D&ecir - + &Move hand to... &Mover a - - - - + + + + &Top of library &parte superior de la biblioteca - - - - + + + + &Bottom of library &fondo de la biblioteca - + &Move graveyard to... &Mover el cementerio a... - + &Move exile to... Mover las cartas exiliadas a... - + Reveal &library to... Enseñar &biblioteca a... - + &Always reveal top card &Siempre revelar la carta superior - + O&pen deck in deck editor &Abrir mazo en el editor de mazos - + &Undo last draw &Deshacer último robo - + Play top card &face down Jugar la primera carta &boca abajo - + Move top cards to &exile... Mover cartas superiores al &exilio... - + Put top card on &bottom Poner carta superior en la parte &inferior - + Put bottom card &in graveyard Poner la última carta &en el cementerio - + Cr&eate predefined token Cr&ear ficha predefinida - + C&ard C&arta - + &All players &Todos los jugadores - + &Play &Jugar - + &Hide &Ocultar - + Play &Face Down Jugar boca abajo - + &Tap &Girar - + &Untap &Enderezar - + Toggle &normal untapping Alternar enderezamiento &normal - + &Flip &Voltear - + &Peek at card face &Mirar el dorso de la carta - + &Clone &Clonar - + Attac&h to card... Ane&xar a una carta... - + Unattac&h Desane&xar - + &Draw arrow... &Dibujar flecha... - + &Increase power &Incrementar fuerza - + &Decrease power &Decrementar fuerza - + I&ncrease toughness I&ncrementar resistencia - + D&ecrease toughness D&ecrementar resistencia - + In&crease power and toughness In&crementar fuerza y resistencia - + Dec&rease power and toughness Dec&rementar fuerza y resistencia - + Set &power and toughness... Establecer &fuerza y resistencia... - + &Set annotation... E&scribir anotación... - + &Add counter (%1) &Añadir contador (%1) - + &Remove counter (%1) &Quitar contador (%1) - + &Set counters (%1)... E&stablecer contadores (%1)... - + Draw cards Robar cartas - - - - + + + + Number: Número: - + Move top cards to grave Mover cartas superiores al cementerio - + Move top cards to exile Mover cartas superiores al exilio - + Roll die Lanzar dado - + Number of sides: Número de caras: - + Set power/toughness Establecer fuerza/resistencia - + Please enter the new PT: Por favor, introduzca la nueva F/R: - + Set annotation Escribir anotación - + Please enter the new annotation: Por favor, introduza la nueva anotación: - + Set counters Establecer contadores - + Cr&eate related card Cr&ear carta relacionada @@ -4042,37 +4160,37 @@ La versión local es %1, la versión remota es %2. QMenuBar - + Services Servicios - + Hide %1 Ocultar %1 - + Hide Others Ocultar otros - + Show All Mostrar todo - + Preferences... Preferencias... - + Quit %1 Salir %1 - + About %1 Sobre %1 @@ -4080,7 +4198,7 @@ La versión local es %1, la versión remota es %2. QObject - + Cockatrice replays (*.cor) Replays de Cockatrice (*.cor) @@ -4149,35 +4267,64 @@ La versión local es %1, la versión remota es %2. RoomSelector - + Rooms Salas - + Joi&n E&ntrar - + Room Sala - + Description Descripción - + + Permissions + + + + Players Jugadores - + Games Partidas + + + + Error + + + + + You do not have the proper permission to join this room. + + + + + Failed to join the room due to an unknown error. + + + + + SequenceEdit + + + Shortcut already in use + + SetsModel @@ -4228,37 +4375,37 @@ La versión local es %1, la versión remota es %2. SoundSettingsPage - + Choose path Elegir ubicación - + Enable &sounds Activar &sonidos - + Path to sounds directory: Ubicación de la carpeta de sonidos: - + Test system sound engine Probar el audio del sistema - + Sound settings Herramientas de sonido - + Master volume requires QT5 El volumen maestro necesita QT5 - + Master volume Volumen maestro @@ -4278,7 +4425,7 @@ La versión local es %1, la versión remota es %2. &Reload configuration - + Volver a carga&r la configuración @@ -4314,186 +4461,221 @@ La versión local es %1, la versión remota es %2. TabDeckEditor - + &Print deck... Im&primir mazo... - + &Close &Cerrar - + &Edit sets... &Editar ediciones... - + Filters Filtros - + &Clear all filters &Limpiar filtros - + Delete selected Borrar seleccionado - + Deck &name: &Nombre del mazo: - + &Comments: &Comentarios: - + Hash: Hash: - + &New deck &Nuevo mazo - + &Load deck... &Cargar mazo... - + &Save deck &Guardar mazo - + Save deck &as... Guardar mazo &como... - + Load deck from cl&ipboard... Cargar mazo del &portapapeles... - + Save deck to clip&board Guardar mazo al p&ortapales - + &Analyze deck on deckstats.net A&nalizar mazo en deckstats.net - + Open custom image folder Abrir carpeta de imágenes personalizadas - + + Open custom sets folder + + + + Add card to &maindeck Añadir carta al &mazo principal - + Add card to &sideboard Añadir carta a la &reserva - + &Deck Editor &Editor de mazos - + C&ard Database Base de datos de c&artas - + + Show/Hide card information + + + + + Show/Hide deck + + + + + Show/Hide filters + + + + + Reset layout + + + + + Card Info + + + + + Deck + + + + Welcome Bienvenido/a - + Hi! It seems like you're running this version of Cockatrice for the first time. All the sets in the card database have been enabled. Read more about changing the set order or disabling specific sets and consequent effects in the "Edit Sets" window. ¡Hola! Parece que es la primera vez que ejecutas esta versión de Cockatrice. Todos los sets de la base de datos de cartas han sido habilitados. Puedes leer más sobre cambiar el orden de los sets o deshabilitar sets específicos en la ventana "Editar sets". - + &Remove row &Eliminar columna - + &Increment number &Incrementar número - + &Decrement number &Decrementar número - + Edit &tokens... Editar &fichas... - + Deck: %1 Mazo: %1 - + Are you sure? ¿Estás seguro? - + The decklist has been modified. Do you want to save the changes? La lista del mazo ha sido modificada ¿Deseas guardar los cambios? - + Load deck Cargar mazo - - - + + + Error Error - + The deck could not be saved. El mazo no puede ser guardado. - - + + The deck could not be saved. Please check that the directory is writable and try again. El mazo no puede ser guardado Por favor, compruebe que tiene permisos de escritura en el directorio e intentelo de nuevo. - + Save deck Guardar mazo @@ -4591,97 +4773,97 @@ Por favor, introduzca un nombre: TabGame - + &Phases &Fases - + &Game &Partida - + Next &phase Próxima &fase - + Next &turn Próximo &turno - + &Remove all local arrows &Retirar todas las flechas locales - + Rotate View Cl&ockwise - + Girar en sentido horario - + Rotate View Co&unterclockwise - + Girar en sentido antih&orario &U - + Game &information &Información de la partida - + &Concede &Conceder - + &Leave game &Abandonar la partida - + C&lose replay &Cerrar replay - + &Say: &Decir: - + Concede Conceder - + Are you sure you want to concede this game? ¿Estás seguro de que quieres conceder esta partida? - + Leave game Abandonar la partida - + Are you sure you want to leave this game? ¿Estás seguro de que quieres abandonar la partida? - + You are flooding the game. Please wait a couple of seconds. Estás saturando el juego. Por favor, espera unos minutos. - + You have been kicked out of the game. Has sido expulsado de la partida. - + REPLAY RESPONDER @@ -4787,47 +4969,47 @@ Por favor, introduzca un nombre: TabRoom - + &Say: &Decir: - + Chat Chat - + &Room &Sala - + &Leave room &Dejar sala - + &Clear chat &Limpiar chat - + Chat Settings... Herramientas del Chat... - + mentioned you. te ha mencionado. - + Click to view Click para ver - + You are flooding the chat. Please wait a couple of seconds. Estás floodeando el chat. Por favor, espera unos segundos. @@ -4843,15 +5025,25 @@ Por favor, introduzca un nombre: TabSupervisor - + Are you sure? ¿Estás seguro? - + There are still open games. Are you sure you want to quit? Todavía hay juegos abiertos. ¿Estás seguro/a de que quieres salir? + + + Promotion + + + + + You have been promoted to moderator. Please log out and back in for changes to take effect. + + TabUserLists @@ -4874,55 +5066,97 @@ Por favor, introduzca un nombre: UserContextMenu - + User &details &Detalles del usuario - + Private &chat &Chat privado - + Show this user's &games Mostrar &partidas de este usuario - + Add to &buddy list Añadir a la lista de &amigos - + Remove from &buddy list Quitar de la lista de &amigos - + Add to &ignore list Añadir a la lista de &ignorados - + Remove from &ignore list Quitar de la lista de &ignorados - + Kick from &game Expulsar de la &partida - + Ban from &server Banear del &servidor - + + &Promote user to moderator + + + + + Dem&ote user from moderator + + + + %1's games Partidas de %1 + + + + Success + + + + + Successfully promoted user. + + + + + Successfully demoted user. + + + + + + Failed + + + + + Failed to promote user. + + + + + Failed to demote user. + + UserInfoBox @@ -4939,7 +5173,7 @@ Por favor, introduzca un nombre: Pronouns: - + Género: @@ -4959,17 +5193,17 @@ Por favor, introduzca un nombre: Edit - + Editar Change password - + Cambiar contraseña Change avatar - + Cambiar avatar @@ -5022,12 +5256,12 @@ Por favor, introduzca un nombre: Information - + Información User information updated. - + Información del usuario actualizada. @@ -5039,94 +5273,94 @@ Por favor, introduzca un nombre: Error - + Error This server does not permit you to update your user informations. - + Este servidor no permite actualizar su información de usuario. An error occured while trying to update your user informations. - + Ocurrió un error mientras se actualizaba su información de usuario. Password changed. - + Su contraseña ha sido cambiada. This server does not permit you to change your password. - + Este servidor no le permite cambiar su contraseña. The new password is too short. - + La nueva contraseña es muy corta The old password is incorrect. - + La contraseña anterior no es correcta. Avatar updated. - + Avatar actualizado This server does not permit you to update your avatar. - + Este servidor no permite actualizar avatar. An error occured while trying to updater your avatar. - + Ocurrió un error mientras se actualizaba su avatar. UserInterfaceSettingsPage - + General interface settings Preferencias generales de la interfaz - + Enable notifications in taskbar Habilitar notificaciones en la barra de tareas - + Notify in the taskbar for game events while you are spectating Notificar en la barra de tareas los eventos de la partida mientras estás como espectador - + &Double-click cards to play them (instead of single-click) &Doble click en las cartas para jugarlas (en lugar de un solo click) - + &Play all nonlands onto the stack (not the battlefield) by default &Jugar todas las cartas que no sean tierras en la pila (en lugar de en el campo de batalla) por defecto. - + Annotate card text on tokens - + Anotar en las fichas. - + Animation settings Opciones de animación - + &Tap/untap animation Animación de &girar/enderezar @@ -5134,22 +5368,22 @@ Por favor, introduzca un nombre: UserList - + Users connected to server: %1 Usuarios conectados al servidor: %1 - + Users in this room: %1 Usuarios en esta sala: %1 - + Buddies online: %1 / %2 Amigos online: %1 / %2 - + Ignored users online: %1 / %2 Usuarios ignorados online: %1 / %2 @@ -5208,8 +5442,8 @@ Por favor, introduzca un nombre: - Disabled sets will still be used for loading images - Los sets desactivados también serán usados para cargar las imágenes + Disabled sets will be used for loading images only if all the enabled sets failed + @@ -5217,12 +5451,12 @@ Por favor, introduzca un nombre: Editar ediciones - + Success Éxito - + The sets database has been saved successfully. La base de datos de los sets se ha guardado correctamente. @@ -5250,4 +5484,561 @@ Por favor, introduzca un nombre: vista de la pila + + shortcutsTab + + + Form + + + + + Main Window + + + + + Deck editor + + + + + Local gameplay + + + + + Watch replay + + + + + Connect + + + + + Register + + + + + Full screen + + + + + Settings + + + + + Check for card updates + + + + + Exit + + + + + Deck Editor + + + + + Analyze deck + + + + + Load deck (clipboard) + + + + + Clerar all filters + + + + + New deck + + + + + Clear one filter + + + + + Open custom folder + + + + + Close + + + + + Print deck + + + + + Edit sets + + + + + Delete card + + + + + Edit tokens + + + + + Reset layout + + + + + Add card + + + + + Save deck + + + + + Remove card + + + + + Save deck as + + + + + Load deck + + + + + Save deck (clipboard) + + + + + + Counters + + + + + Life + + + + + + + + + Set + + + + + + + + Add + + + + + + + + Remove + + + + + Red + + + + + Green + + + + + Yellow + + + + + Mainwindow / Deck editor + + + + + Power / toughness + + + + + Power and toughness + + + + + Add (+1/+1) + + + + + Remove (-1/-1) + + + + + Toughness + + + + + Remove (-0/-1) + + + + + Add (+0/+1) + + + + + Power + + + + + Remove (-1/-0) + + + + + Add (+1/+0) + + + + + Game Phases + + + + + Untap + + + + + Disconnect + + + + + Upkeep + + + + + + Draw + + + + + Main 1 + + + + + Start combat + + + + + Attack + + + + + Block + + + + + Damage + + + + + End combat + + + + + Main 2 + + + + + End + + + + + Next phase + + + + + Next turn + + + + + Player + + + + + Tap Card + + + + + Untap Card + + + + + Untap all + + + + + Toogle untap + + + + + Flip card + + + + + Peek card + + + + + Play card + + + + + Attach card + + + + + Unattach card + + + + + Clone card + + + + + Create token + + + + + Create another token + + + + + Set annotation + + + + + Phases / P/T / Player + + + + + Move card to + + + + + Bottom library + + + + + Top library + + + + + + Graveyard + + + + + + Exile + + + + + Hand + + + + + View + + + + + Library + + + + + Tops card of library + + + + + Sideboard + + + + + Close recent view + + + + + Pre-play + + + + + Load remote deck + + + + + Load local deck + + + + + Game play + + + + + Draw arrow + + + + + Leave game + + + + + Remove local arrows + + + + + Concede + + + + + Roll dice + + + + + Rotate view CW + + + + + Shuffle library + + + + + Rotate view CCW + + + + + Mulligan + + + + + Draw card + + + + + Draw cards + + + + + Undo draw + + + + + Always reveal top card + + + + + Draw / Move / View / Game play + + + \ No newline at end of file diff --git a/cockatrice/translations/cockatrice_et.ts b/cockatrice/translations/cockatrice_et.ts index a69cd4c0..e2699d21 100644 --- a/cockatrice/translations/cockatrice_et.ts +++ b/cockatrice/translations/cockatrice_et.ts @@ -2,17 +2,17 @@ AbstractCounter - + &Set counter... - + Set counter - + New value for counter '%1': @@ -20,89 +20,60 @@ AppearanceSettingsPage - - Zone background pictures + + Theme settings - - Hand background: - Käe taustapilt: - - - - Stack background: + + Current theme: - - Table background: - Laua taustapilt: - - - - Player info background: - Mängija taustainfo: - - - - Card back: - Kaart tagasi: - - - + Card rendering - + Display card names on cards having a picture Kuva piltidega kaartidel kaardi nimi - + Scale cards on mouse over - + Hand layout Käe välimus - + Display hand horizontally (wastes space) Kuva käsi horisontaalselt (raiskab ruumi) - + Enable left justification - + Table grid layout - + Invert vertical coordinate - + Minimum player count for multi-column layout: - - - - - - - Choose path - Vali sihtkoht - BanDialog @@ -117,87 +88,110 @@ blokeeri &IP-aadress - + + ban client I&D + + + + Ban type Blokeerimise tüüp - + &permanent ban &igavene blokeering - + &temporary ban &ajutine blokeering - + &Days: &Päeva: - + &Hours: &Tundi: - + &Minutes: &Minutit - + Duration of the ban Blokeerimise kestvus - + Please enter the reason for the ban. This is only saved for moderators and cannot be seen by the banned person. Palun sisestage blokeerimise põhjus. See on mõeldud ainult moderaatoritele ja blokeeritav isik seda ei näe. - + Please enter the reason for the ban that will be visible to the banned person. Palun sisestage blokeerimise põhjus, mis on nähtav blokeeritavale. - + &OK &OK - + &Cancel &Tühista - + Ban user from server Blokeeri kasutaja serverist - + + + + Error Viga - - You have to select a name-based or IP-based ban, or both. - Peate valima, kas nimepõhise või IP-põhise blokeeringu või mõlemad. + + You have to select a name-based, IP-based, clientId based, or some combination of the three to place a ban. + + + + + You must have a value in the name ban when selecting the name ban checkbox. + + + + + You must have a value in the ip ban when selecting the ip ban checkbox. + + + + + You must have a value in the clientid ban when selecting the clientid ban checkbox. + CardDatabase - + New sets found - + %1 new set(s) have been found in the card database. Do you want to enable them? @@ -233,17 +227,17 @@ See on mõeldud ainult moderaatoritele ja blokeeritav isik seda ei näe. CardFrame - + Image - + Description - + Both @@ -299,27 +293,32 @@ See on mõeldud ainult moderaatoritele ja blokeeritav isik seda ei näe.Kuva kogu info - + Name: Nimi: - + Mana cost: - + + Color(s): + + + + Card type: Kaardi tüüp: - + P / T: P / T: - + Loyalty: Hinnang: @@ -583,12 +582,12 @@ See on mõeldud ainult moderaatoritele ja blokeeritav isik seda ei näe. DeckEditorSettingsPage - + Nothing is here... yet - + General Üldine @@ -596,17 +595,17 @@ See on mõeldud ainult moderaatoritele ja blokeeritav isik seda ei näe. DeckListModel - + Number Number - + Card Kaart - + Price Hind @@ -628,42 +627,42 @@ See on mõeldud ainult moderaatoritele ja blokeeritav isik seda ei näe. DeckViewContainer - + Load local deck - + Load deck from server - + Ready to s&tart Valmis a&lustama - + S&ideboard unlocked - + S&ideboard locked - + Load deck - + Error Viga - + The selected file could not be loaded. Valitud faili ei suudetud laadida. @@ -709,37 +708,52 @@ See on mõeldud ainult moderaatoritele ja blokeeritav isik seda ei näe. DlgConnect - + + Previous Host + + + + + New Host + + + + &Host: - + + Enter host name + + + + &Port: &Port: - + Player &name: Mängija &nimi: - + P&assword: P&arool: - + &Save password &Salvesta parool - + A&uto connect at start Ü&hendu käivitumisel automaatselt - + Connect to server Ühenda serveriga @@ -747,82 +761,92 @@ See on mõeldud ainult moderaatoritele ja blokeeritav isik seda ei näe. DlgCreateGame - + &Description: &Kirjeldus: - + &Password: &Parool: - + P&layers: M&ängijad: - + + Re&member settings + + + + Game type Mängu tüüp - + Only &buddies can join Ainult &sõbrad saavad liituda - + Only &registered users can join Ainult &registreeritud kasutajad saavad liituda - + Joining restrictions - + &Spectators can watch - + Spectators &need a password to watch - + Spectators can see &hands - + Spectators can &chat - + Spectators - + + &Clear + + + + Create game Loo mäng - + Game information Mängu info - + Error Viga - + Server error. Serveri viga. @@ -963,32 +987,32 @@ To remove your current avatar, confirm without choosing a new image. DlgEditPassword - + Old password: - + New password: - + Confirm new password: - + Change password - + Error - + The new passwords don't match. @@ -1091,47 +1115,47 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgEditUser - + Email: - + Pronouns: - + Neutral - + Masculine - + Feminine - + Country: - + Undefined - + Real name: - + Edit user profile @@ -1139,47 +1163,47 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgFilterGames - + Show &unavailable games Näita &kättesaamatuid mänge - + Show &password protected games - + Game &description: Mängu &kirjeldus: - + &Creator name: %Looja nimi: - + &Game types &Mängu tüübid - + at &least: &vähemalt: - + at &most: &enamjaolt: - + Maximum player count Mängijate ülempiir - + Filter games @@ -1187,7 +1211,7 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgLoadDeckFromClipboard - + &Refresh &Värskenda @@ -1197,14 +1221,14 @@ Make sure to enable the 'token set' in the 'Edit sets...' di - - + + Error Viga - - + + Invalid deck list. @@ -1220,67 +1244,93 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgRegister - + &Host: - + &Port: - + Player &name: - + P&assword: - + + Password (again): + + + + Email: - + + Email (again): + + + + Pronouns: - + Neutral - + Masculine - + Feminine - + Undefined - + + + Registration Warning + + + + + Your passwords do not match, please try again. + + + + + Your email addresses do not match, please try again. + + + + Country: - + Real name: - + Register to server @@ -1288,19 +1338,19 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgSettings - - - + + + Error - + Unknown Error loading card database - + Your card database is invalid. Cockatrice may not function correctly with an invalid database @@ -1311,7 +1361,7 @@ Would you like to change your database location setting? - + Your card database version is too old. This can cause problems loading card information or images @@ -1322,21 +1372,21 @@ Would you like to change your database location setting? - + File Error loading your card database. Would you like to change your database location setting? - + Your card database was loaded but contains no cards. Would you like to change your database location setting? - + Your card database did not finish loading Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues with your cards.xml attached @@ -1345,7 +1395,7 @@ Would you like to change your database location setting? - + Unknown card database load status Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues @@ -1354,50 +1404,55 @@ Would you like to change your database location setting? - + The path to your deck directory is invalid. Would you like to go back and set the correct path? - + The path to your card pictures directory is invalid. Would you like to go back and set the correct path? - + Settings - + General - + Appearance - + User Interface - + Deck Editor - + Chat - + Sound + + + Shortcuts + + GameSelector @@ -1410,7 +1465,7 @@ Would you like to change your database location setting? - + Error @@ -1455,47 +1510,47 @@ Would you like to change your database location setting? - + Join game - + Password: - + Please join the respective room first. - + Games + + + &Filter games + + - Filter games + C&lear filter - Clear filter + C&reate - - Create + + &Join - - Join - - - - + J&oin as spectator @@ -1612,107 +1667,112 @@ Would you like to change your database location setting? GeneralSettingsPage - + Reset/Clear Downloaded Pictures - - - - - + + + + + Choose path - + Success - + Downloaded card pictures have been reset. - + Error - + One or more downloaded card pictures could not be cleared. - + Personal settings - + Language: - + Download card pictures on the fly - + Download card pictures from a custom URL - + Custom Card Download URL: - + Linking FAQ - - Paths - - - - - Decks directory: - - - - - Replays directory: - - - - - Pictures directory: - - - - - Card database: - - - - - Token database: + + Notify when new client features are available + Paths + + + + + Decks directory: + + + + + Replays directory: + + + + + Pictures directory: + + + + + Card database: + + + + + Token database: + + + + Picture cache size: - - + + English Eesti Keel (Estonian) @@ -1720,497 +1780,543 @@ Would you like to change your database location setting? MainWindow - + There are too many concurrent connections from your address. - + Scheduled server shutdown. - + Banned by moderator - + Expected end time: %1 - + This ban lasts indefinitely. - + Connection closed - + The server has terminated your connection. Reason: %1 - + Scheduled server shutdown - + The server is going to be restarted in %n minute(s). All running games will be lost. Reason for shutdown: %1 - + Number of players - + Please enter the number of players. - - + + Player %1 - + Load replay - + About Cockatrice - + Version %1 - + Translators: - + Project Manager: - - + + The server has reached its maximum user capacity, please check back later. + + + + + Invalid username. - - + + You have been logged out due to logging in at another location. + + + + + Success - + Registration accepted. Will now login. - + Account activation accepted. Will now login. - + Past Project Managers: - + Developers: - + Our Developers - + Help Develop! - + Recognition Page - + Help Translate! - + Support: - + Report an Issue - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + Error - + Server timeout - + + Failed Login + + + + + Your client does not support features that the server requires, please update your client and try again. + + + + Incorrect username or password. Please check your authentication information and try again. - + There is already an active session using this user name. Please close that session first and re-login. - - + + You are banned until %1. - - + + You are banned indefinitely. - + This server requires user registration. Do you want to register now? - + + This server requires client ID's. Your client is either failing to generate an ID or you are running a modified client. +Please close and reopen your client to try again. + + + + + An internal error has occurred, please try closing and reopening your client and try again. If the error persists try updating your client to the most recent build and if need be contact your software provider. + + + + Account activation - - Your account has not been activated yet. - You need to provide the activation token received in the activation email - - - - - + Unknown login error: %1 - + + + +This usually means that your client version is out of date, and the server sent a reply your client doesn't understand. + + + + Your username must respect these rules: - + is %1 - %2 characters long - + can %1 contain lowercase characters - - - - + + + + NOT - + can %1 contain uppercase characters - + can %1 contain numeric characters - + can contain the following punctuation: %1 - + first character can %1 be a punctuation mark - + You may only use A-Z, a-z, 0-9, _, ., and - in your username. - - - - - + + + + + Registration denied - + Registration is currently disabled on this server - + There is already an existing account with the same user name. - + It's mandatory to specify a valid email address when registering. - + Too many registration attempts from your IP address. - + Password too short. - + Registration failed for a technical problem on the server. - + + Unknown registration error: %1 + + + + Account activation failed - + Socket error: %1 - + 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. - + Your Cockatrice client is obsolete. Please update your Cockatrice version. Local version is %1, remote version is %2. - + Connecting to %1... - + Registering to %1 as %2... - + Disconnected - + Connected, logging in at %1 - - Logged in as %1 at %2 - - - - + &Connect... - + &Disconnect - + Start &local game... - + &Watch replay... - + &Deck editor - + &Full screen - + &Register to server... - + &Settings... - - + + &Exit - + A&ctions - + &Cockatrice - + &About Cockatrice - + &Help - + Check for card updates... - + A card database update is already running. - + Unable to run the card database updater: - + The card database updater exited with an error: %1 - + Update completed successfully. Cockatrice will now reload the card database. - - + + Your client appears to be missing features that the server supports. +This usually means that your client version is out of date, please check to see if there is a new client available for download. + + + + + + Information - + Troubleshooting - + F.A.Q. - + + Your account has not been activated yet. +You need to provide the activation token received in the activation email + + + + failed to start. - + crashed. - + timed out. - + write error. - + read error. - + unknown error. @@ -3450,62 +3556,74 @@ Local version is %1, remote version is %2. MessagesSettingsPage - + Chat settings - + + Custom alert words + + + + Enable chat mentions - + + Enable mention completer + + + + In-game message macros - - Ignore unregistered users in main chat + + Ignore chat room messages sent by unregistered users - - Ignore chat room messages sent by unregistered users. + + Ignore private messages sent by unregistered users - - Ignore private messages sent by unregistered users. + + Enable desktop notifications for private messages - + + Separate words with a space, alphanumeric characters only + + + + + Invert text color - - Enable desktop notifications for private messages. - - - - + Enable desktop notification for mentions. - + + (Color is hexadecimal) - + Add message - + Message: @@ -3571,435 +3689,435 @@ Local version is %1, remote version is %2. Player - + &View library - + Move top cards to &graveyard... - + View &top cards of library... - + &View graveyard - + &View sideboard - + Player "%1" - - - - + + + + &Hand - + &Reveal hand to... - + Reveal r&andom card to... - + &Library - - - - + + + + &Graveyard - + &Sideboard - + Red - + Yellow - + Green - + View top cards of library - + Number of cards: - + &Draw card - + Reveal top cards of library - + Number of cards: (max. %1) - + &View exile - - - - + + + + &Exile - + Reveal t&op cards to... - + D&raw cards... - + Take &mulligan - + &Shuffle - + &Counters - + &Untap all permanents - + R&oll die... - + &Create token... - + C&reate another token - + S&ay - + &Move hand to... - - - - + + + + &Top of library - - - - + + + + &Bottom of library - + &Move graveyard to... - + &Move exile to... - + Reveal &library to... - + &Always reveal top card - + O&pen deck in deck editor - + &Undo last draw - + Play top card &face down - + Move top cards to &exile... - + Put top card on &bottom - + Put bottom card &in graveyard - + Cr&eate predefined token - + C&ard - + &All players - + &Play - + &Hide - + Play &Face Down - + &Tap - + &Untap - + Toggle &normal untapping - + &Flip - + &Peek at card face - + &Clone - + Attac&h to card... - + Unattac&h - + &Draw arrow... - + &Increase power - + &Decrease power - + I&ncrease toughness - + D&ecrease toughness - + In&crease power and toughness - + Dec&rease power and toughness - + Set &power and toughness... - + &Set annotation... - + &Add counter (%1) - + &Remove counter (%1) - + &Set counters (%1)... - + Draw cards - - - - + + + + Number: - + Move top cards to grave - + Move top cards to exile - + Roll die - + Number of sides: - + Set power/toughness - + Please enter the new PT: - + Set annotation - + Please enter the new annotation: - + Set counters - + Cr&eate related card @@ -4007,37 +4125,37 @@ Local version is %1, remote version is %2. QMenuBar - + Services - + Hide %1 - + Hide Others - + Show All - + Preferences... - + Quit %1 - + About %1 @@ -4045,7 +4163,7 @@ Local version is %1, remote version is %2. QObject - + Cockatrice replays (*.cor) @@ -4114,35 +4232,64 @@ Local version is %1, remote version is %2. RoomSelector - + Rooms - + Joi&n - + Room - + Description - + + Permissions + + + + Players - + Games + + + + Error + + + + + You do not have the proper permission to join this room. + + + + + Failed to join the room due to an unknown error. + + + + + SequenceEdit + + + Shortcut already in use + + SetsModel @@ -4193,37 +4340,37 @@ Local version is %1, remote version is %2. SoundSettingsPage - + Choose path - + Enable &sounds - + Path to sounds directory: - + Test system sound engine - + Sound settings - + Master volume requires QT5 - + Master volume @@ -4279,184 +4426,219 @@ Local version is %1, remote version is %2. TabDeckEditor - + &Print deck... - + &Close - + &Edit sets... - + Filters - + &Clear all filters - + Delete selected - + Deck &name: - + &Comments: - + Hash: - + &New deck - + &Load deck... - + &Save deck - + Save deck &as... - + Load deck from cl&ipboard... - + Save deck to clip&board - + &Analyze deck on deckstats.net - + Open custom image folder - + + Open custom sets folder + + + + Add card to &maindeck - + Add card to &sideboard - + &Deck Editor - + C&ard Database - + + Show/Hide card information + + + + + Show/Hide deck + + + + + Show/Hide filters + + + + + Reset layout + + + + + Card Info + + + + + Deck + + + + Welcome - + Hi! It seems like you're running this version of Cockatrice for the first time. All the sets in the card database have been enabled. Read more about changing the set order or disabling specific sets and consequent effects in the "Edit Sets" window. - + &Remove row - + &Increment number - + &Decrement number - + Edit &tokens... - + Deck: %1 - + Are you sure? - + The decklist has been modified. Do you want to save the changes? - + Load deck - - - + + + Error - + The deck could not be saved. - - + + The deck could not be saved. Please check that the directory is writable and try again. - + Save deck @@ -4553,97 +4735,97 @@ Please enter a name: TabGame - + &Phases - + &Game - + Next &phase - + Next &turn - + &Remove all local arrows - + Rotate View Cl&ockwise - + Rotate View Co&unterclockwise - + Game &information - + &Concede - + &Leave game - + C&lose replay - + &Say: - + Concede - + Are you sure you want to concede this game? - + Leave game - + Are you sure you want to leave this game? - + You are flooding the game. Please wait a couple of seconds. - + You have been kicked out of the game. - + REPLAY @@ -4749,47 +4931,47 @@ Please enter a name: TabRoom - + &Say: - + Chat - + &Room - + &Leave room - + &Clear chat - + Chat Settings... - + mentioned you. - + Click to view - + You are flooding the chat. Please wait a couple of seconds. @@ -4805,15 +4987,25 @@ Please enter a name: TabSupervisor - + Are you sure? - + There are still open games. Are you sure you want to quit? + + + Promotion + + + + + You have been promoted to moderator. Please log out and back in for changes to take effect. + + TabUserLists @@ -4836,55 +5028,97 @@ Please enter a name: UserContextMenu - + User &details - + Private &chat - + Show this user's &games - + Add to &buddy list - + Remove from &buddy list - + Add to &ignore list - + Remove from &ignore list - + Kick from &game - + Ban from &server - + + &Promote user to moderator + + + + + Dem&ote user from moderator + + + + %1's games + + + + Success + + + + + Successfully promoted user. + + + + + Successfully demoted user. + + + + + + Failed + + + + + Failed to promote user. + + + + + Failed to demote user. + + UserInfoBox @@ -5053,42 +5287,42 @@ Please enter a name: UserInterfaceSettingsPage - + General interface settings - + Enable notifications in taskbar - + Notify in the taskbar for game events while you are spectating - + &Double-click cards to play them (instead of single-click) - + &Play all nonlands onto the stack (not the battlefield) by default - + Annotate card text on tokens - + Animation settings - + &Tap/untap animation @@ -5096,22 +5330,22 @@ Please enter a name: UserList - + Users connected to server: %1 - + Users in this room: %1 - + Buddies online: %1 / %2 - + Ignored users online: %1 / %2 @@ -5170,7 +5404,7 @@ Please enter a name: - Disabled sets will still be used for loading images + Disabled sets will be used for loading images only if all the enabled sets failed @@ -5179,12 +5413,12 @@ Please enter a name: - + Success - + The sets database has been saved successfully. @@ -5212,4 +5446,561 @@ Please enter a name: + + shortcutsTab + + + Form + + + + + Main Window + + + + + Deck editor + + + + + Local gameplay + + + + + Watch replay + + + + + Connect + + + + + Register + + + + + Full screen + + + + + Settings + + + + + Check for card updates + + + + + Exit + + + + + Deck Editor + + + + + Analyze deck + + + + + Load deck (clipboard) + + + + + Clerar all filters + + + + + New deck + + + + + Clear one filter + + + + + Open custom folder + + + + + Close + + + + + Print deck + + + + + Edit sets + + + + + Delete card + + + + + Edit tokens + + + + + Reset layout + + + + + Add card + + + + + Save deck + + + + + Remove card + + + + + Save deck as + + + + + Load deck + + + + + Save deck (clipboard) + + + + + + Counters + + + + + Life + + + + + + + + + Set + + + + + + + + Add + + + + + + + + Remove + + + + + Red + + + + + Green + + + + + Yellow + + + + + Mainwindow / Deck editor + + + + + Power / toughness + + + + + Power and toughness + + + + + Add (+1/+1) + + + + + Remove (-1/-1) + + + + + Toughness + + + + + Remove (-0/-1) + + + + + Add (+0/+1) + + + + + Power + + + + + Remove (-1/-0) + + + + + Add (+1/+0) + + + + + Game Phases + + + + + Untap + + + + + Disconnect + + + + + Upkeep + + + + + + Draw + + + + + Main 1 + + + + + Start combat + + + + + Attack + + + + + Block + + + + + Damage + + + + + End combat + + + + + Main 2 + + + + + End + + + + + Next phase + + + + + Next turn + + + + + Player + + + + + Tap Card + + + + + Untap Card + + + + + Untap all + + + + + Toogle untap + + + + + Flip card + + + + + Peek card + + + + + Play card + + + + + Attach card + + + + + Unattach card + + + + + Clone card + + + + + Create token + + + + + Create another token + + + + + Set annotation + + + + + Phases / P/T / Player + + + + + Move card to + + + + + Bottom library + + + + + Top library + + + + + + Graveyard + + + + + + Exile + + + + + Hand + + + + + View + + + + + Library + + + + + Tops card of library + + + + + Sideboard + + + + + Close recent view + + + + + Pre-play + + + + + Load remote deck + + + + + Load local deck + + + + + Game play + + + + + Draw arrow + + + + + Leave game + + + + + Remove local arrows + + + + + Concede + + + + + Roll dice + + + + + Rotate view CW + + + + + Shuffle library + + + + + Rotate view CCW + + + + + Mulligan + + + + + Draw card + + + + + Draw cards + + + + + Undo draw + + + + + Always reveal top card + + + + + Draw / Move / View / Game play + + + \ No newline at end of file diff --git a/cockatrice/translations/cockatrice_fr.ts b/cockatrice/translations/cockatrice_fr.ts index 249871a8..535ce986 100644 --- a/cockatrice/translations/cockatrice_fr.ts +++ b/cockatrice/translations/cockatrice_fr.ts @@ -2,17 +2,17 @@ AbstractCounter - + &Set counter... &Nombre de marqueurs... - + Set counter Nombre de marqueurs - + New value for counter '%1': Nouvelle valeur du compteur '%1': @@ -20,89 +20,60 @@ AppearanceSettingsPage - - Zone background pictures - Zone images de fond + + Theme settings + - - Hand background: - Image de fond de la zone de main: + + Current theme: + - - Stack background: - Image de fond de la pile: - - - - Table background: - Image de fond de la zone de jeu: - - - - Player info background: - Image de fond de la zone d'informations joueur: - - - - Card back: - Dos de carte: - - - + Card rendering Rendu des cartes - + Display card names on cards having a picture Afficher le nom des cartes ayant une image - + Scale cards on mouse over Agrandir les cartes sous le curseur - + Hand layout Disposition de la main - + Display hand horizontally (wastes space) Afficher la main horizontalement (perte d'espace) - + Enable left justification Activer justification à gauche - + Table grid layout Disposition en forme de grille - + Invert vertical coordinate Inverser la disposition du champ de bataille - + Minimum player count for multi-column layout: Nombre minimum de joueurs pour la disposition multi-colonnes : - - - - - - - Choose path - Choisir le chemin - BanDialog @@ -117,87 +88,110 @@ bloquer &adresse IP - + + ban client I&D + + + + Ban type Type du blocage - + &permanent ban &blocage permanent - + &temporary ban &blocage temporaire - + &Days: &Jours: - + &Hours: &Heures: - + &Minutes: &Minutes: - + Duration of the ban Durée du blocage - + Please enter the reason for the ban. This is only saved for moderators and cannot be seen by the banned person. Veuillez expliquer la raison du blocage. Cette information sera consultable uniquement par les modérateurs. - + Please enter the reason for the ban that will be visible to the banned person. Veuillez expliquer la raison du bannissement. Cette information sera visible par la personne bannie. - + &OK &OK - + &Cancel &Annuler - + Ban user from server Bannir le joueur du serveur - + + + + Error Érreur - - You have to select a name-based or IP-based ban, or both. - Vous devez choisir un blocage à partir du nom ou de l'IP, ou des deux. + + You have to select a name-based, IP-based, clientId based, or some combination of the three to place a ban. + + + + + You must have a value in the name ban when selecting the name ban checkbox. + + + + + You must have a value in the ip ban when selecting the ip ban checkbox. + + + + + You must have a value in the clientid ban when selecting the clientid ban checkbox. + CardDatabase - + New sets found Nouvelles éditions trouvées - + %1 new set(s) have been found in the card database. Do you want to enable them? %1 nouvelle(s) édition(s) détectée(s) dans la base de données. Voulez-vous les activer ? @@ -233,17 +227,17 @@ Cette information sera consultable uniquement par les modérateurs. CardFrame - + Image Image - + Description Description - + Both Les deux @@ -299,27 +293,32 @@ Cette information sera consultable uniquement par les modérateurs.Montrer toutes les informations - + Name: Nom: - + Mana cost: Cout de mana: - + + Color(s): + + + + Card type: Type de carte: - + P / T: F / E: - + Loyalty: Loyauté: @@ -583,12 +582,12 @@ Cette information sera consultable uniquement par les modérateurs. DeckEditorSettingsPage - + Nothing is here... yet Il n'y a rien ici pour l'instant - + General Géneral @@ -596,17 +595,17 @@ Cette information sera consultable uniquement par les modérateurs. DeckListModel - + Number Nombre - + Card Carte - + Price Prix @@ -628,42 +627,42 @@ Cette information sera consultable uniquement par les modérateurs. DeckViewContainer - + Load local deck - + Charger un deck local - + Load deck from server - + Charger un deck depuis le serveur - + Ready to s&tart P&rêt à démarrer - + S&ideboard unlocked Réserve débloquée - + S&ideboard locked Réserve bloquée - + Load deck Charger deck - + Error Erreur - + The selected file could not be loaded. Le fichier sélectionné n'a pas pu être chargé. @@ -709,37 +708,52 @@ Cette information sera consultable uniquement par les modérateurs. DlgConnect - + + Previous Host + + + + + New Host + + + + &Host: &Hôte: - + + Enter host name + + + + &Port: &Port: - + Player &name: &Nom du joueur: - + P&assword: Mot de p&asse: - + &Save password &Se souvenir du mot de passe - + A&uto connect at start A&uto connexion au démarrage - + Connect to server Connexion au serveur @@ -747,82 +761,92 @@ Cette information sera consultable uniquement par les modérateurs. DlgCreateGame - + &Description: &Description: - + &Password: Mot de &Passe: - + P&layers: &Joueurs: - + + Re&member settings + + + + Game type Type de partie - + Only &buddies can join Seuls les &amis peuvent rejoindre - + Only &registered users can join Seules les personnes en&registrées peuvent rejoindre - + Joining restrictions Conditions pour rejoindre - + &Spectators can watch Les &spectateurs peuvent observer. - + Spectators &need a password to watch Les spectateurs ont besoin d'un &mot-de-passe pour observer. - + Spectators can see &hands Les spectateurs peuvent voir les &mains des joueurs. - + Spectators can &chat Les spectateurs peuvent dis&cuter - + Spectators Spectateurs - + + &Clear + + + + Create game Créer partie - + Game information Informations sur la partie - + Error Erreur - + Server error. Erreur serveur. @@ -963,32 +987,32 @@ To remove your current avatar, confirm without choosing a new image. DlgEditPassword - + Old password: - + New password: - + Confirm new password: - + Change password - + Error - + Erreur - + The new passwords don't match. @@ -1092,47 +1116,47 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgEditUser - + Email: - + Pronouns: - + Pronoms: - + Neutral - + Masculine - + Masculin - + Feminine - + Féminin - + Country: - + Pays: - + Undefined - + Indéfini - + Real name: - + Edit user profile @@ -1140,47 +1164,47 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgFilterGames - + Show &unavailable games Afficher les parties pleines - + Show &password protected games Afficher les parties &protégées par un mot de passe - + Game &description: &Description de la partie: - + &Creator name: &Créateur: - + &Game types Type de &partie - + at &least: au &moins: - + at &most: au &plus: - + Maximum player count Nombre de joueurs maximum. - + Filter games Flitrer les parties @@ -1188,7 +1212,7 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgLoadDeckFromClipboard - + &Refresh &Rafraîchir @@ -1198,14 +1222,14 @@ Make sure to enable the 'token set' in the 'Edit sets...' di Charger deck depuis le presse-papier - - + + Error Erreur - - + + Invalid deck list. Liste de deck invalide. @@ -1221,67 +1245,93 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgRegister - + &Host: Hôte - + &Port: &Port: - + Player &name: Joueur &nom: - + P&assword: Mot de passe: - + + Password (again): + + + + Email: Email - - Pronouns: + + Email (again): - + + Pronouns: + Pronoms: + + + Neutral - + Masculine - - - - - Feminine - + Masculin + Feminine + Féminin + + + Undefined Indéfini - + + + Registration Warning + + + + + Your passwords do not match, please try again. + + + + + Your email addresses do not match, please try again. + + + + Country: Pays: - + Real name: Nom: - + Register to server S'enregistrer au serveur @@ -1289,19 +1339,19 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgSettings - - - + + + Error Erreur - + Unknown Error loading card database Erreur de chargement de la base de données des cartes inconnue. - + Your card database is invalid. Cockatrice may not function correctly with an invalid database @@ -1318,7 +1368,7 @@ Vous aurez peut-être à redémarrer oracle pour mettre à jour votre base de do Voulez vous changer les paramètres d'emplacement de base de données ? - + Your card database version is too old. This can cause problems loading card information or images @@ -1335,7 +1385,7 @@ Généralement il suffit de redémarrer oracle pour mettre à jour votre base de Voulez vous changer les paramètres d'emplacement de base de données ? - + File Error loading your card database. Would you like to change your database location setting? @@ -1344,7 +1394,7 @@ Would you like to change your database location setting? Voulez vous changer les paramètres d'emplacement de base de données ? - + Your card database was loaded but contains no cards. Would you like to change your database location setting? @@ -1353,7 +1403,7 @@ Would you like to change your database location setting? Voulez vous changer les paramètres d'emplacement de base de données ? - + Your card database did not finish loading Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues with your cards.xml attached @@ -1362,7 +1412,7 @@ Would you like to change your database location setting? Votre - + Unknown card database load status Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues @@ -1375,50 +1425,55 @@ Veuillez envoyer un ticket à http://github.com/Cockatrice/Cockatrice/issues s&a Voulez-vous changer votre paramètre de localisation la base de données? - + The path to your deck directory is invalid. Would you like to go back and set the correct path? Le chemin d'accès pour le répertoire de votre deck est invalide. Souhaitez-vous redéfinir le chemin d'accès? - + The path to your card pictures directory is invalid. Would you like to go back and set the correct path? Le chemin d'accès pour le répertoire de vos images est invalide. Souhaitez-vous redéfinir le chemin d'accès? - + Settings Paramètres - + General Géneral - + Appearance Apparence - + User Interface Interface utilisateur - + Deck Editor Éditeur de Deck - + Chat Chat - + Sound Son + + + Shortcuts + + GameSelector @@ -1431,7 +1486,7 @@ Voulez-vous changer votre paramètre de localisation la base de données? - + Error Erreur @@ -1476,47 +1531,47 @@ Voulez-vous changer votre paramètre de localisation la base de données?Vous avez été ignoré par le créateur de la partie. - + Join game Rejoindre partie - + Password: Mot de passe: - + Please join the respective room first. Veuillez d'abord rejoindre le bon salon. - + Games Parties + + + &Filter games + + - Filter games + C&lear filter - Clear filter + C&reate - - Create + + &Join - - Join - - - - + J&oin as spectator Rej&oindre en tant que spectateur @@ -1633,107 +1688,112 @@ Voulez-vous changer votre paramètre de localisation la base de données? GeneralSettingsPage - + Reset/Clear Downloaded Pictures Effacer les images téléchargées - - - - - + + + + + Choose path Choisir chemin d'accès - + Success Réussite - + Downloaded card pictures have been reset. Les images téléchargés ont bien été effacées - + Error Erreur - + One or more downloaded card pictures could not be cleared. Une ou plusieurs images téléchargées ne peuvent pas être effacées. - + Personal settings Paramètres personnels - + Language: Langue: - + Download card pictures on the fly Charger les images de cartes à la volée - + Download card pictures from a custom URL Télécharger les images depuis une URL - + Custom Card Download URL: URL des images à télécharger - + Linking FAQ lié à la FAQ - + + Notify when new client features are available + + + + Paths Chemins - + Decks directory: Répertoire des decks: - + Replays directory: Dossier de rediffusion - + Pictures directory: Répertoire des images: - + Card database: Base de données de cartes : - + Token database: Bases de données des jetons : - + Picture cache size: Taille du cache des images : - - + + English Français (French) @@ -1741,49 +1801,49 @@ Voulez-vous changer votre paramètre de localisation la base de données? MainWindow - + There are too many concurrent connections from your address. Il y a trop de connections simultanées depuis votre ordinateur. - + Scheduled server shutdown. Fermeture prévue du serveur. - + Banned by moderator Banni par un modérateur - + Expected end time: %1 Fin théorique : %1 - + This ban lasts indefinitely. Banni définitivement. - + Connection closed Connection fermée - + The server has terminated your connection. Reason: %1 Le serveur a coupé votre connexion. Raison: %1 - + Scheduled server shutdown Fermeture prévue du serveur - + The server is going to be restarted in %n minute(s). All running games will be lost. Reason for shutdown: %1 @@ -1794,455 +1854,500 @@ Aucune partie en cours ne sera sauvegardée. Raison de la fermeture : %1 - + Number of players Nombre de joueurs - + Please enter the number of players. Entrez s'il vous plait le nombre de joueurs. - - + + Player %1 Joueur %1 - + Load replay Charger replay - + About Cockatrice à propos de Cockatrice - + Version %1 Version %1 - + Translators: Traducteurs: - + Project Manager: Chef de projet: - - - Invalid username. + + The server has reached its maximum user capacity, please check back later. - - + + + Invalid username. + Nom d'utilisateur non valide. + + + + You have been logged out due to logging in at another location. + + + + + Success Réussite - + Registration accepted. Will now login. Enregistrement accepté. Connexion. - + Account activation accepted. Will now login. Activation du compte acceptée. Connexion. - + Past Project Managers: Anciens chefs de projet: - + Developers: Développeurs: - + Our Developers Nos développeurs - + Help Develop! Aidez à développer! - + Recognition Page Page des remerciements - + Help Translate! Aidez à traduire! - + Support: Assistance: - + Report an Issue Signaler un problème - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + Error Erreur - + Server timeout Délai de la demande dépassé - + + Failed Login + + + + + Your client does not support features that the server requires, please update your client and try again. + + + + Incorrect username or password. Please check your authentication information and try again. Nom d'utilisateur ou mot de passe incorrect. Veuillez vérifier vos identifiants et réessayez. - + There is already an active session using this user name. Please close that session first and re-login. Il y a déjà une session ouvert avec le même pseudo. Fermez cette session puis re-connectez-vous. - - + + You are banned until %1. Vous êtes banni jusqu'au : %1 - - + + You are banned indefinitely. Vous êtes banni indéfiniment - + This server requires user registration. Do you want to register now? Vous devez être enregistré pour accéder à ce serveur. Voulez-vous vous enregistrer? - + + This server requires client ID's. Your client is either failing to generate an ID or you are running a modified client. +Please close and reopen your client to try again. + + + + + An internal error has occurred, please try closing and reopening your client and try again. If the error persists try updating your client to the most recent build and if need be contact your software provider. + + + + Account activation Activation du compte - - Your account has not been activated yet. - You need to provide the activation token received in the activation email - Votre compte n'a pas encore été activé. -Vous devez activer le jeton de connexion situé dans le mail d'activation - - - - + Unknown login error: %1 Erreur de connexion inconnue : %1 - + + + +This usually means that your client version is out of date, and the server sent a reply your client doesn't understand. + + + + Your username must respect these rules: - + is %1 - %2 characters long - + can %1 contain lowercase characters - - - - + + + + NOT - + can %1 contain uppercase characters - + can %1 contain numeric characters - + can contain the following punctuation: %1 - + first character can %1 be a punctuation mark - + You may only use A-Z, a-z, 0-9, _, ., and - in your username. - - - - - + + + + + Registration denied Enregistrement refusé - + Registration is currently disabled on this server L'enregistrement est désactivée sur ce serveur - + There is already an existing account with the same user name. Il existe déjà un compte avec le même nom d'utilisateur. - + It's mandatory to specify a valid email address when registering. Il est obligatoire de spécifier une adresse e-mail valide lors de l'enregistrement. - + Too many registration attempts from your IP address. Excès de tentatives d'enregistrement depuis votre adresse IP. - + Password too short. Mot de passe trop court. - + Registration failed for a technical problem on the server. Enregistrement échoué lié à un problème technique du serveur. - + + Unknown registration error: %1 + + + + Account activation failed Activation du compte échouée - + Socket error: %1 Erreur de socket: %1 - + 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. 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'ancienne version est %2. - + Your Cockatrice client is obsolete. Please update your Cockatrice version. Local version is %1, remote version is %2. Votre client Cockatrice est obsolète. Veuillez charger la nouvelle version. La version la plus récente est %1, l'ancienne version est %2. - + Connecting to %1... Connexion à %1... - + Registering to %1 as %2... Enregistrement de %1 en tant que %2... - + Disconnected Déconnecté - + Connected, logging in at %1 Connecté, connexion à %1 - - Logged in as %1 at %2 - Connecté en tant que %1 à %2 - - - + &Connect... &Connecter... - + &Disconnect &Déconnecter - + Start &local game... Démarrer une partie &locale... - + &Watch replay... &Regarder un replay... - + &Deck editor Éditeur de &deck - + &Full screen &Plein écran - + &Register to server... S'inscrire sur le serveur... - + &Settings... &Paramètres... - - + + &Exit &Quitter - + A&ctions Actions - + &Cockatrice &Cockatrice - + &About Cockatrice À propos de Cock&atrice - + &Help A&ide - + Check for card updates... Recherche de mises à jour de la base de données... - + A card database update is already running. Une mise à jour de la base de données est déjà en cours. - + Unable to run the card database updater: Impossible de lancer la mise à jour de la base de données: - + The card database updater exited with an error: %1 L'outil de mise à jour de la base de données s'est arrêté avec l'erreur: %1 - + Update completed successfully. Cockatrice will now reload the card database. La mise à jour s'est effectuée avec succès. Cockatrice va maintenant charger de nouveau la base de données des cartes. - - + + Your client appears to be missing features that the server supports. +This usually means that your client version is out of date, please check to see if there is a new client available for download. + + + + + + Information Information - + Troubleshooting - + F.A.Q. - + + Your account has not been activated yet. +You need to provide the activation token received in the activation email + + + + failed to start. Échec du démarrage. - + crashed. planté. - + timed out. déconnecté. - + write error. Erreur d'écriture. - + read error. Erreur de lecture. - + unknown error. Erreur inconnue. @@ -3482,62 +3587,74 @@ La version la plus récente est %1, l'ancienne version est %2. MessagesSettingsPage - + Chat settings Paramètres du chat - + + Custom alert words + + + + Enable chat mentions Activer les mentions dans le chat - + + Enable mention completer + + + + In-game message macros - - Ignore unregistered users in main chat - Ignorer les invités dans le chat principal + + Ignore chat room messages sent by unregistered users + - - Ignore chat room messages sent by unregistered users. - Ignorer les messages dans le chat principal envoyés par des invités. + + Ignore private messages sent by unregistered users + - - Ignore private messages sent by unregistered users. - Ignorer les messages privés envoyés par des invités. + + Enable desktop notifications for private messages + - + + Separate words with a space, alphanumeric characters only + + + + + Invert text color Inverser la couleur du texte - - Enable desktop notifications for private messages. - Activer les notifications de bureau pour les messages privées. - - - + Enable desktop notification for mentions. Activer les notifications de bureau pour les mentions. - + + (Color is hexadecimal) (La couleur est hexadécimale) - + Add message Ajouter message - + Message: Message: @@ -3603,435 +3720,435 @@ La version la plus récente est %1, l'ancienne version est %2. Player - + &View library &Voir la bibliothèque - + Move top cards to &graveyard... Déplacer les cartes du dessus vers le &cimetière... - + View &top cards of library... Voir les cartes du &dessus de la bibliothèque... - + &View graveyard &Voir le cimetière - + &View sideboard &Voir la réserve - + Player "%1" Joueur "%1" - - - - + + + + &Hand &Main - + &Reveal hand to... &Révéler la main à ... - + Reveal r&andom card to... Révéler une c&arte au hasard à ... - + &Library &Bibliothèque - - - - + + + + &Graveyard &Cimetière - + &Sideboard Ré&serve - + Red Rouge - + Yellow Jaune - + Green Vert - + View top cards of library Voir les cartes du dessus de la bibliothèque - + Number of cards: Nombre de cartes: - + &Draw card &Piocher une carte - + Reveal top cards of library Révéler les cartes du dessus de la bibliothèque - + Number of cards: (max. %1) Nombre de cartes: (max. %1) - + &View exile &Voir la zone exil - - - - + + + + &Exile &Exil - + Reveal t&op cards to... Révéler la carte de dessus à... - + D&raw cards... P&iocher plusieurs cartes... - + Take &mulligan &Mulliganer - + &Shuffle Mél&anger - + &Counters Mar&queurs - + &Untap all permanents Dé&gager tous les permanents - + R&oll die... Lancer un &dé... - + &Create token... &Créer un jeton... - + C&reate another token C&réer un autre jeton - + S&ay D&ire - + &Move hand to... Déplacer la &main dans ... - - - - + + + + &Top of library &Dessus de la bibliothèque - - - - + + + + &Bottom of library Dessous de la &bibliothèque - + &Move graveyard to... Déplacer le cimetière vers... - + &Move exile to... Déplacer l'exil vers... - + Reveal &library to... Révéler &la bibliothèque à... - + &Always reveal top card Toujours révéler l&a carte du dessus - + O&pen deck in deck editor Ouvrir le deck dans l'éditeur de deck - + &Undo last draw Annu&ler la dernière pioche - + Play top card &face down Jouer la carte du dessus face cachée - + Move top cards to &exile... Déplacer les cartes du dessus vers la zone &exil... - + Put top card on &bottom Mettre la carte du dessus en &dessous - + Put bottom card &in graveyard Mettre la carte du dessous &dans le cimetière - + Cr&eate predefined token C&réer un jeton prédéfini - + C&ard C&arte - + &All players &Tous les joueurs - + &Play &Jouer - + &Hide &Cacher - + Play &Face Down Jouer &Face Cachée - + &Tap &Engager - + &Untap &Dégager - + Toggle &normal untapping Basculer en Dégagement &normal - + &Flip &Retourner la carte - + &Peek at card face &Regarder furtivement la carte face cachée - + &Clone &Copier la carte - + Attac&h to card... Attac&her à une autre carte ... - + Unattac&h Détac&her - + &Draw arrow... &Tracer une flèche... - + &Increase power &Augmenter la force - + &Decrease power &Diminuer la force - + I&ncrease toughness A&ugmenter l'endurance - + D&ecrease toughness D&iminuer l'endurance - + In&crease power and toughness Au&gmenter la force et l'endurance - + Dec&rease power and toughness Di&minuer la force et l'endurance - + Set &power and toughness... Fi&xer la force et l'endurance... - + &Set annotation... &Ajouter une annotation... - + &Add counter (%1) &Ajouter un marqueur (%1) - + &Remove counter (%1) &Retirer un marquer (%1) - + &Set counters (%1)... $Nombre de marqueurs (%1)... - + Draw cards Piocher plusieurs cartes - - - - + + + + Number: Nombre: - + Move top cards to grave Mettre les cartes du dessus dans le cimetière - + Move top cards to exile Mettre les cartes du dessus dans la zone exil - + Roll die Lancer un dé - + Number of sides: Nombre de faces: - + Set power/toughness Fixer force/endurance - + Please enter the new PT: Entrer la nouvelle F/E: - + Set annotation Mettre une note - + Please enter the new annotation: Entrez la nouvelle note: - + Set counters Mettre des marqueurs - + Cr&eate related card @@ -4039,37 +4156,37 @@ La version la plus récente est %1, l'ancienne version est %2. QMenuBar - + Services - + Hide %1 Cacher %1 - + Hide Others Cacher les autres - + Show All Montrer tout - + Preferences... Préférences... - + Quit %1 Quitter %1 - + About %1 À Propos %1 @@ -4077,7 +4194,7 @@ La version la plus récente est %1, l'ancienne version est %2. QObject - + Cockatrice replays (*.cor) Replays Cockatrice (*.cor) @@ -4146,35 +4263,64 @@ La version la plus récente est %1, l'ancienne version est %2. RoomSelector - + Rooms Salons - + Joi&n &Rejoindre - + Room Salon - + Description Description - + + Permissions + + + + Players Joueurs - + Games Parties + + + + Error + + + + + You do not have the proper permission to join this room. + + + + + Failed to join the room due to an unknown error. + + + + + SequenceEdit + + + Shortcut already in use + + SetsModel @@ -4225,37 +4371,37 @@ La version la plus récente est %1, l'ancienne version est %2. SoundSettingsPage - + Choose path Choisir le chemin d'accès - + Enable &sounds Activer le &son - + Path to sounds directory: Chemin d'accès au répertoire sons - + Test system sound engine Tester les effets sonores - + Sound settings Réglages du son - + Master volume requires QT5 - + Master volume Volume principal @@ -4311,117 +4457,152 @@ La version la plus récente est %1, l'ancienne version est %2. TabDeckEditor - + &Print deck... Im&primer le deck... - + &Close &Fermer - + &Edit sets... &Editer les éditions... - + Filters Filtres - + &Clear all filters &Enlever tous les filtres - + Delete selected Enlever la sélection - + Deck &name: &Nom du deck: - + &Comments: &Commentaires: - + Hash: - + &New deck &Nouveau deck - + &Load deck... Charger un deck ... - + &Save deck &Sauvegarder le deck - + Save deck &as... S&auvegarder le deck sous... - + Load deck from cl&ipboard... Charger un deck depuis le presse-pap&ier ... - + Save deck to clip&board Sauvegarder le deck dans le &presse-papier - + &Analyze deck on deckstats.net &Analyser le deck sur deckstats.net - + Open custom image folder Ouvrir le dossier image Custom - + + Open custom sets folder + + + + Add card to &maindeck Ajouter carte au &deck - + Add card to &sideboard Ajouter carte à la ré&serve - + &Deck Editor &Éditeur de Deck - + C&ard Database B&ase de données de cartes : - + + Show/Hide card information + + + + + Show/Hide deck + + + + + Show/Hide filters + + + + + Reset layout + + + + + Card Info + + + + + Deck + + + + Welcome Bienvenue - + Hi! It seems like you're running this version of Cockatrice for the first time. All the sets in the card database have been enabled. Read more about changing the set order or disabling specific sets and consequent effects in the "Edit Sets" window. @@ -4430,69 +4611,69 @@ Tous les sets de cartes dans la base de données ont été activés. Lire plus à propos du changement d'ordre des sets ou de la désactivation des sets et de ce que cela implique dans la fenêtre "Editer les sets". - + &Remove row &Retirer la flèche - + &Increment number Augmenter quant&ité - + &Decrement number &Diminuer quantité - + Edit &tokens... Modifier les je&tons... - + Deck: %1 Deck: %1 - + Are you sure? Êtes-vous sûr? - + The decklist has been modified. Do you want to save the changes? Le deck a été modifié. Voulez vous enregistrer les modifications? - + Load deck Charger deck - - - + + + Error Erreur - + The deck could not be saved. Le deck n'a pas pu être enregistré. - - + + The deck could not be saved. Please check that the directory is writable and try again. Le deck n'a pas pu être enregistré. Vérifiez que le répertoire ne soit pas en lecture seule et réessayez. - + Save deck Sauvegarder le deck @@ -4590,97 +4771,97 @@ Entrez un nom s'il vous plaît: TabGame - + &Phases &Phases - + &Game &Partie - + Next &phase &Prochaine phase - + Next &turn Prochain &Tour - + &Remove all local arrows &Retirer toutes les flèches locales - + Rotate View Cl&ockwise - + Rotate View Co&unterclockwise - + Game &information Information sur la partie - + &Concede &Concéder - + &Leave game &Quitter la partie - + C&lose replay Fermer &le replay - + &Say: &Dire: - + Concede Concéder - + Are you sure you want to concede this game? Êtes-vous sûr de vouloir concéder la partie? - + Leave game Quitter la partie - + Are you sure you want to leave this game? Êtes-vous sûr de vouloir quitter la partie? - + You are flooding the game. Please wait a couple of seconds. Vous floodez la partie. Veuillez patienter quelques secondes. - + You have been kicked out of the game. Vous avez été expulsé de la partie. - + REPLAY REPLAY @@ -4786,47 +4967,47 @@ Entrez un nom s'il vous plaît: TabRoom - + &Say: &Dire: - + Chat Chat - + &Room &Salon - + &Leave room &Quitter le salon - + &Clear chat Effacer le &Chat - + Chat Settings... Paramètres du Chat... - + mentioned you. vous a mentionné. - + Click to view Cliquer pour voir - + You are flooding the chat. Please wait a couple of seconds. Vous floodez le chat. Veuillez patienter quelques secondes. @@ -4842,15 +5023,25 @@ Entrez un nom s'il vous plaît: TabSupervisor - + Are you sure? Êtes vous sur? - + There are still open games. Are you sure you want to quit? Il y a encore des parties en cours. Êtes-vous sûr de vouloir quitter? + + + Promotion + + + + + You have been promoted to moderator. Please log out and back in for changes to take effect. + + TabUserLists @@ -4873,55 +5064,97 @@ Entrez un nom s'il vous plaît: UserContextMenu - + User &details &Détails utilisateur - + Private &chat &Chat privé - + Show this user's &games Voir les parties du joueur - + Add to &buddy list Ajouter à la liste d'&amis - + Remove from &buddy list Retirer de la liste d'&amis - + Add to &ignore list Ajouter à la &liste noire - + Remove from &ignore list Retirer de la &liste noire - + Kick from &game Exclure de la &partie - + Ban from &server Bannir du &serveur - + + &Promote user to moderator + + + + + Dem&ote user from moderator + + + + %1's games Parties de %1 + + + + Success + + + + + Successfully promoted user. + + + + + Successfully demoted user. + + + + + + Failed + + + + + Failed to promote user. + + + + + Failed to demote user. + + UserInfoBox @@ -4938,7 +5171,7 @@ Entrez un nom s'il vous plaît: Pronouns: - + Pronoms: @@ -4958,7 +5191,7 @@ Entrez un nom s'il vous plaît: Edit - + Editer @@ -5021,7 +5254,7 @@ Entrez un nom s'il vous plaît: Information - + Information @@ -5038,7 +5271,7 @@ Entrez un nom s'il vous plaît: Error - + Érreur @@ -5090,42 +5323,42 @@ Entrez un nom s'il vous plaît: UserInterfaceSettingsPage - + General interface settings Réglages généraux de l'interface - + Enable notifications in taskbar Activer les notifications dans la barre de tâches - + Notify in the taskbar for game events while you are spectating Notifier dans la barre des tâches pour les évènements des parties quand vous y êtes spectateur - + &Double-click cards to play them (instead of single-click) &Double cliquer sur la carte pour la jouer (au lieu d'un simple clic) - + &Play all nonlands onto the stack (not the battlefield) by default &Jouer toutes les cartes non terrain dans la pile (pas sur le champ de bataille) par defaut - + Annotate card text on tokens - + Animation settings Réglage des animations - + &Tap/untap animation &Animation d'engagement et de dégagement @@ -5133,22 +5366,22 @@ Entrez un nom s'il vous plaît: UserList - + Users connected to server: %1 Utilisateurs connectés au serveur: %1 - + Users in this room: %1 Utilisateurs dans ce salon: %1 - + Buddies online: %1 / %2 Amis connectés: %1 / %2 - + Ignored users online: %1 / %2 Personnes sur liste noire connectés: %1 / %2 @@ -5207,8 +5440,8 @@ Entrez un nom s'il vous plaît: - Disabled sets will still be used for loading images - Les éditions désactivées seront tout de même utilisées pour charger les images + Disabled sets will be used for loading images only if all the enabled sets failed + @@ -5216,12 +5449,12 @@ Entrez un nom s'il vous plaît: Editer les sets - + Success Réussite - + The sets database has been saved successfully. La base de données des éditions a été sauvergardée avec succès. @@ -5249,4 +5482,561 @@ Entrez un nom s'il vous plaît: vue de la pile + + shortcutsTab + + + Form + + + + + Main Window + + + + + Deck editor + + + + + Local gameplay + + + + + Watch replay + + + + + Connect + + + + + Register + + + + + Full screen + + + + + Settings + + + + + Check for card updates + + + + + Exit + + + + + Deck Editor + + + + + Analyze deck + + + + + Load deck (clipboard) + + + + + Clerar all filters + + + + + New deck + + + + + Clear one filter + + + + + Open custom folder + + + + + Close + + + + + Print deck + + + + + Edit sets + + + + + Delete card + + + + + Edit tokens + + + + + Reset layout + + + + + Add card + + + + + Save deck + + + + + Remove card + + + + + Save deck as + + + + + Load deck + + + + + Save deck (clipboard) + + + + + + Counters + + + + + Life + + + + + + + + + Set + + + + + + + + Add + + + + + + + + Remove + + + + + Red + + + + + Green + + + + + Yellow + + + + + Mainwindow / Deck editor + + + + + Power / toughness + + + + + Power and toughness + + + + + Add (+1/+1) + + + + + Remove (-1/-1) + + + + + Toughness + + + + + Remove (-0/-1) + + + + + Add (+0/+1) + + + + + Power + + + + + Remove (-1/-0) + + + + + Add (+1/+0) + + + + + Game Phases + + + + + Untap + + + + + Disconnect + + + + + Upkeep + + + + + + Draw + + + + + Main 1 + + + + + Start combat + + + + + Attack + + + + + Block + + + + + Damage + + + + + End combat + + + + + Main 2 + + + + + End + + + + + Next phase + + + + + Next turn + + + + + Player + + + + + Tap Card + + + + + Untap Card + + + + + Untap all + + + + + Toogle untap + + + + + Flip card + + + + + Peek card + + + + + Play card + + + + + Attach card + + + + + Unattach card + + + + + Clone card + + + + + Create token + + + + + Create another token + + + + + Set annotation + + + + + Phases / P/T / Player + + + + + Move card to + + + + + Bottom library + + + + + Top library + + + + + + Graveyard + + + + + + Exile + + + + + Hand + + + + + View + + + + + Library + + + + + Tops card of library + + + + + Sideboard + + + + + Close recent view + + + + + Pre-play + + + + + Load remote deck + + + + + Load local deck + + + + + Game play + + + + + Draw arrow + + + + + Leave game + + + + + Remove local arrows + + + + + Concede + + + + + Roll dice + + + + + Rotate view CW + + + + + Shuffle library + + + + + Rotate view CCW + + + + + Mulligan + + + + + Draw card + + + + + Draw cards + + + + + Undo draw + + + + + Always reveal top card + + + + + Draw / Move / View / Game play + + + \ No newline at end of file diff --git a/cockatrice/translations/cockatrice_it.ts b/cockatrice/translations/cockatrice_it.ts index 8bffaf23..25a15972 100644 --- a/cockatrice/translations/cockatrice_it.ts +++ b/cockatrice/translations/cockatrice_it.ts @@ -2,17 +2,17 @@ AbstractCounter - + &Set counter... Imposta &segnalini... - + Set counter Imposta segnalini - + New value for counter '%1': Nuovo valore per il segnalino '%1': @@ -20,89 +20,60 @@ AppearanceSettingsPage - - Zone background pictures - Immagini di sfondo delle zone + + Theme settings + Impostazioni temi - - Hand background: - Sfondo mano: + + Current theme: + Tema attuale: - - Stack background: - Sfondo pila: - - - - Table background: - Sfondo tavolo: - - - - Player info background: - Sfondo info giocatore: - - - - Card back: - Sfondo carta: - - - + Card rendering Visualizzazione delle carte - + Display card names on cards having a picture Visualizza nome delle carte sopra le immagini - + Scale cards on mouse over Ingrandisci la carta sotto il mouse - + Hand layout Layout della mano - + Display hand horizontally (wastes space) Disponi la mano orizzontalmente (spreca spazio) - + Enable left justification Allinea a sinistra - + Table grid layout Layout della griglia tabellare - + Invert vertical coordinate Inverti le coordinate verticali - + Minimum player count for multi-column layout: Numero di giocatori minimo per layout multicolonna: - - - - - - - Choose path - Seleziona percorso - BanDialog @@ -117,87 +88,110 @@ Banna indirizzo &IP - + + ban client I&D + banna client I&D + + + Ban type Tipo di ban - + &permanent ban Ban &permanente - + &temporary ban Ban &temporaneo - + &Days: &Giorni: - + &Hours: &Ore: - + &Minutes: &Minuti: - + Duration of the ban Durata del ban - + Please enter the reason for the ban. This is only saved for moderators and cannot be seen by the banned person. Per favore inserisci la ragione del ban. Questo è solo visibile ai moderatori e non alla persona bannata. - + Please enter the reason for the ban that will be visible to the banned person. Per favore inserisci la ragione del ban che sarà visibile alla persona bannata. - + &OK &OK - + &Cancel &Annulla - + Ban user from server Banna utente dal server - + + + + Error Errore - - You have to select a name-based or IP-based ban, or both. - Seleziona un ban su nome, IP, o entrambi. + + You have to select a name-based, IP-based, clientId based, or some combination of the three to place a ban. + Seleziona un nome, un IP, un client ID o una combinazione di questi per impostare un ban. + + + + You must have a value in the name ban when selecting the name ban checkbox. + Devi inserire un valore nel campo nome quando il ban per nome è selezionato. + + + + You must have a value in the ip ban when selecting the ip ban checkbox. + Devi inserire un valore nel campo ip quando il ban per ip è selezionato. + + + + You must have a value in the clientid ban when selecting the clientid ban checkbox. + Devi inserire un valore nel campo clientid quando il ban per clientid è selezionato. CardDatabase - + New sets found Nuovi set trovati - + %1 new set(s) have been found in the card database. Do you want to enable them? %1 nuovi set sono stati trovati nel database delle carte. Vuoi abilitare i nuovi set? @@ -233,17 +227,17 @@ Questo è solo visibile ai moderatori e non alla persona bannata. CardFrame - + Image Immagine - + Description Testo - + Both Entrambi @@ -299,27 +293,32 @@ Questo è solo visibile ai moderatori e non alla persona bannata. Visualizza tutte le info - + Name: Nome: - + Mana cost: Costo: - + + Color(s): + Colori: + + + Card type: Tipo: - + P / T: F / C: - + Loyalty: Fedeltà: @@ -583,12 +582,12 @@ Questo è solo visibile ai moderatori e non alla persona bannata. DeckEditorSettingsPage - + Nothing is here... yet Nulla da vedere qui... per ora - + General Generale @@ -596,17 +595,17 @@ Questo è solo visibile ai moderatori e non alla persona bannata. DeckListModel - + Number Numero - + Card Carta - + Price Prezzo @@ -628,42 +627,42 @@ Questo è solo visibile ai moderatori e non alla persona bannata. DeckViewContainer - + Load local deck Carica mazzo dal pc - + Load deck from server Carica mazzo dal server - + Ready to s&tart Pronto a i&niziare - + S&ideboard unlocked S&ideboard sbloccato - + S&ideboard locked S&ideboard bloccato - + Load deck Carica mazzo - + Error Errore - + The selected file could not be loaded. I file selezionati non posso essere caricati. @@ -709,37 +708,52 @@ Questo è solo visibile ai moderatori e non alla persona bannata. DlgConnect - + + Previous Host + Ultimo indirizzo + + + + New Host + Nuovo indirizzo + + + &Host: &Host: - + + Enter host name + Inserisci indirizzo + + + &Port: &Porta: - + Player &name: &Nome giocatore: - + P&assword: P&assword: - + &Save password &Salva password - + A&uto connect at start Connetti a&utomaticamente all'avvio - + Connect to server Connetti al server @@ -747,82 +761,92 @@ Questo è solo visibile ai moderatori e non alla persona bannata. DlgCreateGame - + &Description: &Descrizione: - + &Password: &Password: - + P&layers: G&iocatori: - + + Re&member settings + Ricorda impostazioni + + + Game type Formato di gioco - + Only &buddies can join Solo gli &amici possono entrare - + Only &registered users can join Solo &utenti registrati possono entrare - + Joining restrictions Restrizioni d'ingresso - + &Spectators can watch &Gli spettatori possono vedere - + Spectators &need a password to watch Gli spettatori &necessitano di password - + Spectators can see &hands Gli spettatori vedono le mani - + Spectators can &chat &Spettatori possono &chattare - + Spectators Spettatori - + + &Clear + Pulisci + + + Create game Crea partita - + Game information Informazioni partita - + Error Errore - + Server error. Errore del server. @@ -964,32 +988,32 @@ Per rimuovere il tuo avatar attuale, conferma senza scegliere una nuova immagine DlgEditPassword - + Old password: Vecchia password: - + New password: Nuova password: - + Confirm new password: Conferma nuova password: - + Change password Cambia password - + Error Errore - + The new passwords don't match. Le password non coincidono. @@ -1093,47 +1117,47 @@ Assicurati di aver abilitato il set "Tokens" nella finestra "Modi DlgEditUser - + Email: Email: - + Pronouns: Pronomi: - + Neutral Neutrali - + Masculine Maschili - + Feminine Femminili - + Country: Stato: - + Undefined Non definito - + Real name: Nome reale: - + Edit user profile Modifica profilo utente @@ -1141,47 +1165,47 @@ Assicurati di aver abilitato il set "Tokens" nella finestra "Modi DlgFilterGames - + Show &unavailable games Mostra partite &non disponibili - + Show &password protected games Mostra partite protette da &password - + Game &description: &Descrizione partita: - + &Creator name: Nome &creatore: - + &Game types Tipi di &partita - + at &least: a&lmeno: - + at &most: al &massimo: - + Maximum player count Numero massimo di giocatori - + Filter games Filtro partite @@ -1189,7 +1213,7 @@ Assicurati di aver abilitato il set "Tokens" nella finestra "Modi DlgLoadDeckFromClipboard - + &Refresh &Aggiorna @@ -1199,14 +1223,14 @@ Assicurati di aver abilitato il set "Tokens" nella finestra "Modi Carica mazzo dagli appunti - - + + Error Errore - - + + Invalid deck list. Lista del mazzo non valida. @@ -1222,67 +1246,93 @@ Assicurati di aver abilitato il set "Tokens" nella finestra "Modi DlgRegister - + &Host: &Host: - + &Port: &Porta: - + Player &name: &Nome giocatore: - + P&assword: P&assword: - + + Password (again): + Password (conferma): + + + Email: Email: - + + Email (again): + Email (conferma): + + + Pronouns: Pronomi: - + Neutral Neutrali - + Masculine Maschili - + Feminine Femminili - + Undefined Non definito - + + + Registration Warning + Avviso Registrazione + + + + Your passwords do not match, please try again. + Le password non combaciano, riprova. + + + + Your email addresses do not match, please try again. + Gli indirizzi email non combaciano, riprova. + + + Country: Stato: - + Real name: Nome reale: - + Register to server Registrati sul server @@ -1290,19 +1340,19 @@ Assicurati di aver abilitato il set "Tokens" nella finestra "Modi DlgSettings - - - + + + Error Errore - + Unknown Error loading card database Errore sconosciuto durante il caricamento del database delle carte - + Your card database is invalid. Cockatrice may not function correctly with an invalid database @@ -1319,7 +1369,7 @@ Ti consigliamo di avviare oracle per aggiornare il tuo database delle carte. Vuoi modificare le impostazioni della posizione del database della carte? - + Your card database version is too old. This can cause problems loading card information or images @@ -1336,7 +1386,7 @@ Ti consigliamo di avviare oracle per aggiornare il tuo database delle carte. Vuoi modificare le impostazioni della posizione del database della carte? - + File Error loading your card database. Would you like to change your database location setting? @@ -1345,7 +1395,7 @@ Would you like to change your database location setting? Vuoi modificare le impostazioni della posizione del database della carte? - + Your card database was loaded but contains no cards. Would you like to change your database location setting? @@ -1354,7 +1404,7 @@ Would you like to change your database location setting? Vuoi modificare le impostazioni della posizione del database della carte? - + Your card database did not finish loading Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues with your cards.xml attached @@ -1367,7 +1417,7 @@ Ti preghiamo di aprire un ticket su http://github.com/Cockatrice/Cockatrice/issu Vuoi modificare le impostazioni della posizione del database della carte? - + Unknown card database load status Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues @@ -1380,50 +1430,55 @@ Ti preghiamo di aprire un ticket su http://github.com/Cockatrice/Cockatrice/issu Vuoi modificare le impostazioni della posizione del database della carte? - + The path to your deck directory is invalid. Would you like to go back and set the correct path? Il percorso della cartella del mazzo non è valido. Vuoi tornare in dietro e impostare il percorso corretto? - + The path to your card pictures directory is invalid. Would you like to go back and set the correct path? Il percorso della cartella delle immagini delle carte è invilido. Vuoi tornare indietro e impostare il percorso corretto? - + Settings Impostazioni - + General Generale - + Appearance Aspetto - + User Interface Interfaccia - + Deck Editor Editor di mazzi - + Chat Chat - + Sound Suoni + + + Shortcuts + Combinazioni + GameSelector @@ -1436,7 +1491,7 @@ Vuoi modificare le impostazioni della posizione del database della carte? - + Error Errore @@ -1481,47 +1536,47 @@ Vuoi modificare le impostazioni della posizione del database della carte?Sei stato ingnorato dal creatore di questa partita. - + Join game Entra nella partita - + Password: Password: - + Please join the respective room first. Si prega di entrare nella rispettiva stanza prima. - + Games Partite + + + &Filter games + &Filtri partite + - Filter games - Filtro partite + C&lear filter + E&limina filtri - Clear filter - Elimina filtri + C&reate + Cr&ea - - Create - Crea + + &Join + &Entra - - Join - Entra - - - + J&oin as spectator Entra c&ome spettatore @@ -1638,107 +1693,112 @@ Vuoi modificare le impostazioni della posizione del database della carte? GeneralSettingsPage - + Reset/Clear Downloaded Pictures Resetta/Pulisci le Immagini Scaricate - - - - - + + + + + Choose path Seleziona il percorso - + Success Successo - + Downloaded card pictures have been reset. Le immagini scaricate delle carte sono state resettate. - + Error Errore - + One or more downloaded card pictures could not be cleared. Una o più immagini scaricate delle carte non possono essere pulite. - + Personal settings Impostazioni personali - + Language: Lingua: - + Download card pictures on the fly Download immagini delle carte - + Download card pictures from a custom URL Download immagini delle carte da un indirizzo personalizzato - + Custom Card Download URL: Indirizzo immagini personalizzato: - + Linking FAQ Info su indirizzo immagini personalizzato - + + Notify when new client features are available + Avvisa quando nuove funzioni sono disponibili nel programma + + + Paths Percorso - + Decks directory: Cartella mazzi: - + Replays directory: Cartella replay: - + Pictures directory: Cartella immagini: - + Card database: Database carte: - + Token database: Database pedine: - + Picture cache size: Dimensione cache immagini: - - + + English Italiano (Italian) @@ -1746,49 +1806,49 @@ Vuoi modificare le impostazioni della posizione del database della carte? MainWindow - + There are too many concurrent connections from your address. Ci sono troppe connessioni contemporanee dal tuo indirizzo. - + Scheduled server shutdown. Spegnimento del server in programma. - + Banned by moderator Bannato dal moderatore - + Expected end time: %1 Fine prevista: %1 - + This ban lasts indefinitely. Questo ban dura a tempo indeterminato. - + Connection closed Connessione chiusa - + The server has terminated your connection. Reason: %1 Hai perso la connessione con il server. Ragione: %1 - + Scheduled server shutdown Spegnimento del server in programma - + The server is going to be restarted in %n minute(s). All running games will be lost. Reason for shutdown: %1 @@ -1799,455 +1859,504 @@ Tutti le partite saranno perse. Ragione dello spegnimento: %1 - + Number of players Numero di giocatori - + Please enter the number of players. Inserisci il numero di giocatori. - - + + Player %1 Giocatore %1 - + Load replay Carica replay - + About Cockatrice Info su Cockatrice - + Version %1 Versione %1 - + Translators: Traduttori: - + Project Manager: Manager del progetto: - - + + The server has reached its maximum user capacity, please check back later. + Il server ha raggiunto la sua massima capacità di utenti, riprova più tardi. + + + + Invalid username. Nome utente non valido. - - + + You have been logged out due to logging in at another location. + Sei stato disconnesso: ti sei connesso da un'altra postazione. + + + + Success Successo - + Registration accepted. Will now login. Registrazione accettata. Login in corso. - + Account activation accepted. Will now login. Attivazione account accettata. Login in corso. - + Past Project Managers: Manager precedenti: - + Developers: Sviluppatori: - + Our Developers I nostri sviluppatori - + Help Develop! Aiutaci nello sviluppo! - + Recognition Page Informazioni generali - + Help Translate! Aiutaci nella traduzione! - + Support: Supporto: - + Report an Issue Segnala un problema - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + Error Errore - + Server timeout Timeout del server - + + Failed Login + Login fallito + + + + Your client does not support features that the server requires, please update your client and try again. + La tua versione del programma non supporta funzionalità richieste dal server, aggiorna il programma e riprova. + + + Incorrect username or password. Please check your authentication information and try again. Nome utente o password non validi. Ricontrolla i tuoi dati di accesso e riprova. - + There is already an active session using this user name. Please close that session first and re-login. Sei già loggato in un'altra sessione con questo username. Chiudi prima quella sessione e riprova a loggare. - - + + You are banned until %1. Sei bannato fino a %1. - - + + You are banned indefinitely. Sei stato bannato per tempo indeterminato. - + This server requires user registration. Do you want to register now? Questo server richiede la registrazione degli utenti. Vuoi registrarti adesso? - + + This server requires client ID's. Your client is either failing to generate an ID or you are running a modified client. +Please close and reopen your client to try again. + Il server richiede un client ID. Il tuo programma non ha generato un client ID. +Riprova dopo ver chiuso e riaperto il tuo programma. + + + + An internal error has occurred, please try closing and reopening your client and try again. If the error persists try updating your client to the most recent build and if need be contact your software provider. + Si è verificato un errore, riprova chiudendo e riaprendo il programma. Se l'errore persiste, aggiorna il programma all'ultima versione o chiedi assistenza. + + + Account activation Attivazione account - - Your account has not been activated yet. - You need to provide the activation token received in the activation email - Il tuo account non è ancora attivo. -Per attivarlo inserisci il codice di attivazione ricevuto tramite email - - - - + Unknown login error: %1 Errore di login sconosciuto: %1 - + + + +This usually means that your client version is out of date, and the server sent a reply your client doesn't understand. + +Solitamente questo significa che stai usando una vecchia versione del programma, e il server ha inviato un messaggio che il tuo programma non è in grado di comprendere. + + + Your username must respect these rules: Il nome utente deve seguire queste regole: - + is %1 - %2 characters long essere lungo %1 - %2 caratteri - + can %1 contain lowercase characters %1 può contenere caratteri minuscoli - - - - + + + + NOT NON - + can %1 contain uppercase characters %1 può contenere caratteri maiuscoli - + can %1 contain numeric characters %1 può contenere numeri - + can contain the following punctuation: %1 può contenere la punteggiatura: %1 - + first character can %1 be a punctuation mark il primo carattere %1 può essere punteggiatura - + You may only use A-Z, a-z, 0-9, _, ., and - in your username. Puoi usare solo i caratteri A-Z, a-z, 0-9, _, ., e - nel tuo nome utente. - - - - - + + + + + Registration denied Registrazione negata - + Registration is currently disabled on this server La registrazione è disabilitata su questo server - + There is already an existing account with the same user name. Esiste già un account con lo stesso nome utente. - + It's mandatory to specify a valid email address when registering. E' obbligatorio specificare un indirizzo email valido per la registrazione. - + Too many registration attempts from your IP address. Ci sono troppi tentativi di registrazione dal tuo indirizzo. - + Password too short. Password troppo corta. - + Registration failed for a technical problem on the server. La registrazione è fallita a causa di un problema tecnico sul server. - + + Unknown registration error: %1 + Errore di registrazione sconosciuto: %1 + + + Account activation failed Attivazione account fallita - + Socket error: %1 Errore nella connessione: %1 - + 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. Stai cercando di connetterti a un server obsoleto. Declassa la versione di Cockatrice per farlo funzionare o connetti ad un altro server. La tua versione è la %1, la versione remota è la %2. - + Your Cockatrice client is obsolete. Please update your Cockatrice version. Local version is %1, remote version is %2. La tua versione di Cockatrice è obsoleta. Aggiorna la tua versione di Cockatrice. La tua versione è la %1, la versione online è la %2. - + Connecting to %1... Connessione a %1... - + Registering to %1 as %2... Registrazione su %1 come %2... - + Disconnected Disconnesso - + Connected, logging in at %1 Connesso, login in corso su %1 - - Logged in as %1 at %2 - Loggato come %1 su %2 - - - + &Connect... &Connetti... - + &Disconnect &Disconnetti - + Start &local game... Inizia &partita in locale... - + &Watch replay... &Visualizza replay... - + &Deck editor &Editore di mazzi - + &Full screen &Schermo intero - + &Register to server... &Registrati sul server... - + &Settings... &Impostazioni... - - + + &Exit &Esci - + A&ctions A&zioni - + &Cockatrice &Cockatrice - + &About Cockatrice &Info su Cockatrice - + &Help &Aiuto - + Check for card updates... Aggiorna carte... - + A card database update is already running. L'aggiornamento delle carte è già in corso. - + Unable to run the card database updater: Impossibile avviare l'aggiornamento delle carte: - + The card database updater exited with an error: %1 L'aggiornamento delle carte ha causato un errore: %1 - + Update completed successfully. Cockatrice will now reload the card database. Aggiornamento delle carte completato. Il database delle carte verrà ricaricato. - - + + Your client appears to be missing features that the server supports. +This usually means that your client version is out of date, please check to see if there is a new client available for download. + La tua versione del programma sembra non avere delle funzionalità che il server supporta. +Questo tipicamente significa che sta usando una vecchia versione del programma, e che dovresti aggiornarla. + + + + + Information Informazione - + Troubleshooting Risoluzione dei problemi - + F.A.Q. F.A.Q. - + + Your account has not been activated yet. +You need to provide the activation token received in the activation email + Il tuo account non è ancora attivo. +Per attivarlo inserisci il codice di attivazione ricevuto tramite email + + + failed to start. avvio fallito. - + crashed. crashato. - + timed out. time out. - + write error. errore di scrittura. - + read error. errore di lettura. - + unknown error. errore sconosciuto. @@ -3436,7 +3545,7 @@ La tua versione è la %1, la versione online è la %2. upkeep step - Interfase di matenimento + Interfase di mantenimento @@ -3487,62 +3596,74 @@ La tua versione è la %1, la versione online è la %2. MessagesSettingsPage - + Chat settings Impostazioni Chat - + + Custom alert words + Lista parole evidenziate + + + Enable chat mentions Abilita citazioni in chat - + + Enable mention completer + Abilita completamento citazioni + + + In-game message macros Messaggi rapidi in partita - - Ignore unregistered users in main chat - Ignora gli utenti non registrati nella chat principale - - - - Ignore chat room messages sent by unregistered users. + + Ignore chat room messages sent by unregistered users Ignora i messaggi in chat inviati dagli utenti non registrati - - Ignore private messages sent by unregistered users. + + Ignore private messages sent by unregistered users Ignora i messaggi privati inviati dagli utenti non registrati - + + Enable desktop notifications for private messages + Abilita notifiche sul desktop per i messaggi privati + + + + Separate words with a space, alphanumeric characters only + Separare le parole con uno spazio; solo caratteri alfanumerici + + + + Invert text color Inverti colore testo - - Enable desktop notifications for private messages. - Abilita notifiche sul desktop per i messaggi privati - - - + Enable desktop notification for mentions. Abilita le notifiche sul desktop per le menzioni. - + + (Color is hexadecimal) (Colore in esadecimale) - + Add message Aggiungi messaggio - + Message: Messaggio: @@ -3557,7 +3678,7 @@ La tua versione è la %1, la versione online è la %2. Upkeep step - Interfase di matenimento + Interfase di mantenimento @@ -3608,435 +3729,435 @@ La tua versione è la %1, la versione online è la %2. Player - + &View library &Guarda mazzo - + Move top cards to &graveyard... Metti le prime carte nel &cimitero... - + View &top cards of library... Guarda &le prime carte del mazzo... - + &View graveyard &Guarda cimitero - + &View sideboard &Guarda la sideboard - + Player "%1" Giocatore "%1" - - - - + + + + &Hand &Mano - + &Reveal hand to... &Rivela mano a... - + Reveal r&andom card to... Rivela carta c&asuale a... - + &Library &Mazzo - - - - + + + + &Graveyard &Cimitero - + &Sideboard &Sideboard - + Red Rosso - + Yellow Giallo - + Green Verde - + View top cards of library Guarda le prima carte del grimorio - + Number of cards: Numero di carte: - + &Draw card &Pesca una carta - + Reveal top cards of library Rivela le prime carte del grimorio - + Number of cards: (max. %1) Numero di carte: (max %1) - + &View exile &Guarda zona di esilio - - - - + + + + &Exile &Esilio - + Reveal t&op cards to... Rivela le prime carte a... - + D&raw cards... P&esca carte... - + Take &mulligan Mu&lliga - + &Shuffle &Mischia - + &Counters &Segnalini - + &Untap all permanents &Stappa tutti i permanenti - + R&oll die... L&ancia un dado... - + &Create token... &Crea una pedina... - + C&reate another token C&rea un'altra pedina - + S&ay P&arla - + &Move hand to... &Sposta mano in... - - - - + + + + &Top of library Cima al grimorio - - - - + + + + &Bottom of library Fondo al grimorio - + &Move graveyard to... &Muovi cimitero in... - + &Move exile to... &Muovi esilio in... - + Reveal &library to... Rive&la grimorio a... - + &Always reveal top card Rivela &sempre la prima carta - + O&pen deck in deck editor A&pri mazzo nell'editore di mazzi - + &Undo last draw &Annulla l'ultima pescata - + Play top card &face down Gioca la prima carta faccia in giù - + Move top cards to &exile... Metti le prime carte in &esilio... - + Put top card on &bottom Metti la prima carta in &fondo - + Put bottom card &in graveyard Metti l'ultima carta nel c&imitero - + Cr&eate predefined token Cr&a pedina predefinita - + C&ard C&arta - + &All players &Tutti i giocatori - + &Play &Gioca - + &Hide &Nascondi - + Play &Face Down Gioca a &Faccia in giù - + &Tap &Tappa - + &Untap &Stappa - + Toggle &normal untapping Non &stappa normalmente - + &Flip &Gira - + &Peek at card face &Sbircia la faccia della carta - + &Clone &Copia - + Attac&h to card... Attacc&a alla carta... - + Unattac&h Stacc&a - + &Draw arrow... &Disegna una freccia... - + &Increase power &Aumenta forza - + &Decrease power &Diminuisci forza - + I&ncrease toughness A&umenta costituzione - + D&ecrease toughness D&iminuisci costituzione - + In&crease power and toughness Au&menta forza e costituzione - + Dec&rease power and toughness Dim&inuisci forza e costituzione - + Set &power and toughness... Imposta &forza e costituzione... - + &Set annotation... &Imposta annotazioni... - + &Add counter (%1) &Aggiungi contatore (%1) - + &Remove counter (%1) &Rimuovi contatore (%1) - + &Set counters (%1)... &Imposta contatori (%1)... - + Draw cards Pesca carte - - - - + + + + Number: Numero: - + Move top cards to grave Metti le prima carte nel cimitero - + Move top cards to exile Metti le prime carte in esilio - + Roll die Lancia un dado - + Number of sides: Numero di facce: - + Set power/toughness Imposta forza/costituzione - + Please enter the new PT: Inserisci la nuova FC: - + Set annotation Imposta annotazione - + Please enter the new annotation: Inserisci le nuove annotazioni: - + Set counters Imposta i segnalini - + Cr&eate related card Cr&ea carta collegata @@ -4044,37 +4165,37 @@ La tua versione è la %1, la versione online è la %2. QMenuBar - + Services Servizi - + Hide %1 Nascondi %1 - + Hide Others Nascondi altre - + Show All Mostra tutte - + Preferences... Preferenze... - + Quit %1 Esci da %1 - + About %1 Informazioni su %1 @@ -4082,7 +4203,7 @@ La tua versione è la %1, la versione online è la %2. QObject - + Cockatrice replays (*.cor) Replay di Cockatrice (*.cor) @@ -4151,35 +4272,64 @@ La tua versione è la %1, la versione online è la %2. RoomSelector - + Rooms Stanze - + Joi&n E&ntra - + Room Stanza - + Description Descrizione - + + Permissions + Permessi + + + Players Giocatori - + Games Partite + + + + Error + Errore + + + + You do not have the proper permission to join this room. + Non hai i permessi necessari ad entrare in questa partita. + + + + Failed to join the room due to an unknown error. + Errore cercando di entrare nella partita. + + + + SequenceEdit + + + Shortcut already in use + Combinazione già usata + SetsModel @@ -4230,37 +4380,37 @@ La tua versione è la %1, la versione online è la %2. SoundSettingsPage - + Choose path Scegli percorso - + Enable &sounds Abilita &suoni - + Path to sounds directory: Percorso alla cartella dei suoni: - + Test system sound engine Prova il funzionamento dei suoni - + Sound settings Impostazioni suoni - + Master volume requires QT5 Il controllo volume richiede QT5 - + Master volume Volume @@ -4316,117 +4466,152 @@ La tua versione è la %1, la versione online è la %2. TabDeckEditor - + &Print deck... &Stampa mazzo... - + &Close &Chiudi - + &Edit sets... &Modifica set... - + Filters Filtri - + &Clear all filters Rimuovi tutti - + Delete selected Rimuovi selez. - + Deck &name: &Nome mazzo: - + &Comments: &Commenti: - + Hash: Hash: - + &New deck &Nuovo mazzo - + &Load deck... &Carica mazzo... - + &Save deck &Salva mazzo - + Save deck &as... Salva mazzo &con nome... - + Load deck from cl&ipboard... Carica mazzo dagli app&unti... - + Save deck to clip&board Salva mazzo nei app&unti - + &Analyze deck on deckstats.net &Analizza il mazzo con deckstats.net - + Open custom image folder Apri cartella immagini personalizzate - + + Open custom sets folder + Apri cartella set personalizzati + + + Add card to &maindeck Aggiungi carta al &grimorio - + Add card to &sideboard Aggiungi carta al &sideboard - + &Deck Editor Editor di mazzi - + C&ard Database Database delle C&arte - + + Show/Hide card information + Mostra/nascondi info carta + + + + Show/Hide deck + Mostra/nascondi mazzo + + + + Show/Hide filters + Mostra/nascondi filtri + + + + Reset layout + Resetta disposizione + + + + Card Info + Info carta + + + + Deck + Mazzo + + + Welcome Benvenuto - + Hi! It seems like you're running this version of Cockatrice for the first time. All the sets in the card database have been enabled. Read more about changing the set order or disabling specific sets and consequent effects in the "Edit Sets" window. @@ -4435,69 +4620,69 @@ Tutti i set nel database delle carte sono stati attivati. Se vuoi cambiare l'ordine dei set o disattivarne alcuni, dai un'occhiata alla finestra "Modifica set". - + &Remove row &Rimuovi carta - + &Increment number &Aumenta il numero - + &Decrement number &Diminuisci il numero - + Edit &tokens... Modifica &pedine... - + Deck: %1 Mazzo: %1 - + Are you sure? Sei sicuro? - + The decklist has been modified. Do you want to save the changes? La lista del mazzo è stata modificata. Vuoi salvare i cambiamenti? - + Load deck Carica mazzo - - - + + + Error Errore - + The deck could not be saved. Il mazzo non può essere salvato. - - + + The deck could not be saved. Please check that the directory is writable and try again. Il mazzo non può essere salvato. Controlla se la cartella è valida e prova ancora. - + Save deck Salva mazzo @@ -4594,97 +4779,97 @@ Please enter a name: TabGame - + &Phases &Fasi - + &Game &Partita - + Next &phase Prossima &fase - + Next &turn Prossimo &turno - + &Remove all local arrows &Rimuovi tutte le frecce - + Rotate View Cl&ockwise Ruota vista in senso &orario - + Rotate View Co&unterclockwise R&uota vista in senso antiorario - + Game &information &Informazioni partita - + &Concede &Concedi - + &Leave game &Lascia partita - + C&lose replay C&hiudi replay - + &Say: &Parla: - + Concede Concedi - + Are you sure you want to concede this game? Vuoi veramente concedere la partita? - + Leave game Lascia la partita - + Are you sure you want to leave this game? Sei sicuro di voler lasciare la partita? - + You are flooding the game. Please wait a couple of seconds. Stai spammando la partita. Attendi un paio di secondi. - + You have been kicked out of the game. Sei stato kickato fuori dalla partita. - + REPLAY REPLAY @@ -4790,47 +4975,47 @@ Please enter a name: TabRoom - + &Say: &Parla: - + Chat Chat - + &Room &Stanza - + &Leave room &Lascia stanza - + &Clear chat Pulisci &chat - + Chat Settings... Impostazioni Chat... - + mentioned you. ti ha menzionato. - + Click to view Clicca per visualizzare - + You are flooding the chat. Please wait a couple of seconds. Stai spammando la chat. Attendi un paio di secondi. @@ -4846,15 +5031,25 @@ Please enter a name: TabSupervisor - + Are you sure? Sei sicuro? - + There are still open games. Are you sure you want to quit? Ci sono ancora delle partite aperte. Sei sicuro di voler uscire? + + + Promotion + Promozione + + + + You have been promoted to moderator. Please log out and back in for changes to take effect. + Sei stato promosso a moderatore. Esci e rientra per rendere effettiva la promozione. + TabUserLists @@ -4877,55 +5072,97 @@ Please enter a name: UserContextMenu - + User &details &Dettagli utente - + Private &chat &Chat privata - + Show this user's &games Visualizza le &partite dell'utente - + Add to &buddy list Aggiungi alla lista &amici - + Remove from &buddy list Rimuovi dalla lista &amici - + Add to &ignore list Aggiungi alla lista &ignorati - + Remove from &ignore list Rimuovi dalla lista &ignorati - + Kick from &game Caccia dalla &partita - + Ban from &server Banna dal &server - + + &Promote user to moderator + &Promuovi utente a moderatore + + + + Dem&ote user from moderator + Degrada il m&oderatore ad utente + + + %1's games Partite di %1 + + + + Success + Successo + + + + Successfully promoted user. + Utente promosso. + + + + Successfully demoted user. + Utente degradato. + + + + + Failed + Fallito + + + + Failed to promote user. + Promozione fallita. + + + + Failed to demote user. + Degradazione fallita. + UserInfoBox @@ -5094,42 +5331,42 @@ Please enter a name: UserInterfaceSettingsPage - + General interface settings Impostazioni di interfaccia generale - + Enable notifications in taskbar Abilita notifiche sulla barra delle applicazioni - + Notify in the taskbar for game events while you are spectating Abilita notifiche anche per i giochi in cui si è solo uno spettatore - + &Double-click cards to play them (instead of single-click) &Doppio click sulle carte per giocarle (disabilitato un solo click) - + &Play all nonlands onto the stack (not the battlefield) by default Gioca tutte le carte non terra sulla &pila (invece che sul campo di battaglia) - + Annotate card text on tokens Annota il testo della carta sulle pedine - + Animation settings Impostazioni di animazione - + &Tap/untap animation Animazioni &Tappa/Stappa @@ -5137,22 +5374,22 @@ Please enter a name: UserList - + Users connected to server: %1 Utenti connessi al server: %1 - + Users in this room: %1 Utenti in questa stanza: %1 - + Buddies online: %1 / %2 Amici online: %1 / %2 - + Ignored users online: %1 / %2 Utenti ignorati online: %1 / %2 @@ -5211,8 +5448,8 @@ Please enter a name: - Disabled sets will still be used for loading images - I set disabilitati verranno comunque usati per caricare immagini + Disabled sets will be used for loading images only if all the enabled sets failed + I set disabilitati verranno usati per caricare immagini solo dopo tutti i set abilitati @@ -5220,12 +5457,12 @@ Please enter a name: Modifica impostazioni - + Success Successo - + The sets database has been saved successfully. Il database dei set è stato salvato correttamente. @@ -5253,4 +5490,561 @@ Please enter a name: vista raggruppata + + shortcutsTab + + + Form + Schermate + + + + Main Window + Finestra principale + + + + Deck editor + Editor di mazzi + + + + Local gameplay + Partita locale + + + + Watch replay + Vista replay + + + + Connect + Connetti + + + + Register + Registra + + + + Full screen + Schermo intero + + + + Settings + Impostazioni + + + + Check for card updates + Aggiorna carte + + + + Exit + Esci + + + + Deck Editor + Editor di mazzi + + + + Analyze deck + Analizza mazzo + + + + Load deck (clipboard) + Carica mazzo (appunti) + + + + Clerar all filters + Pulisci filtri + + + + New deck + Nuovo mazzo + + + + Clear one filter + Rimuovi filtro + + + + Open custom folder + Apri cartella immagini + + + + Close + Chiudi + + + + Print deck + Stampa mazzo + + + + Edit sets + Modifica set + + + + Delete card + Cancella carta + + + + Edit tokens + Modifica pedine + + + + Reset layout + Resetta disposizione + + + + Add card + Aggiungi carta + + + + Save deck + Salva mazzo + + + + Remove card + Rimuovi carta + + + + Save deck as + Salva mazzo con nome + + + + Load deck + Carica mazzo + + + + Save deck (clipboard) + Salva mazzo (appunti) + + + + + Counters + Segnalini + + + + Life + Punti vita + + + + + + + + Set + Imposta + + + + + + + Add + Aggiungi + + + + + + + Remove + Togli + + + + Red + Rosso + + + + Green + Verde + + + + Yellow + Giallo + + + + Mainwindow / Deck editor + Finestra / Editor mazzi + + + + Power / toughness + Forza / costituzione + + + + Power and toughness + Forza e costituzione + + + + Add (+1/+1) + Aggiungi (+1/+1) + + + + Remove (-1/-1) + Togli (-1/-1) + + + + Toughness + Costituzione + + + + Remove (-0/-1) + Rimuovi (-0/-1) + + + + Add (+0/+1) + Aggiungi (+0/+1) + + + + Power + Forza + + + + Remove (-1/-0) + Togli (-1/-0) + + + + Add (+1/+0) + Aggiungi (+1/+0) + + + + Game Phases + Fasi di gioco + + + + Untap + Stap + + + + Disconnect + Disconnetti + + + + Upkeep + Mantenimento + + + + + Draw + Acquisizione + + + + Main 1 + Principale 1 + + + + Start combat + Inizio combattimento + + + + Attack + Attacco + + + + Block + Blocco + + + + Damage + Danni + + + + End combat + Fine combattimento + + + + Main 2 + Principale 2 + + + + End + Fine + + + + Next phase + Prossima fase + + + + Next turn + Prossimo turno + + + + Player + Giocatore + + + + Tap Card + Tappa carta + + + + Untap Card + Stappa carta + + + + Untap all + Stappa tutte + + + + Toogle untap + Non stappa mai + + + + Flip card + Gira carta + + + + Peek card + Sbircia carta + + + + Play card + Gioca carta + + + + Attach card + Attacca carta + + + + Unattach card + Stacca carta + + + + Clone card + Clona carta + + + + Create token + Crea pedina + + + + Create another token + Crea un'altra pedina + + + + Set annotation + Imposta annotazione + + + + Phases / P/T / Player + Fasi / F/C / Giocatore + + + + Move card to + Metti carta su + + + + Bottom library + Fondo grimorio + + + + Top library + Cima grimorio + + + + + Graveyard + Cimitero + + + + + Exile + Esilio + + + + Hand + Mano + + + + View + Viste + + + + Library + Mazzo + + + + Tops card of library + Prime carte del mazzo + + + + Sideboard + Sideboard + + + + Close recent view + Chiudi ultima vista + + + + Pre-play + Prima del gioco + + + + Load remote deck + Carica mazzo remoto + + + + Load local deck + Carica mazzo dal pc + + + + Game play + Gioco + + + + Draw arrow + Disegna freccia + + + + Leave game + Lascia partita + + + + Remove local arrows + Rimuovi tutte le frecce + + + + Concede + Concedi + + + + Roll dice + Lancia dado + + + + Rotate view CW + Ruota vista orario + + + + Shuffle library + Mescola mazzo + + + + Rotate view CCW + Ruota vista antiorario + + + + Mulligan + Mulliga + + + + Draw card + Pesca carta + + + + Draw cards + Pesca carte + + + + Undo draw + Annulla pescata + + + + Always reveal top card + Rivela sempre la prima carta + + + + Draw / Move / View / Game play + Pesca / Sposta / Vedi / Gioco + + \ No newline at end of file diff --git a/cockatrice/translations/cockatrice_ja.ts b/cockatrice/translations/cockatrice_ja.ts index 7502c4f4..c8862cda 100644 --- a/cockatrice/translations/cockatrice_ja.ts +++ b/cockatrice/translations/cockatrice_ja.ts @@ -2,17 +2,17 @@ AbstractCounter - + &Set counter... カウンターの数を決める... - + Set counter カウンターの設定 - + New value for counter '%1': カウンター '%1'の新しい値: @@ -20,89 +20,60 @@ AppearanceSettingsPage - - Zone background pictures - 背景画像の設定 + + Theme settings + - - Hand background: - 手札: + + Current theme: + - - Stack background: - スタック: - - - - Table background: - 戦場: - - - - Player info background: - プレイヤー情報: - - - - Card back: - カード背面: - - - + Card rendering カードの描画 - + Display card names on cards having a picture 画像持ちカードのカード名を表示する - + Scale cards on mouse over マウスオーバーでカードを拡大する - + Hand layout 手札のレイアウト - + Display hand horizontally (wastes space) 手札を横に並べる - + Enable left justification 左揃えを有効 - + Table grid layout テーブルのレイアウト - + Invert vertical coordinate カード配置の垂直反転 - + Minimum player count for multi-column layout: プレイヤーを複数列レイアウトにする最少人数: - - - - - - - Choose path - 画像の指定 - BanDialog @@ -117,87 +88,110 @@ IPアドレスでBAN - + + ban client I&D + クライアントIDでBAN + + + Ban type BANタイプ - + &permanent ban 永久BAN - + &temporary ban 一時BAN - + &Days: - + &Hours: 時間 - + &Minutes: - + Duration of the ban BAN期間 - + Please enter the reason for the ban. This is only saved for moderators and cannot be seen by the banned person. BANの理由を入力してください。 これはモデレーターによって保存されBANされた人には見えません。 - + Please enter the reason for the ban that will be visible to the banned person. BANの理由を入力してください。これはBANされる人に通知されます。 - + &OK OK - + &Cancel キャンセル - + Ban user from server サーバーからBANされたユーザーです - + + + + Error エラー - - You have to select a name-based or IP-based ban, or both. - 名前によるBANかIPによるBAN、もしくは両方を選択してください。 + + You have to select a name-based, IP-based, clientId based, or some combination of the three to place a ban. + BANの理由を選んで下さい:不適切な名前、不適切なIPアドレス、クライアントID + + + + You must have a value in the name ban when selecting the name ban checkbox. + + + + + You must have a value in the ip ban when selecting the ip ban checkbox. + + + + + You must have a value in the clientid ban when selecting the clientid ban checkbox. + CardDatabase - + New sets found 新しいセットが見つかりました - + %1 new set(s) have been found in the card database. Do you want to enable them? %1個の新しいセットが見つかりました。有効にしますか? @@ -233,19 +227,19 @@ This is only saved for moderators and cannot be seen by the banned person. CardFrame - + Image - + カード画像 - + Description - + カード文章 - + Both - + 画像+文章 @@ -263,7 +257,7 @@ This is only saved for moderators and cannot be seen by the banned person. Color(s): - + 色: @@ -299,27 +293,32 @@ This is only saved for moderators and cannot be seen by the banned person.全て表示 - + Name: カード名: - + Mana cost: マナ・コスト: - + + Color(s): + 色: + + + Card type: カード・タイプ: - + P / T: P / T: - + Loyalty: 忠誠度: @@ -583,12 +582,12 @@ This is only saved for moderators and cannot be seen by the banned person. DeckEditorSettingsPage - + Nothing is here... yet まだ何もありませーん - + General 全般 @@ -596,17 +595,17 @@ This is only saved for moderators and cannot be seen by the banned person. DeckListModel - + Number カード枚数 - + Card カード名 - + Price 価格 @@ -628,42 +627,42 @@ This is only saved for moderators and cannot be seen by the banned person. DeckViewContainer - + Load local deck - + デッキ読み込み - + Load deck from server - + サーバーに保存したデッキ - + Ready to s&tart 準備完了! - + S&ideboard unlocked サイドボードをロックする - + S&ideboard locked サイドボードを使用する - + Load deck デッキを開く - + Error エラー - + The selected file could not be loaded. 選択したファイルが開けませんでした。 @@ -709,37 +708,52 @@ This is only saved for moderators and cannot be seen by the banned person. DlgConnect - + + Previous Host + 以前のホスト + + + + New Host + 新しいホスト + + + &Host: ホストIP: - + + Enter host name + ホストの名前を入力 + + + &Port: ポート: - + Player &name: プレイヤーネーム: - + P&assword: パスワード: - + &Save password パスワードを保存する - + A&uto connect at start 起動時に自動的に接続 - + Connect to server サーバーに接続 @@ -747,82 +761,92 @@ This is only saved for moderators and cannot be seen by the banned person. DlgCreateGame - + &Description: 説明: - + &Password: パスワード: - + P&layers: プレイヤー人数: - + + Re&member settings + + + + Game type ゲームタイプ - + Only &buddies can join フレンドのみ参加可能 - + Only &registered users can join 登録済みプレイヤーのみ参加可能 - + Joining restrictions 参加制限 - + &Spectators can watch 観戦を許可 - + Spectators &need a password to watch 観戦にパスワードが必要 - + Spectators can see &hands 観戦者に手札を見せる - + Spectators can &chat 観戦者はチャットに参加できる - + Spectators 観戦者 - + + &Clear + クリア + + + Create game ゲームを作成 - + Game information ゲーム情報 - + Error エラー - + Server error. サーバーエラー。 @@ -926,71 +950,72 @@ This is only saved for moderators and cannot be seen by the banned person. No image chosen. - + 画像がありません。 To change your avatar, choose a new image. To remove your current avatar, confirm without choosing a new image. - + アバターを変更するには、新しい画像を選択してください。 +現在のアバターを削除するには、新しい画像を選ばずにOKを押してください。 Browse... - + 参照... Change avatar - + アバター変更 Open Image - + アバター画像を開く Image Files (*.png *.jpg *.bmp) - + 画像ファイル (*.png *.jpg *.bmp) Invalid image chosen. - + この画像は使用できません。 DlgEditPassword - + Old password: - + 前のパスワード: - + New password: - + 新しいパスワード: - + Confirm new password: - + 新しいパスワード(再入力): - + Change password - + パスワード変更 - + Error - + エラー - + The new passwords don't match. - + 新しいパスワードが一致しませんでした。 @@ -1092,95 +1117,95 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgEditUser - + Email: - + メールアドレス: - + Pronouns: - + 三人称代名詞の扱い: + + + + Neutral + 中性 - Neutral - + Masculine + 男性 - Masculine - - - - Feminine - + 女性 - + Country: - + 国籍: - + Undefined - + 指定なし - + Real name: - + 本名: - + Edit user profile - + ユーザー情報編集 DlgFilterGames - + Show &unavailable games 満員のゲームも表示 - + Show &password protected games パスワードが必要なゲームを表示する - + Game &description: 説明でフィルターする: - + &Creator name: 作成者でフィルターする: - + &Game types ゲームタイプ - + at &least: 最少: - + at &most: 最大: - + Maximum player count プレイヤー人数: - + Filter games ゲームフィルタ @@ -1188,7 +1213,7 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgLoadDeckFromClipboard - + &Refresh 更新 @@ -1198,14 +1223,14 @@ Make sure to enable the 'token set' in the 'Edit sets...' di クリップボードからデッキを開く - - + + Error エラー - - + + Invalid deck list. 無効なデッキリストです。 @@ -1221,67 +1246,93 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgRegister - + &Host: ホストアドレス: - + &Port: ポート: - + Player &name: プレイヤー名: - + P&assword: パスワード: - + + Password (again): + パスワード (再入力) : + + + Email: メールアドレス: - + + Email (again): + メールアドレス (再入力) : + + + Pronouns: - + 三人称代名詞の扱い: - + Neutral - + 中性 - + Masculine - - - - - Feminine - + 男性 + Feminine + 女性 + + + Undefined 設定なし - + + + Registration Warning + 登録に関する警告 + + + + Your passwords do not match, please try again. + パスワードが一致しませんでした。もう一度入力して下さい。 + + + + Your email addresses do not match, please try again. + メールアドレスが一致しませんでした。もう一度入力して下さい。 + + + Country: 国籍: - + Real name: 本名: - + Register to server サーバーに登録する @@ -1289,19 +1340,19 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgSettings - - - + + + Error エラー - + Unknown Error loading card database 不明なエラー。 - + Your card database is invalid. Cockatrice may not function correctly with an invalid database @@ -1318,7 +1369,7 @@ Oracle Importerでデータベースを更新する必要があります。 データベースの場所の設定を変更してください。 - + Your card database version is too old. This can cause problems loading card information or images @@ -1335,7 +1386,7 @@ Oracle Importerでデータベースを更新する必要があります。 データベースの場所の設定を変更してください。 - + File Error loading your card database. Would you like to change your database location setting? @@ -1344,7 +1395,7 @@ Would you like to change your database location setting? データベースの場所の設定を変更してください。 - + Your card database was loaded but contains no cards. Would you like to change your database location setting? @@ -1353,7 +1404,7 @@ Would you like to change your database location setting? データベースの場所の設定を変更してください。 - + Your card database did not finish loading Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues with your cards.xml attached @@ -1366,7 +1417,7 @@ Would you like to change your database location setting? データベースの場所の設定を変更してください。 - + Unknown card database load status Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues @@ -1379,50 +1430,55 @@ http://github.com/Cockatrice/Cockatrice/issues でチケットを提出してく データベースの場所の設定を変更してください。 - + The path to your deck directory is invalid. Would you like to go back and set the correct path? あなたのデッキディレクトリへのパスは無効です。前に戻って正しいパスを設定してください。 - + The path to your card pictures directory is invalid. Would you like to go back and set the correct path? あなたのカード画像ディレクトリへのパスは無効です。前に戻って正しいパスを設定してください。 - + Settings 設定 - + General 全般 - + Appearance 外観 - + User Interface UI - + Deck Editor デッキエディター - + Chat チャット - + Sound サウンド + + + Shortcuts + ショートカット + GameSelector @@ -1435,7 +1491,7 @@ http://github.com/Cockatrice/Cockatrice/issues でチケットを提出してく - + Error エラー @@ -1480,47 +1536,47 @@ http://github.com/Cockatrice/Cockatrice/issues でチケットを提出してく あなたはゲームの作成者によって参加拒否されています。 - + Join game 参加 - + Password: パスワード: - + Please join the respective room first. 最初にルームに参加してください。 - + Games ゲーム + + + &Filter games + ゲームフィルタ + - Filter games - + C&lear filter + フィルタ解除 - Clear filter - + C&reate + ゲームを作成 - - Create - + + &Join + 参加する - - Join - - - - + J&oin as spectator 観戦する @@ -1637,107 +1693,112 @@ http://github.com/Cockatrice/Cockatrice/issues でチケットを提出してく GeneralSettingsPage - + Reset/Clear Downloaded Pictures ダウンロードした画像を削除する - - - - - + + + + + Choose path パスを選択 - + Success 完了 - + Downloaded card pictures have been reset. ダウンロードしたカード画像を削除しました。 - + Error エラー - + One or more downloaded card pictures could not be cleared. 一部のカード画像が削除できませんでした。 - + Personal settings 個人設定 - + Language: 言語: - + Download card pictures on the fly カード画像を自動的にダウンロードする(英語) - + Download card pictures from a custom URL カスタムURLからカード画像をダウンロード - + Custom Card Download URL: カード画像をダウンロードするURL - + Linking FAQ URLの設定の仕方について(英語) - + + Notify when new client features are available + + + + Paths パス - + Decks directory: デッキフォルダ: - + Replays directory: リプレイフォルダ: - + Pictures directory: カード画像フォルダ: - + Card database: カードデータベース: - + Token database: トークンデータベース: - + Picture cache size: 画像キャッシュサイズ: - - + + English 日本語 (Japanese) @@ -1745,49 +1806,49 @@ http://github.com/Cockatrice/Cockatrice/issues でチケットを提出してく MainWindow - + There are too many concurrent connections from your address. あなたのアドレスからの同時接続が多すぎます。 - + Scheduled server shutdown. サーバーシャットダウン予定時間。 - + Banned by moderator モデレーターによるBAN - + Expected end time: %1 予想終了時間: %1 - + This ban lasts indefinitely. 永久BANされています。 - + Connection closed 通信切断 - + The server has terminated your connection. Reason: %1 サーバーはあなたの接続を切断しました。 理由: %1 - + Scheduled server shutdown サーバーシャットダウン予定時刻 - + The server is going to be restarted in %n minute(s). All running games will be lost. Reason for shutdown: %1 @@ -1796,456 +1857,504 @@ Reason for shutdown: %1 シャットダウンの理由: %1 - + Number of players プレイヤー人数 - + Please enter the number of players. プレイヤーの人数を入れてください. - - + + Player %1 プレイヤー %1 - + Load replay リプレイを開く - + About Cockatrice Cockatriceについて - + Version %1 Version %1 - + Translators: 翻訳者: - + Project Manager: プロジェクトマネージャ: - - + + The server has reached its maximum user capacity, please check back later. + サーバーが満員です。 + + + + Invalid username. + ユーザー名が無効です。 + + + + You have been logged out due to logging in at another location. - - + + Success 成功 - + Registration accepted. Will now login. 登録が完了しました。 ログインします。 - + Account activation accepted. Will now login. アカウント有効化が完了しました。 ログインします。 - + Past Project Managers: 元プロジェクトマネージャ: - + Developers: デベロッパ: - + Our Developers リンク先参照 - + Help Develop! 開発者募集中! - + Recognition Page リンク先参照 - + Help Translate! 翻訳者募集中! - + Support: サポート: - + Report an Issue 問題を報告 - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + Error エラー - + Server timeout サーバータイムアウト - + + Failed Login + + + + + Your client does not support features that the server requires, please update your client and try again. + + + + Incorrect username or password. Please check your authentication information and try again. ユーザー名かパスワードが正しくありません。 - + There is already an active session using this user name. Please close that session first and re-login. 既にこのユーザー名を使用しているアクティブなセッションが存在します。 アクティブなセッションを閉じて再ログインしてください。 - - + + You are banned until %1. あなたは%1までBANされています。 - - + + You are banned indefinitely. あなたは無期限BANされています。 - + This server requires user registration. Do you want to register now? このサーバーはユーザー登録が必要です。 今すぐ登録しますか? - + + This server requires client ID's. Your client is either failing to generate an ID or you are running a modified client. +Please close and reopen your client to try again. + このサーバは、クライアントのIDを必要とします。あなたのクライアントは、IDを生成が失敗しているか、変更されたクライアントを実行しています。 +クライアントを再起動してもう一度お試し下さい。 + + + + An internal error has occurred, please try closing and reopening your client and try again. If the error persists try updating your client to the most recent build and if need be contact your software provider. + + + + Account activation アカウント有効化 - - Your account has not been activated yet. - You need to provide the activation token received in the activation email - このアカウントはまだ有効化されていません。 -登録されたアドレスに送信されたアクティベーショントークンを入力して下さい。 - - - - + Unknown login error: %1 不明なログインエラー: %1 - + + + +This usually means that your client version is out of date, and the server sent a reply your client doesn't understand. + +これは通常、あなたのクライアントのバージョンが古くなっていて、サーバーがあなたのクライアントを認識できないと返答してきていることを意味しています。 + + + Your username must respect these rules: - + is %1 - %2 characters long - + can %1 contain lowercase characters - - - - + + + + NOT - + can %1 contain uppercase characters - + can %1 contain numeric characters - + can contain the following punctuation: %1 - + first character can %1 be a punctuation mark - + You may only use A-Z, a-z, 0-9, _, ., and - in your username. - + ユーザー名には『半角英数字』、および半角の「_」「.」「-」のみが使えます。 - - - - - + + + + + Registration denied 登録が拒否されました。 - + Registration is currently disabled on this server 現在このサーバーでは登録が無効になっています。 - + There is already an existing account with the same user name. 既に同じユーザー名のアカウントが登録されています。 - + It's mandatory to specify a valid email address when registering. - + 登録時に有効な電子メールアドレスを指定する必要があります。 - + Too many registration attempts from your IP address. - + あなたのアドレスからのユーザー登録試行が多すぎます。 - + Password too short. パスワードが短すぎます。 - + Registration failed for a technical problem on the server. + ユーザー登録に失敗しました(サーバーの技術的問題)。 + + + + Unknown registration error: %1 - + Account activation failed - + アカウントの有効化に失敗しました。 - + Socket error: %1 ソケットエラー: %1 - + 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. あなたは古いバージョンのサーバーに接続しようとしています。Cockatriceのバージョンをダウングレードするか適切なサーバーに接続してください。 ローカルVer %1,サーバーVer %2 - + Your Cockatrice client is obsolete. Please update your Cockatrice version. Local version is %1, remote version is %2. あなたのCockatriceのバージョンがサーバーのバージョンより古いです。Cockatriceをアップデートしてください. ローカルVer %1,サーバーVer %2 - + Connecting to %1... %1へ接続しています... - + Registering to %1 as %2... - + %1に%2として登録中... - + Disconnected 切断されました - + Connected, logging in at %1 接続完了、%1にログイン中 - - Logged in as %1 at %2 - %1として%2にログイン - - - + &Connect... 接続... - + &Disconnect 切断 - + Start &local game... ローカルゲームを開始... - + &Watch replay... リプレイを見る... - + &Deck editor デッキエディター - + &Full screen フルスクリーン - + &Register to server... - + サーバーに登録する - + &Settings... 設定... - - + + &Exit 終了 - + A&ctions アクション - + &Cockatrice Cockatrice - + &About Cockatrice Cockatriceについて - + &Help ヘルプ - + Check for card updates... カードデータベース更新 - + A card database update is already running. データベース更新は既に起動中です。 - + Unable to run the card database updater: データベース更新が実行できませんでした: - + The card database updater exited with an error: %1 データベース更新に失敗しました: %1 - + Update completed successfully. Cockatrice will now reload the card database. 更新が正常に完了しました。新しいデータベースを読み込み直します。 - - + + Your client appears to be missing features that the server supports. +This usually means that your client version is out of date, please check to see if there is a new client available for download. + + + + + + Information 情報 - + Troubleshooting - + トラブルシューティング - + F.A.Q. - + F.A.Q. - + + Your account has not been activated yet. +You need to provide the activation token received in the activation email + このアカウントはまだ有効化されていません。 +登録されたアドレスに送信されたアクティベーショントークンを入力して下さい。 + + + failed to start. 開始失敗。 - + crashed. クラッシュしました。 - + timed out. タイムアウトしました。 - + write error. 書き込みに失敗しました。 - + read error. 読み込みに失敗しました。 - + unknown error. 不明なエラー。 @@ -3485,62 +3594,74 @@ Local version is %1, remote version is %2. MessagesSettingsPage - + Chat settings チャット設定 - + + Custom alert words + 反応するキーワード + + + Enable chat mentions メンション機能を有効にする - + + Enable mention completer + + + + In-game message macros 定型文 - - Ignore unregistered users in main chat - 未登録ユーザーのメインチャットを無視 - - - - Ignore chat room messages sent by unregistered users. + + Ignore chat room messages sent by unregistered users 未登録ユーザーのルームメッセージを無視 - - Ignore private messages sent by unregistered users. + + Ignore private messages sent by unregistered users 未登録ユーザーの個人チャットを無視 - + + Enable desktop notifications for private messages + 個人チャットのデスクトップ通知を有効にする + + + + Separate words with a space, alphanumeric characters only + 英数字のみ使用可能。単語を半角スペースで区切って下さい。 + + + + Invert text color 反転テキストの色 - - Enable desktop notifications for private messages. - 個人チャットのデスクトップ通知を有効にする - - - + Enable desktop notification for mentions. メンションのデスクトップ通知を有効にする - + + (Color is hexadecimal) (色は16進数) - + Add message メッセージを追加する - + Message: メッセージ: @@ -3606,473 +3727,473 @@ Local version is %1, remote version is %2. Player - + &View library ライブラリーを見る - + Move top cards to &graveyard... 一番上からX枚墓地へ置く - + View &top cards of library... 上からX枚見る - + &View graveyard 墓地を見る - + &View sideboard サイドボードを見る - + Player "%1" プレイヤー "%1" - - - - + + + + &Hand 手札 - + &Reveal hand to... 手札を見せる... - + Reveal r&andom card to... 無作為に1枚選んで公開する - + &Library ライブラリー - - - - + + + + &Graveyard 墓地 - + &Sideboard サイドボード - + Red - + Yellow - + Green - + View top cards of library 上からX枚見る - + Number of cards: カードの枚数: - + &Draw card カードを引く - + Reveal top cards of library ライブラリーの一番上のカードを公開する - + Number of cards: (max. %1) カード枚数:(最大%1) - + &View exile 追放領域を見る - - - - + + + + &Exile 追放領域 - + Reveal t&op cards to... ライブラリーの一番上のカードを見せる... - + D&raw cards... カードをX枚引く - + Take &mulligan マリガンを行う - + &Shuffle ライブラリーを切り直す - + &Counters カウンター - + &Untap all permanents 全てのパーマネントをアンタップする - + R&oll die... X面ダイスをふる - + &Create token... トークンを作成する... - + C&reate another token 同じトークンを作成する - + S&ay 定型文 - + &Move hand to... 手札を移動させる... - - - - + + + + &Top of library ライブラリーの一番上 - - - - + + + + &Bottom of library ライブラリーの一番下 - + &Move graveyard to... 墓地を移動させる... - + &Move exile to... 追放領域を移動させる... - + Reveal &library to... ライブラリーを公開する... - + &Always reveal top card 一番上のカードを公開したままプレイ - + O&pen deck in deck editor デッキエディターで開く - + &Undo last draw 最後に引いたカードを戻す - + Play top card &face down 一番上のカードを伏せたままプレイ - + Move top cards to &exile... ライブラリーの一番上からX枚追放する - + Put top card on &bottom 一番上のカードを一番下に置く - + Put bottom card &in graveyard 一番下のカードを墓地に置く - + Cr&eate predefined token 定義済みのトークンを作成する - + C&ard カード - + &All players 全てのプレイヤー - + &Play プレイ - + &Hide 隠す - + Play &Face Down 裏向きにプレイ - + &Tap タップ - + &Untap アンタップ - + Toggle &normal untapping 通常のアンタップの切り替え - + &Flip 反転 - + &Peek at card face 表面を見る - + &Clone 複製 - + Attac&h to card... カードにつける... - + Unattac&h はずす - + &Draw arrow... 対象を指定 - + &Increase power パワーを上げる - + &Decrease power パワーを下げる - + I&ncrease toughness タフネスを上げる - + D&ecrease toughness タフネスを下げる - + In&crease power and toughness P/Tを上げる - + Dec&rease power and toughness P/Tを下げる - + Set &power and toughness... P/Tを設定する... - + &Set annotation... 注釈をつける... - + &Add counter (%1) %1色のカウンターを置く - + &Remove counter (%1) %1色のカウンターを取り除く - + &Set counters (%1)... %1色のカウンターの数を設定 - + Draw cards カードを引く - - - - + + + + Number: 数: - + Move top cards to grave 上からX枚墓地へ置く - + Move top cards to exile 上からX枚追放する - + Roll die ダイスをふる - + Number of sides: 面の数: - + Set power/toughness P/Tを設定する - + Please enter the new PT: 新しいパワー/タフネス: - + Set annotation 注釈をつける - + Please enter the new annotation: 新しい注釈: - + Set counters カウンターを設定する - + Cr&eate related card - + 関連カードを作成 QMenuBar - + Services サービス - + Hide %1 %1を隠す - + Hide Others 他を隠す - + Show All すべて表示 - + Preferences... 設定... - + Quit %1 %1から出る - + About %1 %1について @@ -4080,7 +4201,7 @@ Local version is %1, remote version is %2. QObject - + Cockatrice replays (*.cor) Cockatriceリプレイファイル (*.cor) @@ -4149,35 +4270,64 @@ Local version is %1, remote version is %2. RoomSelector - + Rooms ルーム - + Joi&n 参加する - + Room ルーム名 - + Description 説明 - + + Permissions + アクセス権限 + + + Players 人数 - + Games ゲーム + + + + Error + エラー + + + + You do not have the proper permission to join this room. + あなたはこのルームに参加するための権限がありません。 + + + + Failed to join the room due to an unknown error. + 原因不明のエラーによってルームに参加できませんでした。 + + + + SequenceEdit + + + Shortcut already in use + ショートカットは既に使われています + SetsModel @@ -4228,37 +4378,37 @@ Local version is %1, remote version is %2. SoundSettingsPage - + Choose path パスを選択 - + Enable &sounds サウンドを有効 - + Path to sounds directory: サウンドフォルダヘのパス - + Test system sound engine サウンドテスト - + Sound settings サウンド設定 - + Master volume requires QT5 マスター音量はQT5が必要 - + Master volume 音量 @@ -4278,7 +4428,7 @@ Local version is %1, remote version is %2. &Reload configuration - + 設定を再読み込み @@ -4314,186 +4464,223 @@ Local version is %1, remote version is %2. TabDeckEditor - + &Print deck... デッキを印刷... - + &Close 閉じる - + &Edit sets... セットの設定... - + Filters - + フィルタ - + &Clear all filters - + 全フィルタ解除 - + Delete selected 選択を削除 - + Deck &name: デッキ名: - + &Comments: コメント: - + Hash: ハッシュ: - + &New deck 新しいデッキ - + &Load deck... デッキを開く... - + &Save deck デッキを保存 - + Save deck &as... 名前を付けて保存... - + Load deck from cl&ipboard... クリップボードからデッキを開く - + Save deck to clip&board クリップボードにデッキをコピー - + &Analyze deck on deckstats.net deckstats.net でデッキを分析 - + Open custom image folder カスタム画像フォルダを開く - + + Open custom sets folder + カスタムセットフォルダを開く + + + Add card to &maindeck カードをメインデッキに追加 - + Add card to &sideboard カードをサイドボードに追加 - + &Deck Editor デッキエディター - + C&ard Database カードデータベース - + + Show/Hide card information + カード情報を表示/非表示 + + + + Show/Hide deck + デッキを表示/非表示 + + + + Show/Hide filters + フィルタを表示/非表示 + + + + Reset layout + レイアウトをリセット + + + + Card Info + カード情報 + + + + Deck + デッキ + + + Welcome ようこそ - + Hi! It seems like you're running this version of Cockatrice for the first time. All the sets in the card database have been enabled. Read more about changing the set order or disabling specific sets and consequent effects in the "Edit Sets" window. - + こんにちは! 現行バージョンのCockatriceの最初の起動です。 +カードデータベースのすべてのセットが有効化されています。 +「セットの設定」ウィンドウ内の特定のセットを無効にしたり、順序を変更をする方法の詳細をお読みください。 - + &Remove row カードを取り除く - + &Increment number 枚数を増やす - + &Decrement number 枚数を減らす - + Edit &tokens... トークンの設定... - + Deck: %1 デッキ: %1 - + Are you sure? 確認 - + The decklist has been modified. Do you want to save the changes? デッキリストが変更されています。 変更を保存しますか? - + Load deck デッキを開く - - - + + + Error エラー - + The deck could not be saved. デッキが保存できませんでした。 - - + + The deck could not be saved. Please check that the directory is writable and try again. デッキは保存できませんでした。 ディレクトリが書き込み可能であることを確認してから、もう一度やり直してください。 - + Save deck デッキを保存 @@ -4591,99 +4778,99 @@ Please enter a name: TabGame - + &Phases フェイズ - + &Game ゲーム - + Next &phase 次のフェイズ - + Next &turn 次のターン - + &Remove all local arrows 全ての対象指定を消す - + Rotate View Cl&ockwise - + 席順を時計回りに送る - + Rotate View Co&unterclockwise - + 席順を反時計回りに送る - + Game &information ゲーム情報 - + &Concede 投了する - + &Leave game ゲームから離脱する - + C&lose replay リプレイを閉じる - + &Say: 発言欄: - + Concede 投了する - + Are you sure you want to concede this game? 本当にこのゲームに投了しますか? - + Leave game ゲームから離脱する - + Are you sure you want to leave this game? 本当にこのゲームから離脱しますか? - + You are flooding the game. Please wait a couple of seconds. あなたはゲームから弾かれました。少々お待ちください. - + You have been kicked out of the game. ゲームからキックされました。 - + REPLAY - + リプレイ @@ -4787,47 +4974,47 @@ Please enter a name: TabRoom - + &Say: 発言欄: - + Chat チャット - + &Room ルーム - + &Leave room ルームから出る - + &Clear chat チャットをクリア - + Chat Settings... チャット設定... - + mentioned you. あなたにメンションした。 - + Click to view クリックで見る - + You are flooding the chat. Please wait a couple of seconds. あなたはチャットルームから弾かれました。少々お待ちください。 @@ -4843,15 +5030,25 @@ Please enter a name: TabSupervisor - + Are you sure? よろしいですか? - + There are still open games. Are you sure you want to quit? ゲームがまだ開いています。本当に退出しますか? + + + Promotion + + + + + You have been promoted to moderator. Please log out and back in for changes to take effect. + + TabUserLists @@ -4874,55 +5071,97 @@ Please enter a name: UserContextMenu - + User &details ユーザー詳細 - + Private &chat プライベートチャット - + Show this user's &games このユーザーのゲームを表示 - + Add to &buddy list フレンドリストに追加 - + Remove from &buddy list フレンドリストから削除 - + Add to &ignore list 無視リストに追加 - + Remove from &ignore list 無視リストから削除 - + Kick from &game ゲームからキックする - + Ban from &server サーバーからBANする - + + &Promote user to moderator + + + + + Dem&ote user from moderator + + + + %1's games %1のゲーム + + + + Success + + + + + Successfully promoted user. + + + + + Successfully demoted user. + + + + + + Failed + + + + + Failed to promote user. + + + + + Failed to demote user. + + UserInfoBox @@ -4939,7 +5178,7 @@ Please enter a name: Pronouns: - + 三人称代名詞の扱い: @@ -4959,17 +5198,17 @@ Please enter a name: Edit - + 編集 Change password - + パスワード変更 Change avatar - + アバター変更 @@ -5022,12 +5261,12 @@ Please enter a name: Information - + 情報 User information updated. - + ユーザー情報が更新されました。 @@ -5039,94 +5278,94 @@ Please enter a name: Error - + エラー This server does not permit you to update your user informations. - + このサーバーはユーザーの情報を更新することができません。 An error occured while trying to update your user informations. - + ユーザー情報の更新中にエラーが発生しました。 Password changed. - + パスワードが変更されました。 This server does not permit you to change your password. - + このサーバーはパスワードを変更することができません。 The new password is too short. - + 新しいパスワードが短すぎます。 The old password is incorrect. - + 前のパスワードが一致しませんでした。 Avatar updated. - + アバターを更新しました。 This server does not permit you to update your avatar. - + このサーバーはアバターを更新することができません。 An error occured while trying to updater your avatar. - + アバターの更新中にエラーが発生しました。 UserInterfaceSettingsPage - + General interface settings インターフェース全般設定 - + Enable notifications in taskbar タスクバーの通知を有効 - + Notify in the taskbar for game events while you are spectating タスクバーに観戦中のゲームイベントを通知する - + &Double-click cards to play them (instead of single-click) ダブルクリックでカードをプレイする (シングルクリックの代わり) - + &Play all nonlands onto the stack (not the battlefield) by default 土地でないカードをプレイする時、すぐに戦場に出さずにスタックに置く - + Annotate card text on tokens - + トークンのカードテキストを注釈にもつける - + Animation settings アニメーション設定 - + &Tap/untap animation タップ/アンタップアニメーション @@ -5134,22 +5373,22 @@ Please enter a name: UserList - + Users connected to server: %1 ユーザーが%1サーバーに接続 - + Users in this room: %1 ルームのユーザー数: %1 - + Buddies online: %1 / %2 フレンドオンライン: %1 / %2 - + Ignored users online: %1 / %2 無視ユーザーオンライン: %1 / %2 @@ -5194,22 +5433,22 @@ Please enter a name: Enable the sets that you want to have available in the deck editor - + デッキエディタで使用したいセットチェックを入れて下さい。 Move sets around to change their order, or click on a column header to sort sets on that field - + セットの並び順を変更するには、並べ替えたいセットを選択して緑の矢印をクリックするか、列のヘッダーをクリックして下さい。 Sets order decides the source that will be used when loading images for a specific card - + カード画像は、セットの並び順上が優先されて表示されます。 - Disabled sets will still be used for loading images - + Disabled sets will be used for loading images only if all the enabled sets failed + すべての有効なセットが失敗した場合にのみ、無効のセットも画像の読み込みに使用されます。 @@ -5217,12 +5456,12 @@ Please enter a name: セットの設定 - + Success 完了 - + The sets database has been saved successfully. セットデータベースを保存しました。 @@ -5250,4 +5489,561 @@ Please enter a name: タイプ別に重ねて表示 + + shortcutsTab + + + Form + フォーム + + + + Main Window + メインウィンドウ + + + + Deck editor + デッキエディター + + + + Local gameplay + ローカルゲーム + + + + Watch replay + リプレイを再生 + + + + Connect + 接続 + + + + Register + 登録 + + + + Full screen + フルスクリーン + + + + Settings + 設定 + + + + Check for card updates + カードデータベース更新 + + + + Exit + 終了 + + + + Deck Editor + デッキエディター + + + + Analyze deck + デッキ分析 + + + + Load deck (clipboard) + クリップボードからデッキを開く + + + + Clerar all filters + 全フィルタ解除 + + + + New deck + 新しいデッキ + + + + Clear one filter + フィルタをひとつ解除 + + + + Open custom folder + カスタムフォルダを開く + + + + Close + 閉じる + + + + Print deck + デッキを印刷 + + + + Edit sets + セットの設定 + + + + Delete card + カードを削除 + + + + Edit tokens + トークンを編集 + + + + Reset layout + レイアウトをリセット + + + + Add card + カードを追加 + + + + Save deck + デッキを保存 + + + + Remove card + カードを取り除く + + + + Save deck as + 名前を付けて保存... + + + + Load deck + デッキを開く + + + + Save deck (clipboard) + クリップボードにデッキをコピー + + + + + Counters + カウンター + + + + Life + ライフ + + + + + + + + Set + 設定 + + + + + + + Add + 追加 + + + + + + + Remove + 削減 + + + + Red + + + + + Green + + + + + Yellow + + + + + Mainwindow / Deck editor + メインウィンドウ/デッキエディター + + + + Power / toughness + パワー / タフネス + + + + Power and toughness + パワーとタフネス + + + + Add (+1/+1) + +1/+1 + + + + Remove (-1/-1) + -1/-1 + + + + Toughness + タフネス + + + + Remove (-0/-1) + -0/-1 + + + + Add (+0/+1) + +0/+1 + + + + Power + パワー + + + + Remove (-1/-0) + -1/-0 + + + + Add (+1/+0) + +1/+0 + + + + Game Phases + フェイズ + + + + Untap + アンタップ + + + + Disconnect + + + + + Upkeep + + + + + + Draw + ドロー + + + + Main 1 + メイン1 + + + + Start combat + 戦闘開始 + + + + Attack + 攻撃 + + + + Block + ブロック + + + + Damage + ダメージ + + + + End combat + 戦闘終了 + + + + Main 2 + メイン2 + + + + End + エンド + + + + Next phase + 次のフェイズ + + + + Next turn + 次のターン + + + + Player + プレイヤー + + + + Tap Card + タップ + + + + Untap Card + アンタップ + + + + Untap all + すべてアンタップ + + + + Toogle untap + 通常のアンタップの切り替え + + + + Flip card + 裏返す + + + + Peek card + 表面を見る + + + + Play card + プレイする + + + + Attach card + つける + + + + Unattach card + はずす + + + + Clone card + カードのコピー + + + + Create token + トークンを作成 + + + + Create another token + 同じトークンを作成する + + + + Set annotation + 注釈 + + + + Phases / P/T / Player + フェイズ/ P/T /プレイヤー + + + + Move card to + カードを移動 + + + + Bottom library + ライブラリーの一番下 + + + + Top library + ライブラリーの一番上 + + + + + Graveyard + 墓地 + + + + + Exile + 追放 + + + + Hand + 手札 + + + + View + 見る + + + + Library + ライブラリー + + + + Tops card of library + ライブラリーの一番上 + + + + Sideboard + サイドボード + + + + Close recent view + 閉じる + + + + Pre-play + + + + + Load remote deck + サーバーのデッキを開く + + + + Load local deck + ローカルのデッキを開く + + + + Game play + + + + + Draw arrow + 対象を指定 + + + + Leave game + ゲームから離脱する + + + + Remove local arrows + 全ての対象指定を消す + + + + Concede + 投了 + + + + Roll dice + ダイス + + + + Rotate view CW + 席順を時計回りに送る + + + + Shuffle library + ライブラリーを切り直す + + + + Rotate view CCW + 席順を時計回りに送る + + + + Mulligan + マリガン + + + + Draw card + カードを引く + + + + Draw cards + 複数枚引く + + + + Undo draw + 最後に引いたカードを戻す + + + + Always reveal top card + 一番上のカードを公開したままプレイ + + + + Draw / Move / View / Game play + + + \ No newline at end of file diff --git a/cockatrice/translations/cockatrice_ko.ts b/cockatrice/translations/cockatrice_ko.ts index 0ec5ccfd..c34f808d 100644 --- a/cockatrice/translations/cockatrice_ko.ts +++ b/cockatrice/translations/cockatrice_ko.ts @@ -2,17 +2,17 @@ AbstractCounter - + &Set counter... 카운터 설정... - + Set counter 카운터 설정 - + New value for counter '%1': 카운터 '%1'의 값을 지정해 주세요: @@ -20,89 +20,60 @@ AppearanceSettingsPage - - Zone background pictures - 영역별 배경 이미지 + + Theme settings + - - Hand background: - 손 배경 이미지: + + Current theme: + - - Stack background: - 스택 배경 이미지: - - - - Table background: - 전장 배경 이미지: - - - - Player info background: - 플레이어 정보 배경 이미지: - - - - Card back: - 카드 뒷면 이미지: - - - + Card rendering 카드 렌더링 - + Display card names on cards having a picture 이미지가 존재하는 카드에도 카드 이름 표시 - + Scale cards on mouse over 마우스 오버 시 카드 확대 - + Hand layout 손 레이아웃 - + Display hand horizontally (wastes space) 손의 카드를 가로로 정렬 - + Enable left justification 손의 카드를 좌측으로 정렬 - + Table grid layout 테이블 격자 레이아웃 - + Invert vertical coordinate 전장의 상하배치를 전환 (대지를 앞에 배치) - + Minimum player count for multi-column layout: 다열 레이아웃를 위한 최소 플레이어 인원 (4명 이상 권장) - - - - - - - Choose path - 경로 선택 - BanDialog @@ -117,87 +88,110 @@ IP 주소 추방 - + + ban client I&D + 클라이언트 ID 추방 + + + Ban type 추방 유형 - + &permanent ban 영구 추방 - + &temporary ban 기간제 추방 - + &Days: 일: - + &Hours: 시간: - + &Minutes: 분: - + Duration of the ban 추방 기간 - + Please enter the reason for the ban. This is only saved for moderators and cannot be seen by the banned person. 추방 사유를 적어주세요. 해당 사유는 관리자들만 볼 수 있고 추방 당한 사용자는 볼 수 없습니다. - + Please enter the reason for the ban that will be visible to the banned person. 추방된 사용자가 보게 될 추방 사유를 적어주세요. - + &OK 확인 - + &Cancel 취소 - + Ban user from server 사용자를 서버에서 추방 - + + + + Error 오류 - - You have to select a name-based or IP-based ban, or both. + + You have to select a name-based, IP-based, clientId based, or some combination of the three to place a ban. 추방의 유형을 선택해 주세요. + + + You must have a value in the name ban when selecting the name ban checkbox. + + + + + You must have a value in the ip ban when selecting the ip ban checkbox. + + + + + You must have a value in the clientid ban when selecting the clientid ban checkbox. + + CardDatabase - + New sets found 새로운 확장판 감지 - + %1 new set(s) have been found in the card database. Do you want to enable them? %1개의 새로운 확장판이 카드 데이터베이스에 추가되었습니다. 새로운 확장판을 활성화 시키시겠습니까? @@ -234,17 +228,17 @@ This is only saved for moderators and cannot be seen by the banned person. CardFrame - + Image 이미지 - + Description 텍스트 - + Both 모두 보기 @@ -264,7 +258,7 @@ This is only saved for moderators and cannot be seen by the banned person. Color(s): - + 카드 색: @@ -300,27 +294,32 @@ This is only saved for moderators and cannot be seen by the banned person.정보 전체 표시 - + Name: 카드 이름: - + Mana cost: 마나 비용: - + + Color(s): + 카드 색: + + + Card type: 카드 유형: - + P / T: 공/방: - + Loyalty: 충성도: @@ -584,12 +583,12 @@ This is only saved for moderators and cannot be seen by the banned person. DeckEditorSettingsPage - + Nothing is here... yet 준비중입니다. - + General 일반 @@ -597,17 +596,17 @@ This is only saved for moderators and cannot be seen by the banned person. DeckListModel - + Number 카드 장수 - + Card 카드 이름 - + Price 가격 @@ -629,42 +628,42 @@ This is only saved for moderators and cannot be seen by the banned person. DeckViewContainer - + Load local deck - + 로컬 덱 불러오기 - + Load deck from server - + 서버에 저장된 덱 불러오기 - + Ready to s&tart 시작 준비 - + S&ideboard unlocked - 사이드보드 교체 활성화 + 사이드보드 카드 교체 가능 - + S&ideboard locked - 사이드보드 교체 비활성화 + 사이드보드 카드 교체 불가능 - + Load deck 덱 불러오기 - + Error 오류 - + The selected file could not be loaded. 지정하신 파일을 불러올 수 없었습니다. @@ -689,7 +688,7 @@ This is only saved for moderators and cannot be seen by the banned person. Color (OR): - 카드 색깔(OR): + 카드 색(OR): @@ -710,37 +709,52 @@ This is only saved for moderators and cannot be seen by the banned person. DlgConnect - + + Previous Host + 지난번에 접속한 서버 + + + + New Host + 새로운 서버 + + + &Host: 호스트 IP: - + + Enter host name + 서버 주소 입력 + + + &Port: 포트: - + Player &name: 사용자명: - + P&assword: 비밀번호: - + &Save password 비밀번호 저장 - + A&uto connect at start 코카트리스 시작 시 자동 연결 - + Connect to server 서버로 연결 @@ -748,82 +762,92 @@ This is only saved for moderators and cannot be seen by the banned person. DlgCreateGame - + &Description: 게임 이름: - + &Password: 비밀번호: - + P&layers: 게임 참가 인원: - + + Re&member settings + 설정 기억하기 + + + Game type 게임 종류 - + Only &buddies can join 친구만 입장 가능 - + Only &registered users can join - 서버에 등록한 사용자만 입장 가능 + 서버에 가입한 사용자만 입장 가능 - + Joining restrictions 입장 제한 - + &Spectators can watch 관전자 허용 - + Spectators &need a password to watch 관전자 입장 시 비밀번호 필요 - + Spectators can see &hands 관전자에게 플레이어의 손 공개 - + Spectators can &chat 관전자 대화 가능 - + Spectators 관전자 - + + &Clear + 설정 초기화 + + + Create game 게임 만들기 - + Game information 게임 정보 - + Error 오류 - + Server error. 서버 오류. @@ -843,7 +867,7 @@ This is only saved for moderators and cannot be seen by the banned person. C&olor: - 토큰 색깔: + 토큰 색: @@ -927,71 +951,72 @@ This is only saved for moderators and cannot be seen by the banned person. No image chosen. - + 이미지 없음 To change your avatar, choose a new image. To remove your current avatar, confirm without choosing a new image. - + 아바타를 변경하려면 새로운 이미지 파일을 선택하여 주십시오. +현재 아바타를 삭제하시려면 이미지를 선택하지 않고 확인을 하시면 됩니다. Browse... - + 찾아보기 Change avatar - + 아바타 변경 Open Image - + 이미지 불러오기 Image Files (*.png *.jpg *.bmp) - + 이미지 파일 (*.png *.jpg *.bmp) Invalid image chosen. - + 잘못된 이미지를 선택하셨습니다. DlgEditPassword - + Old password: - + 예전 비밀번호: - + New password: - + 새로운 비밀번호: - + Confirm new password: - + 새로운 비밀번호 확인: - + Change password - + 비밀번호 변경 - + Error - + 오류 - + The new passwords don't match. - + 새로운 비밀번호가 일치하지 않습니다. @@ -1004,7 +1029,7 @@ To remove your current avatar, confirm without choosing a new image. C&olor: - 토큰 색깔: + 토큰 색: @@ -1093,95 +1118,95 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgEditUser - + Email: - + 이메일: - + Pronouns: - + 성별: + + + + Neutral + 미선택 - Neutral - + Masculine + 남성 - Masculine - - - - Feminine - + 여성 - + Country: - + 국가: - + Undefined - + 미지정 - + Real name: - + 본명: - + Edit user profile - + 사용자 프로필 변경 DlgFilterGames - + Show &unavailable games 참가 불가능한 게임 표시 - + Show &password protected games 비밀번호가 걸려있는 게임도 표시 - + Game &description: 게임 이름: - + &Creator name: 방장 이름: - + &Game types 게임 종류 - + at &least: 최소 참가 인원: - + at &most: 최대 참가 인원: - + Maximum player count 최대 플레이어 인원 - + Filter games 게임 필터 @@ -1189,7 +1214,7 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgLoadDeckFromClipboard - + &Refresh 새로고침 @@ -1199,14 +1224,14 @@ Make sure to enable the 'token set' in the 'Edit sets...' di 클립보드에서 덱 가져오기 - - + + Error 오류 - - + + Invalid deck list. 클립보드의 덱 리스트를 읽어올 수 없습니다. @@ -1222,87 +1247,113 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgRegister - + &Host: 호스트 IP: - + &Port: 포트: - + Player &name: 사용자명: - + P&assword: 비밀번호: - + + Password (again): + 비밀번호 확인: + + + Email: 이메일: - + + Email (again): + 이메일 확인: + + + Pronouns: - + 성별: - + Neutral - + 미선택 - + Masculine - - - - - Feminine - + 남성 + Feminine + 여성 + + + Undefined 미지정 - + + + Registration Warning + 가입 실패 + + + + Your passwords do not match, please try again. + 입력된 비밀번호가 서로 다릅니다. 다시 시도하여 주십시오. + + + + Your email addresses do not match, please try again. + 입력된 이메일이 서로 다릅니다. 다시 시도하여 주십시오. + + + Country: 국가: - + Real name: 실명: - + Register to server - 연결된 서버에 등록 + 서버에 가입 DlgSettings - - - + + + Error 오류 - + Unknown Error loading card database 데이터베이스를 불러올 때 미상의 오류가 발생하였습니다. - + Your card database is invalid. Cockatrice may not function correctly with an invalid database @@ -1319,7 +1370,7 @@ Would you like to change your database location setting? 데이터베이스 경로를 다시 설정하시겠습니까? - + Your card database version is too old. This can cause problems loading card information or images @@ -1336,7 +1387,7 @@ Would you like to change your database location setting? 데이터베이스 경로를 다시 설정하시겠습니까? - + File Error loading your card database. Would you like to change your database location setting? @@ -1345,7 +1396,7 @@ Would you like to change your database location setting? 데이터베이스 경로를 다시 설정하시겠습니까? - + Your card database was loaded but contains no cards. Would you like to change your database location setting? @@ -1354,7 +1405,7 @@ Would you like to change your database location setting? 데이터베이스 경로를 다시 설정하시겠습니까? - + Your card database did not finish loading Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues with your cards.xml attached @@ -1367,7 +1418,7 @@ http://github.com/Cockatrice/Cockatrice/issues 에 cards.xml을 첨부한 버그 데이터베이스 경로를 다시 설정하시겠습니까? - + Unknown card database load status Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues @@ -1380,52 +1431,57 @@ http://github.com/Cockatrice/Cockatrice/issues 에 cards.xml을 첨부한 버그 데이터베이스 경로를 다시 설정하시겠습니까? - + The path to your deck directory is invalid. Would you like to go back and set the correct path? 덱 파일을 보관하는 디렉토리의 경로가 잘못되었습니다. 경로를 다시 설정하시겠습니까? - + The path to your card pictures directory is invalid. Would you like to go back and set the correct path? 카드 이미지 파일을 보관하는 디렉토리의 경로가 잘못되었습니다. 경로를 다시 설정하시겠습니까? - + Settings 환경설정 - + General 일반 - + Appearance 외형 - + User Interface 인터페이스 - + Deck Editor 덱 편집기 - + Chat 대화 - + Sound 소리 + + + Shortcuts + 단축키 + GameSelector @@ -1438,7 +1494,7 @@ http://github.com/Cockatrice/Cockatrice/issues 에 cards.xml을 첨부한 버그 - + Error 오류 @@ -1470,7 +1526,7 @@ http://github.com/Cockatrice/Cockatrice/issues 에 cards.xml을 첨부한 버그 This game is only open to registered users. - 서버에 등록한 사용자만 참가 할 수 있습니다. + 서버에 가입한 사용자만 참가 할 수 있습니다. @@ -1483,47 +1539,47 @@ http://github.com/Cockatrice/Cockatrice/issues 에 cards.xml을 첨부한 버그 방장이 당신을 차단하였습니다. - + Join game 게임 참가 - + Password: 비밀번호: - + Please join the respective room first. 해당되는 게임에 먼저 들어가시기 바랍니다. - + Games 게임 목록 + + + &Filter games + 게임 필터 + - Filter games - + C&lear filter + 필터 해제 - Clear filter - + C&reate + 게임 생성 - - Create - + + &Join + 게임 참가 - - Join - - - - + J&oin as spectator 관전자로 참가하기 @@ -1588,7 +1644,7 @@ http://github.com/Cockatrice/Cockatrice/issues 에 cards.xml을 첨부한 버그 reg. users only - 등록한 사용자만 + 가입한 사용자 전용 @@ -1640,107 +1696,112 @@ http://github.com/Cockatrice/Cockatrice/issues 에 cards.xml을 첨부한 버그 GeneralSettingsPage - + Reset/Clear Downloaded Pictures 저장된 이미지 초기화 - - - - - + + + + + Choose path 경로 선택 - + Success 성공 - + Downloaded card pictures have been reset. 저장된 카드 이미지 파일들이 초기화 되었습니다. - + Error 오류 - + One or more downloaded card pictures could not be cleared. 저장된 카드 이미지 파일을 초기화 시킬 수 없었습니다. - + Personal settings 개인 설정 - + Language: 언어: - + Download card pictures on the fly 카드 이미지 파일 자동 다운로드 - + Download card pictures from a custom URL 지정된 URL에서 카드 이미지 다운로드 - + Custom Card Download URL: 카드 이미지 다운로드 URL: - + Linking FAQ 카드 이미지 서버 설정 FAQ - + + Notify when new client features are available + + + + Paths 디렉토리 경로 - + Decks directory: 덱 파일 경로: - + Replays directory: 리플레이 파일 경로: - + Pictures directory: 카드 이미지 경로: - + Card database: 카드 데이터베이스 경로: - + Token database: 토큰 데이터베이스 경로: - + Picture cache size: 카드 이미지 캐시 최대 용량: - - + + English 한국어 (Korean) @@ -1748,49 +1809,49 @@ http://github.com/Cockatrice/Cockatrice/issues 에 cards.xml을 첨부한 버그 MainWindow - + There are too many concurrent connections from your address. 해당 IP주소에서 동시에 연결된 회선이 너무 많습니다. - + Scheduled server shutdown. 정기 점검 중입니다. - + Banned by moderator 관리자에 의해 서버에서 추방 당하였습니다. - + Expected end time: %1 예상 추방 종료 시간: %1 - + This ban lasts indefinitely. 영구적 추방입니다. - + Connection closed 서버와의 연결이 끊어졌습니다. - + The server has terminated your connection. Reason: %1 서버에서 연결을 끊었습니다. 사유: %1 - + Scheduled server shutdown 정기 점검 - + The server is going to be restarted in %n minute(s). All running games will be lost. Reason for shutdown: %1 @@ -1799,286 +1860,328 @@ Reason for shutdown: %1 서버 재시작 사유: %1 - + Number of players 플레이어 인원 - + Please enter the number of players. 최대 플레이어 인원을 입력해 주세요. - - + + Player %1 플레이어 %1 - + Load replay 리플레이 불러오기 - + About Cockatrice 코카트리스에 관하여 - + Version %1 버전 %1 - + Translators: 번역진: - + Project Manager: 현 프로젝트 매니저: - - - Invalid username. - + + The server has reached its maximum user capacity, please check back later. + 서버가 꽉 찼습니다. 나중에 다시 접속하여 주십시오. - - + + + Invalid username. + 잘못된 사용자명입니다. + + + + You have been logged out due to logging in at another location. + 다른 장소에서 로그인하여 접속이 해제되었습니다. + + + + Success 성공 - + Registration accepted. Will now login. - 등록이 승인되었습니다. + 가입이 승인되었습니다. 로그인합니다. - + Account activation accepted. Will now login. 계정이 활성화 되었습니다. 로그인합니다. - + Past Project Managers: 전 프로젝트 매니저: - + Developers: 개발진: - + Our Developers 기여자 목록 - + Help Develop! 개발을 도와주세요! - + Recognition Page 번역자 목록 - + Help Translate! 번역을 도와주세요! - + Support: 기술 지원: - + Report an Issue 문제점 보고 - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + Error 오류 - + Server timeout 서버 응답시간 초과 - + + Failed Login + + + + + Your client does not support features that the server requires, please update your client and try again. + + + + Incorrect username or password. Please check your authentication information and try again. 잘못된 사용자명이나 비밀번호입니다. 확인 후 다시 시도해 주세요. - + There is already an active session using this user name. Please close that session first and re-login. 해당 사용자명으로 연결된 다른 세션이 있습니다. 해당 세션을 종료 한 후에 다시 시도해 주세요. - - + + You are banned until %1. %1까지 추방 당하였습니다. - - + + You are banned indefinitely. 당신은 무기한 추방 당하였습니다. - + This server requires user registration. Do you want to register now? - 본 서버는 등록이 필요합니다. -지금 등록하시겠습니까? + 본 서버는 가입이 필요합니다. +지금 가입하시겠습니까? - + + This server requires client ID's. Your client is either failing to generate an ID or you are running a modified client. +Please close and reopen your client to try again. + 본 서버는 클라이언트 ID가 필요합니다. 현재 사용중인 코카트리스는 올바른 ID를 생성하지 못하거나 수정된 버전일 수 있습니다. + +코카트리스를 다시 실행하여 주시기 바랍니다. + + + + An internal error has occurred, please try closing and reopening your client and try again. If the error persists try updating your client to the most recent build and if need be contact your software provider. + 내부 오류가 발생하였습니다. + +코카트리스를 다시 실행하시고 다시 시도하거나 오류가 지속될 경우 코카트리스를 새로 다운받아 주시기 바랍니다. + + + Account activation 계정 활성화 - - Your account has not been activated yet. - You need to provide the activation token received in the activation email - 계정이 아직 활성화 되지 않았습니다. -등록시 적은 메일 주소로 보낸 계정 활성화 토큰이 필요합니다. - - - - + Unknown login error: %1 알 수 없는 로그인 오류: %1 - + + + +This usually means that your client version is out of date, and the server sent a reply your client doesn't understand. + +대부분 클라이언트가 오래되어서 서버와 클라이언트가 말이 제대로 통하지 않을때 발생하는 문제입니다. + + + Your username must respect these rules: - + 사용자명은 다음 조건을 만족해야 합니다: - + is %1 - %2 characters long - + %1에서 %2자 사이 - + can %1 contain lowercase characters - + 소문자 사용 %1가능 - - - - + + + + NOT - + - + can %1 contain uppercase characters - + 대문자 사용 %1가능 - + can %1 contain numeric characters - + 숫자 사용 %1가능 - + can contain the following punctuation: %1 - + 다음 문장 부호를 사용 가능 : - + first character can %1 be a punctuation mark - + 첫 글자를 문장 부호로 입력 %1가능 - + You may only use A-Z, a-z, 0-9, _, ., and - in your username. - + 사용자명에는 영어 대소문자, 숫자, _(밑줄), .(마침표)나 -(대쉬)만 사용하실 수 있습니다. - - - - - + + + + + Registration denied - 등록 실패 + 가입 실패 - + Registration is currently disabled on this server - 본 서버는 현재 등록을 받지 않습니다. + 본 서버는 현재 가입을 받지 않습니다. - + There is already an existing account with the same user name. 이미 존재하는 사용자명 입니다. - + It's mandatory to specify a valid email address when registering. 사용 가능한 이메일 주소를 작성하셔야 합니다. - + Too many registration attempts from your IP address. - 현 IP주소에서 너무 많은 등록 요청이 있었습니다. + 현 IP주소에서 너무 많은 가입 요청이 있었습니다. - + Password too short. 비밀번호가 너무 짧습니다. - + Registration failed for a technical problem on the server. - 서버의 기술적 문제로 등록에 실패하였습니다. + 서버의 기술적 문제로 가입에 실패하였습니다. - + + Unknown registration error: %1 + 가입 중 알 수 없는 오류 발생: %1 + + + Account activation failed 계정 활성화 실패 - + Socket error: %1 소켓 오류: %1 - + 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. 서버 버전이 클라이언트보다 오래되었습니다. @@ -2086,7 +2189,7 @@ Local version is %1, remote version is %2. 클라이언트 버전 %1, 서버 버전 %2. - + Your Cockatrice client is obsolete. Please update your Cockatrice version. Local version is %1, remote version is %2. 코카트리스 클라이언트 버전이 오래되었습니다. @@ -2094,166 +2197,175 @@ Local version is %1, remote version is %2. 클라이언트 버전 %1, 서버 버전 %2. - + Connecting to %1... %1로 연결 시도 중... - + Registering to %1 as %2... - 서버 %1에 %2(으)로 등록 중... + 서버 %1에 %2(으)로 가입 중... - + Disconnected 연결 안됨 - + Connected, logging in at %1 연결됨, %1로 로그인 시도 중 - - Logged in as %1 at %2 - %2에 %1(으)로 로그인됨 - - - + &Connect... 서버로 연결 - + &Disconnect 서버와의 연결 해제 - + Start &local game... 오프라인 게임 시작 - + &Watch replay... 리플레이 재생 - + &Deck editor 덱 편집기 - + &Full screen 전체 화면 - + &Register to server... - 연결된 서버에 등록 + 서버에 가입 - + &Settings... 환경설정 - - + + &Exit 끝내기 - + A&ctions 액션 - + &Cockatrice 코카트리스 - + &About Cockatrice 코카트리스에 관하여 - + &Help 도움말 - + Check for card updates... 카드 데이터베이스 업데이트 확인 - + A card database update is already running. 이미 카드 데이터베이스 업데이트가 진행 중입니다. - + Unable to run the card database updater: 카드 데이터베이스 업데이트를 진행할 수 없습니다: - + The card database updater exited with an error: %1 카드 데이터베이스 업데이트 중 다음 오류가 발생하였습니다: %1 - + Update completed successfully. Cockatrice will now reload the card database. 카드 데이터베이스가 성공적으로 업데이트 되었습니다. 데이터베이스를 다시 불러오겠습니다. - - + + Your client appears to be missing features that the server supports. +This usually means that your client version is out of date, please check to see if there is a new client available for download. + + + + + + Information 알림 - + Troubleshooting - + 문제 해결 - + F.A.Q. - + 자주 묻는 질문 - + + Your account has not been activated yet. +You need to provide the activation token received in the activation email + 계정이 아직 활성화 되지 않았습니다. +가입 시 기입한 메일 주소에서 계정 활성화 토큰을 확인하여 주십시오. + + + failed to start. 업데이트 시작 실패 - + crashed. 강제 종료됨. - + timed out. 시간 초과. - + write error. 파일 쓰기 오류. - + read error. 파일 읽기 오류. - + unknown error. 알 수 없는 오류. @@ -2373,25 +2485,25 @@ Local version is %1, remote version is %2. %1 has locked her sideboard. female - %1이(가) 사이드보드 교체를 비활성화 하였습니다. + %1이(가) 덱에서 사이드보드 카드를 제외합니다. %1 has locked his sideboard. male - %1이(가) 사이드보드 교체를 비활성화 하였습니다. + %1이(가) 덱에서 사이드보드 카드를 제외합니다. %1 has unlocked her sideboard. female - %1이(가) 사이드보드 교체를 활성화 하였습니다. + %1이(가) 덱에 사이드보드 카드를 넣으려고 합니다. %1 has unlocked his sideboard. male - %1이(가) 사이드보드 교체를 활성화 하였습니다. + %1이(가) 덱에 사이드보드 카드를 넣으려고 합니다. @@ -3493,62 +3605,74 @@ Local version is %1, remote version is %2. MessagesSettingsPage - + Chat settings 대화 설정 - - Enable chat mentions - 대화 중 본인의 사용자명 언급 시 해당 문장을 강조 + + Custom alert words + 키워드 알림 - + + Enable chat mentions + 대화 중 본인의 사용자명 멘션 시 해당 문장을 강조 + + + + Enable mention completer + 멘션 자동완성 기능 + + + In-game message macros 게임 내 대화 매크로 - - Ignore unregistered users in main chat - 채널 대화창에서 서버에 등록하지 않은 사용자의 대화 차단 + + Ignore chat room messages sent by unregistered users + 서버에 가입하지 않은 사용자의 채널 대화 차단 - - Ignore chat room messages sent by unregistered users. - 등록하지 않은 사용자의 채널 대화 차단 + + Ignore private messages sent by unregistered users + 서버에 가입하지 않은 사용자가 보낸 1:1 대화 차단 - - Ignore private messages sent by unregistered users. - 등록하지 않은 사용자가 보낸 1:1 대화 차단 + + Enable desktop notifications for private messages + 1:1 대화를 받을 시 데스크탑 알림 설정 - + + Separate words with a space, alphanumeric characters only + 각 단어마다 스페이스바로 띄어써주세요. 문자 및 숫자만 가능합니다. + + + + Invert text color 문장 색 반전 - - Enable desktop notifications for private messages. - 1:1 대화를 받을 시 데스크탑 알림 설정 - - - + Enable desktop notification for mentions. - 대화 중 사용자명 언급시 데스크탑 알림 설정 + 본인의 사용자명 멘션 시 데스크탑 알림 설정 - + + (Color is hexadecimal) (16진수 색상 코드) - + Add message 메세지 추가 - + Message: 메세지: @@ -3614,435 +3738,435 @@ Local version is %1, remote version is %2. Player - + &View library 서고 보기 - + Move top cards to &graveyard... 맨 위 X장의 카드를 무덤으로 이동 - + View &top cards of library... 서고 맨 위 X장 보기 - + &View graveyard 무덤 보기 - + &View sideboard 사이드보드 보기 - + Player "%1" 플레이어 "%1" - - - - + + + + &Hand - + &Reveal hand to... 손의 카드 전부 공개: - + Reveal r&andom card to... 손에서 무작위 카드 공개: - + &Library 서고 - - - - + + + + &Graveyard 무덤 - + &Sideboard 사이드보드 - + Red 적색 - + Yellow 황색 - + Green 녹색 - + View top cards of library 서고 맨 위 X장 보기 - + Number of cards: 카드 장수: - + &Draw card 카드 뽑기 - + Reveal top cards of library 서고 맨 위 카드 공개 - + Number of cards: (max. %1) 카드 장수 (최대 %1장): - + &View exile 추방 영역 보기 - - - - + + + + &Exile 추방 영역 - + Reveal t&op cards to... 서고 맨 위 카드 공개: - + D&raw cards... 카드 X장 뽑기 - + Take &mulligan 멀리건 - + &Shuffle 서고 섞기 - + &Counters 카운터 - + &Untap all permanents 모든 지속물 언탭 - + R&oll die... 주사위 굴리기 - + &Create token... 토큰 생성 - + C&reate another token 같은 종류의 토큰 추가 생성 - + S&ay 말하기 - + &Move hand to... 손의 카드 전부 이동: - - - - + + + + &Top of library 서고 맨 위 - - - - + + + + &Bottom of library 서고 맨 아래 - + &Move graveyard to... 무덤의 카드 전부 이동: - + &Move exile to... 추방 영역의 카드 전부 이동: - + Reveal &library to... 서고 공개: - + &Always reveal top card 서고 맨 위 카드 항상 공개 - + O&pen deck in deck editor 덱 편집기로 덱 열기 - + &Undo last draw 마지막으로 뽑은 카드 서고에 돌려놓기 - + Play top card &face down 서고 맨 위 카드를 뒷면으로 발동 - + Move top cards to &exile... 서고 맨 위 X장의 카드를 추방 - + Put top card on &bottom 서고 맨 위 카드를 맨 아래로 내리기 - + Put bottom card &in graveyard 맨 아래 카드를 무덤에 넣기 - + Cr&eate predefined token 미리 지정된 토큰 생성 - + C&ard 카드 - + &All players 모든 플레이어 - + &Play 발동 - + &Hide 숨기기 - + Play &Face Down 뒷면으로 발동 - + &Tap - + &Untap 언탭 - + Toggle &normal untapping 언탭단에서의 언탭 여부 변경 - + &Flip 카드 뒤집기 - + &Peek at card face 카드 앞면 보기 - + &Clone 카드 복제 - + Attac&h to card... 다른 카드에 부착 - + Unattac&h 카드에서 떼어냄 - + &Draw arrow... 화살표 그리기 - + &Increase power 공격력 증가 - + &Decrease power 공격력 감소 - + I&ncrease toughness 방어력 증가 - + D&ecrease toughness 방어력 감소 - + In&crease power and toughness 공격력 및 방어력 증가 - + Dec&rease power and toughness 공격력 및 방어력 감소 - + Set &power and toughness... 공격력 및 방어력 설정 - + &Set annotation... 카드 주석 설정 - + &Add counter (%1) 카운터 증가 (%1) - + &Remove counter (%1) 카운터 감소 (%1) - + &Set counters (%1)... 카운터 설정 (%1)... - + Draw cards 카드 X장 뽑기 - - - - + + + + Number: 원하는 숫자: - + Move top cards to grave 맨 위 카드 X장을 무덤으로 이동 - + Move top cards to exile 맨 위 카드 X장을 추방 - + Roll die 주사위 굴리기 - + Number of sides: 주사위 면의 수: - + Set power/toughness 공격력 및 방어력 설정 - + Please enter the new PT: 새로운 공/방 값을 입력해 주세요: - + Set annotation 주석 설정 - + Please enter the new annotation: 새로운 주석을 입력해 주세요: - + Set counters 카운터 설정 - + Cr&eate related card 관련된 카드 생성 @@ -4050,37 +4174,37 @@ Local version is %1, remote version is %2. QMenuBar - + Services 서비스 - + Hide %1 %1 가리기 - + Hide Others 기타 가리기 - + Show All 모두 보기 - + Preferences... 환경설정... - + Quit %1 %1 종료 - + About %1 %1에 관하여 @@ -4088,7 +4212,7 @@ Local version is %1, remote version is %2. QObject - + Cockatrice replays (*.cor) 코카트리스 리플레이 파일 (*.cor) @@ -4157,35 +4281,64 @@ Local version is %1, remote version is %2. RoomSelector - + Rooms 채널 목록 - + Joi&n 채널에 참가 - + Room 게임 - + Description 설명 - + + Permissions + 권한 + + + Players 플레이어 - + Games 게임 + + + + Error + 오류 + + + + You do not have the proper permission to join this room. + 본 채널에 들어가는데 필요한 권한을 가지고 있지 않습니다. + + + + Failed to join the room due to an unknown error. + 알 수 없는 오류로 채널에 들어갈 수 없었습니다. + + + + SequenceEdit + + + Shortcut already in use + 이미 사용중인 단축키 입니다. + SetsModel @@ -4236,37 +4389,37 @@ Local version is %1, remote version is %2. SoundSettingsPage - + Choose path 경로 선택 - + Enable &sounds 음향 효과 켜기 - + Path to sounds directory: 음향 효과 파일 디렉토리 경로: - + Test system sound engine 시스템 사운드 엔진 테스트 - + Sound settings 음향 설정 - + Master volume requires QT5 주 음량 조절 옵션은 QT5가 필요합니다. - + Master volume 주 음량 @@ -4286,7 +4439,7 @@ Local version is %1, remote version is %2. &Reload configuration - + 설정 새로고침 @@ -4322,117 +4475,152 @@ Local version is %1, remote version is %2. TabDeckEditor - + &Print deck... 덱 인쇄 - + &Close 덱 닫기 - + &Edit sets... 확장판 목록 편집 - + Filters 카드 필터 - + &Clear all filters 모든 필터 초기화 - + Delete selected 선택한 필터 삭제 - + Deck &name: 덱 이름: - + &Comments: 설명: - + Hash: 해시값: - + &New deck 새로운 덱 작성 - + &Load deck... 덱 불러오기 - + &Save deck 덱 저장 - + Save deck &as... 다른 이름으로 저장 - + Load deck from cl&ipboard... 클립보드에서 덱 가져오기 - + Save deck to clip&board 클립보드로 덱 보내기 - + &Analyze deck on deckstats.net deckstats.net에서 덱 분석 - + Open custom image folder 사용자 카드 이미지 폴더 열기 - + + Open custom sets folder + 사용자 확장판 폴더 열기 + + + Add card to &maindeck 메인덱에 카드 추가 - + Add card to &sideboard 사이드보드에 카드 추가 - + &Deck Editor 덱 편집기 - + C&ard Database 카드 데이터베이스 - + + Show/Hide card information + 카드 정보 표시/숨김 + + + + Show/Hide deck + 덱 표시/숨김 + + + + Show/Hide filters + 검색 필터 표시/숨김 + + + + Reset layout + 화면 레이아웃 초기화 + + + + Card Info + 카드 정보 + + + + Deck + + + + Welcome 환영합니다 - + Hi! It seems like you're running this version of Cockatrice for the first time. All the sets in the card database have been enabled. Read more about changing the set order or disabling specific sets and consequent effects in the "Edit Sets" window. @@ -4441,69 +4629,69 @@ Read more about changing the set order or disabling specific sets and consequent '확장판 목록 편집' 창에서 원하지 않는 확장판을 빼거나 확장판 순서를 변경하는게 가능합니다. - + &Remove row 선택한 카드 전부 제거 - + &Increment number 선택한 카드 한장 추가 - + &Decrement number 선택한 카드 한장 제거 - + Edit &tokens... 토큰 목록 편집 - + Deck: %1 덱 편집기: %1 - + Are you sure? 확실하십니까? - + The decklist has been modified. Do you want to save the changes? 덱 리스트가 변경되었습니다. 변경사항을 저장하시겠습니까? - + Load deck 덱 불러오기 - - - + + + Error 오류 - + The deck could not be saved. 덱을 저장하는데 실패하였습니다. - - + + The deck could not be saved. Please check that the directory is writable and try again. 덱을 저장하는데 실패하였습니다. 덱 파일 디렉토리에 쓰기가 가능한지 확인하시고 다시 시도해 주세요. - + Save deck 덱 저장 @@ -4601,97 +4789,97 @@ Please enter a name: TabGame - + &Phases 단계 - + &Game 게임 - + Next &phase 다음 단계로 진행 - + Next &turn 턴 넘기기 - + &Remove all local arrows - 자기가 그린 화살표 제거 + 내가 그린 화살표 제거 - + Rotate View Cl&ockwise - + 플레이어 위치 시계방향으로 조정 - + Rotate View Co&unterclockwise - + 플레이어 위치 반시계방향으로 조정 - + Game &information 게임 정보 - + &Concede 항복 - + &Leave game 게임 나가기 - + C&lose replay 리플레이 닫기 - + &Say: 말하기: - + Concede 항복 - + Are you sure you want to concede this game? 정말 게임에서 항복하시겠습니까? - + Leave game 게임 나가기 - + Are you sure you want to leave this game? 정말 게임에서 나가시겠습니까? - + You are flooding the game. Please wait a couple of seconds. 너무 빨리 말하고 있습니다. 조금만 기다려 주십시오. - + You have been kicked out of the game. 게임에서 강제 퇴장 당하였습니다. - + REPLAY 리플레이 @@ -4797,47 +4985,47 @@ Please enter a name: TabRoom - + &Say: 말하기: - + Chat 대화 - + &Room 채널 - + &Leave room 채널에서 나가기 - + &Clear chat 대화 내용 삭제 - + Chat Settings... 대화 설정... - + mentioned you. - 이(가) 당신을 언급하였습니다. + 이(가) 당신에게 멘션을 보냈습니다. - + Click to view 여기를 눌러 확인 - + You are flooding the chat. Please wait a couple of seconds. 너무 빨리 말하고 있습니다. 조금만 기다려 주세요. @@ -4853,16 +5041,26 @@ Please enter a name: TabSupervisor - + Are you sure? 확실하십니까? - + There are still open games. Are you sure you want to quit? 참가 중인 게임이 있습니다. 정말로 코카트리스를 종료하시겠습니까? + + + Promotion + 승급 + + + + You have been promoted to moderator. Please log out and back in for changes to take effect. + 관리자로 승급되셨습니다. 다시 로그인 하시면 해당 등급이 적용됩니다. + TabUserLists @@ -4885,55 +5083,97 @@ Please enter a name: UserContextMenu - + User &details 사용자 정보 - + Private &chat 1:1 대화 - + Show this user's &games 이 사용자의 게임 보기 - + Add to &buddy list 친구 목록에 추가 - + Remove from &buddy list 친구 목록에서 삭제 - + Add to &ignore list 차단 목록에 추가 - + Remove from &ignore list 차단 목록에서 제거 - + Kick from &game 게임에서 강제 퇴장 - + Ban from &server 서버에서 추방 - + + &Promote user to moderator + 사용자를 관리자로 승급 + + + + Dem&ote user from moderator + 사용자를 관리자로부터 강등 + + + %1's games %1의 게임 + + + + Success + 성공 + + + + Successfully promoted user. + 해당 사용자 승급에 성공하였습니다. + + + + Successfully demoted user. + 해당 사용자 강등에 성공하였습니다. + + + + + Failed + 실패 + + + + Failed to promote user. + 해당 사용자 승급에 실패하였습니다. + + + + Failed to demote user. + 해당 사용자 강등에 실패하였습니다. + UserInfoBox @@ -4950,7 +5190,7 @@ Please enter a name: Pronouns: - + 성별: @@ -4970,17 +5210,17 @@ Please enter a name: Edit - + 프로필 수정 Change password - + 비밀번호 변경 Change avatar - + 아바타 변경 @@ -4995,13 +5235,13 @@ Please enter a name: Registered user - 등록한 사용자 + 서버에 가입한 사용자 Unregistered user - 등록하지 않은 사용자 + 서버에 가입하지 않은 사용자 @@ -5033,12 +5273,12 @@ Please enter a name: Information - + 사용자 정보 User information updated. - + 사용자 정보가 갱신되었습니다. @@ -5050,94 +5290,94 @@ Please enter a name: Error - + 오류 This server does not permit you to update your user informations. - + 본 서버는 당신의 사용자 정보를 수정 할 수 없게 설정되어 있습니다. An error occured while trying to update your user informations. - + 사용자 정보 갱신 중 오류가 발생하였습니다. Password changed. - + 비밀번호가 변경되었습니다. This server does not permit you to change your password. - + 본 서버는 당신의 비밀번호를 수정 할 수 없게 설정되어 있습니다. The new password is too short. - + 새로운 비밀번호가 너무 짧습니다. The old password is incorrect. - + 예전 비밀번호가 잘못되었습니다. Avatar updated. - + 아바타를 변경하였습니다. This server does not permit you to update your avatar. - + 본 서버는 당신의 아바타를 변경 할 수 없게 설정되어 있습니다. An error occured while trying to updater your avatar. - + 아바타 변경 중 오류가 발생하였습니다. UserInterfaceSettingsPage - + General interface settings 일반 인터페이스 설정 - + Enable notifications in taskbar 상태 표시줄 알림 설정 - + Notify in the taskbar for game events while you are spectating 관전중인 게임의 상태 표시줄 알림 설정 - + &Double-click cards to play them (instead of single-click) 카드를 더블 클릭해서 발동 (해제시 한번만 클릭하면 발동 됨) - + &Play all nonlands onto the stack (not the battlefield) by default 모든 대지가 아닌 카드를 발동 시에 스택으로 이동 (해제시 전장으로 바로 이동) - + Annotate card text on tokens - + 토큰에 카드 텍스트 주석 자동 추가 - + Animation settings 애니메이션 설정 - + &Tap/untap animation 탭/언탭 애니메이션 @@ -5145,22 +5385,22 @@ Please enter a name: UserList - + Users connected to server: %1 서버에 접속한 사용자 수: %1 - + Users in this room: %1 현재 채널에 있는 사용자 목록 : %1 - + Buddies online: %1 / %2 온라인 친구 목록: %1 / %2 - + Ignored users online: %1 / %2 차단한 사용자 목록: %1 / %2 @@ -5219,7 +5459,7 @@ Please enter a name: - Disabled sets will still be used for loading images + Disabled sets will be used for loading images only if all the enabled sets failed 선택하지 않은 판본도 카드 이미지를 불러오기 위하여 사용될 수 있습니다. @@ -5228,12 +5468,12 @@ Please enter a name: 확장판 목록 편집 - + Success 성공 - + The sets database has been saved successfully. 확장판 데이터베이스가 성공적으로 저장되었습니다. @@ -5261,4 +5501,561 @@ Please enter a name: 카드 유형별 행 정렬 + + shortcutsTab + + + Form + 양식 + + + + Main Window + 메인 화면 + + + + Deck editor + 덱 편집기 + + + + Local gameplay + 오프라인 게임 시작 + + + + Watch replay + 리플레이 보기 + + + + Connect + 서버로 연결 + + + + Register + 서버에 가입 + + + + Full screen + 전체 화면 + + + + Settings + 환경설정 + + + + Check for card updates + 카드 DB 업데이트 확인 + + + + Exit + 끝내기 + + + + Deck Editor + 덱 편집기 + + + + Analyze deck + 덱 분석 + + + + Load deck (clipboard) + 클립보드에서 덱 가져오기 + + + + Clerar all filters + 모든 필터 초기화 + + + + New deck + 새로운 덱 작성 + + + + Clear one filter + 선택한 필터 초기화 + + + + Open custom folder + 사용자 폴더 열기 + + + + Close + 덱 닫기 + + + + Print deck + 덱 인쇄 + + + + Edit sets + 확장판 목록 편집 + + + + Delete card + 카드 삭제 + + + + Edit tokens + 토큰 수정 + + + + Reset layout + 레이아웃 초기화 + + + + Add card + 카드 추가 + + + + Save deck + 덱 저장 + + + + Remove card + 카드 제거 + + + + Save deck as + 다른 이름으로 저장 + + + + Load deck + 덱 불러오기 + + + + Save deck (clipboard) + 클립보드로 덱 보내기 + + + + + Counters + 카운터 + + + + Life + 생명점 + + + + + + + + Set + 설정 + + + + + + + Add + 증가 + + + + + + + Remove + 감소 + + + + Red + 적색 + + + + Green + 녹색 + + + + Yellow + 황색 + + + + Mainwindow / Deck editor + 메인 화면 / 덱 편집기 + + + + Power / toughness + 공격력 / 방어력 설정 + + + + Power and toughness + 공격력 및 방어력 + + + + Add (+1/+1) + +1/+1 부여 + + + + Remove (-1/-1) + -1/-1 부여 + + + + Toughness + 방어력 + + + + Remove (-0/-1) + -0/-1 부여 + + + + Add (+0/+1) + +0/+1 부여 + + + + Power + 공격력 + + + + Remove (-1/-0) + -1/-0 부여 + + + + Add (+1/+0) + +1/+0 부여 + + + + Game Phases + 턴 단계 + + + + Untap + 언탭단 + + + + Disconnect + 서버와의 연결 해제 + + + + Upkeep + 유지단 + + + + + Draw + 뽑기단 + + + + Main 1 + 전투 전 본단계 + + + + Start combat + 전투 시작단 + + + + Attack + 공격자 선언단 + + + + Block + 방어자 선언단 + + + + Damage + 전투 피해단 + + + + End combat + 전투 종료단 + + + + Main 2 + 전투 후 본단계 + + + + End + 종료단 + + + + Next phase + 다음 단계로 진행 + + + + Next turn + 턴 넘기기 + + + + Player + 플레이어 + + + + Tap Card + 카드 탭 + + + + Untap Card + 카드 언탭 + + + + Untap all + 모든 지속물 언탭 + + + + Toogle untap + 언탭단에서 언탭 여부 변경 + + + + Flip card + 카드 뒤집기 + + + + Peek card + 카드 앞면 보기 + + + + Play card + 카드 플레이 + + + + Attach card + 다른 카드에 부착 + + + + Unattach card + 부착 해제 + + + + Clone card + 카드 복제 + + + + Create token + 토큰 생성 + + + + Create another token + 같은 종류의 토큰 추가 생성 + + + + Set annotation + 주석 설정 + + + + Phases / P/T / Player + 턴 단계 / 공/방 / 플레이어 + + + + Move card to + 다른 영역으로 이동: + + + + Bottom library + 서고 맨 아래 + + + + Top library + 서고 맨 위 + + + + + Graveyard + 무덤 + + + + + Exile + 추방 영역 + + + + Hand + + + + + View + 보기 + + + + Library + 서고 + + + + Tops card of library + 서고 위 카드 + + + + Sideboard + 사이드보드 + + + + Close recent view + 특정 영역 보기 닫음 + + + + Pre-play + 플레이 전 + + + + Load remote deck + 서버에 저장된 덱 불러오기 + + + + Load local deck + 로컬 덱 불러오기 + + + + Game play + 게임 플레이 + + + + Draw arrow + 화살표 그리기 + + + + Leave game + 게임 나가기 + + + + Remove local arrows + 내가 그린 화살표 제거 + + + + Concede + 항복 + + + + Roll dice + 주사위 굴리기 + + + + Rotate view CW + 플레이어 위치 시계방향으로 조정 + + + + Shuffle library + 서고 섞기 + + + + Rotate view CCW + 플레이어 위치 반시계방향으로 조정 + + + + Mulligan + 멀리건 + + + + Draw card + 카드 뽑기 + + + + Draw cards + 카드 X장 뽑기 + + + + Undo draw + 카드 뽑기 취소 + + + + Always reveal top card + 서고 맨 위 카드 항상 공개 + + + + Draw / Move / View / Game play + 카드 뽑기 / 이동 / 보기 / 게임플레이 + + \ No newline at end of file diff --git a/cockatrice/translations/cockatrice_nb.ts b/cockatrice/translations/cockatrice_nb.ts index 160b822d..bd644f88 100644 --- a/cockatrice/translations/cockatrice_nb.ts +++ b/cockatrice/translations/cockatrice_nb.ts @@ -2,17 +2,17 @@ AbstractCounter - + &Set counter... &Sett teller … - + Set counter Sett teller - + New value for counter '%1': Ny verdi for teller '%1': @@ -20,89 +20,60 @@ AppearanceSettingsPage - - Zone background pictures - Bakgrunnsbilder for soner + + Theme settings + - - Hand background: - Håndbakgrunn: + + Current theme: + - - Stack background: - Stokkbakgrunn: - - - - Table background: - Bordduk: - - - - Player info background: - Bakgrunn på spillerinfo: - - - - Card back: - Kortbakside: - - - + Card rendering Korttegning - + Display card names on cards having a picture Vis navn på kort med bilde - + Scale cards on mouse over Forstørr kort når muspekeren er over - + Hand layout Håndlayout - + Display hand horizontally (wastes space) Vis hånden horisontalt (bruker unødig mye plass) - + Enable left justification Venstrejuster tekst - + Table grid layout Ruteoppsett for bord - + Invert vertical coordinate Snu vertikale koordinater opp-ned - + Minimum player count for multi-column layout: Minste antall spillere for fler-kolonne-visning: - - - - - - - Choose path - Velg filsti - BanDialog @@ -117,87 +88,110 @@ sperr &IP-adresse - + + ban client I&D + + + + Ban type Sperretype - + &permanent ban &permanent sperre - + &temporary ban &midlertidig sperre - + &Days: &Dager: - + &Hours: &Timer: - + &Minutes: &Minutter: - + Duration of the ban Lengde på sperre - + Please enter the reason for the ban. This is only saved for moderators and cannot be seen by the banned person. Fyll inn grunn for sperre. Dette vises kun til moderatorer, og er ikke synlig for brukeren. - + Please enter the reason for the ban that will be visible to the banned person. Fyll inn grunn for sperre som vises til den sperrede brukeren. - + &OK &OK - + &Cancel &Avbryt - + Ban user from server Sperr bruker fra tjener - + + + + Error Feil - - You have to select a name-based or IP-based ban, or both. - Du må velge navnebasert og/eller IP-basert sperre. + + You have to select a name-based, IP-based, clientId based, or some combination of the three to place a ban. + + + + + You must have a value in the name ban when selecting the name ban checkbox. + + + + + You must have a value in the ip ban when selecting the ip ban checkbox. + + + + + You must have a value in the clientid ban when selecting the clientid ban checkbox. + CardDatabase - + New sets found - + %1 new set(s) have been found in the card database. Do you want to enable them? @@ -233,17 +227,17 @@ Dette vises kun til moderatorer, og er ikke synlig for brukeren. CardFrame - + Image - + Description - + Both @@ -299,27 +293,32 @@ Dette vises kun til moderatorer, og er ikke synlig for brukeren. Vis både kort og tekst - + Name: Navn: - + Mana cost: Mannakost: - + + Color(s): + + + + Card type: Korttype: - + P / T: K / L: - + Loyalty: Lojalitet: @@ -583,12 +582,12 @@ Dette vises kun til moderatorer, og er ikke synlig for brukeren. DeckEditorSettingsPage - + Nothing is here... yet Det er ingenting her … ennå - + General Generelt @@ -596,17 +595,17 @@ Dette vises kun til moderatorer, og er ikke synlig for brukeren. DeckListModel - + Number Nummer - + Card Kort - + Price Pris @@ -628,42 +627,42 @@ Dette vises kun til moderatorer, og er ikke synlig for brukeren. DeckViewContainer - + Load local deck - + Load deck from server - + Ready to s&tart &Klar til å begynne - + S&ideboard unlocked &Sidebrett åpnet - + S&ideboard locked &Sidebrett låst - + Load deck Last inn kortstokk - + Error Feil - + The selected file could not be loaded. Den filen kan ikke lastes inn. @@ -709,37 +708,52 @@ Dette vises kun til moderatorer, og er ikke synlig for brukeren. DlgConnect - + + Previous Host + + + + + New Host + + + + &Host: &Tjener - + + Enter host name + + + + &Port: &Port - + Player &name: Spiller&navn - + P&assword: &Passord - + &Save password &Lagre passord - + A&uto connect at start Koble til &automatisk når programmet starter - + Connect to server Koble til tjener @@ -747,82 +761,92 @@ Dette vises kun til moderatorer, og er ikke synlig for brukeren. DlgCreateGame - + &Description: &Beskrivelse - + &Password: &Passord - + P&layers: Sp&illere - + + Re&member settings + + + + Game type Spilleregler - + Only &buddies can join Bare &venner slipper inn - + Only &registered users can join Bare &registrerte brukere slipper inn - + Joining restrictions Begrens deltakere - + &Spectators can watch Tillat &tilskuere - + Spectators &need a password to watch Tilskuere på ha &passord for å se på - + Spectators can see &hands Tilskuere kan se %begge spilleres hender - + Spectators can &chat Tilskuere kan p&rate - + Spectators Tilskuere - + + &Clear + + + + Create game Lag nytt spill - + Game information Spilloppsett - + Error Feil - + Server error. Tjenerfeil @@ -963,32 +987,32 @@ To remove your current avatar, confirm without choosing a new image. DlgEditPassword - + Old password: - + New password: - + Confirm new password: - + Change password - + Error - + The new passwords don't match. @@ -1091,47 +1115,47 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgEditUser - + Email: - + Pronouns: - + Neutral - + Masculine - + Feminine - + Country: - + Undefined - + Real name: - + Edit user profile @@ -1139,47 +1163,47 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgFilterGames - + Show &unavailable games - + Show &password protected games - + Game &description: - + &Creator name: - + &Game types - + at &least: - + at &most: - + Maximum player count - + Filter games @@ -1187,7 +1211,7 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgLoadDeckFromClipboard - + &Refresh @@ -1197,14 +1221,14 @@ Make sure to enable the 'token set' in the 'Edit sets...' di - - + + Error - - + + Invalid deck list. @@ -1220,67 +1244,93 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgRegister - + &Host: - + &Port: - + Player &name: - + P&assword: - + + Password (again): + + + + Email: - + + Email (again): + + + + Pronouns: - + Neutral - + Masculine - + Feminine - + Undefined - + + + Registration Warning + + + + + Your passwords do not match, please try again. + + + + + Your email addresses do not match, please try again. + + + + Country: - + Real name: - + Register to server @@ -1288,19 +1338,19 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgSettings - - - + + + Error - + Unknown Error loading card database - + Your card database is invalid. Cockatrice may not function correctly with an invalid database @@ -1311,7 +1361,7 @@ Would you like to change your database location setting? - + Your card database version is too old. This can cause problems loading card information or images @@ -1322,21 +1372,21 @@ Would you like to change your database location setting? - + File Error loading your card database. Would you like to change your database location setting? - + Your card database was loaded but contains no cards. Would you like to change your database location setting? - + Your card database did not finish loading Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues with your cards.xml attached @@ -1345,7 +1395,7 @@ Would you like to change your database location setting? - + Unknown card database load status Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues @@ -1354,50 +1404,55 @@ Would you like to change your database location setting? - + The path to your deck directory is invalid. Would you like to go back and set the correct path? - + The path to your card pictures directory is invalid. Would you like to go back and set the correct path? - + Settings - + General - + Appearance - + User Interface - + Deck Editor - + Chat - + Sound + + + Shortcuts + + GameSelector @@ -1410,7 +1465,7 @@ Would you like to change your database location setting? - + Error @@ -1455,47 +1510,47 @@ Would you like to change your database location setting? - + Join game - + Password: - + Please join the respective room first. - + Games + + + &Filter games + + - Filter games + C&lear filter - Clear filter + C&reate - - Create + + &Join - - Join - - - - + J&oin as spectator @@ -1612,107 +1667,112 @@ Would you like to change your database location setting? GeneralSettingsPage - + Reset/Clear Downloaded Pictures - - - - - + + + + + Choose path - + Success - + Downloaded card pictures have been reset. - + Error - + One or more downloaded card pictures could not be cleared. - + Personal settings - + Language: - + Download card pictures on the fly - + Download card pictures from a custom URL - + Custom Card Download URL: - + Linking FAQ - - Paths - - - - - Decks directory: - - - - - Replays directory: - - - - - Pictures directory: - - - - - Card database: - - - - - Token database: + + Notify when new client features are available + Paths + + + + + Decks directory: + + + + + Replays directory: + + + + + Pictures directory: + + + + + Card database: + + + + + Token database: + + + + Picture cache size: - - + + English (Norwegian Bokmål) @@ -1720,497 +1780,543 @@ Would you like to change your database location setting? MainWindow - + There are too many concurrent connections from your address. - + Scheduled server shutdown. - + Banned by moderator - + Expected end time: %1 - + This ban lasts indefinitely. - + Connection closed - + The server has terminated your connection. Reason: %1 - + Scheduled server shutdown - + The server is going to be restarted in %n minute(s). All running games will be lost. Reason for shutdown: %1 - + Number of players - + Please enter the number of players. - - + + Player %1 - + Load replay - + About Cockatrice - + Version %1 - + Translators: - + Project Manager: - - + + The server has reached its maximum user capacity, please check back later. + + + + + Invalid username. - - + + You have been logged out due to logging in at another location. + + + + + Success - + Registration accepted. Will now login. - + Account activation accepted. Will now login. - + Past Project Managers: - + Developers: - + Our Developers - + Help Develop! - + Recognition Page - + Help Translate! - + Support: - + Report an Issue - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + Error - + Server timeout - + + Failed Login + + + + + Your client does not support features that the server requires, please update your client and try again. + + + + Incorrect username or password. Please check your authentication information and try again. - + There is already an active session using this user name. Please close that session first and re-login. - - + + You are banned until %1. - - + + You are banned indefinitely. - + This server requires user registration. Do you want to register now? - + + This server requires client ID's. Your client is either failing to generate an ID or you are running a modified client. +Please close and reopen your client to try again. + + + + + An internal error has occurred, please try closing and reopening your client and try again. If the error persists try updating your client to the most recent build and if need be contact your software provider. + + + + Account activation - - Your account has not been activated yet. - You need to provide the activation token received in the activation email - - - - - + Unknown login error: %1 - + + + +This usually means that your client version is out of date, and the server sent a reply your client doesn't understand. + + + + Your username must respect these rules: - + is %1 - %2 characters long - + can %1 contain lowercase characters - - - - + + + + NOT - + can %1 contain uppercase characters - + can %1 contain numeric characters - + can contain the following punctuation: %1 - + first character can %1 be a punctuation mark - + You may only use A-Z, a-z, 0-9, _, ., and - in your username. - - - - - + + + + + Registration denied - + Registration is currently disabled on this server - + There is already an existing account with the same user name. - + It's mandatory to specify a valid email address when registering. - + Too many registration attempts from your IP address. - + Password too short. - + Registration failed for a technical problem on the server. - + + Unknown registration error: %1 + + + + Account activation failed - + Socket error: %1 - + 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. - + Your Cockatrice client is obsolete. Please update your Cockatrice version. Local version is %1, remote version is %2. - + Connecting to %1... - + Registering to %1 as %2... - + Disconnected - + Connected, logging in at %1 - - Logged in as %1 at %2 - - - - + &Connect... - + &Disconnect - + Start &local game... - + &Watch replay... - + &Deck editor - + &Full screen - + &Register to server... - + &Settings... - - + + &Exit - + A&ctions - + &Cockatrice - + &About Cockatrice - + &Help - + Check for card updates... - + A card database update is already running. - + Unable to run the card database updater: - + The card database updater exited with an error: %1 - + Update completed successfully. Cockatrice will now reload the card database. - - + + Your client appears to be missing features that the server supports. +This usually means that your client version is out of date, please check to see if there is a new client available for download. + + + + + + Information - + Troubleshooting - + F.A.Q. - + + Your account has not been activated yet. +You need to provide the activation token received in the activation email + + + + failed to start. - + crashed. - + timed out. - + write error. - + read error. - + unknown error. @@ -3450,62 +3556,74 @@ Local version is %1, remote version is %2. MessagesSettingsPage - + Chat settings - + + Custom alert words + + + + Enable chat mentions - + + Enable mention completer + + + + In-game message macros - - Ignore unregistered users in main chat + + Ignore chat room messages sent by unregistered users - - Ignore chat room messages sent by unregistered users. + + Ignore private messages sent by unregistered users - - Ignore private messages sent by unregistered users. + + Enable desktop notifications for private messages - + + Separate words with a space, alphanumeric characters only + + + + + Invert text color - - Enable desktop notifications for private messages. - - - - + Enable desktop notification for mentions. - + + (Color is hexadecimal) - + Add message - + Message: @@ -3571,435 +3689,435 @@ Local version is %1, remote version is %2. Player - + &View library - + Move top cards to &graveyard... - + View &top cards of library... - + &View graveyard - + &View sideboard - + Player "%1" - - - - + + + + &Hand - + &Reveal hand to... - + Reveal r&andom card to... - + &Library - - - - + + + + &Graveyard - + &Sideboard - + Red - + Yellow - + Green - + View top cards of library - + Number of cards: - + &Draw card - + Reveal top cards of library - + Number of cards: (max. %1) - + &View exile - - - - + + + + &Exile - + Reveal t&op cards to... - + D&raw cards... - + Take &mulligan - + &Shuffle - + &Counters - + &Untap all permanents - + R&oll die... - + &Create token... - + C&reate another token - + S&ay - + &Move hand to... - - - - + + + + &Top of library - - - - + + + + &Bottom of library - + &Move graveyard to... - + &Move exile to... - + Reveal &library to... - + &Always reveal top card - + O&pen deck in deck editor - + &Undo last draw - + Play top card &face down - + Move top cards to &exile... - + Put top card on &bottom - + Put bottom card &in graveyard - + Cr&eate predefined token - + C&ard - + &All players - + &Play - + &Hide - + Play &Face Down - + &Tap - + &Untap - + Toggle &normal untapping - + &Flip - + &Peek at card face - + &Clone - + Attac&h to card... - + Unattac&h - + &Draw arrow... - + &Increase power - + &Decrease power - + I&ncrease toughness - + D&ecrease toughness - + In&crease power and toughness - + Dec&rease power and toughness - + Set &power and toughness... - + &Set annotation... - + &Add counter (%1) - + &Remove counter (%1) - + &Set counters (%1)... - + Draw cards - - - - + + + + Number: - + Move top cards to grave - + Move top cards to exile - + Roll die - + Number of sides: - + Set power/toughness - + Please enter the new PT: - + Set annotation - + Please enter the new annotation: - + Set counters - + Cr&eate related card @@ -4007,37 +4125,37 @@ Local version is %1, remote version is %2. QMenuBar - + Services - + Hide %1 - + Hide Others - + Show All - + Preferences... - + Quit %1 - + About %1 @@ -4045,7 +4163,7 @@ Local version is %1, remote version is %2. QObject - + Cockatrice replays (*.cor) @@ -4114,35 +4232,64 @@ Local version is %1, remote version is %2. RoomSelector - + Rooms - + Joi&n - + Room - + Description - + + Permissions + + + + Players - + Games + + + + Error + + + + + You do not have the proper permission to join this room. + + + + + Failed to join the room due to an unknown error. + + + + + SequenceEdit + + + Shortcut already in use + + SetsModel @@ -4193,37 +4340,37 @@ Local version is %1, remote version is %2. SoundSettingsPage - + Choose path - + Enable &sounds - + Path to sounds directory: - + Test system sound engine - + Sound settings - + Master volume requires QT5 - + Master volume @@ -4279,184 +4426,219 @@ Local version is %1, remote version is %2. TabDeckEditor - + &Print deck... - + &Close - + &Edit sets... - + Filters - + &Clear all filters - + Delete selected - + Deck &name: - + &Comments: - + Hash: - + &New deck - + &Load deck... - + &Save deck - + Save deck &as... - + Load deck from cl&ipboard... - + Save deck to clip&board - + &Analyze deck on deckstats.net - + Open custom image folder - + + Open custom sets folder + + + + Add card to &maindeck - + Add card to &sideboard - + &Deck Editor - + C&ard Database - + + Show/Hide card information + + + + + Show/Hide deck + + + + + Show/Hide filters + + + + + Reset layout + + + + + Card Info + + + + + Deck + + + + Welcome - + Hi! It seems like you're running this version of Cockatrice for the first time. All the sets in the card database have been enabled. Read more about changing the set order or disabling specific sets and consequent effects in the "Edit Sets" window. - + &Remove row - + &Increment number - + &Decrement number - + Edit &tokens... - + Deck: %1 - + Are you sure? - + The decklist has been modified. Do you want to save the changes? - + Load deck - - - + + + Error - + The deck could not be saved. - - + + The deck could not be saved. Please check that the directory is writable and try again. - + Save deck @@ -4553,97 +4735,97 @@ Please enter a name: TabGame - + &Phases - + &Game - + Next &phase - + Next &turn - + &Remove all local arrows - + Rotate View Cl&ockwise - + Rotate View Co&unterclockwise - + Game &information - + &Concede - + &Leave game - + C&lose replay - + &Say: - + Concede - + Are you sure you want to concede this game? - + Leave game - + Are you sure you want to leave this game? - + You are flooding the game. Please wait a couple of seconds. - + You have been kicked out of the game. - + REPLAY @@ -4749,47 +4931,47 @@ Please enter a name: TabRoom - + &Say: - + Chat - + &Room - + &Leave room - + &Clear chat - + Chat Settings... - + mentioned you. - + Click to view - + You are flooding the chat. Please wait a couple of seconds. @@ -4805,15 +4987,25 @@ Please enter a name: TabSupervisor - + Are you sure? - + There are still open games. Are you sure you want to quit? + + + Promotion + + + + + You have been promoted to moderator. Please log out and back in for changes to take effect. + + TabUserLists @@ -4836,55 +5028,97 @@ Please enter a name: UserContextMenu - + User &details - + Private &chat - + Show this user's &games - + Add to &buddy list - + Remove from &buddy list - + Add to &ignore list - + Remove from &ignore list - + Kick from &game - + Ban from &server - + + &Promote user to moderator + + + + + Dem&ote user from moderator + + + + %1's games + + + + Success + + + + + Successfully promoted user. + + + + + Successfully demoted user. + + + + + + Failed + + + + + Failed to promote user. + + + + + Failed to demote user. + + UserInfoBox @@ -5053,42 +5287,42 @@ Please enter a name: UserInterfaceSettingsPage - + General interface settings - + Enable notifications in taskbar - + Notify in the taskbar for game events while you are spectating - + &Double-click cards to play them (instead of single-click) - + &Play all nonlands onto the stack (not the battlefield) by default - + Annotate card text on tokens - + Animation settings - + &Tap/untap animation @@ -5096,22 +5330,22 @@ Please enter a name: UserList - + Users connected to server: %1 - + Users in this room: %1 - + Buddies online: %1 / %2 - + Ignored users online: %1 / %2 @@ -5170,7 +5404,7 @@ Please enter a name: - Disabled sets will still be used for loading images + Disabled sets will be used for loading images only if all the enabled sets failed @@ -5179,12 +5413,12 @@ Please enter a name: - + Success - + The sets database has been saved successfully. @@ -5212,4 +5446,561 @@ Please enter a name: + + shortcutsTab + + + Form + + + + + Main Window + + + + + Deck editor + + + + + Local gameplay + + + + + Watch replay + + + + + Connect + + + + + Register + + + + + Full screen + + + + + Settings + + + + + Check for card updates + + + + + Exit + + + + + Deck Editor + + + + + Analyze deck + + + + + Load deck (clipboard) + + + + + Clerar all filters + + + + + New deck + + + + + Clear one filter + + + + + Open custom folder + + + + + Close + + + + + Print deck + + + + + Edit sets + + + + + Delete card + + + + + Edit tokens + + + + + Reset layout + + + + + Add card + + + + + Save deck + + + + + Remove card + + + + + Save deck as + + + + + Load deck + + + + + Save deck (clipboard) + + + + + + Counters + + + + + Life + + + + + + + + + Set + + + + + + + + Add + + + + + + + + Remove + + + + + Red + + + + + Green + + + + + Yellow + + + + + Mainwindow / Deck editor + + + + + Power / toughness + + + + + Power and toughness + + + + + Add (+1/+1) + + + + + Remove (-1/-1) + + + + + Toughness + + + + + Remove (-0/-1) + + + + + Add (+0/+1) + + + + + Power + + + + + Remove (-1/-0) + + + + + Add (+1/+0) + + + + + Game Phases + + + + + Untap + + + + + Disconnect + + + + + Upkeep + + + + + + Draw + + + + + Main 1 + + + + + Start combat + + + + + Attack + + + + + Block + + + + + Damage + + + + + End combat + + + + + Main 2 + + + + + End + + + + + Next phase + + + + + Next turn + + + + + Player + + + + + Tap Card + + + + + Untap Card + + + + + Untap all + + + + + Toogle untap + + + + + Flip card + + + + + Peek card + + + + + Play card + + + + + Attach card + + + + + Unattach card + + + + + Clone card + + + + + Create token + + + + + Create another token + + + + + Set annotation + + + + + Phases / P/T / Player + + + + + Move card to + + + + + Bottom library + + + + + Top library + + + + + + Graveyard + + + + + + Exile + + + + + Hand + + + + + View + + + + + Library + + + + + Tops card of library + + + + + Sideboard + + + + + Close recent view + + + + + Pre-play + + + + + Load remote deck + + + + + Load local deck + + + + + Game play + + + + + Draw arrow + + + + + Leave game + + + + + Remove local arrows + + + + + Concede + + + + + Roll dice + + + + + Rotate view CW + + + + + Shuffle library + + + + + Rotate view CCW + + + + + Mulligan + + + + + Draw card + + + + + Draw cards + + + + + Undo draw + + + + + Always reveal top card + + + + + Draw / Move / View / Game play + + + \ No newline at end of file diff --git a/cockatrice/translations/cockatrice_nl.ts b/cockatrice/translations/cockatrice_nl.ts index 54acefa8..42ec5901 100644 --- a/cockatrice/translations/cockatrice_nl.ts +++ b/cockatrice/translations/cockatrice_nl.ts @@ -2,17 +2,17 @@ AbstractCounter - + &Set counter... &Teller instellen... - + Set counter Teller instellen - + New value for counter '%1': Nieuwe waarde van teller '%1': @@ -20,89 +20,60 @@ AppearanceSettingsPage - - Zone background pictures - Zone achtergrondafbeeldingen + + Theme settings + - - Hand background: - Hand achtergrond: + + Current theme: + - - Stack background: - Stack achtergrond: - - - - Table background: - Tafel achtergrond: - - - - Player info background: - Spelersinfo achtergrond: - - - - Card back: - Achterzijde van kaarten: - - - + Card rendering Kaartweergave - + Display card names on cards having a picture Kaartnamen altijd weergeven - + Scale cards on mouse over - + Hand layout Handweergave - + Display hand horizontally (wastes space) Hand horizontaal weergeven (gebruikt extra ruimte) - + Enable left justification - + Table grid layout Tafelindeling - + Invert vertical coordinate Verticale coördinaat omkeren - + Minimum player count for multi-column layout: Minimaal aantal spelers voor kolommenindeling: - - - - - - - Choose path - Kies map - BanDialog @@ -117,87 +88,110 @@ ban &IP-adres - + + ban client I&D + + + + Ban type Ban type - + &permanent ban &definitieve ban - + &temporary ban &tijdelijke ban - + &Days: &Dagen: - + &Hours: &Uur: - + &Minutes: &Minuten: - + Duration of the ban Duur van de ban - + Please enter the reason for the ban. This is only saved for moderators and cannot be seen by the banned person. Voer een reden voor de ban in. Dit wordt opgeslagen voor het moderatorteam en zal niet zichtbaar zijn voor de gebannen persoon. - + Please enter the reason for the ban that will be visible to the banned person. Voer een reden in die zichtbaar zal zijn voor de gebannen persoon. - + &OK &OK - + &Cancel &Annuleren - + Ban user from server Ban gebruiker van server - + + + + Error Fout - - You have to select a name-based or IP-based ban, or both. - Selecteer een IP-adres en/of gebruikersnaam. + + You have to select a name-based, IP-based, clientId based, or some combination of the three to place a ban. + + + + + You must have a value in the name ban when selecting the name ban checkbox. + + + + + You must have a value in the ip ban when selecting the ip ban checkbox. + + + + + You must have a value in the clientid ban when selecting the clientid ban checkbox. + CardDatabase - + New sets found - + %1 new set(s) have been found in the card database. Do you want to enable them? @@ -233,17 +227,17 @@ Dit wordt opgeslagen voor het moderatorteam en zal niet zichtbaar zijn voor de g CardFrame - + Image - + Description - + Both @@ -299,27 +293,32 @@ Dit wordt opgeslagen voor het moderatorteam en zal niet zichtbaar zijn voor de g Toon beide - + Name: Naam: - + Mana cost: Manakosten: - + + Color(s): + + + + Card type: Kaarttype: - + P / T: P / T: - + Loyalty: Loyaliteit: @@ -583,12 +582,12 @@ Dit wordt opgeslagen voor het moderatorteam en zal niet zichtbaar zijn voor de g DeckEditorSettingsPage - + Nothing is here... yet - + General Algemeen @@ -596,17 +595,17 @@ Dit wordt opgeslagen voor het moderatorteam en zal niet zichtbaar zijn voor de g DeckListModel - + Number Nummer - + Card Kaart - + Price Prijs @@ -628,42 +627,42 @@ Dit wordt opgeslagen voor het moderatorteam en zal niet zichtbaar zijn voor de g DeckViewContainer - + Load local deck - + Load deck from server - + Ready to s&tart Klaar om te s&tarten - + S&ideboard unlocked S&ideboard ontgrendeld - + S&ideboard locked S&ideboard vergrendeld - + Load deck Laad deck - + Error Fout - + The selected file could not be loaded. Het geselecteerde bestand kon niet geladen worden. @@ -709,37 +708,52 @@ Dit wordt opgeslagen voor het moderatorteam en zal niet zichtbaar zijn voor de g DlgConnect - + + Previous Host + + + + + New Host + + + + &Host: &Gastheer - + + Enter host name + + + + &Port: &Poort - + Player &name: Spelers&naam: - + P&assword: W&achtwoord: - + &Save password Wachtwoord &Opslaan - + A&uto connect at start A&utomatisch verbinden bij opstarten - + Connect to server Verbinden met server @@ -747,82 +761,92 @@ Dit wordt opgeslagen voor het moderatorteam en zal niet zichtbaar zijn voor de g DlgCreateGame - + &Description: &Omschrijving: - + &Password: &Wachtwoord: - + P&layers: Spe&lers: - + + Re&member settings + + + + Game type Spel type - + Only &buddies can join Alleen &vrienden kunnen meedoen - + Only &registered users can join Alleen ge&registreerde gebruikers kunnen meedoen - + Joining restrictions Restricties voor meedoen - + &Spectators can watch Toe&schouwers kunnen meekijken - + Spectators &need a password to watch Toeschouwers hebben een wachtwoord &nodig om mee te kijken - + Spectators can see &hands Toeschouwers kunnen &handen zien - + Spectators can &chat Toeschouwers kunnen &chatten - + Spectators Toeschouwers - + + &Clear + + + + Create game Spel aanmaken - + Game information Spel informatie - + Error Fout - + Server error. Server Fout @@ -963,32 +987,32 @@ To remove your current avatar, confirm without choosing a new image. DlgEditPassword - + Old password: - + New password: - + Confirm new password: - + Change password - + Error - + The new passwords don't match. @@ -1091,47 +1115,47 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgEditUser - + Email: - + Pronouns: - + Neutral - + Masculine - + Feminine - + Country: - + Undefined - + Real name: - + Edit user profile @@ -1139,47 +1163,47 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgFilterGames - + Show &unavailable games Laat niet &beschikbare spellen zien - + Show &password protected games - + Game &description: Spel &omschrijving: - + &Creator name: Naam van &maker: - + &Game types &Spel types - + at &least: ten&minste: - + at &most: op zijn &hoogst: - + Maximum player count Maximale aantal spelers - + Filter games Spellen filteren @@ -1187,7 +1211,7 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgLoadDeckFromClipboard - + &Refresh &Verversen @@ -1197,14 +1221,14 @@ Make sure to enable the 'token set' in the 'Edit sets...' di Laad dek van klembord - - + + Error Fout - - + + Invalid deck list. Niet geldige deck lijst. @@ -1220,67 +1244,93 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgRegister - + &Host: - + &Port: - + Player &name: - + P&assword: - + + Password (again): + + + + Email: - + + Email (again): + + + + Pronouns: - + Neutral - + Masculine - + Feminine - + Undefined - + + + Registration Warning + + + + + Your passwords do not match, please try again. + + + + + Your email addresses do not match, please try again. + + + + Country: - + Real name: - + Register to server @@ -1288,19 +1338,19 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgSettings - - - + + + Error Fout - + Unknown Error loading card database Onbekende Fout in het lezen van de kaart database - + Your card database is invalid. Cockatrice may not function correctly with an invalid database @@ -1317,7 +1367,7 @@ U zou oracle moeten herstarten om uw database te updaten. Zou u de locatie van uw database willen veranderen? - + Your card database version is too old. This can cause problems loading card information or images @@ -1334,21 +1384,21 @@ Dit zou opgelost kunnen worden door oracle opnieuw te starten en uw kaart databa Zou u de locatie van uw database willen veranderen? - + File Error loading your card database. Would you like to change your database location setting? - + Your card database was loaded but contains no cards. Would you like to change your database location setting? - + Your card database did not finish loading Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues with your cards.xml attached @@ -1357,7 +1407,7 @@ Would you like to change your database location setting? - + Unknown card database load status Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues @@ -1366,50 +1416,55 @@ Would you like to change your database location setting? - + The path to your deck directory is invalid. Would you like to go back and set the correct path? - + The path to your card pictures directory is invalid. Would you like to go back and set the correct path? - + Settings - + General - + Appearance - + User Interface - + Deck Editor - + Chat - + Sound + + + Shortcuts + + GameSelector @@ -1422,7 +1477,7 @@ Would you like to change your database location setting? - + Error @@ -1467,47 +1522,47 @@ Would you like to change your database location setting? - + Join game - + Password: - + Please join the respective room first. - + Games + + + &Filter games + + - Filter games + C&lear filter - Clear filter + C&reate - - Create + + &Join - - Join - - - - + J&oin as spectator @@ -1624,107 +1679,112 @@ Would you like to change your database location setting? GeneralSettingsPage - + Reset/Clear Downloaded Pictures - - - - - + + + + + Choose path - + Success - + Downloaded card pictures have been reset. - + Error - + One or more downloaded card pictures could not be cleared. - + Personal settings - + Language: - + Download card pictures on the fly - + Download card pictures from a custom URL - + Custom Card Download URL: - + Linking FAQ - - Paths - - - - - Decks directory: - - - - - Replays directory: - - - - - Pictures directory: - - - - - Card database: - - - - - Token database: + + Notify when new client features are available + Paths + + + + + Decks directory: + + + + + Replays directory: + + + + + Pictures directory: + + + + + Card database: + + + + + Token database: + + + + Picture cache size: - - + + English Nederlands (Dutch) @@ -1732,497 +1792,543 @@ Would you like to change your database location setting? MainWindow - + There are too many concurrent connections from your address. - + Scheduled server shutdown. - + Banned by moderator - + Expected end time: %1 - + This ban lasts indefinitely. - + Connection closed - + The server has terminated your connection. Reason: %1 - + Scheduled server shutdown - + The server is going to be restarted in %n minute(s). All running games will be lost. Reason for shutdown: %1 - + Number of players - + Please enter the number of players. - - + + Player %1 - + Load replay - + About Cockatrice - + Version %1 - + Translators: - + Project Manager: - - + + The server has reached its maximum user capacity, please check back later. + + + + + Invalid username. - - + + You have been logged out due to logging in at another location. + + + + + Success - + Registration accepted. Will now login. - + Account activation accepted. Will now login. - + Past Project Managers: - + Developers: - + Our Developers - + Help Develop! - + Recognition Page - + Help Translate! - + Support: - + Report an Issue - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + Error - + Server timeout - + + Failed Login + + + + + Your client does not support features that the server requires, please update your client and try again. + + + + Incorrect username or password. Please check your authentication information and try again. - + There is already an active session using this user name. Please close that session first and re-login. - - + + You are banned until %1. - - + + You are banned indefinitely. - + This server requires user registration. Do you want to register now? - + + This server requires client ID's. Your client is either failing to generate an ID or you are running a modified client. +Please close and reopen your client to try again. + + + + + An internal error has occurred, please try closing and reopening your client and try again. If the error persists try updating your client to the most recent build and if need be contact your software provider. + + + + Account activation - - Your account has not been activated yet. - You need to provide the activation token received in the activation email - - - - - + Unknown login error: %1 - + + + +This usually means that your client version is out of date, and the server sent a reply your client doesn't understand. + + + + Your username must respect these rules: - + is %1 - %2 characters long - + can %1 contain lowercase characters - - - - + + + + NOT - + can %1 contain uppercase characters - + can %1 contain numeric characters - + can contain the following punctuation: %1 - + first character can %1 be a punctuation mark - + You may only use A-Z, a-z, 0-9, _, ., and - in your username. - - - - - + + + + + Registration denied - + Registration is currently disabled on this server - + There is already an existing account with the same user name. - + It's mandatory to specify a valid email address when registering. - + Too many registration attempts from your IP address. - + Password too short. - + Registration failed for a technical problem on the server. - + + Unknown registration error: %1 + + + + Account activation failed - + Socket error: %1 - + 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. - + Your Cockatrice client is obsolete. Please update your Cockatrice version. Local version is %1, remote version is %2. - + Connecting to %1... - + Registering to %1 as %2... - + Disconnected - + Connected, logging in at %1 - - Logged in as %1 at %2 - - - - + &Connect... - + &Disconnect - + Start &local game... - + &Watch replay... - + &Deck editor - + &Full screen - + &Register to server... - + &Settings... - - + + &Exit - + A&ctions - + &Cockatrice - + &About Cockatrice - + &Help - + Check for card updates... - + A card database update is already running. - + Unable to run the card database updater: - + The card database updater exited with an error: %1 - + Update completed successfully. Cockatrice will now reload the card database. - - + + Your client appears to be missing features that the server supports. +This usually means that your client version is out of date, please check to see if there is a new client available for download. + + + + + + Information - + Troubleshooting - + F.A.Q. - + + Your account has not been activated yet. +You need to provide the activation token received in the activation email + + + + failed to start. - + crashed. - + timed out. - + write error. - + read error. - + unknown error. @@ -3462,62 +3568,74 @@ Local version is %1, remote version is %2. MessagesSettingsPage - + Chat settings - + + Custom alert words + + + + Enable chat mentions - + + Enable mention completer + + + + In-game message macros - - Ignore unregistered users in main chat + + Ignore chat room messages sent by unregistered users - - Ignore chat room messages sent by unregistered users. + + Ignore private messages sent by unregistered users - - Ignore private messages sent by unregistered users. + + Enable desktop notifications for private messages - + + Separate words with a space, alphanumeric characters only + + + + + Invert text color - - Enable desktop notifications for private messages. - - - - + Enable desktop notification for mentions. - + + (Color is hexadecimal) - + Add message - + Message: @@ -3583,435 +3701,435 @@ Local version is %1, remote version is %2. Player - + &View library - + Move top cards to &graveyard... - + View &top cards of library... - + &View graveyard - + &View sideboard - + Player "%1" - - - - + + + + &Hand - + &Reveal hand to... - + Reveal r&andom card to... - + &Library - - - - + + + + &Graveyard - + &Sideboard - + Red - + Yellow - + Green - + View top cards of library - + Number of cards: - + &Draw card - + Reveal top cards of library - + Number of cards: (max. %1) - + &View exile - - - - + + + + &Exile - + Reveal t&op cards to... - + D&raw cards... - + Take &mulligan - + &Shuffle - + &Counters - + &Untap all permanents - + R&oll die... - + &Create token... - + C&reate another token - + S&ay - + &Move hand to... - - - - + + + + &Top of library - - - - + + + + &Bottom of library - + &Move graveyard to... - + &Move exile to... - + Reveal &library to... - + &Always reveal top card - + O&pen deck in deck editor - + &Undo last draw - + Play top card &face down - + Move top cards to &exile... - + Put top card on &bottom - + Put bottom card &in graveyard - + Cr&eate predefined token - + C&ard - + &All players - + &Play - + &Hide - + Play &Face Down - + &Tap - + &Untap - + Toggle &normal untapping - + &Flip - + &Peek at card face - + &Clone - + Attac&h to card... - + Unattac&h - + &Draw arrow... - + &Increase power - + &Decrease power - + I&ncrease toughness - + D&ecrease toughness - + In&crease power and toughness - + Dec&rease power and toughness - + Set &power and toughness... - + &Set annotation... - + &Add counter (%1) - + &Remove counter (%1) - + &Set counters (%1)... - + Draw cards - - - - + + + + Number: - + Move top cards to grave - + Move top cards to exile - + Roll die - + Number of sides: - + Set power/toughness - + Please enter the new PT: - + Set annotation - + Please enter the new annotation: - + Set counters - + Cr&eate related card @@ -4019,37 +4137,37 @@ Local version is %1, remote version is %2. QMenuBar - + Services - + Hide %1 - + Hide Others - + Show All - + Preferences... - + Quit %1 - + About %1 @@ -4057,7 +4175,7 @@ Local version is %1, remote version is %2. QObject - + Cockatrice replays (*.cor) @@ -4126,35 +4244,64 @@ Local version is %1, remote version is %2. RoomSelector - + Rooms - + Joi&n - + Room - + Description - + + Permissions + + + + Players - + Games + + + + Error + + + + + You do not have the proper permission to join this room. + + + + + Failed to join the room due to an unknown error. + + + + + SequenceEdit + + + Shortcut already in use + + SetsModel @@ -4205,37 +4352,37 @@ Local version is %1, remote version is %2. SoundSettingsPage - + Choose path - + Enable &sounds - + Path to sounds directory: - + Test system sound engine - + Sound settings - + Master volume requires QT5 - + Master volume @@ -4291,186 +4438,221 @@ Local version is %1, remote version is %2. TabDeckEditor - + &Print deck... - + &Close - + &Edit sets... - + Filters - + &Clear all filters - + Delete selected - + Deck &name: - + &Comments: - + Hash: - + &New deck - + &Load deck... - + &Save deck - + Save deck &as... - + Load deck from cl&ipboard... - + Save deck to clip&board - + &Analyze deck on deckstats.net - + Open custom image folder - + + Open custom sets folder + + + + Add card to &maindeck - + Add card to &sideboard - + &Deck Editor - + C&ard Database - + + Show/Hide card information + + + + + Show/Hide deck + + + + + Show/Hide filters + + + + + Reset layout + + + + + Card Info + + + + + Deck + + + + Welcome - + Hi! It seems like you're running this version of Cockatrice for the first time. All the sets in the card database have been enabled. Read more about changing the set order or disabling specific sets and consequent effects in the "Edit Sets" window. - + &Remove row Verwijder rij - + &Increment number Verhoog getal - + &Decrement number Verlaag getal - + Edit &tokens... Bewerk jetons. - + Deck: %1 Dek: %1 - + Are you sure? Ben je zeker? - + The decklist has been modified. Do you want to save the changes? De deklijst is gewijzigd. Wil je de wijzigingen opslaan? - + Load deck Laad dek - - - + + + Error Fout - + The deck could not be saved. Het dek kon niet opslagen worden. - - + + The deck could not be saved. Please check that the directory is writable and try again. Het dek kon niet opgeslagen worden. Kijk a.u.b. na of je schrijfrechten op de folder hebt, en probeer opnieuw. - + Save deck Deck opslaan @@ -4567,97 +4749,97 @@ Please enter a name: TabGame - + &Phases Fases - + &Game Spel - + Next &phase Volgende fase - + Next &turn Volgende beurt - + &Remove all local arrows Verwijder alle lokale pijlen - + Rotate View Cl&ockwise - + Rotate View Co&unterclockwise - + Game &information Spelinformatie - + &Concede Geef op - + &Leave game Verlaat spel - + C&lose replay Sluit opgeslagen spel - + &Say: Zeg: - + Concede Opgeven - + Are you sure you want to concede this game? Ben je zeker dat je wilt opgeven voor dit spel? - + Leave game Verlaat spel - + Are you sure you want to leave this game? Ben je zeker dat je dit spel wilt verlaten? - + You are flooding the game. Please wait a couple of seconds. Je bent het spel aan het overstelpen. Wacht enkele seconden aub. - + You have been kicked out of the game. Je bent uit het spel gegooid. - + REPLAY @@ -4763,47 +4945,47 @@ Please enter a name: TabRoom - + &Say: Zeg: - + Chat Gesprek - + &Room Kamer - + &Leave room Verlaat kamer - + &Clear chat Maak gespreksgeschiedenis leeg - + Chat Settings... Gespreksinstellingen... - + mentioned you. - + Click to view - + You are flooding the chat. Please wait a couple of seconds. Je bent de chat aan het overstelpen. Wacht enkele seconden a.u.b. @@ -4819,15 +5001,25 @@ Please enter a name: TabSupervisor - + Are you sure? Ben je zeker? - + There are still open games. Are you sure you want to quit? Er staan nog spellen open. Ben je zeker dat je wilt afsluiten? + + + Promotion + + + + + You have been promoted to moderator. Please log out and back in for changes to take effect. + + TabUserLists @@ -4850,55 +5042,97 @@ Please enter a name: UserContextMenu - + User &details Gebruikersdetails - + Private &chat Privaat gesprek - + Show this user's &games Toon spellen van deze gebruiker - + Add to &buddy list Voeg toe aan vriendenlijst - + Remove from &buddy list Verwijder uit vriendenlijst - + Add to &ignore list Voeg toe aan negatielijst - + Remove from &ignore list Verwijder uit negatielijst - + Kick from &game Gooi uit spel - + Ban from &server Verban van de &server - + + &Promote user to moderator + + + + + Dem&ote user from moderator + + + + %1's games %s's spellen + + + + Success + + + + + Successfully promoted user. + + + + + Successfully demoted user. + + + + + + Failed + + + + + Failed to promote user. + + + + + Failed to demote user. + + UserInfoBox @@ -5067,42 +5301,42 @@ Please enter a name: UserInterfaceSettingsPage - + General interface settings Algemene weergave-instellingen - + Enable notifications in taskbar Activeer meldingen in de taakbalk - + Notify in the taskbar for game events while you are spectating Meld spelgebeurtenissen in de taakbalk terwijl je toekijkt - + &Double-click cards to play them (instead of single-click) Dubbel-klik op kaarten om ze te spelen (in plaats van enkele klik) - + &Play all nonlands onto the stack (not the battlefield) by default Speel standaard alle niet-landen op de stapel (niet op het slagveld) - + Annotate card text on tokens - + Animation settings Animatie-instellingen - + &Tap/untap animation &Tap/Untap animatie @@ -5110,22 +5344,22 @@ Please enter a name: UserList - + Users connected to server: %1 - + Users in this room: %1 Gebruikers in de kamer: %1 - + Buddies online: %1 / %2 Vrienden on-line: %1 / %2 - + Ignored users online: %1 / %2 Genegeerde gebruikers on-line: %1 / %2 @@ -5184,7 +5418,7 @@ Please enter a name: - Disabled sets will still be used for loading images + Disabled sets will be used for loading images only if all the enabled sets failed @@ -5193,12 +5427,12 @@ Please enter a name: Bewerk sets - + Success Succesvol - + The sets database has been saved successfully. De sets databank is succesvol opgeslagen. @@ -5226,4 +5460,561 @@ Please enter a name: Stapelweergave + + shortcutsTab + + + Form + + + + + Main Window + + + + + Deck editor + + + + + Local gameplay + + + + + Watch replay + + + + + Connect + + + + + Register + + + + + Full screen + + + + + Settings + + + + + Check for card updates + + + + + Exit + + + + + Deck Editor + + + + + Analyze deck + + + + + Load deck (clipboard) + + + + + Clerar all filters + + + + + New deck + + + + + Clear one filter + + + + + Open custom folder + + + + + Close + + + + + Print deck + + + + + Edit sets + + + + + Delete card + + + + + Edit tokens + + + + + Reset layout + + + + + Add card + + + + + Save deck + + + + + Remove card + + + + + Save deck as + + + + + Load deck + + + + + Save deck (clipboard) + + + + + + Counters + + + + + Life + + + + + + + + + Set + + + + + + + + Add + + + + + + + + Remove + + + + + Red + + + + + Green + + + + + Yellow + + + + + Mainwindow / Deck editor + + + + + Power / toughness + + + + + Power and toughness + + + + + Add (+1/+1) + + + + + Remove (-1/-1) + + + + + Toughness + + + + + Remove (-0/-1) + + + + + Add (+0/+1) + + + + + Power + + + + + Remove (-1/-0) + + + + + Add (+1/+0) + + + + + Game Phases + + + + + Untap + + + + + Disconnect + + + + + Upkeep + + + + + + Draw + + + + + Main 1 + + + + + Start combat + + + + + Attack + + + + + Block + + + + + Damage + + + + + End combat + + + + + Main 2 + + + + + End + + + + + Next phase + + + + + Next turn + + + + + Player + + + + + Tap Card + + + + + Untap Card + + + + + Untap all + + + + + Toogle untap + + + + + Flip card + + + + + Peek card + + + + + Play card + + + + + Attach card + + + + + Unattach card + + + + + Clone card + + + + + Create token + + + + + Create another token + + + + + Set annotation + + + + + Phases / P/T / Player + + + + + Move card to + + + + + Bottom library + + + + + Top library + + + + + + Graveyard + + + + + + Exile + + + + + Hand + + + + + View + + + + + Library + + + + + Tops card of library + + + + + Sideboard + + + + + Close recent view + + + + + Pre-play + + + + + Load remote deck + + + + + Load local deck + + + + + Game play + + + + + Draw arrow + + + + + Leave game + + + + + Remove local arrows + + + + + Concede + + + + + Roll dice + + + + + Rotate view CW + + + + + Shuffle library + + + + + Rotate view CCW + + + + + Mulligan + + + + + Draw card + + + + + Draw cards + + + + + Undo draw + + + + + Always reveal top card + + + + + Draw / Move / View / Game play + + + \ No newline at end of file diff --git a/cockatrice/translations/cockatrice_pl.ts b/cockatrice/translations/cockatrice_pl.ts index 52066790..4cda9449 100644 --- a/cockatrice/translations/cockatrice_pl.ts +++ b/cockatrice/translations/cockatrice_pl.ts @@ -2,17 +2,17 @@ AbstractCounter - + &Set counter... U&staw licznik… - + Set counter Ustaw licznik - + New value for counter '%1': Nowa wartość dla licznika '%1': @@ -20,89 +20,60 @@ AppearanceSettingsPage - - Zone background pictures - Obrazki tła + + Theme settings + - - Hand background: - Tło dla ręki: + + Current theme: + - - Stack background: - Tło dla stosu: - - - - Table background: - Tło dla stołu: - - - - Player info background: - Tło dla pola informacji o graczu: - - - - Card back: - Rewers karty: - - - + Card rendering Renderowanie kart - + Display card names on cards having a picture Wyświetl nazwy kart na kartach z obrazkami - + Scale cards on mouse over Skaluj karty po najechaniu kursorem myszy - + Hand layout Układ ręki - + Display hand horizontally (wastes space) Wyświetl karty na ręce poziomo (marnuje miejsce) - + Enable left justification Wyrównuj karty do lewej strony pola - + Table grid layout Układ stołu - + Invert vertical coordinate Odwróć współrzędne pionowe - + Minimum player count for multi-column layout: Minimalna liczba graczy dla widoku wielokolumnowego - - - - - - - Choose path - Wybierz ścieżkę - BanDialog @@ -117,87 +88,110 @@ zbanuj adres &IP - + + ban client I&D + + + + Ban type Rodzaj bana - + &permanent ban ban &permanentny - + &temporary ban ban &tymczasowy - + &Days: &Dni: - + &Hours: &Godziny: - + &Minutes: &Minuty: - + Duration of the ban Czas trwania bana - + Please enter the reason for the ban. This is only saved for moderators and cannot be seen by the banned person. Podaj przyczynę bana. Informacja ta zachowywana jest dla moderatorów i nie jest widoczna dla zbanowanej osoby. - + Please enter the reason for the ban that will be visible to the banned person. Podaj przyczynę bana do wglądu dla banowanej osoby. - + &OK &OK - + &Cancel &Anuluj - + Ban user from server Zbanuj użytkownika z serwera - + + + + Error Błąd - - You have to select a name-based or IP-based ban, or both. - Musisz wybrać bana na nazwę, IP lub oba. + + You have to select a name-based, IP-based, clientId based, or some combination of the three to place a ban. + + + + + You must have a value in the name ban when selecting the name ban checkbox. + + + + + You must have a value in the ip ban when selecting the ip ban checkbox. + + + + + You must have a value in the clientid ban when selecting the clientid ban checkbox. + CardDatabase - + New sets found Znaleziono nowe dodatki - + %1 new set(s) have been found in the card database. Do you want to enable them? W bazie kart pojawiły się nowe dodatki (%1). Czy chcesz je włączyć? @@ -233,17 +227,17 @@ Informacja ta zachowywana jest dla moderatorów i nie jest widoczna dla zbanowan CardFrame - + Image Karta - + Description Opis - + Both Karta + opis @@ -299,27 +293,32 @@ Informacja ta zachowywana jest dla moderatorów i nie jest widoczna dla zbanowan Pokazuj pełne informacje - + Name: Nazwa: - + Mana cost: Koszt many: - + + Color(s): + + + + Card type: Typ karty: - + P / T: P / T: - + Loyalty: Lojalność: @@ -583,12 +582,12 @@ Informacja ta zachowywana jest dla moderatorów i nie jest widoczna dla zbanowan DeckEditorSettingsPage - + Nothing is here... yet Nic tu nie ma.... jeszcze! - + General Ogólne @@ -596,17 +595,17 @@ Informacja ta zachowywana jest dla moderatorów i nie jest widoczna dla zbanowan DeckListModel - + Number Ilość - + Card Karta - + Price Cena @@ -628,42 +627,42 @@ Informacja ta zachowywana jest dla moderatorów i nie jest widoczna dla zbanowan DeckViewContainer - + Load local deck - + Wczytaj talię lokalną - + Load deck from server - + Wczytaj talię z serwera - + Ready to s&tart Go&towy do gry - + S&ideboard unlocked Tal&ia poboczna otwarta - + S&ideboard locked Tal&ia poboczna zamknięta - + Load deck Wczytaj talię - + Error Błąd - + The selected file could not be loaded. Wybrany plik nie mógł zostać wczytany. @@ -709,37 +708,52 @@ Informacja ta zachowywana jest dla moderatorów i nie jest widoczna dla zbanowan DlgConnect - + + Previous Host + + + + + New Host + + + + &Host: &Host: - + + Enter host name + + + + &Port: &Port: - + Player &name: &Nazwa gracza: - + P&assword: H&asło: - + &Save password Zapi&sz hasło - + A&uto connect at start A&utomatycznie połącz przy uruchomieniu - + Connect to server Połącz z serwerem @@ -747,82 +761,92 @@ Informacja ta zachowywana jest dla moderatorów i nie jest widoczna dla zbanowan DlgCreateGame - + &Description: &Opis: - + &Password: &Hasło: - + P&layers: &Liczba graczy: - + + Re&member settings + Zapa&miętaj ustawienia + + + Game type Format - + Only &buddies can join Tylko dla zn&ajomych - + Only &registered users can join Tylko dla &zarejestrowanych użytkowników - + Joining restrictions Ograniczenia dostępu - + &Spectators can watch &Widzowie dozwoleni - + Spectators &need a password to watch Widzowie muszą z&nać hasło - + Spectators can see &hands Widzowie mogą oglądać &ręce - + Spectators can &chat Widzowie mogą korzystać z &czatu - + Spectators Widzowie - + + &Clear + + + + Create game Stwórz grę - + Game information Informacje o grze - + Error Błąd - + Server error. Błąd serwera. @@ -963,32 +987,32 @@ To remove your current avatar, confirm without choosing a new image. DlgEditPassword - + Old password: - + New password: - + Confirm new password: - + Change password - + Error - + The new passwords don't match. @@ -1092,47 +1116,47 @@ Upewnij się, że 'Dodatek zawierający tokeny' jest włączony w okni DlgEditUser - + Email: - + Pronouns: - + Neutral - + Masculine - + Feminine - + Country: - + Undefined - + Real name: - + Edit user profile @@ -1140,47 +1164,47 @@ Upewnij się, że 'Dodatek zawierający tokeny' jest włączony w okni DlgFilterGames - + Show &unavailable games Pokaż nie&dostępne gry - + Show &password protected games &Pokaż gry wymagające hasła - + Game &description: &Opis gry - + &Creator name: Założy&ciel gry - + &Game types Typy roz&grywki - + at &least: co &najmniej - + at &most: co naj&wyżej - + Maximum player count Maksymalna liczba graczy - + Filter games Filtruj gry @@ -1188,7 +1212,7 @@ Upewnij się, że 'Dodatek zawierający tokeny' jest włączony w okni DlgLoadDeckFromClipboard - + &Refresh &Odśwież @@ -1198,14 +1222,14 @@ Upewnij się, że 'Dodatek zawierający tokeny' jest włączony w okni Wczytaj talię ze schowka - - + + Error Błąd - - + + Invalid deck list. Nieprawidłowa lista talii. @@ -1221,67 +1245,93 @@ Upewnij się, że 'Dodatek zawierający tokeny' jest włączony w okni DlgRegister - + &Host: &Host: - + &Port: &Port: - + Player &name: &Nazwa gracza: - + P&assword: H&asło: - + + Password (again): + + + + Email: Email: - + + Email (again): + + + + Pronouns: - + Neutral - + Masculine - + Feminine - + Undefined Nie wiadomo - + + + Registration Warning + + + + + Your passwords do not match, please try again. + + + + + Your email addresses do not match, please try again. + + + + Country: Kraj: - + Real name: Prawdziwe imię: - + Register to server Zarejestruj się @@ -1289,19 +1339,19 @@ Upewnij się, że 'Dodatek zawierający tokeny' jest włączony w okni DlgSettings - - - + + + Error Błąd - + Unknown Error loading card database W trakcie wczytywania bazy kart wystąpił nieznany błąd - + Your card database is invalid. Cockatrice may not function correctly with an invalid database @@ -1318,7 +1368,7 @@ Może istnieć potrzeba uruchomienia Oracle w celu uaktualnienia bazy kart. Czy chcesz zmienić ustawienia położenia bazy kart? - + Your card database version is too old. This can cause problems loading card information or images @@ -1335,7 +1385,7 @@ Zwykle można temu zaradzić poprzez uruchomienie narzędzia Oracle i uaktualnie Czy chcesz zmienić ustawienia położenia bazy kart? - + File Error loading your card database. Would you like to change your database location setting? @@ -1344,7 +1394,7 @@ Would you like to change your database location setting? Czy chcesz ustawić nową lokalizację bazy kart? - + Your card database was loaded but contains no cards. Would you like to change your database location setting? @@ -1353,7 +1403,7 @@ Would you like to change your database location setting? Czy chcesz ustawić nową lokalizację bazy kart? - + Your card database did not finish loading Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues with your cards.xml attached @@ -1362,7 +1412,7 @@ Would you like to change your database location setting? - + Unknown card database load status Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues @@ -1371,50 +1421,55 @@ Would you like to change your database location setting? - + The path to your deck directory is invalid. Would you like to go back and set the correct path? Ścieżka dostępu do twojego katalogu z taliami jest nieprawidłowa. Czy chcesz wrócić i ustawić poprawną ścieżkę? - + The path to your card pictures directory is invalid. Would you like to go back and set the correct path? Ścieżka dostępu do twojego katalogu z obrazkami jest nieprawidłowa. Czy chcesz wrócić i ustawić poprawną ścieżkę? - + Settings Ustawienia - + General Ogólne - + Appearance Wygląd - + User Interface Interfejs - + Deck Editor Edytor Talii - + Chat Czat - + Sound Dźwięk + + + Shortcuts + + GameSelector @@ -1427,7 +1482,7 @@ Would you like to change your database location setting? - + Error Błąd @@ -1472,47 +1527,47 @@ Would you like to change your database location setting? Twórca tej rozgrywki cię ignoruje. - + Join game Dołącz do gry - + Password: Hasło: - + Please join the respective room first. Proszę najpierw dołączyć do odpowiedniego pokoju. - + Games Gry + + + &Filter games + + - Filter games + C&lear filter - Clear filter + C&reate - - Create + + &Join - - Join - - - - + J&oin as spectator D&ołącz jako widz @@ -1629,107 +1684,112 @@ Would you like to change your database location setting? GeneralSettingsPage - + Reset/Clear Downloaded Pictures Wymaż/usuń pobrane obrazki - - - - - + + + + + Choose path Wybierz ścieżkę - + Success Powodzenie - + Downloaded card pictures have been reset. Pobrane obrazki zostały wymazane. - + Error Błąd - + One or more downloaded card pictures could not be cleared. Co najmniej jeden z pobranych obrazków nie mógł zostać wymazany. - + Personal settings Ustawienia osobiste - + Language: Język: - + Download card pictures on the fly Ściągaj obrazki na bieżąco - + Download card pictures from a custom URL Pobieraj obrazki kart z zewnętrznego URL - + Custom Card Download URL: Adres zewnętrznego URL z obrazkami kart: - + Linking FAQ - + + Notify when new client features are available + + + + Paths Ścieżki - + Decks directory: Katalog z taliami: - + Replays directory: Katalog z powtórkami: - + Pictures directory: Katalog z obrazkami: - + Card database: Baza kart: - + Token database: Baza tokenów: - + Picture cache size: Rozmiar pamięci podręcznej dla obrazków: - - + + English Polski (Polish) @@ -1737,49 +1797,49 @@ Would you like to change your database location setting? MainWindow - + There are too many concurrent connections from your address. Trwa zbyt wiele równoległych połączeń z twojego adresu. - + Scheduled server shutdown. Planowe wyłączenie serwera. - + Banned by moderator Zbanowany przez moderatora. - + Expected end time: %1 Oczekiwany czas zakończenia: %1 - + This ban lasts indefinitely. Ten ban jest bezterminowy. - + Connection closed Połączenie zakończone - + The server has terminated your connection. Reason: %1 Serwer zakończył twoje połączenie. Przyczyna: %1 - + Scheduled server shutdown Planowe wyłączenie serwera - + The server is going to be restarted in %n minute(s). All running games will be lost. Reason for shutdown: %1 @@ -1792,452 +1852,498 @@ Wszystkie trwające gry zostaną utracone. Przyczyna zamknięcia: %1 - + Number of players Liczba graczy - + Please enter the number of players. Wprowadź liczbę graczy. - - + + Player %1 Gracz %1 - + Load replay Wczytaj powtórkę - + About Cockatrice O Cockatrice - + Version %1 Wersja %1 - + Translators: Tłumacze: - + Project Manager: Menadżer projektu: - - + + The server has reached its maximum user capacity, please check back later. + + + + + Invalid username. - - + + You have been logged out due to logging in at another location. + + + + + Success - + Registration accepted. Will now login. - + Account activation accepted. Will now login. - + Past Project Managers: Poprzedni menadżerowie projektu: - + Developers: Twórcy: - + Our Developers Lista współpracowników - + Help Develop! Dołącz do grona twórców! - + Recognition Page Lista tłumaczy - + Help Translate! Pomóż w tłumaczeniu! - + Support: Wsparcie: - + Report an Issue Zgłoś problem - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + Error Błąd - + Server timeout Upłynął limit czasu odpowiedzi serwera - + + Failed Login + + + + + Your client does not support features that the server requires, please update your client and try again. + + + + Incorrect username or password. Please check your authentication information and try again. Nieprawidłowa nazwa użytkownika lub hasło. Sprawdź swoje dane weryfikacyjne i spróbuj ponownie. - + There is already an active session using this user name. Please close that session first and re-login. Istnieje już aktywna sesja dla tej nazwy użytkownika. Zakończ tamtą sesję i zaloguj się ponownie. - - + + You are banned until %1. Twój ban trwa do: %1. - - + + You are banned indefinitely. Zostałeś zbanowany bezterminowo. - + This server requires user registration. Do you want to register now? - + + This server requires client ID's. Your client is either failing to generate an ID or you are running a modified client. +Please close and reopen your client to try again. + + + + + An internal error has occurred, please try closing and reopening your client and try again. If the error persists try updating your client to the most recent build and if need be contact your software provider. + + + + Account activation - - Your account has not been activated yet. - You need to provide the activation token received in the activation email - - - - - + Unknown login error: %1 Nieznany błąd logowania: %1 - + + + +This usually means that your client version is out of date, and the server sent a reply your client doesn't understand. + + + + Your username must respect these rules: - + is %1 - %2 characters long - + can %1 contain lowercase characters - - - - + + + + NOT - + can %1 contain uppercase characters - + can %1 contain numeric characters - + can contain the following punctuation: %1 - + first character can %1 be a punctuation mark - + You may only use A-Z, a-z, 0-9, _, ., and - in your username. - - - - - + + + + + Registration denied - + Registration is currently disabled on this server - + There is already an existing account with the same user name. - + It's mandatory to specify a valid email address when registering. - + Too many registration attempts from your IP address. - + Password too short. - + Registration failed for a technical problem on the server. - + + Unknown registration error: %1 + + + + Account activation failed - + Socket error: %1 Błąd gniazda: %1 - + 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. Próbujesz połączyć się z nieaktualnym serwerem. Zainstaluj starszą wersję Cockatrice lub wybierz odpowiedni serwer. Lokalna wersja to %1, wersja zdalna to %2. - + Your Cockatrice client is obsolete. Please update your Cockatrice version. Local version is %1, remote version is %2. Twój klient Cockatrice jest nieaktualny. Uaktualnij Cockatrice do nowszej wersji. Lokalna wersja to %1, wersja zdalna to %2. - + Connecting to %1... %1 — łączenie… - + Registering to %1 as %2... - + Disconnected Rozłączony - + Connected, logging in at %1 Połączenie ustanowione; logowanie jako %1 - - Logged in as %1 at %2 - Zalogowano jako %1 na %2 - - - + &Connect... &Połącz… - + &Disconnect &Rozłącz - + Start &local game... Rozpocznij &lokalną grę… - + &Watch replay... &Obejrzyj powtórkę… - + &Deck editor &Edytor talii - + &Full screen Pełny ekra&n - + &Register to server... - + &Settings... &Ustawienia… - - + + &Exit &Wyjdź - + A&ctions Ak&cje - + &Cockatrice &Cockatrice - + &About Cockatrice &O Cockatrice - + &Help Po&moc - + Check for card updates... - + A card database update is already running. - + Unable to run the card database updater: - + The card database updater exited with an error: %1 - + Update completed successfully. Cockatrice will now reload the card database. - - + + Your client appears to be missing features that the server supports. +This usually means that your client version is out of date, please check to see if there is a new client available for download. + + + + + + Information Informacja - + Troubleshooting - + F.A.Q. - + + Your account has not been activated yet. +You need to provide the activation token received in the activation email + + + + failed to start. - + crashed. - + timed out. - + write error. błąd zapisu. - + read error. błąd odczytu. - + unknown error. nieznany błąd. @@ -3477,62 +3583,74 @@ Lokalna wersja to %1, wersja zdalna to %2. MessagesSettingsPage - + Chat settings Ustawienia czatu - + + Custom alert words + + + + Enable chat mentions Włącz wywołania na czacie - + + Enable mention completer + + + + In-game message macros Makra wiadomości w trakcie gry - - Ignore unregistered users in main chat - Ignoruj niezarejestrowanych użytkowników na czacie głównym. + + Ignore chat room messages sent by unregistered users + - - Ignore chat room messages sent by unregistered users. - Ignoruj wiadomości na czacie od niezarejestrowanych użytkowników. + + Ignore private messages sent by unregistered users + - - Ignore private messages sent by unregistered users. - Ignoruj prywatne wiadomości od niezarejestrowanych użytkowników. + + Enable desktop notifications for private messages + - + + Separate words with a space, alphanumeric characters only + + + + + Invert text color Odwróć kolor tekstu - - Enable desktop notifications for private messages. - - - - + Enable desktop notification for mentions. - + + (Color is hexadecimal) (Kolor w kodzie heksadecymalnym) - + Add message Dodaj wiadomość - + Message: Wiadomość: @@ -3598,435 +3716,435 @@ Lokalna wersja to %1, wersja zdalna to %2. Player - + &View library Przegląda&j bibliotekę - + Move top cards to &graveyard... Przemieść kart&y z wierzchu na cmentarz… - + View &top cards of library... Przeglądaj karty z &wierzchu biblioteki… - + &View graveyard Przegląda&j cmentarz - + &View sideboard Przegląda&j talię poboczną - + Player "%1" Gracz "%1" - - - - + + + + &Hand Rę&ka - + &Reveal hand to... Pokaż &rękę innym… - + Reveal r&andom card to... Pok&aż losową kartę innym… - + &Library &Biblioteka - - - - + + + + &Graveyard C&mentarz - + &Sideboard Ta&lia poboczna - + Red Czerwony - + Yellow Żółty - + Green Zielony - + View top cards of library Przeglądaj karty z wierzchu biblioteki - + Number of cards: Liczba kart: - + &Draw card &Dobierz kartę - + Reveal top cards of library - + Number of cards: (max. %1) - + &View exile Przeglądaj strefę &wygnania - - - - + + + + &Exile Str&efa wygnania - + Reveal t&op cards to... - + D&raw cards... Dobie&rz karty… - + Take &mulligan Weź &mulligan - + &Shuffle Przeta&suj - + &Counters Li&czniki - + &Untap all permanents Odtap&uj wszystkie permanenty - + R&oll die... Rzuć k&ostką… - + &Create token... Ut&wórz token… - + C&reate another token Utwó&rz kolejny token - + S&ay P&owiedz - + &Move hand to... Prze&mieść rękę na… - - - - + + + + &Top of library Wierzch biblio&teki - - - - + + + + &Bottom of library Dno &biblioteki - + &Move graveyard to... Prze&mieść cmentarz na… - + &Move exile to... Przen&ieś strefę wygnania na… - + Reveal &library to... Pokaż bib&liotekę innym… - + &Always reveal top card Z&awsze graj z odwróconą kartą z wierzchu - + O&pen deck in deck editor &Otwórz talię w edytorze talii - + &Undo last draw Co&fnij ostatnie dobranie karty - + Play top card &face down - + Move top cards to &exile... Przemi&eść karty z wierzchu do strefy wygnania… - + Put top card on &bottom Połóż kartę z wierzc&hu na dnie - + Put bottom card &in graveyard Przen&ieś kartę z dna na na cmentarz - + Cr&eate predefined token Utwórz zd&efiniowany token - + C&ard K&arta - + &All players Wszyscy gr&acze - + &Play &Zagraj - + &Hide Sc&howaj - + Play &Face Down Zagraj k&oszulką do góry - + &Tap &Tapnij - + &Untap Odtap&uj - + Toggle &normal untapping Przełącz &normalne odtapowywanie - + &Flip O&dwróć - + &Peek at card face S&pójrz na awers karty - + &Clone Klo&nuj - + Attac&h to card... Przyłącz do kart&y… - + Unattac&h Odłą&cz - + &Draw arrow... Narysuj wskaźni&k - + &Increase power Zw&iększenie siły - + &Decrease power Re&dukcja siły - + I&ncrease toughness Zwiększe&nie wytrzymałości - + D&ecrease toughness R&edukcja wytrzymałości - + In&crease power and toughness Zwięk&sz siłę i wytrzymałość - + Dec&rease power and toughness Red&ukuj siłę i wytrzymałość - + Set &power and toughness... Ustaw siłę i w&ytrzymałość - + &Set annotation... U&staw adnotację… - + &Add counter (%1) Dod&aj znacznik (%1) - + &Remove counter (%1) Zde&jmij znacznik (%1) - + &Set counters (%1)... U&staw znaczniki (%1)… - + Draw cards Dobierz karty - - - - + + + + Number: Liczba: - + Move top cards to grave Przenieś karty z wierzchu na cmentarz - + Move top cards to exile Przenieś karty z wierzchu do strefy wygnania - + Roll die Rzuć kostką - + Number of sides: Liczba ścian: - + Set power/toughness Ustaw siłę/wytrzymałość - + Please enter the new PT: Podaj nową watość SW: - + Set annotation Ustaw adnotację - + Please enter the new annotation: Podaj treść nowej adnotacji: - + Set counters Ustaw znaczniki - + Cr&eate related card @@ -4034,37 +4152,37 @@ Lokalna wersja to %1, wersja zdalna to %2. QMenuBar - + Services Usługi - + Hide %1 Ukryj %1 - + Hide Others Ukryj pozostałe - + Show All Pokaż wszystkie - + Preferences... Preferencje… - + Quit %1 Zakończ %1 - + About %1 O programie %1 @@ -4072,7 +4190,7 @@ Lokalna wersja to %1, wersja zdalna to %2. QObject - + Cockatrice replays (*.cor) Powtórki Cockatrice (*.cor) @@ -4141,35 +4259,64 @@ Lokalna wersja to %1, wersja zdalna to %2. RoomSelector - + Rooms Pokoje - + Joi&n &Dołącz - + Room Pokój - + Description Opis - + + Permissions + + + + Players Gracze - + Games Gry + + + + Error + + + + + You do not have the proper permission to join this room. + + + + + Failed to join the room due to an unknown error. + + + + + SequenceEdit + + + Shortcut already in use + + SetsModel @@ -4220,37 +4367,37 @@ Lokalna wersja to %1, wersja zdalna to %2. SoundSettingsPage - + Choose path - + Enable &sounds - + Path to sounds directory: - + Test system sound engine - + Sound settings - + Master volume requires QT5 - + Master volume @@ -4306,117 +4453,152 @@ Lokalna wersja to %1, wersja zdalna to %2. TabDeckEditor - + &Print deck... &Drukuj talię - + &Close &Zakończ - + &Edit sets... &Edytuj listę dodatków - + Filters - + &Clear all filters - + Delete selected - + Deck &name: &Nazwa talii: - + &Comments: &Komentarze: - + Hash: Hash: - + &New deck &Nowa talia - + &Load deck... &Wczytaj ta&lię… - + &Save deck Zapi&sz talię - + Save deck &as... Zaisz talię j&ako… - + Load deck from cl&ipboard... Wczytaj tal&ię ze schowka… - + Save deck to clip&board Zapisz talię do schow&ka - + &Analyze deck on deckstats.net &Analizuj talię na deckstats.net - + Open custom image folder - + + Open custom sets folder + + + + Add card to &maindeck Dodaj kartę do talii &głównej - + Add card to &sideboard Dodaj kartę do talii po&bocznej - + &Deck Editor E&dytor talii - + C&ard Database B&aza kart - + + Show/Hide card information + + + + + Show/Hide deck + + + + + Show/Hide filters + + + + + Reset layout + + + + + Card Info + + + + + Deck + + + + Welcome Witaj - + Hi! It seems like you're running this version of Cockatrice for the first time. All the sets in the card database have been enabled. Read more about changing the set order or disabling specific sets and consequent effects in the "Edit Sets" window. @@ -4425,69 +4607,69 @@ Wszystkie dodatki w bazie kart zostały włączone. Aby dowiedzieć się więcej na temat zmiany kolejności lub wyłączania poszczególnych dodatków przeczytaj informacje znajdujące się w oknie 'Edytuj listę dodatków'. - + &Remove row Usuń wie&rsz - + &Increment number Zwiększ l&iczbę - + &Decrement number Zmniejsz &liczbę - + Edit &tokens... Edytuj &tokeny… - + Deck: %1 Talia: %1 - + Are you sure? Czy na pewno? - + The decklist has been modified. Do you want to save the changes? Talia została zmodyfikowana. Czy chcesz zachować zmiany? - + Load deck Wczytaj talię - - - + + + Error Błąd - + The deck could not be saved. Talia nie mogła zostać zapisana. - - + + The deck could not be saved. Please check that the directory is writable and try again. Zapisanie talii nie mogło zostać ukończone. Sprawdź, czy włączone są uprawnienia do zapisu w katalogu docelowym i spróbuj ponownie. - + Save deck Zapisz talię @@ -4585,97 +4767,97 @@ Wprowadź nazwę: TabGame - + &Phases &Fazy - + &Game &Gra - + Next &phase Następna &faza - + Next &turn Następna &tura - + &Remove all local arrows Usuń wszystkie &wskaźniki - + Rotate View Cl&ockwise - + Rotate View Co&unterclockwise - + Game &information &Informacje o grze - + &Concede &Poddaj grę - + &Leave game &Opuść grę - + C&lose replay &Zamknij powtórkę - + &Say: &Powiedz: - + Concede Poddaj grę - + Are you sure you want to concede this game? Czy na pewno chcesz poddać tę grę? - + Leave game Opuść grę - + Are you sure you want to leave this game? Czy na pewno chcesz zakończyć tę rozgrywkę? - + You are flooding the game. Please wait a couple of seconds. Spamujesz. Poczekaj chwilę. - + You have been kicked out of the game. Wyrzucono cię z gry. - + REPLAY @@ -4781,47 +4963,47 @@ Wprowadź nazwę: TabRoom - + &Say: &Powiedz: - + Chat Czat - + &Room P&okój - + &Leave room Op&uść pokój - + &Clear chat Wyczyść &czat - + Chat Settings... Ustawienia czatu… - + mentioned you. - + Click to view - + You are flooding the chat. Please wait a couple of seconds. Spamujesz. Poczekaj chwilę. @@ -4837,15 +5019,25 @@ Wprowadź nazwę: TabSupervisor - + Are you sure? - + There are still open games. Are you sure you want to quit? + + + Promotion + + + + + You have been promoted to moderator. Please log out and back in for changes to take effect. + + TabUserLists @@ -4868,55 +5060,97 @@ Wprowadź nazwę: UserContextMenu - + User &details &Dane użytkownika - + Private &chat - + Show this user's &games Wyświetl &gry użytkownika - + Add to &buddy list &Dodaj do listy znajomych - + Remove from &buddy list &Usuń z listy znajomych - + Add to &ignore list Dodaj do listy &ignorowanych - + Remove from &ignore list Usuń z listy &ignorowanych - + Kick from &game Wyrzuć z &gry - + Ban from &server Zbanuj z &serwera - + + &Promote user to moderator + + + + + Dem&ote user from moderator + + + + %1's games Gry gracza %1 + + + + Success + + + + + Successfully promoted user. + + + + + Successfully demoted user. + + + + + + Failed + + + + + Failed to promote user. + + + + + Failed to demote user. + + UserInfoBox @@ -5085,42 +5319,42 @@ Wprowadź nazwę: UserInterfaceSettingsPage - + General interface settings Ogólne ustawienia interfejsu - + Enable notifications in taskbar Włącz &powiadomienia na pasku zadań - + Notify in the taskbar for game events while you are spectating Powiadomienia na pasku zadań dla gier, które &obserwujesz - + &Double-click cards to play them (instead of single-click) Zagrywaj karty po&dwójnym kliknięciem (zamiast pojedynczym) - + &Play all nonlands onto the stack (not the battlefield) by default Karty nie będące lądami zagrywaj domyślnie na stos (zamiast na &pole bitwy) - + Annotate card text on tokens - + Animation settings Ustawienia animacji - + &Tap/untap animation Animacja &tapowania/odtapowania @@ -5128,22 +5362,22 @@ Wprowadź nazwę: UserList - + Users connected to server: %1 - + Users in this room: %1 Użytkownicy w tym pokoju: %1 - + Buddies online: %1 / %2 Znajomi online: %1 / %2 - + Ignored users online: %1 / %2 Ignorowani użytkownicy online: %1 / %2 @@ -5202,7 +5436,7 @@ Wprowadź nazwę: - Disabled sets will still be used for loading images + Disabled sets will be used for loading images only if all the enabled sets failed @@ -5211,12 +5445,12 @@ Wprowadź nazwę: Edytuj listę dodatków - + Success Powodzenie - + The sets database has been saved successfully. Zapisywanie bazy dodatków zakończone powodzeniem. @@ -5244,4 +5478,561 @@ Wprowadź nazwę: widok sterty + + shortcutsTab + + + Form + + + + + Main Window + + + + + Deck editor + + + + + Local gameplay + + + + + Watch replay + + + + + Connect + + + + + Register + + + + + Full screen + + + + + Settings + + + + + Check for card updates + + + + + Exit + + + + + Deck Editor + + + + + Analyze deck + + + + + Load deck (clipboard) + Wczytaj talię (ze schowka) + + + + Clerar all filters + + + + + New deck + + + + + Clear one filter + + + + + Open custom folder + + + + + Close + + + + + Print deck + + + + + Edit sets + + + + + Delete card + + + + + Edit tokens + + + + + Reset layout + + + + + Add card + + + + + Save deck + + + + + Remove card + + + + + Save deck as + + + + + Load deck + Wczytaj talię + + + + Save deck (clipboard) + + + + + + Counters + + + + + Life + + + + + + + + + Set + + + + + + + + Add + + + + + + + + Remove + + + + + Red + + + + + Green + + + + + Yellow + + + + + Mainwindow / Deck editor + + + + + Power / toughness + + + + + Power and toughness + + + + + Add (+1/+1) + + + + + Remove (-1/-1) + + + + + Toughness + + + + + Remove (-0/-1) + + + + + Add (+0/+1) + + + + + Power + + + + + Remove (-1/-0) + + + + + Add (+1/+0) + + + + + Game Phases + + + + + Untap + + + + + Disconnect + + + + + Upkeep + + + + + + Draw + + + + + Main 1 + + + + + Start combat + + + + + Attack + + + + + Block + + + + + Damage + + + + + End combat + + + + + Main 2 + + + + + End + + + + + Next phase + + + + + Next turn + + + + + Player + + + + + Tap Card + + + + + Untap Card + + + + + Untap all + + + + + Toogle untap + + + + + Flip card + + + + + Peek card + + + + + Play card + + + + + Attach card + + + + + Unattach card + + + + + Clone card + + + + + Create token + + + + + Create another token + + + + + Set annotation + + + + + Phases / P/T / Player + + + + + Move card to + + + + + Bottom library + + + + + Top library + + + + + + Graveyard + + + + + + Exile + + + + + Hand + + + + + View + + + + + Library + + + + + Tops card of library + + + + + Sideboard + + + + + Close recent view + + + + + Pre-play + + + + + Load remote deck + + + + + Load local deck + Wczytaj talię lokalną + + + + Game play + + + + + Draw arrow + + + + + Leave game + + + + + Remove local arrows + + + + + Concede + + + + + Roll dice + + + + + Rotate view CW + + + + + Shuffle library + + + + + Rotate view CCW + + + + + Mulligan + + + + + Draw card + + + + + Draw cards + + + + + Undo draw + + + + + Always reveal top card + + + + + Draw / Move / View / Game play + + + \ No newline at end of file diff --git a/cockatrice/translations/cockatrice_pt.ts b/cockatrice/translations/cockatrice_pt.ts index 3bf7f5a6..6b161558 100644 --- a/cockatrice/translations/cockatrice_pt.ts +++ b/cockatrice/translations/cockatrice_pt.ts @@ -2,17 +2,17 @@ AbstractCounter - + &Set counter... Definir &marcador... - + Set counter Definir marcador - + New value for counter '%1': Novo valor para o marcador '%1': @@ -20,89 +20,60 @@ AppearanceSettingsPage - - Zone background pictures - Zona das imagens de fundo - - - - Hand background: - Imagem de fundo da Mão: - - - - Stack background: - Imagem de fundo da Pilha: - - - - Table background: - Imagem de fundo da Mesa: - - - - Player info background: - Imagem de fundo da informação do jogador: - - - - Card back: + + Theme settings - + + Current theme: + + + + Card rendering Rendering da carta - + Display card names on cards having a picture Mostrar o nome em cartas com imagem - + Scale cards on mouse over - + Hand layout Disposição da Mão - + Display hand horizontally (wastes space) Mostrar mão horizontalmente (desperdiça espaço) - + Enable left justification - + Table grid layout Esquema da mesa - + Invert vertical coordinate Inverter coordenada vertical - + Minimum player count for multi-column layout: Número mínimo de kogadores para layout com múltiplas colunas: - - - - - - - Choose path - Escolher directório - BanDialog @@ -117,89 +88,112 @@ Banir endereço de &IP - + + ban client I&D + + + + Ban type Tipo de banimento - + &permanent ban Banimento &permanente - + &temporary ban Banimento &temporário - + &Days: &Dias: - + &Hours: &Horas: - + &Minutes: &Minutos: - + Duration of the ban Duração do banimento - + Please enter the reason for the ban. This is only saved for moderators and cannot be seen by the banned person. Por favor introduza o motivo do banimento. Isto apenas é guardado para os moderadores e não é visível para a pessoa banida. - + Please enter the reason for the ban that will be visible to the banned person. Por favor introduza o motivo do banimento que será visível à pessoa banida. - + &OK &OK - + &Cancel &Cancelar - + Ban user from server Banir utilizador do servidor - + + + + Error Erro - - You have to select a name-based or IP-based ban, or both. - Tem de seleccionar um banimento baseado no nome, no IP ou ambos. + + You have to select a name-based, IP-based, clientId based, or some combination of the three to place a ban. + + + + + You must have a value in the name ban when selecting the name ban checkbox. + + + + + You must have a value in the ip ban when selecting the ip ban checkbox. + + + + + You must have a value in the clientid ban when selecting the clientid ban checkbox. + CardDatabase - + New sets found - + Há novas expansões - + %1 new set(s) have been found in the card database. Do you want to enable them? - + %1 novas expansões estão disponíveis na base de dados. Quer activá-las? @@ -233,17 +227,17 @@ Isto apenas é guardado para os moderadores e não é visível para a pessoa ban CardFrame - + Image - + Description - + Descrição - + Both @@ -268,7 +262,7 @@ Isto apenas é guardado para os moderadores e não é visível para a pessoa ban Card type: - + Tipo de carta: @@ -299,27 +293,32 @@ Isto apenas é guardado para os moderadores e não é visível para a pessoa ban Mostrar informação completa - + Name: Nome: - + Mana cost: Custo de Mana: - + + Color(s): + + + + Card type: Tipo de carta: - + P / T: P / R: - + Loyalty: Lealdade: @@ -583,12 +582,12 @@ Isto apenas é guardado para os moderadores e não é visível para a pessoa ban DeckEditorSettingsPage - + Nothing is here... yet - + General Geral @@ -596,17 +595,17 @@ Isto apenas é guardado para os moderadores e não é visível para a pessoa ban DeckListModel - + Number Número - + Card Carta - + Price Preço @@ -628,42 +627,42 @@ Isto apenas é guardado para os moderadores e não é visível para a pessoa ban DeckViewContainer - + Load local deck - + Carregar deck local - + Load deck from server - + Carregar deck do servidor - + Ready to s&tart &Pronto para começar - + S&ideboard unlocked S&ideboard desbloqueado - + S&ideboard locked S&ideboard bloqueado - + Load deck Carregar deck - + Error Erro - + The selected file could not be loaded. O ficheiro seleccionado não pôde ser carregado. @@ -709,37 +708,52 @@ Isto apenas é guardado para os moderadores e não é visível para a pessoa ban DlgConnect - + + Previous Host + + + + + New Host + + + + &Host: &Servidor: - + + Enter host name + + + + &Port: &Porta: - + Player &name: &Nome do jogador: - + P&assword: P&assword: - + &Save password &Guardar password - + A&uto connect at start Conectar a&utomaticamente no arranque - + Connect to server Ligar ao servidor @@ -747,82 +761,92 @@ Isto apenas é guardado para os moderadores e não é visível para a pessoa ban DlgCreateGame - + &Description: &Descrição: - + &Password: &Password: - + P&layers: &Jogadores: - + + Re&member settings + + + + Game type Tipo de jogo - + Only &buddies can join Apenas &amigos podem entrar - + Only &registered users can join Apenas utilizadores &registados podem entrar - + Joining restrictions Restrições para ligar - + &Spectators can watch E&spectadores podem ver - + Spectators &need a password to watch Espectadores &necessitam de palavra-passe - + Spectators can see &hands &Espectadores podem ver as mãos - + Spectators can &chat Espectadores podem c&onversar - + Spectators Espectadores - + + &Clear + + + + Create game Criar jogo - + Game information Informação do jogo - + Error Erro - + Server error. Erro do servidor. @@ -963,32 +987,32 @@ To remove your current avatar, confirm without choosing a new image. DlgEditPassword - + Old password: - + New password: - + Confirm new password: - + Change password - + Error - + Erro - + The new passwords don't match. @@ -1091,47 +1115,47 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgEditUser - + Email: - + Pronouns: - + Neutral - + Masculine - + Feminine - + Country: - + Undefined - + Real name: - + Nome real: - + Edit user profile @@ -1139,47 +1163,47 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgFilterGames - + Show &unavailable games Mostrar jogos &indisponíveis - + Show &password protected games Mostrar jogos protegidos por &palavra-passe - + Game &description: &Descrição de jogo: - + &Creator name: &Nome do criador: - + &Game types &Tipo de jogo - + at &least: no &mínimo: - + at &most: no m&áximo: - + Maximum player count Limite máximo de jogadores - + Filter games Filtrar jogos @@ -1187,7 +1211,7 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgLoadDeckFromClipboard - + &Refresh &Refrescar @@ -1197,14 +1221,14 @@ Make sure to enable the 'token set' in the 'Edit sets...' di Carregar deck da memória - - + + Error Erro - - + + Invalid deck list. Lista de deck inválida. @@ -1220,67 +1244,93 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgRegister - + &Host: - + &Servidor: - + &Port: - + &Porta: - + Player &name: - + &Nome do jogador: - + P&assword: + P&assword: + + + + Password (again): - + Email: - + + Email (again): + + + + Pronouns: - + Neutral - + Masculine - + Feminine - + Undefined - + + + Registration Warning + + + + + Your passwords do not match, please try again. + + + + + Your email addresses do not match, please try again. + + + + Country: - + Real name: - + Nome real: - + Register to server @@ -1288,19 +1338,19 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgSettings - - - + + + Error Erro - + Unknown Error loading card database Erro desconhecido ao carregar a base de dados das cartas - + Your card database is invalid. Cockatrice may not function correctly with an invalid database @@ -1317,7 +1367,7 @@ Poderá necessitar de correr o Oracle para actualizar a base de dados. Gostaria de alterar a localização da base de dados? - + Your card database version is too old. This can cause problems loading card information or images @@ -1334,7 +1384,7 @@ Pode ser reparado correndo o Oracle de novo para actualizar a base de dados das Gostaria de alterar a localização da base de dados? - + File Error loading your card database. Would you like to change your database location setting? @@ -1343,7 +1393,7 @@ Would you like to change your database location setting? Gostaria de alterar a localização da base de dados? - + Your card database was loaded but contains no cards. Would you like to change your database location setting? @@ -1352,7 +1402,7 @@ Would you like to change your database location setting? Gostaria de alterar a localização da base de dados? - + Your card database did not finish loading Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues with your cards.xml attached @@ -1365,7 +1415,7 @@ Por favor, envie um ticket para http://github.com/Cockatrice/Cockatrice/issues c Gostaria de mudar a definição da localização da sua base de dados? - + Unknown card database load status Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues @@ -1374,50 +1424,55 @@ Would you like to change your database location setting? - + The path to your deck directory is invalid. Would you like to go back and set the correct path? O directório do seu deck é inválido. Gostaria de voltar atrás e corrigir o directório? - + The path to your card pictures directory is invalid. Would you like to go back and set the correct path? O directório das imagens das cartas é inválido. Gostaria de voltar atrás e corrigir o directório? - + Settings Definições - + General Geral - + Appearance Aparência - + User Interface Interface do utilizador - + Deck Editor Editor de Decks - + Chat Chat - + Sound + + + Shortcuts + + GameSelector @@ -1430,7 +1485,7 @@ Would you like to change your database location setting? - + Error Erro @@ -1475,47 +1530,47 @@ Would you like to change your database location setting? Você está a ser ignorado pelo criador deste jogo. - + Join game Entrar no jogo - + Password: Password: - + Please join the respective room first. Por favor entre na sala respectiva primeiro. - + Games Jogos + + + &Filter games + + - Filter games + C&lear filter - Clear filter + C&reate - - Create + + &Join - - Join - - - - + J&oin as spectator Entrar como &espectador @@ -1555,7 +1610,7 @@ Would you like to change your database location setting? 1hr %1m ago - + há 1 hora %1 min @@ -1632,107 +1687,112 @@ Would you like to change your database location setting? GeneralSettingsPage - + Reset/Clear Downloaded Pictures Limpar/reiniciar Imagens descarregadas, - - - - - + + + + + Choose path Escolher directório - + Success Sucesso - + Downloaded card pictures have been reset. Imagens de cartas descarregadas reiniciadas. - + Error Erro - + One or more downloaded card pictures could not be cleared. Uma ou mais imagens de cartas descarregadas não podem ser apagadas. - + Personal settings Defenições pessoais - + Language: Língua: - + Download card pictures on the fly Baixar a imagem das cartas ao passar - + Download card pictures from a custom URL - + Custom Card Download URL: - + Linking FAQ - + + Notify when new client features are available + + + + Paths Directórios - + Decks directory: Directório dos decks: - + Replays directory: Directório de replays: - + Pictures directory: Directório das imagens: - + Card database: Base de dados das cartas: - + Token database: Base de dados das fichas: - + Picture cache size: Tamanho da cache de imagens: - - + + English Português (Portuguese) @@ -1740,49 +1800,49 @@ Would you like to change your database location setting? MainWindow - + There are too many concurrent connections from your address. Há demasiadas ligações concorrentes do seu endereço. - + Scheduled server shutdown. Encerramento do servidor agendado. - + Banned by moderator Banido por moderador - + Expected end time: %1 Tempo previsto para o final:%1 - + This ban lasts indefinitely. Este banimento dura indefinidamente. - + Connection closed Ligação terminada - + The server has terminated your connection. Reason: %1 O servidor terminou a sua ligação. Motivo: %1 - + Scheduled server shutdown Encerramento do servidor agendado - + The server is going to be restarted in %n minute(s). All running games will be lost. Reason for shutdown: %1 @@ -1791,454 +1851,500 @@ Todos os jogos a decorrer serão perdidos. Motivo para o encerramento: %1 - + Number of players Número de jogadores - + Please enter the number of players. Por favor introduza o número de jogadores. - - + + Player %1 Jogador %1 - + Load replay Carregar replay - + About Cockatrice Sobre o Cockatrice - + Version %1 Versão %1 - + Translators: Tradutores: - + Project Manager: - - + + The server has reached its maximum user capacity, please check back later. + + + + + Invalid username. + Nome de utilizador invalido. + + + + You have been logged out due to logging in at another location. - - + + Success - + Sucesso - + Registration accepted. Will now login. - + Account activation accepted. Will now login. - + Past Project Managers: - + Developers: - + Our Developers - + Help Develop! - + Recognition Page - + Help Translate! - + Support: - + Report an Issue - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + Error Erro - + Server timeout Tempo do servidor esgotado - + + Failed Login + + + + + Your client does not support features that the server requires, please update your client and try again. + + + + Incorrect username or password. Please check your authentication information and try again. Nome de utilizador ou palavra-passe incorrecta. Por favor verifique as suas informações e tente de novo. - + There is already an active session using this user name. Please close that session first and re-login. Já existe uma sessão activa com este nome de utilizador. Por favor termine essa sessão e volte a ligar-se. - - + + You are banned until %1. Está banido até %1. - - + + You are banned indefinitely. Está banido indefinidamente. - + This server requires user registration. Do you want to register now? - + + This server requires client ID's. Your client is either failing to generate an ID or you are running a modified client. +Please close and reopen your client to try again. + + + + + An internal error has occurred, please try closing and reopening your client and try again. If the error persists try updating your client to the most recent build and if need be contact your software provider. + + + + Account activation - - Your account has not been activated yet. - You need to provide the activation token received in the activation email - - - - - + Unknown login error: %1 Erro de login desconhecido:%1 - + + + +This usually means that your client version is out of date, and the server sent a reply your client doesn't understand. + + + + Your username must respect these rules: - + is %1 - %2 characters long - + can %1 contain lowercase characters - - - - + + + + NOT - + can %1 contain uppercase characters - + can %1 contain numeric characters - + can contain the following punctuation: %1 - + first character can %1 be a punctuation mark - + You may only use A-Z, a-z, 0-9, _, ., and - in your username. - + Apenas A-Z, a-z, 0-9, _, ., e - são permitidos. - - - - - + + + + + Registration denied - + Registration is currently disabled on this server - + There is already an existing account with the same user name. - + It's mandatory to specify a valid email address when registering. - + Too many registration attempts from your IP address. - + Password too short. - + Registration failed for a technical problem on the server. - + + Unknown registration error: %1 + + + + Account activation failed - + Socket error: %1 Erro de ligação:%1 - + 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. 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. - + Your Cockatrice client is obsolete. Please update your Cockatrice version. Local version is %1, remote version is %2. A sua versão do Cockatrice é obsoleta. Por favor actualize-a. Versão local é %1, versão remota é %2. - + Connecting to %1... Ligando a %1... - + Registering to %1 as %2... - + Disconnected Desligado - + Connected, logging in at %1 Conectado, logando em %1 - - Logged in as %1 at %2 - - - - + &Connect... &Ligar... - + &Disconnect &Desligar - + Start &local game... Começar &jogo local... - + &Watch replay... &Ver replay... - + &Deck editor &Editor de decks - + &Full screen Ecrã &inteiro - + &Register to server... - + &Settings... &Configurações... - - + + &Exit &Sair - + A&ctions - + &Cockatrice &Cockatrice - + &About Cockatrice S&obre o Cockatrice - + &Help &Ajuda - + Check for card updates... - + A card database update is already running. - + Unable to run the card database updater: - + The card database updater exited with an error: %1 - + Update completed successfully. Cockatrice will now reload the card database. - - - Information + + Your client appears to be missing features that the server supports. +This usually means that your client version is out of date, please check to see if there is a new client available for download. - + + + + Information + Informação + + + Troubleshooting - + F.A.Q. - + + Your account has not been activated yet. +You need to provide the activation token received in the activation email + + + + failed to start. - + crashed. - + timed out. - + write error. - + read error. - + unknown error. - + erro desconhecido. @@ -3345,12 +3451,12 @@ Versão local é %1, versão remota é %2. %1 puts %2%3 into her graveyard. - + %1 coloca %2%3 no seu cemitério. %1 puts %2%3 into his graveyard. - + %1 coloca %2%3 no seu cemitério. @@ -3390,25 +3496,25 @@ Versão local é %1, versão remota é %2. %1 places %2 %3 counter(s) on %4 (now %5). female - + %1 coloca %2 %3 marcadores em %4 (agora com %5). %1 places %2 %3 counter(s) on %4 (now %5). male - + %1 coloca %2 %3 marcadores em %4 (agora com %5). %1 removes %2 %3 counter(s) from %4 (now %5). female - + %1 remove %2 %3 marcadores de %4 (agora com %5). %1 removes %2 %3 counter(s) from %4 (now %5). male - + %1 remove %2 %3 marcadores de %4 (agora com %5). @@ -3476,62 +3582,74 @@ Versão local é %1, versão remota é %2. MessagesSettingsPage - + Chat settings Definições do Chat - + + Custom alert words + + + + Enable chat mentions - + + Enable mention completer + + + + In-game message macros - - Ignore unregistered users in main chat - Ignorar utilizadores não registados no chat principal + + Ignore chat room messages sent by unregistered users + - - Ignore chat room messages sent by unregistered users. - Ignorar mensagens de chat enviadas por utilizadores não registados + + Ignore private messages sent by unregistered users + - - Ignore private messages sent by unregistered users. - Ignorar mensagens privadas enviadas por utilizadores não registados + + Enable desktop notifications for private messages + - + + Separate words with a space, alphanumeric characters only + + + + + Invert text color Inverter cor do texto - - Enable desktop notifications for private messages. - Permitir notificações de mensagens privadas no Ambiente de Trabalho - - - + Enable desktop notification for mentions. - + + (Color is hexadecimal) - + Add message Adicionar mensagem - + Message: Mensagem: @@ -3597,435 +3715,435 @@ Versão local é %1, versão remota é %2. Player - + &View library &Ver grimório - + Move top cards to &graveyard... Mover as cartas do topo para o &cemitério... - + View &top cards of library... Ver as cartas do &topo do grimório... - + &View graveyard &Ver cemitério - + &View sideboard &Ver sideboard - + Player "%1" Jogador "%1" - - - - + + + + &Hand &Mão - + &Reveal hand to... &Mostrar mão a... - + Reveal r&andom card to... - + &Library &Grimório - - - - + + + + &Graveyard &Cemitério - + &Sideboard &Sideboard - + Red Vermelho - + Yellow Amarelo - + Green Verde - + View top cards of library Ver as cartas do topo do grimório - + Number of cards: Número de cartas: - + &Draw card &Comprar carta - + Reveal top cards of library - + Mostrar as cartas do topo do grimório - + Number of cards: (max. %1) - + &View exile &Ver exílio - - - - + + + + &Exile &Exílio - + Reveal t&op cards to... - + D&raw cards... C&omprar cartas... - + Take &mulligan Fazer &mulligan - + &Shuffle &Baralhar - + &Counters &Marcadores - + &Untap all permanents &Desvirar topas as permanentes - + R&oll die... &Lançar dado... - + &Create token... Criar fic&ha... - + C&reate another token Cr&iar outra ficha - + S&ay &Dizer - + &Move hand to... &Mover mão para... - - - - + + + + &Top of library &Topo do grimório - - - - + + + + &Bottom of library &Fundo do grimório - + &Move graveyard to... &Mover cemitério para... - + &Move exile to... - + Reveal &library to... - + &Mostrar grimório a... - + &Always reveal top card &Revelar sempre carta do topo - + O&pen deck in deck editor &Abrir deck no editor de decks - + &Undo last draw Desfa&zer a última compra - + Play top card &face down - + Move top cards to &exile... Mover as cartas do topo para o &exílio... - + Put top card on &bottom Colocar carta do topo no &fundo - + Put bottom card &in graveyard - + Cr&eate predefined token Criar fic&ha predefinida - + C&ard C&arta - + &All players Todos os &jogadores - + &Play &Jogar - + &Hide Esco&nder - + Play &Face Down - + &Tap &Virar - + &Untap Desv&irar - + Toggle &normal untapping A&lterar desvirar normalmente - + &Flip Vol&tar - + &Peek at card face &Espreitar a face da carta - + &Clone Copi&ar - + Attac&h to card... Ane&xar a carta... - + Unattac&h De&sanexar - + &Draw arrow... Desen&har seta... - + &Increase power &Aumentar poder - + &Decrease power &Diminuir poder - + I&ncrease toughness A&umentar resistência - + D&ecrease toughness Di&minuir resistência - + In&crease power and toughness Aumen&tar poder e resistência - + Dec&rease power and toughness Dimin&uir poder e resistência - + Set &power and toughness... Definir &poder e resistência... - + &Set annotation... Colocar &nota... - + &Add counter (%1) Adicionar &marcador (%1) - + &Remove counter (%1) &Remover marcador (%1) - + &Set counters (%1)... &Denifir marcadores (%1)... - + Draw cards Comprar cartas - - - - + + + + Number: Número: - + Move top cards to grave Mover as cartas to topo para o cemitério - + Move top cards to exile Mover as cartas to topo para o exílio - + Roll die Lançar dado - + Number of sides: Número de faces: - + Set power/toughness Definir poder/resistência - + Please enter the new PT: Por favor introduza o novo P/R: - + Set annotation Colocar nota - + Please enter the new annotation: Por favor introduza a nova nota: - + Set counters Definir marcadores - + Cr&eate related card @@ -4033,37 +4151,37 @@ Versão local é %1, versão remota é %2. QMenuBar - + Services Serviços - + Hide %1 Ocultar %1 - + Hide Others Ocultar outros - + Show All Mostrar tudo - + Preferences... Preferências... - + Quit %1 Sair %1 - + About %1 Cerca %1 @@ -4071,7 +4189,7 @@ Versão local é %1, versão remota é %2. QObject - + Cockatrice replays (*.cor) Replays do Cockatrice (*.cor) @@ -4140,35 +4258,64 @@ Versão local é %1, versão remota é %2. RoomSelector - + Rooms Salas - + Joi&n E&ntrar - + Room Sala - + Description Descrição - + + Permissions + + + + Players Jogadores - + Games Jogos + + + + Error + + + + + You do not have the proper permission to join this room. + + + + + Failed to join the room due to an unknown error. + + + + + SequenceEdit + + + Shortcut already in use + + SetsModel @@ -4219,37 +4366,37 @@ Versão local é %1, versão remota é %2. SoundSettingsPage - + Choose path - + Escolher directório - + Enable &sounds - + Permitir &sons - + Path to sounds directory: - + Caminho para o directório dos sons: - + Test system sound engine - + Sound settings - + Definições de Som - + Master volume requires QT5 - + Master volume @@ -4305,186 +4452,221 @@ Versão local é %1, versão remota é %2. TabDeckEditor - + &Print deck... &Imprimir deck... - + &Close &Fechar - + &Edit sets... &Editar expansões... - + Filters - + &Clear all filters - + Delete selected - + Deck &name: &Nome do deck: - + &Comments: &Comentários: - + Hash: Hash: - + &New deck &Novo deck - + &Load deck... &Carregar deck... - + &Save deck &Guardar deck - + Save deck &as... G&uardar deck como... - + Load deck from cl&ipboard... Carregar dec&k da memória... - + Save deck to clip&board Guardar deck na &memória - + &Analyze deck on deckstats.net Anali&zar o deck em deckstats.net - + Open custom image folder Abrir pasta de imagens personalizadas - + + Open custom sets folder + + + + Add card to &maindeck Adicionar carta ao &maindeck - + Add card to &sideboard Adicionar carta ao &sideboard - + &Deck Editor %Editor de Decks - + C&ard Database + &Base de dados das cartas + + + + Show/Hide card information - + + Show/Hide deck + + + + + Show/Hide filters + + + + + Reset layout + + + + + Card Info + + + + + Deck + + + + Welcome - + Hi! It seems like you're running this version of Cockatrice for the first time. All the sets in the card database have been enabled. Read more about changing the set order or disabling specific sets and consequent effects in the "Edit Sets" window. - + &Remove row &Remover linha - + &Increment number &Aumentar o número - + &Decrement number &Diminuir o número - + Edit &tokens... Editar &fichas... - + Deck: %1 Deck:%1 - + Are you sure? Tem a certeza? - + The decklist has been modified. Do you want to save the changes? A lista foi modificada. Gostaria de guardar as alterações? - + Load deck Carregar deck - - - + + + Error Erro - + The deck could not be saved. O deck não pode ser guardado. - - + + The deck could not be saved. Please check that the directory is writable and try again. O deck não pode ser guardado. Por favor confirme se é possível escrever do directório e tente de novo. - + Save deck Guardar deck @@ -4582,97 +4764,97 @@ Por favor introduza um nome: TabGame - + &Phases Fa&ses - + &Game &Jogo - + Next &phase Próxima &fase - + Next &turn Próximo &turno - + &Remove all local arrows &Remover todas as setas locais - + Rotate View Cl&ockwise - + Rotate View Co&unterclockwise - + Game &information &Informação do jogo - + &Concede &Conceder - + &Leave game Sair do &jogo - + C&lose replay &Fechar replay - + &Say: &Dizer: - + Concede Conceder - + Are you sure you want to concede this game? Tem a certeza que deseja conceder este jogo? - + Leave game Sair do jogo - + Are you sure you want to leave this game? Tem a certeza que deseja sair deste jogo? - + You are flooding the game. Please wait a couple of seconds. - + You have been kicked out of the game. Foi expulso do jogo. - + REPLAY @@ -4682,7 +4864,7 @@ Por favor introduza um nome: Private &chat - + Chat &privado @@ -4778,47 +4960,47 @@ Por favor introduza um nome: TabRoom - + &Say: &Dizer: - + Chat Chat - + &Room &Sala - + &Leave room &Abandonar a sala - + &Clear chat &Limpar chat - + Chat Settings... Definições do chat... - + mentioned you. mencionou-o. - + Click to view Clicar para ver - + You are flooding the chat. Please wait a couple of seconds. Estás a inundar o chat .Por favor aguarde alguns segundos. @@ -4834,15 +5016,25 @@ Por favor introduza um nome: TabSupervisor - + Are you sure? Tem a certeza? - + There are still open games. Are you sure you want to quit? Ainda estão a decorrer alguns jogos. Tem a certeza que quer sair? + + + Promotion + + + + + You have been promoted to moderator. Please log out and back in for changes to take effect. + + TabUserLists @@ -4865,55 +5057,97 @@ Por favor introduza um nome: UserContextMenu - + User &details Detalhes do &utilizador - + Private &chat Chat &privado - + Show this user's &games Mostrar os &jogos deste utilizador - + Add to &buddy list Adicionar à &lista de amigos - + Remove from &buddy list Remover da lista de &amigos - + Add to &ignore list Adicionar a lista a i&gnorar - + Remove from &ignore list Remover da lista a &ignorar - + Kick from &game Expulsar do &jogo - + Ban from &server Banir do &servidor - + + &Promote user to moderator + + + + + Dem&ote user from moderator + + + + %1's games jogos de %1 + + + + Success + + + + + Successfully promoted user. + + + + + Successfully demoted user. + + + + + + Failed + + + + + Failed to promote user. + + + + + Failed to demote user. + + UserInfoBox @@ -4950,7 +5184,7 @@ Por favor introduza um nome: Edit - + Editar @@ -5013,7 +5247,7 @@ Por favor introduza um nome: Information - + Informação @@ -5030,7 +5264,7 @@ Por favor introduza um nome: Error - + Erro @@ -5082,42 +5316,42 @@ Por favor introduza um nome: UserInterfaceSettingsPage - + General interface settings Configurações gerais da interface - + Enable notifications in taskbar Permitir notificações na barra de tarefas - + Notify in the taskbar for game events while you are spectating - + &Double-click cards to play them (instead of single-click) Clicar &duas vezes nas cartas para as jogar (ao invés de clicar apenas uma vez) - + &Play all nonlands onto the stack (not the battlefield) by default - + Annotate card text on tokens - + Animation settings Configurações de Animações - + &Tap/untap animation Animação de &virar/desvirar @@ -5125,22 +5359,22 @@ Por favor introduza um nome: UserList - + Users connected to server: %1 Utilizadores online: %1 - + Users in this room: %1 Utilizadores nesta sala:%1 - + Buddies online: %1 / %2 Amigos online: %1 / %2 - + Ignored users online: %1 / %2 Utilizadores ignorados online %1 / %2 @@ -5199,7 +5433,7 @@ Por favor introduza um nome: - Disabled sets will still be used for loading images + Disabled sets will be used for loading images only if all the enabled sets failed @@ -5208,12 +5442,12 @@ Por favor introduza um nome: Editar expansões - + Success Sucesso - + The sets database has been saved successfully. A base de dados das expansões foi guardada com sucesso @@ -5241,4 +5475,561 @@ Por favor introduza um nome: + + shortcutsTab + + + Form + + + + + Main Window + + + + + Deck editor + + + + + Local gameplay + + + + + Watch replay + + + + + Connect + + + + + Register + + + + + Full screen + + + + + Settings + + + + + Check for card updates + + + + + Exit + + + + + Deck Editor + + + + + Analyze deck + + + + + Load deck (clipboard) + + + + + Clerar all filters + + + + + New deck + + + + + Clear one filter + + + + + Open custom folder + + + + + Close + + + + + Print deck + + + + + Edit sets + + + + + Delete card + + + + + Edit tokens + + + + + Reset layout + + + + + Add card + + + + + Save deck + + + + + Remove card + + + + + Save deck as + + + + + Load deck + + + + + Save deck (clipboard) + + + + + + Counters + + + + + Life + + + + + + + + + Set + + + + + + + + Add + + + + + + + + Remove + + + + + Red + + + + + Green + + + + + Yellow + + + + + Mainwindow / Deck editor + + + + + Power / toughness + + + + + Power and toughness + + + + + Add (+1/+1) + + + + + Remove (-1/-1) + + + + + Toughness + + + + + Remove (-0/-1) + + + + + Add (+0/+1) + + + + + Power + + + + + Remove (-1/-0) + + + + + Add (+1/+0) + + + + + Game Phases + + + + + Untap + + + + + Disconnect + + + + + Upkeep + + + + + + Draw + + + + + Main 1 + + + + + Start combat + + + + + Attack + + + + + Block + + + + + Damage + + + + + End combat + + + + + Main 2 + + + + + End + + + + + Next phase + + + + + Next turn + + + + + Player + + + + + Tap Card + + + + + Untap Card + + + + + Untap all + + + + + Toogle untap + + + + + Flip card + + + + + Peek card + + + + + Play card + + + + + Attach card + + + + + Unattach card + + + + + Clone card + + + + + Create token + + + + + Create another token + + + + + Set annotation + + + + + Phases / P/T / Player + + + + + Move card to + + + + + Bottom library + + + + + Top library + + + + + + Graveyard + + + + + + Exile + + + + + Hand + + + + + View + + + + + Library + + + + + Tops card of library + + + + + Sideboard + + + + + Close recent view + + + + + Pre-play + + + + + Load remote deck + + + + + Load local deck + + + + + Game play + + + + + Draw arrow + + + + + Leave game + + + + + Remove local arrows + + + + + Concede + + + + + Roll dice + + + + + Rotate view CW + + + + + Shuffle library + + + + + Rotate view CCW + + + + + Mulligan + + + + + Draw card + + + + + Draw cards + + + + + Undo draw + + + + + Always reveal top card + + + + + Draw / Move / View / Game play + + + \ No newline at end of file diff --git a/cockatrice/translations/cockatrice_pt_BR.ts b/cockatrice/translations/cockatrice_pt_BR.ts index b127221e..fb1e619c 100644 --- a/cockatrice/translations/cockatrice_pt_BR.ts +++ b/cockatrice/translations/cockatrice_pt_BR.ts @@ -2,17 +2,17 @@ AbstractCounter - + &Set counter... Definir &marcador... - + Set counter Definir marcador - + New value for counter '%1': Novo valor para o marcador '%1': @@ -20,89 +20,60 @@ AppearanceSettingsPage - - Zone background pictures - Imagens de fundo das zonas + + Theme settings + - - Hand background: - Imagem de fundo da mão: + + Current theme: + - - Stack background: - Imagem de fundo da pilha: - - - - Table background: - Imagem de fundo da mesa: - - - - Player info background: - Imagem de fundo do jogador: - - - - Card back: - Parte de trás da carta: - - - + Card rendering Renderização do card - + Display card names on cards having a picture Mostrar o nome dos cards nos cards que tem imagem - + Scale cards on mouse over Redimensionar cartas ao passar o mouse - + Hand layout Layout da mão - + Display hand horizontally (wastes space) Mostrar a mão na horizontal (desperdiça espaço) - + Enable left justification Habilitada justificação à esquerda - + Table grid layout Layout do campo de batalha - + Invert vertical coordinate Inverter a coordenada vertical - + Minimum player count for multi-column layout: Contador mínimo de jogadores para o layout de multicolunas - - - - - - - Choose path - Escolher caminho - BanDialog @@ -117,87 +88,110 @@ banido endereço &IP - + + ban client I&D + + + + Ban type Tipo de banimento - + &permanent ban banido &permanentemente - + &temporary ban Banido &temporariamente - + &Days: &Dias: - + &Hours: &Horas: - + &Minutes: &Minutos: - + Duration of the ban Duração do banimento - + Please enter the reason for the ban. This is only saved for moderators and cannot be seen by the banned person. Por favor, entre com o motivo do banimento. Isto será visto somente por moderadores e não pode ser visto pela pessoa banida. - + Please enter the reason for the ban that will be visible to the banned person. Por favor, entre com o motivo para o banimento que será visível pela pessoa banida. - + &OK &OK - + &Cancel &Cancelar - + Ban user from server Banir usuário do servidor - + + + + Error Erro - - You have to select a name-based or IP-based ban, or both. - Você tem selecionado um nome ou IP banido ou ambos. + + You have to select a name-based, IP-based, clientId based, or some combination of the three to place a ban. + + + + + You must have a value in the name ban when selecting the name ban checkbox. + + + + + You must have a value in the ip ban when selecting the ip ban checkbox. + + + + + You must have a value in the clientid ban when selecting the clientid ban checkbox. + CardDatabase - + New sets found Novas expansões encontradas - + %1 new set(s) have been found in the card database. Do you want to enable them? @@ -233,17 +227,17 @@ Isto será visto somente por moderadores e não pode ser visto pela pessoa banid CardFrame - + Image Imagem - + Description Descrição - + Both Ambos @@ -299,27 +293,32 @@ Isto será visto somente por moderadores e não pode ser visto pela pessoa banid Mostrar informação completa - + Name: Nome: - + Mana cost: Custo de mana: - + + Color(s): + + + + Card type: Tipo de card: - + P / T: P / R: - + Loyalty: Lealdade: @@ -583,12 +582,12 @@ Isto será visto somente por moderadores e não pode ser visto pela pessoa banid DeckEditorSettingsPage - + Nothing is here... yet Nada aqui... ainda - + General General @@ -596,17 +595,17 @@ Isto será visto somente por moderadores e não pode ser visto pela pessoa banid DeckListModel - + Number Número - + Card Card - + Price Preço @@ -628,42 +627,42 @@ Isto será visto somente por moderadores e não pode ser visto pela pessoa banid DeckViewContainer - + Load local deck - + Carregar deck local - + Load deck from server - + Carregar deck do servidor - + Ready to s&tart &Pronto para começar - + S&ideboard unlocked Sideboard liberado - + S&ideboard locked Sideboard travado - + Load deck Carregar deck - + Error Erro - + The selected file could not be loaded. O arquivo selecionado não pode ser carregado @@ -709,37 +708,52 @@ Isto será visto somente por moderadores e não pode ser visto pela pessoa banid DlgConnect - + + Previous Host + + + + + New Host + + + + &Host: &Servidor: - + + Enter host name + + + + &Port: &Porta: - + Player &name: Nome do &jogador: - + P&assword: S&enha: - + &Save password &salvar senha - + A&uto connect at start &Começar automaticamente no início - + Connect to server Conectar ao servidor @@ -747,82 +761,92 @@ Isto será visto somente por moderadores e não pode ser visto pela pessoa banid DlgCreateGame - + &Description: &Descrição: - + &Password: S&enha: - + P&layers: &Jogadores: - + + Re&member settings + + + + Game type Tipo de jogo - + Only &buddies can join Apenas ami&gos podem entrar - + Only &registered users can join Apenas usuários re&gistrados podem entrar - + Joining restrictions Restrições para entrar - + &Spectators can watch &Espectadores podem assistir - + Spectators &need a password to watch &Espectadores precisam de uma senha para assistir - + Spectators can see &hands Espectadores podem ver &mãos - + Spectators can &chat Visitantes podem c&onversar - + Spectators Visitantes - + + &Clear + + + + Create game Criar jogo - + Game information Informação de jogo - + Error Erro - + Server error. Erro do servidor. @@ -963,32 +987,32 @@ To remove your current avatar, confirm without choosing a new image. DlgEditPassword - + Old password: - + New password: - + Confirm new password: - + Change password - + Error - + Erro - + The new passwords don't match. @@ -1091,47 +1115,47 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgEditUser - + Email: - + Email: - + Pronouns: - + Neutral - + Masculine - + Feminine - + Country: - + País: - + Undefined - + Indefinido - + Real name: - + Nome real: - + Edit user profile @@ -1139,47 +1163,47 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgFilterGames - + Show &unavailable games Mostre os jogos &indisponíveis - + Show &password protected games Mostrar &senha de jogos protegidos - + Game &description: &Descrição do jogo: - + &Creator name: Nome do &criador: - + &Game types Tipos de &jogos - + at &least: &ao menos: - + at &most: no &máximo: - + Maximum player count Contador máximo de jogador - + Filter games Filtrar jogos @@ -1187,7 +1211,7 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgLoadDeckFromClipboard - + &Refresh &Atualizar @@ -1197,14 +1221,14 @@ Make sure to enable the 'token set' in the 'Edit sets...' di Carregar deck da área de transferência - - + + Error Erro - - + + Invalid deck list. Lista de deck inválida. @@ -1220,67 +1244,93 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgRegister - + &Host: &Servidor: - + &Port: &Porta: - + Player &name: Nome do &jogador: - + P&assword: S&enha: - + + Password (again): + + + + Email: Email: - + + Email (again): + + + + Pronouns: - + Neutral - + Masculine - + Feminine - + Undefined Indefinido - + + + Registration Warning + + + + + Your passwords do not match, please try again. + + + + + Your email addresses do not match, please try again. + + + + Country: País: - + Real name: Nome real: - + Register to server Registrar ao servidor: @@ -1288,19 +1338,19 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgSettings - - - + + + Error Erro - + Unknown Error loading card database Erro desconhecido ao carregar bando de dados de cartas - + Your card database is invalid. Cockatrice may not function correctly with an invalid database @@ -1317,7 +1367,7 @@ Você pode precisar rodar o Oracle novamente para atualizar o banco de dados de Você gostaria de mudar o local da configuração de seu banco de dados? - + Your card database version is too old. This can cause problems loading card information or images @@ -1334,7 +1384,7 @@ Usualmente isto pode ser consertado rodando novamente o Oracle para atualizar se Você gostaria de alterar o local da configuração de seu banco de dados? - + File Error loading your card database. Would you like to change your database location setting? @@ -1343,7 +1393,7 @@ Would you like to change your database location setting? Você gostaria de alterar seu local de configuração de seu banco de dados? - + Your card database was loaded but contains no cards. Would you like to change your database location setting? @@ -1352,7 +1402,7 @@ Would you like to change your database location setting? Você gostaria de alterar seu local de configuração de banco de dados? - + Your card database did not finish loading Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues with your cards.xml attached @@ -1365,7 +1415,7 @@ Por favor, crie um ticket em http://github.com/Cockatrice/Cockatrice/issues com Você gostaria de alterar seu local de configuração do banco de dados? - + Unknown card database load status Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues @@ -1378,50 +1428,55 @@ Por favor, crie um ticket em http://github.com/Cockatrice/Cockatrice/issues Você gostaria de alterar seu local de configuração do banco de dados? - + The path to your deck directory is invalid. Would you like to go back and set the correct path? O caminho para a sua pasta de decks é inválido. Você gostaria de voltar e corrigir o caminho? - + The path to your card pictures directory is invalid. Would you like to go back and set the correct path? O caminho para a sua pasta de imagens de cards é inválido. Você gostaria de voltar e corrigir o caminho? - + Settings Configurações - + General Geral - + Appearance Aparência - + User Interface Interface do usuário - + Deck Editor Editor de &decks - + Chat Conversa - + Sound Som + + + Shortcuts + + GameSelector @@ -1434,7 +1489,7 @@ Você gostaria de alterar seu local de configuração do banco de dados? - + Error Erro @@ -1479,47 +1534,47 @@ Você gostaria de alterar seu local de configuração do banco de dados?Você está sendo ignorado pelo criador deste jogo. - + Join game Entrar no jogo - + Password: Senha: - + Please join the respective room first. Por favor, entre na respectiva sala primeiro. - + Games Jogos + + + &Filter games + + - Filter games + C&lear filter - Clear filter + C&reate - - Create + + &Join - - Join - - - - + J&oin as spectator E&ntrar como visitante @@ -1636,107 +1691,112 @@ Você gostaria de alterar seu local de configuração do banco de dados? GeneralSettingsPage - + Reset/Clear Downloaded Pictures Reiniciar/Limpar imagens baixadas - - - - - + + + + + Choose path Escolher caminho - + Success Sucesso - + Downloaded card pictures have been reset. Imagens de cartas baixadas foram reiniciadas. - + Error Erro - + One or more downloaded card pictures could not be cleared. Um ou mais imagens baixadas não puderam ser limpas. - + Personal settings Configurações pessoais - + Language: Língua: - + Download card pictures on the fly Baixar a imagem dos cards em tempo real - + Download card pictures from a custom URL Baixar a imagem de cartas de uma URL diferente - + Custom Card Download URL: - + Linking FAQ - + + Notify when new client features are available + + + + Paths Caminhos - + Decks directory: Pasta de decks: - + Replays directory: Diretório de replays: - + Pictures directory: Pasta de imagens: - + Card database: Banco de dados de cartas: - + Token database: Banco de dados de fichas: - + Picture cache size: Tamanho imagem: - - + + English Português do Brasil (Brazilian Portuguese) @@ -1744,49 +1804,49 @@ Você gostaria de alterar seu local de configuração do banco de dados? MainWindow - + There are too many concurrent connections from your address. Há conexões concorrentes demais vinds do seu endereço. - + Scheduled server shutdown. Servidor de eventos fora do ar. - + Banned by moderator Banido pelo moderador - + Expected end time: %1 Esperado tempo para fim: %1 - + This ban lasts indefinitely. Este banido indefinidamente. - + Connection closed Conexão fechada - + The server has terminated your connection. Reason: %1 O servidor terminou sua conexão. Razão: %1 - + Scheduled server shutdown Servidor de eventos fora do ar - + The server is going to be restarted in %n minute(s). All running games will be lost. Reason for shutdown: %1 @@ -1797,454 +1857,500 @@ Todos os jogos serão perdidos. Motivo para desligar: %1 - + Number of players Número de jogadores - + Please enter the number of players. Por favor, entre o número de jogadores. - - + + Player %1 Jogador %1 - + Load replay Carregar replay - + About Cockatrice Sobre o Cockatrice - + Version %1 Versão %1 - + Translators: Tradutores: - + Project Manager: - - + + The server has reached its maximum user capacity, please check back later. + + + + + Invalid username. + Usuário inválido + + + + You have been logged out due to logging in at another location. - - + + Success - + Sucesso - + Registration accepted. Will now login. - + Account activation accepted. Will now login. - + Past Project Managers: - + Developers: - + Our Developers - + Help Develop! - + Recognition Page - + Help Translate! - + Support: - + Report an Issue - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + Error Erro - + Server timeout Tempo esgotado do servidor - + + Failed Login + + + + + Your client does not support features that the server requires, please update your client and try again. + + + + Incorrect username or password. Please check your authentication information and try again. Usuário ou senha incorretos. Por favor, verifique suas informações de autenticação e tente novamente. - + There is already an active session using this user name. Please close that session first and re-login. Já existe uma sessão ativa usando este nome de usuário. Por favor, feche a sessão primeiro e logue novamente. - - + + You are banned until %1. Você está banido até %1. - - + + You are banned indefinitely. Você está banido indefinidamente. - + This server requires user registration. Do you want to register now? - + + This server requires client ID's. Your client is either failing to generate an ID or you are running a modified client. +Please close and reopen your client to try again. + + + + + An internal error has occurred, please try closing and reopening your client and try again. If the error persists try updating your client to the most recent build and if need be contact your software provider. + + + + Account activation - - Your account has not been activated yet. - You need to provide the activation token received in the activation email - - - - - + Unknown login error: %1 Erro de login desconhecido: %1 - + + + +This usually means that your client version is out of date, and the server sent a reply your client doesn't understand. + + + + Your username must respect these rules: - + is %1 - %2 characters long - + can %1 contain lowercase characters - - - - + + + + NOT - + can %1 contain uppercase characters - + can %1 contain numeric characters - + can contain the following punctuation: %1 - + first character can %1 be a punctuation mark - + You may only use A-Z, a-z, 0-9, _, ., and - in your username. - - - - - + + + + + Registration denied - + Registration is currently disabled on this server - + There is already an existing account with the same user name. - + It's mandatory to specify a valid email address when registering. - + Too many registration attempts from your IP address. - + Password too short. - + Registration failed for a technical problem on the server. - + + Unknown registration error: %1 + + + + Account activation failed - + Socket error: %1 Erro de ligação:%1 - + 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. 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. - + Your Cockatrice client is obsolete. Please update your Cockatrice version. Local version is %1, remote version is %2. 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. - + Connecting to %1... Conectando a %1... - + Registering to %1 as %2... - + Disconnected Desconectado - + Connected, logging in at %1 Conectado, logando em %1 - - Logged in as %1 at %2 - Logado em %1 como %2 - - - + &Connect... &Conectar... - + &Disconnect &Desconectar - + Start &local game... Iniciar jogo &local... - + &Watch replay... &Assistir replay... - + &Deck editor Editor de &decks - + &Full screen Tela &cheia - + &Register to server... - + &Registrar ao servidor: - + &Settings... &Configurações... - - + + &Exit &Sair - + A&ctions Açõ&es - + &Cockatrice &Cockatrice - + &About Cockatrice So&bre o Cockatrice - + &Help &Ajuda - + Check for card updates... - + A card database update is already running. - + Unable to run the card database updater: - + The card database updater exited with an error: %1 - + Update completed successfully. Cockatrice will now reload the card database. - - - Information + + Your client appears to be missing features that the server supports. +This usually means that your client version is out of date, please check to see if there is a new client available for download. - + + + + Information + Informação + + + Troubleshooting - + F.A.Q. - + + Your account has not been activated yet. +You need to provide the activation token received in the activation email + + + + failed to start. - + crashed. - + timed out. - + write error. - + erro na escrita. - + read error. - + erro na leitura. - + unknown error. - + erro desconhecido. @@ -3351,12 +3457,12 @@ A versão local é %1 e a versão remota é %2. %1 puts %2%3 into her graveyard. - + %1 põe %2%3 em seu cemitério. %1 puts %2%3 into his graveyard. - + %1 põe %2%3 em seu cemitério. @@ -3482,62 +3588,74 @@ A versão local é %1 e a versão remota é %2. MessagesSettingsPage - + Chat settings Configurações de Conversa - + + Custom alert words + + + + Enable chat mentions Habilitar menções em conversa - + + Enable mention completer + + + + In-game message macros Mensagem no jogo - - Ignore unregistered users in main chat - Ignorar usuários não registrados na Conversa principal + + Ignore chat room messages sent by unregistered users + - - Ignore chat room messages sent by unregistered users. - Ignorar sala de conversa por mensagens enviadas por usuários não registrados. + + Ignore private messages sent by unregistered users + - - Ignore private messages sent by unregistered users. - Ignorar mensagens privadas enviadas por usuários não registrados. + + Enable desktop notifications for private messages + - + + Separate words with a space, alphanumeric characters only + + + + + Invert text color Inverter cor do texto - - Enable desktop notifications for private messages. - Habilitar notificações para mensagens privadas. - - - + Enable desktop notification for mentions. Habilitar notificações no desktop - + + (Color is hexadecimal) (Cor em hexadecimal) - + Add message Adicionar mensagem - + Message: Mensagem: @@ -3603,435 +3721,435 @@ A versão local é %1 e a versão remota é %2. Player - + &View library &Ver grimório - + Move top cards to &graveyard... Mover os cards do topo para o ce&mitério... - + View &top cards of library... Ver os cards do to&po do grimório... - + &View graveyard V&er cemitério - + &View sideboard &Ver sideboard - + Player "%1" Jogador "%1" - - - - + + + + &Hand &Mão - + &Reveal hand to... &Revelar carta para... - + Reveal r&andom card to... Revelar uma carta &aleatória para... - + &Library &Grimório - - - - + + + + &Graveyard &Cemitério - + &Sideboard &Sideboard - + Red - + Vermelho - + Yellow - + Amarelho - + Green - + Verde - + View top cards of library Ver os cards do topo do grimório - + Number of cards: Número de cards: - + &Draw card Co&mprar card - + Reveal top cards of library - + Revelar os cards do topo do grimório - + Number of cards: (max. %1) - + &View exile &Ver exílio - - - - + + + + &Exile &Exílio - + Reveal t&op cards to... - + Revelar os cards do t&opo para... - + D&raw cards... Comprar car&ds... - + Take &mulligan Pedir mu&lligan - + &Shuffle &Embaralhar - + &Counters &Marcadores - + &Untap all permanents Des&virar todos as permanentes - + R&oll die... &Jogar dado... - + &Create token... Criar fich&a... - + C&reate another token Criar &outra ficha - + S&ay &Falar - + &Move hand to... &Mover mão para... - - - - + + + + &Top of library &Topo do grimório - - - - + + + + &Bottom of library &Fundo do grimório - + &Move graveyard to... &Mover cemitério para... - + &Move exile to... &Mover exílio para... - + Reveal &library to... Revelar &grimório para... - + &Always reveal top card &Sempre revelar a carta do topo - + O&pen deck in deck editor &Abrir no editor de decks - + &Undo last draw Desfa&zer última compra - + Play top card &face down - + Move top cards to &exile... Mover os cards do topo para o e&xílio... - + Put top card on &bottom Colocar o card do topo no &fundo - + Put bottom card &in graveyard Colocar a carta do fundo no cemitério - + Cr&eate predefined token Cr&iar uma ficha predefinida - + C&ard C&ard - + &All players To&dos os jogadores - + &Play &Jogar - + &Hide &Ocultar - + Play &Face Down Jogar com a &Face-para-Baixo - + &Tap &Virar - + &Untap &Desvirar - + Toggle &normal untapping &Trocar o modo de desvirar - + &Flip Virar a &face - + &Peek at card face &Olhar a face da carta - + &Clone Clo&nar - + Attac&h to card... Ane&xar na carta... - + Unattac&h De&sanexar - + &Draw arrow... &Comprar de... - + &Increase power Au&mentar poder - + &Decrease power Dimi&nuir poder - + I&ncrease toughness A&umentar resistência - + D&ecrease toughness D&iminuir resistência - + In&crease power and toughness Aumen&tar poder e resistência - + Dec&rease power and toughness Diminuir p&oder e resistência - + Set &power and toughness... Definir poder e resis&tência... - + &Set annotation... Definir &nota... - + &Add counter (%1) &Adicionar contador (%1) - + &Remove counter (%1) &Remover marcador (%1) - + &Set counters (%1)... &Definir contadores (%1)... - + Draw cards Comprar cards - - - - + + + + Number: Número: - + Move top cards to grave Mover os cards do topo para o cemitério - + Move top cards to exile Mover os cards do topo para o exílio - + Roll die Jogar dado - + Number of sides: Número de lados: - + Set power/toughness Alterar poder/resistência - + Please enter the new PT: Por favor, entre com o novo P/R: - + Set annotation Alterar nota - + Please enter the new annotation: Por favor, entre com a nova nota: - + Set counters Alterar marcadores - + Cr&eate related card @@ -4039,37 +4157,37 @@ A versão local é %1 e a versão remota é %2. QMenuBar - + Services Serviços - + Hide %1 Esconder %1 - + Hide Others Esconder outros - + Show All Mostrar tudo - + Preferences... Preferências - + Quit %1 Sair %1 - + About %1 Sobre %1 @@ -4077,7 +4195,7 @@ A versão local é %1 e a versão remota é %2. QObject - + Cockatrice replays (*.cor) Cockatrice replays (*.cor) @@ -4146,35 +4264,64 @@ A versão local é %1 e a versão remota é %2. RoomSelector - + Rooms Salas - + Joi&n &Entrar - + Room Sala - + Description Descrição - + + Permissions + + + + Players Jogadores - + Games Jogos + + + + Error + + + + + You do not have the proper permission to join this room. + + + + + Failed to join the room due to an unknown error. + + + + + SequenceEdit + + + Shortcut already in use + + SetsModel @@ -4225,37 +4372,37 @@ A versão local é %1 e a versão remota é %2. SoundSettingsPage - + Choose path - + Escolher caminho - + Enable &sounds - + Habilitar &sons - + Path to sounds directory: - + Caminho para diretório de sons - + Test system sound engine - + Testar sistema de som - + Sound settings - + Configurações de som - + Master volume requires QT5 - + Master volume @@ -4311,186 +4458,221 @@ A versão local é %1 e a versão remota é %2. TabDeckEditor - + &Print deck... &Imprimir deck... - + &Close &Fechar - + &Edit sets... &Editar expansões... - + Filters - + &Clear all filters - + Delete selected - + Deck &name: Nome do &deck: - + &Comments: &Comentários: - + Hash: Hash: - + &New deck &Novo deck - + &Load deck... &Carregar deck - + &Save deck &Salvar deck - + Save deck &as... Salvar deck &como... - + Load deck from cl&ipboard... Carregar deck da área de &transferência... - + Save deck to clip&board Salvar deck para a área de &transferência - + &Analyze deck on deckstats.net &Analisar deck no deckstats.net - + Open custom image folder - + + Open custom sets folder + + + + Add card to &maindeck Adicionar carta ao &maindeck - + Add card to &sideboard Adicionar carta ao &sideboard - + &Deck Editor - + Editor de &Decks - + C&ard Database + Banco de dados de &Cartas + + + + Show/Hide card information - + + Show/Hide deck + + + + + Show/Hide filters + + + + + Reset layout + + + + + Card Info + + + + + Deck + + + + Welcome - + Hi! It seems like you're running this version of Cockatrice for the first time. All the sets in the card database have been enabled. Read more about changing the set order or disabling specific sets and consequent effects in the "Edit Sets" window. - + &Remove row &Remover linha - + &Increment number &Aumentar número - + &Decrement number &Diminuir número - + Edit &tokens... Editar ficha - + Deck: %1 Deck: %1 - + Are you sure? Você tem certeza? - + The decklist has been modified. Do you want to save the changes? O deck foi modificado. Você deseja salvar as alterações? - + Load deck Carregar deck - - - + + + Error Erro - + The deck could not be saved. O deck não pode ser salvo. - - + + The deck could not be saved. Please check that the directory is writable and try again. O deck não pôde ser salvo. Por favor, verifique se o diretório não é somente leitura e tente novamente. - + Save deck Salvar deck @@ -4588,97 +4770,97 @@ Por favor, entre um nome: TabGame - + &Phases &Etapas - + &Game &Jogo - + Next &phase Próxima &etapa - + Next &turn Próximo &turno - + &Remove all local arrows &Apagar todas as setas locais - + Rotate View Cl&ockwise - + Rotate View Co&unterclockwise - + Game &information &Informação de jogo - + &Concede &Conceder - + &Leave game &Sair do jogo - + C&lose replay &Fechar replay - + &Say: &Falar: - + Concede Conceder - + Are you sure you want to concede this game? Você tem certeza que deseja conceder este jogo? - + Leave game Sair do jogo - + Are you sure you want to leave this game? Você tem certeza que deseja sair deste jogo? - + You are flooding the game. Please wait a couple of seconds. Você está 'flodando' o chat (jogo). Por favor, espere alguns segundos. - + You have been kicked out of the game. Você foi 'chutado' do jogo. - + REPLAY @@ -4784,47 +4966,47 @@ Por favor, entre um nome: TabRoom - + &Say: &Falar: - + Chat Chat - + &Room &Sala - + &Leave room S&air da sala - + &Clear chat Limpar conversa - + Chat Settings... Configurações de Conversa - + mentioned you. mencionou você. - + Click to view Clique para ver - + You are flooding the chat. Please wait a couple of seconds. Você está flodando o chat. Por favor, espere alguns segundos. @@ -4840,15 +5022,25 @@ Por favor, entre um nome: TabSupervisor - + Are you sure? Você tem certeza? - + There are still open games. Are you sure you want to quit? Ainda existem jogos abertos. Você tem certeza que deseja sair? + + + Promotion + + + + + You have been promoted to moderator. Please log out and back in for changes to take effect. + + TabUserLists @@ -4871,55 +5063,97 @@ Por favor, entre um nome: UserContextMenu - + User &details &Detalhes do usuário - + Private &chat Conversa privada - + Show this user's &games Mostrar este usuário de jogo - + Add to &buddy list Adicionar à &lista de amigos - + Remove from &buddy list Remover da li&sta de amigos - + Add to &ignore list Adicionar à li&sta dos ignorados - + Remove from &ignore list Remover da lista dos i&gnorados - + Kick from &game C&hutar do jogo - + Ban from &server Ban&ir do servidor - + + &Promote user to moderator + + + + + Dem&ote user from moderator + + + + %1's games Jogos de %1 + + + + Success + + + + + Successfully promoted user. + + + + + Successfully demoted user. + + + + + + Failed + + + + + Failed to promote user. + + + + + Failed to demote user. + + UserInfoBox @@ -4956,7 +5190,7 @@ Por favor, entre um nome: Edit - + Editar @@ -5019,7 +5253,7 @@ Por favor, entre um nome: Information - + Informação @@ -5036,7 +5270,7 @@ Por favor, entre um nome: Error - + Erro @@ -5088,42 +5322,42 @@ Por favor, entre um nome: UserInterfaceSettingsPage - + General interface settings Configurações gerais de interface - + Enable notifications in taskbar Habilitar notificações na barra de tarefas - + Notify in the taskbar for game events while you are spectating Notificar na barra de tarefas para eventos do jogo enquanto você está como espectador - + &Double-click cards to play them (instead of single-click) &Duplo clique nos cards para jogá-los (ao invés de clique simples) - + &Play all nonlands onto the stack (not the battlefield) by default &Jogar todos não terrenos na pilha (não campo de batalha) por padrão - + Annotate card text on tokens - + Animation settings Configurações de animação - + &Tap/untap animation Animação de &virar/desvirar @@ -5131,22 +5365,22 @@ Por favor, entre um nome: UserList - + Users connected to server: %1 - + Users in this room: %1 Usuários nesta sala: %1 - + Buddies online: %1 / %2 Amigos online: %1 / %2 - + Ignored users online: %1 / %2 Usuários ignorados online: %1 / %2 @@ -5171,7 +5405,7 @@ Por favor, entre um nome: Move selected set to the top - + Mover o selecionado para o topo @@ -5181,7 +5415,7 @@ Por favor, entre um nome: Move selected set to the bottom - + Mover o selecionado para o fundo @@ -5205,7 +5439,7 @@ Por favor, entre um nome: - Disabled sets will still be used for loading images + Disabled sets will be used for loading images only if all the enabled sets failed @@ -5214,12 +5448,12 @@ Por favor, entre um nome: Editar expansões - + Success Sucesso - + The sets database has been saved successfully. Estas edições foram salvas com sucesso. @@ -5247,4 +5481,561 @@ Por favor, entre um nome: visualização da pilha + + shortcutsTab + + + Form + + + + + Main Window + + + + + Deck editor + + + + + Local gameplay + + + + + Watch replay + + + + + Connect + + + + + Register + + + + + Full screen + + + + + Settings + + + + + Check for card updates + + + + + Exit + + + + + Deck Editor + + + + + Analyze deck + + + + + Load deck (clipboard) + + + + + Clerar all filters + + + + + New deck + + + + + Clear one filter + + + + + Open custom folder + + + + + Close + + + + + Print deck + + + + + Edit sets + + + + + Delete card + + + + + Edit tokens + + + + + Reset layout + + + + + Add card + + + + + Save deck + + + + + Remove card + + + + + Save deck as + + + + + Load deck + + + + + Save deck (clipboard) + + + + + + Counters + + + + + Life + + + + + + + + + Set + + + + + + + + Add + + + + + + + + Remove + + + + + Red + + + + + Green + + + + + Yellow + + + + + Mainwindow / Deck editor + + + + + Power / toughness + + + + + Power and toughness + + + + + Add (+1/+1) + + + + + Remove (-1/-1) + + + + + Toughness + + + + + Remove (-0/-1) + + + + + Add (+0/+1) + + + + + Power + + + + + Remove (-1/-0) + + + + + Add (+1/+0) + + + + + Game Phases + + + + + Untap + + + + + Disconnect + + + + + Upkeep + + + + + + Draw + + + + + Main 1 + + + + + Start combat + + + + + Attack + + + + + Block + + + + + Damage + + + + + End combat + + + + + Main 2 + + + + + End + + + + + Next phase + + + + + Next turn + + + + + Player + + + + + Tap Card + + + + + Untap Card + + + + + Untap all + + + + + Toogle untap + + + + + Flip card + + + + + Peek card + + + + + Play card + + + + + Attach card + + + + + Unattach card + + + + + Clone card + + + + + Create token + + + + + Create another token + + + + + Set annotation + + + + + Phases / P/T / Player + + + + + Move card to + + + + + Bottom library + + + + + Top library + + + + + + Graveyard + + + + + + Exile + + + + + Hand + + + + + View + + + + + Library + + + + + Tops card of library + + + + + Sideboard + + + + + Close recent view + + + + + Pre-play + + + + + Load remote deck + + + + + Load local deck + + + + + Game play + + + + + Draw arrow + + + + + Leave game + + + + + Remove local arrows + + + + + Concede + + + + + Roll dice + + + + + Rotate view CW + + + + + Shuffle library + + + + + Rotate view CCW + + + + + Mulligan + + + + + Draw card + + + + + Draw cards + + + + + Undo draw + + + + + Always reveal top card + + + + + Draw / Move / View / Game play + + + \ No newline at end of file diff --git a/cockatrice/translations/cockatrice_ru.ts b/cockatrice/translations/cockatrice_ru.ts index 06f186ae..a03f7bb6 100644 --- a/cockatrice/translations/cockatrice_ru.ts +++ b/cockatrice/translations/cockatrice_ru.ts @@ -2,17 +2,17 @@ AbstractCounter - + &Set counter... &Установить жетоны... - + Set counter Установить жетоны - + New value for counter '%1': Количество жетонов '%1': @@ -20,89 +20,60 @@ AppearanceSettingsPage - - Zone background pictures - Фоновые изображения + + Theme settings + - - Hand background: - Фон руки + + Current theme: + - - Stack background: - Фон стека - - - - Table background: - Фон стола - - - - Player info background: - Фон информации о игроке - - - - Card back: - Рубашка - - - + Card rendering Отрисовка карт - + Display card names on cards having a picture Отображать название карты поверх изображения - + Scale cards on mouse over Увеличивать карты при наведении мыши - + Hand layout Расположение руки - + Display hand horizontally (wastes space) Отбражать руку горизонтально - + Enable left justification - + Table grid layout Сетка - + Invert vertical coordinate Инвертировать вертикальные координаты - + Minimum player count for multi-column layout: Минимальное количество игроков для столбчатого расположения: - - - - - - - Choose path - Выберите путь - BanDialog @@ -117,87 +88,110 @@ - + + ban client I&D + + + + Ban type - + &permanent ban - + &temporary ban - + &Days: - + &Hours: - + &Minutes: - + Duration of the ban - + Please enter the reason for the ban. This is only saved for moderators and cannot be seen by the banned person. Пожалуйста, назовите причину бана. Это необходимо для модераторов и не будет прочитано забаненным игроком. - + Please enter the reason for the ban that will be visible to the banned person. Пожалуйста, назовите причину бана, которая будет видна забаненному игроку. - + &OK &Ок - + &Cancel &Отмена - + Ban user from server Забанить игрока на этом сервере - + + + + Error Ошибка - - You have to select a name-based or IP-based ban, or both. + + You have to select a name-based, IP-based, clientId based, or some combination of the three to place a ban. + + + + + You must have a value in the name ban when selecting the name ban checkbox. + + + + + You must have a value in the ip ban when selecting the ip ban checkbox. + + + + + You must have a value in the clientid ban when selecting the clientid ban checkbox. CardDatabase - + New sets found Найдены новые издания - + %1 new set(s) have been found in the card database. Do you want to enable them? @@ -233,17 +227,17 @@ This is only saved for moderators and cannot be seen by the banned person. CardFrame - + Image - + Description - + Both @@ -299,27 +293,32 @@ This is only saved for moderators and cannot be seen by the banned person.Показывать полную информацию - + Name: Название: - + Mana cost: Мановая стоимость: - + + Color(s): + + + + Card type: Тип: - + P / T: Сила/Выносливость: - + Loyalty: Преданность @@ -583,12 +582,12 @@ This is only saved for moderators and cannot be seen by the banned person. DeckEditorSettingsPage - + Nothing is here... yet Здесь ничего нет... пока что - + General Основные @@ -596,17 +595,17 @@ This is only saved for moderators and cannot be seen by the banned person. DeckListModel - + Number Номер - + Card Название - + Price Цена @@ -628,42 +627,42 @@ This is only saved for moderators and cannot be seen by the banned person. DeckViewContainer - + Load local deck - + Load deck from server - + Ready to s&tart &Готов - + S&ideboard unlocked Сайдборд разблокирован - + S&ideboard locked Сайдборд заблокирован - + Load deck Загрузить колоду - + Error Ошибка - + The selected file could not be loaded. Выбранный файл не может быть загружен @@ -709,37 +708,52 @@ This is only saved for moderators and cannot be seen by the banned person. DlgConnect - + + Previous Host + + + + + New Host + + + + &Host: &Хост: - + + Enter host name + + + + &Port: &Порт: - + Player &name: &Ник: - + P&assword: П&ароль: - + &Save password &Сохранить пароль - + A&uto connect at start Подключаться при старте - + Connect to server Соединение @@ -747,82 +761,92 @@ This is only saved for moderators and cannot be seen by the banned person. DlgCreateGame - + &Description: &Подпись: - + &Password: &Пароль: - + P&layers: &Количество игроков: - + + Re&member settings + + + + Game type Формат игры - + Only &buddies can join Только для &своих - + Only &registered users can join Только для &зарег. пользователей - + Joining restrictions Ограничения - + &Spectators can watch & Зрители могут смотреть игру - + Spectators &need a password to watch Зрителям & необходим пароль для просмотра игры - + Spectators can see &hands Зрители могут видеть& руки игроков - + Spectators can &chat Позволить зрителям &комментировать - + Spectators Зрители - + + &Clear + + + + Create game Создать игру - + Game information Информация об игре - + Error Ошибка - + Server error. Ошибка сервера. @@ -963,32 +987,32 @@ To remove your current avatar, confirm without choosing a new image. DlgEditPassword - + Old password: - + New password: - + Confirm new password: - + Change password - + Error - + The new passwords don't match. @@ -1091,47 +1115,47 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgEditUser - + Email: - + Pronouns: - + Neutral - + Masculine - + Feminine - + Country: - + Undefined - + Real name: - + Edit user profile @@ -1139,47 +1163,47 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgFilterGames - + Show &unavailable games Показывать &недоступные игры - + Show &password protected games Показывать игры с &паролем - + Game &description: &Описание игры - + &Creator name: Имя &создателя - + &Game types Форматы &игры - + at &least: не &менее - + at &most: не &более - + Maximum player count Макс. количество игроков - + Filter games Фильтровать игры @@ -1187,7 +1211,7 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgLoadDeckFromClipboard - + &Refresh &Обновить @@ -1197,14 +1221,14 @@ Make sure to enable the 'token set' in the 'Edit sets...' di Загрузить колоду из буфера - - + + Error Ошибка - - + + Invalid deck list. Неверный деклист. @@ -1220,67 +1244,93 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgRegister - + &Host: - + &Port: - + Player &name: - + P&assword: - + + Password (again): + + + + Email: - + + Email (again): + + + + Pronouns: - + Neutral - + Masculine - + Feminine - + Undefined - + + + Registration Warning + + + + + Your passwords do not match, please try again. + + + + + Your email addresses do not match, please try again. + + + + Country: - + Real name: - + Register to server @@ -1288,19 +1338,19 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgSettings - - - + + + Error Ошибка - + Unknown Error loading card database Неизвестная ошибка во время загрузки - + Your card database is invalid. Cockatrice may not function correctly with an invalid database @@ -1311,7 +1361,7 @@ Would you like to change your database location setting? - + Your card database version is too old. This can cause problems loading card information or images @@ -1322,21 +1372,21 @@ Would you like to change your database location setting? - + File Error loading your card database. Would you like to change your database location setting? - + Your card database was loaded but contains no cards. Would you like to change your database location setting? - + Your card database did not finish loading Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues with your cards.xml attached @@ -1345,7 +1395,7 @@ Would you like to change your database location setting? - + Unknown card database load status Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues @@ -1354,50 +1404,55 @@ Would you like to change your database location setting? - + The path to your deck directory is invalid. Would you like to go back and set the correct path? Ваши колоды отсутствуют в указанной папке. Вернуться и задать правильный путь? - + The path to your card pictures directory is invalid. Would you like to go back and set the correct path? Изображения карт не найдены. Вернуться и задать правильный путь? - + Settings Настройки - + General Основные - + Appearance Внешний вид - + User Interface Пользовательский интерфейс - + Deck Editor Редактор колод - + Chat Чат - + Sound Звук + + + Shortcuts + + GameSelector @@ -1410,7 +1465,7 @@ Would you like to change your database location setting? - + Error Ошибка @@ -1455,47 +1510,47 @@ Would you like to change your database location setting? Вы добавлены в игнор-лист данного игрока. - + Join game Присоединиться - + Password: Пароль: - + Please join the respective room first. - + Games Игры + + + &Filter games + + - Filter games + C&lear filter - Clear filter + C&reate - - Create + + &Join - - Join - - - - + J&oin as spectator П&рисоединиться как зритель @@ -1612,107 +1667,112 @@ Would you like to change your database location setting? GeneralSettingsPage - + Reset/Clear Downloaded Pictures Обновить/удалить загруженные картинки - - - - - + + + + + Choose path Путь - + Success Выполнено - + Downloaded card pictures have been reset. Загруженные картинки были обновлены - + Error Ошибка - + One or more downloaded card pictures could not be cleared. - + Personal settings Личные настройки - + Language: Язык: - + Download card pictures on the fly Загружать изображения карт автоматически - + Download card pictures from a custom URL - + Custom Card Download URL: - + Linking FAQ - + + Notify when new client features are available + + + + Paths Расположение - + Decks directory: Колоды: - + Replays directory: Повторы: - + Pictures directory: Изображения карт: - + Card database: База данных карт: - + Token database: База данных токенов: - + Picture cache size: Размер кеша изображений: - - + + English Русский (Russian) @@ -1720,49 +1780,49 @@ Would you like to change your database location setting? MainWindow - + There are too many concurrent connections from your address. Слишком много одновременных подключений с Вашего адреса. - + Scheduled server shutdown. Плановый перерыв в работе сервера. - + Banned by moderator Забанен модератором - + Expected end time: %1 - + This ban lasts indefinitely. - + Connection closed Соединение прервано - + The server has terminated your connection. Reason: %1 Ваше подключение было прервано сервером. Причина: %1 - + Scheduled server shutdown Плановый перерыв в работе сервера - + The server is going to be restarted in %n minute(s). All running games will be lost. Reason for shutdown: %1 @@ -1771,452 +1831,498 @@ Reason for shutdown: %1 Причина перезагрузки: %1 - + Number of players Количество игроков - + Please enter the number of players. Введите количество игроков. - - + + Player %1 Игрок %1 - + Load replay Загрузить повтор - + About Cockatrice О программе - + Version %1 Версия %1 - + Translators: Переводчики: - + Project Manager: - - + + The server has reached its maximum user capacity, please check back later. + + + + + Invalid username. - - + + You have been logged out due to logging in at another location. + + + + + Success - + Registration accepted. Will now login. - + Account activation accepted. Will now login. - + Past Project Managers: - + Developers: Разработчики: - + Our Developers Наши разработчики - + Help Develop! - + Recognition Page - + Help Translate! Помоги перевести! - + Support: Поддержка: - + Report an Issue Сообщить о проблеме - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + Error Ошибка - + Server timeout Нет связи с сервером - + + Failed Login + + + + + Your client does not support features that the server requires, please update your client and try again. + + + + Incorrect username or password. Please check your authentication information and try again. - + There is already an active session using this user name. Please close that session first and re-login. Пользователь с таким именем уже подключен. Пожалуйста, закройте это подключение и войдите заново. - - + + You are banned until %1. - - + + You are banned indefinitely. - + This server requires user registration. Do you want to register now? - + + This server requires client ID's. Your client is either failing to generate an ID or you are running a modified client. +Please close and reopen your client to try again. + + + + + An internal error has occurred, please try closing and reopening your client and try again. If the error persists try updating your client to the most recent build and if need be contact your software provider. + + + + Account activation - - Your account has not been activated yet. - You need to provide the activation token received in the activation email - - - - - + Unknown login error: %1 - + + + +This usually means that your client version is out of date, and the server sent a reply your client doesn't understand. + + + + Your username must respect these rules: - + is %1 - %2 characters long - + can %1 contain lowercase characters - - - - + + + + NOT - + can %1 contain uppercase characters - + can %1 contain numeric characters - + can contain the following punctuation: %1 - + first character can %1 be a punctuation mark - + You may only use A-Z, a-z, 0-9, _, ., and - in your username. - - - - - + + + + + Registration denied - + Registration is currently disabled on this server - + There is already an existing account with the same user name. - + It's mandatory to specify a valid email address when registering. - + Too many registration attempts from your IP address. - + Password too short. - + Registration failed for a technical problem on the server. - + + Unknown registration error: %1 + + + + Account activation failed - + Socket error: %1 Ошибка сокета: %1 - + 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. Вы пытаетесь подключиться к несуществующему серверу. Пожалуйста, обновите Cockatrice или выберите другой сервер. Локальная версия %1, удаленная версия %2. - + Your Cockatrice client is obsolete. Please update your Cockatrice version. Local version is %1, remote version is %2. Ваш клиент Cockatrice устарел. Пожалуйста, обновите Cockatrice. Локальная версия %1, удаленная версия %2. - + Connecting to %1... Подключение к %1... - + Registering to %1 as %2... - + Disconnected Подключение прервано - + Connected, logging in at %1 - - Logged in as %1 at %2 - - - - + &Connect... Подключение... &С - + &Disconnect П&рервать подключение - + Start &local game... &Начать локальную игру... - + &Watch replay... &Смотреть повтор... - + &Deck editor Редактор &колод - + &Full screen Полный экран &F - + &Register to server... - + &Settings... Н&астройки - - + + &Exit &Выход - + A&ctions - + &Cockatrice &Cockatrice - + &About Cockatrice О про&грамме - + &Help &Справка - + Check for card updates... - + A card database update is already running. - + Unable to run the card database updater: - + The card database updater exited with an error: %1 - + Update completed successfully. Cockatrice will now reload the card database. - - + + Your client appears to be missing features that the server supports. +This usually means that your client version is out of date, please check to see if there is a new client available for download. + + + + + + Information Информация - + Troubleshooting - + F.A.Q. - + + Your account has not been activated yet. +You need to provide the activation token received in the activation email + + + + failed to start. - + crashed. - + timed out. - + write error. - + read error. - + unknown error. неизвестная ошибка. @@ -3456,62 +3562,74 @@ Local version is %1, remote version is %2. MessagesSettingsPage - + Chat settings Настройки чата - + + Custom alert words + + + + Enable chat mentions Включить упоминания в чате - + + Enable mention completer + + + + In-game message macros - - Ignore unregistered users in main chat - Игнорировать незарегистрированных пользователей в основном чате - - - - Ignore chat room messages sent by unregistered users. + + Ignore chat room messages sent by unregistered users - - Ignore private messages sent by unregistered users. + + Ignore private messages sent by unregistered users - + + Enable desktop notifications for private messages + + + + + Separate words with a space, alphanumeric characters only + + + + + Invert text color Инвертировать цвет текста - - Enable desktop notifications for private messages. - - - - + Enable desktop notification for mentions. - + + (Color is hexadecimal) - + Add message Добавить сообщение - + Message: Сообщение: @@ -3577,435 +3695,435 @@ Local version is %1, remote version is %2. Player - + &View library Просмортеть &библиотеку - + Move top cards to &graveyard... Поместить верхние карты на кладби&ще... - + View &top cards of library... Посмтореть верхние карт&ы... - + &View graveyard &Посмотреть кладбище - + &View sideboard Просмотреть &сайд - + Player "%1" Игрок "%1" - - - - + + + + &Hand Р&ука - + &Reveal hand to... Показать руку игроку.. &R - + Reveal r&andom card to... Показать случайную карту с руки игроку .. &a - + &Library &Библиотека - - - - + + + + &Graveyard &Кладбище - + &Sideboard &Сайд - + Red Красный - + Yellow Желтый - + Green Зеленый - + View top cards of library Просмотр верхних карт - + Number of cards: Количество: - + &Draw card В&зять карту - + Reveal top cards of library Показать верхние карты библиотеки - + Number of cards: (max. %1) Количество карт: (макс. %1) - + &View exile П&осмотреть изгнанные карты - - - - + + + + &Exile &Изгнание - + Reveal t&op cards to... - + D&raw cards... Вз&ять карты... - + Take &mulligan Взять стра&ховку - + &Shuffle Переме&шать - + &Counters &Жетоны - + &Untap all permanents &Развернуть все перманенты - + R&oll die... Бросить &кубик... - + &Create token... Создать &фишку... - + C&reate another token Создать &еще одну фишку - + S&ay Ска&зать - + &Move hand to... - - - - + + + + &Top of library - - - - + + + + &Bottom of library - + &Move graveyard to... - + &Move exile to... - + Reveal &library to... - + &Always reveal top card - + O&pen deck in deck editor - + &Undo last draw &Отменить последнее взятие - + Play top card &face down - + Move top cards to &exile... Поместить верхние карты в и&згнание... - + Put top card on &bottom Поместить верхн&юю карту на дно - + Put bottom card &in graveyard - + Cr&eate predefined token Создать готовый токен - + C&ard Ка&рта - + &All players &Все игроки - + &Play - + &Hide - + Play &Face Down - + &Tap &Повернуть - + &Untap &Развернуть - + Toggle &normal untapping - + &Flip - + &Peek at card face - + &Clone - + Attac&h to card... - + Unattac&h - + &Draw arrow... - + &Increase power - + &Decrease power - + I&ncrease toughness - + D&ecrease toughness - + In&crease power and toughness - + Dec&rease power and toughness - + Set &power and toughness... - + &Set annotation... - + &Add counter (%1) - + &Remove counter (%1) - + &Set counters (%1)... - + Draw cards Взять карты - - - - + + + + Number: Количество: - + Move top cards to grave Поместить верхние карты на кладбище - + Move top cards to exile Поместить верхние карты в изгнание - + Roll die Бросить кубик - + Number of sides: Количество граней: - + Set power/toughness Установить Силу/Защиту - + Please enter the new PT: Введите новые Силу/Защиту: - + Set annotation Пометка - + Please enter the new annotation: Введите текст: - + Set counters Установить жетоны - + Cr&eate related card @@ -4013,37 +4131,37 @@ Local version is %1, remote version is %2. QMenuBar - + Services - + Hide %1 - + Hide Others - + Show All - + Preferences... - + Quit %1 - + About %1 @@ -4051,7 +4169,7 @@ Local version is %1, remote version is %2. QObject - + Cockatrice replays (*.cor) @@ -4120,35 +4238,64 @@ Local version is %1, remote version is %2. RoomSelector - + Rooms Комнаты - + Joi&n &Присоединиться - + Room Комната - + Description Пометка - + + Permissions + + + + Players Игроки - + Games Игры + + + + Error + + + + + You do not have the proper permission to join this room. + + + + + Failed to join the room due to an unknown error. + + + + + SequenceEdit + + + Shortcut already in use + + SetsModel @@ -4199,37 +4346,37 @@ Local version is %1, remote version is %2. SoundSettingsPage - + Choose path - + Enable &sounds - + Path to sounds directory: - + Test system sound engine - + Sound settings - + Master volume requires QT5 - + Master volume @@ -4285,184 +4432,219 @@ Local version is %1, remote version is %2. TabDeckEditor - + &Print deck... - + &Close - + &Edit sets... - + Filters - + &Clear all filters - + Delete selected - + Deck &name: - + &Comments: - + Hash: - + &New deck - + &Load deck... - + &Save deck - + Save deck &as... - + Load deck from cl&ipboard... - + Save deck to clip&board - + &Analyze deck on deckstats.net - + Open custom image folder - + + Open custom sets folder + + + + Add card to &maindeck - + Add card to &sideboard - + &Deck Editor - + C&ard Database - + + Show/Hide card information + + + + + Show/Hide deck + + + + + Show/Hide filters + + + + + Reset layout + + + + + Card Info + + + + + Deck + + + + Welcome - + Hi! It seems like you're running this version of Cockatrice for the first time. All the sets in the card database have been enabled. Read more about changing the set order or disabling specific sets and consequent effects in the "Edit Sets" window. - + &Remove row - + &Increment number - + &Decrement number - + Edit &tokens... - + Deck: %1 - + Are you sure? - + The decklist has been modified. Do you want to save the changes? - + Load deck - - - + + + Error - + The deck could not be saved. - - + + The deck could not be saved. Please check that the directory is writable and try again. - + Save deck @@ -4560,97 +4742,97 @@ Please enter a name: TabGame - + &Phases &Фазы - + &Game &Игра - + Next &phase Следующая &фаза - + Next &turn Следующий &ход - + &Remove all local arrows &Удалить все указатели - + Rotate View Cl&ockwise - + Rotate View Co&unterclockwise - + Game &information Информация &об игре - + &Concede &Сдаться... - + &Leave game Покинуть и&гру - + C&lose replay З &акрыть повтор - + &Say: Ска&зать: - + Concede Сдаться - + Are you sure you want to concede this game? Вы точно хотите сдаться? - + Leave game Покинуть игру - + Are you sure you want to leave this game? Вы уверены, что хотите уйти? - + You are flooding the game. Please wait a couple of seconds. - + You have been kicked out of the game. - + REPLAY @@ -4756,47 +4938,47 @@ Please enter a name: TabRoom - + &Say: &Сказать: - + Chat Чат - + &Room &Комната - + &Leave room &Покинуть комнату - + &Clear chat & Обновить чат - + Chat Settings... Установки чата - + mentioned you. - + Click to view - + You are flooding the chat. Please wait a couple of seconds. Кажется, Вы нафлудили. Пожалуйста, подождите пару секунд. @@ -4812,15 +4994,25 @@ Please enter a name: TabSupervisor - + Are you sure? - + There are still open games. Are you sure you want to quit? + + + Promotion + + + + + You have been promoted to moderator. Please log out and back in for changes to take effect. + + TabUserLists @@ -4843,55 +5035,97 @@ Please enter a name: UserContextMenu - + User &details - + Private &chat - + Show this user's &games - + Add to &buddy list - + Remove from &buddy list - + Add to &ignore list - + Remove from &ignore list - + Kick from &game - + Ban from &server - + + &Promote user to moderator + + + + + Dem&ote user from moderator + + + + %1's games + + + + Success + + + + + Successfully promoted user. + + + + + Successfully demoted user. + + + + + + Failed + + + + + Failed to promote user. + + + + + Failed to demote user. + + UserInfoBox @@ -5060,42 +5294,42 @@ Please enter a name: UserInterfaceSettingsPage - + General interface settings Основные настройки интерфейса - + Enable notifications in taskbar - + Notify in the taskbar for game events while you are spectating - + &Double-click cards to play them (instead of single-click) &Двойной клик чтобы разыграть карту (вместо одинарного) - + &Play all nonlands onto the stack (not the battlefield) by default - + Annotate card text on tokens - + Animation settings Настройки анимации - + &Tap/untap animation &Анимировать поворот/разворот карты @@ -5103,22 +5337,22 @@ Please enter a name: UserList - + Users connected to server: %1 - + Users in this room: %1 Пользователей в этой комнате: %1 - + Buddies online: %1 / %2 Друзей онлайн: %1 / %2 - + Ignored users online: %1 / %2 Игнорируемых пользователей онлайн: %1 / %2 @@ -5177,7 +5411,7 @@ Please enter a name: - Disabled sets will still be used for loading images + Disabled sets will be used for loading images only if all the enabled sets failed @@ -5186,12 +5420,12 @@ Please enter a name: Редактировать издания - + Success Выполнено - + The sets database has been saved successfully. База данных по сетам успешно сохранена. @@ -5219,4 +5453,561 @@ Please enter a name: + + shortcutsTab + + + Form + + + + + Main Window + + + + + Deck editor + + + + + Local gameplay + + + + + Watch replay + + + + + Connect + + + + + Register + + + + + Full screen + + + + + Settings + + + + + Check for card updates + + + + + Exit + + + + + Deck Editor + + + + + Analyze deck + + + + + Load deck (clipboard) + + + + + Clerar all filters + + + + + New deck + + + + + Clear one filter + + + + + Open custom folder + + + + + Close + + + + + Print deck + + + + + Edit sets + + + + + Delete card + + + + + Edit tokens + + + + + Reset layout + + + + + Add card + + + + + Save deck + + + + + Remove card + + + + + Save deck as + + + + + Load deck + + + + + Save deck (clipboard) + + + + + + Counters + + + + + Life + + + + + + + + + Set + + + + + + + + Add + + + + + + + + Remove + + + + + Red + + + + + Green + + + + + Yellow + + + + + Mainwindow / Deck editor + + + + + Power / toughness + + + + + Power and toughness + + + + + Add (+1/+1) + + + + + Remove (-1/-1) + + + + + Toughness + + + + + Remove (-0/-1) + + + + + Add (+0/+1) + + + + + Power + + + + + Remove (-1/-0) + + + + + Add (+1/+0) + + + + + Game Phases + + + + + Untap + + + + + Disconnect + + + + + Upkeep + + + + + + Draw + + + + + Main 1 + + + + + Start combat + + + + + Attack + + + + + Block + + + + + Damage + + + + + End combat + + + + + Main 2 + + + + + End + + + + + Next phase + + + + + Next turn + + + + + Player + + + + + Tap Card + + + + + Untap Card + + + + + Untap all + + + + + Toogle untap + + + + + Flip card + + + + + Peek card + + + + + Play card + + + + + Attach card + + + + + Unattach card + + + + + Clone card + + + + + Create token + + + + + Create another token + + + + + Set annotation + + + + + Phases / P/T / Player + + + + + Move card to + + + + + Bottom library + + + + + Top library + + + + + + Graveyard + + + + + + Exile + + + + + Hand + + + + + View + + + + + Library + + + + + Tops card of library + + + + + Sideboard + + + + + Close recent view + + + + + Pre-play + + + + + Load remote deck + + + + + Load local deck + + + + + Game play + + + + + Draw arrow + + + + + Leave game + + + + + Remove local arrows + + + + + Concede + + + + + Roll dice + + + + + Rotate view CW + + + + + Shuffle library + + + + + Rotate view CCW + + + + + Mulligan + + + + + Draw card + + + + + Draw cards + + + + + Undo draw + + + + + Always reveal top card + + + + + Draw / Move / View / Game play + + + \ No newline at end of file diff --git a/cockatrice/translations/cockatrice_sv.ts b/cockatrice/translations/cockatrice_sv.ts index 17f40d45..3c5566f1 100644 --- a/cockatrice/translations/cockatrice_sv.ts +++ b/cockatrice/translations/cockatrice_sv.ts @@ -2,17 +2,17 @@ AbstractCounter - + &Set counter... &Placera polett... - + Set counter Placera polett - + New value for counter '%1': Nytt värde för '%1': @@ -20,89 +20,60 @@ AppearanceSettingsPage - - Zone background pictures - Zonbakgrundsbilder - - - - Hand background: + + Theme settings - - Stack background: + + Current theme: - - Table background: - - - - - Player info background: - - - - - Card back: - - - - + Card rendering Kortrendering - + Display card names on cards having a picture Visa kortnamn på kort som har bilder - + Scale cards on mouse over - + Hand layout Handlayout - + Display hand horizontally (wastes space) Visa hand horisontellt (slösar plats) - + Enable left justification - + Table grid layout Bordets rutnätlayout - + Invert vertical coordinate Invertera vertikal koordinat - + Minimum player count for multi-column layout: Minst antal spelare för multi-kolumnlayout: - - - - - - - Choose path - Välj sökväg - BanDialog @@ -117,87 +88,110 @@ bannlys &IP address - + + ban client I&D + + + + Ban type Typ av bannlysning - + &permanent ban &permanent bannlysning - + &temporary ban &temporär bannlysning - + &Days: &Dagar: - + &Hours: &Timmar: - + &Minutes: &Minuter: - + Duration of the ban Bannlysningens längd - + Please enter the reason for the ban. This is only saved for moderators and cannot be seen by the banned person. Vänligen ange anledningen till bannlysningen. Detta sparas endast för moderatorer och kan inte ses av den bannlysta personen. - + Please enter the reason for the ban that will be visible to the banned person. Vänligen ange en anledning för bannlysningen som kommer att visas för den bannlysta personen. - + &OK &OK - + &Cancel &Avbryt - + Ban user from server Bannlys användaren från servern - + + + + Error Fel - - You have to select a name-based or IP-based ban, or both. - Du måste väja en namnbaserad eller IP-baserad bannlysning, eller både och. + + You have to select a name-based, IP-based, clientId based, or some combination of the three to place a ban. + + + + + You must have a value in the name ban when selecting the name ban checkbox. + + + + + You must have a value in the ip ban when selecting the ip ban checkbox. + + + + + You must have a value in the clientid ban when selecting the clientid ban checkbox. + CardDatabase - + New sets found - + %1 new set(s) have been found in the card database. Do you want to enable them? @@ -233,17 +227,17 @@ Detta sparas endast för moderatorer och kan inte ses av den bannlysta personen. CardFrame - + Image - + Description - + Both @@ -299,27 +293,32 @@ Detta sparas endast för moderatorer och kan inte ses av den bannlysta personen. Vissa full info - + Name: Namn: - + Mana cost: Manakostnad: - + + Color(s): + + + + Card type: Korttyp: - + P / T: P / T: - + Loyalty: Lojalitet: @@ -583,12 +582,12 @@ Detta sparas endast för moderatorer och kan inte ses av den bannlysta personen. DeckEditorSettingsPage - + Nothing is here... yet - + General Allmänt @@ -596,17 +595,17 @@ Detta sparas endast för moderatorer och kan inte ses av den bannlysta personen. DeckListModel - + Number Nummer - + Card Kort - + Price Pris @@ -628,42 +627,42 @@ Detta sparas endast för moderatorer och kan inte ses av den bannlysta personen. DeckViewContainer - + Load local deck - + Load deck from server - + Ready to s&tart Redo att &börja - + S&ideboard unlocked S&idbräda upplåst - + S&ideboard locked S&idbräda låst - + Load deck Ladda lek - + Error Fel - + The selected file could not be loaded. Den valda filen kunde ej laddas. @@ -709,37 +708,52 @@ Detta sparas endast för moderatorer och kan inte ses av den bannlysta personen. DlgConnect - + + Previous Host + + + + + New Host + + + + &Host: &Värd: - + + Enter host name + + + + &Port: &Port: - + Player &name: Spelar&namn: - + P&assword: &Lösenord: - + &Save password &Spara lösenord - + A&uto connect at start - + Connect to server Anslut till server @@ -747,82 +761,92 @@ Detta sparas endast för moderatorer och kan inte ses av den bannlysta personen. DlgCreateGame - + &Description: &Beskrivning: - + &Password: &Lösenord: - + P&layers: &Spelare: - + + Re&member settings + + + + Game type Speltyp - + Only &buddies can join Endast &vänner kan ansluta - + Only &registered users can join Endast &registerade användare kan ansluta - + Joining restrictions Anslutingsbegränsningar - + &Spectators can watch - + Spectators &need a password to watch - + Spectators can see &hands - + Spectators can &chat Åskådare kan &chatta - + Spectators Åskådare - + + &Clear + + + + Create game Skapa spel - + Game information Spelinformation - + Error Fel - + Server error. Serverfel. @@ -963,32 +987,32 @@ To remove your current avatar, confirm without choosing a new image. DlgEditPassword - + Old password: - + New password: - + Confirm new password: - + Change password - + Error - + The new passwords don't match. @@ -1091,47 +1115,47 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgEditUser - + Email: - + Pronouns: - + Neutral - + Masculine - + Feminine - + Country: - + Undefined - + Real name: - + Edit user profile @@ -1139,47 +1163,47 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgFilterGames - + Show &unavailable games Visa &otillgängliga spel - + Show &password protected games - + Game &description: Spel&beskrivning: - + &Creator name: S&kaparens namn: - + &Game types &Speltyper - + at &least: &Minst: - + at &most: M&ax: - + Maximum player count Maximalt antal spelare - + Filter games Filtrera spel @@ -1187,7 +1211,7 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgLoadDeckFromClipboard - + &Refresh &Uppdatera @@ -1197,14 +1221,14 @@ Make sure to enable the 'token set' in the 'Edit sets...' di Ladda lek från urklipp - - + + Error Fel - - + + Invalid deck list. Ogiltig leklista. @@ -1220,67 +1244,93 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgRegister - + &Host: - + &Port: - + Player &name: - + P&assword: - + + Password (again): + + + + Email: - + + Email (again): + + + + Pronouns: - + Neutral - + Masculine - + Feminine - + Undefined - + + + Registration Warning + + + + + Your passwords do not match, please try again. + + + + + Your email addresses do not match, please try again. + + + + Country: - + Real name: - + Register to server @@ -1288,19 +1338,19 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgSettings - - - + + + Error Fel - + Unknown Error loading card database - + Your card database is invalid. Cockatrice may not function correctly with an invalid database @@ -1311,7 +1361,7 @@ Would you like to change your database location setting? - + Your card database version is too old. This can cause problems loading card information or images @@ -1322,21 +1372,21 @@ Would you like to change your database location setting? - + File Error loading your card database. Would you like to change your database location setting? - + Your card database was loaded but contains no cards. Would you like to change your database location setting? - + Your card database did not finish loading Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues with your cards.xml attached @@ -1345,7 +1395,7 @@ Would you like to change your database location setting? - + Unknown card database load status Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues @@ -1354,50 +1404,55 @@ Would you like to change your database location setting? - + The path to your deck directory is invalid. Would you like to go back and set the correct path? Sökvägen till din lekkatalog är ogiltig. Vill du gå tillbaka och ange den korrekta sökvägen? - + The path to your card pictures directory is invalid. Would you like to go back and set the correct path? Sökvägen till din kortbildsdatabas är ogiltig. Vill du gå tillbaka och ange den korrekta sökvägen? - + Settings Inställningar - + General Allmänt - + Appearance Utseende - + User Interface - + Deck Editor - + Chat - + Sound + + + Shortcuts + + GameSelector @@ -1410,7 +1465,7 @@ Would you like to change your database location setting? - + Error Fel @@ -1455,47 +1510,47 @@ Would you like to change your database location setting? Spelets skapare ignorerar dig. - + Join game Anslut till spel - + Password: Lösenord: - + Please join the respective room first. Vänligen anslut till respektive rum först. - + Games Spel + + + &Filter games + + - Filter games + C&lear filter - Clear filter + C&reate - - Create + + &Join - - Join - - - - + J&oin as spectator Anslut som &åskådare @@ -1612,107 +1667,112 @@ Would you like to change your database location setting? GeneralSettingsPage - + Reset/Clear Downloaded Pictures - - - - - + + + + + Choose path Välj sökväg - + Success - + Downloaded card pictures have been reset. - + Error - + One or more downloaded card pictures could not be cleared. - + Personal settings Personliga inställningar - + Language: Språk: - + Download card pictures on the fly Ladda ner kortbilder på direkten - + Download card pictures from a custom URL - + Custom Card Download URL: - + Linking FAQ - - Paths - Sökvägar - - - - Decks directory: - Lekkatalog: - - - - Replays directory: - Repriskatalog: - - - - Pictures directory: - Bildkatalog: - - - - Card database: - - - - - Token database: + + Notify when new client features are available + Paths + Sökvägar + + + + Decks directory: + Lekkatalog: + + + + Replays directory: + Repriskatalog: + + + + Pictures directory: + Bildkatalog: + + + + Card database: + + + + + Token database: + + + + Picture cache size: - - + + English Svenska (Swedish) @@ -1720,49 +1780,49 @@ Would you like to change your database location setting? MainWindow - + There are too many concurrent connections from your address. Din adress har för många uppkopplingar samtidigt. - + Scheduled server shutdown. Schemalagd serverstängning. - + Banned by moderator Bannlyst av moderator - + Expected end time: %1 Förväntad sluttid: %1 - + This ban lasts indefinitely. Denna bannlysning varar för evigt. - + Connection closed Uppkoppling avslutad - + The server has terminated your connection. Reason: %1 Servern har avslutat din uppkoppling. Anledning: %1 - + Scheduled server shutdown Schemalagd serverstängning - + The server is going to be restarted in %n minute(s). All running games will be lost. Reason for shutdown: %1 @@ -1773,452 +1833,498 @@ Alla pågående spel kommer att gå förlorade. Anledning till nedstängning: %1 - + Number of players Antal spelare - + Please enter the number of players. Vänligen ange antal spelare. - - + + Player %1 Spelare %1 - + Load replay Ladda repris - + About Cockatrice Om Cockatrice - + Version %1 Version %1 - + Translators: Översättare: - + Project Manager: - - + + The server has reached its maximum user capacity, please check back later. + + + + + Invalid username. - - + + You have been logged out due to logging in at another location. + + + + + Success - + Registration accepted. Will now login. - + Account activation accepted. Will now login. - + Past Project Managers: - + Developers: - + Our Developers - + Help Develop! - + Recognition Page - + Help Translate! - + Support: - + Report an Issue - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + Error Fel - + Server timeout Server timeout - + + Failed Login + + + + + Your client does not support features that the server requires, please update your client and try again. + + + + Incorrect username or password. Please check your authentication information and try again. - + There is already an active session using this user name. Please close that session first and re-login. Det finns redan en aktiv session med det användarnamnet. Vänligen stäng den sessionen först och försök igen. - - + + You are banned until %1. Du är bannlyst till %1. - - + + You are banned indefinitely. Du är bannlyst för evigt. - + This server requires user registration. Do you want to register now? - + + This server requires client ID's. Your client is either failing to generate an ID or you are running a modified client. +Please close and reopen your client to try again. + + + + + An internal error has occurred, please try closing and reopening your client and try again. If the error persists try updating your client to the most recent build and if need be contact your software provider. + + + + Account activation - - Your account has not been activated yet. - You need to provide the activation token received in the activation email - - - - - + Unknown login error: %1 Okänt inloggningsfel: %1 - + + + +This usually means that your client version is out of date, and the server sent a reply your client doesn't understand. + + + + Your username must respect these rules: - + is %1 - %2 characters long - + can %1 contain lowercase characters - - - - + + + + NOT - + can %1 contain uppercase characters - + can %1 contain numeric characters - + can contain the following punctuation: %1 - + first character can %1 be a punctuation mark - + You may only use A-Z, a-z, 0-9, _, ., and - in your username. - - - - - + + + + + Registration denied - + Registration is currently disabled on this server - + There is already an existing account with the same user name. - + It's mandatory to specify a valid email address when registering. - + Too many registration attempts from your IP address. - + Password too short. - + Registration failed for a technical problem on the server. - + + Unknown registration error: %1 + + + + Account activation failed - + Socket error: %1 Socketfel: %1 - + 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. Du försöker koppla upp dig till en föråldrad server. Vänligen nergradera din version av Cockatrice eller koppla upp dig till en lämplig server. Lokal version är %1, avlägsen version är %2. - + Your Cockatrice client is obsolete. Please update your Cockatrice version. Local version is %1, remote version is %2. Din version av Cockatrice är föråldrad. Vänligen uppdatera din version av Cockatrice. Lokal version är %1, avlägsen version är %2. - + Connecting to %1... Ansluter till %1... - + Registering to %1 as %2... - + Disconnected Frånkopplad - + Connected, logging in at %1 Uppkopplad, loggar in hos %1 - - Logged in as %1 at %2 - - - - + &Connect... &Anslut... - + &Disconnect &Frånkoppla - + Start &local game... Starta &lokalt spel... - + &Watch replay... &Titta på repris... - + &Deck editor Lek&redigeraren - + &Full screen &Fullskärmsläge - + &Register to server... - + &Settings... &Inställningar... - - + + &Exit A&vsluta - + A&ctions - + &Cockatrice &Cockatrice - + &About Cockatrice &Om Cockatrice - + &Help &Hjälp - + Check for card updates... - + A card database update is already running. - + Unable to run the card database updater: - + The card database updater exited with an error: %1 - + Update completed successfully. Cockatrice will now reload the card database. - - + + Your client appears to be missing features that the server supports. +This usually means that your client version is out of date, please check to see if there is a new client available for download. + + + + + + Information - + Troubleshooting - + F.A.Q. - + + Your account has not been activated yet. +You need to provide the activation token received in the activation email + + + + failed to start. - + crashed. - + timed out. - + write error. - + read error. - + unknown error. @@ -3458,62 +3564,74 @@ Lokal version är %1, avlägsen version är %2. MessagesSettingsPage - + Chat settings - + + Custom alert words + + + + Enable chat mentions - + + Enable mention completer + + + + In-game message macros - - Ignore unregistered users in main chat + + Ignore chat room messages sent by unregistered users - - Ignore chat room messages sent by unregistered users. + + Ignore private messages sent by unregistered users - - Ignore private messages sent by unregistered users. + + Enable desktop notifications for private messages - + + Separate words with a space, alphanumeric characters only + + + + + Invert text color - - Enable desktop notifications for private messages. - - - - + Enable desktop notification for mentions. - + + (Color is hexadecimal) - + Add message Lägg till meddelande - + Message: Meddelande: @@ -3579,435 +3697,435 @@ Lokal version är %1, avlägsen version är %2. Player - + &View library &Titta på leken - + Move top cards to &graveyard... Flytta översta korten till &kyrkogården... - + View &top cards of library... Titta på de &översta korten i leken... - + &View graveyard &Titta på kyrkogård - + &View sideboard &Titta på sidbrädan - + Player "%1" Spelare "%1" - - - - + + + + &Hand &Hand - + &Reveal hand to... - + Reveal r&andom card to... - + &Library &Lek - - - - + + + + &Graveyard &Kyrkogård - + &Sideboard S&idbräda - + Red - + Yellow - + Green - + View top cards of library Titta på de översta korten i leken - + Number of cards: Antal kort: - + &Draw card &Dra kort - + Reveal top cards of library - + Number of cards: (max. %1) - + &View exile &Titta på exil - - - - + + + + &Exile &Exil - + Reveal t&op cards to... - + D&raw cards... D&ra kort... - + Take &mulligan &Mulligan - + &Shuffle &Blanda - + &Counters &Poletter - + &Untap all permanents Tappa upp alla perma&nenta kort - + R&oll die... Rulla t&ärning... - + &Create token... &Skapa jetong... - + C&reate another token S&kapa en till jetong - + S&ay S&äg - + &Move hand to... - - - - + + + + &Top of library - - - - + + + + &Bottom of library - + &Move graveyard to... - + &Move exile to... - + Reveal &library to... - + &Always reveal top card &Avslöja alltid det översta kortet - + O&pen deck in deck editor &Öppna lek i lekredigeraren - + &Undo last draw &Ångra senaste drag - + Play top card &face down - + Move top cards to &exile... Flytta översta korten till &exil... - + Put top card on &bottom Placera översta kortet &underst - + Put bottom card &in graveyard - + Cr&eate predefined token Skapa fördefinierad &jetong - + C&ard K&ort - + &All players A&lla spelare - + &Play &Spela - + &Hide &Göm - + Play &Face Down - + &Tap &Tappa - + &Untap Tappa &upp - + Toggle &normal untapping Växla &normal upptappning - + &Flip &Vänd - + &Peek at card face Kika på kort&framsida - + &Clone &Klona - + Attac&h to card... &Fäst på kort... - + Unattac&h Se&parera - + &Draw arrow... &Rita pil... - + &Increase power &Öka power - + &Decrease power &Minska power - + I&ncrease toughness Öka toug&hness - + D&ecrease toughness Minska t&oughness - + In&crease power and toughness Öka power o&ch toughness - + Dec&rease power and toughness M&inska power och toughness - + Set &power and toughness... An&ge power och toughness... - + &Set annotation... Ang&e annotering... - + &Add counter (%1) P&lacera polett (%1) - + &Remove counter (%1) Ta &bort polett (%1) - + &Set counters (%1)... Pl&acera poletter (%1)... - + Draw cards Dra kort - - - - + + + + Number: Antal: - + Move top cards to grave Flytta översta korten till kyrkogården - + Move top cards to exile Flytta översta korten till exil - + Roll die Rulla tärning - + Number of sides: Antal sidor: - + Set power/toughness Ange power/toughness - + Please enter the new PT: Vänligen ange ny PT: - + Set annotation Ange annotering - + Please enter the new annotation: Vänligen ange den nya annoteringen: - + Set counters Placera poletter - + Cr&eate related card @@ -4015,37 +4133,37 @@ Lokal version är %1, avlägsen version är %2. QMenuBar - + Services - + Hide %1 - + Hide Others - + Show All - + Preferences... - + Quit %1 - + About %1 @@ -4053,7 +4171,7 @@ Lokal version är %1, avlägsen version är %2. QObject - + Cockatrice replays (*.cor) Cockatricerepriser (*.cor) @@ -4122,35 +4240,64 @@ Lokal version är %1, avlägsen version är %2. RoomSelector - + Rooms Rum - + Joi&n &Anslut - + Room Rum - + Description Beskrivning - + + Permissions + + + + Players Spelare - + Games Spel + + + + Error + + + + + You do not have the proper permission to join this room. + + + + + Failed to join the room due to an unknown error. + + + + + SequenceEdit + + + Shortcut already in use + + SetsModel @@ -4201,37 +4348,37 @@ Lokal version är %1, avlägsen version är %2. SoundSettingsPage - + Choose path - + Enable &sounds - + Path to sounds directory: - + Test system sound engine - + Sound settings - + Master volume requires QT5 - + Master volume @@ -4287,185 +4434,220 @@ Lokal version är %1, avlägsen version är %2. TabDeckEditor - + &Print deck... Skri&v ut lek... - + &Close S&täng - + &Edit sets... Redigera utg&åvor... - + Filters - + &Clear all filters - + Delete selected - + Deck &name: &Leknamn: - + &Comments: &Kommentarer: - + Hash: Hash: - + &New deck &Ny lek - + &Load deck... &Ladda lek... - + &Save deck S&para lek - + Save deck &as... Spa&ra lek som... - + Load deck from cl&ipboard... Ladda lek &från urklipp... - + Save deck to clip&board Spara lek som u&tklipp - + &Analyze deck on deckstats.net &Anslysera lek på deckstats.net - + Open custom image folder - + + Open custom sets folder + + + + Add card to &maindeck Lägg till kort till &huvudlek - + Add card to &sideboard Lägg till kort i sidbr&äda - + &Deck Editor - + C&ard Database - + + Show/Hide card information + + + + + Show/Hide deck + + + + + Show/Hide filters + + + + + Reset layout + + + + + Card Info + + + + + Deck + + + + Welcome - + Hi! It seems like you're running this version of Cockatrice for the first time. All the sets in the card database have been enabled. Read more about changing the set order or disabling specific sets and consequent effects in the "Edit Sets" window. - + &Remove row Ta bort ra&d - + &Increment number &Öka antal - + &Decrement number &Minska antal - + Edit &tokens... Redigera &jetonger... - + Deck: %1 Lek: %1 - + Are you sure? Är du säker? - + The decklist has been modified. Do you want to save the changes? Denna leklista har modifierats. Vill du spara ändringarna? - + Load deck Ladda lek - - - + + + Error Fel - + The deck could not be saved. Leken kunde inte sparas. - - + + The deck could not be saved. Please check that the directory is writable and try again. Leken kunde inte sparas. Vänligen se till att katalogen är skrivbar och försök igen. - + Save deck Spara lek @@ -4562,97 +4744,97 @@ Please enter a name: TabGame - + &Phases &Faser - + &Game &Spel - + Next &phase Nästa &fas - + Next &turn Nästa &tur - + &Remove all local arrows Ta &bort alla lokala pilar - + Rotate View Cl&ockwise - + Rotate View Co&unterclockwise - + Game &information Spel&information - + &Concede &Ge upp - + &Leave game &Lämna spel - + C&lose replay S&täng repris - + &Say: S&äg: - + Concede Ge upp - + Are you sure you want to concede this game? Är du säker på att du vill ge upp detta spel? - + Leave game Lämna spel - + Are you sure you want to leave this game? Är du säker på att du vill lämna detta spel? - + You are flooding the game. Please wait a couple of seconds. - + You have been kicked out of the game. - + REPLAY @@ -4758,47 +4940,47 @@ Please enter a name: TabRoom - + &Say: &Säg: - + Chat Chatt - + &Room &Rum - + &Leave room &Lämna rum - + &Clear chat - + Chat Settings... - + mentioned you. - + Click to view - + You are flooding the chat. Please wait a couple of seconds. Du översvämmar chatten. Var vänlig vänta ett par sekunder. @@ -4814,15 +4996,25 @@ Please enter a name: TabSupervisor - + Are you sure? - + There are still open games. Are you sure you want to quit? + + + Promotion + + + + + You have been promoted to moderator. Please log out and back in for changes to take effect. + + TabUserLists @@ -4845,55 +5037,97 @@ Please enter a name: UserContextMenu - + User &details Användar&detaljer - + Private &chat - + Show this user's &games Visa denna användarens &spel - + Add to &buddy list Lägg till som &vän - + Remove from &buddy list Ta bort som &vän - + Add to &ignore list &Ignorera - + Remove from &ignore list Sluta &ignorera - + Kick from &game &Sparka från spelet - + Ban from &server &Bannlys från servern - + + &Promote user to moderator + + + + + Dem&ote user from moderator + + + + %1's games %1's spel + + + + Success + + + + + Successfully promoted user. + + + + + Successfully demoted user. + + + + + + Failed + + + + + Failed to promote user. + + + + + Failed to demote user. + + UserInfoBox @@ -5062,42 +5296,42 @@ Please enter a name: UserInterfaceSettingsPage - + General interface settings Allmänna gränssnittsinställningar - + Enable notifications in taskbar - + Notify in the taskbar for game events while you are spectating - + &Double-click cards to play them (instead of single-click) &Dubbelklicka på kort för att spela dem (istället för enkelklick) - + &Play all nonlands onto the stack (not the battlefield) by default - + Annotate card text on tokens - + Animation settings Animationsinställningar - + &Tap/untap animation &Tappnings/Upptappningsanimation @@ -5105,22 +5339,22 @@ Please enter a name: UserList - + Users connected to server: %1 - + Users in this room: %1 Användare i detta rum: %1 - + Buddies online: %1 / %2 Vänner online: %1 / %2 - + Ignored users online: %1 / %2 Ignorerade användare online: %1 / %2 @@ -5179,7 +5413,7 @@ Please enter a name: - Disabled sets will still be used for loading images + Disabled sets will be used for loading images only if all the enabled sets failed @@ -5188,12 +5422,12 @@ Please enter a name: Redigera utgåvor - + Success - + The sets database has been saved successfully. @@ -5221,4 +5455,561 @@ Please enter a name: + + shortcutsTab + + + Form + + + + + Main Window + + + + + Deck editor + + + + + Local gameplay + + + + + Watch replay + + + + + Connect + + + + + Register + + + + + Full screen + + + + + Settings + + + + + Check for card updates + + + + + Exit + + + + + Deck Editor + + + + + Analyze deck + + + + + Load deck (clipboard) + + + + + Clerar all filters + + + + + New deck + + + + + Clear one filter + + + + + Open custom folder + + + + + Close + + + + + Print deck + + + + + Edit sets + + + + + Delete card + + + + + Edit tokens + + + + + Reset layout + + + + + Add card + + + + + Save deck + + + + + Remove card + + + + + Save deck as + + + + + Load deck + + + + + Save deck (clipboard) + + + + + + Counters + + + + + Life + + + + + + + + + Set + + + + + + + + Add + + + + + + + + Remove + + + + + Red + + + + + Green + + + + + Yellow + + + + + Mainwindow / Deck editor + + + + + Power / toughness + + + + + Power and toughness + + + + + Add (+1/+1) + + + + + Remove (-1/-1) + + + + + Toughness + + + + + Remove (-0/-1) + + + + + Add (+0/+1) + + + + + Power + + + + + Remove (-1/-0) + + + + + Add (+1/+0) + + + + + Game Phases + + + + + Untap + + + + + Disconnect + + + + + Upkeep + + + + + + Draw + + + + + Main 1 + + + + + Start combat + + + + + Attack + + + + + Block + + + + + Damage + + + + + End combat + + + + + Main 2 + + + + + End + + + + + Next phase + + + + + Next turn + + + + + Player + + + + + Tap Card + + + + + Untap Card + + + + + Untap all + + + + + Toogle untap + + + + + Flip card + + + + + Peek card + + + + + Play card + + + + + Attach card + + + + + Unattach card + + + + + Clone card + + + + + Create token + + + + + Create another token + + + + + Set annotation + + + + + Phases / P/T / Player + + + + + Move card to + + + + + Bottom library + + + + + Top library + + + + + + Graveyard + + + + + + Exile + + + + + Hand + + + + + View + + + + + Library + + + + + Tops card of library + + + + + Sideboard + + + + + Close recent view + + + + + Pre-play + + + + + Load remote deck + + + + + Load local deck + + + + + Game play + + + + + Draw arrow + + + + + Leave game + + + + + Remove local arrows + + + + + Concede + + + + + Roll dice + + + + + Rotate view CW + + + + + Shuffle library + + + + + Rotate view CCW + + + + + Mulligan + + + + + Draw card + + + + + Draw cards + + + + + Undo draw + + + + + Always reveal top card + + + + + Draw / Move / View / Game play + + + \ No newline at end of file diff --git a/cockatrice/translations/cockatrice_uk.ts b/cockatrice/translations/cockatrice_uk.ts index d8322903..d23dbaf3 100644 --- a/cockatrice/translations/cockatrice_uk.ts +++ b/cockatrice/translations/cockatrice_uk.ts @@ -2,17 +2,17 @@ AbstractCounter - + &Set counter... - + Set counter - + New value for counter '%1': @@ -20,89 +20,60 @@ AppearanceSettingsPage - - Zone background pictures + + Theme settings - - Hand background: + + Current theme: - - Stack background: - - - - - Table background: - - - - - Player info background: - - - - - Card back: - - - - + Card rendering - + Display card names on cards having a picture - + Scale cards on mouse over - + Hand layout - + Display hand horizontally (wastes space) - + Enable left justification - + Table grid layout - + Invert vertical coordinate - + Minimum player count for multi-column layout: - - - - - - - Choose path - - BanDialog @@ -117,86 +88,109 @@ - + + ban client I&D + + + + Ban type - + &permanent ban - + &temporary ban - + &Days: - + &Hours: - + &Minutes: - + Duration of the ban - + Please enter the reason for the ban. This is only saved for moderators and cannot be seen by the banned person. - + Please enter the reason for the ban that will be visible to the banned person. - + &OK - + &Cancel - + Ban user from server - + + + + Error - - You have to select a name-based or IP-based ban, or both. + + You have to select a name-based, IP-based, clientId based, or some combination of the three to place a ban. + + + + + You must have a value in the name ban when selecting the name ban checkbox. + + + + + You must have a value in the ip ban when selecting the ip ban checkbox. + + + + + You must have a value in the clientid ban when selecting the clientid ban checkbox. CardDatabase - + New sets found - + %1 new set(s) have been found in the card database. Do you want to enable them? @@ -232,17 +226,17 @@ This is only saved for moderators and cannot be seen by the banned person. CardFrame - + Image - + Description - + Both @@ -298,27 +292,32 @@ This is only saved for moderators and cannot be seen by the banned person. - + Name: - + Mana cost: - + + Color(s): + + + + Card type: - + P / T: - + Loyalty: @@ -582,12 +581,12 @@ This is only saved for moderators and cannot be seen by the banned person. DeckEditorSettingsPage - + Nothing is here... yet - + General @@ -595,17 +594,17 @@ This is only saved for moderators and cannot be seen by the banned person. DeckListModel - + Number - + Card - + Price @@ -627,42 +626,42 @@ This is only saved for moderators and cannot be seen by the banned person. DeckViewContainer - + Load local deck - + Load deck from server - + Ready to s&tart - + S&ideboard unlocked - + S&ideboard locked - + Load deck - + Error - + The selected file could not be loaded. @@ -708,37 +707,52 @@ This is only saved for moderators and cannot be seen by the banned person. DlgConnect - + + Previous Host + + + + + New Host + + + + &Host: - + + Enter host name + + + + &Port: - + Player &name: - + P&assword: - + &Save password - + A&uto connect at start - + Connect to server @@ -746,82 +760,92 @@ This is only saved for moderators and cannot be seen by the banned person. DlgCreateGame - + &Description: - + &Password: - + P&layers: - + + Re&member settings + + + + Game type - + Only &buddies can join - + Only &registered users can join - + Joining restrictions - + &Spectators can watch - + Spectators &need a password to watch - + Spectators can see &hands - + Spectators can &chat - + Spectators - + + &Clear + + + + Create game - + Game information - + Error - + Server error. @@ -962,32 +986,32 @@ To remove your current avatar, confirm without choosing a new image. DlgEditPassword - + Old password: - + New password: - + Confirm new password: - + Change password - + Error - + The new passwords don't match. @@ -1090,47 +1114,47 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgEditUser - + Email: - + Pronouns: - + Neutral - + Masculine - + Feminine - + Country: - + Undefined - + Real name: - + Edit user profile @@ -1138,47 +1162,47 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgFilterGames - + Show &unavailable games - + Show &password protected games - + Game &description: - + &Creator name: - + &Game types - + at &least: - + at &most: - + Maximum player count - + Filter games @@ -1186,7 +1210,7 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgLoadDeckFromClipboard - + &Refresh @@ -1196,14 +1220,14 @@ Make sure to enable the 'token set' in the 'Edit sets...' di - - + + Error - - + + Invalid deck list. @@ -1219,67 +1243,93 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgRegister - + &Host: - + &Port: - + Player &name: - + P&assword: - + + Password (again): + + + + Email: - + + Email (again): + + + + Pronouns: - + Neutral - + Masculine - + Feminine - + Undefined - + + + Registration Warning + + + + + Your passwords do not match, please try again. + + + + + Your email addresses do not match, please try again. + + + + Country: - + Real name: - + Register to server @@ -1287,19 +1337,19 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgSettings - - - + + + Error - + Unknown Error loading card database - + Your card database is invalid. Cockatrice may not function correctly with an invalid database @@ -1310,7 +1360,7 @@ Would you like to change your database location setting? - + Your card database version is too old. This can cause problems loading card information or images @@ -1321,21 +1371,21 @@ Would you like to change your database location setting? - + File Error loading your card database. Would you like to change your database location setting? - + Your card database was loaded but contains no cards. Would you like to change your database location setting? - + Your card database did not finish loading Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues with your cards.xml attached @@ -1344,7 +1394,7 @@ Would you like to change your database location setting? - + Unknown card database load status Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues @@ -1353,50 +1403,55 @@ Would you like to change your database location setting? - + The path to your deck directory is invalid. Would you like to go back and set the correct path? - + The path to your card pictures directory is invalid. Would you like to go back and set the correct path? - + Settings - + General - + Appearance - + User Interface - + Deck Editor - + Chat - + Sound + + + Shortcuts + + GameSelector @@ -1409,7 +1464,7 @@ Would you like to change your database location setting? - + Error @@ -1454,47 +1509,47 @@ Would you like to change your database location setting? - + Join game - + Password: - + Please join the respective room first. - + Games + + + &Filter games + + - Filter games + C&lear filter - Clear filter + C&reate - - Create + + &Join - - Join - - - - + J&oin as spectator @@ -1611,107 +1666,112 @@ Would you like to change your database location setting? GeneralSettingsPage - + Reset/Clear Downloaded Pictures - - - - - + + + + + Choose path - + Success - + Downloaded card pictures have been reset. - + Error - + One or more downloaded card pictures could not be cleared. - + Personal settings - + Language: - + Download card pictures on the fly - + Download card pictures from a custom URL - + Custom Card Download URL: - + Linking FAQ - - Paths - - - - - Decks directory: - - - - - Replays directory: - - - - - Pictures directory: - - - - - Card database: - - - - - Token database: + + Notify when new client features are available + Paths + + + + + Decks directory: + + + + + Replays directory: + + + + + Pictures directory: + + + + + Card database: + + + + + Token database: + + + + Picture cache size: - - + + English @@ -1719,497 +1779,543 @@ Would you like to change your database location setting? MainWindow - + There are too many concurrent connections from your address. - + Scheduled server shutdown. - + Banned by moderator - + Expected end time: %1 - + This ban lasts indefinitely. - + Connection closed - + The server has terminated your connection. Reason: %1 - + Scheduled server shutdown - + The server is going to be restarted in %n minute(s). All running games will be lost. Reason for shutdown: %1 - + Number of players - + Please enter the number of players. - - + + Player %1 - + Load replay - + About Cockatrice - + Version %1 - + Translators: - + Project Manager: - - + + The server has reached its maximum user capacity, please check back later. + + + + + Invalid username. - - + + You have been logged out due to logging in at another location. + + + + + Success - + Registration accepted. Will now login. - + Account activation accepted. Will now login. - + Past Project Managers: - + Developers: - + Our Developers - + Help Develop! - + Recognition Page - + Help Translate! - + Support: - + Report an Issue - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + Error - + Server timeout - + + Failed Login + + + + + Your client does not support features that the server requires, please update your client and try again. + + + + Incorrect username or password. Please check your authentication information and try again. - + There is already an active session using this user name. Please close that session first and re-login. - - + + You are banned until %1. - - + + You are banned indefinitely. - + This server requires user registration. Do you want to register now? - + + This server requires client ID's. Your client is either failing to generate an ID or you are running a modified client. +Please close and reopen your client to try again. + + + + + An internal error has occurred, please try closing and reopening your client and try again. If the error persists try updating your client to the most recent build and if need be contact your software provider. + + + + Account activation - - Your account has not been activated yet. - You need to provide the activation token received in the activation email - - - - - + Unknown login error: %1 - + + + +This usually means that your client version is out of date, and the server sent a reply your client doesn't understand. + + + + Your username must respect these rules: - + is %1 - %2 characters long - + can %1 contain lowercase characters - - - - + + + + NOT - + can %1 contain uppercase characters - + can %1 contain numeric characters - + can contain the following punctuation: %1 - + first character can %1 be a punctuation mark - + You may only use A-Z, a-z, 0-9, _, ., and - in your username. - - - - - + + + + + Registration denied - + Registration is currently disabled on this server - + There is already an existing account with the same user name. - + It's mandatory to specify a valid email address when registering. - + Too many registration attempts from your IP address. - + Password too short. - + Registration failed for a technical problem on the server. - + + Unknown registration error: %1 + + + + Account activation failed - + Socket error: %1 - + 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. - + Your Cockatrice client is obsolete. Please update your Cockatrice version. Local version is %1, remote version is %2. - + Connecting to %1... - + Registering to %1 as %2... - + Disconnected - + Connected, logging in at %1 - - Logged in as %1 at %2 - - - - + &Connect... - + &Disconnect - + Start &local game... - + &Watch replay... - + &Deck editor - + &Full screen - + &Register to server... - + &Settings... - - + + &Exit - + A&ctions - + &Cockatrice - + &About Cockatrice - + &Help - + Check for card updates... - + A card database update is already running. - + Unable to run the card database updater: - + The card database updater exited with an error: %1 - + Update completed successfully. Cockatrice will now reload the card database. - - + + Your client appears to be missing features that the server supports. +This usually means that your client version is out of date, please check to see if there is a new client available for download. + + + + + + Information - + Troubleshooting - + F.A.Q. - + + Your account has not been activated yet. +You need to provide the activation token received in the activation email + + + + failed to start. - + crashed. - + timed out. - + write error. - + read error. - + unknown error. @@ -3449,62 +3555,74 @@ Local version is %1, remote version is %2. MessagesSettingsPage - + Chat settings - + + Custom alert words + + + + Enable chat mentions - + + Enable mention completer + + + + In-game message macros - - Ignore unregistered users in main chat + + Ignore chat room messages sent by unregistered users - - Ignore chat room messages sent by unregistered users. + + Ignore private messages sent by unregistered users - - Ignore private messages sent by unregistered users. + + Enable desktop notifications for private messages - + + Separate words with a space, alphanumeric characters only + + + + + Invert text color - - Enable desktop notifications for private messages. - - - - + Enable desktop notification for mentions. - + + (Color is hexadecimal) - + Add message - + Message: @@ -3570,435 +3688,435 @@ Local version is %1, remote version is %2. Player - + &View library - + Move top cards to &graveyard... - + View &top cards of library... - + &View graveyard - + &View sideboard - + Player "%1" - - - - + + + + &Hand - + &Reveal hand to... - + Reveal r&andom card to... - + &Library - - - - + + + + &Graveyard - + &Sideboard - + Red - + Yellow - + Green - + View top cards of library - + Number of cards: - + &Draw card - + Reveal top cards of library - + Number of cards: (max. %1) - + &View exile - - - - + + + + &Exile - + Reveal t&op cards to... - + D&raw cards... - + Take &mulligan - + &Shuffle - + &Counters - + &Untap all permanents - + R&oll die... - + &Create token... - + C&reate another token - + S&ay - + &Move hand to... - - - - + + + + &Top of library - - - - + + + + &Bottom of library - + &Move graveyard to... - + &Move exile to... - + Reveal &library to... - + &Always reveal top card - + O&pen deck in deck editor - + &Undo last draw - + Play top card &face down - + Move top cards to &exile... - + Put top card on &bottom - + Put bottom card &in graveyard - + Cr&eate predefined token - + C&ard - + &All players - + &Play - + &Hide - + Play &Face Down - + &Tap - + &Untap - + Toggle &normal untapping - + &Flip - + &Peek at card face - + &Clone - + Attac&h to card... - + Unattac&h - + &Draw arrow... - + &Increase power - + &Decrease power - + I&ncrease toughness - + D&ecrease toughness - + In&crease power and toughness - + Dec&rease power and toughness - + Set &power and toughness... - + &Set annotation... - + &Add counter (%1) - + &Remove counter (%1) - + &Set counters (%1)... - + Draw cards - - - - + + + + Number: - + Move top cards to grave - + Move top cards to exile - + Roll die - + Number of sides: - + Set power/toughness - + Please enter the new PT: - + Set annotation - + Please enter the new annotation: - + Set counters - + Cr&eate related card @@ -4006,37 +4124,37 @@ Local version is %1, remote version is %2. QMenuBar - + Services - + Hide %1 - + Hide Others - + Show All - + Preferences... - + Quit %1 - + About %1 @@ -4044,7 +4162,7 @@ Local version is %1, remote version is %2. QObject - + Cockatrice replays (*.cor) @@ -4113,35 +4231,64 @@ Local version is %1, remote version is %2. RoomSelector - + Rooms - + Joi&n - + Room - + Description - + + Permissions + + + + Players - + Games + + + + Error + + + + + You do not have the proper permission to join this room. + + + + + Failed to join the room due to an unknown error. + + + + + SequenceEdit + + + Shortcut already in use + + SetsModel @@ -4192,37 +4339,37 @@ Local version is %1, remote version is %2. SoundSettingsPage - + Choose path - + Enable &sounds - + Path to sounds directory: - + Test system sound engine - + Sound settings - + Master volume requires QT5 - + Master volume @@ -4278,184 +4425,219 @@ Local version is %1, remote version is %2. TabDeckEditor - + &Print deck... - + &Close - + &Edit sets... - + Filters - + &Clear all filters - + Delete selected - + Deck &name: - + &Comments: - + Hash: - + &New deck - + &Load deck... - + &Save deck - + Save deck &as... - + Load deck from cl&ipboard... - + Save deck to clip&board - + &Analyze deck on deckstats.net - + Open custom image folder - + + Open custom sets folder + + + + Add card to &maindeck - + Add card to &sideboard - + &Deck Editor - + C&ard Database - + + Show/Hide card information + + + + + Show/Hide deck + + + + + Show/Hide filters + + + + + Reset layout + + + + + Card Info + + + + + Deck + + + + Welcome - + Hi! It seems like you're running this version of Cockatrice for the first time. All the sets in the card database have been enabled. Read more about changing the set order or disabling specific sets and consequent effects in the "Edit Sets" window. - + &Remove row - + &Increment number - + &Decrement number - + Edit &tokens... - + Deck: %1 - + Are you sure? - + The decklist has been modified. Do you want to save the changes? - + Load deck - - - + + + Error - + The deck could not be saved. - - + + The deck could not be saved. Please check that the directory is writable and try again. - + Save deck @@ -4552,97 +4734,97 @@ Please enter a name: TabGame - + &Phases - + &Game - + Next &phase - + Next &turn - + &Remove all local arrows - + Rotate View Cl&ockwise - + Rotate View Co&unterclockwise - + Game &information - + &Concede - + &Leave game - + C&lose replay - + &Say: - + Concede - + Are you sure you want to concede this game? - + Leave game - + Are you sure you want to leave this game? - + You are flooding the game. Please wait a couple of seconds. - + You have been kicked out of the game. - + REPLAY @@ -4748,47 +4930,47 @@ Please enter a name: TabRoom - + &Say: - + Chat - + &Room - + &Leave room - + &Clear chat - + Chat Settings... - + mentioned you. - + Click to view - + You are flooding the chat. Please wait a couple of seconds. @@ -4804,15 +4986,25 @@ Please enter a name: TabSupervisor - + Are you sure? - + There are still open games. Are you sure you want to quit? + + + Promotion + + + + + You have been promoted to moderator. Please log out and back in for changes to take effect. + + TabUserLists @@ -4835,55 +5027,97 @@ Please enter a name: UserContextMenu - + User &details - + Private &chat - + Show this user's &games - + Add to &buddy list - + Remove from &buddy list - + Add to &ignore list - + Remove from &ignore list - + Kick from &game - + Ban from &server - + + &Promote user to moderator + + + + + Dem&ote user from moderator + + + + %1's games + + + + Success + + + + + Successfully promoted user. + + + + + Successfully demoted user. + + + + + + Failed + + + + + Failed to promote user. + + + + + Failed to demote user. + + UserInfoBox @@ -5052,42 +5286,42 @@ Please enter a name: UserInterfaceSettingsPage - + General interface settings - + Enable notifications in taskbar - + Notify in the taskbar for game events while you are spectating - + &Double-click cards to play them (instead of single-click) - + &Play all nonlands onto the stack (not the battlefield) by default - + Annotate card text on tokens - + Animation settings - + &Tap/untap animation @@ -5095,22 +5329,22 @@ Please enter a name: UserList - + Users connected to server: %1 - + Users in this room: %1 - + Buddies online: %1 / %2 - + Ignored users online: %1 / %2 @@ -5169,7 +5403,7 @@ Please enter a name: - Disabled sets will still be used for loading images + Disabled sets will be used for loading images only if all the enabled sets failed @@ -5178,12 +5412,12 @@ Please enter a name: - + Success - + The sets database has been saved successfully. @@ -5211,4 +5445,561 @@ Please enter a name: + + shortcutsTab + + + Form + + + + + Main Window + + + + + Deck editor + + + + + Local gameplay + + + + + Watch replay + + + + + Connect + + + + + Register + + + + + Full screen + + + + + Settings + + + + + Check for card updates + + + + + Exit + + + + + Deck Editor + + + + + Analyze deck + + + + + Load deck (clipboard) + + + + + Clerar all filters + + + + + New deck + + + + + Clear one filter + + + + + Open custom folder + + + + + Close + + + + + Print deck + + + + + Edit sets + + + + + Delete card + + + + + Edit tokens + + + + + Reset layout + + + + + Add card + + + + + Save deck + + + + + Remove card + + + + + Save deck as + + + + + Load deck + + + + + Save deck (clipboard) + + + + + + Counters + + + + + Life + + + + + + + + + Set + + + + + + + + Add + + + + + + + + Remove + + + + + Red + + + + + Green + + + + + Yellow + + + + + Mainwindow / Deck editor + + + + + Power / toughness + + + + + Power and toughness + + + + + Add (+1/+1) + + + + + Remove (-1/-1) + + + + + Toughness + + + + + Remove (-0/-1) + + + + + Add (+0/+1) + + + + + Power + + + + + Remove (-1/-0) + + + + + Add (+1/+0) + + + + + Game Phases + + + + + Untap + + + + + Disconnect + + + + + Upkeep + + + + + + Draw + + + + + Main 1 + + + + + Start combat + + + + + Attack + + + + + Block + + + + + Damage + + + + + End combat + + + + + Main 2 + + + + + End + + + + + Next phase + + + + + Next turn + + + + + Player + + + + + Tap Card + + + + + Untap Card + + + + + Untap all + + + + + Toogle untap + + + + + Flip card + + + + + Peek card + + + + + Play card + + + + + Attach card + + + + + Unattach card + + + + + Clone card + + + + + Create token + + + + + Create another token + + + + + Set annotation + + + + + Phases / P/T / Player + + + + + Move card to + + + + + Bottom library + + + + + Top library + + + + + + Graveyard + + + + + + Exile + + + + + Hand + + + + + View + + + + + Library + + + + + Tops card of library + + + + + Sideboard + + + + + Close recent view + + + + + Pre-play + + + + + Load remote deck + + + + + Load local deck + + + + + Game play + + + + + Draw arrow + + + + + Leave game + + + + + Remove local arrows + + + + + Concede + + + + + Roll dice + + + + + Rotate view CW + + + + + Shuffle library + + + + + Rotate view CCW + + + + + Mulligan + + + + + Draw card + + + + + Draw cards + + + + + Undo draw + + + + + Always reveal top card + + + + + Draw / Move / View / Game play + + + \ No newline at end of file diff --git a/cockatrice/translations/cockatrice_zh-Hans.ts b/cockatrice/translations/cockatrice_zh-Hans.ts index 0095e3bc..0f01a755 100644 --- a/cockatrice/translations/cockatrice_zh-Hans.ts +++ b/cockatrice/translations/cockatrice_zh-Hans.ts @@ -2,17 +2,17 @@ AbstractCounter - + &Set counter... 设置指示物为... - + Set counter 设置指示物 - + New value for counter '%1': 新的指示物价值'%1': @@ -20,89 +20,60 @@ AppearanceSettingsPage - - Zone background pictures - 区域背景图片 + + Theme settings + - - Hand background: - 手牌区域背景: + + Current theme: + - - Stack background: - 堆叠背景: - - - - Table background: - 桌面背景: - - - - Player info background: - 牌手信息背景: - - - - Card back: - 牌背: - - - + Card rendering 牌面 - + Display card names on cards having a picture 显示有图卡牌的名称 - + Scale cards on mouse over - + Hand layout 手牌区域布局 - + Display hand horizontally (wastes space) 水平显示手牌区域 (浪费空间) - + Enable left justification - + Table grid layout 表格布局 - + Invert vertical coordinate 反转垂直坐标 - + Minimum player count for multi-column layout: 界面布局之内能够容纳的牌手栏数量: - - - - - - - Choose path - 选择路径 - BanDialog @@ -117,87 +88,110 @@ 禁止该IP地址 - + + ban client I&D + + + + Ban type 禁止类型 - + &permanent ban 永久禁止 - + &temporary ban 暂时禁止 - + &Days: 天: - + &Hours: 小时: - + &Minutes: 分钟: - + Duration of the ban 持续时长 - + Please enter the reason for the ban. This is only saved for moderators and cannot be seen by the banned person. 请输入禁止原因. 此项为管理缘由而保存并且对于这位被禁止的用户不可见. - + Please enter the reason for the ban that will be visible to the banned person. 请输入对于被禁止用户可见的禁止原因 - + &OK 确认 - + &Cancel 取消 - + Ban user from server 禁止此用户 - + + + + Error 错误 - - You have to select a name-based or IP-based ban, or both. - 请选择一个名字或者IP地址禁止 任一或者两者 + + You have to select a name-based, IP-based, clientId based, or some combination of the three to place a ban. + + + + + You must have a value in the name ban when selecting the name ban checkbox. + + + + + You must have a value in the ip ban when selecting the ip ban checkbox. + + + + + You must have a value in the clientid ban when selecting the clientid ban checkbox. + CardDatabase - + New sets found - + %1 new set(s) have been found in the card database. Do you want to enable them? @@ -233,17 +227,17 @@ This is only saved for moderators and cannot be seen by the banned person. CardFrame - + Image - + Description - + Both @@ -299,27 +293,32 @@ This is only saved for moderators and cannot be seen by the banned person.显示卡牌以及描述 - + Name: 名称: - + Mana cost: 法术力费用: - + + Color(s): + + + + Card type: 卡牌类别: - + P / T: 力量/防御力: - + Loyalty: 忠诚值: @@ -583,12 +582,12 @@ This is only saved for moderators and cannot be seen by the banned person. DeckEditorSettingsPage - + Nothing is here... yet - + General 综合 @@ -596,17 +595,17 @@ This is only saved for moderators and cannot be seen by the banned person. DeckListModel - + Number 数量 - + Card 卡牌 - + Price 价格 @@ -628,42 +627,42 @@ This is only saved for moderators and cannot be seen by the banned person. DeckViewContainer - + Load local deck - + Load deck from server - + Ready to s&tart 准备 - + S&ideboard unlocked 解锁备牌 - + S&ideboard locked 上锁备牌 - + Load deck 载入套牌 - + Error 错误 - + The selected file could not be loaded. 此文件无法被载入 @@ -709,37 +708,52 @@ This is only saved for moderators and cannot be seen by the banned person. DlgConnect - + + Previous Host + + + + + New Host + + + + &Host: 主机: - + + Enter host name + + + + &Port: 端口: - + Player &name: 玩家名字: - + P&assword: 密码: - + &Save password 记住密码 - + A&uto connect at start 启动时自动连接 - + Connect to server 连接服务器 @@ -747,82 +761,92 @@ This is only saved for moderators and cannot be seen by the banned person. DlgCreateGame - + &Description: 描述: - + &Password: 密码: - + P&layers: 玩家: - + + Re&member settings + + + + Game type 房间类型 - + Only &buddies can join 只有好友可以加入 - + Only &registered users can join 只有注册用户可以加入 - + Joining restrictions 加入条件 - + &Spectators can watch 允许观看者 - + Spectators &need a password to watch 观看者需要密码 - + Spectators can see &hands 观看者可见手牌 - + Spectators can &chat 观看者可以聊天 - + Spectators 观看者 - + + &Clear + + + + Create game 创建一个房间 - + Game information 房间信息 - + Error 错误 - + Server error. 服务器错误. @@ -963,32 +987,32 @@ To remove your current avatar, confirm without choosing a new image. DlgEditPassword - + Old password: - + New password: - + Confirm new password: - + Change password - + Error - + The new passwords don't match. @@ -1091,47 +1115,47 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgEditUser - + Email: - + Pronouns: - + Neutral - + Masculine - + Feminine - + Country: - + Undefined - + Real name: - + Edit user profile @@ -1139,47 +1163,47 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgFilterGames - + Show &unavailable games 显示人满房间 - + Show &password protected games - + Game &description: 房间描述: - + &Creator name: 创建者名字: - + &Game types 房间类型 - + at &least: 至少: - + at &most: 最多: - + Maximum player count 可容纳牌手数量 - + Filter games 过滤房间 @@ -1187,7 +1211,7 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgLoadDeckFromClipboard - + &Refresh 刷新 @@ -1197,14 +1221,14 @@ Make sure to enable the 'token set' in the 'Edit sets...' di 从剪贴板读取套牌 - - + + Error 错误 - - + + Invalid deck list. 无效的牌表. @@ -1220,67 +1244,93 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgRegister - + &Host: - + &Port: - + Player &name: - + P&assword: - + + Password (again): + + + + Email: - + + Email (again): + + + + Pronouns: - + Neutral - + Masculine - + Feminine - + Undefined - + + + Registration Warning + + + + + Your passwords do not match, please try again. + + + + + Your email addresses do not match, please try again. + + + + Country: - + Real name: - + Register to server @@ -1288,19 +1338,19 @@ Make sure to enable the 'token set' in the 'Edit sets...' di DlgSettings - - - + + + Error 错误 - + Unknown Error loading card database 读取卡牌数据库时出现未知错误 - + Your card database is invalid. Cockatrice may not function correctly with an invalid database @@ -1317,7 +1367,7 @@ Would you like to change your database location setting? 您想要重新设置卡牌数据库路径么? - + Your card database version is too old. This can cause problems loading card information or images @@ -1334,7 +1384,7 @@ Would you like to change your database location setting? 您想要重新设置卡牌数据库路径么? - + File Error loading your card database. Would you like to change your database location setting? @@ -1343,7 +1393,7 @@ Would you like to change your database location setting? 您想要重新设置卡牌数据库路径么? - + Your card database was loaded but contains no cards. Would you like to change your database location setting? @@ -1352,7 +1402,7 @@ Would you like to change your database location setting? 您想要重新设置卡牌数据库路径么? - + Your card database did not finish loading Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues with your cards.xml attached @@ -1361,7 +1411,7 @@ Would you like to change your database location setting? - + Unknown card database load status Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues @@ -1370,50 +1420,55 @@ Would you like to change your database location setting? - + The path to your deck directory is invalid. Would you like to go back and set the correct path? 您想要重新设置卡牌数据库路径么? - + The path to your card pictures directory is invalid. Would you like to go back and set the correct path? 您想要重新设置卡牌数据库路径么? - + Settings 设置 - + General 常规 - + Appearance 外观 - + User Interface 用户界面 - + Deck Editor 卡组编辑 - + Chat 聊天 - + Sound + + + Shortcuts + + GameSelector @@ -1426,7 +1481,7 @@ Would you like to change your database location setting? - + Error 错误 @@ -1471,47 +1526,47 @@ Would you like to change your database location setting? 你屏蔽了这个与游戏的创造者. - + Join game 加入游戏 - + Password: 密码: - + Please join the respective room first. 请各自加入一个房间. - + Games 游戏 + + + &Filter games + + - Filter games + C&lear filter - Clear filter + C&reate - - Create + + &Join - - Join - - - - + J&oin as spectator 观看 @@ -1628,107 +1683,112 @@ Would you like to change your database location setting? GeneralSettingsPage - + Reset/Clear Downloaded Pictures - - - - - + + + + + Choose path 选择路径 - + Success - + Downloaded card pictures have been reset. - + Error 错误 - + One or more downloaded card pictures could not be cleared. - + Personal settings 个人设置 - + Language: 语言: - + Download card pictures on the fly 下载卡牌上的图片 - + Download card pictures from a custom URL - + Custom Card Download URL: - + Linking FAQ - - Paths - 路径 - - - - Decks directory: - 卡组路径: - - - - Replays directory: - 游戏录像目录: - - - - Pictures directory: - 图片目录: - - - - Card database: - 卡牌数据库: - - - - Token database: + + Notify when new client features are available + Paths + 路径 + + + + Decks directory: + 卡组路径: + + + + Replays directory: + 游戏录像目录: + + + + Pictures directory: + 图片目录: + + + + Card database: + 卡牌数据库: + + + + Token database: + + + + Picture cache size: - - + + English 简体中文 (Chinese Simplified) @@ -1736,49 +1796,49 @@ Would you like to change your database location setting? MainWindow - + There are too many concurrent connections from your address. 你的地址有太多连接. - + Scheduled server shutdown. 预定服务器关闭. - + Banned by moderator 禁止版主 - + Expected end time: %1 预计结束时间: %1 - + This ban lasts indefinitely. 这个封禁是永久的. - + Connection closed 连接关闭 - + The server has terminated your connection. Reason: %1 服务器中断连接. 原因: %1 - + Scheduled server shutdown 预定服务器关闭 - + The server is going to be restarted in %n minute(s). All running games will be lost. Reason for shutdown: %1 @@ -1787,452 +1847,498 @@ Reason for shutdown: %1 关闭原因: %1 - + Number of players 玩家人数 - + Please enter the number of players. 请输入玩家的数量. - - + + Player %1 玩家 %1 - + Load replay 载入游戏录像 - + About Cockatrice 关于Cockatrice鸡蛇 - + Version %1 版本 %1 - + Translators: - + Project Manager: - - + + The server has reached its maximum user capacity, please check back later. + + + + + Invalid username. - - + + You have been logged out due to logging in at another location. + + + + + Success - + Registration accepted. Will now login. - + Account activation accepted. Will now login. - + Past Project Managers: - + Developers: - + Our Developers - + Help Develop! - + Recognition Page - + Help Translate! - + Support: - + Report an Issue - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + Error 错误 - + Server timeout 服务器超时 - + + Failed Login + + + + + Your client does not support features that the server requires, please update your client and try again. + + + + Incorrect username or password. Please check your authentication information and try again. - + There is already an active session using this user name. Please close that session first and re-login. 已经有一个在线用户正在使用这个用户名. 首先请关闭这个对话框然后重新登陆. - - + + You are banned until %1. 你被禁止直到: %1. - - + + You are banned indefinitely. 你被永久封禁. - + This server requires user registration. Do you want to register now? - + + This server requires client ID's. Your client is either failing to generate an ID or you are running a modified client. +Please close and reopen your client to try again. + + + + + An internal error has occurred, please try closing and reopening your client and try again. If the error persists try updating your client to the most recent build and if need be contact your software provider. + + + + Account activation - - Your account has not been activated yet. - You need to provide the activation token received in the activation email - - - - - + Unknown login error: %1 未知的登陆错误: %1 - + + + +This usually means that your client version is out of date, and the server sent a reply your client doesn't understand. + + + + Your username must respect these rules: - + is %1 - %2 characters long - + can %1 contain lowercase characters - - - - + + + + NOT - + can %1 contain uppercase characters - + can %1 contain numeric characters - + can contain the following punctuation: %1 - + first character can %1 be a punctuation mark - + You may only use A-Z, a-z, 0-9, _, ., and - in your username. - - - - - + + + + + Registration denied - + Registration is currently disabled on this server - + There is already an existing account with the same user name. - + It's mandatory to specify a valid email address when registering. - + Too many registration attempts from your IP address. - + Password too short. - + Registration failed for a technical problem on the server. - + + Unknown registration error: %1 + + + + Account activation failed - + Socket error: %1 接口错误: %1 - + 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. 你正在连接到一个过时的服务器,请下调你的版本或者连接到一个匹配的服务器. 你当前的版本 %1, 服务器版本 %2. - + Your Cockatrice client is obsolete. Please update your Cockatrice version. Local version is %1, remote version is %2. 你使用的客户端意见过时,请使用更新你版本. 你当前的版本 %1, 服务器版本 %2. - + Connecting to %1... 连接到 %1... - + Registering to %1 as %2... - + Disconnected 断开连接 - + Connected, logging in at %1 连接登陆到 %1 - - Logged in as %1 at %2 - - - - + &Connect... 连接... - + &Disconnect 断开连接 - + Start &local game... 开始本地游戏... - + &Watch replay... 观看录像... - + &Deck editor 卡组编辑 - + &Full screen 全屏 - + &Register to server... - + &Settings... 设置... - - + + &Exit 退出 - + A&ctions - + &Cockatrice Cockatrice鸡蛇 - + &About Cockatrice 关于Cockatrice鸡蛇 - + &Help 帮助 - + Check for card updates... - + A card database update is already running. - + Unable to run the card database updater: - + The card database updater exited with an error: %1 - + Update completed successfully. Cockatrice will now reload the card database. - - + + Your client appears to be missing features that the server supports. +This usually means that your client version is out of date, please check to see if there is a new client available for download. + + + + + + Information - + Troubleshooting - + F.A.Q. - + + Your account has not been activated yet. +You need to provide the activation token received in the activation email + + + + failed to start. - + crashed. - + timed out. - + write error. - + read error. - + unknown error. @@ -3472,62 +3578,74 @@ Local version is %1, remote version is %2. MessagesSettingsPage - + Chat settings - + + Custom alert words + + + + Enable chat mentions - + + Enable mention completer + + + + In-game message macros - - Ignore unregistered users in main chat + + Ignore chat room messages sent by unregistered users - - Ignore chat room messages sent by unregistered users. + + Ignore private messages sent by unregistered users - - Ignore private messages sent by unregistered users. + + Enable desktop notifications for private messages - + + Separate words with a space, alphanumeric characters only + + + + + Invert text color - - Enable desktop notifications for private messages. - - - - + Enable desktop notification for mentions. - + + (Color is hexadecimal) - + Add message 添加信息 - + Message: 信息: @@ -3593,435 +3711,435 @@ Local version is %1, remote version is %2. Player - + &View library 显示卡组 - + Move top cards to &graveyard... 将卡组置入墓地... - + View &top cards of library... - + &View graveyard 显示墓地 - + &View sideboard 显示备牌 - + Player "%1" 玩家 "%1" - - - - + + + + &Hand 手牌 - + &Reveal hand to... - + Reveal r&andom card to... 展示随机卡牌到 - + &Library 卡组 - - - - + + + + &Graveyard 墓地 - + &Sideboard 备牌 - + Red - + Yellow - + Green - + View top cards of library - + Number of cards: 卡牌数量: - + &Draw card 抓卡 - + Reveal top cards of library - + Number of cards: (max. %1) - + &View exile 显示放逐区域 - - - - + + + + &Exile 放逐 - + Reveal t&op cards to... - + D&raw cards... 抓多张卡... - + Take &mulligan 起手抓牌 - + &Shuffle 切洗卡组 - + &Counters 数值 - + &Untap all permanents 重置所有永久物 - + R&oll die... 抛骰子... - + &Create token... 创造一个衍生物... - + C&reate another token 将另一个衍生物放置进场 - + S&ay - + &Move hand to... - - - - + + + + &Top of library - - - - + + + + &Bottom of library - + &Move graveyard to... - + &Move exile to... - + Reveal &library to... - + &Always reveal top card 一直展示卡牌顶端卡牌 - + O&pen deck in deck editor 打开卡组编辑 - + &Undo last draw 撤销最后抓卡 - + Play top card &face down - + Move top cards to &exile... 移动顶端卡牌到放逐区域... - + Put top card on &bottom 放顶端卡牌到牌库底 - + Put bottom card &in graveyard - + Cr&eate predefined token 将预设衍生物放置进场 - + C&ard 卡牌 - + &All players 全部玩家 - + &Play 开始 - + &Hide 隐藏 - + Play &Face Down - + &Tap 横置 - + &Untap 重置 - + Toggle &normal untapping 锁定通常重置 - + &Flip 翻面 - + &Peek at card face 查看卡牌背面 - + &Clone 复制 - + Attac&h to card... 结附卡牌... - + Unattac&h 取消结附 - + &Draw arrow... 划箭头... - + &Increase power 增加力量 - + &Decrease power 降低防御 - + I&ncrease toughness 降低防御 - + D&ecrease toughness 降低防御 - + In&crease power and toughness 增加力量和防御 - + Dec&rease power and toughness 降低力量和防御 - + Set &power and toughness... 设置力量和防御... - + &Set annotation... 设置注释... - + &Add counter (%1) 增加一点%1色指示物 - + &Remove counter (%1) 移除一点%1色指示物 - + &Set counters (%1)... 设置数值 (%1)... - + Draw cards 抓卡 - - - - + + + + Number: 数值: - + Move top cards to grave 顶端卡牌置入墓地 - + Move top cards to exile 移动顶端卡牌到放逐区域 - + Roll die 抛骰子 - + Number of sides: 面数: - + Set power/toughness 设置力量和防御 - + Please enter the new PT: 请输入力量和防御值: - + Set annotation 设置注释 - + Please enter the new annotation: 请输入注释: - + Set counters 设置数值 - + Cr&eate related card @@ -4029,37 +4147,37 @@ Local version is %1, remote version is %2. QMenuBar - + Services - + Hide %1 隐藏 %1 - + Hide Others - + Show All - + Preferences... - + Quit %1 - + About %1 关于 %1 @@ -4067,7 +4185,7 @@ Local version is %1, remote version is %2. QObject - + Cockatrice replays (*.cor) 鸡蛇录像文件 (*.cor) @@ -4136,35 +4254,64 @@ Local version is %1, remote version is %2. RoomSelector - + Rooms 房间 - + Joi&n 加入 - + Room 房间 - + Description 信息 - + + Permissions + + + + Players 玩家 - + Games 游戏 + + + + Error + + + + + You do not have the proper permission to join this room. + + + + + Failed to join the room due to an unknown error. + + + + + SequenceEdit + + + Shortcut already in use + + SetsModel @@ -4215,37 +4362,37 @@ Local version is %1, remote version is %2. SoundSettingsPage - + Choose path - + Enable &sounds - + Path to sounds directory: - + Test system sound engine - + Sound settings - + Master volume requires QT5 - + Master volume @@ -4301,186 +4448,221 @@ Local version is %1, remote version is %2. TabDeckEditor - + &Print deck... 打印卡组... - + &Close 关闭 - + &Edit sets... 编辑环境... - + Filters - + &Clear all filters - + Delete selected - + Deck &name: 卡组名称: - + &Comments: 评论: - + Hash: - + &New deck 创建新卡组 - + &Load deck... 读取套牌... - + &Save deck 保存卡组 - + Save deck &as... 保存卡组... - + Load deck from cl&ipboard... 从剪贴板读取套牌... - + Save deck to clip&board 保存卡组到剪切板 - + &Analyze deck on deckstats.net 在deckstats.net对卡组进行分析 - + Open custom image folder - + + Open custom sets folder + + + + Add card to &maindeck 添加卡牌到主要牌组 - + Add card to &sideboard 添加卡牌到备牌 - + &Deck Editor 卡组编辑 - + C&ard Database - + + Show/Hide card information + + + + + Show/Hide deck + + + + + Show/Hide filters + + + + + Reset layout + + + + + Card Info + + + + + Deck + + + + Welcome - + Hi! It seems like you're running this version of Cockatrice for the first time. All the sets in the card database have been enabled. Read more about changing the set order or disabling specific sets and consequent effects in the "Edit Sets" window. - + &Remove row 移除卡牌 - + &Increment number 添加卡牌张数 - + &Decrement number 减少卡牌张数 - + Edit &tokens... 编辑源生物... - + Deck: %1 卡组: %1 - + Are you sure? 你确定? - + The decklist has been modified. Do you want to save the changes? 卡组列表已被修改。 你想要保存更改吗? - + Load deck 读取套牌 - - - + + + Error 错误 - + The deck could not be saved. 不能保存卡组到服务器. - - + + The deck could not be saved. Please check that the directory is writable and try again. 卡组不能保存到服务器. 请检查目录是否可用后再重试. - + Save deck 保存卡组 @@ -4578,97 +4760,97 @@ Please enter a name: TabGame - + &Phases 阶段 - + &Game 游戏 - + Next &phase 下个阶段 - + Next &turn 下个回合 - + &Remove all local arrows 重置所有箭头 - + Rotate View Cl&ockwise - + Rotate View Co&unterclockwise - + Game &information 游戏信息 - + &Concede 放弃游戏 - + &Leave game 离开游戏 - + C&lose replay 关闭游戏录像 - + &Say: 说: - + Concede 放弃游戏 - + Are you sure you want to concede this game? 你确定放弃这个游戏? - + Leave game 离开游戏 - + Are you sure you want to leave this game? 你确定离开这这个游戏? - + You are flooding the game. Please wait a couple of seconds. - + You have been kicked out of the game. - + REPLAY @@ -4774,47 +4956,47 @@ Please enter a name: TabRoom - + &Say: 说: - + Chat 聊天 - + &Room 房间 - + &Leave room 离开房间 - + &Clear chat - + Chat Settings... - + mentioned you. - + Click to view - + You are flooding the chat. Please wait a couple of seconds. 你正在灌水,请等待几秒再发言. @@ -4830,15 +5012,25 @@ Please enter a name: TabSupervisor - + Are you sure? 你确定? - + There are still open games. Are you sure you want to quit? 游戏还在继续, 你确定要退出吗? + + + Promotion + + + + + You have been promoted to moderator. Please log out and back in for changes to take effect. + + TabUserLists @@ -4861,55 +5053,97 @@ Please enter a name: UserContextMenu - + User &details 用户详细信息 - + Private &chat - + Show this user's &games 显示这个用户的游戏 - + Add to &buddy list 加入到好友列表 - + Remove from &buddy list - + Add to &ignore list 加入到屏蔽列表 - + Remove from &ignore list - + Kick from &game 从游戏中踢出 - + Ban from &server 在服务器中禁止 - + + &Promote user to moderator + + + + + Dem&ote user from moderator + + + + %1's games %1的游戏 + + + + Success + + + + + Successfully promoted user. + + + + + Successfully demoted user. + + + + + + Failed + + + + + Failed to promote user. + + + + + Failed to demote user. + + UserInfoBox @@ -5078,42 +5312,42 @@ Please enter a name: UserInterfaceSettingsPage - + General interface settings 通用接口设置 - + Enable notifications in taskbar - + Notify in the taskbar for game events while you are spectating - + &Double-click cards to play them (instead of single-click) 双击卡牌开始 (而不是单击开始) - + &Play all nonlands onto the stack (not the battlefield) by default - + Annotate card text on tokens - + Animation settings 动画设置 - + &Tap/untap animation 横置/重置 动画 @@ -5121,22 +5355,22 @@ Please enter a name: UserList - + Users connected to server: %1 - + Users in this room: %1 房间人数: %1 - + Buddies online: %1 / %2 好友在线: %1 / %2 - + Ignored users online: %1 / %2 屏蔽用户在线: %1 / %2 @@ -5195,7 +5429,7 @@ Please enter a name: - Disabled sets will still be used for loading images + Disabled sets will be used for loading images only if all the enabled sets failed @@ -5204,12 +5438,12 @@ Please enter a name: 编辑版本 - + Success - + The sets database has been saved successfully. @@ -5237,4 +5471,561 @@ Please enter a name: + + shortcutsTab + + + Form + + + + + Main Window + + + + + Deck editor + + + + + Local gameplay + + + + + Watch replay + + + + + Connect + + + + + Register + + + + + Full screen + + + + + Settings + + + + + Check for card updates + + + + + Exit + + + + + Deck Editor + + + + + Analyze deck + + + + + Load deck (clipboard) + + + + + Clerar all filters + + + + + New deck + + + + + Clear one filter + + + + + Open custom folder + + + + + Close + + + + + Print deck + + + + + Edit sets + + + + + Delete card + + + + + Edit tokens + + + + + Reset layout + + + + + Add card + + + + + Save deck + + + + + Remove card + + + + + Save deck as + + + + + Load deck + + + + + Save deck (clipboard) + + + + + + Counters + + + + + Life + + + + + + + + + Set + + + + + + + + Add + + + + + + + + Remove + + + + + Red + + + + + Green + + + + + Yellow + + + + + Mainwindow / Deck editor + + + + + Power / toughness + + + + + Power and toughness + + + + + Add (+1/+1) + + + + + Remove (-1/-1) + + + + + Toughness + + + + + Remove (-0/-1) + + + + + Add (+0/+1) + + + + + Power + + + + + Remove (-1/-0) + + + + + Add (+1/+0) + + + + + Game Phases + + + + + Untap + + + + + Disconnect + + + + + Upkeep + + + + + + Draw + + + + + Main 1 + + + + + Start combat + + + + + Attack + + + + + Block + + + + + Damage + + + + + End combat + + + + + Main 2 + + + + + End + + + + + Next phase + + + + + Next turn + + + + + Player + + + + + Tap Card + + + + + Untap Card + + + + + Untap all + + + + + Toogle untap + + + + + Flip card + + + + + Peek card + + + + + Play card + + + + + Attach card + + + + + Unattach card + + + + + Clone card + + + + + Create token + + + + + Create another token + + + + + Set annotation + + + + + Phases / P/T / Player + + + + + Move card to + + + + + Bottom library + + + + + Top library + + + + + + Graveyard + + + + + + Exile + + + + + Hand + + + + + View + + + + + Library + + + + + Tops card of library + + + + + Sideboard + + + + + Close recent view + + + + + Pre-play + + + + + Load remote deck + + + + + Load local deck + + + + + Game play + + + + + Draw arrow + + + + + Leave game + + + + + Remove local arrows + + + + + Concede + + + + + Roll dice + + + + + Rotate view CW + + + + + Shuffle library + + + + + Rotate view CCW + + + + + Mulligan + + + + + Draw card + + + + + Draw cards + + + + + Undo draw + + + + + Always reveal top card + + + + + Draw / Move / View / Game play + + + \ No newline at end of file diff --git a/cockatrice/translations/cockatrice_zh-Hant.ts b/cockatrice/translations/cockatrice_zh-Hant.ts new file mode 100644 index 00000000..d17340ad --- /dev/null +++ b/cockatrice/translations/cockatrice_zh-Hant.ts @@ -0,0 +1,6005 @@ + + + AbstractCounter + + + &Set counter... + + + + + Set counter + + + + + New value for counter '%1': + + + + + AppearanceSettingsPage + + + Theme settings + + + + + Current theme: + + + + + Card rendering + + + + + Display card names on cards having a picture + + + + + Scale cards on mouse over + + + + + Hand layout + + + + + Display hand horizontally (wastes space) + + + + + Enable left justification + + + + + Table grid layout + + + + + Invert vertical coordinate + + + + + Minimum player count for multi-column layout: + + + + + BanDialog + + + ban &user name + + + + + ban &IP address + + + + + ban client I&D + + + + + Ban type + + + + + &permanent ban + + + + + &temporary ban + + + + + &Days: + + + + + &Hours: + + + + + &Minutes: + + + + + Duration of the ban + + + + + Please enter the reason for the ban. +This is only saved for moderators and cannot be seen by the banned person. + + + + + Please enter the reason for the ban that will be visible to the banned person. + + + + + &OK + + + + + &Cancel + + + + + Ban user from server + + + + + + + + Error + + + + + You have to select a name-based, IP-based, clientId based, or some combination of the three to place a ban. + + + + + You must have a value in the name ban when selecting the name ban checkbox. + + + + + You must have a value in the ip ban when selecting the ip ban checkbox. + + + + + You must have a value in the clientid ban when selecting the clientid ban checkbox. + + + + + CardDatabase + + + New sets found + + + + + %1 new set(s) have been found in the card database. Do you want to enable them? + + + + + CardDatabaseModel + + + Name + + + + + Sets + + + + + Mana cost + + + + + Card type + + + + + P/T + + + + + CardFrame + + + Image + + + + + Description + + + + + Both + + + + + CardInfoText + + + Name: + + + + + Mana cost: + + + + + Color(s): + + + + + Card type: + + + + + P / T: + + + + + Loyalty: + + + + + CardInfoWidget + + + Show card only + + + + + Show text only + + + + + Show full info + + + + + Name: + + + + + Mana cost: + + + + + Color(s): + + + + + Card type: + + + + + P / T: + + + + + Loyalty: + + + + + CardItem + + + &Power / toughness + + + + + &Move to + + + + + CardZone + + + her hand + nominative, female owner + + + + + %1's hand + nominative, female owner + + + + + his hand + nominative, male owner + + + + + %1's hand + nominative, male owner + + + + + her library + look at zone, female owner + + + + + %1's library + look at zone, female owner + + + + + his library + look at zone, male owner + + + + + %1's library + look at zone, male owner + + + + + of her library + top cards of zone, female owner + + + + + of %1's library + top cards of zone, female owner + + + + + of his library + top cards of zone, male owner + + + + + of %1's library + top cards of zone, male owner + + + + + her library + reveal zone, female owner + + + + + %1's library + reveal zone, female owner + + + + + his library + reveal zone, male owner + + + + + %1's library + reveal zone, male owner + + + + + her library + shuffle, female owner + + + + + %1's library + shuffle, female owner + + + + + his library + shuffle, male owner + + + + + %1's library + shuffle, male owner + + + + + her sideboard + look at zone, female owner + + + + + %1's sideboard + look at zone, female owner + + + + + his sideboard + look at zone, male owner + + + + + %1's sideboard + look at zone, male owner + + + + + her library + nominative, female owner + + + + + %1's library + nominative, female owner + + + + + his library + nominative, male owner + + + + + %1's library + nominative, male owner + + + + + her graveyard + nominative, female owner + + + + + %1's graveyard + nominative, female owner + + + + + his graveyard + nominative, male owner + + + + + %1's graveyard + nominative, male owner + + + + + her exile + nominative, female owner + + + + + %1's exile + nominative, female owner + + + + + his exile + nominative, male owner + + + + + %1's exile + nominative, male owner + + + + + her sideboard + nominative, female owner + + + + + %1's sideboard + nominative, female owner + + + + + his sideboard + nominative, male owner + + + + + %1's sideboard + nominative, male owner + + + + + DeckEditorSettingsPage + + + Nothing is here... yet + + + + + General + + + + + DeckListModel + + + Number + + + + + Card + + + + + Price + + + + + DeckStatsInterface + + + + Error + + + + + The reply from the server could not be parsed. + + + + + DeckViewContainer + + + Load local deck + + + + + Load deck from server + + + + + Ready to s&tart + + + + + S&ideboard unlocked + + + + + S&ideboard locked + + + + + Load deck + + + + + Error + + + + + The selected file could not be loaded. + + + + + DlgCardSearch + + + Card name: + + + + + Card text: + + + + + Card type (OR): + + + + + Color (OR): + + + + + O&K + + + + + &Cancel + + + + + Card search + + + + + DlgConnect + + + Previous Host + + + + + New Host + + + + + &Host: + + + + + Enter host name + + + + + &Port: + + + + + Player &name: + + + + + P&assword: + + + + + &Save password + + + + + A&uto connect at start + + + + + Connect to server + + + + + DlgCreateGame + + + &Description: + + + + + &Password: + + + + + P&layers: + + + + + Re&member settings + + + + + Game type + + + + + Only &buddies can join + + + + + Only &registered users can join + + + + + Joining restrictions + + + + + &Spectators can watch + + + + + Spectators &need a password to watch + + + + + Spectators can see &hands + + + + + Spectators can &chat + + + + + Spectators + + + + + &Clear + + + + + Create game + + + + + Game information + + + + + Error + + + + + Server error. + + + + + DlgCreateToken + + + &Name: + + + + + Token + + + + + C&olor: + + + + + white + + + + + blue + + + + + black + + + + + red + + + + + green + + + + + multicolor + + + + + colorless + + + + + &P/T: + + + + + &Annotation: + + + + + &Destroy token when it leaves the table + + + + + Token data + + + + + Show &all tokens + + + + + Show tokens from this &deck + + + + + Choose token from list + + + + + Create token + + + + + DlgEditAvatar + + + + No image chosen. + + + + + To change your avatar, choose a new image. +To remove your current avatar, confirm without choosing a new image. + + + + + Browse... + + + + + Change avatar + + + + + Open Image + + + + + Image Files (*.png *.jpg *.bmp) + + + + + Invalid image chosen. + + + + + DlgEditPassword + + + Old password: + + + + + New password: + + + + + Confirm new password: + + + + + Change password + + + + + Error + + + + + The new passwords don't match. + + + + + DlgEditTokens + + + &Name: + + + + + C&olor: + + + + + white + + + + + blue + + + + + black + + + + + red + + + + + green + + + + + multicolor + + + + + colorless + + + + + &P/T: + + + + + &Annotation: + + + + + Token data + + + + + + Add token + + + + + Remove token + + + + + Edit tokens + + + + + Please enter the name of the token: + + + + + Error + + + + + The chosen name conflicts with an existing card or token. +Make sure to enable the 'token set' in the 'Edit sets...' dialog to display them correctly. + + + + + DlgEditUser + + + Email: + + + + + Pronouns: + + + + + Neutral + + + + + Masculine + + + + + Feminine + + + + + Country: + + + + + Undefined + + + + + Real name: + + + + + Edit user profile + + + + + DlgFilterGames + + + Show &unavailable games + + + + + Show &password protected games + + + + + Game &description: + + + + + &Creator name: + + + + + &Game types + + + + + at &least: + + + + + at &most: + + + + + Maximum player count + + + + + Filter games + + + + + DlgLoadDeckFromClipboard + + + &Refresh + + + + + Load deck from clipboard + + + + + + Error + + + + + + Invalid deck list. + + + + + DlgLoadRemoteDeck + + + Load deck + + + + + DlgRegister + + + &Host: + + + + + &Port: + + + + + Player &name: + + + + + P&assword: + + + + + Password (again): + + + + + Email: + + + + + Email (again): + + + + + Pronouns: + + + + + Neutral + + + + + Masculine + + + + + Feminine + + + + + Undefined + + + + + + Registration Warning + + + + + Your passwords do not match, please try again. + + + + + Your email addresses do not match, please try again. + + + + + Country: + + + + + Real name: + + + + + Register to server + + + + + DlgSettings + + + + + Error + + + + + Unknown Error loading card database + + + + + Your card database is invalid. + +Cockatrice may not function correctly with an invalid database + +You may need to rerun oracle to update your card database. + +Would you like to change your database location setting? + + + + + Your card database version is too old. + +This can cause problems loading card information or images + +Usually this can be fixed by rerunning oracle to to update your card database. + +Would you like to change your database location setting? + + + + + File Error loading your card database. + +Would you like to change your database location setting? + + + + + Your card database was loaded but contains no cards. + +Would you like to change your database location setting? + + + + + Your card database did not finish loading + +Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues with your cards.xml attached + +Would you like to change your database location setting? + + + + + Unknown card database load status + +Please file a ticket at http://github.com/Cockatrice/Cockatrice/issues + +Would you like to change your database location setting? + + + + + The path to your deck directory is invalid. Would you like to go back and set the correct path? + + + + + The path to your card pictures directory is invalid. Would you like to go back and set the correct path? + + + + + Settings + + + + + General + + + + + Appearance + + + + + User Interface + + + + + Deck Editor + + + + + Chat + + + + + Sound + + + + + Shortcuts + + + + + GameSelector + + + + + + + + + + + Error + + + + + Please join the appropriate room first. + + + + + Wrong password. + + + + + Spectators are not allowed in this game. + + + + + The game is already full. + + + + + The game does not exist any more. + + + + + This game is only open to registered users. + + + + + This game is only open to its creator's buddies. + + + + + You are being ignored by the creator of this game. + + + + + Join game + + + + + Password: + + + + + Please join the respective room first. + + + + + Games + + + + + &Filter games + + + + + C&lear filter + + + + + C&reate + + + + + &Join + + + + + J&oin as spectator + + + + + GamesModel + + + Game Created + + + + + Creator + + + + + Description + + + + + <1m ago + + + + + <5m ago + + + + + %1m ago + + + + + 1hr %1m ago + + + + + %1hr ago + + + + + 5+ hrs ago + + + + + password + + + + + buddies only + + + + + reg. users only + + + + + + can chat + + + + + see hands + + + + + can see hands + + + + + not allowed + + + + + Room + + + + + Game Type + + + + + Restrictions + + + + + Players + + + + + Spectators + + + + + GeneralSettingsPage + + + Reset/Clear Downloaded Pictures + + + + + + + + + Choose path + + + + + Success + + + + + Downloaded card pictures have been reset. + + + + + Error + + + + + One or more downloaded card pictures could not be cleared. + + + + + Personal settings + + + + + Language: + + + + + Download card pictures on the fly + + + + + Download card pictures from a custom URL + + + + + Custom Card Download URL: + + + + + Linking FAQ + + + + + Notify when new client features are available + + + + + Paths + + + + + Decks directory: + + + + + Replays directory: + + + + + Pictures directory: + + + + + Card database: + + + + + Token database: + + + + + Picture cache size: + + + + + + English + 繁體中文 (Chinese Traditional) + + + + MainWindow + + + There are too many concurrent connections from your address. + + + + + Scheduled server shutdown. + + + + + Banned by moderator + + + + + Expected end time: %1 + + + + + This ban lasts indefinitely. + + + + + Connection closed + + + + + The server has terminated your connection. +Reason: %1 + + + + + Scheduled server shutdown + + + + + The server is going to be restarted in %n minute(s). +All running games will be lost. +Reason for shutdown: %1 + + + + + Number of players + + + + + Please enter the number of players. + + + + + + Player %1 + + + + + Load replay + + + + + About Cockatrice + + + + + Version %1 + + + + + Translators: + + + + + Project Manager: + + + + + The server has reached its maximum user capacity, please check back later. + + + + + + Invalid username. + + + + + You have been logged out due to logging in at another location. + + + + + + Success + + + + + Registration accepted. +Will now login. + + + + + Account activation accepted. +Will now login. + + + + + Past Project Managers: + + + + + Developers: + + + + + Our Developers + + + + + Help Develop! + + + + + Recognition Page + + + + + Help Translate! + + + + + Support: + + + + + Report an Issue + + + + + + + + + + + + + + + + + + + + + + + Error + + + + + Server timeout + + + + + Failed Login + + + + + Your client does not support features that the server requires, please update your client and try again. + + + + + Incorrect username or password. Please check your authentication information and try again. + + + + + There is already an active session using this user name. +Please close that session first and re-login. + + + + + + You are banned until %1. + + + + + + You are banned indefinitely. + + + + + This server requires user registration. Do you want to register now? + + + + + This server requires client ID's. Your client is either failing to generate an ID or you are running a modified client. +Please close and reopen your client to try again. + + + + + An internal error has occurred, please try closing and reopening your client and try again. If the error persists try updating your client to the most recent build and if need be contact your software provider. + + + + + Account activation + + + + + Unknown login error: %1 + + + + + + +This usually means that your client version is out of date, and the server sent a reply your client doesn't understand. + + + + + Your username must respect these rules: + + + + + is %1 - %2 characters long + + + + + can %1 contain lowercase characters + + + + + + + + NOT + + + + + can %1 contain uppercase characters + + + + + can %1 contain numeric characters + + + + + can contain the following punctuation: %1 + + + + + first character can %1 be a punctuation mark + + + + + You may only use A-Z, a-z, 0-9, _, ., and - in your username. + + + + + + + + + Registration denied + + + + + Registration is currently disabled on this server + + + + + There is already an existing account with the same user name. + + + + + It's mandatory to specify a valid email address when registering. + + + + + Too many registration attempts from your IP address. + + + + + Password too short. + + + + + Registration failed for a technical problem on the server. + + + + + Unknown registration error: %1 + + + + + Account activation failed + + + + + Socket error: %1 + + + + + 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. + + + + + Your Cockatrice client is obsolete. Please update your Cockatrice version. +Local version is %1, remote version is %2. + + + + + Connecting to %1... + + + + + Registering to %1 as %2... + + + + + Disconnected + + + + + Connected, logging in at %1 + + + + + &Connect... + + + + + &Disconnect + + + + + Start &local game... + + + + + &Watch replay... + + + + + &Deck editor + + + + + &Full screen + + + + + &Register to server... + + + + + &Settings... + + + + + + &Exit + + + + + A&ctions + + + + + &Cockatrice + + + + + &About Cockatrice + + + + + &Help + + + + + Check for card updates... + + + + + A card database update is already running. + + + + + Unable to run the card database updater: + + + + + The card database updater exited with an error: %1 + + + + + Update completed successfully. Cockatrice will now reload the card database. + + + + + Your client appears to be missing features that the server supports. +This usually means that your client version is out of date, please check to see if there is a new client available for download. + + + + + + + Information + + + + + Troubleshooting + + + + + F.A.Q. + + + + + Your account has not been activated yet. +You need to provide the activation token received in the activation email + + + + + failed to start. + + + + + crashed. + + + + + timed out. + + + + + write error. + + + + + read error. + + + + + unknown error. + + + + + MessageLogWidget + + + The game has been closed. + + + + + %1 is now watching the game. + + + + + %1 is not watching the game any more. + + + + %1 draws %n card(s). + + %1 draws a card. + %1 draws %n cards. + + + + + You have joined game #%1. + female + + + + + You have joined game #%1. + male + + + + + You are watching a replay of game #%1. + female + + + + + You are watching a replay of game #%1. + male + + + + + %1 has joined the game. + female + + + + + %1 has joined the game. + male + + + + + %1 has left the game. + female + + + + + %1 has left the game. + male + + + + + You have been kicked out of the game. + + + + + %1 has loaded a deck (%2). + + + + + %1 has loaded a deck with %2 sideboard cards (%3). + + + + + %1 is ready to start the game. + female + + + + + %1 is ready to start the game. + male + + + + + %1 is not ready to start the game any more. + female + + + + + %1 is not ready to start the game any more. + male + + + + + %1 has locked her sideboard. + female + + + + + %1 has locked his sideboard. + male + + + + + %1 has unlocked her sideboard. + female + + + + + %1 has unlocked his sideboard. + male + + + + + %1 has conceded the game. + female + + + + + %1 has conceded the game. + male + + + + + %1 has restored connection to the game. + female + + + + + %1 has restored connection to the game. + male + + + + + %1 has lost connection to the game. + female + + + + + %1 has lost connection to the game. + male + + + + + %1 shuffles %2. + female + + + + + %1 shuffles %2. + male + + + + + %1 rolls a %2 with a %3-sided die. + female + + + + + %1 rolls a %2 with a %3-sided die. + male + + + + %1 draws %n card(s). + female + + %1 draws a card. + %1 draws %n cards. + + + + %1 draws %n card(s). + male + + %1 draws a card. + %1 draws %n cards. + + + + + %1 undoes his last draw. + + + + + %1 undoes her last draw. + + + + + %1 undoes his last draw (%2). + + + + + %1 undoes her last draw (%2). + + + + + from exile + + + + + the bottom card of %1's library + + + + + the bottom card of his library + + + + + the bottom card of her library + + + + + from the bottom of %1's library + + + + + from the bottom of his library + + + + + from the bottom of her library + + + + + the top card of %1's library + + + + + the top card of his library + + + + + the top card of her library + + + + + from the top of %1's library + + + + + from the top of his library + + + + + from the top of her library + + + + + from %1's library + + + + + from library + + + + + from sideboard + + + + + from the stack + + + + + %1 gives %2 control over %3. + + + + + %1 puts %2 into play tapped%3. + + + + + %1 puts %2 into play%3. + + + + + %1 exiles %2%3. + + + + + %1 puts %2%3 into his library. + + + + + %1 puts %2%3 into her library. + + + + + %1 puts %2%3 on bottom of his library. + + + + + %1 puts %2%3 on bottom of her library. + + + + + %1 puts %2%3 on top of his library. + + + + + %1 puts %2%3 on top of her library. + + + + + %1 puts %2%3 into his library at position %4. + + + + + %1 puts %2%3 into her library at position %4. + + + + + %1 moves %2%3 to sideboard. + + + + + %1 plays %2%3. + + + + + %1 takes a mulligan to %n. + female + + + + + %1 takes a mulligan to %n. + male + + + + + %1 flips %2 face-down. + female + + + + + %1 flips %2 face-down. + male + + + + + %1 flips %2 face-up. + female + + + + + %1 flips %2 face-up. + male + + + + + %1 destroys %2. + female + + + + + %1 destroys %2. + male + + + + + %1 unattaches %2. + female + + + + + %1 unattaches %2. + male + + + + + %1 creates token: %2%3. + female + + + + + %1 creates token: %2%3. + male + + + + + %1 points from her %2 to herself. + female + + + + + %1 points from his %2 to himself. + male + + + + + %1 points from her %2 to %3. + p1 female, p2 female + + + + + %1 points from her %2 to %3. + p1 female, p2 male + + + + + %1 points from his %2 to %3. + p1 male, p2 female + + + + + %1 points from his %2 to %3. + p1 male, p2 male + + + + + %1 points from %2's %3 to herself. + card owner female, target female + + + + + %1 points from %2's %3 to herself. + card owner male, target female + + + + + %1 points from %2's %3 to himself. + card owner female, target male + + + + + %1 points from %2's %3 to himself. + card owner male, target male + + + + + %1 points from %2's %3 to %4. + p1 female, p2 female, p3 female + + + + + %1 points from %2's %3 to %4. + p1 female, p2 female, p3 male + + + + + %1 points from %2's %3 to %4. + p1 female, p2 male, p3 female + + + + + %1 points from %2's %3 to %4. + p1 female, p2 male, p3 male + + + + + %1 points from %2's %3 to %4. + p1 male, p2 female, p3 female + + + + + %1 points from %2's %3 to %4. + p1 male, p2 female, p3 male + + + + + %1 points from %2's %3 to %4. + p1 male, p2 male, p3 female + + + + + %1 points from %2's %3 to %4. + p1 male, p2 male, p3 male + + + + + %1 points from her %2 to her %3. + female + + + + + %1 points from his %2 to his %3. + male + + + + + %1 points from her %2 to %3's %4. + p1 female, p2 female + + + + + %1 points from her %2 to %3's %4. + p1 female, p2 male + + + + + %1 points from his %2 to %3's %4. + p1 male, p2 female + + + + + %1 points from his %2 to %3's %4. + p1 male, p2 male + + + + + %1 points from %2's %3 to her own %4. + card owner female, target female + + + + + %1 points from %2's %3 to her own %4. + card owner male, target female + + + + + %1 points from %2's %3 to his own %4. + card owner female, target male + + + + + %1 points from %2's %3 to his own %4. + card owner male, target male + + + + + %1 points from %2's %3 to %4's %5. + p1 female, p2 female, p3 female + + + + + %1 points from %2's %3 to %4's %5. + p1 female, p2 female, p3 male + + + + + %1 points from %2's %3 to %4's %5. + p1 female, p2 male, p3 female + + + + + %1 points from %2's %3 to %4's %5. + p1 female, p2 male, p3 male + + + + + %1 points from %2's %3 to %4's %5. + p1 male, p2 female, p3 female + + + + + %1 points from %2's %3 to %4's %5. + p1 male, p2 female, p3 male + + + + + %1 points from %2's %3 to %4's %5. + p1 male, p2 male, p3 female + + + + + %1 points from %2's %3 to %4's %5. + p1 male, p2 male, p3 male + + + + %1 places %n %2 counter(s) on %3 (now %4). + female + + + + %1 places %n %2 counter(s) on %3 (now %4). + male + + + + %1 removes %n %2 counter(s) from %3 (now %4). + female + + + + %1 removes %n %2 counter(s) from %3 (now %4). + male + + + + + %1 taps her permanents. + female + + + + + %1 untaps her permanents. + female + + + + + %1 taps his permanents. + male + + + + + %1 untaps his permanents. + male + + + + + %1 taps %2. + female + + + + + %1 untaps %2. + female + + + + + %1 taps %2. + male + + + + + %1 untaps %2. + male + + + + + %1 sets counter %2 to %3 (%4%5). + female + + + + + %1 sets counter %2 to %3 (%4%5). + male + + + + + %1 sets %2 to not untap normally. + female + + + + + %1 sets %2 to not untap normally. + male + + + + + %1 sets %2 to untap normally. + female + + + + + %1 sets %2 to untap normally. + male + + + + + %1 sets PT of %2 to %3. + female + + + + + %1 sets PT of %2 to %3. + male + + + + + %1 sets annotation of %2 to %3. + female + + + + + %1 sets annotation of %2 to %3. + male + + + + + %1 is looking at %2. + female + + + + + %1 is looking at %2. + male + + + + %1 is looking at the top %n card(s) %2. + female + + + + %1 is looking at the top %n card(s) %2. + male + + + + + %1 stops looking at %2. + female + + + + + %1 stops looking at %2. + male + + + + + %1 reveals %2 to %3. + p1 female, p2 female + + + + + %1 reveals %2 to %3. + p1 female, p2 male + + + + + %1 reveals %2 to %3. + p1 male, p2 female + + + + + %1 reveals %2 to %3. + p1 male, p2 male + + + + + %1 reveals %2. + female + + + + + %1 reveals %2. + male + + + + + %1 randomly reveals %2%3 to %4. + p1 female, p2 female + + + + + %1 randomly reveals %2%3 to %4. + p1 female, p2 male + + + + + %1 randomly reveals %2%3 to %4. + p1 male, p2 female + + + + + %1 randomly reveals %2%3 to %4. + p1 male, p2 male + + + + + %1 randomly reveals %2%3. + female + + + + + %1 randomly reveals %2%3. + male + + + + + %1 peeks at face down card #%2. + female + + + + + %1 peeks at face down card #%2. + male + + + + + %1 peeks at face down card #%2: %3. + female + + + + + %1 peeks at face down card #%2: %3. + male + + + + + %1 reveals %2%3 to %4. + p1 female, p2 female + + + + + %1 reveals %2%3 to %4. + p1 female, p2 male + + + + + %1 reveals %2%3 to %4. + p1 male, p2 female + + + + + %1 reveals %2%3 to %4. + p1 male, p2 male + + + + + %1 reveals %2%3. + female + + + + + %1 reveals %2%3. + male + + + + + %1 is now keeping the top card %2 revealed. + + + + + %1 is not revealing the top card %2 any longer. + + + + + It is now %1's turn. + female + + + + + It is now %1's turn. + male + + + + + + a card + + + + %1 places %n counter(s) (%2) on %3 (now %4). + + %1 places a counter (%2) on %3 (now %4). + %1 places %n counters (%2) on %3 (now %4). + + + + %1 removes %n counter(s) (%2) from %3 (now %4). + + %1 removes a counter (%2) from %3 (now %4). + %1 removes %n counters (%2) from %3 (now %4). + + + + + red + + + + + yellow + + + + + green + + + + + The game has started. + + + + + %1 draws his initial hand. + + + + + %1 draws her initial hand. + + + + %1 places %n %2 counter(s) on %3 (now %4). + + %1 places a %2 counter on %3 (now %4). + %1 places %n %2 counters on %3 (now %4). + + + + %1 removes %n %2 counter(s) from %3 (now %4). + + %1 removes a %2 counter from %3 (now %4). + %1 removes %n %2 counters from %3 (now %4). + + + + + ending phase + + + + + untap step + + + + + %1 draws %2 card(s). + female + + + + + %1 draws %2 card(s). + male + + + + + from play + + + + + from her graveyard + + + + + from his graveyard + + + + + from her hand + + + + + from his hand + + + + + %1 puts %2%3 into her graveyard. + + + + + %1 puts %2%3 into his graveyard. + + + + + %1 moves %2%3 to her hand. + + + + + %1 moves %2%3 to his hand. + + + + + %1 attaches %2 to %3's %4. + p1 female, p2 female + + + + + %1 attaches %2 to %3's %4. + p1 female, p2 male + + + + + %1 attaches %2 to %3's %4. + p1 male, p2 female + + + + + %1 attaches %2 to %3's %4. + p1 male, p2 male + + + + + %1 places %2 %3 counter(s) on %4 (now %5). + female + + + + + %1 places %2 %3 counter(s) on %4 (now %5). + male + + + + + %1 removes %2 %3 counter(s) from %4 (now %5). + female + + + + + %1 removes %2 %3 counter(s) from %4 (now %5). + male + + + + + %1 is looking at the top %2 card(s) %3. + female + + + + + %1 is looking at the top %2 card(s) %3. + male + + + + + upkeep step + + + + + draw step + + + + + first main phase + + + + + beginning of combat step + + + + + declare attackers step + + + + + declare blockers step + + + + + combat damage step + + + + + end of combat step + + + + + second main phase + + + + + It is now the %1. + + + + + MessagesSettingsPage + + + Chat settings + + + + + Custom alert words + + + + + Enable chat mentions + + + + + Enable mention completer + + + + + In-game message macros + + + + + Ignore chat room messages sent by unregistered users + + + + + Ignore private messages sent by unregistered users + + + + + Enable desktop notifications for private messages + + + + + Separate words with a space, alphanumeric characters only + + + + + + Invert text color + + + + + Enable desktop notification for mentions. + + + + + + (Color is hexadecimal) + + + + + Add message + + + + + Message: + + + + + PhasesToolbar + + + Untap step + + + + + Upkeep step + + + + + Draw step + + + + + First main phase + + + + + Beginning of combat step + + + + + Declare attackers step + + + + + Declare blockers step + + + + + Combat damage step + + + + + End of combat step + + + + + Second main phase + + + + + End of turn step + + + + + Player + + + &View library + + + + + Move top cards to &graveyard... + + + + + View &top cards of library... + + + + + &View graveyard + + + + + &View sideboard + + + + + Player "%1" + + + + + + + + &Hand + + + + + &Reveal hand to... + + + + + Reveal r&andom card to... + + + + + &Library + + + + + + + + &Graveyard + + + + + &Sideboard + + + + + Red + + + + + Yellow + + + + + Green + + + + + View top cards of library + + + + + Number of cards: + + + + + &Draw card + + + + + Reveal top cards of library + + + + + Number of cards: (max. %1) + + + + + &View exile + + + + + + + + &Exile + + + + + Reveal t&op cards to... + + + + + D&raw cards... + + + + + Take &mulligan + + + + + &Shuffle + + + + + &Counters + + + + + &Untap all permanents + + + + + R&oll die... + + + + + &Create token... + + + + + C&reate another token + + + + + S&ay + + + + + &Move hand to... + + + + + + + + &Top of library + + + + + + + + &Bottom of library + + + + + &Move graveyard to... + + + + + &Move exile to... + + + + + Reveal &library to... + + + + + &Always reveal top card + + + + + O&pen deck in deck editor + + + + + &Undo last draw + + + + + Play top card &face down + + + + + Move top cards to &exile... + + + + + Put top card on &bottom + + + + + Put bottom card &in graveyard + + + + + Cr&eate predefined token + + + + + C&ard + + + + + &All players + + + + + &Play + + + + + &Hide + + + + + Play &Face Down + + + + + &Tap + + + + + &Untap + + + + + Toggle &normal untapping + + + + + &Flip + + + + + &Peek at card face + + + + + &Clone + + + + + Attac&h to card... + + + + + Unattac&h + + + + + &Draw arrow... + + + + + &Increase power + + + + + &Decrease power + + + + + I&ncrease toughness + + + + + D&ecrease toughness + + + + + In&crease power and toughness + + + + + Dec&rease power and toughness + + + + + Set &power and toughness... + + + + + &Set annotation... + + + + + &Add counter (%1) + + + + + &Remove counter (%1) + + + + + &Set counters (%1)... + + + + + Draw cards + + + + + + + + Number: + + + + + Move top cards to grave + + + + + Move top cards to exile + + + + + Roll die + + + + + Number of sides: + + + + + Set power/toughness + + + + + Please enter the new PT: + + + + + Set annotation + + + + + Please enter the new annotation: + + + + + Set counters + + + + + Cr&eate related card + + + + + QMenuBar + + + Services + + + + + Hide %1 + + + + + Hide Others + + + + + Show All + + + + + Preferences... + + + + + Quit %1 + + + + + About %1 + + + + + QObject + + + Cockatrice replays (*.cor) + + + + + Common deck formats (*.cod *.dec *.mwDeck) + + + + + All files (*.*) + + + + + RemoteDeckList_TreeModel + + + Name + + + + + ID + + + + + Upload time + + + + + RemoteReplayList_TreeModel + + + ID + + + + + Name + + + + + Players + + + + + Keep + + + + + Time started + + + + + Duration (sec) + + + + + RoomSelector + + + Rooms + + + + + Joi&n + + + + + Room + + + + + Description + + + + + Permissions + + + + + Players + + + + + Games + + + + + + Error + + + + + You do not have the proper permission to join this room. + + + + + Failed to join the room due to an unknown error. + + + + + SequenceEdit + + + Shortcut already in use + + + + + SetsModel + + + Enabled + + + + + Set type + + + + + Set code + + + + + Long name + + + + + Release date + + + + + ShutdownDialog + + + &Reason for shutdown: + + + + + &Time until shutdown (minutes): + + + + + Shut down server + + + + + SoundSettingsPage + + + Choose path + + + + + Enable &sounds + + + + + Path to sounds directory: + + + + + Test system sound engine + + + + + Sound settings + + + + + Master volume requires QT5 + + + + + Master volume + + + + + TabAdmin + + + Update server &message + + + + + &Shut down server + + + + + &Reload configuration + + + + + Server administration functions + + + + + &Unlock functions + + + + + &Lock functions + + + + + Unlock administration functions + + + + + Do you really want to unlock the administration functions? + + + + + Administration + + + + + TabDeckEditor + + + &Print deck... + + + + + &Close + + + + + &Edit sets... + + + + + Filters + + + + + &Clear all filters + + + + + Delete selected + + + + + Deck &name: + + + + + &Comments: + + + + + Hash: + + + + + &New deck + + + + + &Load deck... + + + + + &Save deck + + + + + Save deck &as... + + + + + Load deck from cl&ipboard... + + + + + Save deck to clip&board + + + + + &Analyze deck on deckstats.net + + + + + Open custom image folder + + + + + Open custom sets folder + + + + + Add card to &maindeck + + + + + Add card to &sideboard + + + + + &Deck Editor + + + + + C&ard Database + + + + + Show/Hide card information + + + + + Show/Hide deck + + + + + Show/Hide filters + + + + + Reset layout + + + + + Card Info + + + + + Deck + + + + + Welcome + + + + + Hi! It seems like you're running this version of Cockatrice for the first time. +All the sets in the card database have been enabled. +Read more about changing the set order or disabling specific sets and consequent effects in the "Edit Sets" window. + + + + + &Remove row + + + + + &Increment number + + + + + &Decrement number + + + + + Edit &tokens... + + + + + Deck: %1 + + + + + Are you sure? + + + + + The decklist has been modified. +Do you want to save the changes? + + + + + Load deck + + + + + + + Error + + + + + The deck could not be saved. + + + + + + The deck could not be saved. +Please check that the directory is writable and try again. + + + + + Save deck + + + + + TabDeckStorage + + + Local file system + + + + + Server deck storage + + + + + + Open in deck editor + + + + + Upload deck + + + + + Download deck + + + + + + New folder + + + + + + Delete + + + + + Enter deck name + + + + + This decklist does not have a name. +Please enter a name: + + + + + Unnamed deck + + + + + Delete local file + + + + + + + Are you sure you want to delete "%1"? + + + + + Name of new folder: + + + + + Delete remote folder + + + + + Delete remote deck + + + + + Deck storage + + + + + TabGame + + + &Phases + + + + + &Game + + + + + Next &phase + + + + + Next &turn + + + + + &Remove all local arrows + + + + + Rotate View Cl&ockwise + + + + + Rotate View Co&unterclockwise + + + + + Game &information + + + + + &Concede + + + + + &Leave game + + + + + C&lose replay + + + + + &Say: + + + + + Concede + + + + + Are you sure you want to concede this game? + + + + + Leave game + + + + + Are you sure you want to leave this game? + + + + + You are flooding the game. Please wait a couple of seconds. + + + + + You have been kicked out of the game. + + + + + REPLAY + + + + + TabMessage + + + Private &chat + + + + + &Leave + + + + + %1 - Private chat + + + + + This user is ignoring you. + + + + + Private message from + + + + + %1 has left the server. + + + + + %1 has joined the server. + + + + + TabReplays + + + Local file system + + + + + Server replay storage + + + + + + Watch replay + + + + + + Delete + + + + + Download replay + + + + + Toggle expiration lock + + + + + Delete local file + + + + + Are you sure you want to delete "%1"? + + + + + Delete remote replay + + + + + Are you sure you want to delete the replay of game %1? + + + + + Game replays + + + + + TabRoom + + + &Say: + + + + + Chat + + + + + &Room + + + + + &Leave room + + + + + &Clear chat + + + + + Chat Settings... + + + + + mentioned you. + + + + + Click to view + + + + + You are flooding the chat. Please wait a couple of seconds. + + + + + TabServer + + + Server + + + + + TabSupervisor + + + Are you sure? + + + + + There are still open games. Are you sure you want to quit? + + + + + Promotion + + + + + You have been promoted to moderator. Please log out and back in for changes to take effect. + + + + + TabUserLists + + + Add to Buddy List + + + + + Add to Ignore List + + + + + Account + + + + + UserContextMenu + + + User &details + + + + + Private &chat + + + + + Show this user's &games + + + + + Add to &buddy list + + + + + Remove from &buddy list + + + + + Add to &ignore list + + + + + Remove from &ignore list + + + + + Kick from &game + + + + + Ban from &server + + + + + &Promote user to moderator + + + + + Dem&ote user from moderator + + + + + %1's games + + + + + + Success + + + + + Successfully promoted user. + + + + + Successfully demoted user. + + + + + + Failed + + + + + Failed to promote user. + + + + + Failed to demote user. + + + + + UserInfoBox + + + User information + + + + + Real name: + + + + + Pronouns: + + + + + Location: + + + + + User level: + + + + + Account Age: + + + + + Edit + + + + + Change password + + + + + Change avatar + + + + + Administrator + + + + + Moderator + + + + + Registered user + + + + + + Unregistered user + + + + + Unknown + + + + + Year + + + + + Years + + + + + Day + + + + + Days + + + + + + + Information + + + + + User information updated. + + + + + + + + + + + + Error + + + + + This server does not permit you to update your user informations. + + + + + + An error occured while trying to update your user informations. + + + + + Password changed. + + + + + This server does not permit you to change your password. + + + + + The new password is too short. + + + + + The old password is incorrect. + + + + + Avatar updated. + + + + + This server does not permit you to update your avatar. + + + + + An error occured while trying to updater your avatar. + + + + + UserInterfaceSettingsPage + + + General interface settings + + + + + Enable notifications in taskbar + + + + + Notify in the taskbar for game events while you are spectating + + + + + &Double-click cards to play them (instead of single-click) + + + + + &Play all nonlands onto the stack (not the battlefield) by default + + + + + Annotate card text on tokens + + + + + Animation settings + + + + + &Tap/untap animation + + + + + UserList + + + Users connected to server: %1 + + + + + Users in this room: %1 + + + + + Buddies online: %1 / %2 + + + + + Ignored users online: %1 / %2 + + + + + WndSets + + + Enable all sets + + + + + Disable all sets + + + + + Move selected set up + + + + + Move selected set to the top + + + + + Move selected set down + + + + + Move selected set to the bottom + + + + + hints: + + + + + Enable the sets that you want to have available in the deck editor + + + + + Move sets around to change their order, or click on a column header to sort sets on that field + + + + + Sets order decides the source that will be used when loading images for a specific card + + + + + Disabled sets will be used for loading images only if all the enabled sets failed + + + + + Edit sets + + + + + Success + + + + + The sets database has been saved successfully. + + + + + ZoneViewWidget + + + sort by name + + + + + sort by type + + + + + shuffle when closing + + + + + pile view + + + + + shortcutsTab + + + Form + + + + + Main Window + + + + + Deck editor + + + + + Local gameplay + + + + + Watch replay + + + + + Connect + + + + + Register + + + + + Full screen + + + + + Settings + + + + + Check for card updates + + + + + Exit + + + + + Deck Editor + + + + + Analyze deck + + + + + Load deck (clipboard) + + + + + Clerar all filters + + + + + New deck + + + + + Clear one filter + + + + + Open custom folder + + + + + Close + + + + + Print deck + + + + + Edit sets + + + + + Delete card + + + + + Edit tokens + + + + + Reset layout + + + + + Add card + + + + + Save deck + + + + + Remove card + + + + + Save deck as + + + + + Load deck + + + + + Save deck (clipboard) + + + + + + Counters + + + + + Life + + + + + + + + + Set + + + + + + + + Add + + + + + + + + Remove + + + + + Red + + + + + Green + + + + + Yellow + + + + + Mainwindow / Deck editor + + + + + Power / toughness + + + + + Power and toughness + + + + + Add (+1/+1) + + + + + Remove (-1/-1) + + + + + Toughness + + + + + Remove (-0/-1) + + + + + Add (+0/+1) + + + + + Power + + + + + Remove (-1/-0) + + + + + Add (+1/+0) + + + + + Game Phases + + + + + Untap + + + + + Disconnect + + + + + Upkeep + + + + + + Draw + + + + + Main 1 + + + + + Start combat + + + + + Attack + + + + + Block + + + + + Damage + + + + + End combat + + + + + Main 2 + + + + + End + + + + + Next phase + + + + + Next turn + + + + + Player + + + + + Tap Card + + + + + Untap Card + + + + + Untap all + + + + + Toogle untap + + + + + Flip card + + + + + Peek card + + + + + Play card + + + + + Attach card + + + + + Unattach card + + + + + Clone card + + + + + Create token + + + + + Create another token + + + + + Set annotation + + + + + Phases / P/T / Player + + + + + Move card to + + + + + Bottom library + + + + + Top library + + + + + + Graveyard + + + + + + Exile + + + + + Hand + + + + + View + + + + + Library + + + + + Tops card of library + + + + + Sideboard + + + + + Close recent view + + + + + Pre-play + + + + + Load remote deck + + + + + Load local deck + + + + + Game play + + + + + Draw arrow + + + + + Leave game + + + + + Remove local arrows + + + + + Concede + + + + + Roll dice + + + + + Rotate view CW + + + + + Shuffle library + + + + + Rotate view CCW + + + + + Mulligan + + + + + Draw card + + + + + Draw cards + + + + + Undo draw + + + + + Always reveal top card + + + + + Draw / Move / View / Game play + + + + \ No newline at end of file diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt index 47dab1f5..d73dc6f8 100644 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -7,6 +7,7 @@ add_subdirectory(pb) SET(common_SOURCES decklist.cpp + featureset.cpp get_pb_extension.cpp rng_abstract.cpp rng_sfmt.cpp diff --git a/common/featureset.cpp b/common/featureset.cpp new file mode 100644 index 00000000..5ed53ac2 --- /dev/null +++ b/common/featureset.cpp @@ -0,0 +1,56 @@ +#include "featureset.h" +#include +#include + +FeatureSet::FeatureSet() +{ + +} + +QMap FeatureSet::getDefaultFeatureList() { + initalizeFeatureList(featureList); + return featureList; +} + +void FeatureSet::initalizeFeatureList(QMap &featureList){ + featureList.insert("client_id", false); + featureList.insert("client_ver", false); + featureList.insert("feature_set", false); + featureList.insert("user_ban_history", false); +} + +void FeatureSet::enableRequiredFeature(QMap &featureList, QString featureName){ + if (featureList.contains(featureName)) + featureList.insert(featureName,true); +} + +void FeatureSet::disableRequiredFeature(QMap &featureList, QString featureName){ + if (featureList.contains(featureName)) + featureList.insert(featureName,false); +} + +QMap FeatureSet::addFeature(QMap &featureList, QString featureName, bool isFeatureRequired){ + featureList.insert(featureName,isFeatureRequired); + return featureList; +} + +QMap FeatureSet::identifyMissingFeatures(QMap suppliedFeatures, QMap requiredFeatures){ + QMap missingList; + QMap::iterator i; + for (i = requiredFeatures.begin(); i != requiredFeatures.end(); ++i) { + if (!suppliedFeatures.contains(i.key())) { + missingList.insert(i.key(), i.value()); + } + } + return missingList; +} + +bool FeatureSet::isRequiredFeaturesMissing(QMap suppliedFeatures, QMap requiredFeatures) { + QMap::iterator i; + for (i = requiredFeatures.begin(); i != requiredFeatures.end(); ++i) { + if (i.value() && suppliedFeatures.contains(i.key())) { + return true; + } + } + return false; +} diff --git a/common/featureset.h b/common/featureset.h new file mode 100644 index 00000000..620ba96a --- /dev/null +++ b/common/featureset.h @@ -0,0 +1,24 @@ +#ifndef FEATURESET_H +#define FEATURESET_H + +#include +#include +#include + +class FeatureSet +{ +public: + FeatureSet(); + QMap getDefaultFeatureList(); + void initalizeFeatureList(QMap &featureList); + void enableRequiredFeature(QMap &featureList, QString featureName); + void disableRequiredFeature(QMap &featureList, QString featureName); + QMap addFeature(QMap &featureList, QString featureName, bool isFeatureRequired); + QMap identifyMissingFeatures(QMap featureListToCheck, QMap featureListToCompareTo); + bool isRequiredFeaturesMissing(QMap featureListToCheck, QMap featureListToCompareTo); +private: + QMap featureList; +}; + + +#endif // FEEATURESET_H diff --git a/common/pb/CMakeLists.txt b/common/pb/CMakeLists.txt index d58846c6..3aaf9860 100644 --- a/common/pb/CMakeLists.txt +++ b/common/pb/CMakeLists.txt @@ -116,6 +116,7 @@ SET(PROTO_FILES moderator_commands.proto move_card_to_zone.proto response_activate.proto + response_ban_history.proto response_deck_download.proto response_deck_list.proto response_deck_upload.proto @@ -133,6 +134,7 @@ SET(PROTO_FILES room_commands.proto room_event.proto serverinfo_arrow.proto + serverinfo_ban.proto serverinfo_cardcounter.proto serverinfo_card.proto serverinfo_counter.proto diff --git a/common/pb/moderator_commands.proto b/common/pb/moderator_commands.proto index 89672776..86e4e67f 100644 --- a/common/pb/moderator_commands.proto +++ b/common/pb/moderator_commands.proto @@ -2,6 +2,7 @@ syntax = "proto2"; message ModeratorCommand { enum ModeratorCommandType { BAN_FROM_SERVER = 1000; + BAN_HISTORY = 1001; } extensions 100 to max; } @@ -17,3 +18,10 @@ message Command_BanFromServer { optional string visible_reason = 5; optional string clientid = 6; } + +message Command_GetBanHistory { + extend ModeratorCommand { + optional Command_GetBanHistory ext = 1001; + } + optional string user_name = 1; +} \ No newline at end of file diff --git a/common/pb/response.proto b/common/pb/response.proto index ba3ccc6a..7004ba50 100644 --- a/common/pb/response.proto +++ b/common/pb/response.proto @@ -37,6 +37,7 @@ message Response { RespActivationFailed = 32; // Server didn't accept a reg user activation token RespRegistrationAcceptedNeedsActivation = 33; // Server accepted cient registration, but it will need token activation RespClientIdRequired = 34; // Server requires client to generate and send its client id before allowing access + RespClientUpdateRequired = 35; // Client is missing features that the server is requiring } enum ResponseType { JOIN_ROOM = 1000; @@ -51,6 +52,7 @@ message Response { REGISTER = 1009; ACTIVATE = 1010; ADJUST_MOD = 1011; + BAN_HISTORY = 1012; REPLAY_LIST = 1100; REPLAY_DOWNLOAD = 1101; } diff --git a/common/pb/response_ban_history.proto b/common/pb/response_ban_history.proto new file mode 100644 index 00000000..de587d6d --- /dev/null +++ b/common/pb/response_ban_history.proto @@ -0,0 +1,10 @@ +syntax = "proto2"; +import "response.proto"; +import "serverinfo_ban.proto"; + +message Response_BanHistory{ + extend Response { + optional Response_BanHistory ext = 1012; + } + repeated ServerInfo_Ban ban_list = 1; +} diff --git a/common/pb/response_login.proto b/common/pb/response_login.proto index fecd9d83..673eaa46 100644 --- a/common/pb/response_login.proto +++ b/common/pb/response_login.proto @@ -11,4 +11,5 @@ message Response_Login { repeated ServerInfo_User ignore_list = 3; optional string denied_reason_str = 4; optional uint64 denied_end_time = 5; + repeated string missing_features = 6; } diff --git a/common/pb/serverinfo_ban.proto b/common/pb/serverinfo_ban.proto new file mode 100644 index 00000000..2ad7ffd4 --- /dev/null +++ b/common/pb/serverinfo_ban.proto @@ -0,0 +1,12 @@ +syntax = "proto2"; +/* + * Historical ban information stored in the ban table + */ +message ServerInfo_Ban { + required string admin_id = 1; // id of the staff member placing the ban + required string admin_name = 2; // name of the staff member placing the ban + required string ban_time = 3; // start time of the ban + required string ban_length = 4; // amount of time in minutes the ban is for + optional string ban_reason = 5; // reason seen only by moderation staff + optional string visible_reason = 6; // reason shown to the user +} diff --git a/common/pb/session_commands.proto b/common/pb/session_commands.proto index 0d5b12bd..afd85a39 100644 --- a/common/pb/session_commands.proto +++ b/common/pb/session_commands.proto @@ -46,6 +46,7 @@ message Command_Login { optional string password = 2; optional string clientid = 3; optional string clientver = 4; + repeated string clientfeatures = 5; } message Command_Message { diff --git a/common/server.cpp b/common/server.cpp index c320ebba..7274800c 100644 --- a/common/server.cpp +++ b/common/server.cpp @@ -32,6 +32,7 @@ #include "pb/session_event.pb.h" #include "pb/event_connection_closed.pb.h" #include "pb/isl_message.pb.h" +#include "featureset.h" #include #include #include @@ -39,6 +40,7 @@ Server::Server(bool _threaded, QObject *parent) : QObject(parent), threaded(_threaded), nextLocalGameId(0) { + qRegisterMetaType("ServerInfo_Ban"); qRegisterMetaType("ServerInfo_Game"); qRegisterMetaType("ServerInfo_Room"); qRegisterMetaType("ServerInfo_User"); @@ -104,15 +106,13 @@ Server_DatabaseInterface *Server::getDatabaseInterface() const return databaseInterfaces.value(QThread::currentThread()); } -AuthenticationResult Server::loginUser(Server_ProtocolHandler *session, QString &name, const QString &password, QString &reasonStr, int &secondsLeft, QString &clientid) +AuthenticationResult Server::loginUser(Server_ProtocolHandler *session, QString &name, const QString &password, QString &reasonStr, int &secondsLeft, QString &clientid, QString &clientVersion) { if (name.size() > 35) name = name.left(35); Server_DatabaseInterface *databaseInterface = getDatabaseInterface(); - QWriteLocker locker(&clientsLock); - AuthenticationResult authState = databaseInterface->checkUserPassword(session, name, password, clientid, reasonStr, secondsLeft); if (authState == NotLoggedIn || authState == UserIsBanned || authState == UsernameInvalid || authState == UserIsInactive) return authState; @@ -121,24 +121,25 @@ AuthenticationResult Server::loginUser(Server_ProtocolHandler *session, QString data.set_address(session->getAddress().toStdString()); name = QString::fromStdString(data.name()); // Compensate for case indifference - databaseInterface->lockSessionTables(); - if (authState == PasswordRight) { - - // verify that new session would not cause problems with older existing session if (users.contains(name) || databaseInterface->userSessionExists(name)) { - qDebug("Session already logged in, logging old session out"); + if (users.contains(name)) { + qDebug("Session already logged in, logging old session out"); + Event_ConnectionClosed event; + event.set_reason(Event_ConnectionClosed::LOGGEDINELSEWERE); + event.set_reason_str("You have been logged out due to logging in at another location."); + event.set_end_time(QDateTime::currentDateTime().toTime_t()); - Event_ConnectionClosed event; - event.set_reason(Event_ConnectionClosed::LOGGEDINELSEWERE); - event.set_reason_str("You have been logged out due to logging in at another location."); - event.set_end_time(QDateTime::currentDateTime().toTime_t()); - - SessionEvent *se = users.value(name)->prepareSessionEvent(event); - users.value(name)->sendProtocolItem(*se); - delete se; + SessionEvent *se = users.value(name)->prepareSessionEvent(event); + users.value(name)->sendProtocolItem(*se); + delete se; + users.value(name)->prepareDestroy(); + } else { + qDebug() << "Active session and sessions table inconsistent, please validate session table information for user " << name; + } } + } else if (authState == UnknownUser) { // Change user name so that no two users have the same names, // don't interfere with registered user names though. @@ -156,6 +157,8 @@ AuthenticationResult Server::loginUser(Server_ProtocolHandler *session, QString data.set_name(name.toStdString()); } + QWriteLocker locker(&clientsLock); + databaseInterface->lockSessionTables(); users.insert(name, session); qDebug() << "Server::loginUser:" << session << "name=" << name; @@ -188,7 +191,7 @@ AuthenticationResult Server::loginUser(Server_ProtocolHandler *session, QString databaseInterface->updateUsersClientID(name, clientid); } - databaseInterface->updateUsersLastLoginTime(name); + databaseInterface->updateUsersLastLoginData(name, clientVersion); se = Server_ProtocolHandler::prepareSessionEvent(event); sendIsl_SessionEvent(*se); delete se; diff --git a/common/server.h b/common/server.h index 494ec534..537f1a84 100644 --- a/common/server.h +++ b/common/server.h @@ -9,6 +9,7 @@ #include #include "pb/commands.pb.h" #include "pb/serverinfo_user.pb.h" +#include "pb/serverinfo_ban.pb.h" #include "server_player_reference.h" class Server_DatabaseInterface; @@ -44,17 +45,17 @@ public: Server(bool _threaded, QObject *parent = 0); ~Server(); void setThreaded(bool _threaded) { threaded = _threaded; } - AuthenticationResult loginUser(Server_ProtocolHandler *session, QString &name, const QString &password, QString &reason, int &secondsLeft, QString &clientid); + AuthenticationResult loginUser(Server_ProtocolHandler *session, QString &name, const QString &password, QString &reason, int &secondsLeft, QString &clientid, QString &clientVersion); const QMap &getRooms() { return rooms; } Server_AbstractUserInterface *findUser(const QString &userName) const; const QMap &getUsers() const { return users; } const QMap &getUsersBySessionId() const { return usersBySessionId; } + virtual QMap getServerRequiredFeatureList() const { return QMap(); } void addClient(Server_ProtocolHandler *player); void removeClient(Server_ProtocolHandler *player); virtual QString getLoginMessage() const { return QString(); } - virtual bool permitUnregisteredUsers() const { return true; } virtual bool getGameShouldPing() const { return false; } virtual bool getClientIdRequired() const { return false; } @@ -94,6 +95,7 @@ private: mutable QReadWriteLock persistentPlayersLock; int nextLocalGameId; QMutex nextLocalGameIdMutex; + protected slots: void externalUserJoined(const ServerInfo_User &userInfo); void externalUserLeft(const QString &userName); diff --git a/common/server_database_interface.h b/common/server_database_interface.h index 224ae2c7..2923b311 100644 --- a/common/server_database_interface.h +++ b/common/server_database_interface.h @@ -2,8 +2,6 @@ #define SERVER_DATABASE_INTERFACE_H #include -#include - #include "server.h" class Server_DatabaseInterface : public QObject { @@ -42,7 +40,7 @@ public: virtual bool registerUser(const QString & /* userName */, const QString & /* realName */, ServerInfo_User_Gender const & /* gender */, const QString & /* password */, const QString & /* emailAddress */, const QString & /* country */, bool /* active = false */) { return false; } virtual bool activateUser(const QString & /* userName */, const QString & /* token */) { return false; } virtual void updateUsersClientID(const QString & /* userName */, const QString & /* userClientID */) { } - virtual void updateUsersLastLoginTime(const QString & /* userName */) { } + virtual void updateUsersLastLoginData(const QString & /* userName */, const QString & /* clientVersion */) { } enum LogMessage_TargetType { MessageTargetRoom, MessageTargetGame, MessageTargetChat, MessageTargetIslRoom }; virtual void logMessage(const int /* senderId */, const QString & /* senderName */, const QString & /* senderIp */, const QString & /* logMessage */, LogMessage_TargetType /* targetType */, const int /* targetId */, const QString & /* targetName */) { }; diff --git a/common/server_metatypes.h b/common/server_metatypes.h index 4266218e..fb858c6c 100644 --- a/common/server_metatypes.h +++ b/common/server_metatypes.h @@ -3,6 +3,7 @@ #include +#include "pb/serverinfo_ban.pb.h" #include "pb/serverinfo_user.pb.h" #include "pb/serverinfo_room.pb.h" #include "pb/serverinfo_game.pb.h" @@ -12,6 +13,7 @@ #include "pb/isl_message.pb.h" #include "pb/room_commands.pb.h" +Q_DECLARE_METATYPE(ServerInfo_Ban) Q_DECLARE_METATYPE(ServerInfo_User) Q_DECLARE_METATYPE(ServerInfo_Room) Q_DECLARE_METATYPE(ServerInfo_Game) diff --git a/common/server_protocolhandler.cpp b/common/server_protocolhandler.cpp index c4ed0f51..cb8515f3 100644 --- a/common/server_protocolhandler.cpp +++ b/common/server_protocolhandler.cpp @@ -19,6 +19,8 @@ #include "pb/event_game_joined.pb.h" #include "pb/event_room_say.pb.h" #include +#include "featureset.h" + Server_ProtocolHandler::Server_ProtocolHandler(Server *_server, Server_DatabaseInterface *_databaseInterface, QObject *parent) : QObject(parent), @@ -382,13 +384,36 @@ Response::ResponseCode Server_ProtocolHandler::cmdLogin(const Command_Login &cmd { QString userName = QString::fromStdString(cmd.user_name()).simplified(); QString clientId = QString::fromStdString(cmd.clientid()).simplified(); - + QString clientVersion = QString::fromStdString(cmd.clientver()).simplified(); + if (userName.isEmpty() || (userInfo != 0)) return Response::RespContextError; + // check client feature set against server feature set + FeatureSet features; + QMap receivedClientFeatures; + QMap missingClientFeatures; + + for (int i = 0; i < cmd.clientfeatures().size(); ++i) + receivedClientFeatures.insert(QString::fromStdString(cmd.clientfeatures(i)).simplified(), false); + + missingClientFeatures = features.identifyMissingFeatures(receivedClientFeatures, server->getServerRequiredFeatureList()); + + if (!missingClientFeatures.isEmpty()) { + if (features.isRequiredFeaturesMissing(missingClientFeatures, server->getServerRequiredFeatureList())) { + Response_Login *re = new Response_Login; + re->set_denied_reason_str("Client upgrade required"); + QMap::iterator i; + for (i = missingClientFeatures.begin(); i != missingClientFeatures.end(); ++i) + re->add_missing_features(i.key().toStdString().c_str()); + rc.setResponseExtension(re); + return Response::RespClientUpdateRequired; + } + } + QString reasonStr; int banSecondsLeft = 0; - AuthenticationResult res = server->loginUser(this, userName, QString::fromStdString(cmd.password()), reasonStr, banSecondsLeft, clientId); + AuthenticationResult res = server->loginUser(this, userName, QString::fromStdString(cmd.password()), reasonStr, banSecondsLeft, clientId, clientVersion); switch (res) { case UserIsBanned: { Response_Login *re = new Response_Login; @@ -430,6 +455,13 @@ Response::ResponseCode Server_ProtocolHandler::cmdLogin(const Command_Login &cmd re->add_ignore_list()->CopyFrom(ignoreIterator.next().value()); } + // return to client any missing features the server has that the client does not + if (!missingClientFeatures.isEmpty()) { + QMap::iterator i; + for (i = missingClientFeatures.begin(); i != missingClientFeatures.end(); ++i) + re->add_missing_features(i.key().toStdString().c_str()); + } + joinPersistentGames(rc); rc.setResponseExtension(re); diff --git a/common/server_protocolhandler.h b/common/server_protocolhandler.h index bf9d1940..5c9aef9a 100644 --- a/common/server_protocolhandler.h +++ b/common/server_protocolhandler.h @@ -8,11 +8,13 @@ #include "pb/response.pb.h" #include "pb/server_message.pb.h" +class Features; class Server_DatabaseInterface; class Server_Player; class ServerInfo_User; class Server_Room; class QTimer; +class FeatureSet; class ServerMessage; class Response; diff --git a/doc/usermanual/Usermanual.md b/doc/usermanual/Usermanual.md deleted file mode 100644 index 92e91a54..00000000 --- a/doc/usermanual/Usermanual.md +++ /dev/null @@ -1,1257 +0,0 @@ -Preface -======= - -This manual is basically a dump from the cockatrice.de dokuwiki. -Cockatrice has some legal problems right now and the page is down. This -document tries to save the documentation about the software, beautify -and extend it in the future. Please contribute to the project, it is -much too precious to be destroyed. - -Getting Started -=============== - -Making A User Profile ---------------------- - -Not available anymore, site is down. If someone runs his own server -where you can register a user profile, read his documentation. - -Downloading and Installing the Cockatrice Program -------------------------------------------------- - -Due to a legal dispute there are currently no official builds left, so -currently you have to build your own binaries. - -### Client compilation - -#### Windows - -There should be two ways to compile Cockatrice: With Visual Studio 2010 -and with MinGW. As the Visual Studio method is more complicated and -might not work, you should do it with MinGW. The following howto has -been tested with Windows 7 64Bit. - -##### Prerequisites - -We need the Cockatrice sourcecode, it’s dependencies and build tools. -Everything is freely available: - -1. MinGW is needed to compile everything, it ships the compiler and - other tools for this task. - -2. git is needed to download the latest Cockatrice source code. - -3. cmake is needed to create Cockatrice’s project files for MinGW. - -4. Qt 4.8 is a dependency for Cockatrice (download the MinGW version!) - -5. protobuf 2.5 is another dependency for Cockatrice (download the zip - file with the sourcecode). - -6. Nullsoft Scriptable Install System (NSIS) which can be used to - create an installer for your own Cockatrice version. - -All downloadlinks together: - -##### Installation of the Prerequisites - -1. Download MinGW (mingw-get-inst), git, cmake, protobuf 2.5 sources - zip and Qt 4.8.4 MinGW (see links above). - -2. Make a standard installation for git, cmake and NSIS. - -3. Install MinGW: - - 1. Select default values everywhere, except: Also check the C++ - Compiler, check the MSYS Basis System and MinGW Developer - Toolkit. - - 2. Append `C:\MinGW\bin` to your PATH variable (google how to do it - for your Windows version, if you don’t know it). This is very - important and overseen many times! You can keep the PATH - configuration dialog open for the next step. - -4. Install Qt, select default values everywhere, ignore the message - regarding win32.h and append `C:\Qt\4.8.4\bin` to your PATH variable - like you did for MinGW. - -5. Unpack protobuf-2.5.0.zip in `C:\MinGW\msys\1.0\home\YOURLOGIN` - - 1. Open MinGW Shell, type the following commands exactly: - - 2. `cd protobuf-2.5.0/protobuf-2.5.0` - - 3. `./configure –prefix=‘cd /mingw; pwd -W‘` (these apostrophs are - backticks and do not forget the dot at the beginning!) - - 4. `make; make install` (this builds and installs protobuf, which - needs some time) - - 5. Close MinGW Shell - -Your system is now able to compile Cockatrice. You do not have to repeat -the process so far ever again. - -##### Cockatrice Compilation - -1. Checkout Cockatrice: - - 1. Start Git Bash and type the following command exactly: - - 2. `git clone https://github.com/Cockatrice/Cockatrice` - - 3. Close Git Bash - -2. Start CMake (cmake-gui) and do the following: - - 1. Where is the source code: Point to the Cockatrice directory - - 2. Where to build the binaries: Point to the Cockatrice/build - directory (it doesn’t matter if it exists; if it doesn’t, cmake - will ask later if it shall create this directory) - - 3. Check Advanced - - 4. Click Configure, choose MinGW, leave the rest default - - 5. An error will occur, set the following: - - - Set PROTOBUF\_INCLUDE\_DIR to - C:/MinGW/include/google/protobuf - - - Set PROTOBUF\_LIBRARY to C:/MinGW/lib/libprotobuf.dll.a - - - Set PROTOBUF\_LITE\_LIBRARY to - C:/MinGW/lib/libprotobuf-lite.dll.a - - - Set PROTOBUF\_PROTOC\_EXECUTABLE to C:/MinGW/bin/protoc.exe - - - Set PROTOBUF\_PROTOC\_LIBRARY to - C:/MinGW/lib/libprotoc.dll.a - - 6. Click Configure again, then Generate - - 7. Close CMake - -3. Start cmd.exe (the Windows Command Prompt) and type the following - commands: - - 1. `cd Cockatrice/build` (this changes to the build directory) - - 2. `make` (this builds everything and might need some time) - -Cockatrice has now been downloaded and built for the first time. You do -not have to repeat the process so far ever again. - -##### Updating your Cockatrice build - -If you just compiled Cockatrice for the first time, you skip this step -obviously. But if you want to update Cockatrice after the source code -changed on github, do it like this: - -1. Start Git Bash and update Cockatrice: - - 1. `git pull origin master` - - 2. `Close Git Bash` - -2. Start cmd.exe, change to Cockatrice/build, type make like you did - previously. - -Cockatrice has now been updated and built. You may repeat this process -every time when the source code changed. - -##### Cockatrice installation - -To install Cockatrice, you have to create an installer with NSIS now. -Change to the directory `nsis` in the Cockatrice root directory, right -click the cockatrice.nsi file and select `Compile NSIS Script`. The NSIS -program then creates a file called -cockatrice\_win32\_YYYYmmdd\_git-xxxxxxx.exe. This is the complete, -redistributable installer for your Cockatrice build. - -Now install Cockatrice by executing the installer. Note: if you -installed MinGW or Qt in other than the default paths, you have to fix -the paths in the cockatrice.nsi file (also if some libraries change); -you can edit this file with a text editor. - -##### Create a card database - -Start the oracle.exe (the installer does this automatically) and let it -generate a current cards.xml file: - -1. File $\to$ Download Sets Information $\to$ OK (if there are no MtG - sets listed) - -2. Check All, Start Download - -Congratulations, you may now use Cockatrice! - -#### Linux and BSD - -The following procedures have been tested with Debian Wheezy, Fedora 18 -and FreeBSD 9.1. If you use Gentoo with KDE you have the needed -prerequisites and may continue with downloading the source. If you use -Bodhi or Arch Linux (AUR) or another distribution that includes -Cockatrice, you might install Cockatrice from the default packages – -though the package might be old, so you probably should continue with -this howto. - -Before you install new software, you should update your system. The -following instructions failed on a fresh installation of Fedora 18 and -FreeBSD 9.1 until the systems were updated. - -1. You need to install the build tools and dependencies. This varies - between the Linux distributions. - - Debian, Ubuntu and spin-offs - : `sudo apt-get install build-essential git libqt4-dev qtmobility-dev libprotobuf-dev protobuf-compiler cmake` - - Fedora - : `sudo yum groupinstall "Development Tools" yum install qt-devel qt-mobility-devel protobuf-devel protobuf-compiler cmake` - - FreeBSD - : `pkg_add -r qt4 qt4-linguist qt4-moc qt4-qmake qt4-rcc qt4-uic git cmake protobuf` - -2. Download the sources from github via - `git clone https://github.com/Cockatrice/Cockatrice.git` - -3. To compile the sources, change into the newly created directory, - create a build directory and invoke cmake: - - i. `cd Cockatrice` - - ii. `mkdir build` - - iii. `cd build` - - iv. `cmake ..` - - v. `make` - - If you have some issues with pthread\_ add ’pthread’ to the - “target\_link\_libraries” entry in the `CMakeFiles.txt` in - `Cockatrice/common`. - -4. You may install the program into the directory `/usr/local` by - typing `sudo make install` but you should also be able to start - cockatrice and the oracle from the build directory. - -5. Before you start Cockatrice for the first time, run `oracle -dlsets` - and download available cards, denn run `cockatrice`. The default - paths for decks, pics, cards and tokens are located in - `/home//.local/share/data/Cockatrice/Cockatrice`. - -#### MacOS X - -TODO, please contribute this section! See Linux section, then use the -`prepareMacRelease.sh` script from Cockatrice. - -### Server compilation - -You don’t need your own server if you plan to play only. But as -Cockatrice is open source you are free to run your own. The compilation -works like already written above, but instead of invoking `cmake ..`, -you have to do it like this: - -- If you want to build the server, use: - `cmake -DWITH_SERVER=1 ..` - -- If you want to build the server, but not the client, use: - `cmake -DWITH_SERVER=1 -DWITHOUT_CLIENT=1 ..` - -There is more information on compiling and running Servatrice on CentOS -6 in chapter [servatrice] on page . - -Downloading Card Database Using the Oracle ------------------------------------------- - -If you are installing Cockatrice for the first time, changing what sets -are in your database or even adding the newest set to your database, -this tutorial will show you how to do it properly. - -The Oracle will automatically run after the initial setup of Cockatrice. -If you would like to re-install your database or add new sets you can -find it (for Windows) by clicking the start menu, going to all programs, -selecting the Cockatrice folder, and in there you will find the Oracle -tool. - -- When the Oracle importer opens, click on “File” in the top left - corner and select “Download sets information…” - - ![image](pics/fetch554a.jpg) - -- This will bring up a box where you can input the URL of a card - database. The default address is - this was an XML file found - on the Cockatrice website that has the current set listings for - Magic the Gathering. As the page is down, you have to import the - file which is distributed with the Cockatrice sources. This can also - be done from the file menu. - -- Select “OK” to load the set listings. - -- A list of all current sets will be brought up. A default selection - of sets will automatically be checked. From here you can check or - uncheck all sets, or you may only download specific sets that you - wish to play with. - - ![image](pics/fetchfc3d.jpg) - - NOTE: If you are playing against someone who is using a card that is - not in your database, you will not see a card image or oracle text - for that card. Some players like to download all sets to avoid this - issue, but other players who only play specific formats (Like T2, - Standard, or Extended) wish to keep their database small with only - cards they will be using. - -- After you select which sets you wish to download, select “Start - download” at the bottom of the Oracle to download the selected sets - information. - -- After download is complete, close the Oracle and run Cockatrice. - -- We are now ready to sort our set information in our deck editor. - -Editing Set Order and Preference of Card Art --------------------------------------------- - -Many cards have been re-printed in different sets, and in return have -different versions of artwork (like the card “Cancel” which can be found -in many sets, but has different artwork for each, e.g. Zendikar versus -M11: - -![image](pics/fetchc18b.jpg) ![image](pics/fetche1f4.jpg) - -Some players like to have the most current artwork displayed on their -cards, while other players have a favorite set they wish to display -instead. - -- Run Cockatrice and select “Deck editor” from the top right - Cockatrice menu. This will bring up the Deck Editor along with a - list of all cards that are currently in your database which you - downloaded using the Oracle Tool. - -- To change what version of the cards will be shown, click on “Card - database” on the top left of the Deck editor window, and select - “Edit sets…” - - ![image](pics/fetchf924.jpg) - -- This will bring up a new window that has a list of all sets you - currently have downloaded to your database. To change the order of - the sets, simply drag and drop them into place. This will determine - which artwork is shown for your cards. If a card is found in - multiple sets, whichever set is closest to the top of this list will - be the art displayed. Example: If M11 is above Zendikar, The M11 - version of the card “Cancel” will be displayed in your Deck editor - and Cockatrice games. - -NOTE: Your opponent will NOT see what artwork you have selected for each -of your cards. They will only see what they have selected for their own. - -The Deck Editor / Making a Deck -------------------------------- - -The Cockatrice Deck Editor is a tool you can use to make decks to play -online. The cards shown in the Deck Editor are from a database that you -downloaded with the Oracle Tool. If you are missing cards or a new set -has come out, you must re-run the Oracle and download set information. - -![image](pics/fetch52e0.jpg) - -1. Search Bar -: The search bar lets you type in the name of a card and the editor - will only show cards that start with whatever you typed in. Example: - Typing in ‘B’ will show all cards that start with the letter ‘B’ and - typing in ‘Dark’ will show you all cards that start with ‘Dark’ and - so on. If you were looking for the card “Sun Titan”, you would not - type in ‘Titan’ you would have to type in ‘Sun’ first. Typing in - ‘Titan’ will only show you any cards that start with ‘Titan’. - -2. Card Search/Filter -: The Card search button will bring up a new window that helps you - filter out cards more specifically. A variety of check boxes will - help find what you need. Card name lets you filter out only cards - that have a cretin word in them. Card text can help you find key - words like “Haste” or “Infect”. If you were to uncheck all boxes - except for “Instant” along with “Artifact” and “U”, the Deck editor - will only show you all Blue Instant and Artifact cards. - - |Letter | Card Type | - |-------|-----------| - | U | Blue | - | W | White | - | X | Colorless | - | G | Green | - | R | Red | - | B | Black | - -3. Card Data -: This section shows the Oracle text for the card that you currently - have selected. It will show you up-to-date information on the card - such as the Name, Mana cost, Card type, Power/Toughness, and any - abilities the card has. It will not show you flavor text. - -4. Adding/Removing Card Buttons -: The buttons in the bottom middle will add or remove cards from your - Deck List, as well as ad a card specifically to your Sideboard. - Having a card selected on the left column and hitting the Enter key - will also add it to your deck list. - -5. Deck Name/Comments -: The area in the top right lets you name your deck as well as give - any comments or descriptions such as how to play the deck, where the - deck came from, or explain a theme. Putting something in the “Deck - Name” space will NOT be what the file name of the file for your - deck. That is spate in the “save” selection under the “Deck” menu - found at the top left of the Deck Editor window. - -6. Main Deck List -: This area will show you what cards you currently have added to your - deck list. It is sorted by card type and also shows you how many of - each card and card type you have added, as well as keeps track of - how many total cards you have added to your main deck list. This - will not add any number of cards you have added to your Sideboard. - -7. Sideboard List -: The bottom section of the deck list shows any cards you have added - to your sideboard. Again these are split into card types and it will - keep track of how many of each card you have as well as how many of - each card type and total cards in sideboard. This section will not - add any cards from the main deck. Once you have all of your cards - added to your deck, you must save it as a file Cockatrice can read. - Select “Deck” from the top left corner of the Deck Editor screen, - and select “Save Deck” or “Save Deck As…” and it will bring up a new - window where you can select where you would like to save your deck, - as well as assign it a file name. Cockatrice decks are saved as .cod - files. - -Loading a deck list from your clipboard ---------------------------------------- - -If you find a deck online, or you have a deck list saved in a word -document, it is easy to transfer it over into a Cockatrice deck file as -long as it is in a simple deck list format. The simple deck list format -is a list where each line begins with a number, followed by a -whitespace, followed by the cardname, e.g. - - 2 Doom Blade - 13 Island - 10 Swamp - 4 Cancel - ... - -Simply find the word document or deck list online that you wish to save -as a deck, and select the text and copy it to your clipboard. Next, open -the Deck Editor screen, and click on the Deck menu from the top left -corner. Select “Load deck from clipboard…” and the deck editor will -bring up a new window that has the deck list you had copied to your -clipboard. Make sure the Deck list looks correct and hit “OK” in the -bottom right corner of the window. The Deck editor will now add all the -cards in the list to your main deck list. - -![image](pics/loaddeck_clip.jpg) - -![image](pics/okdecklist.jpg) - -NOTE: If you add a card to a deck list with this function that you do -not have downloaded to your personal cockatrice database though the -Oracle tool, the card will take a spot in your main deck list, and count -toward the total number of cards, but it will show up as a blank image -with no Oracle data or card information. - -Cockatrice Settings -------------------- - -TODO - -Learning the Ropes / Starting a Solitaire Game ----------------------------------------------- - -The best way to get familiar with the way Cockatrice plays is to start a -local game that you can play around in by yourself. You could also jump -online and start slowly learning, and let other players help you. - -To start a Solo Local game, in the main Cockatrice window, click on -“Cockatrice” on the top left, and select “Start local game…”. - -![image](pics/fetch2ab8.jpg) - -This will bring up a small window that lets you select how many players -will be in this local game you are creating. For right now, since we -want to do a solo Solitaire game, select one player and hit “OK”. - -![image](pics/fetchf010.jpg) - -### Loading a Deck / Using Sideboard - -This will now bring you to a screen where you load a deck to play with. -On the top left part of this screen you will find a button that is -labeled “Load Local Deck”. Click that button and it will bring up a -window where you can find and select what deck you would like to play -with. - -![image](pics/fetchf0d2.jpg) ![image](pics/fetch55a7.jpg) - -Select a deck or a .cod file and click “Open”. - -![image](pics/fetch9b89.jpg) - -After the file has loaded you will see all of the cards in that deck -laid out on the table. If you hover your mouse over a card, the card -image and Oracle info will show on the right side of the screen. If you -have a sideboard made for the deck there will be a second section on the -table for this sideboard. This screen gives you the ability to double -check your deck to make sure it is not only the correct deck you want to -play with, but it lets you see that all card images have downloaded -properly. If you have cards not showing up at all or they are just blank -cards with names on them, you may not have that set downloaded with your -Oracle tool. If you have a sideboard, you can drag and drop cards from -your main deck to your sideboard or vice-versa. You can do this by -clicking and dragging a card to or from your main deck or sideboard. - -NOTE: Moving cards from your main deck to sideboard will NOT change how -your deck file is saved, it will only change it temporary for the game -you are playing or until you load a new deck. - -When you are satisfied with your deck choice and/or sideboarding -options, click on the red outlined “Ready to start” button found a the -top of the screen. - -### Finding Your Way Around - -The main game screenlooks like this - -![image](pics/fetch7cf0.jpg) - -(Please note your screen will look different due to background image -options.) - -#### Main Table / Play area - -Split into four areas, this is where all the action will go down. - -The Stack -: The area on the left side of the table where Instant and Sorcery - cards will be played. This is for things that will only temporarily - be put on the table, then into the graveyard. Multiple cards may be - added to this area at the same time. Anything on this part of the - table will be seen by all players. - -Battlefield -: This is the soul part of the game table. this is where creatures, - enchantments, artifacts, and even plainswalkers will be placed. As - cards are moved from your had to the table, they will be aligned to - an invisible grid and moved around from there. Tap cards by double - clicking them. Anything on this part of the table will be seen by - all players. - -Land -: This space is for land cards, but any card may be placed here. Tap - cards here by double clicking them. Anything on this part of the - table will be seen by all players. - -Hand -: Every time you draw a card it will go here to your hand. You may - also drag cards from the table back to your hand. Your opponents can - not see what is in your hand. - -#### Player Info Section - -![image](pics/fetch0300.jpg) - -Player Avatar -: This is a $156\times 60$ pixel JPG image that can be uploaded though - the main Cockatrice website. All players in the game room can see - this image. It serves nothing more than an online identity for you - and other players. - -Player Name -: Your online name that you picked though the main Cockatrice website. - -Life Total -: Your in-game life. Using your mouse, if left-clicked will raise this - number by one, and if right-clicked lowered by one. There are also - keyboard shortcuts to change your life total. - -Counters -: These seven multicolored circles are used as counters. They can be - seen by all players and can be changed by left or right clicking on - them to add or subtract a number. Players use them for various digit - counting but primarily used for adding and subtracting floating mana - produced by card effects. The bottom two white counters can be used - for other things like Poison. - -Library -: This is your deck of cards. The number in the middle reflects how - many cards are left in your library. Double clicking the deck lets - you draw a card and add it to your hand, you can also drag cards off - the top into the battlefield or to your hand. Right-clicking the - deck brings up a menu that allows other things to happen like - reviling the top number of cards, shuffling, or moving cards - directly into the graveyard. - -Number of cards in hand -: The number in the middle represents how many cards are currently in - your hand. Other players can see this number but can not see the - cards actually in your hand. - -Graveyard -: Cards can be dragged and dropped into your graveyard from play or - vise-versa, the stack, your hand, or even your library. The number - in the middle represents how many cards are currently in your - graveyard. Any player may right-click on the graveyard and bring up - a menu that shows what cards are in it. - -Exile -: Cards can be dragged and dropped into exile from play or vise-versa, - the stack, your hand, or even your library. The number in the middle - represents how many cards are currently in your exile. Any player - may right-click on the exile and bring up a menu that shows what - cards are in it. - -#### Turn Phases - -![image](pics/fetchfebd.jpg) - -This bar located on the left most side of the screen represents the 11 -steps in a players turn. To go from one phase to the next, you can click -on the square of the phase you want to move to, or you can hit -Ctrl+space to move down to the next. Some phases even have their own -keyboard shortcut. Going from one phase to the next does not actually do -anything to your or your cards, it is only a place marker for your -opponents to see and keep up with what you are doing in your turn. For -example, clicking to the “Draw Phase” will not automatically draw you a -card. It is customary for a player to end their turn on the “End of turn -step” and let their opponent hit the “next turn” button. This is a -courtesy for other players if they wish to do something like use an -instant at the end of your turn, or in response to something you did. - -NOTE: Players sometimes use the term EOT which stands for “End Of Turn”. -This is to let other players know they are doing something in response -to the end of the current turn. - -#### Info/Chat Bar - -![image](pics/fetcha0de.jpg) - -Split into three sections, the Info/Chat bar lets you see a close-up -image of the card your mouse was last over, as well as gives you the -card info for that card. At the bottom of this bar there is a chat log -that helps keep track of events during the game as well as lets you -communicate with other players. if a card is placed on the table, -pointed at, or tapped it will get noted in the chat log as well as has a -link to the card that you can hover over and see an image of at the top -of the bar. - -### Basic Functions - -#### Rolling Dice - -At the beginning of a game players decide who is going first by rolling -a 20 sided die. In Cockatrice we do this by pressing Ctrl-I and hitting -enter. Hitting Ctrl-I brings up a die window and lets you select how -many sides you want on your die. Default is 20, and pressing enter will -“roll” the die. This action will show up in the cat log at on the bottom -right of the screen. You can also find this in the “game” menu at the -top of the window, selecting “player” and clicking on “roll die…” - -![image](pics/fetch7486.jpg) - -![image](pics/fetch3705.jpg) - -#### Draw Cards / Mulligan - -When a game starts and the first player has been selected, all players -will draw seven cards. this can be done by pressing Ctrl-M. Seven cards -will go from your library to your hand. Pressing Ctrl-M again will put -the seven cards from your hand back into your library, shuffle your -library and deal out six new cards to you. Each time you press Ctrl-M it -will give you one less card until you get down to one card, then it will -re-start at seven cards. This function can be found by clicking the -“game” menu on the top of the window, selecting “player” then selecting -“hand” and then “take Mulligan”. If you are playing a friendly game, -press Ctrl-M as normal, but then press Ctrl-D to draw cards until you -have a total of seven again. - -![image](pics/fetchfe20.jpg) - -#### Tapping - -Tapping cards is very basic. If a card is on the table under your -control, you can double click it to tap it and then double click again -to untap it. You can select multiple cards on the table by clicking and -dragging your mouse, then tap or untap all of the selected cards at the -same time. Other players can not tap or untap your cards. Pressing -Ctrl-U will untap everything you control. - -- Untapped - - ![image](pics/fetchb6fe.jpg) - -- Tapped - - ![image](pics/fetch867f.jpg) - -#### Attaching Cards to Cards - -Sometimes an Enchantment -Aura or Equipment cards need to be attached to -other cards that are already on the table. simply put the enchantment or -equipment on the table. Right-click the card and select “attach” (this -can also be done with Ctrl-A). A green arrow will appear, point and -click on the card you wish to attach. You can also attach cards to other -people’s cards. - -![image](pics/fetch100e.jpg) - -![image](pics/fetchb17a.jpg) - -#### Changing Power/Toughness - -Enchantments, Equipment, and other effects sometimes change a creatures -power or toughness. This can be done by right-clicking the card, and -selecting “power / toughness” then selecting which one you wish to do. -Other players can not change your creatures power and toughness. This -can also be done though a series of keyboard shortcuts seen below. - - -------------------------- ------------------------------ - (Select card) Ctrl++ Increase power - (Select card) Ctrl+- Decrease power - (Select card) Alt++ Increase toughness - (Select card) Alt+- Decrease toughness - (Select card) Ctrl+Alt++ Increase power and toughness - (Select card) Ctrl+Alt+- Decrease power and toughness - -------------------------- ------------------------------ - -![image](pics/fetche3fc.jpg) - -![image](pics/fetchd922.jpg) - -#### Adding Counters to Cards - -Sometimes Counters are needed to be placed on cards that the counters on -the side of the screen are not able to track. Cockatrice offers three -different counter color options, Red, Green, and Yellow. Although there -is no set standard on what color stands for what, it is mostly player -preference. Green could be used for +1/+1, red -1/-1, leaving yellow for -charge and quest counters, this is not a set rule. Adding counters is as -simple as right clicking on the card you wish to add counters too, and -currently there is no keyboard shortcut for this process. Removing -counters is the same process, right click and select remove. Other -players can not add or remove counters to or from your cards. - -![image](pics/fetch5170.jpg) - -(One of each counter) - -#### Pointing at Cards / Arrows - -Pointing at cards is needed for resolving spells, or declaring attackers -and blockers. All you need to do is right-click over a card and drag an -arrow over to what you are pointing at. Permanents, spells in the stack, -and even a players life total can be pointed at. You can point at your -opponents cards and life total, and they can point at yours. When your -arrows are no loner needed, press Ctrl-R to remove them from the screen. - -![image](pics/fetch98fd.jpg) - -![image](pics/fetch74b2.jpg) - -#### Creating Tokens - -Creating tokens can sometimes be tedious, but is well worth the effort -to keep a clean and organized game. Pressing Ctrl-T will bring up a -small window to assist you in creating a token. Simply enter the name of -the token you are creating, select its color, and give it a power and -toughness (\#/\#). You can also bring up this token window by selecting -“game” from the top menu, selecting “Player” then clicking on “Create -Token…”. A copy of the Last token made can be done by pressing \*Ctrl+G -or right-clicking on a already made token (or any card on the table) and -selecting “clone” or pressing Ctrl-H\*\*. When a token or clone leaves -play, it will be destroyed and vanish. - -![image](pics/fetch2c36.jpg) - -![image](pics/fetch9bff.jpg) - -![image](pics/fetche6b2.jpg) - -![image](pics/fetch84a2.jpg) - -Make copies of your last token by pressing Ctrl-G. - -![image](pics/fetch6847.jpg) - -Playing Online -============== - -With Cockatrice you will most likely play Magic games over the Internet -with real people all around the world. In order to help maintain a -pleasant environment for users, please read the messages below: - -- User Code of Conduct[^1] – Must Read for all Users - -- How to Report Abuse[^2] – It is recommended to read this as well - -Connect to Server ------------------ - -To connect to the Cockatrice server, launch the Cockatrice program, go -to the “Cockatrice” menu at the top left, and select “Connect”. A window -will appear (see image below). - -![image](pics/fetch23f3.jpg) - -If you have registered with Cockatrice, then enter your Username in the -“Player Name” field and your password in the “Password” field then click -“OK”. You may check the “Remember Password” box if you wish. If you do, -then the next time “Connect” is selected from the “Cockatrice” menu, the -window that appears will already have your Username and Password already -filled. Please take this into consideration if you share a computer with -other people, seeing that you are responsible for anything that happens -on the server with your username (As noted here). If you did not -register with Cockatrice, then simply fill in the Username with whatever -you like and click “OK”. If you would like to become a registered user, -read the instructions from the server’s website. - -Once you are connected to the server, more tabs will appear at the top -of the screen next to the “Deck” tab that you are already on. - -All About Games ---------------- - -This page is about creating, joining, watching, and searching for games -on the Cockatrice Server. In order to participate in any games, you have -to be connected to the server. The games on the server are where all of -the action take place. There will be many games happening on the server -at the same time. Basically, first a game is created by a player (it -could be you). Then other players join the game until the number of -players reaches the number set by that game’s creator. When the game has -no players participating in it, the game disappears. Creating a Game - -To Create a game, go to the “MTG room” tab. Click on the “Create” button -below the Games list. A window will appear (see below). - -![image](pics/fetch54df.jpg) - -Here are all of the options for creating a game: - -Description -: Describe the game in your own words (i.e. “Competitive Standard”, - “Casual EDH- No Infinites”, “RavnicaDraft”, “Here is Chris”) - -Players -: Specify the number of Players in the game. This cannot be changed - after the game is created. The game can only begin when the - specified number of players join. - -Spectators -: Spectators are users that are in a game, but they are not one of the - players. Spectators can see all of the public zones of the game and - everything displayed in the Info/Chat Bar. Any number of users can - join a game as a Spectator (as long as the “Spectators Allowed” box - is checked). - - Spectators Allowed - : Unchecking this box will prohibit any/all users from joining the - game as a Spectator. - - Spectators Need a Password to Join - : Checking this box will make it so that in order for a user to - join as a Spectator, they need to type the password you specify - in the Password Field. - - Spectators can Chat - : Checking this box will allow Spectators to type comments in the - Chat bar during the game. - - Spectators See Everything - : Checking this box will allow Spectators to view cards in all - private zones of all players (hands, libraries, face-down - cards). - -Password Field -: If you type anything in this field, a Player (or Spectator if the - “Spectators Need Password” box is checked) will need to type the - exact same thing you typed in order to join the game (and it is - case-sensitive). - -Only Buddies Can Join -: Checking this box will prevent any user who is not in your Buddy - List from joining the game as a Player or Spectator. NOTE: Your - username is not on your buddy list. If you leave a game you created, - and this box is checked, you will not be able to rejoin. - -Only Registered Users Can Join -: Checking this box will prevent anyone who has not registered on the - Cockatrice website from joining as a Player or Spectator. - -Game Type -: These check boxes have no effect on the game. They inform other - Users browsing the Games list of what format your game is. Users can - choose to view only games of a certain Type/Format. - () - -### Joining a Game - -Most of the time, to join a game you click on the “MTG Room” tab, click -on a game in the Games list, then click Join. If the Game’s creator -specified a password then you will have to type that password in a small -window that appears after you click Join (the password is -case-sensitive). If your User Profile meets the criteria of the Game’s -creator then a new tab will open with that game. There is also an easy -way to join a game in which a User in your Buddy List is playing. Go to -the “User Lists” tab, right click any Username from the Buddies Online -list (at the left of the window) to make a menu appear, and select “Show -this user’s games”. A window will open with a list of games that the -User is either playing or watching. In the same manner as described with -the “MTG Room” tab, simply click on a game and click Join. To watch a -game, the instructions are the same except that you click the “Join as -Spectator” button instead of the Join button. NOTE: If you are a player -in a game and you wish to become a spectator in that game, you must -first leave the game then rejoin as a Spectator. Same thing if you are a -Spectator and wish to play. - -### Searching for Games - -The Games list in the “MTG Room” tab displays by default all games that -have not reached the specified number of players. The “Filter Games” -button makes looking through this list easier if you are looking to join -a particular kind of game. When this button is selected, a window -appears (see below). - -![image](pics/fetchd30e.jpg) - -Game Description -: Displays games with certain descriptions. You can even search - partial names. - -Creator -: Displays games created by Users with that username. It even searches - for partial names. - -Player Count -: Displays all games where the specified number of players is - greater-than or equal to the “at least” number and less-than or - equal to the “at most” number. For instance, setting both numbers to - 3 will display all games whose creators made as 3-player games. - -Show Unavailable Games -: Checking this box will display games that are full and in progress. - You can still join these games as a Spectator if the game’s creator - allows it. - -Game Types -: Displays games with the selected types. Bear in mind that the - Cockatrice software does not enforce deck construction for formats. - So just because a game’s type is EDH/Commander, doesn’t necessarily - mean that is what’s being played in the game. Players can agree to - switch formats in a game. - -Keeping Track of Buddies ------------------------- - -Cockatrice allows registered users to keep track of other registered -users in a buddy list. You won’t be able to do anything with this list -(or other registered users at all) unless you are a registered user and -connected to the server. - -To add a User to your Buddy list, right-click their username and, in the -menu that appears, select “Add to buddy list”. You can right-click and -add a User in this manner anywhere you see their username (under the -“User lists” tab, the “MTG Room” tab, in a game, or in a direct chat). -When you add a User, their username will appear in the list “Buddies -Online” located under the “User lists” tab. If the username appears in a -light shade of gray, then that User is not connected to the server. If -it appears in black, then that User is connected to the server. - -If you see that one of your Buddies is connected, you can see the games -he/she is currently in. Right-click their username, and in the menu that -appears select “Show this user’s games”. A window will appear from which -you can watch or play in a game that your buddy is currently in. - -You can Direct Chat with a Buddy (or any user for that matter) by -right-clicking their username and, from the menu that appears, selecting -“Direct Chat”. When you do this, a new tab will open (both on your -window and on the other User’s window) containing a chat room that can -only be seen and used by the two of you. The place where you type in -your messages is at the very bottom of the window. - -To remove a User from your Buddy list, right-click their username, and -from the menu that appears select “Remove from buddy list”. - -Dealing with and Preventing Unpleasantries ------------------------------------------- - -Make a screenshot, there are several free programs available. -Right-Click a username to add to Ignore List. - -Frequently Asked Questions (FAQ) -================================ - -How to update the card database -------------------------------- - -When a new set comes out, you need to update your card database to be -able to see the new cards in the deck editor and use them in the game. -To do this, open the Oracle tool in the Cockatrice folder. It’s a -stand-alone program and is run directly out of the folder without -running Cockatrice. - -When the Oracle tool is running, open the menu and select ’Download sets -information’. Use the suggested address and click OK. After at most a -few seconds, you should be presented a list of sets to be downloaded. Do -not uncheck the ones you already have: they should be downloaded again. -Click ’Start download’ and wait. When the process is finished, the -database should be up to date. - -Change Card Art / Custom Card Art ---------------------------------- - -Is it possible to change the card art for a specif card, not by changing -the set order in my deck editor? - -YES! It is actually very simple. - -All you have to do is get a .JPG of the card you wish to change and name -the actual file of the image to the cards (exact) name and add ”.Full” -to the end. You can then take this new card image and replace the old -one in your downloaded image folder. - -NOTE: Image size does not matter. Try to use a high resolution .JPG of -the card you want to use for best quality. - -EXAMPLE: Let’s say you wish to turn your M11 Sun Titan from its original -art to a promo version. - -![image](pics/fetch74e3.jpg) - -If you are using Windows 7, you can find the default location for the -Cockatrice card art files under -`C:\Program Files (x86)\Cockatrice\pics\downloadedPics` Once there, look -for the folder of the set for the card we are replacing. For this -example, Sun Titan is in the M11 folder. Open the folder and -paste/replace your new “Promo” Sun Titan.full[.JPG] into this folder, -discarding the original copy. (If you have not yet downloaded the -original image of a card by selecting it in the deck editor or playing -it in an online game, the card image will not yet be there) - -Once you have the new card image in the proper folder, you can now start -Cockatrice (Or re-start if you already had the program open)and select -the deck editor to see your new card image. - -If you are changing the art of a card that has multiple versions in -other sets, make sure you put the new card in whatever folder (or set) -is highest on your card database set list. - -NOTE: Other players on Cockatrice will NOT see your new card image. They -will only see whatever version of the card is in their database. - -Use Higher Resolution Cards ---------------------------- - -Can you get better/higher resolution card art than the default -downloaded card images already used? - -Yes! - -When you click on a card for the first time in the Deck Editor, -Cockatrice goes onto the internet and finds an image of that card from a -database on another website. - -If you find a higher resolution .JPG of a card that you wish to use on -your Cockatrice, you can replace the image with no problem. If you can -find a card image in the 3,000 by 1,000 pixel range, and save it as the -cards (exact) name and add .Full to the end. - -If you are using Windows 7, you can find the default location for the -Cockatrice card art files under -`C:\Program Files (x86)\Cockatrice\pics\downloadedPics`. Once there, -look for the folder of the set for the card you are replacing. (If you -are not running Cockatrice as an administrator, look in -`C:\Users\username\AppData\Local\VirtualStore\Program Files (x86)\Cockatrice\pics\downloadedPics`.) - -Open the folder of the set with the card, and paste/replace the new -higher resolution .JPG image with the old low quality one. - -This process is the same for changing cards to custom images. - -NOTE: Other Cockatrice players will not see your higher resolution card -art, they will only see the image they have in their own database. - -Booster drafts --------------- - -Cockatrice does not support booster drafts, so players need to use an -external service for this. - -Most people use so it’s probably not a bad idea -to register an account there before joining a game in Cockatrice. - -What is Legacy / Vintage / EDH? -------------------------------- - -See . - -Linking cards and URLs in the Cockatrice chat. ----------------------------------------------- - -The Cockatrice chat supports linking of cards and URLs by use of certain -tags around a word or phrase. - -### How to link a card in the Cockatrice chat - -To link a card in the Cockatrice chat, type out the full name of the -card, surrounded by the [card] and [/card] tags. - -For example: - - [card]Black Lotus[/card] - -### How to link a URL in the Cockatrice chat - -To link a URL in the Cockatrice chat, type out the url, surrounded by -the [url] and [/url] tags. - -For example: - - [url]http://www.cockatrice.de[/url] - [url]cockatrice.de[/url] - -Servatrice on CentOS 6 -====================== - -[servatrice] This Howto from woogerworks.com will help you to run your -own Cockatrice server (called Servatrice). An installation script can be -downloaded at: - -BEFORE CONTINUING, PLEASE UNDERSTAND THESE ARE THE VERY MOST BASIC -STEPS. THIS WILL NOT CONFIGURE SECURITY SETTINGS (YOU ARE RESPONSIBLE -FOR YOUR OWN SECURITY)! THIS WILL NOT CONNECT THE SERVER TO A DATABASE! -USE AT YOUR OWN RISK. - -1. Open a command shell and install the prerequisites - - 1. `yum -y groupinstall "development tools"` - - 2. `rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm` - - 3. `yum -y install qt-mysql qt-devel qt-mobility-devel protobuf-devel protobuf-compiler cmake28 libgcrypt-devel` - - 4. `cd` - -2. Download the source code: - - 1. `git clone https://github.com/Cockatrice/Cockatrice` - - 2. `cd Cockatrice` - - 3. `mkdir build` - - 4. `cd build` - - 5. `cmake28 -DWITH_SERVER=1 ..` - - 6. `make` - - 7. `sudo make install` - -3. Create a servatrice.ini file. There is an example file you can - convert: - `sed -e "s/number_pools=1/number_pools=0/" ../servatrice/servatrice.ini.example > /servatrice.ini` - Here is one example file: - - [server] - port=4747 - statusupdate=15000 - logfile=server.log - name="My own Cockatrice server" - id=1 - number_pools=0 - - [servernetwork] - active=0 - port=14747 - ssl_cert=ssl_cert.pem - ssl_key=ssl_key.pem - - [authentication] - method=none - - [database] - type=none - prefix=cockatrice - hostname=localhost - database=servatrice - user=MYUSERNAMEHERE - password=MYSECUREPASSWORDHERE - - [rooms] - method=config - roomlist\size=1 - roomlist\1\name="FIRST ROOM NAME" - roomlist\1\description="FIRST ROOM DESCRIPTION" - roomlist\1\autojoin=true - roomlist\1\joinmessage="THIS IS A JOIN MESSAGE" - roomlist\1\game_types\size=11 - roomlist\1\game_types\1\name="Vintage (T1)" - roomlist\1\game_types\2\name="Legacy (T1.5)" - roomlist\1\game_types\3\name="Extended (T1.X)" - roomlist\1\game_types\4\name="Modern" - roomlist\1\game_types\5\name="Standard (T2)" - roomlist\1\game_types\6\name="Block Constructed" - roomlist\1\game_types\7\name="EDH/Commander" - roomlist\1\game_types\8\name="Highlander" - roomlist\1\game_types\9\name="2HG" - roomlist\1\game_types\10\name="Draft/Sealed" - roomlist\1\game_types\11\name="Other" - - [game] - max_game_inactivity_time=120 - max_player_inactivity_time=15 - - [security] - max_users_per_address=8 - message_counting_interval=10 - max_message_size_per_interval=1000 - max_message_count_per_interval=10 - max_games_per_user=5 - -4. Install the database server (optional) - - 1. `sudo yum -y install mysql-server mysql php-mysql` - - 2. `sudo service mysqld start` - - 3. `sudo chkconfig mysqld on` - - 4. `mysqladmin -u root password ’password’` - - 5. `mysql -u root -ppassword -e "create database servatrice;"` - - 6. `mysql -u root -ppassword -e "create user ’servatrice’@’localhost’ identified by ’password’;"` - - 7. `mysql -u root -ppassword -e "grant all privileges on servatrice.* to ’servatrice’@’localhost’;"` - - 8. `mysql -u servatrice -ppassword servatrice < ../servatrice/servatrice.sql` - - 9. `mysql -u servatrice -ppassword -e "insert into servatrice.cockatrice_users \ (admin,name,password_sha512,active) values (1,’servatrice’,’MYSHA512PASSWORD’,1);"` - - 10. `sed -i.bak -e "s/password=foobar/password=password/" -e "s/type=none/type=mysql/" \ -e "s/method=none/method=sql/"  /servatrice.ini` - -5. Start Servatrice for testing: `/usr/local/bin/servatrice`. I - recommend to run it later within a `screen` session or write an - init-script. - -You should be able to log in as a regular user using any account name. -You can login using the username *servatrice* and the password -*password* as the first moderator. - -If everything succeeded, you should tweak the servatrice.ini and set -your root password to something strong if not already done (at least 8 -characters, upper case, lower case, numbers, special characters). - -[^1]: TODO, dead forum link - -[^2]: TODO, dead forum link diff --git a/doc/usermanual/Usermanual.pdf b/doc/usermanual/Usermanual.pdf deleted file mode 100644 index 3d2d562d..00000000 Binary files a/doc/usermanual/Usermanual.pdf and /dev/null differ diff --git a/doc/usermanual/Usermanual.tex b/doc/usermanual/Usermanual.tex deleted file mode 100644 index 08259c29..00000000 --- a/doc/usermanual/Usermanual.tex +++ /dev/null @@ -1,814 +0,0 @@ -\documentclass[a4paper]{scrbook} -\usepackage[T1]{fontenc} % Fontencoding for pdf searches -\usepackage{textcomp} % EUR symbol for OT and T1 -\usepackage[osf,sc]{mathpazo} % Palatinofont -\usepackage{ellipsis} % better spaces for ellipses (…) -\usepackage{microtype} % Typographic finetuning -\usepackage{fixltx2e} % LaTeX fixes - -\usepackage[euler]{textgreek} -\usepackage[utf8]{inputenc} % utf8 input -\usepackage{graphicx,framed} % pictures, frames -\usepackage{makeidx} % Index -%\usepackage{fancyhdr} -\usepackage{listings} % source listings, e.g. for shell commands - -\usepackage{flafter} % floating objects -\usepackage{placeins} % \FloatBarrier command, http://www.tex.ac.uk/cgi-bin/texfaq2html?label=floats -\usepackage{color} % colors -\usepackage{tikz} % draw stuff -\usepackage{enumerate} % more enumerations -\usepackage{longtable} % multipage tables -\usepackage{booktabs} % better tables: http://www.ctan.org/tex-archive/macros/latex/contrib/booktabs/ - -\usepackage[nottoc]{tocbibind} % Index + Bibliographie -> toc - -%\setcounter{tocdepth}{3} % Depth for tocs; default = 2 - -%PDF stuff -\usepackage[unicode,linktocpage, -colorlinks, -bookmarks, -bookmarksopen, -pdfpagelabels=true]{hyperref} - -% pdf-specific, no line breaks! -\usepackage{xcolor} -\hypersetup{ - pdftitle = {Cockatrice Usermanual}, - pdfsubject = {Cockatrice, Servatrice, Manual}, - pdfauthor = {}, - pdfkeywords = {Cockatrice, Servatrice, Magic}, - linkcolor=blue!30!black, - citecolor=green!30!black, - urlcolor=blue!25!green!25!black, - % do not underline links - frenchlinks, - % break long links - breaklinks = true, -} - -% better Text/Float-ratio -\setcounter{topnumber}{3} -\renewcommand\topfraction{1} -\setcounter{bottomnumber}{3} -\renewcommand\bottomfraction{1} -\setcounter{totalnumber}{9} -\renewcommand\textfraction{.01} -\renewcommand\floatpagefraction{1} - -\makeindex -%opening -\title{Cockatrice} -\subtitle{Usermanual} - -%\pagestyle{fancy} - -\newcommand{\shellcmd}[1]{\texttt{\scriptsize #1}} - -\begin{document} -\maketitle -\tableofcontents - -\chapter{Preface} -This manual is basically a dump from the cockatrice.de dokuwiki. Cockatrice has some legal problems right now and the page is down. -This document tries to save the documentation about the software, beautify and extend it in the future. -Please contribute to the project, it is much too precious to be destroyed. - -\chapter{Getting Started} -\section{Making A User Profile} -Not available anymore, site is down. -If someone runs his own server where you can register a user profile, read his documentation. - -\section{Downloading and Installing the Cockatrice Program} -Due to a legal dispute there are currently no official builds left, so currently you have to build your own binaries. - -\subsection{Building the Client} -\subsubsection{Windows} -To build Cockatrice, we need the Cockatrice sourcecode, its dependencies and build tools of course. -Everything is freely available. - -There should be two ways to compile Cockatrice: -With Microsoft Visual Studio 2010 (Visual C++ 2010) and with MinGW, a minimalist GNU environment for Windows. - -We suggest to use Visual Studio because there is a severe problem with MinGW: -It doesn't offer a compatible version of its tools. -The Qt library needs a certain, old MinGW version\footnote{The officially needed version is MinGW 4.8.2, the last known working version was MinGW 20120426} which is unavailable on the internet because they use an online installer and don't offer old, stable releases. -Trying to build with the current version of MinGW will result in application crashes! -So MinGW and Qt force us to focus on Visual Studio and don't support MinGW. - -Gladly, Microsoft offers Visual Studio Express free of charge, which is a limited but sufficient version of Visual Studio. -It only requires a free of charge registration after 30 days. - -The following howto which uses Visual C++ 2010 Express has been tested with an up to date Windows 7 64Bit. -The resulting build is a 32bit binary, which runs on both 32bit and 64bit systems. - -\paragraph{Prerequisites} -Here is an introduction of all dependencies and tools needed for Cockatrice, followed by a list of downloadlinks in the same order. -\begin{enumerate} - \item The Microsoft Windows SDK for Windows 7 and .NET Framework 4 provides tools and libraries to create Windows applications. - \item The Visual C++ 2010 SP 1 Compiler Update for Windows SDK 7.1 (KB2519277) is a necessary update for the SDK. - \item Microsoft Visual C++ 2010 Express is the actual development environment. - \item Microsoft Visual Studio 2010 Service Pack 1 (VS10sp1-KB983509) is an update for Visual Studio. - \item The Qt libraries 4.8.x for Windows (VS 2010) are the main dependency for Cockatrice. - \item protobuf 2.5.0 is another dependency for Cockatrice (it has no installer, you need to download the zip file with the sourcecode). - \item cmake version 2.8.12.x is needed to create Cockatrice's project files for Visual Studio. Version 3 has not been tested yet with Cockatrice. - \item git is needed to download the latest Cockatrice source code. - \item Nullsoft Scriptable Install System (NSIS 3.0b0) is a program to create the Windows installer for Cockatrice. -\end{enumerate} - -All downloadlinks together: -\footnotesize{\begin{enumerate} - \item \url{http://www.microsoft.com/en-us/download/details.aspx?id=8279} % Win SDK - \item \url{http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=4422} % SDK Update - \item \url{http://go.microsoft.com/?linkid=9709949} % MSVC - \item \url{http://www.microsoft.com/en-us/download/details.aspx?id=23691} % MSVC SP1 - \item \url{http://download.qt-project.org/official_releases/qt/4.8/4.8.6/qt-opensource-windows-x86-vs2010-4.8.6.exe} - \item \url{http://www.cmake.org/files/v2.8/cmake-2.8.12.2-win32-x86.exe} - \item \url{http://git-scm.com/download/win} - \item \url{http://protobuf.googlecode.com/files/protobuf-2.5.0.zip} - \item \url{http://nsis.sourceforge.net/Download} -\end{enumerate}} - -\paragraph{Installation of the Prerequisites} -Problems will occur if you don't install the first four steps (all the Microsoft SDK and Visual Studio packages) in the exact same order as printed here! -\begin{enumerate} - \item Install Microsoft Windows SDK for Windows 7 and .NET Framework 4. - \item Apply the Visual C++ 2010 SP 1 Compiler Update for Windows SDK 7.1 - \item Install Visual C++ 2010 Express (Start the web installer, you may disable Silverlight) - \item Apply Visual C++ 2010 Express Service Pack 1 - \item Install Qt4 VS 2010 edition. - \item Install NSIS. - \item Install cmake. Choose to add CMake to the System path. - \item Install git. Choose Run Git from Windows Command Prompt. -\end{enumerate} - -As protobuf does neither provide an installer nor the libraries needed for Cockatrice, you have to build those with Visual Studio from the protobuf sources. -The Cockatrice installer will search for the protobuf libraries within the Cockatrice sources, so before unpacking and building protobuf, you need to download the Cockatrice sources first: -\begin{enumerate} - \item Right click into a folder, select Git Gui, then Clone Existing Directory, - \item enter Source Location \url{https://github.com/Cockatrice/Cockatrice} - \item enter target directory (from now on called Cockatrice), click clone and wait until the sources have been downloaded, - \item close Git Gui. -\end{enumerate} - -Now we prepare protobuf: -\begin{enumerate} - \item Create a \shellcmd{build} directory inside the Cockatrice directory. - \item Copy the protobuf-2.5.0.zip into the build directory. - \item Rightclick the zip, choose Extract all. This uses the Windows included zip unpacker to extract the archive. -\end{enumerate} -To be clear: you will (and must) have a Cockatrice/build/protobuf-2.5.0/protobuf-2.5.0 directory hierarchy after that! - -Now the protobuf dependencies for Cockatrice will be built: -\begin{enumerate} - \item Start Visual C++ 2010 Express and from the File menu Open Project/Solution, move to the Cockatrice/build/protobuf-2.5.0/protobuf-2.5.0/vsprojects directory and choose protobuf.sln. - \item Let you guide through the Conversion Wizard, you don't need to create a backup. - \item After the conversion is finished, open the projects (uncheck ``Ask me for every project in this solution'' and click OK). - \item You don't need to look at the conversion report. - \item Select Release or Debug in the toolbar. Release optimizes the code for size and speed, while Debug creates larger, slower binaries, used for development. You need to use the same setting for Cockatrice later! We suggest to use Release. - \item Rightclick on libprotobuf, choose Build. Note that the output should say: Build started: Project libprotobuf, Configuration: Release Win32 - \item Then rightclick on protoc, choose Build. This will build libprotoc and the protoc executable, also as Release Win32. - \item After the build succeeded, close Visual C++. -\end{enumerate} -The Cockatrice/build/protobuf-2.5.0/protobuf-2.5.0/vsprojects/Release directory now contains libprotobuf.dll, libprotobuf.lib and protoc.exe which are needed for Cockatrice. - -\paragraph{Cockatrice Compilation} -Now everything is ready to compile Cockatrice. -\begin{enumerate} - \item Start CMake GUI, locate the Cockatrice directory and locate the Cockatrice/build directory. - Then click Configure and choose Visual Studio 10. - An error will occur during the Configure process because CMake does not know the location of the protobuf library. - \item To satisfy CMake, check Advanced, enter ``protobuf'' in the Search field, - \begin{enumerate} - \item Set PROTOBUF\_INCLUDE\_DIR to Cockatrice/build/protobuf-2.5.0/protobuf-2.5.0/src/ - \item Set PROTOBUF\_LIBRARY to Cockatrice/build/protobuf-2.5.0/protobuf-2.5.0/vsprojects/Release/libprotobuf.lib - \item Set PROTOBUF\_PROTOC\_EXECUTABLE to Cockatrice/build/protobuf-2.5.0/protobuf-2.5.0/vsprojects/Release/protoc.exe - \item Set PROTOBUF\_PROTOC\_LIBRARY to Cockatrice/build/protobuf-2.5.0/protobuf-2.5.0/vsprojects/Release/libprotoc.lib % TODO: Is this needed? I don't think so; but it doesn't hurt either. - \item Click Configure again. - \end{enumerate} - \item Click Generate, then close CMake GUI. The project files have been generated. - \item Start Visual C++ 2010 Express and from the File menu select Open Project/Solution, point to the Cockatrice/build directory and choose Cockatrice.sln. - \item Select Release or Debug in the toolbar exactly as you did for protobuf. We suggest Release. - \item Rightclick on ALL\_BUILD, choose Build. -\end{enumerate} - -\paragraph{Updating your Cockatrice build} -If you just compiled Cockatrice for the first time, you skip this step obviously. -But if you want to update Cockatrice after the source code changed on github, do it like this: -\begin{enumerate} - \item Start Git Bash and update Cockatrice: - \begin{enumerate} - \item \shellcmd{git pull origin master} - \item \shellcmd{Close Git Bash} - \end{enumerate} - \item Start Visual C++ 2010 Express and build the Cockatrice sources again. -\end{enumerate} -Cockatrice has now been updated and built. You may repeat this process every time when the source code changed. - -\paragraph{Cockatrice installation} -To install Cockatrice, you have to create an installer with NSIS now. -Change to the directory \shellcmd{nsis} in the Cockatrice directory, right click the cockatrice.nsi file and select \shellcmd{Compile NSIS Script}. -The NSIS program then creates a file called cockatrice\_win32\_YYYYmmdd\_git-xxxxxxx.exe. This is the complete, redistributable installer for your Cockatrice build. - -Now install Cockatrice by executing the installer. -Note: if you installed Qt in other than the default path, you have to fix the paths in the cockatrice.nsi file; you can edit this file with a text editor. - -We will remove this static NSIS file in the future and let CMake create the NSIS file on the fly. - -\paragraph{Create a card database} -Start the oracle.exe (the installer does this automatically) and let it generate a current cards.xml file: -\begin{enumerate} - \item File $\to$ Download Sets Information $\to$ OK (if there are no MtG sets listed) - \item Check All, Start Download -\end{enumerate} -Congratulations, you may now use Cockatrice! - -\subsubsection{Linux, BSD, OS X} -The following procedures have been tested with Debian Wheezy, Fedora 18, XUbuntu 13.10, FreeBSD 9.1 and 10.0. -If you use Gentoo with KDE you have the needed prerequisites and may continue with downloading the source. -If you use Bodhi or Arch Linux (AUR) or another distribution that includes Cockatrice, you might install Cockatrice from the default packages -- though the package might be old, -so you probably should continue with this howto. - -Before you install new software, you should update your system. The following instructions failed on a fresh installation of Fedora 18 and FreeBSD 9.1 until the systems were updated. -\begin{enumerate} - \item You need to install the build tools and dependencies. This varies between the Linux distributions. - \begin{description} - \item[Debian, Ubuntu and spin-offs] \shellcmd{sudo apt-get install build-essential git libqt4-dev qtmobility-dev libprotobuf-dev protobuf-compiler cmake} - \item[Fedora] \shellcmd{sudo yum groupinstall "Development Tools"\\ - yum install qt-devel qt-mobility-devel protobuf-devel protobuf-compiler cmake} - \item[FreeBSD 9] \shellcmd{pkg\_add -r qt4 qt4-linguist qt4-moc qt4-qmake qt4-rcc qt4-uic git cmake protobuf} - \item[FreeBSD 10] \shellcmd{pkg install qt4 qt4-linguist qt4-moc qt4-qmake qt4-rcc qt4-uic git cmake protobuf} - \item[OS X] \shellcmd{brew install qt cmake protobuf} - \end{description} - \item Download the sources from github via \\ \shellcmd{cd\\ git clone https://github.com/Cockatrice/Cockatrice.git} - \item To compile the sources, change into the newly created directory, create a build directory and invoke cmake:\\ - \shellcmd{cd Cockatrice \\ -mkdir build \\ -cd build \\ -cmake ..\\ -make}\\ - \item You may install the program into the directory \shellcmd{/usr/local} by typing \shellcmd{sudo make install} but you should also be able to start - cockatrice and the oracle from the build directory. - \item Before you start Cockatrice for the first time, run \shellcmd{oracle -dlsets} and download available cards, then run \shellcmd{cockatrice}. -The default paths for decks, pics, cards and tokens are located in \\ \shellcmd{/home//.local/share/data/Cockatrice/Cockatrice}. -\end{enumerate} - -\subsection{Building the Server} -You don't need your own server if you plan to play only. But as Cockatrice is open source you are free to run your own. -The compilation works like already written above, but instead of invoking \shellcmd{cmake ..}, you have to do it like this: -\begin{itemize} - \item If you want to build the server, use:\\ \shellcmd{cmake -DWITH\_SERVER=1 ..} - \item If you want to build the server, but not the client, use:\\ \shellcmd{cmake -DWITH\_SERVER=1 -DWITHOUT\_CLIENT=1 ..} -\end{itemize} -Further, the server has a dependency on libgcrypt, so you need to install it as well: -\begin{description} - \item[FreeBSD 10] \shellcmd{pkg install libgcrypt} -\end{description} -There is more information on compiling and running Servatrice on CentOS 6 in chapter \ref{servatrice} on page \pageref{servatrice}. - -\section{Downloading Card Database Using the Oracle} -If you are installing Cockatrice for the first time, changing what sets are in your database or even adding the newest set to your database, this tutorial will show you how to do it properly. - -The Oracle will automatically run after the initial setup of Cockatrice. If you would like to re-install your database or add new sets you can find it (for Windows) by clicking the start menu, going to all programs, selecting the Cockatrice folder, and in there you will find the Oracle tool. -\begin{itemize} - \item When the Oracle importer opens, click on “File” in the top left corner and select “Download sets information…” - \begin{center} -\includegraphics[scale=0.8]{pics/fetch554a} - \end{center} - \item This will bring up a box where you can input the URL of a card database. The default address is \url{http://www.cockatrice.de/files/sets.xml} this was an XML file found on the Cockatrice website that has the current set listings for Magic the Gathering. As the page is down, you have to import the file which is distributed with the Cockatrice sources. - This can also be done from the file menu. - \item Select “OK” to load the set listings. - \item A list of all current sets will be brought up. A default selection of sets will automatically be checked. From here you can check or uncheck all sets, or you may only download specific sets that you wish to play with. - \begin{center} -\includegraphics[scale=0.8]{pics/fetchfc3d} - \end{center} -NOTE: If you are playing against someone who is using a card that is not in your database, you will not see a card image or oracle text for that card. Some players like to download all sets to avoid this issue, but other players who only play specific formats (Like \textsc{T2}, \textsc{Standard}, or \textsc{Extended}) wish to keep their database small with only cards they will be using. - \item After you select which sets you wish to download, select “Start download” at the bottom of the Oracle to download the selected sets information. - \item After download is complete, close the Oracle and run Cockatrice. - \item We are now ready to sort our set information in our deck editor. -\end{itemize} - -\section{Editing Set Order and Preference of Card Art} -Many cards have been re-printed in different sets, and in return have different versions of artwork (like the card “Cancel” which can be found in many sets, but has different artwork for each, e.g. \textsc{Zendikar} versus \textsc{M11}: -\begin{center} -\includegraphics{pics/fetchc18b} -\includegraphics{pics/fetche1f4} -\end{center} - -Some players like to have the most current artwork displayed on their cards, while other players have a favorite set they wish to display instead. - -\begin{itemize} - \item Run Cockatrice and select “Deck editor” from the top right Cockatrice menu. This will bring up the Deck Editor along with a list of all cards that are currently in your database which you downloaded using the Oracle Tool. - \item To change what version of the cards will be shown, click on “Card database” on the top left of the Deck editor window, and select “Edit sets…” - \begin{center} -\includegraphics[scale=0.55]{pics/fetchf924} - \end{center} - \item This will bring up a new window that has a list of all sets you currently have downloaded to your database. To change the order of the sets, simply drag and drop them into place. - This will determine which artwork is shown for your cards. If a card is found in multiple sets, whichever set is closest to the top of this list will be the art displayed. - Example: If \textsc{M11} is above \textsc{Zendikar}, The M11 version of the card “Cancel” will be displayed in your Deck editor and Cockatrice games. -\end{itemize} -NOTE: Your opponent will NOT see what artwork you have selected for each of your cards. They will only see what they have selected for their own. - -\section{The Deck Editor / Making a Deck} -The Cockatrice Deck Editor is a tool you can use to make decks to play online. -The cards shown in the Deck Editor are from a database that you downloaded with the Oracle Tool. If you are missing cards or a new set has come out, you must re-run the Oracle and download set information. -\begin{center} -\includegraphics[scale=0.55]{pics/fetch52e0} -\end{center} - -\begin{description} - \item[1. Search Bar] The search bar lets you type in the name of a card and the editor will only show cards that start with whatever you typed in. Example: Typing in ‘B’ will show all cards that start with the letter ‘B’ and typing in ‘Dark’ will show you all cards that start with ‘Dark’ and so on. If you were looking for the card “Sun Titan”, you would not type in ‘Titan’ you would have to type in ‘Sun’ first. Typing in ‘Titan’ will only show you any cards that start with ‘Titan’. - \item[2. Card Search/Filter] The Card search button will bring up a new window that helps you filter out cards more specifically. A variety of check boxes will help find what you need. Card name lets you filter out only cards that have a cretin word in them. Card text can help you find key words like “Haste” or “Infect”. If you were to uncheck all boxes except for “Instant” along with “Artifact” and “U”, the Deck editor will only show you all Blue Instant and Artifact cards. -\begin{center} -\begin{tabular}{ll} -\toprule Letter & Card Type \\ \midrule -U & Blue \\ -W & White \\ -X & Colorless \\ -G & Green \\ -R & Red\\ -B & Black \\ \bottomrule -\end{tabular} -\end{center} - \item[3. Card Data] This section shows the Oracle text for the card that you currently have selected. It will show you up-to-date information on the card such as the Name, Mana cost, Card type, Power/Toughness, and any abilities the card has. It will not show you flavor text. - \item[4. Adding/Removing Card Buttons] -The buttons in the bottom middle will add or remove cards from your Deck List, as well as ad a card specifically to your Sideboard. Having a card selected on the left column and hitting the Enter key will also add it to your deck list. - \item[5. Deck Name/Comments] -The area in the top right lets you name your deck as well as give any comments or descriptions such as how to play the deck, where the deck came from, or explain a theme. Putting something in the “Deck Name” space will NOT be what the file name of the file for your deck. That is spate in the “save” selection under the “Deck” menu found at the top left of the Deck Editor window. - \item[6. Main Deck List] -This area will show you what cards you currently have added to your deck list. It is sorted by card type and also shows you how many of each card and card type you have added, as well as keeps track of how many total cards you have added to your main deck list. This will not add any number of cards you have added to your Sideboard. - \item[7. Sideboard List] -The bottom section of the deck list shows any cards you have added to your sideboard. Again these are split into card types and it will keep track of how many of each card you have as well as how many of each card type and total cards in sideboard. This section will not add any cards from the main deck. Once you have all of your cards added to your deck, you must save it as a file Cockatrice can read. Select “Deck” from the top left corner of the Deck Editor screen, and select “Save Deck” or “Save Deck As…” and it will bring up a new window where you can select where you would like to save your deck, as well as assign it a file name. Cockatrice decks are saved as .cod files. -\end{description} - -\section{Loading a deck list from your clipboard} -If you find a deck online, or you have a deck list saved in a word document, it is easy to transfer it over into a Cockatrice deck file as long as it is in a simple deck list format. -The simple deck list format is a list where each line begins with a number, followed by a whitespace, followed by the cardname, e.g. -\begin{verbatim} -2 Doom Blade -13 Island -10 Swamp -4 Cancel -... -\end{verbatim} - -Simply find the word document or deck list online that you wish to save as a deck, and select the text and copy it to your clipboard. Next, open the Deck Editor screen, and click on the Deck menu from the top left corner. Select “Load deck from clipboard…” and the deck editor will bring up a new window that has the deck list you had copied to your clipboard. Make sure the Deck list looks correct and hit “OK” in the bottom right corner of the window. The Deck editor will now add all the cards in the list to your main deck list. - -\begin{center} -\includegraphics{pics/loaddeck_clip} -\end{center} - -\begin{center} -\includegraphics{pics/okdecklist} -\end{center} - -NOTE: If you add a card to a deck list with this function that you do not have downloaded to your personal cockatrice database though the Oracle tool, the card will take a spot in your main deck list, and count toward the total number of cards, but it will show up as a blank image with no Oracle data or card information. - -\section{Cockatrice Settings} -TODO - -\section{Learning the Ropes / Starting a Solitaire Game} -The best way to get familiar with the way Cockatrice plays is to start a local game that you can play around in by yourself. You could also jump online and start slowly learning, and let other players help you. - -To start a Solo Local game, in the main Cockatrice window, click on “Cockatrice” on the top left, and select “Start local game…”. - -\begin{center} -\includegraphics{pics/fetch2ab8} -\end{center} - -This will bring up a small window that lets you select how many players will be in this local game you are creating. For right now, since we want to do a solo Solitaire game, select one player and hit “OK”. - -\begin{center} -\includegraphics{pics/fetchf010} -\end{center} - -\subsection{Loading a Deck / Using Sideboard} - -This will now bring you to a screen where you load a deck to play with. On the top left part of this screen you will find a button that is labeled “Load Local Deck”. Click that button and it will bring up a window where you can find and select what deck you would like to play with. - -\begin{center} -\includegraphics{pics/fetchf0d2} -\includegraphics[scale=0.8]{pics/fetch55a7} -\end{center} -Select a deck or a .cod file and click “Open”. - -\begin{center} -\includegraphics[scale=0.4]{pics/fetch9b89} -\end{center} - -After the file has loaded you will see all of the cards in that deck laid out on the table. If you hover your mouse over a card, the card image and Oracle info will show on the right side of the screen. If you have a sideboard made for the deck there will be a second section on the table for this sideboard. This screen gives you the ability to double check your deck to make sure it is not only the correct deck you want to play with, but it lets you see that all card images have downloaded properly. If you have cards not showing up at all or they are just blank cards with names on them, you may not have that set downloaded with your Oracle tool. If you have a sideboard, you can drag and drop cards from your main deck to your sideboard or vice-versa. You can do this by clicking and dragging a card to or from your main deck or sideboard. - -NOTE: Moving cards from your main deck to sideboard will NOT change how your deck file is saved, it will only change it temporary for the game you are playing or until you load a new deck. - -When you are satisfied with your deck choice and/or sideboarding options, click on the red outlined “Ready to start” button found a the top of the screen. - -\subsection{Finding Your Way Around} -The main game screenlooks like this -\begin{center} -\includegraphics[scale=0.4]{pics/fetch7cf0} -\end{center} -(Please note your screen will look different due to background image options.) - -\subsubsection{Main Table / Play area} -Split into four areas, this is where all the action will go down. -\begin{description} - \item[The Stack] The area on the left side of the table where Instant and Sorcery cards will be played. This is for things that will only temporarily be put on the table, then into the graveyard. Multiple cards may be added to this area at the same time. Anything on this part of the table will be seen by all players. - \item[Battlefield] This is the soul part of the game table. this is where creatures, enchantments, artifacts, and even plainswalkers will be placed. As cards are moved from your had to the table, they will be aligned to an invisible grid and moved around from there. Tap cards by double clicking them. Anything on this part of the table will be seen by all players. - \item[Land] This space is for land cards, but any card may be placed here. Tap cards here by double clicking them. Anything on this part of the table will be seen by all players. - \item[Hand] Every time you draw a card it will go here to your hand. You may also drag cards from the table back to your hand. Your opponents can not see what is in your hand. -\end{description} - -\subsubsection{Player Info Section} -\begin{center} -\includegraphics[scale=0.7]{pics/fetch0300} -\end{center} - -\begin{description} - \item[Player Avatar] This is a $156\times 60$ pixel JPG image that can be uploaded though the main Cockatrice website. All players in the game room can see this image. It serves nothing more than an online identity for you and other players. - \item[Player Name] Your online name that you picked though the main Cockatrice website. - \item[Life Total] Your in-game life. Using your mouse, if left-clicked will raise this number by one, and if right-clicked lowered by one. There are also keyboard shortcuts to change your life total. - \item[Counters] These seven multicolored circles are used as counters. They can be seen by all players and can be changed by left or right clicking on them to add or subtract a number. Players use them for various digit counting but primarily used for adding and subtracting floating mana produced by card effects. The bottom two white counters can be used for other things like Poison. - \item[Library] This is your deck of cards. The number in the middle reflects how many cards are left in your library. Double clicking the deck lets you draw a card and add it to your hand, you can also drag cards off the top into the battlefield or to your hand. Right-clicking the deck brings up a menu that allows other things to happen like reviling the top number of cards, shuffling, or moving cards directly into the graveyard. - \item[Number of cards in hand] The number in the middle represents how many cards are currently in your hand. Other players can see this number but can not see the cards actually in your hand. - \item[Graveyard] Cards can be dragged and dropped into your graveyard from play or vise-versa, the stack, your hand, or even your library. The number in the middle represents how many cards are currently in your graveyard. Any player may right-click on the graveyard and bring up a menu that shows what cards are in it. - \item[Exile] Cards can be dragged and dropped into exile from play or vise-versa, the stack, your hand, or even your library. The number in the middle represents how many cards are currently in your exile. Any player may right-click on the exile and bring up a menu that shows what cards are in it. -\end{description} - -\subsubsection{Turn Phases} -\begin{center} -\includegraphics[scale=0.7]{pics/fetchfebd} -\end{center} -This bar located on the left most side of the screen represents the 11 steps in a players turn. To go from one phase to the next, you can click on the square of the phase you want to move to, or you can hit Ctrl+space to move down to the next. Some phases even have their own keyboard shortcut. Going from one phase to the next does not actually do anything to your or your cards, it is only a place marker for your opponents to see and keep up with what you are doing in your turn. For example, clicking to the “Draw Phase” will not automatically draw you a card. It is customary for a player to end their turn on the “End of turn step” and let their opponent hit the “next turn” button. This is a courtesy for other players if they wish to do something like use an instant at the end of your turn, or in response to something you did. - -NOTE: Players sometimes use the term EOT which stands for “End Of Turn”. This is to let other players know they are doing something in response to the end of the current turn. - -\subsubsection{Info/Chat Bar} -\begin{center} -\includegraphics[scale=0.8]{pics/fetcha0de} -\end{center} -Split into three sections, the Info/Chat bar lets you see a close-up image of the card your mouse was last over, as well as gives you the card info for that card. At the bottom of this bar there is a chat log that helps keep track of events during the game as well as lets you communicate with other players. if a card is placed on the table, pointed at, or tapped it will get noted in the chat log as well as has a link to the card that you can hover over and see an image of at the top of the bar. - -\subsection{Basic Functions} -\subsubsection{Rolling Dice} -At the beginning of a game players decide who is going first by rolling a 20 sided die. In Cockatrice we do this by pressing Ctrl-I and hitting enter. Hitting Ctrl-I brings up a die window and lets you select how many sides you want on your die. Default is 20, and pressing enter will “roll” the die. This action will show up in the cat log at on the bottom right of the screen. You can also find this in the “game” menu at the top of the window, selecting “player” and clicking on “roll die…” -\begin{center} - \includegraphics{pics/fetch7486}\\ - \includegraphics{pics/fetch3705} -\end{center} - -\subsubsection{Draw Cards / Mulligan} -When a game starts and the first player has been selected, all players will draw seven cards. this can be done by pressing Ctrl-M. Seven cards will go from your library to your hand. Pressing Ctrl-M again will put the seven cards from your hand back into your library, shuffle your library and deal out six new cards to you. Each time you press Ctrl-M it will give you one less card until you get down to one card, then it will re-start at seven cards. This function can be found by clicking the “game” menu on the top of the window, selecting “player” then selecting “hand” and then “take Mulligan”. If you are playing a friendly game, press Ctrl-M as normal, but then press Ctrl-D to draw cards until you have a total of seven again. -\begin{center} -\includegraphics[scale=0.5]{pics/fetchfe20} -\end{center} - - -\subsubsection{Tapping} -Tapping cards is very basic. If a card is on the table under your control, you can double click it to tap it and then double click again to untap it. You can select multiple cards on the table by clicking and dragging your mouse, then tap or untap all of the selected cards at the same time. Other players can not tap or untap your cards. Pressing Ctrl-U will untap everything you control. - -\begin{itemize} - \item Untapped - \begin{center} - \includegraphics{pics/fetchb6fe} - \end{center} - - \item Tapped - \begin{center} - \includegraphics{pics/fetch867f} - \end{center} -\end{itemize} - -\subsubsection{Attaching Cards to Cards} -Sometimes an Enchantment -Aura or Equipment cards need to be attached to other cards that are already on the table. simply put the enchantment or equipment on the table. Right-click the card and select “attach” (this can also be done with Ctrl-A). A green arrow will appear, point and click on the card you wish to attach. You can also attach cards to other people's cards. -\begin{center} - \includegraphics{pics/fetch100e}\\ - \includegraphics{pics/fetchb17a} -\end{center} - - -\subsubsection{Changing Power/Toughness} -Enchantments, Equipment, and other effects sometimes change a creatures power or toughness. This can be done by right-clicking the card, and selecting “power / toughness” then selecting which one you wish to do. Other players can not change your creatures power and toughness. This can also be done though a series of keyboard shortcuts seen below. - -\begin{center} -\begin{tabular}{ll} -(Select card) Ctrl++ & Increase power \\ -(Select card) Ctrl+- & Decrease power \\ -(Select card) Alt++ & Increase toughness \\ -(Select card) Alt+- & Decrease toughness \\ -(Select card) Ctrl+Alt++ & Increase power and toughness \\ -(Select card) Ctrl+Alt+- & Decrease power and toughness -\end{tabular} -\includegraphics[scale=0.5]{pics/fetche3fc}\\ -\includegraphics{pics/fetchd922} -\end{center} - -\subsubsection{Adding Counters to Cards} -Sometimes Counters are needed to be placed on cards that the counters on the side of the screen are not able to track. Cockatrice offers three different counter color options, Red, Green, and Yellow. Although there is no set standard on what color stands for what, it is mostly player preference. Green could be used for +1/+1, red -1/-1, leaving yellow for charge and quest counters, this is not a set rule. Adding counters is as simple as right clicking on the card you wish to add counters too, and currently there is no keyboard shortcut for this process. Removing counters is the same process, right click and select remove. Other players can not add or remove counters to or from your cards. - -\begin{center} -\includegraphics{pics/fetch5170} -\end{center} -(One of each counter) - -\subsubsection{Pointing at Cards / Arrows} -Pointing at cards is needed for resolving spells, or declaring attackers and blockers. All you need to do is right-click over a card and drag an arrow over to what you are pointing at. Permanents, spells in the stack, and even a players life total can be pointed at. You can point at your opponents cards and life total, and they can point at yours. When your arrows are no loner needed, press Ctrl-R to remove them from the screen. - -\begin{center} -\includegraphics[scale=0.5]{pics/fetch98fd} \\ -\includegraphics[scale=0.5]{pics/fetch74b2} -\end{center} - -\subsubsection{Creating Tokens} -Creating tokens can sometimes be tedious, but is well worth the effort to keep a clean and organized game. Pressing Ctrl-T will bring up a small window to assist you in creating a token. Simply enter the name of the token you are creating, select its color, and give it a power and toughness (\#/\#). You can also bring up this token window by selecting “game” from the top menu, selecting “Player” then clicking on “Create Token…”. A copy of the Last token made can be done by pressing *Ctrl+G or right-clicking on a already made token (or any card on the table) and selecting “clone” or pressing Ctrl-H**. When a token or clone leaves play, it will be destroyed and vanish. - -\begin{center} -\includegraphics[scale=0.5]{pics/fetch2c36} \\ -\includegraphics[scale=0.5]{pics/fetch9bff} \\ -\includegraphics[scale=0.5]{pics/fetche6b2} \\ -\includegraphics[scale=0.5]{pics/fetch84a2} -\end{center} - -Make copies of your last token by pressing Ctrl-G. -\begin{center} -\includegraphics[scale=0.5]{pics/fetch6847} -\end{center} - -\chapter{Playing Online} - With Cockatrice you will most likely play Magic games over the Internet with real people all around the world. In order to help maintain a pleasant environment for users, please read the messages below: - -\begin{itemize} - \item User Code of Conduct\footnote{TODO, dead forum link} -- Must Read for all Users - \item How to Report Abuse\footnote{TODO, dead forum link} -- It is recommended to read this as well -\end{itemize} - -\section{Connect to Server} -To connect to the Cockatrice server, launch the Cockatrice program, go to the “Cockatrice” menu at the top left, and select “Connect”. A window will appear (see image below). -\begin{center} -\includegraphics[scale=0.5]{pics/fetch23f3} -\end{center} -If you have registered with Cockatrice, then enter your Username in the “Player Name” field and your password in the “Password” field then click “OK”. You may check the “Remember Password” box if you wish. If you do, then the next time “Connect” is selected from the “Cockatrice” menu, the window that appears will already have your Username and Password already filled. Please take this into consideration if you share a computer with other people, seeing that you are responsible for anything that happens on the server with your username (As noted here). If you did not register with Cockatrice, then simply fill in the Username with whatever you like and click “OK”. If you would like to become a registered user, read the instructions from the server's website. - -Once you are connected to the server, more tabs will appear at the top of the screen next to the “Deck” tab that you are already on. - -\section{All About Games} -This page is about creating, joining, watching, and searching for games on the Cockatrice Server. In order to participate in any games, you have to be connected to the server. The games on the server are where all of the action take place. There will be many games happening on the server at the same time. Basically, first a game is created by a player (it could be you). Then other players join the game until the number of players reaches the number set by that game's creator. When the game has no players participating in it, the game disappears. -Creating a Game - -To Create a game, go to the “MTG room” tab. Click on the “Create” button below the Games list. A window will appear (see below). -\begin{center} -\includegraphics[scale=0.5]{pics/fetch54df} -\end{center} - -Here are all of the options for creating a game: -\begin{description} - \item[Description] Describe the game in your own words (i.e. “Competitive Standard”, “Casual EDH- No Infinites”, “RavnicaDraft”, “Here is Chris”) - \item[Players] Specify the number of Players in the game. This cannot be changed after the game is created. The game can only begin when the specified number of players join. - \item[Spectators] Spectators are users that are in a game, but they are not one of the players. Spectators can see all of the public zones of the game and everything displayed in the Info/Chat Bar. Any number of users can join a game as a Spectator (as long as the “Spectators Allowed” box is checked). - \begin{description} - \item[Spectators Allowed] Unchecking this box will prohibit any/all users from joining the game as a Spectator. - \item[Spectators Need a Password to Join] Checking this box will make it so that in order for a user to join as a Spectator, they need to type the password you specify in the Password Field. - \item[Spectators can Chat] Checking this box will allow Spectators to type comments in the Chat bar during the game. - \item[Spectators See Everything] Checking this box will allow Spectators to view cards in all private zones of all players (hands, libraries, face-down cards). - \end{description} - \item[Password Field] If you type anything in this field, a Player (or Spectator if the “Spectators Need Password” box is checked) will need to type the exact same thing you typed in order to join the game (and it is case-sensitive). - \item[Only Buddies Can Join] Checking this box will prevent any user who is not in your Buddy List from joining the game as a Player or Spectator. NOTE: Your username is not on your buddy list. If you leave a game you created, and this box is checked, you will not be able to rejoin. - \item[Only Registered Users Can Join] Checking this box will prevent anyone who has not registered on the Cockatrice website from joining as a Player or Spectator. - \item[Game Type] These check boxes have no effect on the game. They inform other Users browsing the Games list of what format your game is. Users can choose to view only games of a certain Type/Format. (\url{http://en.wikipedia.org/wiki/Magic:_The_Gathering_formats}) -\end{description} - -\subsection{Joining a Game} -Most of the time, to join a game you click on the “MTG Room” tab, click on a game in the Games list, then click Join. -If the Game's creator specified a password then you will have to type that password in a small window that appears after you click Join (the password is case-sensitive). -If your User Profile meets the criteria of the Game's creator then a new tab will open with that game. -There is also an easy way to join a game in which a User in your Buddy List is playing. -Go to the “User Lists” tab, right click any Username from the Buddies Online list (at the left of the window) to make a menu appear, and select “Show this user's games”. -A window will open with a list of games that the User is either playing or watching. In the same manner as described with the “MTG Room” tab, simply click on a game and click Join. -To watch a game, the instructions are the same except that you click the “Join as Spectator” button instead of the Join button. -NOTE: If you are a player in a game and you wish to become a spectator in that game, you must first leave the game then rejoin as a Spectator. Same thing if you are a Spectator and wish to play. - -\subsection{Searching for Games} -The Games list in the “MTG Room” tab displays by default all games that have not reached the specified number of players. The “Filter Games” button makes looking through this list easier if you are looking to join a particular kind of game. When this button is selected, a window appears (see below). -\begin{center} -\includegraphics[scale=0.5]{pics/fetchd30e} -\end{center} -\begin{description} - \item[Game Description] Displays games with certain descriptions. You can even search partial names. - \item[Creator] Displays games created by Users with that username. It even searches for partial names. - \item[Player Count] Displays all games where the specified number of players is greater-than or equal to the “at least” number and less-than or equal to the “at most” number. For instance, setting both numbers to 3 will display all games whose creators made as 3-player games. - \item[Show Unavailable Games] Checking this box will display games that are full and in progress. You can still join these games as a Spectator if the game's creator allows it. - \item[Game Types] Displays games with the selected types. Bear in mind that the Cockatrice software does not enforce deck construction for formats. So just because a game's type is EDH/Commander, doesn't necessarily mean that is what's being played in the game. Players can agree to switch formats in a game. -\end{description} - -\section{Keeping Track of Buddies} - - -Cockatrice allows registered users to keep track of other registered users in a buddy list. You won't be able to do anything with this list (or other registered users at all) unless you are a registered user and connected to the server. - -To add a User to your Buddy list, right-click their username and, in the menu that appears, select “Add to buddy list”. You can right-click and add a User in this manner anywhere you see their username (under the “User lists” tab, the “MTG Room” tab, in a game, or in a direct chat). When you add a User, their username will appear in the list “Buddies Online” located under the “User lists” tab. If the username appears in a light shade of gray, then that User is not connected to the server. If it appears in black, then that User is connected to the server. - -If you see that one of your Buddies is connected, you can see the games he/she is currently in. Right-click their username, and in the menu that appears select “Show this user's games”. A window will appear from which you can watch or play in a game that your buddy is currently in. - -You can Direct Chat with a Buddy (or any user for that matter) by right-clicking their username and, from the menu that appears, selecting “Direct Chat”. When you do this, a new tab will open (both on your window and on the other User's window) containing a chat room that can only be seen and used by the two of you. The place where you type in your messages is at the very bottom of the window. - -To remove a User from your Buddy list, right-click their username, and from the menu that appears select “Remove from buddy list”. - -\section{Dealing with and Preventing Unpleasantries} -Make a screenshot, there are several free programs available. -Right-Click a username to add to Ignore List. - -\chapter{Frequently Asked Questions (FAQ)} -\section{How to update the card database} -When a new set comes out, you need to update your card database to be able to see the new cards in the deck editor and use them in the game. To do this, open the Oracle tool in the Cockatrice folder. It's a stand-alone program and is run directly out of the folder without running Cockatrice. - -When the Oracle tool is running, open the menu and select 'Download sets information'. Use the suggested address and click OK. After at most a few seconds, you should be presented a list of sets to be downloaded. Do not uncheck the ones you already have: they should be downloaded again. Click 'Start download' and wait. When the process is finished, the database should be up to date. - -\section{Change Card Art / Custom Card Art} - Is it possible to change the card art for a specif card, not by changing the set order in my deck editor? - -YES! It is actually very simple. - -All you have to do is get a .JPG of the card you wish to change and name the actual file of the image to the cards (exact) name and add ”.Full” to the end. You can then take this new card image and replace the old one in your downloaded image folder. - -NOTE: Image size does not matter. Try to use a high resolution .JPG of the card you want to use for best quality. - -EXAMPLE: Let's say you wish to turn your M11 Sun Titan from its original art to a promo version. - -\begin{center} - \includegraphics[scale=0.5]{pics/fetch74e3} -\end{center} -If you are using Windows 7, you can find the default location for the Cockatrice card art files under \shellcmd{C:\textbackslash Program Files (x86)\textbackslash Cockatrice\textbackslash pics\textbackslash downloadedPics} Once there, look for the folder of the set for the card we are replacing. For this example, Sun Titan is in the M11 folder. Open the folder and paste/replace your new “Promo” Sun Titan.full[.JPG] into this folder, discarding the original copy. (If you have not yet downloaded the original image of a card by selecting it in the deck editor or playing it in an online game, the card image will not yet be there) - -Once you have the new card image in the proper folder, you can now start Cockatrice (Or re-start if you already had the program open)and select the deck editor to see your new card image. - -If you are changing the art of a card that has multiple versions in other sets, make sure you put the new card in whatever folder (or set) is highest on your card database set list. - -NOTE: Other players on Cockatrice will NOT see your new card image. They will only see whatever version of the card is in their database. - -\section{Use Higher Resolution Cards} -Can you get better/higher resolution card art than the default downloaded card images already used? - -Yes! - -When you click on a card for the first time in the Deck Editor, Cockatrice goes onto the internet and finds an image of that card from a database on another website. - -If you find a higher resolution .JPG of a card that you wish to use on your Cockatrice, you can replace the image with no problem. If you can find a card image in the 3,000 by 1,000 pixel range, and save it as the cards (exact) name and add .Full to the end. - -If you are using Windows 7, you can find the default location for the Cockatrice card art files under \shellcmd{C:\textbackslash Program Files (x86)\textbackslash Cockatrice\textbackslash pics\textbackslash downloadedPics}. Once there, look for the folder of the set for the card you are replacing. (If you are not running Cockatrice as an administrator, look in \shellcmd{C:\textbackslash Users\textbackslash username\textbackslash AppData\textbackslash Local\textbackslash VirtualStore\textbackslash Program Files (x86)\textbackslash Cockatrice\textbackslash pics\textbackslash downloadedPics}.) - -Open the folder of the set with the card, and paste/replace the new higher resolution .JPG image with the old low quality one. - -This process is the same for changing cards to custom images. - -NOTE: Other Cockatrice players will not see your higher resolution card art, they will only see the image they have in their own database. - -\section{Booster drafts} - Cockatrice does not support booster drafts, so players need to use an external service for this. - -Most people use \url{http://ccgdecks.com/} so it's probably not a bad idea to register an account there before joining a game in Cockatrice. - -\section{What is Legacy / Vintage / EDH?} -See \url{http://en.wikipedia.org/wiki/Magic:_The_Gathering_formats}. - -\section{Linking cards and URLs in the Cockatrice chat.} -The Cockatrice chat supports linking of cards and URLs by use of certain tags around a word or phrase. - -\subsection{How to link a card in the Cockatrice chat} -To link a card in the Cockatrice chat, type out the full name of the card, surrounded by the [card] and [/card] tags. - -For example: -\begin{verbatim} -[card]Black Lotus[/card] -\end{verbatim} - -\subsection{How to link a URL in the Cockatrice chat} -To link a URL in the Cockatrice chat, type out the url, surrounded by the [url] and [/url] tags. - -For example: -\begin{verbatim} -[url]http://www.cockatrice.de[/url] -[url]cockatrice.de[/url] -\end{verbatim} - - -\chapter{Servatrice on CentOS 6} -\label{servatrice} -This Howto from woogerworks.com will help you to run your own Cockatrice server (called Servatrice). -An installation script can be downloaded at: \url{http://www.woogerworks.com/cockatrice/installatrice} - -BEFORE CONTINUING, PLEASE UNDERSTAND THESE ARE THE VERY MOST BASIC STEPS. -THIS WILL NOT CONFIGURE SECURITY SETTINGS (YOU ARE RESPONSIBLE FOR YOUR OWN SECURITY)! -THIS WILL NOT CONNECT THE SERVER TO A DATABASE! -USE AT YOUR OWN RISK. - -\begin{enumerate} - \item Open a command shell and install the prerequisites -\begin{enumerate} - \item \shellcmd{cd /etc/yum.repos.d/} - \item \shellcmd{sudo wget http://kdeforge.unl.edu/apt/kde-redhat/epel/kde.repo} - \item \shellcmd{yum -y groupinstall "development tools"} - \item \shellcmd{rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86\_64/epel-release-6-8.noarch.rpm} - \item \shellcmd{yum -y install qt-mysql qt-devel qt-mobility-devel protobuf-devel protobuf-compiler cmake28 libgcrypt-devel} - \item \shellcmd{cd} -\end{enumerate} - - \item Download the source code: -\begin{enumerate} - \item \shellcmd{git clone https://github.com/Cockatrice/Cockatrice} - \item \shellcmd{cd Cockatrice} - \item \shellcmd{mkdir build} - \item \shellcmd{cd build} - \item \shellcmd{cmake28 -DWITH\_SERVER=1 ..} - \item \shellcmd{make} - \item \shellcmd{sudo make install} -\end{enumerate} - - \item Create a servatrice.ini file. There is an example file you can convert: -\shellcmd{sed -e "s/number\_pools=1/number\_pools=0/" ../servatrice/servatrice.ini.example > \textasciitilde/servatrice.ini} -Here is one example file: -\begin{framed} -\begin{verbatim} -[server] -port=4747 -statusupdate=15000 -logfile=server.log -name="My own Cockatrice server" -id=1 -number_pools=0 - -[servernetwork] -active=0 -port=14747 -ssl_cert=ssl_cert.pem -ssl_key=ssl_key.pem - -[authentication] -method=none - -[database] -type=none -prefix=cockatrice -hostname=localhost -database=servatrice -user=MYUSERNAMEHERE -password=MYSECUREPASSWORDHERE - -[rooms] -method=config -roomlist\size=1 -roomlist\1\name="FIRST ROOM NAME" -roomlist\1\description="FIRST ROOM DESCRIPTION" -roomlist\1\autojoin=true -roomlist\1\joinmessage="THIS IS A JOIN MESSAGE" -roomlist\1\game_types\size=11 -roomlist\1\game_types\1\name="Vintage (T1)" -roomlist\1\game_types\2\name="Legacy (T1.5)" -roomlist\1\game_types\3\name="Extended (T1.X)" -roomlist\1\game_types\4\name="Modern" -roomlist\1\game_types\5\name="Standard (T2)" -roomlist\1\game_types\6\name="Block Constructed" -roomlist\1\game_types\7\name="EDH/Commander" -roomlist\1\game_types\8\name="Highlander" -roomlist\1\game_types\9\name="2HG" -roomlist\1\game_types\10\name="Draft/Sealed" -roomlist\1\game_types\11\name="Other" - -[game] -max_game_inactivity_time=120 -max_player_inactivity_time=15 - -[security] -max_users_per_address=8 -message_counting_interval=10 -max_message_size_per_interval=1000 -max_message_count_per_interval=10 -max_games_per_user=5 -\end{verbatim} -\end{framed} - - \item Install the database server (optional) -\begin{enumerate} - \item \shellcmd{sudo yum -y install mysql-server mysql php-mysql} - \item \shellcmd{sudo service mysqld start} - \item \shellcmd{sudo chkconfig mysqld on} - \item \shellcmd{mysqladmin -u root password 'password'} - \item \shellcmd{mysql -u root -ppassword -e "create database servatrice;"} - \item \shellcmd{mysql -u root -ppassword -e "create user 'servatrice'@'localhost' identified by 'password';"} - \item \shellcmd{mysql -u root -ppassword -e "grant all privileges on servatrice.* to 'servatrice'@'localhost';"} - \item \shellcmd{mysql -u servatrice -ppassword servatrice < ../servatrice/servatrice.sql} - \item \shellcmd{mysql -u servatrice -ppassword -e "insert into servatrice.cockatrice\_users \textbackslash\\ (admin,name,password\_sha512,active) values (1,'servatrice','MYSHA512PASSWORD',1);"} - \item \shellcmd{sed -i.bak -e "s/password=foobar/password=password/" -e "s/type=none/type=mysql/" \textbackslash\\ -e "s/method=none/method=sql/" ~/servatrice.ini} -\end{enumerate} - - \item Start Servatrice for testing: \shellcmd{/usr/local/bin/servatrice}. I recommend to run it later within a \shellcmd{screen} session or write an init-script. -\end{enumerate} -You should be able to log in as a regular user using any account name. -You can login using the username \textit{servatrice} and the password \textit{password} as the first moderator. - -If everything succeeded, you should tweak the servatrice.ini and set your root password to something strong if not already done (at least 8 characters, upper case, lower case, numbers, special characters). - -%\listoffigures -%\listoftables -%\printindex - -\end{document} diff --git a/doc/usermanual/pics/fetch0300.jpg b/doc/usermanual/pics/fetch0300.jpg deleted file mode 100644 index 90bdcf44..00000000 Binary files a/doc/usermanual/pics/fetch0300.jpg and /dev/null differ diff --git a/doc/usermanual/pics/fetch100e.jpg b/doc/usermanual/pics/fetch100e.jpg deleted file mode 100644 index 00e9c9ad..00000000 Binary files a/doc/usermanual/pics/fetch100e.jpg and /dev/null differ diff --git a/doc/usermanual/pics/fetch23f3.jpg b/doc/usermanual/pics/fetch23f3.jpg deleted file mode 100644 index eccdc58e..00000000 Binary files a/doc/usermanual/pics/fetch23f3.jpg and /dev/null differ diff --git a/doc/usermanual/pics/fetch2ab8.jpg b/doc/usermanual/pics/fetch2ab8.jpg deleted file mode 100644 index fdb4e61e..00000000 Binary files a/doc/usermanual/pics/fetch2ab8.jpg and /dev/null differ diff --git a/doc/usermanual/pics/fetch2c36.jpg b/doc/usermanual/pics/fetch2c36.jpg deleted file mode 100644 index d6455779..00000000 Binary files a/doc/usermanual/pics/fetch2c36.jpg and /dev/null differ diff --git a/doc/usermanual/pics/fetch3705.jpg b/doc/usermanual/pics/fetch3705.jpg deleted file mode 100644 index e0262bd1..00000000 Binary files a/doc/usermanual/pics/fetch3705.jpg and /dev/null differ diff --git a/doc/usermanual/pics/fetch5170.jpg b/doc/usermanual/pics/fetch5170.jpg deleted file mode 100644 index 23b04704..00000000 Binary files a/doc/usermanual/pics/fetch5170.jpg and /dev/null differ diff --git a/doc/usermanual/pics/fetch52e0.jpg b/doc/usermanual/pics/fetch52e0.jpg deleted file mode 100644 index 73548870..00000000 Binary files a/doc/usermanual/pics/fetch52e0.jpg and /dev/null differ diff --git a/doc/usermanual/pics/fetch54df.jpg b/doc/usermanual/pics/fetch54df.jpg deleted file mode 100644 index a6d990ae..00000000 Binary files a/doc/usermanual/pics/fetch54df.jpg and /dev/null differ diff --git a/doc/usermanual/pics/fetch554a.jpg b/doc/usermanual/pics/fetch554a.jpg deleted file mode 100644 index 95e3c39d..00000000 Binary files a/doc/usermanual/pics/fetch554a.jpg and /dev/null differ diff --git a/doc/usermanual/pics/fetch55a7.jpg b/doc/usermanual/pics/fetch55a7.jpg deleted file mode 100644 index a16ac41a..00000000 Binary files a/doc/usermanual/pics/fetch55a7.jpg and /dev/null differ diff --git a/doc/usermanual/pics/fetch6847.jpg b/doc/usermanual/pics/fetch6847.jpg deleted file mode 100644 index 3e489efb..00000000 Binary files a/doc/usermanual/pics/fetch6847.jpg and /dev/null differ diff --git a/doc/usermanual/pics/fetch7486.jpg b/doc/usermanual/pics/fetch7486.jpg deleted file mode 100644 index 30cbf1a8..00000000 Binary files a/doc/usermanual/pics/fetch7486.jpg and /dev/null differ diff --git a/doc/usermanual/pics/fetch74b2.jpg b/doc/usermanual/pics/fetch74b2.jpg deleted file mode 100644 index 019f1e99..00000000 Binary files a/doc/usermanual/pics/fetch74b2.jpg and /dev/null differ diff --git a/doc/usermanual/pics/fetch74e3.jpg b/doc/usermanual/pics/fetch74e3.jpg deleted file mode 100644 index ddfaef2e..00000000 Binary files a/doc/usermanual/pics/fetch74e3.jpg and /dev/null differ diff --git a/doc/usermanual/pics/fetch7cf0.jpg b/doc/usermanual/pics/fetch7cf0.jpg deleted file mode 100644 index 342474b1..00000000 Binary files a/doc/usermanual/pics/fetch7cf0.jpg and /dev/null differ diff --git a/doc/usermanual/pics/fetch84a2.jpg b/doc/usermanual/pics/fetch84a2.jpg deleted file mode 100644 index bbf941db..00000000 Binary files a/doc/usermanual/pics/fetch84a2.jpg and /dev/null differ diff --git a/doc/usermanual/pics/fetch867f.jpg b/doc/usermanual/pics/fetch867f.jpg deleted file mode 100644 index 2b11b724..00000000 Binary files a/doc/usermanual/pics/fetch867f.jpg and /dev/null differ diff --git a/doc/usermanual/pics/fetch98fd.jpg b/doc/usermanual/pics/fetch98fd.jpg deleted file mode 100644 index 36b3f918..00000000 Binary files a/doc/usermanual/pics/fetch98fd.jpg and /dev/null differ diff --git a/doc/usermanual/pics/fetch9b89.jpg b/doc/usermanual/pics/fetch9b89.jpg deleted file mode 100644 index 424f449b..00000000 Binary files a/doc/usermanual/pics/fetch9b89.jpg and /dev/null differ diff --git a/doc/usermanual/pics/fetch9bff.jpg b/doc/usermanual/pics/fetch9bff.jpg deleted file mode 100644 index 8334c313..00000000 Binary files a/doc/usermanual/pics/fetch9bff.jpg and /dev/null differ diff --git a/doc/usermanual/pics/fetcha0de.jpg b/doc/usermanual/pics/fetcha0de.jpg deleted file mode 100644 index 6f756f76..00000000 Binary files a/doc/usermanual/pics/fetcha0de.jpg and /dev/null differ diff --git a/doc/usermanual/pics/fetchb17a.jpg b/doc/usermanual/pics/fetchb17a.jpg deleted file mode 100644 index 9953a254..00000000 Binary files a/doc/usermanual/pics/fetchb17a.jpg and /dev/null differ diff --git a/doc/usermanual/pics/fetchb6fe.jpg b/doc/usermanual/pics/fetchb6fe.jpg deleted file mode 100644 index bcafcb28..00000000 Binary files a/doc/usermanual/pics/fetchb6fe.jpg and /dev/null differ diff --git a/doc/usermanual/pics/fetchc18b.jpg b/doc/usermanual/pics/fetchc18b.jpg deleted file mode 100644 index 84374138..00000000 Binary files a/doc/usermanual/pics/fetchc18b.jpg and /dev/null differ diff --git a/doc/usermanual/pics/fetchd30e.jpg b/doc/usermanual/pics/fetchd30e.jpg deleted file mode 100644 index 63dc6961..00000000 Binary files a/doc/usermanual/pics/fetchd30e.jpg and /dev/null differ diff --git a/doc/usermanual/pics/fetchd922.jpg b/doc/usermanual/pics/fetchd922.jpg deleted file mode 100644 index 36836357..00000000 Binary files a/doc/usermanual/pics/fetchd922.jpg and /dev/null differ diff --git a/doc/usermanual/pics/fetche1f4.jpg b/doc/usermanual/pics/fetche1f4.jpg deleted file mode 100644 index 456d7746..00000000 Binary files a/doc/usermanual/pics/fetche1f4.jpg and /dev/null differ diff --git a/doc/usermanual/pics/fetche3fc.jpg b/doc/usermanual/pics/fetche3fc.jpg deleted file mode 100644 index 565d8737..00000000 Binary files a/doc/usermanual/pics/fetche3fc.jpg and /dev/null differ diff --git a/doc/usermanual/pics/fetche6b2.jpg b/doc/usermanual/pics/fetche6b2.jpg deleted file mode 100644 index ea64940b..00000000 Binary files a/doc/usermanual/pics/fetche6b2.jpg and /dev/null differ diff --git a/doc/usermanual/pics/fetchf010.jpg b/doc/usermanual/pics/fetchf010.jpg deleted file mode 100644 index 28edbbaf..00000000 Binary files a/doc/usermanual/pics/fetchf010.jpg and /dev/null differ diff --git a/doc/usermanual/pics/fetchf0d2.jpg b/doc/usermanual/pics/fetchf0d2.jpg deleted file mode 100644 index 2046c0e0..00000000 Binary files a/doc/usermanual/pics/fetchf0d2.jpg and /dev/null differ diff --git a/doc/usermanual/pics/fetchf924.jpg b/doc/usermanual/pics/fetchf924.jpg deleted file mode 100644 index 494c1f42..00000000 Binary files a/doc/usermanual/pics/fetchf924.jpg and /dev/null differ diff --git a/doc/usermanual/pics/fetchfc3d.jpg b/doc/usermanual/pics/fetchfc3d.jpg deleted file mode 100644 index 879c9c05..00000000 Binary files a/doc/usermanual/pics/fetchfc3d.jpg and /dev/null differ diff --git a/doc/usermanual/pics/fetchfe20.jpg b/doc/usermanual/pics/fetchfe20.jpg deleted file mode 100644 index c5b1730e..00000000 Binary files a/doc/usermanual/pics/fetchfe20.jpg and /dev/null differ diff --git a/doc/usermanual/pics/fetchfebd.jpg b/doc/usermanual/pics/fetchfebd.jpg deleted file mode 100644 index f44cbbe6..00000000 Binary files a/doc/usermanual/pics/fetchfebd.jpg and /dev/null differ diff --git a/doc/usermanual/pics/loaddeck_clip.jpg b/doc/usermanual/pics/loaddeck_clip.jpg deleted file mode 100644 index 5c0da095..00000000 Binary files a/doc/usermanual/pics/loaddeck_clip.jpg and /dev/null differ diff --git a/doc/usermanual/pics/okdecklist.jpg b/doc/usermanual/pics/okdecklist.jpg deleted file mode 100644 index 306fe625..00000000 Binary files a/doc/usermanual/pics/okdecklist.jpg and /dev/null differ diff --git a/oracle/CMakeLists.txt b/oracle/CMakeLists.txt index c91e958e..05c8a2e4 100644 --- a/oracle/CMakeLists.txt +++ b/oracle/CMakeLists.txt @@ -14,6 +14,13 @@ SET(oracle_SOURCES ../cockatrice/src/carddatabase.cpp ../cockatrice/src/settingscache.cpp ../cockatrice/src/shortcutssettings.cpp + ../cockatrice/src/settings/carddatabasesettings.cpp + ../cockatrice/src/settings/serverssettings.cpp + ../cockatrice/src/settings/settingsmanager.cpp + ../cockatrice/src/settings/messagesettings.cpp + ../cockatrice/src/settings/gamefilterssettings.cpp + ../cockatrice/src/settings/layoutssettings.cpp + ../cockatrice/src/thememanager.cpp ../cockatrice/src/qt-json/json.cpp ) @@ -232,3 +239,8 @@ Translations = Resources/translations\") fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/oracle.exe\" \"\${QTPLUGINS}\" \"${libSearchDirs}\") " COMPONENT Runtime) endif() +#Compile a portable version, default off +option(PORTABLE "portable build" OFF) +IF(PORTABLE) +add_definitions(-DPORTABLE_BUILD) +endif() diff --git a/oracle/src/main.cpp b/oracle/src/main.cpp index 9b462dd8..60e5e8d9 100644 --- a/oracle/src/main.cpp +++ b/oracle/src/main.cpp @@ -7,9 +7,11 @@ #include "main.h" #include "oraclewizard.h" #include "settingscache.h" +#include "thememanager.h" QTranslator *translator, *qtTranslator; SettingsCache *settingsCache; +ThemeManager *themeManager; const QString translationPrefix = "oracle"; #ifdef TRANSLATION_PATH @@ -51,6 +53,7 @@ int main(int argc, char *argv[]) } settingsCache = new SettingsCache; + themeManager = new ThemeManager; qtTranslator = new QTranslator; translator = new QTranslator; @@ -58,7 +61,7 @@ int main(int argc, char *argv[]) OracleWizard wizard; - QIcon icon(":/resources/appicon.svg"); + QIcon icon("theme:appicon.svg"); wizard.setWindowIcon(icon); wizard.show(); diff --git a/oracle/src/oraclewizard.cpp b/oracle/src/oraclewizard.cpp index 0924bcc7..4a994034 100644 --- a/oracle/src/oraclewizard.cpp +++ b/oracle/src/oraclewizard.cpp @@ -45,16 +45,22 @@ OracleWizard::OracleWizard(QWidget *parent) : QWizard(parent) { - settings = new QSettings(this); + settings = new QSettings(settingsCache->getSettingsPath()+"global.ini",QSettings::IniFormat, this); connect(settingsCache, SIGNAL(langChanged()), this, SLOT(updateLanguage())); - importer = new OracleImporter( -#if QT_VERSION < 0x050000 - QDesktopServices::storageLocation(QDesktopServices::DataLocation) + QString dataDir; + +#ifndef PORTABLE_BUILD + #if QT_VERSION < 0x050000 + QDesktopServices::storageLocation(QDesktopServices::DataLocation); + #else + QStandardPaths::standardLocations(QStandardPaths::DataLocation).first(); + #endif #else - QStandardPaths::standardLocations(QStandardPaths::DataLocation).first() + dataDir.append("data"); #endif - , this); + + importer = new OracleImporter(dataDir, this); addPage(new IntroPage); addPage(new LoadSetsPage); @@ -171,11 +177,10 @@ void IntroPage::languageBoxChanged(int index) void IntroPage::retranslateUi() { setTitle(tr("Introduction")); - label->setText(tr("This wizard will import the list of sets and cards " - "that will be used by Cockatrice.
You will need to " - "specify an url or a filename that will be used as a " - "source, and then choose the wanted sets from the list " - "of the available ones.")); + label->setText(tr("This wizard will import the list of sets, cards, and tokens " + "that will be used by Cockatrice." + "\nYou will need to specify a URL or a filename that " + "will be used as a source.")); languageLabel->setText(tr("Language:")); } @@ -226,12 +231,12 @@ void LoadSetsPage::retranslateUi() { setTitle(tr("Source selection")); setSubTitle(tr("Please specify a source for the list of sets and cards. " - "You can specify an url address that will be download or " + "You can specify a URL address that will be downloaded or " "use an existing file from your computer.")); - urlRadioButton->setText(tr("Download url:")); + urlRadioButton->setText(tr("Download URL:")); fileRadioButton->setText(tr("Local file:")); - urlButton->setText(tr("Restore default url")); + urlButton->setText(tr("Restore default URL")); fileButton->setText(tr("Choose file...")); } @@ -272,7 +277,7 @@ bool LoadSetsPage::validatePage() QUrl url = QUrl::fromUserInput(urlLineEdit->text()); if(!url.isValid()) { - QMessageBox::critical(this, tr("Error"), tr("The provided url is not valid.")); + QMessageBox::critical(this, tr("Error"), tr("The provided URL is not valid.")); return false; } @@ -485,6 +490,9 @@ void SaveSetsPage::retranslateUi() "Press \"Save\" to save the imported cards to the Cockatrice database.")); defaultPathCheckBox->setText(tr("Save to the default path (recommended)")); + #ifdef PORTABLE_BUILD + defaultPathCheckBox->setEnabled(false); + #endif } void SaveSetsPage::updateTotalProgress(int cardsImported, int /* setIndex */, const QString &setName) @@ -500,14 +508,25 @@ void SaveSetsPage::updateTotalProgress(int cardsImported, int /* setIndex */, co bool SaveSetsPage::validatePage() { bool ok = false; - const QString dataDir = + QString dataDir; + #ifndef PORTABLE_BUILD #if QT_VERSION < 0x050000 - QDesktopServices::storageLocation(QDesktopServices::DataLocation); + dataDir = QDesktopServices::storageLocation(QDesktopServices::DataLocation); #else - QStandardPaths::standardLocations(QStandardPaths::DataLocation).first(); + dataDir = QStandardPaths::standardLocations(QStandardPaths::DataLocation).first(); #endif - QSettings* settings = new QSettings(this); +#else + dataDir = qApp->applicationDirPath() + "/data"; +#endif + +#ifdef PORTABLE_BUILD + QSettings* settings = new QSettings("settings/global.ini",QSettings::IniFormat,this); + QString defaultPath = "data/cards.xml"; + settings->setValue("paths/carddatabase", defaultPath); +#else + QSettings* settings = new QSettings(settingsCache->getSettingsPath()+"global.ini",QSettings::IniFormat,this); QString defaultPath = settings->value("paths/carddatabase").toString(); +#endif QString windowName = tr("Save card database"); QString fileType = tr("XML; card database (*.xml)"); @@ -518,6 +537,7 @@ bool SaveSetsPage::validatePage() fileName = dataDir + "/cards.xml"; else fileName = QFileDialog::getSaveFileName(this, windowName, dataDir + "/cards.xml", fileType); + settings->setValue("paths/carddatabase", fileName); } else { @@ -585,11 +605,11 @@ void LoadTokensPage::retranslateUi() { setTitle(tr("Tokens source selection")); setSubTitle(tr("Please specify a source for the list of tokens. " - "You can specify an url address that will be download or " + "You can specify a URL address that will be downloaded or " "use an existing file from your computer.")); - urlLabel->setText(tr("Download url:")); - urlButton->setText(tr("Restore default url")); + urlLabel->setText(tr("Download URL:")); + urlButton->setText(tr("Restore default URL")); } void LoadTokensPage::actRestoreDefaultUrl() @@ -606,7 +626,7 @@ bool LoadTokensPage::validatePage() QUrl url = QUrl::fromUserInput(urlLineEdit->text()); if(!url.isValid()) { - QMessageBox::critical(this, tr("Error"), tr("The provided url is not valid.")); + QMessageBox::critical(this, tr("Error"), tr("The provided URL is not valid.")); return false; } @@ -695,19 +715,34 @@ void SaveTokensPage::retranslateUi() "Press \"Save\" to save the imported tokens to the Cockatrice tokens database.")); defaultPathCheckBox->setText(tr("Save to the default path (recommended)")); + #ifdef PORTABLE_BUILD + defaultPathCheckBox->setEnabled(false); + #endif } bool SaveTokensPage::validatePage() { bool ok = false; - const QString dataDir = + QString dataDir; + #ifndef PORTABLE_BUILD #if QT_VERSION < 0x050000 - QDesktopServices::storageLocation(QDesktopServices::DataLocation); + dataDir = QDesktopServices::storageLocation(QDesktopServices::DataLocation); #else - QStandardPaths::standardLocations(QStandardPaths::DataLocation).first(); + dataDir = QStandardPaths::standardLocations(QStandardPaths::DataLocation).first(); #endif - QSettings* settings = new QSettings(this); +#else + dataDir = qApp->applicationDirPath() + "/data"; +#endif + +#ifdef PORTABLE_BUILD + QSettings* settings = new QSettings("settings/global.ini",QSettings::IniFormat,this); + QString defaultPath = "data/tokens.xml"; + settings->setValue("paths/tokendatabase", defaultPath); +#else + QSettings* settings = new QSettings(settingsCache->getSettingsPath()+"global.ini",QSettings::IniFormat,this); QString defaultPath = settings->value("paths/tokendatabase").toString(); +#endif + QString windowName = tr("Save token database"); QString fileType = tr("XML; token database (*.xml)"); diff --git a/oracle/translations/oracle_cs.ts b/oracle/translations/oracle_cs.ts index 41e8e2db..583c42eb 100644 --- a/oracle/translations/oracle_cs.ts +++ b/oracle/translations/oracle_cs.ts @@ -14,7 +14,8 @@ - This wizard will import the list of sets and cards that will be used by Cockatrice.<br/>You will need to specify an url or a filename that will be used as a source, and then choose the wanted sets from the list of the available ones. + This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice. +You will need to specify a URL or a filename that will be used as a source.
@@ -24,22 +25,10 @@ Source selection - - Please specify a source for the list of sets and cards. You can specify an url address that will be download or use an existing file from your computer. - - - - Download url: - - Local file: - - Restore default url - - Choose file... @@ -60,10 +49,6 @@ Error - - The provided url is not valid. - - Downloading (0MB) @@ -112,6 +97,22 @@ The file was retrieved successfully, but it does not contain any sets data. + + Please specify a source for the list of sets and cards. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. + +
LoadTokensPage @@ -119,26 +120,10 @@ Tokens source selection - - Please specify a source for the list of tokens. You can specify an url address that will be download or use an existing file from your computer. - - - - Download url: - - - - Restore default url - - Error - - The provided url is not valid. - - Downloading (0MB) @@ -151,6 +136,22 @@ Network error: %1. + + Please specify a source for the list of tokens. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. + + OracleImporter diff --git a/oracle/translations/oracle_de.ts b/oracle/translations/oracle_de.ts index 524c774d..de2e6afa 100644 --- a/oracle/translations/oracle_de.ts +++ b/oracle/translations/oracle_de.ts @@ -14,9 +14,9 @@ Sprache: - This wizard will import the list of sets and cards that will be used by Cockatrice.<br/>You will need to specify an url or a filename that will be used as a source, and then choose the wanted sets from the list of the available ones. - Dieser Assistent wird eine Liste aller Editionen und Karten, die von Cockatrice genutzt werden, importieren. -Sie müssen dazu eine URL oder einen Dateinamen als Quelle angeben. Danach können Sie aus einer Liste aller verfügbaren Editionen die Gewünschten ausgewählen. + This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice. +You will need to specify a URL or a filename that will be used as a source. + @@ -25,22 +25,10 @@ Sie müssen dazu eine URL oder einen Dateinamen als Quelle angeben. Danach könn Source selection Quellenauswahl - - Please specify a source for the list of sets and cards. You can specify an url address that will be download or use an existing file from your computer. - Bitte geben Sie eine Quelle für die Liste von Editionen und Karten an. Sie können eine URL Adresse zum herunterladen eingeben, oder Sie verwenden eine vorhandene Datei von Ihrem Computer. - - - Download url: - Download URL: - Local file: Lokale Datei: - - Restore default url - Standard-URL wiederherstellen - Choose file... Datei auswählen... @@ -61,10 +49,6 @@ Sie müssen dazu eine URL oder einen Dateinamen als Quelle angeben. Danach könn Error Fehler - - The provided url is not valid. - Die eingegebene URL ist nicht gültig. - Downloading (0MB) Herunterladen (0MB) @@ -113,43 +97,59 @@ Sie müssen dazu eine URL oder einen Dateinamen als Quelle angeben. Danach könn The file was retrieved successfully, but it does not contain any sets data. Die Datei wurde erfolgreich abgerufen, sie enthält aber keine Editionsdaten. + + Please specify a source for the list of sets and cards. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. + + LoadTokensPage Tokens source selection - - - - Please specify a source for the list of tokens. You can specify an url address that will be download or use an existing file from your computer. - - - - Download url: - - - - Restore default url - + Spielstein-Quellenauswahl Error - - - - The provided url is not valid. - + Fehler Downloading (0MB) - + Herunterladen (0MB) Downloading (%1MB) - + Herunterladen (%1MB) Network error: %1. + Netzwerkfehler: %1. + + + Please specify a source for the list of tokens. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. @@ -229,40 +229,42 @@ Sie müssen dazu eine URL oder einen Dateinamen als Quelle angeben. Danach könn SaveTokensPage Tokens imported - + Spielsteine importiert The tokens has been imported. Press "Save" to save the imported tokens to the Cockatrice tokens database. - + Spielsteine wurden importiert. Drücken Sie „Speichern“, um die importierten Spielsteine in der Cockatrice Spielsteindatenbank abzuspeichern. Save to the default path (recommended) - + Im Standardverzeichnis abspeichern (Empfohlen) Save token database - + Spielsteindatenbank speichern XML; token database (*.xml) - + XML; Tokendatenbank (*.xml) Success - + Erfolgreich The token database has been saved successfully to %1 - + Die Spielsteindatenbank wurde erfolgreich im folgendem Pfad gespeichert: +%1 Error - + Fehler The file could not be saved to %1 - + Die Datei konnte nicht gespeichert werden: +%1
diff --git a/oracle/translations/oracle_en.ts b/oracle/translations/oracle_en.ts index 2dd40a6e..edb2cf37 100644 --- a/oracle/translations/oracle_en.ts +++ b/oracle/translations/oracle_en.ts @@ -16,7 +16,8 @@ - This wizard will import the list of sets and cards that will be used by Cockatrice.<br/>You will need to specify an url or a filename that will be used as a source, and then choose the wanted sets from the list of the available ones. + This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice. +You will need to specify a URL or a filename that will be used as a source. @@ -26,22 +27,10 @@ Source selection - - Please specify a source for the list of sets and cards. You can specify an url address that will be download or use an existing file from your computer. - - - - Download url: - - Local file: - - Restore default url - - Choose file... @@ -62,10 +51,6 @@ Error - - The provided url is not valid. - - Downloading (0MB) @@ -114,6 +99,22 @@ The file was retrieved successfully, but it does not contain any sets data. + + Please specify a source for the list of sets and cards. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. + +
LoadTokensPage @@ -121,26 +122,10 @@ Tokens source selection - - Please specify a source for the list of tokens. You can specify an url address that will be download or use an existing file from your computer. - - - - Download url: - - - - Restore default url - - Error - - The provided url is not valid. - - Downloading (0MB) @@ -153,6 +138,22 @@ Network error: %1. + + Please specify a source for the list of tokens. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. + + OracleImporter diff --git a/oracle/translations/oracle_en@pirate.ts b/oracle/translations/oracle_en@pirate.ts new file mode 100644 index 00000000..20c40fb7 --- /dev/null +++ b/oracle/translations/oracle_en@pirate.ts @@ -0,0 +1,380 @@ + + + IntroPage + + Introduction + + + + English + English, arr! (Pirate English) + + + Language: + + + + This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice. +You will need to specify a URL or a filename that will be used as a source. + + + + + LoadSetsPage + + Source selection + + + + Local file: + + + + Choose file... + + + + Load sets file + + + + Sets JSON file (*.json *.zip) + + + + Sets JSON file (*.json) + + + + Error + Cap'n? Thar be a problem + + + Downloading (0MB) + + + + Please choose a file. + + + + Cannot open file '%1'. + + + + Downloading (%1MB) + + + + Network error: %1. + Cap'n? Thar be a problem wi' t' smoke signals: %1. + + + Parsing file + + + + Failed to open Zip archive: %1. + + + + Zip extraction failed: the Zip archive doesn't contain exactly one file. + + + + Zip extraction failed: %1. + + + + Sorry, this version of Oracle does not support zipped files. + + + + Do you want to try to download a fresh copy of the uncompressed file instead? + + + + The file was retrieved successfully, but it does not contain any sets data. + + + + Please specify a source for the list of sets and cards. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. + + + + + LoadTokensPage + + Tokens source selection + + + + Error + Cap'n? Thar be a problem + + + Downloading (0MB) + + + + Downloading (%1MB) + + + + Network error: %1. + Cap'n? Thar be a problem wi' t' smoke signals: %1. + + + Please specify a source for the list of tokens. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. + + + + + OracleImporter + + Dummy set containing tokens + + + + + OracleWizard + + Oracle Importer + + + + Save + + + + + SaveSetsPage + + Sets imported + + + + The following sets has been imported. Press "Save" to save the imported cards to the Cockatrice database. + + + + Save to the default path (recommended) + + + + Error + Cap'n? Thar be a problem + + + No set has been imported. + + + + Import finished: %1 cards. + + + + %1: %2 cards imported + + + + Save card database + + + + XML; card database (*.xml) + + + + Success + + + + The card database has been saved successfully to +%1 + + + + The file could not be saved to %1 + + + + + SaveTokensPage + + Tokens imported + + + + The tokens has been imported. Press "Save" to save the imported tokens to the Cockatrice tokens database. + + + + Save to the default path (recommended) + + + + Save token database + + + + XML; token database (*.xml) + + + + Success + + + + The token database has been saved successfully to +%1 + + + + Error + Cap'n? Thar be a problem + + + The file could not be saved to %1 + + + + + UnZip + + ZIP operation completed successfully. + + + + Failed to initialize or load zlib library. + + + + zlib library error. + Cap'n? Thar be a problem wi' t' zlib library. + + + Unable to create or open file. + + + + Partially corrupted archive. Some files might be extracted. + + + + Corrupted archive. + + + + Wrong password. + + + + No archive has been created yet. + + + + File or directory does not exist. + + + + File read error. + + + + File write error. + + + + File seek error. + + + + Unable to create a directory. + + + + Invalid device. + + + + Invalid or incompatible zip archive. + + + + Inconsistent headers. Archive might be corrupted. + + + + Unknown error. + Cap'n? Thar be a unknown problem wi' t' ship. + + + + Zip + + ZIP operation completed successfully. + + + + Failed to initialize or load zlib library. + + + + zlib library error. + Cap'n? Thar be a problem wi' t' zlib library. + + + Unable to create or open file. + + + + No archive has been created yet. + + + + File or directory does not exist. + + + + File read error. + + + + File write error. + + + + File seek error. + + + + Unknown error. + Cap'n? Thar be a unknown problem wi' t' ship. + + + \ No newline at end of file diff --git a/oracle/translations/oracle_es.ts b/oracle/translations/oracle_es.ts index 549aca0e..9db74e62 100644 --- a/oracle/translations/oracle_es.ts +++ b/oracle/translations/oracle_es.ts @@ -14,8 +14,9 @@ Idioma - This wizard will import the list of sets and cards that will be used by Cockatrice.<br/>You will need to specify an url or a filename that will be used as a source, and then choose the wanted sets from the list of the available ones. - Este asistente importará la lista de los sets y cartas que serán usadas por Cocatrice.<br/>Necesitarás especificar la url o el nombre de archivo que será usado como origen y después elegir los sets deseados de la lista de sets disponibles. + This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice. +You will need to specify a URL or a filename that will be used as a source. + @@ -24,22 +25,10 @@ Source selection Seleccionar origen - - Please specify a source for the list of sets and cards. You can specify an url address that will be download or use an existing file from your computer. - Por favor especifica un origen para la lista de sets y cartas. Puedes especificar la url de donde descargarla o usar un archivo existente de tu ordenador. - - - Download url: - Descargar URL: - Local file: Archivo local: - - Restore default url - Restaurar URL por defecto - Choose file... Elegir archivo... @@ -60,10 +49,6 @@ Error Error - - The provided url is not valid. - La URL entregada no es valida. - Downloading (0MB) Descargando (0MB) @@ -112,6 +97,22 @@ The file was retrieved successfully, but it does not contain any sets data. El archivo fue cargado correctamente pero no contiene datos sobre ningún set. + + Please specify a source for the list of sets and cards. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. + + LoadTokensPage @@ -119,26 +120,10 @@ Tokens source selection - - Please specify a source for the list of tokens. You can specify an url address that will be download or use an existing file from your computer. - - - - Download url: - - - - Restore default url - - Error - - The provided url is not valid. - - Downloading (0MB) @@ -151,6 +136,22 @@ Network error: %1. + + Please specify a source for the list of tokens. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. + + OracleImporter diff --git a/oracle/translations/oracle_et.ts b/oracle/translations/oracle_et.ts index 0c8e3761..6e0b8c99 100644 --- a/oracle/translations/oracle_et.ts +++ b/oracle/translations/oracle_et.ts @@ -14,7 +14,8 @@ Keel: - This wizard will import the list of sets and cards that will be used by Cockatrice.<br/>You will need to specify an url or a filename that will be used as a source, and then choose the wanted sets from the list of the available ones. + This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice. +You will need to specify a URL or a filename that will be used as a source. @@ -24,22 +25,10 @@ Source selection Allika valik - - Please specify a source for the list of sets and cards. You can specify an url address that will be download or use an existing file from your computer. - - - - Download url: - Allalaadimise url: - Local file: Fail arvutis: - - Restore default url - Taasta tavaurl - Choose file... Valige fail.... @@ -60,10 +49,6 @@ Error Viga - - The provided url is not valid. - See url pole kehtiv. - Downloading (0MB) Allalaadimine (0MB) @@ -112,6 +97,22 @@ The file was retrieved successfully, but it does not contain any sets data. Fail on edukalt alla laetud, ent ei sisalda andmeid. + + Please specify a source for the list of sets and cards. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. + +
LoadTokensPage @@ -119,26 +120,10 @@ Tokens source selection - - Please specify a source for the list of tokens. You can specify an url address that will be download or use an existing file from your computer. - - - - Download url: - - - - Restore default url - - Error - - The provided url is not valid. - - Downloading (0MB) @@ -151,6 +136,22 @@ Network error: %1. + + Please specify a source for the list of tokens. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. + + OracleImporter diff --git a/oracle/translations/oracle_fr.ts b/oracle/translations/oracle_fr.ts index d81e6369..92318d03 100644 --- a/oracle/translations/oracle_fr.ts +++ b/oracle/translations/oracle_fr.ts @@ -14,8 +14,9 @@ Langue: - This wizard will import the list of sets and cards that will be used by Cockatrice.<br/>You will need to specify an url or a filename that will be used as a source, and then choose the wanted sets from the list of the available ones. - Cet assistant va importer la liste des éditions et des cartes qui seront utilisées par Cockatrice.<br/>Vous devrez spécifier une url ou un fichier local avec la liste d'édition comme fichier source, puis choisir quelles éditions seront importées parmi la liste proposée. + This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice. +You will need to specify a URL or a filename that will be used as a source. + @@ -24,22 +25,10 @@ Source selection Choix du fichier source - - Please specify a source for the list of sets and cards. You can specify an url address that will be download or use an existing file from your computer. - Choisissez un fichier d'éditions source. Vous pouvez donner une addresse url qui sera téléchargée ou un fichier local. - - - Download url: - URL de téléchargement: - Local file: Fichier local: - - Restore default url - Restaurer l'URL par défaut - Choose file... Choisir un fichier... @@ -60,10 +49,6 @@ Error Erreur - - The provided url is not valid. - L'URL fournit est non valide. - Downloading (0MB) Téléchargement (0MB) @@ -112,6 +97,22 @@ The file was retrieved successfully, but it does not contain any sets data. Le fichier a été trouvé, mais ne contient aucune éditions. + + Please specify a source for the list of sets and cards. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. + + LoadTokensPage @@ -119,36 +120,36 @@ Tokens source selection - - Please specify a source for the list of tokens. You can specify an url address that will be download or use an existing file from your computer. - - - - Download url: - - - - Restore default url - - Error - - - - The provided url is not valid. - + Érreur Downloading (0MB) - + Téléchargement (0MB) Downloading (%1MB) - + Téléchargement (%1MB) Network error: %1. + Erreur réseau : %1. + + + Please specify a source for the list of tokens. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. @@ -235,19 +236,19 @@ Save to the default path (recommended) - + Sauvergarder au chemin par défaut (recommendé) Save token database - + Sauvegarder la base des jetons XML; token database (*.xml) - + XML; bases de données des jetons (*.xml) Success - + Réussite The token database has been saved successfully to @@ -256,7 +257,7 @@ Error - + Érreur The file could not be saved to %1 diff --git a/oracle/translations/oracle_it.ts b/oracle/translations/oracle_it.ts index e7f5e912..a3b4d110 100644 --- a/oracle/translations/oracle_it.ts +++ b/oracle/translations/oracle_it.ts @@ -14,8 +14,9 @@ Lingua: - This wizard will import the list of sets and cards that will be used by Cockatrice.<br/>You will need to specify an url or a filename that will be used as a source, and then choose the wanted sets from the list of the available ones. - Questo wizard importerà la lista dei set e delle carte che verranno usate da Cockatrice.<br/>Dovrai specificare un indirizzo url o il nome di un file che verrà utilizzato come sorgente, e poi selezionare i set dalla lista di quelli disponibili. + This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice. +You will need to specify a URL or a filename that will be used as a source. +
@@ -24,22 +25,10 @@ Source selection Selezione sorgente - - Please specify a source for the list of sets and cards. You can specify an url address that will be download or use an existing file from your computer. - Specifica una sorgente per la lista dei set e delle carte. Puoi specificare un indirizzo url da cui scaricare il file o alternativamente usare un file già presente nel tuo computer. - - - Download url: - Indirizzo download: - Local file: File nel pc: - - Restore default url - Usa l'indirizzo predefinito - Choose file... Scegli file... @@ -60,10 +49,6 @@ Error Errore - - The provided url is not valid. - L'indirizzo specificato non è valido. - Downloading (0MB) Scaricamento (0MB) @@ -112,6 +97,22 @@ The file was retrieved successfully, but it does not contain any sets data. Il file è stato analizzato correttamente, ma non contiene i dati di nessun set. + + Please specify a source for the list of sets and cards. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. + + LoadTokensPage @@ -119,26 +120,10 @@ Tokens source selection Selezione sorgente pedine - - Please specify a source for the list of tokens. You can specify an url address that will be download or use an existing file from your computer. - Specifica una sorgente per la lista delle pedine. Puoi specificare un indirizzo url da cui scaricare il file o alternativamente usare un file già presente nel tuo computer. - - - Download url: - Indirizzo download: - - - Restore default url - Usa l'indirizzo predefinito - Error Errore - - The provided url is not valid. - L'indirizzo specificato non è valido. - Downloading (0MB) Scaricamento (0MB) @@ -151,6 +136,22 @@ Network error: %1. Errore di rete: %1 + + Please specify a source for the list of tokens. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. + + OracleImporter diff --git a/oracle/translations/oracle_ja.ts b/oracle/translations/oracle_ja.ts index 780b4b4c..76e549d1 100644 --- a/oracle/translations/oracle_ja.ts +++ b/oracle/translations/oracle_ja.ts @@ -14,9 +14,9 @@ 言語: - This wizard will import the list of sets and cards that will be used by Cockatrice.<br/>You will need to specify an url or a filename that will be used as a source, and then choose the wanted sets from the list of the available ones. - このウィザードでは、Cockatriceが使用するカードセットやカードのリストをインポートします。 -ソースとして使用するURLまたはファイルを指定した後、利用可能リストから入れたいセットを選択します。 + This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice. +You will need to specify a URL or a filename that will be used as a source. + @@ -25,22 +25,10 @@ Source selection ソース選択 - - Please specify a source for the list of sets and cards. You can specify an url address that will be download or use an existing file from your computer. - カードセットやカードのリストのソースを指定してください。ダウンロード可能なURLか、コンピューターにあるソースファイルを指定することができます。 - - - Download url: - ダウンロードURL: - Local file: ローカルファイル: - - Restore default url - デフォルトのURLを復元 - Choose file... ファイルを選択... @@ -61,10 +49,6 @@ Error エラー - - The provided url is not valid. - 指定されたURLは無効です。 - Downloading (0MB) ダウンロード中 (0MB) @@ -113,43 +97,59 @@ The file was retrieved successfully, but it does not contain any sets data. ファイルは正常に取得されたが、カードセットのデータが含まれていませんでした。 + + Please specify a source for the list of sets and cards. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. + + LoadTokensPage Tokens source selection - - - - Please specify a source for the list of tokens. You can specify an url address that will be download or use an existing file from your computer. - - - - Download url: - - - - Restore default url - + トークンのソース選択 Error - - - - The provided url is not valid. - + エラー Downloading (0MB) - + ダウンロード中 (0MB) Downloading (%1MB) - + ダウンロード中 (%1MB) Network error: %1. + ネットワークエラー: %1。 + + + Please specify a source for the list of tokens. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. @@ -228,40 +228,41 @@ SaveTokensPage Tokens imported - + トークンインポート The tokens has been imported. Press "Save" to save the imported tokens to the Cockatrice tokens database. - + トークンがインポートされました。”保存”をクリックするとインポートしたトークンをCockatriceデータベースに保存します。 Save to the default path (recommended) - + デフォルトのパスに保存 (推奨) Save token database - + トークンデータベースを保存 XML; token database (*.xml) - + XML; token database (*.xml) Success - + 完了 The token database has been saved successfully to %1 - + トークンデータベースは以下に保存されました: +%1 Error - + エラー The file could not be saved to %1 - + %1に保存できませんでした。
diff --git a/oracle/translations/oracle_ko.ts b/oracle/translations/oracle_ko.ts index 28a6a0bc..0fdb1f4a 100644 --- a/oracle/translations/oracle_ko.ts +++ b/oracle/translations/oracle_ko.ts @@ -14,8 +14,9 @@ 언어 - This wizard will import the list of sets and cards that will be used by Cockatrice.<br/>You will need to specify an url or a filename that will be used as a source, and then choose the wanted sets from the list of the available ones. - 오라클은 코카트리스에서 사용할 판본의 목록과 카드들의 정보를 갱신하는 프로그램입니다.<br/>판본 목록 파일이 있는 웹 주소나 파일을 입력하신 후에 읽어온 목록에서 원하는 판본을 선택해 불러올 수 있습니다. + This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice. +You will need to specify a URL or a filename that will be used as a source. + @@ -24,23 +25,10 @@ Source selection 판본 목록 파일 주소 입력 - - Please specify a source for the list of sets and cards. You can specify an url address that will be download or use an existing file from your computer. - 판본 목록 및 카드 정보가 들어있는 파일의 위치를 입력해 주세요. -다운로드 할 수 있는 웹 주소나 컴퓨터에 저장되어 있는 파일을 선택 할 수 있습니다. - - - Download url: - 웹 주소: - Local file: 파일 위치: - - Restore default url - 기본 주소로 복원 - Choose file... 파일 선택... @@ -61,10 +49,6 @@ Error 오류 - - The provided url is not valid. - 잘못된 주소를 입력하셨습니다. - Downloading (0MB) 다운로드 중 (0MB) @@ -113,43 +97,59 @@ The file was retrieved successfully, but it does not contain any sets data. 파일을 성공적으로 다운로드 하였으나 판본 정보가 들어있지 않습니다. + + Please specify a source for the list of sets and cards. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. + + LoadTokensPage Tokens source selection - - - - Please specify a source for the list of tokens. You can specify an url address that will be download or use an existing file from your computer. - - - - Download url: - - - - Restore default url - + 토큰 파일 주소 입력 Error - - - - The provided url is not valid. - + 오류 Downloading (0MB) - + 다운로드 중 (0MB) Downloading (%1MB) - + 다운로드 중 (%1MB) Network error: %1. + 네트워크 오류 : %1. + + + Please specify a source for the list of tokens. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. @@ -229,40 +229,42 @@ SaveTokensPage Tokens imported - + 토큰 불러오기 완료 The tokens has been imported. Press "Save" to save the imported tokens to the Cockatrice tokens database. - + 토큰 파일을 불러왔습니다. +"저장" 버튼을 누르면 코카트리스에서 토큰 파일을 불러옵니다. Save to the default path (recommended) - + 기본 경로에 저장 (권장) Save token database - + 토큰 파일 저장 XML; token database (*.xml) - + 토큰 정보 XML 파일 (*.xml) Success - + 성공 The token database has been saved successfully to %1 - + 토큰 정보 파일을 다음 위치에 저장했습니다: +%1 Error - + 오류 The file could not be saved to %1 - + 파일을 %1에 저장 할 수 없습니다.
diff --git a/oracle/translations/oracle_nb.ts b/oracle/translations/oracle_nb.ts index 695255d3..25457ec0 100644 --- a/oracle/translations/oracle_nb.ts +++ b/oracle/translations/oracle_nb.ts @@ -14,7 +14,8 @@ - This wizard will import the list of sets and cards that will be used by Cockatrice.<br/>You will need to specify an url or a filename that will be used as a source, and then choose the wanted sets from the list of the available ones. + This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice. +You will need to specify a URL or a filename that will be used as a source. @@ -24,22 +25,10 @@ Source selection - - Please specify a source for the list of sets and cards. You can specify an url address that will be download or use an existing file from your computer. - - - - Download url: - - Local file: - - Restore default url - - Choose file... @@ -60,10 +49,6 @@ Error - - The provided url is not valid. - - Downloading (0MB) @@ -112,6 +97,22 @@ The file was retrieved successfully, but it does not contain any sets data. + + Please specify a source for the list of sets and cards. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. + +
LoadTokensPage @@ -119,26 +120,10 @@ Tokens source selection - - Please specify a source for the list of tokens. You can specify an url address that will be download or use an existing file from your computer. - - - - Download url: - - - - Restore default url - - Error - - The provided url is not valid. - - Downloading (0MB) @@ -151,6 +136,22 @@ Network error: %1. + + Please specify a source for the list of tokens. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. + + OracleImporter diff --git a/oracle/translations/oracle_nl.ts b/oracle/translations/oracle_nl.ts index b6e5337b..d8d263a8 100644 --- a/oracle/translations/oracle_nl.ts +++ b/oracle/translations/oracle_nl.ts @@ -14,9 +14,9 @@ Taal: - This wizard will import the list of sets and cards that will be used by Cockatrice.<br/>You will need to specify an url or a filename that will be used as a source, and then choose the wanted sets from the list of the available ones. - Deze wizard importeert de lijst van sets en kaarten die gebruikt zullen worden door Cockatrice. -Voer een URL of bestandsnaam in als bron, en selecteer vervolgens uit de lijst van beschikbare sets. + This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice. +You will need to specify a URL or a filename that will be used as a source. + @@ -25,22 +25,10 @@ Voer een URL of bestandsnaam in als bron, en selecteer vervolgens uit de lijst v Source selection Bron selectie - - Please specify a source for the list of sets and cards. You can specify an url address that will be download or use an existing file from your computer. - Selecteer een bron voor de lijst van kaarten en sets. Gebruik een URL om te downloaden of een bestaand bestand op uw computer. - - - Download url: - Download URL: - Local file: Lokaal bestand - - Restore default url - Herstel standaard URL - Choose file... Bestand kiezen... @@ -61,10 +49,6 @@ Voer een URL of bestandsnaam in als bron, en selecteer vervolgens uit de lijst v Error Fout - - The provided url is not valid. - De ingevoerde URL is niet geldig. - Downloading (0MB) Downloaden (0MB) @@ -113,6 +97,22 @@ Voer een URL of bestandsnaam in als bron, en selecteer vervolgens uit de lijst v The file was retrieved successfully, but it does not contain any sets data. Het bestand is succesvol binnengehaald, maar bevat geen set data. + + Please specify a source for the list of sets and cards. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. + + LoadTokensPage @@ -120,26 +120,10 @@ Voer een URL of bestandsnaam in als bron, en selecteer vervolgens uit de lijst v Tokens source selection - - Please specify a source for the list of tokens. You can specify an url address that will be download or use an existing file from your computer. - - - - Download url: - - - - Restore default url - - Error - - The provided url is not valid. - - Downloading (0MB) @@ -152,6 +136,22 @@ Voer een URL of bestandsnaam in als bron, en selecteer vervolgens uit de lijst v Network error: %1. + + Please specify a source for the list of tokens. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. + + OracleImporter diff --git a/oracle/translations/oracle_pl.ts b/oracle/translations/oracle_pl.ts index 66999d8e..3c60bac9 100644 --- a/oracle/translations/oracle_pl.ts +++ b/oracle/translations/oracle_pl.ts @@ -14,8 +14,9 @@ Język: - This wizard will import the list of sets and cards that will be used by Cockatrice.<br/>You will need to specify an url or a filename that will be used as a source, and then choose the wanted sets from the list of the available ones. - Ten kreator zaimportuje listę wszystkich dodatków oraz kart, których będzie można użyć w Cockatrice. Należy wyszczególnić plik lub jego adres url, który posłuży za źródło, a następnie wybrać pożądane dodatki z listy dostępnych. + This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice. +You will need to specify a URL or a filename that will be used as a source. + @@ -24,22 +25,10 @@ Source selection Wybór źródła - - Please specify a source for the list of sets and cards. You can specify an url address that will be download or use an existing file from your computer. - Proszę wybrać źródło dla listy dodatków i kart. Możesz użyć pliku z dysku lub podać adres url, z którego lista zostanie pobrana. - - - Download url: - Adres url: - Local file: Plik lokalny: - - Restore default url - Przywróć domyślny adres - Choose file... Wybierz plik… @@ -60,10 +49,6 @@ Error Błąd - - The provided url is not valid. - Podany adres jest nieprawidłowy - Downloading (0MB) Pobieranie (0MB) @@ -112,6 +97,22 @@ The file was retrieved successfully, but it does not contain any sets data. Plik został pobrany z powodzeniem, ale nie zawiera informacji o dodatkach. + + Please specify a source for the list of sets and cards. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. + + LoadTokensPage @@ -119,26 +120,10 @@ Tokens source selection - - Please specify a source for the list of tokens. You can specify an url address that will be download or use an existing file from your computer. - - - - Download url: - - - - Restore default url - - Error - - The provided url is not valid. - - Downloading (0MB) @@ -151,6 +136,22 @@ Network error: %1. + + Please specify a source for the list of tokens. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. + + OracleImporter diff --git a/oracle/translations/oracle_pt.ts b/oracle/translations/oracle_pt.ts index 2667f3da..91118a31 100644 --- a/oracle/translations/oracle_pt.ts +++ b/oracle/translations/oracle_pt.ts @@ -14,7 +14,8 @@ Língua: - This wizard will import the list of sets and cards that will be used by Cockatrice.<br/>You will need to specify an url or a filename that will be used as a source, and then choose the wanted sets from the list of the available ones. + This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice. +You will need to specify a URL or a filename that will be used as a source. @@ -24,22 +25,10 @@ Source selection Selecção da fonte - - Please specify a source for the list of sets and cards. You can specify an url address that will be download or use an existing file from your computer. - - - - Download url: - - Local file: Ficheiro local: - - Restore default url - - Choose file... Escolher ficheiro... @@ -60,10 +49,6 @@ Error Erro - - The provided url is not valid. - O url providenciado não é válido. - Downloading (0MB) A efectuar download (0MB) @@ -78,7 +63,7 @@ Downloading (%1MB) - + A efectuar download (%1MB) Network error: %1. @@ -112,6 +97,22 @@ The file was retrieved successfully, but it does not contain any sets data. + + Please specify a source for the list of sets and cards. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. + +
LoadTokensPage @@ -119,36 +120,36 @@ Tokens source selection - - Please specify a source for the list of tokens. You can specify an url address that will be download or use an existing file from your computer. - - - - Download url: - - - - Restore default url - - Error - - - - The provided url is not valid. - + Erro Downloading (0MB) - + A efectuar download (0MB) Downloading (%1MB) - + A efectuar download (%1MB) Network error: %1. + Erro da rede: %1. + + + Please specify a source for the list of tokens. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. @@ -246,7 +247,7 @@ Success - + Sucesso The token database has been saved successfully to @@ -255,7 +256,7 @@ Error - + Erro The file could not be saved to %1 @@ -353,7 +354,7 @@ No archive has been created yet. - + Ainda não foi criado nenhum arquivo File or directory does not exist. diff --git a/oracle/translations/oracle_pt_BR.ts b/oracle/translations/oracle_pt_BR.ts index 3ea61640..10516f0f 100644 --- a/oracle/translations/oracle_pt_BR.ts +++ b/oracle/translations/oracle_pt_BR.ts @@ -14,8 +14,9 @@ Língua: - This wizard will import the list of sets and cards that will be used by Cockatrice.<br/>You will need to specify an url or a filename that will be used as a source, and then choose the wanted sets from the list of the available ones. - Este assistente importará a lista de expansões e cartas que serão usadas pelo Cockatrice.<br/> Você precisará especificar um endereço eletrônico ou um arquivo que será usado como origem, e então escolhe as expansões que deseja da lista de disponíveis. + This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice. +You will need to specify a URL or a filename that will be used as a source. +
@@ -24,22 +25,10 @@ Source selection Selecione a origem - - Please specify a source for the list of sets and cards. You can specify an url address that will be download or use an existing file from your computer. - Por favor, especifique uma origem para a lista de expansão e cartas. Você pode especificar um endereço web para baixar ou use um arquivo existente em seu computador. - - - Download url: - Endereço para download - Local file: Arquivo local: - - Restore default url - Restaure o endereço padrão. - Choose file... Escolher arquivo... @@ -60,10 +49,6 @@ Error Erro - - The provided url is not valid. - O endereço web não é válido. - Downloading (0MB) Baixando (0MB) @@ -112,6 +97,22 @@ The file was retrieved successfully, but it does not contain any sets data. O arquivo foi recebido com sucesso, mas não contém qualquer informação de expansão. + + Please specify a source for the list of sets and cards. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. + + LoadTokensPage @@ -119,26 +120,10 @@ Tokens source selection - - Please specify a source for the list of tokens. You can specify an url address that will be download or use an existing file from your computer. - - - - Download url: - - - - Restore default url - - Error - - The provided url is not valid. - - Downloading (0MB) @@ -151,6 +136,22 @@ Network error: %1. + + Please specify a source for the list of tokens. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. + + OracleImporter diff --git a/oracle/translations/oracle_ru.ts b/oracle/translations/oracle_ru.ts index 4bdcf89f..a3e32d78 100644 --- a/oracle/translations/oracle_ru.ts +++ b/oracle/translations/oracle_ru.ts @@ -14,7 +14,8 @@ - This wizard will import the list of sets and cards that will be used by Cockatrice.<br/>You will need to specify an url or a filename that will be used as a source, and then choose the wanted sets from the list of the available ones. + This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice. +You will need to specify a URL or a filename that will be used as a source. @@ -24,22 +25,10 @@ Source selection - - Please specify a source for the list of sets and cards. You can specify an url address that will be download or use an existing file from your computer. - - - - Download url: - - Local file: - - Restore default url - - Choose file... @@ -60,10 +49,6 @@ Error - - The provided url is not valid. - - Downloading (0MB) @@ -112,6 +97,22 @@ The file was retrieved successfully, but it does not contain any sets data. + + Please specify a source for the list of sets and cards. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. + +
LoadTokensPage @@ -119,26 +120,10 @@ Tokens source selection - - Please specify a source for the list of tokens. You can specify an url address that will be download or use an existing file from your computer. - - - - Download url: - - - - Restore default url - - Error - - The provided url is not valid. - - Downloading (0MB) @@ -151,6 +136,22 @@ Network error: %1. + + Please specify a source for the list of tokens. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. + + OracleImporter diff --git a/oracle/translations/oracle_sv.ts b/oracle/translations/oracle_sv.ts index abce6c2e..432978fe 100644 --- a/oracle/translations/oracle_sv.ts +++ b/oracle/translations/oracle_sv.ts @@ -14,7 +14,8 @@ - This wizard will import the list of sets and cards that will be used by Cockatrice.<br/>You will need to specify an url or a filename that will be used as a source, and then choose the wanted sets from the list of the available ones. + This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice. +You will need to specify a URL or a filename that will be used as a source. @@ -24,22 +25,10 @@ Source selection - - Please specify a source for the list of sets and cards. You can specify an url address that will be download or use an existing file from your computer. - - - - Download url: - - Local file: - - Restore default url - - Choose file... @@ -60,10 +49,6 @@ Error - - The provided url is not valid. - - Downloading (0MB) @@ -112,6 +97,22 @@ The file was retrieved successfully, but it does not contain any sets data. + + Please specify a source for the list of sets and cards. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. + +
LoadTokensPage @@ -119,26 +120,10 @@ Tokens source selection - - Please specify a source for the list of tokens. You can specify an url address that will be download or use an existing file from your computer. - - - - Download url: - - - - Restore default url - - Error - - The provided url is not valid. - - Downloading (0MB) @@ -151,6 +136,22 @@ Network error: %1. + + Please specify a source for the list of tokens. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. + + OracleImporter diff --git a/oracle/translations/oracle_uk.ts b/oracle/translations/oracle_uk.ts index 3a9bab1d..ac24e2fe 100644 --- a/oracle/translations/oracle_uk.ts +++ b/oracle/translations/oracle_uk.ts @@ -14,7 +14,8 @@ - This wizard will import the list of sets and cards that will be used by Cockatrice.<br/>You will need to specify an url or a filename that will be used as a source, and then choose the wanted sets from the list of the available ones. + This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice. +You will need to specify a URL or a filename that will be used as a source. @@ -24,22 +25,10 @@ Source selection - - Please specify a source for the list of sets and cards. You can specify an url address that will be download or use an existing file from your computer. - - - - Download url: - - Local file: - - Restore default url - - Choose file... @@ -60,10 +49,6 @@ Error - - The provided url is not valid. - - Downloading (0MB) @@ -112,6 +97,22 @@ The file was retrieved successfully, but it does not contain any sets data. + + Please specify a source for the list of sets and cards. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. + +
LoadTokensPage @@ -119,26 +120,10 @@ Tokens source selection - - Please specify a source for the list of tokens. You can specify an url address that will be download or use an existing file from your computer. - - - - Download url: - - - - Restore default url - - Error - - The provided url is not valid. - - Downloading (0MB) @@ -151,6 +136,22 @@ Network error: %1. + + Please specify a source for the list of tokens. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. + + OracleImporter diff --git a/oracle/translations/oracle_zh-Hans.ts b/oracle/translations/oracle_zh-Hans.ts index 734372d7..e7eb2103 100644 --- a/oracle/translations/oracle_zh-Hans.ts +++ b/oracle/translations/oracle_zh-Hans.ts @@ -14,7 +14,8 @@ - This wizard will import the list of sets and cards that will be used by Cockatrice.<br/>You will need to specify an url or a filename that will be used as a source, and then choose the wanted sets from the list of the available ones. + This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice. +You will need to specify a URL or a filename that will be used as a source. @@ -24,22 +25,10 @@ Source selection - - Please specify a source for the list of sets and cards. You can specify an url address that will be download or use an existing file from your computer. - - - - Download url: - - Local file: - - Restore default url - - Choose file... @@ -60,10 +49,6 @@ Error - - The provided url is not valid. - - Downloading (0MB) @@ -112,6 +97,22 @@ The file was retrieved successfully, but it does not contain any sets data. + + Please specify a source for the list of sets and cards. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. + +
LoadTokensPage @@ -119,26 +120,10 @@ Tokens source selection - - Please specify a source for the list of tokens. You can specify an url address that will be download or use an existing file from your computer. - - - - Download url: - - - - Restore default url - - Error - - The provided url is not valid. - - Downloading (0MB) @@ -151,6 +136,22 @@ Network error: %1. + + Please specify a source for the list of tokens. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. + + OracleImporter diff --git a/oracle/translations/oracle_zh-Hant.ts b/oracle/translations/oracle_zh-Hant.ts new file mode 100644 index 00000000..2480716d --- /dev/null +++ b/oracle/translations/oracle_zh-Hant.ts @@ -0,0 +1,380 @@ + + + IntroPage + + Introduction + + + + English + 繁體中文 (Chinese Traditional) + + + Language: + + + + This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice. +You will need to specify a URL or a filename that will be used as a source. + + + + + LoadSetsPage + + Source selection + + + + Local file: + + + + Choose file... + + + + Load sets file + + + + Sets JSON file (*.json *.zip) + + + + Sets JSON file (*.json) + + + + Error + + + + Downloading (0MB) + + + + Please choose a file. + + + + Cannot open file '%1'. + + + + Downloading (%1MB) + + + + Network error: %1. + + + + Parsing file + + + + Failed to open Zip archive: %1. + + + + Zip extraction failed: the Zip archive doesn't contain exactly one file. + + + + Zip extraction failed: %1. + + + + Sorry, this version of Oracle does not support zipped files. + + + + Do you want to try to download a fresh copy of the uncompressed file instead? + + + + The file was retrieved successfully, but it does not contain any sets data. + + + + Please specify a source for the list of sets and cards. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. + + + + + LoadTokensPage + + Tokens source selection + + + + Error + + + + Downloading (0MB) + + + + Downloading (%1MB) + + + + Network error: %1. + + + + Please specify a source for the list of tokens. You can specify a URL address that will be downloaded or use an existing file from your computer. + + + + Download URL: + + + + Restore default URL + + + + The provided URL is not valid. + + + + + OracleImporter + + Dummy set containing tokens + + + + + OracleWizard + + Oracle Importer + + + + Save + + + + + SaveSetsPage + + Sets imported + + + + The following sets has been imported. Press "Save" to save the imported cards to the Cockatrice database. + + + + Save to the default path (recommended) + + + + Error + + + + No set has been imported. + + + + Import finished: %1 cards. + + + + %1: %2 cards imported + + + + Save card database + + + + XML; card database (*.xml) + + + + Success + + + + The card database has been saved successfully to +%1 + + + + The file could not be saved to %1 + + + + + SaveTokensPage + + Tokens imported + + + + The tokens has been imported. Press "Save" to save the imported tokens to the Cockatrice tokens database. + + + + Save to the default path (recommended) + + + + Save token database + + + + XML; token database (*.xml) + + + + Success + + + + The token database has been saved successfully to +%1 + + + + Error + + + + The file could not be saved to %1 + + + + + UnZip + + ZIP operation completed successfully. + + + + Failed to initialize or load zlib library. + + + + zlib library error. + + + + Unable to create or open file. + + + + Partially corrupted archive. Some files might be extracted. + + + + Corrupted archive. + + + + Wrong password. + + + + No archive has been created yet. + + + + File or directory does not exist. + + + + File read error. + + + + File write error. + + + + File seek error. + + + + Unable to create a directory. + + + + Invalid device. + + + + Invalid or incompatible zip archive. + + + + Inconsistent headers. Archive might be corrupted. + + + + Unknown error. + + + + + Zip + + ZIP operation completed successfully. + + + + Failed to initialize or load zlib library. + + + + zlib library error. + + + + Unable to create or open file. + + + + No archive has been created yet. + + + + File or directory does not exist. + + + + File read error. + + + + File write error. + + + + File seek error. + + + + Unknown error. + + + + \ No newline at end of file diff --git a/servatrice/CMakeLists.txt b/servatrice/CMakeLists.txt index 6fa529ff..047a3f53 100644 --- a/servatrice/CMakeLists.txt +++ b/servatrice/CMakeLists.txt @@ -194,3 +194,8 @@ Translations = Resources/translations\") fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/servatrice.exe\" \"\${QTPLUGINS}\" \"${QT_LIBRARY_DIR}\") " COMPONENT Runtime) endif() +#Compile a portable version, default off +option(PORTABLE "portable build" OFF) +IF(PORTABLE) +add_definitions(-DPORTABLE_BUILD) +endif() diff --git a/servatrice/migrations/servatrice_0007_to_0008.sql b/servatrice/migrations/servatrice_0007_to_0008.sql new file mode 100644 index 00000000..0b2c1566 --- /dev/null +++ b/servatrice/migrations/servatrice_0007_to_0008.sql @@ -0,0 +1,16 @@ +-- Servatrice db migration from version 7 to version 8 + +CREATE TABLE IF NOT EXISTS `cockatrice_user_analytics` ( + `id` int(7) unsigned zerofill NOT NULL, + `client_ver` varchar(35) NOT NULL, + `last_login` datetime NOT NULL, + `notes` varchar(255) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +INSERT INTO `cockatrice_user_analytics` (id, last_login) SELECT id, last_login FROM `cockatrice_users` WHERE last_login != ''; + +ALTER TABLE `cockatrice_users` + DROP COLUMN last_login; + +UPDATE cockatrice_schema_version SET version=8 WHERE version=7; diff --git a/servatrice/scripts/mk_pypb.sh b/servatrice/scripts/mk_pypb.sh new file mode 100755 index 00000000..e11d237d --- /dev/null +++ b/servatrice/scripts/mk_pypb.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +SRC_DIR=../../common/pb/ +DST_DIR=./pypb + +rm -rf "$DST_DIR" +mkdir -p "$DST_DIR" +protoc -I=$SRC_DIR --python_out=$DST_DIR $SRC_DIR/*.proto +touch "$DST_DIR/__init__.py" + diff --git a/servatrice/scripts/register.py b/servatrice/scripts/register.py new file mode 100755 index 00000000..427c9e72 --- /dev/null +++ b/servatrice/scripts/register.py @@ -0,0 +1,73 @@ +#!/usr/bin/env python + +import socket, sys, struct, time + +from pypb.server_message_pb2 import ServerMessage +from pypb.session_commands_pb2 import Command_Register as Reg +from pypb.commands_pb2 import CommandContainer as Cmd +from pypb.event_server_identification_pb2 import Event_ServerIdentification as ServerId +from pypb.response_pb2 import Response + +HOST = "localhost" +PORT = 4747 + +CMD_ID = 1 + +def build_reg(): + global CMD_ID + cmd = Cmd() + sc = cmd.session_command.add() + + reg = sc.Extensions[Reg.ext] + reg.user_name = "testUser" + reg.email = "test@example.com" + reg.password = "password" + + cmd.cmd_id = CMD_ID + CMD_ID += 1 + return cmd + +def send(msg): + packed = struct.pack('>I', len(msg)) + sock.sendall(packed) + sock.sendall(msg) + +def print_resp(resp): + print "<<<" + print repr(resp) + m = ServerMessage() + m.ParseFromString(bytes(resp)) + print m + +def recv(sock): + print "< header" + header = sock.recv(4) + msg_size = struct.unpack('>I', header)[0] + print "< ", msg_size + raw_msg = sock.recv(msg_size) + print_resp(raw_msg) + +if __name__ == "__main__": + address = (HOST, PORT) + sock = socket.socket() + + print "Connecting to server ", address + sock.connect(address) + + # hack for old xml clients - server expects this and discards first message + print ">>> xml hack" + xmlClientHack = Cmd().SerializeToString() + send(xmlClientHack) + print sock.recv(60) + + recv(sock) + + print ">>> register" + r = build_reg() + print r + msg = r.SerializeToString() + send(msg) + recv(sock) + + print "Done" + diff --git a/servatrice/servatrice.ini.example b/servatrice/servatrice.ini.example index ce57df53..842fb032 100644 --- a/servatrice/servatrice.ini.example +++ b/servatrice/servatrice.ini.example @@ -50,6 +50,12 @@ max_player_inactivity_time=15 ' require that clients report the client ID in order to log into the server. Default is false requireclientid=false +; You can limit the types of clients that connect to the server by requiring different features be available +; on the client. This setting can contain a comma-seperated list of features. if any of the features +; listed in this line are not available on the client the client will be denied access to the server upon +; attempting to log in. Example: "client_id,client_ver" +requiredfeatures="" + [authentication] ; Servatrice can authenticate users connecting. It currently supports 3 different authentication methods: diff --git a/servatrice/servatrice.sql b/servatrice/servatrice.sql index 9a6173a5..2c4d0b67 100644 --- a/servatrice/servatrice.sql +++ b/servatrice/servatrice.sql @@ -20,7 +20,7 @@ CREATE TABLE IF NOT EXISTS `cockatrice_schema_version` ( PRIMARY KEY (`version`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -INSERT INTO cockatrice_schema_version VALUES(7); +INSERT INTO cockatrice_schema_version VALUES(8); CREATE TABLE IF NOT EXISTS `cockatrice_decklist_files` ( `id` int(7) unsigned zerofill NOT NULL auto_increment, @@ -84,7 +84,6 @@ CREATE TABLE IF NOT EXISTS `cockatrice_users` ( `active` tinyint(1) NOT NULL, `token` binary(16) NOT NULL, `clientid` varchar(15) NOT NULL, - `last_login` datetime NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`), KEY `token` (`token`), @@ -214,3 +213,11 @@ CREATE TABLE IF NOT EXISTS `cockatrice_log` ( CREATE TABLE IF NOT EXISTS `cockatrice_activation_emails` ( `name` varchar(35) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `cockatrice_user_analytics` ( + `id` int(7) unsigned zerofill NOT NULL, + `client_ver` varchar(35) NOT NULL, + `last_login` datetime NOT NULL, + `notes` varchar(255) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; diff --git a/servatrice/src/main.cpp b/servatrice/src/main.cpp index 499b468d..d19ebb66 100644 --- a/servatrice/src/main.cpp +++ b/servatrice/src/main.cpp @@ -198,6 +198,7 @@ int main(int argc, char *argv[]) #else qInstallMessageHandler(myMessageOutput); #endif + retval = app.exec(); std::cerr << "Server quit." << std::endl; diff --git a/servatrice/src/servatrice.cpp b/servatrice/src/servatrice.cpp index 701902f8..f1f29191 100644 --- a/servatrice/src/servatrice.cpp +++ b/servatrice/src/servatrice.cpp @@ -38,6 +38,7 @@ #include "pb/event_server_message.pb.h" #include "pb/event_server_shutdown.pb.h" #include "pb/event_connection_closed.pb.h" +#include "featureset.h" Servatrice_GameServer::Servatrice_GameServer(Servatrice *_server, int _numberPools, const QSqlDatabase &_sqlDatabase, QObject *parent) : QTcpServer(parent), @@ -179,6 +180,16 @@ bool Servatrice::initServer() if (registrationEnabled) qDebug() << "Require email address to register: " << requireEmailForRegistration; + FeatureSet features; + features.initalizeFeatureList(serverRequiredFeatureList); + requiredFeatures = settingsCache->value("server/requiredfeatures","").toString(); + QStringList listReqFeatures = requiredFeatures.split(",", QString::SkipEmptyParts); + if (!listReqFeatures.isEmpty()) + foreach(QString reqFeature, listReqFeatures) + features.enableRequiredFeature(serverRequiredFeatureList,reqFeature); + + qDebug() << "Required client features: " << serverRequiredFeatureList; + QString dbTypeStr = settingsCache->value("database/type").toString(); if (dbTypeStr == "mysql") databaseType = DatabaseMySql; diff --git a/servatrice/src/servatrice.h b/servatrice/src/servatrice.h index 4e4a74b2..ad42497b 100644 --- a/servatrice/src/servatrice.h +++ b/servatrice/src/servatrice.h @@ -30,6 +30,7 @@ #include #include "server.h" + Q_DECLARE_METATYPE(QSqlDatabase) class QSqlQuery; @@ -41,6 +42,7 @@ class Servatrice_ConnectionPool; class Servatrice_DatabaseInterface; class ServerSocketInterface; class IslInterface; +class FeatureSet; class Servatrice_GameServer : public QTcpServer { Q_OBJECT @@ -109,6 +111,8 @@ private: mutable QMutex loginMessageMutex; QString loginMessage; QString dbPrefix; + QString requiredFeatures; + QMap serverRequiredFeatureList; Servatrice_DatabaseInterface *servatriceDatabaseInterface; int serverId; int uptime; @@ -134,8 +138,10 @@ public: Servatrice(QObject *parent = 0); ~Servatrice(); bool initServer(); + QMap getServerRequiredFeatureList() const { return serverRequiredFeatureList; } QString getServerName() const { return serverName; } QString getLoginMessage() const { QMutexLocker locker(&loginMessageMutex); return loginMessage; } + QString getRequiredFeatures() const { return requiredFeatures; } bool permitUnregisteredUsers() const { return authenticationMethod != AuthenticationNone; } bool getGameShouldPing() const { return true; } bool getClientIdRequired() const { return clientIdRequired; } diff --git a/servatrice/src/servatrice_database_interface.cpp b/servatrice/src/servatrice_database_interface.cpp index ae8279fa..f88af904 100644 --- a/servatrice/src/servatrice_database_interface.cpp +++ b/servatrice/src/servatrice_database_interface.cpp @@ -881,13 +881,75 @@ void Servatrice_DatabaseInterface::updateUsersClientID(const QString &userName, } -void Servatrice_DatabaseInterface::updateUsersLastLoginTime(const QString &userName) -{ +void Servatrice_DatabaseInterface::updateUsersLastLoginData(const QString &userName, const QString &clientVersion) { + if (!checkSql()) return; - QSqlQuery *query = prepareQuery("update {prefix}_users set last_login = NOW() where name = :user_name"); - query->bindValue(":user_name", userName); - execSqlQuery(query); + int usersID; + QSqlQuery *query = prepareQuery("select id from {prefix}_users where name = :user_name"); + query->bindValue(":user_name", userName); + if (!execSqlQuery(query)) { + qDebug("Failed to locate user id when updating users last login data: SQL Error"); + return; + } + + if (query->next()) { + usersID = query->value(0).toInt(); + } + + if (usersID) { + int userCount; + query = prepareQuery("select count(id) from {prefix}_user_analytics where id = :user_id"); + query->bindValue(":user_id", usersID); + if (!execSqlQuery(query)) + return; + + if (query->next()) { + userCount = query->value(0).toInt(); + } + + if (!userCount) { + query = prepareQuery("insert into {prefix}_user_analytics (id,client_ver,last_login) values (:user_id,:client_ver,NOW())"); + query->bindValue(":user_id", usersID); + query->bindValue(":client_ver", clientVersion); + execSqlQuery(query); + } else { + query = prepareQuery("update {prefix}_user_analytics set last_login = NOW(), client_ver = :client_ver where id = :user_id"); + query->bindValue(":client_ver", clientVersion); + query->bindValue(":user_id", usersID); + execSqlQuery(query); + } + } +} + +QList Servatrice_DatabaseInterface::getUserBanHistory(const QString userName) +{ + QList results; + ServerInfo_Ban banDetails; + + if (!checkSql()) + return results; + + QSqlQuery *query = prepareQuery("SELECT A.id_admin, A.time_from, A.minutes, A.reason, A.visible_reason, B.name AS name_admin FROM {prefix}_bans A LEFT JOIN {prefix}_users B ON A.id_admin=B.id WHERE A.user_name = :user_name"); + query->bindValue(":user_name", userName); + + if (!execSqlQuery(query)) { + qDebug("Failed to collect ban history information: SQL Error"); + return results; + } + + QString adminID,adminName,banTime,banLength,banReason,visibleReason; + while (query->next()){ + banDetails.set_admin_id(QString(query->value(0).toString()).toStdString()); + banDetails.set_admin_name(QString(query->value(5).toString()).toStdString()); + banDetails.set_ban_time(QString(query->value(1).toString()).toStdString()); + banDetails.set_ban_length(QString(query->value(2).toString()).toStdString()); + banDetails.set_ban_reason(QString(query->value(3).toString()).toStdString()); + banDetails.set_visible_reason(QString(query->value(4).toString()).toStdString()); + results << banDetails; + } + + return results; } diff --git a/servatrice/src/servatrice_database_interface.h b/servatrice/src/servatrice_database_interface.h index 0ca48440..de9c31fc 100644 --- a/servatrice/src/servatrice_database_interface.h +++ b/servatrice/src/servatrice_database_interface.h @@ -9,7 +9,7 @@ #include "server.h" #include "server_database_interface.h" -#define DATABASE_SCHEMA_VERSION 7 +#define DATABASE_SCHEMA_VERSION 8 class Servatrice; @@ -73,11 +73,12 @@ public: const QString &password, const QString &emailAddress, const QString &country, QString &token, bool active = false); bool activateUser(const QString &userName, const QString &token); void updateUsersClientID(const QString &userName, const QString &userClientID); - void updateUsersLastLoginTime(const QString &userName); + void updateUsersLastLoginData(const QString &userName, const QString &clientVersion); void logMessage(const int senderId, const QString &senderName, const QString &senderIp, const QString &logMessage, LogMessage_TargetType targetType, const int targetId, const QString &targetName); bool changeUserPassword(const QString &user, const QString &oldPassword, const QString &newPassword); QChar getGenderChar(ServerInfo_User_Gender const &gender); + QList getUserBanHistory(const QString userName); }; #endif diff --git a/servatrice/src/serversocketinterface.cpp b/servatrice/src/serversocketinterface.cpp index 84c1002d..5250ee4c 100644 --- a/servatrice/src/serversocketinterface.cpp +++ b/servatrice/src/serversocketinterface.cpp @@ -51,6 +51,7 @@ #include "pb/event_add_to_list.pb.h" #include "pb/event_remove_from_list.pb.h" #include "pb/event_notify_user.pb.h" +#include "pb/response_ban_history.pb.h" #include "pb/response_deck_list.pb.h" #include "pb/response_deck_download.pb.h" #include "pb/response_deck_upload.pb.h" @@ -60,6 +61,7 @@ #include "pb/serverinfo_replay.pb.h" #include "pb/serverinfo_user.pb.h" #include "pb/serverinfo_deckstorage.pb.h" +#include "pb/serverinfo_ban.pb.h" #include "version_string.h" #include @@ -301,6 +303,7 @@ Response::ResponseCode ServerSocketInterface::processExtendedModeratorCommand(in { switch ((ModeratorCommand::ModeratorCommandType) cmdType) { case ModeratorCommand::BAN_FROM_SERVER: return cmdBanFromServer(cmd.GetExtension(Command_BanFromServer::ext), rc); + case ModeratorCommand::BAN_HISTORY: return cmdGetBanHistory(cmd.GetExtension(Command_GetBanHistory::ext), rc); default: return Response::RespFunctionNotAllowed; } } @@ -747,6 +750,19 @@ Response::ResponseCode ServerSocketInterface::cmdReplayDeleteMatch(const Command // MODERATOR FUNCTIONS. // May be called by admins and moderators. Permission is checked by the calling function. +Response::ResponseCode ServerSocketInterface::cmdGetBanHistory(const Command_GetBanHistory &cmd, ResponseContainer &rc) +{ + QList banList; + QString userName = QString::fromStdString(cmd.user_name()); + + Response_BanHistory *re = new Response_BanHistory; + QListIterator banIterator(sqlInterface->getUserBanHistory(userName)); + while (banIterator.hasNext()) + re->add_ban_list()->CopyFrom(banIterator.next()); + rc.setResponseExtension(re); + return Response::RespOk; +} + Response::ResponseCode ServerSocketInterface::cmdBanFromServer(const Command_BanFromServer &cmd, ResponseContainer & /*rc*/) { if (!sqlInterface->checkSql()) @@ -777,7 +793,7 @@ Response::ResponseCode ServerSocketInterface::cmdBanFromServer(const Command_Ban userList.append(user); } - if (userName.isEmpty() && address.isEmpty()) { + if (userName.isEmpty() && address.isEmpty() && (!QString::fromStdString(cmd.clientid()).isEmpty())) { QSqlQuery *query = sqlInterface->prepareQuery("select name from {prefix}_users where clientid = :client_id"); query->bindValue(":client_id", QString::fromStdString(cmd.clientid())); sqlInterface->execSqlQuery(query); diff --git a/servatrice/src/serversocketinterface.h b/servatrice/src/serversocketinterface.h index a733c6b7..894bd3a9 100644 --- a/servatrice/src/serversocketinterface.h +++ b/servatrice/src/serversocketinterface.h @@ -53,6 +53,7 @@ class Command_AccountEdit; class Command_AccountImage; class Command_AccountPassword; + class ServerSocketInterface : public Server_ProtocolHandler { Q_OBJECT @@ -95,6 +96,7 @@ private: Response::ResponseCode cmdReplayModifyMatch(const Command_ReplayModifyMatch &cmd, ResponseContainer &rc); Response::ResponseCode cmdReplayDeleteMatch(const Command_ReplayDeleteMatch &cmd, ResponseContainer &rc); Response::ResponseCode cmdBanFromServer(const Command_BanFromServer &cmd, ResponseContainer &rc); + Response::ResponseCode cmdGetBanHistory(const Command_GetBanHistory &cmd, ResponseContainer &rc); Response::ResponseCode cmdShutdownServer(const Command_ShutdownServer &cmd, ResponseContainer &rc); Response::ResponseCode cmdUpdateServerMessage(const Command_UpdateServerMessage &cmd, ResponseContainer &rc); Response::ResponseCode cmdRegisterAccount(const Command_Register &cmd, ResponseContainer &rc); diff --git a/servatrice/src/settingscache.cpp b/servatrice/src/settingscache.cpp index b2b74d74..1adad629 100644 --- a/servatrice/src/settingscache.cpp +++ b/servatrice/src/settingscache.cpp @@ -15,9 +15,11 @@ SettingsCache::SettingsCache(const QString & fileName, QSettings::Format format, QString SettingsCache::guessConfigurationPath(QString & specificPath) { - const QString fileName="servatrice.ini"; + const QString fileName="servatrice.ini"; + #ifdef PORTABLE_BUILD + return fileName; + #endif QString guessFileName; - // specific path if(!specificPath.isEmpty() && QFile::exists(specificPath)) return specificPath; @@ -40,4 +42,4 @@ QString SettingsCache::guessConfigurationPath(QString & specificPath) guessFileName = QDesktopServices::storageLocation(QDesktopServices::DataLocation) + "/" + fileName; #endif return guessFileName; -} \ No newline at end of file +} diff --git a/sounds/CMakeLists.txt b/sounds/CMakeLists.txt index cd9f6c33..7712abb9 100644 --- a/sounds/CMakeLists.txt +++ b/sounds/CMakeLists.txt @@ -2,7 +2,7 @@ # # Installs default sound files -FILE(GLOB sounds "${CMAKE_CURRENT_SOURCE_DIR}/*.raw") +FILE(GLOB sounds "${CMAKE_CURRENT_SOURCE_DIR}/*.wav") if(UNIX) if(APPLE) diff --git a/sounds/attack.raw b/sounds/attack.raw deleted file mode 100644 index d9edd2a2..00000000 Binary files a/sounds/attack.raw and /dev/null differ diff --git a/sounds/attack_step.wav b/sounds/attack_step.wav new file mode 100644 index 00000000..e604155d Binary files /dev/null and b/sounds/attack_step.wav differ diff --git a/sounds/end_step.raw b/sounds/end_step.raw deleted file mode 100644 index 7ae52545..00000000 Binary files a/sounds/end_step.raw and /dev/null differ diff --git a/sounds/end_step.wav b/sounds/end_step.wav new file mode 100644 index 00000000..eb58dffb Binary files /dev/null and b/sounds/end_step.wav differ diff --git a/sounds/player_join.wav b/sounds/player_join.wav new file mode 100644 index 00000000..3289155e Binary files /dev/null and b/sounds/player_join.wav differ diff --git a/sounds/player_joined.raw b/sounds/player_joined.raw deleted file mode 100644 index d3294958..00000000 Binary files a/sounds/player_joined.raw and /dev/null differ diff --git a/sounds/start_combat.raw b/sounds/start_combat.raw deleted file mode 100644 index d9edd2a2..00000000 Binary files a/sounds/start_combat.raw and /dev/null differ diff --git a/sounds/start_combat.wav b/sounds/start_combat.wav new file mode 100644 index 00000000..e604155d Binary files /dev/null and b/sounds/start_combat.wav differ diff --git a/sounds/tap.raw b/sounds/tap.raw deleted file mode 100644 index 179f0cf0..00000000 Binary files a/sounds/tap.raw and /dev/null differ diff --git a/sounds/tap_card.wav b/sounds/tap_card.wav new file mode 100644 index 00000000..62f56a8c Binary files /dev/null and b/sounds/tap_card.wav differ diff --git a/themes/CMakeLists.txt b/themes/CMakeLists.txt new file mode 100644 index 00000000..dc3b9b50 --- /dev/null +++ b/themes/CMakeLists.txt @@ -0,0 +1,22 @@ +# CMakeLists for themes directory +# +# add themes subfolders + +SET(defthemes + Default + Fabric + Leather + Plasma + VelvetMarble +) + +if(UNIX) + if(APPLE) + INSTALL(DIRECTORY ${defthemes} DESTINATION cockatrice.app/Contents/Resources/themes/) + else() + # Assume linux + INSTALL(DIRECTORY ${defthemes} DESTINATION share/cockatrice/themes/) + endif() +elseif(WIN32) + INSTALL(DIRECTORY ${defthemes} DESTINATION themes/) +endif() diff --git a/themes/Default/.gitignore b/themes/Default/.gitignore new file mode 100644 index 00000000..86d0cb27 --- /dev/null +++ b/themes/Default/.gitignore @@ -0,0 +1,4 @@ +# Ignore everything in this directory +* +# Except this file +!.gitignore \ No newline at end of file diff --git a/zonebg/fabric_green.png b/themes/Fabric/zones/handzone.png similarity index 100% rename from zonebg/fabric_green.png rename to themes/Fabric/zones/handzone.png diff --git a/zonebg/fabric_gray.png b/themes/Fabric/zones/playerzone.png similarity index 100% rename from zonebg/fabric_gray.png rename to themes/Fabric/zones/playerzone.png diff --git a/zonebg/fabric_red.png b/themes/Fabric/zones/stackzone.png similarity index 100% rename from zonebg/fabric_red.png rename to themes/Fabric/zones/stackzone.png diff --git a/zonebg/fabric_blue.png b/themes/Fabric/zones/tablezone.png similarity index 100% rename from zonebg/fabric_blue.png rename to themes/Fabric/zones/tablezone.png diff --git a/zonebg/leather_green.png b/themes/Leather/zones/handzone.png similarity index 100% rename from zonebg/leather_green.png rename to themes/Leather/zones/handzone.png diff --git a/zonebg/leather_gray.png b/themes/Leather/zones/playerzone.png similarity index 100% rename from zonebg/leather_gray.png rename to themes/Leather/zones/playerzone.png diff --git a/zonebg/leather_red.png b/themes/Leather/zones/stackzone.png similarity index 100% rename from zonebg/leather_red.png rename to themes/Leather/zones/stackzone.png diff --git a/zonebg/leather_blue.png b/themes/Leather/zones/tablezone.png similarity index 100% rename from zonebg/leather_blue.png rename to themes/Leather/zones/tablezone.png diff --git a/zonebg/plasma_green.png b/themes/Plasma/zones/handzone.png similarity index 100% rename from zonebg/plasma_green.png rename to themes/Plasma/zones/handzone.png diff --git a/zonebg/plasma_gray.png b/themes/Plasma/zones/playerzone.png similarity index 100% rename from zonebg/plasma_gray.png rename to themes/Plasma/zones/playerzone.png diff --git a/zonebg/plasma_red.png b/themes/Plasma/zones/stackzone.png similarity index 100% rename from zonebg/plasma_red.png rename to themes/Plasma/zones/stackzone.png diff --git a/zonebg/plasma_blue.png b/themes/Plasma/zones/tablezone.png similarity index 100% rename from zonebg/plasma_blue.png rename to themes/Plasma/zones/tablezone.png diff --git a/zonebg/VelvetMarble_HorizontalHand_Hand.jpg b/themes/VelvetMarble/zones/handzone.jpg similarity index 100% rename from zonebg/VelvetMarble_HorizontalHand_Hand.jpg rename to themes/VelvetMarble/zones/handzone.jpg diff --git a/zonebg/VelvetMarble_Table.jpg b/themes/VelvetMarble/zones/playerzone.jpg similarity index 100% rename from zonebg/VelvetMarble_Table.jpg rename to themes/VelvetMarble/zones/playerzone.jpg diff --git a/zonebg/VelvetMarble_Stack.jpg b/themes/VelvetMarble/zones/stackzone.jpg similarity index 100% rename from zonebg/VelvetMarble_Stack.jpg rename to themes/VelvetMarble/zones/stackzone.jpg diff --git a/zonebg/VelvetMarble_HorizontalHand_Player.jpg b/themes/VelvetMarble/zones/tablezone.jpg similarity index 100% rename from zonebg/VelvetMarble_HorizontalHand_Player.jpg rename to themes/VelvetMarble/zones/tablezone.jpg diff --git a/travis-dependencies.sh b/travis-dependencies.sh index 63fdc24c..cd86a892 100755 --- a/travis-dependencies.sh +++ b/travis-dependencies.sh @@ -10,7 +10,7 @@ if [[ $TRAVIS_OS_NAME == "osx" ]] ; then else if (( QT4 )); then sudo apt-get update -qq - sudo apt-get install -y qtmobility-dev libprotobuf-dev protobuf-compiler libqt4-dev + sudo apt-get install -y libprotobuf-dev protobuf-compiler libqt4-dev else sudo add-apt-repository -y ppa:beineri/opt-qt521 sudo add-apt-repository -y ppa:kalakris/cmake diff --git a/zonebg/CMakeLists.txt b/zonebg/CMakeLists.txt deleted file mode 100644 index b250a44b..00000000 --- a/zonebg/CMakeLists.txt +++ /dev/null @@ -1,16 +0,0 @@ -# CMakeLists for zonebg/ directory -# -# Installs default "zone background" files - -FILE(GLOB zonebg "${CMAKE_CURRENT_SOURCE_DIR}/*.png" "${CMAKE_CURRENT_SOURCE_DIR}/*.jpg") - -if(UNIX) - if(APPLE) - INSTALL(FILES ${zonebg} DESTINATION cockatrice.app/Contents/Resources/zonebg/) - else() - # Assume linux - INSTALL(FILES ${zonebg} DESTINATION share/cockatrice/zonebg/) - endif() -elseif(WIN32) - INSTALL(FILES ${zonebg} DESTINATION zonebg/) -endif() \ No newline at end of file diff --git a/zonebg/VelvetMarble_VerticalHand_Hand.jpg b/zonebg/VelvetMarble_VerticalHand_Hand.jpg deleted file mode 100644 index 83e8915a..00000000 Binary files a/zonebg/VelvetMarble_VerticalHand_Hand.jpg and /dev/null differ diff --git a/zonebg/VelvetMarble_VerticalHand_Player.jpg b/zonebg/VelvetMarble_VerticalHand_Player.jpg deleted file mode 100644 index d86987bf..00000000 Binary files a/zonebg/VelvetMarble_VerticalHand_Player.jpg and /dev/null differ