diff options
120 files changed, 2912 insertions, 1698 deletions
diff --git a/Makefile.am b/Makefile.am index 4f623f6c64..e26627f3e3 100644 --- a/Makefile.am +++ b/Makefile.am @@ -15,6 +15,7 @@ OSX_DEPLOY_SCRIPT=$(top_srcdir)/contrib/macdeploy/macdeployqtplus OSX_FANCY_PLIST=$(top_srcdir)/contrib/macdeploy/fancy.plist OSX_INSTALLER_ICONS=$(top_srcdir)/src/qt/res/icons/bitcoin.icns OSX_PLIST=$(top_srcdir)/share/qt/Info.plist #not installed +OSX_QT_TRANSLATIONS = da,de,es,hu,ru,uk,zh_CN,zh_TW DIST_DOCS = $(wildcard doc/*.md) $(wildcard doc/release-notes/*.md) @@ -24,7 +25,8 @@ WINDOWS_PACKAGING = $(top_srcdir)/share/pixmaps/bitcoin.ico \ $(top_srcdir)/doc/README_windows.txt OSX_PACKAGING = $(OSX_DEPLOY_SCRIPT) $(OSX_FANCY_PLIST) $(OSX_INSTALLER_ICONS) \ - $(top_srcdir)/contrib/macdeploy/background.png + $(top_srcdir)/contrib/macdeploy/background.png \ + $(top_srcdir)/contrib/macdeploy/DS_Store COVERAGE_INFO = baseline_filtered_combined.info baseline.info block_test.info \ leveldb_baseline.info test_bitcoin_filtered.info total_coverage.info \ @@ -45,9 +47,9 @@ distcleancheck: $(BITCOIN_WIN_INSTALLER): $(BITCOIND_BIN) $(BITCOIN_QT_BIN) $(BITCOIN_CLI_BIN) $(MKDIR_P) $(top_builddir)/release - $(INSTALL_STRIP_PROGRAM) $(BITCOIND_BIN) $(top_builddir)/release - $(INSTALL_STRIP_PROGRAM) $(BITCOIN_QT_BIN) $(top_builddir)/release - $(INSTALL_STRIP_PROGRAM) $(BITCOIN_CLI_BIN) $(top_builddir)/release + STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $(BITCOIND_BIN) $(top_builddir)/release + STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $(BITCOIN_QT_BIN) $(top_builddir)/release + STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $(BITCOIN_CLI_BIN) $(top_builddir)/release @test -f $(MAKENSIS) && $(MAKENSIS) $(top_builddir)/share/setup.nsi || \ echo error: could not build $@ @@ -72,15 +74,25 @@ $(OSX_APP)/Contents/Resources/bitcoin.icns: $(OSX_INSTALLER_ICONS) $(OSX_APP)/Contents/MacOS/Bitcoin-Qt: $(BITCOIN_QT_BIN) $(MKDIR_P) $(@D) - $(INSTALL_STRIP_PROGRAM) $< $@ + STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $< $@ OSX_APP_BUILT=$(OSX_APP)/Contents/PkgInfo $(OSX_APP)/Contents/Resources/empty.lproj \ $(OSX_APP)/Contents/Resources/bitcoin.icns $(OSX_APP)/Contents/Info.plist \ $(OSX_APP)/Contents/MacOS/Bitcoin-Qt +if BUILD_DARWIN $(OSX_DMG): $(OSX_APP_BUILT) $(OSX_PACKAGING) - $(OSX_DEPLOY_SCRIPT) $(OSX_APP) -add-qt-tr da,de,es,hu,ru,uk,zh_CN,zh_TW -dmg -fancy $(OSX_FANCY_PLIST) -verbose 2 + $(OSX_DEPLOY_SCRIPT) $(OSX_APP) -add-qt-tr $(OSX_QT_TRANSLATIONS) -dmg -fancy $(OSX_FANCY_PLIST) -verbose 2 +else +$(OSX_DMG): $(OSX_APP_BUILT) $(OSX_PACKAGING) + INSTALLNAMETOOL=$(INSTALLNAMETOOL) OTOOL=$(OTOOL) STRIP=$(STRIP) $(OSX_DEPLOY_SCRIPT) $(OSX_APP) -add-qt-tr $(OSX_QT_TRANSLATIONS) -verbose 2 + $(MKDIR_P) dist/.background + $(INSTALL) contrib/macdeploy/background.png dist/.background + $(INSTALL) contrib/macdeploy/DS_Store dist/.DS_Store + cd dist; $(LN_S) /Applications Applications + $(GENISOIMAGE) -no-cache-inodes -l -probe -V "Bitcoin-Qt" -no-pad -r -apple -o $@ dist +endif if TARGET_DARWIN appbundle: $(OSX_APP_BUILT) diff --git a/README b/README deleted file mode 100644 index 9edd5a2121..0000000000 --- a/README +++ /dev/null @@ -1,21 +0,0 @@ -AuthServiceProxy is an improved version of python-jsonrpc. - -It includes the following generic improvements: - -- HTTP connections persist for the life of the AuthServiceProxy object -- sends protocol 'version', per JSON-RPC 1.1 -- sends proper, incrementing 'id' -- uses standard Python json lib - -It also includes the following bitcoin-specific details: - -- sends Basic HTTP authentication headers -- parses all JSON numbers that look like floats as Decimal - -Installation: - -- change the first line of setup.py to point to the directory of your installation of python 2.* -- run setup.py - -Note: This will only install bitcoinrpc. If you also want to install jsonrpc to preserve -backwards compatibility, you have to replace 'bitcoinrpc' with 'jsonrpc' in setup.py and run it again. diff --git a/bitcoinrpc/.gitignore b/bitcoinrpc/.gitignore deleted file mode 100644 index 2f78cf5b66..0000000000 --- a/bitcoinrpc/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc - diff --git a/bitcoinrpc/__init__.py b/bitcoinrpc/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 --- a/bitcoinrpc/__init__.py +++ /dev/null diff --git a/bitcoinrpc/authproxy.py b/bitcoinrpc/authproxy.py deleted file mode 100644 index 2914477170..0000000000 --- a/bitcoinrpc/authproxy.py +++ /dev/null @@ -1,140 +0,0 @@ - -""" - Copyright 2011 Jeff Garzik - - AuthServiceProxy has the following improvements over python-jsonrpc's - ServiceProxy class: - - - HTTP connections persist for the life of the AuthServiceProxy object - (if server supports HTTP/1.1) - - sends protocol 'version', per JSON-RPC 1.1 - - sends proper, incrementing 'id' - - sends Basic HTTP authentication headers - - parses all JSON numbers that look like floats as Decimal - - uses standard Python json lib - - Previous copyright, from python-jsonrpc/jsonrpc/proxy.py: - - Copyright (c) 2007 Jan-Klaas Kollhof - - This file is part of jsonrpc. - - jsonrpc is free software; you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 2.1 of the License, or - (at your option) any later version. - - This software is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this software; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -""" - -try: - import http.client as httplib -except ImportError: - import httplib -import base64 -import json -import decimal -try: - import urllib.parse as urlparse -except ImportError: - import urlparse - -USER_AGENT = "AuthServiceProxy/0.1" - -HTTP_TIMEOUT = 30 - - -class JSONRPCException(Exception): - def __init__(self, rpc_error): - Exception.__init__(self) - self.error = rpc_error - - -class AuthServiceProxy(object): - def __init__(self, service_url, service_name=None, timeout=HTTP_TIMEOUT, connection=None): - self.__service_url = service_url - self.__service_name = service_name - self.__url = urlparse.urlparse(service_url) - if self.__url.port is None: - port = 80 - else: - port = self.__url.port - self.__id_count = 0 - (user, passwd) = (self.__url.username, self.__url.password) - try: - user = user.encode('utf8') - except AttributeError: - pass - try: - passwd = passwd.encode('utf8') - except AttributeError: - pass - authpair = user + b':' + passwd - self.__auth_header = b'Basic ' + base64.b64encode(authpair) - - if connection: - # Callables re-use the connection of the original proxy - self.__conn = connection - elif self.__url.scheme == 'https': - self.__conn = httplib.HTTPSConnection(self.__url.hostname, port, - None, None, False, - timeout) - else: - self.__conn = httplib.HTTPConnection(self.__url.hostname, port, - False, timeout) - - def __getattr__(self, name): - if name.startswith('__') and name.endswith('__'): - # Python internal stuff - raise AttributeError - if self.__service_name is not None: - name = "%s.%s" % (self.__service_name, name) - return AuthServiceProxy(self.__service_url, name, connection=self.__conn) - - def __call__(self, *args): - self.__id_count += 1 - - postdata = json.dumps({'version': '1.1', - 'method': self.__service_name, - 'params': args, - 'id': self.__id_count}) - self.__conn.request('POST', self.__url.path, postdata, - {'Host': self.__url.hostname, - 'User-Agent': USER_AGENT, - 'Authorization': self.__auth_header, - 'Content-type': 'application/json'}) - - response = self._get_response() - if response['error'] is not None: - raise JSONRPCException(response['error']) - elif 'result' not in response: - raise JSONRPCException({ - 'code': -343, 'message': 'missing JSON-RPC result'}) - else: - return response['result'] - - def _batch(self, rpc_call_list): - postdata = json.dumps(list(rpc_call_list)) - self.__conn.request('POST', self.__url.path, postdata, - {'Host': self.__url.hostname, - 'User-Agent': USER_AGENT, - 'Authorization': self.__auth_header, - 'Content-type': 'application/json'}) - - return self._get_response() - - def _get_response(self): - http_response = self.__conn.getresponse() - if http_response is None: - raise JSONRPCException({ - 'code': -342, 'message': 'missing HTTP response from server'}) - - return json.loads(http_response.read().decode('utf8'), - parse_float=decimal.Decimal) diff --git a/configure.ac b/configure.ac index 9d5457f03b..45cd023bb1 100644 --- a/configure.ac +++ b/configure.ac @@ -121,6 +121,7 @@ AC_PROG_CPP AC_PROG_CXXCPP AC_PROG_INSTALL AC_PROG_OBJC +AC_PROG_LN_S m4_ifdef([AC_PROG_OBJCXX],[AC_PROG_OBJCXX]) AC_PROG_MKDIR_P AC_PROG_SED @@ -137,6 +138,23 @@ AC_PATH_PROG(XGETTEXT,xgettext) AC_PATH_PROG(HEXDUMP,hexdump) PKG_PROG_PKG_CONFIG +# Enable debug +AC_ARG_ENABLE([debug], + [AS_HELP_STRING([--enable-debug], + [use debug compiler flags and macros (default is no)])], + [enable_debug=$enableval], + [enable_debug=no]) + +if test "x$enable_debug" = xyes; then + if test "x$GCC" = xyes; then + CFLAGS="-g3 -O0 -DDEBUG" + fi + + if test "x$GXX" = xyes; then + CXXFLAGS="-g3 -O0 -DDEBUG" + fi +fi + ## TODO: Remove these hard-coded paths and flags. They are here for the sake of ## compatibility with the legacy buildsystem. ## @@ -205,6 +223,7 @@ case $host in TARGET_OS=darwin LEVELDB_TARGET_FLAGS="TARGET_OS=Darwin" if test x$cross_compiling != xyes; then + BUILD_OS=darwin AC_CHECK_PROG([PORT],port, port) if test x$PORT = xport; then dnl add default macports paths @@ -221,6 +240,17 @@ case $host in CPPFLAGS="$CPPFLAGS -I$bdb_prefix/include" LIBS="$LIBS -L$bdb_prefix/lib" fi + else + case $build_os in + *darwin*) + BUILD_OS=darwin + ;; + *) + AC_PATH_TOOL([INSTALLNAMETOOL], [install_name_tool], install_name_tool) + AC_PATH_TOOL([OTOOL], [otool], otool) + AC_PATH_PROGS([GENISOIMAGE], [genisoimage mkisofs],genisoimage) + ;; + esac fi CPPFLAGS="$CPPFLAGS -DMAC_OSX" @@ -654,6 +684,7 @@ if test "x$use_tests$build_bitcoind$use_qt" = "xnonono"; then fi AM_CONDITIONAL([TARGET_DARWIN], [test x$TARGET_OS = xdarwin]) +AM_CONDITIONAL([BUILD_DARWIN], [test x$BUILD_OS = xdarwin]) AM_CONDITIONAL([TARGET_WINDOWS], [test x$TARGET_OS = xwindows]) AM_CONDITIONAL([ENABLE_WALLET],[test x$enable_wallet == xyes]) AM_CONDITIONAL([USE_QRCODE], [test x$use_qr = xyes]) diff --git a/contrib/bitcoind.bash-completion b/contrib/bitcoind.bash-completion index dd6c1ce819..03ef173c09 100644 --- a/contrib/bitcoind.bash-completion +++ b/contrib/bitcoind.bash-completion @@ -1,5 +1,5 @@ -# bash programmable completion for bitcoind(1) -# Copyright (c) 2012 Christian von Roques <roques@mti.ag> +# bash programmable completion for bitcoind(1) and bitcoin-cli(1) +# Copyright (c) 2012,2014 Christian von Roques <roques@mti.ag> # Distributed under the MIT/X11 software license, see the accompanying # file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -37,9 +37,35 @@ _bitcoind() { COMPREPLY=() _get_comp_words_by_ref -n = cur prev words cword + if ((cword > 4)); then + case ${words[cword-4]} in + signrawtransaction) + COMPREPLY=( $( compgen -W "ALL NONE SINGLE ALL|ANYONECANPAY NONE|ANYONECANPAY SINGLE|ANYONECANPAY" -- "$cur" ) ) + return 0 + ;; + esac + fi + + if ((cword > 3)); then + case ${words[cword-3]} in + addmultisigaddress) + _bitcoin_accounts + return 0 + ;; + gettxout|importprivkey) + COMPREPLY=( $( compgen -W "true false" -- "$cur" ) ) + return 0 + ;; + esac + fi + if ((cword > 2)); then case ${words[cword-2]} in - listreceivedbyaccount|listreceivedbyaddress) + addnode) + COMPREPLY=( $( compgen -W "add remove onetry" -- "$cur" ) ) + return 0 + ;; + getblock|getrawtransaction|listreceivedbyaccount|listreceivedbyaddress|sendrawtransaction) COMPREPLY=( $( compgen -W "true false" -- "$cur" ) ) return 0 ;; @@ -51,11 +77,11 @@ _bitcoind() { fi case "$prev" in - backupwallet) + backupwallet|dumpwallet|importwallet) _filedir return 0 ;; - setgenerate) + getmempool|lockunspent|setgenerate) COMPREPLY=( $( compgen -W "true false" -- "$cur" ) ) return 0 ;; @@ -66,7 +92,7 @@ _bitcoind() { esac case "$cur" in - -conf=*|-pid=*|-rpcsslcertificatechainfile=*|-rpcsslprivatekeyfile=*) + -conf=*|-pid=*|-loadblock=*|-wallet=*|-rpcsslcertificatechainfile=*|-rpcsslprivatekeyfile=*) cur="${cur#*=}" _filedir return 0 @@ -103,7 +129,7 @@ _bitcoind() { esac } -complete -F _bitcoind bitcoind +complete -F _bitcoind bitcoind bitcoin-cli } # Local variables: diff --git a/contrib/bitrpc/bitrpc.py b/contrib/bitrpc/bitrpc.py index b02b299177..a840bc2020 100644 --- a/contrib/bitrpc/bitrpc.py +++ b/contrib/bitrpc/bitrpc.py @@ -10,315 +10,315 @@ rpcpass = "" if rpcpass == "": - access = ServiceProxy("http://127.0.0.1:8332") + access = ServiceProxy("http://127.0.0.1:8332") else: - access = ServiceProxy("http://"+rpcuser+":"+rpcpass+"@127.0.0.1:8332") + access = ServiceProxy("http://"+rpcuser+":"+rpcpass+"@127.0.0.1:8332") cmd = sys.argv[1].lower() if cmd == "backupwallet": - try: - path = raw_input("Enter destination path/filename: ") - print access.backupwallet(path) - except: - print "\n---An error occurred---\n" + try: + path = raw_input("Enter destination path/filename: ") + print access.backupwallet(path) + except: + print "\n---An error occurred---\n" elif cmd == "getaccount": - try: - addr = raw_input("Enter a Bitcoin address: ") - print access.getaccount(addr) - except: - print "\n---An error occurred---\n" + try: + addr = raw_input("Enter a Bitcoin address: ") + print access.getaccount(addr) + except: + print "\n---An error occurred---\n" elif cmd == "getaccountaddress": - try: - acct = raw_input("Enter an account name: ") - print access.getaccountaddress(acct) - except: - print "\n---An error occurred---\n" + try: + acct = raw_input("Enter an account name: ") + print access.getaccountaddress(acct) + except: + print "\n---An error occurred---\n" elif cmd == "getaddressesbyaccount": - try: - acct = raw_input("Enter an account name: ") - print access.getaddressesbyaccount(acct) - except: - print "\n---An error occurred---\n" + try: + acct = raw_input("Enter an account name: ") + print access.getaddressesbyaccount(acct) + except: + print "\n---An error occurred---\n" elif cmd == "getbalance": - try: - acct = raw_input("Enter an account (optional): ") - mc = raw_input("Minimum confirmations (optional): ") - try: - print access.getbalance(acct, mc) - except: - print access.getbalance() - except: - print "\n---An error occurred---\n" + try: + acct = raw_input("Enter an account (optional): ") + mc = raw_input("Minimum confirmations (optional): ") + try: + print access.getbalance(acct, mc) + except: + print access.getbalance() + except: + print "\n---An error occurred---\n" elif cmd == "getblockbycount": - try: - height = raw_input("Height: ") - print access.getblockbycount(height) - except: - print "\n---An error occurred---\n" + try: + height = raw_input("Height: ") + print access.getblockbycount(height) + except: + print "\n---An error occurred---\n" elif cmd == "getblockcount": - try: - print access.getblockcount() - except: - print "\n---An error occurred---\n" + try: + print access.getblockcount() + except: + print "\n---An error occurred---\n" elif cmd == "getblocknumber": - try: - print access.getblocknumber() - except: - print "\n---An error occurred---\n" + try: + print access.getblocknumber() + except: + print "\n---An error occurred---\n" elif cmd == "getconnectioncount": - try: - print access.getconnectioncount() - except: - print "\n---An error occurred---\n" + try: + print access.getconnectioncount() + except: + print "\n---An error occurred---\n" elif cmd == "getdifficulty": - try: - print access.getdifficulty() - except: - print "\n---An error occurred---\n" + try: + print access.getdifficulty() + except: + print "\n---An error occurred---\n" elif cmd == "getgenerate": - try: - print access.getgenerate() - except: - print "\n---An error occurred---\n" + try: + print access.getgenerate() + except: + print "\n---An error occurred---\n" elif cmd == "gethashespersec": - try: - print access.gethashespersec() - except: - print "\n---An error occurred---\n" + try: + print access.gethashespersec() + except: + print "\n---An error occurred---\n" elif cmd == "getinfo": - try: - print access.getinfo() - except: - print "\n---An error occurred---\n" + try: + print access.getinfo() + except: + print "\n---An error occurred---\n" elif cmd == "getnewaddress": - try: - acct = raw_input("Enter an account name: ") - try: - print access.getnewaddress(acct) - except: - print access.getnewaddress() - except: - print "\n---An error occurred---\n" + try: + acct = raw_input("Enter an account name: ") + try: + print access.getnewaddress(acct) + except: + print access.getnewaddress() + except: + print "\n---An error occurred---\n" elif cmd == "getreceivedbyaccount": - try: - acct = raw_input("Enter an account (optional): ") - mc = raw_input("Minimum confirmations (optional): ") - try: - print access.getreceivedbyaccount(acct, mc) - except: - print access.getreceivedbyaccount() - except: - print "\n---An error occurred---\n" + try: + acct = raw_input("Enter an account (optional): ") + mc = raw_input("Minimum confirmations (optional): ") + try: + print access.getreceivedbyaccount(acct, mc) + except: + print access.getreceivedbyaccount() + except: + print "\n---An error occurred---\n" elif cmd == "getreceivedbyaddress": - try: - addr = raw_input("Enter a Bitcoin address (optional): ") - mc = raw_input("Minimum confirmations (optional): ") - try: - print access.getreceivedbyaddress(addr, mc) - except: - print access.getreceivedbyaddress() - except: - print "\n---An error occurred---\n" + try: + addr = raw_input("Enter a Bitcoin address (optional): ") + mc = raw_input("Minimum confirmations (optional): ") + try: + print access.getreceivedbyaddress(addr, mc) + except: + print access.getreceivedbyaddress() + except: + print "\n---An error occurred---\n" elif cmd == "gettransaction": - try: - txid = raw_input("Enter a transaction ID: ") - print access.gettransaction(txid) - except: - print "\n---An error occurred---\n" + try: + txid = raw_input("Enter a transaction ID: ") + print access.gettransaction(txid) + except: + print "\n---An error occurred---\n" elif cmd == "getwork": - try: - data = raw_input("Data (optional): ") - try: - print access.gettransaction(data) - except: - print access.gettransaction() - except: - print "\n---An error occurred---\n" + try: + data = raw_input("Data (optional): ") + try: + print access.gettransaction(data) + except: + print access.gettransaction() + except: + print "\n---An error occurred---\n" elif cmd == "help": - try: - cmd = raw_input("Command (optional): ") - try: - print access.help(cmd) - except: - print access.help() - except: - print "\n---An error occurred---\n" + try: + cmd = raw_input("Command (optional): ") + try: + print access.help(cmd) + except: + print access.help() + except: + print "\n---An error occurred---\n" elif cmd == "listaccounts": - try: - mc = raw_input("Minimum confirmations (optional): ") - try: - print access.listaccounts(mc) - except: - print access.listaccounts() - except: - print "\n---An error occurred---\n" + try: + mc = raw_input("Minimum confirmations (optional): ") + try: + print access.listaccounts(mc) + except: + print access.listaccounts() + except: + print "\n---An error occurred---\n" elif cmd == "listreceivedbyaccount": - try: - mc = raw_input("Minimum confirmations (optional): ") - incemp = raw_input("Include empty? (true/false, optional): ") - try: - print access.listreceivedbyaccount(mc, incemp) - except: - print access.listreceivedbyaccount() - except: - print "\n---An error occurred---\n" + try: + mc = raw_input("Minimum confirmations (optional): ") + incemp = raw_input("Include empty? (true/false, optional): ") + try: + print access.listreceivedbyaccount(mc, incemp) + except: + print access.listreceivedbyaccount() + except: + print "\n---An error occurred---\n" elif cmd == "listreceivedbyaddress": - try: - mc = raw_input("Minimum confirmations (optional): ") - incemp = raw_input("Include empty? (true/false, optional): ") - try: - print access.listreceivedbyaddress(mc, incemp) - except: - print access.listreceivedbyaddress() - except: - print "\n---An error occurred---\n" + try: + mc = raw_input("Minimum confirmations (optional): ") + incemp = raw_input("Include empty? (true/false, optional): ") + try: + print access.listreceivedbyaddress(mc, incemp) + except: + print access.listreceivedbyaddress() + except: + print "\n---An error occurred---\n" elif cmd == "listtransactions": - try: - acct = raw_input("Account (optional): ") - count = raw_input("Number of transactions (optional): ") - frm = raw_input("Skip (optional):") - try: - print access.listtransactions(acct, count, frm) - except: - print access.listtransactions() - except: - print "\n---An error occurred---\n" + try: + acct = raw_input("Account (optional): ") + count = raw_input("Number of transactions (optional): ") + frm = raw_input("Skip (optional):") + try: + print access.listtransactions(acct, count, frm) + except: + print access.listtransactions() + except: + print "\n---An error occurred---\n" elif cmd == "move": - try: - frm = raw_input("From: ") - to = raw_input("To: ") - amt = raw_input("Amount:") - mc = raw_input("Minimum confirmations (optional): ") - comment = raw_input("Comment (optional): ") - try: - print access.move(frm, to, amt, mc, comment) - except: - print access.move(frm, to, amt) - except: - print "\n---An error occurred---\n" + try: + frm = raw_input("From: ") + to = raw_input("To: ") + amt = raw_input("Amount:") + mc = raw_input("Minimum confirmations (optional): ") + comment = raw_input("Comment (optional): ") + try: + print access.move(frm, to, amt, mc, comment) + except: + print access.move(frm, to, amt) + except: + print "\n---An error occurred---\n" elif cmd == "sendfrom": - try: - frm = raw_input("From: ") - to = raw_input("To: ") - amt = raw_input("Amount:") - mc = raw_input("Minimum confirmations (optional): ") - comment = raw_input("Comment (optional): ") - commentto = raw_input("Comment-to (optional): ") - try: - print access.sendfrom(frm, to, amt, mc, comment, commentto) - except: - print access.sendfrom(frm, to, amt) - except: - print "\n---An error occurred---\n" + try: + frm = raw_input("From: ") + to = raw_input("To: ") + amt = raw_input("Amount:") + mc = raw_input("Minimum confirmations (optional): ") + comment = raw_input("Comment (optional): ") + commentto = raw_input("Comment-to (optional): ") + try: + print access.sendfrom(frm, to, amt, mc, comment, commentto) + except: + print access.sendfrom(frm, to, amt) + except: + print "\n---An error occurred---\n" elif cmd == "sendmany": - try: - frm = raw_input("From: ") - to = raw_input("To (in format address1:amount1,address2:amount2,...): ") - mc = raw_input("Minimum confirmations (optional): ") - comment = raw_input("Comment (optional): ") - try: - print access.sendmany(frm,to,mc,comment) - except: - print access.sendmany(frm,to) - except: - print "\n---An error occurred---\n" + try: + frm = raw_input("From: ") + to = raw_input("To (in format address1:amount1,address2:amount2,...): ") + mc = raw_input("Minimum confirmations (optional): ") + comment = raw_input("Comment (optional): ") + try: + print access.sendmany(frm,to,mc,comment) + except: + print access.sendmany(frm,to) + except: + print "\n---An error occurred---\n" elif cmd == "sendtoaddress": - try: - to = raw_input("To (in format address1:amount1,address2:amount2,...): ") - amt = raw_input("Amount:") - comment = raw_input("Comment (optional): ") - commentto = raw_input("Comment-to (optional): ") - try: - print access.sendtoaddress(to,amt,comment,commentto) - except: - print access.sendtoaddress(to,amt) - except: - print "\n---An error occurred---\n" + try: + to = raw_input("To (in format address1:amount1,address2:amount2,...): ") + amt = raw_input("Amount:") + comment = raw_input("Comment (optional): ") + commentto = raw_input("Comment-to (optional): ") + try: + print access.sendtoaddress(to,amt,comment,commentto) + except: + print access.sendtoaddress(to,amt) + except: + print "\n---An error occurred---\n" elif cmd == "setaccount": - try: - addr = raw_input("Address: ") - acct = raw_input("Account:") - print access.setaccount(addr,acct) - except: - print "\n---An error occurred---\n" + try: + addr = raw_input("Address: ") + acct = raw_input("Account:") + print access.setaccount(addr,acct) + except: + print "\n---An error occurred---\n" elif cmd == "setgenerate": - try: - gen= raw_input("Generate? (true/false): ") - cpus = raw_input("Max processors/cores (-1 for unlimited, optional):") - try: - print access.setgenerate(gen, cpus) - except: - print access.setgenerate(gen) - except: - print "\n---An error occurred---\n" + try: + gen= raw_input("Generate? (true/false): ") + cpus = raw_input("Max processors/cores (-1 for unlimited, optional):") + try: + print access.setgenerate(gen, cpus) + except: + print access.setgenerate(gen) + except: + print "\n---An error occurred---\n" elif cmd == "settxfee": - try: - amt = raw_input("Amount:") - print access.settxfee(amt) - except: - print "\n---An error occurred---\n" + try: + amt = raw_input("Amount:") + print access.settxfee(amt) + except: + print "\n---An error occurred---\n" elif cmd == "stop": - try: - print access.stop() - except: - print "\n---An error occurred---\n" + try: + print access.stop() + except: + print "\n---An error occurred---\n" elif cmd == "validateaddress": - try: - addr = raw_input("Address: ") - print access.validateaddress(addr) - except: - print "\n---An error occurred---\n" + try: + addr = raw_input("Address: ") + print access.validateaddress(addr) + except: + print "\n---An error occurred---\n" elif cmd == "walletpassphrase": - try: - pwd = raw_input("Enter wallet passphrase: ") - access.walletpassphrase(pwd, 60) - print "\n---Wallet unlocked---\n" - except: - print "\n---An error occurred---\n" + try: + pwd = raw_input("Enter wallet passphrase: ") + access.walletpassphrase(pwd, 60) + print "\n---Wallet unlocked---\n" + except: + print "\n---An error occurred---\n" elif cmd == "walletpassphrasechange": - try: - pwd = raw_input("Enter old wallet passphrase: ") - pwd2 = raw_input("Enter new wallet passphrase: ") - access.walletpassphrasechange(pwd, pwd2) - print - print "\n---Passphrase changed---\n" - except: - print - print "\n---An error occurred---\n" - print + try: + pwd = raw_input("Enter old wallet passphrase: ") + pwd2 = raw_input("Enter new wallet passphrase: ") + access.walletpassphrasechange(pwd, pwd2) + print + print "\n---Passphrase changed---\n" + except: + print + print "\n---An error occurred---\n" + print else: - print "Command not found or not supported"
\ No newline at end of file + print "Command not found or not supported" diff --git a/contrib/macdeploy/DS_Store b/contrib/macdeploy/DS_Store Binary files differnew file mode 100644 index 0000000000..b9a1e14864 --- /dev/null +++ b/contrib/macdeploy/DS_Store diff --git a/contrib/macdeploy/macdeployqtplus b/contrib/macdeploy/macdeployqtplus index 533be6cffa..5c310df1fc 100755 --- a/contrib/macdeploy/macdeployqtplus +++ b/contrib/macdeploy/macdeployqtplus @@ -196,7 +196,8 @@ class DeploymentInfo(object): def getFrameworks(binaryPath, verbose): if verbose >= 3: print "Inspecting with otool: " + binaryPath - otool = subprocess.Popen(["otool", "-L", binaryPath], stdout=subprocess.PIPE, stderr=subprocess.PIPE) + otoolbin=os.getenv("OTOOL", "otool") + otool = subprocess.Popen([otoolbin, "-L", binaryPath], stdout=subprocess.PIPE, stderr=subprocess.PIPE) o_stdout, o_stderr = otool.communicate() if otool.returncode != 0: if verbose >= 1: @@ -221,7 +222,8 @@ def getFrameworks(binaryPath, verbose): return libraries def runInstallNameTool(action, *args): - subprocess.check_call(["install_name_tool", "-"+action] + list(args)) + installnametoolbin=os.getenv("INSTALLNAMETOOL", "install_name_tool") + subprocess.check_call([installnametoolbin, "-"+action] + list(args)) def changeInstallName(oldName, newName, binaryPath, verbose): if verbose >= 3: @@ -239,10 +241,11 @@ def changeIdentification(id, binaryPath, verbose): runInstallNameTool("id", id, binaryPath) def runStrip(binaryPath, verbose): + stripbin=os.getenv("STRIP", "strip") if verbose >= 3: print "Using strip:" print " stripped", binaryPath - subprocess.check_call(["strip", "-x", binaryPath]) + subprocess.check_call([stripbin, "-x", binaryPath]) def copyFramework(framework, path, verbose): if framework.sourceFilePath.startswith("Qt"): @@ -347,6 +350,8 @@ def deployFrameworksForAppBundle(applicationBundle, strip, verbose): def deployPlugins(appBundleInfo, deploymentInfo, strip, verbose): # Lookup available plugins, exclude unneeded plugins = [] + if deploymentInfo.pluginPath is None: + return for dirpath, dirnames, filenames in os.walk(deploymentInfo.pluginPath): pluginDirectory = os.path.relpath(dirpath, deploymentInfo.pluginPath) if pluginDirectory == "designer": @@ -421,8 +426,8 @@ def deployPlugins(appBundleInfo, deploymentInfo, strip, verbose): deployFrameworks([dependency], appBundleInfo.path, destinationPath, strip, verbose, deploymentInfo) qt_conf="""[Paths] -translations=Resources -plugins=PlugIns +Translations=Resources +Plugins=PlugIns """ ap = ArgumentParser(description="""Improved version of macdeployqt. diff --git a/doc/README.md b/doc/README.md index 148db94214..9a7d101185 100644 --- a/doc/README.md +++ b/doc/README.md @@ -1,4 +1,4 @@ -Bitcoin 0.9.0rc1 BETA +Bitcoin 0.9.0 BETA ===================== Copyright (c) 2009-2014 Bitcoin Developers diff --git a/doc/build-unix.md b/doc/build-unix.md index c11c0138a4..31159d44b1 100644 --- a/doc/build-unix.md +++ b/doc/build-unix.md @@ -14,21 +14,21 @@ This will build bitcoin-qt as well if the dependencies are met. Dependencies --------------------- - Library Purpose Description - ------- ------- ----------- - libssl SSL Support Secure communications - libdb4.8 Berkeley DB Wallet storage - libboost Boost C++ Library - miniupnpc UPnP Support Optional firewall-jumping support - qt GUI GUI toolkit - protobuf Payments in GUI Data interchange format used for payment protocol - libqrencode QR codes in GUI Optional for generating QR codes + Library | Purpose | Description + ------------|------------------|---------------------- + libssl | SSL Support | Secure communications + libdb4.8 | Berkeley DB | Wallet storage + libboost | Boost | C++ Library + miniupnpc | UPnP Support | Optional firewall-jumping support + qt | GUI | GUI toolkit + protobuf | Payments in GUI | Data interchange format used for payment protocol + libqrencode | QR codes in GUI | Optional for generating QR codes [miniupnpc](http://miniupnp.free.fr/) may be used for UPnP port mapping. It can be downloaded from [here]( http://miniupnp.tuxfamily.org/files/). UPnP support is compiled in and turned off by default. See the configure options for upnp behavior desired: - --with-miniupnpc No UPnP support miniupnp not required + --without-miniupnpc No UPnP support miniupnp not required --disable-upnp-default (the default) UPnP support turned off by default at runtime --enable-upnp-default UPnP support turned on by default at runtime @@ -46,7 +46,7 @@ Licenses of statically linked libraries: - GCC 4.3.3 - OpenSSL 1.0.1c - Berkeley DB 4.8.30.NC -- Boost 1.37 +- Boost 1.55 - miniupnpc 1.6 - qt 4.8.3 - protobuf 2.5.0 @@ -72,9 +72,10 @@ for Ubuntu 12.04 and later: Ubuntu 12.04 and later have packages for libdb5.1-dev and libdb5.1++-dev, but using these will break binary wallet compatibility, and is not recommended. - -for Ubuntu 13.10: - libboost1.54-all-dev will not work. Remove libboost1.54-all-dev and install libboost1.53-all-dev + +for Ubuntu 13.10: + libboost1.54 will not work, + remove libboost1.54-all-dev and install libboost1.53-all-dev instead. for Debian 7 (Wheezy) and later: The oldstable repository contains db4.8 packages. @@ -82,7 +83,7 @@ for Debian 7 (Wheezy) and later: replacing [mirror] with any official debian mirror. deb http://[mirror]/debian/ oldstable main - + To enable the change run sudo apt-get update @@ -91,8 +92,7 @@ for other Ubuntu & Debian: sudo apt-get install libdb4.8-dev sudo apt-get install libdb4.8++-dev - sudo apt-get install libboost1.37-dev - (If using Boost 1.37, append -mt to the boost libraries in the makefile) + sudo apt-get install libboost1.55-all-dev Optional: @@ -108,15 +108,15 @@ To build without GUI pass `--without-gui`. To build with Qt 4 you need the following: - apt-get install libqt4-dev libprotobuf-dev protobuf-compiler + sudo apt-get install libqt4-dev libprotobuf-dev protobuf-compiler For Qt 5 you need the following: - apt-get install libqt5gui5 libqt5core5 libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev + sudo apt-get install libqt5gui5 libqt5core5 libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev libqrencode (optional) can be installed with: - apt-get install libqrencode-dev + sudo apt-get install libqrencode-dev Once these are installed, they will be found by configure and a bitcoin-qt executable will be built by default. diff --git a/doc/coding.md b/doc/coding.md index 3581d7deb2..ab3a73494a 100644 --- a/doc/coding.md +++ b/doc/coding.md @@ -63,32 +63,32 @@ and its cs_KeyStore lock for example). ------- Threads +- ThreadScriptCheck : Verifies block scripts. + +- ThreadImport : Loads blocks from blk*.dat files or bootstrap.dat. + - StartNode : Starts other threads. -- ThreadGetMyExternalIP : Determines outside-the-firewall IP address, sends addr message to connected peers when it determines it. +- ThreadGetMyExternalIP : Determines outside-the-firewall IP address, sends addr message to connected peers when it determines it. + +- ThreadDNSAddressSeed : Loads addresses of peers from the DNS. + +- ThreadMapPort : Universal plug-and-play startup/shutdown - ThreadSocketHandler : Sends/Receives data from peers on port 8333. - -- ThreadMessageHandler : Higher-level message handling (sending and receiving). - + +- ThreadOpenAddedConnections : Opens network connections to added nodes. + - ThreadOpenConnections : Initiates new connections to peers. -- ThreadTopUpKeyPool : replenishes the keystore's keypool. - -- ThreadCleanWalletPassphrase : re-locks an encrypted wallet after user has unlocked it for a period of time. - -- SendingDialogStartTransfer : used by pay-via-ip-address code (obsolete) - -- ThreadDelayedRepaint : repaint the gui +- ThreadMessageHandler : Higher-level message handling (sending and receiving). + +- DumpAddresses : Dumps IP addresses of nodes to peers.dat. - ThreadFlushWalletDB : Close the wallet.dat file if it hasn't been used in 500ms. - + - ThreadRPCServer : Remote procedure call handler, listens on port 8332 for connections and services them. - -- ThreadBitcoinMiner : Generates bitcoins - -- ThreadMapPort : Universal plug-and-play startup/shutdown - -- Shutdown : Does an orderly shutdown of everything - -- ExitTimeout : Windows-only, sleeps 5 seconds then exits application + +- BitcoinMiner : Generates bitcoins (if wallet is enabled). + +- Shutdown : Does an orderly shutdown of everything. diff --git a/doc/release-notes/release-notes-0.9.0.md b/doc/release-notes/release-notes-0.9.0.md new file mode 100644 index 0000000000..170410ca40 --- /dev/null +++ b/doc/release-notes/release-notes-0.9.0.md @@ -0,0 +1,411 @@ +Bitcoin Core version 0.9.0 is now available from: + + https://bitcoin.org/bin/0.9.0/ + +This is a new major version release, bringing both new features and +bug fixes. + +Please report bugs using the issue tracker at github: + + https://github.com/bitcoin/bitcoin/issues + +How to Upgrade +-------------- + +If you are running an older version, shut it down. Wait until it has completely +shut down (which might take a few minutes for older versions), uninstall all +earlier versions of Bitcoin, then run the installer (on Windows) or just copy +over /Applications/Bitcoin-Qt (on Mac) or bitcoind/bitcoin-qt (on Linux). + +If you are upgrading from version 0.7.2 or earlier, the first time you run +0.9.0 your blockchain files will be re-indexed, which will take anywhere from +30 minutes to several hours, depending on the speed of your machine. + +On Windows, do not forget to uninstall all earlier versions of the Bitcoin +client first, especially if you are switching to the 64-bit version. + +Windows 64-bit installer +------------------------- + +New in 0.9.0 is the Windows 64-bit version of the client. There have been +frequent reports of users running out of virtual memory on 32-bit systems +during the initial sync. Because of this it is recommended to install the +64-bit version if your system supports it. + +NOTE: Release candidate 2 Windows binaries are not code-signed; use PGP +and the SHA256SUMS.asc file to make sure your binaries are correct. +In the final 0.9.0 release, Windows setup.exe binaries will be code-signed. + +OSX 10.5 / 32-bit no longer supported +------------------------------------- + +0.9.0 drops support for older Macs. The minimum requirements are now: +* A 64-bit-capable CPU (see http://support.apple.com/kb/ht3696); +* Mac OS 10.6 or later (see https://support.apple.com/kb/ht1633). + +Downgrading warnings +-------------------- + +The 'chainstate' for this release is not always compatible with previous +releases, so if you run 0.9 and then decide to switch back to a +0.8.x release you might get a blockchain validation error when starting the +old release (due to 'pruned outputs' being omitted from the index of +unspent transaction outputs). + +Running the old release with the -reindex option will rebuild the chainstate +data structures and correct the problem. + +Also, the first time you run a 0.8.x release on a 0.9 wallet it will rescan +the blockchain for missing spent coins, which will take a long time (tens +of minutes on a typical machine). + +Rebranding to Bitcoin Core +--------------------------- + +To reduce confusion between Bitcoin-the-network and Bitcoin-the-software we +have renamed the reference client to Bitcoin Core. + + +OP_RETURN and data in the block chain +------------------------------------- +On OP_RETURN: There was been some confusion and misunderstanding in +the community, regarding the OP_RETURN feature in 0.9 and data in the +blockchain. This change is not an endorsement of storing data in the +blockchain. The OP_RETURN change creates a provably-prunable output, +to avoid data storage schemes -- some of which were already deployed -- +that were storing arbitrary data such as images as forever-unspendable +TX outputs, bloating bitcoin's UTXO database. + +Storing arbitrary data in the blockchain is still a bad idea; it is less +costly and far more efficient to store non-currency data elsewhere. + +Autotools build system +----------------------- + +For 0.9.0 we switched to an autotools-based build system instead of individual +(q)makefiles. + +Using the standard "./autogen.sh; ./configure; make" to build Bitcoin-Qt and +bitcoind makes it easier for experienced open source developers to contribute +to the project. + +Be sure to check doc/build-*.md for your platform before building from source. + +Bitcoin-cli +------------- + +Another change in the 0.9 release is moving away from the bitcoind executable +functioning both as a server and as a RPC client. The RPC client functionality +("tell the running bitcoin daemon to do THIS") was split into a separate +executable, 'bitcoin-cli'. The RPC client code will eventually be removed from +bitcoind, but will be kept for backwards compatibility for a release or two. + +`walletpassphrase` RPC +----------------------- + +The behavior of the `walletpassphrase` RPC when the wallet is already unlocked +has changed between 0.8 and 0.9. + +The 0.8 behavior of `walletpassphrase` is to fail when the wallet is already unlocked: + + > walletpassphrase 1000 + walletunlocktime = now + 1000 + > walletpassphrase 10 + Error: Wallet is already unlocked (old unlock time stays) + +The new behavior of `walletpassphrase` is to set a new unlock time overriding +the old one: + + > walletpassphrase 1000 + walletunlocktime = now + 1000 + > walletpassphrase 10 + walletunlocktime = now + 10 (overriding the old unlock time) + +Transaction malleability-related fixes +-------------------------------------- + +This release contains a few fixes for transaction ID (TXID) malleability +issues: + +- -nospendzeroconfchange command-line option, to avoid spending + zero-confirmation change +- IsStandard() transaction rules tightened to prevent relaying and mining of + mutated transactions +- Additional information in listtransactions/gettransaction output to + report wallet transactions that conflict with each other because + they spend the same outputs. +- Bug fixes to the getbalance/listaccounts RPC commands, which would report + incorrect balances for double-spent (or mutated) transactions. +- New option: -zapwallettxes to rebuild the wallet's transaction information + +Transaction Fees +---------------- + +This release drops the default fee required to relay transactions across the +network and for miners to consider the transaction in their blocks to +0.01mBTC per kilobyte. + +Note that getting a transaction relayed across the network does NOT guarantee +that the transaction will be accepted by a miner; by default, miners fill +their blocks with 50 kilobytes of high-priority transactions, and then with +700 kilobytes of the highest-fee-per-kilobyte transactions. + +The minimum relay/mining fee-per-kilobyte may be changed with the +minrelaytxfee option. Note that previous releases incorrectly used +the mintxfee setting to determine which low-priority transactions should +be considered for inclusion in blocks. + +The wallet code still uses a default fee for low-priority transactions of +0.1mBTC per kilobyte. During periods of heavy transaction volume, even this +fee may not be enough to get transactions confirmed quickly; the mintxfee +option may be used to override the default. + +0.9.0 Release notes +======================= + +RPC: + +- New notion of 'conflicted' transactions, reported as confirmations: -1 +- 'listreceivedbyaddress' now provides tx ids +- Add raw transaction hex to 'gettransaction' output +- Updated help and tests for 'getreceivedby(account|address)' +- In 'getblock', accept 2nd 'verbose' parameter, similar to getrawtransaction, + but defaulting to 1 for backward compatibility +- Add 'verifychain', to verify chain database at runtime +- Add 'dumpwallet' and 'importwallet' RPCs +- 'keypoolrefill' gains optional size parameter +- Add 'getbestblockhash', to return tip of best chain +- Add 'chainwork' (the total work done by all blocks since the genesis block) + to 'getblock' output +- Make RPC password resistant to timing attacks +- Clarify help messages and add examples +- Add 'getrawchangeaddress' call for raw transaction change destinations +- Reject insanely high fees by default in 'sendrawtransaction' +- Add RPC call 'decodescript' to decode a hex-encoded transaction script +- Make 'validateaddress' provide redeemScript +- Add 'getnetworkhashps' to get the calculated network hashrate +- New RPC 'ping' command to request ping, new 'pingtime' and 'pingwait' fields + in 'getpeerinfo' output +- Adding new 'addrlocal' field to 'getpeerinfo' output +- Add verbose boolean to 'getrawmempool' +- Add rpc command 'getunconfirmedbalance' to obtain total unconfirmed balance +- Explicitly ensure that wallet is unlocked in `importprivkey` +- Add check for valid keys in `importprivkey` + +Command-line options: + +- New option: -nospendzeroconfchange to never spend unconfirmed change outputs +- New option: -zapwallettxes to rebuild the wallet's transaction information +- Rename option '-tor' to '-onion' to better reflect what it does +- Add '-disablewallet' mode to let bitcoind run entirely without wallet (when + built with wallet) +- Update default '-rpcsslciphers' to include TLSv1.2 +- make '-logtimestamps' default on and rework help-message +- RPC client option: '-rpcwait', to wait for server start +- Remove '-logtodebugger' +- Allow `-noserver` with bitcoind + +Block-chain handling and storage: + +- Update leveldb to 1.15 +- Check for correct genesis (prevent cases where a datadir from the wrong + network is accidentally loaded) +- Allow txindex to be removed and add a reindex dialog +- Log aborted block database rebuilds +- Store orphan blocks in serialized form, to save memory +- Limit the number of orphan blocks in memory to 750 +- Fix non-standard disconnected transactions causing mempool orphans +- Add a new checkpoint at block 279,000 + +Wallet: + +- Bug fixes and new regression tests to correctly compute + the balance of wallets containing double-spent (or mutated) transactions +- Store key creation time. Calculate whole-wallet birthday. +- Optimize rescan to skip blocks prior to birthday +- Let user select wallet file with -wallet=foo.dat +- Consider generated coins mature at 101 instead of 120 blocks +- Improve wallet load time +- Don't count txins for priority to encourage sweeping +- Don't create empty transactions when reading a corrupted wallet +- Fix rescan to start from beginning after importprivkey +- Only create signatures with low S values + +Mining: + +- Increase default -blockmaxsize/prioritysize to 750K/50K +- 'getblocktemplate' does not require a key to create a block template +- Mining code fee policy now matches relay fee policy + +Protocol and network: + +- Drop the fee required to relay a transaction to 0.01mBTC per kilobyte +- Send tx relay flag with version +- New 'reject' P2P message (BIP 0061, see + https://gist.github.com/gavinandresen/7079034 for draft) +- Dump addresses every 15 minutes instead of 10 seconds +- Relay OP_RETURN data TxOut as standard transaction type +- Remove CENT-output free transaction rule when relaying +- Lower maximum size for free transaction creation +- Send multiple inv messages if mempool.size > MAX_INV_SZ +- Split MIN_PROTO_VERSION into INIT_PROTO_VERSION and MIN_PEER_PROTO_VERSION +- Do not treat fFromMe transaction differently when broadcasting +- Process received messages one at a time without sleeping between messages +- Improve logging of failed connections +- Bump protocol version to 70002 +- Add some additional logging to give extra network insight +- Added new DNS seed from bitcoinstats.com + +Validation: + +- Log reason for non-standard transaction rejection +- Prune provably-unspendable outputs, and adapt consistency check for it. +- Detect any sufficiently long fork and add a warning +- Call the -alertnotify script when we see a long or invalid fork +- Fix multi-block reorg transaction resurrection +- Reject non-canonically-encoded serialization sizes +- Reject dust amounts during validation +- Accept nLockTime transactions that finalize in the next block + +Build system: + +- Switch to autotools-based build system +- Build without wallet by passing `--disable-wallet` to configure, this + removes the BerkeleyDB dependency +- Upgrade gitian dependencies (libpng, libz, libupnpc, boost, openssl) to more + recent versions +- Windows 64-bit build support +- Solaris compatibility fixes +- Check integrity of gitian input source tarballs +- Enable full GCC Stack-smashing protection for all OSes + +GUI: + +- Switch to Qt 5.2.0 for Windows build +- Add payment request (BIP 0070) support +- Improve options dialog +- Show transaction fee in new send confirmation dialog +- Add total balance in overview page +- Allow user to choose data directory on first start, when data directory is + missing, or when the -choosedatadir option is passed +- Save and restore window positions +- Add vout index to transaction id in transactions details dialog +- Add network traffic graph in debug window +- Add open URI dialog +- Add Coin Control Features +- Improve receive coins workflow: make the 'Receive' tab into a form to request + payments, and move historical address list functionality to File menu. +- Rebrand to `Bitcoin Core` +- Move initialization/shutdown to a thread. This prevents "Not responding" + messages during startup. Also show a window during shutdown. +- Don't regenerate autostart link on every client startup +- Show and store message of normal bitcoin:URI +- Fix richtext detection hang issue on very old Qt versions +- OS X: Make use of the 10.8+ user notification center to display Growl-like + notifications +- OS X: Added NSHighResolutionCapable flag to Info.plist for better font + rendering on Retina displays. +- OS X: Fix bitcoin-qt startup crash when clicking dock icon +- Linux: Fix Gnome bitcoin: URI handler + +Miscellaneous: + +- Add Linux script (contrib/qos/tc.sh) to limit outgoing bandwidth +- Add '-regtest' mode, similar to testnet but private with instant block + generation with 'setgenerate' RPC. +- Add 'linearize.py' script to contrib, for creating bootstrap.dat +- Add separate bitcoin-cli client + +Credits +-------- + +Thanks to everyone who contributed to this release: + +- Andrey +- Ashley Holman +- b6393ce9-d324-4fe1-996b-acf82dbc3d53 +- bitsofproof +- Brandon Dahler +- Calvin Tam +- Christian Decker +- Christian von Roques +- Christopher Latham +- Chuck +- coblee +- constantined +- Cory Fields +- Cozz Lovan +- daniel +- Daniel Larimer +- David Hill +- Dmitry Smirnov +- Drak +- Eric Lombrozo +- fanquake +- fcicq +- Florin +- frewil +- Gavin Andresen +- Gregory Maxwell +- gubatron +- Guillermo Céspedes Tabárez +- Haakon Nilsen +- HaltingState +- Han Lin Yap +- harry +- Ian Kelling +- Jeff Garzik +- Johnathan Corgan +- Jonas Schnelli +- Josh Lehan +- Josh Triplett +- Julian Langschaedel +- Kangmo +- Lake Denman +- Luke Dashjr +- Mark Friedenbach +- Matt Corallo +- Michael Bauer +- Michael Ford +- Michagogo +- Midnight Magic +- Mike Hearn +- Nils Schneider +- Noel Tiernan +- Olivier Langlois +- patrick s +- Patrick Strateman +- paveljanik +- Peter Todd +- phantomcircuit +- phelixbtc +- Philip Kaufmann +- Pieter Wuille +- Rav3nPL +- R E Broadley +- regergregregerrge +- Robert Backhaus +- Roman Mindalev +- Rune K. Svendsen +- Ryan Niebur +- Scott Ellis +- Scott Willeke +- Sergey Kazenyuk +- Shawn Wilkinson +- Sined +- sje +- Subo1978 +- super3 +- Tamas Blummer +- theuni +- Thomas Holenstein +- Timon Rapp +- Timothy Stranex +- Tom Geller +- Torstein Husebø +- Vaclav Vobornik +- vhf / victor felder +- Vinnie Falco +- Warren Togami +- Wil Bown +- Wladimir J. van der Laan diff --git a/jsonrpc/__init__.py b/jsonrpc/__init__.py deleted file mode 100644 index 8441fa3120..0000000000 --- a/jsonrpc/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .json import loads, dumps, JSONEncodeException, JSONDecodeException -from jsonrpc.proxy import ServiceProxy, JSONRPCException diff --git a/jsonrpc/authproxy.py b/jsonrpc/authproxy.py deleted file mode 100644 index e90ef361d0..0000000000 --- a/jsonrpc/authproxy.py +++ /dev/null @@ -1,3 +0,0 @@ -from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException - -__all__ = ['AuthServiceProxy', 'JSONRPCException'] diff --git a/jsonrpc/json.py b/jsonrpc/json.py deleted file mode 100644 index 95398630f7..0000000000 --- a/jsonrpc/json.py +++ /dev/null @@ -1,9 +0,0 @@ -_json = __import__('json') -loads = _json.loads -dumps = _json.dumps -if hasattr(_json, 'JSONEncodeException'): - JSONEncodeException = _json.JSONEncodeException - JSONDecodeException = _json.JSONDecodeException -else: - JSONEncodeException = TypeError - JSONDecodeException = ValueError diff --git a/jsonrpc/proxy.py b/jsonrpc/proxy.py deleted file mode 100644 index 0d2be1e93b..0000000000 --- a/jsonrpc/proxy.py +++ /dev/null @@ -1 +0,0 @@ -from bitcoinrpc.authproxy import AuthServiceProxy as ServiceProxy, JSONRPCException diff --git a/qa/pull-tester/build-tests.sh.in b/qa/pull-tester/build-tests.sh.in index 86d4d9d0e9..e7db721110 100755 --- a/qa/pull-tester/build-tests.sh.in +++ b/qa/pull-tester/build-tests.sh.in @@ -1,4 +1,8 @@ #!/bin/bash +# Copyright (c) 2013 The Bitcoin Core developers +# Distributed under the MIT/X11 software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. +# # Param1: The prefix to mingw staging # Param2: Path to java comparison tool # Param3: Number of make jobs. Defaults to 1. diff --git a/qa/pull-tester/pull-tester.py b/qa/pull-tester/pull-tester.py index b05ac2c527..61ce813d80 100755 --- a/qa/pull-tester/pull-tester.py +++ b/qa/pull-tester/pull-tester.py @@ -1,4 +1,8 @@ #!/usr/bin/python +# Copyright (c) 2013 The Bitcoin Core developers +# Distributed under the MIT/X11 software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. +# import json from urllib import urlopen import requests diff --git a/qa/pull-tester/pull-tester.sh b/qa/pull-tester/pull-tester.sh index 13c800c16a..bbee92967d 100755 --- a/qa/pull-tester/pull-tester.sh +++ b/qa/pull-tester/pull-tester.sh @@ -1,4 +1,8 @@ #!/bin/sh +# Copyright (c) 2013 The Bitcoin Core developers +# Distributed under the MIT/X11 software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. +# # Helper script for pull-tester. #Param 1: path to bitcoin srcroot #Param ...: arguments for build-test.sh diff --git a/qa/pull-tester/run-bitcoind-for-test.sh.in b/qa/pull-tester/run-bitcoind-for-test.sh.in index 25faf9c42d..391046ab85 100755 --- a/qa/pull-tester/run-bitcoind-for-test.sh.in +++ b/qa/pull-tester/run-bitcoind-for-test.sh.in @@ -1,4 +1,8 @@ #!/bin/bash +# Copyright (c) 2013 The Bitcoin Core developers +# Distributed under the MIT/X11 software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. +# DATADIR="@abs_top_builddir@/.bitcoin" rm -rf "$DATADIR" mkdir -p "$DATADIR"/regtest diff --git a/qa/rpc-tests/conflictedbalance.sh b/qa/rpc-tests/conflictedbalance.sh index 9d854d2d87..849ad31fb8 100755 --- a/qa/rpc-tests/conflictedbalance.sh +++ b/qa/rpc-tests/conflictedbalance.sh @@ -1,4 +1,7 @@ #!/usr/bin/env bash +# Copyright (c) 2014 The Bitcoin Core developers +# Distributed under the MIT/X11 software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. # Test marking of spent outputs diff --git a/qa/rpc-tests/listtransactions.py b/qa/rpc-tests/listtransactions.py index fec3acfbb3..6ffee6bbe8 100755 --- a/qa/rpc-tests/listtransactions.py +++ b/qa/rpc-tests/listtransactions.py @@ -1,4 +1,7 @@ #!/usr/bin/env python +# Copyright (c) 2014 The Bitcoin Core developers +# Distributed under the MIT/X11 software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. # Exercise the listtransactions API diff --git a/qa/rpc-tests/send.sh b/qa/rpc-tests/send.sh index 2c0d5375c0..bfbf791d07 100755 --- a/qa/rpc-tests/send.sh +++ b/qa/rpc-tests/send.sh @@ -1,4 +1,7 @@ #!/bin/bash +# Copyright (c) 2014 The Bitcoin Core developers +# Distributed under the MIT/X11 software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. TIMEOUT=10 SIGNAL=HUP PIDFILE=.send.pid diff --git a/qa/rpc-tests/skeleton.py b/qa/rpc-tests/skeleton.py index 0bace6f4eb..5d4b62e55f 100755 --- a/qa/rpc-tests/skeleton.py +++ b/qa/rpc-tests/skeleton.py @@ -1,4 +1,7 @@ #!/usr/bin/env python +# Copyright (c) 2014 The Bitcoin Core developers +# Distributed under the MIT/X11 software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. # Skeleton for python-based regression tests using # JSON-RPC diff --git a/qa/rpc-tests/txnmall.sh b/qa/rpc-tests/txnmall.sh index 11e0276494..bd36967a63 100755 --- a/qa/rpc-tests/txnmall.sh +++ b/qa/rpc-tests/txnmall.sh @@ -1,4 +1,7 @@ #!/usr/bin/env bash +# Copyright (c) 2014 The Bitcoin Core developers +# Distributed under the MIT/X11 software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. # Test proper accounting with malleable transactions diff --git a/qa/rpc-tests/util.py b/qa/rpc-tests/util.py index fbb27ae2df..6184c1fbad 100644 --- a/qa/rpc-tests/util.py +++ b/qa/rpc-tests/util.py @@ -1,3 +1,6 @@ +# Copyright (c) 2014 The Bitcoin Core developers +# Distributed under the MIT/X11 software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. # # Helpful routines for regression testing # diff --git a/qa/rpc-tests/util.sh b/qa/rpc-tests/util.sh index 9001c42fbc..1e7bd6a7ee 100644 --- a/qa/rpc-tests/util.sh +++ b/qa/rpc-tests/util.sh @@ -1,4 +1,7 @@ #!/usr/bin/env bash +# Copyright (c) 2014 The Bitcoin Core developers +# Distributed under the MIT/X11 software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. # Functions used by more than one test diff --git a/qa/rpc-tests/wallet.sh b/qa/rpc-tests/wallet.sh index 2940566af9..98532fa858 100755 --- a/qa/rpc-tests/wallet.sh +++ b/qa/rpc-tests/wallet.sh @@ -1,4 +1,7 @@ #!/usr/bin/env bash +# Copyright (c) 2013-2014 The Bitcoin Core developers +# Distributed under the MIT/X11 software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. # Test block generation and basic wallet sending diff --git a/qa/rpc-tests/walletbackup.sh b/qa/rpc-tests/walletbackup.sh index 9207243b62..7444670980 100755 --- a/qa/rpc-tests/walletbackup.sh +++ b/qa/rpc-tests/walletbackup.sh @@ -1,4 +1,7 @@ #!/usr/bin/env bash +# Copyright (c) 2014 The Bitcoin Core developers +# Distributed under the MIT/X11 software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. # Test wallet backup / dump / restore functionality diff --git a/setup.py b/setup.py deleted file mode 100644 index b5a217bf93..0000000000 --- a/setup.py +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env python - -from distutils.core import setup - -setup(name='python-bitcoinrpc', - version='0.1', - description='Enhanced version of python-jsonrpc for use with Bitcoin', - long_description=open('README').read(), - author='Jeff Garzik', - author_email='<jgarzik@exmulti.com>', - maintainer='Jeff Garzik', - maintainer_email='<jgarzik@exmulti.com>', - url='http://www.github.com/jgarzik/python-bitcoinrpc', - packages=['bitcoinrpc'], - classifiers=['License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)', 'Operating System :: OS Independent']) diff --git a/src/alert.cpp b/src/alert.cpp index 46e861be9e..99164d63e5 100644 --- a/src/alert.cpp +++ b/src/alert.cpp @@ -10,6 +10,7 @@ #include "ui_interface.h" #include "util.h" +#include <stdint.h> #include <algorithm> #include <map> diff --git a/src/init.cpp b/src/init.cpp index 6e1a320c14..1a325ca691 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -593,6 +593,7 @@ bool AppInit2(boost::thread_group& threadGroup) // ********************************************************* Step 5: verify wallet database integrity #ifdef ENABLE_WALLET if (!fDisableWallet) { + LogPrintf("Using wallet %s\n", strWalletFile); uiInterface.InitMessage(_("Verifying wallet...")); if (!bitdb.Open(GetDataDir())) diff --git a/src/m4/bitcoin_qt.m4 b/src/m4/bitcoin_qt.m4 index 068371e83a..e71ecd7172 100644 --- a/src/m4/bitcoin_qt.m4 +++ b/src/m4/bitcoin_qt.m4 @@ -124,12 +124,12 @@ AC_DEFUN([BITCOIN_QT_CONFIGURE],[ if test x$have_qt_test = xno; then bitcoin_enable_qt_test=no fi - bitcoin_enable_qt_dbus=yes - if test x$have_qt_dbus = xno; then - bitcoin_enable_qt_dbus=no - if test x$use_dbus = xyes; then - AC_MSG_ERROR("libQtDBus not found. Install libQtDBus or remove --with-qtdbus.") - fi + bitcoin_enable_qt_dbus=no + if test x$use_dbus != xno && test x$have_qt_dbus = xyes; then + bitcoin_enable_qt_dbus=yes + fi + if test x$use_dbus = xyes && test x$have_qt_dbus = xno; then + AC_MSG_ERROR("libQtDBus not found. Install libQtDBus or remove --with-qtdbus.") fi if test x$LUPDATE == x; then AC_MSG_WARN("lupdate is required to update qt translations") diff --git a/src/main.cpp b/src/main.cpp index 7afaa9e7e2..836c86483a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -51,7 +51,7 @@ unsigned int nCoinCacheSize = 5000; /** Fees smaller than this (in satoshi) are considered zero fee (for transaction creation) */ int64_t CTransaction::nMinTxFee = 10000; // Override with -mintxfee -/** Fees smaller than this (in satoshi) are considered zero fee (for relaying) */ +/** Fees smaller than this (in satoshi) are considered zero fee (for relaying and mining) */ int64_t CTransaction::nMinRelayTxFee = 1000; static CMedianFilter<int> cPeerBlockCounts(8, 0); // Amount of blocks that other nodes claim to have @@ -111,6 +111,16 @@ uint32_t nBlockSequenceId = 1; // Sources of received blocks, to be able to send them reject messages or ban // them, if processing happens afterwards. Protected by cs_main. map<uint256, NodeId> mapBlockSource; + +// Blocks that are in flight, and that are in the queue to be downloaded. +// Protected by cs_main. +struct QueuedBlock { + uint256 hash; + int64_t nTime; // Time of "getdata" request in microseconds. + int nQueuedBefore; // Number of blocks in flight at the time of request. +}; +map<uint256, pair<NodeId, list<QueuedBlock>::iterator> > mapBlocksInFlight; +map<uint256, pair<NodeId, list<uint256>::iterator> > mapBlocksToDownload; } ////////////////////////////////////////////////////////////////////////////// @@ -194,10 +204,20 @@ struct CNodeState { std::string name; // List of asynchronously-determined block rejections to notify this peer about. std::vector<CBlockReject> rejects; + list<QueuedBlock> vBlocksInFlight; + int nBlocksInFlight; + list<uint256> vBlocksToDownload; + int nBlocksToDownload; + int64_t nLastBlockReceive; + int64_t nLastBlockProcess; CNodeState() { nMisbehavior = 0; fShouldBan = false; + nBlocksToDownload = 0; + nBlocksInFlight = 0; + nLastBlockReceive = 0; + nLastBlockProcess = 0; } }; @@ -226,8 +246,71 @@ void InitializeNode(NodeId nodeid, const CNode *pnode) { void FinalizeNode(NodeId nodeid) { LOCK(cs_main); + CNodeState *state = State(nodeid); + + BOOST_FOREACH(const QueuedBlock& entry, state->vBlocksInFlight) + mapBlocksInFlight.erase(entry.hash); + BOOST_FOREACH(const uint256& hash, state->vBlocksToDownload) + mapBlocksToDownload.erase(hash); + mapNodeState.erase(nodeid); } + +// Requires cs_main. +void MarkBlockAsReceived(const uint256 &hash, NodeId nodeFrom = -1) { + map<uint256, pair<NodeId, list<uint256>::iterator> >::iterator itToDownload = mapBlocksToDownload.find(hash); + if (itToDownload != mapBlocksToDownload.end()) { + CNodeState *state = State(itToDownload->second.first); + state->vBlocksToDownload.erase(itToDownload->second.second); + state->nBlocksToDownload--; + mapBlocksToDownload.erase(itToDownload); + } + + map<uint256, pair<NodeId, list<QueuedBlock>::iterator> >::iterator itInFlight = mapBlocksInFlight.find(hash); + if (itInFlight != mapBlocksInFlight.end()) { + CNodeState *state = State(itInFlight->second.first); + state->vBlocksInFlight.erase(itInFlight->second.second); + state->nBlocksInFlight--; + if (itInFlight->second.first == nodeFrom) + state->nLastBlockReceive = GetTimeMicros(); + mapBlocksInFlight.erase(itInFlight); + } + +} + +// Requires cs_main. +bool AddBlockToQueue(NodeId nodeid, const uint256 &hash) { + if (mapBlocksToDownload.count(hash) || mapBlocksInFlight.count(hash)) + return false; + + CNodeState *state = State(nodeid); + if (state == NULL) + return false; + + list<uint256>::iterator it = state->vBlocksToDownload.insert(state->vBlocksToDownload.end(), hash); + state->nBlocksToDownload++; + if (state->nBlocksToDownload > 5000) + Misbehaving(nodeid, 10); + mapBlocksToDownload[hash] = std::make_pair(nodeid, it); + return true; +} + +// Requires cs_main. +void MarkBlockAsInFlight(NodeId nodeid, const uint256 &hash) { + CNodeState *state = State(nodeid); + assert(state != NULL); + + // Make sure it's not listed somewhere already. + MarkBlockAsReceived(hash); + + QueuedBlock newentry = {hash, GetTimeMicros(), state->nBlocksInFlight}; + if (state->nBlocksInFlight == 0) + state->nLastBlockReceive = newentry.nTime; // Reset when a first request is sent. + list<QueuedBlock>::iterator it = state->vBlocksInFlight.insert(state->vBlocksInFlight.end(), newentry); + state->nBlocksInFlight++; + mapBlocksInFlight[hash] = std::make_pair(nodeid, it); +} + } bool GetNodeStateStats(NodeId nodeid, CNodeStateStats &stats) { @@ -1310,6 +1393,7 @@ void CheckForkWarningConditionsOnNewFork(CBlockIndex* pindexNewForkTip) CheckForkWarningConditions(); } +// Requires cs_main. void Misbehaving(NodeId pnode, int howmuch) { if (howmuch == 0) @@ -1739,7 +1823,7 @@ bool ConnectBlock(CBlock& block, CValidationState& state, CBlockIndex* pindex, C return state.DoS(100, error("ConnectBlock() : coinbase pays too much (actual=%d vs limit=%d)", block.vtx[0].GetValueOut(), GetBlockValue(pindex->nHeight, nFees)), - REJECT_INVALID, "bad-cb-amount"); + REJECT_INVALID, "bad-cb-amount"); if (!control.Wait()) return state.DoS(100, false); @@ -2049,7 +2133,6 @@ bool AddToBlockIndex(CBlock& block, CValidationState& state, const CDiskBlockPos pindexNew->nSequenceId = nBlockSequenceId++; } assert(pindexNew); - mapAlreadyAskedFor.erase(CInv(MSG_BLOCK, hash)); map<uint256, CBlockIndex*>::iterator mi = mapBlockIndex.insert(make_pair(hash, pindexNew)).first; pindexNew->phashBlock = &((*mi).first); map<uint256, CBlockIndex*>::iterator miPrev = mapBlockIndex.find(block.hashPrevBlock); @@ -2400,11 +2483,8 @@ bool ProcessBlock(CValidationState &state, CNode* pfrom, CBlock* pblock, CDiskBl return state.Invalid(error("ProcessBlock() : already have block (orphan) %s", hash.ToString()), 0, "duplicate"); // Preliminary checks - if (!CheckBlock(*pblock, state)) { - if (state.CorruptionPossible()) - mapAlreadyAskedFor.erase(CInv(MSG_BLOCK, hash)); + if (!CheckBlock(*pblock, state)) return error("ProcessBlock() : CheckBlock FAILED"); - } CBlockIndex* pcheckpoint = Checkpoints::GetLastCheckpoint(mapBlockIndex); if (pcheckpoint && pblock->hashPrevBlock != (chainActive.Tip() ? chainActive.Tip()->GetBlockHash() : uint256(0))) @@ -2764,9 +2844,10 @@ bool static LoadBlockIndexDB() if (it == mapBlockIndex.end()) return true; chainActive.SetTip(it->second); - LogPrintf("LoadBlockIndexDB(): hashBestChain=%s height=%d date=%s\n", + LogPrintf("LoadBlockIndexDB(): hashBestChain=%s height=%d date=%s progress=%f\n", chainActive.Tip()->GetBlockHash().ToString(), chainActive.Height(), - DateTimeStrFormat("%Y-%m-%d %H:%M:%S", chainActive.Tip()->GetBlockTime())); + DateTimeStrFormat("%Y-%m-%d %H:%M:%S", chainActive.Tip()->GetBlockTime()), + Checkpoints::GuessVerificationProgress(chainActive.Tip())); return true; } @@ -3163,14 +3244,14 @@ void static ProcessGetData(CNode* pfrom) int nHeight = mi->second->nHeight; CBlockIndex* pcheckpoint = Checkpoints::GetLastCheckpoint(mapBlockIndex); if (pcheckpoint && nHeight < pcheckpoint->nHeight) { - if (!chainActive.Contains(mi->second)) - { - LogPrintf("ProcessGetData(): ignoring request for old block that isn't in the main chain\n"); - } else { - send = true; - } + if (!chainActive.Contains(mi->second)) + { + LogPrintf("ProcessGetData(): ignoring request for old block that isn't in the main chain\n"); + } else { + send = true; + } } else { - send = true; + send = true; } } if (send) @@ -3274,7 +3355,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv) return true; } - + State(pfrom->GetId())->nLastBlockProcess = GetTimeMicros(); @@ -3477,15 +3558,6 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv) return error("message inv size() = %"PRIszu"", vInv.size()); } - // find last block in inv vector - unsigned int nLastBlock = (unsigned int)(-1); - for (unsigned int nInv = 0; nInv < vInv.size(); nInv++) { - if (vInv[vInv.size() - 1 - nInv].type == MSG_BLOCK) { - nLastBlock = vInv.size() - 1 - nInv; - break; - } - } - LOCK(cs_main); for (unsigned int nInv = 0; nInv < vInv.size(); nInv++) @@ -3499,17 +3571,14 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv) LogPrint("net", " got inventory: %s %s\n", inv.ToString(), fAlreadyHave ? "have" : "new"); if (!fAlreadyHave) { - if (!fImporting && !fReindex) - pfrom->AskFor(inv); + if (!fImporting && !fReindex) { + if (inv.type == MSG_BLOCK) + AddBlockToQueue(pfrom->GetId(), inv.hash); + else + pfrom->AskFor(inv); + } } else if (inv.type == MSG_BLOCK && mapOrphanBlocks.count(inv.hash)) { PushGetBlocks(pfrom, chainActive.Tip(), GetOrphanRoot(inv.hash)); - } else if (nInv == nLastBlock) { - // In case we are on a very long side-chain, it is possible that we already have - // the last block in an inv bundle sent in response to getblocks. Try to detect - // this situation and push another getblocks to continue. - PushGetBlocks(pfrom, mapBlockIndex[inv.hash], uint256(0)); - if (fDebug) - LogPrintf("force request: %s\n", inv.ToString()); } // Track requests for our stuff @@ -3690,7 +3759,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv) } int nDoS = 0; if (state.IsInvalid(nDoS)) - { + { LogPrint("mempool", "%s from %s %s was not accepted into the memory pool: %s\n", tx.GetHash().ToString(), pfrom->addr.ToString(), pfrom->cleanSubVer, state.GetRejectReason()); @@ -3716,6 +3785,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv) LOCK(cs_main); // Remember who we got this block from. mapBlockSource[inv.hash] = pfrom->GetId(); + MarkBlockAsReceived(inv.hash, pfrom->GetId()); CValidationState state; ProcessBlock(state, pfrom, &block); @@ -4243,12 +4313,38 @@ bool SendMessages(CNode* pto, bool fSendTrickle) pto->PushMessage("inv", vInv); + // Detect stalled peers. Require that blocks are in flight, we haven't + // received a (requested) block in one minute, and that all blocks are + // in flight for over two minutes, since we first had a chance to + // process an incoming block. + int64_t nNow = GetTimeMicros(); + if (!pto->fDisconnect && state.nBlocksInFlight && + state.nLastBlockReceive < state.nLastBlockProcess - BLOCK_DOWNLOAD_TIMEOUT*1000000 && + state.vBlocksInFlight.front().nTime < state.nLastBlockProcess - 2*BLOCK_DOWNLOAD_TIMEOUT*1000000) { + LogPrintf("Peer %s is stalling block download, disconnecting\n", state.name.c_str()); + pto->fDisconnect = true; + } + // - // Message: getdata + // Message: getdata (blocks) // vector<CInv> vGetData; - int64_t nNow = GetTime() * 1000000; - while (!pto->mapAskFor.empty() && (*pto->mapAskFor.begin()).first <= nNow) + while (!pto->fDisconnect && state.nBlocksToDownload && state.nBlocksInFlight < MAX_BLOCKS_IN_TRANSIT_PER_PEER) { + uint256 hash = state.vBlocksToDownload.front(); + vGetData.push_back(CInv(MSG_BLOCK, hash)); + MarkBlockAsInFlight(pto->GetId(), hash); + LogPrint("net", "Requesting block %s from %s\n", hash.ToString().c_str(), state.name.c_str()); + if (vGetData.size() >= 1000) + { + pto->PushMessage("getdata", vGetData); + vGetData.clear(); + } + } + + // + // Message: getdata (non-blocks) + // + while (!pto->fDisconnect && !pto->mapAskFor.empty() && (*pto->mapAskFor.begin()).first <= nNow) { const CInv& inv = (*pto->mapAskFor.begin()).second; if (!AlreadyHave(inv)) diff --git a/src/main.h b/src/main.h index 781562854f..5ecf9d8365 100644 --- a/src/main.h +++ b/src/main.h @@ -35,8 +35,9 @@ class CInv; /** The maximum allowed size for a serialized block, in bytes (network rule) */ static const unsigned int MAX_BLOCK_SIZE = 1000000; -/** Default for -blockmaxsize, maximum size for mined blocks **/ +/** Default for -blockmaxsize and -blockminsize, which control the range of sizes the mining code will create **/ static const unsigned int DEFAULT_BLOCK_MAX_SIZE = 750000; +static const unsigned int DEFAULT_BLOCK_MIN_SIZE = 0; /** Default for -blockprioritysize, maximum space for zero/low-fee transactions **/ static const unsigned int DEFAULT_BLOCK_PRIORITY_SIZE = 50000; /** The maximum size for transactions we're willing to relay/mine */ @@ -59,6 +60,11 @@ static const int COINBASE_MATURITY = 100; static const unsigned int LOCKTIME_THRESHOLD = 500000000; // Tue Nov 5 00:53:20 1985 UTC /** Maximum number of script-checking threads allowed */ static const int MAX_SCRIPTCHECK_THREADS = 16; +/** Number of blocks that can be requested at any given time from a single peer. */ +static const int MAX_BLOCKS_IN_TRANSIT_PER_PEER = 128; +/** Timeout in seconds before considering a block download peer unresponsive. */ +static const unsigned int BLOCK_DOWNLOAD_TIMEOUT = 60; + #ifdef USE_UPNP static const int fHaveUPnP = true; #else @@ -175,6 +181,9 @@ bool VerifySignature(const CCoins& txFrom, const CTransaction& txTo, unsigned in bool AbortNode(const std::string &msg); /** Get statistics from node state */ bool GetNodeStateStats(NodeId nodeid, CNodeStateStats &stats); +/** Increase a node's misbehavior score. */ +void Misbehaving(NodeId nodeid, int howmuch); + /** (try to) add transaction to memory pool **/ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransaction &tx, bool fLimitFree, @@ -266,10 +275,10 @@ int64_t GetMinFee(const CTransaction& tx, unsigned int nBytes, bool fAllowFree, // DUP CHECKSIG DROP ... repeated 100 times... OP_1 // - /** Check for standard transaction types - @param[in] mapInputs Map of previous transactions that have outputs we're spending - @return True if all inputs (scriptSigs) use only standard transaction forms - */ +/** Check for standard transaction types + @param[in] mapInputs Map of previous transactions that have outputs we're spending + @return True if all inputs (scriptSigs) use only standard transaction forms +*/ bool AreInputsStandard(const CTransaction& tx, CCoinsViewCache& mapInputs); /** Count ECDSA signature operations the old-fashioned (pre-0.6) way @@ -418,6 +427,7 @@ class CMerkleTx : public CTransaction { private: int GetDepthInMainChainINTERNAL(CBlockIndex* &pindexRet) const; + public: uint256 hashBlock; std::vector<uint256> vMerkleBranch; diff --git a/src/miner.cpp b/src/miner.cpp index e52f539085..3351908e65 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -136,7 +136,7 @@ CBlockTemplate* CreateNewBlock(const CScript& scriptPubKeyIn) // Minimum block size you want to create; block will be filled with free transactions // until there are no more or the block reaches this size: - unsigned int nBlockMinSize = GetArg("-blockminsize", 0); + unsigned int nBlockMinSize = GetArg("-blockminsize", DEFAULT_BLOCK_MIN_SIZE); nBlockMinSize = std::min(nBlockMaxSize, nBlockMinSize); // Collect memory pool transactions into the block @@ -254,7 +254,7 @@ CBlockTemplate* CreateNewBlock(const CScript& scriptPubKeyIn) continue; // Skip free transactions if we're past the minimum block size: - if (fSortedByFee && (dFeePerKb < CTransaction::nMinTxFee) && (nBlockSize + nTxSize >= nBlockMinSize)) + if (fSortedByFee && (dFeePerKb < CTransaction::nMinRelayTxFee) && (nBlockSize + nTxSize >= nBlockMinSize)) continue; // Prioritize by fee once past the priority size or we run out of high-priority @@ -426,7 +426,7 @@ public: LogPrint("net", "askfor %s %d (%s)\n", inv.ToString().c_str(), nRequestTime, DateTimeStrFormat("%H:%M:%S", nRequestTime/1000000).c_str()); // Make sure not to reuse time indexes to keep things in the same order - int64_t nNow = (GetTime() - 1) * 1000000; + int64_t nNow = GetTimeMicros() - 1000000; static int64_t nLastTime; ++nLastTime; nNow = std::max(nNow, nLastTime); diff --git a/src/qt/Makefile.am b/src/qt/Makefile.am index c0ebfb61d2..3bbc8516a0 100644 --- a/src/qt/Makefile.am +++ b/src/qt/Makefile.am @@ -7,8 +7,8 @@ AM_CPPFLAGS += -I$(top_srcdir)/src \ $(QR_CFLAGS) bin_PROGRAMS = bitcoin-qt noinst_LIBRARIES = libbitcoinqt.a -SUBDIRS = $(BUILD_TEST_QT) -DIST_SUBDIRS = test +SUBDIRS = . $(BUILD_TEST_QT) +DIST_SUBDIRS = . test # bitcoin qt core # QT_TS = \ diff --git a/src/qt/addresstablemodel.cpp b/src/qt/addresstablemodel.cpp index 2987e5fdda..dfbd445ce3 100644 --- a/src/qt/addresstablemodel.cpp +++ b/src/qt/addresstablemodel.cpp @@ -114,7 +114,7 @@ public: case CT_NEW: if(inModel) { - qDebug() << "AddressTablePriv::updateEntry : Warning: Got CT_NOW, but entry is already in model"; + qDebug() << "AddressTablePriv::updateEntry : Warning: Got CT_NEW, but entry is already in model"; break; } parent->beginInsertRows(QModelIndex(), lowerIndex, lowerIndex); diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp index 162009f5de..d8e21c4aa6 100644 --- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -78,6 +78,12 @@ static void initTranslations(QTranslator &qtTranslatorBase, QTranslator &qtTrans { QSettings settings; + // Remove old translators + QApplication::removeTranslator(&qtTranslatorBase); + QApplication::removeTranslator(&qtTranslator); + QApplication::removeTranslator(&translatorBase); + QApplication::removeTranslator(&translator); + // Get desired locale (e.g. "de_DE") // 1) System default language QString lang_territory = QLocale::system().name(); @@ -439,21 +445,9 @@ void BitcoinApplication::handleRunawayException(const QString &message) #ifndef BITCOIN_QT_TEST int main(int argc, char *argv[]) { - bool fSelParFromCLFailed = false; /// 1. Parse command-line options. These take precedence over anything else. // Command-line options take precedence: ParseParameters(argc, argv); - // Check for -testnet or -regtest parameter (TestNet() calls are only valid after this clause) - if (!SelectParamsFromCommandLine()) { - fSelParFromCLFailed = true; - } -#ifdef ENABLE_WALLET - // Parse URIs on command line -- this can affect TestNet() / RegTest() mode - if (!PaymentServer::ipcParseCommandLine(argc, argv)) - exit(0); -#endif - - bool isaTestNet = TestNet() || RegTest(); // Do not refer to data directory yet, this can be overridden by Intro::pickDataDirectory @@ -480,12 +474,9 @@ int main(int argc, char *argv[]) /// 3. Application identification // must be set before OptionsModel is initialized or translations are loaded, // as it is used to locate QSettings - QApplication::setOrganizationName("Bitcoin"); - QApplication::setOrganizationDomain("bitcoin.org"); - if (isaTestNet) // Separate UI settings for testnets - QApplication::setApplicationName("Bitcoin-Qt-testnet"); - else - QApplication::setApplicationName("Bitcoin-Qt"); + QApplication::setOrganizationName(QAPP_ORG_NAME); + QApplication::setOrganizationDomain(QAPP_ORG_DOMAIN); + QApplication::setApplicationName(QAPP_APP_NAME_DEFAULT); /// 4. Initialization of translations, so that intro dialog is in user's language // Now that QSettings are accessible, initialize translations @@ -501,17 +492,13 @@ int main(int argc, char *argv[]) help.showOrPrint(); return 1; } - // Now that translations are initialized, check for earlier errors and show a translatable error message - if (fSelParFromCLFailed) { - QMessageBox::critical(0, QObject::tr("Bitcoin"), QObject::tr("Error: Invalid combination of -regtest and -testnet.")); - return 1; - } /// 5. Now that settings and translations are available, ask user for data directory // User language is set up: pick a data directory - Intro::pickDataDirectory(isaTestNet); + Intro::pickDataDirectory(); /// 6. Determine availability of data directory and parse bitcoin.conf + /// - Do not call GetDataDir(true) before this step finishes if (!boost::filesystem::is_directory(GetDataDir(false))) { QMessageBox::critical(0, QObject::tr("Bitcoin"), @@ -520,8 +507,33 @@ int main(int argc, char *argv[]) } ReadConfigFile(mapArgs, mapMultiArgs); + /// 7. Determine network (and switch to network specific options) + // - Do not call Params() before this step + // - Do this after parsing the configuration file, as the network can be switched there + // - QSettings() will use the new application name after this, resulting in network-specific settings + // - Needs to be done before createOptionsModel + + // Check for -testnet or -regtest parameter (Params() calls are only valid after this clause) + if (!SelectParamsFromCommandLine()) { + QMessageBox::critical(0, QObject::tr("Bitcoin"), QObject::tr("Error: Invalid combination of -regtest and -testnet.")); + return 1; + } +#ifdef ENABLE_WALLET + // Parse URIs on command line -- this can affect Params() + if (!PaymentServer::ipcParseCommandLine(argc, argv)) + exit(0); +#endif + bool isaTestNet = Params().NetworkID() != CChainParams::MAIN; + // Allow for separate UI settings for testnets + if (isaTestNet) + QApplication::setApplicationName(QAPP_APP_NAME_TESTNET); + else + QApplication::setApplicationName(QAPP_APP_NAME_DEFAULT); + // Re-initialize translations after changing application name (language in network-specific settings can be different) + initTranslations(qtTranslatorBase, qtTranslator, translatorBase, translator); + #ifdef ENABLE_WALLET - /// 7. URI IPC sending + /// 8. URI IPC sending // - Do this early as we don't want to bother initializing if we are just calling IPC // - Do this *after* setting up the data directory, as the data directory hash is used in the name // of the server. @@ -535,7 +547,7 @@ int main(int argc, char *argv[]) app.createPaymentServer(); #endif - /// 8. Main GUI initialization + /// 9. Main GUI initialization // Install global event filter that makes sure that long tooltips can be word-wrapped app.installEventFilter(new GUIUtil::ToolTipToRichTextFilter(TOOLTIP_WRAP_THRESHOLD, &app)); // Install qDebug() message handler to route to debug.log diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index f66fab496c..da7762282a 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -151,8 +151,7 @@ BitcoinGUI::BitcoinGUI(bool fIsTestnet, QWidget *parent) : // Status bar notification icons QFrame *frameBlocks = new QFrame(); frameBlocks->setContentsMargins(0,0,0,0); - frameBlocks->setMinimumWidth(56); - frameBlocks->setMaximumWidth(56); + frameBlocks->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred); QHBoxLayout *frameBlocksLayout = new QHBoxLayout(frameBlocks); frameBlocksLayout->setContentsMargins(3,0,3,0); frameBlocksLayout->setSpacing(3); @@ -674,17 +673,27 @@ void BitcoinGUI::setNumBlocks(int count, int nTotalBlocks) { // Represent time from last generated block in human readable text QString timeBehindText; - if(secs < 48*60*60) + const int HOUR_IN_SECONDS = 60*60; + const int DAY_IN_SECONDS = 24*60*60; + const int WEEK_IN_SECONDS = 7*24*60*60; + const int YEAR_IN_SECONDS = 31556952; // Average length of year in Gregorian calendar + if(secs < 2*DAY_IN_SECONDS) { - timeBehindText = tr("%n hour(s)","",secs/(60*60)); + timeBehindText = tr("%n hour(s)","",secs/HOUR_IN_SECONDS); } - else if(secs < 14*24*60*60) + else if(secs < 2*WEEK_IN_SECONDS) { - timeBehindText = tr("%n day(s)","",secs/(24*60*60)); + timeBehindText = tr("%n day(s)","",secs/DAY_IN_SECONDS); + } + else if(secs < YEAR_IN_SECONDS) + { + timeBehindText = tr("%n week(s)","",secs/WEEK_IN_SECONDS); } else { - timeBehindText = tr("%n week(s)","",secs/(7*24*60*60)); + int years = secs / YEAR_IN_SECONDS; + int remainder = secs % YEAR_IN_SECONDS; + timeBehindText = tr("%1 and %2").arg(tr("%n year(s)", "", years)).arg(tr("%n week(s)","", remainder/WEEK_IN_SECONDS)); } progressBarLabel->setVisible(true); diff --git a/src/qt/clientmodel.cpp b/src/qt/clientmodel.cpp index f273b9ea46..cb832fdd42 100644 --- a/src/qt/clientmodel.cpp +++ b/src/qt/clientmodel.cpp @@ -39,9 +39,18 @@ ClientModel::~ClientModel() unsubscribeFromCoreSignals(); } -int ClientModel::getNumConnections() const +int ClientModel::getNumConnections(unsigned int flags) const { - return vNodes.size(); + LOCK(cs_vNodes); + if (flags == CONNECTIONS_ALL) // Shortcut if we want total + return vNodes.size(); + + int nNum = 0; + BOOST_FOREACH(CNode* pnode, vNodes) + if (flags & (pnode->fInbound ? CONNECTIONS_IN : CONNECTIONS_OUT)) + nNum++; + + return nNum; } int ClientModel::getNumBlocks() const diff --git a/src/qt/clientmodel.h b/src/qt/clientmodel.h index ca735f14ce..f29b695ea1 100644 --- a/src/qt/clientmodel.h +++ b/src/qt/clientmodel.h @@ -25,6 +25,13 @@ enum BlockSource { BLOCK_SOURCE_NETWORK }; +enum NumConnections { + CONNECTIONS_NONE = 0, + CONNECTIONS_IN = (1U << 0), + CONNECTIONS_OUT = (1U << 1), + CONNECTIONS_ALL = (CONNECTIONS_IN | CONNECTIONS_OUT), +}; + /** Model for Bitcoin network client. */ class ClientModel : public QObject { @@ -36,7 +43,8 @@ public: OptionsModel *getOptionsModel(); - int getNumConnections() const; + //! Return number of connections, default is in- and outbound (total) + int getNumConnections(unsigned int flags = CONNECTIONS_ALL) const; int getNumBlocks() const; int getNumBlocksAtStartup(); diff --git a/src/qt/coincontroldialog.cpp b/src/qt/coincontroldialog.cpp index 1e5a2efc94..9df8f180b1 100644 --- a/src/qt/coincontroldialog.cpp +++ b/src/qt/coincontroldialog.cpp @@ -18,7 +18,6 @@ #include <QApplication> #include <QCheckBox> -#include <QColor> #include <QCursor> #include <QDialogButtonBox> #include <QFlags> @@ -386,6 +385,18 @@ void CoinControlDialog::viewItemChanged(QTreeWidgetItem* item, int column) if (ui->treeWidget->isEnabled()) // do not update on every click for (un)select all CoinControlDialog::updateLabels(model, this); } + + // todo: this is a temporary qt5 fix: when clicking a parent node in tree mode, the parent node + // including all childs are partially selected. But the parent node should be fully selected + // as well as the childs. Childs should never be partially selected in the first place. + // Please remove this ugly fix, once the bug is solved upstream. +#if QT_VERSION >= 0x050000 + else if (column == COLUMN_CHECKBOX && item->childCount() > 0) + { + if (item->checkState(COLUMN_CHECKBOX) == Qt::PartiallyChecked && item->child(0)->checkState(COLUMN_CHECKBOX) == Qt::PartiallyChecked) + item->setCheckState(COLUMN_CHECKBOX, Qt::Checked); + } +#endif } // return human readable label for priority number @@ -662,9 +673,6 @@ void CoinControlDialog::updateView() itemWalletAddress->setFlags(flgTristate); itemWalletAddress->setCheckState(COLUMN_CHECKBOX,Qt::Unchecked); - for (int i = 0; i < ui->treeWidget->columnCount(); i++) - itemWalletAddress->setBackground(i, QColor(248, 247, 246)); - // label itemWalletAddress->setText(COLUMN_LABEL, sWalletLabel); diff --git a/src/qt/forms/addressbookpage.ui b/src/qt/forms/addressbookpage.ui index 49221f41c1..f40c446050 100644 --- a/src/qt/forms/addressbookpage.ui +++ b/src/qt/forms/addressbookpage.ui @@ -122,6 +122,12 @@ </item> <item> <widget class="QPushButton" name="closeButton"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Minimum" vsizetype="Minimum"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> <property name="text"> <string>C&lose</string> </property> diff --git a/src/qt/forms/optionsdialog.ui b/src/qt/forms/optionsdialog.ui index a555f13c2a..36b070f1c8 100644 --- a/src/qt/forms/optionsdialog.ui +++ b/src/qt/forms/optionsdialog.ui @@ -190,26 +190,6 @@ </layout> </item> <item> - <widget class="QLabel" name="spendZeroConfChangeInfoLabel"> - <property name="text"> - <string>If you disable the spending of unconfirmed change, the change from a transaction cannot be used until that transaction has at least one confirmation. This also affects how your balance is computed.</string> - </property> - <property name="textFormat"> - <enum>Qt::PlainText</enum> - </property> - <property name="wordWrap"> - <bool>true</bool> - </property> - </widget> - </item> - <item> - <widget class="QCheckBox" name="spendZeroConfChange"> - <property name="text"> - <string>&Spend unconfirmed change (experts only)</string> - </property> - </widget> - </item> - <item> <spacer name="verticalSpacer_Wallet"> <property name="orientation"> <enum>Qt::Vertical</enum> @@ -222,6 +202,35 @@ </property> </spacer> </item> + <item> + <widget class="QGroupBox" name="groupBox"> + <property name="title"> + <string>Expert</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <item> + <widget class="QCheckBox" name="coinControlFeatures"> + <property name="toolTip"> + <string>Whether to show coin control features or not.</string> + </property> + <property name="text"> + <string>Enable coin &control features</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="spendZeroConfChange"> + <property name="toolTip"> + <string>If you disable the spending of unconfirmed change, the change from a transaction cannot be used until that transaction has at least one confirmation. This also affects how your balance is computed.</string> + </property> + <property name="text"> + <string>&Spend unconfirmed change</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> </layout> </widget> <widget class="QWidget" name="tabNetwork"> @@ -469,16 +478,6 @@ </widget> </item> <item> - <widget class="QCheckBox" name="coinControlFeatures"> - <property name="toolTip"> - <string>Whether to show coin control features or not.</string> - </property> - <property name="text"> - <string>Display coin &control features (experts only)</string> - </property> - </widget> - </item> - <item> <spacer name="verticalSpacer_Display"> <property name="orientation"> <enum>Qt::Vertical</enum> diff --git a/src/qt/forms/receivecoinsdialog.ui b/src/qt/forms/receivecoinsdialog.ui index 3e1a8bccc7..e1a0a28f81 100644 --- a/src/qt/forms/receivecoinsdialog.ui +++ b/src/qt/forms/receivecoinsdialog.ui @@ -263,6 +263,9 @@ <property name="text"> <string>Show</string> </property> + <property name="enabled"> + <bool>false</bool> + </property> <property name="icon"> <iconset resource="../bitcoin.qrc"> <normaloff>:/icons/edit</normaloff>:/icons/edit</iconset> @@ -277,6 +280,9 @@ <property name="text"> <string>Remove</string> </property> + <property name="enabled"> + <bool>false</bool> + </property> <property name="icon"> <iconset resource="../bitcoin.qrc"> <normaloff>:/icons/remove</normaloff>:/icons/remove</iconset> diff --git a/src/qt/forms/sendcoinsdialog.ui b/src/qt/forms/sendcoinsdialog.ui index 95f3294adb..4cb1670c79 100644 --- a/src/qt/forms/sendcoinsdialog.ui +++ b/src/qt/forms/sendcoinsdialog.ui @@ -742,6 +742,12 @@ </property> <item> <widget class="QLabel" name="label"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> <property name="text"> <string>Balance:</string> </property> @@ -749,6 +755,12 @@ </item> <item> <widget class="QLabel" name="labelBalance"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> <property name="cursor"> <cursorShape>IBeamCursor</cursorShape> </property> diff --git a/src/qt/guiconstants.h b/src/qt/guiconstants.h index 9f6588bc9e..5ae4bc833d 100644 --- a/src/qt/guiconstants.h +++ b/src/qt/guiconstants.h @@ -41,4 +41,9 @@ static const int MAX_PAYMENT_REQUEST_SIZE = 50000; // bytes /* Number of frames in spinner animation */ #define SPINNER_FRAMES 35 +#define QAPP_ORG_NAME "Bitcoin" +#define QAPP_ORG_DOMAIN "bitcoin.org" +#define QAPP_APP_NAME_DEFAULT "Bitcoin-Qt" +#define QAPP_APP_NAME_TESTNET "Bitcoin-Qt-testnet" + #endif // GUICONSTANTS_H diff --git a/src/qt/guiutil.cpp b/src/qt/guiutil.cpp index 7e1831f037..4a4fece3e1 100644 --- a/src/qt/guiutil.cpp +++ b/src/qt/guiutil.cpp @@ -379,6 +379,121 @@ bool ToolTipToRichTextFilter::eventFilter(QObject *obj, QEvent *evt) return QObject::eventFilter(obj, evt); } +void TableViewLastColumnResizingFixer::connectViewHeadersSignals() +{ + connect(tableView->horizontalHeader(), SIGNAL(sectionResized(int,int,int)), this, SLOT(on_sectionResized(int,int,int))); + connect(tableView->horizontalHeader(), SIGNAL(geometriesChanged()), this, SLOT(on_geometriesChanged())); +} + +//we need to disconnect these while handling the resize events, otherwise we can enter infinite loops +void TableViewLastColumnResizingFixer::disconnectViewHeadersSignals() +{ + disconnect(tableView->horizontalHeader(), SIGNAL(sectionResized(int,int,int)), this, SLOT(on_sectionResized(int,int,int))); + disconnect(tableView->horizontalHeader(), SIGNAL(geometriesChanged()), this, SLOT(on_geometriesChanged())); +} + +//setup the resize mode, handles compatibility for QT5 and below as the method signatures changed. (refactored here for readability) +void TableViewLastColumnResizingFixer::setViewHeaderResizeMode(int logicalIndex, QHeaderView::ResizeMode resizeMode) +{ +#if QT_VERSION < 0x050000 + tableView->horizontalHeader()->setResizeMode(logicalIndex, resizeMode); +#else + tableView->horizontalHeader()->setSectionResizeMode(logicalIndex, resizeMode); +#endif +} + +void TableViewLastColumnResizingFixer::resizeColumn(int nColumnIndex, int width) { + tableView->setColumnWidth(nColumnIndex, width); + tableView->horizontalHeader()->resizeSection(nColumnIndex, width); +} + +int TableViewLastColumnResizingFixer::getColumnsWidth() +{ + int nColumnsWidthSum = 0; + for (int i = 0; i < columnCount; i++) + { + nColumnsWidthSum += tableView->horizontalHeader()->sectionSize(i); + } + return nColumnsWidthSum; +} + +int TableViewLastColumnResizingFixer::getAvailableWidthForColumn(int column) +{ + int nResult = lastColumnMinimumWidth; + int nTableWidth = tableView->horizontalHeader()->width(); + + if (nTableWidth > 0) + { + int nOtherColsWidth = getColumnsWidth() - tableView->horizontalHeader()->sectionSize(column); + nResult = std::max(nResult, nTableWidth - nOtherColsWidth); + } + + return nResult; +} + +//make sure we don't make the columns wider than the table's viewport's width. +void TableViewLastColumnResizingFixer::adjustTableColumnsWidth() +{ + disconnectViewHeadersSignals(); + resizeColumn(lastColumnIndex, getAvailableWidthForColumn(lastColumnIndex)); + connectViewHeadersSignals(); + + int nTableWidth = tableView->horizontalHeader()->width(); + int nColsWidth = getColumnsWidth(); + if (nColsWidth > nTableWidth) + { + resizeColumn(secondToLastColumnIndex,getAvailableWidthForColumn(secondToLastColumnIndex)); + } +} + +//make column use all the space available, useful during window resizing. +void TableViewLastColumnResizingFixer::stretchColumnWidth(int column) { + disconnectViewHeadersSignals(); + resizeColumn(column, getAvailableWidthForColumn(column)); + connectViewHeadersSignals(); +} + +//when a section is resized this is a slot-proxy for ajustAmountColumnWidth() +void TableViewLastColumnResizingFixer::on_sectionResized(int logicalIndex, int oldSize, int newSize) +{ + adjustTableColumnsWidth(); + int remainingWidth = getAvailableWidthForColumn(logicalIndex); + if (newSize > remainingWidth) + { + resizeColumn(logicalIndex, remainingWidth); + } +} + +//when the table's geometry is ready, we manually perform the Stretch of the "Message" column +//as the "Stretch" resize mode does not allow for interactive resizing. +void TableViewLastColumnResizingFixer::on_geometriesChanged() +{ + if ((getColumnsWidth() - this->tableView->horizontalHeader()->width()) != 0) + { + disconnectViewHeadersSignals(); + resizeColumn(secondToLastColumnIndex, getAvailableWidthForColumn(secondToLastColumnIndex)); + connectViewHeadersSignals(); + } +} + +/** + * Initializes all internal variables and prepares the + * the resize modes of the last 2 columns of the table and + */ +TableViewLastColumnResizingFixer::TableViewLastColumnResizingFixer(QTableView* table, int lastColMinimumWidth, int allColsMinimumWidth) : + tableView(table), + lastColumnMinimumWidth(lastColMinimumWidth), + allColumnsMinimumWidth(allColsMinimumWidth) +{ + columnCount = tableView->horizontalHeader()->count(); + lastColumnIndex = columnCount - 1; + secondToLastColumnIndex = columnCount - 2; + tableView->horizontalHeader()->setMinimumSectionSize(allColumnsMinimumWidth); + setViewHeaderResizeMode(secondToLastColumnIndex, QHeaderView::Interactive); + setViewHeaderResizeMode(lastColumnIndex, QHeaderView::Interactive); +} + + #ifdef WIN32 boost::filesystem::path static StartupShortcutPath() { diff --git a/src/qt/guiutil.h b/src/qt/guiutil.h index 52124ff20a..26202e8d41 100644 --- a/src/qt/guiutil.h +++ b/src/qt/guiutil.h @@ -8,6 +8,8 @@ #include <QMessageBox> #include <QObject> #include <QString> +#include <QTableView> +#include <QHeaderView> class QValidatedLineEdit; class SendCoinsRecipient; @@ -116,6 +118,44 @@ namespace GUIUtil int size_threshold; }; + /** + * Makes a QTableView last column feel as if it was being resized from its left border. + * Also makes sure the column widths are never larger than the table's viewport. + * In Qt, all columns are resizable from the right, but it's not intuitive resizing the last column from the right. + * Usually our second to last columns behave as if stretched, and when on strech mode, columns aren't resizable + * interactively or programatically. + * + * This helper object takes care of this issue. + * + */ + class TableViewLastColumnResizingFixer: public QObject + { + Q_OBJECT + public: + TableViewLastColumnResizingFixer(QTableView* table, int lastColMinimumWidth, int allColsMinimumWidth); + void stretchColumnWidth(int column); + + private: + QTableView* tableView; + int lastColumnMinimumWidth; + int allColumnsMinimumWidth; + int lastColumnIndex; + int columnCount; + int secondToLastColumnIndex; + + void adjustTableColumnsWidth(); + int getAvailableWidthForColumn(int column); + int getColumnsWidth(); + void connectViewHeadersSignals(); + void disconnectViewHeadersSignals(); + void setViewHeaderResizeMode(int logicalIndex, QHeaderView::ResizeMode resizeMode); + void resizeColumn(int nColumnIndex, int width); + + private slots: + void on_sectionResized(int logicalIndex, int oldSize, int newSize); + void on_geometriesChanged(); + }; + bool GetStartOnSystemStartup(); bool SetStartOnSystemStartup(bool fAutoStart); diff --git a/src/qt/intro.cpp b/src/qt/intro.cpp index fc1258827e..3bc19f8645 100644 --- a/src/qt/intro.cpp +++ b/src/qt/intro.cpp @@ -14,7 +14,7 @@ /* Minimum free space (in bytes) needed for data directory */ static const uint64_t GB_BYTES = 1000000000LL; -static const uint64_t BLOCK_CHAIN_SIZE = 10LL * GB_BYTES; +static const uint64_t BLOCK_CHAIN_SIZE = 20LL * GB_BYTES; /* Check free space asynchronously to prevent hanging the UI thread. @@ -146,7 +146,7 @@ QString Intro::getDefaultDataDirectory() return QString::fromStdString(GetDefaultDataDir().string()); } -void Intro::pickDataDirectory(bool fIsTestnet) +void Intro::pickDataDirectory() { namespace fs = boost::filesystem; QSettings settings; @@ -164,10 +164,7 @@ void Intro::pickDataDirectory(bool fIsTestnet) /* If current default data directory does not exist, let the user choose one */ Intro intro; intro.setDataDirectory(dataDir); - if (!fIsTestnet) - intro.setWindowIcon(QIcon(":icons/bitcoin")); - else - intro.setWindowIcon(QIcon(":icons/bitcoin_testnet")); + intro.setWindowIcon(QIcon(":icons/bitcoin")); while(true) { diff --git a/src/qt/intro.h b/src/qt/intro.h index 72693d5544..295a75562f 100644 --- a/src/qt/intro.h +++ b/src/qt/intro.h @@ -36,7 +36,7 @@ public: * @note do NOT call global GetDataDir() before calling this function, this * will cause the wrong path to be cached. */ - static void pickDataDirectory(bool fIsTestnet); + static void pickDataDirectory(); /** * Determine default data directory for operating system. diff --git a/src/qt/locale/bitcoin_ar.ts b/src/qt/locale/bitcoin_ar.ts index 2cd74d6604..1ab281b3f0 100644 --- a/src/qt/locale/bitcoin_ar.ts +++ b/src/qt/locale/bitcoin_ar.ts @@ -31,18 +31,24 @@ This product includes software developed by the OpenSSL Project for use in the O <source>The Bitcoin Core developers</source> <translation type="unfinished"/> </message> + <message> + <location line="+12"/> + <location line="+2"/> + <source> (%1-bit)</source> + <translation type="unfinished"/> + </message> </context> <context> <name>AddressBookPage</name> <message> <location filename="../forms/addressbookpage.ui" line="+30"/> <source>Double-click to edit address or label</source> - <translation>أنقر على الماوس مرتين لتعديل عنوان</translation> + <translation>أنقر على الماوس مرتين لتعديل العنوان</translation> </message> <message> <location line="+27"/> <source>Create a new address</source> - <translation>قم بعمل عنوان جديد</translation> + <translation>انشأ عنوان جديد</translation> </message> <message> <location line="+3"/> @@ -67,7 +73,7 @@ This product includes software developed by the OpenSSL Project for use in the O <message> <location filename="../addressbookpage.cpp" line="+74"/> <source>&Copy Address</source> - <translation type="unfinished"/> + <translation>انسخ العنوان</translation> </message> <message> <location filename="../forms/addressbookpage.ui" line="-41"/> @@ -132,7 +138,7 @@ This product includes software developed by the OpenSSL Project for use in the O <message> <location line="+1"/> <source>&Edit</source> - <translation type="unfinished"/> + <translation>تعديل</translation> </message> <message> <location line="+194"/> @@ -188,7 +194,7 @@ This product includes software developed by the OpenSSL Project for use in the O <message> <location line="+14"/> <source>New passphrase</source> - <translation>كلمة مرور جديدة</translation> + <translation>عبارة مرور جديدة</translation> </message> <message> <location line="+14"/> @@ -270,7 +276,7 @@ This product includes software developed by the OpenSSL Project for use in the O <message> <location line="-56"/> <source>Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer.</source> - <translation type="unfinished"/> + <translation>بتكوين سوف يغلق الآن لإنهاء عملية التشفير. تذكر أن التشفير لا يستطيع حماية محفظتك تمامًا من السرقة من خلال البرمجيات الخبيثة التي تصيب جهازك </translation> </message> <message> <location line="+13"/> @@ -321,7 +327,7 @@ This product includes software developed by the OpenSSL Project for use in the O <message> <location filename="../bitcoingui.cpp" line="+295"/> <source>Sign &message...</source> - <translation type="unfinished"/> + <translation>التوقيع و الرسائل</translation> </message> <message> <location line="+335"/> @@ -356,7 +362,7 @@ This product includes software developed by the OpenSSL Project for use in the O <message> <location line="+17"/> <source>E&xit</source> - <translation type="unfinished"/> + <translation>خروج</translation> </message> <message> <location line="+1"/> @@ -372,12 +378,12 @@ This product includes software developed by the OpenSSL Project for use in the O <location line="+3"/> <location line="+2"/> <source>About &Qt</source> - <translation type="unfinished"/> + <translation>عن</translation> </message> <message> <location line="+2"/> <source>Show information about Qt</source> - <translation type="unfinished"/> + <translation>اظهر المعلومات</translation> </message> <message> <location line="+2"/> @@ -427,7 +433,7 @@ This product includes software developed by the OpenSSL Project for use in the O <message> <location line="-405"/> <source>Send coins to a Bitcoin address</source> - <translation type="unfinished"/> + <translation>ارسل عملات الى عنوان بيتكوين</translation> </message> <message> <location line="+49"/> @@ -437,7 +443,7 @@ This product includes software developed by the OpenSSL Project for use in the O <message> <location line="+12"/> <source>Backup wallet to another location</source> - <translation type="unfinished"/> + <translation>احفظ نسخة احتياطية للمحفظة في مكان آخر</translation> </message> <message> <location line="+2"/> @@ -513,7 +519,7 @@ This product includes software developed by the OpenSSL Project for use in the O <message> <location line="+14"/> <source>&Settings</source> - <translation>إعدادات</translation> + <translation>الاعدادات</translation> </message> <message> <location line="+9"/> @@ -576,7 +582,7 @@ This product includes software developed by the OpenSSL Project for use in the O <location line="+159"/> <location line="+5"/> <source>Bitcoin client</source> - <translation type="unfinished"/> + <translation>عميل بتكوين</translation> </message> <message numerus="yes"> <location line="+142"/> @@ -631,7 +637,7 @@ This product includes software developed by the OpenSSL Project for use in the O <message> <location line="+27"/> <source>Error</source> - <translation type="unfinished"/> + <translation>خطأ</translation> </message> <message> <location line="+3"/> @@ -683,7 +689,7 @@ Address: %4 <translation>المحفظة مشفرة و مقفلة حاليا</translation> </message> <message> - <location filename="../bitcoin.cpp" line="+438"/> + <location filename="../bitcoin.cpp" line="+435"/> <source>A fatal error occurred. Bitcoin can no longer continue safely and will quit.</source> <translation type="unfinished"/> </message> @@ -744,7 +750,7 @@ Address: %4 <translation type="unfinished"/> </message> <message> - <location line="+63"/> + <location line="+56"/> <source>(un)select all</source> <translation type="unfinished"/> </message> @@ -759,7 +765,7 @@ Address: %4 <translation type="unfinished"/> </message> <message> - <location line="+52"/> + <location line="+53"/> <source>Amount</source> <translation>المبلغ</translation> </message> @@ -781,7 +787,7 @@ Address: %4 <message> <location line="+3"/> <source>Confirmed</source> - <translation type="unfinished"/> + <translation>تأكيد</translation> </message> <message> <location line="+5"/> @@ -802,7 +808,7 @@ Address: %4 <location line="+1"/> <location line="+26"/> <source>Copy amount</source> - <translation type="unfinished"/> + <translation>نسخ الكمية</translation> </message> <message> <location line="-25"/> @@ -910,19 +916,19 @@ Address: %4 <translation type="unfinished"/> </message> <message> - <location line="+140"/> + <location line="+141"/> <source>Dust</source> <translation type="unfinished"/> </message> <message> <location line="+0"/> <source>yes</source> - <translation type="unfinished"/> + <translation>نعم</translation> </message> <message> <location line="+0"/> <source>no</source> - <translation type="unfinished"/> + <translation>لا</translation> </message> <message> <location line="+10"/> @@ -1013,7 +1019,7 @@ Address: %4 <message> <location line="-10"/> <source>&Address</source> - <translation type="unfinished"/> + <translation>العنوان</translation> </message> <message> <location filename="../editaddressdialog.cpp" line="+28"/> @@ -1093,7 +1099,7 @@ Address: %4 <translation type="unfinished"/> </message> <message> - <location filename="../utilitydialog.cpp" line="+38"/> + <location filename="../utilitydialog.cpp" line="+24"/> <source>Bitcoin Core</source> <translation type="unfinished"/> </message> @@ -1105,7 +1111,7 @@ Address: %4 <message> <location line="+2"/> <source>Usage:</source> - <translation type="unfinished"/> + <translation>المستخدم</translation> </message> <message> <location line="+1"/> @@ -1115,7 +1121,7 @@ Address: %4 <message> <location line="+4"/> <source>UI options</source> - <translation type="unfinished"/> + <translation>خيارات UI</translation> </message> <message> <location line="+1"/> @@ -1183,7 +1189,7 @@ Address: %4 <message> <location line="+19"/> <source>Error</source> - <translation type="unfinished"/> + <translation>خطأ</translation> </message> <message> <location line="+9"/> @@ -1234,10 +1240,10 @@ Address: %4 <message> <location line="+13"/> <source>&Main</source> - <translation type="unfinished"/> + <translation>الرئيسي</translation> </message> <message> - <location line="+6"/> + <location line="+122"/> <source>Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB.</source> <translation type="unfinished"/> </message> @@ -1247,7 +1253,7 @@ Address: %4 <translation type="unfinished"/> </message> <message> - <location line="+31"/> + <location line="-131"/> <source>Automatically start Bitcoin after logging in to the system.</source> <translation type="unfinished"/> </message> @@ -1262,12 +1268,7 @@ Address: %4 <translation type="unfinished"/> </message> <message> - <location line="+13"/> - <source>Set database cache size in megabytes (default: 25)</source> - <translation type="unfinished"/> - </message> - <message> - <location line="+13"/> + <location line="+16"/> <source>MB</source> <translation type="unfinished"/> </message> @@ -1282,7 +1283,12 @@ Address: %4 <translation type="unfinished"/> </message> <message> - <location line="+58"/> + <location line="+107"/> + <source>&Spend unconfirmed change (experts only)</source> + <translation type="unfinished"/> + </message> + <message> + <location line="+37"/> <source>Connect to the Bitcoin network through a SOCKS proxy.</source> <translation type="unfinished"/> </message> @@ -1317,7 +1323,17 @@ Address: %4 <translation type="unfinished"/> </message> <message> - <location line="+6"/> + <location line="-86"/> + <source>W&allet</source> + <translation type="unfinished"/> + </message> + <message> + <location line="+52"/> + <source>If you disable the spending of unconfirmed change, the change from a transaction cannot be used until that transaction has at least one confirmation. This also affects how your balance is computed.</source> + <translation type="unfinished"/> + </message> + <message> + <location line="+40"/> <source>Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled.</source> <translation type="unfinished"/> </message> @@ -1354,7 +1370,7 @@ Address: %4 <message> <location line="+36"/> <source>&Window</source> - <translation type="unfinished"/> + <translation>نافذه</translation> </message> <message> <location line="+6"/> @@ -1409,7 +1425,7 @@ Address: %4 <message> <location line="+3"/> <source>&Display addresses in transaction list</source> - <translation type="unfinished"/> + <translation>عرض العناوين في قائمة الصفقة</translation> </message> <message> <location line="+7"/> @@ -1424,25 +1440,25 @@ Address: %4 <message> <location line="+136"/> <source>&OK</source> - <translation type="unfinished"/> + <translation>تم</translation> </message> <message> <location line="+7"/> <source>&Cancel</source> - <translation type="unfinished"/> + <translation>الغاء</translation> </message> <message> - <location filename="../optionsdialog.cpp" line="+67"/> + <location filename="../optionsdialog.cpp" line="+70"/> <source>default</source> - <translation type="unfinished"/> + <translation>الافتراضي</translation> </message> <message> - <location line="+57"/> + <location line="+58"/> <source>none</source> <translation type="unfinished"/> </message> <message> - <location line="+75"/> + <location line="+78"/> <source>Confirm options reset</source> <translation type="unfinished"/> </message> @@ -1465,7 +1481,7 @@ Address: %4 <message> <location line="+34"/> <source>The supplied proxy address is invalid.</source> - <translation type="unfinished"/> + <translation>عنوان الوكيل توفيره غير صالح.</translation> </message> </context> <context> @@ -1482,19 +1498,14 @@ Address: %4 <translation type="unfinished"/> </message> <message> - <location line="-155"/> - <source>Unconfirmed:</source> - <translation>غير مؤكدة:</translation> - </message> - <message> - <location line="-83"/> + <location line="-238"/> <source>Wallet</source> <translation>محفظة</translation> </message> <message> <location line="+51"/> - <source>Confirmed:</source> - <translation type="unfinished"/> + <source>Available:</source> + <translation>متوفر</translation> </message> <message> <location line="+16"/> @@ -1502,14 +1513,19 @@ Address: %4 <translation type="unfinished"/> </message> <message> - <location line="+32"/> + <location line="+16"/> + <source>Pending:</source> + <translation type="unfinished"/> + </message> + <message> + <location line="+16"/> <source>Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance</source> <translation type="unfinished"/> </message> <message> <location line="+16"/> <source>Immature:</source> - <translation type="unfinished"/> + <translation>غير ناضجة</translation> </message> <message> <location line="+13"/> @@ -1535,7 +1551,7 @@ Address: %4 <location filename="../overviewpage.cpp" line="+120"/> <location line="+1"/> <source>out of sync</source> - <translation type="unfinished"/> + <translation>خارج المزامنه</translation> </message> </context> <context> @@ -1650,6 +1666,11 @@ Address: %4 <source>Error: Invalid combination of -regtest and -testnet.</source> <translation type="unfinished"/> </message> + <message> + <location filename="../guiutil.cpp" line="+82"/> + <source>Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)</source> + <translation>إدخال عنوانBitcoin (مثال :1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)</translation> + </message> </context> <context> <name>QRImageWidget</name> @@ -1679,7 +1700,7 @@ Address: %4 <message> <location filename="../forms/rpcconsole.ui" line="+46"/> <source>Client name</source> - <translation type="unfinished"/> + <translation>اسم العميل</translation> </message> <message> <location line="+10"/> @@ -1694,17 +1715,17 @@ Address: %4 <location line="+23"/> <location filename="../rpcconsole.cpp" line="+359"/> <source>N/A</source> - <translation type="unfinished"/> + <translation>غير معروف</translation> </message> <message> <location line="-223"/> <source>Client version</source> - <translation type="unfinished"/> + <translation>نسخه العميل</translation> </message> <message> <location line="-45"/> <source>&Information</source> - <translation type="unfinished"/> + <translation>المعلومات</translation> </message> <message> <location line="-10"/> @@ -1729,17 +1750,17 @@ Address: %4 <message> <location line="+29"/> <source>Network</source> - <translation type="unfinished"/> + <translation>الشبكه</translation> </message> <message> <location line="+7"/> <source>Name</source> - <translation type="unfinished"/> + <translation>الاسم</translation> </message> <message> <location line="+23"/> <source>Number of connections</source> - <translation type="unfinished"/> + <translation>عدد الاتصالات</translation> </message> <message> <location line="+29"/> @@ -1764,7 +1785,7 @@ Address: %4 <message> <location line="+52"/> <source>&Open</source> - <translation type="unfinished"/> + <translation>الفتح</translation> </message> <message> <location line="+24"/> @@ -1799,7 +1820,7 @@ Address: %4 <message> <location line="-521"/> <source>Build date</source> - <translation type="unfinished"/> + <translation>وقت البناء</translation> </message> <message> <location line="+206"/> @@ -1870,22 +1891,22 @@ Address: %4 <context> <name>ReceiveCoinsDialog</name> <message> - <location filename="../forms/receivecoinsdialog.ui" line="+83"/> + <location filename="../forms/receivecoinsdialog.ui" line="+107"/> <source>&Amount:</source> <translation type="unfinished"/> </message> <message> - <location line="-13"/> + <location line="-16"/> <source>&Label:</source> <translation type="unfinished"/> </message> <message> - <location line="-34"/> + <location line="-37"/> <source>&Message:</source> <translation type="unfinished"/> </message> <message> - <location line="-17"/> + <location line="-20"/> <source>Reuse one of the previously used receiving addresses. Reusing addresses has security and privacy issues. Do not use this unless re-generating a payment request made before.</source> <translation type="unfinished"/> </message> @@ -1895,27 +1916,30 @@ Address: %4 <translation type="unfinished"/> </message> <message> - <location line="+27"/> - <source>An optional label to associate with the new receiving address</source> + <location line="+14"/> + <location line="+23"/> + <source>An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Bitcoin network.</source> <translation type="unfinished"/> </message> <message> - <location line="+7"/> - <source>An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Bitcoin network.</source> + <location line="-7"/> + <location line="+21"/> + <source>An optional label to associate with the new receiving address.</source> <translation type="unfinished"/> </message> <message> - <location line="+7"/> + <location line="-7"/> <source>Use this form to request payments. All fields are <b>optional</b>.</source> <translation type="unfinished"/> </message> <message> - <location line="+39"/> + <location line="+23"/> + <location line="+22"/> <source>An optional amount to request. Leave this empty or zero to not request a specific amount.</source> <translation type="unfinished"/> </message> <message> - <location line="+17"/> + <location line="+32"/> <source>Clear all fields of the form.</source> <translation type="unfinished"/> </message> @@ -1925,17 +1949,17 @@ Address: %4 <translation type="unfinished"/> </message> <message> - <location line="+36"/> - <source>&Request payment</source> + <location line="+78"/> + <source>Requested payments history</source> <translation type="unfinished"/> </message> <message> - <location line="+47"/> - <source>Requested payments</source> + <location line="-98"/> + <source>&Request payment</source> <translation type="unfinished"/> </message> <message> - <location line="+16"/> + <location line="+120"/> <source>Show the selected request (does the same as double clicking an entry)</source> <translation type="unfinished"/> </message> @@ -1954,6 +1978,21 @@ Address: %4 <source>Remove</source> <translation type="unfinished"/> </message> + <message> + <location filename="../receivecoinsdialog.cpp" line="+38"/> + <source>Copy label</source> + <translation> انسخ التسمية</translation> + </message> + <message> + <location line="+1"/> + <source>Copy message</source> + <translation>انسخ الرسالة</translation> + </message> + <message> + <location line="+1"/> + <source>Copy amount</source> + <translation>نسخ الكمية</translation> + </message> </context> <context> <name>ReceiveRequestDialog</name> @@ -2055,12 +2094,17 @@ Address: %4 <source>(no message)</source> <translation type="unfinished"/> </message> + <message> + <location line="+8"/> + <source>(no amount)</source> + <translation type="unfinished"/> + </message> </context> <context> <name>SendCoinsDialog</name> <message> <location filename="../forms/sendcoinsdialog.ui" line="+14"/> - <location filename="../sendcoinsdialog.cpp" line="+381"/> + <location filename="../sendcoinsdialog.cpp" line="+380"/> <location line="+80"/> <source>Send Coins</source> <translation>إرسال Coins</translation> @@ -2136,7 +2180,7 @@ Address: %4 <translation type="unfinished"/> </message> <message> - <location line="+115"/> + <location line="+164"/> <source>Send to multiple recipients at once</source> <translation>إرسال إلى عدة مستلمين في وقت واحد</translation> </message> @@ -2146,22 +2190,22 @@ Address: %4 <translation type="unfinished"/> </message> <message> - <location line="+20"/> + <location line="-23"/> <source>Clear all fields of the form.</source> <translation type="unfinished"/> </message> <message> <location line="+3"/> <source>Clear &All</source> - <translation type="unfinished"/> + <translation>مسح الكل</translation> </message> <message> - <location line="+22"/> + <location line="+52"/> <source>Balance:</source> <translation>الرصيد:</translation> </message> <message> - <location line="+41"/> + <location line="-78"/> <source>Confirm the send action</source> <translation>تأكيد الإرسال</translation> </message> @@ -2171,7 +2215,7 @@ Address: %4 <translation type="unfinished"/> </message> <message> - <location filename="../sendcoinsdialog.cpp" line="-228"/> + <location filename="../sendcoinsdialog.cpp" line="-229"/> <source>Confirm send coins</source> <translation>تأكيد الإرسال Coins</translation> </message> @@ -2184,19 +2228,14 @@ Address: %4 <translation type="unfinished"/> </message> <message> - <location line="-136"/> - <source>Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)</source> - <translation>إدخال عنوانBitcoin (مثال :1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)</translation> - </message> - <message> - <location line="+15"/> + <location line="-121"/> <source>Copy quantity</source> <translation type="unfinished"/> </message> <message> <location line="+1"/> <source>Copy amount</source> - <translation type="unfinished"/> + <translation>نسخ الكمية</translation> </message> <message> <location line="+1"/> @@ -2239,7 +2278,7 @@ Address: %4 <translation type="unfinished"/> </message> <message> - <location line="+202"/> + <location line="+203"/> <source>The recipient address is not valid, please recheck.</source> <translation type="unfinished"/> </message> @@ -2274,12 +2313,12 @@ Address: %4 <translation type="unfinished"/> </message> <message> - <location line="+112"/> + <location line="+113"/> <source>Warning: Invalid Bitcoin address</source> <translation type="unfinished"/> </message> <message> - <location line="+21"/> + <location line="+20"/> <source>(no label)</source> <translation>(لا وصف)</translation> </message> @@ -2289,7 +2328,7 @@ Address: %4 <translation type="unfinished"/> </message> <message> - <location line="-366"/> + <location line="-367"/> <source>Are you sure you want to send?</source> <translation type="unfinished"/> </message> @@ -2299,7 +2338,7 @@ Address: %4 <translation type="unfinished"/> </message> <message> - <location line="+170"/> + <location line="+171"/> <source>Payment request expired</source> <translation type="unfinished"/> </message> @@ -2321,7 +2360,7 @@ Address: %4 <message> <location line="-1152"/> <source>Pay &To:</source> - <translation type="unfinished"/> + <translation>ادفع الى </translation> </message> <message> <location line="+18"/> @@ -2373,15 +2412,10 @@ Address: %4 <message> <location line="-1008"/> <source>Message:</source> - <translation type="unfinished"/> + <translation>الرسائل</translation> </message> <message> - <location line="+10"/> - <source>A message that was attached to the Bitcoin URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network.</source> - <translation type="unfinished"/> - </message> - <message> - <location line="+958"/> + <location line="+968"/> <source>This is a verified payment request.</source> <translation type="unfinished"/> </message> @@ -2391,7 +2425,12 @@ Address: %4 <translation type="unfinished"/> </message> <message> - <location line="+459"/> + <location line="+33"/> + <source>A message that was attached to the bitcoin: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network.</source> + <translation type="unfinished"/> + </message> + <message> + <location line="+426"/> <source>This is an unverified payment request.</source> <translation type="unfinished"/> </message> @@ -2407,11 +2446,6 @@ Address: %4 <source>Memo:</source> <translation type="unfinished"/> </message> - <message> - <location filename="../sendcoinsentry.cpp" line="+1"/> - <source>Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)</source> - <translation>إدخال عنوانBitcoin (مثال :1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)</translation> - </message> </context> <context> <name>ShutdownWindow</name> @@ -2449,19 +2483,19 @@ Address: %4 <translation type="unfinished"/> </message> <message> - <location line="+10"/> - <location line="+213"/> + <location line="+7"/> + <location line="+210"/> <source>Choose previously used address</source> <translation type="unfinished"/> </message> <message> - <location line="-203"/> - <location line="+213"/> + <location line="-200"/> + <location line="+210"/> <source>Alt+A</source> <translation>Alt+A</translation> </message> <message> - <location line="-203"/> + <location line="-200"/> <source>Paste address from clipboard</source> <translation>انسخ العنوان من لوحة المفاتيح</translation> </message> @@ -2502,12 +2536,12 @@ Address: %4 </message> <message> <location line="+3"/> - <location line="+146"/> + <location line="+143"/> <source>Clear &All</source> - <translation type="unfinished"/> + <translation>مسح الكل</translation> </message> <message> - <location line="-87"/> + <location line="-84"/> <source>&Verify Message</source> <translation type="unfinished"/> </message> @@ -2522,7 +2556,7 @@ Address: %4 <translation type="unfinished"/> </message> <message> - <location line="+40"/> + <location line="+37"/> <source>Verify the message to ensure it was signed with the specified Bitcoin address</source> <translation type="unfinished"/> </message> @@ -2537,43 +2571,37 @@ Address: %4 <translation type="unfinished"/> </message> <message> - <location filename="../signverifymessagedialog.cpp" line="+29"/> - <location line="+3"/> + <location filename="../signverifymessagedialog.cpp" line="+30"/> <source>Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)</source> <translation>إدخال عنوانBitcoin (مثال :1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)</translation> </message> <message> - <location line="-2"/> + <location line="-1"/> <source>Click "Sign Message" to generate signature</source> <translation type="unfinished"/> </message> <message> - <location line="+3"/> - <source>Enter Bitcoin signature</source> - <translation>ضع توقيع الخاص بالبت كوين</translation> - </message> - <message> <location line="+84"/> - <location line="+81"/> + <location line="+80"/> <source>The entered address is invalid.</source> <translation>العنوان المدخل غير صالح</translation> </message> <message> - <location line="-81"/> + <location line="-80"/> <location line="+8"/> - <location line="+73"/> + <location line="+72"/> <location line="+8"/> <source>Please check the address and try again.</source> <translation>الرجاء التأكد من العنوان والمحاولة مرة اخرى</translation> </message> <message> - <location line="-81"/> - <location line="+81"/> + <location line="-80"/> + <location line="+80"/> <source>The entered address does not refer to a key.</source> <translation>العنوان المدخل لا يشير الى مفتاح</translation> </message> <message> - <location line="-73"/> + <location line="-72"/> <source>Wallet unlock was cancelled.</source> <translation type="unfinished"/> </message> @@ -2593,7 +2621,7 @@ Address: %4 <translation>الرسالة موقعة.</translation> </message> <message> - <location line="+59"/> + <location line="+58"/> <source>The signature could not be decoded.</source> <translation type="unfinished"/> </message> @@ -2654,6 +2682,11 @@ Address: %4 </message> <message> <location line="+6"/> + <source>conflicted</source> + <translation type="unfinished"/> + </message> + <message> + <location line="+2"/> <source>%1/offline</source> <translation>1% غير متواجد</translation> </message> @@ -2815,12 +2848,12 @@ Address: %4 <translation>لم يتم حتى الآن البث بنجاح</translation> </message> <message numerus="yes"> - <location line="-35"/> + <location line="-37"/> <source>Open for %n more block(s)</source> <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation> </message> <message> - <location line="+70"/> + <location line="+72"/> <source>unknown</source> <translation>غير معروف</translation> </message> @@ -2861,12 +2894,12 @@ Address: %4 <translation>المبلغ</translation> </message> <message> - <location line="+59"/> + <location line="+78"/> <source>Immature (%1 confirmations, will be available after %2)</source> <translation type="unfinished"/> </message> <message numerus="yes"> - <location line="+16"/> + <location line="-21"/> <source>Open for %n more block(s)</source> <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation> </message> @@ -2876,23 +2909,12 @@ Address: %4 <translation>مفتوح حتى 1٪</translation> </message> <message> - <location line="+3"/> - <source>Offline (%1 confirmations)</source> - <translation>غير متصل (1٪ تأكيدات)</translation> - </message> - <message> - <location line="+3"/> - <source>Unconfirmed (%1 of %2 confirmations)</source> - <translation>غير مؤكدة (٪ 1 من٪ 2 تأكيدات)</translation> - </message> - <message> - <location line="-22"/> - <location line="+25"/> + <location line="+12"/> <source>Confirmed (%1 confirmations)</source> <translation>تأكيد الإرسال Coins</translation> </message> <message> - <location line="-22"/> + <location line="+9"/> <source>This block was not received by any other nodes and will probably not be accepted!</source> <translation>لم يتم تلقى هذه الكتلة (Block) من قبل أي العقد الأخرى وربما لن تكون مقبولة!</translation> </message> @@ -2902,14 +2924,34 @@ Address: %4 <translation>ولدت ولكن لم تقبل</translation> </message> <message> - <location line="+62"/> + <location line="-21"/> + <source>Offline</source> + <translation>غير متصل</translation> + </message> + <message> + <location line="+3"/> + <source>Unconfirmed</source> + <translation type="unfinished"/> + </message> + <message> + <location line="+3"/> + <source>Confirming (%1 of %2 recommended confirmations)</source> + <translation type="unfinished"/> + </message> + <message> + <location line="+6"/> + <source>Conflicted</source> + <translation type="unfinished"/> + </message> + <message> + <location line="+51"/> <source>Received with</source> <translation>استقبل مع</translation> </message> <message> <location line="+2"/> <source>Received from</source> - <translation type="unfinished"/> + <translation>استقبل من</translation> </message> <message> <location line="+3"/> @@ -2932,7 +2974,7 @@ Address: %4 <translation>غير متوفر</translation> </message> <message> - <location line="+199"/> + <location line="+190"/> <source>Transaction status. Hover over this field to show number of confirmations.</source> <translation>حالة المعاملة. تحوم حول هذا الحقل لعرض عدد التأكيدات.</translation> </message> @@ -3043,7 +3085,7 @@ Address: %4 <message> <location line="+1"/> <source>Copy amount</source> - <translation type="unfinished"/> + <translation>نسخ الكمية</translation> </message> <message> <location line="+1"/> @@ -3093,7 +3135,7 @@ Address: %4 <message> <location line="+9"/> <source>Confirmed</source> - <translation type="unfinished"/> + <translation>تأكيد</translation> </message> <message> <location line="+1"/> @@ -3123,7 +3165,7 @@ Address: %4 <message> <location line="+1"/> <source>ID</source> - <translation type="unfinished"/> + <translation>العنوان</translation> </message> <message> <location line="+107"/> @@ -3133,7 +3175,7 @@ Address: %4 <message> <location line="+8"/> <source>to</source> - <translation type="unfinished"/> + <translation>الى</translation> </message> </context> <context> @@ -3198,12 +3240,12 @@ Address: %4 <context> <name>bitcoin-core</name> <message> - <location filename="../bitcoinstrings.cpp" line="+221"/> + <location filename="../bitcoinstrings.cpp" line="+223"/> <source>Usage:</source> - <translation type="unfinished"/> + <translation>المستخدم</translation> </message> <message> - <location line="-54"/> + <location line="-55"/> <source>List commands</source> <translation>اعرض الأوامر</translation> </message> @@ -3235,7 +3277,7 @@ Address: %4 <message> <location line="-9"/> <source>Set database cache size in megabytes (default: 25)</source> - <translation type="unfinished"/> + <translation>ضع حجم كاش قاعدة البيانات بالميجابايت (الافتراضي: 25)</translation> </message> <message> <location line="-26"/> @@ -3258,12 +3300,12 @@ Address: %4 <translation type="unfinished"/> </message> <message> - <location line="+5"/> + <location line="+6"/> <source>Threshold for disconnecting misbehaving peers (default: 100)</source> <translation type="unfinished"/> </message> <message> - <location line="-148"/> + <location line="-150"/> <source>Number of seconds to keep misbehaving peers from reconnecting (default: 86400)</source> <translation type="unfinished"/> </message> @@ -3283,19 +3325,19 @@ Address: %4 <translation type="unfinished"/> </message> <message> - <location line="+80"/> + <location line="+81"/> <source>Run in the background as a daemon and accept commands</source> <translation type="unfinished"/> </message> <message> - <location line="+39"/> + <location line="+40"/> <source>Use the test network</source> - <translation type="unfinished"/> + <translation>استخدم التحقق من الشبكه</translation> </message> <message> - <location line="-118"/> + <location line="-120"/> <source>Accept connections from outside (default: 1 if no -proxy or -connect)</source> - <translation type="unfinished"/> + <translation>قبول الاتصالات من خارج</translation> </message> <message> <location line="-95"/> @@ -3424,6 +3466,11 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. </message> <message> <location line="+5"/> + <source>Clear list of wallet transactions (diagnostic tool; implies -rescan)</source> + <translation type="unfinished"/> + </message> + <message> + <location line="+1"/> <source>Connect only to the specified node(s)</source> <translation type="unfinished"/> </message> @@ -3495,7 +3542,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <message> <location line="+1"/> <source>Failed to listen on any port. Use -listen=0 if you want this.</source> - <translation type="unfinished"/> + <translation>فشل في الاستماع على أي منفذ. استخدام الاستماع = 0 إذا كنت تريد هذا.</translation> </message> <message> <location line="+1"/> @@ -3634,6 +3681,11 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. </message> <message> <location line="+2"/> + <source>Spend unconfirmed change when sending transactions (default: 1)</source> + <translation type="unfinished"/> + </message> + <message> + <location line="+1"/> <source>Start Bitcoin server</source> <translation type="unfinished"/> </message> @@ -3683,12 +3735,12 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation type="unfinished"/> </message> <message> - <location line="-79"/> + <location line="-80"/> <source>Imports blocks from external blk000??.dat file</source> <translation type="unfinished"/> </message> <message> - <location line="-105"/> + <location line="-106"/> <source>Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message)</source> <translation type="unfinished"/> </message> @@ -3708,7 +3760,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation type="unfinished"/> </message> <message> - <location line="+89"/> + <location line="+90"/> <source>Information</source> <translation type="unfinished"/> </message> @@ -3778,7 +3830,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation type="unfinished"/> </message> <message> - <location line="+6"/> + <location line="+7"/> <source>System error: </source> <translation type="unfinished"/> </message> @@ -3824,6 +3876,11 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. </message> <message> <location line="+2"/> + <source>Zapping all transactions from wallet...</source> + <translation type="unfinished"/> + </message> + <message> + <location line="+1"/> <source>version</source> <translation>النسخة</translation> </message> @@ -3833,32 +3890,32 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation type="unfinished"/> </message> <message> - <location line="-58"/> + <location line="-60"/> <source>Password for JSON-RPC connections</source> <translation type="unfinished"/> </message> <message> - <location line="-70"/> + <location line="-71"/> <source>Allow JSON-RPC connections from specified IP address</source> <translation type="unfinished"/> </message> <message> - <location line="+80"/> + <location line="+81"/> <source>Send commands to node running on <ip> (default: 127.0.0.1)</source> <translation type="unfinished"/> </message> <message> - <location line="-132"/> + <location line="-133"/> <source>Execute command when the best block changes (%s in cmd is replaced by block hash)</source> <translation type="unfinished"/> </message> <message> - <location line="+161"/> + <location line="+163"/> <source>Upgrade wallet to latest format</source> <translation type="unfinished"/> </message> <message> - <location line="-24"/> + <location line="-25"/> <source>Set key pool size to <n> (default: 100)</source> <translation type="unfinished"/> </message> @@ -3868,12 +3925,12 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation type="unfinished"/> </message> <message> - <location line="+38"/> + <location line="+39"/> <source>Use OpenSSL (https) for JSON-RPC connections</source> <translation type="unfinished"/> </message> <message> - <location line="-30"/> + <location line="-31"/> <source>Server certificate file (default: server.cert)</source> <translation type="unfinished"/> </message> @@ -3883,9 +3940,9 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation type="unfinished"/> </message> <message> - <location line="+16"/> + <location line="+17"/> <source>This help message</source> - <translation type="unfinished"/> + <translation>رسالة المساعدة هذه</translation> </message> <message> <location line="+7"/> @@ -3893,34 +3950,34 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation type="unfinished"/> </message> <message> - <location line="-107"/> + <location line="-109"/> <source>Allow DNS lookups for -addnode, -seednode and -connect</source> <translation type="unfinished"/> </message> <message> - <location line="+60"/> + <location line="+61"/> <source>Loading addresses...</source> - <translation type="unfinished"/> + <translation>تحميل العنوان</translation> </message> <message> <location line="-37"/> <source>Error loading wallet.dat: Wallet corrupted</source> - <translation type="unfinished"/> + <translation>خطأ عند تنزيل wallet.dat: المحفظة تالفة</translation> </message> <message> <location line="+1"/> <source>Error loading wallet.dat: Wallet requires newer version of Bitcoin</source> - <translation type="unfinished"/> + <translation>خطأ عند تنزيل wallet.dat: المحفظة تتطلب نسخة أحدث من بتكوين</translation> </message> <message> - <location line="+98"/> + <location line="+99"/> <source>Wallet needed to be rewritten: restart Bitcoin to complete</source> - <translation type="unfinished"/> + <translation>المحفظة تحتاج لإعادة إنشاء: أعد تشغيل بتكوين للإتمام</translation> </message> <message> - <location line="-100"/> + <location line="-101"/> <source>Error loading wallet.dat</source> - <translation type="unfinished"/> + <translation>خطأ عند تنزيل wallet.dat</translation> </message> <message> <location line="+31"/> @@ -3928,7 +3985,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation type="unfinished"/> </message> <message> - <location line="+56"/> + <location line="+57"/> <source>Unknown network specified in -onlynet: '%s'</source> <translation type="unfinished"/> </message> @@ -3938,7 +3995,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation type="unfinished"/> </message> <message> - <location line="-101"/> + <location line="-103"/> <source>Cannot resolve -bind address: '%s'</source> <translation type="unfinished"/> </message> @@ -3948,7 +4005,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation type="unfinished"/> </message> <message> - <location line="+48"/> + <location line="+49"/> <source>Invalid amount for -paytxfee=<amount>: '%s'</source> <translation type="unfinished"/> </message> @@ -3968,7 +4025,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation type="unfinished"/> </message> <message> - <location line="-62"/> + <location line="-63"/> <source>Add a node to connect to and attempt to keep the connection open</source> <translation type="unfinished"/> </message> @@ -3978,12 +4035,12 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation type="unfinished"/> </message> <message> - <location line="+95"/> + <location line="+96"/> <source>Loading wallet...</source> - <translation type="unfinished"/> + <translation>تحميل المحفظه</translation> </message> <message> - <location line="-56"/> + <location line="-57"/> <source>Cannot downgrade wallet</source> <translation type="unfinished"/> </message> @@ -3993,27 +4050,27 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation type="unfinished"/> </message> <message> - <location line="+67"/> + <location line="+68"/> <source>Rescanning...</source> - <translation type="unfinished"/> + <translation>إعادة مسح</translation> </message> <message> <location line="-58"/> <source>Done loading</source> - <translation type="unfinished"/> + <translation>انتهاء التحميل</translation> </message> <message> - <location line="+85"/> + <location line="+86"/> <source>To use the %s option</source> <translation type="unfinished"/> </message> <message> - <location line="-77"/> + <location line="-78"/> <source>Error</source> - <translation type="unfinished"/> + <translation>خطأ</translation> </message> <message> - <location line="-35"/> + <location line="-36"/> <source>You must set rpcpassword=<password> in the configuration file: %s If the file does not exist, create it with owner-readable-only file permissions.</source> diff --git a/src/qt/locale/bitcoin_en.ts b/src/qt/locale/bitcoin_en.ts index 628847e030..ebcfde35c4 100644 --- a/src/qt/locale/bitcoin_en.ts +++ b/src/qt/locale/bitcoin_en.ts @@ -637,6 +637,19 @@ This product includes software developed by the OpenSSL Project for use in the O </translation> </message> <message> + <location line="+0"/> + <source>%1 and %2</source> + <translation type="unfinished"></translation> + </message> + <message numerus="yes"> + <location line="+0"/> + <source>%n year(s)</source> + <translation type="unfinished"> + <numerusform>%n year</numerusform> + <numerusform>%n years</numerusform> + </translation> + </message> + <message> <location line="+4"/> <source>%1 behind</source> <translation>%1 behind</translation> diff --git a/src/qt/locale/bitcoin_es.ts b/src/qt/locale/bitcoin_es.ts index f190b33e02..3807c8bbaf 100644 --- a/src/qt/locale/bitcoin_es.ts +++ b/src/qt/locale/bitcoin_es.ts @@ -4,7 +4,7 @@ <message> <location filename="../forms/aboutdialog.ui" line="+14"/> <source>About Bitcoin Core</source> - <translation>Acerca del Núcleo de Bitcoin</translation> + <translation>Acerca de Bitcoin Core</translation> </message> <message> <location line="+39"/> @@ -39,6 +39,12 @@ Eric Young (eay@cryptsoft.com) y el software UPnP escrito por Thomas Bernard.</t <source>The Bitcoin Core developers</source> <translation>Los desarrolladores del Núcleo de Bitcoin</translation> </message> + <message> + <location line="+12"/> + <location line="+2"/> + <source> (%1-bit)</source> + <translation> (%1-bit)</translation> + </message> </context> <context> <name>AddressBookPage</name> @@ -100,12 +106,12 @@ Eric Young (eay@cryptsoft.com) y el software UPnP escrito por Thomas Bernard.</t <message> <location filename="../addressbookpage.cpp" line="-30"/> <source>Choose the address to send coins to</source> - <translation>Escoja la dirección para enviar monedas</translation> + <translation>Escoja la dirección a la que enviar bitcoins</translation> </message> <message> <location line="+1"/> <source>Choose the address to receive coins with</source> - <translation>Escoja la dirección para recibir monedas</translation> + <translation>Escoja la dirección de la que recibir bitcoins</translation> </message> <message> <location line="+5"/> @@ -115,17 +121,17 @@ Eric Young (eay@cryptsoft.com) y el software UPnP escrito por Thomas Bernard.</t <message> <location line="+6"/> <source>Sending addresses</source> - <translation>Enviando dirección</translation> + <translation>Direcciones de envío</translation> </message> <message> <location line="+1"/> <source>Receiving addresses</source> - <translation>Recibiendo dirección</translation> + <translation>Direcciones de recepción</translation> </message> <message> <location line="+7"/> <source>These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins.</source> - <translation>Estas son sus direcciones Bitcoin para enviar pagos. Compruebe siempre la cantidad y la dirección receptora antes de transferir monedas.</translation> + <translation>Estas son sus direcciones Bitcoin para enviar pagos. Compruebe siempre la cantidad y la dirección receptora antes de enviar bitcoins.</translation> </message> <message> <location line="+4"/> @@ -408,12 +414,12 @@ Eric Young (eay@cryptsoft.com) y el software UPnP escrito por Thomas Bernard.</t <message> <location line="+10"/> <source>&Sending addresses...</source> - <translation>&Enviando direcciones...</translation> + <translation>Direcciones de &envío...</translation> </message> <message> <location line="+2"/> <source>&Receiving addresses...</source> - <translation>&Recibiendo direcciones...</translation> + <translation>Direcciones de &recepción...</translation> </message> <message> <location line="+3"/> @@ -433,7 +439,7 @@ Eric Young (eay@cryptsoft.com) y el software UPnP escrito por Thomas Bernard.</t <message> <location line="-405"/> <source>Send coins to a Bitcoin address</source> - <translation>Enviar monedas a una dirección Bitcoin</translation> + <translation>Enviar bitcoins a una dirección Bitcoin</translation> </message> <message> <location line="+49"/> @@ -540,7 +546,7 @@ Eric Young (eay@cryptsoft.com) y el software UPnP escrito por Thomas Bernard.</t <message> <location line="-401"/> <source>Bitcoin Core</source> - <translation>Núcleo de Bitcoin</translation> + <translation>Bitcoin Core</translation> </message> <message> <location line="+163"/> @@ -551,7 +557,7 @@ Eric Young (eay@cryptsoft.com) y el software UPnP escrito por Thomas Bernard.</t <location line="+29"/> <location line="+2"/> <source>&About Bitcoin Core</source> - <translation>&Acerca del Núcleo de Bitcoin</translation> + <translation>&Acerca de Bitcoin Core</translation> </message> <message> <location line="+35"/> @@ -622,7 +628,7 @@ Eric Young (eay@cryptsoft.com) y el software UPnP escrito por Thomas Bernard.</t <message> <location line="+4"/> <source>%1 behind</source> - <translation>%1 atrás</translation> + <translation>%1 por detrás</translation> </message> <message> <location line="+21"/> @@ -693,7 +699,7 @@ Dirección: %4 <translation>El monedero está <b>cifrado</b> y actualmente <b>bloqueado</b></translation> </message> <message> - <location filename="../bitcoin.cpp" line="+438"/> + <location filename="../bitcoin.cpp" line="+435"/> <source>A fatal error occurred. Bitcoin can no longer continue safely and will quit.</source> <translation>Ha ocurrido un error crítico. Bitcoin ya no puede continuar con seguridad y se cerrará.</translation> </message> @@ -711,7 +717,7 @@ Dirección: %4 <message> <location filename="../forms/coincontroldialog.ui" line="+14"/> <source>Coin Control Address Selection</source> - <translation>Selección de la dirección de control de la moneda</translation> + <translation>Selección de direcciones bajo Coin Control</translation> </message> <message> <location line="+34"/> @@ -754,7 +760,7 @@ Dirección: %4 <translation>Cambio:</translation> </message> <message> - <location line="+63"/> + <location line="+56"/> <source>(un)select all</source> <translation>(des)selecciona todos</translation> </message> @@ -769,7 +775,7 @@ Dirección: %4 <translation>Modo lista</translation> </message> <message> - <location line="+52"/> + <location line="+53"/> <source>Amount</source> <translation>Cantidad</translation> </message> @@ -920,7 +926,7 @@ Dirección: %4 <translation>nada</translation> </message> <message> - <location line="+140"/> + <location line="+141"/> <source>Dust</source> <translation>Basura</translation> </message> @@ -979,7 +985,7 @@ Dirección: %4 <message> <location line="+2"/> <source>This label turns red, if the change is smaller than %1.</source> - <translation>Esta etiqueta se vuelve roja si la cantidad de monedas es menor a %1</translation> + <translation>Esta etiqueta se vuelve roja si el cambio es menor que %1</translation> </message> <message> <location line="+43"/> @@ -1102,7 +1108,7 @@ Dirección: %4 <translation>Bitcoin Core - opciones de línea de comandos</translation> </message> <message> - <location filename="../utilitydialog.cpp" line="+38"/> + <location filename="../utilitydialog.cpp" line="+24"/> <source>Bitcoin Core</source> <translation>Núcleo de Bitcoin</translation> </message> @@ -1246,7 +1252,7 @@ Dirección: %4 <translation>&Principal</translation> </message> <message> - <location line="+6"/> + <location line="+122"/> <source>Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB.</source> <translation>Tarifa de transacción opcional por kB que ayuda a asegurar que sus transacciones sean procesadas rápidamente. La mayoría de transacciones son de 1kB.</translation> </message> @@ -1256,7 +1262,7 @@ Dirección: %4 <translation>Comisión de &transacciones</translation> </message> <message> - <location line="+31"/> + <location line="-131"/> <source>Automatically start Bitcoin after logging in to the system.</source> <translation>Iniciar Bitcoin automáticamente al encender el sistema.</translation> </message> @@ -1271,12 +1277,7 @@ Dirección: %4 <translation>Tamaño de cache de la &base de datos</translation> </message> <message> - <location line="+13"/> - <source>Set database cache size in megabytes (default: 25)</source> - <translation>Establecer el tamaño de caché de la base de datos en megabytes (predeterminado: 25)</translation> - </message> - <message> - <location line="+13"/> + <location line="+16"/> <source>MB</source> <translation>MB</translation> </message> @@ -1291,7 +1292,12 @@ Dirección: %4 <translation>Configura el número de hilos para el script de verificación (hasta 16, 0 = auto, <0 = leave that many cores free, por fecto: 0)</translation> </message> <message> - <location line="+58"/> + <location line="+107"/> + <source>&Spend unconfirmed change (experts only)</source> + <translation>&Gastar cambio no confirmado (solo expertos)</translation> + </message> + <message> + <location line="+37"/> <source>Connect to the Bitcoin network through a SOCKS proxy.</source> <translation>Conectarse a la red Bitcoin a través de un proxy SOCKS.</translation> </message> @@ -1326,7 +1332,17 @@ Dirección: %4 <translation>&Red</translation> </message> <message> - <location line="+6"/> + <location line="-86"/> + <source>W&allet</source> + <translation>&Monedero</translation> + </message> + <message> + <location line="+52"/> + <source>If you disable the spending of unconfirmed change, the change from a transaction cannot be used until that transaction has at least one confirmation. This also affects how your balance is computed.</source> + <translation>Si desactiva el gasto del cambio no confirmado, no se podrá usar el cambio de una transacción hasta que se alcance al menos una confirmación. Esto afecta también a cómo se calcula su saldo.</translation> + </message> + <message> + <location line="+40"/> <source>Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled.</source> <translation>Abrir automáticamente el puerto del cliente Bitcoin en el router. Esta opción solo funciona si el router admite UPnP y está activado.</translation> </message> @@ -1358,7 +1374,7 @@ Dirección: %4 <message> <location line="+13"/> <source>SOCKS version of the proxy (e.g. 5)</source> - <translation>Versión del proxy SOCKS (ej. 5)</translation> + <translation>Versión SOCKS del proxy (ej. 5)</translation> </message> <message> <location line="+36"/> @@ -1408,7 +1424,7 @@ Dirección: %4 <message> <location line="+13"/> <source>Choose the default subdivision unit to show in the interface and when sending coins.</source> - <translation>Elegir la subdivisión predeterminada para mostrar cantidades en la interfaz y cuando se envían monedas.</translation> + <translation>Elegir la subdivisión predeterminada para mostrar cantidades en la interfaz y cuando se envían bitcoins.</translation> </message> <message> <location line="+9"/> @@ -1423,12 +1439,12 @@ Dirección: %4 <message> <location line="+7"/> <source>Whether to show coin control features or not.</source> - <translation>Mostrar o no características de control de moneda</translation> + <translation>Mostrar o no funcionalidad de Coin Control</translation> </message> <message> <location line="+3"/> <source>Display coin &control features (experts only)</source> - <translation>Mostrar moneda y características de control (Avanzado)</translation> + <translation>Mostrar funcionalidad de Coin Control (solo expertos)</translation> </message> <message> <location line="+136"/> @@ -1441,17 +1457,17 @@ Dirección: %4 <translation>&Cancelar</translation> </message> <message> - <location filename="../optionsdialog.cpp" line="+67"/> + <location filename="../optionsdialog.cpp" line="+70"/> <source>default</source> <translation>predeterminado</translation> </message> <message> - <location line="+57"/> + <location line="+58"/> <source>none</source> <translation>nada</translation> </message> <message> - <location line="+75"/> + <location line="+78"/> <source>Confirm options reset</source> <translation>Confirme el restablecimiento de las opciones</translation> </message> @@ -1491,19 +1507,14 @@ Dirección: %4 <translation>La información mostrada puede estar desactualizada. Su monedero se sincroniza automáticamente con la red Bitcoin después de que se haya establecido una conexión, pero este proceso aún no se ha completado.</translation> </message> <message> - <location line="-155"/> - <source>Unconfirmed:</source> - <translation>No confirmado(s):</translation> - </message> - <message> - <location line="-83"/> + <location line="-238"/> <source>Wallet</source> <translation>Monedero</translation> </message> <message> <location line="+51"/> - <source>Confirmed:</source> - <translation>Confirmado:</translation> + <source>Available:</source> + <translation>Disponible:</translation> </message> <message> <location line="+16"/> @@ -1511,7 +1522,12 @@ Dirección: %4 <translation>Su balance actual gastable</translation> </message> <message> - <location line="+32"/> + <location line="+16"/> + <source>Pending:</source> + <translation>Pendiente:</translation> + </message> + <message> + <location line="+16"/> <source>Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance</source> <translation>Total de transacciones que deben ser confirmadas, y que no cuentan con el balance gastable necesario</translation> </message> @@ -1803,12 +1819,12 @@ Dirección: %4 <message> <location line="+64"/> <source>In:</source> - <translation>Dentro:</translation> + <translation>Entrante:</translation> </message> <message> <location line="+80"/> <source>Out:</source> - <translation>Fuera:</translation> + <translation>Saliente:</translation> </message> <message> <location line="-521"/> @@ -2090,7 +2106,7 @@ Dirección: %4 <message> <location line="+8"/> <source>(no amount)</source> - <translation>(sin monto)</translation> + <translation>(sin cantidad)</translation> </message> </context> <context> @@ -2100,12 +2116,12 @@ Dirección: %4 <location filename="../sendcoinsdialog.cpp" line="+380"/> <location line="+80"/> <source>Send Coins</source> - <translation>Enviar monedas</translation> + <translation>Enviar bitcoins</translation> </message> <message> <location line="+76"/> <source>Coin Control Features</source> - <translation>Características de control de la moneda</translation> + <translation>Características de Coin Control</translation> </message> <message> <location line="+20"/> @@ -2165,7 +2181,7 @@ Dirección: %4 <message> <location line="+44"/> <source>If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address.</source> - <translation>Al activarse, si la dirección esta vacía o es inválida, las monedas serán enviadas a una nueva dirección generada.</translation> + <translation>Si esto se activa pero la dirección de cambio está vacía o es inválida, el cambio se enviará a una nueva dirección recién generada.</translation> </message> <message> <location line="+3"/> @@ -2210,7 +2226,7 @@ Dirección: %4 <message> <location filename="../sendcoinsdialog.cpp" line="-229"/> <source>Confirm send coins</source> - <translation>Confirmar el envío de monedas</translation> + <translation>Confirmar el envío de bitcoins</translation> </message> <message> <location line="-74"/> @@ -2303,7 +2319,7 @@ Dirección: %4 <message> <location line="+4"/> <source>The transaction was rejected! This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here.</source> - <translation>La transacción fue rechazada. Esto puede haber ocurrido si alguna de las monedas ya estaba gastada o si ha usado una copia de wallet.dat y las monedas se gastaron en la copia pero no se han marcado como gastadas aqui.</translation> + <translation>¡La transacción fue rechazada! Esto puede haber ocurrido si alguno de los bitcoins de su monedero ya estaba gastado o si ha usado una copia de wallet.dat y los bitcoins estaban gastados en la copia pero no se habían marcado como gastados aqui.</translation> </message> <message> <location line="+113"/> @@ -2451,7 +2467,7 @@ Dirección: %4 <message> <location line="+1"/> <source>Do not shut down the computer until this window disappears.</source> - <translation>No apague la máquina hasta que desaparezca esta ventana.</translation> + <translation>No apague el equipo hasta que desaparezca esta ventana.</translation> </message> </context> <context> @@ -2676,6 +2692,11 @@ Dirección: %4 </message> <message> <location line="+6"/> + <source>conflicted</source> + <translation>en conflicto</translation> + </message> + <message> + <location line="+2"/> <source>%1/offline</source> <translation>%1/fuera de línea</translation> </message> @@ -2799,7 +2820,7 @@ Dirección: %4 <message> <location line="+7"/> <source>Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours.</source> - <translation>Las monedas generadas deben madurar %1 bloques antes de que puedan ser gastadas. Una vez que generas este bloque, es propagado por la red para ser añadido a la cadena de bloques. Si falla el intento de meterse en la cadena, su estado cambiará a "no aceptado" y ya no se puede gastar. Esto puede ocurrir ocasionalmente si otro nodo genera un bloque a pocos segundos del tuyo.</translation> + <translation>Los bitcoins generados deben madurar %1 bloques antes de que puedan gastarse. Cuando generó este bloque, se transmitió a la red para que se añadiera a la cadena de bloques. Si no consigue entrar en la cadena, su estado cambiará a "no aceptado" y ya no se podrá gastar. Esto puede ocurrir ocasionalmente si otro nodo genera un bloque a pocos segundos del suyo.</translation> </message> <message> <location line="+8"/> @@ -2837,12 +2858,12 @@ Dirección: %4 <translation>, todavía no se ha sido difundido satisfactoriamente</translation> </message> <message numerus="yes"> - <location line="-35"/> + <location line="-37"/> <source>Open for %n more block(s)</source> <translation><numerusform>Abrir para %n bloque más</numerusform><numerusform>Abrir para %n bloques más</numerusform></translation> </message> <message> - <location line="+70"/> + <location line="+72"/> <source>unknown</source> <translation>desconocido</translation> </message> @@ -2883,12 +2904,12 @@ Dirección: %4 <translation>Cantidad</translation> </message> <message> - <location line="+59"/> + <location line="+78"/> <source>Immature (%1 confirmations, will be available after %2)</source> <translation>No vencidos (%1 confirmaciones. Estarán disponibles al cabo de %2)</translation> </message> <message numerus="yes"> - <location line="+16"/> + <location line="-21"/> <source>Open for %n more block(s)</source> <translation><numerusform>Abrir para %n bloque más</numerusform><numerusform>Abrir para %n bloques más</numerusform></translation> </message> @@ -2898,23 +2919,12 @@ Dirección: %4 <translation>Abierto hasta %1</translation> </message> <message> - <location line="+3"/> - <source>Offline (%1 confirmations)</source> - <translation>Fuera de línea (%1 confirmaciones)</translation> - </message> - <message> - <location line="+3"/> - <source>Unconfirmed (%1 of %2 confirmations)</source> - <translation>No confirmado (%1 de %2 confirmaciones)</translation> - </message> - <message> - <location line="-22"/> - <location line="+25"/> + <location line="+12"/> <source>Confirmed (%1 confirmations)</source> <translation>Confirmado (%1 confirmaciones)</translation> </message> <message> - <location line="-22"/> + <location line="+9"/> <source>This block was not received by any other nodes and will probably not be accepted!</source> <translation>Este bloque no ha sido recibido por otros nodos y probablemente no sea aceptado!</translation> </message> @@ -2924,7 +2934,27 @@ Dirección: %4 <translation>Generado pero no aceptado</translation> </message> <message> - <location line="+62"/> + <location line="-21"/> + <source>Offline</source> + <translation>Sin conexión</translation> + </message> + <message> + <location line="+3"/> + <source>Unconfirmed</source> + <translation>Sin confirmar</translation> + </message> + <message> + <location line="+3"/> + <source>Confirming (%1 of %2 recommended confirmations)</source> + <translation>Confirmando (%1 de %2 confirmaciones recomendadas)</translation> + </message> + <message> + <location line="+6"/> + <source>Conflicted</source> + <translation>En conflicto</translation> + </message> + <message> + <location line="+51"/> <source>Received with</source> <translation>Recibido con</translation> </message> @@ -2954,7 +2984,7 @@ Dirección: %4 <translation>(nd)</translation> </message> <message> - <location line="+199"/> + <location line="+190"/> <source>Transaction status. Hover over this field to show number of confirmations.</source> <translation>Estado de transacción. Pasa el ratón sobre este campo para ver el número de confirmaciones.</translation> </message> @@ -3171,7 +3201,7 @@ Dirección: %4 <message> <location filename="../walletmodel.cpp" line="+245"/> <source>Send Coins</source> - <translation>Enviar monedas</translation> + <translation>Enviar bitcoins</translation> </message> </context> <context> @@ -3220,12 +3250,12 @@ Dirección: %4 <context> <name>bitcoin-core</name> <message> - <location filename="../bitcoinstrings.cpp" line="+221"/> + <location filename="../bitcoinstrings.cpp" line="+223"/> <source>Usage:</source> <translation>Uso:</translation> </message> <message> - <location line="-54"/> + <location line="-55"/> <source>List commands</source> <translation>Muestra comandos </translation> @@ -3285,12 +3315,12 @@ Dirección: %4 <translation>Especifique su propia dirección pública</translation> </message> <message> - <location line="+5"/> + <location line="+6"/> <source>Threshold for disconnecting misbehaving peers (default: 100)</source> <translation>Umbral para la desconexión de pares con mal comportamiento (predeterminado: 100)</translation> </message> <message> - <location line="-148"/> + <location line="-150"/> <source>Number of seconds to keep misbehaving peers from reconnecting (default: 86400)</source> <translation>Número de segundos en que se evita la reconexión de pares con mal comportamiento (predeterminado: 86400)</translation> </message> @@ -3311,19 +3341,19 @@ Dirección: %4 </translation> </message> <message> - <location line="+80"/> + <location line="+81"/> <source>Run in the background as a daemon and accept commands</source> <translation>Ejecutar en segundo plano como daemon y aceptar comandos </translation> </message> <message> - <location line="+39"/> + <location line="+40"/> <source>Use the test network</source> <translation>Usar la red de pruebas </translation> </message> <message> - <location line="-118"/> + <location line="-120"/> <source>Accept connections from outside (default: 1 if no -proxy or -connect)</source> <translation>Aceptar conexiones desde el exterior (predeterminado: 1 si no -proxy o -connect)</translation> </message> @@ -3355,7 +3385,7 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <message> <location line="+12"/> <source>Acceptable ciphers (default: TLSv1.2+HIGH:TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!3DES:@STRENGTH)</source> - <translation>Cifradores aceptables (por defecto: TLSv1.2+HIGH:TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!3DES:@STRENGTH)</translation> + <translation>Cifrados aceptables (predeterminados: TLSv1.2+HIGH:TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!3DES:@STRENGTH)</translation> </message> <message> <location line="+5"/> @@ -3385,12 +3415,12 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <message> <location line="+3"/> <source>Error: The transaction was rejected! This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here.</source> - <translation>¡Error: se ha rechazado la transacción! Esto puede ocurrir si ya se han gastado algunas de las monedas del monedero, como ocurriría si hubiera hecho una copia de wallet.dat y se hubieran gastado monedas a partir de la copia, con lo que no se habrían marcado aquí como gastadas.</translation> + <translation>¡Error: se ha rechazado la transacción! Esto puede ocurrir si ya se han gastado algunos de los bitcoins del monedero, como ocurriría si hubiera hecho una copia de wallet.dat y se hubieran gastado bitcoins a partir de la copia, con lo que no se habrían marcado aquí como gastados.</translation> </message> <message> <location line="+4"/> <source>Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds!</source> - <translation>¡Error: Esta transacción requiere una comisión de al menos %s debido a su monto, complejidad, o al uso de fondos recién recibidos!</translation> + <translation>¡Error: Esta transacción requiere una comisión de al menos %s debido a su cantidad, complejidad, o al uso de fondos recién recibidos!</translation> </message> <message> <location line="+6"/> @@ -3405,7 +3435,7 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <message> <location line="+5"/> <source>Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: -proxy)</source> - <translation>Usar distintos proxys SOCKS5 para comunicarse vía Tor de forma anónima (Por defecto: -proxy)</translation> + <translation>Usar proxy SOCKS5 distinto para comunicarse vía Tor de forma anónima (Predeterminado: -proxy)</translation> </message> <message> <location line="+3"/> @@ -3450,7 +3480,7 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <message> <location line="+1"/> <source>Bitcoin Core Daemon</source> - <translation>Proceso Bitcoin-QT</translation> + <translation>Proceso Bitcoin Core</translation> </message> <message> <location line="+1"/> @@ -3464,6 +3494,11 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. </message> <message> <location line="+5"/> + <source>Clear list of wallet transactions (diagnostic tool; implies -rescan)</source> + <translation>Vaciar lista de transacciones del monedero (herramienta de diagnóstico; implica -rescan)</translation> + </message> + <message> + <location line="+1"/> <source>Connect only to the specified node(s)</source> <translation>Conectar sólo a los nodos (o nodo) especificados</translation> </message> @@ -3575,7 +3610,7 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <message> <location line="+1"/> <source>Failed to write to coin database</source> - <translation>No se ha podido escribir en la base de datos de monedas</translation> + <translation>No se ha podido escribir en la base de datos de bitcoins</translation> </message> <message> <location line="+1"/> @@ -3600,7 +3635,7 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <message> <location line="+1"/> <source>Generate coins (default: 0)</source> - <translation>Generar monedas (por defecto: 0)</translation> + <translation>Generar bitcoins (predeterminado: 0)</translation> </message> <message> <location line="+2"/> @@ -3610,7 +3645,7 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <message> <location line="+1"/> <source>How thorough the block verification is (0-4, default: 3)</source> - <translation>Como es de exhaustiva la verificación de bloques (0-4, por defecto 3)</translation> + <translation>Cómo es de exhaustiva la verificación de bloques (0-4, predeterminado 3)</translation> </message> <message> <location line="+1"/> @@ -3635,7 +3670,7 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <message> <location line="+5"/> <source>Prepend debug output with timestamp (default: 1)</source> - <translation>Anteponer marca temporal a la información de depuración (por defecto: 1)</translation> + <translation>Anteponer marca temporal a la información de depuración (predeterminado: 1)</translation> </message> <message> <location line="+1"/> @@ -3650,7 +3685,7 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <message> <location line="+5"/> <source>Select SOCKS version for -proxy (4 or 5, default: 5)</source> - <translation>Seleccionar version de SOCKS para -proxy (4 o 5, por defecto: 5)</translation> + <translation>Seleccionar versión de SOCKS para -proxy (4 o 5, predeterminado: 5)</translation> </message> <message> <location line="+1"/> @@ -3660,7 +3695,7 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <message> <location line="+7"/> <source>Set maximum block size in bytes (default: %d)</source> - <translation>Establecer tamaño máximo de bloque en bytes (por defecto: %d)</translation> + <translation>Establecer tamaño máximo de bloque en bytes (predeterminado: %d)</translation> </message> <message> <location line="+2"/> @@ -3674,6 +3709,11 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. </message> <message> <location line="+2"/> + <source>Spend unconfirmed change when sending transactions (default: 1)</source> + <translation>Gastar cambio no confirmado al enviar transacciones (predeterminado: 1)</translation> + </message> + <message> + <location line="+1"/> <source>Start Bitcoin server</source> <translation>Iniciar servidor Bitcoin</translation> </message> @@ -3723,24 +3763,24 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>Usted necesita reconstruir la base de datos utilizando -reindex para cambiar -txindex</translation> </message> <message> - <location line="-79"/> + <location line="-80"/> <source>Imports blocks from external blk000??.dat file</source> <translation>Importa los bloques desde un archivo blk000??.dat externo</translation> </message> <message> - <location line="-105"/> + <location line="-106"/> <source>Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message)</source> <translation>Ejecutar un comando cuando se reciba una alerta importante o cuando veamos un fork demasiado largo (%s en cmd se reemplazará por el mensaje)</translation> </message> <message> <location line="+14"/> <source>Output debugging information (default: 0, supplying <category> is optional)</source> - <translation>Mostrar depuración (por defecto: 0, proporcionar <category> es opcional)</translation> + <translation>Mostrar información de depuración (predeterminado: 0, proporcionar <category> es opcional)</translation> </message> <message> <location line="+2"/> <source>Set maximum size of high-priority/low-fee transactions in bytes (default: %d)</source> - <translation>Establecer tamaño máximo de las transacciones de alta prioridad/comisión baja en bytes (por defecto: %d)</translation> + <translation>Establecer tamaño máximo de las transacciones de alta prioridad/baja comisión en bytes (predeterminado: %d)</translation> </message> <message> <location line="+2"/> @@ -3748,19 +3788,19 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>Configura el número de hilos para el script de verificación (hasta 16, 0 = auto, <0 = leave that many cores free, por fecto: 0)</translation> </message> <message> - <location line="+89"/> + <location line="+90"/> <source>Information</source> <translation>Información</translation> </message> <message> <location line="+4"/> <source>Invalid amount for -minrelaytxfee=<amount>: '%s'</source> - <translation>Inválido por el monto -minrelaytxfee=<amount>: '%s'</translation> + <translation>Cantidad inválida para -minrelaytxfee=<amount>: '%s'</translation> </message> <message> <location line="+1"/> <source>Invalid amount for -mintxfee=<amount>: '%s'</source> - <translation>Inválido por el monto -mintxfee=<amount>: '%s'</translation> + <translation>Cantidad inválida para -mintxfee=<amount>: '%s'</translation> </message> <message> <location line="+8"/> @@ -3818,19 +3858,19 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>Especificar el tiempo máximo de conexión en milisegundos (predeterminado: 5000)</translation> </message> <message> - <location line="+6"/> + <location line="+7"/> <source>System error: </source> <translation>Error de sistema: </translation> </message> <message> <location line="+5"/> <source>Transaction amount too small</source> - <translation>Monto de la transacción muy pequeño</translation> + <translation>Cantidad de la transacción demasiado pequeña</translation> </message> <message> <location line="+1"/> <source>Transaction amounts must be positive</source> - <translation>Montos de transacciones deben ser positivos</translation> + <translation>Las cantidades en las transacciones deben ser positivas</translation> </message> <message> <location line="+1"/> @@ -3865,6 +3905,11 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. </message> <message> <location line="+2"/> + <source>Zapping all transactions from wallet...</source> + <translation>Eliminando todas las transacciones del monedero...</translation> + </message> + <message> + <location line="+1"/> <source>version</source> <translation>versión</translation> </message> @@ -3874,35 +3919,35 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>wallet.dat corrupto. Ha fallado la recuperación.</translation> </message> <message> - <location line="-58"/> + <location line="-60"/> <source>Password for JSON-RPC connections</source> <translation>Contraseña para las conexiones JSON-RPC </translation> </message> <message> - <location line="-70"/> + <location line="-71"/> <source>Allow JSON-RPC connections from specified IP address</source> <translation>Permitir conexiones JSON-RPC desde la dirección IP especificada </translation> </message> <message> - <location line="+80"/> + <location line="+81"/> <source>Send commands to node running on <ip> (default: 127.0.0.1)</source> <translation>Enviar comando al nodo situado en <ip> (predeterminado: 127.0.0.1) </translation> </message> <message> - <location line="-132"/> + <location line="-133"/> <source>Execute command when the best block changes (%s in cmd is replaced by block hash)</source> <translation>Ejecutar un comando cuando cambia el mejor bloque (%s en cmd se sustituye por el hash de bloque)</translation> </message> <message> - <location line="+161"/> + <location line="+163"/> <source>Upgrade wallet to latest format</source> <translation>Actualizar el monedero al último formato</translation> </message> <message> - <location line="-24"/> + <location line="-25"/> <source>Set key pool size to <n> (default: 100)</source> <translation>Ajustar el número de claves en reserva <n> (predeterminado: 100) </translation> @@ -3913,13 +3958,13 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>Volver a examinar la cadena de bloques en busca de transacciones del monedero perdidas</translation> </message> <message> - <location line="+38"/> + <location line="+39"/> <source>Use OpenSSL (https) for JSON-RPC connections</source> <translation>Usar OpenSSL (https) para las conexiones JSON-RPC </translation> </message> <message> - <location line="-30"/> + <location line="-31"/> <source>Server certificate file (default: server.cert)</source> <translation>Certificado del servidor (predeterminado: server.cert) </translation> @@ -3931,7 +3976,7 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. </translation> </message> <message> - <location line="+16"/> + <location line="+17"/> <source>This help message</source> <translation>Este mensaje de ayuda </translation> @@ -3942,12 +3987,12 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>No es posible conectar con %s en este sistema (bind ha dado el error %d, %s)</translation> </message> <message> - <location line="-107"/> + <location line="-109"/> <source>Allow DNS lookups for -addnode, -seednode and -connect</source> <translation>Permitir búsquedas DNS para -addnode, -seednode y -connect</translation> </message> <message> - <location line="+60"/> + <location line="+61"/> <source>Loading addresses...</source> <translation>Cargando direcciones...</translation> </message> @@ -3962,12 +4007,12 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>Error al cargar wallet.dat: El monedero requiere una versión más reciente de Bitcoin</translation> </message> <message> - <location line="+98"/> + <location line="+99"/> <source>Wallet needed to be rewritten: restart Bitcoin to complete</source> <translation>El monedero ha necesitado ser reescrito. Reinicie Bitcoin para completar el proceso</translation> </message> <message> - <location line="-100"/> + <location line="-101"/> <source>Error loading wallet.dat</source> <translation>Error al cargar wallet.dat</translation> </message> @@ -3977,7 +4022,7 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>Dirección -proxy inválida: '%s'</translation> </message> <message> - <location line="+56"/> + <location line="+57"/> <source>Unknown network specified in -onlynet: '%s'</source> <translation>La red especificada en -onlynet '%s' es desconocida</translation> </message> @@ -3987,7 +4032,7 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>Solicitada versión de proxy -socks desconocida: %i</translation> </message> <message> - <location line="-101"/> + <location line="-103"/> <source>Cannot resolve -bind address: '%s'</source> <translation>No se puede resolver la dirección de -bind: '%s'</translation> </message> @@ -3997,7 +4042,7 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>No se puede resolver la dirección de -externalip: '%s'</translation> </message> <message> - <location line="+48"/> + <location line="+49"/> <source>Invalid amount for -paytxfee=<amount>: '%s'</source> <translation>Cantidad inválida para -paytxfee=<amount>: '%s'</translation> </message> @@ -4017,7 +4062,7 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>Cargando el índice de bloques...</translation> </message> <message> - <location line="-62"/> + <location line="-63"/> <source>Add a node to connect to and attempt to keep the connection open</source> <translation>Añadir un nodo al que conectarse y tratar de mantener la conexión abierta</translation> </message> @@ -4027,12 +4072,12 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>No es posible conectar con %s en este sistema. Probablemente Bitcoin ya está ejecutándose.</translation> </message> <message> - <location line="+95"/> + <location line="+96"/> <source>Loading wallet...</source> <translation>Cargando monedero...</translation> </message> <message> - <location line="-56"/> + <location line="-57"/> <source>Cannot downgrade wallet</source> <translation>No se puede rebajar el monedero</translation> </message> @@ -4042,7 +4087,7 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>No se puede escribir la dirección predeterminada</translation> </message> <message> - <location line="+67"/> + <location line="+68"/> <source>Rescanning...</source> <translation>Reexplorando...</translation> </message> @@ -4052,17 +4097,17 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>Generado pero no aceptado</translation> </message> <message> - <location line="+85"/> + <location line="+86"/> <source>To use the %s option</source> <translation>Para utilizar la opción %s</translation> </message> <message> - <location line="-77"/> + <location line="-78"/> <source>Error</source> <translation>Error</translation> </message> <message> - <location line="-35"/> + <location line="-36"/> <source>You must set rpcpassword=<password> in the configuration file: %s If the file does not exist, create it with owner-readable-only file permissions.</source> diff --git a/src/qt/locale/bitcoin_ko_KR.ts b/src/qt/locale/bitcoin_ko_KR.ts index 804805a216..102567ec96 100644 --- a/src/qt/locale/bitcoin_ko_KR.ts +++ b/src/qt/locale/bitcoin_ko_KR.ts @@ -4,12 +4,12 @@ <message> <location filename="../forms/aboutdialog.ui" line="+14"/> <source>About Bitcoin Core</source> - <translation type="unfinished"/> + <translation>비트코인 코어 소개</translation> </message> <message> <location line="+39"/> <source><b>Bitcoin Core</b> version</source> - <translation type="unfinished"/> + <translation><b>비트코인 코어</b> 버젼</translation> </message> <message> <location line="+57"/> @@ -34,7 +34,13 @@ MIT/X11 프로그램 라이선스에 따라 배포합니다. COPYING 또는 http <message> <location line="+0"/> <source>The Bitcoin Core developers</source> - <translation type="unfinished"/> + <translation>비트코인코어 개발자들</translation> + </message> + <message> + <location line="+12"/> + <location line="+2"/> + <source> (%1-bit)</source> + <translation>(%1-비트)</translation> </message> </context> <context> @@ -57,12 +63,12 @@ MIT/X11 프로그램 라이선스에 따라 배포합니다. COPYING 또는 http <message> <location line="+11"/> <source>Copy the currently selected address to the system clipboard</source> - <translation>현재 선택한 주로를 시스템 클립보드로 복사하기</translation> + <translation>현재 선택한 주소를 시스템 클립보드로 복사하기</translation> </message> <message> <location line="+3"/> <source>&Copy</source> - <translation type="unfinished"/> + <translation>복사</translation> </message> <message> <location line="+52"/> @@ -82,7 +88,7 @@ MIT/X11 프로그램 라이선스에 따라 배포합니다. COPYING 또는 http <message> <location line="+27"/> <source>Export the data in the current tab to a file</source> - <translation type="unfinished"/> + <translation>현재 탭에 있는 데이터를 파일로 내보내기</translation> </message> <message> <location line="+3"/> @@ -97,12 +103,12 @@ MIT/X11 프로그램 라이선스에 따라 배포합니다. COPYING 또는 http <message> <location filename="../addressbookpage.cpp" line="-30"/> <source>Choose the address to send coins to</source> - <translation type="unfinished"/> + <translation>코인을 보내실 주소를 선택하세요</translation> </message> <message> <location line="+1"/> <source>Choose the address to receive coins with</source> - <translation type="unfinished"/> + <translation>코인을 받으실 주소를 선택하세요</translation> </message> <message> <location line="+5"/> @@ -112,12 +118,12 @@ MIT/X11 프로그램 라이선스에 따라 배포합니다. COPYING 또는 http <message> <location line="+6"/> <source>Sending addresses</source> - <translation type="unfinished"/> + <translation>보내는 주소들</translation> </message> <message> <location line="+1"/> <source>Receiving addresses</source> - <translation type="unfinished"/> + <translation>받은 주소들</translation> </message> <message> <location line="+7"/> @@ -132,17 +138,17 @@ MIT/X11 프로그램 라이선스에 따라 배포합니다. COPYING 또는 http <message> <location line="+7"/> <source>Copy &Label</source> - <translation>레이블 복사(&L)</translation> + <translation>표 복사</translation> </message> <message> <location line="+1"/> <source>&Edit</source> - <translation>편집(&E)</translation> + <translation>편집&</translation> </message> <message> <location line="+194"/> <source>Export Address List</source> - <translation type="unfinished"/> + <translation>주소 목록 내보내기</translation> </message> <message> <location line="+1"/> @@ -152,7 +158,7 @@ MIT/X11 프로그램 라이선스에 따라 배포합니다. COPYING 또는 http <message> <location line="+13"/> <source>Exporting Failed</source> - <translation type="unfinished"/> + <translation>내보내기 실패</translation> </message> <message> <location line="+1"/> @@ -175,7 +181,7 @@ MIT/X11 프로그램 라이선스에 따라 배포합니다. COPYING 또는 http <message> <location line="+36"/> <source>(no label)</source> - <translation>(표 없슴)</translation> + <translation>(표 없음)</translation> </message> </context> <context> @@ -188,22 +194,22 @@ MIT/X11 프로그램 라이선스에 따라 배포합니다. COPYING 또는 http <message> <location line="+21"/> <source>Enter passphrase</source> - <translation>패스프레이즈 입력하기</translation> + <translation>암호 입력하기</translation> </message> <message> <location line="+14"/> <source>New passphrase</source> - <translation>새로운 패스프레이즈</translation> + <translation>새로운 암호</translation> </message> <message> <location line="+14"/> <source>Repeat new passphrase</source> - <translation>새로운 패스프레이즈 반복</translation> + <translation>새 암호 반복</translation> </message> <message> <location filename="../askpassphrasedialog.cpp" line="+40"/> <source>Enter the new passphrase to the wallet.<br/>Please use a passphrase of <b>10 or more random characters</b>, or <b>eight or more words</b>.</source> - <translation>새로운 패스프레이즈를 지갑에 입력. 8자보다 많은 단어를 입력하거나 10 자보다 많은 무작위 캐랙터를 패스프레이즈에 사용하세요.</translation> + <translation>새로운 암호를 지갑에 입력. 8자보다 많은 단어를 입력하거나 10 자보다 많은 여러 종류를 암호에 사용하세요.</translation> </message> <message> <location line="+1"/> @@ -213,7 +219,7 @@ MIT/X11 프로그램 라이선스에 따라 배포합니다. COPYING 또는 http <message> <location line="+3"/> <source>This operation needs your wallet passphrase to unlock the wallet.</source> - <translation>본 작업은 지갑을 열기위하여 사용자의 지갑의 패스프레이즈가 필요합니다.</translation> + <translation>이 작업은 지갑을 열기위해 사용자의 지갑의 암호가 필요합니다.</translation> </message> <message> <location line="+5"/> @@ -223,7 +229,7 @@ MIT/X11 프로그램 라이선스에 따라 배포합니다. COPYING 또는 http <message> <location line="+3"/> <source>This operation needs your wallet passphrase to decrypt the wallet.</source> - <translation>본 작업은 지갑을 해독하기위하여 사용자의 지갑 패스프레이즈가 필요합니다.</translation> + <translation>이 작업은 지갑을 해독하기 위해 사용자의 지갑 암호가 필요합니다.</translation> </message> <message> <location line="+5"/> @@ -233,12 +239,12 @@ MIT/X11 프로그램 라이선스에 따라 배포합니다. COPYING 또는 http <message> <location line="+3"/> <source>Change passphrase</source> - <translation>패스프레이즈 변경</translation> + <translation>암호 변경</translation> </message> <message> <location line="+1"/> <source>Enter the old and new passphrase to the wallet.</source> - <translation>지갑에 전과 새로운 패스프레이즈를 입력</translation> + <translation>지갑의 예전 암호와 새로운 암호를 입력</translation> </message> <message> <location line="+46"/> @@ -248,12 +254,12 @@ MIT/X11 프로그램 라이선스에 따라 배포합니다. COPYING 또는 http <message> <location line="+1"/> <source>Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>!</source> - <translation type="unfinished"/> + <translation>경고: 만약 당신의 지갑을 암호화 하고 비밀번호를 잃어 버릴 경우, 당신의 모든 비트코인들을 잃어버릴 수 있습니다!</translation> </message> <message> <location line="+0"/> <source>Are you sure you wish to encrypt your wallet?</source> - <translation type="unfinished"/> + <translation>지갑 암호화를 허용하시겠습니까?</translation> </message> <message> <location line="+15"/> @@ -294,19 +300,19 @@ MIT/X11 프로그램 라이선스에 따라 배포합니다. COPYING 또는 http <location line="+7"/> <location line="+48"/> <source>The supplied passphrases do not match.</source> - <translation>제공된 패스프레이즈가 일치하지 않습니다.</translation> + <translation>지정한 암호가 일치하지 않습니다.</translation> </message> <message> <location line="-37"/> <source>Wallet unlock failed</source> - <translation>지갑 열기가 실패하였습니다.</translation> + <translation>지갑 열기를 실패하였습니다.</translation> </message> <message> <location line="+1"/> <location line="+11"/> <location line="+19"/> <source>The passphrase entered for the wallet decryption was incorrect.</source> - <translation>지갑 해독을 위한 패스프레이즈가 틀렸습니다.</translation> + <translation>지갑 해독을 위한 암호가 틀렸습니다.</translation> </message> <message> <location line="-20"/> @@ -316,7 +322,7 @@ MIT/X11 프로그램 라이선스에 따라 배포합니다. COPYING 또는 http <message> <location line="+14"/> <source>Wallet passphrase was successfully changed.</source> - <translation type="unfinished"/> + <translation>지갑 비밀번호가 성공적으로 변경되었습니다</translation> </message> </context> <context> @@ -324,7 +330,7 @@ MIT/X11 프로그램 라이선스에 따라 배포합니다. COPYING 또는 http <message> <location filename="../bitcoingui.cpp" line="+295"/> <source>Sign &message...</source> - <translation>메시지 서명(&M)...</translation> + <translation>메시지 서명&...</translation> </message> <message> <location line="+335"/> @@ -339,7 +345,7 @@ MIT/X11 프로그램 라이선스에 따라 배포합니다. COPYING 또는 http <message> <location line="-137"/> <source>Node</source> - <translation type="unfinished"/> + <translation>노드</translation> </message> <message> <location line="+138"/> @@ -390,17 +396,17 @@ MIT/X11 프로그램 라이선스에 따라 배포합니다. COPYING 또는 http <message> <location line="+9"/> <source>&Encrypt Wallet...</source> - <translation>지갑 암호화(&E)...</translation> + <translation>지갑 암호화&...</translation> </message> <message> <location line="+3"/> <source>&Backup Wallet...</source> - <translation>지갑 백업(&B)...</translation> + <translation>지갑 백업&...</translation> </message> <message> <location line="+2"/> <source>&Change Passphrase...</source> - <translation>암호문 변경(&C)...</translation> + <translation>암호문 변경&...</translation> </message> <message> <location line="+10"/> @@ -415,7 +421,7 @@ MIT/X11 프로그램 라이선스에 따라 배포합니다. COPYING 또는 http <message> <location line="+3"/> <source>Open &URI...</source> - <translation type="unfinished"/> + <translation>URI&열기</translation> </message> <message> <location line="+325"/> @@ -440,17 +446,17 @@ MIT/X11 프로그램 라이선스에 따라 배포합니다. COPYING 또는 http <message> <location line="+12"/> <source>Backup wallet to another location</source> - <translation>지갑을 다른장소에 저장하기</translation> + <translation>지갑을 다른장소에 백업</translation> </message> <message> <location line="+2"/> <source>Change the passphrase used for wallet encryption</source> - <translation>지갑 암호화에 사용되는 패스프레이즈를 변경합니다</translation> + <translation>지갑 암호화에 사용되는 암호를 변경합니다</translation> </message> <message> <location line="+6"/> <source>&Debug window</source> - <translation>디버그 창(&D)</translation> + <translation>디버그 창&</translation> </message> <message> <location line="+1"/> @@ -460,7 +466,7 @@ MIT/X11 프로그램 라이선스에 따라 배포합니다. COPYING 또는 http <message> <location line="-4"/> <source>&Verify message...</source> - <translation>메시지 검증(&V)...</translation> + <translation>메시지 확인&...</translation> </message> <message> <location line="+430"/> @@ -537,18 +543,18 @@ MIT/X11 프로그램 라이선스에 따라 배포합니다. COPYING 또는 http <message> <location line="-401"/> <source>Bitcoin Core</source> - <translation type="unfinished"/> + <translation>비트코인코어</translation> </message> <message> <location line="+163"/> <source>Request payments (generates QR codes and bitcoin: URIs)</source> - <translation type="unfinished"/> + <translation>지불 요청하기 (QR코드와 비트코인이 생성됩니다: URIs)</translation> </message> <message> <location line="+29"/> <location line="+2"/> <source>&About Bitcoin Core</source> - <translation type="unfinished"/> + <translation>&비트코인 코어 소개</translation> </message> <message> <location line="+35"/> @@ -563,12 +569,12 @@ MIT/X11 프로그램 라이선스에 따라 배포합니다. COPYING 또는 http <message> <location line="+3"/> <source>Open a bitcoin: URI or payment request</source> - <translation type="unfinished"/> + <translation>비트코인: URI 또는 지불요청 열기</translation> </message> <message> <location line="+2"/> <source>&Command-line options</source> - <translation type="unfinished"/> + <translation>명령어-라인 옵션</translation> </message> <message> <location line="+1"/> @@ -589,7 +595,7 @@ MIT/X11 프로그램 라이선스에 따라 배포합니다. COPYING 또는 http <message> <location line="+22"/> <source>No block source available...</source> - <translation type="unfinished"/> + <translation>사용 가능한 블락 소스가 없습니다...</translation> </message> <message> <location line="+12"/> @@ -599,22 +605,22 @@ MIT/X11 프로그램 라이선스에 따라 배포합니다. COPYING 또는 http <message> <location line="+4"/> <source>Processed %1 blocks of transaction history.</source> - <translation type="unfinished"/> + <translation>%1 블락의 거래 기록들이 처리됨.</translation> </message> <message numerus="yes"> <location line="+23"/> <source>%n hour(s)</source> - <translation type="unfinished"><numerusform></numerusform></translation> + <translation><numerusform>시간</numerusform></translation> </message> <message numerus="yes"> <location line="+4"/> <source>%n day(s)</source> - <translation type="unfinished"><numerusform></numerusform></translation> + <translation><numerusform>일</numerusform></translation> </message> <message numerus="yes"> <location line="+4"/> <source>%n week(s)</source> - <translation type="unfinished"><numerusform></numerusform></translation> + <translation><numerusform>주</numerusform></translation> </message> <message> <location line="+4"/> @@ -624,12 +630,12 @@ MIT/X11 프로그램 라이선스에 따라 배포합니다. COPYING 또는 http <message> <location line="+21"/> <source>Last received block was generated %1 ago.</source> - <translation type="unfinished"/> + <translation>최근에 받은 블록은 %1 전에 생성되었습니다.</translation> </message> <message> <location line="+2"/> <source>Transactions after this will not yet be visible.</source> - <translation type="unfinished"/> + <translation>이것 후의 거래들은 아직 보이지 않을 것입니다.</translation> </message> <message> <location line="+27"/> @@ -664,7 +670,7 @@ MIT/X11 프로그램 라이선스에 따라 배포합니다. COPYING 또는 http <message> <location line="+0"/> <source>Incoming transaction</source> - <translation>도착하는 거래</translation> + <translation>거래 들어오는 중</translation> </message> <message> <location line="+1"/> @@ -690,7 +696,7 @@ Address: %4 <translation>지갑이 암호화 되었고 현재 잠겨져 있습니다</translation> </message> <message> - <location filename="../bitcoin.cpp" line="+438"/> + <location filename="../bitcoin.cpp" line="+435"/> <source>A fatal error occurred. Bitcoin can no longer continue safely and will quit.</source> <translation>치명적인 오류가 있습니다. 비트코인을 더이상 안전하게 진행할 수 없어 빠져나갑니다.</translation> </message> @@ -708,32 +714,32 @@ Address: %4 <message> <location filename="../forms/coincontroldialog.ui" line="+14"/> <source>Coin Control Address Selection</source> - <translation type="unfinished"/> + <translation>코인컨트롤 주소 선택</translation> </message> <message> <location line="+34"/> <source>Quantity:</source> - <translation type="unfinished"/> + <translation>수량:</translation> </message> <message> <location line="+29"/> <source>Bytes:</source> - <translation type="unfinished"/> + <translation>Bytes:</translation> </message> <message> <location line="+45"/> <source>Amount:</source> - <translation type="unfinished"/> + <translation>거래량</translation> </message> <message> <location line="+29"/> <source>Priority:</source> - <translation type="unfinished"/> + <translation>우선도:</translation> </message> <message> <location line="+45"/> <source>Fee:</source> - <translation type="unfinished"/> + <translation>수수료:</translation> </message> <message> <location line="+32"/> @@ -743,7 +749,7 @@ Address: %4 <message> <location line="+48"/> <source>After Fee:</source> - <translation type="unfinished"/> + <translation>수수료 이후:</translation> </message> <message> <location line="+32"/> @@ -751,22 +757,22 @@ Address: %4 <translation type="unfinished"/> </message> <message> - <location line="+63"/> + <location line="+56"/> <source>(un)select all</source> <translation type="unfinished"/> </message> <message> <location line="+13"/> <source>Tree mode</source> - <translation type="unfinished"/> + <translation>트리 모드</translation> </message> <message> <location line="+16"/> <source>List mode</source> - <translation type="unfinished"/> + <translation>리스트 모드</translation> </message> <message> - <location line="+52"/> + <location line="+53"/> <source>Amount</source> <translation>거래량</translation> </message> @@ -783,7 +789,7 @@ Address: %4 <message> <location line="+5"/> <source>Confirmations</source> - <translation type="unfinished"/> + <translation>확인</translation> </message> <message> <location line="+3"/> @@ -793,7 +799,7 @@ Address: %4 <message> <location line="+5"/> <source>Priority</source> - <translation type="unfinished"/> + <translation>우선도</translation> </message> <message> <location filename="../coincontroldialog.cpp" line="+42"/> @@ -829,27 +835,27 @@ Address: %4 <message> <location line="+22"/> <source>Copy quantity</source> - <translation type="unfinished"/> + <translation>수량 복사</translation> </message> <message> <location line="+2"/> <source>Copy fee</source> - <translation type="unfinished"/> + <translation>수수료 복사</translation> </message> <message> <location line="+1"/> <source>Copy after fee</source> - <translation type="unfinished"/> + <translation>수수료 이후 복사</translation> </message> <message> <location line="+1"/> <source>Copy bytes</source> - <translation type="unfinished"/> + <translation>bytes를 복사</translation> </message> <message> <location line="+1"/> <source>Copy priority</source> - <translation type="unfinished"/> + <translation>우선도 복사</translation> </message> <message> <location line="+1"/> @@ -864,7 +870,7 @@ Address: %4 <message> <location line="+323"/> <source>highest</source> - <translation type="unfinished"/> + <translation>최상</translation> </message> <message> <location line="+1"/> @@ -874,27 +880,27 @@ Address: %4 <message> <location line="+1"/> <source>high</source> - <translation type="unfinished"/> + <translation>상</translation> </message> <message> <location line="+1"/> <source>medium-high</source> - <translation type="unfinished"/> + <translation>중상</translation> </message> <message> <location line="+1"/> <source>medium</source> - <translation type="unfinished"/> + <translation>중</translation> </message> <message> <location line="+4"/> <source>low-medium</source> - <translation type="unfinished"/> + <translation>중하</translation> </message> <message> <location line="+1"/> <source>low</source> - <translation type="unfinished"/> + <translation>하</translation> </message> <message> <location line="+1"/> @@ -909,27 +915,27 @@ Address: %4 <message> <location line="+11"/> <source>(%1 locked)</source> - <translation type="unfinished"/> + <translation>(%1 잠금)</translation> </message> <message> <location line="+31"/> <source>none</source> - <translation type="unfinished"/> + <translation>없음</translation> </message> <message> - <location line="+140"/> + <location line="+141"/> <source>Dust</source> <translation type="unfinished"/> </message> <message> <location line="+0"/> <source>yes</source> - <translation type="unfinished"/> + <translation>예</translation> </message> <message> <location line="+0"/> <source>no</source> - <translation type="unfinished"/> + <translation>아니요</translation> </message> <message> <location line="+10"/> @@ -987,7 +993,7 @@ Address: %4 <message> <location line="-9"/> <source>change from %1 (%2)</source> - <translation type="unfinished"/> + <translation>~로부터 변경 %1 (%2)</translation> </message> <message> <location line="+1"/> @@ -1068,12 +1074,12 @@ Address: %4 <message> <location filename="../intro.cpp" line="+65"/> <source>A new data directory will be created.</source> - <translation type="unfinished"/> + <translation>새로운 데이터 폴더가 생성됩니다.</translation> </message> <message> <location line="+22"/> <source>name</source> - <translation type="unfinished"/> + <translation>이름</translation> </message> <message> <location line="+2"/> @@ -1083,12 +1089,12 @@ Address: %4 <message> <location line="+3"/> <source>Path already exists, and is not a directory.</source> - <translation type="unfinished"/> + <translation>경로가 이미 존재합니다. 그리고 그것은 폴더가 아닙니다.</translation> </message> <message> <location line="+7"/> <source>Cannot create data directory here.</source> - <translation type="unfinished"/> + <translation>데이터 폴더를 여기 생성할 수 없습니다.</translation> </message> </context> <context> @@ -1096,12 +1102,12 @@ Address: %4 <message> <location filename="../forms/helpmessagedialog.ui" line="+19"/> <source>Bitcoin Core - Command-line options</source> - <translation type="unfinished"/> + <translation>비트코인 코어 - 명령어-라인 옵션</translation> </message> <message> - <location filename="../utilitydialog.cpp" line="+38"/> + <location filename="../utilitydialog.cpp" line="+24"/> <source>Bitcoin Core</source> - <translation type="unfinished"/> + <translation>비트코인코어</translation> </message> <message> <location line="+0"/> @@ -1141,7 +1147,7 @@ Address: %4 <message> <location line="+1"/> <source>Choose data directory on startup (default: 0)</source> - <translation type="unfinished"/> + <translation>파일목록을 선택하여 시작하시오(기본값: 0)</translation> </message> </context> <context> @@ -1149,12 +1155,12 @@ Address: %4 <message> <location filename="../forms/intro.ui" line="+14"/> <source>Welcome</source> - <translation type="unfinished"/> + <translation>환영합니다</translation> </message> <message> <location line="+9"/> <source>Welcome to Bitcoin Core.</source> - <translation type="unfinished"/> + <translation>비트코인 코어에 오신것을 환영합니.</translation> </message> <message> <location line="+26"/> @@ -1169,12 +1175,12 @@ Address: %4 <message> <location line="+10"/> <source>Use the default data directory</source> - <translation type="unfinished"/> + <translation>기본 데이터 폴더를 사용하기</translation> </message> <message> <location line="+7"/> <source>Use a custom data directory:</source> - <translation type="unfinished"/> + <translation>커스텀 데이터 폴더 사용:</translation> </message> <message> <location filename="../intro.cpp" line="+85"/> @@ -1194,12 +1200,12 @@ Address: %4 <message> <location line="+9"/> <source>GB of free space available</source> - <translation type="unfinished"/> + <translation>GB가 사용가능</translation> </message> <message> <location line="+3"/> <source>(of %1GB needed)</source> - <translation type="unfinished"/> + <translation>(%1GB가 필요)</translation> </message> </context> <context> @@ -1207,27 +1213,27 @@ Address: %4 <message> <location filename="../forms/openuridialog.ui" line="+14"/> <source>Open URI</source> - <translation type="unfinished"/> + <translation>URI 열기</translation> </message> <message> <location line="+6"/> <source>Open payment request from URI or file</source> - <translation type="unfinished"/> + <translation>지급 요청 URI 또는 파일 열기</translation> </message> <message> <location line="+9"/> <source>URI:</source> - <translation type="unfinished"/> + <translation>URI:</translation> </message> <message> <location line="+11"/> <source>Select payment request file</source> - <translation type="unfinished"/> + <translation>지불 요청 파일을 선택하세요</translation> </message> <message> <location filename="../openuridialog.cpp" line="+47"/> <source>Select payment request file to open</source> - <translation type="unfinished"/> + <translation>지불 요청 파일을 열기 위해서 선택하세요</translation> </message> </context> <context> @@ -1243,9 +1249,9 @@ Address: %4 <translation>메인(&M)</translation> </message> <message> - <location line="+6"/> + <location line="+122"/> <source>Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB.</source> - <translation type="unfinished"/> + <translation>당신의 거래가 더욱 빠르게 처리될 수 있도록 선택적으로 kBd당 거래 수수료를 지정합니다. 참고로 대부분의 거래들은 1kB입니다.</translation> </message> <message> <location line="+15"/> @@ -1253,7 +1259,7 @@ Address: %4 <translation>송금 수수료(&F)</translation> </message> <message> - <location line="+31"/> + <location line="-131"/> <source>Automatically start Bitcoin after logging in to the system.</source> <translation>시스템 로그인후에 비트코인을 자동으로 시작합니다.</translation> </message> @@ -1265,17 +1271,12 @@ Address: %4 <message> <location line="+9"/> <source>Size of &database cache</source> - <translation type="unfinished"/> + <translation>데이터베이스 캐시 크기</translation> </message> <message> - <location line="+13"/> - <source>Set database cache size in megabytes (default: 25)</source> - <translation>데이터베이스 캐시 크기를 메가바이트로 지정(내정값:25)</translation> - </message> - <message> - <location line="+13"/> + <location line="+16"/> <source>MB</source> - <translation type="unfinished"/> + <translation>메가바이트</translation> </message> <message> <location line="+27"/> @@ -1288,19 +1289,24 @@ Address: %4 <translation type="unfinished"/> </message> <message> - <location line="+58"/> + <location line="+107"/> + <source>&Spend unconfirmed change (experts only)</source> + <translation type="unfinished"/> + </message> + <message> + <location line="+37"/> <source>Connect to the Bitcoin network through a SOCKS proxy.</source> <translation type="unfinished"/> </message> <message> <location line="+3"/> <source>&Connect through SOCKS proxy (default proxy):</source> - <translation type="unfinished"/> + <translation>SOCKS 프록시를 거쳐 연결합니다 (기본값 프록시):</translation> </message> <message> <location line="+34"/> <source>IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1)</source> - <translation type="unfinished"/> + <translation>프록시 아이피 주소(예. IPv4:127.0.0.1 / IPv6: ::1)</translation> </message> <message> <location line="+224"/> @@ -1323,7 +1329,17 @@ Address: %4 <translation>네트워크(&N)</translation> </message> <message> - <location line="+6"/> + <location line="-86"/> + <source>W&allet</source> + <translation>지갑</translation> + </message> + <message> + <location line="+52"/> + <source>If you disable the spending of unconfirmed change, the change from a transaction cannot be used until that transaction has at least one confirmation. This also affects how your balance is computed.</source> + <translation type="unfinished"/> + </message> + <message> + <location line="+40"/> <source>Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled.</source> <translation>라우터의 비트코인 클라이언트 포트를 자동으로 엽니다. 라우터에서 UPnP를 지원하고 활성화 했을 경우에만 동작합니다.</translation> </message> @@ -1438,19 +1454,19 @@ Address: %4 <translation>취소(&C)</translation> </message> <message> - <location filename="../optionsdialog.cpp" line="+67"/> + <location filename="../optionsdialog.cpp" line="+70"/> <source>default</source> <translation>기본값</translation> </message> <message> - <location line="+57"/> + <location line="+58"/> <source>none</source> - <translation type="unfinished"/> + <translation>없음</translation> </message> <message> - <location line="+75"/> + <location line="+78"/> <source>Confirm options reset</source> - <translation type="unfinished"/> + <translation>옵션 초기화를 확인</translation> </message> <message> <location line="+1"/> @@ -1461,7 +1477,7 @@ Address: %4 <message> <location line="-29"/> <source>Client will be shutdown, do you want to proceed?</source> - <translation type="unfinished"/> + <translation>클라이언트가 종료됩니다, 계속 진행하시겠습니까?</translation> </message> <message> <location line="+33"/> @@ -1488,49 +1504,49 @@ Address: %4 <translation>표시한 정보가 오래된 것 같습니다. 비트코인 네트워크에 연결하고 난 다음에 지갑을 자동으로 동기화 하지만, 아직 과정이 끝나지는 않았습니다.</translation> </message> <message> - <location line="-155"/> - <source>Unconfirmed:</source> - <translation>미확인:</translation> - </message> - <message> - <location line="-83"/> + <location line="-238"/> <source>Wallet</source> <translation>지갑</translation> </message> <message> <location line="+51"/> - <source>Confirmed:</source> - <translation type="unfinished"/> + <source>Available:</source> + <translation>유용한</translation> </message> <message> <location line="+16"/> <source>Your current spendable balance</source> - <translation type="unfinished"/> + <translation>당신의 현재 사용 가능한 잔액</translation> </message> <message> - <location line="+32"/> + <location line="+16"/> + <source>Pending:</source> + <translation>미정</translation> + </message> + <message> + <location line="+16"/> <source>Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance</source> - <translation type="unfinished"/> + <translation>전체 거래들은 아직 확인되지 않았고, 그리고 현재 잔액에 아직 반영되지 않았습니다.</translation> </message> <message> <location line="+16"/> <source>Immature:</source> - <translation type="unfinished"/> + <translation>아직 사용 불가능:</translation> </message> <message> <location line="+13"/> <source>Mined balance that has not yet matured</source> - <translation type="unfinished"/> + <translation>아직 사용 가능하지 않은 채굴된 잔액</translation> </message> <message> <location line="+16"/> <source>Total:</source> - <translation type="unfinished"/> + <translation>총액:</translation> </message> <message> <location line="+16"/> <source>Your current total balance</source> - <translation type="unfinished"/> + <translation>당신의 현재 총액</translation> </message> <message> <location line="+71"/> @@ -1570,17 +1586,17 @@ Address: %4 <location line="+18"/> <location line="+16"/> <source>Payment request error</source> - <translation type="unfinished"/> + <translation>지불 요청 애러</translation> </message> <message> <location line="-353"/> <source>Cannot start bitcoin: click-to-pay handler</source> - <translation type="unfinished"/> + <translation>비트코인을 시작할 수 없습니다: 지급제어기를 클릭하시오</translation> </message> <message> <location line="+58"/> <source>Net manager warning</source> - <translation type="unfinished"/> + <translation>네트워크 관리인 경고</translation> </message> <message> <location line="+1"/> @@ -1610,12 +1626,12 @@ Address: %4 <message> <location line="+59"/> <source>Refund from %1</source> - <translation type="unfinished"/> + <translation>%1 으로부터의 환불</translation> </message> <message> <location line="+43"/> <source>Error communicating with %1: %2</source> - <translation type="unfinished"/> + <translation>%1과 소통하는데 애러: %2</translation> </message> <message> <location line="+24"/> @@ -1625,17 +1641,17 @@ Address: %4 <message> <location line="+11"/> <source>Bad response from server %1</source> - <translation type="unfinished"/> + <translation>서버로 부터 반응이 없습니다 %1</translation> </message> <message> <location line="+33"/> <source>Payment acknowledged</source> - <translation type="unfinished"/> + <translation>지불이 승인됨</translation> </message> <message> <location line="-11"/> <source>Network request error</source> - <translation type="unfinished"/> + <translation>네트워크 요청 애러</translation> </message> </context> <context> @@ -1649,13 +1665,18 @@ Address: %4 <message> <location line="+1"/> <source>Error: Specified data directory "%1" does not exist.</source> - <translation type="unfinished"/> + <translation>애러: 지정한 데이터 폴더 "%1"은 존재하지 않습니다.</translation> </message> <message> <location line="-12"/> <source>Error: Invalid combination of -regtest and -testnet.</source> <translation type="unfinished"/> </message> + <message> + <location filename="../guiutil.cpp" line="+82"/> + <source>Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)</source> + <translation>비트코인 주소를 입력하기 (예 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)</translation> + </message> </context> <context> <name>QRImageWidget</name> @@ -1677,7 +1698,7 @@ Address: %4 <message> <location line="+0"/> <source>PNG Image (*.png)</source> - <translation type="unfinished"/> + <translation>PNG 이미지(*.png)</translation> </message> </context> <context> @@ -1710,22 +1731,22 @@ Address: %4 <message> <location line="-45"/> <source>&Information</source> - <translation>정보(&I)</translation> + <translation>정보&</translation> </message> <message> <location line="-10"/> <source>Debug window</source> - <translation type="unfinished"/> + <translation>디버그 창</translation> </message> <message> <location line="+25"/> <source>General</source> - <translation type="unfinished"/> + <translation>일반</translation> </message> <message> <location line="+53"/> <source>Using OpenSSL version</source> - <translation type="unfinished"/> + <translation>오픈SSL 버전을 사용합니다</translation> </message> <message> <location line="+49"/> @@ -1740,7 +1761,7 @@ Address: %4 <message> <location line="+7"/> <source>Name</source> - <translation type="unfinished"/> + <translation>이름</translation> </message> <message> <location line="+23"/> @@ -1780,7 +1801,7 @@ Address: %4 <message> <location line="+72"/> <source>&Network Traffic</source> - <translation type="unfinished"/> + <translation>&네트워크 트래픽</translation> </message> <message> <location line="+52"/> @@ -1790,7 +1811,7 @@ Address: %4 <message> <location line="+13"/> <source>Totals</source> - <translation type="unfinished"/> + <translation>총액</translation> </message> <message> <location line="+64"/> @@ -1815,7 +1836,7 @@ Address: %4 <message> <location line="+7"/> <source>Open the Bitcoin debug log file from the current data directory. This can take a few seconds for large log files.</source> - <translation type="unfinished"/> + <translation>비트코인 디버그 로그파일을 현재 데이터 폴더에서 여십시요. 용량이 큰 로그 파일들은 몇 초가 걸릴 수 있습니다.</translation> </message> <message> <location line="+76"/> @@ -1825,7 +1846,7 @@ Address: %4 <message> <location filename="../rpcconsole.cpp" line="-30"/> <source>Welcome to the Bitcoin RPC console.</source> - <translation>비트코인 RPC 콘솔에 잘 들어오셨습니다.</translation> + <translation>비트코인 RPC 콘솔에 오신걸 환영합니다</translation> </message> <message> <location line="+1"/> @@ -1840,58 +1861,58 @@ Address: %4 <message> <location line="+122"/> <source>%1 B</source> - <translation type="unfinished"/> + <translation>% 1 바이트</translation> </message> <message> <location line="+2"/> <source>%1 KB</source> - <translation type="unfinished"/> + <translation>% 1 킬로바이트</translation> </message> <message> <location line="+2"/> <source>%1 MB</source> - <translation type="unfinished"/> + <translation>% 1 메가바이트</translation> </message> <message> <location line="+2"/> <source>%1 GB</source> - <translation type="unfinished"/> + <translation>% 1 기가바이트</translation> </message> <message> <location line="+7"/> <source>%1 m</source> - <translation type="unfinished"/> + <translation>% 1 분</translation> </message> <message> <location line="+5"/> <source>%1 h</source> - <translation type="unfinished"/> + <translation>% 1 시간</translation> </message> <message> <location line="+2"/> <source>%1 h %2 m</source> - <translation type="unfinished"/> + <translation>% 1시 %2 분</translation> </message> </context> <context> <name>ReceiveCoinsDialog</name> <message> - <location filename="../forms/receivecoinsdialog.ui" line="+83"/> + <location filename="../forms/receivecoinsdialog.ui" line="+107"/> <source>&Amount:</source> - <translation type="unfinished"/> + <translation>&거래량:</translation> </message> <message> - <location line="-13"/> + <location line="-16"/> <source>&Label:</source> <translation>표:</translation> </message> <message> - <location line="-34"/> + <location line="-37"/> <source>&Message:</source> - <translation type="unfinished"/> + <translation>&메시지:</translation> </message> <message> - <location line="-17"/> + <location line="-20"/> <source>Reuse one of the previously used receiving addresses. Reusing addresses has security and privacy issues. Do not use this unless re-generating a payment request made before.</source> <translation type="unfinished"/> </message> @@ -1901,27 +1922,30 @@ Address: %4 <translation type="unfinished"/> </message> <message> - <location line="+27"/> - <source>An optional label to associate with the new receiving address</source> + <location line="+14"/> + <location line="+23"/> + <source>An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Bitcoin network.</source> <translation type="unfinished"/> </message> <message> - <location line="+7"/> - <source>An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Bitcoin network.</source> + <location line="-7"/> + <location line="+21"/> + <source>An optional label to associate with the new receiving address.</source> <translation type="unfinished"/> </message> <message> - <location line="+7"/> + <location line="-7"/> <source>Use this form to request payments. All fields are <b>optional</b>.</source> <translation type="unfinished"/> </message> <message> - <location line="+39"/> + <location line="+23"/> + <location line="+22"/> <source>An optional amount to request. Leave this empty or zero to not request a specific amount.</source> <translation type="unfinished"/> </message> <message> - <location line="+17"/> + <location line="+32"/> <source>Clear all fields of the form.</source> <translation>양식의 모든 필드를 지웁니다</translation> </message> @@ -1931,34 +1955,49 @@ Address: %4 <translation>지우기</translation> </message> <message> - <location line="+36"/> - <source>&Request payment</source> - <translation>지불 요청(&R)</translation> + <location line="+78"/> + <source>Requested payments history</source> + <translation>지출기록 확인</translation> </message> <message> - <location line="+47"/> - <source>Requested payments</source> - <translation type="unfinished"/> + <location line="-98"/> + <source>&Request payment</source> + <translation>지불 요청(&R)</translation> </message> <message> - <location line="+16"/> + <location line="+120"/> <source>Show the selected request (does the same as double clicking an entry)</source> <translation type="unfinished"/> </message> <message> <location line="+3"/> <source>Show</source> - <translation type="unfinished"/> + <translation>보기</translation> </message> <message> <location line="+11"/> <source>Remove the selected entries from the list</source> - <translation type="unfinished"/> + <translation>목록에서 삭제할 항목을 선택하시오</translation> </message> <message> <location line="+3"/> <source>Remove</source> - <translation type="unfinished"/> + <translation>삭제</translation> + </message> + <message> + <location filename="../receivecoinsdialog.cpp" line="+38"/> + <source>Copy label</source> + <translation>표 복사하기</translation> + </message> + <message> + <location line="+1"/> + <source>Copy message</source> + <translation>메시지 복사</translation> + </message> + <message> + <location line="+1"/> + <source>Copy amount</source> + <translation>거래량 복사</translation> </message> </context> <context> @@ -2059,14 +2098,19 @@ Address: %4 <message> <location line="+9"/> <source>(no message)</source> - <translation type="unfinished"/> + <translation>(메세지가 없습니다)</translation> + </message> + <message> + <location line="+8"/> + <source>(no amount)</source> + <translation>(거래량 없음)</translation> </message> </context> <context> <name>SendCoinsDialog</name> <message> <location filename="../forms/sendcoinsdialog.ui" line="+14"/> - <location filename="../sendcoinsdialog.cpp" line="+381"/> + <location filename="../sendcoinsdialog.cpp" line="+380"/> <location line="+80"/> <source>Send Coins</source> <translation>코인들 보내기</translation> @@ -2074,7 +2118,7 @@ Address: %4 <message> <location line="+76"/> <source>Coin Control Features</source> - <translation type="unfinished"/> + <translation>코인 컨트롤 기능들</translation> </message> <message> <location line="+20"/> @@ -2084,37 +2128,37 @@ Address: %4 <message> <location line="+7"/> <source>automatically selected</source> - <translation type="unfinished"/> + <translation>자동 선택</translation> </message> <message> <location line="+19"/> <source>Insufficient funds!</source> - <translation type="unfinished"/> + <translation>자금이 부족합니다!</translation> </message> <message> <location line="+89"/> <source>Quantity:</source> - <translation type="unfinished"/> + <translation>수량:</translation> </message> <message> <location line="+35"/> <source>Bytes:</source> - <translation type="unfinished"/> + <translation>Bytes:</translation> </message> <message> <location line="+48"/> <source>Amount:</source> - <translation type="unfinished"/> + <translation>거래량:</translation> </message> <message> <location line="+32"/> <source>Priority:</source> - <translation type="unfinished"/> + <translation>우선도:</translation> </message> <message> <location line="+48"/> <source>Fee:</source> - <translation type="unfinished"/> + <translation>수수료:</translation> </message> <message> <location line="+32"/> @@ -2124,7 +2168,7 @@ Address: %4 <message> <location line="+48"/> <source>After Fee:</source> - <translation type="unfinished"/> + <translation>수수료 이후:</translation> </message> <message> <location line="+32"/> @@ -2139,20 +2183,20 @@ Address: %4 <message> <location line="+3"/> <source>Custom change address</source> - <translation type="unfinished"/> + <translation>주소변경</translation> </message> <message> - <location line="+115"/> + <location line="+164"/> <source>Send to multiple recipients at once</source> <translation>다수의 수령인들에게 한번에 보내기</translation> </message> <message> <location line="+3"/> <source>Add &Recipient</source> - <translation type="unfinished"/> + <translation>수령인 추가하기</translation> </message> <message> - <location line="+20"/> + <location line="-23"/> <source>Clear all fields of the form.</source> <translation>양식의 모든 필드를 지웁니다</translation> </message> @@ -2162,14 +2206,14 @@ Address: %4 <translation>모두 지우기(&A)</translation> </message> <message> - <location line="+22"/> + <location line="+52"/> <source>Balance:</source> <translation>잔액:</translation> </message> <message> - <location line="+41"/> + <location line="-78"/> <source>Confirm the send action</source> - <translation>보내는 행위 확인</translation> + <translation>전송 기능 확인</translation> </message> <message> <location line="+3"/> @@ -2177,7 +2221,7 @@ Address: %4 <translation>보내기(&E)</translation> </message> <message> - <location filename="../sendcoinsdialog.cpp" line="-228"/> + <location filename="../sendcoinsdialog.cpp" line="-229"/> <source>Confirm send coins</source> <translation>코인 전송을 확인</translation> </message> @@ -2190,14 +2234,9 @@ Address: %4 <translation>%1을(를) %2(으)로</translation> </message> <message> - <location line="-136"/> - <source>Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)</source> - <translation>비트코인 주소를 입력하기 (예 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)</translation> - </message> - <message> - <location line="+15"/> + <location line="-121"/> <source>Copy quantity</source> - <translation type="unfinished"/> + <translation>수량 복사</translation> </message> <message> <location line="+1"/> @@ -2207,22 +2246,22 @@ Address: %4 <message> <location line="+1"/> <source>Copy fee</source> - <translation type="unfinished"/> + <translation>수수료 복사</translation> </message> <message> <location line="+1"/> <source>Copy after fee</source> - <translation type="unfinished"/> + <translation>수수료 이후 복사</translation> </message> <message> <location line="+1"/> <source>Copy bytes</source> - <translation type="unfinished"/> + <translation>bytes 복사</translation> </message> <message> <location line="+1"/> <source>Copy priority</source> - <translation type="unfinished"/> + <translation>우선도 복사</translation> </message> <message> <location line="+1"/> @@ -2237,17 +2276,17 @@ Address: %4 <message> <location line="+170"/> <source>Total Amount %1 (= %2)</source> - <translation type="unfinished"/> + <translation>총 액수 %1(=%2)</translation> </message> <message> <location line="+2"/> <source>or</source> - <translation type="unfinished"/> + <translation>또는</translation> </message> <message> - <location line="+202"/> + <location line="+203"/> <source>The recipient address is not valid, please recheck.</source> - <translation type="unfinished"/> + <translation>수령인 주소가 정확하지 않습니다. 재확인 바랍니다</translation> </message> <message> <location line="+3"/> @@ -2272,7 +2311,7 @@ Address: %4 <message> <location line="+3"/> <source>Transaction creation failed!</source> - <translation type="unfinished"/> + <translation>거래를 생성하는 것을 실패하였습니다</translation> </message> <message> <location line="+4"/> @@ -2280,39 +2319,39 @@ Address: %4 <translation type="unfinished"/> </message> <message> - <location line="+112"/> + <location line="+113"/> <source>Warning: Invalid Bitcoin address</source> - <translation type="unfinished"/> + <translation>경고: 잘못된 비트코인주소입니다</translation> </message> <message> - <location line="+21"/> + <location line="+20"/> <source>(no label)</source> <translation>(표 없슴)</translation> </message> <message> <location line="-11"/> <source>Warning: Unknown change address</source> - <translation type="unfinished"/> + <translation>경고: 알려지지 않은 주소변경입니다</translation> </message> <message> - <location line="-366"/> + <location line="-367"/> <source>Are you sure you want to send?</source> - <translation type="unfinished"/> + <translation>정말로 보내시겠습니까?</translation> </message> <message> <location line="+9"/> <source>added as transaction fee</source> - <translation type="unfinished"/> + <translation>거래 수수료로 추가됨</translation> </message> <message> - <location line="+170"/> + <location line="+171"/> <source>Payment request expired</source> - <translation type="unfinished"/> + <translation>지불 요청 만료</translation> </message> <message> <location line="+8"/> <source>Invalid payment address %1</source> - <translation type="unfinished"/> + <translation>잘못된 지불 주소입니다 %1</translation> </message> </context> <context> @@ -2352,7 +2391,7 @@ Address: %4 <message> <location line="-40"/> <source>This is a normal payment.</source> - <translation type="unfinished"/> + <translation>평균지급입니다</translation> </message> <message> <location line="+50"/> @@ -2374,22 +2413,17 @@ Address: %4 <location line="+524"/> <location line="+536"/> <source>Remove this entry</source> - <translation type="unfinished"/> + <translation>항목을 지우시오</translation> </message> <message> <location line="-1008"/> <source>Message:</source> - <translation type="unfinished"/> + <translation>메시지:</translation> </message> <message> - <location line="+10"/> - <source>A message that was attached to the Bitcoin URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network.</source> - <translation type="unfinished"/> - </message> - <message> - <location line="+958"/> + <location line="+968"/> <source>This is a verified payment request.</source> - <translation type="unfinished"/> + <translation>지급 확인요청입니다.</translation> </message> <message> <location line="-991"/> @@ -2397,11 +2431,16 @@ Address: %4 <translation type="unfinished"/> </message> <message> - <location line="+459"/> - <source>This is an unverified payment request.</source> + <location line="+33"/> + <source>A message that was attached to the bitcoin: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network.</source> <translation type="unfinished"/> </message> <message> + <location line="+426"/> + <source>This is an unverified payment request.</source> + <translation>지급요청 미확인입니다</translation> + </message> + <message> <location line="+18"/> <location line="+532"/> <source>Pay To:</source> @@ -2411,12 +2450,7 @@ Address: %4 <location line="-498"/> <location line="+536"/> <source>Memo:</source> - <translation type="unfinished"/> - </message> - <message> - <location filename="../sendcoinsentry.cpp" line="+1"/> - <source>Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)</source> - <translation>비트코인 주소를 입력하기 (예 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)</translation> + <translation>메모:</translation> </message> </context> <context> @@ -2424,12 +2458,12 @@ Address: %4 <message> <location filename="../utilitydialog.cpp" line="+48"/> <source>Bitcoin Core is shutting down...</source> - <translation type="unfinished"/> + <translation>비트코인코어가 닫아지고 있습니다</translation> </message> <message> <location line="+1"/> <source>Do not shut down the computer until this window disappears.</source> - <translation type="unfinished"/> + <translation>창이 사라지기 전까지 컴퓨터를 끄지마시오.</translation> </message> </context> <context> @@ -2437,7 +2471,7 @@ Address: %4 <message> <location filename="../forms/signverifymessagedialog.ui" line="+14"/> <source>Signatures - Sign / Verify a Message</source> - <translation type="unfinished"/> + <translation>서명 - 싸인 / 메시지 확인</translation> </message> <message> <location line="+10"/> @@ -2455,19 +2489,19 @@ Address: %4 <translation>메시지를 서명할 주소 (예: 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)</translation> </message> <message> - <location line="+10"/> - <location line="+213"/> + <location line="+7"/> + <location line="+210"/> <source>Choose previously used address</source> <translation>이전에 사용한 주소를 선택하십시오</translation> </message> <message> - <location line="-203"/> - <location line="+213"/> + <location line="-200"/> + <location line="+210"/> <source>Alt+A</source> <translation>Alt+A</translation> </message> <message> - <location line="-203"/> + <location line="-200"/> <source>Paste address from clipboard</source> <translation>클립보드로 부터 주소를 붙이세요</translation> </message> @@ -2484,7 +2518,7 @@ Address: %4 <message> <location line="+7"/> <source>Signature</source> - <translation type="unfinished"/> + <translation>서명</translation> </message> <message> <location line="+27"/> @@ -2508,12 +2542,12 @@ Address: %4 </message> <message> <location line="+3"/> - <location line="+146"/> + <location line="+143"/> <source>Clear &All</source> <translation>모두 지우기(&A)</translation> </message> <message> - <location line="-87"/> + <location line="-84"/> <source>&Verify Message</source> <translation>메시지 검증(&V)</translation> </message> @@ -2528,9 +2562,9 @@ Address: %4 <translation>서명한 메시지의 주소입니다 (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)</translation> </message> <message> - <location line="+40"/> + <location line="+37"/> <source>Verify the message to ensure it was signed with the specified Bitcoin address</source> - <translation type="unfinished"/> + <translation>정확한 비트코인주소가 입력됬는지 메시지를 확인하시오</translation> </message> <message> <location line="+3"/> @@ -2543,43 +2577,37 @@ Address: %4 <translation>모든 검증 메시지 필드 재설정</translation> </message> <message> - <location filename="../signverifymessagedialog.cpp" line="+29"/> - <location line="+3"/> + <location filename="../signverifymessagedialog.cpp" line="+30"/> <source>Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)</source> <translation>비트코인 주소를 입력하기 (예 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)</translation> </message> <message> - <location line="-2"/> + <location line="-1"/> <source>Click "Sign Message" to generate signature</source> <translation>서명을 만들려면 "메시지 서명"을 누르십시오</translation> </message> <message> - <location line="+3"/> - <source>Enter Bitcoin signature</source> - <translation>비트코인 서명을 입력하십시오</translation> - </message> - <message> <location line="+84"/> - <location line="+81"/> + <location line="+80"/> <source>The entered address is invalid.</source> <translation>입력한 주소가 잘못되었습니다.</translation> </message> <message> - <location line="-81"/> + <location line="-80"/> <location line="+8"/> - <location line="+73"/> + <location line="+72"/> <location line="+8"/> <source>Please check the address and try again.</source> <translation>주소를 확인하고 다시 시도하십시오.</translation> </message> <message> - <location line="-81"/> - <location line="+81"/> + <location line="-80"/> + <location line="+80"/> <source>The entered address does not refer to a key.</source> <translation>입력한 주소는 키에서 참조하지 않습니다.</translation> </message> <message> - <location line="-73"/> + <location line="-72"/> <source>Wallet unlock was cancelled.</source> <translation>지갑 잠금 해제를 취소했습니다.</translation> </message> @@ -2599,7 +2627,7 @@ Address: %4 <translation>메시지를 서명했습니다.</translation> </message> <message> - <location line="+59"/> + <location line="+58"/> <source>The signature could not be decoded.</source> <translation>서명을 해독할 수 없습니다.</translation> </message> @@ -2630,12 +2658,12 @@ Address: %4 <message> <location filename="../splashscreen.cpp" line="+28"/> <source>Bitcoin Core</source> - <translation type="unfinished"/> + <translation>비트코인코어</translation> </message> <message> <location line="+2"/> <source>The Bitcoin Core developers</source> - <translation type="unfinished"/> + <translation>비트코인코어 개발자들</translation> </message> <message> <location line="+1"/> @@ -2660,8 +2688,13 @@ Address: %4 </message> <message> <location line="+6"/> + <source>conflicted</source> + <translation>충돌</translation> + </message> + <message> + <location line="+2"/> <source>%1/offline</source> - <translation type="unfinished"/> + <translation>%1/오프라인</translation> </message> <message> <location line="+2"/> @@ -2691,36 +2724,36 @@ Address: %4 <message> <location line="+7"/> <source>Source</source> - <translation type="unfinished"/> + <translation>소스</translation> </message> <message> <location line="+0"/> <source>Generated</source> - <translation type="unfinished"/> + <translation>생성하다</translation> </message> <message> <location line="+5"/> <location line="+17"/> <source>From</source> - <translation type="unfinished"/> + <translation>으로부터</translation> </message> <message> <location line="+1"/> <location line="+22"/> <location line="+58"/> <source>To</source> - <translation type="unfinished"/> + <translation>에게</translation> </message> <message> <location line="-77"/> <location line="+2"/> <source>own address</source> - <translation type="unfinished"/> + <translation>자신의 주소</translation> </message> <message> <location line="-2"/> <source>label</source> - <translation type="unfinished"/> + <translation>라벨</translation> </message> <message> <location line="+37"/> @@ -2729,7 +2762,7 @@ Address: %4 <location line="+17"/> <location line="+53"/> <source>Credit</source> - <translation type="unfinished"/> + <translation>예금</translation> </message> <message numerus="yes"> <location line="-125"/> @@ -2739,7 +2772,7 @@ Address: %4 <message> <location line="+2"/> <source>not accepted</source> - <translation type="unfinished"/> + <translation>허용되지 않는다</translation> </message> <message> <location line="+44"/> @@ -2747,7 +2780,7 @@ Address: %4 <location line="+15"/> <location line="+53"/> <source>Debit</source> - <translation type="unfinished"/> + <translation>차변</translation> </message> <message> <location line="-62"/> @@ -2778,7 +2811,7 @@ Address: %4 <message> <location line="+18"/> <source>Merchant</source> - <translation type="unfinished"/> + <translation>상인</translation> </message> <message> <location line="+7"/> @@ -2821,12 +2854,12 @@ Address: %4 <translation>. 아직 성공적으로 통보하지 않음</translation> </message> <message numerus="yes"> - <location line="-35"/> + <location line="-37"/> <source>Open for %n more block(s)</source> <translation type="unfinished"><numerusform></numerusform></translation> </message> <message> - <location line="+70"/> + <location line="+72"/> <source>unknown</source> <translation>알수없음</translation> </message> @@ -2867,12 +2900,12 @@ Address: %4 <translation>수량</translation> </message> <message> - <location line="+59"/> + <location line="+78"/> <source>Immature (%1 confirmations, will be available after %2)</source> <translation type="unfinished"/> </message> <message numerus="yes"> - <location line="+16"/> + <location line="-21"/> <source>Open for %n more block(s)</source> <translation type="unfinished"><numerusform></numerusform></translation> </message> @@ -2882,25 +2915,14 @@ Address: %4 <translation>%1 까지 열림</translation> </message> <message> - <location line="+3"/> - <source>Offline (%1 confirmations)</source> - <translation>오프라인(%1 확인됨)</translation> - </message> - <message> - <location line="+3"/> - <source>Unconfirmed (%1 of %2 confirmations)</source> - <translation>미확인(%2 중 %1 확인됨)</translation> - </message> - <message> - <location line="-22"/> - <location line="+25"/> + <location line="+12"/> <source>Confirmed (%1 confirmations)</source> <translation>확인됨(%1 확인됨)</translation> </message> <message> - <location line="-22"/> + <location line="+9"/> <source>This block was not received by any other nodes and will probably not be accepted!</source> - <translation>이 블럭은 다른 노드로부터 받지 않았음. 허용되지 않을 것임.</translation> + <translation>이 블럭은 다른 노드로부터 받지 않아 허용되지 않을 것임.</translation> </message> <message> <location line="+3"/> @@ -2908,7 +2930,27 @@ Address: %4 <translation>생성되었으나 거절됨</translation> </message> <message> - <location line="+62"/> + <location line="-21"/> + <source>Offline</source> + <translation>오프라인</translation> + </message> + <message> + <location line="+3"/> + <source>Unconfirmed</source> + <translation>미확인</translation> + </message> + <message> + <location line="+3"/> + <source>Confirming (%1 of %2 recommended confirmations)</source> + <translation type="unfinished"/> + </message> + <message> + <location line="+6"/> + <source>Conflicted</source> + <translation>충돌</translation> + </message> + <message> + <location line="+51"/> <source>Received with</source> <translation>다음과 함께 받음 : </translation> </message> @@ -2938,7 +2980,7 @@ Address: %4 <translation>(없음)</translation> </message> <message> - <location line="+199"/> + <location line="+190"/> <source>Transaction status. Hover over this field to show number of confirmations.</source> <translation>거래상황. 마우스를 올리면 승인횟수가 표시됩니다.</translation> </message> @@ -2955,12 +2997,12 @@ Address: %4 <message> <location line="+2"/> <source>Destination address of transaction.</source> - <translation>거래 상대방의 주소.</translation> + <translation>거래가 도달할 주소</translation> </message> <message> <location line="+2"/> <source>Amount removed from or added to balance.</source> - <translation>변경된 잔고.</translation> + <translation type="unfinished"/> </message> </context> <context> @@ -3029,7 +3071,7 @@ Address: %4 <message> <location line="+6"/> <source>Enter address or label to search</source> - <translation>검색하기 위한 주소 또는 라벨을 입력</translation> + <translation>검색하기 위한 주소 또는 표 입력</translation> </message> <message> <location line="+6"/> @@ -3044,7 +3086,7 @@ Address: %4 <message> <location line="+1"/> <source>Copy label</source> - <translation>라벨 복사하기</translation> + <translation>표 복사하기</translation> </message> <message> <location line="+1"/> @@ -3059,7 +3101,7 @@ Address: %4 <message> <location line="+1"/> <source>Edit label</source> - <translation>라벨 수정하기</translation> + <translation>표 수정하기</translation> </message> <message> <location line="+1"/> @@ -3069,27 +3111,27 @@ Address: %4 <message> <location line="+142"/> <source>Export Transaction History</source> - <translation type="unfinished"/> + <translation>거래 기록 내보내기</translation> </message> <message> <location line="+19"/> <source>Exporting Failed</source> - <translation type="unfinished"/> + <translation>내보내기 실패</translation> </message> <message> <location line="+0"/> <source>There was an error trying to save the transaction history to %1.</source> - <translation type="unfinished"/> + <translation>%1으로 거래 기록을 저장하는데 애러가 있었습니다.</translation> </message> <message> <location line="+4"/> <source>Exporting Successful</source> - <translation type="unfinished"/> + <translation>내보내기 성공</translation> </message> <message> <location line="+0"/> <source>The transaction history was successfully saved to %1.</source> - <translation type="unfinished"/> + <translation>거래 기록이 성공적으로 %1에 저장되었습니다.</translation> </message> <message> <location line="-22"/> @@ -3168,7 +3210,7 @@ Address: %4 <message> <location line="+1"/> <source>Export the data in the current tab to a file</source> - <translation type="unfinished"/> + <translation>현재 탭에 있는 데이터를 파일로 내보내기</translation> </message> <message> <location line="+181"/> @@ -3193,7 +3235,7 @@ Address: %4 <message> <location line="+4"/> <source>The wallet data was successfully saved to %1.</source> - <translation type="unfinished"/> + <translation>지갑 정보가 %1에 성공적으로 저장되었습니다</translation> </message> <message> <location line="+0"/> @@ -3204,12 +3246,12 @@ Address: %4 <context> <name>bitcoin-core</name> <message> - <location filename="../bitcoinstrings.cpp" line="+221"/> + <location filename="../bitcoinstrings.cpp" line="+223"/> <source>Usage:</source> <translation>사용법:</translation> </message> <message> - <location line="-54"/> + <location line="-55"/> <source>List commands</source> <translation>커맨드 목록</translation> </message> @@ -3226,12 +3268,12 @@ Address: %4 <message> <location line="+22"/> <source>Specify configuration file (default: bitcoin.conf)</source> - <translation>설정파일 지정 (기본: bitcoin.conf)</translation> + <translation>설정파일 지정 (기본값: bitcoin.conf)</translation> </message> <message> <location line="+3"/> <source>Specify pid file (default: bitcoind.pid)</source> - <translation>pid 파일 지정 (기본: bitcoind.pid)</translation> + <translation>pid 파일 지정 (기본값: bitcoind.pid)</translation> </message> <message> <location line="-1"/> @@ -3241,7 +3283,7 @@ Address: %4 <message> <location line="-9"/> <source>Set database cache size in megabytes (default: 25)</source> - <translation>데이터베이스 캐시 크기를 메가바이트로 지정(내정값:25)</translation> + <translation>데이터베이스 캐시 크기를 메가바이트로 지정(기본값:25)</translation> </message> <message> <location line="-26"/> @@ -3251,7 +3293,7 @@ Address: %4 <message> <location line="+5"/> <source>Maintain at most <n> connections to peers (default: 125)</source> - <translation type="unfinished"/> + <translation>가장 잘 연결되는 사용자를 유지합니다(기본값: 125)</translation> </message> <message> <location line="-51"/> @@ -3264,12 +3306,12 @@ Address: %4 <translation>공인 주소를 지정하십시오</translation> </message> <message> - <location line="+5"/> + <location line="+6"/> <source>Threshold for disconnecting misbehaving peers (default: 100)</source> <translation type="unfinished"/> </message> <message> - <location line="-148"/> + <location line="-150"/> <source>Number of seconds to keep misbehaving peers from reconnecting (default: 86400)</source> <translation type="unfinished"/> </message> @@ -3289,19 +3331,19 @@ Address: %4 <translation>명령줄과 JSON-RPC 명령 수락</translation> </message> <message> - <location line="+80"/> + <location line="+81"/> <source>Run in the background as a daemon and accept commands</source> <translation>데몬으로 백그라운드에서 실행하고 명령을 허용</translation> </message> <message> - <location line="+39"/> + <location line="+40"/> <source>Use the test network</source> <translation>테스트 네트워크 사용</translation> </message> <message> - <location line="-118"/> + <location line="-120"/> <source>Accept connections from outside (default: 1 if no -proxy or -connect)</source> - <translation type="unfinished"/> + <translation>외부 접속을 승인합니다</translation> </message> <message> <location line="-95"/> @@ -3411,12 +3453,12 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <message> <location line="+6"/> <source>Attempt to recover private keys from a corrupt wallet.dat</source> - <translation type="unfinished"/> + <translation>손상된 wallet.dat에서 개인키 복원을 시도합니다</translation> </message> <message> <location line="+1"/> <source>Bitcoin Core Daemon</source> - <translation type="unfinished"/> + <translation>비트코인 코어 데몬</translation> </message> <message> <location line="+1"/> @@ -3430,13 +3472,18 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. </message> <message> <location line="+5"/> + <source>Clear list of wallet transactions (diagnostic tool; implies -rescan)</source> + <translation>거래내역 삭제(진단도구; 재스캔 포함)</translation> + </message> + <message> + <location line="+1"/> <source>Connect only to the specified node(s)</source> - <translation type="unfinished"/> + <translation>지정된 노드에만 연결하기</translation> </message> <message> <location line="+1"/> <source>Connect through SOCKS proxy</source> - <translation type="unfinished"/> + <translation>SOCKS 프록시를 통해 연결</translation> </message> <message> <location line="+1"/> @@ -3446,7 +3493,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <message> <location line="+2"/> <source>Corrupted block database detected</source> - <translation type="unfinished"/> + <translation>손상된 블록 데이터베이스가 감지되었습니다</translation> </message> <message> <location line="+1"/> @@ -3461,7 +3508,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <message> <location line="+1"/> <source>Do you want to rebuild the block database now?</source> - <translation type="unfinished"/> + <translation>블락 데이터베이스를 다시 생성하시겠습니까?</translation> </message> <message> <location line="+2"/> @@ -3476,7 +3523,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <message> <location line="+1"/> <source>Error loading block database</source> - <translation type="unfinished"/> + <translation>블록 데이터베이스를 불러오는데 오류</translation> </message> <message> <location line="+4"/> @@ -3491,7 +3538,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <message> <location line="+1"/> <source>Error: Wallet locked, unable to create transaction!</source> - <translation type="unfinished"/> + <translation>오류: 지갑이 잠금상태여서 거래를 생성할 수 없습니다!</translation> </message> <message> <location line="+1"/> @@ -3561,12 +3608,12 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <message> <location line="+1"/> <source>Find peers using DNS lookup (default: 1 unless -connect)</source> - <translation type="unfinished"/> + <translation>DNS 찾기를 이용하여 사용자를 찾으시오(기본값: 1 연결 되면)</translation> </message> <message> <location line="+1"/> <source>Generate coins (default: 0)</source> - <translation type="unfinished"/> + <translation>코인 생성(기본값: 0)</translation> </message> <message> <location line="+2"/> @@ -3606,7 +3653,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <message> <location line="+1"/> <source>RPC client options:</source> - <translation type="unfinished"/> + <translation>RPC 클라이언트 옵션</translation> </message> <message> <location line="+1"/> @@ -3616,7 +3663,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <message> <location line="+5"/> <source>Select SOCKS version for -proxy (4 or 5, default: 5)</source> - <translation type="unfinished"/> + <translation>-proxy를 위한 SOCKS 버전을 선택하세요 (4 또는 5, 기본: 5)</translation> </message> <message> <location line="+1"/> @@ -3626,7 +3673,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <message> <location line="+7"/> <source>Set maximum block size in bytes (default: %d)</source> - <translation type="unfinished"/> + <translation>최대 블락 크기를 Bytes로 지정하세요 (기본: %d)</translation> </message> <message> <location line="+2"/> @@ -3636,10 +3683,15 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <message> <location line="+7"/> <source>Specify wallet file (within data directory)</source> - <translation type="unfinished"/> + <translation>데이터 폴더 안에 지갑 파일을 선택하세요.</translation> </message> <message> <location line="+2"/> + <source>Spend unconfirmed change when sending transactions (default: 1)</source> + <translation type="unfinished"/> + </message> + <message> + <location line="+1"/> <source>Start Bitcoin server</source> <translation>비트코인 서버 시작</translation> </message> @@ -3666,7 +3718,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <message> <location line="+1"/> <source>Wait for RPC server to start</source> - <translation type="unfinished"/> + <translation>RPC서버가 시작되길 기다리십시요</translation> </message> <message> <location line="+1"/> @@ -3676,7 +3728,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <message> <location line="+2"/> <source>Wallet options:</source> - <translation type="unfinished"/> + <translation>지갑 옵션:</translation> </message> <message> <location line="+2"/> @@ -3689,12 +3741,12 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation type="unfinished"/> </message> <message> - <location line="-79"/> + <location line="-80"/> <source>Imports blocks from external blk000??.dat file</source> <translation>외부 blk000??.dat 파일에서 블록 가져오기</translation> </message> <message> - <location line="-105"/> + <location line="-106"/> <source>Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message)</source> <translation type="unfinished"/> </message> @@ -3714,7 +3766,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation type="unfinished"/> </message> <message> - <location line="+89"/> + <location line="+90"/> <source>Information</source> <translation>정보</translation> </message> @@ -3731,7 +3783,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <message> <location line="+8"/> <source>Maintain a full transaction index (default: 0)</source> - <translation type="unfinished"/> + <translation>전체 거래 지수를 유지합니다(기본값: 0)</translation> </message> <message> <location line="+2"/> @@ -3776,7 +3828,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <message> <location line="+1"/> <source>Signing transaction failed</source> - <translation type="unfinished"/> + <translation>거래를 서명하는것을 실패하였습니다.</translation> </message> <message> <location line="+2"/> @@ -3784,19 +3836,19 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>밀리초 단위로 연결 제한시간을 설정하십시오(기본값: 5000)</translation> </message> <message> - <location line="+6"/> + <location line="+7"/> <source>System error: </source> <translation>시스템 오류:</translation> </message> <message> <location line="+5"/> <source>Transaction amount too small</source> - <translation type="unfinished"/> + <translation>거래량이 너무 적습니다</translation> </message> <message> <location line="+1"/> <source>Transaction amounts must be positive</source> - <translation type="unfinished"/> + <translation>거래량은 반드시 정수여야합니다.</translation> </message> <message> <location line="+1"/> @@ -3830,41 +3882,46 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. </message> <message> <location line="+2"/> + <source>Zapping all transactions from wallet...</source> + <translation>지갑의 모든거래내역 건너뛰기...</translation> + </message> + <message> + <location line="+1"/> <source>version</source> <translation>버전</translation> </message> <message> <location line="+1"/> <source>wallet.dat corrupt, salvage failed</source> - <translation type="unfinished"/> + <translation>wallet.dat 파일이 손상되었고 복구가 실패하였습니다.</translation> </message> <message> - <location line="-58"/> + <location line="-60"/> <source>Password for JSON-RPC connections</source> <translation>JSON-RPC 연결에 사용할 암호</translation> </message> <message> - <location line="-70"/> + <location line="-71"/> <source>Allow JSON-RPC connections from specified IP address</source> <translation>지정한 IP 주소의 JSON-RPC 연결 허용</translation> </message> <message> - <location line="+80"/> + <location line="+81"/> <source>Send commands to node running on <ip> (default: 127.0.0.1)</source> - <translation>실행 중인 노드로 명령 전송 <ip> (기본: 127.0.0.1)</translation> + <translation>실행 중인 노드로 명령 전송 <ip> (기본값: 127.0.0.1)</translation> </message> <message> - <location line="-132"/> + <location line="-133"/> <source>Execute command when the best block changes (%s in cmd is replaced by block hash)</source> <translation>최고의 블럭이 변하면 명령을 실행(cmd 에 있는 %s 는 블럭 해시에 의해 대체되어 짐)</translation> </message> <message> - <location line="+161"/> + <location line="+163"/> <source>Upgrade wallet to latest format</source> <translation>지갑을 최근 형식으로 개선하시오</translation> </message> <message> - <location line="-24"/> + <location line="-25"/> <source>Set key pool size to <n> (default: 100)</source> <translation>키 풀 크기 설정 <n>(기본값: 100)</translation> </message> @@ -3874,12 +3931,12 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>누락된 지갑 송금에 대한 블록 체인 다시 검색</translation> </message> <message> - <location line="+38"/> + <location line="+39"/> <source>Use OpenSSL (https) for JSON-RPC connections</source> <translation>JSON-RPC 연결에 OpenSSL(https) 사용</translation> </message> <message> - <location line="-30"/> + <location line="-31"/> <source>Server certificate file (default: server.cert)</source> <translation>서버 인증 파일 (기본값: server.cert)</translation> </message> @@ -3889,9 +3946,9 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>서버 개인 키(기본값: server.pem)</translation> </message> <message> - <location line="+16"/> + <location line="+17"/> <source>This help message</source> - <translation>이 도움말 메시지입니다</translation> + <translation>도움말 메시지입니다</translation> </message> <message> <location line="+7"/> @@ -3899,34 +3956,34 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>이 컴퓨터의 %s에 바인딩할 수 없습니다 (바인딩 과정에 %d 오류 발생, %s)</translation> </message> <message> - <location line="-107"/> + <location line="-109"/> <source>Allow DNS lookups for -addnode, -seednode and -connect</source> <translation>-addnode, -seednode, -connect 옵션에 대해 DNS 탐색 허용</translation> </message> <message> - <location line="+60"/> + <location line="+61"/> <source>Loading addresses...</source> <translation>주소를 불러오는 중...</translation> </message> <message> <location line="-37"/> <source>Error loading wallet.dat: Wallet corrupted</source> - <translation>wallet.dat에러: 지갑 오류</translation> + <translation>wallet.dat 불러오기 에러: 지갑 오류</translation> </message> <message> <location line="+1"/> <source>Error loading wallet.dat: Wallet requires newer version of Bitcoin</source> - <translation>wallet.dat 로딩 에러: 지갑은 새버전의 비트코인이 필요합니다.</translation> + <translation>wallet.dat 불러오기 에러: 지갑은 새버전의 비트코인이 필요합니다.</translation> </message> <message> - <location line="+98"/> + <location line="+99"/> <source>Wallet needed to be rewritten: restart Bitcoin to complete</source> - <translation>지갑을 새로 써야 합니다.: 완성하기위하여 비트코인을 다시 시작하십시오.</translation> + <translation>지갑을 새로 써야 합니다.: 완성하기 위하여 비트코인을 다시 시작하십시오.</translation> </message> <message> - <location line="-100"/> + <location line="-101"/> <source>Error loading wallet.dat</source> - <translation>wallet.dat 로딩 에러</translation> + <translation>wallet.dat 불러오기 에러</translation> </message> <message> <location line="+31"/> @@ -3934,7 +3991,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>잘못된 -proxy 주소입니다: '%s'</translation> </message> <message> - <location line="+56"/> + <location line="+57"/> <source>Unknown network specified in -onlynet: '%s'</source> <translation>-onlynet에 지정한 네트워크를 알 수 없습니다: '%s'</translation> </message> @@ -3944,7 +4001,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>요청한 -socks 프록히 버전을 알 수 없습니다: %i</translation> </message> <message> - <location line="-101"/> + <location line="-103"/> <source>Cannot resolve -bind address: '%s'</source> <translation>-bind 주소를 확인할 수 없습니다: '%s'</translation> </message> @@ -3954,7 +4011,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>-externalip 주소를 확인할 수 없습니다: '%s'</translation> </message> <message> - <location line="+48"/> + <location line="+49"/> <source>Invalid amount for -paytxfee=<amount>: '%s'</source> <translation>-paytxfee=<amount>에 대한 양이 잘못되었습니다: '%s'</translation> </message> @@ -3974,7 +4031,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>블럭 인덱스를 불러오는 중...</translation> </message> <message> - <location line="-62"/> + <location line="-63"/> <source>Add a node to connect to and attempt to keep the connection open</source> <translation type="unfinished"/> </message> @@ -3984,12 +4041,12 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>이 컴퓨터의 %s에 바인딩 할 수 없습니다. 아마도 비트코인이 실행중인 것 같습니다.</translation> </message> <message> - <location line="+95"/> + <location line="+96"/> <source>Loading wallet...</source> <translation>지갑을 불러오는 중...</translation> </message> <message> - <location line="-56"/> + <location line="-57"/> <source>Cannot downgrade wallet</source> <translation>지갑을 다운그레이드 할 수 없습니다</translation> </message> @@ -3999,7 +4056,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>기본 계좌에 기록할 수 없습니다</translation> </message> <message> - <location line="+67"/> + <location line="+68"/> <source>Rescanning...</source> <translation>재검색 중...</translation> </message> @@ -4009,17 +4066,17 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>로딩 완료</translation> </message> <message> - <location line="+85"/> + <location line="+86"/> <source>To use the %s option</source> <translation>%s 옵션을 사용하려면</translation> </message> <message> - <location line="-77"/> + <location line="-78"/> <source>Error</source> <translation>오류</translation> </message> <message> - <location line="-35"/> + <location line="-36"/> <source>You must set rpcpassword=<password> in the configuration file: %s If the file does not exist, create it with owner-readable-only file permissions.</source> @@ -4028,4 +4085,4 @@ If the file does not exist, create it with owner-readable-only file permissions. 파일이 없으면 소유자 읽기 전용 파일 권한으로 만들어야 합니다.</translation> </message> </context> -</TS>
\ No newline at end of file +</TS> diff --git a/src/qt/locale/bitcoin_pl.ts b/src/qt/locale/bitcoin_pl.ts index 4ea954f5e1..ba399c396a 100644 --- a/src/qt/locale/bitcoin_pl.ts +++ b/src/qt/locale/bitcoin_pl.ts @@ -36,6 +36,12 @@ This product includes software developed by the OpenSSL Project for use in the O <source>The Bitcoin Core developers</source> <translation>Deweloperzy Bitcoin Core</translation> </message> + <message> + <location line="+12"/> + <location line="+2"/> + <source> (%1-bit)</source> + <translation type="unfinished"/> + </message> </context> <context> <name>AddressBookPage</name> @@ -690,7 +696,7 @@ Adres: %4 <translation>Portfel jest <b>zaszyfrowany</b> i obecnie <b>zablokowany</b></translation> </message> <message> - <location filename="../bitcoin.cpp" line="+438"/> + <location filename="../bitcoin.cpp" line="+435"/> <source>A fatal error occurred. Bitcoin can no longer continue safely and will quit.</source> <translation>Błąd krytyczny. Bitcoin nie może kontynuować bezpiecznie więc zostanie zamknięty.</translation> </message> @@ -751,7 +757,7 @@ Adres: %4 <translation>Reszta:</translation> </message> <message> - <location line="+63"/> + <location line="+56"/> <source>(un)select all</source> <translation>Zaznacz/Odznacz wszystko</translation> </message> @@ -766,7 +772,7 @@ Adres: %4 <translation>Widok listy</translation> </message> <message> - <location line="+52"/> + <location line="+53"/> <source>Amount</source> <translation>Kwota</translation> </message> @@ -909,7 +915,7 @@ Adres: %4 <message> <location line="+11"/> <source>(%1 locked)</source> - <translation type="unfinished"/> + <translation>(%1 zablokowane)</translation> </message> <message> <location line="+31"/> @@ -917,7 +923,7 @@ Adres: %4 <translation type="unfinished"/> </message> <message> - <location line="+140"/> + <location line="+141"/> <source>Dust</source> <translation type="unfinished"/> </message> @@ -987,12 +993,12 @@ Adres: %4 <message> <location line="-9"/> <source>change from %1 (%2)</source> - <translation type="unfinished"/> + <translation>reszta z %1 (%2)</translation> </message> <message> <location line="+1"/> <source>(change)</source> - <translation type="unfinished"/> + <translation>(reszta)</translation> </message> </context> <context> @@ -1099,7 +1105,7 @@ Adres: %4 <translation type="unfinished"/> </message> <message> - <location filename="../utilitydialog.cpp" line="+38"/> + <location filename="../utilitydialog.cpp" line="+24"/> <source>Bitcoin Core</source> <translation>Rdzeń BitCoin</translation> </message> @@ -1243,7 +1249,7 @@ Adres: %4 <translation>Główne</translation> </message> <message> - <location line="+6"/> + <location line="+122"/> <source>Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB.</source> <translation>Opcjonalna prowizja za transakcje za kB, wspomaga ona szybkość przebiegu transakcji. Większość transakcji jest 1 kB.</translation> </message> @@ -1253,7 +1259,7 @@ Adres: %4 <translation>Płać prowizję za transakcje</translation> </message> <message> - <location line="+31"/> + <location line="-131"/> <source>Automatically start Bitcoin after logging in to the system.</source> <translation>Automatycznie uruchamia Bitcoin po zalogowaniu do systemu.</translation> </message> @@ -1268,12 +1274,7 @@ Adres: %4 <translation type="unfinished"/> </message> <message> - <location line="+13"/> - <source>Set database cache size in megabytes (default: 25)</source> - <translation>Ustaw rozmiar w megabajtach cache-u bazy danych (domyślnie: 25)</translation> - </message> - <message> - <location line="+13"/> + <location line="+16"/> <source>MB</source> <translation type="unfinished"/> </message> @@ -1288,7 +1289,12 @@ Adres: %4 <translation>Ustaw liczbę wątków skryptu weryfikacji (do 16, 0 = auto, <0 = zostawia taką ilość rdzenie wolnych, domyślnie: 0)</translation> </message> <message> - <location line="+58"/> + <location line="+107"/> + <source>&Spend unconfirmed change (experts only)</source> + <translation type="unfinished"/> + </message> + <message> + <location line="+37"/> <source>Connect to the Bitcoin network through a SOCKS proxy.</source> <translation type="unfinished"/> </message> @@ -1300,7 +1306,7 @@ Adres: %4 <message> <location line="+34"/> <source>IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1)</source> - <translation type="unfinished"/> + <translation>Adres IP serwera proxy (np. IPv4: 127.0.0.1 / IPv6: ::1)</translation> </message> <message> <location line="+224"/> @@ -1323,7 +1329,17 @@ Adres: %4 <translation>&Sieć</translation> </message> <message> - <location line="+6"/> + <location line="-86"/> + <source>W&allet</source> + <translation type="unfinished"/> + </message> + <message> + <location line="+52"/> + <source>If you disable the spending of unconfirmed change, the change from a transaction cannot be used until that transaction has at least one confirmation. This also affects how your balance is computed.</source> + <translation type="unfinished"/> + </message> + <message> + <location line="+40"/> <source>Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled.</source> <translation>Automatycznie otwiera port klienta Bitcoin na routerze. Ta opcja dzieła tylko jeśli twój router wspiera UPnP i jest ono włączone.</translation> </message> @@ -1438,17 +1454,17 @@ Adres: %4 <translation>&Anuluj</translation> </message> <message> - <location filename="../optionsdialog.cpp" line="+67"/> + <location filename="../optionsdialog.cpp" line="+70"/> <source>default</source> <translation>domyślny</translation> </message> <message> - <location line="+57"/> + <location line="+58"/> <source>none</source> <translation type="unfinished"/> </message> <message> - <location line="+75"/> + <location line="+78"/> <source>Confirm options reset</source> <translation>Potwierdź reset ustawień</translation> </message> @@ -1456,12 +1472,12 @@ Adres: %4 <location line="+1"/> <location line="+29"/> <source>Client restart required to activate changes.</source> - <translation type="unfinished"/> + <translation>Wymagany restart programu, aby uaktywnić zmiany.</translation> </message> <message> <location line="-29"/> <source>Client will be shutdown, do you want to proceed?</source> - <translation type="unfinished"/> + <translation>Program zostanie wyłączony. Czy chcesz kontynuować?</translation> </message> <message> <location line="+33"/> @@ -1488,19 +1504,14 @@ Adres: %4 <translation>Wyświetlana informacja może być nieaktualna. Twój portfel synchronizuje się automatycznie z siecią bitcoin, zaraz po tym jak uzyskano połączenie, ale proces ten nie został jeszcze ukończony.</translation> </message> <message> - <location line="-155"/> - <source>Unconfirmed:</source> - <translation>Niepotwierdzone:</translation> - </message> - <message> - <location line="-83"/> + <location line="-238"/> <source>Wallet</source> <translation>Portfel</translation> </message> <message> <location line="+51"/> - <source>Confirmed:</source> - <translation>Potwierdzone:</translation> + <source>Available:</source> + <translation>Dostępne:</translation> </message> <message> <location line="+16"/> @@ -1508,7 +1519,12 @@ Adres: %4 <translation>Twoje obecne saldo</translation> </message> <message> - <location line="+32"/> + <location line="+16"/> + <source>Pending:</source> + <translation type="unfinished"/> + </message> + <message> + <location line="+16"/> <source>Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance</source> <translation>Suma transakcji, które nie zostały jeszcze potwierdzone, a które nie zostały wliczone do twojego obecnego salda</translation> </message> @@ -1656,6 +1672,11 @@ Adres: %4 <source>Error: Invalid combination of -regtest and -testnet.</source> <translation>Błąd: Niepoprawna kombinacja -regtest i -testnet.</translation> </message> + <message> + <location filename="../guiutil.cpp" line="+82"/> + <source>Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)</source> + <translation>Wprowadź adres Bitcoin (np. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)</translation> + </message> </context> <context> <name>QRImageWidget</name> @@ -1677,7 +1698,7 @@ Adres: %4 <message> <location line="+0"/> <source>PNG Image (*.png)</source> - <translation type="unfinished"/> + <translation>Obraz PNG (*.png)</translation> </message> </context> <context> @@ -1715,12 +1736,12 @@ Adres: %4 <message> <location line="-10"/> <source>Debug window</source> - <translation type="unfinished"/> + <translation>Okno debugowania</translation> </message> <message> <location line="+25"/> <source>General</source> - <translation type="unfinished"/> + <translation>Ogólne</translation> </message> <message> <location line="+53"/> @@ -1876,22 +1897,22 @@ Adres: %4 <context> <name>ReceiveCoinsDialog</name> <message> - <location filename="../forms/receivecoinsdialog.ui" line="+83"/> + <location filename="../forms/receivecoinsdialog.ui" line="+107"/> <source>&Amount:</source> <translation>&Ilość:</translation> </message> <message> - <location line="-13"/> + <location line="-16"/> <source>&Label:</source> <translation>&Etykieta:</translation> </message> <message> - <location line="-34"/> + <location line="-37"/> <source>&Message:</source> <translation>&Wiadomość:</translation> </message> <message> - <location line="-17"/> + <location line="-20"/> <source>Reuse one of the previously used receiving addresses. Reusing addresses has security and privacy issues. Do not use this unless re-generating a payment request made before.</source> <translation>Użyj jeden z poprzednio użytych adresów odbiorczych. Podczas ponownego używania adresów występują problemy z bezpieczeństwem i prywatnością. Nie korzystaj z tej opcji, chyba że odtwarzasz żądanie płatności wykonane już wcześniej.</translation> </message> @@ -1901,27 +1922,30 @@ Adres: %4 <translation>U%żyj ponownie istniejący adres odbiorczy (niepolecane)</translation> </message> <message> - <location line="+27"/> - <source>An optional label to associate with the new receiving address</source> + <location line="+14"/> + <location line="+23"/> + <source>An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Bitcoin network.</source> <translation type="unfinished"/> </message> <message> - <location line="+7"/> - <source>An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Bitcoin network.</source> - <translation type="unfinished"/> + <location line="-7"/> + <location line="+21"/> + <source>An optional label to associate with the new receiving address.</source> + <translation>Opcjonalna etykieta do skojarzenia z nowym adresem odbiorczym.</translation> </message> <message> - <location line="+7"/> + <location line="-7"/> <source>Use this form to request payments. All fields are <b>optional</b>.</source> <translation type="unfinished"/> </message> <message> - <location line="+39"/> + <location line="+23"/> + <location line="+22"/> <source>An optional amount to request. Leave this empty or zero to not request a specific amount.</source> <translation type="unfinished"/> </message> <message> - <location line="+17"/> + <location line="+32"/> <source>Clear all fields of the form.</source> <translation>Wyczyść pola formularza</translation> </message> @@ -1931,34 +1955,49 @@ Adres: %4 <translation>Wyczyść</translation> </message> <message> - <location line="+36"/> - <source>&Request payment</source> - <translation>&Żądaj płatności</translation> + <location line="+78"/> + <source>Requested payments history</source> + <translation type="unfinished"/> </message> <message> - <location line="+47"/> - <source>Requested payments</source> - <translation type="unfinished"/> + <location line="-98"/> + <source>&Request payment</source> + <translation>&Żądaj płatności</translation> </message> <message> - <location line="+16"/> + <location line="+120"/> <source>Show the selected request (does the same as double clicking an entry)</source> <translation type="unfinished"/> </message> <message> <location line="+3"/> <source>Show</source> - <translation type="unfinished"/> + <translation>Pokaż</translation> </message> <message> <location line="+11"/> <source>Remove the selected entries from the list</source> - <translation type="unfinished"/> + <translation>Usuń zaznaczone z listy</translation> </message> <message> <location line="+3"/> <source>Remove</source> - <translation type="unfinished"/> + <translation>Usuń</translation> + </message> + <message> + <location filename="../receivecoinsdialog.cpp" line="+38"/> + <source>Copy label</source> + <translation>Kopiuj etykietę</translation> + </message> + <message> + <location line="+1"/> + <source>Copy message</source> + <translation>Kopiuj wiadomość</translation> + </message> + <message> + <location line="+1"/> + <source>Copy amount</source> + <translation>Kopiuj kwotę</translation> </message> </context> <context> @@ -2061,12 +2100,17 @@ Adres: %4 <source>(no message)</source> <translation type="unfinished"/> </message> + <message> + <location line="+8"/> + <source>(no amount)</source> + <translation>(brak kwoty)</translation> + </message> </context> <context> <name>SendCoinsDialog</name> <message> <location filename="../forms/sendcoinsdialog.ui" line="+14"/> - <location filename="../sendcoinsdialog.cpp" line="+381"/> + <location filename="../sendcoinsdialog.cpp" line="+380"/> <location line="+80"/> <source>Send Coins</source> <translation>Wyślij Monety</translation> @@ -2142,7 +2186,7 @@ Adres: %4 <translation type="unfinished"/> </message> <message> - <location line="+115"/> + <location line="+164"/> <source>Send to multiple recipients at once</source> <translation>Wyślij do wielu odbiorców na raz</translation> </message> @@ -2152,7 +2196,7 @@ Adres: %4 <translation>Dodaj Odbio&rce</translation> </message> <message> - <location line="+20"/> + <location line="-23"/> <source>Clear all fields of the form.</source> <translation>Wyczyść wszystkie pola formularza</translation> </message> @@ -2162,12 +2206,12 @@ Adres: %4 <translation>Wyczyść &wszystko</translation> </message> <message> - <location line="+22"/> + <location line="+52"/> <source>Balance:</source> <translation>Saldo:</translation> </message> <message> - <location line="+41"/> + <location line="-78"/> <source>Confirm the send action</source> <translation>Potwierdź akcję wysyłania</translation> </message> @@ -2177,7 +2221,7 @@ Adres: %4 <translation>Wy&syłka</translation> </message> <message> - <location filename="../sendcoinsdialog.cpp" line="-228"/> + <location filename="../sendcoinsdialog.cpp" line="-229"/> <source>Confirm send coins</source> <translation>Potwierdź wysyłanie monet</translation> </message> @@ -2190,12 +2234,7 @@ Adres: %4 <translation>%1 do %2</translation> </message> <message> - <location line="-136"/> - <source>Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)</source> - <translation>Wprowadź adres Bitcoin (np. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)</translation> - </message> - <message> - <location line="+15"/> + <location line="-121"/> <source>Copy quantity</source> <translation>Skopiuj ilość</translation> </message> @@ -2245,7 +2284,7 @@ Adres: %4 <translation>lub</translation> </message> <message> - <location line="+202"/> + <location line="+203"/> <source>The recipient address is not valid, please recheck.</source> <translation>Adres odbiorcy jest nieprawidłowy, proszę poprawić</translation> </message> @@ -2272,7 +2311,7 @@ Adres: %4 <message> <location line="+3"/> <source>Transaction creation failed!</source> - <translation type="unfinished"/> + <translation>Utworzenie transakcji nie powiodło się!</translation> </message> <message> <location line="+4"/> @@ -2280,12 +2319,12 @@ Adres: %4 <translation type="unfinished"/> </message> <message> - <location line="+112"/> + <location line="+113"/> <source>Warning: Invalid Bitcoin address</source> <translation>Ostrzeżenie: nieprawidłowy adres Bitcoin</translation> </message> <message> - <location line="+21"/> + <location line="+20"/> <source>(no label)</source> <translation>(bez etykiety)</translation> </message> @@ -2295,7 +2334,7 @@ Adres: %4 <translation>Ostrzeżenie: Nieznany adres</translation> </message> <message> - <location line="-366"/> + <location line="-367"/> <source>Are you sure you want to send?</source> <translation>Czy na pewno chcesz wysłać?</translation> </message> @@ -2305,7 +2344,7 @@ Adres: %4 <translation>dodano jako opłata transakcyjna</translation> </message> <message> - <location line="+170"/> + <location line="+171"/> <source>Payment request expired</source> <translation>Zażądanie płatności upłynęło</translation> </message> @@ -2382,12 +2421,7 @@ Adres: %4 <translation>Wiadomość:</translation> </message> <message> - <location line="+10"/> - <source>A message that was attached to the Bitcoin URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network.</source> - <translation type="unfinished"/> - </message> - <message> - <location line="+958"/> + <location line="+968"/> <source>This is a verified payment request.</source> <translation>Zweryfikowano żądanie zapłaty.</translation> </message> @@ -2397,7 +2431,12 @@ Adres: %4 <translation>Wprowadź etykietę dla tego adresu by dodać go do listy użytych adresów</translation> </message> <message> - <location line="+459"/> + <location line="+33"/> + <source>A message that was attached to the bitcoin: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network.</source> + <translation type="unfinished"/> + </message> + <message> + <location line="+426"/> <source>This is an unverified payment request.</source> <translation>To żądanie zapłaty nie zostało zweryfikowane.</translation> </message> @@ -2413,11 +2452,6 @@ Adres: %4 <source>Memo:</source> <translation>Notatka:</translation> </message> - <message> - <location filename="../sendcoinsentry.cpp" line="+1"/> - <source>Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)</source> - <translation>Wprowadź adres Bitcoin (np. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)</translation> - </message> </context> <context> <name>ShutdownWindow</name> @@ -2429,7 +2463,7 @@ Adres: %4 <message> <location line="+1"/> <source>Do not shut down the computer until this window disappears.</source> - <translation type="unfinished"/> + <translation>Nie wyłączaj komputera dopóki to okno nie zniknie.</translation> </message> </context> <context> @@ -2455,19 +2489,19 @@ Adres: %4 <translation>Wprowadź adres Bitcoin (np. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)</translation> </message> <message> - <location line="+10"/> - <location line="+213"/> + <location line="+7"/> + <location line="+210"/> <source>Choose previously used address</source> <translation>Wybierz wcześniej użyty adres</translation> </message> <message> - <location line="-203"/> - <location line="+213"/> + <location line="-200"/> + <location line="+210"/> <source>Alt+A</source> <translation>Alt+A</translation> </message> <message> - <location line="-203"/> + <location line="-200"/> <source>Paste address from clipboard</source> <translation>Wklej adres ze schowka</translation> </message> @@ -2508,12 +2542,12 @@ Adres: %4 </message> <message> <location line="+3"/> - <location line="+146"/> + <location line="+143"/> <source>Clear &All</source> <translation>Wyczyść &wszystko</translation> </message> <message> - <location line="-87"/> + <location line="-84"/> <source>&Verify Message</source> <translation>&Zweryfikuj wiadomość</translation> </message> @@ -2528,7 +2562,7 @@ Adres: %4 <translation>Wprowadź adres Bitcoin (np. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)</translation> </message> <message> - <location line="+40"/> + <location line="+37"/> <source>Verify the message to ensure it was signed with the specified Bitcoin address</source> <translation>Zweryfikuj wiadomość, aby upewnić się, że została podpisana odpowiednim adresem Bitcoin.</translation> </message> @@ -2543,43 +2577,37 @@ Adres: %4 <translation>Resetuje wszystkie pola weryfikacji wiadomości</translation> </message> <message> - <location filename="../signverifymessagedialog.cpp" line="+29"/> - <location line="+3"/> + <location filename="../signverifymessagedialog.cpp" line="+30"/> <source>Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)</source> <translation>Wprowadź adres Bitcoin (np. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)</translation> </message> <message> - <location line="-2"/> + <location line="-1"/> <source>Click "Sign Message" to generate signature</source> <translation>Kliknij "Podpisz Wiadomość" żeby uzyskać podpis</translation> </message> <message> - <location line="+3"/> - <source>Enter Bitcoin signature</source> - <translation>Wprowadź podpis Bitcoin</translation> - </message> - <message> <location line="+84"/> - <location line="+81"/> + <location line="+80"/> <source>The entered address is invalid.</source> <translation>Podany adres jest nieprawidłowy.</translation> </message> <message> - <location line="-81"/> + <location line="-80"/> <location line="+8"/> - <location line="+73"/> + <location line="+72"/> <location line="+8"/> <source>Please check the address and try again.</source> <translation>Proszę sprawdzić adres i spróbować ponownie.</translation> </message> <message> - <location line="-81"/> - <location line="+81"/> + <location line="-80"/> + <location line="+80"/> <source>The entered address does not refer to a key.</source> <translation>Wprowadzony adres nie odnosi się do klucza.</translation> </message> <message> - <location line="-73"/> + <location line="-72"/> <source>Wallet unlock was cancelled.</source> <translation>Odblokowanie portfela zostało anulowane.</translation> </message> @@ -2599,7 +2627,7 @@ Adres: %4 <translation>Wiadomość podpisana.</translation> </message> <message> - <location line="+59"/> + <location line="+58"/> <source>The signature could not be decoded.</source> <translation>Podpis nie może zostać zdekodowany.</translation> </message> @@ -2660,6 +2688,11 @@ Adres: %4 </message> <message> <location line="+6"/> + <source>conflicted</source> + <translation type="unfinished"/> + </message> + <message> + <location line="+2"/> <source>%1/offline</source> <translation>%1/offline</translation> </message> @@ -2821,12 +2854,12 @@ Adres: %4 <translation>, nie został jeszcze pomyślnie wyemitowany</translation> </message> <message numerus="yes"> - <location line="-35"/> + <location line="-37"/> <source>Open for %n more block(s)</source> <translation><numerusform>Otwórz dla %n bloku</numerusform><numerusform>Otwórz dla %n następnych bloków</numerusform><numerusform>Otwórz dla %n następnych bloków</numerusform></translation> </message> <message> - <location line="+70"/> + <location line="+72"/> <source>unknown</source> <translation>nieznany</translation> </message> @@ -2867,12 +2900,12 @@ Adres: %4 <translation>Kwota</translation> </message> <message> - <location line="+59"/> + <location line="+78"/> <source>Immature (%1 confirmations, will be available after %2)</source> <translation type="unfinished"/> </message> <message numerus="yes"> - <location line="+16"/> + <location line="-21"/> <source>Open for %n more block(s)</source> <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform>Otwórz dla %n następnych bloków</numerusform></translation> </message> @@ -2882,23 +2915,12 @@ Adres: %4 <translation>Otwórz do %1</translation> </message> <message> - <location line="+3"/> - <source>Offline (%1 confirmations)</source> - <translation>Offline (%1 potwierdzeń)</translation> - </message> - <message> - <location line="+3"/> - <source>Unconfirmed (%1 of %2 confirmations)</source> - <translation>Niezatwierdzony (%1 z %2 potwierdzeń)</translation> - </message> - <message> - <location line="-22"/> - <location line="+25"/> + <location line="+12"/> <source>Confirmed (%1 confirmations)</source> <translation>Zatwierdzony (%1 potwierdzeń)</translation> </message> <message> - <location line="-22"/> + <location line="+9"/> <source>This block was not received by any other nodes and will probably not be accepted!</source> <translation>Ten blok nie został odebrany przez jakikolwiek inny węzeł i prawdopodobnie nie zostanie zaakceptowany!</translation> </message> @@ -2908,7 +2930,27 @@ Adres: %4 <translation>Wygenerowano ale nie zaakceptowano</translation> </message> <message> - <location line="+62"/> + <location line="-21"/> + <source>Offline</source> + <translation type="unfinished"/> + </message> + <message> + <location line="+3"/> + <source>Unconfirmed</source> + <translation>Niepotwierdzone:</translation> + </message> + <message> + <location line="+3"/> + <source>Confirming (%1 of %2 recommended confirmations)</source> + <translation>Potwierdzanie (%1 z %2 rekomendowanych potwierdzeń)</translation> + </message> + <message> + <location line="+6"/> + <source>Conflicted</source> + <translation type="unfinished"/> + </message> + <message> + <location line="+51"/> <source>Received with</source> <translation>Otrzymane przez</translation> </message> @@ -2938,7 +2980,7 @@ Adres: %4 <translation>(brak)</translation> </message> <message> - <location line="+199"/> + <location line="+190"/> <source>Transaction status. Hover over this field to show number of confirmations.</source> <translation>Status transakcji. Najedź na pole, aby zobaczyć liczbę potwierdzeń.</translation> </message> @@ -3204,12 +3246,12 @@ Adres: %4 <context> <name>bitcoin-core</name> <message> - <location filename="../bitcoinstrings.cpp" line="+221"/> + <location filename="../bitcoinstrings.cpp" line="+223"/> <source>Usage:</source> <translation>Użycie:</translation> </message> <message> - <location line="-54"/> + <location line="-55"/> <source>List commands</source> <translation>Lista poleceń</translation> </message> @@ -3264,12 +3306,12 @@ Adres: %4 <translation>Podaj swój publiczny adres</translation> </message> <message> - <location line="+5"/> + <location line="+6"/> <source>Threshold for disconnecting misbehaving peers (default: 100)</source> <translation>Próg po którym nastąpi rozłączenie nietrzymających się zasad peerów (domyślnie: 100)</translation> </message> <message> - <location line="-148"/> + <location line="-150"/> <source>Number of seconds to keep misbehaving peers from reconnecting (default: 86400)</source> <translation>Czas w sekundach, przez jaki nietrzymający się zasad peerzy nie będą mogli ponownie się podłączyć (domyślnie: 86400)</translation> </message> @@ -3289,17 +3331,17 @@ Adres: %4 <translation>Akceptuj linię poleceń oraz polecenia JSON-RPC</translation> </message> <message> - <location line="+80"/> + <location line="+81"/> <source>Run in the background as a daemon and accept commands</source> <translation>Uruchom w tle jako daemon i przyjmuj polecenia</translation> </message> <message> - <location line="+39"/> + <location line="+40"/> <source>Use the test network</source> <translation>Użyj sieci testowej</translation> </message> <message> - <location line="-118"/> + <location line="-120"/> <source>Accept connections from outside (default: 1 if no -proxy or -connect)</source> <translation>Akceptuj połączenia z zewnątrz (domyślnie: 1 jeśli nie ustawiono -proxy lub -connect)</translation> </message> @@ -3439,6 +3481,11 @@ na przykład: alertnotify=echo %%s | mail -s "Alarm Bitcoin" admin@foo </message> <message> <location line="+5"/> + <source>Clear list of wallet transactions (diagnostic tool; implies -rescan)</source> + <translation>Wyczyść listę transakcji portfela (narzędzie diagnostyczne; implikuje -rescan)</translation> + </message> + <message> + <location line="+1"/> <source>Connect only to the specified node(s)</source> <translation>Łącz tylko do wskazanego węzła</translation> </message> @@ -3465,7 +3512,7 @@ na przykład: alertnotify=echo %%s | mail -s "Alarm Bitcoin" admin@foo <message> <location line="+1"/> <source>Do not load the wallet and disable wallet RPC calls</source> - <translation type="unfinished"/> + <translation>Nie ładuj portfela i wyłącz odwołania RPC</translation> </message> <message> <location line="+1"/> @@ -3635,7 +3682,7 @@ na przykład: alertnotify=echo %%s | mail -s "Alarm Bitcoin" admin@foo <message> <location line="+7"/> <source>Set maximum block size in bytes (default: %d)</source> - <translation type="unfinished"/> + <translation>Ustaw maksymalną wielkość bloku w bajtach (domyślnie: %d)</translation> </message> <message> <location line="+2"/> @@ -3649,6 +3696,11 @@ na przykład: alertnotify=echo %%s | mail -s "Alarm Bitcoin" admin@foo </message> <message> <location line="+2"/> + <source>Spend unconfirmed change when sending transactions (default: 1)</source> + <translation>Wydawaj niepotwierdzoną resztę podczas wysyłania transakcji (domyślnie: 1)</translation> + </message> + <message> + <location line="+1"/> <source>Start Bitcoin server</source> <translation>Startowanie serwera Bitcoin</translation> </message> @@ -3685,7 +3737,7 @@ na przykład: alertnotify=echo %%s | mail -s "Alarm Bitcoin" admin@foo <message> <location line="+2"/> <source>Wallet options:</source> - <translation type="unfinished"/> + <translation>Opcje portfela:</translation> </message> <message> <location line="+2"/> @@ -3698,12 +3750,12 @@ na przykład: alertnotify=echo %%s | mail -s "Alarm Bitcoin" admin@foo <translation>Musisz przebudować bazę używając parametru -reindex aby zmienić -txindex</translation> </message> <message> - <location line="-79"/> + <location line="-80"/> <source>Imports blocks from external blk000??.dat file</source> <translation>Importuj bloki z zewnętrznego pliku blk000??.dat</translation> </message> <message> - <location line="-105"/> + <location line="-106"/> <source>Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message)</source> <translation>Uruchom polecenie przy otrzymaniu odpowiedniego powiadomienia lub gdy zobaczymy naprawdę długie rozgałęzienie (%s w poleceniu jest podstawiane za komunikat)</translation> </message> @@ -3723,7 +3775,7 @@ na przykład: alertnotify=echo %%s | mail -s "Alarm Bitcoin" admin@foo <translation>Ustaw liczbę wątków skryptu weryfikacji (do 16, 0 = auto, <0 = zostawia taką ilość rdzenie wolnych, domyślnie: 0)</translation> </message> <message> - <location line="+89"/> + <location line="+90"/> <source>Information</source> <translation>Informacja</translation> </message> @@ -3793,7 +3845,7 @@ na przykład: alertnotify=echo %%s | mail -s "Alarm Bitcoin" admin@foo <translation>Wskaż czas oczekiwania bezczynności połączenia w milisekundach (domyślnie: 5000)</translation> </message> <message> - <location line="+6"/> + <location line="+7"/> <source>System error: </source> <translation>Błąd systemu:</translation> </message> @@ -3839,6 +3891,11 @@ na przykład: alertnotify=echo %%s | mail -s "Alarm Bitcoin" admin@foo </message> <message> <location line="+2"/> + <source>Zapping all transactions from wallet...</source> + <translation type="unfinished"/> + </message> + <message> + <location line="+1"/> <source>version</source> <translation>wersja</translation> </message> @@ -3848,32 +3905,32 @@ na przykład: alertnotify=echo %%s | mail -s "Alarm Bitcoin" admin@foo <translation>wallet.dat uszkodzony, odtworzenie się nie powiodło</translation> </message> <message> - <location line="-58"/> + <location line="-60"/> <source>Password for JSON-RPC connections</source> <translation>Hasło do połączeń JSON-RPC</translation> </message> <message> - <location line="-70"/> + <location line="-71"/> <source>Allow JSON-RPC connections from specified IP address</source> <translation>Przyjmuj połączenia JSON-RPC ze wskazanego adresu IP</translation> </message> <message> - <location line="+80"/> + <location line="+81"/> <source>Send commands to node running on <ip> (default: 127.0.0.1)</source> <translation>Wysyłaj polecenia do węzła działającego na <ip> (domyślnie: 127.0.0.1)</translation> </message> <message> - <location line="-132"/> + <location line="-133"/> <source>Execute command when the best block changes (%s in cmd is replaced by block hash)</source> <translation>Wykonaj polecenie kiedy najlepszy blok ulegnie zmianie (%s w komendzie zastanie zastąpione przez hash bloku)</translation> </message> <message> - <location line="+161"/> + <location line="+163"/> <source>Upgrade wallet to latest format</source> <translation>Zaktualizuj portfel do najnowszego formatu.</translation> </message> <message> - <location line="-24"/> + <location line="-25"/> <source>Set key pool size to <n> (default: 100)</source> <translation>Ustaw rozmiar puli kluczy na <n> (domyślnie: 100)</translation> </message> @@ -3883,12 +3940,12 @@ na przykład: alertnotify=echo %%s | mail -s "Alarm Bitcoin" admin@foo <translation>Przeskanuj blok łańcuchów żeby znaleźć zaginione transakcje portfela</translation> </message> <message> - <location line="+38"/> + <location line="+39"/> <source>Use OpenSSL (https) for JSON-RPC connections</source> <translation>Użyj OpenSSL (https) do połączeń JSON-RPC</translation> </message> <message> - <location line="-30"/> + <location line="-31"/> <source>Server certificate file (default: server.cert)</source> <translation>Plik certyfikatu serwera (domyślnie: server.cert)</translation> </message> @@ -3898,7 +3955,7 @@ na przykład: alertnotify=echo %%s | mail -s "Alarm Bitcoin" admin@foo <translation>Klucz prywatny serwera (domyślnie: server.pem)</translation> </message> <message> - <location line="+16"/> + <location line="+17"/> <source>This help message</source> <translation>Ta wiadomość pomocy</translation> </message> @@ -3908,12 +3965,12 @@ na przykład: alertnotify=echo %%s | mail -s "Alarm Bitcoin" admin@foo <translation>Nie można przywiązać %s na tym komputerze (bind returned error %d, %s)</translation> </message> <message> - <location line="-107"/> + <location line="-109"/> <source>Allow DNS lookups for -addnode, -seednode and -connect</source> <translation>Zezwól -addnode, -seednode i -connect na łączenie się z serwerem DNS</translation> </message> <message> - <location line="+60"/> + <location line="+61"/> <source>Loading addresses...</source> <translation>Wczytywanie adresów...</translation> </message> @@ -3928,12 +3985,12 @@ na przykład: alertnotify=echo %%s | mail -s "Alarm Bitcoin" admin@foo <translation>Błąd ładowania wallet.dat: Portfel wymaga nowszej wersji Bitcoin</translation> </message> <message> - <location line="+98"/> + <location line="+99"/> <source>Wallet needed to be rewritten: restart Bitcoin to complete</source> <translation>Portfel wymaga przepisania: zrestartuj Bitcoina żeby ukończyć</translation> </message> <message> - <location line="-100"/> + <location line="-101"/> <source>Error loading wallet.dat</source> <translation>Błąd ładowania wallet.dat</translation> </message> @@ -3943,7 +4000,7 @@ na przykład: alertnotify=echo %%s | mail -s "Alarm Bitcoin" admin@foo <translation>Nieprawidłowy adres -proxy: '%s'</translation> </message> <message> - <location line="+56"/> + <location line="+57"/> <source>Unknown network specified in -onlynet: '%s'</source> <translation>Nieznana sieć w -onlynet: '%s'</translation> </message> @@ -3953,7 +4010,7 @@ na przykład: alertnotify=echo %%s | mail -s "Alarm Bitcoin" admin@foo <translation>Nieznana wersja proxy w -socks: %i</translation> </message> <message> - <location line="-101"/> + <location line="-103"/> <source>Cannot resolve -bind address: '%s'</source> <translation>Nie można uzyskać adresu -bind: '%s'</translation> </message> @@ -3963,7 +4020,7 @@ na przykład: alertnotify=echo %%s | mail -s "Alarm Bitcoin" admin@foo <translation>Nie można uzyskać adresu -externalip: '%s'</translation> </message> <message> - <location line="+48"/> + <location line="+49"/> <source>Invalid amount for -paytxfee=<amount>: '%s'</source> <translation>Nieprawidłowa kwota dla -paytxfee=<amount>: '%s'</translation> </message> @@ -3983,7 +4040,7 @@ na przykład: alertnotify=echo %%s | mail -s "Alarm Bitcoin" admin@foo <translation>Ładowanie indeksu bloku...</translation> </message> <message> - <location line="-62"/> + <location line="-63"/> <source>Add a node to connect to and attempt to keep the connection open</source> <translation>Dodaj węzeł do łączenia się and attempt to keep the connection open</translation> </message> @@ -3993,12 +4050,12 @@ na przykład: alertnotify=echo %%s | mail -s "Alarm Bitcoin" admin@foo <translation>Nie można przywiązać %s na tym komputerze. Bitcoin prawdopodobnie już działa.</translation> </message> <message> - <location line="+95"/> + <location line="+96"/> <source>Loading wallet...</source> <translation>Wczytywanie portfela...</translation> </message> <message> - <location line="-56"/> + <location line="-57"/> <source>Cannot downgrade wallet</source> <translation>Nie można dezaktualizować portfela</translation> </message> @@ -4008,7 +4065,7 @@ na przykład: alertnotify=echo %%s | mail -s "Alarm Bitcoin" admin@foo <translation>Nie można zapisać domyślnego adresu</translation> </message> <message> - <location line="+67"/> + <location line="+68"/> <source>Rescanning...</source> <translation>Ponowne skanowanie...</translation> </message> @@ -4018,17 +4075,17 @@ na przykład: alertnotify=echo %%s | mail -s "Alarm Bitcoin" admin@foo <translation>Wczytywanie zakończone</translation> </message> <message> - <location line="+85"/> + <location line="+86"/> <source>To use the %s option</source> <translation>Aby użyć opcji %s</translation> </message> <message> - <location line="-77"/> + <location line="-78"/> <source>Error</source> <translation>Błąd</translation> </message> <message> - <location line="-35"/> + <location line="-36"/> <source>You must set rpcpassword=<password> in the configuration file: %s If the file does not exist, create it with owner-readable-only file permissions.</source> diff --git a/src/qt/locale/bitcoin_ro_RO.ts b/src/qt/locale/bitcoin_ro_RO.ts index 7db0510183..22e0477ebe 100644 --- a/src/qt/locale/bitcoin_ro_RO.ts +++ b/src/qt/locale/bitcoin_ro_RO.ts @@ -34,6 +34,12 @@ Acest produs include programe dezvoltate de către OpenSSL Project pentru a fi f <message> <location line="+0"/> <source>The Bitcoin Core developers</source> + <translation>Dezvoltatorii Bitcoin Core</translation> + </message> + <message> + <location line="+12"/> + <location line="+2"/> + <source> (%1-bit)</source> <translation type="unfinished"/> </message> </context> @@ -157,7 +163,7 @@ Acest produs include programe dezvoltate de către OpenSSL Project pentru a fi f <message> <location line="+1"/> <source>There was an error trying to save the address list to %1.</source> - <translation type="unfinished"/> + <translation>A apărut o eroare încercând să se salveze lista de adrese la %1.</translation> </message> </context> <context> @@ -339,7 +345,7 @@ Acest produs include programe dezvoltate de către OpenSSL Project pentru a fi f <message> <location line="-137"/> <source>Node</source> - <translation type="unfinished"/> + <translation>Nod</translation> </message> <message> <location line="+138"/> @@ -415,7 +421,7 @@ Acest produs include programe dezvoltate de către OpenSSL Project pentru a fi f <message> <location line="+3"/> <source>Open &URI...</source> - <translation type="unfinished"/> + <translation>Vizitaţi &URI...</translation> </message> <message> <location line="+325"/> @@ -690,7 +696,7 @@ Adresa: %4 <translation>Portofelul este <b>criptat</b> iar în momentul de față este <b>blocat</b></translation> </message> <message> - <location filename="../bitcoin.cpp" line="+438"/> + <location filename="../bitcoin.cpp" line="+435"/> <source>A fatal error occurred. Bitcoin can no longer continue safely and will quit.</source> <translation>A survenit o eroare fatala. Bitcoin nu mai poate continua in siguranta si se va opri.</translation> </message> @@ -751,7 +757,7 @@ Adresa: %4 <translation>Schimb:</translation> </message> <message> - <location line="+63"/> + <location line="+56"/> <source>(un)select all</source> <translation>(de)selectaţi tot</translation> </message> @@ -766,7 +772,7 @@ Adresa: %4 <translation>Modul lista</translation> </message> <message> - <location line="+52"/> + <location line="+53"/> <source>Amount</source> <translation>Sumă</translation> </message> @@ -917,7 +923,7 @@ Adresa: %4 <translation type="unfinished"/> </message> <message> - <location line="+140"/> + <location line="+141"/> <source>Dust</source> <translation>Praf</translation> </message> @@ -1096,10 +1102,10 @@ Adresa: %4 <message> <location filename="../forms/helpmessagedialog.ui" line="+19"/> <source>Bitcoin Core - Command-line options</source> - <translation type="unfinished"/> + <translation>Bitcoin Core - Opţiuni Linie de comandă</translation> </message> <message> - <location filename="../utilitydialog.cpp" line="+38"/> + <location filename="../utilitydialog.cpp" line="+24"/> <source>Bitcoin Core</source> <translation>Bitcoin Core</translation> </message> @@ -1243,7 +1249,7 @@ Adresa: %4 <translation>&Principal</translation> </message> <message> - <location line="+6"/> + <location line="+122"/> <source>Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB.</source> <translation>Taxa optionala de tranzactie per kB care ajuta ca tranzactiile dumneavoastra sa fie procesate rapid. Majoritatea tranzactiilor sunt 1 kB.</translation> </message> @@ -1253,7 +1259,7 @@ Adresa: %4 <translation>Plăteşte comision pentru tranzacţie &f</translation> </message> <message> - <location line="+31"/> + <location line="-131"/> <source>Automatically start Bitcoin after logging in to the system.</source> <translation>Porneşte automat programul Bitcoin la pornirea computerului.</translation> </message> @@ -1268,12 +1274,7 @@ Adresa: %4 <translation type="unfinished"/> </message> <message> - <location line="+13"/> - <source>Set database cache size in megabytes (default: 25)</source> - <translation>Setează mărimea cache a bazei de date în megabiți (implicit: 25)</translation> - </message> - <message> - <location line="+13"/> + <location line="+16"/> <source>MB</source> <translation type="unfinished"/> </message> @@ -1288,7 +1289,12 @@ Adresa: %4 <translation type="unfinished"/> </message> <message> - <location line="+58"/> + <location line="+107"/> + <source>&Spend unconfirmed change (experts only)</source> + <translation type="unfinished"/> + </message> + <message> + <location line="+37"/> <source>Connect to the Bitcoin network through a SOCKS proxy.</source> <translation type="unfinished"/> </message> @@ -1323,7 +1329,17 @@ Adresa: %4 <translation>&Retea</translation> </message> <message> - <location line="+6"/> + <location line="-86"/> + <source>W&allet</source> + <translation type="unfinished"/> + </message> + <message> + <location line="+52"/> + <source>If you disable the spending of unconfirmed change, the change from a transaction cannot be used until that transaction has at least one confirmation. This also affects how your balance is computed.</source> + <translation type="unfinished"/> + </message> + <message> + <location line="+40"/> <source>Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled.</source> <translation>Deschide automat în router portul aferent clientului Bitcoin. Funcţionează doar în cazul în care routerul e compatibil UPnP şi opţiunea e activată.</translation> </message> @@ -1438,17 +1454,17 @@ Adresa: %4 <translation>& Renunta</translation> </message> <message> - <location filename="../optionsdialog.cpp" line="+67"/> + <location filename="../optionsdialog.cpp" line="+70"/> <source>default</source> <translation>Initial</translation> </message> <message> - <location line="+57"/> + <location line="+58"/> <source>none</source> <translation type="unfinished"/> </message> <message> - <location line="+75"/> + <location line="+78"/> <source>Confirm options reset</source> <translation>Confirmă resetarea opțiunilor</translation> </message> @@ -1456,17 +1472,17 @@ Adresa: %4 <location line="+1"/> <location line="+29"/> <source>Client restart required to activate changes.</source> - <translation type="unfinished"/> + <translation>Este necesar un restart al clientului pentru a activa schimbările.</translation> </message> <message> <location line="-29"/> <source>Client will be shutdown, do you want to proceed?</source> - <translation type="unfinished"/> + <translation>Clientul va fi închis, doriţi să continuaţi?</translation> </message> <message> <location line="+33"/> <source>This change would require a client restart.</source> - <translation type="unfinished"/> + <translation>Această schimbare va necesita un restart al clientului.</translation> </message> <message> <location line="+34"/> @@ -1488,19 +1504,14 @@ Adresa: %4 <translation>Informațiile afișate pot neactualizate. Portofelul tău se sincronizează automat cu rețeaua Bitcoin după ce o conexiune este stabilită, dar acest proces nu a fost finalizat încă.</translation> </message> <message> - <location line="-155"/> - <source>Unconfirmed:</source> - <translation>Neconfirmat:</translation> - </message> - <message> - <location line="-83"/> + <location line="-238"/> <source>Wallet</source> <translation>Portofel</translation> </message> <message> <location line="+51"/> - <source>Confirmed:</source> - <translation>Confirmat:</translation> + <source>Available:</source> + <translation>Disponibil:</translation> </message> <message> <location line="+16"/> @@ -1508,7 +1519,12 @@ Adresa: %4 <translation>Balanța ta curentă de cheltuieli</translation> </message> <message> - <location line="+32"/> + <location line="+16"/> + <source>Pending:</source> + <translation>În aşteptare:</translation> + </message> + <message> + <location line="+16"/> <source>Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance</source> <translation>Totalul tranzacțiilor care nu sunt confirmate încă și care nu sunt încă adunate la balanța de cheltuieli</translation> </message> @@ -1725,7 +1741,7 @@ Adresa: %4 <message> <location line="+25"/> <source>General</source> - <translation type="unfinished"/> + <translation>General</translation> </message> <message> <location line="+53"/> @@ -1920,7 +1936,7 @@ Adresa: %4 <message> <location line="-7"/> <source>Use this form to request payments. All fields are <b>optional</b>.</source> - <translation type="unfinished"/> + <translation>Folosește acest formular pentru a solicita plăți. Toate câmpurile sunt <b>opționale</b>.</translation> </message> <message> <location line="+23"/> @@ -1976,7 +1992,7 @@ Adresa: %4 <message> <location line="+1"/> <source>Copy message</source> - <translation type="unfinished"/> + <translation>Copiaţi mesajul</translation> </message> <message> <location line="+1"/> @@ -2375,7 +2391,7 @@ Adresa: %4 <message> <location line="-40"/> <source>This is a normal payment.</source> - <translation type="unfinished"/> + <translation>Aceasta este o tranzacţie normală.</translation> </message> <message> <location line="+50"/> @@ -2442,12 +2458,12 @@ Adresa: %4 <message> <location filename="../utilitydialog.cpp" line="+48"/> <source>Bitcoin Core is shutting down...</source> - <translation type="unfinished"/> + <translation>Bitcoin Core se închide...</translation> </message> <message> <location line="+1"/> <source>Do not shut down the computer until this window disappears.</source> - <translation type="unfinished"/> + <translation>Nu închide calculatorul până ce această fereastră nu dispare.</translation> </message> </context> <context> @@ -2647,7 +2663,7 @@ Adresa: %4 <message> <location line="+2"/> <source>The Bitcoin Core developers</source> - <translation type="unfinished"/> + <translation>Dezvoltatorii Bitcoin Core</translation> </message> <message> <location line="+1"/> @@ -2672,6 +2688,11 @@ Adresa: %4 </message> <message> <location line="+6"/> + <source>conflicted</source> + <translation type="unfinished"/> + </message> + <message> + <location line="+2"/> <source>%1/offline</source> <translation>%1/deconectat</translation> </message> @@ -2833,12 +2854,12 @@ Adresa: %4 <translation>, nu s-a propagat încă</translation> </message> <message numerus="yes"> - <location line="-35"/> + <location line="-37"/> <source>Open for %n more block(s)</source> <translation><numerusform>Deschis pentru încă %1 bloc</numerusform><numerusform>Deschis pentru încă %1 blocuri</numerusform><numerusform>Deschis pentru încă %1 de blocuri</numerusform></translation> </message> <message> - <location line="+70"/> + <location line="+72"/> <source>unknown</source> <translation>necunoscut</translation> </message> @@ -2879,12 +2900,12 @@ Adresa: %4 <translation>Cantitate</translation> </message> <message> - <location line="+59"/> + <location line="+78"/> <source>Immature (%1 confirmations, will be available after %2)</source> <translation type="unfinished"/> </message> <message numerus="yes"> - <location line="+16"/> + <location line="-21"/> <source>Open for %n more block(s)</source> <translation><numerusform>Deschis pentru încă %1 bloc</numerusform><numerusform>Deschis pentru încă %1 blocuri</numerusform><numerusform>Deschis pentru încă %1 de blocuri</numerusform></translation> </message> @@ -2894,23 +2915,12 @@ Adresa: %4 <translation>Deschis până la %1</translation> </message> <message> - <location line="+3"/> - <source>Offline (%1 confirmations)</source> - <translation>Neconectat (%1 confirmări)</translation> - </message> - <message> - <location line="+3"/> - <source>Unconfirmed (%1 of %2 confirmations)</source> - <translation>Neconfirmat (%1 din %2 confirmări)</translation> - </message> - <message> - <location line="-22"/> - <location line="+25"/> + <location line="+12"/> <source>Confirmed (%1 confirmations)</source> <translation>Confirmat (%1 confirmări)</translation> </message> <message> - <location line="-22"/> + <location line="+9"/> <source>This block was not received by any other nodes and will probably not be accepted!</source> <translation>Acest bloc nu a fost recepționat de niciun alt nod și probabil nu va fi acceptat!</translation> </message> @@ -2920,7 +2930,27 @@ Adresa: %4 <translation>Generat dar neacceptat</translation> </message> <message> - <location line="+62"/> + <location line="-21"/> + <source>Offline</source> + <translation>Deconectat</translation> + </message> + <message> + <location line="+3"/> + <source>Unconfirmed</source> + <translation>Neconfirmat</translation> + </message> + <message> + <location line="+3"/> + <source>Confirming (%1 of %2 recommended confirmations)</source> + <translation>Confirmare (%1 dintre %2 confirmări recomandate)</translation> + </message> + <message> + <location line="+6"/> + <source>Conflicted</source> + <translation type="unfinished"/> + </message> + <message> + <location line="+51"/> <source>Received with</source> <translation>Recepționat cu</translation> </message> @@ -2950,7 +2980,7 @@ Adresa: %4 <translation>(n/a)</translation> </message> <message> - <location line="+199"/> + <location line="+190"/> <source>Transaction status. Hover over this field to show number of confirmations.</source> <translation>Starea tranzacției. Treci cu mausul peste acest câmp pentru afișarea numărului de confirmări.</translation> </message> @@ -3081,27 +3111,27 @@ Adresa: %4 <message> <location line="+142"/> <source>Export Transaction History</source> - <translation type="unfinished"/> + <translation>Exportare Istoric Tranzacţii</translation> </message> <message> <location line="+19"/> <source>Exporting Failed</source> - <translation>Exportare esuata</translation> + <translation>Exportare Eşuată</translation> </message> <message> <location line="+0"/> <source>There was an error trying to save the transaction history to %1.</source> - <translation type="unfinished"/> + <translation>S-a produs o eroare încercând să se salveze istoricul tranzacţiilor la %1.</translation> </message> <message> <location line="+4"/> <source>Exporting Successful</source> - <translation type="unfinished"/> + <translation>Exportare Reuşită</translation> </message> <message> <location line="+0"/> <source>The transaction history was successfully saved to %1.</source> - <translation type="unfinished"/> + <translation>Istoricul tranzacţiilor a fost salvat cu succes la %1.</translation> </message> <message> <location line="-22"/> @@ -3159,7 +3189,7 @@ Adresa: %4 <message> <location filename="../walletframe.cpp" line="+26"/> <source>No wallet has been loaded.</source> - <translation type="unfinished"/> + <translation>Nu a fost încărcat niciun portofel.</translation> </message> </context> <context> @@ -3200,12 +3230,12 @@ Adresa: %4 <message> <location line="+0"/> <source>There was an error trying to save the wallet data to %1.</source> - <translation type="unfinished"/> + <translation>S-a produs o eroare încercând să se salveze datele portofelului la %1.</translation> </message> <message> <location line="+4"/> <source>The wallet data was successfully saved to %1.</source> - <translation type="unfinished"/> + <translation>Datele portofelului s-au salvat cu succes la %1.</translation> </message> <message> <location line="+0"/> @@ -3216,12 +3246,12 @@ Adresa: %4 <context> <name>bitcoin-core</name> <message> - <location filename="../bitcoinstrings.cpp" line="+221"/> + <location filename="../bitcoinstrings.cpp" line="+223"/> <source>Usage:</source> <translation>Uz:</translation> </message> <message> - <location line="-54"/> + <location line="-55"/> <source>List commands</source> <translation>Listă de comenzi</translation> </message> @@ -3276,12 +3306,12 @@ Adresa: %4 <translation>Specifică adresa ta publică</translation> </message> <message> - <location line="+5"/> + <location line="+6"/> <source>Threshold for disconnecting misbehaving peers (default: 100)</source> <translation>Prag pentru deconectarea partenerilor care nu funcționează corect (implicit: 100)</translation> </message> <message> - <location line="-148"/> + <location line="-150"/> <source>Number of seconds to keep misbehaving peers from reconnecting (default: 86400)</source> <translation>Numărul de secunde pentru a preveni reconectarea partenerilor care nu funcționează corect (implicit: 86400)</translation> </message> @@ -3301,17 +3331,17 @@ Adresa: %4 <translation>Se acceptă comenzi din linia de comandă și comenzi JSON-RPC</translation> </message> <message> - <location line="+80"/> + <location line="+81"/> <source>Run in the background as a daemon and accept commands</source> <translation>Rulează în fundal ca un demon și acceptă comenzi</translation> </message> <message> - <location line="+39"/> + <location line="+40"/> <source>Use the test network</source> <translation>Utilizează rețeaua de test</translation> </message> <message> - <location line="-118"/> + <location line="-120"/> <source>Accept connections from outside (default: 1 if no -proxy or -connect)</source> <translation>Acceptă conexiuni din afară (implicit: 1 dacă nu se folosește -proxy sau -connect)</translation> </message> @@ -3383,7 +3413,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <message> <location line="+5"/> <source>Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: -proxy)</source> - <translation type="unfinished"/> + <translation>Utilizare proxy SOCKS5 separat pentru a ajunge la servicii ascunse TOR (implicit: -proxy)</translation> </message> <message> <location line="+3"/> @@ -3418,7 +3448,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <message> <location line="+9"/> <source><category> can be:</source> - <translation type="unfinished"/> + <translation><category> poate fi:</translation> </message> <message> <location line="+6"/> @@ -3428,7 +3458,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <message> <location line="+1"/> <source>Bitcoin Core Daemon</source> - <translation type="unfinished"/> + <translation>Daemon-ul Bitcoin Core</translation> </message> <message> <location line="+1"/> @@ -3442,13 +3472,18 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. </message> <message> <location line="+5"/> + <source>Clear list of wallet transactions (diagnostic tool; implies -rescan)</source> + <translation type="unfinished"/> + </message> + <message> + <location line="+1"/> <source>Connect only to the specified node(s)</source> <translation>Conecteaza-te doar la nod(urile) specifice</translation> </message> <message> <location line="+1"/> <source>Connect through SOCKS proxy</source> - <translation type="unfinished"/> + <translation>Conectare prin proxy SOCKS</translation> </message> <message> <location line="+1"/> @@ -3618,7 +3653,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <message> <location line="+1"/> <source>RPC client options:</source> - <translation type="unfinished"/> + <translation>Opţiuni client RPC:</translation> </message> <message> <location line="+1"/> @@ -3628,7 +3663,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <message> <location line="+5"/> <source>Select SOCKS version for -proxy (4 or 5, default: 5)</source> - <translation type="unfinished"/> + <translation>Selectaţi versiunea SOCKS pentru -proxy (4 din 5; iniţial: 5)</translation> </message> <message> <location line="+1"/> @@ -3638,7 +3673,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <message> <location line="+7"/> <source>Set maximum block size in bytes (default: %d)</source> - <translation type="unfinished"/> + <translation>Setaţi dimensiunea maximă a unui block în bytes (implicit: %d)</translation> </message> <message> <location line="+2"/> @@ -3652,6 +3687,11 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. </message> <message> <location line="+2"/> + <source>Spend unconfirmed change when sending transactions (default: 1)</source> + <translation type="unfinished"/> + </message> + <message> + <location line="+1"/> <source>Start Bitcoin server</source> <translation>A porni serverul Bitcoin</translation> </message> @@ -3678,7 +3718,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <message> <location line="+1"/> <source>Wait for RPC server to start</source> - <translation type="unfinished"/> + <translation>Aşteptaţi serverul RPC să pornească</translation> </message> <message> <location line="+1"/> @@ -3701,12 +3741,12 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>Trebuie să reconstruiești baza de date folosind -reindex pentru a schimba -txindex</translation> </message> <message> - <location line="-79"/> + <location line="-80"/> <source>Imports blocks from external blk000??.dat file</source> <translation>Importă blocuri dintr-un fișier extern blk000??.dat</translation> </message> <message> - <location line="-105"/> + <location line="-106"/> <source>Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message)</source> <translation>Executati comanda cand o alerta relevanta este primita sau vedem o bifurcatie foarte lunga (%s in cmd este inlocuti de mesaj)</translation> </message> @@ -3726,7 +3766,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation type="unfinished"/> </message> <message> - <location line="+89"/> + <location line="+90"/> <source>Information</source> <translation>Informație</translation> </message> @@ -3796,7 +3836,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>Specifică intervalul maxim de conectare în milisecunde (implicit: 5000)</translation> </message> <message> - <location line="+6"/> + <location line="+7"/> <source>System error: </source> <translation>Eroare de sistem:</translation> </message> @@ -3842,6 +3882,11 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. </message> <message> <location line="+2"/> + <source>Zapping all transactions from wallet...</source> + <translation type="unfinished"/> + </message> + <message> + <location line="+1"/> <source>version</source> <translation>versiunea</translation> </message> @@ -3851,32 +3896,32 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>wallet.dat corupt, recuperare eșuată</translation> </message> <message> - <location line="-58"/> + <location line="-60"/> <source>Password for JSON-RPC connections</source> <translation>Parola pentru conexiunile JSON-RPC</translation> </message> <message> - <location line="-70"/> + <location line="-71"/> <source>Allow JSON-RPC connections from specified IP address</source> <translation>Permite conexiuni JSON-RPC de la adresa IP specificată</translation> </message> <message> - <location line="+80"/> + <location line="+81"/> <source>Send commands to node running on <ip> (default: 127.0.0.1)</source> <translation>Trimite comenzi la nodul care rulează la <ip> (implicit: 127.0.0.1)</translation> </message> <message> - <location line="-132"/> + <location line="-133"/> <source>Execute command when the best block changes (%s in cmd is replaced by block hash)</source> <translation>Execută comanda când cel mai bun bloc se modifică (%s în cmd este înlocuit cu hash-ul blocului)</translation> </message> <message> - <location line="+161"/> + <location line="+163"/> <source>Upgrade wallet to latest format</source> <translation>Actualizează portofelul la ultimul format</translation> </message> <message> - <location line="-24"/> + <location line="-25"/> <source>Set key pool size to <n> (default: 100)</source> <translation>Setează mărimea bazinului de chei la <n> (implicit: 100)</translation> </message> @@ -3886,12 +3931,12 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>Rescanează lanțul de bloc pentru tranzacțiile portofel lipsă</translation> </message> <message> - <location line="+38"/> + <location line="+39"/> <source>Use OpenSSL (https) for JSON-RPC connections</source> <translation>Folosește OpenSSL (https) pentru conexiunile JSON-RPC</translation> </message> <message> - <location line="-30"/> + <location line="-31"/> <source>Server certificate file (default: server.cert)</source> <translation>Certificatul serverului (implicit: server.cert)</translation> </message> @@ -3901,7 +3946,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>Cheia privată a serverului (implicit: server.pem)</translation> </message> <message> - <location line="+16"/> + <location line="+17"/> <source>This help message</source> <translation>Acest mesaj de ajutor</translation> </message> @@ -3911,12 +3956,12 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>Nu se poate folosi %s pe acest calculator (eroarea returnată este %d, %s)</translation> </message> <message> - <location line="-107"/> + <location line="-109"/> <source>Allow DNS lookups for -addnode, -seednode and -connect</source> <translation>Permite căutări DNS pentru -addnode, -seednode și -connect</translation> </message> <message> - <location line="+60"/> + <location line="+61"/> <source>Loading addresses...</source> <translation>Încarc adrese...</translation> </message> @@ -3931,12 +3976,12 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>Eroare la încărcarea wallet.dat: Portofelul are nevoie de o versiune Bitcoin mai nouă</translation> </message> <message> - <location line="+98"/> + <location line="+99"/> <source>Wallet needed to be rewritten: restart Bitcoin to complete</source> <translation>Portofelul trebuie rescris: repornește Bitcoin pentru finalizare</translation> </message> <message> - <location line="-100"/> + <location line="-101"/> <source>Error loading wallet.dat</source> <translation>Eroare la încărcarea wallet.dat</translation> </message> @@ -3946,7 +3991,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>Adresa -proxy nevalidă: '%s'</translation> </message> <message> - <location line="+56"/> + <location line="+57"/> <source>Unknown network specified in -onlynet: '%s'</source> <translation>Rețeaua specificată în -onlynet este necunoscută: '%s'</translation> </message> @@ -3956,7 +4001,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>S-a cerut o versiune necunoscută de proxy -socks: %i</translation> </message> <message> - <location line="-101"/> + <location line="-103"/> <source>Cannot resolve -bind address: '%s'</source> <translation>Nu se poate rezolva adresa -bind: '%s'</translation> </message> @@ -3966,7 +4011,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>Nu se poate rezolva adresa -externalip: '%s'</translation> </message> <message> - <location line="+48"/> + <location line="+49"/> <source>Invalid amount for -paytxfee=<amount>: '%s'</source> <translation>Suma nevalidă pentru -paytxfee=<amount>: '%s'</translation> </message> @@ -3986,7 +4031,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>Încarc indice bloc...</translation> </message> <message> - <location line="-62"/> + <location line="-63"/> <source>Add a node to connect to and attempt to keep the connection open</source> <translation>Adaugă un nod la care te poți conecta pentru a menține conexiunea deschisă</translation> </message> @@ -3996,12 +4041,12 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>Imposibilitatea de a lega la% s pe acest computer. Bitcoin este, probabil, deja în execuție.</translation> </message> <message> - <location line="+95"/> + <location line="+96"/> <source>Loading wallet...</source> <translation>Încarc portofel...</translation> </message> <message> - <location line="-56"/> + <location line="-57"/> <source>Cannot downgrade wallet</source> <translation>Nu se poate retrograda portofelul</translation> </message> @@ -4011,7 +4056,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>Nu se poate scrie adresa implicită</translation> </message> <message> - <location line="+67"/> + <location line="+68"/> <source>Rescanning...</source> <translation>Rescanez...</translation> </message> @@ -4021,17 +4066,17 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>Încărcare terminată</translation> </message> <message> - <location line="+85"/> + <location line="+86"/> <source>To use the %s option</source> <translation>Pentru a folosi opțiunea %s</translation> </message> <message> - <location line="-77"/> + <location line="-78"/> <source>Error</source> <translation>Eroare</translation> </message> <message> - <location line="-35"/> + <location line="-36"/> <source>You must set rpcpassword=<password> in the configuration file: %s If the file does not exist, create it with owner-readable-only file permissions.</source> diff --git a/src/qt/optionsdialog.cpp b/src/qt/optionsdialog.cpp index e31542961c..9f7c484946 100644 --- a/src/qt/optionsdialog.cpp +++ b/src/qt/optionsdialog.cpp @@ -159,6 +159,7 @@ void OptionsDialog::setMapper() /* Wallet */ mapper->addMapping(ui->transactionFee, OptionsModel::Fee); mapper->addMapping(ui->spendZeroConfChange, OptionsModel::SpendZeroConfChange); + mapper->addMapping(ui->coinControlFeatures, OptionsModel::CoinControlFeatures); /* Network */ mapper->addMapping(ui->mapPortUpnp, OptionsModel::MapPortUPnP); @@ -178,7 +179,6 @@ void OptionsDialog::setMapper() mapper->addMapping(ui->lang, OptionsModel::Language); mapper->addMapping(ui->unit, OptionsModel::DisplayUnit); mapper->addMapping(ui->displayAddresses, OptionsModel::DisplayAddresses); - mapper->addMapping(ui->coinControlFeatures, OptionsModel::CoinControlFeatures); } void OptionsDialog::enableOkButton() diff --git a/src/qt/optionsmodel.cpp b/src/qt/optionsmodel.cpp index 3b83a5ff62..b61fdd2301 100644 --- a/src/qt/optionsmodel.cpp +++ b/src/qt/optionsmodel.cpp @@ -30,6 +30,11 @@ OptionsModel::OptionsModel(QObject *parent) : Init(); } +void OptionsModel::addOverriddenOption(const std::string &option) +{ + strOverriddenByCommandLine += QString::fromStdString(option) + "=" + QString::fromStdString(mapArgs[option]) + " "; +} + // Writes all missing QSettings with their default values void OptionsModel::Init() { @@ -76,23 +81,23 @@ void OptionsModel::Init() settings.setValue("nTransactionFee", 0); nTransactionFee = settings.value("nTransactionFee").toLongLong(); // if -paytxfee is set, this will be overridden later in init.cpp if (mapArgs.count("-paytxfee")) - strOverriddenByCommandLine += "-paytxfee "; + addOverriddenOption("-paytxfee"); if (!settings.contains("bSpendZeroConfChange")) settings.setValue("bSpendZeroConfChange", true); if (!SoftSetBoolArg("-spendzeroconfchange", settings.value("bSpendZeroConfChange").toBool())) - strOverriddenByCommandLine += "-spendzeroconfchange "; + addOverriddenOption("-spendzeroconfchange"); #endif if (!settings.contains("nDatabaseCache")) settings.setValue("nDatabaseCache", (qint64)nDefaultDbCache); if (!SoftSetArg("-dbcache", settings.value("nDatabaseCache").toString().toStdString())) - strOverriddenByCommandLine += "-dbcache "; + addOverriddenOption("-dbcache"); if (!settings.contains("nThreadsScriptVerif")) settings.setValue("nThreadsScriptVerif", 0); if (!SoftSetArg("-par", settings.value("nThreadsScriptVerif").toString().toStdString())) - strOverriddenByCommandLine += "-par "; + addOverriddenOption("-par"); // Network if (!settings.contains("fUseUPnP")) @@ -100,9 +105,9 @@ void OptionsModel::Init() settings.setValue("fUseUPnP", true); #else settings.setValue("fUseUPnP", false); -#endif +#endif if (!SoftSetBoolArg("-upnp", settings.value("fUseUPnP").toBool())) - strOverriddenByCommandLine += "-upnp "; + addOverriddenOption("-upnp"); if (!settings.contains("fUseProxy")) settings.setValue("fUseProxy", false); @@ -110,18 +115,18 @@ void OptionsModel::Init() settings.setValue("addrProxy", "127.0.0.1:9050"); // Only try to set -proxy, if user has enabled fUseProxy if (settings.value("fUseProxy").toBool() && !SoftSetArg("-proxy", settings.value("addrProxy").toString().toStdString())) - strOverriddenByCommandLine += "-proxy "; + addOverriddenOption("-proxy"); if (!settings.contains("nSocksVersion")) settings.setValue("nSocksVersion", 5); // Only try to set -socks, if user has enabled fUseProxy if (settings.value("fUseProxy").toBool() && !SoftSetArg("-socks", settings.value("nSocksVersion").toString().toStdString())) - strOverriddenByCommandLine += "-socks "; + addOverriddenOption("-socks"); // Display if (!settings.contains("language")) settings.setValue("language", ""); if (!SoftSetArg("-lang", settings.value("language").toString().toStdString())) - strOverriddenByCommandLine += "-lang"; + addOverriddenOption("-lang"); language = settings.value("language").toString(); } diff --git a/src/qt/optionsmodel.h b/src/qt/optionsmodel.h index a3487ddd2e..ece5ef78a4 100644 --- a/src/qt/optionsmodel.h +++ b/src/qt/optionsmodel.h @@ -75,6 +75,9 @@ private: /* settings that were overriden by command-line */ QString strOverriddenByCommandLine; + /// Add option to list of GUI options overridden through command line/config file + void addOverriddenOption(const std::string &option); + signals: void displayUnitChanged(int unit); void transactionFeeChanged(qint64); diff --git a/src/qt/receivecoinsdialog.cpp b/src/qt/receivecoinsdialog.cpp index 7539645b47..f630324947 100644 --- a/src/qt/receivecoinsdialog.cpp +++ b/src/qt/receivecoinsdialog.cpp @@ -19,6 +19,7 @@ #include <QMessageBox> #include <QTextDocument> #include <QScrollBar> +#include <QItemSelection> ReceiveCoinsDialog::ReceiveCoinsDialog(QWidget *parent) : QDialog(parent), @@ -54,29 +55,35 @@ ReceiveCoinsDialog::ReceiveCoinsDialog(QWidget *parent) : connect(ui->clearButton, SIGNAL(clicked()), this, SLOT(clear())); } + + void ReceiveCoinsDialog::setModel(WalletModel *model) { this->model = model; if(model && model->getOptionsModel()) { + model->getRecentRequestsTableModel()->sort(RecentRequestsTableModel::Date, Qt::DescendingOrder); connect(model->getOptionsModel(), SIGNAL(displayUnitChanged(int)), this, SLOT(updateDisplayUnit())); + connect(ui->recentRequestsView->selectionModel(), + SIGNAL(selectionChanged(QItemSelection, QItemSelection)), + this, + SLOT(on_recentRequestsView_selectionChanged(QItemSelection, QItemSelection))); updateDisplayUnit(); - ui->recentRequestsView->setModel(model->getRecentRequestsTableModel()); - ui->recentRequestsView->setAlternatingRowColors(true); - ui->recentRequestsView->setSelectionBehavior(QAbstractItemView::SelectRows); - ui->recentRequestsView->setSelectionMode(QAbstractItemView::ContiguousSelection); - ui->recentRequestsView->horizontalHeader()->resizeSection(RecentRequestsTableModel::Date, 130); - ui->recentRequestsView->horizontalHeader()->resizeSection(RecentRequestsTableModel::Label, 120); -#if QT_VERSION < 0x050000 - ui->recentRequestsView->horizontalHeader()->setResizeMode(RecentRequestsTableModel::Message, QHeaderView::Stretch); -#else - ui->recentRequestsView->horizontalHeader()->setSectionResizeMode(RecentRequestsTableModel::Message, QHeaderView::Stretch); -#endif - ui->recentRequestsView->horizontalHeader()->resizeSection(RecentRequestsTableModel::Amount, 100); + QTableView* tableView = ui->recentRequestsView; - model->getRecentRequestsTableModel()->sort(RecentRequestsTableModel::Date, Qt::DescendingOrder); + tableView->verticalHeader()->hide(); + tableView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + tableView->setModel(model->getRecentRequestsTableModel()); + tableView->setAlternatingRowColors(true); + tableView->setSelectionBehavior(QAbstractItemView::SelectRows); + tableView->setSelectionMode(QAbstractItemView::ContiguousSelection); + tableView->setColumnWidth(RecentRequestsTableModel::Date, DATE_COLUMN_WIDTH); + tableView->setColumnWidth(RecentRequestsTableModel::Label, LABEL_COLUMN_WIDTH); + + //(last 2 columns are set when the table geometry is ready) by the columnResizingFixer. + columnResizingFixer = new GUIUtil::TableViewLastColumnResizingFixer(tableView, AMOUNT_MINIMUM_COLUMN_WIDTH, DATE_COLUMN_WIDTH); } } @@ -161,6 +168,15 @@ void ReceiveCoinsDialog::on_recentRequestsView_doubleClicked(const QModelIndex & dialog->show(); } +void ReceiveCoinsDialog::on_recentRequestsView_selectionChanged(const QItemSelection &selected, + const QItemSelection &deselected) +{ + // Enable Show/Remove buttons only if anything is selected. + bool enable = !ui->recentRequestsView->selectionModel()->selectedRows().isEmpty(); + ui->showRequestButton->setEnabled(enable); + ui->removeRequestButton->setEnabled(enable); +} + void ReceiveCoinsDialog::on_showRequestButton_clicked() { if(!model || !model->getRecentRequestsTableModel() || !ui->recentRequestsView->selectionModel()) @@ -185,6 +201,12 @@ void ReceiveCoinsDialog::on_removeRequestButton_clicked() model->getRecentRequestsTableModel()->removeRows(firstIndex.row(), selection.length(), firstIndex.parent()); } +//We override the virtual resizeEvent of the QWidget to adjust tablet's column sizes as the table's width is proportional to the dialog's. +void ReceiveCoinsDialog::resizeEvent(QResizeEvent* event) { + QWidget::resizeEvent(event); + columnResizingFixer->stretchColumnWidth(RecentRequestsTableModel::Message); +} + void ReceiveCoinsDialog::keyPressEvent(QKeyEvent *event) { if (event->key() == Qt::Key_Return) diff --git a/src/qt/receivecoinsdialog.h b/src/qt/receivecoinsdialog.h index 12d2235782..1d051d9324 100644 --- a/src/qt/receivecoinsdialog.h +++ b/src/qt/receivecoinsdialog.h @@ -10,6 +10,9 @@ #include <QMenu> #include <QPoint> #include <QVariant> +#include <QHeaderView> +#include <QItemSelection> +#include "guiutil.h" namespace Ui { class ReceiveCoinsDialog; @@ -27,11 +30,18 @@ class ReceiveCoinsDialog : public QDialog Q_OBJECT public: + enum ColumnWidths { + DATE_COLUMN_WIDTH = 130, + LABEL_COLUMN_WIDTH = 120, + AMOUNT_MINIMUM_COLUMN_WIDTH = 160, + MINIMUM_COLUMN_WIDTH = 130 + }; + explicit ReceiveCoinsDialog(QWidget *parent = 0); ~ReceiveCoinsDialog(); - void setModel(WalletModel *model); + public slots: void clear(); void reject(); @@ -42,15 +52,18 @@ protected: private: Ui::ReceiveCoinsDialog *ui; + GUIUtil::TableViewLastColumnResizingFixer *columnResizingFixer; WalletModel *model; QMenu *contextMenu; void copyColumnToClipboard(int column); + virtual void resizeEvent(QResizeEvent* event); private slots: void on_receiveButton_clicked(); void on_showRequestButton_clicked(); void on_removeRequestButton_clicked(); void on_recentRequestsView_doubleClicked(const QModelIndex &index); + void on_recentRequestsView_selectionChanged(const QItemSelection &, const QItemSelection &); void updateDisplayUnit(); void showMenu(const QPoint &); void copyLabel(); diff --git a/src/qt/rpcconsole.cpp b/src/qt/rpcconsole.cpp index bd29efee86..ba5871ae2b 100644 --- a/src/qt/rpcconsole.cpp +++ b/src/qt/rpcconsole.cpp @@ -331,6 +331,13 @@ void RPCConsole::clear() tr("Type <b>help</b> for an overview of available commands.")), true); } +void RPCConsole::reject() +{ + // Ignore escape keypress if this is not a seperate window + if(windowType() != Qt::Widget) + QDialog::reject(); +} + void RPCConsole::message(int category, const QString &message, bool html) { QTime time = QTime::currentTime(); @@ -349,7 +356,14 @@ void RPCConsole::message(int category, const QString &message, bool html) void RPCConsole::setNumConnections(int count) { - ui->numberOfConnections->setText(QString::number(count)); + if (!clientModel) + return; + + QString connections = QString::number(count) + " ("; + connections += tr("In:") + " " + QString::number(clientModel->getNumConnections(CONNECTIONS_IN)) + " / "; + connections += tr("Out:") + " " + QString::number(clientModel->getNumConnections(CONNECTIONS_OUT)) + ")"; + + ui->numberOfConnections->setText(connections); } void RPCConsole::setNumBlocks(int count, int countOfPeers) diff --git a/src/qt/rpcconsole.h b/src/qt/rpcconsole.h index e5da01546a..f7a7772050 100644 --- a/src/qt/rpcconsole.h +++ b/src/qt/rpcconsole.h @@ -47,6 +47,7 @@ private slots: public slots: void clear(); + void reject(); void message(int category, const QString &message, bool html = false); /** Set number of connections shown in the UI */ void setNumConnections(int count); diff --git a/src/qt/sendcoinsentry.cpp b/src/qt/sendcoinsentry.cpp index ad8dd7b732..e0f56f8cd2 100644 --- a/src/qt/sendcoinsentry.cpp +++ b/src/qt/sendcoinsentry.cpp @@ -195,8 +195,10 @@ void SendCoinsEntry::setValue(const SendCoinsRecipient &value) ui->messageTextLabel->setVisible(!recipient.message.isEmpty()); ui->messageLabel->setVisible(!recipient.message.isEmpty()); - ui->payTo->setText(recipient.address); - ui->addAsLabel->setText(recipient.label); + ui->addAsLabel->clear(); + ui->payTo->setText(recipient.address); // this may set a label from addressbook + if (!recipient.label.isEmpty()) // if a label had been set from the addressbook, dont overwrite with an empty label + ui->addAsLabel->setText(recipient.label); ui->payAmount->setValue(recipient.amount); } } diff --git a/src/qt/transactionview.cpp b/src/qt/transactionview.cpp index a0c3ce62aa..d178efe8d5 100644 --- a/src/qt/transactionview.cpp +++ b/src/qt/transactionview.cpp @@ -168,6 +168,7 @@ void TransactionView::setModel(WalletModel *model) transactionProxyModel->setSortRole(Qt::EditRole); + transactionView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); transactionView->setModel(transactionProxyModel); transactionView->setAlternatingRowColors(true); transactionView->setSelectionBehavior(QAbstractItemView::SelectRows); @@ -176,15 +177,12 @@ void TransactionView::setModel(WalletModel *model) transactionView->sortByColumn(TransactionTableModel::Status, Qt::DescendingOrder); transactionView->verticalHeader()->hide(); - transactionView->horizontalHeader()->resizeSection(TransactionTableModel::Status, 23); - transactionView->horizontalHeader()->resizeSection(TransactionTableModel::Date, 120); - transactionView->horizontalHeader()->resizeSection(TransactionTableModel::Type, 120); -#if QT_VERSION < 0x050000 - transactionView->horizontalHeader()->setResizeMode(TransactionTableModel::ToAddress, QHeaderView::Stretch); -#else - transactionView->horizontalHeader()->setSectionResizeMode(TransactionTableModel::ToAddress, QHeaderView::Stretch); -#endif - transactionView->horizontalHeader()->resizeSection(TransactionTableModel::Amount, 100); + transactionView->setColumnWidth(TransactionTableModel::Status, STATUS_COLUMN_WIDTH); + transactionView->setColumnWidth(TransactionTableModel::Date, DATE_COLUMN_WIDTH); + transactionView->setColumnWidth(TransactionTableModel::Type, TYPE_COLUMN_WIDTH); + transactionView->setColumnWidth(TransactionTableModel::Amount, AMOUNT_MINIMUM_COLUMN_WIDTH); + + columnResizingFixer = new GUIUtil::TableViewLastColumnResizingFixer(transactionView, AMOUNT_MINIMUM_COLUMN_WIDTH, MINIMUM_COLUMN_WIDTH); } } @@ -439,3 +437,9 @@ void TransactionView::focusTransaction(const QModelIndex &idx) transactionView->setCurrentIndex(targetIdx); transactionView->setFocus(); } + +//We override the virtual resizeEvent of the QWidget to adjust tablet's column sizes as the table's width is proportional to the dialog's. +void TransactionView::resizeEvent(QResizeEvent* event) { + QWidget::resizeEvent(event); + columnResizingFixer->stretchColumnWidth(TransactionTableModel::ToAddress); +} diff --git a/src/qt/transactionview.h b/src/qt/transactionview.h index 18f2b9bfc9..fe8e205d6c 100644 --- a/src/qt/transactionview.h +++ b/src/qt/transactionview.h @@ -6,6 +6,7 @@ #define TRANSACTIONVIEW_H #include <QWidget> +#include "guiutil.h" class TransactionFilterProxy; class WalletModel; @@ -44,6 +45,14 @@ public: Range }; + enum ColumnWidths { + STATUS_COLUMN_WIDTH = 23, + DATE_COLUMN_WIDTH = 120, + TYPE_COLUMN_WIDTH = 120, + AMOUNT_MINIMUM_COLUMN_WIDTH = 120, + MINIMUM_COLUMN_WIDTH = 23 + }; + private: WalletModel *model; TransactionFilterProxy *transactionProxyModel; @@ -62,6 +71,10 @@ private: QWidget *createDateRangeWidget(); + GUIUtil::TableViewLastColumnResizingFixer *columnResizingFixer; + + virtual void resizeEvent(QResizeEvent* event); + private slots: void contextualMenu(const QPoint &); void dateRangeChanged(); diff --git a/src/rpcclient.cpp b/src/rpcclient.cpp index 37a501bb17..efb1fa1183 100644 --- a/src/rpcclient.cpp +++ b/src/rpcclient.cpp @@ -20,7 +20,6 @@ #include <boost/foreach.hpp> #include <boost/iostreams/concepts.hpp> #include <boost/iostreams/stream.hpp> -#include <boost/lexical_cast.hpp> #include <boost/shared_ptr.hpp> #include "json/json_spirit_writer_template.h" diff --git a/src/rpcdump.cpp b/src/rpcdump.cpp index 635d4ac19b..41f2a57eca 100644 --- a/src/rpcdump.cpp +++ b/src/rpcdump.cpp @@ -14,7 +14,6 @@ #include <boost/algorithm/string.hpp> #include <boost/date_time/posix_time/posix_time.hpp> -#include <boost/lexical_cast.hpp> #include "json/json_spirit_value.h" using namespace json_spirit; diff --git a/src/rpcmisc.cpp b/src/rpcmisc.cpp index 353fb77b88..aa17590431 100644 --- a/src/rpcmisc.cpp +++ b/src/rpcmisc.cpp @@ -46,8 +46,9 @@ Value getinfo(const Array& params, bool fHelp) " \"testnet\": true|false, (boolean) if the server is using testnet or not\n" " \"keypoololdest\": xxxxxx, (numeric) the timestamp (seconds since GMT epoch) of the oldest pre-generated key in the key pool\n" " \"keypoolsize\": xxxx, (numeric) how many new keys are pre-generated\n" - " \"paytxfee\": x.xxxx, (numeric) the transaction fee set in btc\n" " \"unlocked_until\": ttt, (numeric) the timestamp in seconds since epoch (midnight Jan 1 1970 GMT) that the wallet is unlocked for transfers, or 0 if the wallet is locked\n" + " \"paytxfee\": x.xxxx, (numeric) the transaction fee set in btc/kb\n" + " \"relayfee\": x.xxxx, (numeric) minimum relay fee for non-free transactions in btc/kb\n" " \"errors\": \"...\" (string) any error messages\n" "}\n" "\nExamples:\n" @@ -78,10 +79,11 @@ Value getinfo(const Array& params, bool fHelp) obj.push_back(Pair("keypoololdest", (boost::int64_t)pwalletMain->GetOldestKeyPoolTime())); obj.push_back(Pair("keypoolsize", (int)pwalletMain->GetKeyPoolSize())); } - obj.push_back(Pair("paytxfee", ValueFromAmount(nTransactionFee))); if (pwalletMain && pwalletMain->IsCrypted()) obj.push_back(Pair("unlocked_until", (boost::int64_t)nWalletUnlockTime)); + obj.push_back(Pair("paytxfee", ValueFromAmount(nTransactionFee))); #endif + obj.push_back(Pair("relayfee", ValueFromAmount(CTransaction::nMinRelayTxFee))); obj.push_back(Pair("errors", GetWarnings("statusbar"))); return obj; } diff --git a/src/rpcprotocol.cpp b/src/rpcprotocol.cpp index 4ea84e99be..13028fdc77 100644 --- a/src/rpcprotocol.cpp +++ b/src/rpcprotocol.cpp @@ -17,7 +17,6 @@ #include <boost/foreach.hpp> #include <boost/iostreams/concepts.hpp> #include <boost/iostreams/stream.hpp> -#include <boost/lexical_cast.hpp> #include <boost/shared_ptr.hpp> #include "json/json_spirit_writer_template.h" diff --git a/src/rpcserver.cpp b/src/rpcserver.cpp index 4d110124b2..2c0cdd345f 100644 --- a/src/rpcserver.cpp +++ b/src/rpcserver.cpp @@ -22,7 +22,6 @@ #include <boost/foreach.hpp> #include <boost/iostreams/concepts.hpp> #include <boost/iostreams/stream.hpp> -#include <boost/lexical_cast.hpp> #include <boost/shared_ptr.hpp> #include "json/json_spirit_writer_template.h" @@ -296,6 +295,7 @@ static const CRPCCommand vRPCCommands[] = { "lockunspent", &lockunspent, false, false, true }, { "listlockunspent", &listlockunspent, false, false, true }, { "settxfee", &settxfee, false, false, true }, + { "getwalletinfo", &getwalletinfo, true, false, true }, /* Wallet-enabled mining */ { "getgenerate", &getgenerate, true, false, false }, diff --git a/src/rpcserver.h b/src/rpcserver.h index 0dd583c8eb..ea03c09bf6 100644 --- a/src/rpcserver.h +++ b/src/rpcserver.h @@ -163,6 +163,7 @@ extern json_spirit::Value walletlock(const json_spirit::Array& params, bool fHel extern json_spirit::Value encryptwallet(const json_spirit::Array& params, bool fHelp); extern json_spirit::Value validateaddress(const json_spirit::Array& params, bool fHelp); extern json_spirit::Value getinfo(const json_spirit::Array& params, bool fHelp); +extern json_spirit::Value getwalletinfo(const json_spirit::Array& params, bool fHelp); extern json_spirit::Value getrawtransaction(const json_spirit::Array& params, bool fHelp); // in rcprawtransaction.cpp extern json_spirit::Value listunspent(const json_spirit::Array& params, bool fHelp); diff --git a/src/rpcwallet.cpp b/src/rpcwallet.cpp index d3b6c349a7..c8b2127264 100644 --- a/src/rpcwallet.cpp +++ b/src/rpcwallet.cpp @@ -1888,4 +1888,36 @@ Value settxfee(const Array& params, bool fHelp) return true; } +Value getwalletinfo(const Array& params, bool fHelp) +{ + if (fHelp || params.size() != 0) + throw runtime_error( + "getwalletinfo\n" + "Returns an object containing various wallet state info.\n" + "\nResult:\n" + "{\n" + " \"walletversion\": xxxxx, (numeric) the wallet version\n" + " \"balance\": xxxxxxx, (numeric) the total bitcoin balance of the wallet\n" + " \"txcount\": xxxxxxx, (numeric) the total number of transactions in the wallet\n" + " \"keypoololdest\": xxxxxx, (numeric) the timestamp (seconds since GMT epoch) of the oldest pre-generated key in the key pool\n" + " \"keypoolsize\": xxxx, (numeric) how many new keys are pre-generated\n" + " \"unlocked_until\": ttt, (numeric) the timestamp in seconds since epoch (midnight Jan 1 1970 GMT) that the wallet is unlocked for transfers, or 0 if the wallet is locked\n" + "}\n" + "\nExamples:\n" + + HelpExampleCli("getwalletinfo", "") + + HelpExampleRpc("getwalletinfo", "") + ); + + Object obj; + obj.push_back(Pair("walletversion", pwalletMain->GetVersion())); + obj.push_back(Pair("balance", ValueFromAmount(pwalletMain->GetBalance()))); + obj.push_back(Pair("txcount", (int)pwalletMain->mapWallet.size())); + obj.push_back(Pair("keypoololdest", (boost::int64_t)pwalletMain->GetOldestKeyPoolTime())); + obj.push_back(Pair("keypoolsize", (int)pwalletMain->GetKeyPoolSize())); + if (pwalletMain->IsCrypted()) + obj.push_back(Pair("unlocked_until", (boost::int64_t)nWalletUnlockTime)); + return obj; +} + + diff --git a/src/test/Checkpoints_tests.cpp b/src/test/Checkpoints_tests.cpp index 78b0236b74..8f70f18c7c 100644 --- a/src/test/Checkpoints_tests.cpp +++ b/src/test/Checkpoints_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2011-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + // // Unit tests for block-chain checkpoints // diff --git a/src/test/DoS_tests.cpp b/src/test/DoS_tests.cpp index fbca09b4dc..d86cc7a290 100644 --- a/src/test/DoS_tests.cpp +++ b/src/test/DoS_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2011-2014 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + // // Unit tests for denial-of-service detection/prevention code // @@ -21,7 +25,6 @@ // Tests this internal-to-main.cpp method: extern bool AddOrphanTx(const CTransaction& tx); extern unsigned int LimitOrphanTxSize(unsigned int nMaxOrphans); -extern void Misbehaving(NodeId nodeid, int howmuch); extern std::map<uint256, CTransaction> mapOrphanTransactions; extern std::map<uint256, std::set<uint256> > mapOrphanTransactionsByPrev; diff --git a/src/test/Makefile.am b/src/test/Makefile.am index 667e53c6b4..5a1f42ee61 100644 --- a/src/test/Makefile.am +++ b/src/test/Makefile.am @@ -45,6 +45,7 @@ test_bitcoin_SOURCES = \ DoS_tests.cpp \ getarg_tests.cpp \ key_tests.cpp \ + main_tests.cpp \ miner_tests.cpp \ mruset_tests.cpp \ multisig_tests.cpp \ diff --git a/src/test/accounting_tests.cpp b/src/test/accounting_tests.cpp index bfdb95927b..e2a75da349 100644 --- a/src/test/accounting_tests.cpp +++ b/src/test/accounting_tests.cpp @@ -1,4 +1,6 @@ - +// Copyright (c) 2012-2014 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "wallet.h" #include "walletdb.h" diff --git a/src/test/alert_tests.cpp b/src/test/alert_tests.cpp index a7e668222d..b16f3f7f57 100644 --- a/src/test/alert_tests.cpp +++ b/src/test/alert_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + // // Unit tests for alert system // diff --git a/src/test/allocator_tests.cpp b/src/test/allocator_tests.cpp index 490dff87e5..2752a0b215 100644 --- a/src/test/allocator_tests.cpp +++ b/src/test/allocator_tests.cpp @@ -1,4 +1,6 @@ - +// Copyright (c) 2012-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "util.h" diff --git a/src/test/base32_tests.cpp b/src/test/base32_tests.cpp index 580e87f65f..87473585e3 100644 --- a/src/test/base32_tests.cpp +++ b/src/test/base32_tests.cpp @@ -1,4 +1,6 @@ - +// Copyright (c) 2012-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "util.h" diff --git a/src/test/base58_tests.cpp b/src/test/base58_tests.cpp index 94e84049be..5689e69995 100644 --- a/src/test/base58_tests.cpp +++ b/src/test/base58_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2011-2014 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #include "base58.h" #include "data/base58_encode_decode.json.h" diff --git a/src/test/base64_tests.cpp b/src/test/base64_tests.cpp index c59c290669..d4a23d9aa0 100644 --- a/src/test/base64_tests.cpp +++ b/src/test/base64_tests.cpp @@ -1,4 +1,6 @@ - +// Copyright (c) 2011-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "util.h" diff --git a/src/test/bignum_tests.cpp b/src/test/bignum_tests.cpp index 205b15adcf..6587389a07 100644 --- a/src/test/bignum_tests.cpp +++ b/src/test/bignum_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2012-2014 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #include "bignum.h" #include <limits> diff --git a/src/test/bip32_tests.cpp b/src/test/bip32_tests.cpp index 2bcca24336..9cf07fc38c 100644 --- a/src/test/bip32_tests.cpp +++ b/src/test/bip32_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #include <boost/test/unit_test.hpp> #include "base58.h" diff --git a/src/test/bloom_tests.cpp b/src/test/bloom_tests.cpp index c4e4403b70..abedd3093c 100644 --- a/src/test/bloom_tests.cpp +++ b/src/test/bloom_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2012-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #include "bloom.h" #include "base58.h" diff --git a/src/test/canonical_tests.cpp b/src/test/canonical_tests.cpp index c521f2cf9c..a26ad335a4 100644 --- a/src/test/canonical_tests.cpp +++ b/src/test/canonical_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2012-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + // // Unit tests for canonical signatures // diff --git a/src/test/checkblock_tests.cpp b/src/test/checkblock_tests.cpp index d47a33fd46..10352240f4 100644 --- a/src/test/checkblock_tests.cpp +++ b/src/test/checkblock_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2013-2014 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + // // Unit tests for block.CheckBlock() // @@ -15,8 +19,7 @@ BOOST_AUTO_TEST_SUITE(CheckBlock_tests) -bool -read_block(const std::string& filename, CBlock& block) +bool read_block(const std::string& filename, CBlock& block) { namespace fs = boost::filesystem; fs::path testFile = fs::current_path() / "data" / filename; diff --git a/src/test/compress_tests.cpp b/src/test/compress_tests.cpp index 4d16914774..719955ba85 100644 --- a/src/test/compress_tests.cpp +++ b/src/test/compress_tests.cpp @@ -1,4 +1,6 @@ - +// Copyright (c) 2012-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "main.h" #include "util.h" diff --git a/src/test/data/README.md b/src/test/data/README.md new file mode 100644 index 0000000000..f69a021ca0 --- /dev/null +++ b/src/test/data/README.md @@ -0,0 +1,14 @@ +Description +------------ + +This directory contains data-driven tests for various aspects of Bitcoin. + +License +-------- + +The data files in this directory are + + Copyright (c) 2012-2014 The Bitcoin Core developers + Distributed under the MIT/X11 software license, see the accompanying + file COPYING or http://www.opensource.org/licenses/mit-license.php. + diff --git a/src/test/data/script_invalid.json b/src/test/data/script_invalid.json index 761cc4a008..8cb365a46f 100644 --- a/src/test/data/script_invalid.json +++ b/src/test/data/script_invalid.json @@ -325,5 +325,7 @@ ["NOP1 0x01 1", "HASH160 0x14 0xda1745e9b549bd0bfa1a569971c77eba30cd5a4b EQUAL"], ["0 0x01 0x50", "HASH160 0x14 0xece424a6bb6ddf4db592c0faed60685047a361b1 EQUAL", "OP_RESERVED in P2SH should fail"], -["0 0x01 VER", "HASH160 0x14 0x0f4d7845db968f2a81b530b6f3c1d6246d4c7e01 EQUAL", "OP_VER in P2SH should fail"] +["0 0x01 VER", "HASH160 0x14 0x0f4d7845db968f2a81b530b6f3c1d6246d4c7e01 EQUAL", "OP_VER in P2SH should fail"], + +["0x00", "'00' EQUAL", "Basic OP_0 execution"] ] diff --git a/src/test/data/script_valid.json b/src/test/data/script_valid.json index e4c181cae8..3b4c191865 100644 --- a/src/test/data/script_valid.json +++ b/src/test/data/script_valid.json @@ -411,5 +411,7 @@ ["0x4c 0x40 0x42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242", "0x4d 0x4000 0x42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242 EQUAL", -"Basic PUSHDATA1 signedness check"] +"Basic PUSHDATA1 signedness check"], + +["0x00", "SIZE 0 EQUAL", "Basic OP_0 execution"] ] diff --git a/src/test/getarg_tests.cpp b/src/test/getarg_tests.cpp index d76124885b..8cadcdd716 100644 --- a/src/test/getarg_tests.cpp +++ b/src/test/getarg_tests.cpp @@ -1,4 +1,6 @@ - +// Copyright (c) 2012-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "util.h" diff --git a/src/test/hash_tests.cpp b/src/test/hash_tests.cpp index 28410f0fed..4568c8769b 100644 --- a/src/test/hash_tests.cpp +++ b/src/test/hash_tests.cpp @@ -1,4 +1,6 @@ - +// Copyright (c) 2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "hash.h" #include "util.h" diff --git a/src/test/hmac_tests.cpp b/src/test/hmac_tests.cpp index 68868866aa..780ce480ce 100644 --- a/src/test/hmac_tests.cpp +++ b/src/test/hmac_tests.cpp @@ -1,4 +1,6 @@ - +// Copyright (c) 2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "hash.h" #include "util.h" diff --git a/src/test/key_tests.cpp b/src/test/key_tests.cpp index 421ffeac45..864d90128c 100644 --- a/src/test/key_tests.cpp +++ b/src/test/key_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2012-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #include "key.h" #include "base58.h" diff --git a/src/test/main_tests.cpp b/src/test/main_tests.cpp new file mode 100644 index 0000000000..3f8ad20020 --- /dev/null +++ b/src/test/main_tests.cpp @@ -0,0 +1,24 @@ +// Copyright (c) 2014 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +#include "core.h" +#include "main.h" + +#include <boost/test/unit_test.hpp> + +BOOST_AUTO_TEST_SUITE(main_tests) + +BOOST_AUTO_TEST_CASE(subsidy_limit_test) +{ + uint64_t nSum = 0; + for (int nHeight = 0; nHeight < 7000000; nHeight += 1000) { + uint64_t nSubsidy = GetBlockValue(nHeight, 0); + BOOST_CHECK(nSubsidy <= 50 * COIN); + nSum += nSubsidy * 1000; + BOOST_CHECK(MoneyRange(nSum)); + } + BOOST_CHECK(nSum == 2099999997690000ULL); +} + +BOOST_AUTO_TEST_SUITE_END() diff --git a/src/test/miner_tests.cpp b/src/test/miner_tests.cpp index d35137a663..b72ba0293f 100644 --- a/src/test/miner_tests.cpp +++ b/src/test/miner_tests.cpp @@ -1,4 +1,6 @@ - +// Copyright (c) 2011-2014 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "main.h" #include "miner.h" diff --git a/src/test/mruset_tests.cpp b/src/test/mruset_tests.cpp index 638c88fabe..60f11c147a 100644 --- a/src/test/mruset_tests.cpp +++ b/src/test/mruset_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2012-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #include "mruset.h" #include "util.h" diff --git a/src/test/multisig_tests.cpp b/src/test/multisig_tests.cpp index 772217b888..3775abd633 100644 --- a/src/test/multisig_tests.cpp +++ b/src/test/multisig_tests.cpp @@ -1,4 +1,6 @@ - +// Copyright (c) 2011-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "key.h" #include "keystore.h" diff --git a/src/test/netbase_tests.cpp b/src/test/netbase_tests.cpp index 412ba04910..7d38700736 100644 --- a/src/test/netbase_tests.cpp +++ b/src/test/netbase_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2012-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #include "netbase.h" #include <string> diff --git a/src/test/pmt_tests.cpp b/src/test/pmt_tests.cpp index dea5e1b824..7d7e6681df 100644 --- a/src/test/pmt_tests.cpp +++ b/src/test/pmt_tests.cpp @@ -1,4 +1,6 @@ - +// Copyright (c) 2012-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "main.h" #include "serialize.h" diff --git a/src/test/rpc_tests.cpp b/src/test/rpc_tests.cpp index 29195545da..5bc38ce2de 100644 --- a/src/test/rpc_tests.cpp +++ b/src/test/rpc_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2012-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #include "rpcserver.h" #include "rpcclient.h" diff --git a/src/test/rpc_wallet_tests.cpp b/src/test/rpc_wallet_tests.cpp index 628ba95067..af34e496e2 100644 --- a/src/test/rpc_wallet_tests.cpp +++ b/src/test/rpc_wallet_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2013-2014 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #include "rpcserver.h" #include "rpcclient.h" diff --git a/src/test/script_P2SH_tests.cpp b/src/test/script_P2SH_tests.cpp index e57dc9bbba..03dbdde57b 100644 --- a/src/test/script_P2SH_tests.cpp +++ b/src/test/script_P2SH_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2012-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #include "script.h" #include "key.h" diff --git a/src/test/script_tests.cpp b/src/test/script_tests.cpp index dd1b613047..7bc2bfb6dd 100644 --- a/src/test/script_tests.cpp +++ b/src/test/script_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2011-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #include "script.h" #include "data/script_invalid.json.h" diff --git a/src/test/serialize_tests.cpp b/src/test/serialize_tests.cpp index 415f957811..867a7df888 100644 --- a/src/test/serialize_tests.cpp +++ b/src/test/serialize_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2012-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #include "serialize.h" #include <stdint.h> diff --git a/src/test/sighash_tests.cpp b/src/test/sighash_tests.cpp index f098d46186..04b93fb105 100644 --- a/src/test/sighash_tests.cpp +++ b/src/test/sighash_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #include <boost/test/unit_test.hpp> #include "main.h" diff --git a/src/test/sigopcount_tests.cpp b/src/test/sigopcount_tests.cpp index 96f663ccef..722f14a989 100644 --- a/src/test/sigopcount_tests.cpp +++ b/src/test/sigopcount_tests.cpp @@ -1,4 +1,6 @@ - +// Copyright (c) 2012-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "key.h" #include "script.h" diff --git a/src/test/test_bitcoin.cpp b/src/test/test_bitcoin.cpp index 96d0712403..3b75aad14b 100644 --- a/src/test/test_bitcoin.cpp +++ b/src/test/test_bitcoin.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2011-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #define BOOST_TEST_MODULE Bitcoin Test Suite diff --git a/src/test/transaction_tests.cpp b/src/test/transaction_tests.cpp index 588c8013c7..2ebb652f00 100644 --- a/src/test/transaction_tests.cpp +++ b/src/test/transaction_tests.cpp @@ -1,4 +1,6 @@ - +// Copyright (c) 2011-2014 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "data/tx_invalid.json.h" #include "data/tx_valid.json.h" diff --git a/src/test/uint256_tests.cpp b/src/test/uint256_tests.cpp index 368484fdff..815babf107 100644 --- a/src/test/uint256_tests.cpp +++ b/src/test/uint256_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2011-2013 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #include <boost/test/unit_test.hpp> #include <stdint.h> #include <sstream> diff --git a/src/test/util_tests.cpp b/src/test/util_tests.cpp index 706737b115..b8f107f644 100644 --- a/src/test/util_tests.cpp +++ b/src/test/util_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2011-2014 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #include "util.h" #include "sync.h" diff --git a/src/test/wallet_tests.cpp b/src/test/wallet_tests.cpp index bd0517ae08..1993358826 100644 --- a/src/test/wallet_tests.cpp +++ b/src/test/wallet_tests.cpp @@ -1,3 +1,7 @@ +// Copyright (c) 2012-2014 The Bitcoin Core developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + #include "wallet.h" #include <set> diff --git a/src/wallet.cpp b/src/wallet.cpp index 3ecd994e9d..df1eb549ad 100644 --- a/src/wallet.cpp +++ b/src/wallet.cpp @@ -8,6 +8,7 @@ #include "base58.h" #include "coincontrol.h" #include "net.h" +#include "checkpoints.h" #include <boost/algorithm/string/replace.hpp> #include <openssl/rand.h> @@ -588,7 +589,7 @@ bool CWallet::AddToWallet(const CWalletTx& wtxIn, bool fFromLoadWallet) bool CWallet::AddToWalletIfInvolvingMe(const uint256 &hash, const CTransaction& tx, const CBlock* pblock, bool fUpdate) { { - LOCK(cs_wallet); + AssertLockHeld(cs_wallet); bool fExisted = mapWallet.count(hash); if (fExisted && !fUpdate) return false; if (fExisted || IsMine(tx) || IsFromMe(tx)) @@ -605,9 +606,8 @@ bool CWallet::AddToWalletIfInvolvingMe(const uint256 &hash, const CTransaction& void CWallet::SyncTransaction(const uint256 &hash, const CTransaction& tx, const CBlock* pblock) { - AddToWalletIfInvolvingMe(hash, tx, pblock, true); - - if (mapWallet.count(hash) == 0) + LOCK(cs_wallet); + if (!AddToWalletIfInvolvingMe(hash, tx, pblock, true)) return; // Not one of ours // If a transaction changes 'conflicted' state, that changes the balance @@ -830,6 +830,7 @@ bool CWalletTx::WriteToDisk() int CWallet::ScanForWalletTransactions(CBlockIndex* pindexStart, bool fUpdate) { int ret = 0; + int64_t nNow = GetTime(); CBlockIndex* pindex = pindexStart; { @@ -851,6 +852,10 @@ int CWallet::ScanForWalletTransactions(CBlockIndex* pindexStart, bool fUpdate) ret++; } pindex = chainActive.Next(pindex); + if (GetTime() >= nNow + 60) { + nNow = GetTime(); + LogPrintf("Still rescanning. At block %d. Progress=%f\n", pindex->nHeight, Checkpoints::GuessVerificationProgress(pindex)); + } } } return ret; diff --git a/src/wallet.h b/src/wallet.h index 7feb86d294..e2e89fffe7 100644 --- a/src/wallet.h +++ b/src/wallet.h @@ -675,8 +675,10 @@ public: { // Transactions not sent by us: not trusted const CWalletTx* parent = pwallet->GetWalletTx(txin.prevout.hash); + if (parent == NULL) + return false; const CTxOut& parentOut = parent->vout[txin.prevout.n]; - if (parent == NULL || !pwallet->IsMine(parentOut)) + if (!pwallet->IsMine(parentOut)) return false; } return true; |