Initial commit of mtgonline project

This commit is contained in:
2026-07-18 04:57:40 +00:00
commit 86c12376f8
1870 changed files with 547994 additions and 0 deletions
+317
View File
@@ -0,0 +1,317 @@
cmake_minimum_required(VERSION 3.16)
project(Oracle VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}")
# ------------------------
# Paths and directories
# ------------------------
set(DESKTOPDIR
share/applications
CACHE STRING "path to .desktop files"
)
set(ORACLE_MAC_QM_INSTALL_DIR "oracle.app/Contents/Resources/translations")
set(ORACLE_UNIX_QM_INSTALL_DIR "share/oracle/translations")
set(ORACLE_WIN32_QM_INSTALL_DIR "translations")
# ------------------------
# Sources
# ------------------------
set(oracle_SOURCES
src/main.cpp
src/oraclewizard.cpp
src/oracleimporter.cpp
src/pages.cpp
src/pagetemplates.cpp
src/parsehelpers.cpp
src/qt-json/json.cpp
../cockatrice/src/client/settings/cache_settings.cpp
../cockatrice/src/client/settings/card_counter_settings.cpp
../cockatrice/src/client/settings/shortcuts_settings.cpp
../cockatrice/src/client/network/update/client/release_channel.cpp
../cockatrice/src/interface/theme_config.cpp
../cockatrice/src/interface/theme_manager.cpp
../cockatrice/src/interface/widgets/quick_settings/settings_button_widget.cpp
../cockatrice/src/interface/widgets/quick_settings/settings_popup_widget.cpp
${VERSION_STRING_CPP}
)
# ------------------------
# Translations
# ------------------------
if(UPDATE_TRANSLATIONS)
file(GLOB_RECURSE translate_oracle_SRCS src/*.cpp src/*.h ../cockatrice/src/settingscache.cpp)
set(translate_SRCS ${translate_oracle_SRCS})
set(oracle_TS "${CMAKE_CURRENT_SOURCE_DIR}/oracle_en@source.ts")
else()
file(GLOB oracle_TS "${CMAKE_CURRENT_SOURCE_DIR}/translations/*.ts")
endif(UPDATE_TRANSLATIONS)
if(WIN32)
set(oracle_SOURCES ${oracle_SOURCES} oracle.rc)
endif(WIN32)
if(APPLE)
set(MACOSX_BUNDLE_ICON_FILE appicon.icns)
set_source_files_properties(
${CMAKE_CURRENT_SOURCE_DIR}/resources/appicon.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources
)
set(oracle_SOURCES ${oracle_SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/resources/appicon.icns)
endif(APPLE)
set(oracle_RESOURCES oracle.qrc)
# ------------------------
# Qt resources
# ------------------------
if(Qt6_FOUND)
qt6_add_resources(oracle_RESOURCES_RCC ${oracle_RESOURCES})
elseif(Qt5_FOUND)
qt5_add_resources(oracle_RESOURCES_RCC ${oracle_RESOURCES})
endif()
# ------------------------
# Include directories
# ------------------------
include_directories(../cockatrice/src)
# ------------------------
# Optional libraries
# ------------------------
# ZLIB
find_package(ZLIB)
if(ZLIB_FOUND)
include_directories(${ZLIB_INCLUDE_DIRS})
add_definitions("-DHAS_ZLIB")
list(APPEND oracle_SOURCES src/zip/unzip.cpp src/zip/zipglobal.cpp)
else()
message(STATUS "Oracle: zlib not found; ZIP support disabled")
endif()
# LZMA
find_package(LibLZMA)
if(LIBLZMA_FOUND)
include_directories(${LIBLZMA_INCLUDE_DIRS})
add_definitions("-DHAS_LZMA")
list(APPEND oracle_SOURCES src/lzma/decompress.cpp)
else()
message(STATUS "Oracle: LibLZMA not found; xz support disabled")
endif()
# ------------------------
# Build executable
# ------------------------
set(ORACLE_MAC_QM_INSTALL_DIR "oracle.app/Contents/Resources/translations")
set(ORACLE_UNIX_QM_INSTALL_DIR "share/oracle/translations")
set(ORACLE_WIN32_QM_INSTALL_DIR "translations")
if(Qt6_FOUND)
# Qt6 Translations are linked after the executable is created in manual mode
qt6_add_executable(
oracle
WIN32
MACOSX_BUNDLE
${oracle_SOURCES}
${oracle_RESOURCES_RCC}
${oracle_MOC_SRCS}
MANUAL_FINALIZATION
)
elseif(Qt5_FOUND)
# Qt5 Translations need to be linked at executable creation time
if(Qt5LinguistTools_FOUND)
if(UPDATE_TRANSLATIONS)
qt5_create_translation(oracle_QM ${translate_SRCS} ${oracle_TS})
else()
qt5_add_translation(oracle_QM ${oracle_TS})
endif()
endif()
add_executable(oracle WIN32 MACOSX_BUNDLE ${oracle_MOC_SRCS} ${oracle_QM} ${oracle_RESOURCES_RCC} ${oracle_SOURCES})
if(UNIX)
if(APPLE)
install(FILES ${oracle_QM} DESTINATION ${ORACLE_MAC_QM_INSTALL_DIR})
else()
install(FILES ${oracle_QM} DESTINATION ${ORACLE_UNIX_QM_INSTALL_DIR})
endif()
elseif(WIN32)
install(FILES ${oracle_QM} DESTINATION ${ORACLE_WIN32_QM_INSTALL_DIR})
endif()
endif()
# ------------------------
# Link libraries
# ------------------------
target_link_libraries(
oracle
PUBLIC libcockatrice_card
PUBLIC libcockatrice_settings
PUBLIC libcockatrice_network
PUBLIC ${ORACLE_QT_MODULES}
)
if(ZLIB_FOUND)
target_link_libraries(oracle PUBLIC ${ZLIB_LIBRARIES})
endif()
if(LIBLZMA_FOUND)
target_link_libraries(oracle PUBLIC ${LIBLZMA_LIBRARIES})
endif()
# ------------------------
# Install rules
# ------------------------
if(UNIX)
if(APPLE)
set(MACOSX_BUNDLE_INFO_STRING "${PROJECT_NAME}")
set(MACOSX_BUNDLE_GUI_IDENTIFIER "com.cockatrice.${PROJECT_NAME}")
set(MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJECT_NAME}-${PROJECT_VERSION}")
set(MACOSX_BUNDLE_BUNDLE_NAME ${PROJECT_NAME})
set(MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION})
set(MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION})
set_target_properties(oracle PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_SOURCE_DIR}/cmake/Info.plist)
install(TARGETS oracle BUNDLE DESTINATION ./)
else()
# Assume linux
install(TARGETS oracle RUNTIME DESTINATION bin/)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/resources/oracle.png DESTINATION ${ICONDIR}/hicolor/48x48/apps)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/resources/oracle.svg DESTINATION ${ICONDIR}/hicolor/scalable/apps)
endif()
elseif(WIN32)
install(TARGETS oracle RUNTIME DESTINATION ./)
endif()
if(NOT WIN32 AND NOT APPLE)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/oracle.desktop DESTINATION ${DESKTOPDIR})
endif(NOT WIN32 AND NOT APPLE)
# ------------------------
# Qt plugin handling
# ------------------------
if(APPLE)
# these needs to be relative to CMAKE_INSTALL_PREFIX
set(plugin_dest_dir oracle.app/Contents/Plugins)
set(qtconf_dest_dir oracle.app/Contents/Resources)
# Qt plugins: iconengines, platforms, styles, tls (Qt6)
install(
DIRECTORY "${QT_PLUGINS_DIR}/"
DESTINATION ${plugin_dest_dir}
COMPONENT Runtime
FILES_MATCHING
PATTERN "*.dSYM" EXCLUDE
PATTERN "*_debug.dylib" EXCLUDE
PATTERN "iconengines/*.dylib"
PATTERN "platforms/*.dylib"
PATTERN "styles/*.dylib"
PATTERN "tls/*.dylib"
)
install(
CODE "
file(WRITE \"\${CMAKE_INSTALL_PREFIX}/${qtconf_dest_dir}/qt.conf\" \"[Paths]
Plugins = Plugins
Translations = Resources/translations\")
"
COMPONENT Runtime
)
install(
CODE "
file(GLOB_RECURSE QTPLUGINS
\"\${CMAKE_INSTALL_PREFIX}/${plugin_dest_dir}/*.dylib\")
set(BU_CHMOD_BUNDLE_ITEMS ON)
include(BundleUtilities)
fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/oracle.app\" \"\${QTPLUGINS}\" \"${QT_LIBRARY_DIR}\")
"
COMPONENT Runtime
)
endif()
if(WIN32)
# these needs to be relative to CMAKE_INSTALL_PREFIX
set(plugin_dest_dir Plugins)
set(qtconf_dest_dir .)
list(APPEND libSearchDirs ${QT_LIBRARY_DIR})
install(
DIRECTORY "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/${CMAKE_BUILD_TYPE}/"
DESTINATION ./
FILES_MATCHING
PATTERN "*.dll"
)
# Qt plugins: iconengines, platforms, styles, tls (Qt6)
install(
DIRECTORY "${QT_PLUGINS_DIR}/"
DESTINATION ${plugin_dest_dir}
COMPONENT Runtime
FILES_MATCHING
PATTERN "iconengines/qsvgicon.dll"
PATTERN "platforms/qdirect2d.dll"
PATTERN "platforms/qminimal.dll"
PATTERN "platforms/qoffscreen.dll"
PATTERN "platforms/qwindows.dll"
PATTERN "styles/qcertonlybackend.dll"
PATTERN "styles/qopensslbackend.dll"
PATTERN "styles/qschannelbackend.dll"
PATTERN "styles/qwindowsvistastyle.dll"
PATTERN "tls/qcertonlybackend.dll"
PATTERN "tls/qopensslbackend.dll"
PATTERN "tls/qschannelbackend.dll"
)
install(
CODE "
file(WRITE \"\${CMAKE_INSTALL_PREFIX}/${qtconf_dest_dir}/qt.conf\" \"[Paths]
Plugins = Plugins
Translations = Resources/translations\")
"
COMPONENT Runtime
)
install(
CODE "
file(GLOB_RECURSE QTPLUGINS
\"\${CMAKE_INSTALL_PREFIX}/${plugin_dest_dir}/*.dll\")
set(BU_CHMOD_BUNDLE_ITEMS ON)
include(BundleUtilities)
fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/Oracle.exe\" \"\${QTPLUGINS}\" \"${libSearchDirs}\")
"
COMPONENT Runtime
)
endif()
# ------------------------
# Qt translations
# ------------------------
if(Qt6_FOUND AND Qt6LinguistTools_FOUND)
#Qt6 Translations happen after the executable is built up
if(UPDATE_TRANSLATIONS)
qt6_add_translations(
oracle
TS_FILES
${oracle_TS}
SOURCES
${translate_SRCS}
QM_FILES_OUTPUT_VARIABLE
oracle_QM
)
else()
qt6_add_translations(oracle TS_FILES ${oracle_TS} QM_FILES_OUTPUT_VARIABLE oracle_QM)
endif()
if(UNIX)
if(APPLE)
install(FILES ${oracle_QM} DESTINATION ${ORACLE_MAC_QM_INSTALL_DIR})
else()
install(FILES ${oracle_QM} DESTINATION ${ORACLE_UNIX_QM_INSTALL_DIR})
endif()
elseif(WIN32)
install(FILES ${oracle_QM} DESTINATION ${ORACLE_WIN32_QM_INSTALL_DIR})
endif()
endif()
if(Qt6_FOUND)
qt6_finalize_target(oracle)
endif()
+8
View File
@@ -0,0 +1,8 @@
#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Name=Cockatrice Oracle downloader
Exec=oracle
Icon=oracle
Categories=Game;CardGame;
+5
View File
@@ -0,0 +1,5 @@
<RCC>
<qresource prefix="/" >
<file alias="resources/appicon.svg">resources/oracle.svg</file>
</qresource>
</RCC>
+1
View File
@@ -0,0 +1 @@
ID1_ICON1 ICON DISCARDABLE "resources/appicon.ico"
+610
View File
@@ -0,0 +1,610 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="en_US">
<context>
<name>IntroPage</name>
<message>
<location filename="src/pages.cpp" line="127"/>
<source>Introduction</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="128"/>
<source>This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="130"/>
<source>Interface language:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="131"/>
<source>Version:</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LoadSetsPage</name>
<message>
<location filename="src/pages.cpp" line="200"/>
<source>Source selection</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="201"/>
<source>Please specify a compatible 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.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="205"/>
<source>Download URL:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="206"/>
<source>Local file:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="207"/>
<source>Restore default URL</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="208"/>
<source>Choose file...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="218"/>
<source>Load sets file</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="228"/>
<source>Sets file (%1)</source>
<oldsource>Sets JSON file (%1)</oldsource>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<location filename="src/pages.cpp" line="277"/>
<location filename="src/pages.cpp" line="282"/>
<location filename="src/pages.cpp" line="354"/>
<location filename="src/pages.cpp" line="485"/>
<location filename="src/pages.cpp" line="498"/>
<location filename="src/pages.cpp" line="519"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<source>The provided URL is not valid.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="262"/>
<source>Downloading (0MB)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="277"/>
<source>Please choose a file.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="282"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="345"/>
<source>Downloading (%1MB)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="354"/>
<source>Network error: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="392"/>
<source>Parsing file</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="414"/>
<source>Xz extraction failed.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="421"/>
<source>Sorry, this version of Oracle does not support xz compressed files.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="441"/>
<source>Failed to open Zip archive: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="446"/>
<source>Zip extraction failed: the Zip archive doesn&apos;t contain exactly one file.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="454"/>
<source>Zip extraction failed: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="462"/>
<source>Sorry, this version of Oracle does not support zipped files.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="485"/>
<source>Failed to interpret downloaded data.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="498"/>
<source>Do you want to download the uncompressed file instead?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="520"/>
<source>The file was retrieved successfully, but it does not contain any sets data.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LoadSpoilersPage</name>
<message>
<location filename="src/pages.cpp" line="716"/>
<source>Save spoiler database</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="721"/>
<source>XML; spoiler database (*.xml)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="726"/>
<source>spoiler</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="731"/>
<source>Spoilers import</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="732"/>
<source>Please specify a compatible source for spoiler data.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="734"/>
<source>Download URL:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="735"/>
<source>Local file:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="736"/>
<source>Restore default URL</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="737"/>
<source>Choose file...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="739"/>
<source>The spoiler database will be saved at the following location:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="741"/>
<source>Save to a custom path (not recommended)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LoadTokensPage</name>
<message>
<location filename="src/pages.cpp" line="671"/>
<source>Save token database</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="676"/>
<source>XML; token database (*.xml)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="681"/>
<source>tokens</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="686"/>
<source>Tokens import</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="687"/>
<source>Please specify a compatible source for token data.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="689"/>
<source>Download URL:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="690"/>
<source>Local file:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="691"/>
<source>Restore default URL</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="692"/>
<source>Choose file...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="694"/>
<source>The token database will be saved at the following location:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="696"/>
<source>Save to a custom path (not recommended)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>OracleImporter</name>
<message>
<location filename="src/oracleimporter.cpp" line="542"/>
<source>Dummy set containing tokens</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>OracleWizard</name>
<message>
<location filename="src/oraclewizard.cpp" line="101"/>
<source>Oracle Importer</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>OutroPage</name>
<message>
<location filename="src/pages.cpp" line="136"/>
<source>Finished</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="137"/>
<source>The wizard has finished.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="138"/>
<source>You can now start using Cockatrice with the newly updated cards.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="139"/>
<source>If the card databases don&apos;t reload automatically, restart the Cockatrice client.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SaveSetsPage</name>
<message>
<location filename="src/pages.cpp" line="563"/>
<location filename="src/pages.cpp" line="638"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="563"/>
<source>No set has been imported.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="574"/>
<source>Sets imported</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="576"/>
<source>A cockatrice database file of %1 MB has been downloaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="579"/>
<source>The following sets have been found:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="582"/>
<source>Press &quot;Save&quot; to store the imported cards in the Cockatrice database.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="583"/>
<source>The card database will be saved at the following location:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="585"/>
<source>Save to a custom path (not recommended)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="587"/>
<source>&amp;Save</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="593"/>
<source>Import finished: %1 cards.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="596"/>
<source>%1: %2 cards imported</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="605"/>
<source>Save card database</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="606"/>
<source>XML; card database (*.xml)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pages.cpp" line="638"/>
<source>The file could not be saved to %1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SimpleDownloadFilePage</name>
<message>
<location filename="src/pagetemplates.cpp" line="72"/>
<source>Load %1 file</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="82"/>
<source>%1 file (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<location filename="src/pagetemplates.cpp" line="129"/>
<location filename="src/pagetemplates.cpp" line="134"/>
<location filename="src/pagetemplates.cpp" line="168"/>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<source>The provided URL is not valid: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="115"/>
<source>Downloading (0MB)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="129"/>
<source>Please choose a file.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="134"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="159"/>
<source>Downloading (%1MB)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="168"/>
<source>Network error: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>The file could not be saved to %1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>UnZip</name>
<message>
<location filename="src/zip/unzip.cpp" line="1175"/>
<source>ZIP operation completed successfully.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1176"/>
<source>Failed to initialize or load zlib library.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1177"/>
<source>zlib library error.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1178"/>
<source>Unable to create or open file.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1179"/>
<source>Partially corrupted archive. Some files might be extracted.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1180"/>
<source>Corrupted archive.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1181"/>
<source>Wrong password.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1182"/>
<source>No archive has been created yet.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1183"/>
<source>File or directory does not exist.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1184"/>
<source>File read error.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1185"/>
<source>File write error.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1186"/>
<source>File seek error.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1187"/>
<source>Unable to create a directory.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1188"/>
<source>Invalid device.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1189"/>
<source>Invalid or incompatible zip archive.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1190"/>
<source>Inconsistent headers. Archive might be corrupted.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1194"/>
<source>Unknown error.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Zip</name>
<message>
<location filename="src/zip/zip.cpp" line="1604"/>
<source>ZIP operation completed successfully.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1605"/>
<source>Failed to initialize or load zlib library.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1606"/>
<source>zlib library error.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1607"/>
<source>Unable to create or open file.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1608"/>
<source>No archive has been created yet.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1609"/>
<source>File or directory does not exist.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1610"/>
<source>File read error.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1611"/>
<source>File write error.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1612"/>
<source>File seek error.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1616"/>
<source>Unknown error.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>i18n</name>
<message>
<location filename="src/oraclewizard.cpp" line="22"/>
<source>English</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="src/main.cpp" line="62"/>
<source>Only run in spoiler mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/main.cpp" line="63"/>
<source>Run in no-confirm background mode</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 185 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

+337
View File
@@ -0,0 +1,337 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="300.0036"
height="300"
id="svg2"
sodipodi:version="0.32"
inkscape:version="0.91 r13725"
sodipodi:docname="oracle.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.0"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<defs
id="defs4">
<linearGradient
y2="38.523342"
x2="-25.41811"
y1="37.909077"
x1="-20.65873"
gradientUnits="userSpaceOnUse"
id="linearGradient5324-8-8"
xlink:href="#linearGradient4766-8-8"
inkscape:collect="always" />
<linearGradient
id="linearGradient4766-8-8">
<stop
style="stop-color:#784421;stop-opacity:1;"
offset="0"
id="stop4768-2-1" />
<stop
style="stop-color:#3d2210;stop-opacity:0;"
offset="1"
id="stop4770-7-2" />
</linearGradient>
<linearGradient
y2="38.523342"
x2="-25.41811"
y1="37.909077"
x1="-20.65873"
gradientUnits="userSpaceOnUse"
id="linearGradient5324-8-6"
xlink:href="#linearGradient4766-8-0"
inkscape:collect="always" />
<linearGradient
id="linearGradient4766-8-0">
<stop
style="stop-color:#784421;stop-opacity:1;"
offset="0"
id="stop4768-2-3" />
<stop
style="stop-color:#3d2210;stop-opacity:0;"
offset="1"
id="stop4770-7-6" />
</linearGradient>
<linearGradient
y2="38.523342"
x2="-25.41811"
y1="37.909077"
x1="-20.65873"
gradientUnits="userSpaceOnUse"
id="linearGradient5324-8-2"
xlink:href="#linearGradient4766-8-6"
inkscape:collect="always" />
<linearGradient
id="linearGradient4766-8-6">
<stop
style="stop-color:#784421;stop-opacity:1;"
offset="0"
id="stop4768-2-0" />
<stop
style="stop-color:#3d2210;stop-opacity:0;"
offset="1"
id="stop4770-7-4" />
</linearGradient>
<linearGradient
y2="38.523342"
x2="-25.41811"
y1="37.909077"
x1="-20.65873"
gradientUnits="userSpaceOnUse"
id="linearGradient5324-8"
xlink:href="#linearGradient4766-8"
inkscape:collect="always" />
<linearGradient
id="linearGradient4766-8">
<stop
style="stop-color:#784421;stop-opacity:1;"
offset="0"
id="stop4768-2" />
<stop
style="stop-color:#3d2210;stop-opacity:0;"
offset="1"
id="stop4770-7" />
</linearGradient>
<linearGradient
gradientTransform="matrix(0.87199948,0,0,0.87199948,2.3756772,1.6672408)"
inkscape:collect="always"
xlink:href="#linearGradient5266"
id="linearGradient5272"
x1="165.86763"
y1="23.649557"
x2="12.980947"
y2="327.98059"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient5266">
<stop
style="stop-color:#806600;stop-opacity:1;"
offset="0"
id="stop5268" />
<stop
style="stop-color:#382d00;stop-opacity:1;"
offset="1"
id="stop5270" />
</linearGradient>
<linearGradient
gradientTransform="matrix(0.87199948,0,0,0.87199948,2.3756772,1.6672408)"
inkscape:collect="always"
xlink:href="#linearGradient3009"
id="linearGradient3015"
x1="10.096291"
y1="329.42294"
x2="229.81081"
y2="12.591727"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient3009">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop3011" />
<stop
style="stop-color:#a0872c;stop-opacity:1;"
offset="1"
id="stop3013" />
</linearGradient>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.054421"
inkscape:cx="-86.473819"
inkscape:cy="81.705663"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1280"
inkscape:window-height="961"
inkscape:window-x="-8"
inkscape:window-y="-8"
fit-margin-left="44.18"
fit-margin-right="44.18"
fit-margin-top="0"
fit-margin-bottom="0"
inkscape:window-maximized="1" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Ebene 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(44.245053,-0.31708717)">
<flowRoot
xml:space="preserve"
id="flowRoot3021"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
transform="translate(10.432266,0)"><flowRegion
id="flowRegion3023"><rect
id="rect3025"
width="151.92514"
height="235.58012"
x="50.000679"
y="60.188515" /></flowRegion><flowPara
id="flowPara3027" /></flowRoot> <rect
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.8719995;stroke-opacity:0;display:inline"
id="rect3004"
width="209.27988"
height="296.47983"
x="2.3756764"
y="2.1663046"
rx="8.7199945"
ry="8.7199945" />
<rect
style="fill:url(#linearGradient3015);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.87666601;stroke-opacity:0;display:inline"
id="rect3007"
width="192.42941"
height="277.97034"
x="11.17963"
y="11.791974" />
<rect
style="fill:url(#linearGradient5272);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.86936414;stroke-opacity:0;display:inline"
id="rect3017"
width="187.14709"
height="273.46323"
x="13.887438"
y="13.99333" />
<rect
style="fill:#000000;fill-opacity:0;fill-rule:nonzero;stroke:#000000;stroke-width:0.8719995;stroke-opacity:1;display:inline"
id="rect5293"
width="181.52928"
height="267.05347"
x="16.629705"
y="16.839573" />
<path
sodipodi:type="arc"
style="fill:#ff5555;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-opacity:0;display:inline"
id="path5297-7"
sodipodi:cx="-96.635925"
sodipodi:cy="76.534889"
sodipodi:rx="2.8846545"
sodipodi:ry="2.8846545"
d="m -93.751271,76.534889 a 2.8846545,2.8846545 0 0 1 -2.884654,2.884655 2.8846545,2.8846545 0 0 1 -2.884655,-2.884655 2.8846545,2.8846545 0 0 1 2.884655,-2.884654 2.8846545,2.8846545 0 0 1 2.884654,2.884654 z"
transform="matrix(0.87199948,0,0,0.87199948,105.71762,211.63685)" />
<path
sodipodi:type="arc"
style="fill:url(#linearGradient5324-8);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-opacity:0;display:inline"
id="path5299-6-1"
sodipodi:cx="-24.925219"
sodipodi:cy="38.493507"
sodipodi:rx="1.4573514"
sodipodi:ry="1.1418424"
d="m -23.467867,38.493507 a 1.4573514,1.1418424 0 0 1 -1.457352,1.141843 1.4573514,1.1418424 0 0 1 -1.457351,-1.141843 1.4573514,1.1418424 0 0 1 1.457351,-1.141842 1.4573514,1.1418424 0 0 1 1.457352,1.141842 z"
transform="matrix(-1.1516801,0.679836,-1.0169493,-1.7297998,31.445768,362.16737)" />
<path
sodipodi:type="arc"
style="fill:#ff5555;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-opacity:0;display:inline"
id="path5297-7-9"
sodipodi:cx="-96.635925"
sodipodi:cy="76.534889"
sodipodi:rx="2.8846545"
sodipodi:ry="2.8846545"
d="m -93.751271,76.534889 a 2.8846545,2.8846545 0 0 1 -2.884654,2.884655 2.8846545,2.8846545 0 0 1 -2.884655,-2.884655 2.8846545,2.8846545 0 0 1 2.884655,-2.884654 2.8846545,2.8846545 0 0 1 2.884654,2.884654 z"
transform="matrix(0.87199948,0,0,0.87199948,277.4407,212.63361)" />
<path
sodipodi:type="arc"
style="fill:url(#linearGradient5324-8-2);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-opacity:0;display:inline"
id="path5299-6-1-4"
sodipodi:cx="-24.925219"
sodipodi:cy="38.493507"
sodipodi:rx="1.4573514"
sodipodi:ry="1.1418424"
d="m -23.467867,38.493507 a 1.4573514,1.1418424 0 0 1 -1.457352,1.141843 1.4573514,1.1418424 0 0 1 -1.457351,-1.141843 1.4573514,1.1418424 0 0 1 1.457351,-1.141842 1.4573514,1.1418424 0 0 1 1.457352,1.141842 z"
transform="matrix(-1.1516801,0.679836,-1.0169493,-1.7297998,203.16885,363.16414)" />
<path
sodipodi:type="arc"
style="fill:#ff5555;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-opacity:0;display:inline"
id="path5297-7-2"
sodipodi:cx="-96.635925"
sodipodi:cy="76.534889"
sodipodi:rx="2.8846545"
sodipodi:ry="2.8846545"
d="m -93.751271,76.534889 a 2.8846545,2.8846545 0 0 1 -2.884654,2.884655 2.8846545,2.8846545 0 0 1 -2.884655,-2.884655 2.8846545,2.8846545 0 0 1 2.884655,-2.884654 2.8846545,2.8846545 0 0 1 2.884654,2.884654 z"
transform="matrix(0.87199948,0,0,0.87199948,277.1368,-45.343722)" />
<path
sodipodi:type="arc"
style="fill:url(#linearGradient5324-8-6);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-opacity:0;display:inline"
id="path5299-6-1-45"
sodipodi:cx="-24.925219"
sodipodi:cy="38.493507"
sodipodi:rx="1.4573514"
sodipodi:ry="1.1418424"
d="m -23.467867,38.493507 a 1.4573514,1.1418424 0 0 1 -1.457352,1.141843 1.4573514,1.1418424 0 0 1 -1.457351,-1.141843 1.4573514,1.1418424 0 0 1 1.457351,-1.141842 1.4573514,1.1418424 0 0 1 1.457352,1.141842 z"
transform="matrix(-1.1516801,0.679836,-1.0169493,-1.7297998,202.86495,105.18681)" />
<path
sodipodi:type="arc"
style="fill:#ff5555;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-opacity:0;display:inline"
id="path5297-7-1"
sodipodi:cx="-96.635925"
sodipodi:cy="76.534889"
sodipodi:rx="2.8846545"
sodipodi:ry="2.8846545"
d="m -93.751271,76.534889 a 2.8846545,2.8846545 0 0 1 -2.884654,2.884655 2.8846545,2.8846545 0 0 1 -2.884655,-2.884655 2.8846545,2.8846545 0 0 1 2.884655,-2.884654 2.8846545,2.8846545 0 0 1 2.884654,2.884654 z"
transform="matrix(0.87199948,0,0,0.87199948,105.6435,-45.047277)" />
<path
sodipodi:type="arc"
style="fill:url(#linearGradient5324-8-8);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-opacity:0;display:inline"
id="path5299-6-1-49"
sodipodi:cx="-24.925219"
sodipodi:cy="38.493507"
sodipodi:rx="1.4573514"
sodipodi:ry="1.1418424"
d="m -23.467867,38.493507 a 1.4573514,1.1418424 0 0 1 -1.457352,1.141843 1.4573514,1.1418424 0 0 1 -1.457351,-1.141843 1.4573514,1.1418424 0 0 1 1.457351,-1.141842 1.4573514,1.1418424 0 0 1 1.457352,1.141842 z"
transform="matrix(-1.1516801,0.679836,-1.0169493,-1.7297998,31.371657,105.48325)" />
<path
sodipodi:type="arc"
style="fill:#2c9be5;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-opacity:1"
id="path5461"
sodipodi:cx="-84.135757"
sodipodi:cy="155.38211"
sodipodi:rx="69.231705"
sodipodi:ry="144.23273"
d="M -14.904053,155.38211 A 69.231705,144.23273 0 0 1 -84.135757,299.61484 69.231705,144.23273 0 0 1 -153.36746,155.38211 69.231705,144.23273 0 0 1 -84.135757,11.149384 69.231705,144.23273 0 0 1 -14.904053,155.38211 Z"
transform="matrix(1.2631217,0,0,0.87199948,213.6725,14.244327)" />
<path
sodipodi:type="arc"
style="fill:#c87137;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-opacity:0"
id="path5461-8"
sodipodi:cx="-84.135757"
sodipodi:cy="155.38211"
sodipodi:rx="69.231705"
sodipodi:ry="144.23273"
d="M -14.904053,155.38211 A 69.231705,144.23273 0 0 1 -84.135757,299.61484 69.231705,144.23273 0 0 1 -153.36746,155.38211 69.231705,144.23273 0 0 1 -84.135757,11.149384 69.231705,144.23273 0 0 1 -14.904053,155.38211 Z"
transform="matrix(1.228342,0,0,0.85746409,211.0465,16.713831)" />
<g
style="font-size:456.36495972000000000px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Adobe Devanagari;-inkscape-font-specification:Adobe Devanagari"
id="text3041">
<path
d="m 79.328974,244.81143 c 11.875132,-0.17178 23.276816,-2.72509 34.205086,-7.65994 10.92805,-4.93485 20.99273,-11.22063 30.19407,-18.85736 14.8694,-12.81759 26.18753,-28.46241 33.9544,-46.93451 7.76653,-18.47196 11.67541,-37.06933 11.72666,-55.79218 -0.17195,-21.573012 -5.12073,-37.979182 -14.84634,-49.218557 -9.72596,-11.239028 -23.19814,-16.893446 -40.4166,-16.963272 -6.80586,0.06518 -14.19653,1.327911 -22.17203,3.788185 C 103.9985,55.634444 96.162168,58.90268 88.465187,62.978512 70.18341,72.569846 54.993544,87.425461 42.895541,107.5454 30.79746,127.66561 24.520963,151.65743 24.06603,179.52093 c -0.09287,17.83144 4.326677,33.03059 13.25865,45.5975 8.931905,12.56694 22.933322,19.13126 42.004294,19.693 z m 15.152743,-17.38109 c -12.381318,-0.22747 -21.712501,-5.06483 -27.993578,-14.5121 -6.281203,-9.44721 -9.428736,-22.13948 -9.44261,-38.07683 0.803078,-30.71856 6.160384,-54.73824 16.071935,-72.05909 9.911411,-17.320586 19.558276,-28.137331 28.940626,-32.450271 2.76212,-1.123286 5.59397,-1.996054 8.49556,-2.618305 2.90138,-0.621906 6.01178,-0.937588 9.33119,-0.947046 10.9002,-0.08339 19.73929,3.927626 26.5173,12.03306 6.77774,8.105756 10.26881,20.807308 10.47322,38.104692 -0.53402,26.84701 -5.59422,50.03105 -15.18059,69.5522 -9.58666,19.52126 -20.49625,32.06497 -32.72881,37.63117 -4.38252,2.11694 -9.21059,3.23111 -14.484243,3.34252 z"
style="font-style:italic;fill:#ffffff;fill-opacity:1"
id="path3046" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 14 KiB

+250
View File
@@ -0,0 +1,250 @@
/*
* Simple routing to extract a single file from a xz archive
* Heavily based from doc/examples/02_decompress.c obtained from
* the official xz git repository: git.tukaani.org/xz.git
* The license from the original file header follows
*
* Author: Lasse Collin
* This file has been put into the public domain.
* You can do whatever you want with this file.
*/
#include <lzma.h>
#include <QDebug>
#include "decompress.h"
XzDecompressor::XzDecompressor(QObject *parent)
: QObject(parent)
{
}
bool XzDecompressor::decompress(QBuffer *in, QBuffer *out)
{
lzma_stream strm = LZMA_STREAM_INIT;
bool success;
if (!init_decoder(&strm)) {
return false;
}
success = internal_decompress(&strm, in, out);
// Free the memory allocated for the decoder. This only needs to be
// done after the last file.
lzma_end(&strm);
return success;
}
bool XzDecompressor::init_decoder(lzma_stream *strm)
{
// Initialize a .xz decoder. The decoder supports a memory usage limit
// and a set of flags.
//
// The memory usage of the decompressor depends on the settings used
// to compress a .xz file. It can vary from less than a megabyte to
// a few gigabytes, but in practice (at least for now) it rarely
// exceeds 65 MiB because that's how much memory is required to
// decompress files created with "xz -9". Settings requiring more
// memory take extra effort to use and don't (at least for now)
// provide significantly better compression in most cases.
//
// Memory usage limit is useful if it is important that the
// decompressor won't consume gigabytes of memory. The need
// for limiting depends on the application. In this example,
// no memory usage limiting is used. This is done by setting
// the limit to UINT64_MAX.
//
// The .xz format allows concatenating compressed files as is:
//
// echo foo | xz > foobar.xz
// echo bar | xz >> foobar.xz
//
// When decompressing normal standalone .xz files, LZMA_CONCATENATED
// should always be used to support decompression of concatenated
// .xz files. If LZMA_CONCATENATED isn't used, the decoder will stop
// after the first .xz stream. This can be useful when .xz data has
// been embedded inside another file format.
//
// Flags other than LZMA_CONCATENATED are supported too, and can
// be combined with bitwise-or. See lzma/container.h
// (src/liblzma/api/lzma/container.h in the source package or e.g.
// /usr/include/lzma/container.h depending on the install prefix)
// for details.
lzma_ret ret = lzma_stream_decoder(
strm, UINT64_MAX, LZMA_CONCATENATED);
// Return successfully if the initialization went fine.
if (ret == LZMA_OK)
return true;
// Something went wrong. The possible errors are documented in
// lzma/container.h (src/liblzma/api/lzma/container.h in the source
// package or e.g. /usr/include/lzma/container.h depending on the
// install prefix).
//
// Note that LZMA_MEMLIMIT_ERROR is never possible here. If you
// specify a very tiny limit, the error will be delayed until
// the first headers have been parsed by a call to lzma_code().
const char *msg;
switch (ret) {
case LZMA_MEM_ERROR:
msg = "Memory allocation failed";
break;
case LZMA_OPTIONS_ERROR:
msg = "Unsupported decompressor flags";
break;
default:
// This is most likely LZMA_PROG_ERROR indicating a bug in
// this program or in liblzma. It is inconvenient to have a
// separate error message for errors that should be impossible
// to occur, but knowing the error code is important for
// debugging. That's why it is good to print the error code
// at least when there is no good error message to show.
msg = "Unknown error, possibly a bug";
break;
}
qDebug() << "Error initializing the decoder:" << msg << "(error code " << ret << ")";
return false;
}
bool XzDecompressor::internal_decompress(lzma_stream *strm, QBuffer *in, QBuffer *out)
{
// When LZMA_CONCATENATED flag was used when initializing the decoder,
// we need to tell lzma_code() when there will be no more input.
// This is done by setting action to LZMA_FINISH instead of LZMA_RUN
// in the same way as it is done when encoding.
//
// When LZMA_CONCATENATED isn't used, there is no need to use
// LZMA_FINISH to tell when all the input has been read, but it
// is still OK to use it if you want. When LZMA_CONCATENATED isn't
// used, the decoder will stop after the first .xz stream. In that
// case some unused data may be left in strm->next_in.
lzma_action action = LZMA_RUN;
uint8_t inbuf[BUFSIZ];
uint8_t outbuf[BUFSIZ];
qint64 bytesAvailable;
strm->next_in = NULL;
strm->avail_in = 0;
strm->next_out = outbuf;
strm->avail_out = sizeof(outbuf);
while (true) {
if (strm->avail_in == 0) {
strm->next_in = inbuf;
bytesAvailable = in->bytesAvailable();
if(bytesAvailable == 0) {
// Once the end of the input file has been reached,
// we need to tell lzma_code() that no more input
// will be coming. As said before, this isn't required
// if the LZMA_CONCATENATED flag isn't used when
// initializing the decoder.
action = LZMA_FINISH;
} else if(bytesAvailable >= BUFSIZ) {
in->read((char*) inbuf, BUFSIZ);
strm->avail_in = BUFSIZ;
} else {
in->read((char*) inbuf, bytesAvailable);
strm->avail_in = bytesAvailable;
}
}
lzma_ret ret = lzma_code(strm, action);
if (strm->avail_out == 0 || ret == LZMA_STREAM_END) {
qint64 write_size = sizeof(outbuf) - strm->avail_out;
if (out->write((char *) outbuf, write_size) != write_size) {
qDebug() << "Write error";
return false;
}
strm->next_out = outbuf;
strm->avail_out = sizeof(outbuf);
}
if (ret != LZMA_OK) {
// Once everything has been decoded successfully, the
// return value of lzma_code() will be LZMA_STREAM_END.
//
// It is important to check for LZMA_STREAM_END. Do not
// assume that getting ret != LZMA_OK would mean that
// everything has gone well or that when you aren't
// getting more output it must have successfully
// decoded everything.
if (ret == LZMA_STREAM_END)
return true;
// It's not LZMA_OK nor LZMA_STREAM_END,
// so it must be an error code. See lzma/base.h
// (src/liblzma/api/lzma/base.h in the source package
// or e.g. /usr/include/lzma/base.h depending on the
// install prefix) for the list and documentation of
// possible values. Many values listen in lzma_ret
// enumeration aren't possible in this example, but
// can be made possible by enabling memory usage limit
// or adding flags to the decoder initialization.
const char *msg;
switch (ret) {
case LZMA_MEM_ERROR:
msg = "Memory allocation failed";
break;
case LZMA_FORMAT_ERROR:
// .xz magic bytes weren't found.
msg = "The input is not in the .xz format";
break;
case LZMA_OPTIONS_ERROR:
// For example, the headers specify a filter
// that isn't supported by this liblzma
// version (or it hasn't been enabled when
// building liblzma, but no-one sane does
// that unless building liblzma for an
// embedded system). Upgrading to a newer
// liblzma might help.
//
// Note that it is unlikely that the file has
// accidentally became corrupt if you get this
// error. The integrity of the .xz headers is
// always verified with a CRC32, so
// unintentionally corrupt files can be
// distinguished from unsupported files.
msg = "Unsupported compression options";
break;
case LZMA_DATA_ERROR:
msg = "Compressed file is corrupt";
break;
case LZMA_BUF_ERROR:
// Typically this error means that a valid
// file has got truncated, but it might also
// be a damaged part in the file that makes
// the decoder think the file is truncated.
// If you prefer, you can use the same error
// message for this as for LZMA_DATA_ERROR.
msg = "Compressed file is truncated or "
"otherwise corrupt";
break;
default:
// This is most likely LZMA_PROG_ERROR.
msg = "Unknown error, possibly a bug";
break;
}
qDebug() << "Decoder error:" << msg << "(error code " << ret << ")";
return false;
}
}
}
+19
View File
@@ -0,0 +1,19 @@
#ifndef XZ_DECOMPRESS_H
#define XZ_DECOMPRESS_H
#include <lzma.h>
#include <QBuffer>
class XzDecompressor : public QObject
{
Q_OBJECT
public:
XzDecompressor(QObject *parent = 0);
~XzDecompressor() { };
bool decompress(QBuffer *in, QBuffer *out);
private:
bool init_decoder(lzma_stream *strm);
bool internal_decompress(lzma_stream *strm, QBuffer *in, QBuffer *out);
};
#endif
+98
View File
@@ -0,0 +1,98 @@
#include "main.h"
#include "interface/theme_manager.h"
#include "oraclewizard.h"
#include <../../cockatrice/src/client/settings/cache_settings.h>
#include <QApplication>
#include <QCommandLineParser>
#include <QIcon>
#include <QLibraryInfo>
#include <QTimer>
#include <QTranslator>
QTranslator *translator, *qtTranslator;
ThemeManager *themeManager;
const QString translationPrefix = "oracle";
QString translationPath;
bool isSpoilersOnly;
bool isBackgrounded;
void installNewTranslator()
{
QString lang = SettingsCache::instance().getLang();
QString qtNameHint = "qt_" + lang;
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
QString qtTranslationPath = QLibraryInfo::path(QLibraryInfo::TranslationsPath);
#else
QString qtTranslationPath = QLibraryInfo::location(QLibraryInfo::TranslationsPath);
#endif
bool qtTranslationLoaded = qtTranslator->load(qtNameHint, qtTranslationPath);
if (!qtTranslationLoaded) {
qDebug() << "Unable to load qt translation" << qtNameHint << "at" << qtTranslationPath;
} else {
qDebug() << "Loaded qt translation" << qtNameHint << "at" << qtTranslationPath;
}
qApp->installTranslator(qtTranslator);
QString appNameHint = translationPrefix + "_" + lang;
bool appTranslationLoaded = qtTranslator->load(appNameHint, translationPath);
if (!appTranslationLoaded) {
qDebug() << "Unable to load" << translationPrefix << "translation" << appNameHint << "at" << translationPath;
} else {
qDebug() << "Loaded" << translationPrefix << "translation" << appNameHint << "at" << translationPath;
}
qApp->installTranslator(translator);
}
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QCoreApplication::setOrganizationName("Cockatrice");
QCoreApplication::setOrganizationDomain("cockatrice");
// this can't be changed, as it influences the default save path for cards.xml
QCoreApplication::setApplicationName("Cockatrice");
// If the program is opened with the -s flag, it will only do spoilers. Otherwise it will do MTGJSON/Tokens
QCommandLineParser parser;
QCommandLineOption spoilersOnlyOption("s", QCoreApplication::translate("main", "Only run in spoiler mode"));
QCommandLineOption backgroundOption("b", QCoreApplication::translate("main", "Run in no-confirm background mode"));
parser.addOption(spoilersOnlyOption);
parser.addOption(backgroundOption);
parser.process(app);
isSpoilersOnly = parser.isSet(spoilersOnlyOption);
isBackgrounded = parser.isSet(backgroundOption);
#ifdef Q_OS_MAC
translationPath = qApp->applicationDirPath() + "/../Resources/translations";
#elif defined(Q_OS_WIN)
translationPath = qApp->applicationDirPath() + "/translations";
#else // linux
translationPath = qApp->applicationDirPath() + "/../share/oracle/translations";
#endif
themeManager = new ThemeManager;
qtTranslator = new QTranslator;
translator = new QTranslator;
installNewTranslator();
OracleWizard wizard;
QIcon icon("theme:appicon.svg");
wizard.setWindowIcon(icon);
// set name of the app desktop file; used by wayland to load the window icon
QGuiApplication::setDesktopFileName("oracle");
wizard.show();
if (isBackgrounded) {
QTimer::singleShot(0, &wizard, [&wizard]() { wizard.runInBackground(); });
}
return app.exec();
}
+14
View File
@@ -0,0 +1,14 @@
#ifndef MAIN_H
#define MAIN_H
class QTranslator;
class QString;
extern QTranslator *translator;
extern const QString translationPrefix;
extern QString translationPath;
extern bool isSpoilersOnly;
void installNewTranslator();
#endif
+580
View File
@@ -0,0 +1,580 @@
#include "oracleimporter.h"
#include "libcockatrice/interfaces/noop_card_preference_provider.h"
#include "libcockatrice/interfaces/noop_card_set_priority_controller.h"
#include "parsehelpers.h"
#include "qt-json/json.h"
#include <QDebug>
#include <QRegularExpression>
#include <algorithm>
#include <climits>
#include <libcockatrice/card/database/parser/cockatrice_xml_4.h>
#include <libcockatrice/card/relation/card_relation.h>
static const QList<AllowedCount> kConstructedCounts = {{4, "legal"}, {0, "banned"}};
static const QList<AllowedCount> kSingletonCounts = {{1, "legal"}, {0, "banned"}};
SplitCardPart::SplitCardPart(const QString &_name,
const QString &_text,
const QVariantHash &_properties,
const PrintingInfo &_printingInfo)
: name(_name), text(_text), properties(_properties), printingInfo(_printingInfo)
{
}
const QRegularExpression OracleImporter::formatRegex = QRegularExpression("^format-");
OracleImporter::OracleImporter(QObject *parent) : QObject(parent)
{
}
static CardSet::Priority getSetPriority(const QString &setType, const QString &shortName)
{
if (!setTypePriorities.contains(setType.toLower())) {
qDebug() << "warning: Set type" << setType << "unrecognized for prioritization";
}
CardSet::Priority priority = setTypePriorities.value(setType.toLower(), CardSet::PriorityOther);
if (nonEnglishSets.contains(shortName)) {
priority = CardSet::PriorityLowest;
}
return priority;
}
bool OracleImporter::readSetsFromByteArray(const QByteArray &data)
{
bool ok;
auto setsMap = QtJson::Json::parse(QString(data), ok).toMap().value("data").toMap();
if (!ok) {
qDebug() << "error: QtJson::Json::parse()";
return false;
}
QList<SetToDownload> newSetList;
QListIterator it(setsMap.values());
while (it.hasNext()) {
QVariantMap map = it.next().toMap();
QString shortName = map.value("code").toString().toUpper();
QString longName = map.value("name").toString();
QList<QVariant> setCards = map.value("cards").toList();
QString setType = map.value("type").toString();
QDate releaseDate = map.value("releaseDate").toDate();
CardSet::Priority priority = getSetPriority(setType, shortName);
// capitalize set type
if (setType.length() > 0) {
// basic grammar for words that aren't capitalized, like in "From the Vault"
const QStringList noCapitalize = {"the", "a", "an", "on", "to", "for", "of", "in", "and", "with", "or"};
QStringList words = setType.split("_");
setType.clear();
bool first = false;
for (auto &item : words) {
if (first && noCapitalize.contains(item)) {
setType += item + QString(" ");
} else {
setType += item[0].toUpper() + item.mid(1, -1) + QString(" ");
first = true;
}
}
setType = setType.trimmed();
}
newSetList.append(SetToDownload(shortName, longName, setCards, priority, setType, releaseDate));
}
std::sort(newSetList.begin(), newSetList.end());
if (newSetList.isEmpty()) {
return false;
}
allSets = newSetList;
return true;
}
static QString getMainCardType(const QStringList &typeList)
{
if (typeList.isEmpty()) {
return {};
}
static const QStringList typePriority = {"Planeswalker", "Creature", "Land", "Sorcery",
"Instant", "Artifact", "Enchantment"};
for (const auto &type : typePriority) {
if (typeList.contains(type)) {
return type;
}
}
return typeList.first();
}
/**
* Sorts and deduplicates the color chars in the string by WUBRG order.
*
* @param colors The string containing the color chars. Will be modified in-place
*/
static void sortAndReduceColors(QString &colors)
{
// sort
static const QHash<QChar, unsigned int> colorOrder{{'W', 0}, {'U', 1}, {'B', 2}, {'R', 3}, {'G', 4}};
std::sort(colors.begin(), colors.end(),
[](const QChar a, const QChar b) { return colorOrder.value(a, INT_MAX) < colorOrder.value(b, INT_MAX); });
// reduce
QChar lastChar = '\0';
for (int i = 0; i < colors.size(); ++i) {
if (colors.at(i) == lastChar) {
colors.remove(i, 1);
} else {
lastChar = colors.at(i);
}
}
}
CardInfoPtr OracleImporter::addCard(QString name,
const QString &text,
bool isToken,
QVariantHash properties,
const QList<CardRelation *> &relatedCards,
const PrintingInfo &printingInfo)
{
// Workaround for card name weirdness
name = name.replace("Æ", "AE");
name = name.replace("’", "'");
if (cards.contains(name)) {
CardInfoPtr card = cards.value(name);
card->addToSet(printingInfo.getSet(), printingInfo);
if (card->getProperties().filter(formatRegex).empty()) {
card->combineLegalities(properties);
}
return card;
}
// Remove {} around mana costs, except if it's split cost
QString manacost = properties.value("manacost").toString();
if (!manacost.isEmpty()) {
QStringList symbols = manacost.split("}");
QString formattedCardCost;
for (QString symbol : symbols) {
static const auto manaCostPattern = QRegularExpression("[0-9WUBGRP]/[0-9WUBGRP]");
if (symbol.contains(manaCostPattern)) {
symbol.append("}");
} else {
symbol.remove(QChar('{'));
}
formattedCardCost.append(symbol);
}
properties.insert("manacost", formattedCardCost);
}
// fix colors
QString allColors = properties.value("colors").toString();
if (allColors.size() > 1) {
sortAndReduceColors(allColors);
properties.insert("colors", allColors);
}
QString allColorIdent = properties.value("coloridentity").toString();
if (allColorIdent.size() > 1) {
sortAndReduceColors(allColorIdent);
properties.insert("coloridentity", allColorIdent);
}
// DETECT CARD POSITIONING INFO
bool landscapeOrientation = properties.value("maintype").toString() == "Battle" ||
properties.value("layout").toString() == "split" ||
properties.value("layout").toString() == "planar";
// cards that enter the field tapped
bool cipt = parseCipt(name, text) || landscapeOrientation;
// table row
int tableRow = 1;
QString mainCardType = properties.value("maintype").toString();
if (mainCardType == "Land") {
tableRow = 0;
} else if (mainCardType == "Sorcery" || mainCardType == "Instant") {
tableRow = 3;
} else if (mainCardType == "Creature") {
tableRow = 2;
}
// card side
QString side = properties.value("side").toString() == "b" ? "back" : "front";
properties.insert("side", side);
// upsideDown (flip cards)
QString layout = properties.value("layout").toString();
bool upsideDown = layout == "flip" && side == "back";
// insert the card and its properties
SetToPrintingsMap setsInfo;
setsInfo[printingInfo.getSet()->getShortName()].append(printingInfo);
CardInfo::UiAttributes attributes = {cipt, landscapeOrientation, tableRow, upsideDown};
CardInfoPtr newCard =
CardInfo::newInstance(name, text, isToken, properties, relatedCards, {}, setsInfo, attributes);
if (name.isEmpty()) {
qDebug() << "warning: an empty card was added to set" << printingInfo.getSet()->getShortName();
}
cards.insert(name, newCard);
return newCard;
}
static QString getStringPropertyFromMap(const QVariantMap &card, const QString &propertyName)
{
return card.contains(propertyName) ? card.value(propertyName).toString() : QString("");
}
int OracleImporter::importCardsFromSet(const CardSetPtr &currentSet, const QList<QVariant> &cardsList)
{
// mtgjson name => xml name
static const QMap<QString, QString> cardProperties{
{"manaCost", "manacost"}, {"manaValue", "cmc"}, {"type", "type"},
{"loyalty", "loyalty"}, {"layout", "layout"}, {"side", "side"},
{"convertedManaCost", "cmc"}, // old name for manaValue, for backwards compatibility
};
// mtgjson name => xml name
static const QMap<QString, QString> setInfoProperties{
{"number", "num"}, {"rarity", "rarity"}, {"isOnlineOnly", "isOnlineOnly"}, {"isRebalanced", "isRebalanced"}};
// mtgjson name => xml name
static const QMap<QString, QString> identifierProperties{{"multiverseId", "muid"}, {"scryfallId", "uuid"}};
static const QString ptSeparator = "/";
static constexpr bool isToken = false;
static const QList<QString> setsWithCardsWithSameNameButDifferentText = {"UST"};
int numCards = 0;
// Keeps track of any split card faces encountered so far
QMap<QString, QPair<QList<SplitCardPart>, QString>> splitCards;
// Keeps track of all names encountered so far
QList<QString> allNameProps;
for (const QVariant &cardVar : cardsList) {
QVariantMap card = cardVar.toMap();
/* Currently used layouts are:
* augment, double_faced_token, flip, host, leveler, meld, normal, planar,
* saga, scheme, split, token, transform, vanguard
*/
QString layout = getStringPropertyFromMap(card, "layout");
// don't import tokens from the json file
if (layout == "token") {
continue;
}
// normal cards handling
QString name = getStringPropertyFromMap(card, "name");
QString text = getStringPropertyFromMap(card, "text");
QString faceName = getStringPropertyFromMap(card, "faceName");
if (faceName.isEmpty()) {
faceName = name;
}
// card properties
QVariantHash properties;
for (auto i = cardProperties.cbegin(), end = cardProperties.cend(); i != end; ++i) {
QString mtgjsonProperty = i.key();
QString xmlPropertyName = i.value();
QString propertyValue = getStringPropertyFromMap(card, mtgjsonProperty);
if (!propertyValue.isEmpty()) {
properties.insert(xmlPropertyName, propertyValue);
}
}
// per-set properties
PrintingInfo printingInfo = PrintingInfo(currentSet);
for (auto i = setInfoProperties.cbegin(), end = setInfoProperties.cend(); i != end; ++i) {
QString mtgjsonProperty = i.key();
QString xmlPropertyName = i.value();
QString propertyValue = getStringPropertyFromMap(card, mtgjsonProperty);
if (!propertyValue.isEmpty()) {
printingInfo.setProperty(xmlPropertyName, propertyValue);
}
}
// handle flavorNames specially due to double-faced cards
QString faceFlavorName = getStringPropertyFromMap(card, "faceFlavorName");
QString flavorName = !faceFlavorName.isEmpty() ? faceFlavorName : getStringPropertyFromMap(card, "flavorName");
if (!flavorName.isEmpty()) {
printingInfo.setProperty("flavorName", flavorName);
}
// Identifiers
for (auto i = identifierProperties.cbegin(), end = identifierProperties.cend(); i != end; ++i) {
QString mtgjsonProperty = i.key();
QString xmlPropertyName = i.value();
QString propertyValue = getStringPropertyFromMap(card.value("identifiers").toMap(), mtgjsonProperty);
if (!propertyValue.isEmpty()) {
printingInfo.setProperty(xmlPropertyName, propertyValue);
}
}
QString numComponent;
const QString numProperty = printingInfo.getProperty("num");
const QChar lastChar = numProperty.isEmpty() ? QChar() : numProperty.back();
// Un-Sets do some wonky stuff. Split up these cards as individual entries.
// these cards will have a num with a letter (abc) behind it, put that letter into the name
if (setsWithCardsWithSameNameButDifferentText.contains(currentSet->getShortName()) &&
allNameProps.contains(faceName) && layout == "normal" && lastChar.isLetter()) {
numComponent = " (" + QString(lastChar).toLower() + ")";
}
allNameProps.append(faceName);
// special handling properties
QString colors = card.value("colors").toStringList().join("");
if (!colors.isEmpty()) {
properties.insert("colors", colors);
}
// special handling properties
QString colorIdentity = card.value("colorIdentity").toStringList().join("");
if (!colorIdentity.isEmpty()) {
properties.insert("coloridentity", colorIdentity);
}
const auto &mainCardType = getMainCardType(card.value("types").toStringList());
if (mainCardType.isEmpty()) {
qDebug() << "warning: no mainCardType for card:" << name;
} else {
properties.insert("maintype", mainCardType);
}
// Depending on whether power and/or toughness are present, the format
// is either P/T (most common), P (no toughness), or /T (no power).
QString power = getStringPropertyFromMap(card, "power");
QString toughness = getStringPropertyFromMap(card, "toughness");
if (toughness.isEmpty() && !power.isEmpty()) {
properties.insert("pt", power);
} else if (!toughness.isEmpty()) {
properties.insert("pt", power + ptSeparator + toughness);
}
auto legalities = card.value("legalities").toMap();
for (auto i = legalities.cbegin(), end = legalities.cend(); i != end; ++i) {
properties.insert(QString("format-%1").arg(i.key()), i.value().toString().toLower());
}
// split cards are considered a single card, enqueue for later merging
if (layout == "split" || layout == "aftermath" || layout == "adventure" || layout == "prepare") {
auto _faceName = getStringPropertyFromMap(card, "faceName");
SplitCardPart split(_faceName, text, properties, printingInfo);
auto found_iter = splitCards.find(name + numProperty);
if (found_iter == splitCards.end()) {
splitCards.insert(name + numProperty, {{split}, name});
} else {
found_iter->first.append(split);
}
} else {
// relations
QList<CardRelation *> relatedCards;
// add other face for split cards as card relation
if (!getStringPropertyFromMap(card, "side").isEmpty()) {
auto faceManaValue = getStringPropertyFromMap(card, "faceManaValue");
if (faceManaValue.isEmpty()) {
// check the old name for the property, for backwards compatibility purposes
faceManaValue = getStringPropertyFromMap(card, "faceConvertedManaCost");
}
properties["cmc"] = faceManaValue;
if (layout == "meld") { // meld cards don't work
static const QRegularExpression meldNameRegex{"then meld them into ([^\\.]*)"};
QString additionalName = meldNameRegex.match(text).captured(1);
if (!additionalName.isNull()) {
relatedCards.append(new CardRelation(additionalName, CardRelationType::TransformInto));
}
} else {
for (const QString &additionalName : name.split(" // ")) {
if (additionalName != faceName) {
relatedCards.append(new CardRelation(additionalName, CardRelationType::TransformInto));
}
}
}
name = faceName;
}
// mtgjon related cards
if (card.contains("relatedCards")) {
QVariantMap givenRelated = card.value("relatedCards").toMap();
// conjured cards from a spellbook
if (givenRelated.contains("spellbook")) {
auto spbk = givenRelated.value("spellbook").toStringList();
for (const QString &spbkName : spbk) {
relatedCards.append(
new CardRelation(spbkName, CardRelationType::DoesNotAttach, false, false, 1, true));
}
}
}
CardInfoPtr newCard = addCard(name + numComponent, text, isToken, properties, relatedCards, printingInfo);
numCards++;
}
}
// split cards handling
static const QString splitCardPropSeparator = QString(" // ");
static const QString splitCardTextSeparator = QString("\n\n---\n\n");
static const QList<CardRelation *> noRelatedCards = {};
QList<QPair<QList<SplitCardPart>, QString>> partsAndNames = splitCards.values();
for (auto [splitCardParts, name] : partsAndNames) {
QString text;
QVariantHash properties;
PrintingInfo printingInfo;
for (const SplitCardPart &tmp : splitCardParts) {
if (!text.isEmpty()) {
text.append(splitCardTextSeparator);
}
text.append(tmp.getText());
if (properties.isEmpty()) {
properties = tmp.getProperties();
printingInfo = tmp.getPrintingInfo();
} else {
const QVariantHash &tmpProps = tmp.getProperties();
for (auto i = tmpProps.cbegin(), end = tmpProps.cend(); i != end; ++i) {
QString prop = i.key();
QString originalPropertyValue = properties.value(prop).toString();
QString thisCardPropertyValue = i.value().toString();
if (!thisCardPropertyValue.isEmpty() && originalPropertyValue != thisCardPropertyValue) {
if (originalPropertyValue.isEmpty()) { // don't create //es if one field is empty
properties.insert(prop, thisCardPropertyValue);
} else if (prop == "colors") { // the card is both colors
properties.insert(prop, originalPropertyValue + thisCardPropertyValue);
} else if (prop == "maintype") { // don't create maintypes with //es in them
continue;
} else {
properties.insert(prop,
originalPropertyValue + splitCardPropSeparator + thisCardPropertyValue);
}
}
}
}
}
CardInfoPtr newCard = addCard(name, text, isToken, properties, noRelatedCards, printingInfo);
numCards++;
}
return numCards;
}
FormatRulesNameMap OracleImporter::createDefaultMagicFormats()
{
// Predefined common exceptions
CardCondition superTypeIsBasic;
superTypeIsBasic.field = "type";
superTypeIsBasic.matchType = "regex";
superTypeIsBasic.value = "\bBasic\b[^—]+\bLand\b";
ExceptionRule basicLands;
basicLands.conditions.append(superTypeIsBasic);
CardCondition anyNumberAllowed;
anyNumberAllowed.field = "text";
anyNumberAllowed.matchType = "contains";
anyNumberAllowed.value = "A deck can have any number of";
ExceptionRule mayContainAnyNumber;
mayContainAnyNumber.conditions.append(anyNumberAllowed);
// Map to store default rules
FormatRulesNameMap defaultFormatRulesNameMap;
// ----------------- Helper lambda to create format -----------------
auto makeFormat = [&](const QString &name, int minDeck = 60, int maxDeck = -1, int maxSideboardSize = 15,
const QList<AllowedCount> &allowedCounts = kConstructedCounts) -> FormatRulesPtr {
FormatRulesPtr f(new FormatRules);
f->formatName = name;
f->allowedCounts = allowedCounts;
f->minDeckSize = minDeck;
f->maxDeckSize = maxDeck;
f->maxSideboardSize = maxSideboardSize;
f->exceptions.append(basicLands);
f->exceptions.append(mayContainAnyNumber);
defaultFormatRulesNameMap.insert(name.toLower(), f);
return f;
};
// ----------------- Standard formats -----------------
makeFormat("Standard");
makeFormat("Modern");
makeFormat("Legacy");
makeFormat("Pioneer");
makeFormat("Historic");
makeFormat("Timeless");
makeFormat("Future");
makeFormat("OldSchool");
makeFormat("Premodern");
makeFormat("Pauper");
makeFormat("Penny");
// ----------------- Singleton formats -----------------
makeFormat("Commander", 100, 100, 15, kSingletonCounts);
makeFormat("Duel", 100, 100, 15, kSingletonCounts);
makeFormat("Brawl", 60, 60, 15, kSingletonCounts);
makeFormat("StandardBrawl", 60, 60, 15, kSingletonCounts);
makeFormat("Oathbreaker", 60, 60, 15, kSingletonCounts);
makeFormat("PauperCommander", 100, 100, 15, kSingletonCounts);
makeFormat("Predh", 100, 100, 15, kSingletonCounts);
// ----------------- Restricted formats -----------------
makeFormat("Vintage", 60, -1, 15, {{4, "legal"}, {1, "restricted"}, {0, "banned"}});
return defaultFormatRulesNameMap;
}
int OracleImporter::startImport()
{
static ICardSetPriorityController *noOpController = new NoopCardSetPriorityController();
// add an empty set for tokens
CardSetPtr tokenSet =
CardSet::newInstance(noOpController, CardSet::TOKENS_SETNAME, tr("Dummy set containing tokens"), "Tokens");
sets.insert(CardSet::TOKENS_SETNAME, tokenSet);
int setIndex = 0;
for (const SetToDownload &curSetToParse : allSets) {
CardSetPtr newSet = CardSet::newInstance(noOpController, curSetToParse.getShortName(),
curSetToParse.getLongName(), curSetToParse.getSetType(),
curSetToParse.getReleaseDate(), curSetToParse.getPriority());
if (!sets.contains(newSet->getShortName())) {
sets.insert(newSet->getShortName(), newSet);
}
int numCardsInSet = importCardsFromSet(newSet, curSetToParse.getCards());
++setIndex;
emit setIndexChanged(numCardsInSet, setIndex, curSetToParse.getLongName());
}
emit setIndexChanged(0, setIndex, QString());
// total number of sets
return setIndex;
}
bool OracleImporter::saveToFile(const QString &fileName, const QString &sourceUrl, const QString &sourceVersion)
{
CockatriceXml4Parser parser(new NoopCardPreferenceProvider(), new NoopCardSetPriorityController());
return parser.saveToFile(createDefaultMagicFormats(), sets, cards, fileName, sourceUrl, sourceVersion);
}
void OracleImporter::clear()
{
sets.clear();
cards.clear();
allSets.clear();
}
+170
View File
@@ -0,0 +1,170 @@
#ifndef ORACLEIMPORTER_H
#define ORACLEIMPORTER_H
#include <QMap>
#include <QRegularExpression>
#include <QVariant>
#include <libcockatrice/card/card_info.h>
#include <utility>
// many users prefer not to see these sets with non english arts
// they will given priority PriorityLowest
const QStringList nonEnglishSets = {"4BB", "FBB", "PS11", "PSAL", "REN", "RIN"};
const QMap<QString, CardSet::Priority> setTypePriorities{
{"core", CardSet::PriorityPrimary},
{"expansion", CardSet::PriorityPrimary},
{"commander", CardSet::PrioritySecondary},
{"starter", CardSet::PrioritySecondary},
{"draft_innovation", CardSet::PrioritySecondary},
{"duel_deck", CardSet::PrioritySecondary},
{"archenemy", CardSet::PriorityReprint},
{"arsenal", CardSet::PriorityReprint},
{"box", CardSet::PriorityReprint},
{"eternal", CardSet::PriorityReprint},
{"from_the_vault", CardSet::PriorityReprint},
{"masterpiece", CardSet::PriorityReprint},
{"masters", CardSet::PriorityReprint},
{"memorabilia", CardSet::PriorityReprint},
{"planechase", CardSet::PriorityReprint},
{"premium_deck", CardSet::PriorityReprint},
{"promo", CardSet::PriorityReprint},
{"spellbook", CardSet::PriorityReprint},
{"token", CardSet::PriorityReprint},
{"treasure_chest", CardSet::PriorityReprint},
{"alchemy", CardSet::PriorityOther},
{"funny", CardSet::PriorityOther},
{"minigame", CardSet::PriorityOther},
{"vanguard", CardSet::PriorityOther},
};
class SetToDownload
{
private:
QString shortName, longName;
QList<QVariant> cards;
QDate releaseDate;
QString setType;
CardSet::Priority priority;
public:
const QString &getShortName() const
{
return shortName;
}
const QString &getLongName() const
{
return longName;
}
const QList<QVariant> &getCards() const
{
return cards;
}
const QString &getSetType() const
{
return setType;
}
const QDate &getReleaseDate() const
{
return releaseDate;
}
CardSet::Priority getPriority() const
{
return priority;
}
SetToDownload(QString _shortName,
QString _longName,
QList<QVariant> _cards,
CardSet::Priority _priority,
QString _setType = QString(),
const QDate &_releaseDate = QDate())
: shortName(std::move(_shortName)), longName(std::move(_longName)), cards(std::move(_cards)),
releaseDate(_releaseDate), setType(std::move(_setType)), priority(_priority)
{
}
bool operator<(const SetToDownload &set) const
{
return longName.compare(set.longName, Qt::CaseInsensitive) < 0;
}
};
class SplitCardPart
{
public:
SplitCardPart(const QString &_name,
const QString &_text,
const QVariantHash &_properties,
const PrintingInfo &_printingInfo);
inline const QString &getName() const
{
return name;
}
inline const QString &getText() const
{
return text;
}
inline const QVariantHash &getProperties() const
{
return properties;
}
inline const PrintingInfo &getPrintingInfo() const
{
return printingInfo;
}
private:
QString name;
QString text;
QVariantHash properties;
PrintingInfo printingInfo;
};
class OracleImporter : public QObject
{
Q_OBJECT
private:
static const QRegularExpression formatRegex;
/**
* The cards, indexed by name.
*/
CardNameMap cards;
/**
* The sets, indexed by short name.
*/
SetNameMap sets;
QList<SetToDownload> allSets;
CardInfoPtr addCard(QString name,
const QString &text,
bool isToken,
QVariantHash properties,
const QList<CardRelation *> &relatedCards,
const PrintingInfo &printingInfo);
signals:
void setIndexChanged(int cardsImported, int setIndex, const QString &setName);
void dataReadProgress(int bytesRead, int totalBytes);
public:
explicit OracleImporter(QObject *parent = nullptr);
bool readSetsFromByteArray(const QByteArray &data);
int startImport();
bool saveToFile(const QString &fileName, const QString &sourceUrl, const QString &sourceVersion);
int importCardsFromSet(const CardSetPtr &currentSet, const QList<QVariant> &cardsList);
FormatRulesNameMap createDefaultMagicFormats();
const CardNameMap &getCardList() const
{
return cards;
}
QList<SetToDownload> &getSets()
{
return allSets;
}
void clear();
};
#endif
+139
View File
@@ -0,0 +1,139 @@
#include "oraclewizard.h"
#include "client/settings/cache_settings.h"
#include "main.h"
#include "oracleimporter.h"
#include "pages.h"
#include "pagetemplates.h"
#include <QCheckBox>
#include <QFileDialog>
#include <QGridLayout>
#include <QLineEdit>
#include <QNetworkReply>
#include <QPushButton>
#include <QScrollBar>
#include <QtConcurrent>
#include <QtGui>
OracleWizard::OracleWizard(QWidget *parent) : QWizard(parent)
{
// define a dummy context that will be used where needed
QString dummy = QT_TRANSLATE_NOOP("i18n", "English");
#ifdef Q_OS_WIN
setWizardStyle(QWizard::ModernStyle);
#endif
QString oracleSettingsFile = SettingsCache::instance().getSettingsPath() + "oracle.ini";
settings = new QSettings(oracleSettingsFile, QSettings::IniFormat, this);
// We moved the oracle-specific settings from global.ini to a separate oracle.ini after 2.10
if (!QFile::exists(oracleSettingsFile)) {
migrateOracleSettings();
}
connect(&SettingsCache::instance(), &SettingsCache::langChanged, this, &OracleWizard::updateLanguage);
importer = new OracleImporter(this);
nam = new QNetworkAccessManager(this);
QList<OracleWizardPage *> pages;
if (!isSpoilersOnly) {
pages << new IntroPage << new LoadSetsPage << new SaveSetsPage << new LoadTokensPage << new OutroPage;
} else {
pages << new LoadSpoilersPage << new OutroPage;
}
for (OracleWizardPage *page : pages) {
addPage(page);
// Connect background auto-advance
connect(page, &OracleWizardPage::readyToContinue, this, [this]() {
if (backgroundMode) {
next();
}
});
}
retranslateUi();
}
/**
* Migrates the oracle-specific settings from global.ini to oracle.ini
*/
void OracleWizard::migrateOracleSettings()
{
QString filePath = SettingsCache::instance().getSettingsPath() + "global.ini";
auto globalSettings = QSettings(filePath, QSettings::IniFormat, this);
auto tryMigrateValue = [this, &globalSettings](const QString &name) {
QVariant variant = globalSettings.value(name);
if (variant.isValid()) {
settings->setValue(name, variant.toString());
}
};
tryMigrateValue("allsetsurl");
tryMigrateValue("tokensurl");
tryMigrateValue("spoilersurl");
}
void OracleWizard::updateLanguage()
{
qApp->removeTranslator(translator);
installNewTranslator();
}
void OracleWizard::changeEvent(QEvent *event)
{
if (event->type() == QEvent::LanguageChange) {
retranslateUi();
}
QDialog::changeEvent(event);
}
void OracleWizard::retranslateUi()
{
setWindowTitle(tr("Oracle Importer"));
for (int i = 0; i < pageIds().count(); i++) {
dynamic_cast<OracleWizardPage *>(page(i))->retranslateUi();
}
}
void OracleWizard::accept()
{
QDialog::accept();
}
void OracleWizard::enableButtons()
{
button(QWizard::NextButton)->setDisabled(false);
button(QWizard::BackButton)->setDisabled(false);
}
void OracleWizard::disableButtons()
{
button(QWizard::NextButton)->setDisabled(true);
button(QWizard::BackButton)->setDisabled(true);
}
bool OracleWizard::saveTokensToFile(const QString &fileName)
{
QFile file(fileName);
if (!file.open(QIODevice::WriteOnly)) {
qDebug() << "File open (w) failed for" << fileName;
return false;
}
if (file.write(tokensData) == -1) {
qDebug() << "File write (w) failed for" << fileName;
return false;
}
file.close();
return true;
}
+84
View File
@@ -0,0 +1,84 @@
#ifndef ORACLEWIZARD_H
#define ORACLEWIZARD_H
#include <QWizard>
#include <utility>
class QCheckBox;
class QGroupBox;
class QComboBox;
class QLabel;
class QLineEdit;
class QRadioButton;
class QProgressBar;
class QNetworkAccessManager;
class QTextEdit;
class QVBoxLayout;
class OracleImporter;
class QSettings;
class OracleWizard : public QWizard
{
Q_OBJECT
public:
explicit OracleWizard(QWidget *parent = nullptr);
void accept() override;
void enableButtons();
void disableButtons();
void retranslateUi();
void setTokensData(QByteArray _tokensData)
{
tokensData = std::move(_tokensData);
}
bool hasTokensData()
{
return !tokensData.isEmpty();
}
void setCardSourceUrl(const QString &sourceUrl)
{
cardSourceUrl = sourceUrl;
}
void setCardSourceVersion(const QString &sourceVersion)
{
cardSourceVersion = sourceVersion;
}
const QString &getCardSourceUrl() const
{
return cardSourceUrl;
}
const QString &getCardSourceVersion() const
{
return cardSourceVersion;
}
bool saveTokensToFile(const QString &fileName);
void runInBackground()
{
backgroundMode = true;
hide();
currentPage()->initializePage();
}
public:
OracleImporter *importer;
QSettings *settings;
QNetworkAccessManager *nam;
bool downloadedPlainXml = false;
QByteArray xmlData;
bool backgroundMode = false;
private slots:
void updateLanguage();
private:
QByteArray tokensData;
QString cardSourceUrl;
QString cardSourceVersion;
void migrateOracleSettings();
protected:
void changeEvent(QEvent *event) override;
};
#endif
+742
View File
@@ -0,0 +1,742 @@
#include "pages.h"
#include "client/settings/cache_settings.h"
#include "main.h"
#include "oracleimporter.h"
#include "oraclewizard.h"
#include "pages.h"
#include "pagetemplates.h"
#include "version_string.h"
#include <QAbstractButton>
#include <QBuffer>
#include <QCheckBox>
#include <QComboBox>
#include <QDir>
#include <QFileDialog>
#include <QGridLayout>
#include <QLabel>
#include <QLineEdit>
#include <QMessageBox>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QProgressBar>
#include <QPushButton>
#include <QRadioButton>
#include <QScrollBar>
#include <QStandardPaths>
#include <QTextEdit>
#include <QtConcurrent>
#include <QtGui>
#ifdef HAS_LZMA
#include "lzma/decompress.h"
#endif
#ifdef HAS_ZLIB
#include "zip/unzip.h"
#endif
#define ZIP_SIGNATURE "PK"
// Xz stream header: 0xFD + "7zXZ"
#define XZ_SIGNATURE "\xFD\x37\x7A\x58\x5A"
#define MTGJSON_V4_URL_COMPONENT "mtgjson.com/files/"
#define ALLSETS_URL_FALLBACK "https://www.mtgjson.com/api/v5/AllPrintings.json"
#define MTGJSON_VERSION_URL "https://www.mtgjson.com/api/v5/Meta.json"
#ifdef HAS_LZMA
#define ALLSETS_URL "https://www.mtgjson.com/api/v5/AllPrintings.json.xz"
#elif defined(HAS_ZLIB)
#define ALLSETS_URL "https://www.mtgjson.com/api/v5/AllPrintings.json.zip"
#else
#define ALLSETS_URL "https://www.mtgjson.com/api/v5/AllPrintings.json"
#endif
#define TOKENS_URL "https://raw.githubusercontent.com/Cockatrice/Magic-Token/master/tokens.xml"
#define SPOILERS_URL "https://raw.githubusercontent.com/Cockatrice/Magic-Spoiler/files/spoiler.xml"
IntroPage::IntroPage(QWidget *parent) : OracleWizardPage(parent)
{
label = new QLabel(this);
label->setWordWrap(true);
languageLabel = new QLabel(this);
versionLabel = new QLabel(this);
languageBox = new QComboBox(this);
QStringList languageCodes = findQmFiles();
for (const QString &code : languageCodes) {
QString langName = languageName(code);
languageBox->addItem(langName, code);
}
QString setLanguage = QCoreApplication::translate("i18n", DEFAULT_LANG_NAME);
int index = languageBox->findText(setLanguage, Qt::MatchExactly);
if (index == -1) {
qWarning() << "could not find language" << setLanguage;
} else {
languageBox->setCurrentIndex(index);
}
connect(languageBox, qOverload<int>(&QComboBox::currentIndexChanged), this, &IntroPage::languageBoxChanged);
auto *layout = new QGridLayout(this);
layout->addWidget(label, 0, 0, 1, 2);
layout->addWidget(languageLabel, 1, 0);
layout->addWidget(languageBox, 1, 1);
layout->addWidget(versionLabel, 2, 0, 1, 2);
setLayout(layout);
}
void IntroPage::initializePage()
{
if (wizard()->backgroundMode) {
emit readyToContinue();
}
}
QStringList IntroPage::findQmFiles()
{
QDir dir(translationPath);
QStringList fileNames = dir.entryList(QStringList(translationPrefix + "_*.qm"), QDir::Files, QDir::Name);
fileNames.replaceInStrings(QRegularExpression(translationPrefix + "_(.*)\\.qm"), "\\1");
return fileNames;
}
QString IntroPage::languageName(const QString &lang)
{
QTranslator qTranslator;
QString appNameHint = translationPrefix + "_" + lang;
bool appTranslationLoaded = qTranslator.load(appNameHint, translationPath);
if (!appTranslationLoaded) {
qDebug() << "Unable to load" << translationPrefix << "translation" << appNameHint << "at" << translationPath;
}
return qTranslator.translate("i18n", DEFAULT_LANG_NAME);
}
void IntroPage::languageBoxChanged(int index)
{
SettingsCache::instance().setLang(languageBox->itemData(index).toString());
}
void IntroPage::retranslateUi()
{
setTitle(tr("Introduction"));
label->setText(tr("This wizard will import the list of sets, cards, and tokens "
"that will be used by Cockatrice."));
languageLabel->setText(tr("Interface language:"));
versionLabel->setText(tr("Version:") + QString(" %1").arg(VERSION_STRING));
}
void OutroPage::retranslateUi()
{
setTitle(tr("Finished"));
setSubTitle(tr("The wizard has finished.") + "<br>" +
tr("You can now start using Cockatrice with the newly updated cards.") + "<br><br>" +
tr("If the card databases don't reload automatically, restart the Cockatrice client."));
}
void OutroPage::initializePage()
{
if (wizard()->backgroundMode) {
wizard()->accept();
exit(0);
}
}
LoadSetsPage::LoadSetsPage(QWidget *parent) : OracleWizardPage(parent)
{
urlRadioButton = new QRadioButton(this);
fileRadioButton = new QRadioButton(this);
urlLineEdit = new QLineEdit(this);
fileLineEdit = new QLineEdit(this);
progressLabel = new QLabel(this);
progressBar = new QProgressBar(this);
urlRadioButton->setChecked(true);
urlButton = new QPushButton(this);
connect(urlButton, &QPushButton::clicked, this, &LoadSetsPage::actRestoreDefaultUrl);
fileButton = new QPushButton(this);
connect(fileButton, &QPushButton::clicked, this, &LoadSetsPage::actLoadSetsFile);
auto *layout = new QGridLayout(this);
layout->addWidget(urlRadioButton, 0, 0);
layout->addWidget(urlLineEdit, 0, 1);
layout->addWidget(urlButton, 1, 1, Qt::AlignRight);
layout->addWidget(fileRadioButton, 2, 0);
layout->addWidget(fileLineEdit, 2, 1);
layout->addWidget(fileButton, 3, 1, Qt::AlignRight);
layout->addWidget(progressLabel, 4, 0);
layout->addWidget(progressBar, 4, 1);
connect(&watcher, &QFutureWatcher<bool>::finished, this, &LoadSetsPage::importFinished);
setLayout(layout);
}
void LoadSetsPage::initializePage()
{
urlLineEdit->setText(wizard()->settings->value("allsetsurl", ALLSETS_URL).toString());
progressLabel->hide();
progressBar->hide();
if (wizard()->backgroundMode) {
if (isEnabled()) {
validatePage();
}
}
}
void LoadSetsPage::retranslateUi()
{
setTitle(tr("Source selection"));
setSubTitle(tr("Please specify a compatible 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."));
urlRadioButton->setText(tr("Download URL:"));
fileRadioButton->setText(tr("Local file:"));
urlButton->setText(tr("Restore default URL"));
fileButton->setText(tr("Choose file..."));
}
void LoadSetsPage::actRestoreDefaultUrl()
{
urlLineEdit->setText(ALLSETS_URL);
}
void LoadSetsPage::actLoadSetsFile()
{
QFileDialog dialog(this, tr("Load sets file"));
dialog.setFileMode(QFileDialog::ExistingFile);
QString extensions = "*.json *.xml";
#ifdef HAS_ZLIB
extensions += " *.zip";
#endif
#ifdef HAS_LZMA
extensions += " *.xz";
#endif
dialog.setNameFilter(tr("Sets file (%1)").arg(extensions));
if (!fileLineEdit->text().isEmpty() && QFile::exists(fileLineEdit->text())) {
dialog.selectFile(fileLineEdit->text());
}
if (!dialog.exec()) {
return;
}
fileLineEdit->setText(dialog.selectedFiles().at(0));
}
bool LoadSetsPage::validatePage()
{
// once the import is finished, we call next(); skip validation
if (wizard()->downloadedPlainXml || wizard()->importer->getSets().count() > 0) {
return true;
}
// else, try to import sets
if (urlRadioButton->isChecked()) {
// If a user attempts to download from V4, redirect them to V5
if (urlLineEdit->text().contains(MTGJSON_V4_URL_COMPONENT)) {
actRestoreDefaultUrl();
}
const auto url = QUrl::fromUserInput(urlLineEdit->text());
if (!url.isValid()) {
QMessageBox::critical(this, tr("Error"), tr("The provided URL is not valid."));
return false;
}
progressLabel->setText(tr("Downloading (0MB)"));
// show an infinite progressbar
progressBar->setMaximum(0);
progressBar->setMinimum(0);
progressBar->setValue(0);
progressLabel->show();
progressBar->show();
wizard()->disableButtons();
setEnabled(false);
downloadSetsFile(url);
} else if (fileRadioButton->isChecked()) {
QFile setsFile(fileLineEdit->text());
if (!setsFile.exists()) {
QMessageBox::critical(this, tr("Error"), tr("Please choose a file."));
return false;
}
if (!setsFile.open(QIODevice::ReadOnly)) {
QMessageBox::critical(nullptr, tr("Error"), tr("Cannot open file '%1'.").arg(fileLineEdit->text()));
return false;
}
wizard()->disableButtons();
setEnabled(false);
wizard()->setCardSourceUrl(setsFile.fileName());
wizard()->setCardSourceVersion("unknown");
readSetsFromByteArray(setsFile.readAll());
}
return false;
}
void LoadSetsPage::downloadSetsFile(const QUrl &url)
{
wizard()->setCardSourceVersion("unknown");
const auto urlString = url.toString();
if (urlString == ALLSETS_URL || urlString == ALLSETS_URL_FALLBACK) {
const auto versionUrl = QUrl::fromUserInput(MTGJSON_VERSION_URL);
QNetworkRequest request = QNetworkRequest(versionUrl);
request.setHeader(QNetworkRequest::UserAgentHeader, QString("Cockatrice %1").arg(VERSION_STRING));
auto *versionReply = wizard()->nam->get(request);
connect(versionReply, &QNetworkReply::finished, [this, versionReply]() {
if (versionReply->error() == QNetworkReply::NoError) {
auto data = versionReply->readAll();
QJsonParseError jsonError{};
auto jsonResponse = QJsonDocument::fromJson(data, &jsonError);
if (jsonError.error == QJsonParseError::NoError) {
const auto jsonMap = jsonResponse.toVariant().toMap();
auto versionString = jsonMap.value("meta").toMap().value("version").toString();
if (versionString.isEmpty()) {
versionString = "unknown";
}
wizard()->setCardSourceVersion(versionString);
}
}
versionReply->deleteLater();
});
}
wizard()->setCardSourceUrl(url.toString());
QNetworkRequest request = QNetworkRequest(url);
request.setHeader(QNetworkRequest::UserAgentHeader, QString("Cockatrice %1").arg(VERSION_STRING));
auto *reply = wizard()->nam->get(request);
connect(reply, &QNetworkReply::finished, this, &LoadSetsPage::actDownloadFinishedSetsFile);
connect(reply, &QNetworkReply::downloadProgress, this, &LoadSetsPage::actDownloadProgressSetsFile);
}
void LoadSetsPage::actDownloadProgressSetsFile(qint64 received, qint64 total)
{
if (total > 0) {
progressBar->setMaximum(static_cast<int>(total));
progressBar->setValue(static_cast<int>(received));
}
progressLabel->setText(tr("Downloading (%1MB)").arg((int)received / (1024 * 1024)));
}
void LoadSetsPage::actDownloadFinishedSetsFile()
{
// check for a reply
auto *reply = dynamic_cast<QNetworkReply *>(sender());
auto errorCode = reply->error();
if (errorCode != QNetworkReply::NoError) {
QMessageBox::critical(this, tr("Error"), tr("Network error: %1.").arg(reply->errorString()));
wizard()->enableButtons();
setEnabled(true);
reply->deleteLater();
return;
}
auto statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
if (statusCode == 301 || statusCode == 302) {
const auto redirectUrl = reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl();
qDebug() << "following redirect url:" << redirectUrl.toString();
downloadSetsFile(redirectUrl);
reply->deleteLater();
return;
}
progressLabel->hide();
progressBar->hide();
// save AllPrintings.json url, but only if the user customized it and download was successful
if (urlLineEdit->text() != QString(ALLSETS_URL)) {
wizard()->settings->setValue("allsetsurl", urlLineEdit->text());
} else {
wizard()->settings->remove("allsetsurl");
}
readSetsFromByteArray(reply->readAll());
reply->deleteLater();
}
void LoadSetsPage::readSetsFromByteArray(QByteArray _data)
{
// show an infinite progressbar
progressBar->setMaximum(0);
progressBar->setMinimum(0);
progressBar->setValue(0);
progressLabel->setText(tr("Parsing file"));
progressLabel->show();
progressBar->show();
wizard()->downloadedPlainXml = false;
wizard()->xmlData.clear();
readSetsFromByteArrayRef(_data);
}
void LoadSetsPage::readSetsFromByteArrayRef(QByteArray &_data)
{
// unzip the file if needed
if (_data.startsWith(XZ_SIGNATURE)) {
#ifdef HAS_LZMA
// zipped file
auto *inBuffer = new QBuffer(&_data);
auto newData = QByteArray();
auto *outBuffer = new QBuffer(&newData);
inBuffer->open(QBuffer::ReadOnly);
outBuffer->open(QBuffer::WriteOnly);
XzDecompressor xz;
if (!xz.decompress(inBuffer, outBuffer)) {
zipDownloadFailed(tr("Xz extraction failed."));
return;
}
_data.clear();
readSetsFromByteArrayRef(newData);
return;
#else
zipDownloadFailed(tr("Sorry, this version of Oracle does not support xz compressed files."));
wizard()->enableButtons();
setEnabled(true);
progressLabel->hide();
progressBar->hide();
return;
#endif
} else if (_data.startsWith(ZIP_SIGNATURE)) {
#ifdef HAS_ZLIB
// zipped file
auto *inBuffer = new QBuffer(&_data);
auto newData = QByteArray();
auto *outBuffer = new QBuffer(&newData);
QString fileName;
UnZip::ErrorCode ec;
UnZip uz;
ec = uz.openArchive(inBuffer);
if (ec != UnZip::Ok) {
zipDownloadFailed(tr("Failed to open Zip archive: %1.").arg(uz.formatError(ec)));
return;
}
if (uz.fileList().size() != 1) {
zipDownloadFailed(tr("Zip extraction failed: the Zip archive doesn't contain exactly one file."));
return;
}
fileName = uz.fileList().at(0);
outBuffer->open(QBuffer::ReadWrite);
ec = uz.extractFile(fileName, outBuffer);
if (ec != UnZip::Ok) {
zipDownloadFailed(tr("Zip extraction failed: %1.").arg(uz.formatError(ec)));
uz.closeArchive();
return;
}
_data.clear();
readSetsFromByteArrayRef(newData);
return;
#else
zipDownloadFailed(tr("Sorry, this version of Oracle does not support zipped files."));
wizard()->enableButtons();
setEnabled(true);
progressLabel->hide();
progressBar->hide();
return;
#endif
} else if (_data.startsWith("{")) {
// Start the computation.
jsonData = std::move(_data);
future = QtConcurrent::run([this] { return wizard()->importer->readSetsFromByteArray(std::move(jsonData)); });
watcher.setFuture(future);
} else if (_data.startsWith("<")) {
// save xml file and don't do any processing
wizard()->downloadedPlainXml = true;
wizard()->xmlData = std::move(_data);
importFinished();
} else {
wizard()->enableButtons();
setEnabled(true);
progressLabel->hide();
progressBar->hide();
QMessageBox::critical(this, tr("Error"), tr("Failed to interpret downloaded data."));
}
}
void LoadSetsPage::zipDownloadFailed(const QString &message)
{
wizard()->enableButtons();
setEnabled(true);
progressLabel->hide();
progressBar->hide();
QMessageBox::StandardButton reply;
reply = static_cast<QMessageBox::StandardButton>(QMessageBox::question(
this, tr("Error"), message + "<br>" + tr("Do you want to download the uncompressed file instead?"),
QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes));
if (reply == QMessageBox::Yes) {
urlRadioButton->setChecked(true);
urlLineEdit->setText(ALLSETS_URL_FALLBACK);
wizard()->next();
}
}
void LoadSetsPage::importFinished()
{
wizard()->enableButtons();
setEnabled(true);
progressLabel->hide();
progressBar->hide();
if (wizard()->downloadedPlainXml || watcher.future().result()) {
wizard()->next();
} else {
QMessageBox::critical(this, tr("Error"),
tr("The file was retrieved successfully, but it does not contain any sets data."));
}
}
SaveSetsPage::SaveSetsPage(QWidget *parent) : OracleWizardPage(parent)
{
pathLabel = new QLabel(this);
saveLabel = new QLabel(this);
defaultPathCheckBox = new QCheckBox(this);
messageLog = new QTextEdit(this);
messageLog->setReadOnly(true);
auto *layout = new QGridLayout(this);
layout->addWidget(messageLog, 0, 0);
layout->addWidget(saveLabel, 1, 0);
layout->addWidget(pathLabel, 2, 0);
layout->addWidget(defaultPathCheckBox, 3, 0);
setLayout(layout);
}
void SaveSetsPage::cleanupPage()
{
wizard()->importer->clear();
disconnect(wizard()->importer, &OracleImporter::setIndexChanged, nullptr, nullptr);
}
void SaveSetsPage::initializePage()
{
messageLog->clear();
retranslateUi();
if (wizard()->downloadedPlainXml) {
messageLog->hide();
} else {
messageLog->show();
connect(wizard()->importer, &OracleImporter::setIndexChanged, this, &SaveSetsPage::updateTotalProgress);
int setsImported = wizard()->importer->startImport();
if (setsImported == 0) {
QMessageBox::critical(this, tr("Error"), tr("No set has been imported."));
}
}
if (wizard()->backgroundMode) {
emit readyToContinue();
}
}
void SaveSetsPage::retranslateUi()
{
setTitle(tr("Sets imported"));
if (wizard()->downloadedPlainXml) {
setSubTitle(tr("A cockatrice database file of %1 MB has been downloaded.")
.arg(qRound(wizard()->xmlData.size() / 1000000.0)));
} else {
setSubTitle(tr("The following sets have been found:"));
}
saveLabel->setText(tr("Press \"Save\" to store the imported cards in the Cockatrice database."));
pathLabel->setText(tr("The card database will be saved at the following location:") + "<br>" +
SettingsCache::instance().getCardDatabasePath());
defaultPathCheckBox->setText(tr("Save to a custom path (not recommended)"));
setButtonText(QWizard::NextButton, tr("&Save"));
}
void SaveSetsPage::updateTotalProgress(int cardsImported, int /* setIndex */, const QString &setName)
{
if (setName.isEmpty()) {
messageLog->append("<b>" + tr("Import finished: %1 cards.").arg(wizard()->importer->getCardList().size()) +
"</b>");
} else {
messageLog->append(tr("%1: %2 cards imported").arg(setName).arg(cardsImported));
}
messageLog->verticalScrollBar()->setValue(messageLog->verticalScrollBar()->maximum());
}
bool SaveSetsPage::validatePage()
{
QString defaultPath = SettingsCache::instance().getCardDatabasePath();
QString windowName = tr("Save card database");
QString fileType = tr("XML; card database (*.xml)");
QString fileName;
if (defaultPathCheckBox->isChecked()) {
fileName = QFileDialog::getSaveFileName(this, windowName, defaultPath, fileType);
} else {
fileName = defaultPath;
}
if (fileName.isEmpty()) {
return false;
}
QFileInfo fi(fileName);
QDir fileDir(fi.path());
if (!fileDir.exists() && !fileDir.mkpath(fileDir.absolutePath())) {
return false;
}
if (wizard()->downloadedPlainXml) {
QFile file(fileName);
if (!file.open(QIODevice::WriteOnly)) {
qDebug() << "File write (w) failed for" << fileName;
return false;
}
if (file.write(wizard()->xmlData) < 1) {
qDebug() << "File write (w) failed for" << fileName;
return false;
}
wizard()->xmlData.clear();
} else if (!wizard()->importer->saveToFile(fileName, wizard()->getCardSourceUrl(),
wizard()->getCardSourceVersion())) {
QMessageBox::critical(this, tr("Error"), tr("The file could not be saved to %1").arg(fileName));
return false;
}
return true;
}
void LoadTokensPage::initializePage()
{
SimpleDownloadFilePage::initializePage();
if (wizard()->backgroundMode) {
emit readyToContinue();
}
}
QString LoadTokensPage::getDefaultUrl()
{
return TOKENS_URL;
}
QString LoadTokensPage::getCustomUrlSettingsKey()
{
return "tokensurl";
}
QString LoadTokensPage::getDefaultSavePath()
{
return SettingsCache::instance().getTokenDatabasePath();
}
QString LoadTokensPage::getWindowTitle()
{
return tr("Save token database");
}
QString LoadTokensPage::getFileType()
{
return tr("XML; token database (*.xml)");
}
QString LoadTokensPage::getFilePromptName()
{
return tr("tokens");
}
void LoadTokensPage::retranslateUi()
{
setTitle(tr("Tokens import"));
setSubTitle(tr("Please specify a compatible source for token data."));
urlRadioButton->setText(tr("Download URL:"));
fileRadioButton->setText(tr("Local file:"));
urlButton->setText(tr("Restore default URL"));
fileButton->setText(tr("Choose file..."));
pathLabel->setText(tr("The token database will be saved at the following location:") + "<br>" +
SettingsCache::instance().getTokenDatabasePath());
defaultPathCheckBox->setText(tr("Save to a custom path (not recommended)"));
}
QString LoadSpoilersPage::getDefaultUrl()
{
return SPOILERS_URL;
}
QString LoadSpoilersPage::getCustomUrlSettingsKey()
{
return "spoilersurl";
}
QString LoadSpoilersPage::getDefaultSavePath()
{
return SettingsCache::instance().getTokenDatabasePath();
}
QString LoadSpoilersPage::getWindowTitle()
{
return tr("Save spoiler database");
}
QString LoadSpoilersPage::getFileType()
{
return tr("XML; spoiler database (*.xml)");
}
QString LoadSpoilersPage::getFilePromptName()
{
return tr("spoiler");
}
void LoadSpoilersPage::retranslateUi()
{
setTitle(tr("Spoilers import"));
setSubTitle(tr("Please specify a compatible source for spoiler data."));
urlRadioButton->setText(tr("Download URL:"));
fileRadioButton->setText(tr("Local file:"));
urlButton->setText(tr("Restore default URL"));
fileButton->setText(tr("Choose file..."));
pathLabel->setText(tr("The spoiler database will be saved at the following location:") + "<br>" +
SettingsCache::instance().getSpoilerCardDatabasePath());
defaultPathCheckBox->setText(tr("Save to a custom path (not recommended)"));
}
+156
View File
@@ -0,0 +1,156 @@
#ifndef COCKATRICE_PAGES_H
#define COCKATRICE_PAGES_H
#include "pagetemplates.h"
#include <QFuture>
#include <QFutureWatcher>
#include <QTimer>
#include <QWizard>
#include <utility>
class QCheckBox;
class QGroupBox;
class QComboBox;
class QLabel;
class QLineEdit;
class QRadioButton;
class QProgressBar;
class QNetworkAccessManager;
class QTextEdit;
class QVBoxLayout;
class OracleImporter;
class QSettings;
class IntroPage : public OracleWizardPage
{
Q_OBJECT
public:
explicit IntroPage(QWidget *parent = nullptr);
void retranslateUi() override;
private:
QStringList findQmFiles();
QString languageName(const QString &lang);
private:
QLabel *label, *languageLabel, *versionLabel;
QComboBox *languageBox;
private slots:
void languageBoxChanged(int index);
protected slots:
void initializePage() override;
};
class OutroPage : public OracleWizardPage
{
Q_OBJECT
public:
explicit OutroPage(QWidget * = nullptr)
{
}
void retranslateUi() override;
protected:
void initializePage() override;
};
class LoadSetsPage : public OracleWizardPage
{
Q_OBJECT
public:
explicit LoadSetsPage(QWidget *parent = nullptr);
void retranslateUi() override;
protected:
void initializePage() override;
bool validatePage() override;
void readSetsFromByteArray(QByteArray _data);
void readSetsFromByteArrayRef(QByteArray &_data);
void downloadSetsFile(const QUrl &url);
private:
QRadioButton *urlRadioButton;
QRadioButton *fileRadioButton;
QLineEdit *urlLineEdit;
QLineEdit *fileLineEdit;
QPushButton *urlButton;
QPushButton *fileButton;
QLabel *progressLabel;
QProgressBar *progressBar;
QFutureWatcher<bool> watcher;
QFuture<bool> future;
QByteArray jsonData;
private slots:
void actLoadSetsFile();
void actRestoreDefaultUrl();
void actDownloadProgressSetsFile(qint64 received, qint64 total);
void actDownloadFinishedSetsFile();
void importFinished();
void zipDownloadFailed(const QString &message);
};
class SaveSetsPage : public OracleWizardPage
{
Q_OBJECT
public:
explicit SaveSetsPage(QWidget *parent = nullptr);
void retranslateUi() override;
private:
QTextEdit *messageLog;
QCheckBox *defaultPathCheckBox;
QLabel *pathLabel;
QLabel *saveLabel;
protected:
void initializePage() override;
void cleanupPage() override;
bool validatePage() override;
private slots:
void updateTotalProgress(int cardsImported, int setIndex, const QString &setName);
};
class LoadSpoilersPage : public SimpleDownloadFilePage
{
Q_OBJECT
public:
explicit LoadSpoilersPage(QWidget * = nullptr)
{
}
void retranslateUi() override;
protected:
QString getDefaultUrl() override;
QString getCustomUrlSettingsKey() override;
QString getDefaultSavePath() override;
QString getWindowTitle() override;
QString getFileType() override;
QString getFilePromptName() override;
};
class LoadTokensPage : public SimpleDownloadFilePage
{
Q_OBJECT
public:
explicit LoadTokensPage(QWidget * = nullptr)
{
}
void retranslateUi() override;
protected:
QString getDefaultUrl() override;
QString getCustomUrlSettingsKey() override;
QString getDefaultSavePath() override;
QString getWindowTitle() override;
QString getFileType() override;
QString getFilePromptName() override;
void initializePage() override;
};
#endif // COCKATRICE_PAGES_H
+248
View File
@@ -0,0 +1,248 @@
#include "pagetemplates.h"
#include "oraclewizard.h"
#include <QCheckBox>
#include <QDir>
#include <QFileDialog>
#include <QGridLayout>
#include <QLabel>
#include <QLineEdit>
#include <QMessageBox>
#include <QNetworkReply>
#include <QProgressBar>
#include <QPushButton>
#include <QRadioButton>
#include <QtGui>
SimpleDownloadFilePage::SimpleDownloadFilePage(QWidget *parent) : OracleWizardPage(parent)
{
urlRadioButton = new QRadioButton(this);
fileRadioButton = new QRadioButton(this);
urlLineEdit = new QLineEdit(this);
fileLineEdit = new QLineEdit(this);
progressLabel = new QLabel(this);
progressBar = new QProgressBar(this);
urlRadioButton->setChecked(true);
urlButton = new QPushButton(this);
connect(urlButton, &QPushButton::clicked, this, &SimpleDownloadFilePage::actRestoreDefaultUrl);
fileButton = new QPushButton(this);
connect(fileButton, &QPushButton::clicked, this, &SimpleDownloadFilePage::actLoadCardFile);
defaultPathCheckBox = new QCheckBox(this);
pathLabel = new QLabel(this);
pathLabel->setTextInteractionFlags(Qt::TextSelectableByMouse);
auto *layout = new QGridLayout(this);
layout->addWidget(urlRadioButton, 0, 0);
layout->addWidget(urlLineEdit, 0, 1);
layout->addWidget(urlButton, 1, 1, Qt::AlignRight);
layout->addWidget(fileRadioButton, 2, 0);
layout->addWidget(fileLineEdit, 2, 1);
layout->addWidget(fileButton, 3, 1, Qt::AlignRight);
layout->addWidget(pathLabel, 4, 0, 1, 2);
layout->addWidget(defaultPathCheckBox, 5, 0, 1, 2);
layout->addWidget(progressLabel, 6, 0);
layout->addWidget(progressBar, 6, 1);
setLayout(layout);
}
void SimpleDownloadFilePage::initializePage()
{
// get custom url from settings if any; otherwise use default url
urlLineEdit->setText(wizard()->settings->value(getCustomUrlSettingsKey(), getDefaultUrl()).toString());
progressLabel->hide();
progressBar->hide();
}
void SimpleDownloadFilePage::actRestoreDefaultUrl()
{
urlLineEdit->setText(getDefaultUrl());
}
void SimpleDownloadFilePage::actLoadCardFile()
{
QFileDialog dialog(this, tr("Load %1 file").arg(getFilePromptName()));
dialog.setFileMode(QFileDialog::ExistingFile);
QString extensions = "*.json *.xml";
#ifdef HAS_ZLIB
extensions += " *.zip";
#endif
#ifdef HAS_LZMA
extensions += " *.xz";
#endif
dialog.setNameFilter(tr("%1 file (%1)").arg(getFilePromptName(), extensions));
if (!fileLineEdit->text().isEmpty() && QFile::exists(fileLineEdit->text())) {
dialog.selectFile(fileLineEdit->text());
}
if (!dialog.exec()) {
return;
}
fileLineEdit->setText(dialog.selectedFiles().at(0));
}
bool SimpleDownloadFilePage::validatePage()
{
// if data has already been downloaded, pass directly to the "save" step
if (!downloadData.isEmpty()) {
if (saveToFile()) {
return true;
} else {
wizard()->enableButtons();
return false;
}
}
// else, try to import sets
if (urlRadioButton->isChecked()) {
QUrl url = QUrl::fromUserInput(urlLineEdit->text());
if (!url.isValid()) {
QMessageBox::critical(this, tr("Error"), tr("The provided URL is not valid: ") + url.toString());
return false;
}
progressLabel->setText(tr("Downloading (0MB)"));
// show an infinite progressbar
progressBar->setMaximum(0);
progressBar->setMinimum(0);
progressBar->setValue(0);
progressLabel->show();
progressBar->show();
wizard()->disableButtons();
downloadFile(url);
} else if (fileRadioButton->isChecked()) {
QFile cardFile(fileLineEdit->text());
if (!cardFile.exists()) {
QMessageBox::critical(this, tr("Error"), tr("Please choose a file."));
return false;
}
if (!cardFile.open(QIODevice::ReadOnly)) {
QMessageBox::critical(nullptr, tr("Error"), tr("Cannot open file '%1'.").arg(fileLineEdit->text()));
return false;
}
downloadData = cardFile.readAll();
wizard()->next();
}
return false;
}
void SimpleDownloadFilePage::downloadFile(QUrl url)
{
QNetworkReply *reply = wizard()->nam->get(QNetworkRequest(url));
connect(reply, &QNetworkReply::finished, this, &SimpleDownloadFilePage::actDownloadFinished);
connect(reply, &QNetworkReply::downloadProgress, this, &SimpleDownloadFilePage::actDownloadProgress);
}
void SimpleDownloadFilePage::actDownloadProgress(qint64 received, qint64 total)
{
if (total > 0) {
progressBar->setMaximum(static_cast<int>(total));
progressBar->setValue(static_cast<int>(received));
}
progressLabel->setText(tr("Downloading (%1MB)").arg((int)received / (1024 * 1024)));
}
void SimpleDownloadFilePage::actDownloadFinished()
{
// check for a reply
auto *reply = dynamic_cast<QNetworkReply *>(sender());
QNetworkReply::NetworkError errorCode = reply->error();
if (errorCode != QNetworkReply::NoError) {
QMessageBox::critical(this, tr("Error"), tr("Network error: %1.").arg(reply->errorString()));
wizard()->enableButtons();
reply->deleteLater();
return;
}
int statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
if (statusCode == 301 || statusCode == 302) {
QUrl redirectUrl = reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl();
qDebug() << "following redirect url:" << redirectUrl.toString();
downloadFile(redirectUrl);
reply->deleteLater();
return;
}
// save downloaded file url, but only if the user customized it and download was successful
if (urlLineEdit->text() != getDefaultUrl()) {
wizard()->settings->setValue(getCustomUrlSettingsKey(), urlLineEdit->text());
} else {
wizard()->settings->remove(getCustomUrlSettingsKey());
}
downloadData = reply->readAll();
reply->deleteLater();
wizard()->enableButtons();
progressLabel->hide();
progressBar->hide();
wizard()->next();
}
bool SimpleDownloadFilePage::saveToFile()
{
QString defaultPath = getDefaultSavePath();
QString windowName = getWindowTitle();
QString fileType = getFileType();
QString fileName;
if (defaultPathCheckBox->isChecked()) {
fileName = QFileDialog::getSaveFileName(this, windowName, defaultPath, fileType);
} else {
fileName = defaultPath;
}
if (fileName.isEmpty()) {
return false;
}
QFileInfo fi(fileName);
QDir fileDir(fi.path());
if (!fileDir.exists() && !fileDir.mkpath(fileDir.absolutePath())) {
return false;
}
if (!internalSaveToFile(fileName)) {
QMessageBox::critical(this, tr("Error"), tr("The file could not be saved to %1").arg(fileName));
return false;
}
// clean saved downloadData
downloadData = QByteArray();
return true;
}
bool SimpleDownloadFilePage::internalSaveToFile(const QString &fileName)
{
QFile file(fileName);
if (!file.open(QIODevice::WriteOnly)) {
qDebug() << "File open (w) failed for" << fileName;
return false;
}
if (file.write(downloadData) == -1) {
qDebug() << "File write (w) failed for" << fileName;
return false;
}
file.close();
return true;
}
+74
View File
@@ -0,0 +1,74 @@
#ifndef PAGETEMPLATES_H
#define PAGETEMPLATES_H
#include <QWizardPage>
class QFile;
class QRadioButton;
class OracleWizard;
class QCheckBox;
class QLabel;
class QLineEdit;
class QProgressBar;
class OracleWizardPage : public QWizardPage
{
Q_OBJECT
public:
explicit OracleWizardPage(QWidget *parent = nullptr) : QWizardPage(parent)
{
}
virtual void retranslateUi() = 0;
signals:
void readyToContinue();
protected:
inline OracleWizard *wizard()
{
return (OracleWizard *)QWizardPage::wizard();
}
};
class SimpleDownloadFilePage : public OracleWizardPage
{
Q_OBJECT
public:
explicit SimpleDownloadFilePage(QWidget *parent = nullptr);
protected:
void initializePage() override;
bool validatePage() override;
void downloadFile(QUrl url);
virtual QString getDefaultUrl() = 0;
virtual QString getCustomUrlSettingsKey() = 0;
virtual QString getDefaultSavePath() = 0;
virtual QString getWindowTitle() = 0;
virtual QString getFileType() = 0;
virtual QString getFilePromptName() = 0;
bool saveToFile();
bool internalSaveToFile(const QString &fileName);
protected:
QByteArray downloadData;
QRadioButton *urlRadioButton;
QRadioButton *fileRadioButton;
QLineEdit *urlLineEdit;
QLineEdit *fileLineEdit;
QPushButton *urlButton;
QPushButton *fileButton;
QLabel *pathLabel;
QLabel *progressLabel;
QProgressBar *progressBar;
QCheckBox *defaultPathCheckBox;
signals:
void parsedDataReady();
private slots:
void actRestoreDefaultUrl();
void actLoadCardFile();
void actDownloadProgress(qint64 received, qint64 total);
void actDownloadFinished();
};
#endif // PAGETEMPLATES_H
+69
View File
@@ -0,0 +1,69 @@
#include "parsehelpers.h"
#include <QChar>
#include <QRegularExpression>
/**
* Parses the card text to determine if the card should have the cipt tag
*
* The parsing logic is able to handle the following cases:
* - "<name> enters tapped"
* - "<shortname> enters tapped", if the card name starts with the shortname
* - "This <type> enters tapped"
* - "..., it enters tapped"
* - Any naming scheme that appends a non-alphanumeric character plus extra text to the end of the name.
* (e.g. name is "Card Name_SET" or "Card Name (Set)" and text contains "Card Name enters tapped")
*
* However, it will still miss on certain cases:
* - shortnames that aren't the at the beginning of the card name
*
* Note that "...enters tapped unless..." returns false.
*
* @param name The name of the card
* @param text The oracle text of the card
*/
bool parseCipt(const QString &name, const QString &text)
{
// Use precompiled regex to check if text is a possible candidate, and early return if not
static auto prelimCheck = QRegularExpression(" enters( the battlefield)? tapped(?! unless)");
if (!prelimCheck.match(text).hasMatch()) {
return false;
}
// Try to split shortname on most non-alphanumeric characters (including _)
auto isShortnameDivider = [](const QChar &c) {
return c == '_' || (!c.isLetterOrNumber() && c != '\'' && c != '\"');
};
// Try all possible shortnames.
// This also handles the case of extra text appended at end.
QStringList possibleNames;
bool inAlphanumericPart = true;
for (int i = 0; i < name.length(); ++i) {
if (isShortnameDivider(name.at(i))) {
if (inAlphanumericPart) {
// only add to names on a "falling edge", in order to reduce the amount of redundant splits
possibleNames.append(QRegularExpression::escape(name.left(i)));
inAlphanumericPart = false;
}
} else {
inAlphanumericPart = true;
}
}
// and the full name
possibleNames.append(QRegularExpression::escape(name));
QString subject = "(it|" // "..., it enters tapped"
"(T|t)his [^ ]+|" // "This <type> enters tapped"
+ possibleNames.join("|") + ")";
auto ciptPattern = QRegularExpression(
// cipt phrase is either first sentence of line, or is after a punctuation mark
"(^|(, |\\. ))" + subject +
// support old wording, and exclude the "unless" case
" enters( the battlefield)? tapped(?! unless)",
QRegularExpression::MultilineOption);
return ciptPattern.match(text).hasMatch();
}
+8
View File
@@ -0,0 +1,8 @@
#ifndef PARSEHELPERS_H
#define PARSEHELPERS_H
#include <QString>
bool parseCipt(const QString &name, const QString &text);
#endif // PARSEHELPERS_H
+3
View File
@@ -0,0 +1,3 @@
Eeli Reilin <eeli@emicode.fi>
Luis Gustavo S. Barreto <gustavosbarreto@gmail.com>
Stephen Kockentiedt <Stephen@Kockentiedt.name>
+27
View File
@@ -0,0 +1,27 @@
Copyright 2011 Eeli Reilin. All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY <COPYRIGHT HOLDER> ''AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
EVENT SHALL EELI REILIN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
The views and conclusions contained in the software and documentation
are those of the authors and should not be interpreted as representing
official policies, either expressed or implied, of Eeli Reilin.
+96
View File
@@ -0,0 +1,96 @@
########################################################################
1. INTRODUCTION
The Json class is a simple class for parsing JSON data into a QVariant
hierarchies. Now, we can also reverse the process and serialize
QVariant hierarchies into valid JSON data.
########################################################################
2. HOW TO USE
The parser is really easy to use. Let's say we have the following
QString of JSON data:
------------------------------------------------------------------------
{
"encoding" : "UTF-8",
"plug-ins" : [
"python",
"c++",
"ruby"
],
"indent" : {
"length" : 3,
"use_space" : true
}
}
------------------------------------------------------------------------
We would first call the parse-method:
------------------------------------------------------------------------
//Say that we're using the QtJson namespace
using namespace QtJson;
bool ok;
//json is a QString containing the JSON data
QVariantMap result = Json::parse(json, ok).toMap();
if(!ok) {
qFatal("An error occurred during parsing");
exit(1);
}
------------------------------------------------------------------------
Assuming the parsing process completed without errors, we would then
go through the hierarchy:
------------------------------------------------------------------------
qDebug() << "encoding:" << result["encoding"].toString();
qDebug() << "plugins:";
foreach(QVariant plugin, result["plug-ins"].toList()) {
qDebug() << "\t-" << plugin.toString();
}
QVariantMap nestedMap = result["indent"].toMap();
qDebug() << "length:" << nestedMap["length"].toInt();
qDebug() << "use_space:" << nestedMap["use_space"].toBool();
------------------------------------------------------------------------
The previous code would print out the following:
------------------------------------------------------------------------
encoding: "UTF-8"
plugins:
- "python"
- "c++"
- "ruby"
length: 3
use_space: true
------------------------------------------------------------------------
To write JSON data from Qt object is as simple as parsing:
------------------------------------------------------------------------
QVariantMap map;
map["name"] = "Name";
map["age"] = 22;
QByteArray data = Json::serialize(map);
------------------------------------------------------------------------
The byte array 'data' contains valid JSON data:
------------------------------------------------------------------------
{
name: "Luis Gustavo",
age: 22,
}
------------------------------------------------------------------------
########################################################################
4. CONTRIBUTING
The code is available to download at GitHub. Contribute if you dare!
+573
View File
@@ -0,0 +1,573 @@
/* Copyright 2011 Eeli Reilin. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY <COPYRIGHT HOLDER> ''AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL EELI REILIN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation
* are those of the authors and should not be interpreted as representing
* official policies, either expressed or implied, of Eeli Reilin.
*/
/**
* \file json.cpp
*/
#include "json.h"
#include <QMetaType>
#include <iostream>
namespace QtJson
{
static QString sanitizeString(QString str)
{
str.replace(QLatin1String("\\"), QLatin1String("\\\\"));
str.replace(QLatin1String("\""), QLatin1String("\\\""));
str.replace(QLatin1String("\b"), QLatin1String("\\b"));
str.replace(QLatin1String("\f"), QLatin1String("\\f"));
str.replace(QLatin1String("\n"), QLatin1String("\\n"));
str.replace(QLatin1String("\r"), QLatin1String("\\r"));
str.replace(QLatin1String("\t"), QLatin1String("\\t"));
return QString(QLatin1String("\"%1\"")).arg(str);
}
static QByteArray join(const QList<QByteArray> &list, const QByteArray &sep)
{
QByteArray res;
for (const QByteArray &i : list) {
if (!res.isEmpty()) {
res += sep;
}
res += i;
}
return res;
}
/**
* parse
*/
QVariant Json::parse(const QString &json)
{
bool success = true;
return Json::parse(json, success);
}
/**
* parse
*/
QVariant Json::parse(const QString &json, bool &success)
{
success = true;
// Return an empty QVariant if the JSON data is either null or empty
if (!json.isNull() || !json.isEmpty()) {
// We'll start from index 0
int index = 0;
// Parse the first value
QVariant value = Json::parseValue(json, index, success);
// Return the parsed value
return value;
} else {
// Return the empty QVariant
return QVariant();
}
}
QByteArray Json::serialize(const QVariant &data)
{
bool success = true;
return Json::serialize(data, success);
}
QByteArray Json::serialize(const QVariant &data, bool &success)
{
QByteArray str;
success = true;
if (!data.isValid()) // invalid or null?
{
str = "null";
}
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
else if ((data.typeId() == QMetaType::Type::QVariantList) ||
(data.typeId() == QMetaType::Type::QStringList)) // variant is a list?
#else
else if ((data.type() == QVariant::List) || (data.type() == QVariant::StringList)) // variant is a list?
#endif
{
QList<QByteArray> values;
const QVariantList list = data.toList();
for (const QVariant &v : list) {
QByteArray serializedValue = serialize(v);
if (serializedValue.isNull()) {
success = false;
break;
}
values << serializedValue;
}
str = "[ " + join(values, ", ") + " ]";
}
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
else if ((data.typeId() == QMetaType::Type::QVariantHash)) // variant is a list?
#else
else if (data.type() == QVariant::Hash) // variant is a hash?
#endif
{
const QVariantHash vhash = data.toHash();
QHashIterator<QString, QVariant> it(vhash);
str = "{ ";
QList<QByteArray> pairs;
while (it.hasNext()) {
it.next();
QByteArray serializedValue = serialize(it.value());
if (serializedValue.isNull()) {
success = false;
break;
}
pairs << sanitizeString(it.key()).toUtf8() + " : " + serializedValue;
}
str += join(pairs, ", ");
str += " }";
}
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
else if ((data.typeId() == QMetaType::Type::QVariantMap)) // variant is a list?
#else
else if (data.type() == QVariant::Map) // variant is a map?
#endif
{
const QVariantMap vmap = data.toMap();
QMapIterator<QString, QVariant> it(vmap);
str = "{ ";
QList<QByteArray> pairs;
while (it.hasNext()) {
it.next();
QByteArray serializedValue = serialize(it.value());
if (serializedValue.isNull()) {
success = false;
break;
}
pairs << sanitizeString(it.key()).toUtf8() + " : " + serializedValue;
}
str += join(pairs, ", ");
str += " }";
}
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
else if ((data.typeId() == QMetaType::Type::QString) ||
(data.typeId() == QMetaType::Type::QByteArray)) // variant is a list?
#else
else if ((data.type() == QVariant::String) || (data.type() == QVariant::ByteArray)) // a string or a byte array?
#endif
{
str = sanitizeString(data.toString()).toUtf8();
}
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
else if (data.typeId() == QMetaType::Type::Double)
#else
else if (data.type() == QVariant::Double) // double?
#endif
{
str = QByteArray::number(data.toDouble(), 'g', 20);
if (!str.contains(".") && !str.contains("e")) {
str += ".0";
}
}
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
else if (data.typeId() == QMetaType::Type::Bool)
#else
else if (data.type() == QVariant::Bool) // boolean value?
#endif
{
str = data.toBool() ? "true" : "false";
}
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
else if (data.typeId() == QMetaType::Type::ULongLong)
#else
else if (data.type() == QVariant::ULongLong) // large unsigned number?
#endif
{
str = QByteArray::number(data.value<qulonglong>());
} else if (data.canConvert<qlonglong>()) // any signed number?
{
str = QByteArray::number(data.value<qlonglong>());
} else if (data.canConvert<long>()) {
str = QString::number(data.value<long>()).toUtf8();
} else if (data.canConvert<QString>()) // can value be converted to string?
{
// this will catch QDate, QDateTime, QUrl, ...
str = sanitizeString(data.toString()).toUtf8();
} else {
success = false;
}
if (success) {
return str;
} else {
return QByteArray();
}
}
/**
* parseValue
*/
QVariant Json::parseValue(const QString &json, int &index, bool &success)
{
// Determine what kind of data we should parse by
// checking out the upcoming token
switch (Json::lookAhead(json, index)) {
case JsonTokenString:
return Json::parseString(json, index, success);
case JsonTokenNumber:
return Json::parseNumber(json, index);
case JsonTokenCurlyOpen:
return Json::parseObject(json, index, success);
case JsonTokenSquaredOpen:
return Json::parseArray(json, index, success);
case JsonTokenTrue:
Json::nextToken(json, index);
return QVariant(true);
case JsonTokenFalse:
Json::nextToken(json, index);
return QVariant(false);
case JsonTokenNull:
Json::nextToken(json, index);
return QVariant();
case JsonTokenNone:
break;
}
// If there were no tokens, flag the failure and return an empty QVariant
success = false;
return QVariant();
}
/**
* parseObject
*/
QVariant Json::parseObject(const QString &json, int &index, bool &success)
{
QVariantMap map;
int token;
// Get rid of the whitespace and increment index
Json::nextToken(json, index);
// Loop through all of the key/value pairs of the object
bool done = false;
while (!done) {
// Get the upcoming token
token = Json::lookAhead(json, index);
if (token == JsonTokenNone) {
success = false;
return QVariantMap();
} else if (token == JsonTokenComma) {
Json::nextToken(json, index);
} else if (token == JsonTokenCurlyClose) {
Json::nextToken(json, index);
return map;
} else {
// Parse the key/value pair's name
QString name = Json::parseString(json, index, success).toString();
if (!success) {
return QVariantMap();
}
// Get the next token
token = Json::nextToken(json, index);
// If the next token is not a colon, flag the failure
// return an empty QVariant
if (token != JsonTokenColon) {
success = false;
return QVariant(QVariantMap());
}
// Parse the key/value pair's value
QVariant value = Json::parseValue(json, index, success);
if (!success) {
return QVariantMap();
}
// Assign the value to the key in the map
map[name] = value;
}
}
// Return the map successfully
return QVariant(map);
}
/**
* parseArray
*/
QVariant Json::parseArray(const QString &json, int &index, bool &success)
{
QVariantList list;
Json::nextToken(json, index);
bool done = false;
while (!done) {
int token = Json::lookAhead(json, index);
if (token == JsonTokenNone) {
success = false;
return QVariantList();
} else if (token == JsonTokenComma) {
Json::nextToken(json, index);
} else if (token == JsonTokenSquaredClose) {
Json::nextToken(json, index);
break;
} else {
QVariant value = Json::parseValue(json, index, success);
if (!success) {
return QVariantList();
}
list.push_back(value);
}
}
return QVariant(list);
}
/**
* parseString
*/
QVariant Json::parseString(const QString &json, int &index, bool &success)
{
QString s;
QChar c;
Json::eatWhitespace(json, index);
c = json[index++];
bool complete = false;
while (!complete) {
if (index == json.size()) {
break;
}
c = json[index++];
if (c == '\"') {
complete = true;
break;
} else if (c == '\\') {
if (index == json.size()) {
break;
}
c = json[index++];
if (c == '\"') {
s.append('\"');
} else if (c == '\\') {
s.append('\\');
} else if (c == '/') {
s.append('/');
} else if (c == 'b') {
s.append('\b');
} else if (c == 'f') {
s.append('\f');
} else if (c == 'n') {
s.append('\n');
} else if (c == 'r') {
s.append('\r');
} else if (c == 't') {
s.append('\t');
} else if (c == 'u') {
int remainingLength = json.size() - index;
if (remainingLength >= 4) {
QString unicodeStr = json.mid(index, 4);
int symbol = unicodeStr.toInt(0, 16);
s.append(QChar(symbol));
index += 4;
} else {
break;
}
}
} else {
s.append(c);
}
}
if (!complete) {
success = false;
return QVariant();
}
return QVariant(s);
}
/**
* parseNumber
*/
QVariant Json::parseNumber(const QString &json, int &index)
{
Json::eatWhitespace(json, index);
int lastIndex = Json::lastIndexOfNumber(json, index);
int charLength = (lastIndex - index) + 1;
QString numberStr;
numberStr = json.mid(index, charLength);
index = lastIndex + 1;
if (numberStr.contains('.')) {
return QVariant(numberStr.toDouble(NULL));
} else if (numberStr.startsWith('-')) {
return QVariant(numberStr.toLongLong(NULL));
} else {
return QVariant(numberStr.toULongLong(NULL));
}
}
/**
* lastIndexOfNumber
*/
int Json::lastIndexOfNumber(const QString &json, int index)
{
static const QString numericCharacters("0123456789+-.eE");
int lastIndex;
for (lastIndex = index; lastIndex < json.size(); lastIndex++) {
if (numericCharacters.indexOf(json[lastIndex]) == -1) {
break;
}
}
return lastIndex - 1;
}
/**
* eatWhitespace
*/
void Json::eatWhitespace(const QString &json, int &index)
{
static const QString whitespaceChars(" \t\n\r");
for (; index < json.size(); index++) {
if (whitespaceChars.indexOf(json[index]) == -1) {
break;
}
}
}
/**
* lookAhead
*/
int Json::lookAhead(const QString &json, int index)
{
int saveIndex = index;
return Json::nextToken(json, saveIndex);
}
/**
* nextToken
*/
int Json::nextToken(const QString &json, int &index)
{
Json::eatWhitespace(json, index);
if (index == json.size()) {
return JsonTokenNone;
}
QChar c = json[index];
index++;
switch (c.toLatin1()) {
case '{':
return JsonTokenCurlyOpen;
case '}':
return JsonTokenCurlyClose;
case '[':
return JsonTokenSquaredOpen;
case ']':
return JsonTokenSquaredClose;
case ',':
return JsonTokenComma;
case '"':
return JsonTokenString;
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
case '-':
return JsonTokenNumber;
case ':':
return JsonTokenColon;
}
index--;
int remainingLength = json.size() - index;
// True
if (remainingLength >= 4) {
if (json[index] == 't' && json[index + 1] == 'r' && json[index + 2] == 'u' && json[index + 3] == 'e') {
index += 4;
return JsonTokenTrue;
}
}
// False
if (remainingLength >= 5) {
if (json[index] == 'f' && json[index + 1] == 'a' && json[index + 2] == 'l' && json[index + 3] == 's' &&
json[index + 4] == 'e') {
index += 5;
return JsonTokenFalse;
}
}
// Null
if (remainingLength >= 4) {
if (json[index] == 'n' && json[index + 1] == 'u' && json[index + 2] == 'l' && json[index + 3] == 'l') {
index += 4;
return JsonTokenNull;
}
}
return JsonTokenNone;
}
} // namespace QtJson
+204
View File
@@ -0,0 +1,204 @@
/* Copyright 2011 Eeli Reilin. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY <COPYRIGHT HOLDER> ''AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL EELI REILIN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation
* are those of the authors and should not be interpreted as representing
* official policies, either expressed or implied, of Eeli Reilin.
*/
/**
* \file json.h
*/
#ifndef JSON_H
#define JSON_H
#include <QVariant>
#include <QString>
namespace QtJson
{
/**
* \enum JsonToken
*/
enum JsonToken
{
JsonTokenNone = 0,
JsonTokenCurlyOpen = 1,
JsonTokenCurlyClose = 2,
JsonTokenSquaredOpen = 3,
JsonTokenSquaredClose = 4,
JsonTokenColon = 5,
JsonTokenComma = 6,
JsonTokenString = 7,
JsonTokenNumber = 8,
JsonTokenTrue = 9,
JsonTokenFalse = 10,
JsonTokenNull = 11
};
/**
* \class Json
* \brief A JSON data parser
*
* Json parses a JSON data into a QVariant hierarchy.
*/
class Json
{
public:
/**
* Parse a JSON string
*
* \param json The JSON data
*/
static QVariant parse(const QString &json);
/**
* Parse a JSON string
*
* \param json The JSON data
* \param success The success of the parsing
*/
static QVariant parse(const QString &json, bool &success);
/**
* This method generates a textual JSON representation
*
* \param data The JSON data generated by the parser.
* \param success The success of the serialization
*/
static QByteArray serialize(const QVariant &data);
/**
* This method generates a textual JSON representation
*
* \param data The JSON data generated by the parser.
* \param success The success of the serialization
*
* \return QByteArray Textual JSON representation
*/
static QByteArray serialize(const QVariant &data, bool &success);
private:
/**
* Parses a value starting from index
*
* \param json The JSON data
* \param index The start index
* \param success The success of the parse process
*
* \return QVariant The parsed value
*/
static QVariant parseValue(const QString &json, int &index,
bool &success);
/**
* Parses an object starting from index
*
* \param json The JSON data
* \param index The start index
* \param success The success of the object parse
*
* \return QVariant The parsed object map
*/
static QVariant parseObject(const QString &json, int &index,
bool &success);
/**
* Parses an array starting from index
*
* \param json The JSON data
* \param index The starting index
* \param success The success of the array parse
*
* \return QVariant The parsed variant array
*/
static QVariant parseArray(const QString &json, int &index,
bool &success);
/**
* Parses a string starting from index
*
* \param json The JSON data
* \param index The starting index
* \param success The success of the string parse
*
* \return QVariant The parsed string
*/
static QVariant parseString(const QString &json, int &index,
bool &success);
/**
* Parses a number starting from index
*
* \param json The JSON data
* \param index The starting index
*
* \return QVariant The parsed number
*/
static QVariant parseNumber(const QString &json, int &index);
/**
* Get the last index of a number starting from index
*
* \param json The JSON data
* \param index The starting index
*
* \return The last index of the number
*/
static int lastIndexOfNumber(const QString &json, int index);
/**
* Skip unwanted whitespace symbols starting from index
*
* \param json The JSON data
* \param index The start index
*/
static void eatWhitespace(const QString &json, int &index);
/**
* Check what token lies ahead
*
* \param json The JSON data
* \param index The starting index
*
* \return int The upcoming token
*/
static int lookAhead(const QString &json, int index);
/**
* Get the next JSON token
*
* \param json The JSON data
* \param index The starting index
*
* \return int The next JSON token
*/
static int nextToken(const QString &json, int &index);
};
} //end namespace
#endif //JSON_H
+1425
View File
File diff suppressed because it is too large Load Diff
+155
View File
@@ -0,0 +1,155 @@
/****************************************************************************
** Filename: unzip.h
** Last updated [dd/mm/yyyy]: 27/03/2011
**
** pkzip 2.0 decompression.
**
** Some of the code has been inspired by other open source projects,
** (mainly Info-Zip and Gilles Vollant's minizip).
** Compression and decompression actually uses the zlib library.
**
** Copyright (C) 2007-2012 Angius Fabrizio. All rights reserved.
**
** This file is part of the OSDaB project (http://osdab.42cows.org/).
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See the file LICENSE.GPL that came with this software distribution or
** visit http://www.gnu.org/copyleft/gpl.html for GPL licensing information.
**
**********************************************************************/
#ifndef OSDAB_UNZIP__H
#define OSDAB_UNZIP__H
#include "zipglobal.h"
#include <QtCore/QDateTime>
#include <QtCore/QMap>
#include <QtCore/QtGlobal>
#include <zlib.h>
class QDir;
class QFile;
class QIODevice;
class QString;
OSDAB_BEGIN_NAMESPACE(Zip)
class UnzipPrivate;
class OSDAB_ZIP_EXPORT UnZip
{
public:
enum ErrorCode
{
Ok,
ZlibInit,
ZlibError,
OpenFailed,
PartiallyCorrupted,
Corrupted,
WrongPassword,
NoOpenArchive,
FileNotFound,
ReadFailed,
WriteFailed,
SeekFailed,
CreateDirFailed,
InvalidDevice,
InvalidArchive,
HeaderConsistencyError,
Skip,
SkipAll // internal use only
};
enum ExtractionOption
{
ExtractPaths = 0x0001,
SkipPaths = 0x0002,
VerifyOnly = 0x0004,
NoSilentDirectoryCreation = 0x0008
};
Q_DECLARE_FLAGS(ExtractionOptions, ExtractionOption)
enum CompressionMethod
{
NoCompression,
Deflated,
UnknownCompression
};
enum FileType
{
File,
Directory
};
struct ZipEntry
{
ZipEntry();
QString filename;
QString comment;
quint32 compressedSize;
quint32 uncompressedSize;
quint32 crc32;
QDateTime lastModified;
CompressionMethod compression;
FileType type;
bool encrypted;
};
UnZip();
virtual ~UnZip();
bool isOpen() const;
ErrorCode openArchive(const QString &filename);
ErrorCode openArchive(QIODevice *device);
void closeArchive();
QString archiveComment() const;
QString formatError(UnZip::ErrorCode c) const;
bool contains(const QString &file) const;
QStringList fileList() const;
QList<ZipEntry> entryList() const;
ErrorCode verifyArchive();
ErrorCode extractAll(const QString &dirname, ExtractionOptions options = ExtractPaths);
ErrorCode extractAll(const QDir &dir, ExtractionOptions options = ExtractPaths);
ErrorCode extractFile(const QString &filename, const QString &dirname, ExtractionOptions options = ExtractPaths);
ErrorCode extractFile(const QString &filename, const QDir &dir, ExtractionOptions options = ExtractPaths);
ErrorCode extractFile(const QString &filename, QIODevice *device, ExtractionOptions options = ExtractPaths);
ErrorCode
extractFiles(const QStringList &filenames, const QString &dirname, ExtractionOptions options = ExtractPaths);
ErrorCode extractFiles(const QStringList &filenames, const QDir &dir, ExtractionOptions options = ExtractPaths);
void setPassword(const QString &pwd);
private:
UnzipPrivate *d;
};
Q_DECLARE_OPERATORS_FOR_FLAGS(UnZip::ExtractionOptions)
OSDAB_END_NAMESPACE
#endif // OSDAB_UNZIP__H
+130
View File
@@ -0,0 +1,130 @@
/****************************************************************************
** Filename: unzip_p.h
** Last updated [dd/mm/yyyy]: 27/03/2011
**
** pkzip 2.0 decompression.
**
** Some of the code has been inspired by other open source projects,
** (mainly Info-Zip and Gilles Vollant's minizip).
** Compression and decompression actually uses the zlib library.
**
** Copyright (C) 2007-2012 Angius Fabrizio. All rights reserved.
**
** This file is part of the OSDaB project (http://osdab.42cows.org/).
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See the file LICENSE.GPL that came with this software distribution or
** visit http://www.gnu.org/copyleft/gpl.html for GPL licensing information.
**
**********************************************************************/
//
// W A R N I N G
// -------------
//
// This file is not part of the Zip/UnZip API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#ifndef OSDAB_UNZIP_P__H
#define OSDAB_UNZIP_P__H
#include "unzip.h"
#include "zipentry_p.h"
#include <QtCore/QObject>
#include <QtCore/QtGlobal>
// zLib authors suggest using larger buffers (128K or 256K) for (de)compression (especially for inflate())
// we use a 256K buffer here - if you want to use this code on a pre-iceage mainframe please change it ;)
#define UNZIP_READ_BUFFER (256*1024)
OSDAB_BEGIN_NAMESPACE(Zip)
class UnzipPrivate : public QObject
{
Q_OBJECT
public:
UnzipPrivate();
// Replace this with whatever else you use to store/retrieve the password.
QString password;
bool skipAllEncrypted;
QMap<QString,ZipEntryP*>* headers;
QIODevice* device;
QFile* file;
char buffer1[UNZIP_READ_BUFFER];
char buffer2[UNZIP_READ_BUFFER];
unsigned char* uBuffer;
const quint32* crcTable;
// Central Directory (CD) offset
quint32 cdOffset;
// End of Central Directory (EOCD) offset
quint32 eocdOffset;
// Number of entries in the Central Directory (as to the EOCD record)
quint16 cdEntryCount;
// The number of detected entries that have been skipped because of a non compatible format
quint16 unsupportedEntryCount;
QString comment;
UnZip::ErrorCode openArchive(QIODevice* device);
UnZip::ErrorCode seekToCentralDirectory();
UnZip::ErrorCode parseCentralDirectoryRecord();
UnZip::ErrorCode parseLocalHeaderRecord(const QString& path, const ZipEntryP& entry);
void closeArchive();
UnZip::ErrorCode extractFile(const QString& path, const ZipEntryP& entry, const QDir& dir, UnZip::ExtractionOptions options);
UnZip::ErrorCode extractFile(const QString& path, const ZipEntryP& entry, QIODevice* device, UnZip::ExtractionOptions options);
UnZip::ErrorCode testPassword(quint32* keys, const QString&_file, const ZipEntryP& header);
bool testKeys(const ZipEntryP& header, quint32* keys);
bool createDirectory(const QString& path);
inline void decryptBytes(quint32* keys, char* buffer, qint64 read);
inline quint32 getULong(const unsigned char* data, quint32 offset) const;
inline quint64 getULLong(const unsigned char* data, quint32 offset) const;
inline quint16 getUShort(const unsigned char* data, quint32 offset) const;
inline int decryptByte(quint32 key2) const;
inline void updateKeys(quint32* keys, int c) const;
inline void initKeys(const QString& pwd, quint32* keys) const;
inline QDateTime convertDateTime(const unsigned char date[2], const unsigned char time[2]) const;
private slots:
void deviceDestroyed(QObject*);
private:
UnZip::ErrorCode extractStoredFile(const quint32 szComp, quint32** keys,
quint32& myCRC, QIODevice* outDev, UnZip::ExtractionOptions options);
UnZip::ErrorCode inflateFile(const quint32 szComp, quint32** keys,
quint32& myCRC, QIODevice* outDev, UnZip::ExtractionOptions options);
void do_closeArchive();
};
OSDAB_END_NAMESPACE
#endif // OSDAB_UNZIP_P__H
+1619
View File
File diff suppressed because it is too large Load Diff
+158
View File
@@ -0,0 +1,158 @@
/****************************************************************************
** Filename: zip.h
** Last updated [dd/mm/yyyy]: 27/03/2011
**
** pkzip 2.0 file compression.
**
** Some of the code has been inspired by other open source projects,
** (mainly Info-Zip and Gilles Vollant's minizip).
** Compression and decompression actually uses the zlib library.
**
** Copyright (C) 2007-2012 Angius Fabrizio. All rights reserved.
**
** This file is part of the OSDaB project (http://osdab.42cows.org/).
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See the file LICENSE.GPL that came with this software distribution or
** visit http://www.gnu.org/copyleft/gpl.html for GPL licensing information.
**
**********************************************************************/
#ifndef OSDAB_ZIP__H
#define OSDAB_ZIP__H
#include "zipglobal.h"
#include <QtCore/QMap>
#include <QtCore/QtGlobal>
#include <zlib/zlib.h>
class QIODevice;
class QFile;
class QDir;
class QStringList;
class QString;
OSDAB_BEGIN_NAMESPACE(Zip)
class ZipPrivate;
class OSDAB_ZIP_EXPORT Zip
{
public:
enum ErrorCode
{
Ok,
ZlibInit,
ZlibError,
FileExists,
OpenFailed,
NoOpenArchive,
FileNotFound,
ReadFailed,
WriteFailed,
SeekFailed,
InternalError
};
enum CompressionLevel
{
Store,
Deflate1 = 1, Deflate2, Deflate3, Deflate4,
Deflate5, Deflate6, Deflate7, Deflate8, Deflate9,
AutoCPU, AutoMIME, AutoFull
};
enum CompressionOption
{
/*! Does not preserve absolute paths in the zip file when adding a
file or directory (default) */
RelativePaths = 0x0001,
/*! Preserve absolute paths */
AbsolutePaths = 0x0002,
/*! Do not store paths. All the files are put in the (evtl. user defined)
root of the zip file */
IgnorePaths = 0x0004,
/*! Works only with addDirectory(). Adds the directory's contents,
including subdirectories, but does not add an entry for the root
directory itself. */
IgnoreRoot = 0x0008,
/*! Used only when compressing a directory or multiple files.
If set invalid or unreadable files are simply skipped.
*/
SkipBadFiles = 0x0020,
/*! Makes sure a file is never added twice to the same zip archive.
This check is only necessary in certain usage scenarios and given
that it slows down processing you need to enable it explicitly with
this flag.
*/
CheckForDuplicates = 0x0040
};
Q_DECLARE_FLAGS(CompressionOptions, CompressionOption)
Zip();
virtual ~Zip();
bool isOpen() const;
void setPassword(const QString& pwd);
void clearPassword();
QString password() const;
ErrorCode createArchive(const QString& file, bool overwrite = true);
ErrorCode createArchive(QIODevice* device);
QString archiveComment() const;
void setArchiveComment(const QString& comment);
ErrorCode addDirectoryContents(const QString& path,
CompressionLevel level = AutoFull);
ErrorCode addDirectoryContents(const QString& path, const QString& root,
CompressionLevel level = AutoFull);
ErrorCode addDirectory(const QString& path,
CompressionLevel level = AutoFull);
ErrorCode addDirectory(const QString& path, const QString& root,
CompressionLevel level = AutoFull);
ErrorCode addDirectory(const QString& path, const QString& root,
CompressionOptions options, CompressionLevel level = AutoFull,
int* addedFiles = 0);
ErrorCode addFile(const QString& path,
CompressionLevel level = AutoFull);
ErrorCode addFile(const QString& path, const QString& root,
CompressionLevel level = AutoFull);
ErrorCode addFile(const QString& path, const QString& root,
CompressionOptions options,
CompressionLevel level = AutoFull);
ErrorCode addFiles(const QStringList& paths,
CompressionLevel level = AutoFull);
ErrorCode addFiles(const QStringList& paths, const QString& root,
CompressionLevel level = AutoFull);
ErrorCode addFiles(const QStringList& paths, const QString& root,
CompressionOptions options,
CompressionLevel level = AutoFull,
int* addedFiles = 0);
ErrorCode closeArchive();
QString formatError(ErrorCode c) const;
private:
ZipPrivate* d;
};
Q_DECLARE_OPERATORS_FOR_FLAGS(Zip::CompressionOptions)
OSDAB_END_NAMESPACE
#endif // OSDAB_ZIP__H
+133
View File
@@ -0,0 +1,133 @@
/****************************************************************************
** Filename: zip_p.h
** Last updated [dd/mm/yyyy]: 27/03/2011
**
** pkzip 2.0 file compression.
**
** Some of the code has been inspired by other open source projects,
** (mainly Info-Zip and Gilles Vollant's minizip).
** Compression and decompression actually uses the zlib library.
**
** Copyright (C) 2007-2012 Angius Fabrizio. All rights reserved.
**
** This file is part of the OSDaB project (http://osdab.42cows.org/).
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See the file LICENSE.GPL that came with this software distribution or
** visit http://www.gnu.org/copyleft/gpl.html for GPL licensing information.
**
**********************************************************************/
//
// W A R N I N G
// -------------
//
// This file is not part of the Zip/UnZip API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#ifndef OSDAB_ZIP_P__H
#define OSDAB_ZIP_P__H
#include "zip.h"
#include "zipentry_p.h"
#include <QtCore/QFileInfo>
#include <QtCore/QObject>
#include <QtCore/QtGlobal>
#include <zlib/zconf.h>
/*!
zLib authors suggest using larger buffers (128K or 256K) for (de)compression (especially for inflate())
we use a 256K buffer here - if you want to use this code on a pre-iceage mainframe please change it ;)
*/
#define ZIP_READ_BUFFER (256*1024)
OSDAB_BEGIN_NAMESPACE(Zip)
class ZipPrivate : public QObject
{
Q_OBJECT
public:
// uLongf from zconf.h
typedef uLongf crc_t;
ZipPrivate();
virtual ~ZipPrivate();
QMap<QString,ZipEntryP*>* headers;
QIODevice* device;
QFile* file;
char buffer1[ZIP_READ_BUFFER];
char buffer2[ZIP_READ_BUFFER];
unsigned char* uBuffer;
const crc_t* crcTable;
QString comment;
QString password;
Zip::ErrorCode createArchive(QIODevice* device);
Zip::ErrorCode closeArchive();
void reset();
bool zLibInit();
bool containsEntry(const QFileInfo& info) const;
Zip::ErrorCode addDirectory(const QString& path, const QString& root,
Zip::CompressionOptions options, Zip::CompressionLevel level,
int hierarchyLevel, int* addedFiles = 0);
Zip::ErrorCode addFiles(const QStringList& paths, const QString& root,
Zip::CompressionOptions options, Zip::CompressionLevel level,
int* addedFiles);
Zip::ErrorCode createEntry(const QFileInfo& file, const QString& root,
Zip::CompressionLevel level);
Zip::CompressionLevel detectCompressionByMime(const QString& ext);
inline quint32 updateChecksum(const quint32& crc, const quint32& val) const;
inline void encryptBytes(quint32* keys, char* buffer, qint64 read);
inline void setULong(quint32 v, char* buffer, unsigned int offset);
inline void updateKeys(quint32* keys, int c) const;
inline void initKeys(quint32* keys) const;
inline int decryptByte(quint32 key2) const;
inline QString extractRoot(const QString& p, Zip::CompressionOptions o);
private slots:
void deviceDestroyed(QObject*);
private:
int compressionStrategy(const QString& path, QIODevice& file) const;
Zip::ErrorCode deflateFile(const QFileInfo& fileInfo,
quint32& crc, qint64& written, const Zip::CompressionLevel& level, quint32** keys);
Zip::ErrorCode storeFile(const QString& path, QIODevice& file,
quint32& crc, qint64& written, quint32** keys);
Zip::ErrorCode compressFile(const QString& path, QIODevice& file,
quint32& crc, qint64& written, const Zip::CompressionLevel& level, quint32** keys);
Zip::ErrorCode do_closeArchive();
Zip::ErrorCode writeEntry(const QString& fileName, const ZipEntryP* h, quint32& szCentralDir);
Zip::ErrorCode writeCentralDir(quint32 offCentralDir, quint32 szCentralDir);
};
OSDAB_END_NAMESPACE
#endif // OSDAB_ZIP_P__H
+91
View File
@@ -0,0 +1,91 @@
/****************************************************************************
** Filename: ZipEntryP.h
** Last updated [dd/mm/yyyy]: 27/03/2011
**
** Wrapper for a ZIP local header.
**
** Some of the code has been inspired by other open source projects,
** (mainly Info-Zip and Gilles Vollant's minizip).
** Compression and decompression actually uses the zlib library.
**
** Copyright (C) 2007-2012 Angius Fabrizio. All rights reserved.
**
** This file is part of the OSDaB project (http://osdab.42cows.org/).
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See the file LICENSE.GPL that came with this software distribution or
** visit http://www.gnu.org/copyleft/gpl.html for GPL licensing information.
**
**********************************************************************/
//
// W A R N I N G
// -------------
//
// This file is not part of the Zip/UnZip API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#ifndef OSDAB_ZIPENTRY_P__H
#define OSDAB_ZIPENTRY_P__H
#include <QtCore/QString>
#include <QtCore/QtGlobal>
OSDAB_BEGIN_NAMESPACE(Zip)
class ZipEntryP
{
public:
ZipEntryP() :
lhOffset(0),
dataOffset(0),
gpFlag(),
compMethod(0),
modTime(),
modDate(),
crc(0),
szComp(0),
szUncomp(0),
absolutePath(),
fileSize(0),
lhEntryChecked(false)
{
gpFlag[0] = gpFlag[1] = 0;
modTime[0] = modTime[1] = 0;
modDate[0] = modDate[1] = 0;
}
quint32 lhOffset; // Offset of the local header record for this entry
mutable quint32 dataOffset; // Offset of the file data for this entry
unsigned char gpFlag[2]; // General purpose flag
quint16 compMethod; // Compression method
unsigned char modTime[2]; // Last modified time
unsigned char modDate[2]; // Last modified date
quint32 crc; // CRC32
quint32 szComp; // Compressed file size
quint32 szUncomp; // Uncompressed file size
QString comment; // File comment
QString absolutePath; // Internal use
qint64 fileSize; // Internal use
mutable bool lhEntryChecked; // Is true if the local header record for this entry has been parsed
inline bool isEncrypted() const { return gpFlag[0] & 0x01; }
inline bool hasDataDescriptor() const { return gpFlag[0] & 0x08; }
};
OSDAB_END_NAMESPACE
#endif // OSDAB_ZIPENTRY_P__H
+150
View File
@@ -0,0 +1,150 @@
/****************************************************************************
** Filename: zipglobal.cpp
** Last updated [dd/mm/yyyy]: 06/02/2011
**
** pkzip 2.0 file compression.
**
** Some of the code has been inspired by other open source projects,
** (mainly Info-Zip and Gilles Vollant's minizip).
** Compression and decompression actually uses the zlib library.
**
** Copyright (C) 2007-2012 Angius Fabrizio. All rights reserved.
**
** This file is part of the OSDaB project (http://osdab.42cows.org/).
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See the file LICENSE.GPL that came with this software distribution or
** visit http://www.gnu.org/copyleft/gpl.html for GPL licensing information.
**
**********************************************************************/
#include "zipglobal.h"
#if defined(Q_OS_WIN) || defined(Q_OS_WINCE) || defined(Q_OS_LINUX) || defined(Q_OS_MACOS)
#define OSDAB_ZIP_HAS_UTC
#include <ctime>
#else
#undef OSDAB_ZIP_HAS_UTC
#endif
#if defined(Q_OS_WIN)
#include <QtCore/qt_windows.h>
#elif defined(Q_OS_LINUX) || defined(Q_OS_MACOS)
#include <utime.h>
#endif
OSDAB_BEGIN_NAMESPACE(Zip)
/*! Returns the current UTC offset in seconds unless OSDAB_ZIP_NO_UTC is defined
and method is implemented for the current platform and 0 otherwise.
*/
int OSDAB_ZIP_MANGLE(currentUtcOffset)()
{
#if !(!defined OSDAB_ZIP_NO_UTC && defined OSDAB_ZIP_HAS_UTC)
return 0;
#else
time_t curr_time_t;
time(&curr_time_t);
#if defined Q_OS_WIN
struct tm _tm_struct;
struct tm *tm_struct = &_tm_struct;
#else
struct tm *tm_struct = 0;
#endif
#if !defined(QT_NO_THREAD) && defined(_POSIX_THREAD_SAFE_FUNCTIONS)
// use the reentrant version of localtime() where available
tzset();
tm res;
tm_struct = gmtime_r(&curr_time_t, &res);
#elif defined Q_OS_WIN && !defined Q_CC_MINGW
if (gmtime_s(tm_struct, &curr_time_t))
return 0;
#else
tm_struct = gmtime(&curr_time_t);
#endif
if (!tm_struct)
return 0;
const time_t global_time_t = mktime(tm_struct);
#if !defined(QT_NO_THREAD) && defined(_POSIX_THREAD_SAFE_FUNCTIONS)
// use the reentrant version of localtime() where available
tm_struct = localtime_r(&curr_time_t, &res);
#elif defined Q_OS_WIN && !defined Q_CC_MINGW
if (localtime_s(tm_struct, &curr_time_t))
return 0;
#else
tm_struct = localtime(&curr_time_t);
#endif
if (!tm_struct)
return 0;
const time_t local_time_t = mktime(tm_struct);
const int utcOffset = -qRound(difftime(global_time_t, local_time_t));
return tm_struct->tm_isdst > 0 ? utcOffset + 3600 : utcOffset;
#endif // No UTC
}
QDateTime OSDAB_ZIP_MANGLE(fromFileTimestamp)(const QDateTime &dateTime)
{
#if !defined OSDAB_ZIP_NO_UTC && defined OSDAB_ZIP_HAS_UTC
const int utc = OSDAB_ZIP_MANGLE(currentUtcOffset)();
return dateTime.toUTC().addSecs(utc);
#else
return dateTime;
#endif // OSDAB_ZIP_NO_UTC
}
bool OSDAB_ZIP_MANGLE(setFileTimestamp)(const QString &fileName, const QDateTime &dateTime)
{
if (fileName.isEmpty())
return true;
#ifdef Q_OS_WIN
HANDLE hFile =
CreateFileW(fileName.toStdWString().c_str(), GENERIC_WRITE, FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0);
if (hFile == INVALID_HANDLE_VALUE) {
return false;
}
SYSTEMTIME st;
FILETIME ft, ftLastMod;
const QDate date = dateTime.date();
const QTime time = dateTime.time();
st.wYear = date.year();
st.wMonth = date.month();
st.wDay = date.day();
st.wHour = time.hour();
st.wMinute = time.minute();
st.wSecond = time.second();
st.wMilliseconds = time.msec();
SystemTimeToFileTime(&st, &ft);
LocalFileTimeToFileTime(&ft, &ftLastMod);
const bool success = SetFileTime(hFile, NULL, NULL, &ftLastMod);
CloseHandle(hFile);
return success;
#elif defined(Q_OS_LINUX) || defined(Q_OS_MACOS)
struct utimbuf t_buffer;
t_buffer.actime = t_buffer.modtime = dateTime.toSecsSinceEpoch();
return utime(fileName.toLocal8Bit().constData(), &t_buffer) == 0;
#endif
return true;
}
OSDAB_END_NAMESPACE
+77
View File
@@ -0,0 +1,77 @@
/****************************************************************************
** Filename: zipglobal.h
** Last updated [dd/mm/yyyy]: 27/03/2011
**
** pkzip 2.0 file compression.
**
** Some of the code has been inspired by other open source projects,
** (mainly Info-Zip and Gilles Vollant's minizip).
** Compression and decompression actually uses the zlib library.
**
** Copyright (C) 2007-2012 Angius Fabrizio. All rights reserved.
**
** This file is part of the OSDaB project (http://osdab.42cows.org/).
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See the file LICENSE.GPL that came with this software distribution or
** visit http://www.gnu.org/copyleft/gpl.html for GPL licensing information.
**
**********************************************************************/
#ifndef OSDAB_ZIPGLOBAL__H
#define OSDAB_ZIPGLOBAL__H
#include <QtCore/QDateTime>
#include <QtCore/QtGlobal>
/* If you want to build the OSDaB Zip code as
a library, define OSDAB_ZIP_LIB in the library's .pro file and
in the libraries using it OR remove the #ifndef OSDAB_ZIP_LIB
define below and leave the #else body. Also remember to define
OSDAB_ZIP_BUILD_LIB in the library's project).
*/
#ifndef OSDAB_ZIP_LIB
# define OSDAB_ZIP_EXPORT
#else
# if defined(OSDAB_ZIP_BUILD_LIB)
# define OSDAB_ZIP_EXPORT Q_DECL_EXPORT
# else
# define OSDAB_ZIP_EXPORT Q_DECL_IMPORT
# endif
#endif
#ifdef OSDAB_NAMESPACE
#define OSDAB_BEGIN_NAMESPACE(ModuleName) namespace Osdab { namespace ModuleName {
#else
#define OSDAB_BEGIN_NAMESPACE(ModuleName)
#endif
#ifdef OSDAB_NAMESPACE
#define OSDAB_END_NAMESPACE } }
#else
#define OSDAB_END_NAMESPACE
#endif
#ifndef OSDAB_NAMESPACE
#define OSDAB_ZIP_MANGLE(x) zip_##x
#else
#define OSDAB_ZIP_MANGLE(x) x
#endif
OSDAB_BEGIN_NAMESPACE(Zip)
OSDAB_ZIP_EXPORT int OSDAB_ZIP_MANGLE(currentUtcOffset)();
OSDAB_ZIP_EXPORT QDateTime OSDAB_ZIP_MANGLE(fromFileTimestamp)(const QDateTime& dateTime);
OSDAB_ZIP_EXPORT bool OSDAB_ZIP_MANGLE(setFileTimestamp)(const QString& fileName, const QDateTime& dateTime);
OSDAB_END_NAMESPACE
#endif // OSDAB_ZIPGLOBAL__H
+550
View File
@@ -0,0 +1,550 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS version="2.1" language="cs">
<context>
<name>IntroPage</name>
<message>
<location filename="src/oraclewizard.cpp" line="200"/>
<source>Introduction</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="201"/>
<source>This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="203"/>
<source>Interface language:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="204"/>
<source>Version:</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>LoadSetsPage</name>
<message>
<location filename="src/oraclewizard.cpp" line="259"/>
<source>Source selection</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="260"/>
<source>Please specify a compatible 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.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="264"/>
<source>Download URL:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="265"/>
<source>Local file:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="266"/>
<source>Restore default URL</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="267"/>
<source>Choose file...</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="277"/>
<source>Load sets file</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="287"/>
<source>Sets JSON file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="317"/>
<location filename="src/oraclewizard.cpp" line="336"/>
<location filename="src/oraclewizard.cpp" line="341"/>
<location filename="src/oraclewizard.cpp" line="409"/>
<location filename="src/oraclewizard.cpp" line="540"/>
<location filename="src/oraclewizard.cpp" line="553"/>
<location filename="src/oraclewizard.cpp" line="574"/>
<source>Error</source>
<translation>Chyba</translation>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="317"/>
<source>The provided URL is not valid.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="321"/>
<source>Downloading (0MB)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="336"/>
<source>Please choose a file.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="341"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="400"/>
<source>Downloading (%1MB)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="409"/>
<source>Network error: %1.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="447"/>
<source>Parsing file</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="469"/>
<source>Xz extraction failed.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="476"/>
<source>Sorry, this version of Oracle does not support xz compressed files.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="496"/>
<source>Failed to open Zip archive: %1.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="501"/>
<source>Zip extraction failed: the Zip archive doesn&apos;t contain exactly one file.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="509"/>
<source>Zip extraction failed: %1.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="517"/>
<source>Sorry, this version of Oracle does not support zipped files.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="540"/>
<source>Failed to interpret downloaded data.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="553"/>
<source>Do you want to download the uncompressed file instead?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="575"/>
<source>The file was retrieved successfully, but it does not contain any sets data.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>LoadSpoilersPage</name>
<message>
<location filename="src/oraclewizard.cpp" line="749"/>
<source>Save spoiler database</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="754"/>
<source>XML; spoiler database (*.xml)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="759"/>
<source>Spoilers import</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="760"/>
<source>Please specify a compatible source for spoiler data.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="762"/>
<source>Download URL:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="763"/>
<source>Restore default URL</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="764"/>
<source>The spoiler database will be saved at the following location:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="766"/>
<source>Save to a custom path (not recommended)</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>LoadTokensPage</name>
<message>
<location filename="src/oraclewizard.cpp" line="712"/>
<source>Save token database</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="717"/>
<source>XML; token database (*.xml)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="722"/>
<source>Tokens import</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="723"/>
<source>Please specify a compatible source for token data.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="725"/>
<source>Download URL:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="726"/>
<source>Restore default URL</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="727"/>
<source>The token database will be saved at the following location:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="729"/>
<source>Save to a custom path (not recommended)</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>OracleImporter</name>
<message>
<location filename="src/oracleimporter.cpp" line="492"/>
<source>Dummy set containing tokens</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>OracleWizard</name>
<message>
<location filename="src/oraclewizard.cpp" line="98"/>
<source>Oracle Importer</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>OutroPage</name>
<message>
<location filename="src/oraclewizard.cpp" line="209"/>
<source>Finished</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="210"/>
<source>The wizard has finished.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="211"/>
<source>You can now start using Cockatrice with the newly updated cards.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="212"/>
<source>If the card databases don&apos;t reload automatically, restart the Cockatrice client.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>SaveSetsPage</name>
<message>
<location filename="src/oraclewizard.cpp" line="618"/>
<location filename="src/oraclewizard.cpp" line="688"/>
<source>Error</source>
<translation>Chyba</translation>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="618"/>
<source>No set has been imported.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="624"/>
<source>Sets imported</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="626"/>
<source>A cockatrice database file of %1 MB has been downloaded.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="629"/>
<source>The following sets have been found:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="632"/>
<source>Press &quot;Save&quot; to store the imported cards in the Cockatrice database.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="633"/>
<source>The card database will be saved at the following location:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="635"/>
<source>Save to a custom path (not recommended)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="637"/>
<source>&amp;Save</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="643"/>
<source>Import finished: %1 cards.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="646"/>
<source>%1: %2 cards imported</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="655"/>
<source>Save card database</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="656"/>
<source>XML; card database (*.xml)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="688"/>
<source>The file could not be saved to %1</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>SimpleDownloadFilePage</name>
<message>
<location filename="src/pagetemplates.cpp" line="73"/>
<location filename="src/pagetemplates.cpp" line="113"/>
<location filename="src/pagetemplates.cpp" line="169"/>
<source>Error</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="73"/>
<source>The provided URL is not valid.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="77"/>
<source>Downloading (0MB)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="104"/>
<source>Downloading (%1MB)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="113"/>
<source>Network error: %1.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="169"/>
<source>The file could not be saved to %1</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>UnZip</name>
<message>
<location filename="src/zip/unzip.cpp" line="1175"/>
<source>ZIP operation completed successfully.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1176"/>
<source>Failed to initialize or load zlib library.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1177"/>
<source>zlib library error.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1178"/>
<source>Unable to create or open file.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1179"/>
<source>Partially corrupted archive. Some files might be extracted.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1180"/>
<source>Corrupted archive.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1181"/>
<source>Wrong password.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1182"/>
<source>No archive has been created yet.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1183"/>
<source>File or directory does not exist.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1184"/>
<source>File read error.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1185"/>
<source>File write error.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1186"/>
<source>File seek error.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1187"/>
<source>Unable to create a directory.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1188"/>
<source>Invalid device.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1189"/>
<source>Invalid or incompatible zip archive.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1190"/>
<source>Inconsistent headers. Archive might be corrupted.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1194"/>
<source>Unknown error.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>Zip</name>
<message>
<location filename="src/zip/zip.cpp" line="1604"/>
<source>ZIP operation completed successfully.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1605"/>
<source>Failed to initialize or load zlib library.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1606"/>
<source>zlib library error.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1607"/>
<source>Unable to create or open file.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1608"/>
<source>No archive has been created yet.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1609"/>
<source>File or directory does not exist.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1610"/>
<source>File read error.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1611"/>
<source>File write error.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1612"/>
<source>File seek error.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1616"/>
<source>Unknown error.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>i18n</name>
<message>
<location filename="src/oraclewizard.cpp" line="58"/>
<source>English</source>
<translation>Česky (Czech)</translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="src/main.cpp" line="60"/>
<source>Only run in spoiler mode</source>
<translation type="unfinished"/>
</message>
</context>
</TS>
+609
View File
@@ -0,0 +1,609 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS version="2.1" language="de">
<context>
<name>IntroPage</name>
<message>
<location filename="src/pages.cpp" line="127"/>
<source>Introduction</source>
<translation>Einführung</translation>
</message>
<message>
<location filename="src/pages.cpp" line="128"/>
<source>This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice.</source>
<translation>Dieser Assistent wird eine Liste aller Editionen, Karten und Spielsteine importieren, die von Cockatrice genutzt werden.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="130"/>
<source>Interface language:</source>
<translation>Interfacesprache:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="131"/>
<source>Version:</source>
<translation>Version:</translation>
</message>
</context>
<context>
<name>LoadSetsPage</name>
<message>
<location filename="src/pages.cpp" line="200"/>
<source>Source selection</source>
<translation>Quellenauswahl</translation>
</message>
<message>
<location filename="src/pages.cpp" line="201"/>
<source>Please specify a compatible 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.</source>
<translation>Bitte geben Sie eine kompatible Quelle für die Liste der Editionen und Karten an. Sie können eine URL-Adresse zum Herunterladen angeben oder eine existierende Datei von Ihrem Computer verwenden.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="205"/>
<source>Download URL:</source>
<translation>Download URL:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="206"/>
<source>Local file:</source>
<translation>Lokale Datei:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="207"/>
<source>Restore default URL</source>
<translation>Standard-URL wiederherstellen</translation>
</message>
<message>
<location filename="src/pages.cpp" line="208"/>
<source>Choose file...</source>
<translation>Datei auswählen...</translation>
</message>
<message>
<location filename="src/pages.cpp" line="218"/>
<source>Load sets file</source>
<translation>Editionsdatei wird geladen</translation>
</message>
<message>
<location filename="src/pages.cpp" line="228"/>
<source>Sets file (%1)</source>
<oldsource>Sets JSON file (%1)</oldsource>
<translation>Sets Datei (%1)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<location filename="src/pages.cpp" line="277"/>
<location filename="src/pages.cpp" line="282"/>
<location filename="src/pages.cpp" line="354"/>
<location filename="src/pages.cpp" line="485"/>
<location filename="src/pages.cpp" line="498"/>
<location filename="src/pages.cpp" line="519"/>
<source>Error</source>
<translation>Fehler</translation>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<source>The provided URL is not valid.</source>
<translation>Die eingegebene URL ist nicht gültig.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="262"/>
<source>Downloading (0MB)</source>
<translation>Herunterladen (0MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="277"/>
<source>Please choose a file.</source>
<translation>Bitte wähle eine Datei aus.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="282"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation>Datei &apos;%1&apos; kann nicht geöffnet werden.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="345"/>
<source>Downloading (%1MB)</source>
<translation>Herunterladen (%1MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="354"/>
<source>Network error: %1.</source>
<translation>Netzwerkfehler: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="392"/>
<source>Parsing file</source>
<translation>Datei wird verarbeitet</translation>
</message>
<message>
<location filename="src/pages.cpp" line="414"/>
<source>Xz extraction failed.</source>
<translation>Fehler beim Extrahieren der xz Datei.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="421"/>
<source>Sorry, this version of Oracle does not support xz compressed files.</source>
<translation>Es tut uns Leid, diese Version von Oracle unterstützt keine xz komprimierten Dateien.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="441"/>
<source>Failed to open Zip archive: %1.</source>
<translation>Fehler beim Öffnen des Zip Archivs: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="446"/>
<source>Zip extraction failed: the Zip archive doesn&apos;t contain exactly one file.</source>
<translation>Fehler beim Extrahieren: Das Zip Archiv enthält mehr als eine Datei.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="454"/>
<source>Zip extraction failed: %1.</source>
<translation>Fehler beim Extrahieren: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="462"/>
<source>Sorry, this version of Oracle does not support zipped files.</source>
<translation>Es tut uns Leid, diese Version von Oracle unterstützt keine Zip Archive.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="485"/>
<source>Failed to interpret downloaded data.</source>
<translation>Interpretation der heruntergeladenen Daten fehlgeschlagen.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="498"/>
<source>Do you want to download the uncompressed file instead?</source>
<translation>Möchten Sie stattdessen die unkomprimierte Datei herunterladen?</translation>
</message>
<message>
<location filename="src/pages.cpp" line="520"/>
<source>The file was retrieved successfully, but it does not contain any sets data.</source>
<translation>Die Datei wurde erfolgreich abgerufen, sie enthält aber keine Editionsdaten.</translation>
</message>
</context>
<context>
<name>LoadSpoilersPage</name>
<message>
<location filename="src/pages.cpp" line="716"/>
<source>Save spoiler database</source>
<translation>Speichere Spoilerdatenbank</translation>
</message>
<message>
<location filename="src/pages.cpp" line="721"/>
<source>XML; spoiler database (*.xml)</source>
<translation>XML; Spoilerdatenbank (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="726"/>
<source>spoiler</source>
<translation>Spoiler</translation>
</message>
<message>
<location filename="src/pages.cpp" line="731"/>
<source>Spoilers import</source>
<translation>Spoilerimport</translation>
</message>
<message>
<location filename="src/pages.cpp" line="732"/>
<source>Please specify a compatible source for spoiler data.</source>
<translation>Bitte geben Sie eine kompatible Quelle für Spoilerdaten an.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="734"/>
<source>Download URL:</source>
<translation>Download URL:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="735"/>
<source>Local file:</source>
<translation>Lokale Datei:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="736"/>
<source>Restore default URL</source>
<translation>Standard-URL wiederherstellen</translation>
</message>
<message>
<location filename="src/pages.cpp" line="737"/>
<source>Choose file...</source>
<translation>Datei auswählen...</translation>
</message>
<message>
<location filename="src/pages.cpp" line="739"/>
<source>The spoiler database will be saved at the following location:</source>
<translation>Die Spoilerdatenbank wird in folgendem Pfad gespeichert:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="741"/>
<source>Save to a custom path (not recommended)</source>
<translation>Speichere in benutzerdefiniertem Pfad (nicht empfohlen)</translation>
</message>
</context>
<context>
<name>LoadTokensPage</name>
<message>
<location filename="src/pages.cpp" line="671"/>
<source>Save token database</source>
<translation>Speichere Spielsteindatenbank</translation>
</message>
<message>
<location filename="src/pages.cpp" line="676"/>
<source>XML; token database (*.xml)</source>
<translation>XML; Spielsteindatenbank (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="681"/>
<source>tokens</source>
<translation>Spielsteine</translation>
</message>
<message>
<location filename="src/pages.cpp" line="686"/>
<source>Tokens import</source>
<translation>Spielsteinimport</translation>
</message>
<message>
<location filename="src/pages.cpp" line="687"/>
<source>Please specify a compatible source for token data.</source>
<translation>Bitte geben Sie eine kompatible Quelle für Spielsteindaten an.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="689"/>
<source>Download URL:</source>
<translation>Download URL:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="690"/>
<source>Local file:</source>
<translation>Lokale Datei:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="691"/>
<source>Restore default URL</source>
<translation>Standard-URL wiederherstellen</translation>
</message>
<message>
<location filename="src/pages.cpp" line="692"/>
<source>Choose file...</source>
<translation>Datei auswählen...</translation>
</message>
<message>
<location filename="src/pages.cpp" line="694"/>
<source>The token database will be saved at the following location:</source>
<translation>Die Spielsteindatenbank wird in folgendem Pfad gespeichert:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="696"/>
<source>Save to a custom path (not recommended)</source>
<translation>Speichere in benutzerdefiniertem Pfad (nicht empfohlen)</translation>
</message>
</context>
<context>
<name>OracleImporter</name>
<message>
<location filename="src/oracleimporter.cpp" line="542"/>
<source>Dummy set containing tokens</source>
<translation>Platzhalter Edition mit Spielsteinen</translation>
</message>
</context>
<context>
<name>OracleWizard</name>
<message>
<location filename="src/oraclewizard.cpp" line="101"/>
<source>Oracle Importer</source>
<translation>Oracle Importer</translation>
</message>
</context>
<context>
<name>OutroPage</name>
<message>
<location filename="src/pages.cpp" line="136"/>
<source>Finished</source>
<translation>Fertig</translation>
</message>
<message>
<location filename="src/pages.cpp" line="137"/>
<source>The wizard has finished.</source>
<translation>Der Wizard ist fertig.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="138"/>
<source>You can now start using Cockatrice with the newly updated cards.</source>
<translation>Sie können nun Cockatrice mit den aktuellen Karten verwenden.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="139"/>
<source>If the card databases don&apos;t reload automatically, restart the Cockatrice client.</source>
<translation>Falls die Datenbanken nicht automatisch neu geladen werden, starten Sie bitte Cockatrice neu.</translation>
</message>
</context>
<context>
<name>SaveSetsPage</name>
<message>
<location filename="src/pages.cpp" line="563"/>
<location filename="src/pages.cpp" line="638"/>
<source>Error</source>
<translation>Fehler</translation>
</message>
<message>
<location filename="src/pages.cpp" line="563"/>
<source>No set has been imported.</source>
<translation>Es wurden keine Editionen importiert.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="574"/>
<source>Sets imported</source>
<translation>Editionen wurden importiert</translation>
</message>
<message>
<location filename="src/pages.cpp" line="576"/>
<source>A cockatrice database file of %1 MB has been downloaded.</source>
<translation>Eine Cockatrice-Datenbankdatei der Größe %1 MB wurde heruntergeladen.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="579"/>
<source>The following sets have been found:</source>
<translation>Die folgenden Sets wurden gefunden:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="582"/>
<source>Press &quot;Save&quot; to store the imported cards in the Cockatrice database.</source>
<translation>Drücken Sie &quot;Speichern&quot;, um die importierten Karten in der Datenbank zu speichern.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="583"/>
<source>The card database will be saved at the following location:</source>
<translation>Die Kartendatenbank wird in folgendem Pfad gespeichert:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="585"/>
<source>Save to a custom path (not recommended)</source>
<translation>Speichere in benutzerdefiniertem Pfad (nicht empfohlen)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="587"/>
<source>&amp;Save</source>
<translation>&amp;Speichern</translation>
</message>
<message>
<location filename="src/pages.cpp" line="593"/>
<source>Import finished: %1 cards.</source>
<translation>Importieren abgeschlossen: %1 Karten.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="596"/>
<source>%1: %2 cards imported</source>
<translation>%1: %2 Karten importiert.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="605"/>
<source>Save card database</source>
<translation>Kartendatenbank speichern</translation>
</message>
<message>
<location filename="src/pages.cpp" line="606"/>
<source>XML; card database (*.xml)</source>
<translation>XML; Kartendatenbank (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="638"/>
<source>The file could not be saved to %1</source>
<translation>Die Datei konnte nicht gespeichert werden:
%1 </translation>
</message>
</context>
<context>
<name>SimpleDownloadFilePage</name>
<message>
<location filename="src/pagetemplates.cpp" line="72"/>
<source>Load %1 file</source>
<translation>Lade %1 Datei</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="82"/>
<source>%1 file (%1)</source>
<translation>%1 Datei (%1)</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<location filename="src/pagetemplates.cpp" line="129"/>
<location filename="src/pagetemplates.cpp" line="134"/>
<location filename="src/pagetemplates.cpp" line="168"/>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>Error</source>
<translation>Fehler</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<source>The provided URL is not valid: </source>
<translation>Die bereitgestellte URL ist nicht gültig:</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="115"/>
<source>Downloading (0MB)</source>
<translation>Herunterladen (0MB)</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="129"/>
<source>Please choose a file.</source>
<translation>Bitte wähle eine Datei aus.</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="134"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation>Datei &apos;%1&apos; kann nicht geöffnet werden.</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="159"/>
<source>Downloading (%1MB)</source>
<translation>Herunterladen (%1MB)</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="168"/>
<source>Network error: %1.</source>
<translation>Netzwerkfehler: %1.</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>The file could not be saved to %1</source>
<translation>Die Datei konnte nicht in %1 gespeichert werden</translation>
</message>
</context>
<context>
<name>UnZip</name>
<message>
<location filename="src/zip/unzip.cpp" line="1175"/>
<source>ZIP operation completed successfully.</source>
<translation>ZIP-Operation erfolgreich abgeschlossen.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1176"/>
<source>Failed to initialize or load zlib library.</source>
<translation>Fehler beim Initialisieren oder Laden der zlib Bibliothek.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1177"/>
<source>zlib library error.</source>
<translation>zlib Bibliotheksfehler.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1178"/>
<source>Unable to create or open file.</source>
<translation>Fehler beim Erstellen oder Öffnen der Datei.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1179"/>
<source>Partially corrupted archive. Some files might be extracted.</source>
<translation>Teilweise fehlerhaftes Archiv. Manche Dateien wurden möglicherweise extrahiert.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1180"/>
<source>Corrupted archive.</source>
<translation>Fehlerhaftes Archiv.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1181"/>
<source>Wrong password.</source>
<translation>Falsches Passwort.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1182"/>
<source>No archive has been created yet.</source>
<translation>Es wurde noch kein Archiv erstellt.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1183"/>
<source>File or directory does not exist.</source>
<translation>Datei oder Verzeichnis existiert nicht.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1184"/>
<source>File read error.</source>
<translation>Dateilesefehler.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1185"/>
<source>File write error.</source>
<translation>Dateischreibfehler.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1186"/>
<source>File seek error.</source>
<translation>Dateisuchfehler.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1187"/>
<source>Unable to create a directory.</source>
<translation>Erstellen eines Verzeichnisses nicht möglich.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1188"/>
<source>Invalid device.</source>
<translation>Ungültiges Gerät.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1189"/>
<source>Invalid or incompatible zip archive.</source>
<translation>Ungültiges oder inkompatibles Zip Archiv.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1190"/>
<source>Inconsistent headers. Archive might be corrupted.</source>
<translation>Unstimmiger Dateikopf. Das Archiv ist möglicherweise fehlerhaft.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1194"/>
<source>Unknown error.</source>
<translation>Unbekannter Fehler.</translation>
</message>
</context>
<context>
<name>Zip</name>
<message>
<location filename="src/zip/zip.cpp" line="1604"/>
<source>ZIP operation completed successfully.</source>
<translation>ZIP Operation erfolgreich abgeschlossen.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1605"/>
<source>Failed to initialize or load zlib library.</source>
<translation>Fehler beim Initialisieren oder Laden der zlib Bibliothek.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1606"/>
<source>zlib library error.</source>
<translation>zlib Bibliotheksfehler.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1607"/>
<source>Unable to create or open file.</source>
<translation>Fehler beim Erstellen oder Öffnen der Datei.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1608"/>
<source>No archive has been created yet.</source>
<translation>Es wurde noch kein Archiv erstellt.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1609"/>
<source>File or directory does not exist.</source>
<translation>Datei oder Verzeichnis existiert nicht.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1610"/>
<source>File read error.</source>
<translation>Dateilesefehler.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1611"/>
<source>File write error.</source>
<translation>Dateischreibfehler.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1612"/>
<source>File seek error.</source>
<translation>Dateisuchfehler.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1616"/>
<source>Unknown error.</source>
<translation>Unbekannter Fehler.</translation>
</message>
</context>
<context>
<name>i18n</name>
<message>
<location filename="src/oraclewizard.cpp" line="22"/>
<source>English</source>
<translation>Deutsch (German)</translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="src/main.cpp" line="62"/>
<source>Only run in spoiler mode</source>
<translation>Nur im Spoiler Modus ausführen</translation>
</message>
<message>
<location filename="src/main.cpp" line="63"/>
<source>Run in no-confirm background mode</source>
<translation>Ausführen im Hintergrund-Modus ohne Bestätigung</translation>
</message>
</context>
</TS>
+608
View File
@@ -0,0 +1,608 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS version="2.1" language="el">
<context>
<name>IntroPage</name>
<message>
<location filename="src/pages.cpp" line="127"/>
<source>Introduction</source>
<translation>Εισαγωγή</translation>
</message>
<message>
<location filename="src/pages.cpp" line="128"/>
<source>This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice.</source>
<translation>Αυτός ο αυτόματος οδηγός θα εισάγει τη λίστα των σετ, καρτών και δειγμάτων (tokens) που θα χρησιμοποιηθούν από το Cockatrice.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="130"/>
<source>Interface language:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="131"/>
<source>Version:</source>
<translation>Έκδοση:</translation>
</message>
</context>
<context>
<name>LoadSetsPage</name>
<message>
<location filename="src/pages.cpp" line="200"/>
<source>Source selection</source>
<translation>Επιλογή πηγής</translation>
</message>
<message>
<location filename="src/pages.cpp" line="201"/>
<source>Please specify a compatible 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.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="205"/>
<source>Download URL:</source>
<translation>URL λήψης:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="206"/>
<source>Local file:</source>
<translation>Τοπικό αρχείο:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="207"/>
<source>Restore default URL</source>
<translation>Επαναφορά προκαθορισμένης διεύθυνσης URL</translation>
</message>
<message>
<location filename="src/pages.cpp" line="208"/>
<source>Choose file...</source>
<translation>Επιλέξτε αρχείο...</translation>
</message>
<message>
<location filename="src/pages.cpp" line="218"/>
<source>Load sets file</source>
<translation>Φόρτωση αρχείων</translation>
</message>
<message>
<location filename="src/pages.cpp" line="228"/>
<source>Sets file (%1)</source>
<oldsource>Sets JSON file (%1)</oldsource>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<location filename="src/pages.cpp" line="277"/>
<location filename="src/pages.cpp" line="282"/>
<location filename="src/pages.cpp" line="354"/>
<location filename="src/pages.cpp" line="485"/>
<location filename="src/pages.cpp" line="498"/>
<location filename="src/pages.cpp" line="519"/>
<source>Error</source>
<translation>Σφάλμα</translation>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<source>The provided URL is not valid.</source>
<translation>Η παρεχόμενη διεύθυνση URL δεν είναι έγκυρη.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="262"/>
<source>Downloading (0MB)</source>
<translation>Λήψη (0MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="277"/>
<source>Please choose a file.</source>
<translation>Παρακαλώ διαλέξτε έναν αρχείο.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="282"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation>Δεν είναι δυνατό να ανοίξει το αρχείο &apos;% 1&apos;.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="345"/>
<source>Downloading (%1MB)</source>
<translation>Λήψη (% 1MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="354"/>
<source>Network error: %1.</source>
<translation>Σφάλμα δικτύου: % 1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="392"/>
<source>Parsing file</source>
<translation>Ανάλυση αρχείου</translation>
</message>
<message>
<location filename="src/pages.cpp" line="414"/>
<source>Xz extraction failed.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="421"/>
<source>Sorry, this version of Oracle does not support xz compressed files.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="441"/>
<source>Failed to open Zip archive: %1.</source>
<translation>Αποτυχία ανοίγματος αρχείου Zip:% 1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="446"/>
<source>Zip extraction failed: the Zip archive doesn&apos;t contain exactly one file.</source>
<translation>Η εξαγωγή zip απέτυχε: το αρχείο Zip δεν περιέχει ακριβώς ένα αρχείο.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="454"/>
<source>Zip extraction failed: %1.</source>
<translation>Η εξαγωγή zip απέτυχε: % 1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="462"/>
<source>Sorry, this version of Oracle does not support zipped files.</source>
<translation>Λυπούμαστε, αυτή η έκδοση του Oracle δεν υποστηρίζει αρχεία τύπου zipped.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="485"/>
<source>Failed to interpret downloaded data.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="498"/>
<source>Do you want to download the uncompressed file instead?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="520"/>
<source>The file was retrieved successfully, but it does not contain any sets data.</source>
<translation>Το αρχείο ανακτήθηκε με επιτυχία, αλλά δεν περιέχει σύνολα δεδομένων.</translation>
</message>
</context>
<context>
<name>LoadSpoilersPage</name>
<message>
<location filename="src/pages.cpp" line="716"/>
<source>Save spoiler database</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="721"/>
<source>XML; spoiler database (*.xml)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="726"/>
<source>spoiler</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="731"/>
<source>Spoilers import</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="732"/>
<source>Please specify a compatible source for spoiler data.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="734"/>
<source>Download URL:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="735"/>
<source>Local file:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="736"/>
<source>Restore default URL</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="737"/>
<source>Choose file...</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="739"/>
<source>The spoiler database will be saved at the following location:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="741"/>
<source>Save to a custom path (not recommended)</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>LoadTokensPage</name>
<message>
<location filename="src/pages.cpp" line="671"/>
<source>Save token database</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="676"/>
<source>XML; token database (*.xml)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="681"/>
<source>tokens</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="686"/>
<source>Tokens import</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="687"/>
<source>Please specify a compatible source for token data.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="689"/>
<source>Download URL:</source>
<translation>URL λήψης:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="690"/>
<source>Local file:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="691"/>
<source>Restore default URL</source>
<translation>Επαναφορά προκαθορισμένης διεύθυνσης URL</translation>
</message>
<message>
<location filename="src/pages.cpp" line="692"/>
<source>Choose file...</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="694"/>
<source>The token database will be saved at the following location:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="696"/>
<source>Save to a custom path (not recommended)</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>OracleImporter</name>
<message>
<location filename="src/oracleimporter.cpp" line="542"/>
<source>Dummy set containing tokens</source>
<translation>Εικονικό σετ που περιέχει tokens</translation>
</message>
</context>
<context>
<name>OracleWizard</name>
<message>
<location filename="src/oraclewizard.cpp" line="101"/>
<source>Oracle Importer</source>
<translation>Εισαγωγέας Oracle</translation>
</message>
</context>
<context>
<name>OutroPage</name>
<message>
<location filename="src/pages.cpp" line="136"/>
<source>Finished</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="137"/>
<source>The wizard has finished.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="138"/>
<source>You can now start using Cockatrice with the newly updated cards.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="139"/>
<source>If the card databases don&apos;t reload automatically, restart the Cockatrice client.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>SaveSetsPage</name>
<message>
<location filename="src/pages.cpp" line="563"/>
<location filename="src/pages.cpp" line="638"/>
<source>Error</source>
<translation>Σφάλμα</translation>
</message>
<message>
<location filename="src/pages.cpp" line="563"/>
<source>No set has been imported.</source>
<translation>Δεν έχει εισαχθεί κανένα σετ.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="574"/>
<source>Sets imported</source>
<translation>Εισαγόμενα σετς</translation>
</message>
<message>
<location filename="src/pages.cpp" line="576"/>
<source>A cockatrice database file of %1 MB has been downloaded.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="579"/>
<source>The following sets have been found:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="582"/>
<source>Press &quot;Save&quot; to store the imported cards in the Cockatrice database.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="583"/>
<source>The card database will be saved at the following location:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="585"/>
<source>Save to a custom path (not recommended)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="587"/>
<source>&amp;Save</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="593"/>
<source>Import finished: %1 cards.</source>
<translation>Η εισαγωγή ολοκληρώθηκε: % 1 κάρτες.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="596"/>
<source>%1: %2 cards imported</source>
<translation>%1: %2 κάρτες εισήχθησαν</translation>
</message>
<message>
<location filename="src/pages.cpp" line="605"/>
<source>Save card database</source>
<translation>Αποθήκευση κάρτας βάσης δεδομένων</translation>
</message>
<message>
<location filename="src/pages.cpp" line="606"/>
<source>XML; card database (*.xml)</source>
<translation>XML; κάρτα βάσης δεδομένων (* .xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="638"/>
<source>The file could not be saved to %1</source>
<translation>Δεν ήταν δυνατή η αποθήκευση του αρχείου στο %1</translation>
</message>
</context>
<context>
<name>SimpleDownloadFilePage</name>
<message>
<location filename="src/pagetemplates.cpp" line="72"/>
<source>Load %1 file</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="82"/>
<source>%1 file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<location filename="src/pagetemplates.cpp" line="129"/>
<location filename="src/pagetemplates.cpp" line="134"/>
<location filename="src/pagetemplates.cpp" line="168"/>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>Error</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<source>The provided URL is not valid: </source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="115"/>
<source>Downloading (0MB)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="129"/>
<source>Please choose a file.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="134"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="159"/>
<source>Downloading (%1MB)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="168"/>
<source>Network error: %1.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>The file could not be saved to %1</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>UnZip</name>
<message>
<location filename="src/zip/unzip.cpp" line="1175"/>
<source>ZIP operation completed successfully.</source>
<translation>Η λειτουργία ZIP ολοκληρώθηκε με επιτυχία.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1176"/>
<source>Failed to initialize or load zlib library.</source>
<translation>Δεν ήταν δυνατή η προετοιμασία ή η φόρτωση της βιβλιοθήκης zlib.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1177"/>
<source>zlib library error.</source>
<translation> Σφάλμα βιβλιοθήκης zlib.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1178"/>
<source>Unable to create or open file.</source>
<translation>Δεν είναι δυνατή η δημιουργία ή το άνοιγμα αρχείου.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1179"/>
<source>Partially corrupted archive. Some files might be extracted.</source>
<translation>Μερικώς κατεστραμμένο αρχείο. Κάποια αρχεία ενδέχεται να εξαχθούν.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1180"/>
<source>Corrupted archive.</source>
<translation>Κατεστραμμένο αρχείο.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1181"/>
<source>Wrong password.</source>
<translation>Λάθος κωδικός.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1182"/>
<source>No archive has been created yet.</source>
<translation>Δεν έχει δημιουργηθεί κανένα αρχείο ακόμα.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1183"/>
<source>File or directory does not exist.</source>
<translation>Το αρχείο ή ο κατάλογος δεν υπάρχει.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1184"/>
<source>File read error.</source>
<translation>Σφάλμα ανάγνωσης αρχείου.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1185"/>
<source>File write error.</source>
<translation>Σφάλμα εγγραφής αρχείου.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1186"/>
<source>File seek error.</source>
<translation>Σφάλμα αναζήτησης αρχείου.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1187"/>
<source>Unable to create a directory.</source>
<translation>Δεν είναι δυνατή η δημιουργία ενός καταλόγου.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1188"/>
<source>Invalid device.</source>
<translation>Μη έγκυρη συσκευή.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1189"/>
<source>Invalid or incompatible zip archive.</source>
<translation>Μη έγκυρο ή ασυμβίβαστο zip αρχείο.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1190"/>
<source>Inconsistent headers. Archive might be corrupted.</source>
<translation>Αντιφατικές κεφαλίδες. Το αρχείο μπορεί να είναι κατεστραμμένο.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1194"/>
<source>Unknown error.</source>
<translation>Άγνωστο σφάλμα.</translation>
</message>
</context>
<context>
<name>Zip</name>
<message>
<location filename="src/zip/zip.cpp" line="1604"/>
<source>ZIP operation completed successfully.</source>
<translation>Η λειτουργία ZIP ολοκληρώθηκε με επιτυχία.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1605"/>
<source>Failed to initialize or load zlib library.</source>
<translation>Δεν ήταν δυνατή η προετοιμασία ή η φόρτωση της βιβλιοθήκης zlib.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1606"/>
<source>zlib library error.</source>
<translation>Σφάλμα βιβλιοθήκης zlib.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1607"/>
<source>Unable to create or open file.</source>
<translation>Δεν είναι δυνατή η δημιουργία ή το άνοιγμα αρχείου.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1608"/>
<source>No archive has been created yet.</source>
<translation>Δεν έχει δημιουργηθεί αρχείο ακόμα.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1609"/>
<source>File or directory does not exist.</source>
<translation>Το αρχείο ή ο κατάλογος δεν υπάρχει.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1610"/>
<source>File read error.</source>
<translation>Σφάλμα ανάγνωσης αρχείου.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1611"/>
<source>File write error.</source>
<translation>Σφάλμα εγγραφής αρχείου.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1612"/>
<source>File seek error.</source>
<translation>Σφάλμα αναζήτησης αρχείου.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1616"/>
<source>Unknown error.</source>
<translation>Άγνωστο σφάλμα.</translation>
</message>
</context>
<context>
<name>i18n</name>
<message>
<location filename="src/oraclewizard.cpp" line="22"/>
<source>English</source>
<translation>Ελληνικά (Greek)</translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="src/main.cpp" line="62"/>
<source>Only run in spoiler mode</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/main.cpp" line="63"/>
<source>Run in no-confirm background mode</source>
<translation type="unfinished"/>
</message>
</context>
</TS>
+556
View File
@@ -0,0 +1,556 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS version="2.1" language="en@pirate">
<context>
<name>IntroPage</name>
<message>
<location filename="src/oraclewizard.cpp" line="215"/>
<source>Introduction</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="216"/>
<source>This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="218"/>
<source>Interface language:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="219"/>
<source>Version:</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>LoadSetsPage</name>
<message>
<location filename="src/oraclewizard.cpp" line="288"/>
<source>Source selection</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="289"/>
<source>Please specify a compatible 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.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="293"/>
<source>Download URL:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="294"/>
<source>Local file:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="295"/>
<source>Restore default URL</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="296"/>
<source>Choose file...</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="306"/>
<source>Load sets file</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="316"/>
<source>Sets file (%1)</source>
<oldsource>Sets JSON file (%1)</oldsource>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="346"/>
<location filename="src/oraclewizard.cpp" line="365"/>
<location filename="src/oraclewizard.cpp" line="370"/>
<location filename="src/oraclewizard.cpp" line="438"/>
<location filename="src/oraclewizard.cpp" line="569"/>
<location filename="src/oraclewizard.cpp" line="582"/>
<location filename="src/oraclewizard.cpp" line="603"/>
<source>Error</source>
<translation>Cap&apos;n? Thar be a problem</translation>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="346"/>
<source>The provided URL is not valid.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="350"/>
<source>Downloading (0MB)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="365"/>
<source>Please choose a file.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="370"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="429"/>
<source>Downloading (%1MB)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="438"/>
<source>Network error: %1.</source>
<translation>Cap&apos;n? Thar be a problem wi&apos; t&apos; smoke signals: %1.</translation>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="476"/>
<source>Parsing file</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="498"/>
<source>Xz extraction failed.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="505"/>
<source>Sorry, this version of Oracle does not support xz compressed files.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="525"/>
<source>Failed to open Zip archive: %1.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="530"/>
<source>Zip extraction failed: the Zip archive doesn&apos;t contain exactly one file.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="538"/>
<source>Zip extraction failed: %1.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="546"/>
<source>Sorry, this version of Oracle does not support zipped files.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="569"/>
<source>Failed to interpret downloaded data.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="582"/>
<source>Do you want to download the uncompressed file instead?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="604"/>
<source>The file was retrieved successfully, but it does not contain any sets data.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>LoadSpoilersPage</name>
<message>
<location filename="src/oraclewizard.cpp" line="790"/>
<source>Save spoiler database</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="795"/>
<source>XML; spoiler database (*.xml)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="800"/>
<source>Spoilers import</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="801"/>
<source>Please specify a compatible source for spoiler data.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="803"/>
<source>Download URL:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="804"/>
<source>Restore default URL</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="805"/>
<source>The spoiler database will be saved at the following location:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="807"/>
<source>Save to a custom path (not recommended)</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>LoadTokensPage</name>
<message>
<location filename="src/oraclewizard.cpp" line="753"/>
<source>Save token database</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="758"/>
<source>XML; token database (*.xml)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="763"/>
<source>Tokens import</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="764"/>
<source>Please specify a compatible source for token data.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="766"/>
<source>Download URL:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="767"/>
<source>Restore default URL</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="768"/>
<source>The token database will be saved at the following location:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="770"/>
<source>Save to a custom path (not recommended)</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>OracleImporter</name>
<message>
<location filename="src/oracleimporter.cpp" line="466"/>
<source>Dummy set containing tokens</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>OracleWizard</name>
<message>
<location filename="src/oraclewizard.cpp" line="106"/>
<source>Oracle Importer</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>OutroPage</name>
<message>
<location filename="src/oraclewizard.cpp" line="224"/>
<source>Finished</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="225"/>
<source>The wizard has finished.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="226"/>
<source>You can now start using Cockatrice with the newly updated cards.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="227"/>
<source>If the card databases don&apos;t reload automatically, restart the Cockatrice client.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>SaveSetsPage</name>
<message>
<location filename="src/oraclewizard.cpp" line="646"/>
<location filename="src/oraclewizard.cpp" line="720"/>
<source>Error</source>
<translation>Cap&apos;n? Thar be a problem</translation>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="646"/>
<source>No set has been imported.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="656"/>
<source>Sets imported</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="658"/>
<source>A cockatrice database file of %1 MB has been downloaded.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="661"/>
<source>The following sets have been found:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="664"/>
<source>Press &quot;Save&quot; to store the imported cards in the Cockatrice database.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="665"/>
<source>The card database will be saved at the following location:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="667"/>
<source>Save to a custom path (not recommended)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="669"/>
<source>&amp;Save</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="675"/>
<source>Import finished: %1 cards.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="678"/>
<source>%1: %2 cards imported</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="687"/>
<source>Save card database</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="688"/>
<source>XML; card database (*.xml)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/oraclewizard.cpp" line="720"/>
<source>The file could not be saved to %1</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>SimpleDownloadFilePage</name>
<message>
<location filename="src/pagetemplates.cpp" line="73"/>
<location filename="src/pagetemplates.cpp" line="113"/>
<location filename="src/pagetemplates.cpp" line="169"/>
<source>Error</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="73"/>
<source>The provided URL is not valid: </source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="77"/>
<source>Downloading (0MB)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="104"/>
<source>Downloading (%1MB)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="113"/>
<source>Network error: %1.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="169"/>
<source>The file could not be saved to %1</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>UnZip</name>
<message>
<location filename="src/zip/unzip.cpp" line="1175"/>
<source>ZIP operation completed successfully.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1176"/>
<source>Failed to initialize or load zlib library.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1177"/>
<source>zlib library error.</source>
<translation>Cap&apos;n? Thar be a problem wi&apos; t&apos; zlib library.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1178"/>
<source>Unable to create or open file.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1179"/>
<source>Partially corrupted archive. Some files might be extracted.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1180"/>
<source>Corrupted archive.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1181"/>
<source>Wrong password.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1182"/>
<source>No archive has been created yet.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1183"/>
<source>File or directory does not exist.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1184"/>
<source>File read error.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1185"/>
<source>File write error.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1186"/>
<source>File seek error.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1187"/>
<source>Unable to create a directory.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1188"/>
<source>Invalid device.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1189"/>
<source>Invalid or incompatible zip archive.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1190"/>
<source>Inconsistent headers. Archive might be corrupted.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1194"/>
<source>Unknown error.</source>
<translation>Cap&apos;n? Thar be a unknown problem wi&apos; t&apos; ship.</translation>
</message>
</context>
<context>
<name>Zip</name>
<message>
<location filename="src/zip/zip.cpp" line="1604"/>
<source>ZIP operation completed successfully.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1605"/>
<source>Failed to initialize or load zlib library.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1606"/>
<source>zlib library error.</source>
<translation>Cap&apos;n? Thar be a problem wi&apos; t&apos; zlib library.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1607"/>
<source>Unable to create or open file.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1608"/>
<source>No archive has been created yet.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1609"/>
<source>File or directory does not exist.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1610"/>
<source>File read error.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1611"/>
<source>File write error.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1612"/>
<source>File seek error.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1616"/>
<source>Unknown error.</source>
<translation>Cap&apos;n? Thar be a unknown problem wi&apos; t&apos; ship.</translation>
</message>
</context>
<context>
<name>i18n</name>
<message>
<location filename="src/oraclewizard.cpp" line="58"/>
<source>English</source>
<translation>English, arr! (Pirate English)</translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="src/main.cpp" line="62"/>
<source>Only run in spoiler mode</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/main.cpp" line="63"/>
<source>Run in no-confirm background mode</source>
<translation type="unfinished"/>
</message>
</context>
</TS>
+608
View File
@@ -0,0 +1,608 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS version="2.1" language="en_US">
<context>
<name>IntroPage</name>
<message>
<location filename="src/pages.cpp" line="127"/>
<source>Introduction</source>
<translation>Introduction</translation>
</message>
<message>
<location filename="src/pages.cpp" line="128"/>
<source>This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice.</source>
<translation>This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="130"/>
<source>Interface language:</source>
<translation>Interface language:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="131"/>
<source>Version:</source>
<translation>Version:</translation>
</message>
</context>
<context>
<name>LoadSetsPage</name>
<message>
<location filename="src/pages.cpp" line="200"/>
<source>Source selection</source>
<translation>Source selection</translation>
</message>
<message>
<location filename="src/pages.cpp" line="201"/>
<source>Please specify a compatible 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.</source>
<translation>Please specify a compatible 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.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="205"/>
<source>Download URL:</source>
<translation>Download URL:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="206"/>
<source>Local file:</source>
<translation>Local file:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="207"/>
<source>Restore default URL</source>
<translation>Restore default URL</translation>
</message>
<message>
<location filename="src/pages.cpp" line="208"/>
<source>Choose file...</source>
<translation>Choose file...</translation>
</message>
<message>
<location filename="src/pages.cpp" line="218"/>
<source>Load sets file</source>
<translation>Load sets file</translation>
</message>
<message>
<location filename="src/pages.cpp" line="228"/>
<source>Sets file (%1)</source>
<oldsource>Sets JSON file (%1)</oldsource>
<translation>Sets file (%1)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<location filename="src/pages.cpp" line="277"/>
<location filename="src/pages.cpp" line="282"/>
<location filename="src/pages.cpp" line="354"/>
<location filename="src/pages.cpp" line="485"/>
<location filename="src/pages.cpp" line="498"/>
<location filename="src/pages.cpp" line="519"/>
<source>Error</source>
<translation>Error</translation>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<source>The provided URL is not valid.</source>
<translation>The provided URL is not valid.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="262"/>
<source>Downloading (0MB)</source>
<translation>Downloading (0MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="277"/>
<source>Please choose a file.</source>
<translation>Please choose a file.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="282"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation>Cannot open file &apos;%1&apos;.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="345"/>
<source>Downloading (%1MB)</source>
<translation>Downloading (%1MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="354"/>
<source>Network error: %1.</source>
<translation>Network error: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="392"/>
<source>Parsing file</source>
<translation>Parsing file</translation>
</message>
<message>
<location filename="src/pages.cpp" line="414"/>
<source>Xz extraction failed.</source>
<translation>Xz extraction failed.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="421"/>
<source>Sorry, this version of Oracle does not support xz compressed files.</source>
<translation>Sorry, this version of Oracle does not support xz compressed files.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="441"/>
<source>Failed to open Zip archive: %1.</source>
<translation>Failed to open Zip archive: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="446"/>
<source>Zip extraction failed: the Zip archive doesn&apos;t contain exactly one file.</source>
<translation>Zip extraction failed: the Zip archive doesn&apos;t contain exactly one file.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="454"/>
<source>Zip extraction failed: %1.</source>
<translation>Zip extraction failed: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="462"/>
<source>Sorry, this version of Oracle does not support zipped files.</source>
<translation>Sorry, this version of Oracle does not support zipped files.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="485"/>
<source>Failed to interpret downloaded data.</source>
<translation>Failed to interpret downloaded data.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="498"/>
<source>Do you want to download the uncompressed file instead?</source>
<translation>Do you want to download the uncompressed file instead?</translation>
</message>
<message>
<location filename="src/pages.cpp" line="520"/>
<source>The file was retrieved successfully, but it does not contain any sets data.</source>
<translation>The file was retrieved successfully, but it does not contain any sets data.</translation>
</message>
</context>
<context>
<name>LoadSpoilersPage</name>
<message>
<location filename="src/pages.cpp" line="716"/>
<source>Save spoiler database</source>
<translation>Save spoiler database</translation>
</message>
<message>
<location filename="src/pages.cpp" line="721"/>
<source>XML; spoiler database (*.xml)</source>
<translation>XML; spoiler database (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="726"/>
<source>spoiler</source>
<translation>spoiler</translation>
</message>
<message>
<location filename="src/pages.cpp" line="731"/>
<source>Spoilers import</source>
<translation>Spoilers import</translation>
</message>
<message>
<location filename="src/pages.cpp" line="732"/>
<source>Please specify a compatible source for spoiler data.</source>
<translation>Please specify a compatible source for spoiler data.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="734"/>
<source>Download URL:</source>
<translation>Download URL:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="735"/>
<source>Local file:</source>
<translation>Local file:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="736"/>
<source>Restore default URL</source>
<translation>Restore default URL</translation>
</message>
<message>
<location filename="src/pages.cpp" line="737"/>
<source>Choose file...</source>
<translation>Choose file...</translation>
</message>
<message>
<location filename="src/pages.cpp" line="739"/>
<source>The spoiler database will be saved at the following location:</source>
<translation>The spoiler database will be saved at the following location:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="741"/>
<source>Save to a custom path (not recommended)</source>
<translation>Save to a custom path (not recommended)</translation>
</message>
</context>
<context>
<name>LoadTokensPage</name>
<message>
<location filename="src/pages.cpp" line="671"/>
<source>Save token database</source>
<translation>Save token database</translation>
</message>
<message>
<location filename="src/pages.cpp" line="676"/>
<source>XML; token database (*.xml)</source>
<translation>XML; token database (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="681"/>
<source>tokens</source>
<translation>tokens</translation>
</message>
<message>
<location filename="src/pages.cpp" line="686"/>
<source>Tokens import</source>
<translation>Tokens import</translation>
</message>
<message>
<location filename="src/pages.cpp" line="687"/>
<source>Please specify a compatible source for token data.</source>
<translation>Please specify a compatible source for token data.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="689"/>
<source>Download URL:</source>
<translation>Download URL:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="690"/>
<source>Local file:</source>
<translation>Local file:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="691"/>
<source>Restore default URL</source>
<translation>Restore default URL</translation>
</message>
<message>
<location filename="src/pages.cpp" line="692"/>
<source>Choose file...</source>
<translation>Choose file...</translation>
</message>
<message>
<location filename="src/pages.cpp" line="694"/>
<source>The token database will be saved at the following location:</source>
<translation>The token database will be saved at the following location:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="696"/>
<source>Save to a custom path (not recommended)</source>
<translation>Save to a custom path (not recommended)</translation>
</message>
</context>
<context>
<name>OracleImporter</name>
<message>
<location filename="src/oracleimporter.cpp" line="542"/>
<source>Dummy set containing tokens</source>
<translation>Dummy set containing tokens</translation>
</message>
</context>
<context>
<name>OracleWizard</name>
<message>
<location filename="src/oraclewizard.cpp" line="101"/>
<source>Oracle Importer</source>
<translation>Oracle Importer</translation>
</message>
</context>
<context>
<name>OutroPage</name>
<message>
<location filename="src/pages.cpp" line="136"/>
<source>Finished</source>
<translation>Finished</translation>
</message>
<message>
<location filename="src/pages.cpp" line="137"/>
<source>The wizard has finished.</source>
<translation>The wizard has finished.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="138"/>
<source>You can now start using Cockatrice with the newly updated cards.</source>
<translation>You can now start using Cockatrice with the newly updated cards.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="139"/>
<source>If the card databases don&apos;t reload automatically, restart the Cockatrice client.</source>
<translation>If the card databases don&apos;t reload automatically, restart the Cockatrice client.</translation>
</message>
</context>
<context>
<name>SaveSetsPage</name>
<message>
<location filename="src/pages.cpp" line="563"/>
<location filename="src/pages.cpp" line="638"/>
<source>Error</source>
<translation>Error</translation>
</message>
<message>
<location filename="src/pages.cpp" line="563"/>
<source>No set has been imported.</source>
<translation>No set has been imported.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="574"/>
<source>Sets imported</source>
<translation>Sets imported</translation>
</message>
<message>
<location filename="src/pages.cpp" line="576"/>
<source>A cockatrice database file of %1 MB has been downloaded.</source>
<translation>A cockatrice database file of %1 MB has been downloaded.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="579"/>
<source>The following sets have been found:</source>
<translation>The following sets have been found:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="582"/>
<source>Press &quot;Save&quot; to store the imported cards in the Cockatrice database.</source>
<translation>Press &quot;Save&quot; to store the imported cards in the Cockatrice database.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="583"/>
<source>The card database will be saved at the following location:</source>
<translation>The card database will be saved at the following location:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="585"/>
<source>Save to a custom path (not recommended)</source>
<translation>Save to a custom path (not recommended)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="587"/>
<source>&amp;Save</source>
<translation>&amp;Save</translation>
</message>
<message>
<location filename="src/pages.cpp" line="593"/>
<source>Import finished: %1 cards.</source>
<translation>Import finished: %1 cards.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="596"/>
<source>%1: %2 cards imported</source>
<translation>%1: %2 cards imported</translation>
</message>
<message>
<location filename="src/pages.cpp" line="605"/>
<source>Save card database</source>
<translation>Save card database</translation>
</message>
<message>
<location filename="src/pages.cpp" line="606"/>
<source>XML; card database (*.xml)</source>
<translation>XML; card database (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="638"/>
<source>The file could not be saved to %1</source>
<translation>The file could not be saved to %1</translation>
</message>
</context>
<context>
<name>SimpleDownloadFilePage</name>
<message>
<location filename="src/pagetemplates.cpp" line="72"/>
<source>Load %1 file</source>
<translation>Load %1 file</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="82"/>
<source>%1 file (%1)</source>
<translation>%1 file (%1)</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<location filename="src/pagetemplates.cpp" line="129"/>
<location filename="src/pagetemplates.cpp" line="134"/>
<location filename="src/pagetemplates.cpp" line="168"/>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>Error</source>
<translation>Error</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<source>The provided URL is not valid: </source>
<translation>The provided URL is not valid: </translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="115"/>
<source>Downloading (0MB)</source>
<translation>Downloading (0MB)</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="129"/>
<source>Please choose a file.</source>
<translation>Please choose a file.</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="134"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation>Cannot open file &apos;%1&apos;.</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="159"/>
<source>Downloading (%1MB)</source>
<translation>Downloading (%1MB)</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="168"/>
<source>Network error: %1.</source>
<translation>Network error: %1.</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>The file could not be saved to %1</source>
<translation>The file could not be saved to %1</translation>
</message>
</context>
<context>
<name>UnZip</name>
<message>
<location filename="src/zip/unzip.cpp" line="1175"/>
<source>ZIP operation completed successfully.</source>
<translation>ZIP operation completed successfully.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1176"/>
<source>Failed to initialize or load zlib library.</source>
<translation>Failed to initialize or load zlib library.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1177"/>
<source>zlib library error.</source>
<translation>zlib library error.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1178"/>
<source>Unable to create or open file.</source>
<translation>Unable to create or open file.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1179"/>
<source>Partially corrupted archive. Some files might be extracted.</source>
<translation>Partially corrupted archive. Some files might be extracted.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1180"/>
<source>Corrupted archive.</source>
<translation>Corrupted archive.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1181"/>
<source>Wrong password.</source>
<translation>Wrong password.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1182"/>
<source>No archive has been created yet.</source>
<translation>No archive has been created yet.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1183"/>
<source>File or directory does not exist.</source>
<translation>File or directory does not exist.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1184"/>
<source>File read error.</source>
<translation>File read error.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1185"/>
<source>File write error.</source>
<translation>File write error.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1186"/>
<source>File seek error.</source>
<translation>File seek error.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1187"/>
<source>Unable to create a directory.</source>
<translation>Unable to create a directory.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1188"/>
<source>Invalid device.</source>
<translation>Invalid device.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1189"/>
<source>Invalid or incompatible zip archive.</source>
<translation>Invalid or incompatible zip archive.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1190"/>
<source>Inconsistent headers. Archive might be corrupted.</source>
<translation>Inconsistent headers. Archive might be corrupted.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1194"/>
<source>Unknown error.</source>
<translation>Unknown error.</translation>
</message>
</context>
<context>
<name>Zip</name>
<message>
<location filename="src/zip/zip.cpp" line="1604"/>
<source>ZIP operation completed successfully.</source>
<translation>ZIP operation completed successfully.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1605"/>
<source>Failed to initialize or load zlib library.</source>
<translation>Failed to initialize or load zlib library.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1606"/>
<source>zlib library error.</source>
<translation>zlib library error.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1607"/>
<source>Unable to create or open file.</source>
<translation>Unable to create or open file.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1608"/>
<source>No archive has been created yet.</source>
<translation>No archive has been created yet.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1609"/>
<source>File or directory does not exist.</source>
<translation>File or directory does not exist.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1610"/>
<source>File read error.</source>
<translation>File read error.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1611"/>
<source>File write error.</source>
<translation>File write error.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1612"/>
<source>File seek error.</source>
<translation>File seek error.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1616"/>
<source>Unknown error.</source>
<translation>Unknown error.</translation>
</message>
</context>
<context>
<name>i18n</name>
<message>
<location filename="src/oraclewizard.cpp" line="22"/>
<source>English</source>
<translation>English</translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="src/main.cpp" line="62"/>
<source>Only run in spoiler mode</source>
<translation>Only run in spoiler mode</translation>
</message>
<message>
<location filename="src/main.cpp" line="63"/>
<source>Run in no-confirm background mode</source>
<translation>Run in no-confirm background mode</translation>
</message>
</context>
</TS>
+608
View File
@@ -0,0 +1,608 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS version="2.1" language="es">
<context>
<name>IntroPage</name>
<message>
<location filename="src/pages.cpp" line="127"/>
<source>Introduction</source>
<translation>Introducción</translation>
</message>
<message>
<location filename="src/pages.cpp" line="128"/>
<source>This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice.</source>
<translation>Este instalador importará la lista de ediciones, cartas y fichas que va a usar Cockatrice.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="130"/>
<source>Interface language:</source>
<translation>Idioma de la interfaz:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="131"/>
<source>Version:</source>
<translation>Versión:</translation>
</message>
</context>
<context>
<name>LoadSetsPage</name>
<message>
<location filename="src/pages.cpp" line="200"/>
<source>Source selection</source>
<translation>Seleccionar origen</translation>
</message>
<message>
<location filename="src/pages.cpp" line="201"/>
<source>Please specify a compatible 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.</source>
<translation>Por favor especifica un origen compatible para la lista de sets y cartas. Puedes especificar la URL de donde descargarla o usar un archivo existente de tu ordenador.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="205"/>
<source>Download URL:</source>
<translation>URL de descarga:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="206"/>
<source>Local file:</source>
<translation>Archivo local:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="207"/>
<source>Restore default URL</source>
<translation>Restablecer URL predeterminada</translation>
</message>
<message>
<location filename="src/pages.cpp" line="208"/>
<source>Choose file...</source>
<translation>Elegir archivo...</translation>
</message>
<message>
<location filename="src/pages.cpp" line="218"/>
<source>Load sets file</source>
<translation>Cargar archivo de ediciones</translation>
</message>
<message>
<location filename="src/pages.cpp" line="228"/>
<source>Sets file (%1)</source>
<oldsource>Sets JSON file (%1)</oldsource>
<translation>Archivo de ediciones (%1)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<location filename="src/pages.cpp" line="277"/>
<location filename="src/pages.cpp" line="282"/>
<location filename="src/pages.cpp" line="354"/>
<location filename="src/pages.cpp" line="485"/>
<location filename="src/pages.cpp" line="498"/>
<location filename="src/pages.cpp" line="519"/>
<source>Error</source>
<translation>Error</translation>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<source>The provided URL is not valid.</source>
<translation>La URL suministrada no es válida.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="262"/>
<source>Downloading (0MB)</source>
<translation>Descargando (0MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="277"/>
<source>Please choose a file.</source>
<translation>Por favor elija un archivo.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="282"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation>No se puede abrir el archivo &apos;%1&apos;</translation>
</message>
<message>
<location filename="src/pages.cpp" line="345"/>
<source>Downloading (%1MB)</source>
<translation>Descargando (%1MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="354"/>
<source>Network error: %1.</source>
<translation>Error de red: %1</translation>
</message>
<message>
<location filename="src/pages.cpp" line="392"/>
<source>Parsing file</source>
<translation>Procesando archivo</translation>
</message>
<message>
<location filename="src/pages.cpp" line="414"/>
<source>Xz extraction failed.</source>
<translation>Extracción de Xz fallida</translation>
</message>
<message>
<location filename="src/pages.cpp" line="421"/>
<source>Sorry, this version of Oracle does not support xz compressed files.</source>
<translation>Lo sentimos, esta versión de Oracle no soporta archivos comprimidos xz</translation>
</message>
<message>
<location filename="src/pages.cpp" line="441"/>
<source>Failed to open Zip archive: %1.</source>
<translation>Error al abrir el archivo Zip: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="446"/>
<source>Zip extraction failed: the Zip archive doesn&apos;t contain exactly one file.</source>
<translation>Fallo al extraer el contenido: el Zip contiene más de un archivo.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="454"/>
<source>Zip extraction failed: %1.</source>
<translation>Error al extraer el contenido del Zip: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="462"/>
<source>Sorry, this version of Oracle does not support zipped files.</source>
<translation>Lo sentimos, esta versión de Oracle no soporta archivos comprimidos.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="485"/>
<source>Failed to interpret downloaded data.</source>
<translation>No se pudieron interpretar los datos descargados.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="498"/>
<source>Do you want to download the uncompressed file instead?</source>
<translation>¿Prefieres descargar el archivo sin comprimir?</translation>
</message>
<message>
<location filename="src/pages.cpp" line="520"/>
<source>The file was retrieved successfully, but it does not contain any sets data.</source>
<translation>El archivo fue cargado correctamente pero no contiene datos sobre ningún set.</translation>
</message>
</context>
<context>
<name>LoadSpoilersPage</name>
<message>
<location filename="src/pages.cpp" line="716"/>
<source>Save spoiler database</source>
<translation>Guardar la base de datos de spoilers</translation>
</message>
<message>
<location filename="src/pages.cpp" line="721"/>
<source>XML; spoiler database (*.xml)</source>
<translation>XML; base de datos de spoilers (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="726"/>
<source>spoiler</source>
<translation>spoiler</translation>
</message>
<message>
<location filename="src/pages.cpp" line="731"/>
<source>Spoilers import</source>
<translation>Importar spoilers</translation>
</message>
<message>
<location filename="src/pages.cpp" line="732"/>
<source>Please specify a compatible source for spoiler data.</source>
<translation>Por favor elija un origen compatible para los datos de los spoilers.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="734"/>
<source>Download URL:</source>
<translation>URL de descarga:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="735"/>
<source>Local file:</source>
<translation>Archivo local:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="736"/>
<source>Restore default URL</source>
<translation>Restaurar URL por defecto</translation>
</message>
<message>
<location filename="src/pages.cpp" line="737"/>
<source>Choose file...</source>
<translation>Elegir archivo...</translation>
</message>
<message>
<location filename="src/pages.cpp" line="739"/>
<source>The spoiler database will be saved at the following location:</source>
<translation>La base de datos de los spoilers será guardada en la siguiente ubicación:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="741"/>
<source>Save to a custom path (not recommended)</source>
<translation>Guardar en una ruta personalizada (no recomendado)</translation>
</message>
</context>
<context>
<name>LoadTokensPage</name>
<message>
<location filename="src/pages.cpp" line="671"/>
<source>Save token database</source>
<translation>Guardar base de datos de fichas</translation>
</message>
<message>
<location filename="src/pages.cpp" line="676"/>
<source>XML; token database (*.xml)</source>
<translation>XML; base de datos de fichas (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="681"/>
<source>tokens</source>
<translation>fichas</translation>
</message>
<message>
<location filename="src/pages.cpp" line="686"/>
<source>Tokens import</source>
<translation>Importar tokens</translation>
</message>
<message>
<location filename="src/pages.cpp" line="687"/>
<source>Please specify a compatible source for token data.</source>
<translation>Por favor elija un origen compatible para los datos de las fichas.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="689"/>
<source>Download URL:</source>
<translation>URL de descarga:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="690"/>
<source>Local file:</source>
<translation>Archivo local:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="691"/>
<source>Restore default URL</source>
<translation>Restablecer URL predeterminada</translation>
</message>
<message>
<location filename="src/pages.cpp" line="692"/>
<source>Choose file...</source>
<translation>Elegir archivo...</translation>
</message>
<message>
<location filename="src/pages.cpp" line="694"/>
<source>The token database will be saved at the following location:</source>
<translation>La base de datos de las fichas será guardada en la siguiente ubicación:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="696"/>
<source>Save to a custom path (not recommended)</source>
<translation>Guardar en una ruta personalizada (no recomendado)</translation>
</message>
</context>
<context>
<name>OracleImporter</name>
<message>
<location filename="src/oracleimporter.cpp" line="542"/>
<source>Dummy set containing tokens</source>
<translation>Set dedicado para tokens</translation>
</message>
</context>
<context>
<name>OracleWizard</name>
<message>
<location filename="src/oraclewizard.cpp" line="101"/>
<source>Oracle Importer</source>
<translation>Importador de Oracle</translation>
</message>
</context>
<context>
<name>OutroPage</name>
<message>
<location filename="src/pages.cpp" line="136"/>
<source>Finished</source>
<translation>Completado</translation>
</message>
<message>
<location filename="src/pages.cpp" line="137"/>
<source>The wizard has finished.</source>
<translation>El asistente ha terminado.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="138"/>
<source>You can now start using Cockatrice with the newly updated cards.</source>
<translation>Ahora puedes usar Cockatrice con las cartas actualizadas.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="139"/>
<source>If the card databases don&apos;t reload automatically, restart the Cockatrice client.</source>
<translation>Si las bases de datos de cartas no se recargan automáticamente, reinicia el cliente de Cockatrice.</translation>
</message>
</context>
<context>
<name>SaveSetsPage</name>
<message>
<location filename="src/pages.cpp" line="563"/>
<location filename="src/pages.cpp" line="638"/>
<source>Error</source>
<translation>Error</translation>
</message>
<message>
<location filename="src/pages.cpp" line="563"/>
<source>No set has been imported.</source>
<translation>Ningún set ha sido importado.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="574"/>
<source>Sets imported</source>
<translation>Sets importados</translation>
</message>
<message>
<location filename="src/pages.cpp" line="576"/>
<source>A cockatrice database file of %1 MB has been downloaded.</source>
<translation>Se ha descargado un archivo de base de datos cockatrice de %1 MB.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="579"/>
<source>The following sets have been found:</source>
<translation>Las siguientes ediciones han sido encontradas:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="582"/>
<source>Press &quot;Save&quot; to store the imported cards in the Cockatrice database.</source>
<translation>Pulsa &quot;Guardar&quot; para guardar las cartas importadas en la base de datos de Cockatrice.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="583"/>
<source>The card database will be saved at the following location:</source>
<translation>La base de datos de cartas ha sido guardada en la siguiente ubicación:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="585"/>
<source>Save to a custom path (not recommended)</source>
<translation>Guardar en una ruta personalizada (no recomendado)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="587"/>
<source>&amp;Save</source>
<translation>&amp;Guardar</translation>
</message>
<message>
<location filename="src/pages.cpp" line="593"/>
<source>Import finished: %1 cards.</source>
<translation>Importación terminada: %1 cartas.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="596"/>
<source>%1: %2 cards imported</source>
<translation>%1: %2 cartas importadas</translation>
</message>
<message>
<location filename="src/pages.cpp" line="605"/>
<source>Save card database</source>
<translation>Guardar base de datos de cartas</translation>
</message>
<message>
<location filename="src/pages.cpp" line="606"/>
<source>XML; card database (*.xml)</source>
<translation>XML; base de datos de cartas (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="638"/>
<source>The file could not be saved to %1</source>
<translation>El archivo no ha podido ser guardado en %1</translation>
</message>
</context>
<context>
<name>SimpleDownloadFilePage</name>
<message>
<location filename="src/pagetemplates.cpp" line="72"/>
<source>Load %1 file</source>
<translation>Cargar archivo de %1</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="82"/>
<source>%1 file (%1)</source>
<translation>archivo de %1 (%1)</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<location filename="src/pagetemplates.cpp" line="129"/>
<location filename="src/pagetemplates.cpp" line="134"/>
<location filename="src/pagetemplates.cpp" line="168"/>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>Error</source>
<translation>Error</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<source>The provided URL is not valid: </source>
<translation>La URL proporcionada no es válida:</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="115"/>
<source>Downloading (0MB)</source>
<translation>Descargando (0MB)</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="129"/>
<source>Please choose a file.</source>
<translation>Por favor elija un archivo.</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="134"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation>No se puede abrir el archivo &apos;%1&apos;.</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="159"/>
<source>Downloading (%1MB)</source>
<translation>Descargando (%1MB)</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="168"/>
<source>Network error: %1.</source>
<translation>Error de red: %1.</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>The file could not be saved to %1</source>
<translation>El archivo no ha podido ser guardado en %1</translation>
</message>
</context>
<context>
<name>UnZip</name>
<message>
<location filename="src/zip/unzip.cpp" line="1175"/>
<source>ZIP operation completed successfully.</source>
<translation> La operación ZIP se completó con éxito</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1176"/>
<source>Failed to initialize or load zlib library.</source>
<translation>No se pudo inicializar o cargar la biblioteca zlib</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1177"/>
<source>zlib library error.</source>
<translation>Error de biblioteca zlib.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1178"/>
<source>Unable to create or open file.</source>
<translation>No se puede crear o abrir el archivo.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1179"/>
<source>Partially corrupted archive. Some files might be extracted.</source>
<translation> Archivo parcialmente dañado. Es posible que se extraigan algunos archivos.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1180"/>
<source>Corrupted archive.</source>
<translation>Archivo corrupto.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1181"/>
<source>Wrong password.</source>
<translation> Contraseña incorrecta.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1182"/>
<source>No archive has been created yet.</source>
<translation> Aún no se ha creado ningún archivo.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1183"/>
<source>File or directory does not exist.</source>
<translation>El archivo o directorio no existe.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1184"/>
<source>File read error.</source>
<translation>error de lectura de archivo</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1185"/>
<source>File write error.</source>
<translation>Error de escritura del archivo.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1186"/>
<source>File seek error.</source>
<translation> Error de búsqueda de archivo.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1187"/>
<source>Unable to create a directory.</source>
<translation>No se puede crear un directorio</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1188"/>
<source>Invalid device.</source>
<translation> Dispositivo no válido.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1189"/>
<source>Invalid or incompatible zip archive.</source>
<translation> Archivo zip no válido o incompatible</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1190"/>
<source>Inconsistent headers. Archive might be corrupted.</source>
<translation> Encabezados inconsistentes. Es posible que el archivo esté dañado.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1194"/>
<source>Unknown error.</source>
<translation> Encabezados inconsistentes. Es posible que el archivo esté dañado.</translation>
</message>
</context>
<context>
<name>Zip</name>
<message>
<location filename="src/zip/zip.cpp" line="1604"/>
<source>ZIP operation completed successfully.</source>
<translation> La operación ZIP se completó con éxito.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1605"/>
<source>Failed to initialize or load zlib library.</source>
<translation>Fallo al iniciar o cargar la librería zlib.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1606"/>
<source>zlib library error.</source>
<translation>Error en la librería zlib.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1607"/>
<source>Unable to create or open file.</source>
<translation>No es posible crear o abrir el archivo.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1608"/>
<source>No archive has been created yet.</source>
<translation>No se ha creado ningún archivo todavía.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1609"/>
<source>File or directory does not exist.</source>
<translation>El archivo o directorio no existe.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1610"/>
<source>File read error.</source>
<translation>Error al leer el archivo.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1611"/>
<source>File write error.</source>
<translation>Error al escribir en archivo.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1612"/>
<source>File seek error.</source>
<translation>Error al buscar en el archivo.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1616"/>
<source>Unknown error.</source>
<translation>Error desconocido.</translation>
</message>
</context>
<context>
<name>i18n</name>
<message>
<location filename="src/oraclewizard.cpp" line="22"/>
<source>English</source>
<translation>Español (Spanish)</translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="src/main.cpp" line="62"/>
<source>Only run in spoiler mode</source>
<translation>Sólo ejecutar en modo spoiler</translation>
</message>
<message>
<location filename="src/main.cpp" line="63"/>
<source>Run in no-confirm background mode</source>
<translation>Ejecutar en modo del segundo plano sin confirmación</translation>
</message>
</context>
</TS>
+608
View File
@@ -0,0 +1,608 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS version="2.1" language="et">
<context>
<name>IntroPage</name>
<message>
<location filename="src/pages.cpp" line="127"/>
<source>Introduction</source>
<translation>Sissejuhatus</translation>
</message>
<message>
<location filename="src/pages.cpp" line="128"/>
<source>This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice.</source>
<translation>See võlur impordib Cockatrice’is kasutatava nimekirja komplektidest, kaartidest ja märgistustest.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="130"/>
<source>Interface language:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="131"/>
<source>Version:</source>
<translation>Versioon:</translation>
</message>
</context>
<context>
<name>LoadSetsPage</name>
<message>
<location filename="src/pages.cpp" line="200"/>
<source>Source selection</source>
<translation>Allika valik</translation>
</message>
<message>
<location filename="src/pages.cpp" line="201"/>
<source>Please specify a compatible 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.</source>
<translation>Palun täpsusta ühilduv allikas komplektide ja kaartide nimekirja jaoks. Võid täpsustada URL-i aadressi, mis laaditakse alla või kasutada olemasolevat faili oma arvutist.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="205"/>
<source>Download URL:</source>
<translation>Allalaadimise URL:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="206"/>
<source>Local file:</source>
<translation>Fail arvutis:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="207"/>
<source>Restore default URL</source>
<translation>Taasta tavaURL</translation>
</message>
<message>
<location filename="src/pages.cpp" line="208"/>
<source>Choose file...</source>
<translation>Valige fail....</translation>
</message>
<message>
<location filename="src/pages.cpp" line="218"/>
<source>Load sets file</source>
<translation>Lae komplektide kaust</translation>
</message>
<message>
<location filename="src/pages.cpp" line="228"/>
<source>Sets file (%1)</source>
<oldsource>Sets JSON file (%1)</oldsource>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<location filename="src/pages.cpp" line="277"/>
<location filename="src/pages.cpp" line="282"/>
<location filename="src/pages.cpp" line="354"/>
<location filename="src/pages.cpp" line="485"/>
<location filename="src/pages.cpp" line="498"/>
<location filename="src/pages.cpp" line="519"/>
<source>Error</source>
<translation>Viga</translation>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<source>The provided URL is not valid.</source>
<translation>Antud URl pole kehtiv.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="262"/>
<source>Downloading (0MB)</source>
<translation>Allalaadimine (0MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="277"/>
<source>Please choose a file.</source>
<translation>Palun valige fail.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="282"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation>Ei suudeta avada &apos;%1&apos;.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="345"/>
<source>Downloading (%1MB)</source>
<translation>Allalaadimine (%1MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="354"/>
<source>Network error: %1.</source>
<translation>Võrgu viga: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="392"/>
<source>Parsing file</source>
<translation>Faili hankimine</translation>
</message>
<message>
<location filename="src/pages.cpp" line="414"/>
<source>Xz extraction failed.</source>
<translation>Xzi lahtipakkimine nurjus.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="421"/>
<source>Sorry, this version of Oracle does not support xz compressed files.</source>
<translation>Vabandame, aga antud Oracle’i versioon ei toeta xz kokkupakitud faile.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="441"/>
<source>Failed to open Zip archive: %1.</source>
<translation>Zip-arhiivi avamine ebaõnnestus: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="446"/>
<source>Zip extraction failed: the Zip archive doesn&apos;t contain exactly one file.</source>
<translation>Zip-i lahtipakkimine ebaõnnestus: Zip-arhiiv sisaldab rohkem faile kui üks.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="454"/>
<source>Zip extraction failed: %1.</source>
<translation>Zipi lahtipakkimine ebaõnnestus: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="462"/>
<source>Sorry, this version of Oracle does not support zipped files.</source>
<translation>Vabandame, aga antud Oracle versioon ei toeta kokkupakitud faile.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="485"/>
<source>Failed to interpret downloaded data.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="498"/>
<source>Do you want to download the uncompressed file instead?</source>
<translation>Soovid alla laadida hoopis pakkimata faili?</translation>
</message>
<message>
<location filename="src/pages.cpp" line="520"/>
<source>The file was retrieved successfully, but it does not contain any sets data.</source>
<translation>Fail on edukalt alla laetud, ent ei sisalda andmeid.</translation>
</message>
</context>
<context>
<name>LoadSpoilersPage</name>
<message>
<location filename="src/pages.cpp" line="716"/>
<source>Save spoiler database</source>
<translation>Salvesta spoileri andmebaas</translation>
</message>
<message>
<location filename="src/pages.cpp" line="721"/>
<source>XML; spoiler database (*.xml)</source>
<translation>XML; spoileri andmebaas (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="726"/>
<source>spoiler</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="731"/>
<source>Spoilers import</source>
<translation>Spoilerite import</translation>
</message>
<message>
<location filename="src/pages.cpp" line="732"/>
<source>Please specify a compatible source for spoiler data.</source>
<translation>Täpsusta spoileri andmetega ühilduv allikas.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="734"/>
<source>Download URL:</source>
<translation>Allalaadimise URL:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="735"/>
<source>Local file:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="736"/>
<source>Restore default URL</source>
<translation>Taasta tavaURL</translation>
</message>
<message>
<location filename="src/pages.cpp" line="737"/>
<source>Choose file...</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="739"/>
<source>The spoiler database will be saved at the following location:</source>
<translation>Spoileri andmebaas salvestatakse järgmisesse asukohta:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="741"/>
<source>Save to a custom path (not recommended)</source>
<translation>Salvesta enda määratud asukohta (pole soovitatav)</translation>
</message>
</context>
<context>
<name>LoadTokensPage</name>
<message>
<location filename="src/pages.cpp" line="671"/>
<source>Save token database</source>
<translation>Salvesta märgistuste andmebaas</translation>
</message>
<message>
<location filename="src/pages.cpp" line="676"/>
<source>XML; token database (*.xml)</source>
<translation>XML; märgistuste andmebaas (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="681"/>
<source>tokens</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="686"/>
<source>Tokens import</source>
<translation>Märgistuste importimine</translation>
</message>
<message>
<location filename="src/pages.cpp" line="687"/>
<source>Please specify a compatible source for token data.</source>
<translation>Täpsusta märgistuste andmetega ühilduv allikas.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="689"/>
<source>Download URL:</source>
<translation>Allalaadimise URL:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="690"/>
<source>Local file:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="691"/>
<source>Restore default URL</source>
<translation>Taasta tavaURL</translation>
</message>
<message>
<location filename="src/pages.cpp" line="692"/>
<source>Choose file...</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="694"/>
<source>The token database will be saved at the following location:</source>
<translation>Märgistuste andmebaas salvestatakse järgmisesse asukohta:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="696"/>
<source>Save to a custom path (not recommended)</source>
<translation>Salvesta enda määratud asukohta (pole soovitatav)</translation>
</message>
</context>
<context>
<name>OracleImporter</name>
<message>
<location filename="src/oracleimporter.cpp" line="542"/>
<source>Dummy set containing tokens</source>
<translation>Nukk-komplekt mis sisaldab märgistusi</translation>
</message>
</context>
<context>
<name>OracleWizard</name>
<message>
<location filename="src/oraclewizard.cpp" line="101"/>
<source>Oracle Importer</source>
<translation>Oracle sissetooja</translation>
</message>
</context>
<context>
<name>OutroPage</name>
<message>
<location filename="src/pages.cpp" line="136"/>
<source>Finished</source>
<translation>Valmis</translation>
</message>
<message>
<location filename="src/pages.cpp" line="137"/>
<source>The wizard has finished.</source>
<translation>Võlur on lõpetanud.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="138"/>
<source>You can now start using Cockatrice with the newly updated cards.</source>
<translation>Nüüd saad Cockatrice’i kasutada uhiuute kaartidega.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="139"/>
<source>If the card databases don&apos;t reload automatically, restart the Cockatrice client.</source>
<translation>Kui kaardi andmebaasid ei lae ise, taaskäivita Cockatrice’i klient.</translation>
</message>
</context>
<context>
<name>SaveSetsPage</name>
<message>
<location filename="src/pages.cpp" line="563"/>
<location filename="src/pages.cpp" line="638"/>
<source>Error</source>
<translation>Viga</translation>
</message>
<message>
<location filename="src/pages.cpp" line="563"/>
<source>No set has been imported.</source>
<translation>Komplekti pole sisse toodud.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="574"/>
<source>Sets imported</source>
<translation>Allalaetud komplektid</translation>
</message>
<message>
<location filename="src/pages.cpp" line="576"/>
<source>A cockatrice database file of %1 MB has been downloaded.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="579"/>
<source>The following sets have been found:</source>
<translation>Leiti järgmised komplektid:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="582"/>
<source>Press &quot;Save&quot; to store the imported cards in the Cockatrice database.</source>
<translation>Vajuta „Salvesta“, et salvestada imporditud kaardid Cockatrice’i andmebaasi.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="583"/>
<source>The card database will be saved at the following location:</source>
<translation>Kaardi andmebaas salvestatakse järgmisesse asukohta:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="585"/>
<source>Save to a custom path (not recommended)</source>
<translation>Salvesta enda määratud asukohta (pole soovitatav)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="587"/>
<source>&amp;Save</source>
<translation>&amp;Salvesta</translation>
</message>
<message>
<location filename="src/pages.cpp" line="593"/>
<source>Import finished: %1 cards.</source>
<translation>%1 kaarti imporditi edukalt.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="596"/>
<source>%1: %2 cards imported</source>
<translation>%1: imporditi %2 kaarti</translation>
</message>
<message>
<location filename="src/pages.cpp" line="605"/>
<source>Save card database</source>
<translation>Salvesta kaartide andmebaas</translation>
</message>
<message>
<location filename="src/pages.cpp" line="606"/>
<source>XML; card database (*.xml)</source>
<translation>XML; kaartide andmebaas (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="638"/>
<source>The file could not be saved to %1</source>
<translation>Faili salvestamine asukohta %1 ebaõnnestus</translation>
</message>
</context>
<context>
<name>SimpleDownloadFilePage</name>
<message>
<location filename="src/pagetemplates.cpp" line="72"/>
<source>Load %1 file</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="82"/>
<source>%1 file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<location filename="src/pagetemplates.cpp" line="129"/>
<location filename="src/pagetemplates.cpp" line="134"/>
<location filename="src/pagetemplates.cpp" line="168"/>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>Error</source>
<translation>Viga</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<source>The provided URL is not valid: </source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="115"/>
<source>Downloading (0MB)</source>
<translation>Allalaadimine (0MB)</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="129"/>
<source>Please choose a file.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="134"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="159"/>
<source>Downloading (%1MB)</source>
<translation>Allalaadimine (%1MB)</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="168"/>
<source>Network error: %1.</source>
<translation>Võrgu viga: %1.</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>The file could not be saved to %1</source>
<translation>Faili salvestamine asukohta %1 nurjus</translation>
</message>
</context>
<context>
<name>UnZip</name>
<message>
<location filename="src/zip/unzip.cpp" line="1175"/>
<source>ZIP operation completed successfully.</source>
<translation>Zip-i tegevus oli edukas.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1176"/>
<source>Failed to initialize or load zlib library.</source>
<translation>Zlibi kogu ei suudetud ette valmistada või laadida.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1177"/>
<source>zlib library error.</source>
<translation>zlibi kogu viga.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1178"/>
<source>Unable to create or open file.</source>
<translation>Faili ei suudetud luua või avada.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1179"/>
<source>Partially corrupted archive. Some files might be extracted.</source>
<translation>Osaliselt vigane arhiiv. Ainult osa faile võidakse lahti pakkida.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1180"/>
<source>Corrupted archive.</source>
<translation>Kahjustunud arhiiv.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1181"/>
<source>Wrong password.</source>
<translation>Vale parool.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1182"/>
<source>No archive has been created yet.</source>
<translation>Loodud arhiivid puuduvad.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1183"/>
<source>File or directory does not exist.</source>
<translation>Faili või asukohta pole olemas.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1184"/>
<source>File read error.</source>
<translation>Faili lugemise viga.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1185"/>
<source>File write error.</source>
<translation>Faili kirjutamise viga.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1186"/>
<source>File seek error.</source>
<translation>Faili otsimise viga</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1187"/>
<source>Unable to create a directory.</source>
<translation>Asukoha loomine ebaõnnestus.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1188"/>
<source>Invalid device.</source>
<translation>Vigane seade.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1189"/>
<source>Invalid or incompatible zip archive.</source>
<translation>Vigane või mittetoetatav zip-arhiiv.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1190"/>
<source>Inconsistent headers. Archive might be corrupted.</source>
<translation>Ebajäriekindlad päised. Arhiiv võib olla rikutud.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1194"/>
<source>Unknown error.</source>
<translation>Tundmatu viga.</translation>
</message>
</context>
<context>
<name>Zip</name>
<message>
<location filename="src/zip/zip.cpp" line="1604"/>
<source>ZIP operation completed successfully.</source>
<translation>Zip-tegevus on valmis.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1605"/>
<source>Failed to initialize or load zlib library.</source>
<translation>Zlib kogu ei suudetud ette valmistada või laadida.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1606"/>
<source>zlib library error.</source>
<translation>zlibi kogu viga.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1607"/>
<source>Unable to create or open file.</source>
<translation>Faili loomine või avamine ebaõnnestus.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1608"/>
<source>No archive has been created yet.</source>
<translation>Loodud arhiivid puuduvad.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1609"/>
<source>File or directory does not exist.</source>
<translation>Faili või asukohta pole olemas.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1610"/>
<source>File read error.</source>
<translation>Faili lugemise viga.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1611"/>
<source>File write error.</source>
<translation>Faili kirjutamise viga.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1612"/>
<source>File seek error.</source>
<translation>Faili otsimise viga.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1616"/>
<source>Unknown error.</source>
<translation>Tundmatu viga.</translation>
</message>
</context>
<context>
<name>i18n</name>
<message>
<location filename="src/oraclewizard.cpp" line="22"/>
<source>English</source>
<translation>Eesti Keel (Estonian)</translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="src/main.cpp" line="62"/>
<source>Only run in spoiler mode</source>
<translation>Käivita vaid spoileri režiimis</translation>
</message>
<message>
<location filename="src/main.cpp" line="63"/>
<source>Run in no-confirm background mode</source>
<translation type="unfinished"/>
</message>
</context>
</TS>
+608
View File
@@ -0,0 +1,608 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS version="2.1" language="fi">
<context>
<name>IntroPage</name>
<message>
<location filename="src/pages.cpp" line="127"/>
<source>Introduction</source>
<translation>Johdanto</translation>
</message>
<message>
<location filename="src/pages.cpp" line="128"/>
<source>This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice.</source>
<translation>Tämä työkalu asentaa Cockatricessa käytettävät setit, kortit ja tokenit.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="130"/>
<source>Interface language:</source>
<translation>Käyttöliittymän kieli:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="131"/>
<source>Version:</source>
<translation>Versio:</translation>
</message>
</context>
<context>
<name>LoadSetsPage</name>
<message>
<location filename="src/pages.cpp" line="200"/>
<source>Source selection</source>
<translation>Lähteen määritys</translation>
</message>
<message>
<location filename="src/pages.cpp" line="201"/>
<source>Please specify a compatible 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.</source>
<translation>Ole hyvä ja määritä lähde setti- ja korttilistalle. Voit määrittää ladattavan URL-osoitteen tai käyttää tietokoneellasi olevaa tiedostoa.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="205"/>
<source>Download URL:</source>
<translation>Ladattavan tiedoston URL-osoite:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="206"/>
<source>Local file:</source>
<translation>Paikallinen tiedosto:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="207"/>
<source>Restore default URL</source>
<translation>Palauta oletus-URL</translation>
</message>
<message>
<location filename="src/pages.cpp" line="208"/>
<source>Choose file...</source>
<translation>Valitse tiedosto...</translation>
</message>
<message>
<location filename="src/pages.cpp" line="218"/>
<source>Load sets file</source>
<translation>Ladatta ekspansiotiedosto</translation>
</message>
<message>
<location filename="src/pages.cpp" line="228"/>
<source>Sets file (%1)</source>
<oldsource>Sets JSON file (%1)</oldsource>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<location filename="src/pages.cpp" line="277"/>
<location filename="src/pages.cpp" line="282"/>
<location filename="src/pages.cpp" line="354"/>
<location filename="src/pages.cpp" line="485"/>
<location filename="src/pages.cpp" line="498"/>
<location filename="src/pages.cpp" line="519"/>
<source>Error</source>
<translation>Virhe</translation>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<source>The provided URL is not valid.</source>
<translation>Määritetty URL on virheellinen.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="262"/>
<source>Downloading (0MB)</source>
<translation>Ladataan (0MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="277"/>
<source>Please choose a file.</source>
<translation>Valitse tiedosto.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="282"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation>Ei voida avata tiedostoa &apos;%1&apos;.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="345"/>
<source>Downloading (%1MB)</source>
<translation>Ladataan (%1MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="354"/>
<source>Network error: %1.</source>
<translation>Yhteysvirhe: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="392"/>
<source>Parsing file</source>
<translation>Jäsennellään tiedostoa</translation>
</message>
<message>
<location filename="src/pages.cpp" line="414"/>
<source>Xz extraction failed.</source>
<translation>Xz purku epäonnistui.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="421"/>
<source>Sorry, this version of Oracle does not support xz compressed files.</source>
<translation>Pahoittelut. Tämä versio Oraclesta ei tue xz-pakattuja tiedostoja.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="441"/>
<source>Failed to open Zip archive: %1.</source>
<translation>Zip-tiedoston avaaminen epäonnistui: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="446"/>
<source>Zip extraction failed: the Zip archive doesn&apos;t contain exactly one file.</source>
<translation>Zip-tiedoston purkaminen epäonnistui: Zip-tiedosto ei sisällä tarkalleen yhtä tiedostoa.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="454"/>
<source>Zip extraction failed: %1.</source>
<translation>Zip-tiedoston purkaminen epäonnistuie: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="462"/>
<source>Sorry, this version of Oracle does not support zipped files.</source>
<translation>Pahoittelut. Tämä versio Oraclesta ei tue Zip-pakattuja tiedostoja.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="485"/>
<source>Failed to interpret downloaded data.</source>
<translation>Ladattujen tietojen tulkitseminen epäonnistui.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="498"/>
<source>Do you want to download the uncompressed file instead?</source>
<translation>Haluatko sensijaan ladata pakkaamattoman tiedoston?</translation>
</message>
<message>
<location filename="src/pages.cpp" line="520"/>
<source>The file was retrieved successfully, but it does not contain any sets data.</source>
<translation>Tiedosto palautettiin onnistuneesti, mutta se ei sisällä yhdenkään ekspansion dataa.</translation>
</message>
</context>
<context>
<name>LoadSpoilersPage</name>
<message>
<location filename="src/pages.cpp" line="716"/>
<source>Save spoiler database</source>
<translation>Tallenna spoileritietokanta</translation>
</message>
<message>
<location filename="src/pages.cpp" line="721"/>
<source>XML; spoiler database (*.xml)</source>
<translation>XML; spoileritietokanta (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="726"/>
<source>spoiler</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="731"/>
<source>Spoilers import</source>
<translation>Spoilerien lataus</translation>
</message>
<message>
<location filename="src/pages.cpp" line="732"/>
<source>Please specify a compatible source for spoiler data.</source>
<translation>Ole hyvä ja osoita yhteensopiva spoileridatan lähde.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="734"/>
<source>Download URL:</source>
<translation>Ladattavan tiedoston URL-osoite:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="735"/>
<source>Local file:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="736"/>
<source>Restore default URL</source>
<translation>Palauta oletus-URL</translation>
</message>
<message>
<location filename="src/pages.cpp" line="737"/>
<source>Choose file...</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="739"/>
<source>The spoiler database will be saved at the following location:</source>
<translation>Spoileritietokanta tallennetaan seuraavaan sijaintiin:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="741"/>
<source>Save to a custom path (not recommended)</source>
<translation>Tallenna mukautettuun sijaintiin (ei-suositeltu)</translation>
</message>
</context>
<context>
<name>LoadTokensPage</name>
<message>
<location filename="src/pages.cpp" line="671"/>
<source>Save token database</source>
<translation>Tallenna tokenitietokanta</translation>
</message>
<message>
<location filename="src/pages.cpp" line="676"/>
<source>XML; token database (*.xml)</source>
<translation>XML; tokenitietokanta (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="681"/>
<source>tokens</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="686"/>
<source>Tokens import</source>
<translation>Tokenien lataus</translation>
</message>
<message>
<location filename="src/pages.cpp" line="687"/>
<source>Please specify a compatible source for token data.</source>
<translation>Ole hyvä ja osoita yhteensopiva tokenidatan lähde.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="689"/>
<source>Download URL:</source>
<translation>Ladattavan tiedoston URL-osoite:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="690"/>
<source>Local file:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="691"/>
<source>Restore default URL</source>
<translation>Palauta oletus-URL</translation>
</message>
<message>
<location filename="src/pages.cpp" line="692"/>
<source>Choose file...</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="694"/>
<source>The token database will be saved at the following location:</source>
<translation>Tokenitietokanta tallennetaan seuraavaan sijaintiin:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="696"/>
<source>Save to a custom path (not recommended)</source>
<translation>Tallenna mukautettuun sijaintiin (ei-suositeltu)</translation>
</message>
</context>
<context>
<name>OracleImporter</name>
<message>
<location filename="src/oracleimporter.cpp" line="542"/>
<source>Dummy set containing tokens</source>
<translation>Tokeneja sisältävä mallisetti</translation>
</message>
</context>
<context>
<name>OracleWizard</name>
<message>
<location filename="src/oraclewizard.cpp" line="101"/>
<source>Oracle Importer</source>
<translation>Oracle-lataaja</translation>
</message>
</context>
<context>
<name>OutroPage</name>
<message>
<location filename="src/pages.cpp" line="136"/>
<source>Finished</source>
<translation>Valmis</translation>
</message>
<message>
<location filename="src/pages.cpp" line="137"/>
<source>The wizard has finished.</source>
<translation>Asennusohjelma on valmis.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="138"/>
<source>You can now start using Cockatrice with the newly updated cards.</source>
<translation>Voit nyt käyttää Cockatricea juuri päivitetyillä korteilla.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="139"/>
<source>If the card databases don&apos;t reload automatically, restart the Cockatrice client.</source>
<translation>Jos korttitietokannat eivät päivity automaattisesti, käynnistä Cockatrice uudelleen.</translation>
</message>
</context>
<context>
<name>SaveSetsPage</name>
<message>
<location filename="src/pages.cpp" line="563"/>
<location filename="src/pages.cpp" line="638"/>
<source>Error</source>
<translation>Virhe</translation>
</message>
<message>
<location filename="src/pages.cpp" line="563"/>
<source>No set has been imported.</source>
<translation>Yhtään settiä ei ladattu.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="574"/>
<source>Sets imported</source>
<translation>Ladatut ekspansiot</translation>
</message>
<message>
<location filename="src/pages.cpp" line="576"/>
<source>A cockatrice database file of %1 MB has been downloaded.</source>
<translation>Cockatrice tietokantatiedosto kooltaan %1 MB on ladattu.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="579"/>
<source>The following sets have been found:</source>
<translation>Seuraavat setit löydettiin:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="582"/>
<source>Press &quot;Save&quot; to store the imported cards in the Cockatrice database.</source>
<translation>Paina &quot;Tallenna&quot; varastoidaksesi ladatut kortit Cockatricen tietokantaan.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="583"/>
<source>The card database will be saved at the following location:</source>
<translation>Korttitietokanta tallennetaan seuraavaan sijaintiin:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="585"/>
<source>Save to a custom path (not recommended)</source>
<translation>Tallenna mukautettuun sijaintiin (ei-suositeltu)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="587"/>
<source>&amp;Save</source>
<translation>&amp;Tallenna</translation>
</message>
<message>
<location filename="src/pages.cpp" line="593"/>
<source>Import finished: %1 cards.</source>
<translation>Lataaminen valmis: %1 kortit.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="596"/>
<source>%1: %2 cards imported</source>
<translation>%1: %2 kortit ladattu</translation>
</message>
<message>
<location filename="src/pages.cpp" line="605"/>
<source>Save card database</source>
<translation>Tallenna korttitietokanta</translation>
</message>
<message>
<location filename="src/pages.cpp" line="606"/>
<source>XML; card database (*.xml)</source>
<translation>XML; korttitietokanta (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="638"/>
<source>The file could not be saved to %1</source>
<translation>Tiedostoa ei voitu tallentaa osoitteeseen %1</translation>
</message>
</context>
<context>
<name>SimpleDownloadFilePage</name>
<message>
<location filename="src/pagetemplates.cpp" line="72"/>
<source>Load %1 file</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="82"/>
<source>%1 file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<location filename="src/pagetemplates.cpp" line="129"/>
<location filename="src/pagetemplates.cpp" line="134"/>
<location filename="src/pagetemplates.cpp" line="168"/>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>Error</source>
<translation>Virhe</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<source>The provided URL is not valid: </source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="115"/>
<source>Downloading (0MB)</source>
<translation>Ladataan (0 MB)</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="129"/>
<source>Please choose a file.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="134"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="159"/>
<source>Downloading (%1MB)</source>
<translation>Ladataan (%1 MB)</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="168"/>
<source>Network error: %1.</source>
<translation>Yhteysvirhe: %1.</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>The file could not be saved to %1</source>
<translation>Tiedostoa ei voitu tallentaa osoitteeseen %1</translation>
</message>
</context>
<context>
<name>UnZip</name>
<message>
<location filename="src/zip/unzip.cpp" line="1175"/>
<source>ZIP operation completed successfully.</source>
<translation>ZIP-operaatio suoritettiin onnistuneesti.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1176"/>
<source>Failed to initialize or load zlib library.</source>
<translation>zlib-kirjaston alustaminen tai lataaminen epäonnistui</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1177"/>
<source>zlib library error.</source>
<translation>zlib-kirjastovirhe.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1178"/>
<source>Unable to create or open file.</source>
<translation>Tiedostoa ei voitu luoda tai avata.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1179"/>
<source>Partially corrupted archive. Some files might be extracted.</source>
<translation>Osittain korruptoitunut tiedosto. Osia zip-tiedostosta saatettiin purkaa.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1180"/>
<source>Corrupted archive.</source>
<translation>Korruptoitunut tiedosto.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1181"/>
<source>Wrong password.</source>
<translation>Väärä salasana.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1182"/>
<source>No archive has been created yet.</source>
<translation>Yhtään arkistoa ei olla vielä luotu.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1183"/>
<source>File or directory does not exist.</source>
<translation>Tiedostoa tai hakemistoa ei ole olemassa.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1184"/>
<source>File read error.</source>
<translation>Tiedostonlukuvirhe.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1185"/>
<source>File write error.</source>
<translation>Tiedostonkirjoitusvirhe.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1186"/>
<source>File seek error.</source>
<translation>Tiedostonetsimisvirhe.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1187"/>
<source>Unable to create a directory.</source>
<translation>Hakemistoa ei voitu luoda.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1188"/>
<source>Invalid device.</source>
<translation>Virheellinen laite.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1189"/>
<source>Invalid or incompatible zip archive.</source>
<translation>Virheellinen tai yhteensopimaton zip-tiedosto.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1190"/>
<source>Inconsistent headers. Archive might be corrupted.</source>
<translation>Epäjohdonmukaiset otsikot. Tiedosto saattaa olla korruptoitunut.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1194"/>
<source>Unknown error.</source>
<translation>Tuntematon virhe.</translation>
</message>
</context>
<context>
<name>Zip</name>
<message>
<location filename="src/zip/zip.cpp" line="1604"/>
<source>ZIP operation completed successfully.</source>
<translation>ZIP-operaatio suoritettiin onnistuneesti.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1605"/>
<source>Failed to initialize or load zlib library.</source>
<translation>zlib-kirjaston alustaminen tai lataaminen epäonnistui.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1606"/>
<source>zlib library error.</source>
<translation>zlib-kirjastovirhe.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1607"/>
<source>Unable to create or open file.</source>
<translation>Tiedostoa ei voitu luoda tai avata.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1608"/>
<source>No archive has been created yet.</source>
<translation>Yhtään arkistoa ei olla vielä luotu.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1609"/>
<source>File or directory does not exist.</source>
<translation>Tiedostoa tai hakemistoa ei ole olemassa.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1610"/>
<source>File read error.</source>
<translation>Tiedostonlukuvirhe.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1611"/>
<source>File write error.</source>
<translation>Tiedostonkirjoitusvirhe.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1612"/>
<source>File seek error.</source>
<translation>Tiedostonetsimisvirhe.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1616"/>
<source>Unknown error.</source>
<translation>Tuntematon virhe.</translation>
</message>
</context>
<context>
<name>i18n</name>
<message>
<location filename="src/oraclewizard.cpp" line="22"/>
<source>English</source>
<translation>Suomi (Finnish)</translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="src/main.cpp" line="62"/>
<source>Only run in spoiler mode</source>
<translation>Suorita vain spoileritilassa</translation>
</message>
<message>
<location filename="src/main.cpp" line="63"/>
<source>Run in no-confirm background mode</source>
<translation type="unfinished"/>
</message>
</context>
</TS>
+608
View File
@@ -0,0 +1,608 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS version="2.1" language="fr">
<context>
<name>IntroPage</name>
<message>
<location filename="src/pages.cpp" line="127"/>
<source>Introduction</source>
<translation>Introduction</translation>
</message>
<message>
<location filename="src/pages.cpp" line="128"/>
<source>This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice.</source>
<translation>Cet assistant va importer la liste des éditions, cartes et jetons qui seront utilisés par Cockatrice.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="130"/>
<source>Interface language:</source>
<translation>Langage de l&apos;interface :</translation>
</message>
<message>
<location filename="src/pages.cpp" line="131"/>
<source>Version:</source>
<translation>Version :</translation>
</message>
</context>
<context>
<name>LoadSetsPage</name>
<message>
<location filename="src/pages.cpp" line="200"/>
<source>Source selection</source>
<translation>Choix du fichier source</translation>
</message>
<message>
<location filename="src/pages.cpp" line="201"/>
<source>Please specify a compatible 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.</source>
<translation>Veuillez spécifier une source compatible pour la liste d&apos;éditions et de cartes. Vous pouvez spécifier une URL qui sera utilisée pour télécharger un fichier ou utiliser un fichier existant sur votre ordinateur.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="205"/>
<source>Download URL:</source>
<translation>URL de téléchargement :</translation>
</message>
<message>
<location filename="src/pages.cpp" line="206"/>
<source>Local file:</source>
<translation>Fichier local :</translation>
</message>
<message>
<location filename="src/pages.cpp" line="207"/>
<source>Restore default URL</source>
<translation>Restaurer l&apos;URL par défaut</translation>
</message>
<message>
<location filename="src/pages.cpp" line="208"/>
<source>Choose file...</source>
<translation>Choisissez un fichier...</translation>
</message>
<message>
<location filename="src/pages.cpp" line="218"/>
<source>Load sets file</source>
<translation>Charger une liste d&apos;éditions</translation>
</message>
<message>
<location filename="src/pages.cpp" line="228"/>
<source>Sets file (%1)</source>
<oldsource>Sets JSON file (%1)</oldsource>
<translation>Choisir le fichier (%1)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<location filename="src/pages.cpp" line="277"/>
<location filename="src/pages.cpp" line="282"/>
<location filename="src/pages.cpp" line="354"/>
<location filename="src/pages.cpp" line="485"/>
<location filename="src/pages.cpp" line="498"/>
<location filename="src/pages.cpp" line="519"/>
<source>Error</source>
<translation>Erreur</translation>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<source>The provided URL is not valid.</source>
<translation>L&apos;URL fournie n&apos;est pas valable</translation>
</message>
<message>
<location filename="src/pages.cpp" line="262"/>
<source>Downloading (0MB)</source>
<translation>Téléchargement en cours (0MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="277"/>
<source>Please choose a file.</source>
<translation>Choisissez un fichier.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="282"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation>Impossible d&apos;ouvrir le fichier &apos;%1&apos;.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="345"/>
<source>Downloading (%1MB)</source>
<translation>Téléchargement (%1MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="354"/>
<source>Network error: %1.</source>
<translation>Erreur réseau : %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="392"/>
<source>Parsing file</source>
<translation>Traitement du fichier.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="414"/>
<source>Xz extraction failed.</source>
<translation>L&apos;extraction du zip à échoué.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="421"/>
<source>Sorry, this version of Oracle does not support xz compressed files.</source>
<translation>Désolé, cette version d&apos;Oracle ne supporte pas les fichiers zip.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="441"/>
<source>Failed to open Zip archive: %1.</source>
<translation>Impossible d&apos;ouvrir l&apos;archive zip: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="446"/>
<source>Zip extraction failed: the Zip archive doesn&apos;t contain exactly one file.</source>
<translation>Extraction zip échouée: l&apos;archive zip contient plus qu&apos;un fichier.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="454"/>
<source>Zip extraction failed: %1.</source>
<translation>L&apos;extraction du zip a échoué : %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="462"/>
<source>Sorry, this version of Oracle does not support zipped files.</source>
<translation>Désolé, cette version d&apos;Oracle ne supporte pas les fichiers zip.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="485"/>
<source>Failed to interpret downloaded data.</source>
<translation>Échec lors de l&apos;interprétation des données téléchargées.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="498"/>
<source>Do you want to download the uncompressed file instead?</source>
<translation>Voulez-vous télécharger le fichier non compressé à la place ?</translation>
</message>
<message>
<location filename="src/pages.cpp" line="520"/>
<source>The file was retrieved successfully, but it does not contain any sets data.</source>
<translation>Le fichier a été trouvé, mais ne contient aucune éditions.</translation>
</message>
</context>
<context>
<name>LoadSpoilersPage</name>
<message>
<location filename="src/pages.cpp" line="716"/>
<source>Save spoiler database</source>
<translation>Enregistrer la base de données des spoilers</translation>
</message>
<message>
<location filename="src/pages.cpp" line="721"/>
<source>XML; spoiler database (*.xml)</source>
<translation>XML ; base de données des spoilers (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="726"/>
<source>spoiler</source>
<translation>spoiler</translation>
</message>
<message>
<location filename="src/pages.cpp" line="731"/>
<source>Spoilers import</source>
<translation>Importation des spoilers</translation>
</message>
<message>
<location filename="src/pages.cpp" line="732"/>
<source>Please specify a compatible source for spoiler data.</source>
<translation>Veuillez spécifier une source compatible pour les spoilers.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="734"/>
<source>Download URL:</source>
<translation>URL de téléchargement :</translation>
</message>
<message>
<location filename="src/pages.cpp" line="735"/>
<source>Local file:</source>
<translation>Fichier local:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="736"/>
<source>Restore default URL</source>
<translation>Restaurer l&apos;URL par défaut</translation>
</message>
<message>
<location filename="src/pages.cpp" line="737"/>
<source>Choose file...</source>
<translation>Choisissez un fichier...</translation>
</message>
<message>
<location filename="src/pages.cpp" line="739"/>
<source>The spoiler database will be saved at the following location:</source>
<translation>La base de données des spoilers sera enregistrée à l&apos;emplacement suivant :</translation>
</message>
<message>
<location filename="src/pages.cpp" line="741"/>
<source>Save to a custom path (not recommended)</source>
<translation>Sauvegarder à un emplacement personnalisé (non recommandé)</translation>
</message>
</context>
<context>
<name>LoadTokensPage</name>
<message>
<location filename="src/pages.cpp" line="671"/>
<source>Save token database</source>
<translation>Enregistrer la base de données des jetons</translation>
</message>
<message>
<location filename="src/pages.cpp" line="676"/>
<source>XML; token database (*.xml)</source>
<translation>XML ; base de données des jetons (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="681"/>
<source>tokens</source>
<translation>jetons</translation>
</message>
<message>
<location filename="src/pages.cpp" line="686"/>
<source>Tokens import</source>
<translation>Importation des jetons</translation>
</message>
<message>
<location filename="src/pages.cpp" line="687"/>
<source>Please specify a compatible source for token data.</source>
<translation>Veuillez spécifier une source compatible pour les jetons.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="689"/>
<source>Download URL:</source>
<translation>URL de téléchargement:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="690"/>
<source>Local file:</source>
<translation>Ficher local:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="691"/>
<source>Restore default URL</source>
<translation>Restaurer l&apos;URL par défaut</translation>
</message>
<message>
<location filename="src/pages.cpp" line="692"/>
<source>Choose file...</source>
<translation>Choisissez un ficher...</translation>
</message>
<message>
<location filename="src/pages.cpp" line="694"/>
<source>The token database will be saved at the following location:</source>
<translation>La base de données des jetons sera enregistrée à l&apos;emplacement suivant :</translation>
</message>
<message>
<location filename="src/pages.cpp" line="696"/>
<source>Save to a custom path (not recommended)</source>
<translation>Sauvegarder à un emplacement personnalisé (non recommandé)</translation>
</message>
</context>
<context>
<name>OracleImporter</name>
<message>
<location filename="src/oracleimporter.cpp" line="542"/>
<source>Dummy set containing tokens</source>
<translation>Fausse édition contenant les jetons</translation>
</message>
</context>
<context>
<name>OracleWizard</name>
<message>
<location filename="src/oraclewizard.cpp" line="101"/>
<source>Oracle Importer</source>
<translation>Importateur Oracle</translation>
</message>
</context>
<context>
<name>OutroPage</name>
<message>
<location filename="src/pages.cpp" line="136"/>
<source>Finished</source>
<translation>Terminé</translation>
</message>
<message>
<location filename="src/pages.cpp" line="137"/>
<source>The wizard has finished.</source>
<translation>L&apos;assistant a terminé.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="138"/>
<source>You can now start using Cockatrice with the newly updated cards.</source>
<translation>Vous pouvez maintenant commencer à utiliser Cockatrice avec les cartes mises à jour.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="139"/>
<source>If the card databases don&apos;t reload automatically, restart the Cockatrice client.</source>
<translation>Si les bases de données de cartes ne rechargent pas automatiquement, redémarrez le client Cockatrice.</translation>
</message>
</context>
<context>
<name>SaveSetsPage</name>
<message>
<location filename="src/pages.cpp" line="563"/>
<location filename="src/pages.cpp" line="638"/>
<source>Error</source>
<translation>Erreur</translation>
</message>
<message>
<location filename="src/pages.cpp" line="563"/>
<source>No set has been imported.</source>
<translation>Aucune édition n&apos;a été importé.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="574"/>
<source>Sets imported</source>
<translation>Éditions importées</translation>
</message>
<message>
<location filename="src/pages.cpp" line="576"/>
<source>A cockatrice database file of %1 MB has been downloaded.</source>
<translation>Un fichier de base de données Cockatrice de %1 MB a été téléchargé.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="579"/>
<source>The following sets have been found:</source>
<translation>Les éditions suivantes ont été trouvées :</translation>
</message>
<message>
<location filename="src/pages.cpp" line="582"/>
<source>Press &quot;Save&quot; to store the imported cards in the Cockatrice database.</source>
<translation>Cliquez sur « Enregistrer » pour enregistrer les cartes importées dans la base de données de Cockatrice.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="583"/>
<source>The card database will be saved at the following location:</source>
<translation>La base de données des cartes sera enregistrée à l&apos;emplacement suivant :</translation>
</message>
<message>
<location filename="src/pages.cpp" line="585"/>
<source>Save to a custom path (not recommended)</source>
<translation>Sauvegarder à un emplacement personnalisé (non recommandé)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="587"/>
<source>&amp;Save</source>
<translation>Sauvegarder</translation>
</message>
<message>
<location filename="src/pages.cpp" line="593"/>
<source>Import finished: %1 cards.</source>
<translation>Import terminé: %1 cartes.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="596"/>
<source>%1: %2 cards imported</source>
<translation>%1: %2 cartes ajoutées.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="605"/>
<source>Save card database</source>
<translation>Sauvegarder la base de carte</translation>
</message>
<message>
<location filename="src/pages.cpp" line="606"/>
<source>XML; card database (*.xml)</source>
<translation>XML ; base de données de cartes (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="638"/>
<source>The file could not be saved to %1</source>
<translation>Le fichier n&apos;a pu être sauvegarder au chemin &apos;%1&apos;</translation>
</message>
</context>
<context>
<name>SimpleDownloadFilePage</name>
<message>
<location filename="src/pagetemplates.cpp" line="72"/>
<source>Load %1 file</source>
<translation>Chargez le fichier %1</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="82"/>
<source>%1 file (%1)</source>
<translation>fichier %1 (%1)</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<location filename="src/pagetemplates.cpp" line="129"/>
<location filename="src/pagetemplates.cpp" line="134"/>
<location filename="src/pagetemplates.cpp" line="168"/>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>Error</source>
<translation>Erreur</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<source>The provided URL is not valid: </source>
<translation>L&apos;URL fournie n&apos;est pas valide :</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="115"/>
<source>Downloading (0MB)</source>
<translation>Téléchargement (0 Mo)</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="129"/>
<source>Please choose a file.</source>
<translation>Merci de choisir un fichier.</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="134"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation>Le fichier &apos;%1&apos; ne peut pas être ouvert.</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="159"/>
<source>Downloading (%1MB)</source>
<translation>Téléchargement (%1 Mo)</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="168"/>
<source>Network error: %1.</source>
<translation>Erreur réseau : %1.</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>The file could not be saved to %1</source>
<translation>Le fichier n&apos;a pas pu être enregistré dans %1</translation>
</message>
</context>
<context>
<name>UnZip</name>
<message>
<location filename="src/zip/unzip.cpp" line="1175"/>
<source>ZIP operation completed successfully.</source>
<translation>Opération ZIP complétée avec succès.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1176"/>
<source>Failed to initialize or load zlib library.</source>
<translation>Impossible d&apos;initialiser ou de charger la bibliothèque zlib.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1177"/>
<source>zlib library error.</source>
<translation>Erreur avec la bibliothèque zlib.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1178"/>
<source>Unable to create or open file.</source>
<translation>Impossible de créer ou ouvrir le fichier.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1179"/>
<source>Partially corrupted archive. Some files might be extracted.</source>
<translation>Archive partiellement corrompue. Certains fichiers ont pu être extraits.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1180"/>
<source>Corrupted archive.</source>
<translation>Archive corrompue.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1181"/>
<source>Wrong password.</source>
<translation>Mauvais mot de passe.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1182"/>
<source>No archive has been created yet.</source>
<translation>Aucune archive n&apos;a été créée pour l&apos;instant.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1183"/>
<source>File or directory does not exist.</source>
<translation>Le fichier ou le dossier n&apos;existe pas.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1184"/>
<source>File read error.</source>
<translation>Erreur lors de la lecture du fichier.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1185"/>
<source>File write error.</source>
<translation>Erreur lors de l&apos;écriture du fichier.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1186"/>
<source>File seek error.</source>
<translation>Erreur lors de la recherche dans le fichier.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1187"/>
<source>Unable to create a directory.</source>
<translation>Impossible de créer un répertoire.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1188"/>
<source>Invalid device.</source>
<translation>Périphérique non valide.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1189"/>
<source>Invalid or incompatible zip archive.</source>
<translation>Archive zip non valide ou incompatible.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1190"/>
<source>Inconsistent headers. Archive might be corrupted.</source>
<translation>En-têtes inconsistants. L&apos;archive peut être corrompue.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1194"/>
<source>Unknown error.</source>
<translation>Erreur inconnue.</translation>
</message>
</context>
<context>
<name>Zip</name>
<message>
<location filename="src/zip/zip.cpp" line="1604"/>
<source>ZIP operation completed successfully.</source>
<translation>Opération ZIP complétée avec succès.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1605"/>
<source>Failed to initialize or load zlib library.</source>
<translation>Impossible d&apos;initialiser ou de charger la bibliothèque zlib.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1606"/>
<source>zlib library error.</source>
<translation>Erreur avec la bibliothèque zlib.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1607"/>
<source>Unable to create or open file.</source>
<translation>Impossible de créer ou d&apos;ouvrir le fichier.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1608"/>
<source>No archive has been created yet.</source>
<translation>Aucune archive n&apos;a été créée pour l&apos;instant.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1609"/>
<source>File or directory does not exist.</source>
<translation>Le fichier ou le dossier n&apos;existe pas.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1610"/>
<source>File read error.</source>
<translation>Erreur lors de la lecture du fichier.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1611"/>
<source>File write error.</source>
<translation>Erreur lors de l&apos;écriture du fichier.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1612"/>
<source>File seek error.</source>
<translation>Erreur lors de la recherche dans le fichier.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1616"/>
<source>Unknown error.</source>
<translation>Erreur inconnue.</translation>
</message>
</context>
<context>
<name>i18n</name>
<message>
<location filename="src/oraclewizard.cpp" line="22"/>
<source>English</source>
<translation>Français (French)</translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="src/main.cpp" line="62"/>
<source>Only run in spoiler mode</source>
<translation>Ne fonctionne qu&apos;en mode spoiler</translation>
</message>
<message>
<location filename="src/main.cpp" line="63"/>
<source>Run in no-confirm background mode</source>
<translation>S&apos;exécuter en mode tâche de fond sans demande de confirmation</translation>
</message>
</context>
</TS>
+398
View File
@@ -0,0 +1,398 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS version="2.1" language="hu">
<context>
<name>IntroPage</name>
<message>
<location filename="../src/oraclewizard.cpp" line="192"/>
<source>Introduction</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="193"/>
<source>This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="195"/>
<source>Interface language:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="196"/>
<source>Version:</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>LoadSetsPage</name>
<message>
<location filename="../src/oraclewizard.cpp" line="251"/>
<source>Source selection</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="252"/>
<source>Please specify a compatible 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.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="256"/>
<source>Download URL:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="257"/>
<source>Local file:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="258"/>
<source>Restore default URL</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="259"/>
<source>Choose file...</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="269"/>
<source>Load sets file</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="279"/>
<source>Sets JSON file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="309"/>
<location filename="../src/oraclewizard.cpp" line="328"/>
<location filename="../src/oraclewizard.cpp" line="333"/>
<location filename="../src/oraclewizard.cpp" line="402"/>
<location filename="../src/oraclewizard.cpp" line="526"/>
<location filename="../src/oraclewizard.cpp" line="547"/>
<source>Error</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="309"/>
<source>The provided URL is not valid.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="313"/>
<source>Downloading (0MB)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="328"/>
<source>Please choose a file.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="333"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="393"/>
<source>Downloading (%1MB)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="402"/>
<source>Network error: %1.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="440"/>
<source>Parsing file</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="454"/>
<source>Xz extraction failed.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="462"/>
<source>Sorry, this version of Oracle does not support xz compressed files.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="481"/>
<source>Failed to open Zip archive: %1.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="486"/>
<source>Zip extraction failed: the Zip archive doesn&apos;t contain exactly one file.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="494"/>
<source>Zip extraction failed: %1.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="503"/>
<source>Sorry, this version of Oracle does not support zipped files.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="526"/>
<source>Do you want to download the uncompressed file instead?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="548"/>
<source>The file was retrieved successfully, but it does not contain any sets data.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>LoadSpoilersPage</name>
<message>
<location filename="../src/oraclewizard.cpp" line="699"/>
<source>Save spoiler database</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="704"/>
<source>XML; spoiler database (*.xml)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="709"/>
<source>Spoilers import</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="710"/>
<source>Please specify a compatible source for spoiler data.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="712"/>
<source>Download URL:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="713"/>
<source>Restore default URL</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="714"/>
<source>The spoiler database will be saved at the following location:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="716"/>
<source>Save to a custom path (not recommended)</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>LoadTokensPage</name>
<message>
<location filename="../src/oraclewizard.cpp" line="662"/>
<source>Save token database</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="667"/>
<source>XML; token database (*.xml)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="672"/>
<source>Tokens import</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="673"/>
<source>Please specify a compatible source for token data.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="675"/>
<source>Download URL:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="676"/>
<source>Restore default URL</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="677"/>
<source>The token database will be saved at the following location:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="679"/>
<source>Save to a custom path (not recommended)</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>OracleImporter</name>
<message>
<location filename="../src/oracleimporter.cpp" line="475"/>
<source>Dummy set containing tokens</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>OracleWizard</name>
<message>
<location filename="../src/oraclewizard.cpp" line="98"/>
<source>Oracle Importer</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>OutroPage</name>
<message>
<location filename="../src/oraclewizard.cpp" line="201"/>
<source>Finished</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="202"/>
<source>The wizard has finished.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="203"/>
<source>You can now start using Cockatrice with the newly updated cards.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="204"/>
<source>If the card databases don&apos;t reload automatically, restart the Cockatrice client.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>SaveSetsPage</name>
<message>
<location filename="../src/oraclewizard.cpp" line="585"/>
<location filename="../src/oraclewizard.cpp" line="638"/>
<source>Error</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="585"/>
<source>No set has been imported.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="591"/>
<source>Sets imported</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="592"/>
<source>The following sets have been found:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="594"/>
<source>Press &quot;Save&quot; to store the imported cards in the Cockatrice database.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="595"/>
<source>The card database will be saved at the following location:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="597"/>
<source>Save to a custom path (not recommended)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="599"/>
<source>&amp;Save</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="605"/>
<source>Import finished: %1 cards.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="608"/>
<source>%1: %2 cards imported</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="617"/>
<source>Save card database</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="618"/>
<source>XML; card database (*.xml)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="638"/>
<source>The file could not be saved to %1</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>SimpleDownloadFilePage</name>
<message>
<location filename="../src/pagetemplates.cpp" line="73"/>
<location filename="../src/pagetemplates.cpp" line="113"/>
<location filename="../src/pagetemplates.cpp" line="169"/>
<source>Error</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/pagetemplates.cpp" line="73"/>
<source>The provided URL is not valid.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/pagetemplates.cpp" line="77"/>
<source>Downloading (0MB)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/pagetemplates.cpp" line="104"/>
<source>Downloading (%1MB)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/pagetemplates.cpp" line="113"/>
<source>Network error: %1.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/pagetemplates.cpp" line="169"/>
<source>The file could not be saved to %1</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>i18n</name>
<message>
<location filename="../src/oraclewizard.cpp" line="58"/>
<source>English</source>
<translation>Magyar (Hungarian)</translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="../src/main.cpp" line="42"/>
<source>Only run in spoiler mode</source>
<translation type="unfinished"/>
</message>
</context>
</TS>
+609
View File
@@ -0,0 +1,609 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS version="2.1" language="it">
<context>
<name>IntroPage</name>
<message>
<location filename="src/pages.cpp" line="127"/>
<source>Introduction</source>
<translation>Introduzione</translation>
</message>
<message>
<location filename="src/pages.cpp" line="128"/>
<source>This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice.</source>
<translation>Questo wizard importerà la lista di set, carte
e pedine che verranno usate da Cockatrice.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="130"/>
<source>Interface language:</source>
<translation>Lingua dell&apos;interfaccia:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="131"/>
<source>Version:</source>
<translation>Versione:</translation>
</message>
</context>
<context>
<name>LoadSetsPage</name>
<message>
<location filename="src/pages.cpp" line="200"/>
<source>Source selection</source>
<translation>Selezione sorgente</translation>
</message>
<message>
<location filename="src/pages.cpp" line="201"/>
<source>Please specify a compatible 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.</source>
<translation>Specifica una sorgente compatibile per la lista dei set e delle carte. Puoi specificare un indirizzo URL da cui scaricare il file o selezionare un file già presente nel tuo computer.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="205"/>
<source>Download URL:</source>
<translation>Indirizzo download:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="206"/>
<source>Local file:</source>
<translation>File nel pc:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="207"/>
<source>Restore default URL</source>
<translation>Usa l&apos;indirizzo predefinito</translation>
</message>
<message>
<location filename="src/pages.cpp" line="208"/>
<source>Choose file...</source>
<translation>Scegli file...</translation>
</message>
<message>
<location filename="src/pages.cpp" line="218"/>
<source>Load sets file</source>
<translation>Carica file dei set</translation>
</message>
<message>
<location filename="src/pages.cpp" line="228"/>
<source>Sets file (%1)</source>
<oldsource>Sets JSON file (%1)</oldsource>
<translation>File dei set (%1)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<location filename="src/pages.cpp" line="277"/>
<location filename="src/pages.cpp" line="282"/>
<location filename="src/pages.cpp" line="354"/>
<location filename="src/pages.cpp" line="485"/>
<location filename="src/pages.cpp" line="498"/>
<location filename="src/pages.cpp" line="519"/>
<source>Error</source>
<translation>Errore</translation>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<source>The provided URL is not valid.</source>
<translation>L&apos;indirizzo specificato non è valido.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="262"/>
<source>Downloading (0MB)</source>
<translation>Scaricamento (0MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="277"/>
<source>Please choose a file.</source>
<translation>Seleziona un file.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="282"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation>Impossibile aprire il file &apos;%1&apos;.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="345"/>
<source>Downloading (%1MB)</source>
<translation>Scaricamento (%1MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="354"/>
<source>Network error: %1.</source>
<translation>Errore di rete: %1</translation>
</message>
<message>
<location filename="src/pages.cpp" line="392"/>
<source>Parsing file</source>
<translation>Analisi dei file</translation>
</message>
<message>
<location filename="src/pages.cpp" line="414"/>
<source>Xz extraction failed.</source>
<translation>Estrazione da file xz fallita.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="421"/>
<source>Sorry, this version of Oracle does not support xz compressed files.</source>
<translation>Spiacente, ma questa versione di Oracle non supporta i file xz.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="441"/>
<source>Failed to open Zip archive: %1.</source>
<translation>Impossibile aprire il file Zip: %1</translation>
</message>
<message>
<location filename="src/pages.cpp" line="446"/>
<source>Zip extraction failed: the Zip archive doesn&apos;t contain exactly one file.</source>
<translation>Estrazione file Zip fallita: lo Zip non contiene un solo file.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="454"/>
<source>Zip extraction failed: %1.</source>
<translation>Estrazione file Zip fallita: %1</translation>
</message>
<message>
<location filename="src/pages.cpp" line="462"/>
<source>Sorry, this version of Oracle does not support zipped files.</source>
<translation>Spiacente, ma questa versione di Oracle non supporta i file zip.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="485"/>
<source>Failed to interpret downloaded data.</source>
<translation>Impossibile interpretare i dati scaricati.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="498"/>
<source>Do you want to download the uncompressed file instead?</source>
<translation>Vuoi provare a scaricare il file non compresso?</translation>
</message>
<message>
<location filename="src/pages.cpp" line="520"/>
<source>The file was retrieved successfully, but it does not contain any sets data.</source>
<translation>Il file è stato analizzato correttamente, ma non contiene i dati di nessun set.</translation>
</message>
</context>
<context>
<name>LoadSpoilersPage</name>
<message>
<location filename="src/pages.cpp" line="716"/>
<source>Save spoiler database</source>
<translation>Salva archivio spoiler</translation>
</message>
<message>
<location filename="src/pages.cpp" line="721"/>
<source>XML; spoiler database (*.xml)</source>
<translation>XML; archivio spoiler (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="726"/>
<source>spoiler</source>
<translation>spoiler</translation>
</message>
<message>
<location filename="src/pages.cpp" line="731"/>
<source>Spoilers import</source>
<translation>Importazione spoiler</translation>
</message>
<message>
<location filename="src/pages.cpp" line="732"/>
<source>Please specify a compatible source for spoiler data.</source>
<translation>Specifica una sorgente compatibile per gli spoiler.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="734"/>
<source>Download URL:</source>
<translation>Indirizzo download:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="735"/>
<source>Local file:</source>
<translation>File nel pc:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="736"/>
<source>Restore default URL</source>
<translation>Usa l&apos;indirizzo predefinito</translation>
</message>
<message>
<location filename="src/pages.cpp" line="737"/>
<source>Choose file...</source>
<translation>Scegli file...</translation>
</message>
<message>
<location filename="src/pages.cpp" line="739"/>
<source>The spoiler database will be saved at the following location:</source>
<translation>L&apos;archivio degli spoiler verrà salvato nel seguente percorso:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="741"/>
<source>Save to a custom path (not recommended)</source>
<translation>Salva in un percorso diverso (sconsigliato)</translation>
</message>
</context>
<context>
<name>LoadTokensPage</name>
<message>
<location filename="src/pages.cpp" line="671"/>
<source>Save token database</source>
<translation>Salva archivio pedine</translation>
</message>
<message>
<location filename="src/pages.cpp" line="676"/>
<source>XML; token database (*.xml)</source>
<translation>XML; archivio pedine (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="681"/>
<source>tokens</source>
<translation>pedine</translation>
</message>
<message>
<location filename="src/pages.cpp" line="686"/>
<source>Tokens import</source>
<translation>Importazione pedine</translation>
</message>
<message>
<location filename="src/pages.cpp" line="687"/>
<source>Please specify a compatible source for token data.</source>
<translation>Specifica una sorgente compatibile per le pedine.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="689"/>
<source>Download URL:</source>
<translation>Indirizzo download:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="690"/>
<source>Local file:</source>
<translation>File nel pc:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="691"/>
<source>Restore default URL</source>
<translation>Usa l&apos;indirizzo predefinito</translation>
</message>
<message>
<location filename="src/pages.cpp" line="692"/>
<source>Choose file...</source>
<translation>Scegli file...</translation>
</message>
<message>
<location filename="src/pages.cpp" line="694"/>
<source>The token database will be saved at the following location:</source>
<translation>L&apos;archivio delle pedine verrà salvato nel seguente percorso:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="696"/>
<source>Save to a custom path (not recommended)</source>
<translation>Salva in un percorso diverso (sconsigliato)</translation>
</message>
</context>
<context>
<name>OracleImporter</name>
<message>
<location filename="src/oracleimporter.cpp" line="542"/>
<source>Dummy set containing tokens</source>
<translation>Set finto contenente i token</translation>
</message>
</context>
<context>
<name>OracleWizard</name>
<message>
<location filename="src/oraclewizard.cpp" line="101"/>
<source>Oracle Importer</source>
<translation>Oracle Importer</translation>
</message>
</context>
<context>
<name>OutroPage</name>
<message>
<location filename="src/pages.cpp" line="136"/>
<source>Finished</source>
<translation>Finito</translation>
</message>
<message>
<location filename="src/pages.cpp" line="137"/>
<source>The wizard has finished.</source>
<translation>Il wizard è completato.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="138"/>
<source>You can now start using Cockatrice with the newly updated cards.</source>
<translation>Adesso puoi iniziare ad usare Cockatrice con le nuove carte aggiornate.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="139"/>
<source>If the card databases don&apos;t reload automatically, restart the Cockatrice client.</source>
<translation>Se il database delle carte non si ricarica in automatico, riavvia il programma Cockatrice.</translation>
</message>
</context>
<context>
<name>SaveSetsPage</name>
<message>
<location filename="src/pages.cpp" line="563"/>
<location filename="src/pages.cpp" line="638"/>
<source>Error</source>
<translation>Errore</translation>
</message>
<message>
<location filename="src/pages.cpp" line="563"/>
<source>No set has been imported.</source>
<translation>Nessun set importato.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="574"/>
<source>Sets imported</source>
<translation>Set importati</translation>
</message>
<message>
<location filename="src/pages.cpp" line="576"/>
<source>A cockatrice database file of %1 MB has been downloaded.</source>
<translation>È stato scaricato un file database di Cockatrice di %1 MB.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="579"/>
<source>The following sets have been found:</source>
<translation>Sono stati trovati i seguenti set:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="582"/>
<source>Press &quot;Save&quot; to store the imported cards in the Cockatrice database.</source>
<translation>Premi &quot;Salva&quot; per salvare le carte importate nel database di Cockatrice.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="583"/>
<source>The card database will be saved at the following location:</source>
<translation>L&apos;archivio delle carte verrà salvato nel seguente percorso:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="585"/>
<source>Save to a custom path (not recommended)</source>
<translation>Salva in un percorso diverso (sconsigliato)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="587"/>
<source>&amp;Save</source>
<translation>&amp;Salva</translation>
</message>
<message>
<location filename="src/pages.cpp" line="593"/>
<source>Import finished: %1 cards.</source>
<translation>Importazione conclusa: %1 carte.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="596"/>
<source>%1: %2 cards imported</source>
<translation>%1: %2 carte importate</translation>
</message>
<message>
<location filename="src/pages.cpp" line="605"/>
<source>Save card database</source>
<translation>Salva archivio carte</translation>
</message>
<message>
<location filename="src/pages.cpp" line="606"/>
<source>XML; card database (*.xml)</source>
<translation>XML; archivio carte (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="638"/>
<source>The file could not be saved to %1</source>
<translation>Impossibile salvare il file su %1</translation>
</message>
</context>
<context>
<name>SimpleDownloadFilePage</name>
<message>
<location filename="src/pagetemplates.cpp" line="72"/>
<source>Load %1 file</source>
<translation>Carica %1 file</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="82"/>
<source>%1 file (%1)</source>
<translation>%1 file (%1)</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<location filename="src/pagetemplates.cpp" line="129"/>
<location filename="src/pagetemplates.cpp" line="134"/>
<location filename="src/pagetemplates.cpp" line="168"/>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>Error</source>
<translation>Errore</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<source>The provided URL is not valid: </source>
<translation>L&apos;indirizzo fornito non è valido:</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="115"/>
<source>Downloading (0MB)</source>
<translation>Scaricamento (0MB)</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="129"/>
<source>Please choose a file.</source>
<translation>Seleziona un file.</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="134"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation>Impossibile aprire il file &apos;%1&apos;.</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="159"/>
<source>Downloading (%1MB)</source>
<translation>Scaricamento (%1MB)</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="168"/>
<source>Network error: %1.</source>
<translation>Errore di rete: %1.</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>The file could not be saved to %1</source>
<translation>Impossibile salvare il file su %1</translation>
</message>
</context>
<context>
<name>UnZip</name>
<message>
<location filename="src/zip/unzip.cpp" line="1175"/>
<source>ZIP operation completed successfully.</source>
<translation>Operazione ZIP completata con successo.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1176"/>
<source>Failed to initialize or load zlib library.</source>
<translation>Impossibile inizializzare o caricare libreria zlib.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1177"/>
<source>zlib library error.</source>
<translation>Errore libreria zlib.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1178"/>
<source>Unable to create or open file.</source>
<translation>Impossibile creare o aprile il file.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1179"/>
<source>Partially corrupted archive. Some files might be extracted.</source>
<translation>Archivio parzialmente corrotto. Alcuni file potrebbero essere estratti.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1180"/>
<source>Corrupted archive.</source>
<translation>Archivio corrotto.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1181"/>
<source>Wrong password.</source>
<translation>Password errata.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1182"/>
<source>No archive has been created yet.</source>
<translation>Nessun archivio è stato ancora creato.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1183"/>
<source>File or directory does not exist.</source>
<translation>Il file o il percorso non esistono.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1184"/>
<source>File read error.</source>
<translation>Errore di lettura file.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1185"/>
<source>File write error.</source>
<translation>Errore di scrittura file.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1186"/>
<source>File seek error.</source>
<translation>Errore di ricerca file.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1187"/>
<source>Unable to create a directory.</source>
<translation>Impossibile creare il percorso specificato.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1188"/>
<source>Invalid device.</source>
<translation>Dispositivo invalido.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1189"/>
<source>Invalid or incompatible zip archive.</source>
<translation>Archivio ZIP invalido o incompatibile.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1190"/>
<source>Inconsistent headers. Archive might be corrupted.</source>
<translation>Header inconsistenti. L&apos;archivio potrebbe essere corrotto.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1194"/>
<source>Unknown error.</source>
<translation>Errore sconosciuto.</translation>
</message>
</context>
<context>
<name>Zip</name>
<message>
<location filename="src/zip/zip.cpp" line="1604"/>
<source>ZIP operation completed successfully.</source>
<translation>Operazione ZIP completata con successo.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1605"/>
<source>Failed to initialize or load zlib library.</source>
<translation>Inizializzazione o caricamento libreria zlib non riusciti.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1606"/>
<source>zlib library error.</source>
<translation>Errore libreria zlib.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1607"/>
<source>Unable to create or open file.</source>
<translation>Impossibile creare o aprire il file.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1608"/>
<source>No archive has been created yet.</source>
<translation>Nessun archivio è stato ancora creato.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1609"/>
<source>File or directory does not exist.</source>
<translation>Il file o il percorso non esistono.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1610"/>
<source>File read error.</source>
<translation>Errore di lettura file.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1611"/>
<source>File write error.</source>
<translation>Errore di scrittura file.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1612"/>
<source>File seek error.</source>
<translation>Errore di ricerca file.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1616"/>
<source>Unknown error.</source>
<translation>Errore sconosciuto.</translation>
</message>
</context>
<context>
<name>i18n</name>
<message>
<location filename="src/oraclewizard.cpp" line="22"/>
<source>English</source>
<translation>Italiano (Italian)</translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="src/main.cpp" line="62"/>
<source>Only run in spoiler mode</source>
<translation>Avvia solo in modalità spoiler</translation>
</message>
<message>
<location filename="src/main.cpp" line="63"/>
<source>Run in no-confirm background mode</source>
<translation>Esegui in background senza conferma</translation>
</message>
</context>
</TS>
+608
View File
@@ -0,0 +1,608 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS version="2.1" language="ja">
<context>
<name>IntroPage</name>
<message>
<location filename="src/pages.cpp" line="127"/>
<source>Introduction</source>
<translation>はじめに</translation>
</message>
<message>
<location filename="src/pages.cpp" line="128"/>
<source>This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice.</source>
<translation>このウィザードでは、Cockatriceで使用されるカードやトークン、セットのリストをインポートします。</translation>
</message>
<message>
<location filename="src/pages.cpp" line="130"/>
<source>Interface language:</source>
<translation>インターフェース言語:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="131"/>
<source>Version:</source>
<translation>バージョン:</translation>
</message>
</context>
<context>
<name>LoadSetsPage</name>
<message>
<location filename="src/pages.cpp" line="200"/>
<source>Source selection</source>
<translation>ソース選択</translation>
</message>
<message>
<location filename="src/pages.cpp" line="201"/>
<source>Please specify a compatible 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.</source>
<translation>セットとカードのリストの互換性のあるソースを指定してください。ダウンロードするURLアドレスを指定するか、コンピューターから既存のファイルを使用できます。</translation>
</message>
<message>
<location filename="src/pages.cpp" line="205"/>
<source>Download URL:</source>
<translation>ダウンロードURL:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="206"/>
<source>Local file:</source>
<translation>ローカルファイル:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="207"/>
<source>Restore default URL</source>
<translation>デフォルトのURLを復元</translation>
</message>
<message>
<location filename="src/pages.cpp" line="208"/>
<source>Choose file...</source>
<translation>ファイルを選択...</translation>
</message>
<message>
<location filename="src/pages.cpp" line="218"/>
<source>Load sets file</source>
<translation>カードセットファイルを開く</translation>
</message>
<message>
<location filename="src/pages.cpp" line="228"/>
<source>Sets file (%1)</source>
<oldsource>Sets JSON file (%1)</oldsource>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<location filename="src/pages.cpp" line="277"/>
<location filename="src/pages.cpp" line="282"/>
<location filename="src/pages.cpp" line="354"/>
<location filename="src/pages.cpp" line="485"/>
<location filename="src/pages.cpp" line="498"/>
<location filename="src/pages.cpp" line="519"/>
<source>Error</source>
<translation>エラー</translation>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<source>The provided URL is not valid.</source>
<translation>指定されたURLは無効です。</translation>
</message>
<message>
<location filename="src/pages.cpp" line="262"/>
<source>Downloading (0MB)</source>
<translation>ダウンロード中 (0MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="277"/>
<source>Please choose a file.</source>
<translation>ファイルを選択してください。</translation>
</message>
<message>
<location filename="src/pages.cpp" line="282"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation>&apos;%1&apos;を開けませんでした。</translation>
</message>
<message>
<location filename="src/pages.cpp" line="345"/>
<source>Downloading (%1MB)</source>
<translation>ダウンロード中 (%1MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="354"/>
<source>Network error: %1.</source>
<translation>ネットワークエラー: %1。</translation>
</message>
<message>
<location filename="src/pages.cpp" line="392"/>
<source>Parsing file</source>
<translation>ファイルの解析</translation>
</message>
<message>
<location filename="src/pages.cpp" line="414"/>
<source>Xz extraction failed.</source>
<translation>Xz展開に失敗。</translation>
</message>
<message>
<location filename="src/pages.cpp" line="421"/>
<source>Sorry, this version of Oracle does not support xz compressed files.</source>
<translation>このバージョンのOracleはxz圧縮ファイルをサポートしていません。</translation>
</message>
<message>
<location filename="src/pages.cpp" line="441"/>
<source>Failed to open Zip archive: %1.</source>
<translation>ZIPアーカイブの展開に失敗: %1。</translation>
</message>
<message>
<location filename="src/pages.cpp" line="446"/>
<source>Zip extraction failed: the Zip archive doesn&apos;t contain exactly one file.</source>
<translation>ZIP展開に失敗:Zipアーカイブに含まれるファイルが1つだけではありません。</translation>
</message>
<message>
<location filename="src/pages.cpp" line="454"/>
<source>Zip extraction failed: %1.</source>
<translation>ZIP展開に失敗: %1。</translation>
</message>
<message>
<location filename="src/pages.cpp" line="462"/>
<source>Sorry, this version of Oracle does not support zipped files.</source>
<translation>申し訳ありませんが現バージョンのOracleはzip形式のファイルをサポートしていません。</translation>
</message>
<message>
<location filename="src/pages.cpp" line="485"/>
<source>Failed to interpret downloaded data.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="498"/>
<source>Do you want to download the uncompressed file instead?</source>
<translation>代わりに非圧縮ファイルをダウンロードしますか?</translation>
</message>
<message>
<location filename="src/pages.cpp" line="520"/>
<source>The file was retrieved successfully, but it does not contain any sets data.</source>
<translation>ファイルは正常に取得されましたが、カードセットのデータが含まれていませんでした。</translation>
</message>
</context>
<context>
<name>LoadSpoilersPage</name>
<message>
<location filename="src/pages.cpp" line="716"/>
<source>Save spoiler database</source>
<translation>スポイラーデータベースを保存</translation>
</message>
<message>
<location filename="src/pages.cpp" line="721"/>
<source>XML; spoiler database (*.xml)</source>
<translation>XML; スポイラーデータベース (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="726"/>
<source>spoiler</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="731"/>
<source>Spoilers import</source>
<translation>スポイラーインポート</translation>
</message>
<message>
<location filename="src/pages.cpp" line="732"/>
<source>Please specify a compatible source for spoiler data.</source>
<translation>互換性のあるスポイラーデータのソースを指定してください。</translation>
</message>
<message>
<location filename="src/pages.cpp" line="734"/>
<source>Download URL:</source>
<translation>ダウンロードURL:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="735"/>
<source>Local file:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="736"/>
<source>Restore default URL</source>
<translation>デフォルトのURLを復元</translation>
</message>
<message>
<location filename="src/pages.cpp" line="737"/>
<source>Choose file...</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="739"/>
<source>The spoiler database will be saved at the following location:</source>
<translation>スポイラーデータベースは、以下の場所に保存されます:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="741"/>
<source>Save to a custom path (not recommended)</source>
<translation>別のパスに保存(非推奨)</translation>
</message>
</context>
<context>
<name>LoadTokensPage</name>
<message>
<location filename="src/pages.cpp" line="671"/>
<source>Save token database</source>
<translation>トークンデータベースを保存</translation>
</message>
<message>
<location filename="src/pages.cpp" line="676"/>
<source>XML; token database (*.xml)</source>
<translation>XML; トークンデータベース (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="681"/>
<source>tokens</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="686"/>
<source>Tokens import</source>
<translation>トークンのインポート</translation>
</message>
<message>
<location filename="src/pages.cpp" line="687"/>
<source>Please specify a compatible source for token data.</source>
<translation>トークンデータのソースを選択してください。</translation>
</message>
<message>
<location filename="src/pages.cpp" line="689"/>
<source>Download URL:</source>
<translation>ダウンロードURL:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="690"/>
<source>Local file:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="691"/>
<source>Restore default URL</source>
<translation>デフォルトのURLを復元</translation>
</message>
<message>
<location filename="src/pages.cpp" line="692"/>
<source>Choose file...</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="694"/>
<source>The token database will be saved at the following location:</source>
<translation>トークンデータベースは以下の場所に保存されます。</translation>
</message>
<message>
<location filename="src/pages.cpp" line="696"/>
<source>Save to a custom path (not recommended)</source>
<translation>別のパスに保存(非推奨)</translation>
</message>
</context>
<context>
<name>OracleImporter</name>
<message>
<location filename="src/oracleimporter.cpp" line="542"/>
<source>Dummy set containing tokens</source>
<translation>ダミーセットを含むトークン</translation>
</message>
</context>
<context>
<name>OracleWizard</name>
<message>
<location filename="src/oraclewizard.cpp" line="101"/>
<source>Oracle Importer</source>
<translation>Oracle Importer - オラクル・インポーター</translation>
</message>
</context>
<context>
<name>OutroPage</name>
<message>
<location filename="src/pages.cpp" line="136"/>
<source>Finished</source>
<translation>完了しました!</translation>
</message>
<message>
<location filename="src/pages.cpp" line="137"/>
<source>The wizard has finished.</source>
<translation>ウィザードが完了しました。</translation>
</message>
<message>
<location filename="src/pages.cpp" line="138"/>
<source>You can now start using Cockatrice with the newly updated cards.</source>
<translation>Cockatriceで新しく更新されたカードを使うことが出来ます。</translation>
</message>
<message>
<location filename="src/pages.cpp" line="139"/>
<source>If the card databases don&apos;t reload automatically, restart the Cockatrice client.</source>
<translation>カードデータベースが自動的に再読込されない場合は、Cockatriceを再起動して下さい。</translation>
</message>
</context>
<context>
<name>SaveSetsPage</name>
<message>
<location filename="src/pages.cpp" line="563"/>
<location filename="src/pages.cpp" line="638"/>
<source>Error</source>
<translation>エラー</translation>
</message>
<message>
<location filename="src/pages.cpp" line="563"/>
<source>No set has been imported.</source>
<translation>セットはインポートされませんでした。</translation>
</message>
<message>
<location filename="src/pages.cpp" line="574"/>
<source>Sets imported</source>
<translation>カードセットインポート</translation>
</message>
<message>
<location filename="src/pages.cpp" line="576"/>
<source>A cockatrice database file of %1 MB has been downloaded.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="579"/>
<source>The following sets have been found:</source>
<translation>次のセットが見つかりました:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="582"/>
<source>Press &quot;Save&quot; to store the imported cards in the Cockatrice database.</source>
<translation>”保存”をクリックするとインポートしたカードをCockatriceデータベースに保存します。</translation>
</message>
<message>
<location filename="src/pages.cpp" line="583"/>
<source>The card database will be saved at the following location:</source>
<translation>カードデータベースは以下の場所に保存されます:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="585"/>
<source>Save to a custom path (not recommended)</source>
<translation>別のパスに保存(非推奨)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="587"/>
<source>&amp;Save</source>
<translation>保存</translation>
</message>
<message>
<location filename="src/pages.cpp" line="593"/>
<source>Import finished: %1 cards.</source>
<translation>%1枚のカードがインポートされました。</translation>
</message>
<message>
<location filename="src/pages.cpp" line="596"/>
<source>%1: %2 cards imported</source>
<translation>%1: %2枚のカードがインポートされました。</translation>
</message>
<message>
<location filename="src/pages.cpp" line="605"/>
<source>Save card database</source>
<translation>カードデータベースを保存</translation>
</message>
<message>
<location filename="src/pages.cpp" line="606"/>
<source>XML; card database (*.xml)</source>
<translation>XML; card database (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="638"/>
<source>The file could not be saved to %1</source>
<translation>%1に保存できませんでした。</translation>
</message>
</context>
<context>
<name>SimpleDownloadFilePage</name>
<message>
<location filename="src/pagetemplates.cpp" line="72"/>
<source>Load %1 file</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="82"/>
<source>%1 file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<location filename="src/pagetemplates.cpp" line="129"/>
<location filename="src/pagetemplates.cpp" line="134"/>
<location filename="src/pagetemplates.cpp" line="168"/>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>Error</source>
<translation>エラー</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<source>The provided URL is not valid: </source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="115"/>
<source>Downloading (0MB)</source>
<translation>ダウンロード中 (0MB)</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="129"/>
<source>Please choose a file.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="134"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="159"/>
<source>Downloading (%1MB)</source>
<translation>ダウンロード中 (%1MB)</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="168"/>
<source>Network error: %1.</source>
<translation>ネットワークエラー: %1。</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>The file could not be saved to %1</source>
<translation>%1に保存できませんでした。</translation>
</message>
</context>
<context>
<name>UnZip</name>
<message>
<location filename="src/zip/unzip.cpp" line="1175"/>
<source>ZIP operation completed successfully.</source>
<translation>正常に完了しました。</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1176"/>
<source>Failed to initialize or load zlib library.</source>
<translation>初期化またはzlibライブラリのロードに失敗しました。</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1177"/>
<source>zlib library error.</source>
<translation>zlibライブラリエラー。</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1178"/>
<source>Unable to create or open file.</source>
<translation>ファイルが作成または開けませんでした。</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1179"/>
<source>Partially corrupted archive. Some files might be extracted.</source>
<translation>アーカイブが部分的に破損しています。いくつかのファイルが抽出されることがあります。</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1180"/>
<source>Corrupted archive.</source>
<translation>破損したアーカイブ。</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1181"/>
<source>Wrong password.</source>
<translation>パスワードが間違っています。</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1182"/>
<source>No archive has been created yet.</source>
<translation>アーカイブは作成されませんでした。</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1183"/>
<source>File or directory does not exist.</source>
<translation>ファイルまたはフォルダが存在しません。</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1184"/>
<source>File read error.</source>
<translation>ファイル読み込みエラー。</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1185"/>
<source>File write error.</source>
<translation>ファイル書き込みエラー。</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1186"/>
<source>File seek error.</source>
<translation>シーク エラー。</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1187"/>
<source>Unable to create a directory.</source>
<translation>フォルダが作成できませんでした。</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1188"/>
<source>Invalid device.</source>
<translation>無効なデバイス。</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1189"/>
<source>Invalid or incompatible zip archive.</source>
<translation>無効なまたは互換性のないzipアーカイブ。</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1190"/>
<source>Inconsistent headers. Archive might be corrupted.</source>
<translation>一貫性のないヘッダー。アーカイブが壊れている可能性があります。</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1194"/>
<source>Unknown error.</source>
<translation>不明なエラー。</translation>
</message>
</context>
<context>
<name>Zip</name>
<message>
<location filename="src/zip/zip.cpp" line="1604"/>
<source>ZIP operation completed successfully.</source>
<translation>正常に完了しました。</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1605"/>
<source>Failed to initialize or load zlib library.</source>
<translation>初期化またはzlibライブラリのロードに失敗しました。</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1606"/>
<source>zlib library error.</source>
<translation>zlibライブラリエラー。</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1607"/>
<source>Unable to create or open file.</source>
<translation>ファイルが作成または開けませんでした。</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1608"/>
<source>No archive has been created yet.</source>
<translation>アーカイブは作成されませんでした。</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1609"/>
<source>File or directory does not exist.</source>
<translation>ファイルまたはフォルダが存在しません。</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1610"/>
<source>File read error.</source>
<translation>ファイル読み込みエラー。</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1611"/>
<source>File write error.</source>
<translation>ファイル書き込みエラー。</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1612"/>
<source>File seek error.</source>
<translation>シーク エラー。</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1616"/>
<source>Unknown error.</source>
<translation>不明なエラー。</translation>
</message>
</context>
<context>
<name>i18n</name>
<message>
<location filename="src/oraclewizard.cpp" line="22"/>
<source>English</source>
<translation>日本語 (Japanese)</translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="src/main.cpp" line="62"/>
<source>Only run in spoiler mode</source>
<translation>スポイラーモードでのみ起動</translation>
</message>
<message>
<location filename="src/main.cpp" line="63"/>
<source>Run in no-confirm background mode</source>
<translation type="unfinished"/>
</message>
</context>
</TS>
+608
View File
@@ -0,0 +1,608 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS version="2.1" language="ko">
<context>
<name>IntroPage</name>
<message>
<location filename="src/pages.cpp" line="127"/>
<source>Introduction</source>
<translation>개요</translation>
</message>
<message>
<location filename="src/pages.cpp" line="128"/>
<source>This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="130"/>
<source>Interface language:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="131"/>
<source>Version:</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>LoadSetsPage</name>
<message>
<location filename="src/pages.cpp" line="200"/>
<source>Source selection</source>
<translation>확장판 목록 파일 주소 입력</translation>
</message>
<message>
<location filename="src/pages.cpp" line="201"/>
<source>Please specify a compatible 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.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="205"/>
<source>Download URL:</source>
<translation>다운로드 주소:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="206"/>
<source>Local file:</source>
<translation>파일 위치:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="207"/>
<source>Restore default URL</source>
<translation>기본 주소로 복원</translation>
</message>
<message>
<location filename="src/pages.cpp" line="208"/>
<source>Choose file...</source>
<translation>파일 선택...</translation>
</message>
<message>
<location filename="src/pages.cpp" line="218"/>
<source>Load sets file</source>
<translation>확장판 목록 파일 불러오기</translation>
</message>
<message>
<location filename="src/pages.cpp" line="228"/>
<source>Sets file (%1)</source>
<oldsource>Sets JSON file (%1)</oldsource>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<location filename="src/pages.cpp" line="277"/>
<location filename="src/pages.cpp" line="282"/>
<location filename="src/pages.cpp" line="354"/>
<location filename="src/pages.cpp" line="485"/>
<location filename="src/pages.cpp" line="498"/>
<location filename="src/pages.cpp" line="519"/>
<source>Error</source>
<translation>오류</translation>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<source>The provided URL is not valid.</source>
<translation>잘못된 주소를 입력하셨습니다.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="262"/>
<source>Downloading (0MB)</source>
<translation>다운로드 중 (0MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="277"/>
<source>Please choose a file.</source>
<translation>확장판 목록 파일을 선택해 주세요.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="282"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation>파일 &apos;%1&apos;을(를) 열 수 없습니다.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="345"/>
<source>Downloading (%1MB)</source>
<translation>다운로드 중 (%1MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="354"/>
<source>Network error: %1.</source>
<translation>네트워크 오류 : %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="392"/>
<source>Parsing file</source>
<translation>목록 파싱중</translation>
</message>
<message>
<location filename="src/pages.cpp" line="414"/>
<source>Xz extraction failed.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="421"/>
<source>Sorry, this version of Oracle does not support xz compressed files.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="441"/>
<source>Failed to open Zip archive: %1.</source>
<translation>압축파일 열기 실패 : %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="446"/>
<source>Zip extraction failed: the Zip archive doesn&apos;t contain exactly one file.</source>
<translation>압축 풀기 실패 : 압축 파일에 확장판 목록 파일 이외의 파일이 있습니다.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="454"/>
<source>Zip extraction failed: %1.</source>
<translation>압축 풀기 실패 : %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="462"/>
<source>Sorry, this version of Oracle does not support zipped files.</source>
<translation>죄송합니다. 본 버전에서는 압축 파일을 지원하지 않습니다.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="485"/>
<source>Failed to interpret downloaded data.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="498"/>
<source>Do you want to download the uncompressed file instead?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="520"/>
<source>The file was retrieved successfully, but it does not contain any sets data.</source>
<translation>파일을 성공적으로 다운로드 하였으나 확장판 정보가 들어있지 않습니다.</translation>
</message>
</context>
<context>
<name>LoadSpoilersPage</name>
<message>
<location filename="src/pages.cpp" line="716"/>
<source>Save spoiler database</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="721"/>
<source>XML; spoiler database (*.xml)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="726"/>
<source>spoiler</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="731"/>
<source>Spoilers import</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="732"/>
<source>Please specify a compatible source for spoiler data.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="734"/>
<source>Download URL:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="735"/>
<source>Local file:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="736"/>
<source>Restore default URL</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="737"/>
<source>Choose file...</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="739"/>
<source>The spoiler database will be saved at the following location:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="741"/>
<source>Save to a custom path (not recommended)</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>LoadTokensPage</name>
<message>
<location filename="src/pages.cpp" line="671"/>
<source>Save token database</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="676"/>
<source>XML; token database (*.xml)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="681"/>
<source>tokens</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="686"/>
<source>Tokens import</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="687"/>
<source>Please specify a compatible source for token data.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="689"/>
<source>Download URL:</source>
<translation>웹 주소:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="690"/>
<source>Local file:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="691"/>
<source>Restore default URL</source>
<translation>기본 주소로 복원</translation>
</message>
<message>
<location filename="src/pages.cpp" line="692"/>
<source>Choose file...</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="694"/>
<source>The token database will be saved at the following location:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="696"/>
<source>Save to a custom path (not recommended)</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>OracleImporter</name>
<message>
<location filename="src/oracleimporter.cpp" line="542"/>
<source>Dummy set containing tokens</source>
<translation>토큰 정보가 들어있는 더미 확장판</translation>
</message>
</context>
<context>
<name>OracleWizard</name>
<message>
<location filename="src/oraclewizard.cpp" line="101"/>
<source>Oracle Importer</source>
<translation>오라클</translation>
</message>
</context>
<context>
<name>OutroPage</name>
<message>
<location filename="src/pages.cpp" line="136"/>
<source>Finished</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="137"/>
<source>The wizard has finished.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="138"/>
<source>You can now start using Cockatrice with the newly updated cards.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="139"/>
<source>If the card databases don&apos;t reload automatically, restart the Cockatrice client.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>SaveSetsPage</name>
<message>
<location filename="src/pages.cpp" line="563"/>
<location filename="src/pages.cpp" line="638"/>
<source>Error</source>
<translation>오류</translation>
</message>
<message>
<location filename="src/pages.cpp" line="563"/>
<source>No set has been imported.</source>
<translation>아무 확장판도 불러오지 못했습니다.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="574"/>
<source>Sets imported</source>
<translation>확장판 불러오기 완료</translation>
</message>
<message>
<location filename="src/pages.cpp" line="576"/>
<source>A cockatrice database file of %1 MB has been downloaded.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="579"/>
<source>The following sets have been found:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="582"/>
<source>Press &quot;Save&quot; to store the imported cards in the Cockatrice database.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="583"/>
<source>The card database will be saved at the following location:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="585"/>
<source>Save to a custom path (not recommended)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="587"/>
<source>&amp;Save</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="593"/>
<source>Import finished: %1 cards.</source>
<translation>총 %1장의 카드 불러오기 완료</translation>
</message>
<message>
<location filename="src/pages.cpp" line="596"/>
<source>%1: %2 cards imported</source>
<translation>%1에서 %2장의 카드 불러옴</translation>
</message>
<message>
<location filename="src/pages.cpp" line="605"/>
<source>Save card database</source>
<translation>카드 데이터베이스 저장</translation>
</message>
<message>
<location filename="src/pages.cpp" line="606"/>
<source>XML; card database (*.xml)</source>
<translation>카드 데이터베이스 XML 파일 (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="638"/>
<source>The file could not be saved to %1</source>
<translation>파일을 %1에 저장 할 수 없습니다.</translation>
</message>
</context>
<context>
<name>SimpleDownloadFilePage</name>
<message>
<location filename="src/pagetemplates.cpp" line="72"/>
<source>Load %1 file</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="82"/>
<source>%1 file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<location filename="src/pagetemplates.cpp" line="129"/>
<location filename="src/pagetemplates.cpp" line="134"/>
<location filename="src/pagetemplates.cpp" line="168"/>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>Error</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<source>The provided URL is not valid: </source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="115"/>
<source>Downloading (0MB)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="129"/>
<source>Please choose a file.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="134"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="159"/>
<source>Downloading (%1MB)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="168"/>
<source>Network error: %1.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>The file could not be saved to %1</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>UnZip</name>
<message>
<location filename="src/zip/unzip.cpp" line="1175"/>
<source>ZIP operation completed successfully.</source>
<translation>압축파일 작업을 성공적으로 완료하였습니다.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1176"/>
<source>Failed to initialize or load zlib library.</source>
<translation>zlib 라이브러리를 초기화하거나 불러올 수 없습니다.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1177"/>
<source>zlib library error.</source>
<translation>zlib 라이브러리 오류.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1178"/>
<source>Unable to create or open file.</source>
<translation>파일을 만들거나 열 수 없습니다.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1179"/>
<source>Partially corrupted archive. Some files might be extracted.</source>
<translation>압축파일의 일부가 손상되었습니다. 몇몇 파일은 압축이 풀렸을 수도 있습니다.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1180"/>
<source>Corrupted archive.</source>
<translation>압축파일이 손상되었습니다.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1181"/>
<source>Wrong password.</source>
<translation>비밀번호가 틀렸습니다.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1182"/>
<source>No archive has been created yet.</source>
<translation>압축파일이 아직 생성되지 않았습니다.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1183"/>
<source>File or directory does not exist.</source>
<translation>파일이나 디렉토리가 존재하지 않습니다.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1184"/>
<source>File read error.</source>
<translation>파일 읽기 오류.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1185"/>
<source>File write error.</source>
<translation>파일 쓰기 오류.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1186"/>
<source>File seek error.</source>
<translation>파일 찾기 오류.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1187"/>
<source>Unable to create a directory.</source>
<translation>디렉토리를 생성할 수 없었습니다.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1188"/>
<source>Invalid device.</source>
<translation>잘못된 장치입니다.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1189"/>
<source>Invalid or incompatible zip archive.</source>
<translation>잘못되거나 지원하지 않는 압축파일입니다.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1190"/>
<source>Inconsistent headers. Archive might be corrupted.</source>
<translation>헤더가 손상되었습니다. 압축 파일이 손상됐을 가능성이 있습니다.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1194"/>
<source>Unknown error.</source>
<translation>알 수 없는 오류.</translation>
</message>
</context>
<context>
<name>Zip</name>
<message>
<location filename="src/zip/zip.cpp" line="1604"/>
<source>ZIP operation completed successfully.</source>
<translation>압축파일 작업을 성공적으로 완료하였습니다.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1605"/>
<source>Failed to initialize or load zlib library.</source>
<translation>zlib 라이브러리를 초기화하거나 불러올 수 없습니다.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1606"/>
<source>zlib library error.</source>
<translation>zlib 라이브러리 오류.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1607"/>
<source>Unable to create or open file.</source>
<translation>파일을 만들거나 열 수 없습니다.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1608"/>
<source>No archive has been created yet.</source>
<translation>압축파일이 아직 생성되지 않았습니다.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1609"/>
<source>File or directory does not exist.</source>
<translation>파일이나 디렉토리가 존재하지 않습니다.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1610"/>
<source>File read error.</source>
<translation>파일 읽기 오류.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1611"/>
<source>File write error.</source>
<translation>파일 쓰기 오류.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1612"/>
<source>File seek error.</source>
<translation>파일 찾기 오류.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1616"/>
<source>Unknown error.</source>
<translation>알 수 없는 오류.</translation>
</message>
</context>
<context>
<name>i18n</name>
<message>
<location filename="src/oraclewizard.cpp" line="22"/>
<source>English</source>
<translation>한국어 (Korean)</translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="src/main.cpp" line="62"/>
<source>Only run in spoiler mode</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/main.cpp" line="63"/>
<source>Run in no-confirm background mode</source>
<translation type="unfinished"/>
</message>
</context>
</TS>
+608
View File
@@ -0,0 +1,608 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS version="2.1" language="nb">
<context>
<name>IntroPage</name>
<message>
<location filename="src/pages.cpp" line="127"/>
<source>Introduction</source>
<translation>Introduksjon</translation>
</message>
<message>
<location filename="src/pages.cpp" line="128"/>
<source>This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="130"/>
<source>Interface language:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="131"/>
<source>Version:</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>LoadSetsPage</name>
<message>
<location filename="src/pages.cpp" line="200"/>
<source>Source selection</source>
<translation>Kilde valg</translation>
</message>
<message>
<location filename="src/pages.cpp" line="201"/>
<source>Please specify a compatible 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.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="205"/>
<source>Download URL:</source>
<translation>Nedlastings URL</translation>
</message>
<message>
<location filename="src/pages.cpp" line="206"/>
<source>Local file:</source>
<translation>Lokal fil</translation>
</message>
<message>
<location filename="src/pages.cpp" line="207"/>
<source>Restore default URL</source>
<translation>Gjenopprett standard URL</translation>
</message>
<message>
<location filename="src/pages.cpp" line="208"/>
<source>Choose file...</source>
<translation>Velg fil...</translation>
</message>
<message>
<location filename="src/pages.cpp" line="218"/>
<source>Load sets file</source>
<translation>Last set fil...</translation>
</message>
<message>
<location filename="src/pages.cpp" line="228"/>
<source>Sets file (%1)</source>
<oldsource>Sets JSON file (%1)</oldsource>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<location filename="src/pages.cpp" line="277"/>
<location filename="src/pages.cpp" line="282"/>
<location filename="src/pages.cpp" line="354"/>
<location filename="src/pages.cpp" line="485"/>
<location filename="src/pages.cpp" line="498"/>
<location filename="src/pages.cpp" line="519"/>
<source>Error</source>
<translation>Feil</translation>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<source>The provided URL is not valid.</source>
<translation>URL du anga er ikke gyldig.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="262"/>
<source>Downloading (0MB)</source>
<translation>Laster ned (0MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="277"/>
<source>Please choose a file.</source>
<translation>Vennligst velg en fil</translation>
</message>
<message>
<location filename="src/pages.cpp" line="282"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation>Kunne ikke åpme &apos;%1&apos;</translation>
</message>
<message>
<location filename="src/pages.cpp" line="345"/>
<source>Downloading (%1MB)</source>
<translation>Laster ned (%1MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="354"/>
<source>Network error: %1.</source>
<translation>Nettverks feil: %1</translation>
</message>
<message>
<location filename="src/pages.cpp" line="392"/>
<source>Parsing file</source>
<translation>Tolker fil.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="414"/>
<source>Xz extraction failed.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="421"/>
<source>Sorry, this version of Oracle does not support xz compressed files.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="441"/>
<source>Failed to open Zip archive: %1.</source>
<translation>Kunne ikke åpne Zip Arkiv: %1</translation>
</message>
<message>
<location filename="src/pages.cpp" line="446"/>
<source>Zip extraction failed: the Zip archive doesn&apos;t contain exactly one file.</source>
<translation>Zip ekstraksjon feilet: Zip arkivet inneholder ikke nøyaktig en fil</translation>
</message>
<message>
<location filename="src/pages.cpp" line="454"/>
<source>Zip extraction failed: %1.</source>
<translation>Zip ekstraksjon feilet: %1</translation>
</message>
<message>
<location filename="src/pages.cpp" line="462"/>
<source>Sorry, this version of Oracle does not support zipped files.</source>
<translation>Beklager, denne versjonen av Oracle støtter ikke Zip filer.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="485"/>
<source>Failed to interpret downloaded data.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="498"/>
<source>Do you want to download the uncompressed file instead?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="520"/>
<source>The file was retrieved successfully, but it does not contain any sets data.</source>
<translation>Filen ble hentet riktig, men den inneholder ikke noe set data</translation>
</message>
</context>
<context>
<name>LoadSpoilersPage</name>
<message>
<location filename="src/pages.cpp" line="716"/>
<source>Save spoiler database</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="721"/>
<source>XML; spoiler database (*.xml)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="726"/>
<source>spoiler</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="731"/>
<source>Spoilers import</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="732"/>
<source>Please specify a compatible source for spoiler data.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="734"/>
<source>Download URL:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="735"/>
<source>Local file:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="736"/>
<source>Restore default URL</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="737"/>
<source>Choose file...</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="739"/>
<source>The spoiler database will be saved at the following location:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="741"/>
<source>Save to a custom path (not recommended)</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>LoadTokensPage</name>
<message>
<location filename="src/pages.cpp" line="671"/>
<source>Save token database</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="676"/>
<source>XML; token database (*.xml)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="681"/>
<source>tokens</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="686"/>
<source>Tokens import</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="687"/>
<source>Please specify a compatible source for token data.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="689"/>
<source>Download URL:</source>
<translation>Nedlastings URL</translation>
</message>
<message>
<location filename="src/pages.cpp" line="690"/>
<source>Local file:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="691"/>
<source>Restore default URL</source>
<translation>Gjenopprett standard URL</translation>
</message>
<message>
<location filename="src/pages.cpp" line="692"/>
<source>Choose file...</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="694"/>
<source>The token database will be saved at the following location:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="696"/>
<source>Save to a custom path (not recommended)</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>OracleImporter</name>
<message>
<location filename="src/oracleimporter.cpp" line="542"/>
<source>Dummy set containing tokens</source>
<translation>Dummy sett som inneholder tokens</translation>
</message>
</context>
<context>
<name>OracleWizard</name>
<message>
<location filename="src/oraclewizard.cpp" line="101"/>
<source>Oracle Importer</source>
<translation>Oracle importerer</translation>
</message>
</context>
<context>
<name>OutroPage</name>
<message>
<location filename="src/pages.cpp" line="136"/>
<source>Finished</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="137"/>
<source>The wizard has finished.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="138"/>
<source>You can now start using Cockatrice with the newly updated cards.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="139"/>
<source>If the card databases don&apos;t reload automatically, restart the Cockatrice client.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>SaveSetsPage</name>
<message>
<location filename="src/pages.cpp" line="563"/>
<location filename="src/pages.cpp" line="638"/>
<source>Error</source>
<translation>Feil</translation>
</message>
<message>
<location filename="src/pages.cpp" line="563"/>
<source>No set has been imported.</source>
<translation>Ingen set har blitt importert.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="574"/>
<source>Sets imported</source>
<translation>Set importert</translation>
</message>
<message>
<location filename="src/pages.cpp" line="576"/>
<source>A cockatrice database file of %1 MB has been downloaded.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="579"/>
<source>The following sets have been found:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="582"/>
<source>Press &quot;Save&quot; to store the imported cards in the Cockatrice database.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="583"/>
<source>The card database will be saved at the following location:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="585"/>
<source>Save to a custom path (not recommended)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="587"/>
<source>&amp;Save</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="593"/>
<source>Import finished: %1 cards.</source>
<translation>Importering fullført: %1 kort.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="596"/>
<source>%1: %2 cards imported</source>
<translation>%1: %2 kort importert.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="605"/>
<source>Save card database</source>
<translation>Lagre kort database.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="606"/>
<source>XML; card database (*.xml)</source>
<translation>XML; kort database (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="638"/>
<source>The file could not be saved to %1</source>
<translation>Filen kunne ikke lagres til %1</translation>
</message>
</context>
<context>
<name>SimpleDownloadFilePage</name>
<message>
<location filename="src/pagetemplates.cpp" line="72"/>
<source>Load %1 file</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="82"/>
<source>%1 file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<location filename="src/pagetemplates.cpp" line="129"/>
<location filename="src/pagetemplates.cpp" line="134"/>
<location filename="src/pagetemplates.cpp" line="168"/>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>Error</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<source>The provided URL is not valid: </source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="115"/>
<source>Downloading (0MB)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="129"/>
<source>Please choose a file.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="134"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="159"/>
<source>Downloading (%1MB)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="168"/>
<source>Network error: %1.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>The file could not be saved to %1</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>UnZip</name>
<message>
<location filename="src/zip/unzip.cpp" line="1175"/>
<source>ZIP operation completed successfully.</source>
<translation>Zip operasjonen fullført.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1176"/>
<source>Failed to initialize or load zlib library.</source>
<translation>Kunne ikke initialisere eller laste zlib mappen.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1177"/>
<source>zlib library error.</source>
<translation>Feil med zlib mappen</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1178"/>
<source>Unable to create or open file.</source>
<translation>Kunne ikke lage eller åpne fil.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1179"/>
<source>Partially corrupted archive. Some files might be extracted.</source>
<translation>Delvis korrupt arkiv. Noen filer kunne ikke bli ekstraktert.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1180"/>
<source>Corrupted archive.</source>
<translation>Korrupt arkiv.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1181"/>
<source>Wrong password.</source>
<translation>Feil passord</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1182"/>
<source>No archive has been created yet.</source>
<translation>Det har ikke blitt laget noe arkiv enda.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1183"/>
<source>File or directory does not exist.</source>
<translation>Fil eller katalog eksisterer ikke.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1184"/>
<source>File read error.</source>
<translation>Kunne ikke lese filen.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1185"/>
<source>File write error.</source>
<translation>Kunne ikke skrive fil.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1186"/>
<source>File seek error.</source>
<translation>Kunne ikke finne filen.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1187"/>
<source>Unable to create a directory.</source>
<translation>Kunne ikke lage katalog.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1188"/>
<source>Invalid device.</source>
<translation>Ugyldig apparat.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1189"/>
<source>Invalid or incompatible zip archive.</source>
<translation>Ugyldig eller inkompatibelt zip akriv.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1190"/>
<source>Inconsistent headers. Archive might be corrupted.</source>
<translation>Ukonsistente overskrifter. Arkivet kan være korrupt.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1194"/>
<source>Unknown error.</source>
<translation>Ukjent feil.</translation>
</message>
</context>
<context>
<name>Zip</name>
<message>
<location filename="src/zip/zip.cpp" line="1604"/>
<source>ZIP operation completed successfully.</source>
<translation>Zip operasjonen fullført.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1605"/>
<source>Failed to initialize or load zlib library.</source>
<translation>Kunne ikke initialisere eller laste zlib biblioteket. </translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1606"/>
<source>zlib library error.</source>
<translation>Feil med zlib mappen </translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1607"/>
<source>Unable to create or open file.</source>
<translation>Kunne ikke lage eller åpne fil. </translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1608"/>
<source>No archive has been created yet.</source>
<translation>Det har ikke blitt laget noe arkiv enda. </translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1609"/>
<source>File or directory does not exist.</source>
<translation>Fil eller katalog eksisterer ikke. </translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1610"/>
<source>File read error.</source>
<translation>Kunne ikke lese filen. </translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1611"/>
<source>File write error.</source>
<translation>Kunne ikke skrive fil. </translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1612"/>
<source>File seek error.</source>
<translation>Kunne ikke finne filen. </translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1616"/>
<source>Unknown error.</source>
<translation>Ukjent feil. </translation>
</message>
</context>
<context>
<name>i18n</name>
<message>
<location filename="src/oraclewizard.cpp" line="22"/>
<source>English</source>
<translation>Norsk Bokmål (Norwegian Bokmål)</translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="src/main.cpp" line="62"/>
<source>Only run in spoiler mode</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/main.cpp" line="63"/>
<source>Run in no-confirm background mode</source>
<translation type="unfinished"/>
</message>
</context>
</TS>
+608
View File
@@ -0,0 +1,608 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS version="2.1" language="nl">
<context>
<name>IntroPage</name>
<message>
<location filename="src/pages.cpp" line="127"/>
<source>Introduction</source>
<translation>Introductie</translation>
</message>
<message>
<location filename="src/pages.cpp" line="128"/>
<source>This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice.</source>
<translation>Deze wizard importeert de lijst met sets, kaarten en tokens die door Cockatrice zullen worden gebruikt.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="130"/>
<source>Interface language:</source>
<translation>Interface taal:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="131"/>
<source>Version:</source>
<translation>Versie:</translation>
</message>
</context>
<context>
<name>LoadSetsPage</name>
<message>
<location filename="src/pages.cpp" line="200"/>
<source>Source selection</source>
<translation>Bron selectie</translation>
</message>
<message>
<location filename="src/pages.cpp" line="201"/>
<source>Please specify a compatible 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.</source>
<translation>Gelieve een compatibele bron te vermelden voor de lijst van sets en kaarten. U kunt een URL-adres opgeven dat wordt gedownload of een bestaand bestand van uw computer gebruiken.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="205"/>
<source>Download URL:</source>
<translation>Download URL:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="206"/>
<source>Local file:</source>
<translation>Lokaal bestand</translation>
</message>
<message>
<location filename="src/pages.cpp" line="207"/>
<source>Restore default URL</source>
<translation>Herstel standaard URL</translation>
</message>
<message>
<location filename="src/pages.cpp" line="208"/>
<source>Choose file...</source>
<translation>Bestand kiezen...</translation>
</message>
<message>
<location filename="src/pages.cpp" line="218"/>
<source>Load sets file</source>
<translation>Bestand laden</translation>
</message>
<message>
<location filename="src/pages.cpp" line="228"/>
<source>Sets file (%1)</source>
<oldsource>Sets JSON file (%1)</oldsource>
<translation>Sets bestand (%1)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<location filename="src/pages.cpp" line="277"/>
<location filename="src/pages.cpp" line="282"/>
<location filename="src/pages.cpp" line="354"/>
<location filename="src/pages.cpp" line="485"/>
<location filename="src/pages.cpp" line="498"/>
<location filename="src/pages.cpp" line="519"/>
<source>Error</source>
<translation>Fout</translation>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<source>The provided URL is not valid.</source>
<translation>De ingevoerde URL is niet geldig.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="262"/>
<source>Downloading (0MB)</source>
<translation>Downloaden (0MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="277"/>
<source>Please choose a file.</source>
<translation>Gelieve een bestand te kiezen.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="282"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation>Bestand &apos;%1&apos; kan niet geopend worden.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="345"/>
<source>Downloading (%1MB)</source>
<translation>Downloaden (%1MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="354"/>
<source>Network error: %1.</source>
<translation>Netwerk fout: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="392"/>
<source>Parsing file</source>
<translation>Parsen van bestand</translation>
</message>
<message>
<location filename="src/pages.cpp" line="414"/>
<source>Xz extraction failed.</source>
<translation>Xz extractie mislukt.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="421"/>
<source>Sorry, this version of Oracle does not support xz compressed files.</source>
<translation>Sorry, deze versie van Oracle ondersteunt geen xz gecomprimeerde bestanden.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="441"/>
<source>Failed to open Zip archive: %1.</source>
<translation>Zip archief kan niet geopend worden: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="446"/>
<source>Zip extraction failed: the Zip archive doesn&apos;t contain exactly one file.</source>
<translation>Uitpakken van Zip niet gelukt: het archief moet precies één bestand bevatten.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="454"/>
<source>Zip extraction failed: %1.</source>
<translation>Uitpakken van Zip niet gelukt: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="462"/>
<source>Sorry, this version of Oracle does not support zipped files.</source>
<translation>Sorry, deze versie van Oracle ondersteunt geen gecomprimeerde bestanden.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="485"/>
<source>Failed to interpret downloaded data.</source>
<translation>Lezen van gedownloade data mislukt.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="498"/>
<source>Do you want to download the uncompressed file instead?</source>
<translation>Wilt u het ongecomprimeerde bestand downloaden?</translation>
</message>
<message>
<location filename="src/pages.cpp" line="520"/>
<source>The file was retrieved successfully, but it does not contain any sets data.</source>
<translation>Het bestand is succesvol binnengehaald, maar bevat geen set data.</translation>
</message>
</context>
<context>
<name>LoadSpoilersPage</name>
<message>
<location filename="src/pages.cpp" line="716"/>
<source>Save spoiler database</source>
<translation>Opslaan spoiler database</translation>
</message>
<message>
<location filename="src/pages.cpp" line="721"/>
<source>XML; spoiler database (*.xml)</source>
<translation>XML; spoiler database (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="726"/>
<source>spoiler</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="731"/>
<source>Spoilers import</source>
<translation>Spoilers import</translation>
</message>
<message>
<location filename="src/pages.cpp" line="732"/>
<source>Please specify a compatible source for spoiler data.</source>
<translation>Gelieve een compatibele bron voor spoilergegevens te specificeren.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="734"/>
<source>Download URL:</source>
<translation>Download URL:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="735"/>
<source>Local file:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="736"/>
<source>Restore default URL</source>
<translation>Herstel standaard URL</translation>
</message>
<message>
<location filename="src/pages.cpp" line="737"/>
<source>Choose file...</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="739"/>
<source>The spoiler database will be saved at the following location:</source>
<translation>De spoiler database wordt op de volgende locatie opgeslagen:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="741"/>
<source>Save to a custom path (not recommended)</source>
<translation>Opslaan naar een aangepaste locatie (niet aanbevolen)</translation>
</message>
</context>
<context>
<name>LoadTokensPage</name>
<message>
<location filename="src/pages.cpp" line="671"/>
<source>Save token database</source>
<translation>token database opslaan</translation>
</message>
<message>
<location filename="src/pages.cpp" line="676"/>
<source>XML; token database (*.xml)</source>
<translation>XML; token database (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="681"/>
<source>tokens</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="686"/>
<source>Tokens import</source>
<translation>Tokens import</translation>
</message>
<message>
<location filename="src/pages.cpp" line="687"/>
<source>Please specify a compatible source for token data.</source>
<translation>Gelieve een compatibele bron voor tokengegevens op te geven.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="689"/>
<source>Download URL:</source>
<translation>Download URL:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="690"/>
<source>Local file:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="691"/>
<source>Restore default URL</source>
<translation>Herstel standaard URL</translation>
</message>
<message>
<location filename="src/pages.cpp" line="692"/>
<source>Choose file...</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="694"/>
<source>The token database will be saved at the following location:</source>
<translation>De token database wordt op de volgende locatie opgeslagen:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="696"/>
<source>Save to a custom path (not recommended)</source>
<translation>Opslaan naar een aangepaste locatie (niet aanbevolen)</translation>
</message>
</context>
<context>
<name>OracleImporter</name>
<message>
<location filename="src/oracleimporter.cpp" line="542"/>
<source>Dummy set containing tokens</source>
<translation>Token voorbeeldset</translation>
</message>
</context>
<context>
<name>OracleWizard</name>
<message>
<location filename="src/oraclewizard.cpp" line="101"/>
<source>Oracle Importer</source>
<translation>Oracle importer</translation>
</message>
</context>
<context>
<name>OutroPage</name>
<message>
<location filename="src/pages.cpp" line="136"/>
<source>Finished</source>
<translation>Klaar</translation>
</message>
<message>
<location filename="src/pages.cpp" line="137"/>
<source>The wizard has finished.</source>
<translation>De wizard is klaar.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="138"/>
<source>You can now start using Cockatrice with the newly updated cards.</source>
<translation>U kunt nu beginnen met het gebruik van Cockatrice met de nieuw bijgewerkte kaarten.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="139"/>
<source>If the card databases don&apos;t reload automatically, restart the Cockatrice client.</source>
<translation>Als de kaartendatabases niet automatisch herladen, start dan de Cockatrice client opnieuw op.</translation>
</message>
</context>
<context>
<name>SaveSetsPage</name>
<message>
<location filename="src/pages.cpp" line="563"/>
<location filename="src/pages.cpp" line="638"/>
<source>Error</source>
<translation>Fout</translation>
</message>
<message>
<location filename="src/pages.cpp" line="563"/>
<source>No set has been imported.</source>
<translation>Er zijn geen sets geïmporteerd.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="574"/>
<source>Sets imported</source>
<translation>Sets geïmporteerd</translation>
</message>
<message>
<location filename="src/pages.cpp" line="576"/>
<source>A cockatrice database file of %1 MB has been downloaded.</source>
<translation>Een cockatrice database bestand van %1 MB is gedownload.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="579"/>
<source>The following sets have been found:</source>
<translation>De volgende sets zijn gevonden:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="582"/>
<source>Press &quot;Save&quot; to store the imported cards in the Cockatrice database.</source>
<translation>Druk op &quot;Opslaan&quot; om de geïmporteerde kaarten op te slaan in de Cockatrice database.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="583"/>
<source>The card database will be saved at the following location:</source>
<translation>De kaartendatabase wordt op de volgende locatie opgeslagen:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="585"/>
<source>Save to a custom path (not recommended)</source>
<translation>Opslaan naar een aangepaste locatie (niet aanbevolen)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="587"/>
<source>&amp;Save</source>
<translation>&amp;Opslaan</translation>
</message>
<message>
<location filename="src/pages.cpp" line="593"/>
<source>Import finished: %1 cards.</source>
<translation>Import klaar: %1 kaarten.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="596"/>
<source>%1: %2 cards imported</source>
<translation>%1: %2 kaarten geïmporteerd</translation>
</message>
<message>
<location filename="src/pages.cpp" line="605"/>
<source>Save card database</source>
<translation>Kaartendatabase opslaan</translation>
</message>
<message>
<location filename="src/pages.cpp" line="606"/>
<source>XML; card database (*.xml)</source>
<translation>XML; kaart database (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="638"/>
<source>The file could not be saved to %1</source>
<translation>Het bestand kon niet worden opgeslagen in %1</translation>
</message>
</context>
<context>
<name>SimpleDownloadFilePage</name>
<message>
<location filename="src/pagetemplates.cpp" line="72"/>
<source>Load %1 file</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="82"/>
<source>%1 file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<location filename="src/pagetemplates.cpp" line="129"/>
<location filename="src/pagetemplates.cpp" line="134"/>
<location filename="src/pagetemplates.cpp" line="168"/>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>Error</source>
<translation>Fout</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<source>The provided URL is not valid: </source>
<translation>De ingevoerde URL is niet geldig:</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="115"/>
<source>Downloading (0MB)</source>
<translation>Downloaden (0MB)</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="129"/>
<source>Please choose a file.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="134"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="159"/>
<source>Downloading (%1MB)</source>
<translation>Downloaden (%1MB)</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="168"/>
<source>Network error: %1.</source>
<translation>Netwerk fout: %1.</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>The file could not be saved to %1</source>
<translation>Het bestand kon niet worden opgeslagen naar %1</translation>
</message>
</context>
<context>
<name>UnZip</name>
<message>
<location filename="src/zip/unzip.cpp" line="1175"/>
<source>ZIP operation completed successfully.</source>
<translation>ZIP taak succesvol voltooid.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1176"/>
<source>Failed to initialize or load zlib library.</source>
<translation>Zlib library kon niet geladen of geïnitialiseerd worden.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1177"/>
<source>zlib library error.</source>
<translation>Zlib library fout.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1178"/>
<source>Unable to create or open file.</source>
<translation>Kan het bestand niet openen of aanmaken.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1179"/>
<source>Partially corrupted archive. Some files might be extracted.</source>
<translation>Gedeeltelijk beschadigd archief. Sommige bestanden kunnen mogelijk uitgepakt worden.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1180"/>
<source>Corrupted archive.</source>
<translation>Beschadigd archief.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1181"/>
<source>Wrong password.</source>
<translation>Verkeerd wachtwoord.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1182"/>
<source>No archive has been created yet.</source>
<translation>Er is nog geen archief gemaakt.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1183"/>
<source>File or directory does not exist.</source>
<translation>Bestand of map bestaat niet.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1184"/>
<source>File read error.</source>
<translation>Bestand leesfout.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1185"/>
<source>File write error.</source>
<translation>Bestand schrijffout.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1186"/>
<source>File seek error.</source>
<translation>Bestand zoekfout.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1187"/>
<source>Unable to create a directory.</source>
<translation>Map kon niet aangemaakt worden.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1188"/>
<source>Invalid device.</source>
<translation>Ongeldig apparaat.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1189"/>
<source>Invalid or incompatible zip archive.</source>
<translation>Ongeldig of incompatibel zip archief.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1190"/>
<source>Inconsistent headers. Archive might be corrupted.</source>
<translation>Inconsistente headers. Archief is mogelijk beschadigd.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1194"/>
<source>Unknown error.</source>
<translation>Onbekende fout.</translation>
</message>
</context>
<context>
<name>Zip</name>
<message>
<location filename="src/zip/zip.cpp" line="1604"/>
<source>ZIP operation completed successfully.</source>
<translation>Zip handeling succesvol voltooid.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1605"/>
<source>Failed to initialize or load zlib library.</source>
<translation>Initialisatie van zlib library niet gelukt.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1606"/>
<source>zlib library error.</source>
<translation>Zlib library fout.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1607"/>
<source>Unable to create or open file.</source>
<translation>Kon geen bestand openen of aanmaken.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1608"/>
<source>No archive has been created yet.</source>
<translation>Er is nog geen archief gemaakt.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1609"/>
<source>File or directory does not exist.</source>
<translation>Bestand of map bestaat niet.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1610"/>
<source>File read error.</source>
<translation>Bestand leesfout.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1611"/>
<source>File write error.</source>
<translation>Bestand schrijffout.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1612"/>
<source>File seek error.</source>
<translation>Bestand zoekfout.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1616"/>
<source>Unknown error.</source>
<translation>Onbekende fout.</translation>
</message>
</context>
<context>
<name>i18n</name>
<message>
<location filename="src/oraclewizard.cpp" line="22"/>
<source>English</source>
<translation>Nederlands (Dutch)</translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="src/main.cpp" line="62"/>
<source>Only run in spoiler mode</source>
<translation>Alleen in spoiler-modus werken</translation>
</message>
<message>
<location filename="src/main.cpp" line="63"/>
<source>Run in no-confirm background mode</source>
<translation>Uitvoeren in achtergrondmodus zonder bevestiging</translation>
</message>
</context>
</TS>
+608
View File
@@ -0,0 +1,608 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS version="2.1" language="pl">
<context>
<name>IntroPage</name>
<message>
<location filename="src/pages.cpp" line="127"/>
<source>Introduction</source>
<translation>Wprowadzenie</translation>
</message>
<message>
<location filename="src/pages.cpp" line="128"/>
<source>This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice.</source>
<translation>Ten kreator zaimportuje listę dodatków, kart oraz tokenów które zostaną użyte przez Cockatrice.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="130"/>
<source>Interface language:</source>
<translation>Język interfejsu:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="131"/>
<source>Version:</source>
<translation>Wersja:</translation>
</message>
</context>
<context>
<name>LoadSetsPage</name>
<message>
<location filename="src/pages.cpp" line="200"/>
<source>Source selection</source>
<translation>Wybór źródła</translation>
</message>
<message>
<location filename="src/pages.cpp" line="201"/>
<source>Please specify a compatible 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.</source>
<translation>Proszę podać źródło listy edycji i kart. Można podać adres URL, z którego zostanie pobrana, lub istniejący plik na komputerze.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="205"/>
<source>Download URL:</source>
<translation>Pobierz URL</translation>
</message>
<message>
<location filename="src/pages.cpp" line="206"/>
<source>Local file:</source>
<translation>Plik lokalny:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="207"/>
<source>Restore default URL</source>
<translation>Przywróć domyślny URL</translation>
</message>
<message>
<location filename="src/pages.cpp" line="208"/>
<source>Choose file...</source>
<translation>Wybierz plik…</translation>
</message>
<message>
<location filename="src/pages.cpp" line="218"/>
<source>Load sets file</source>
<translation>Wczytaj listę dodatków</translation>
</message>
<message>
<location filename="src/pages.cpp" line="228"/>
<source>Sets file (%1)</source>
<oldsource>Sets JSON file (%1)</oldsource>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<location filename="src/pages.cpp" line="277"/>
<location filename="src/pages.cpp" line="282"/>
<location filename="src/pages.cpp" line="354"/>
<location filename="src/pages.cpp" line="485"/>
<location filename="src/pages.cpp" line="498"/>
<location filename="src/pages.cpp" line="519"/>
<source>Error</source>
<translation>Błąd</translation>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<source>The provided URL is not valid.</source>
<translation>Podano nieprawidłowy URL.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="262"/>
<source>Downloading (0MB)</source>
<translation>Pobieranie (0MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="277"/>
<source>Please choose a file.</source>
<translation>Proszę wybrać plik.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="282"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation>Nie można otworzyć pliku &apos;%1&apos;.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="345"/>
<source>Downloading (%1MB)</source>
<translation>Pobieranie (%1MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="354"/>
<source>Network error: %1.</source>
<translation>Błąd sieci: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="392"/>
<source>Parsing file</source>
<translation>Analizowanie pliku</translation>
</message>
<message>
<location filename="src/pages.cpp" line="414"/>
<source>Xz extraction failed.</source>
<translation>Rozpakowanie XZ nie udało się.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="421"/>
<source>Sorry, this version of Oracle does not support xz compressed files.</source>
<translation>Przepraszamy, ta wersja Oracle nie obsługuje plików spakowanych w archiwum xz.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="441"/>
<source>Failed to open Zip archive: %1.</source>
<translation>Otwieranie archiwum Zip zakończone niepowodzeniem: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="446"/>
<source>Zip extraction failed: the Zip archive doesn&apos;t contain exactly one file.</source>
<translation>Rozpakowanie pliku Zip nieudane: archiwum nie zawiera dokładnie jednego pliku.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="454"/>
<source>Zip extraction failed: %1.</source>
<translation>Rozpakowanie Zip nieudane: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="462"/>
<source>Sorry, this version of Oracle does not support zipped files.</source>
<translation>Przepraszamy, ta wersja Oracle nie obsługuje plików spakowanych w archiwum Zip.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="485"/>
<source>Failed to interpret downloaded data.</source>
<translation>Interpretacja pobranych danych nie udała się.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="498"/>
<source>Do you want to download the uncompressed file instead?</source>
<translation>Czy chcesz zamiast tego pobrać plik nieskompresowany?</translation>
</message>
<message>
<location filename="src/pages.cpp" line="520"/>
<source>The file was retrieved successfully, but it does not contain any sets data.</source>
<translation>Plik został pobrany z powodzeniem, ale nie zawiera informacji o dodatkach.</translation>
</message>
</context>
<context>
<name>LoadSpoilersPage</name>
<message>
<location filename="src/pages.cpp" line="716"/>
<source>Save spoiler database</source>
<translation>Zapisz bazę danych spoilerów.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="721"/>
<source>XML; spoiler database (*.xml)</source>
<translation>XML; baza danych spoilerów (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="726"/>
<source>spoiler</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="731"/>
<source>Spoilers import</source>
<translation>Import spoilerów</translation>
</message>
<message>
<location filename="src/pages.cpp" line="732"/>
<source>Please specify a compatible source for spoiler data.</source>
<translation>Proszę wybrać kompatybilne źródło danych ze spoilerami.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="734"/>
<source>Download URL:</source>
<translation>URL pobierania: </translation>
</message>
<message>
<location filename="src/pages.cpp" line="735"/>
<source>Local file:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="736"/>
<source>Restore default URL</source>
<translation>Przywróć domyślny URL</translation>
</message>
<message>
<location filename="src/pages.cpp" line="737"/>
<source>Choose file...</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="739"/>
<source>The spoiler database will be saved at the following location:</source>
<translation>Baza danych spoilerów zostanie zapisana w tym miejscu:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="741"/>
<source>Save to a custom path (not recommended)</source>
<translation>Zapisz do niestandardowej ścieżki (niezalecane)</translation>
</message>
</context>
<context>
<name>LoadTokensPage</name>
<message>
<location filename="src/pages.cpp" line="671"/>
<source>Save token database</source>
<translation>Zapisz bazę danych tokenów.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="676"/>
<source>XML; token database (*.xml)</source>
<translation>XML; baza danych tokenów (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="681"/>
<source>tokens</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="686"/>
<source>Tokens import</source>
<translation>Import tokenów</translation>
</message>
<message>
<location filename="src/pages.cpp" line="687"/>
<source>Please specify a compatible source for token data.</source>
<translation>Proszę wybrać kompatybilne źródło danych z tokenami.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="689"/>
<source>Download URL:</source>
<translation>Pobierz odnośnik:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="690"/>
<source>Local file:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="691"/>
<source>Restore default URL</source>
<translation>Przywróć domyślny URL</translation>
</message>
<message>
<location filename="src/pages.cpp" line="692"/>
<source>Choose file...</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="694"/>
<source>The token database will be saved at the following location:</source>
<translation>Baza danych tokenów zostanie zapisana w tym miejscu:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="696"/>
<source>Save to a custom path (not recommended)</source>
<translation>Zapisz do niestandardowej ścieżki (niezalecane)</translation>
</message>
</context>
<context>
<name>OracleImporter</name>
<message>
<location filename="src/oracleimporter.cpp" line="542"/>
<source>Dummy set containing tokens</source>
<translation>Dodatek-atrapa, zawierający tokeny.</translation>
</message>
</context>
<context>
<name>OracleWizard</name>
<message>
<location filename="src/oraclewizard.cpp" line="101"/>
<source>Oracle Importer</source>
<translation>Oracle – kreator importu</translation>
</message>
</context>
<context>
<name>OutroPage</name>
<message>
<location filename="src/pages.cpp" line="136"/>
<source>Finished</source>
<translation>Zakończone</translation>
</message>
<message>
<location filename="src/pages.cpp" line="137"/>
<source>The wizard has finished.</source>
<translation>Kreator zakończył swoją pracę.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="138"/>
<source>You can now start using Cockatrice with the newly updated cards.</source>
<translation>Możesz teraz korzystać z Cockatrice z nowo zaktualizowanymi kartami.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="139"/>
<source>If the card databases don&apos;t reload automatically, restart the Cockatrice client.</source>
<translation>Jeżeli bazy kart nie przeładują się automatycznie, zrestartuj klienta Cockatrice.</translation>
</message>
</context>
<context>
<name>SaveSetsPage</name>
<message>
<location filename="src/pages.cpp" line="563"/>
<location filename="src/pages.cpp" line="638"/>
<source>Error</source>
<translation>Błąd</translation>
</message>
<message>
<location filename="src/pages.cpp" line="563"/>
<source>No set has been imported.</source>
<translation>Nie zaimportowano żadnego dodatku.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="574"/>
<source>Sets imported</source>
<translation>Zaimportowane dodatki</translation>
</message>
<message>
<location filename="src/pages.cpp" line="576"/>
<source>A cockatrice database file of %1 MB has been downloaded.</source>
<translation>Baza danych Cockatrice mająca %1 MB została pobrana.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="579"/>
<source>The following sets have been found:</source>
<translation>Następujące dodatki zostały znalezione:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="582"/>
<source>Press &quot;Save&quot; to store the imported cards in the Cockatrice database.</source>
<translation>Kliknij &quot;Zapisz&quot; aby zapisać zaimportowane karty w bazie danych Cockatrice.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="583"/>
<source>The card database will be saved at the following location:</source>
<translation>Baza danych kart zostanie zapisana w tym miejscu:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="585"/>
<source>Save to a custom path (not recommended)</source>
<translation>Zapisz do niestandardowej ścieżki (niezalecane)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="587"/>
<source>&amp;Save</source>
<translation>Zapisz</translation>
</message>
<message>
<location filename="src/pages.cpp" line="593"/>
<source>Import finished: %1 cards.</source>
<translation>Import zakończony: %1 kart.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="596"/>
<source>%1: %2 cards imported</source>
<translation>%1: zaimportowano %2 kart</translation>
</message>
<message>
<location filename="src/pages.cpp" line="605"/>
<source>Save card database</source>
<translation>Zapisz bazę kart</translation>
</message>
<message>
<location filename="src/pages.cpp" line="606"/>
<source>XML; card database (*.xml)</source>
<translation>XML, baza kart (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="638"/>
<source>The file could not be saved to %1</source>
<translation>Plik nie mógł zostać zapisany do %1</translation>
</message>
</context>
<context>
<name>SimpleDownloadFilePage</name>
<message>
<location filename="src/pagetemplates.cpp" line="72"/>
<source>Load %1 file</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="82"/>
<source>%1 file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<location filename="src/pagetemplates.cpp" line="129"/>
<location filename="src/pagetemplates.cpp" line="134"/>
<location filename="src/pagetemplates.cpp" line="168"/>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>Error</source>
<translation>Błąd</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<source>The provided URL is not valid: </source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="115"/>
<source>Downloading (0MB)</source>
<translation>Pobieranie (0MB)</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="129"/>
<source>Please choose a file.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="134"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="159"/>
<source>Downloading (%1MB)</source>
<translation>Pobieranie (%1MB)</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="168"/>
<source>Network error: %1.</source>
<translation>Błąd sieci: %1.</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>The file could not be saved to %1</source>
<translation>Plik nie mógł zostać zapisany do %1</translation>
</message>
</context>
<context>
<name>UnZip</name>
<message>
<location filename="src/zip/unzip.cpp" line="1175"/>
<source>ZIP operation completed successfully.</source>
<translation>Operacja ZIP zakończona powodzeniem.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1176"/>
<source>Failed to initialize or load zlib library.</source>
<translation>Nieudana inicjalizacja lub załadowanie biblioteki zlib.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1177"/>
<source>zlib library error.</source>
<translation>Bląd biblioteki zlib.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1178"/>
<source>Unable to create or open file.</source>
<translation>Nie można utworzyć lub otworzyć pliku.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1179"/>
<source>Partially corrupted archive. Some files might be extracted.</source>
<translation>Archiwum częściowo uszkodzone. Część plików mogła zostać wypakowana.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1180"/>
<source>Corrupted archive.</source>
<translation>Archiwum uszkodzone.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1181"/>
<source>Wrong password.</source>
<translation>Nieprawidłowe hasło.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1182"/>
<source>No archive has been created yet.</source>
<translation>Nie utworzono jeszcze archiwum.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1183"/>
<source>File or directory does not exist.</source>
<translation>Katalog lub plik nie istnieją.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1184"/>
<source>File read error.</source>
<translation>Błąd odczytu pliku.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1185"/>
<source>File write error.</source>
<translation>Błąd zapisu pliku.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1186"/>
<source>File seek error.</source>
<translation>Błąd wyszukania w czasie odczytu pliku.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1187"/>
<source>Unable to create a directory.</source>
<translation>Nie można utworzyć katalogu.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1188"/>
<source>Invalid device.</source>
<translation>Nieprawidłowe urządzenie.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1189"/>
<source>Invalid or incompatible zip archive.</source>
<translation>Nieprawidłowe lub niezgodne archiwum zip.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1190"/>
<source>Inconsistent headers. Archive might be corrupted.</source>
<translation>Niespójne nagłówki. Archiwum może być uszkodzone.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1194"/>
<source>Unknown error.</source>
<translation>Nieznany błąd.</translation>
</message>
</context>
<context>
<name>Zip</name>
<message>
<location filename="src/zip/zip.cpp" line="1604"/>
<source>ZIP operation completed successfully.</source>
<translation>Operacja ZIP zakończona powodzeniem.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1605"/>
<source>Failed to initialize or load zlib library.</source>
<translation>Nieudana inicjalizacja lub załadowanie biblioteki zlib.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1606"/>
<source>zlib library error.</source>
<translation>Błąd biblioteki zlib.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1607"/>
<source>Unable to create or open file.</source>
<translation>Nie można utworzyć lub otworzyć pliku.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1608"/>
<source>No archive has been created yet.</source>
<translation>Nie utworzono jeszcze archiwum.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1609"/>
<source>File or directory does not exist.</source>
<translation>Katalog lub plik nie istnieją.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1610"/>
<source>File read error.</source>
<translation>Błąd odczytu pliku.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1611"/>
<source>File write error.</source>
<translation>Błąd zapisu pliku.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1612"/>
<source>File seek error.</source>
<translation>Błąd wyszukania w czasie odczytu pliku.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1616"/>
<source>Unknown error.</source>
<translation>Nieznany błąd.</translation>
</message>
</context>
<context>
<name>i18n</name>
<message>
<location filename="src/oraclewizard.cpp" line="22"/>
<source>English</source>
<translation>Polski (Polish)</translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="src/main.cpp" line="62"/>
<source>Only run in spoiler mode</source>
<translation>Tylko działaj w trybie spoilerów</translation>
</message>
<message>
<location filename="src/main.cpp" line="63"/>
<source>Run in no-confirm background mode</source>
<translation type="unfinished"/>
</message>
</context>
</TS>
+608
View File
@@ -0,0 +1,608 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS version="2.1" language="pt">
<context>
<name>IntroPage</name>
<message>
<location filename="src/pages.cpp" line="127"/>
<source>Introduction</source>
<translation>Introdução</translation>
</message>
<message>
<location filename="src/pages.cpp" line="128"/>
<source>This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="130"/>
<source>Interface language:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="131"/>
<source>Version:</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>LoadSetsPage</name>
<message>
<location filename="src/pages.cpp" line="200"/>
<source>Source selection</source>
<translation>Selecção da fonte</translation>
</message>
<message>
<location filename="src/pages.cpp" line="201"/>
<source>Please specify a compatible 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.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="205"/>
<source>Download URL:</source>
<translation>URL de download:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="206"/>
<source>Local file:</source>
<translation>Ficheiro local:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="207"/>
<source>Restore default URL</source>
<translation>URL para repor definições de origem</translation>
</message>
<message>
<location filename="src/pages.cpp" line="208"/>
<source>Choose file...</source>
<translation>Escolher ficheiro...</translation>
</message>
<message>
<location filename="src/pages.cpp" line="218"/>
<source>Load sets file</source>
<translation>Carregar ficheiro das edições</translation>
</message>
<message>
<location filename="src/pages.cpp" line="228"/>
<source>Sets file (%1)</source>
<oldsource>Sets JSON file (%1)</oldsource>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<location filename="src/pages.cpp" line="277"/>
<location filename="src/pages.cpp" line="282"/>
<location filename="src/pages.cpp" line="354"/>
<location filename="src/pages.cpp" line="485"/>
<location filename="src/pages.cpp" line="498"/>
<location filename="src/pages.cpp" line="519"/>
<source>Error</source>
<translation>Erro</translation>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<source>The provided URL is not valid.</source>
<translation>O URL fornecido não é válido.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="262"/>
<source>Downloading (0MB)</source>
<translation>A efectuar download (0MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="277"/>
<source>Please choose a file.</source>
<translation>Por favor escolha um ficheiro.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="282"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation>Impossível abrir ficheiro &apos;%1&apos;.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="345"/>
<source>Downloading (%1MB)</source>
<translation>A efectuar download (%1MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="354"/>
<source>Network error: %1.</source>
<translation>Erro da rede: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="392"/>
<source>Parsing file</source>
<translation>Ficheiro de análise</translation>
</message>
<message>
<location filename="src/pages.cpp" line="414"/>
<source>Xz extraction failed.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="421"/>
<source>Sorry, this version of Oracle does not support xz compressed files.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="441"/>
<source>Failed to open Zip archive: %1.</source>
<translation>Abrir archivo zip falhou: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="446"/>
<source>Zip extraction failed: the Zip archive doesn&apos;t contain exactly one file.</source>
<translation>Extracção do ZIP falhada: o arquivo ZIP não contem exactamente um ficheiro.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="454"/>
<source>Zip extraction failed: %1.</source>
<translation>Extração do Zip falhada: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="462"/>
<source>Sorry, this version of Oracle does not support zipped files.</source>
<translation>Pedimos desculpa, mas esta versão do Oracle não suporta ficheiros zipados.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="485"/>
<source>Failed to interpret downloaded data.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="498"/>
<source>Do you want to download the uncompressed file instead?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="520"/>
<source>The file was retrieved successfully, but it does not contain any sets data.</source>
<translation>O ficheiro foi recuperado com sucesso, mas não contem nenhum dado sobre expansões.</translation>
</message>
</context>
<context>
<name>LoadSpoilersPage</name>
<message>
<location filename="src/pages.cpp" line="716"/>
<source>Save spoiler database</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="721"/>
<source>XML; spoiler database (*.xml)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="726"/>
<source>spoiler</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="731"/>
<source>Spoilers import</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="732"/>
<source>Please specify a compatible source for spoiler data.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="734"/>
<source>Download URL:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="735"/>
<source>Local file:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="736"/>
<source>Restore default URL</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="737"/>
<source>Choose file...</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="739"/>
<source>The spoiler database will be saved at the following location:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="741"/>
<source>Save to a custom path (not recommended)</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>LoadTokensPage</name>
<message>
<location filename="src/pages.cpp" line="671"/>
<source>Save token database</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="676"/>
<source>XML; token database (*.xml)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="681"/>
<source>tokens</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="686"/>
<source>Tokens import</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="687"/>
<source>Please specify a compatible source for token data.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="689"/>
<source>Download URL:</source>
<translation>URL de download:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="690"/>
<source>Local file:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="691"/>
<source>Restore default URL</source>
<translation>URL para repor definições de origem</translation>
</message>
<message>
<location filename="src/pages.cpp" line="692"/>
<source>Choose file...</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="694"/>
<source>The token database will be saved at the following location:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="696"/>
<source>Save to a custom path (not recommended)</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>OracleImporter</name>
<message>
<location filename="src/oracleimporter.cpp" line="542"/>
<source>Dummy set containing tokens</source>
<translation>Set básico contendo fichas</translation>
</message>
</context>
<context>
<name>OracleWizard</name>
<message>
<location filename="src/oraclewizard.cpp" line="101"/>
<source>Oracle Importer</source>
<translation>Importar Oracle</translation>
</message>
</context>
<context>
<name>OutroPage</name>
<message>
<location filename="src/pages.cpp" line="136"/>
<source>Finished</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="137"/>
<source>The wizard has finished.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="138"/>
<source>You can now start using Cockatrice with the newly updated cards.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="139"/>
<source>If the card databases don&apos;t reload automatically, restart the Cockatrice client.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>SaveSetsPage</name>
<message>
<location filename="src/pages.cpp" line="563"/>
<location filename="src/pages.cpp" line="638"/>
<source>Error</source>
<translation>Erro</translation>
</message>
<message>
<location filename="src/pages.cpp" line="563"/>
<source>No set has been imported.</source>
<translation>Nenhuma expansão foi importada.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="574"/>
<source>Sets imported</source>
<translation>Edições importadas</translation>
</message>
<message>
<location filename="src/pages.cpp" line="576"/>
<source>A cockatrice database file of %1 MB has been downloaded.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="579"/>
<source>The following sets have been found:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="582"/>
<source>Press &quot;Save&quot; to store the imported cards in the Cockatrice database.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="583"/>
<source>The card database will be saved at the following location:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="585"/>
<source>Save to a custom path (not recommended)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="587"/>
<source>&amp;Save</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="593"/>
<source>Import finished: %1 cards.</source>
<translation>Importação terminada: %1 cartas.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="596"/>
<source>%1: %2 cards imported</source>
<translation>%1. %2 cartas importadas</translation>
</message>
<message>
<location filename="src/pages.cpp" line="605"/>
<source>Save card database</source>
<translation>Guardar base de dados das cartas</translation>
</message>
<message>
<location filename="src/pages.cpp" line="606"/>
<source>XML; card database (*.xml)</source>
<translation>XML; Base de dados de cartas (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="638"/>
<source>The file could not be saved to %1</source>
<translation>O ficheiro não pode ser gravado em %1</translation>
</message>
</context>
<context>
<name>SimpleDownloadFilePage</name>
<message>
<location filename="src/pagetemplates.cpp" line="72"/>
<source>Load %1 file</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="82"/>
<source>%1 file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<location filename="src/pagetemplates.cpp" line="129"/>
<location filename="src/pagetemplates.cpp" line="134"/>
<location filename="src/pagetemplates.cpp" line="168"/>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>Error</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<source>The provided URL is not valid: </source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="115"/>
<source>Downloading (0MB)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="129"/>
<source>Please choose a file.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="134"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="159"/>
<source>Downloading (%1MB)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="168"/>
<source>Network error: %1.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>The file could not be saved to %1</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>UnZip</name>
<message>
<location filename="src/zip/unzip.cpp" line="1175"/>
<source>ZIP operation completed successfully.</source>
<translation>Operação ZIP completa com sucesso.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1176"/>
<source>Failed to initialize or load zlib library.</source>
<translation>Falha na inicialização ou carregamento da biblioteca zlib</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1177"/>
<source>zlib library error.</source>
<translation>Erro da biblioteca zlib</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1178"/>
<source>Unable to create or open file.</source>
<translation>Incapaz de criar ou abrir ficheiro</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1179"/>
<source>Partially corrupted archive. Some files might be extracted.</source>
<translation>Arquivo parcialmente corrompido. Alguns ficheiros possivelmente serão extraídos.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1180"/>
<source>Corrupted archive.</source>
<translation>Archivo corrompido.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1181"/>
<source>Wrong password.</source>
<translation>Senha incorrecta.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1182"/>
<source>No archive has been created yet.</source>
<translation>Ainda não foi criado nenhum arquivo</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1183"/>
<source>File or directory does not exist.</source>
<translation>O ficheiro ou directório não existe.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1184"/>
<source>File read error.</source>
<translation>Erro na leitura do ficheiro.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1185"/>
<source>File write error.</source>
<translation>erro na escrita do ficheiro.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1186"/>
<source>File seek error.</source>
<translation>Erro na procura do ficheiro.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1187"/>
<source>Unable to create a directory.</source>
<translation>Incapaz de criar directório.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1188"/>
<source>Invalid device.</source>
<translation>Dispositivo inválido.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1189"/>
<source>Invalid or incompatible zip archive.</source>
<translation>Arquivo ZIP inválido ou incompatível</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1190"/>
<source>Inconsistent headers. Archive might be corrupted.</source>
<translation>Cabeçalhos inconsistentes. O arquivo pode estar corrompido,</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1194"/>
<source>Unknown error.</source>
<translation>Erro desconhecido.</translation>
</message>
</context>
<context>
<name>Zip</name>
<message>
<location filename="src/zip/zip.cpp" line="1604"/>
<source>ZIP operation completed successfully.</source>
<translation>Operação ZIP completa com sucesso.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1605"/>
<source>Failed to initialize or load zlib library.</source>
<translation>Falha na inicialização ou carregamento da biblioteca zlib</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1606"/>
<source>zlib library error.</source>
<translation>Erro da biblioteca zlib</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1607"/>
<source>Unable to create or open file.</source>
<translation>Incapaz de criar ou abrir ficheiro</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1608"/>
<source>No archive has been created yet.</source>
<translation>Ainda não foi criado nenhum arquivo</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1609"/>
<source>File or directory does not exist.</source>
<translation>O ficheiro ou directório não existe.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1610"/>
<source>File read error.</source>
<translation>Erro na leitura do ficheiro.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1611"/>
<source>File write error.</source>
<translation>erro na escrita do ficheiro.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1612"/>
<source>File seek error.</source>
<translation>Erro na procura do ficheiro.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1616"/>
<source>Unknown error.</source>
<translation>Erro desconhecido.</translation>
</message>
</context>
<context>
<name>i18n</name>
<message>
<location filename="src/oraclewizard.cpp" line="22"/>
<source>English</source>
<translation>Português (Portuguese)</translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="src/main.cpp" line="62"/>
<source>Only run in spoiler mode</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/main.cpp" line="63"/>
<source>Run in no-confirm background mode</source>
<translation type="unfinished"/>
</message>
</context>
</TS>
+608
View File
@@ -0,0 +1,608 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS version="2.1" language="pt_BR">
<context>
<name>IntroPage</name>
<message>
<location filename="src/pages.cpp" line="127"/>
<source>Introduction</source>
<translation>Introdução</translation>
</message>
<message>
<location filename="src/pages.cpp" line="128"/>
<source>This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice.</source>
<translation>Esse recurso irá importar a lista de coleções, cartas e fichas que serão utilizadas pelo Cokatrice.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="130"/>
<source>Interface language:</source>
<translation>Idioma da interface:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="131"/>
<source>Version:</source>
<translation>Versão:</translation>
</message>
</context>
<context>
<name>LoadSetsPage</name>
<message>
<location filename="src/pages.cpp" line="200"/>
<source>Source selection</source>
<translation>Selecione a origem</translation>
</message>
<message>
<location filename="src/pages.cpp" line="201"/>
<source>Please specify a compatible 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.</source>
<translation>Por favor especifique uma fonte compatível de expansões e cartas. Você pode especificar um endereço URL que será baixado ou usar um arquivo existente no seu computador.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="205"/>
<source>Download URL:</source>
<translation>Endereço para download:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="206"/>
<source>Local file:</source>
<translation>Arquivo local:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="207"/>
<source>Restore default URL</source>
<translation>Restaurar URL padrão</translation>
</message>
<message>
<location filename="src/pages.cpp" line="208"/>
<source>Choose file...</source>
<translation>Escolha o arquivo...</translation>
</message>
<message>
<location filename="src/pages.cpp" line="218"/>
<source>Load sets file</source>
<translation>Carregar arquivos de expansão</translation>
</message>
<message>
<location filename="src/pages.cpp" line="228"/>
<source>Sets file (%1)</source>
<oldsource>Sets JSON file (%1)</oldsource>
<translation>Arquivo de expansões (%1)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<location filename="src/pages.cpp" line="277"/>
<location filename="src/pages.cpp" line="282"/>
<location filename="src/pages.cpp" line="354"/>
<location filename="src/pages.cpp" line="485"/>
<location filename="src/pages.cpp" line="498"/>
<location filename="src/pages.cpp" line="519"/>
<source>Error</source>
<translation>Erro</translation>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<source>The provided URL is not valid.</source>
<translation>A URL escolhida não é valida</translation>
</message>
<message>
<location filename="src/pages.cpp" line="262"/>
<source>Downloading (0MB)</source>
<translation>Baixando (0MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="277"/>
<source>Please choose a file.</source>
<translation>Por favor, escolha um arquivo;</translation>
</message>
<message>
<location filename="src/pages.cpp" line="282"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation>Não pode abrir arquivo &apos;%1&apos;</translation>
</message>
<message>
<location filename="src/pages.cpp" line="345"/>
<source>Downloading (%1MB)</source>
<translation>Baixando (%1MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="354"/>
<source>Network error: %1.</source>
<translation>Erro na conexão com a internet: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="392"/>
<source>Parsing file</source>
<translation>Analisando arquivo</translation>
</message>
<message>
<location filename="src/pages.cpp" line="414"/>
<source>Xz extraction failed.</source>
<translation>Extração de arquivo .xz falhou</translation>
</message>
<message>
<location filename="src/pages.cpp" line="421"/>
<source>Sorry, this version of Oracle does not support xz compressed files.</source>
<translation>Desculpe, esta versão do Oracle não suporta arquivos comprimidos no formato .xz</translation>
</message>
<message>
<location filename="src/pages.cpp" line="441"/>
<source>Failed to open Zip archive: %1.</source>
<translation>Falhou em abrir o arquivo Zip: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="446"/>
<source>Zip extraction failed: the Zip archive doesn&apos;t contain exactly one file.</source>
<translation>A extração do arquivo ZIP falhou: o arquivo ZIP não contém exatamente um arquivo.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="454"/>
<source>Zip extraction failed: %1.</source>
<translation>Extração do arquivo Zip falhou: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="462"/>
<source>Sorry, this version of Oracle does not support zipped files.</source>
<translation>Desculpe, esta versão do Oracle não suporta arquivos compactados.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="485"/>
<source>Failed to interpret downloaded data.</source>
<translation>Falha ao interpretar dados baixados</translation>
</message>
<message>
<location filename="src/pages.cpp" line="498"/>
<source>Do you want to download the uncompressed file instead?</source>
<translation>Gostaria de baixar os arquivos descomprimidos, em vez disso?</translation>
</message>
<message>
<location filename="src/pages.cpp" line="520"/>
<source>The file was retrieved successfully, but it does not contain any sets data.</source>
<translation>O arquivo foi recebido com sucesso, mas não contém qualquer informação de expansão.</translation>
</message>
</context>
<context>
<name>LoadSpoilersPage</name>
<message>
<location filename="src/pages.cpp" line="716"/>
<source>Save spoiler database</source>
<translation>Salvar base de dados de spoiler</translation>
</message>
<message>
<location filename="src/pages.cpp" line="721"/>
<source>XML; spoiler database (*.xml)</source>
<translation>XML; base de dados de spoilers (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="726"/>
<source>spoiler</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="731"/>
<source>Spoilers import</source>
<translation>Importar spoilers</translation>
</message>
<message>
<location filename="src/pages.cpp" line="732"/>
<source>Please specify a compatible source for spoiler data.</source>
<translation>Por favor, selecione uma fonte compatível para os dados de spoilers.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="734"/>
<source>Download URL:</source>
<translation>Endereço para download:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="735"/>
<source>Local file:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="736"/>
<source>Restore default URL</source>
<translation>Restaurar URL padrão</translation>
</message>
<message>
<location filename="src/pages.cpp" line="737"/>
<source>Choose file...</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="739"/>
<source>The spoiler database will be saved at the following location:</source>
<translation>A base de dados de spoilers será salva no seguinte diretório:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="741"/>
<source>Save to a custom path (not recommended)</source>
<translation>Salvar em diretório customizado (não recomendado)</translation>
</message>
</context>
<context>
<name>LoadTokensPage</name>
<message>
<location filename="src/pages.cpp" line="671"/>
<source>Save token database</source>
<translation>Salvar base de dados de tokens</translation>
</message>
<message>
<location filename="src/pages.cpp" line="676"/>
<source>XML; token database (*.xml)</source>
<translation>XML; base de dados de token (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="681"/>
<source>tokens</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="686"/>
<source>Tokens import</source>
<translation>Importar tokens</translation>
</message>
<message>
<location filename="src/pages.cpp" line="687"/>
<source>Please specify a compatible source for token data.</source>
<translation>Por favor especifique uma fonte compatível para os dados de tokens.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="689"/>
<source>Download URL:</source>
<translation>Endereço para download:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="690"/>
<source>Local file:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="691"/>
<source>Restore default URL</source>
<translation>Restaurar URL padrão</translation>
</message>
<message>
<location filename="src/pages.cpp" line="692"/>
<source>Choose file...</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="694"/>
<source>The token database will be saved at the following location:</source>
<translation>A base de dados de tokens será salva no seguinte diretório:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="696"/>
<source>Save to a custom path (not recommended)</source>
<translation>Salvar em diretório customizado (não recomendado)</translation>
</message>
</context>
<context>
<name>OracleImporter</name>
<message>
<location filename="src/oracleimporter.cpp" line="542"/>
<source>Dummy set containing tokens</source>
<translation>Esta expansão contém fichas.</translation>
</message>
</context>
<context>
<name>OracleWizard</name>
<message>
<location filename="src/oraclewizard.cpp" line="101"/>
<source>Oracle Importer</source>
<translation>Importador Oracle</translation>
</message>
</context>
<context>
<name>OutroPage</name>
<message>
<location filename="src/pages.cpp" line="136"/>
<source>Finished</source>
<translation>Finalizado</translation>
</message>
<message>
<location filename="src/pages.cpp" line="137"/>
<source>The wizard has finished.</source>
<translation>O recurso terminou.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="138"/>
<source>You can now start using Cockatrice with the newly updated cards.</source>
<translation>Agora você pode começar a usar o Cockatrice com as novas cartas atualizadas.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="139"/>
<source>If the card databases don&apos;t reload automatically, restart the Cockatrice client.</source>
<translation>Se a base de dados das cartas não for atualizada automaticamente, reinicie o cliente do Cockatrice.</translation>
</message>
</context>
<context>
<name>SaveSetsPage</name>
<message>
<location filename="src/pages.cpp" line="563"/>
<location filename="src/pages.cpp" line="638"/>
<source>Error</source>
<translation>Erro</translation>
</message>
<message>
<location filename="src/pages.cpp" line="563"/>
<source>No set has been imported.</source>
<translation>O set não foi importado.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="574"/>
<source>Sets imported</source>
<translation>Expansões importadas</translation>
</message>
<message>
<location filename="src/pages.cpp" line="576"/>
<source>A cockatrice database file of %1 MB has been downloaded.</source>
<translation>Um arquivo de %1 MB de banco de dados do cockatrice foi baixado.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="579"/>
<source>The following sets have been found:</source>
<translation>As seguintes expansões foram encontradas:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="582"/>
<source>Press &quot;Save&quot; to store the imported cards in the Cockatrice database.</source>
<translation>Aperte &quot;Salvar&quot; para guardar as cartas importadas na base de dados do Cockatrice.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="583"/>
<source>The card database will be saved at the following location:</source>
<translation>A base de dados de cartas será salva no seguinte diretório:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="585"/>
<source>Save to a custom path (not recommended)</source>
<translation>Salvar em diretório customizado (não recomendado)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="587"/>
<source>&amp;Save</source>
<translation>&amp;Salvar</translation>
</message>
<message>
<location filename="src/pages.cpp" line="593"/>
<source>Import finished: %1 cards.</source>
<translation>Importação finalizada: %1 cartas.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="596"/>
<source>%1: %2 cards imported</source>
<translation>%1: %2 cartas importadas</translation>
</message>
<message>
<location filename="src/pages.cpp" line="605"/>
<source>Save card database</source>
<translation>Carta salva no banco de dados</translation>
</message>
<message>
<location filename="src/pages.cpp" line="606"/>
<source>XML; card database (*.xml)</source>
<translation>XML; banco de dados de cartas (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="638"/>
<source>The file could not be saved to %1</source>
<translation>O arquivo não pode ser salvo para %1</translation>
</message>
</context>
<context>
<name>SimpleDownloadFilePage</name>
<message>
<location filename="src/pagetemplates.cpp" line="72"/>
<source>Load %1 file</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="82"/>
<source>%1 file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<location filename="src/pagetemplates.cpp" line="129"/>
<location filename="src/pagetemplates.cpp" line="134"/>
<location filename="src/pagetemplates.cpp" line="168"/>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>Error</source>
<translation>Erro</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<source>The provided URL is not valid: </source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="115"/>
<source>Downloading (0MB)</source>
<translation>Baixando (0MB)</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="129"/>
<source>Please choose a file.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="134"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="159"/>
<source>Downloading (%1MB)</source>
<translation>Baixando (%1MB)</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="168"/>
<source>Network error: %1.</source>
<translation>Erro de rede: %1</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>The file could not be saved to %1</source>
<translation>O arquivo não pode ser salvo em %1</translation>
</message>
</context>
<context>
<name>UnZip</name>
<message>
<location filename="src/zip/unzip.cpp" line="1175"/>
<source>ZIP operation completed successfully.</source>
<translation>Operação de compactação concluída.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1176"/>
<source>Failed to initialize or load zlib library.</source>
<translation>Falha ao inicializar ou carregar a biblioteca zlib.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1177"/>
<source>zlib library error.</source>
<translation>Erro na biblioteca zlib.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1178"/>
<source>Unable to create or open file.</source>
<translation>Não foi possível criar ou abrir o arquivo.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1179"/>
<source>Partially corrupted archive. Some files might be extracted.</source>
<translation>Arquivo parcialmente corrompido. Alguns arquivos podem ter sido extraídos.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1180"/>
<source>Corrupted archive.</source>
<translation>Arquivo corrompido.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1181"/>
<source>Wrong password.</source>
<translation>Senha incorreta.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1182"/>
<source>No archive has been created yet.</source>
<translation>Nenhum arquivo foi criado ainda.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1183"/>
<source>File or directory does not exist.</source>
<translation>Arquivo ou diretório não existe.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1184"/>
<source>File read error.</source>
<translation>Erro de leitura do arquivo.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1185"/>
<source>File write error.</source>
<translation>Erro de gravação do arquivo.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1186"/>
<source>File seek error.</source>
<translation>Erro ao buscar no arquivo</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1187"/>
<source>Unable to create a directory.</source>
<translation>Não foi possível criar um diretório.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1188"/>
<source>Invalid device.</source>
<translation>Dispositivo inválido.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1189"/>
<source>Invalid or incompatible zip archive.</source>
<translation>Arquivo ZIP inválido ou incompatível.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1190"/>
<source>Inconsistent headers. Archive might be corrupted.</source>
<translation>Cabeçalhos inconsistentes. O arquivo pode estar corrompido.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1194"/>
<source>Unknown error.</source>
<translation>Erro desconhecido.</translation>
</message>
</context>
<context>
<name>Zip</name>
<message>
<location filename="src/zip/zip.cpp" line="1604"/>
<source>ZIP operation completed successfully.</source>
<translation>Operação de compactação concluída com sucesso.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1605"/>
<source>Failed to initialize or load zlib library.</source>
<translation>Falha ao inicializar ou carregar a biblioteca zlib.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1606"/>
<source>zlib library error.</source>
<translation>Erro na biblioteca zlib.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1607"/>
<source>Unable to create or open file.</source>
<translation>Não foi possível criar ou abrir o arquivo.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1608"/>
<source>No archive has been created yet.</source>
<translation>Nenhum arquivo foi criado ainda.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1609"/>
<source>File or directory does not exist.</source>
<translation>Arquivo ou diretório não existe.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1610"/>
<source>File read error.</source>
<translation>Erro de leitura do arquivo.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1611"/>
<source>File write error.</source>
<translation>Erro de gravação do arquivo.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1612"/>
<source>File seek error.</source>
<translation>Erro ao buscar no arquivo</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1616"/>
<source>Unknown error.</source>
<translation>Erro desconhecido.</translation>
</message>
</context>
<context>
<name>i18n</name>
<message>
<location filename="src/oraclewizard.cpp" line="22"/>
<source>English</source>
<translation>Português do Brasil (Brazilian Portuguese)</translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="src/main.cpp" line="62"/>
<source>Only run in spoiler mode</source>
<translation>Rodar apenas em modo de &apos;spoiler&apos;</translation>
</message>
<message>
<location filename="src/main.cpp" line="63"/>
<source>Run in no-confirm background mode</source>
<translation type="unfinished"/>
</message>
</context>
</TS>
+608
View File
@@ -0,0 +1,608 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS version="2.1" language="ru">
<context>
<name>IntroPage</name>
<message>
<location filename="src/pages.cpp" line="127"/>
<source>Introduction</source>
<translation>Введение</translation>
</message>
<message>
<location filename="src/pages.cpp" line="128"/>
<source>This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice.</source>
<translation>Эта программа импортирует перечень выпусков, карт и фишек, которые будут использоваться в Cockatrice.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="130"/>
<source>Interface language:</source>
<translation>Язык интерфейса:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="131"/>
<source>Version:</source>
<translation>Версия</translation>
</message>
</context>
<context>
<name>LoadSetsPage</name>
<message>
<location filename="src/pages.cpp" line="200"/>
<source>Source selection</source>
<translation>Выбор источника</translation>
</message>
<message>
<location filename="src/pages.cpp" line="201"/>
<source>Please specify a compatible 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.</source>
<translation>Пожалуйста, укажите источник для перечня сетов и карт. Вы можете использовать ссылку или уже существующий локальный файл.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="205"/>
<source>Download URL:</source>
<translation>Ссылка на скачивание:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="206"/>
<source>Local file:</source>
<translation>Локальный файл:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="207"/>
<source>Restore default URL</source>
<translation>Восстановить ссылку по умолчанию</translation>
</message>
<message>
<location filename="src/pages.cpp" line="208"/>
<source>Choose file...</source>
<translation>Выбрать файл..</translation>
</message>
<message>
<location filename="src/pages.cpp" line="218"/>
<source>Load sets file</source>
<translation>Загрузить файл сетов</translation>
</message>
<message>
<location filename="src/pages.cpp" line="228"/>
<source>Sets file (%1)</source>
<oldsource>Sets JSON file (%1)</oldsource>
<translation>Файл (%1)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<location filename="src/pages.cpp" line="277"/>
<location filename="src/pages.cpp" line="282"/>
<location filename="src/pages.cpp" line="354"/>
<location filename="src/pages.cpp" line="485"/>
<location filename="src/pages.cpp" line="498"/>
<location filename="src/pages.cpp" line="519"/>
<source>Error</source>
<translation>Ошибка</translation>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<source>The provided URL is not valid.</source>
<translation>Предоставленная ссылка некорректна.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="262"/>
<source>Downloading (0MB)</source>
<translation>Загрузка (0MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="277"/>
<source>Please choose a file.</source>
<translation>Пожалуйста, выберите файл.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="282"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation>Не удалось открыть файл &apos;%1&apos;.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="345"/>
<source>Downloading (%1MB)</source>
<translation>Загрузка (%1MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="354"/>
<source>Network error: %1.</source>
<translation>Ошибка сети: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="392"/>
<source>Parsing file</source>
<translation>Ожидание файла</translation>
</message>
<message>
<location filename="src/pages.cpp" line="414"/>
<source>Xz extraction failed.</source>
<translation>Ошибка распаковки архива</translation>
</message>
<message>
<location filename="src/pages.cpp" line="421"/>
<source>Sorry, this version of Oracle does not support xz compressed files.</source>
<translation>Данная версия Oracle не поддерживает архивы xz</translation>
</message>
<message>
<location filename="src/pages.cpp" line="441"/>
<source>Failed to open Zip archive: %1.</source>
<translation>Не удалось загрузить zip-архив: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="446"/>
<source>Zip extraction failed: the Zip archive doesn&apos;t contain exactly one file.</source>
<translation>Ошибка распаковки: zip-архив содержит больше одного файла.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="454"/>
<source>Zip extraction failed: %1.</source>
<translation>Ошибка распаковки zip-архива: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="462"/>
<source>Sorry, this version of Oracle does not support zipped files.</source>
<translation>Данная версия Oracle не поддерживает zip-архивы.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="485"/>
<source>Failed to interpret downloaded data.</source>
<translation>Ошибка в обработке загруженных данных</translation>
</message>
<message>
<location filename="src/pages.cpp" line="498"/>
<source>Do you want to download the uncompressed file instead?</source>
<translation>Хотите вместо этого загрузить новую несжатую копию?</translation>
</message>
<message>
<location filename="src/pages.cpp" line="520"/>
<source>The file was retrieved successfully, but it does not contain any sets data.</source>
<translation>Файл успешно получен, но в нем не содержится данных о сетах.</translation>
</message>
</context>
<context>
<name>LoadSpoilersPage</name>
<message>
<location filename="src/pages.cpp" line="716"/>
<source>Save spoiler database</source>
<translation>Сохранить базу карт</translation>
</message>
<message>
<location filename="src/pages.cpp" line="721"/>
<source>XML; spoiler database (*.xml)</source>
<translation>XML; база карт (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="726"/>
<source>spoiler</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="731"/>
<source>Spoilers import</source>
<translation>Импорт карт</translation>
</message>
<message>
<location filename="src/pages.cpp" line="732"/>
<source>Please specify a compatible source for spoiler data.</source>
<translation>Укажите совместимый ресурс для импорта базы карт</translation>
</message>
<message>
<location filename="src/pages.cpp" line="734"/>
<source>Download URL:</source>
<translation>Ссылка на скачивание:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="735"/>
<source>Local file:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="736"/>
<source>Restore default URL</source>
<translation>Восстановить ссылку по умолчанию</translation>
</message>
<message>
<location filename="src/pages.cpp" line="737"/>
<source>Choose file...</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="739"/>
<source>The spoiler database will be saved at the following location:</source>
<translation>База карт будет сохранена в следующей директории:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="741"/>
<source>Save to a custom path (not recommended)</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>LoadTokensPage</name>
<message>
<location filename="src/pages.cpp" line="671"/>
<source>Save token database</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="676"/>
<source>XML; token database (*.xml)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="681"/>
<source>tokens</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="686"/>
<source>Tokens import</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="687"/>
<source>Please specify a compatible source for token data.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="689"/>
<source>Download URL:</source>
<translation>Ссылка на скачивание:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="690"/>
<source>Local file:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="691"/>
<source>Restore default URL</source>
<translation>Восстановить ссылку по умолчанию</translation>
</message>
<message>
<location filename="src/pages.cpp" line="692"/>
<source>Choose file...</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="694"/>
<source>The token database will be saved at the following location:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="696"/>
<source>Save to a custom path (not recommended)</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>OracleImporter</name>
<message>
<location filename="src/oracleimporter.cpp" line="542"/>
<source>Dummy set containing tokens</source>
<translation>Пример сета с фишками</translation>
</message>
</context>
<context>
<name>OracleWizard</name>
<message>
<location filename="src/oraclewizard.cpp" line="101"/>
<source>Oracle Importer</source>
<translation>Импортер Oracle</translation>
</message>
</context>
<context>
<name>OutroPage</name>
<message>
<location filename="src/pages.cpp" line="136"/>
<source>Finished</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="137"/>
<source>The wizard has finished.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="138"/>
<source>You can now start using Cockatrice with the newly updated cards.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="139"/>
<source>If the card databases don&apos;t reload automatically, restart the Cockatrice client.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>SaveSetsPage</name>
<message>
<location filename="src/pages.cpp" line="563"/>
<location filename="src/pages.cpp" line="638"/>
<source>Error</source>
<translation>Ошибка</translation>
</message>
<message>
<location filename="src/pages.cpp" line="563"/>
<source>No set has been imported.</source>
<translation>Не было импортировано ни одного сета.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="574"/>
<source>Sets imported</source>
<translation>Импортировано сетов</translation>
</message>
<message>
<location filename="src/pages.cpp" line="576"/>
<source>A cockatrice database file of %1 MB has been downloaded.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="579"/>
<source>The following sets have been found:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="582"/>
<source>Press &quot;Save&quot; to store the imported cards in the Cockatrice database.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="583"/>
<source>The card database will be saved at the following location:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="585"/>
<source>Save to a custom path (not recommended)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="587"/>
<source>&amp;Save</source>
<translation>Сохранить</translation>
</message>
<message>
<location filename="src/pages.cpp" line="593"/>
<source>Import finished: %1 cards.</source>
<translation>Импорт завершен: %1 карт.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="596"/>
<source>%1: %2 cards imported</source>
<translation>%1: %2 карт импортировано</translation>
</message>
<message>
<location filename="src/pages.cpp" line="605"/>
<source>Save card database</source>
<translation>Сохранить базу карт</translation>
</message>
<message>
<location filename="src/pages.cpp" line="606"/>
<source>XML; card database (*.xml)</source>
<translation>База карт (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="638"/>
<source>The file could not be saved to %1</source>
<translation>Не удалось сохранить файл в %1</translation>
</message>
</context>
<context>
<name>SimpleDownloadFilePage</name>
<message>
<location filename="src/pagetemplates.cpp" line="72"/>
<source>Load %1 file</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="82"/>
<source>%1 file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<location filename="src/pagetemplates.cpp" line="129"/>
<location filename="src/pagetemplates.cpp" line="134"/>
<location filename="src/pagetemplates.cpp" line="168"/>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>Error</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<source>The provided URL is not valid: </source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="115"/>
<source>Downloading (0MB)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="129"/>
<source>Please choose a file.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="134"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="159"/>
<source>Downloading (%1MB)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="168"/>
<source>Network error: %1.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>The file could not be saved to %1</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>UnZip</name>
<message>
<location filename="src/zip/unzip.cpp" line="1175"/>
<source>ZIP operation completed successfully.</source>
<translation>Распаковка успешно завершена.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1176"/>
<source>Failed to initialize or load zlib library.</source>
<translation>Не удалось загрузить библиотеку .zlib.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1177"/>
<source>zlib library error.</source>
<translation>ошибка библиотеки .zlib</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1178"/>
<source>Unable to create or open file.</source>
<translation>Не удалось создать или открыть файл.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1179"/>
<source>Partially corrupted archive. Some files might be extracted.</source>
<translation>Архив частично поврежден. Некоторые файлы могут быть извлечены.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1180"/>
<source>Corrupted archive.</source>
<translation>Архив поврежден.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1181"/>
<source>Wrong password.</source>
<translation>Неверный пароль.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1182"/>
<source>No archive has been created yet.</source>
<translation>Не было создано ни одного архива.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1183"/>
<source>File or directory does not exist.</source>
<translation>Файл или директория не существуют.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1184"/>
<source>File read error.</source>
<translation>Ошибка чтения файла.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1185"/>
<source>File write error.</source>
<translation>Ошибка записи файла.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1186"/>
<source>File seek error.</source>
<translation>Не удалось найти файл.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1187"/>
<source>Unable to create a directory.</source>
<translation>Не удалось создать директорию.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1188"/>
<source>Invalid device.</source>
<translation>Неверное устройство.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1189"/>
<source>Invalid or incompatible zip archive.</source>
<translation>Неверный или несовместимый zip-архив.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1190"/>
<source>Inconsistent headers. Archive might be corrupted.</source>
<translation>Несовместимые заголовки. Архив может быть поврежден.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1194"/>
<source>Unknown error.</source>
<translation>Неизвестная ошибка.</translation>
</message>
</context>
<context>
<name>Zip</name>
<message>
<location filename="src/zip/zip.cpp" line="1604"/>
<source>ZIP operation completed successfully.</source>
<translation>Распаковка успешно завершена.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1605"/>
<source>Failed to initialize or load zlib library.</source>
<translation>Не удалось загрузить библиотеку .zlib.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1606"/>
<source>zlib library error.</source>
<translation>ошибка библиотеки .zlib</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1607"/>
<source>Unable to create or open file.</source>
<translation>Не удалось создать или открыть файл.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1608"/>
<source>No archive has been created yet.</source>
<translation>Не было создано ни одного архива.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1609"/>
<source>File or directory does not exist.</source>
<translation>Файл или директория не существуют.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1610"/>
<source>File read error.</source>
<translation>Ошибка чтения файла.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1611"/>
<source>File write error.</source>
<translation>Ошибка записи файла.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1612"/>
<source>File seek error.</source>
<translation>Не удалось найти файл.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1616"/>
<source>Unknown error.</source>
<translation>Неизвестная ошибка.</translation>
</message>
</context>
<context>
<name>i18n</name>
<message>
<location filename="src/oraclewizard.cpp" line="22"/>
<source>English</source>
<translation>Русский (Russian)</translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="src/main.cpp" line="62"/>
<source>Only run in spoiler mode</source>
<translation>Запускать только в режиме сетов</translation>
</message>
<message>
<location filename="src/main.cpp" line="63"/>
<source>Run in no-confirm background mode</source>
<translation type="unfinished"/>
</message>
</context>
</TS>
+608
View File
@@ -0,0 +1,608 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS version="2.1" language="sr">
<context>
<name>IntroPage</name>
<message>
<location filename="src/pages.cpp" line="127"/>
<source>Introduction</source>
<translation>Uvod</translation>
</message>
<message>
<location filename="src/pages.cpp" line="128"/>
<source>This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="130"/>
<source>Interface language:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="131"/>
<source>Version:</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>LoadSetsPage</name>
<message>
<location filename="src/pages.cpp" line="200"/>
<source>Source selection</source>
<translation>Odabir izvora</translation>
</message>
<message>
<location filename="src/pages.cpp" line="201"/>
<source>Please specify a compatible 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.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="205"/>
<source>Download URL:</source>
<translation>URL za preuzimanje:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="206"/>
<source>Local file:</source>
<translation>Lokalni fajl:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="207"/>
<source>Restore default URL</source>
<translation>Povrati uobičajeni URL</translation>
</message>
<message>
<location filename="src/pages.cpp" line="208"/>
<source>Choose file...</source>
<translation>Izaberite fajl...</translation>
</message>
<message>
<location filename="src/pages.cpp" line="218"/>
<source>Load sets file</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="228"/>
<source>Sets file (%1)</source>
<oldsource>Sets JSON file (%1)</oldsource>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<location filename="src/pages.cpp" line="277"/>
<location filename="src/pages.cpp" line="282"/>
<location filename="src/pages.cpp" line="354"/>
<location filename="src/pages.cpp" line="485"/>
<location filename="src/pages.cpp" line="498"/>
<location filename="src/pages.cpp" line="519"/>
<source>Error</source>
<translation>Greška</translation>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<source>The provided URL is not valid.</source>
<translation>Dati URL nije važeći.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="262"/>
<source>Downloading (0MB)</source>
<translation>Preuzimanje (0MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="277"/>
<source>Please choose a file.</source>
<translation>Molimo Vas izaberite fajl.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="282"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation>Nemoguće otvori fajl &apos;%1&apos;.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="345"/>
<source>Downloading (%1MB)</source>
<translation>Preuzimanje (%1MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="354"/>
<source>Network error: %1.</source>
<translation>Mrežna greška: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="392"/>
<source>Parsing file</source>
<translation>Parsiranje fajla</translation>
</message>
<message>
<location filename="src/pages.cpp" line="414"/>
<source>Xz extraction failed.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="421"/>
<source>Sorry, this version of Oracle does not support xz compressed files.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="441"/>
<source>Failed to open Zip archive: %1.</source>
<translation>Neuspeh u otvaranju Zip arhive: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="446"/>
<source>Zip extraction failed: the Zip archive doesn&apos;t contain exactly one file.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="454"/>
<source>Zip extraction failed: %1.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="462"/>
<source>Sorry, this version of Oracle does not support zipped files.</source>
<translation>Izvinite, ova verzija Oracle-a ne podržava zip fajlove.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="485"/>
<source>Failed to interpret downloaded data.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="498"/>
<source>Do you want to download the uncompressed file instead?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="520"/>
<source>The file was retrieved successfully, but it does not contain any sets data.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>LoadSpoilersPage</name>
<message>
<location filename="src/pages.cpp" line="716"/>
<source>Save spoiler database</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="721"/>
<source>XML; spoiler database (*.xml)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="726"/>
<source>spoiler</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="731"/>
<source>Spoilers import</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="732"/>
<source>Please specify a compatible source for spoiler data.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="734"/>
<source>Download URL:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="735"/>
<source>Local file:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="736"/>
<source>Restore default URL</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="737"/>
<source>Choose file...</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="739"/>
<source>The spoiler database will be saved at the following location:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="741"/>
<source>Save to a custom path (not recommended)</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>LoadTokensPage</name>
<message>
<location filename="src/pages.cpp" line="671"/>
<source>Save token database</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="676"/>
<source>XML; token database (*.xml)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="681"/>
<source>tokens</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="686"/>
<source>Tokens import</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="687"/>
<source>Please specify a compatible source for token data.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="689"/>
<source>Download URL:</source>
<translation>URL za preuzimanje:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="690"/>
<source>Local file:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="691"/>
<source>Restore default URL</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="692"/>
<source>Choose file...</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="694"/>
<source>The token database will be saved at the following location:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="696"/>
<source>Save to a custom path (not recommended)</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>OracleImporter</name>
<message>
<location filename="src/oracleimporter.cpp" line="542"/>
<source>Dummy set containing tokens</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>OracleWizard</name>
<message>
<location filename="src/oraclewizard.cpp" line="101"/>
<source>Oracle Importer</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>OutroPage</name>
<message>
<location filename="src/pages.cpp" line="136"/>
<source>Finished</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="137"/>
<source>The wizard has finished.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="138"/>
<source>You can now start using Cockatrice with the newly updated cards.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="139"/>
<source>If the card databases don&apos;t reload automatically, restart the Cockatrice client.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>SaveSetsPage</name>
<message>
<location filename="src/pages.cpp" line="563"/>
<location filename="src/pages.cpp" line="638"/>
<source>Error</source>
<translation>Greška</translation>
</message>
<message>
<location filename="src/pages.cpp" line="563"/>
<source>No set has been imported.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="574"/>
<source>Sets imported</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="576"/>
<source>A cockatrice database file of %1 MB has been downloaded.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="579"/>
<source>The following sets have been found:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="582"/>
<source>Press &quot;Save&quot; to store the imported cards in the Cockatrice database.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="583"/>
<source>The card database will be saved at the following location:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="585"/>
<source>Save to a custom path (not recommended)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="587"/>
<source>&amp;Save</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="593"/>
<source>Import finished: %1 cards.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="596"/>
<source>%1: %2 cards imported</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="605"/>
<source>Save card database</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="606"/>
<source>XML; card database (*.xml)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="638"/>
<source>The file could not be saved to %1</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>SimpleDownloadFilePage</name>
<message>
<location filename="src/pagetemplates.cpp" line="72"/>
<source>Load %1 file</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="82"/>
<source>%1 file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<location filename="src/pagetemplates.cpp" line="129"/>
<location filename="src/pagetemplates.cpp" line="134"/>
<location filename="src/pagetemplates.cpp" line="168"/>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>Error</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<source>The provided URL is not valid: </source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="115"/>
<source>Downloading (0MB)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="129"/>
<source>Please choose a file.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="134"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="159"/>
<source>Downloading (%1MB)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="168"/>
<source>Network error: %1.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>The file could not be saved to %1</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>UnZip</name>
<message>
<location filename="src/zip/unzip.cpp" line="1175"/>
<source>ZIP operation completed successfully.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1176"/>
<source>Failed to initialize or load zlib library.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1177"/>
<source>zlib library error.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1178"/>
<source>Unable to create or open file.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1179"/>
<source>Partially corrupted archive. Some files might be extracted.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1180"/>
<source>Corrupted archive.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1181"/>
<source>Wrong password.</source>
<translation>Pogrešna lozinka.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1182"/>
<source>No archive has been created yet.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1183"/>
<source>File or directory does not exist.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1184"/>
<source>File read error.</source>
<translation>Greška u čitanju fajla.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1185"/>
<source>File write error.</source>
<translation>Greška u pisanju fajla.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1186"/>
<source>File seek error.</source>
<translation>Greška u traženju fajla.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1187"/>
<source>Unable to create a directory.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1188"/>
<source>Invalid device.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1189"/>
<source>Invalid or incompatible zip archive.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1190"/>
<source>Inconsistent headers. Archive might be corrupted.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1194"/>
<source>Unknown error.</source>
<translation>Nepoznata greška.</translation>
</message>
</context>
<context>
<name>Zip</name>
<message>
<location filename="src/zip/zip.cpp" line="1604"/>
<source>ZIP operation completed successfully.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1605"/>
<source>Failed to initialize or load zlib library.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1606"/>
<source>zlib library error.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1607"/>
<source>Unable to create or open file.</source>
<translation>Nemoguće napraviti ili otvoriti fajl.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1608"/>
<source>No archive has been created yet.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1609"/>
<source>File or directory does not exist.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1610"/>
<source>File read error.</source>
<translation>Greška u čitanju fajla.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1611"/>
<source>File write error.</source>
<translation>Greška u pisanju fajla.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1612"/>
<source>File seek error.</source>
<translation>Greška u traženju fajla.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1616"/>
<source>Unknown error.</source>
<translation>Nepoznata greška.</translation>
</message>
</context>
<context>
<name>i18n</name>
<message>
<location filename="src/oraclewizard.cpp" line="22"/>
<source>English</source>
<translation>Srpski (Serbian)</translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="src/main.cpp" line="62"/>
<source>Only run in spoiler mode</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/main.cpp" line="63"/>
<source>Run in no-confirm background mode</source>
<translation type="unfinished"/>
</message>
</context>
</TS>
+398
View File
@@ -0,0 +1,398 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS version="2.1" language="sv">
<context>
<name>IntroPage</name>
<message>
<location filename="../src/oraclewizard.cpp" line="192"/>
<source>Introduction</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="193"/>
<source>This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="195"/>
<source>Interface language:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="196"/>
<source>Version:</source>
<translation>Version:</translation>
</message>
</context>
<context>
<name>LoadSetsPage</name>
<message>
<location filename="../src/oraclewizard.cpp" line="251"/>
<source>Source selection</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="252"/>
<source>Please specify a compatible 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.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="256"/>
<source>Download URL:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="257"/>
<source>Local file:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="258"/>
<source>Restore default URL</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="259"/>
<source>Choose file...</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="269"/>
<source>Load sets file</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="279"/>
<source>Sets JSON file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="309"/>
<location filename="../src/oraclewizard.cpp" line="328"/>
<location filename="../src/oraclewizard.cpp" line="333"/>
<location filename="../src/oraclewizard.cpp" line="402"/>
<location filename="../src/oraclewizard.cpp" line="526"/>
<location filename="../src/oraclewizard.cpp" line="547"/>
<source>Error</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="309"/>
<source>The provided URL is not valid.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="313"/>
<source>Downloading (0MB)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="328"/>
<source>Please choose a file.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="333"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="393"/>
<source>Downloading (%1MB)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="402"/>
<source>Network error: %1.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="440"/>
<source>Parsing file</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="454"/>
<source>Xz extraction failed.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="462"/>
<source>Sorry, this version of Oracle does not support xz compressed files.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="481"/>
<source>Failed to open Zip archive: %1.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="486"/>
<source>Zip extraction failed: the Zip archive doesn&apos;t contain exactly one file.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="494"/>
<source>Zip extraction failed: %1.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="503"/>
<source>Sorry, this version of Oracle does not support zipped files.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="526"/>
<source>Do you want to download the uncompressed file instead?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="548"/>
<source>The file was retrieved successfully, but it does not contain any sets data.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>LoadSpoilersPage</name>
<message>
<location filename="../src/oraclewizard.cpp" line="699"/>
<source>Save spoiler database</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="704"/>
<source>XML; spoiler database (*.xml)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="709"/>
<source>Spoilers import</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="710"/>
<source>Please specify a compatible source for spoiler data.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="712"/>
<source>Download URL:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="713"/>
<source>Restore default URL</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="714"/>
<source>The spoiler database will be saved at the following location:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="716"/>
<source>Save to a custom path (not recommended)</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>LoadTokensPage</name>
<message>
<location filename="../src/oraclewizard.cpp" line="662"/>
<source>Save token database</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="667"/>
<source>XML; token database (*.xml)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="672"/>
<source>Tokens import</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="673"/>
<source>Please specify a compatible source for token data.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="675"/>
<source>Download URL:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="676"/>
<source>Restore default URL</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="677"/>
<source>The token database will be saved at the following location:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="679"/>
<source>Save to a custom path (not recommended)</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>OracleImporter</name>
<message>
<location filename="../src/oracleimporter.cpp" line="475"/>
<source>Dummy set containing tokens</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>OracleWizard</name>
<message>
<location filename="../src/oraclewizard.cpp" line="98"/>
<source>Oracle Importer</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>OutroPage</name>
<message>
<location filename="../src/oraclewizard.cpp" line="201"/>
<source>Finished</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="202"/>
<source>The wizard has finished.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="203"/>
<source>You can now start using Cockatrice with the newly updated cards.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="204"/>
<source>If the card databases don&apos;t reload automatically, restart the Cockatrice client.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>SaveSetsPage</name>
<message>
<location filename="../src/oraclewizard.cpp" line="585"/>
<location filename="../src/oraclewizard.cpp" line="638"/>
<source>Error</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="585"/>
<source>No set has been imported.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="591"/>
<source>Sets imported</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="592"/>
<source>The following sets have been found:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="594"/>
<source>Press &quot;Save&quot; to store the imported cards in the Cockatrice database.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="595"/>
<source>The card database will be saved at the following location:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="597"/>
<source>Save to a custom path (not recommended)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="599"/>
<source>&amp;Save</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="605"/>
<source>Import finished: %1 cards.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="608"/>
<source>%1: %2 cards imported</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="617"/>
<source>Save card database</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="618"/>
<source>XML; card database (*.xml)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/oraclewizard.cpp" line="638"/>
<source>The file could not be saved to %1</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>SimpleDownloadFilePage</name>
<message>
<location filename="../src/pagetemplates.cpp" line="73"/>
<location filename="../src/pagetemplates.cpp" line="113"/>
<location filename="../src/pagetemplates.cpp" line="169"/>
<source>Error</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/pagetemplates.cpp" line="73"/>
<source>The provided URL is not valid.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/pagetemplates.cpp" line="77"/>
<source>Downloading (0MB)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/pagetemplates.cpp" line="104"/>
<source>Downloading (%1MB)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/pagetemplates.cpp" line="113"/>
<source>Network error: %1.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/pagetemplates.cpp" line="169"/>
<source>The file could not be saved to %1</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>i18n</name>
<message>
<location filename="../src/oraclewizard.cpp" line="58"/>
<source>English</source>
<translation>Svenska (Swedish)</translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="../src/main.cpp" line="42"/>
<source>Only run in spoiler mode</source>
<translation type="unfinished"/>
</message>
</context>
</TS>
+608
View File
@@ -0,0 +1,608 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS version="2.1" language="tr">
<context>
<name>IntroPage</name>
<message>
<location filename="src/pages.cpp" line="127"/>
<source>Introduction</source>
<translation>Açıklama</translation>
</message>
<message>
<location filename="src/pages.cpp" line="128"/>
<source>This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice.</source>
<translation>Bu sihirbaz Cockatrice tarafından kullanılacak setlerin, kartların ve tokenlerin listesini içe aktaracaktır.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="130"/>
<source>Interface language:</source>
<translation>Arayüz dili:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="131"/>
<source>Version:</source>
<translation>Sürüm:</translation>
</message>
</context>
<context>
<name>LoadSetsPage</name>
<message>
<location filename="src/pages.cpp" line="200"/>
<source>Source selection</source>
<translation>Kaynak seçimi</translation>
</message>
<message>
<location filename="src/pages.cpp" line="201"/>
<source>Please specify a compatible 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.</source>
<translation>Lütfen set ve kart listesi için uyumlu bir kaynak belirtin. İndirilecek bir URL adresi belirtebilir veya bilgisayarınızdaki mevcut bir dosyayı kullanabilirsiniz.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="205"/>
<source>Download URL:</source>
<translation>İndirme Bağlantısı:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="206"/>
<source>Local file:</source>
<translation>Yerel dosya:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="207"/>
<source>Restore default URL</source>
<translation>Varsayılan URL&apos;yi geri yükle</translation>
</message>
<message>
<location filename="src/pages.cpp" line="208"/>
<source>Choose file...</source>
<translation>Dosya seç...</translation>
</message>
<message>
<location filename="src/pages.cpp" line="218"/>
<source>Load sets file</source>
<translation>Set dosyasını yükle</translation>
</message>
<message>
<location filename="src/pages.cpp" line="228"/>
<source>Sets file (%1)</source>
<oldsource>Sets JSON file (%1)</oldsource>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<location filename="src/pages.cpp" line="277"/>
<location filename="src/pages.cpp" line="282"/>
<location filename="src/pages.cpp" line="354"/>
<location filename="src/pages.cpp" line="485"/>
<location filename="src/pages.cpp" line="498"/>
<location filename="src/pages.cpp" line="519"/>
<source>Error</source>
<translation>Hata</translation>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<source>The provided URL is not valid.</source>
<translation>Paylaşılan bağlantı geçerli değil.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="262"/>
<source>Downloading (0MB)</source>
<translation>İndiriliyor (0MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="277"/>
<source>Please choose a file.</source>
<translation>Lütfen dosya seçin.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="282"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation>Dosya açılamıyor &apos;1%&apos;.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="345"/>
<source>Downloading (%1MB)</source>
<translation>İndiriliyor (%1MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="354"/>
<source>Network error: %1.</source>
<translation>Bağlantı hatası: %1</translation>
</message>
<message>
<location filename="src/pages.cpp" line="392"/>
<source>Parsing file</source>
<translation>Dosya ayrıştırılıyor</translation>
</message>
<message>
<location filename="src/pages.cpp" line="414"/>
<source>Xz extraction failed.</source>
<translation>Xz çıkarma işlemi başarısız oldu.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="421"/>
<source>Sorry, this version of Oracle does not support xz compressed files.</source>
<translation>Maalesef, Oracle&apos;ın bu sürümü xz sıkıştırılmış dosyaları desteklemiyor.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="441"/>
<source>Failed to open Zip archive: %1.</source>
<translation>Zip dosyası açılamadı: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="446"/>
<source>Zip extraction failed: the Zip archive doesn&apos;t contain exactly one file.</source>
<translation>Zip çıkarma işlemi başarısız oldu: Zip arşivi tam olarak bir dosya içermiyor.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="454"/>
<source>Zip extraction failed: %1.</source>
<translation>Zip çıkarma işlemi başarısız oldu: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="462"/>
<source>Sorry, this version of Oracle does not support zipped files.</source>
<translation>Maalesef, Oracle&apos;ın bu sürümü zip dosyalarını desteklemiyor.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="485"/>
<source>Failed to interpret downloaded data.</source>
<translation>İndirilen veriler işlenemedi.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="498"/>
<source>Do you want to download the uncompressed file instead?</source>
<translation>Bunun yerine sıkıştırılmamış dosyayı indirmek ister misiniz?</translation>
</message>
<message>
<location filename="src/pages.cpp" line="520"/>
<source>The file was retrieved successfully, but it does not contain any sets data.</source>
<translation>Dosya başarıyla alındı, ancak herhangi bir set verisi içermiyor.</translation>
</message>
</context>
<context>
<name>LoadSpoilersPage</name>
<message>
<location filename="src/pages.cpp" line="716"/>
<source>Save spoiler database</source>
<translation>Spoiler veritabanını kaydet</translation>
</message>
<message>
<location filename="src/pages.cpp" line="721"/>
<source>XML; spoiler database (*.xml)</source>
<translation>XML; spoiler veritabanı (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="726"/>
<source>spoiler</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="731"/>
<source>Spoilers import</source>
<translation>Spoilers içe aktar</translation>
</message>
<message>
<location filename="src/pages.cpp" line="732"/>
<source>Please specify a compatible source for spoiler data.</source>
<translation>Lütfen spoiler verileri için uyumlu bir kaynak belirtin.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="734"/>
<source>Download URL:</source>
<translation>İndirme Bağlantısı:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="735"/>
<source>Local file:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="736"/>
<source>Restore default URL</source>
<translation>Varsayılan bağlantıyı geri yükle</translation>
</message>
<message>
<location filename="src/pages.cpp" line="737"/>
<source>Choose file...</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="739"/>
<source>The spoiler database will be saved at the following location:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="741"/>
<source>Save to a custom path (not recommended)</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>LoadTokensPage</name>
<message>
<location filename="src/pages.cpp" line="671"/>
<source>Save token database</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="676"/>
<source>XML; token database (*.xml)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="681"/>
<source>tokens</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="686"/>
<source>Tokens import</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="687"/>
<source>Please specify a compatible source for token data.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="689"/>
<source>Download URL:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="690"/>
<source>Local file:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="691"/>
<source>Restore default URL</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="692"/>
<source>Choose file...</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="694"/>
<source>The token database will be saved at the following location:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="696"/>
<source>Save to a custom path (not recommended)</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>OracleImporter</name>
<message>
<location filename="src/oracleimporter.cpp" line="542"/>
<source>Dummy set containing tokens</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>OracleWizard</name>
<message>
<location filename="src/oraclewizard.cpp" line="101"/>
<source>Oracle Importer</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>OutroPage</name>
<message>
<location filename="src/pages.cpp" line="136"/>
<source>Finished</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="137"/>
<source>The wizard has finished.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="138"/>
<source>You can now start using Cockatrice with the newly updated cards.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="139"/>
<source>If the card databases don&apos;t reload automatically, restart the Cockatrice client.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>SaveSetsPage</name>
<message>
<location filename="src/pages.cpp" line="563"/>
<location filename="src/pages.cpp" line="638"/>
<source>Error</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="563"/>
<source>No set has been imported.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="574"/>
<source>Sets imported</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="576"/>
<source>A cockatrice database file of %1 MB has been downloaded.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="579"/>
<source>The following sets have been found:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="582"/>
<source>Press &quot;Save&quot; to store the imported cards in the Cockatrice database.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="583"/>
<source>The card database will be saved at the following location:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="585"/>
<source>Save to a custom path (not recommended)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="587"/>
<source>&amp;Save</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="593"/>
<source>Import finished: %1 cards.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="596"/>
<source>%1: %2 cards imported</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="605"/>
<source>Save card database</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="606"/>
<source>XML; card database (*.xml)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="638"/>
<source>The file could not be saved to %1</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>SimpleDownloadFilePage</name>
<message>
<location filename="src/pagetemplates.cpp" line="72"/>
<source>Load %1 file</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="82"/>
<source>%1 file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<location filename="src/pagetemplates.cpp" line="129"/>
<location filename="src/pagetemplates.cpp" line="134"/>
<location filename="src/pagetemplates.cpp" line="168"/>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>Error</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<source>The provided URL is not valid: </source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="115"/>
<source>Downloading (0MB)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="129"/>
<source>Please choose a file.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="134"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="159"/>
<source>Downloading (%1MB)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="168"/>
<source>Network error: %1.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>The file could not be saved to %1</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>UnZip</name>
<message>
<location filename="src/zip/unzip.cpp" line="1175"/>
<source>ZIP operation completed successfully.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1176"/>
<source>Failed to initialize or load zlib library.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1177"/>
<source>zlib library error.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1178"/>
<source>Unable to create or open file.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1179"/>
<source>Partially corrupted archive. Some files might be extracted.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1180"/>
<source>Corrupted archive.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1181"/>
<source>Wrong password.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1182"/>
<source>No archive has been created yet.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1183"/>
<source>File or directory does not exist.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1184"/>
<source>File read error.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1185"/>
<source>File write error.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1186"/>
<source>File seek error.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1187"/>
<source>Unable to create a directory.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1188"/>
<source>Invalid device.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1189"/>
<source>Invalid or incompatible zip archive.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1190"/>
<source>Inconsistent headers. Archive might be corrupted.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1194"/>
<source>Unknown error.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>Zip</name>
<message>
<location filename="src/zip/zip.cpp" line="1604"/>
<source>ZIP operation completed successfully.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1605"/>
<source>Failed to initialize or load zlib library.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1606"/>
<source>zlib library error.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1607"/>
<source>Unable to create or open file.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1608"/>
<source>No archive has been created yet.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1609"/>
<source>File or directory does not exist.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1610"/>
<source>File read error.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1611"/>
<source>File write error.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1612"/>
<source>File seek error.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1616"/>
<source>Unknown error.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>i18n</name>
<message>
<location filename="src/oraclewizard.cpp" line="22"/>
<source>English</source>
<translation>Türkçe (Turkish)</translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="src/main.cpp" line="62"/>
<source>Only run in spoiler mode</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/main.cpp" line="63"/>
<source>Run in no-confirm background mode</source>
<translation type="unfinished"/>
</message>
</context>
</TS>
+608
View File
@@ -0,0 +1,608 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS version="2.1" language="yue">
<context>
<name>IntroPage</name>
<message>
<location filename="src/pages.cpp" line="127"/>
<source>Introduction</source>
<translation>介绍</translation>
</message>
<message>
<location filename="src/pages.cpp" line="128"/>
<source>This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice.</source>
<translation>此嚮導將會導入Cockatrice中用到的系列,卡牌和衍生物列表。</translation>
</message>
<message>
<location filename="src/pages.cpp" line="130"/>
<source>Interface language:</source>
<translation>介面語言:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="131"/>
<source>Version:</source>
<translation>版本:</translation>
</message>
</context>
<context>
<name>LoadSetsPage</name>
<message>
<location filename="src/pages.cpp" line="200"/>
<source>Source selection</source>
<translation>選擇來源</translation>
</message>
<message>
<location filename="src/pages.cpp" line="201"/>
<source>Please specify a compatible 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.</source>
<translation>請選擇合適的牌組和卡片清單來源。您可以輸入下載URL或使用電腦中已有的檔案。</translation>
</message>
<message>
<location filename="src/pages.cpp" line="205"/>
<source>Download URL:</source>
<translation>下载URL:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="206"/>
<source>Local file:</source>
<translation>本地檔案:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="207"/>
<source>Restore default URL</source>
<translation>恢復常用URL</translation>
</message>
<message>
<location filename="src/pages.cpp" line="208"/>
<source>Choose file...</source>
<translation>選擇檔案...</translation>
</message>
<message>
<location filename="src/pages.cpp" line="218"/>
<source>Load sets file</source>
<translation>载入牌组檔案</translation>
</message>
<message>
<location filename="src/pages.cpp" line="228"/>
<source>Sets file (%1)</source>
<oldsource>Sets JSON file (%1)</oldsource>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<location filename="src/pages.cpp" line="277"/>
<location filename="src/pages.cpp" line="282"/>
<location filename="src/pages.cpp" line="354"/>
<location filename="src/pages.cpp" line="485"/>
<location filename="src/pages.cpp" line="498"/>
<location filename="src/pages.cpp" line="519"/>
<source>Error</source>
<translation>出現錯誤</translation>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<source>The provided URL is not valid.</source>
<translation>所提供的url無效.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="262"/>
<source>Downloading (0MB)</source>
<translation>下載中 (0MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="277"/>
<source>Please choose a file.</source>
<translation>請選擇檔案</translation>
</message>
<message>
<location filename="src/pages.cpp" line="282"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation>不能開啟檔案 &apos;%1</translation>
</message>
<message>
<location filename="src/pages.cpp" line="345"/>
<source>Downloading (%1MB)</source>
<translation>下載中 (%1MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="354"/>
<source>Network error: %1.</source>
<translation>網路出錯: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="392"/>
<source>Parsing file</source>
<translation>分析檔案中</translation>
</message>
<message>
<location filename="src/pages.cpp" line="414"/>
<source>Xz extraction failed.</source>
<translation>xz解壓縮失敗.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="421"/>
<source>Sorry, this version of Oracle does not support xz compressed files.</source>
<translation>很抱歉,現前Oracle版本不支援xc壓縮檔案</translation>
</message>
<message>
<location filename="src/pages.cpp" line="441"/>
<source>Failed to open Zip archive: %1.</source>
<translation>未能開啟壓縮文件: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="446"/>
<source>Zip extraction failed: the Zip archive doesn&apos;t contain exactly one file.</source>
<translation>解壓縮失敗:這壓縮文件擁有超過一個檔案.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="454"/>
<source>Zip extraction failed: %1.</source>
<translation>解壓縮失敗: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="462"/>
<source>Sorry, this version of Oracle does not support zipped files.</source>
<translation>很抱歉,現前Oracle版本不支援壓縮檔案.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="485"/>
<source>Failed to interpret downloaded data.</source>
<translation>不能分析下載資料.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="498"/>
<source>Do you want to download the uncompressed file instead?</source>
<translation>你是否想另再下載未經壓縮的檔案?</translation>
</message>
<message>
<location filename="src/pages.cpp" line="520"/>
<source>The file was retrieved successfully, but it does not contain any sets data.</source>
<translation>雖然檔案成功取回, 但是檔案並未含有任何牌組資料.</translation>
</message>
</context>
<context>
<name>LoadSpoilersPage</name>
<message>
<location filename="src/pages.cpp" line="716"/>
<source>Save spoiler database</source>
<translation>儲存預覽資料庫</translation>
</message>
<message>
<location filename="src/pages.cpp" line="721"/>
<source>XML; spoiler database (*.xml)</source>
<translation>XML ; 預覽資料庫(*.XML)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="726"/>
<source>spoiler</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="731"/>
<source>Spoilers import</source>
<translation>導入預覽卡牌</translation>
</message>
<message>
<location filename="src/pages.cpp" line="732"/>
<source>Please specify a compatible source for spoiler data.</source>
<translation>請指定預覽資料合用來源.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="734"/>
<source>Download URL:</source>
<translation>下载URL:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="735"/>
<source>Local file:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="736"/>
<source>Restore default URL</source>
<translation>恢復常用URL</translation>
</message>
<message>
<location filename="src/pages.cpp" line="737"/>
<source>Choose file...</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="739"/>
<source>The spoiler database will be saved at the following location:</source>
<translation>預覽資料庫將會儲藏於以下位置</translation>
</message>
<message>
<location filename="src/pages.cpp" line="741"/>
<source>Save to a custom path (not recommended)</source>
<translation>儲存到自訂路徑(不建議)</translation>
</message>
</context>
<context>
<name>LoadTokensPage</name>
<message>
<location filename="src/pages.cpp" line="671"/>
<source>Save token database</source>
<translation>儲存衍生物資料庫</translation>
</message>
<message>
<location filename="src/pages.cpp" line="676"/>
<source>XML; token database (*.xml)</source>
<translation>XML; 衍生物資料庫 (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="681"/>
<source>tokens</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="686"/>
<source>Tokens import</source>
<translation>導入衍生物</translation>
</message>
<message>
<location filename="src/pages.cpp" line="687"/>
<source>Please specify a compatible source for token data.</source>
<translation>請指定衍生物資料合用來源.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="689"/>
<source>Download URL:</source>
<translation>下载URL:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="690"/>
<source>Local file:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="691"/>
<source>Restore default URL</source>
<translation>恢復常用URL</translation>
</message>
<message>
<location filename="src/pages.cpp" line="692"/>
<source>Choose file...</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="694"/>
<source>The token database will be saved at the following location:</source>
<translation>衍生物資料庫將會儲藏於以下位置:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="696"/>
<source>Save to a custom path (not recommended)</source>
<translation>儲存到自訂路徑(不建議)</translation>
</message>
</context>
<context>
<name>OracleImporter</name>
<message>
<location filename="src/oracleimporter.cpp" line="542"/>
<source>Dummy set containing tokens</source>
<translation>包含衍生物的虚拟牌組</translation>
</message>
</context>
<context>
<name>OracleWizard</name>
<message>
<location filename="src/oraclewizard.cpp" line="101"/>
<source>Oracle Importer</source>
<translation>Oracle導入器</translation>
</message>
</context>
<context>
<name>OutroPage</name>
<message>
<location filename="src/pages.cpp" line="136"/>
<source>Finished</source>
<translation>完成</translation>
</message>
<message>
<location filename="src/pages.cpp" line="137"/>
<source>The wizard has finished.</source>
<translation>嚮導程序工作完成</translation>
</message>
<message>
<location filename="src/pages.cpp" line="138"/>
<source>You can now start using Cockatrice with the newly updated cards.</source>
<translation>Cockatrice已載入更新了卡牌, 現在已經可以使用.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="139"/>
<source>If the card databases don&apos;t reload automatically, restart the Cockatrice client.</source>
<translation>如果卡牌資料庫尚未能自動更新,請把cockatrice用戶端重新開啟.</translation>
</message>
</context>
<context>
<name>SaveSetsPage</name>
<message>
<location filename="src/pages.cpp" line="563"/>
<location filename="src/pages.cpp" line="638"/>
<source>Error</source>
<translation>出現錯誤</translation>
</message>
<message>
<location filename="src/pages.cpp" line="563"/>
<source>No set has been imported.</source>
<translation>沒有牌組被導入。</translation>
</message>
<message>
<location filename="src/pages.cpp" line="574"/>
<source>Sets imported</source>
<translation>已導入牌組</translation>
</message>
<message>
<location filename="src/pages.cpp" line="576"/>
<source>A cockatrice database file of %1 MB has been downloaded.</source>
<translation>有%1MB大小的Cockatrice資料庫檔案已被下載</translation>
</message>
<message>
<location filename="src/pages.cpp" line="579"/>
<source>The following sets have been found:</source>
<translation>已找到以下牌组:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="582"/>
<source>Press &quot;Save&quot; to store the imported cards in the Cockatrice database.</source>
<translation>要將導入卡牌保存於Cockatrice資料庫內請按&quot;儲藏&quot;.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="583"/>
<source>The card database will be saved at the following location:</source>
<translation>卡牌資料庫將被儲藏於以下位置</translation>
</message>
<message>
<location filename="src/pages.cpp" line="585"/>
<source>Save to a custom path (not recommended)</source>
<translation>儲存到自訂路徑(不建議)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="587"/>
<source>&amp;Save</source>
<translation>&amp;儲存</translation>
</message>
<message>
<location filename="src/pages.cpp" line="593"/>
<source>Import finished: %1 cards.</source>
<translation>導入過程完成:成功導入%1張卡牌.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="596"/>
<source>%1: %2 cards imported</source>
<translation>%1:成功導入%2張卡牌.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="605"/>
<source>Save card database</source>
<translation>儲存卡牌資料庫</translation>
</message>
<message>
<location filename="src/pages.cpp" line="606"/>
<source>XML; card database (*.xml)</source>
<translation>XML; 卡牌資料庫 (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="638"/>
<source>The file could not be saved to %1</source>
<translation>檔案未能儲藏於%1。</translation>
</message>
</context>
<context>
<name>SimpleDownloadFilePage</name>
<message>
<location filename="src/pagetemplates.cpp" line="72"/>
<source>Load %1 file</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="82"/>
<source>%1 file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<location filename="src/pagetemplates.cpp" line="129"/>
<location filename="src/pagetemplates.cpp" line="134"/>
<location filename="src/pagetemplates.cpp" line="168"/>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>Error</source>
<translation>出現錯誤</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<source>The provided URL is not valid: </source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="115"/>
<source>Downloading (0MB)</source>
<translation>下載中(0MB)</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="129"/>
<source>Please choose a file.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="134"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="159"/>
<source>Downloading (%1MB)</source>
<translation>下載中 (%1MB)</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="168"/>
<source>Network error: %1.</source>
<translation>網路出錯: %1.</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>The file could not be saved to %1</source>
<translation>檔案未能儲藏於%1</translation>
</message>
</context>
<context>
<name>UnZip</name>
<message>
<location filename="src/zip/unzip.cpp" line="1175"/>
<source>ZIP operation completed successfully.</source>
<translation>檔案壓縮成功</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1176"/>
<source>Failed to initialize or load zlib library.</source>
<translation>zlib函式庫初始化或導入失敗</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1177"/>
<source>zlib library error.</source>
<translation>zlib函式庫出現錯誤</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1178"/>
<source>Unable to create or open file.</source>
<translation>無法創建或開啟檔案。</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1179"/>
<source>Partially corrupted archive. Some files might be extracted.</source>
<translation>本存檔已受到局部損壞,部分被壓縮檔案可能已被解壓.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1180"/>
<source>Corrupted archive.</source>
<translation>存檔已受損壞.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1181"/>
<source>Wrong password.</source>
<translation>密碼錯誤.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1182"/>
<source>No archive has been created yet.</source>
<translation>存檔尚未創建.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1183"/>
<source>File or directory does not exist.</source>
<translation>檔案或目錄並不存在.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1184"/>
<source>File read error.</source>
<translation>檔案讀取出錯</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1185"/>
<source>File write error.</source>
<translation>檔案寫入出錯</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1186"/>
<source>File seek error.</source>
<translation>檔案尋找出錯</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1187"/>
<source>Unable to create a directory.</source>
<translation>無法創建目錄</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1188"/>
<source>Invalid device.</source>
<translation>裝置無效.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1189"/>
<source>Invalid or incompatible zip archive.</source>
<translation>無效或不配合的壓縮存檔.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1190"/>
<source>Inconsistent headers. Archive might be corrupted.</source>
<translation>本檔案標題並不一致.本存檔可能以受損壞.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1194"/>
<source>Unknown error.</source>
<translation>不知名錯誤</translation>
</message>
</context>
<context>
<name>Zip</name>
<message>
<location filename="src/zip/zip.cpp" line="1604"/>
<source>ZIP operation completed successfully.</source>
<translation>檔案壓縮成功</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1605"/>
<source>Failed to initialize or load zlib library.</source>
<translation>zlib函式庫初始化或導入失敗</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1606"/>
<source>zlib library error.</source>
<translation>zlib函式庫出現錯誤</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1607"/>
<source>Unable to create or open file.</source>
<translation>無法創建或開啟檔案。</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1608"/>
<source>No archive has been created yet.</source>
<translation>存檔尚未創建.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1609"/>
<source>File or directory does not exist.</source>
<translation>檔案或目錄並不存在.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1610"/>
<source>File read error.</source>
<translation>檔案讀取出錯.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1611"/>
<source>File write error.</source>
<translation>檔案寫入出錯.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1612"/>
<source>File seek error.</source>
<translation>檔案尋找出錯.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1616"/>
<source>Unknown error.</source>
<translation>不知名錯誤.</translation>
</message>
</context>
<context>
<name>i18n</name>
<message>
<location filename="src/oraclewizard.cpp" line="22"/>
<source>English</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="src/main.cpp" line="62"/>
<source>Only run in spoiler mode</source>
<translation>限於在預覽模式運行</translation>
</message>
<message>
<location filename="src/main.cpp" line="63"/>
<source>Run in no-confirm background mode</source>
<translation type="unfinished"/>
</message>
</context>
</TS>
+608
View File
@@ -0,0 +1,608 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS version="2.1" language="zh-Hans">
<context>
<name>IntroPage</name>
<message>
<location filename="src/pages.cpp" line="127"/>
<source>Introduction</source>
<translation>介绍</translation>
</message>
<message>
<location filename="src/pages.cpp" line="128"/>
<source>This wizard will import the list of sets, cards, and tokens that will be used by Cockatrice.</source>
<translation>此向导将会导入Cockatrice中用到的系列,卡牌和衍生物列表.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="130"/>
<source>Interface language:</source>
<translation>界面语言:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="131"/>
<source>Version:</source>
<translation>版本:</translation>
</message>
</context>
<context>
<name>LoadSetsPage</name>
<message>
<location filename="src/pages.cpp" line="200"/>
<source>Source selection</source>
<translation>选择来源</translation>
</message>
<message>
<location filename="src/pages.cpp" line="201"/>
<source>Please specify a compatible 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.</source>
<translation>请选择合适的牌组和卡片清单来源。您可以输入下载URL或使用电脑中已有的档案。</translation>
</message>
<message>
<location filename="src/pages.cpp" line="205"/>
<source>Download URL:</source>
<translation>下载URL:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="206"/>
<source>Local file:</source>
<translation>本地文件:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="207"/>
<source>Restore default URL</source>
<translation>恢复常用URL</translation>
</message>
<message>
<location filename="src/pages.cpp" line="208"/>
<source>Choose file...</source>
<translation>选择档案...</translation>
</message>
<message>
<location filename="src/pages.cpp" line="218"/>
<source>Load sets file</source>
<translation>载入牌组档案</translation>
</message>
<message>
<location filename="src/pages.cpp" line="228"/>
<source>Sets file (%1)</source>
<oldsource>Sets JSON file (%1)</oldsource>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<location filename="src/pages.cpp" line="277"/>
<location filename="src/pages.cpp" line="282"/>
<location filename="src/pages.cpp" line="354"/>
<location filename="src/pages.cpp" line="485"/>
<location filename="src/pages.cpp" line="498"/>
<location filename="src/pages.cpp" line="519"/>
<source>Error</source>
<translation>出现错误</translation>
</message>
<message>
<location filename="src/pages.cpp" line="258"/>
<source>The provided URL is not valid.</source>
<translation>所提供的url无效.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="262"/>
<source>Downloading (0MB)</source>
<translation>下载中(0MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="277"/>
<source>Please choose a file.</source>
<translation>请选择档案.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="282"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation>不能开启档案 &apos;%1</translation>
</message>
<message>
<location filename="src/pages.cpp" line="345"/>
<source>Downloading (%1MB)</source>
<translation>下载中(%1MB)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="354"/>
<source>Network error: %1.</source>
<translation>网路出错: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="392"/>
<source>Parsing file</source>
<translation>分析档案中</translation>
</message>
<message>
<location filename="src/pages.cpp" line="414"/>
<source>Xz extraction failed.</source>
<translation>xz解压缩失败。</translation>
</message>
<message>
<location filename="src/pages.cpp" line="421"/>
<source>Sorry, this version of Oracle does not support xz compressed files.</source>
<translation>很抱歉,现前Oracle版本不支援xc压缩档案</translation>
</message>
<message>
<location filename="src/pages.cpp" line="441"/>
<source>Failed to open Zip archive: %1.</source>
<translation>未能开启压缩文件: %1.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="446"/>
<source>Zip extraction failed: the Zip archive doesn&apos;t contain exactly one file.</source>
<translation>解压缩失败:这压缩文件拥有超过一个档案.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="454"/>
<source>Zip extraction failed: %1.</source>
<translation>解压缩失败:%1。</translation>
</message>
<message>
<location filename="src/pages.cpp" line="462"/>
<source>Sorry, this version of Oracle does not support zipped files.</source>
<translation>很抱歉,现前Oracle版本不支援压缩档案.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="485"/>
<source>Failed to interpret downloaded data.</source>
<translation>不能分析下载资料.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="498"/>
<source>Do you want to download the uncompressed file instead?</source>
<translation>你是否想另再下载未经压缩的档案?</translation>
</message>
<message>
<location filename="src/pages.cpp" line="520"/>
<source>The file was retrieved successfully, but it does not contain any sets data.</source>
<translation>虽然档案成功取回, 但是档案并未含有任何牌组资料.</translation>
</message>
</context>
<context>
<name>LoadSpoilersPage</name>
<message>
<location filename="src/pages.cpp" line="716"/>
<source>Save spoiler database</source>
<translation>储存预览资料库</translation>
</message>
<message>
<location filename="src/pages.cpp" line="721"/>
<source>XML; spoiler database (*.xml)</source>
<translation>XML ; 预览资料库(*.XML)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="726"/>
<source>spoiler</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="731"/>
<source>Spoilers import</source>
<translation>导入预览卡牌</translation>
</message>
<message>
<location filename="src/pages.cpp" line="732"/>
<source>Please specify a compatible source for spoiler data.</source>
<translation>请指定预览资料合用来源.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="734"/>
<source>Download URL:</source>
<translation>下载URL:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="735"/>
<source>Local file:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="736"/>
<source>Restore default URL</source>
<translation>恢复常用URL</translation>
</message>
<message>
<location filename="src/pages.cpp" line="737"/>
<source>Choose file...</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="739"/>
<source>The spoiler database will be saved at the following location:</source>
<translation>预览资料库将会储藏于以下位置:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="741"/>
<source>Save to a custom path (not recommended)</source>
<translation>保存到自定义路径(不推荐)</translation>
</message>
</context>
<context>
<name>LoadTokensPage</name>
<message>
<location filename="src/pages.cpp" line="671"/>
<source>Save token database</source>
<translation>储存衍生物资料库</translation>
</message>
<message>
<location filename="src/pages.cpp" line="676"/>
<source>XML; token database (*.xml)</source>
<translation>XML; 衍生物资料库 (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="681"/>
<source>tokens</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="686"/>
<source>Tokens import</source>
<translation>导入衍生物</translation>
</message>
<message>
<location filename="src/pages.cpp" line="687"/>
<source>Please specify a compatible source for token data.</source>
<translation>请指定衍生物资料合用来源.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="689"/>
<source>Download URL:</source>
<translation>下载URL:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="690"/>
<source>Local file:</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="691"/>
<source>Restore default URL</source>
<translation>恢复常用URL</translation>
</message>
<message>
<location filename="src/pages.cpp" line="692"/>
<source>Choose file...</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pages.cpp" line="694"/>
<source>The token database will be saved at the following location:</source>
<translation>衍生物资料库将会储藏于以下位置:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="696"/>
<source>Save to a custom path (not recommended)</source>
<translation>保存到自定义路径(不推荐)</translation>
</message>
</context>
<context>
<name>OracleImporter</name>
<message>
<location filename="src/oracleimporter.cpp" line="542"/>
<source>Dummy set containing tokens</source>
<translation>包含衍生物的虚拟牌组</translation>
</message>
</context>
<context>
<name>OracleWizard</name>
<message>
<location filename="src/oraclewizard.cpp" line="101"/>
<source>Oracle Importer</source>
<translation>Oracle导入器</translation>
</message>
</context>
<context>
<name>OutroPage</name>
<message>
<location filename="src/pages.cpp" line="136"/>
<source>Finished</source>
<translation>完成</translation>
</message>
<message>
<location filename="src/pages.cpp" line="137"/>
<source>The wizard has finished.</source>
<translation>向导程式工作完成.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="138"/>
<source>You can now start using Cockatrice with the newly updated cards.</source>
<translation>Cockatrice已载入更新了卡牌, 现在已经可以使用.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="139"/>
<source>If the card databases don&apos;t reload automatically, restart the Cockatrice client.</source>
<translation>如果卡牌资料库尚未能自动更新,请把cockatrice用户端重新开启.</translation>
</message>
</context>
<context>
<name>SaveSetsPage</name>
<message>
<location filename="src/pages.cpp" line="563"/>
<location filename="src/pages.cpp" line="638"/>
<source>Error</source>
<translation>出现错误</translation>
</message>
<message>
<location filename="src/pages.cpp" line="563"/>
<source>No set has been imported.</source>
<translation>没有牌组被导入。</translation>
</message>
<message>
<location filename="src/pages.cpp" line="574"/>
<source>Sets imported</source>
<translation>已导入牌组</translation>
</message>
<message>
<location filename="src/pages.cpp" line="576"/>
<source>A cockatrice database file of %1 MB has been downloaded.</source>
<translation>有%1MB大小的Cockatrice资料库档案已被下载.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="579"/>
<source>The following sets have been found:</source>
<translation>已找到以下牌组:</translation>
</message>
<message>
<location filename="src/pages.cpp" line="582"/>
<source>Press &quot;Save&quot; to store the imported cards in the Cockatrice database.</source>
<translation>要将导入卡牌保存于Cockatrice资料库内请按&quot;储藏&quot;.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="583"/>
<source>The card database will be saved at the following location:</source>
<translation>卡牌资料库将被储藏于以下位置</translation>
</message>
<message>
<location filename="src/pages.cpp" line="585"/>
<source>Save to a custom path (not recommended)</source>
<translation>保存到自定义路径(不推荐)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="587"/>
<source>&amp;Save</source>
<translation>&amp;储存</translation>
</message>
<message>
<location filename="src/pages.cpp" line="593"/>
<source>Import finished: %1 cards.</source>
<translation>导入过程完成:成功导入%1张卡牌.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="596"/>
<source>%1: %2 cards imported</source>
<translation>%1:成功导入%2张卡牌.</translation>
</message>
<message>
<location filename="src/pages.cpp" line="605"/>
<source>Save card database</source>
<translation>储存卡牌资料库</translation>
</message>
<message>
<location filename="src/pages.cpp" line="606"/>
<source>XML; card database (*.xml)</source>
<translation>XML; 卡牌资料库 (*.xml)</translation>
</message>
<message>
<location filename="src/pages.cpp" line="638"/>
<source>The file could not be saved to %1</source>
<translation>档案未能储藏于%1。</translation>
</message>
</context>
<context>
<name>SimpleDownloadFilePage</name>
<message>
<location filename="src/pagetemplates.cpp" line="72"/>
<source>Load %1 file</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="82"/>
<source>%1 file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<location filename="src/pagetemplates.cpp" line="129"/>
<location filename="src/pagetemplates.cpp" line="134"/>
<location filename="src/pagetemplates.cpp" line="168"/>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>Error</source>
<translation>出现错误</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="111"/>
<source>The provided URL is not valid: </source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="115"/>
<source>Downloading (0MB)</source>
<translation>下载中(0MB)</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="129"/>
<source>Please choose a file.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="134"/>
<source>Cannot open file &apos;%1&apos;.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="159"/>
<source>Downloading (%1MB)</source>
<translation>下载中(%1MB)</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="168"/>
<source>Network error: %1.</source>
<translation>网路出错: %1.</translation>
</message>
<message>
<location filename="src/pagetemplates.cpp" line="224"/>
<source>The file could not be saved to %1</source>
<translation>档案未能储藏于%1</translation>
</message>
</context>
<context>
<name>UnZip</name>
<message>
<location filename="src/zip/unzip.cpp" line="1175"/>
<source>ZIP operation completed successfully.</source>
<translation>档案压缩成功.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1176"/>
<source>Failed to initialize or load zlib library.</source>
<translation>zlib函式库初始化或导入失败.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1177"/>
<source>zlib library error.</source>
<translation>zlib函式库出现错误.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1178"/>
<source>Unable to create or open file.</source>
<translation>无法创建或开启档案。</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1179"/>
<source>Partially corrupted archive. Some files might be extracted.</source>
<translation>本存档已受到局部损坏,部分被压缩档案可能已被解压.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1180"/>
<source>Corrupted archive.</source>
<translation>存档已受损坏.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1181"/>
<source>Wrong password.</source>
<translation>密码错误.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1182"/>
<source>No archive has been created yet.</source>
<translation>存档尚未创建.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1183"/>
<source>File or directory does not exist.</source>
<translation>档案或目录并不存在.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1184"/>
<source>File read error.</source>
<translation>档案读取出错.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1185"/>
<source>File write error.</source>
<translation>档案写入出错.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1186"/>
<source>File seek error.</source>
<translation>檔案查找出錯.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1187"/>
<source>Unable to create a directory.</source>
<translation>无法创建目录.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1188"/>
<source>Invalid device.</source>
<translation>装置无效.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1189"/>
<source>Invalid or incompatible zip archive.</source>
<translation>无效或不配合的压缩存档.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1190"/>
<source>Inconsistent headers. Archive might be corrupted.</source>
<translation>本档案标题并不一致.本存档可能以受损坏.</translation>
</message>
<message>
<location filename="src/zip/unzip.cpp" line="1194"/>
<source>Unknown error.</source>
<translation>不知名错误.</translation>
</message>
</context>
<context>
<name>Zip</name>
<message>
<location filename="src/zip/zip.cpp" line="1604"/>
<source>ZIP operation completed successfully.</source>
<translation>档案压缩成功.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1605"/>
<source>Failed to initialize or load zlib library.</source>
<translation>zlib函式库初始化或导入失败.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1606"/>
<source>zlib library error.</source>
<translation>zlib函式库出现错误.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1607"/>
<source>Unable to create or open file.</source>
<translation>无法创建或开启档案。</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1608"/>
<source>No archive has been created yet.</source>
<translation>存档尚未创建.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1609"/>
<source>File or directory does not exist.</source>
<translation>档案或目录并不存在.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1610"/>
<source>File read error.</source>
<translation>档案读取出错.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1611"/>
<source>File write error.</source>
<translation>档案写入出错.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1612"/>
<source>File seek error.</source>
<translation>档案寻找出错.</translation>
</message>
<message>
<location filename="src/zip/zip.cpp" line="1616"/>
<source>Unknown error.</source>
<translation>无法创建目录.</translation>
</message>
</context>
<context>
<name>i18n</name>
<message>
<location filename="src/oraclewizard.cpp" line="22"/>
<source>English</source>
<translation>简体中文 (Chinese Simplified)</translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="src/main.cpp" line="62"/>
<source>Only run in spoiler mode</source>
<translation>限于在预览模式运行</translation>
</message>
<message>
<location filename="src/main.cpp" line="63"/>
<source>Run in no-confirm background mode</source>
<translation type="unfinished"/>
</message>
</context>
</TS>