diff --git a/src/calibre/ebooks/chardet/__init__.py b/src/calibre/ebooks/chardet/__init__.py
index dd279c6559..f9bca3c8d4 100644
--- a/src/calibre/ebooks/chardet/__init__.py
+++ b/src/calibre/ebooks/chardet/__init__.py
@@ -18,7 +18,7 @@
__version__ = "1.0"
-import re
+import re, codecs
def detect(aBuf):
import calibre.ebooks.chardet.universaldetector as universaldetector
@@ -83,9 +83,11 @@ def xml_to_unicode(raw, verbose=False, strip_encoding_pats=False,
if not raw:
return u'', encoding
if not isinstance(raw, unicode):
- if raw.startswith('\xff\xfe'):
+ if raw.startswith(codecs.BOM_UTF8):
+ raw, encoding = raw.decode('utf-8')[1:], 'utf-8'
+ elif raw.startswith(codecs.BOM_UTF16_LE):
raw, encoding = raw.decode('utf-16-le')[1:], 'utf-16-le'
- elif raw.startswith('\xfe\xff'):
+ elif raw.startswith(codecs.BOM_UTF16_BE):
raw, encoding = raw.decode('utf-16-be')[1:], 'utf-16-be'
if not isinstance(raw, unicode):
for pat in ENCODING_PATS:
diff --git a/src/calibre/ebooks/fb2/input.py b/src/calibre/ebooks/fb2/input.py
index 1f9a3ffe95..b019873d39 100644
--- a/src/calibre/ebooks/fb2/input.py
+++ b/src/calibre/ebooks/fb2/input.py
@@ -46,15 +46,19 @@ class FB2Input(InputFormatPlugin):
log.debug('Parsing XML...')
raw = stream.read().replace('\0', '')
raw = xml_to_unicode(raw, strip_encoding_pats=True,
- assume_utf8=True)[0]
+ assume_utf8=True, resolve_entities=True)[0]
try:
doc = etree.fromstring(raw)
except etree.XMLSyntaxError:
try:
doc = etree.fromstring(raw, parser=RECOVER_PARSER)
+ if doc is None:
+ raise Exception('parse failed')
except:
doc = etree.fromstring(raw.replace('& ', '&'),
parser=RECOVER_PARSER)
+ if doc is None:
+ raise ValueError('The FB2 file is not valid XML')
stylesheets = doc.xpath('//*[local-name() = "stylesheet" and @type="text/css"]')
css = ''
for s in stylesheets:
diff --git a/src/calibre/gui2/tools.py b/src/calibre/gui2/tools.py
index d18cc61baf..a5f0f52425 100644
--- a/src/calibre/gui2/tools.py
+++ b/src/calibre/gui2/tools.py
@@ -61,7 +61,8 @@ def convert_single_ebook(parent, db, book_ids, auto_conversion=False, out_format
dtitle = unicode(mi.title)
except:
dtitle = repr(mi.title)
- desc = _('Convert book %d of %d (%s)') % (i + 1, total, dtitle)
+ desc = _('Convert book %(num)d of %(total)d (%(title)s)') % \
+ {'num':i + 1, 'total':total, 'title':dtitle}
recs = cPickle.loads(d.recommendations)
if d.opf_file is not None:
diff --git a/src/calibre/library/server/browse.py b/src/calibre/library/server/browse.py
index afc20ba21c..37799c4cbc 100644
--- a/src/calibre/library/server/browse.py
+++ b/src/calibre/library/server/browse.py
@@ -640,8 +640,8 @@ class BrowseServer(object):
if fmt:
href = self.opts.url_prefix + '/get/%s/%s_%d.%s'%(
fmt, fname, id_, fmt)
- rt = xml(_('Read %s in the %s format')%(args['title'],
- fmt.upper()), True)
+ rt = xml(_('Read %(title)s in the %(fmt)s format')% \
+ {'title':args['title'], 'fmt':fmt.upper()}, True)
args['get_button'] = \
'%s' % \
diff --git a/src/calibre/translations/cs.po b/src/calibre/translations/cs.po
index 77231346a8..3d4de14c39 100644
--- a/src/calibre/translations/cs.po
+++ b/src/calibre/translations/cs.po
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: calibre\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2011-01-02 23:55+0000\n"
-"PO-Revision-Date: 2011-01-04 08:51+0000\n"
-"Last-Translator: TomVal \n"
+"PO-Revision-Date: 2011-01-06 11:10+0000\n"
+"Last-Translator: schunka \n"
"Language-Team: Czech \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-01-05 04:43+0000\n"
+"X-Launchpad-Export-Date: 2011-01-07 04:57+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43
@@ -799,7 +799,7 @@ msgstr "Spojit se s Sanda Bambook eBook čtečkou"
#: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:25
msgid "Li Fanxi"
-msgstr ""
+msgstr "Li Fanxi"
#: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:41
msgid "Device IP Address (restart calibre after changing)"
@@ -1126,11 +1126,11 @@ msgstr "Komunikovat se zařízením Trekstor"
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:251
msgid "Communicate with the EEE Reader"
-msgstr ""
+msgstr "Probíhá spojení se čtečkou EEE Reader."
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:271
msgid "Communicate with the Nextbook Reader"
-msgstr ""
+msgstr "Probíhá spojení se čtečkou Nextbook Reader."
#: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:17
msgid "Communicate with the Nokia 770 internet tablet."
@@ -1174,11 +1174,11 @@ msgstr "Spojit se se Sony eBook reader"
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:61
msgid "All by title"
-msgstr ""
+msgstr "Vše podle názvu"
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:62
msgid "All by author"
-msgstr ""
+msgstr "Vše podle autora"
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:64
msgid ""
@@ -1226,7 +1226,7 @@ msgstr "Spojit se se Sovos reader."
#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:78
msgid "Communicate with the Sunstech EB700 reader."
-msgstr ""
+msgstr "Probíhá spojení se čtečkou Sunstech EB700."
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:258
msgid "Unable to detect the %s disk drive. Try rebooting."
diff --git a/src/calibre/translations/de.po b/src/calibre/translations/de.po
index 6418ab3d7d..a330704198 100644
--- a/src/calibre/translations/de.po
+++ b/src/calibre/translations/de.po
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: de\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-01-02 23:55+0000\n"
-"PO-Revision-Date: 2011-01-01 21:21+0000\n"
-"Last-Translator: Kovid Goyal \n"
+"PO-Revision-Date: 2011-01-07 02:17+0000\n"
+"Last-Translator: heinz beck \n"
"Language-Team: American English \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-01-04 13:52+0000\n"
+"X-Launchpad-Export-Date: 2011-01-07 04:58+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
"Generated-By: pygettext.py 1.5\n"
@@ -943,7 +943,7 @@ msgstr "Kommunikation mit dem PocketBook 301 Reader."
#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:233
msgid "Communicate with the PocketBook 602/603/902/903 reader."
-msgstr ""
+msgstr "verbinden mit PocketBook 602/603/902/903"
#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:252
msgid "Communicate with the PocketBook 701"
@@ -1186,7 +1186,7 @@ msgstr "Kommunikation mit allen Sony eBook Readern."
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:61
msgid "All by title"
-msgstr ""
+msgstr "nach Titel"
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:62
msgid "All by author"
diff --git a/src/calibre/translations/gl.po b/src/calibre/translations/gl.po
index 33708ef88c..597487b7dc 100644
--- a/src/calibre/translations/gl.po
+++ b/src/calibre/translations/gl.po
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: calibre\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2011-01-02 23:55+0000\n"
-"PO-Revision-Date: 2011-01-02 13:21+0000\n"
-"Last-Translator: Calidonia Hibernia \n"
+"PO-Revision-Date: 2011-01-06 14:46+0000\n"
+"Last-Translator: Antón Méixome \n"
"Language-Team: dev@gl.openoffice.org\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-01-04 13:52+0000\n"
+"X-Launchpad-Export-Date: 2011-01-07 04:58+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
"Language: gl\n"
@@ -5749,7 +5749,7 @@ msgstr "Tamaño da mensaxe para a descrición das miniaturas de portada"
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:330
msgid " inch"
-msgstr ""
+msgstr " polgada"
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:331
msgid "&Description note"
@@ -10645,15 +10645,15 @@ msgstr "Nunca"
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:60
msgid "By first letter"
-msgstr ""
+msgstr "Pola primeira letra"
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:60
msgid "Disabled"
-msgstr ""
+msgstr "Desactivado"
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:61
msgid "Partitioned"
-msgstr ""
+msgstr "Particionado"
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:140
msgid "User Interface &layout (needs restart):"
@@ -10709,7 +10709,7 @@ msgstr "Buscar mentres se escribe"
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:152
msgid "Tags browser category partitioning method:"
-msgstr ""
+msgstr "Método de particionado con categorías de etiquetas de navegación:"
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:153
msgid ""
@@ -10719,10 +10719,15 @@ msgid ""
"have a list of fixed-sized groups. Set to disabled\n"
"if you never want subcategories"
msgstr ""
+"Escoller como as subcategorías de etiquetas de navegación se amosan cando\n"
+"hai máis ítems que os do límite. Seleccione por primeira\n"
+"letra para ver unha lista A, B, C. Escolla particionado para\n"
+"ter unha lista de grupos de tamaño fixo. Escolla desactivado\n"
+"se non vai querer nunca subcategorías"
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:158
msgid "Collapse when more items than:"
-msgstr ""
+msgstr "Colapsar cando os ítems son máis de:"
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:159
msgid ""
@@ -10730,6 +10735,10 @@ msgid ""
"up into sub-categories. If the partition method is set to disable, this "
"value is ignored."
msgstr ""
+"Se unha categoría de etiquetas de navegación ten máis ca este número de "
+"ítems, divídese\n"
+"en subcategorías. Se o método de partición se pon como desactivado, "
+"ignorarase este valor."
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:161
msgid "&Toolbar"
@@ -11494,7 +11503,7 @@ msgstr "Mostrar todas as categorías"
#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:300
msgid "Change sub-categorization scheme"
-msgstr ""
+msgstr "Cambiar o esquema de subcategorización"
#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:625
msgid ""
diff --git a/src/calibre/translations/it.po b/src/calibre/translations/it.po
index 73a13b051e..1be0988afd 100644
--- a/src/calibre/translations/it.po
+++ b/src/calibre/translations/it.po
@@ -9,13 +9,13 @@ msgstr ""
"Project-Id-Version: calibre_calibre-it\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-01-02 23:55+0000\n"
-"PO-Revision-Date: 2011-01-02 22:45+0000\n"
-"Last-Translator: Marco Ciampa \n"
+"PO-Revision-Date: 2011-01-06 15:33+0000\n"
+"Last-Translator: Francesco Pasa \n"
"Language-Team: italiano\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-01-04 13:53+0000\n"
+"X-Launchpad-Export-Date: 2011-01-07 04:58+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
"X-Poedit-Bookmarks: -1,-1,-1,-1,-1,1105,-1,1312,-1,-1\n"
"Generated-By: pygettext.py 1.5\n"
@@ -5694,7 +5694,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:330
msgid " inch"
-msgstr ""
+msgstr " pollice"
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:331
msgid "&Description note"
diff --git a/src/calibre/translations/nds.po b/src/calibre/translations/nds.po
index e4d1ad8f1a..80d6f376c3 100644
--- a/src/calibre/translations/nds.po
+++ b/src/calibre/translations/nds.po
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: nds\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-01-02 23:55+0000\n"
-"PO-Revision-Date: 2010-10-18 00:57+0000\n"
-"Last-Translator: Nils-Christoph Fiedler \n"
+"PO-Revision-Date: 2011-01-07 02:48+0000\n"
+"Last-Translator: heinz beck \n"
"Language-Team: German\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-01-04 13:55+0000\n"
+"X-Launchpad-Export-Date: 2011-01-07 04:59+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
"X-Poedit-Country: GERMANY\n"
"X-Poedit-Language: German\n"
diff --git a/src/calibre/translations/pt_BR.po b/src/calibre/translations/pt_BR.po
index af6071797c..26d16546e6 100644
--- a/src/calibre/translations/pt_BR.po
+++ b/src/calibre/translations/pt_BR.po
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: calibre\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2011-01-02 23:55+0000\n"
-"PO-Revision-Date: 2010-12-18 05:47+0000\n"
-"Last-Translator: Kovid Goyal \n"
+"PO-Revision-Date: 2011-01-06 13:01+0000\n"
+"Last-Translator: MoroniGranja \n"
"Language-Team: American English \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-01-04 14:00+0000\n"
+"X-Launchpad-Export-Date: 2011-01-07 04:59+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43
@@ -172,7 +172,7 @@ msgstr "Leitor de metadados"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:266
msgid "Metadata writer"
-msgstr ""
+msgstr "Escritor de metadata"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:296
msgid "Catalog generator"
@@ -589,6 +589,8 @@ msgid ""
"Intended for the Samsung Galaxy and similar tablet devices with a resolution "
"of 600x1280"
msgstr ""
+"Planejado para o Samsung Galaxy e tablets similares com uma resolução "
+"de600x1280"
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:471
msgid "This profile is intended for the Kobo Reader."
@@ -695,7 +697,7 @@ msgstr "Desabilitar a extensão com nome"
#: /home/kovid/work/calibre/src/calibre/debug.py:148
msgid "Debug log"
-msgstr ""
+msgstr "Log de Debug"
#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:13
msgid "Communicate with Android phones."
@@ -808,7 +810,7 @@ msgstr "Comunicar com iTunes."
#: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:24
msgid "Communicate with the Sanda Bambook eBook reader."
-msgstr ""
+msgstr "Comunicar com o leitor de eBooks Sanda Bambook"
#: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:25
msgid "Li Fanxi"
@@ -817,17 +819,22 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:41
msgid "Device IP Address (restart calibre after changing)"
msgstr ""
+"Endereço IP do dispositivo (é necessário reiniciar calibre após modificar)"
#: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:46
msgid ""
"Unable to add book to library directly from Bambook. Please save the book to "
"disk and add the file to library from disk."
msgstr ""
+"Impossível adicionar livro a biblioteca diretamente do Bambook. Favor salvar "
+"o livro no disco e adicionar o arquivo do disco a biblioteca."
#: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:66
msgid ""
"Unable to connect to Bambook, you need to install Bambook library first."
msgstr ""
+"Não foi possível conectar ao Bambook, é necessário instalar a biblioteca "
+"Bambook."
#: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:74
msgid ""
@@ -835,10 +842,13 @@ msgid ""
"If you are trying to connect via Wi-Fi, please make sure the IP address of "
"Bambook has been correctly configured."
msgstr ""
+"Não foi possível conectar ao Bambook. \n"
+"Se você está tentando conectar por Wi-Fi, favor confirmar se o endereço IP "
+"do Bambook foi configurado corretamente."
#: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:111
msgid "Bambook"
-msgstr ""
+msgstr "Bambook"
#: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:217
#: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:233
@@ -899,7 +909,7 @@ msgstr "Enviando metadados ao dispositivo..."
#: /home/kovid/work/calibre/src/calibre/devices/bambook/libbambookcore.py:132
msgid "Bambook SDK has not been installed."
-msgstr ""
+msgstr "Bambook SDK não foi instalado."
#: /home/kovid/work/calibre/src/calibre/devices/binatone/driver.py:17
msgid "Communicate with the Binatone Readme eBook reader."
@@ -938,11 +948,11 @@ msgstr "Comunica-se com o leitor PocketBook 301"
#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:233
msgid "Communicate with the PocketBook 602/603/902/903 reader."
-msgstr ""
+msgstr "Comunicar-se com o PocketBook 602/603/902/903 reader."
#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:252
msgid "Communicate with the PocketBook 701"
-msgstr ""
+msgstr "Comunicar-se com o PocketBook 701"
#: /home/kovid/work/calibre/src/calibre/devices/edge/driver.py:17
msgid "Entourage Edge"
@@ -1069,6 +1079,8 @@ msgid ""
"The Kobo supports only one collection currently: the \"Im_Reading\" list. "
"Create a tag called \"Im_Reading\" "
msgstr ""
+"O Kobo aceita apenas uma coleção atualmente: a lista \"Estou_Lendo\". Crie "
+"uma tag chamada \"Estou_Lendo\" "
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:446
#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:279
@@ -1097,7 +1109,7 @@ msgstr "Comunicar com o Sweex MM300"
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:79
msgid "Communicate with the Digma Q600"
-msgstr ""
+msgstr "Comunicar-se com o Digma Q600"
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:88
msgid "Communicate with the Kogan"
@@ -1110,7 +1122,7 @@ msgstr "Comunicar com o Pandigital Novel"
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:142
msgid "Communicate with the VelocityMicro"
-msgstr ""
+msgstr "Comunicar-se com o VelocityMicro"
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:160
msgid "Communicate with the GM2000"
@@ -1118,23 +1130,23 @@ msgstr "Comunicar com o GM2000"
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:180
msgid "Communicate with the Acer Lumiread"
-msgstr ""
+msgstr "Comunicar-se com o Acer Lumiread"
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:211
msgid "Communicate with the Aluratek Color"
-msgstr ""
+msgstr "Comunicar-se com o Acer Lumiread"
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:231
msgid "Communicate with the Trekstor"
-msgstr ""
+msgstr "Comunicar-se com o Trekstor"
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:251
msgid "Communicate with the EEE Reader"
-msgstr ""
+msgstr "Comunicar-se com o EEE Reader"
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:271
msgid "Communicate with the Nextbook Reader"
-msgstr ""
+msgstr "Comunicar-se com o Nextbook Reader"
#: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:17
msgid "Communicate with the Nokia 770 internet tablet."
@@ -1142,7 +1154,7 @@ msgstr "Comunica-se com o Nokia 770 Internet Tablet."
#: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:40
msgid "Communicate with the Nokia 810/900 internet tablet."
-msgstr ""
+msgstr "Comunicar-se com o internet tablet Nokia 810/900."
#: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:74
msgid "Communicate with the Nokia E52"
@@ -1158,11 +1170,11 @@ msgstr "Comunica-se com o leitor Nook."
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:85
msgid "Nook Color"
-msgstr ""
+msgstr "Nook Color"
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:86
msgid "Communicate with the Nook Color eBook reader."
-msgstr ""
+msgstr "Comunicar-se com o Nook Color."
#: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:17
msgid "Communicate with the Nuut2 eBook reader."
@@ -1178,11 +1190,11 @@ msgstr "Comunica-se com todos os leitores da Sony."
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:61
msgid "All by title"
-msgstr ""
+msgstr "Todos por título"
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:62
msgid "All by author"
-msgstr ""
+msgstr "Todos por autor"
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:64
msgid ""
@@ -1198,6 +1210,9 @@ msgid ""
"to the list to enable them. The collections will be given the name provided "
"after the \":\" character."
msgstr ""
+". Duas coleções especiais estão disponíveis: %s:%s e %s:%s. Adicione estes "
+"valores à lista para habilita-los. As coleções receberão o nome após os dois "
+"pontos (\":\")."
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:190
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/structure.py:68
@@ -1218,7 +1233,7 @@ msgstr "Comunica-se com o leitor Newsmy."
#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:47
msgid "Communicate with the Pico reader."
-msgstr ""
+msgstr "Comunicar-se com o Pico reader."
#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:57
msgid "Communicate with the iPapyrus reader."
@@ -1230,7 +1245,7 @@ msgstr "Comunicar com o leitor Sovos."
#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:78
msgid "Communicate with the Sunstech EB700 reader."
-msgstr ""
+msgstr "Comunicar-se com o Sunstech EB700 reader."
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:258
msgid "Unable to detect the %s disk drive. Try rebooting."
@@ -1254,6 +1269,8 @@ msgid ""
"Unable to detect the %s disk drive. Either the device has already been "
"ejected, or your kernel is exporting a deprecated version of SYSFS."
msgstr ""
+"Não foi possível detectar o disco %s. O dispositivo já foi ejetado, ou o seu "
+"kernel está exportando uma versão deprecada do SYSFS."
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:617
msgid "Unable to mount main memory (Error code: %d)"
@@ -1264,6 +1281,8 @@ msgid ""
"The main memory of %s is read only. This usually happens because of file "
"system errors."
msgstr ""
+"A memória principal de %s é somente leitura. Isto normalmente acontece "
+"devido a erros no sistema de arquivos."
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:816
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:818
@@ -1693,6 +1712,9 @@ msgid ""
"is: %default. Links are only added to the TOC if less than the threshold "
"number of chapters were detected."
msgstr ""
+"Número máximo de links para inserir no sumário. Use 0 para desabilitar. O "
+"padrão é: %default. Links serão adicionados ao sumário somente se o número "
+"encontrado for menor que o limite máximo de capítulos."
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:256
msgid ""
@@ -2076,7 +2098,7 @@ msgstr "Você deve especificar um arquivo do tipo epub"
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/unmanifested.py:17
msgid "Fix unmanifested files"
-msgstr ""
+msgstr "Conserte arquivos sem manifesto."
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/unmanifested.py:21
msgid ""
diff --git a/src/calibre/translations/zh_CN.po b/src/calibre/translations/zh_CN.po
index d040713c09..3a4d979238 100644
--- a/src/calibre/translations/zh_CN.po
+++ b/src/calibre/translations/zh_CN.po
@@ -12904,7 +12904,7 @@ msgstr "其它格式"
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:643
msgid "Read %s in the %s format"
-msgstr "用 %2$s 格式阅读 %1$s"
+msgstr "用 %s 格式阅读 %s"
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:648
msgid "Get"