tMerge pull request #3834 from SomberNight/string_format - electrum - Electrum Bitcoin wallet
HTML git clone https://git.parazyd.org/electrum
DIR Log
DIR Files
DIR Refs
DIR Submodules
---
DIR commit 42ed4bc3d6132f65d0028c8b5be11a9b0c48c36c
DIR parent 37904bc1109564e481253f656ef00f5bd9a44771
HTML Author: ThomasV <thomasv@electrum.org>
Date: Sun, 4 Feb 2018 08:38:07 +0100
Merge pull request #3834 from SomberNight/string_format
use string.format instead of old style (%) formatting
Diffstat:
M gui/kivy/main_window.py | 4 ++--
M gui/kivy/uix/dialogs/installwizard… | 4 ++--
M gui/kivy/uix/dialogs/tx_dialog.py | 2 +-
M gui/kivy/uix/ui_screens/network.kv | 4 ++--
M gui/qt/address_list.py | 4 ++--
M gui/qt/console.py | 3 ++-
M gui/qt/contact_list.py | 4 ++--
M gui/qt/history_list.py | 4 ++--
M gui/qt/installwizard.py | 12 ++++++------
M gui/qt/invoice_list.py | 2 +-
M gui/qt/request_list.py | 2 +-
M gui/qt/transaction_dialog.py | 2 +-
M lib/base_wizard.py | 2 +-
M lib/commands.py | 2 +-
M lib/plugins.py | 10 +++++-----
M lib/wallet.py | 2 +-
M plugins/digitalbitbox/digitalbitbo… | 2 +-
M plugins/digitalbitbox/qt.py | 2 +-
M plugins/greenaddress_instant/qt.py | 4 ++--
M plugins/hw_wallet/qt.py | 2 +-
M plugins/keepkey/clientbase.py | 48 ++++++++++++++++----------------
M plugins/keepkey/plugin.py | 14 +++++++-------
M plugins/keepkey/qt_generic.py | 18 +++++++++---------
M plugins/ledger/auth2fa.py | 2 +-
M plugins/ledger/ledger.py | 2 +-
M plugins/trezor/clientbase.py | 48 ++++++++++++++++----------------
M plugins/trezor/plugin.py | 14 +++++++-------
M plugins/trezor/qt_generic.py | 16 ++++++++--------
M plugins/trustedcoin/qt.py | 2 +-
M plugins/trustedcoin/trustedcoin.py | 8 ++++----
30 files changed, 123 insertions(+), 122 deletions(-)
---
DIR diff --git a/gui/kivy/main_window.py b/gui/kivy/main_window.py
t@@ -631,7 +631,7 @@ class ElectrumWindow(App):
if not self.wallet.up_to_date or server_height == 0:
status = _("Synchronizing...")
elif server_lag > 1:
- status = _("Server lagging (%d blocks)"%server_lag)
+ status = _("Server lagging ({} blocks)").format(server_lag)
else:
c, u, x = self.wallet.get_balance()
text = self.format_amount(c+x+u)
t@@ -846,7 +846,7 @@ class ElectrumWindow(App):
def _delete_wallet(self, b):
if b:
basename = os.path.basename(self.wallet.storage.path)
- self.protected(_("Enter your PIN code to confirm deletion of %s") % basename, self.__delete_wallet, ())
+ self.protected(_("Enter your PIN code to confirm deletion of {}").format(basename), self.__delete_wallet, ())
def __delete_wallet(self, pw):
wallet_path = self.get_wallet_path()
DIR diff --git a/gui/kivy/uix/dialogs/installwizard.py b/gui/kivy/uix/dialogs/installwizard.py
t@@ -135,7 +135,7 @@ Builder.load_string('''
height: self.minimum_height
Label:
color: root.text_color
- text: _('From %d cosigners')%n.value
+ text: _('From {} cosigners').format(n.value)
Slider:
id: n
range: 2, 5
t@@ -143,7 +143,7 @@ Builder.load_string('''
value: 2
Label:
color: root.text_color
- text: _('Require %d signatures')%m.value
+ text: _('Require {} signatures').format(m.value)
Slider:
id: m
range: 1, n.value
DIR diff --git a/gui/kivy/uix/dialogs/tx_dialog.py b/gui/kivy/uix/dialogs/tx_dialog.py
t@@ -112,7 +112,7 @@ class TxDialog(Factory.Popup):
if timestamp:
self.date_str = datetime.fromtimestamp(timestamp).isoformat(' ')[:-3]
elif exp_n:
- self.date_str = _('Within %d blocks') % exp_n if exp_n > 0 else _('unknown (low fee)')
+ self.date_str = _('Within {} blocks').format(exp_n) if exp_n > 0 else _('unknown (low fee)')
else:
self.date_str = ''
DIR diff --git a/gui/kivy/uix/ui_screens/network.kv b/gui/kivy/uix/ui_screens/network.kv
t@@ -11,7 +11,7 @@ Popup:
height: self.minimum_height
padding: '10dp'
SettingsItem:
- value: _("%d connections.")% app.num_nodes if app.num_nodes else _("Not connected")
+ value: _("{} connections.").format(app.num_nodes) if app.num_nodes else _("Not connected")
title: _("Status") + ': ' + self.value
description: _("Connections with Electrum servers")
action: lambda x: None
t@@ -46,7 +46,7 @@ Popup:
CardSeparator
SettingsItem:
- title: _('Fork detected at block %d')%app.blockchain_checkpoint if app.num_chains>1 else _('No fork detected')
+ title: _('Fork detected at block {}').format(app.blockchain_checkpoint) if app.num_chains>1 else _('No fork detected')
fork_description: (_('You are following branch') if app.auto_connect else _("Your server is on branch")) + ' ' + app.blockchain_name
description: self.fork_description if app.num_chains>1 else _('Connected nodes are on the same chain')
action: app.choose_blockchain_dialog
DIR diff --git a/gui/qt/address_list.py b/gui/qt/address_list.py
t@@ -135,10 +135,10 @@ class AddressList(MyTreeWidget):
if not multi_select:
column_title = self.headerItem().text(col)
copy_text = item.text(col)
- menu.addAction(_("Copy %s")%column_title, lambda: self.parent.app.clipboard().setText(copy_text))
+ menu.addAction(_("Copy {}").format(column_title), lambda: self.parent.app.clipboard().setText(copy_text))
menu.addAction(_('Details'), lambda: self.parent.show_address(addr))
if col in self.editable_columns:
- menu.addAction(_("Edit %s")%column_title, lambda: self.editItem(item, col))
+ menu.addAction(_("Edit {}").format(column_title), lambda: self.editItem(item, col))
menu.addAction(_("Request payment"), lambda: self.parent.receive_at(addr))
if self.wallet.can_export():
menu.addAction(_("Private key"), lambda: self.parent.show_private_key(addr))
DIR diff --git a/gui/qt/console.py b/gui/qt/console.py
t@@ -203,7 +203,8 @@ class Console(QtWidgets.QPlainTextEdit):
self.skip = not self.skip
if type(self.namespace.get(command)) == type(lambda:None):
- self.appendPlainText("'%s' is a function. Type '%s()' to use it in the Python console."%(command, command))
+ self.appendPlainText("'{}' is a function. Type '{}()' to use it in the Python console."
+ .format(command, command))
self.newPrompt()
return
DIR diff --git a/gui/qt/contact_list.py b/gui/qt/contact_list.py
t@@ -72,10 +72,10 @@ class ContactList(MyTreeWidget):
column = self.currentColumn()
column_title = self.headerItem().text(column)
column_data = '\n'.join([item.text(column) for item in selected])
- menu.addAction(_("Copy %s")%column_title, lambda: self.parent.app.clipboard().setText(column_data))
+ menu.addAction(_("Copy {}").format(column_title), lambda: self.parent.app.clipboard().setText(column_data))
if column in self.editable_columns:
item = self.currentItem()
- menu.addAction(_("Edit %s")%column_title, lambda: self.editItem(item, column))
+ menu.addAction(_("Edit {}").format(column_title), lambda: self.editItem(item, column))
menu.addAction(_("Pay to"), lambda: self.parent.payto_contacts(keys))
menu.addAction(_("Delete"), lambda: self.parent.delete_contacts(keys))
URLs = [block_explorer_URL(self.config, 'addr', key) for key in filter(is_address, keys)]
DIR diff --git a/gui/qt/history_list.py b/gui/qt/history_list.py
t@@ -166,9 +166,9 @@ class HistoryList(MyTreeWidget, AcceptFileDragDrop):
if height == TX_HEIGHT_LOCAL:
menu.addAction(_("Remove"), lambda: self.remove_local_tx(tx_hash))
- menu.addAction(_("Copy %s")%column_title, lambda: self.parent.app.clipboard().setText(column_data))
+ menu.addAction(_("Copy {}").format(column_title), lambda: self.parent.app.clipboard().setText(column_data))
if column in self.editable_columns:
- menu.addAction(_("Edit %s")%column_title, lambda: self.editItem(item, column))
+ menu.addAction(_("Edit {}").format(column_title), lambda: self.editItem(item, column))
menu.addAction(_("Details"), lambda: self.parent.show_transaction(tx))
DIR diff --git a/gui/qt/installwizard.py b/gui/qt/installwizard.py
t@@ -26,7 +26,7 @@ MSG_GENERATING_WAIT = _("Electrum is generating your addresses, please wait...")
MSG_ENTER_ANYTHING = _("Please enter a seed phrase, a master key, a list of "
"Bitcoin addresses, or a list of private keys")
MSG_ENTER_SEED_OR_MPK = _("Please enter a seed phrase or a master key (xpub or xprv):")
-MSG_COSIGNER = _("Please enter the master public key of cosigner #%d:")
+MSG_COSIGNER = _("Please enter the master public key of cosigner #{}:")
MSG_ENTER_PASSWORD = _("Choose a password to encrypt your wallet keys.") + '\n'\
+ _("Leave this field empty if you want to disable encryption.")
MSG_HW_STORAGE_ENCRYPTION = _("Set wallet file encryption.") + '\n'\
t@@ -275,8 +275,8 @@ class InstallWizard(QDialog, MessageBoxMixin, BaseWizard):
path = self.storage.path
if self.storage.requires_split():
self.hide()
- msg = _("The wallet '%s' contains multiple accounts, which are no longer supported since Electrum 2.7.\n\n"
- "Do you want to split your wallet into multiple files?"%path)
+ msg = _("The wallet '{}' contains multiple accounts, which are no longer supported since Electrum 2.7.\n\n"
+ "Do you want to split your wallet into multiple files?").format(path)
if not self.question(msg):
return
file_list = '\n'.join(self.storage.split_accounts())
t@@ -294,10 +294,10 @@ class InstallWizard(QDialog, MessageBoxMixin, BaseWizard):
action = self.storage.get_action()
if action and action != 'new':
self.hide()
- msg = _("The file '%s' contains an incompletely created wallet.\n"
- "Do you want to complete its creation now?") % path
+ msg = _("The file '{}' contains an incompletely created wallet.\n"
+ "Do you want to complete its creation now?").format(path)
if not self.question(msg):
- if self.question(_("Do you want to delete '%s'?") % path):
+ if self.question(_("Do you want to delete '{}'?").format(path)):
os.remove(path)
self.show_warning(_('The file was removed'))
return
DIR diff --git a/gui/qt/invoice_list.py b/gui/qt/invoice_list.py
t@@ -76,7 +76,7 @@ class InvoiceList(MyTreeWidget):
pr = self.parent.invoices.get(key)
status = self.parent.invoices.get_status(key)
if column_data:
- menu.addAction(_("Copy %s")%column_title, lambda: self.parent.app.clipboard().setText(column_data))
+ menu.addAction(_("Copy {}").format(column_title), lambda: self.parent.app.clipboard().setText(column_data))
menu.addAction(_("Details"), lambda: self.parent.show_invoice(key))
if status == PR_UNPAID:
menu.addAction(_("Pay Now"), lambda: self.parent.do_pay_invoice(key))
DIR diff --git a/gui/qt/request_list.py b/gui/qt/request_list.py
t@@ -115,7 +115,7 @@ class RequestList(MyTreeWidget):
column_title = self.headerItem().text(column)
column_data = item.text(column)
menu = QMenu(self)
- menu.addAction(_("Copy %s")%column_title, lambda: self.parent.app.clipboard().setText(column_data))
+ menu.addAction(_("Copy {}").format(column_title), lambda: self.parent.app.clipboard().setText(column_data))
menu.addAction(_("Copy URI"), lambda: self.parent.view_and_paste('URI', '', self.parent.get_request_URI(addr)))
menu.addAction(_("Save as BIP70 file"), lambda: self.parent.export_payment_request(addr))
menu.addAction(_("Delete"), lambda: self.parent.delete_payment_request(addr))
DIR diff --git a/gui/qt/transaction_dialog.py b/gui/qt/transaction_dialog.py
t@@ -218,7 +218,7 @@ class TxDialog(QDialog, MessageBoxMixin):
if timestamp:
time_str = datetime.datetime.fromtimestamp(timestamp).isoformat(' ')[:-3]
- self.date_label.setText(_("Date: %s")%time_str)
+ self.date_label.setText(_("Date: {}").format(time_str))
self.date_label.show()
elif exp_n:
text = '%d blocks'%(exp_n) if exp_n > 0 else _('unknown (low fee)')
DIR diff --git a/lib/base_wizard.py b/lib/base_wizard.py
t@@ -224,7 +224,7 @@ class BaseWizard(object):
choices = []
for name, info in devices:
state = _("initialized") if info.initialized else _("wiped")
- label = info.label or _("An unnamed %s")%name
+ label = info.label or _("An unnamed {}").format(name)
descr = "%s [%s, %s]" % (label, name, state)
choices.append(((name, info), descr))
msg = _('Select a device') + ':'
DIR diff --git a/lib/commands.py b/lib/commands.py
t@@ -808,7 +808,7 @@ def subparser_call(self, parser, namespace, values, option_string=None):
parser = self._name_parser_map[parser_name]
except KeyError:
tup = parser_name, ', '.join(self._name_parser_map)
- msg = _('unknown parser %r (choices: %s)') % tup
+ msg = _('unknown parser {!r} (choices: {})').format(*tup)
raise ArgumentError(self, msg)
# parse all the remaining options into the namespace
# store any unrecognized options on the object, so that the top
DIR diff --git a/lib/plugins.py b/lib/plugins.py
t@@ -442,11 +442,11 @@ class DeviceMgr(ThreadJob, PrintError):
# The user input has wrong PIN or passphrase, or cancelled input,
# or it is not pairable
raise DeviceUnpairableError(
- _('Electrum cannot pair with your %s.\n\n'
+ _('Electrum cannot pair with your {}.\n\n'
'Before you request bitcoins to be sent to addresses in this '
'wallet, ensure you can pair with your device, or that you have '
'its seed (and passphrase, if any). Otherwise all bitcoins you '
- 'receive will be unspendable.') % plugin.device)
+ 'receive will be unspendable.').format(plugin.device))
def unpaired_device_infos(self, handler, plugin, devices=None):
'''Returns a list of DeviceInfo objects: one for each connected,
t@@ -472,9 +472,9 @@ class DeviceMgr(ThreadJob, PrintError):
infos = self.unpaired_device_infos(handler, plugin, devices)
if infos:
break
- msg = _('Please insert your %s. Verify the cable is '
+ msg = _('Please insert your {}. Verify the cable is '
'connected and that no other application is using it.\n\n'
- 'Try to connect again?') % plugin.device
+ 'Try to connect again?').format(plugin.device)
if not handler.yes_no_question(msg):
raise UserCancelled()
devices = None
t@@ -484,7 +484,7 @@ class DeviceMgr(ThreadJob, PrintError):
for info in infos:
if info.label == keystore.label:
return info
- msg = _("Please select which %s device to use:") % plugin.device
+ msg = _("Please select which {} device to use:").format(plugin.device)
descriptions = [info.label + ' (%s)'%(_("initialized") if info.initialized else _("wiped")) for info in infos]
c = handler.query_choice(msg, descriptions)
if c is None:
DIR diff --git a/lib/wallet.py b/lib/wallet.py
t@@ -531,7 +531,7 @@ class Abstract_Wallet(PrintError):
height, conf, timestamp = self.get_tx_height(tx_hash)
if height > 0:
if conf:
- status = _("%d confirmations") % conf
+ status = _("{} confirmations").format(conf)
else:
status = _('Not verified')
elif height in (TX_HEIGHT_UNCONF_PARENT, TX_HEIGHT_UNCONFIRMED):
DIR diff --git a/plugins/digitalbitbox/digitalbitbox.py b/plugins/digitalbitbox/digitalbitbox.py
t@@ -421,7 +421,7 @@ class DigitalBitbox_KeyStore(Hardware_KeyStore):
def decrypt_message(self, pubkey, message, password):
- raise RuntimeError(_('Encryption and decryption are currently not supported for %s') % self.device)
+ raise RuntimeError(_('Encryption and decryption are currently not supported for {}').format(self.device))
def sign_message(self, sequence, message, password):
DIR diff --git a/plugins/digitalbitbox/qt.py b/plugins/digitalbitbox/qt.py
t@@ -39,7 +39,7 @@ class Plugin(DigitalBitboxPlugin, QtPluginBase):
}
self.comserver_post_notification(verify_request_payload)
- menu.addAction(_("Show on %s") % self.device, show_address)
+ menu.addAction(_("Show on {}").format(self.device), show_address)
class DigitalBitbox_Handler(QtHandlerBase):
DIR diff --git a/plugins/greenaddress_instant/qt.py b/plugins/greenaddress_instant/qt.py
t@@ -96,9 +96,9 @@ class Plugin(BasePlugin):
# 3. display the result
if response.get('verified'):
- d.show_message(_('%s is covered by GreenAddress instant confirmation') % (tx.txid()), title=_('Verification successful!'))
+ d.show_message(_('{} is covered by GreenAddress instant confirmation').format(tx.txid()), title=_('Verification successful!'))
else:
- d.show_critical(_('%s is not covered by GreenAddress instant confirmation') % (tx.txid()), title=_('Verification failed!'))
+ d.show_critical(_('{} is not covered by GreenAddress instant confirmation').format(tx.txid()), title=_('Verification failed!'))
except BaseException as e:
import traceback
traceback.print_exc(file=sys.stdout)
DIR diff --git a/plugins/hw_wallet/qt.py b/plugins/hw_wallet/qt.py
t@@ -144,7 +144,7 @@ class QtHandlerBase(QObject, PrintError):
def message_dialog(self, msg, on_cancel):
# Called more than once during signing, to confirm output and fee
self.clear_dialog()
- title = _('Please check your %s device') % self.device
+ title = _('Please check your {} device').format(self.device)
self.dialog = dialog = WindowModalDialog(self.top_level_window(), title)
l = QLabel(msg)
vbox = QVBoxLayout(dialog)
DIR diff --git a/plugins/keepkey/clientbase.py b/plugins/keepkey/clientbase.py
t@@ -11,15 +11,15 @@ class GuiMixin(object):
# Requires: self.proto, self.device
messages = {
- 3: _("Confirm the transaction output on your %s device"),
- 4: _("Confirm internal entropy on your %s device to begin"),
- 5: _("Write down the seed word shown on your %s"),
- 6: _("Confirm on your %s that you want to wipe it clean"),
- 7: _("Confirm on your %s device the message to sign"),
+ 3: _("Confirm the transaction output on your {} device"),
+ 4: _("Confirm internal entropy on your {} device to begin"),
+ 5: _("Write down the seed word shown on your {}"),
+ 6: _("Confirm on your {} that you want to wipe it clean"),
+ 7: _("Confirm on your {} device the message to sign"),
8: _("Confirm the total amount spent and the transaction fee on your "
- "%s device"),
- 10: _("Confirm wallet address on your %s device"),
- 'default': _("Check your %s device to continue"),
+ "{} device"),
+ 10: _("Confirm wallet address on your {} device"),
+ 'default': _("Check your {} device to continue"),
}
def callback_Failure(self, msg):
t@@ -38,18 +38,18 @@ class GuiMixin(object):
message = self.msg
if not message:
message = self.messages.get(msg.code, self.messages['default'])
- self.handler.show_message(message % self.device, self.cancel)
+ self.handler.show_message(message.format(self.device), self.cancel)
return self.proto.ButtonAck()
def callback_PinMatrixRequest(self, msg):
if msg.type == 2:
- msg = _("Enter a new PIN for your %s:")
+ msg = _("Enter a new PIN for your {}:")
elif msg.type == 3:
- msg = (_("Re-enter the new PIN for your %s.\n\n"
+ msg = (_("Re-enter the new PIN for your {}.\n\n"
"NOTE: the positions of the numbers have changed!"))
else:
- msg = _("Enter your current %s PIN:")
- pin = self.handler.get_pin(msg % self.device)
+ msg = _("Enter your current {} PIN:")
+ pin = self.handler.get_pin(msg.format(self.device))
if not pin:
return self.proto.Cancel()
return self.proto.PinMatrixAck(pin=pin)
t@@ -57,9 +57,9 @@ class GuiMixin(object):
def callback_PassphraseRequest(self, req):
if self.creating_wallet:
msg = _("Enter a passphrase to generate this wallet. Each time "
- "you use this wallet your %s will prompt you for the "
+ "you use this wallet your {} will prompt you for the "
"passphrase. If you forget the passphrase you cannot "
- "access the bitcoins in the wallet.") % self.device
+ "access the bitcoins in the wallet.").format(self.device)
else:
msg = _("Enter the passphrase to unlock this wallet:")
passphrase = self.handler.get_passphrase(msg, self.creating_wallet)
t@@ -70,8 +70,8 @@ class GuiMixin(object):
def callback_WordRequest(self, msg):
self.step += 1
- msg = _("Step %d/24. Enter seed word as explained on "
- "your %s:") % (self.step, self.device)
+ msg = _("Step {}/24. Enter seed word as explained on "
+ "your {}:").format(self.step, self.device)
word = self.handler.get_word(msg)
# Unfortunately the device can't handle self.proto.Cancel()
return self.proto.WordAck(word=word)
t@@ -155,27 +155,27 @@ class KeepKeyClientBase(GuiMixin, PrintError):
def toggle_passphrase(self):
if self.features.passphrase_protection:
- self.msg = _("Confirm on your %s device to disable passphrases")
+ self.msg = _("Confirm on your {} device to disable passphrases")
else:
- self.msg = _("Confirm on your %s device to enable passphrases")
+ self.msg = _("Confirm on your {} device to enable passphrases")
enabled = not self.features.passphrase_protection
self.apply_settings(use_passphrase=enabled)
def change_label(self, label):
- self.msg = _("Confirm the new label on your %s device")
+ self.msg = _("Confirm the new label on your {} device")
self.apply_settings(label=label)
def change_homescreen(self, homescreen):
- self.msg = _("Confirm on your %s device to change your home screen")
+ self.msg = _("Confirm on your {} device to change your home screen")
self.apply_settings(homescreen=homescreen)
def set_pin(self, remove):
if remove:
- self.msg = _("Confirm on your %s device to disable PIN protection")
+ self.msg = _("Confirm on your {} device to disable PIN protection")
elif self.features.pin_protection:
- self.msg = _("Confirm on your %s device to change your PIN")
+ self.msg = _("Confirm on your {} device to change your PIN")
else:
- self.msg = _("Confirm on your %s device to set a PIN")
+ self.msg = _("Confirm on your {} device to set a PIN")
self.change_pin(remove)
def clear_session(self):
DIR diff --git a/plugins/keepkey/plugin.py b/plugins/keepkey/plugin.py
t@@ -30,7 +30,7 @@ class KeepKeyCompatibleKeyStore(Hardware_KeyStore):
return self.plugin.get_client(self, force_pair)
def decrypt_message(self, sequence, message, password):
- raise RuntimeError(_('Encryption and decryption are not implemented by %s') % self.device)
+ raise RuntimeError(_('Encryption and decryption are not implemented by {}').format(self.device))
def sign_message(self, sequence, message, password):
client = self.get_client()
t@@ -119,9 +119,9 @@ class KeepKeyCompatiblePlugin(HW_PluginBase):
return None
if not client.atleast_version(*self.minimum_firmware):
- msg = (_('Outdated %s firmware for device labelled %s. Please '
- 'download the updated firmware from %s') %
- (self.device, client.label(), self.firmware_URL))
+ msg = (_('Outdated {} firmware for device labelled {}. Please '
+ 'download the updated firmware from {}')
+ .format(self.device, client.label(), self.firmware_URL))
self.print_error(msg)
handler.show_error(msg)
return None
t@@ -143,14 +143,14 @@ class KeepKeyCompatiblePlugin(HW_PluginBase):
def initialize_device(self, device_id, wizard, handler):
# Initialization method
- msg = _("Choose how you want to initialize your %s.\n\n"
+ msg = _("Choose how you want to initialize your {}.\n\n"
"The first two methods are secure as no secret information "
"is entered into your computer.\n\n"
"For the last two methods you input secrets on your keyboard "
- "and upload them to your %s, and so you should "
+ "and upload them to your {}, and so you should "
"only do those on a computer you know to be trustworthy "
"and free of malware."
- ) % (self.device, self.device)
+ ).format(self.device, self.device)
choices = [
# Must be short as QT doesn't word-wrap radio button text
(TIM_NEW, _("Let the device generate a completely new seed randomly")),
DIR diff --git a/plugins/keepkey/qt_generic.py b/plugins/keepkey/qt_generic.py
t@@ -194,7 +194,7 @@ class QtPlugin(QtPluginBase):
if type(keystore) == self.keystore_class and len(addrs) == 1:
def show_address():
keystore.thread.add(partial(self.show_address, wallet, addrs[0]))
- menu.addAction(_("Show on %s") % self.device, show_address)
+ menu.addAction(_("Show on {}").format(self.device), show_address)
def show_settings_dialog(self, window, keystore):
device_id = self.choose_device(window, keystore)
t@@ -227,7 +227,7 @@ class QtPlugin(QtPluginBase):
bg = QButtonGroup()
for i, count in enumerate([12, 18, 24]):
rb = QRadioButton(gb)
- rb.setText(_("%d words") % count)
+ rb.setText(_("{} words").format(count))
bg.addButton(rb)
bg.setId(rb, i)
hbox1.addWidget(rb)
t@@ -292,7 +292,7 @@ class SettingsDialog(WindowModalDialog):
their PIN.'''
def __init__(self, window, plugin, keystore, device_id):
- title = _("%s Settings") % plugin.device
+ title = _("{} Settings").format(plugin.device)
super(SettingsDialog, self).__init__(window, title)
self.setMaximumWidth(540)
t@@ -457,9 +457,9 @@ class SettingsDialog(WindowModalDialog):
settings_glayout = QGridLayout()
# Settings tab - Label
- label_msg = QLabel(_("Name this %s. If you have mutiple devices "
+ label_msg = QLabel(_("Name this {}. If you have mutiple devices "
"their labels help distinguish them.")
- % plugin.device)
+ .format(plugin.device))
label_msg.setWordWrap(True)
label_label = QLabel(_("Device Label"))
label_edit = QLineEdit()
t@@ -482,7 +482,7 @@ class SettingsDialog(WindowModalDialog):
pin_msg = QLabel(_("PIN protection is strongly recommended. "
"A PIN is your only protection against someone "
"stealing your bitcoins if they obtain physical "
- "access to your %s.") % plugin.device)
+ "access to your {}.").format(plugin.device))
pin_msg.setWordWrap(True)
pin_msg.setStyleSheet("color: red")
settings_glayout.addWidget(pin_msg, 3, 1, 1, -1)
t@@ -497,8 +497,8 @@ class SettingsDialog(WindowModalDialog):
homescreen_clear_button.clicked.connect(clear_homescreen)
homescreen_msg = QLabel(_("You can set the homescreen on your "
"device to personalize it. You must "
- "choose a %d x %d monochrome black and "
- "white image.") % (hs_rows, hs_cols))
+ "choose a {} x {} monochrome black and "
+ "white image.").format(hs_rows, hs_cols))
homescreen_msg.setWordWrap(True)
settings_glayout.addWidget(homescreen_label, 4, 0)
settings_glayout.addWidget(homescreen_change_button, 4, 1)
t@@ -541,7 +541,7 @@ class SettingsDialog(WindowModalDialog):
clear_pin_button.clicked.connect(clear_pin)
clear_pin_warning = QLabel(
_("If you disable your PIN, anyone with physical access to your "
- "%s device can spend your bitcoins.") % plugin.device)
+ "{} device can spend your bitcoins.").format(plugin.device))
clear_pin_warning.setWordWrap(True)
clear_pin_warning.setStyleSheet("color: red")
advanced_glayout.addWidget(clear_pin_button, 0, 2)
DIR diff --git a/plugins/ledger/auth2fa.py b/plugins/ledger/auth2fa.py
t@@ -164,7 +164,7 @@ class LedgerAuthDialog(QDialog):
if not self.cfg['pair']:
self.modes.addItem(_("Mobile - Not paired"))
else:
- self.modes.addItem(_("Mobile - %s") % self.cfg['pair'][1])
+ self.modes.addItem(_("Mobile - {}").format(self.cfg['pair'][1]))
self.modes.blockSignals(False)
def update_dlg(self):
DIR diff --git a/plugins/ledger/ledger.py b/plugins/ledger/ledger.py
t@@ -236,7 +236,7 @@ class Ledger_KeyStore(Hardware_KeyStore):
return address_path[2:]
def decrypt_message(self, pubkey, message, password):
- raise RuntimeError(_('Encryption and decryption are currently not supported for %s') % self.device)
+ raise RuntimeError(_('Encryption and decryption are currently not supported for {}').format(self.device))
def sign_message(self, sequence, message, password):
self.signing = True
DIR diff --git a/plugins/trezor/clientbase.py b/plugins/trezor/clientbase.py
t@@ -11,15 +11,15 @@ class GuiMixin(object):
# Requires: self.proto, self.device
messages = {
- 3: _("Confirm the transaction output on your %s device"),
- 4: _("Confirm internal entropy on your %s device to begin"),
- 5: _("Write down the seed word shown on your %s"),
- 6: _("Confirm on your %s that you want to wipe it clean"),
- 7: _("Confirm on your %s device the message to sign"),
+ 3: _("Confirm the transaction output on your {} device"),
+ 4: _("Confirm internal entropy on your {} device to begin"),
+ 5: _("Write down the seed word shown on your {}"),
+ 6: _("Confirm on your {} that you want to wipe it clean"),
+ 7: _("Confirm on your {} device the message to sign"),
8: _("Confirm the total amount spent and the transaction fee on your "
- "%s device"),
- 10: _("Confirm wallet address on your %s device"),
- 'default': _("Check your %s device to continue"),
+ "{} device"),
+ 10: _("Confirm wallet address on your {} device"),
+ 'default': _("Check your {} device to continue"),
}
def callback_Failure(self, msg):
t@@ -38,18 +38,18 @@ class GuiMixin(object):
message = self.msg
if not message:
message = self.messages.get(msg.code, self.messages['default'])
- self.handler.show_message(message % self.device, self.cancel)
+ self.handler.show_message(message.format(self.device), self.cancel)
return self.proto.ButtonAck()
def callback_PinMatrixRequest(self, msg):
if msg.type == 2:
- msg = _("Enter a new PIN for your %s:")
+ msg = _("Enter a new PIN for your {}:")
elif msg.type == 3:
- msg = (_("Re-enter the new PIN for your %s.\n\n"
+ msg = (_("Re-enter the new PIN for your {}.\n\n"
"NOTE: the positions of the numbers have changed!"))
else:
- msg = _("Enter your current %s PIN:")
- pin = self.handler.get_pin(msg % self.device)
+ msg = _("Enter your current {} PIN:")
+ pin = self.handler.get_pin(msg.format(self.device))
if not pin:
return self.proto.Cancel()
return self.proto.PinMatrixAck(pin=pin)
t@@ -57,9 +57,9 @@ class GuiMixin(object):
def callback_PassphraseRequest(self, req):
if self.creating_wallet:
msg = _("Enter a passphrase to generate this wallet. Each time "
- "you use this wallet your %s will prompt you for the "
+ "you use this wallet your {} will prompt you for the "
"passphrase. If you forget the passphrase you cannot "
- "access the bitcoins in the wallet.") % self.device
+ "access the bitcoins in the wallet.").format(self.device)
else:
msg = _("Enter the passphrase to unlock this wallet:")
passphrase = self.handler.get_passphrase(msg, self.creating_wallet)
t@@ -70,8 +70,8 @@ class GuiMixin(object):
def callback_WordRequest(self, msg):
self.step += 1
- msg = _("Step %d/24. Enter seed word as explained on "
- "your %s:") % (self.step, self.device)
+ msg = _("Step {}/24. Enter seed word as explained on "
+ "your {}:").format(self.step, self.device)
word = self.handler.get_word(msg)
# Unfortunately the device can't handle self.proto.Cancel()
return self.proto.WordAck(word=word)
t@@ -155,27 +155,27 @@ class TrezorClientBase(GuiMixin, PrintError):
def toggle_passphrase(self):
if self.features.passphrase_protection:
- self.msg = _("Confirm on your %s device to disable passphrases")
+ self.msg = _("Confirm on your {} device to disable passphrases")
else:
- self.msg = _("Confirm on your %s device to enable passphrases")
+ self.msg = _("Confirm on your {} device to enable passphrases")
enabled = not self.features.passphrase_protection
self.apply_settings(use_passphrase=enabled)
def change_label(self, label):
- self.msg = _("Confirm the new label on your %s device")
+ self.msg = _("Confirm the new label on your {} device")
self.apply_settings(label=label)
def change_homescreen(self, homescreen):
- self.msg = _("Confirm on your %s device to change your home screen")
+ self.msg = _("Confirm on your {} device to change your home screen")
self.apply_settings(homescreen=homescreen)
def set_pin(self, remove):
if remove:
- self.msg = _("Confirm on your %s device to disable PIN protection")
+ self.msg = _("Confirm on your {} device to disable PIN protection")
elif self.features.pin_protection:
- self.msg = _("Confirm on your %s device to change your PIN")
+ self.msg = _("Confirm on your {} device to change your PIN")
else:
- self.msg = _("Confirm on your %s device to set a PIN")
+ self.msg = _("Confirm on your {} device to set a PIN")
self.change_pin(remove)
def clear_session(self):
DIR diff --git a/plugins/trezor/plugin.py b/plugins/trezor/plugin.py
t@@ -42,7 +42,7 @@ class TrezorCompatibleKeyStore(Hardware_KeyStore):
return self.plugin.get_client(self, force_pair)
def decrypt_message(self, sequence, message, password):
- raise RuntimeError(_('Encryption and decryption are not implemented by %s') % self.device)
+ raise RuntimeError(_('Encryption and decryption are not implemented by {}').format(self.device))
def sign_message(self, sequence, message, password):
client = self.get_client()
t@@ -126,9 +126,9 @@ class TrezorCompatiblePlugin(HW_PluginBase):
return None
if not client.atleast_version(*self.minimum_firmware):
- msg = (_('Outdated %s firmware for device labelled %s. Please '
- 'download the updated firmware from %s') %
- (self.device, client.label(), self.firmware_URL))
+ msg = (_('Outdated {} firmware for device labelled {}. Please '
+ 'download the updated firmware from {}')
+ .format(self.device, client.label(), self.firmware_URL))
self.print_error(msg)
handler.show_error(msg)
return None
t@@ -150,14 +150,14 @@ class TrezorCompatiblePlugin(HW_PluginBase):
def initialize_device(self, device_id, wizard, handler):
# Initialization method
- msg = _("Choose how you want to initialize your %s.\n\n"
+ msg = _("Choose how you want to initialize your {}.\n\n"
"The first two methods are secure as no secret information "
"is entered into your computer.\n\n"
"For the last two methods you input secrets on your keyboard "
- "and upload them to your %s, and so you should "
+ "and upload them to your {}, and so you should "
"only do those on a computer you know to be trustworthy "
"and free of malware."
- ) % (self.device, self.device)
+ ).format(self.device, self.device)
choices = [
# Must be short as QT doesn't word-wrap radio button text
(TIM_NEW, _("Let the device generate a completely new seed randomly")),
DIR diff --git a/plugins/trezor/qt_generic.py b/plugins/trezor/qt_generic.py
t@@ -194,7 +194,7 @@ class QtPlugin(QtPluginBase):
if type(keystore) == self.keystore_class:
def show_address():
keystore.thread.add(partial(self.show_address, wallet, keystore, addrs[0]))
- menu.addAction(_("Show on %s") % self.device, show_address)
+ menu.addAction(_("Show on {}").format(self.device), show_address)
break
def show_settings_dialog(self, window, keystore):
t@@ -293,7 +293,7 @@ class SettingsDialog(WindowModalDialog):
their PIN.'''
def __init__(self, window, plugin, keystore, device_id):
- title = _("%s Settings") % plugin.device
+ title = _("{} Settings").format(plugin.device)
super(SettingsDialog, self).__init__(window, title)
self.setMaximumWidth(540)
t@@ -464,9 +464,9 @@ class SettingsDialog(WindowModalDialog):
settings_glayout = QGridLayout()
# Settings tab - Label
- label_msg = QLabel(_("Name this %s. If you have mutiple devices "
+ label_msg = QLabel(_("Name this {}. If you have mutiple devices "
"their labels help distinguish them.")
- % plugin.device)
+ .format(plugin.device))
label_msg.setWordWrap(True)
label_label = QLabel(_("Device Label"))
label_edit = QLineEdit()
t@@ -489,7 +489,7 @@ class SettingsDialog(WindowModalDialog):
pin_msg = QLabel(_("PIN protection is strongly recommended. "
"A PIN is your only protection against someone "
"stealing your bitcoins if they obtain physical "
- "access to your %s.") % plugin.device)
+ "access to your {}.").format(plugin.device))
pin_msg.setWordWrap(True)
pin_msg.setStyleSheet("color: red")
settings_glayout.addWidget(pin_msg, 3, 1, 1, -1)
t@@ -504,8 +504,8 @@ class SettingsDialog(WindowModalDialog):
homescreen_clear_button.clicked.connect(clear_homescreen)
homescreen_msg = QLabel(_("You can set the homescreen on your "
"device to personalize it. You must "
- "choose a %d x %d monochrome black and "
- "white image.") % (hs_rows, hs_cols))
+ "choose a {} x {} monochrome black and "
+ "white image.").format(hs_rows, hs_cols))
homescreen_msg.setWordWrap(True)
settings_glayout.addWidget(homescreen_label, 4, 0)
settings_glayout.addWidget(homescreen_change_button, 4, 1)
t@@ -548,7 +548,7 @@ class SettingsDialog(WindowModalDialog):
clear_pin_button.clicked.connect(clear_pin)
clear_pin_warning = QLabel(
_("If you disable your PIN, anyone with physical access to your "
- "%s device can spend your bitcoins.") % plugin.device)
+ "{} device can spend your bitcoins.").format(plugin.device))
clear_pin_warning.setWordWrap(True)
clear_pin_warning.setStyleSheet("color: red")
advanced_glayout.addWidget(clear_pin_button, 0, 2)
DIR diff --git a/plugins/trustedcoin/qt.py b/plugins/trustedcoin/qt.py
t@@ -173,7 +173,7 @@ class Plugin(TrustedCoinPlugin):
i += 1
n = wallet.billing_info.get('tx_remaining', 0)
- grid.addWidget(QLabel(_("Your wallet has %d prepaid transactions.")%n), i, 0)
+ grid.addWidget(QLabel(_("Your wallet has {} prepaid transactions.").format(n)), i, 0)
vbox.addLayout(Buttons(CloseButton(d)))
d.exec_()
DIR diff --git a/plugins/trustedcoin/trustedcoin.py b/plugins/trustedcoin/trustedcoin.py
t@@ -430,13 +430,13 @@ class TrustedCoinPlugin(BasePlugin):
wizard.storage.put('x2/', k2.dump())
wizard.storage.write()
msg = [
- _("Your wallet file is: %s.")%os.path.abspath(wizard.storage.path),
+ _("Your wallet file is: {}.").format(os.path.abspath(wizard.storage.path)),
_("You need to be online in order to complete the creation of "
"your wallet. If you generated your seed on an offline "
- 'computer, click on "%s" to close this window, move your '
+ 'computer, click on "{}" to close this window, move your '
"wallet file to an online computer, and reopen it with "
- "Electrum.") % _('Cancel'),
- _('If you are online, click on "%s" to continue.') % _('Next')
+ "Electrum.").format(_('Cancel')),
+ _('If you are online, click on "{}" to continue.').format(_('Next'))
]
msg = '\n\n'.join(msg)
wizard.stack = []