diff --git a/src/calibre/devices/mtp/test.py b/src/calibre/devices/mtp/test.py index 705d9bdd2a..6d4dcf03bb 100644 --- a/src/calibre/devices/mtp/test.py +++ b/src/calibre/devices/mtp/test.py @@ -9,6 +9,7 @@ __docformat__ = 'restructuredtext en' import unittest +from calibre.constants import iswindows, islinux from calibre.utils.icu import lower from calibre.devices.mtp.driver import MTP_DEVICE from calibre.devices.scanner import DeviceScanner @@ -77,6 +78,11 @@ class TestDeviceInteraction(unittest.TestCase): with self.assertRaises(ValueError): self.dev.create_folder(root_file[0], 'sub-folder') + def test_memory_leaks(self): + if not (iswindows or islinux): + self.skipTest('Can only test for leaks on windows and linux') + from calibre.utils.mem import memory + def tests(): return unittest.TestLoader().loadTestsFromTestCase(TestDeviceInteraction) diff --git a/src/calibre/devices/mtp/unix/driver.py b/src/calibre/devices/mtp/unix/driver.py index 09bb9ccace..1ff87eb974 100644 --- a/src/calibre/devices/mtp/unix/driver.py +++ b/src/calibre/devices/mtp/unix/driver.py @@ -53,7 +53,7 @@ class MTP_DEVICE(MTPDeviceBase): self.progress_reporter(p) @synchronous - def detect_managed_devices(self, devices_on_system): + def detect_managed_devices(self, devices_on_system, force_refresh=False): if self.libmtp is None: return None # First remove blacklisted devices. devs = set() @@ -74,6 +74,8 @@ class MTP_DEVICE(MTPDeviceBase): devs = devs - self.ejected_devices # Now check for MTP devices + if force_refresh: + self.detect_cache = {} cache = self.detect_cache for d in devs: ans = cache.get(d, None) diff --git a/src/calibre/devices/mtp/windows/driver.py b/src/calibre/devices/mtp/windows/driver.py index 7a01bf19b9..91abe228ae 100644 --- a/src/calibre/devices/mtp/windows/driver.py +++ b/src/calibre/devices/mtp/windows/driver.py @@ -73,12 +73,13 @@ class MTP_DEVICE(MTPDeviceBase): self.wpd.uninit() @same_thread - def detect_managed_devices(self, devices_on_system): + def detect_managed_devices(self, devices_on_system, force_refresh=False): if self.wpd is None: return None devices_on_system = frozenset(devices_on_system) - if (devices_on_system != self.previous_devices_on_system or time.time() - - self.last_refresh_devices_time > 10): + if (force_refresh or + devices_on_system != self.previous_devices_on_system or + time.time() - self.last_refresh_devices_time > 10): self.previous_devices_on_system = devices_on_system self.last_refresh_devices_time = time.time() try: diff --git a/src/calibre/translations/calibre.pot b/src/calibre/translations/calibre.pot index c8978082cd..7c00385294 100644 --- a/src/calibre/translations/calibre.pot +++ b/src/calibre/translations/calibre.pot @@ -4,9 +4,9 @@ # msgid "" msgstr "" -"Project-Id-Version: calibre 0.8.65\n" -"POT-Creation-Date: 2012-08-17 09:50+IST\n" -"PO-Revision-Date: 2012-08-17 09:50+IST\n" +"Project-Id-Version: calibre 0.8.66\n" +"POT-Creation-Date: 2012-08-24 10:47+IST\n" +"PO-Revision-Date: 2012-08-24 10:47+IST\n" "Last-Translator: Automatically generated\n" "Language-Team: LANGUAGE\n" "MIME-Version: 1.0\n" @@ -24,14 +24,16 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/db/cache.py:106 #: /home/kovid/work/calibre/src/calibre/db/cache.py:109 #: /home/kovid/work/calibre/src/calibre/db/cache.py:120 -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:345 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:346 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:347 #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:100 #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:101 #: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:74 #: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:77 #: /home/kovid/work/calibre/src/calibre/devices/kobo/books.py:24 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:656 +#: /home/kovid/work/calibre/src/calibre/devices/mtp/unix/driver.py:165 +#: /home/kovid/work/calibre/src/calibre/devices/mtp/windows/driver.py:151 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:70 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:71 #: /home/kovid/work/calibre/src/calibre/devices/prs500/books.py:267 @@ -249,7 +251,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:197 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:288 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:311 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:215 msgid "Preferences" msgstr "" @@ -827,12 +829,12 @@ msgstr "" msgid "Enabled plugins" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:496 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:503 #, python-format msgid "Initialization of plugin %s failed with traceback:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:576 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:583 msgid "" " %prog options\n" "\n" @@ -840,31 +842,31 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:582 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:589 msgid "Add a plugin by specifying the path to the zip file containing it." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:584 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:591 msgid "For plugin developers: Path to the directory where you are developing the plugin. This command will automatically zip up the plugin and update it in calibre." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:588 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:595 msgid "Remove a custom plugin by name. Has no effect on builtin plugins" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:590 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:597 msgid "Customize plugin. Specify name of plugin and customization string separated by a comma." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:592 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:599 msgid "List all installed plugins" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:594 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:601 msgid "Enable the named plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:596 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:603 msgid "Disable the named plugin" msgstr "" @@ -919,15 +921,15 @@ msgstr "" msgid "Communicate with Android phones." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:188 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:189 msgid "Comma separated list of directories to send e-books to on the device. The first one that exists will be used" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:285 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:286 msgid "Communicate with S60 phones." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:304 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:305 msgid "Communicate with WebOS tablets." msgstr "" @@ -1033,9 +1035,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:471 #: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:773 #: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:792 -#: /home/kovid/work/calibre/src/calibre/devices/smart_device_app/driver.py:244 -#: /home/kovid/work/calibre/src/calibre/devices/smart_device_app/driver.py:250 -#: /home/kovid/work/calibre/src/calibre/devices/smart_device_app/driver.py:284 +#: /home/kovid/work/calibre/src/calibre/devices/smart_device_app/driver.py:247 +#: /home/kovid/work/calibre/src/calibre/devices/smart_device_app/driver.py:253 +#: /home/kovid/work/calibre/src/calibre/devices/smart_device_app/driver.py:287 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1061 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1067 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1102 @@ -1109,8 +1111,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:264 #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:268 #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:324 -#: /home/kovid/work/calibre/src/calibre/devices/smart_device_app/driver.py:805 -#: /home/kovid/work/calibre/src/calibre/devices/smart_device_app/driver.py:807 +#: /home/kovid/work/calibre/src/calibre/devices/smart_device_app/driver.py:857 +#: /home/kovid/work/calibre/src/calibre/devices/smart_device_app/driver.py:859 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:277 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:279 msgid "Transferring books to device..." @@ -1120,8 +1122,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:344 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:480 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:515 -#: /home/kovid/work/calibre/src/calibre/devices/smart_device_app/driver.py:818 -#: /home/kovid/work/calibre/src/calibre/devices/smart_device_app/driver.py:829 +#: /home/kovid/work/calibre/src/calibre/devices/smart_device_app/driver.py:870 +#: /home/kovid/work/calibre/src/calibre/devices/smart_device_app/driver.py:881 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:301 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:332 msgid "Adding books to device metadata listing..." @@ -1143,8 +1145,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:374 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:468 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:475 -#: /home/kovid/work/calibre/src/calibre/devices/smart_device_app/driver.py:849 -#: /home/kovid/work/calibre/src/calibre/devices/smart_device_app/driver.py:855 +#: /home/kovid/work/calibre/src/calibre/devices/smart_device_app/driver.py:901 +#: /home/kovid/work/calibre/src/calibre/devices/smart_device_app/driver.py:907 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:366 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:371 msgid "Removing books from device metadata listing..." @@ -1577,7 +1579,7 @@ msgstr "" msgid "Communicate with MTP devices" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/mtp/windows/driver.py:43 +#: /home/kovid/work/calibre/src/calibre/devices/mtp/windows/driver.py:63 msgid "The Windows Portable Devices service is not available on your computer. You may need to install Windows Media Player 11 or newer and/or restart your computer" msgstr "" @@ -1707,11 +1709,11 @@ msgstr "" msgid "Set this option if you want the author on the Sony to appear the same way the T1 sets it. This means it will only show the first author for books with multiple authors. Leave this disabled if you use Metadata Plugboards." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/smart_device_app/driver.py:55 +#: /home/kovid/work/calibre/src/calibre/devices/smart_device_app/driver.py:54 msgid "SmartDevice" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/smart_device_app/driver.py:57 +#: /home/kovid/work/calibre/src/calibre/devices/smart_device_app/driver.py:56 msgid "Communicate with Smart Device apps" msgstr "" @@ -1764,16 +1766,30 @@ msgstr "" msgid "If this box is checked, calibre will automatically disconnect if a connected device does nothing for %d minutes. Unchecking this box disables this timeout, so calibre will never automatically disconnect." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/smart_device_app/driver.py:563 +#: /home/kovid/work/calibre/src/calibre/devices/smart_device_app/driver.py:591 #, python-format msgid "Too many connection attempts from %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/smart_device_app/driver.py:671 +#: /home/kovid/work/calibre/src/calibre/devices/smart_device_app/driver.py:705 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:95 msgid "Get device information..." msgstr "" +#: /home/kovid/work/calibre/src/calibre/devices/smart_device_app/driver.py:976 +#, python-format +msgid "Invalid port in options: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/smart_device_app/driver.py:986 +#, python-format +msgid "Failed to connect to port %d. Try a different value." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/smart_device_app/driver.py:999 +msgid "Failed to allocate a random port" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/devices/sne/driver.py:17 msgid "Communicate with the Samsung SNE eBook reader." msgstr "" @@ -3504,7 +3520,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/toc.py:15 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1281 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:208 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/toc.py:217 msgid "Table of Contents" msgstr "" @@ -4463,7 +4479,7 @@ msgid "Create a catalog of the books in your calibre library" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:106 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:627 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:639 msgid "Cannot convert" msgstr "" @@ -4925,7 +4941,7 @@ msgid "Move to next match" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/next_match.py:13 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:213 msgid "F3" msgstr "" @@ -4951,7 +4967,7 @@ msgid "Shift+N" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/next_match.py:27 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:222 msgid "Shift+F3" msgstr "" @@ -5549,8 +5565,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:86 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/device_category_editor_ui.py:80 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/device_category_editor_ui.py:82 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:583 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:588 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:584 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:589 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:101 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:103 @@ -5592,7 +5608,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/store/search/search_ui.py:143 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/search_ui.py:149 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/store_dialog_ui.py:75 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:198 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:200 msgid "..." msgstr "" @@ -6604,7 +6620,7 @@ msgid "
When calibre removes inter paragraph spacing, it automatically sets a
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:203
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:556
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:557
msgid "No change"
msgstr ""
@@ -6759,7 +6775,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:47
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:98
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:207
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:209
msgid "Metadata"
msgstr ""
@@ -6835,7 +6851,7 @@ msgid "Change the title of this book"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:166
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:548
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:549
msgid "&Author(s): "
msgstr ""
@@ -6848,7 +6864,7 @@ msgid "Change the author(s) of this book. Multiple authors should be separated b
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:169
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:558
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:559
msgid "&Publisher: "
msgstr ""
@@ -6857,13 +6873,13 @@ msgid "Ta&gs: "
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:171
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:560
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:561
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1091
msgid "Tags categorize the book. This is particularly useful while searching.
They can be any words or phrases, separated by commas."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:172
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:567
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:568
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:449
msgid "&Series:"
@@ -6871,8 +6887,8 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:173
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:174
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:568
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:569
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:570
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:448
msgid "List of known series. You can add new series."
msgstr ""
@@ -8420,7 +8436,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:122
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:523
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:670
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:672
msgid "No matches found"
msgstr ""
@@ -8482,7 +8498,7 @@ msgid "Manage authors"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:89
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:624
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:625
msgid "&Search for:"
msgstr ""
@@ -8598,7 +8614,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:880
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/tweaks.py:344
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:212
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:214
msgid "Copy to clipboard"
msgstr ""
@@ -8716,7 +8732,7 @@ msgid ""
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1020
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:614
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:615
msgid "Delete saved search/replace"
msgstr ""
@@ -8742,77 +8758,77 @@ msgstr ""
msgid "That saved search/replace already exists and will be overwritten. Are you sure?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:547
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:548
msgid "Edit Meta information"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:549
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:550
msgid "A&utomatically set author sort"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:550
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:551
msgid "&Swap title and author"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:551
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:552
msgid "Author s&ort: "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:552
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:553
msgid "Specify how the author(s) of this book should be sorted. For example Charles Dickens should be sorted as Dickens, Charles."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:553
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:554
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1049
msgid "&Rating:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:554
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:555
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:556
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1050
msgid "Rating of this book. 0-5 stars"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:557
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:558
msgid " stars"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:559
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:560
msgid "Add ta&gs: "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:561
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:562
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:563
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:188
msgid "Open Tag Editor"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:563
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:564
msgid "&Remove tags:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:564
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:565
msgid "Comma separated list of tags to remove from the books. "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:565
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:566
msgid "Check this box to remove all tags from the books."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:566
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:591
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:567
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:592
msgid "Remove &all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:570
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:571
msgid "If checked, the series will be cleared"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:571
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:572
msgid "&Clear series"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:572
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:573
msgid ""
"If not checked, the series number for the books will be set to 1.\n"
"If checked, selected books will be automatically numbered, in the order\n"
@@ -8820,259 +8836,259 @@ msgid ""
"Book A will have series number 1 and Book B series number 2."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:576
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:577
msgid "&Automatically number books in this series"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:577
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:578
msgid ""
"Series will normally be renumbered from the highest number in the database\n"
"for that series. Checking this box will tell calibre to start numbering\n"
"from the value in the box"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:580
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:581
msgid "&Force numbers to start with:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:581
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:582
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1377
msgid "&Date:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:582
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:583
msgid "d MMM yyyy"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:584
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:589
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:585
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:590
msgid "&Apply date"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:585
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:586
msgid "&Published:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:587
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:588
msgid "Clear published date"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:590
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:591
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1154
msgid "&Languages:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:592
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:593
msgid "Remove &format:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:593
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:594
msgid "When doing a same format to same format conversion, for e.g., EPUB to EPUB, calibre saves the original EPUB as ORIGINAL_EPUB. This option tells calibre to restore the EPUB from ORIGINAL_EPUB. Useful if you did a bulk conversion of a large number of books and something went wrong."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:594
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:595
msgid "Restore pre conversion &originals, if available"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:595
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:596
msgid ""
"Force the title to be in title case. If both this and swap authors are checked,\n"
"title and author are swapped before the title case is set"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:597
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:598
msgid "Change title to title &case"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:598
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:599
msgid "Update title sort based on the current title. This will be applied only after other changes to title."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:599
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:600
msgid "Update &title sort"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:600
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:601
msgid ""
"Remove stored conversion settings for the selected books.\n"
"\n"
"Future conversion of these books will use the default settings."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:603
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:604
msgid "Remove &stored conversion settings for the selected books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:604
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:605
msgid "Change &cover"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:605
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:606
msgid "&Generate default cover"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:606
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:607
msgid "&Remove cover"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:607
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:608
msgid "Set from &ebook file(s)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:608
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:609
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:569
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:734
msgid "&Basic metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:609
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:610
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:576
msgid "&Custom metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:610
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:611
msgid "Load searc&h/replace:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:611
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:612
msgid "Select saved search/replace to load."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:612
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:613
msgid "Save current search/replace"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:613
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:614
msgid "Sa&ve"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:615
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:616
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64
msgid "Delete"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:616
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:617
msgid "Search &field:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:617
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:618
msgid "The name of the field that you want to search"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:618
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:619
msgid "Search &mode:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:619
-msgid "Choose whether to use basic text matching or advanced regular expression matching"
-msgstr ""
-
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:620
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:642
-msgid "Identifier type:"
+msgid "Choose whether to use basic text matching or advanced regular expression matching"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:621
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:643
-msgid "Choose which identifier type to operate upon"
+msgid "Identifier type:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:622
-msgid "Te&mplate:"
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:644
+msgid "Choose which identifier type to operate upon"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:623
+msgid "Te&mplate:"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:624
msgid "Enter a template to be used as the source for the search/replace"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:625
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:626
msgid "Enter what you are looking for, either plain text or a regular expression, depending on the mode"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:626
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:627
msgid "Check this box if the search string must match exactly upper and lower case. Uncheck it if case is to be ignored"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:627
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:628
msgid "Cas&e sensitive"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:628
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629
msgid "&Replace with:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:630
msgid "The replacement text. The matched search text will be replaced with this string"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:630
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:631
msgid "&Apply function after replace:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:631
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:632
msgid ""
"Specify how the text is to be processed after matching and replacement. In character mode, the entire\n"
"field is processed. In regular expression mode, only the matched text is processed"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:633
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:634
msgid "&Destination field:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:634
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:635
msgid ""
"The field that the text will be put into after all replacements.\n"
"If blank, the source field is used if the field is modifiable"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:636
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:637
msgid "M&ode:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:637
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:638
msgid "Specify how the text should be copied into the destination."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:638
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:639
msgid ""
"Specifies whether result items should be split into multiple values or\n"
"left as single values. This option has the most effect when the source field is\n"
"not multiple and the destination field is multiple"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:641
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:642
msgid "Split &result"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:644
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:645
msgid "For multiple-valued fields, sho&w"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:645
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:646
msgid "values starting a&t"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:646
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:647
msgid "with values separated b&y"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:647
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:648
msgid "Used when displaying test results to separate values in multiple-valued fields"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:648
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:649
msgid "Test text"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:649
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:650
msgid "Test result"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:650
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:651
msgid "Your test:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:651
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:652
msgid "&Search and replace"
msgstr ""
@@ -9096,7 +9112,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:65
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:213
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/smartdevice_ui.py:68
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/smartdevice_ui.py:83
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:148
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:81
msgid "&Show password"
@@ -9943,33 +9959,79 @@ msgstr ""
msgid "Choose formats"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/smartdevice.py:20
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/smartdevice.py:21
msgid "Use a password if calibre is running on a network that is not secure. For example, if you run calibre on a laptop, use that laptop in an airport, and want to connect your smart device to calibre, you should use a password."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/smartdevice.py:26
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/smartdevice.py:27
msgid "Check this box if you want calibre to automatically start the smart device interface when calibre starts. You should not do this if you are using a network that is not secure and you are not setting a password."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/smartdevice_ui.py:63
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/smartdevice.py:33
+msgid "Check this box if you want calibre to use a fixed network port. Normally you will not need to do this. However, if your device consistently fails to connect to calibre, try checking this box and entering a number."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/smartdevice.py:39
+msgid "Try 9090. If calibre says that it fails to connect to the port, try another number. You can use any number between 8,000 and 32,000."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/smartdevice.py:79
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/smartdevice.py:85
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/smartdevice.py:90
+msgid "Invalid port number"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/smartdevice.py:80
+msgid "You must provide a port number."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/smartdevice.py:86
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/smartdevice.py:91
+msgid "The port must be a number between 8000 and 32000."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/smartdevice.py:106
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:394
+msgid "Problem starting the wireless device"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/smartdevice.py:107
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:395
+#, python-format
+msgid "The wireless device driver did not start. It said \"%s\""
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/smartdevice_ui.py:78
msgid "Smart device control"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/smartdevice_ui.py:64
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/smartdevice_ui.py:79
msgid ""
"
Start wireless device connections.\n" "
You may see some messages from your computer's firewall or anti-virus manager asking you if it is OK for calibre to connect to the network. Please answer yes. If you do not, wireless connections will not work." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/smartdevice_ui.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/smartdevice_ui.py:81 msgid "Optional password for security" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/smartdevice_ui.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/smartdevice_ui.py:82 msgid "Optional &password:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/smartdevice_ui.py:69 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/smartdevice_ui.py:84 +msgid "Optional &fixed port:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/smartdevice_ui.py:85 +msgid "Optional port number" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/smartdevice_ui.py:86 +msgid "&Use a fixed port" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/smartdevice_ui.py:87 msgid "&Automatically allow connections at calibre startup" msgstr "" @@ -11042,24 +11104,24 @@ msgid "LRF Viewer toolbar" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:131 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:504 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:521 msgid "Next Page" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:505 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:522 msgid "Previous Page" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:941 #: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:202 msgid "Back" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:134 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:203 msgid "Forward" msgstr "" @@ -11068,7 +11130,7 @@ msgid "Next match" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:136 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:208 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:210 msgid "Open ebook" msgstr "" @@ -11142,7 +11204,7 @@ msgid "Bad database location %r. calibre will now quit." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:194 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:530 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:542 msgid "Corrupted database" msgstr "" @@ -12686,7 +12748,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:187 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:132 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:223 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:243 msgid " or " msgstr "" @@ -13508,7 +13570,7 @@ msgid "Here you can control how calibre will save your books when you click the msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:467 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:479 msgid "Failed to start content server" msgstr "" @@ -14716,20 +14778,20 @@ msgstr "" msgid "Clear the current search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:378 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:370 msgid "Debug mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:379 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:371 #, python-format msgid "You have started calibre in debug mode. After you quit calibre, the debug log will be available in the file: %s
The log will be displayed automatically." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:399 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:411 msgid "Failed to start Content Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:400 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:412 #, python-format msgid "" "Could not start the content server. Error:\n" @@ -14737,21 +14799,21 @@ msgid "" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:543 #, python-format msgid "The library database at %s appears to be corrupted. Do you want calibre to try and rebuild it automatically? The rebuild may not be completely successful." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:615 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:627 msgid "Conversion Error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:636 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:648 #, python-format msgid "
Failed to convert: %s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:637
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:649
msgid ""
"\n"
" Many older ebook reader devices are incapable of displaying\n"
@@ -14768,82 +14830,82 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:651
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:663
msgid "Conversion Failed"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:663
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:675
msgid "Recipe Disabled"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:696
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:708
msgid "Failed"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:728
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:740
msgid "There are active jobs. Are you sure you want to quit?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:731
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:743
msgid ""
" is communicating with the device!
\n"
" Quitting may cause corruption on the device.
\n"
" Are you sure you want to quit?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:735
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:747
msgid "Active jobs"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:805
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:817
msgid "will keep running in the system tray. To close it, choose Quit in the context menu of the system tray."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/update.py:74
+#: /home/kovid/work/calibre/src/calibre/gui2/update.py:78
#, python-format
msgid "%(app)s has been updated to version %(ver)s. See the new features."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/update.py:80
+#: /home/kovid/work/calibre/src/calibre/gui2/update.py:84
msgid "Update available!"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/update.py:85
+#: /home/kovid/work/calibre/src/calibre/gui2/update.py:89
msgid "Show this notification for future updates"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/update.py:90
+#: /home/kovid/work/calibre/src/calibre/gui2/update.py:94
msgid "&Get update"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/update.py:94
+#: /home/kovid/work/calibre/src/calibre/gui2/update.py:98
msgid "Update &plugins"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/update.py:153
+#: /home/kovid/work/calibre/src/calibre/gui2/update.py:157
#, python-format
msgid " (%d plugin updates)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/update.py:156
+#: /home/kovid/work/calibre/src/calibre/gui2/update.py:160
msgid "Update found"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/update.py:159
+#: /home/kovid/work/calibre/src/calibre/gui2/update.py:163
msgid "updated plugins"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/update.py:187
-#: /home/kovid/work/calibre/src/calibre/gui2/update.py:192
+#: /home/kovid/work/calibre/src/calibre/gui2/update.py:191
+#: /home/kovid/work/calibre/src/calibre/gui2/update.py:196
msgid "Plugin Updates"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/update.py:190
+#: /home/kovid/work/calibre/src/calibre/gui2/update.py:194
#, python-format
msgid "There are %d plugin updates available"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/update.py:194
+#: /home/kovid/work/calibre/src/calibre/gui2/update.py:198
msgid "Install and configure user plugins"
msgstr ""
@@ -14903,7 +14965,7 @@ msgid "Options to customize the ebook viewer"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config.py:30
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:1046
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:1050
msgid "Remember last used window size"
msgstr ""
@@ -15241,44 +15303,44 @@ msgstr ""
msgid "No results found for:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:470
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:487
msgid "&Lookup in dictionary"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:475
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:492
msgid "View &image..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:478
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:495
msgid "&Search for next occurrence"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:483
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:500
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:138
msgid "Go to..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:495
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:512
msgid "Next Section"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:496
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:513
msgid "Previous Section"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:498
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:515
msgid "Document Start"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:499
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:516
msgid "Document End"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:501
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:518
msgid "Section Start"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:502
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:519
msgid "Section End"
msgstr ""
@@ -15375,206 +15437,206 @@ msgstr ""
msgid "Switch to flow mode - where the text is not broken up into pages"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:198
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:200
msgid "Search for text in book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:240
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:242
#, python-format
msgid "Toggle full screen (%s)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:277
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:279
msgid "Full screen mode"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:278
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:280
msgid "Right click to show controls"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:279
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:281
msgid "Tap in the left or right page margin to turn pages"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:280
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:282
msgid "Press Esc to quit"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:294
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:296
msgid "Show/hide controls"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:323
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:325
msgid "Print Preview"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:333
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:335
msgid "Clear list of recently opened books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:444
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:446
#, python-format
msgid "Connecting to dict.org to lookup: %s…"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:578
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:580
msgid "No such location"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:579
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:581
msgid "The location pointed to by this item does not exist."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:630
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:632
msgid "Choose ebook"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:631
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:633
msgid "Ebooks"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:651
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:653
#, python-format
msgid ""
"Make font size %(which)s\n"
"Current magnification: %(mag).1f"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:653
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:655
msgid "larger"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:655
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:657
msgid "smaller"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:671
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:673
#, python-format
msgid "No matches found for: %s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:720
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:722
msgid "Loading flow..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:798
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:800
#, python-format
msgid "Laying out %s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:850
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:852
#, python-format
msgid "Bookmark #%d"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:854
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:856
msgid "Add bookmark"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:855
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:857
msgid "Enter title for bookmark:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:866
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:868
msgid "Manage Bookmarks"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:908
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:910
msgid "Loading ebook..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:920
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:922
msgid "Could not open ebook"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:1033
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:1037
msgid "Options to control the ebook viewer"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:1040
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:1044
msgid "If specified, viewer window will try to come to the front when started."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:1043
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:1047
msgid "If specified, viewer window will try to open full screen when started."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:1048
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:1052
msgid "Print javascript alert and console messages to the console"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:1050
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:1054
msgid "The position at which to open the specified book. The position is a location as displayed in the top left corner of the viewer."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:1057
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:1061
msgid ""
"%prog [options] file\n"
"\n"
"View an ebook.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:196
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:198
msgid "E-book Viewer"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:197
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:199
msgid "Close dictionary"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:199
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:201
msgid "toolBar"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:202
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:204
msgid "Next page"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:203
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
msgid "Previous page"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:204
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:206
msgid "Font size larger"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:207
msgid "Font size smaller"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:209
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:211
msgid "Find next"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:210
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:212
msgid "Find next occurrence"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:214
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:216
msgid "Reference Mode"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:215
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:217
msgid "Bookmark"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:216
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:218
msgid "Toggle full screen"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:217
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:219
msgid "Print"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:218
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:220
msgid "Find previous"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:219
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:221
msgid "Find previous occurrence"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:221
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:223
msgid "Toggle Paged mode"
msgstr ""