diff --git a/.project b/.project
deleted file mode 100644
index 684c2fe798..0000000000
--- a/.project
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
- libprs500
-
-
- ipython
-
-
-
- org.python.pydev.PyDevBuilder
-
-
-
-
-
- org.python.pydev.pythonNature
-
-
diff --git a/.pydevproject b/.pydevproject
deleted file mode 100644
index 509137a36a..0000000000
--- a/.pydevproject
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-python 2.6
-
-/calibre-pluginize/src
-
-Default
-
diff --git a/resources/images/news/business_standard.png b/resources/images/news/business_standard.png
new file mode 100644
index 0000000000..1edff420c0
Binary files /dev/null and b/resources/images/news/business_standard.png differ
diff --git a/resources/images/news/lemonde_dip.png b/resources/images/news/lemonde_dip.png
new file mode 100644
index 0000000000..1f3b4c12c0
Binary files /dev/null and b/resources/images/news/lemonde_dip.png differ
diff --git a/setup.py b/setup.py
index b0acff3963..d8bd0267ee 100644
--- a/setup.py
+++ b/setup.py
@@ -41,7 +41,14 @@ def clean_backups():
def main(args=sys.argv):
if len(args) == 1 or args[1] in ('-h', '--help'):
print 'Usage: python', args[0], 'command', '[options]'
- print '\nWhere command is one of:', ', '.join(commands.__all__)
+ print '\nWhere command is one of:'
+ print
+ for x in sorted(commands.__all__):
+ print '%-20s -'%x,
+ c = getattr(commands, x)
+ desc = getattr(c, 'short_description', c.description)
+ print desc
+
print '\nTo get help on a particular command, run:'
print '\tpython', args[0], 'command -h'
return 1
@@ -83,7 +90,7 @@ def main(args=sys.argv):
prints('There were', len(warnings), 'warning(s):')
print
for args, kwargs in warnings:
- prints(*args, **kwargs)
+ prints('*', *args, **kwargs)
print
return 0
diff --git a/setup/__init__.py b/setup/__init__.py
index 714a3bcb85..d7b9d2321d 100644
--- a/setup/__init__.py
+++ b/setup/__init__.py
@@ -111,6 +111,7 @@ class Command(object):
self.b = os.path.basename
self.s = os.path.splitext
self.e = os.path.exists
+ self.orig_euid = os.geteuid() if hasattr(os, 'geteuid') else None
self.real_uid = os.environ.get('SUDO_UID', None)
self.real_gid = os.environ.get('SUDO_GID', None)
self.real_user = os.environ.get('SUDO_USER', None)
@@ -121,19 +122,19 @@ class Command(object):
if self.real_user is not None:
self.info('Dropping privileges to those of', self.real_user+':',
self.real_uid)
+ if self.real_gid is not None:
+ os.setegid(int(self.real_gid))
if self.real_uid is not None:
os.seteuid(int(self.real_uid))
- #if self.real_gid is not None:
- # os.setegid(int(self.real_gid))
def regain_privileges(self):
if not islinux or isosx:
return
- if os.geteuid() != 0:
+ if os.geteuid() != 0 and self.orig_euid == 0:
self.info('Trying to get root privileges')
os.seteuid(0)
- #if os.getegid() != 0:
- # os.setegid(0)
+ if os.getegid() != 0:
+ os.setegid(0)
def pre_sub_commands(self, opts):
pass
diff --git a/setup/build_environment.py b/setup/build_environment.py
index 42fdea5d07..f5bc969581 100644
--- a/setup/build_environment.py
+++ b/setup/build_environment.py
@@ -6,7 +6,7 @@ __license__ = 'GPL v3'
__copyright__ = '2009, Kovid Goyal '
__docformat__ = 'restructuredtext en'
-import os, socket, struct, subprocess
+import os, socket, struct, subprocess, glob
from distutils.spawn import find_executable
from PyQt4 import pyqtconfig
@@ -84,6 +84,7 @@ ft_lib_dirs = []
ft_libs = []
jpg_libs = []
jpg_lib_dirs = []
+poppler_objs = []
fc_inc = '/usr/include/fontconfig'
fc_lib = '/usr/lib'
podofo_inc = '/usr/include/podofo'
@@ -102,7 +103,8 @@ if iswindows:
(r'C:\cygwin\home\kovid\poppler\poppler-build\qt4\src\Release;'
r'C:\cygwin\home\kovid\poppler\poppler-build\Release'))
popplerqt4_lib_dirs = poppler_lib_dirs
- poppler_libs = ['poppler', 'poppler-qt4']
+ poppler_libs = []
+ poppler_objs = glob.glob(r'C:\cygwin\home\kovid\poppler\poppler-build\poppler.dir\Release\*.obj')
popplerqt4_libs = poppler_libs + ['QtCore4', 'QtGui4']
png_inc_dirs = [r'C:\cygwin\home\\kovid\gnuwin32\include']
png_lib_dirs = [r'C:\cygwin\home\\kovid\gnuwin32\lib']
@@ -120,14 +122,22 @@ elif isosx:
fc_inc = '/Users/kovid/fontconfig/include/fontconfig'
fc_lib = '/Users/kovid/fontconfig/lib'
poppler_inc_dirs = consolidate('POPPLER_INC_DIR',
- '/Volumes/sw/build/poppler-0.10.7/poppler')
+ '/Volumes/sw/build/poppler-0.12.0/poppler:/Volumes/sw/build/poppler-0.12.0')
popplerqt4_inc_dirs = poppler_inc_dirs + [poppler_inc_dirs[0]+'/qt4']
poppler_lib_dirs = consolidate('POPPLER_LIB_DIR',
- '/Users/kovid/poppler/lib')
+ '/Volumes/sw/lib')
popplerqt4_lib_dirs = poppler_lib_dirs
poppler_libs = popplerqt4_libs = ['poppler']
podofo_inc = '/usr/local/include/podofo'
podofo_lib = '/usr/local/lib'
+ magick_inc_dirs = consolidate('MAGICK_INC',
+ '/Users/kovid/ImageMagick/include/ImageMagick')
+ magick_lib_dirs = consolidate('MAGICK_LIB',
+ '/Users/kovid/ImageMagick/lib')
+ magick_libs = ['MagickWand', 'MagickCore']
+ png_inc_dirs = consolidate('PNG_INC_DIR', '/usr/local/include')
+ png_lib_dirs = consolidate('PNG_LIB_DIR', '/usr/local/lib')
+ png_libs = ['png']
else:
# Include directories
poppler_inc_dirs = pkgconfig_include_dirs('poppler',
diff --git a/setup/check.py b/setup/check.py
index 75a6d82530..14992b1628 100644
--- a/setup/check.py
+++ b/setup/check.py
@@ -37,6 +37,8 @@ def check_for_python_errors(filename, builtins):
class Check(Command):
+ description = 'Check for errors in the calibre source code'
+
BUILTINS = ['_', '__', 'dynamic_property', 'I', 'P']
CACHE = '.check-cache.pickle'
diff --git a/setup/extensions.py b/setup/extensions.py
index 2c1aa07815..7228cf3d03 100644
--- a/setup/extensions.py
+++ b/setup/extensions.py
@@ -16,7 +16,7 @@ from setup.build_environment import fc_inc, fc_lib, \
fc_error, poppler_libs, poppler_lib_dirs, poppler_inc_dirs, podofo_inc, \
podofo_lib, podofo_error, poppler_error, pyqt, OSX_SDK, NMAKE, \
leopard_build, QMAKE, msvc, MT, win_inc, win_lib, png_inc_dirs, \
- magick_inc_dirs, magick_lib_dirs, png_lib_dirs, png_libs, \
+ magick_inc_dirs, magick_lib_dirs, png_lib_dirs, png_libs, poppler_objs, \
magick_error, magick_libs, ft_lib_dirs, ft_libs, jpg_libs, jpg_lib_dirs
MT
isunix = islinux or isosx
@@ -39,6 +39,7 @@ class Extension(object):
self.sip_files = self.absolutize(kwargs.get('sip_files', []))
self.inc_dirs = self.absolutize(kwargs.get('inc_dirs', []))
self.lib_dirs = self.absolutize(kwargs.get('lib_dirs', []))
+ self.extra_objs = self.absolutize(kwargs.get('extra_objs', []))
self.error = kwargs.get('error', None)
self.libraries = kwargs.get('libraries', [])
self.cflags = kwargs.get('cflags', [])
@@ -60,6 +61,7 @@ extensions = [
libraries=poppler_libs+magick_libs+png_libs+ft_libs+jpg_libs+pdfreflow_libs,
lib_dirs=poppler_lib_dirs+magick_lib_dirs+png_lib_dirs+ft_lib_dirs+jpg_lib_dirs,
inc_dirs=poppler_inc_dirs+magick_inc_dirs+png_inc_dirs,
+ extra_objs=poppler_objs,
error=reflow_error,
cflags=['-DPNG_SKIP_SETJMP_CHECK'] if islinux else []
),
@@ -148,6 +150,7 @@ if isosx:
x, p = ('x86_64', 'ppc64') if leopard_build else ('i386', 'ppc')
archs = ['-arch', x, '-arch', p, '-isysroot',
OSX_SDK]
+ cflags.append('-D_OSX')
cflags.extend(archs)
ldflags.extend(archs)
ldflags.extend('-bundle -undefined dynamic_lookup'.split())
@@ -159,6 +162,9 @@ if iswindows:
cc = cxx = msvc.cc
cflags = '/c /nologo /Ox /MD /W3 /EHsc /DNDEBUG'.split()
ldflags = '/DLL /nologo /INCREMENTAL:NO'.split()
+ #cflags = '/c /nologo /Ox /MD /W3 /EHsc /Zi'.split()
+ #ldflags = '/DLL /nologo /INCREMENTAL:NO /DEBUG'.split()
+
for p in win_inc:
cflags.append('-I'+p)
for p in win_lib:
@@ -169,6 +175,8 @@ if iswindows:
class Build(Command):
+ short_description = 'Build calibre C/C++ extension modules'
+
description = textwrap.dedent('''\
calibre depends on several python extensions written in C/C++.
This command will compile them. You can influence the compile
@@ -268,9 +276,9 @@ class Build(Command):
cmd = [linker]
if iswindows:
cmd += ldflags + ext.ldflags + elib + xlib + \
- ['/EXPORT:init'+ext.name] + objects + ['/OUT:'+dest]
+ ['/EXPORT:init'+ext.name] + objects + ext.extra_objs + ['/OUT:'+dest]
else:
- cmd += objects + ['-o', dest] + ldflags + ext.ldflags + elib + xlib
+ cmd += objects + ext.extra_objs + ['-o', dest] + ldflags + ext.ldflags + elib + xlib
self.info('\n\n', ' '.join(cmd), '\n\n')
subprocess.check_call(cmd)
if iswindows:
diff --git a/setup/gui.py b/setup/gui.py
index a73c3466e3..058a3f052f 100644
--- a/setup/gui.py
+++ b/setup/gui.py
@@ -6,7 +6,7 @@ __license__ = 'GPL v3'
__copyright__ = '2009, Kovid Goyal '
__docformat__ = 'restructuredtext en'
-import os, cStringIO, re
+import os
from setup import Command, __appname__
@@ -17,6 +17,8 @@ class GUI(Command):
@classmethod
def find_forms(cls):
+ from calibre.gui2 import find_forms
+ return find_forms(cls.SRC)
forms = []
for root, _, files in os.walk(cls.PATH):
for name in files:
@@ -27,7 +29,8 @@ class GUI(Command):
@classmethod
def form_to_compiled_form(cls, form):
- return form.rpartition('.')[0]+'_ui.py'
+ from calibre.gui2 import form_to_compiled_form
+ return form_to_compiled_form(form)
def run(self, opts):
self.build_forms()
@@ -53,38 +56,8 @@ class GUI(Command):
def build_forms(self):
- from PyQt4.uic import compileUi
- forms = self.find_forms()
- pat = re.compile(r'''(['"]):/images/([^'"]+)\1''')
- def sub(match):
- ans = 'I(%s%s%s)'%(match.group(1), match.group(2), match.group(1))
- return ans
-
- for form in forms:
- compiled_form = self.form_to_compiled_form(form)
- if not os.path.exists(compiled_form) or os.stat(form).st_mtime > os.stat(compiled_form).st_mtime:
- self.info('\tCompiling form', form)
- buf = cStringIO.StringIO()
- compileUi(form, buf)
- dat = buf.getvalue()
- dat = dat.replace('__appname__', __appname__)
- dat = dat.replace('import images_rc', '')
- dat = dat.replace('from library import', 'from calibre.gui2.library import')
- dat = dat.replace('from widgets import', 'from calibre.gui2.widgets import')
- dat = dat.replace('from convert.xpath_wizard import',
- 'from calibre.gui2.convert.xpath_wizard import')
- dat = re.compile(r'QtGui.QApplication.translate\(.+?,\s+"(.+?)(?'
__docformat__ = 'restructuredtext en'
-import sys, os, textwrap, subprocess, shutil, tempfile, atexit
+import sys, os, textwrap, subprocess, shutil, tempfile, atexit, stat
from setup import Command, islinux, basenames, modules, functions, \
__appname__, __version__
@@ -19,28 +19,26 @@ This is the standard runscript for all of calibre's tools.
Do not modify it unless you know what you are doing.
"""
-import sys
+import sys, os
+
+path = os.environ.get('CALIBRE_PYTHON_PATH', {path!r})
+sys.path.insert(0, path)
+
+sys.resources_location = os.environ.get('CALIBRE_RESOURCES_PATH', {resources!r})
+sys.extensions_location = os.environ.get('CALIBRE_EXTENSIONS_PATH', {extensions!r})
+
'''
TEMPLATE = HEADER+'''
-sys.path.insert(0, {path!r})
-
-sys.resources_location = {resources!r}
-sys.extensions_location = {extensions!r}
-
from {module} import {func!s}
sys.exit({func!s}())
'''
COMPLETE_TEMPLATE = HEADER+'''
-import os
-sys.path.insert(0, {path!r})
-sys.path.insert(0, os.path.join({path!r}, 'calibre', 'utils'))
+sys.path.insert(0, os.path.join(path, 'calibre', 'utils'))
import complete
sys.path = sys.path[1:]
-sys.resources_location = {resources!r}
-sys.extensions_location = {extensions!r}
sys.exit(complete.main())
'''
@@ -53,96 +51,145 @@ class Develop(Command):
the prefix of your python installation. This can be controlled
via the --prefix option.
''')
+ short_description = 'Setup a development environment for calibre'
MODE = 0755
sub_commands = ['build', 'resources', 'gui']
+ def add_postinstall_options(self, parser):
+ parser.add_option('--make-errors-fatal', action='store_true', default=False,
+ dest='fatal_errors', help='If set die on post install errors.')
+ parser.add_option('--no-postinstall', action='store_false',
+ dest='postinstall', default=True,
+ help='Don\'t run post install actions like creating MAN pages, setting'+
+ ' up desktop integration and so on')
+
+
def add_options(self, parser):
parser.add_option('--prefix',
help='Binaries will be installed in /bin')
- self.root = ''
+ self.add_postinstall_options(parser)
+
+ def consolidate_paths(self):
+ opts = self.opts
+ if not opts.prefix:
+ opts.prefix = sys.prefix
+ for x in ('prefix', 'libdir', 'bindir', 'sharedir', 'staging_root',
+ 'staging_libdir', 'staging_bindir', 'staging_sharedir'):
+ o = getattr(opts, x, None)
+ if o:
+ setattr(opts, x, os.path.abspath(o))
+ self.libdir = getattr(opts, 'libdir', None)
+ if self.libdir is None:
+ self.libdir = self.j(opts.prefix, 'lib')
+ self.bindir = getattr(opts, 'bindir', None)
+ if self.bindir is None:
+ self.bindir = self.j(opts.prefix, 'bin')
+ self.sharedir = getattr(opts, 'sharedir', None)
+ if self.sharedir is None:
+ self.sharedir = self.j(opts.prefix, 'share')
+ if not getattr(opts, 'staging_root', None):
+ opts.staging_root = opts.prefix
+ self.staging_libdir = getattr(opts, 'staging_libdir', None)
+ if self.staging_libdir is None:
+ self.staging_libdir = opts.staging_libdir = self.j(opts.staging_root, 'lib')
+ self.staging_bindir = getattr(opts, 'staging_bindir', None)
+ if self.staging_bindir is None:
+ self.staging_bindir = opts.staging_bindir = self.j(opts.staging_root, 'bin')
+ self.staging_sharedir = getattr(opts, 'staging_sharedir', None)
+ if self.staging_sharedir is None:
+ self.staging_sharedir = opts.staging_sharedir = self.j(opts.staging_root, 'share')
+
+ self.staging_libdir = opts.staging_libdir = self.j(self.staging_libdir, 'calibre')
+ self.staging_sharedir = opts.staging_sharedir = self.j(self.staging_sharedir, 'calibre')
+
+ if self.__class__.__name__ == 'Develop':
+ self.libdir = self.SRC
+ self.sharedir = self.RESOURCES
+ else:
+ self.libdir = self.j(self.libdir, 'calibre')
+ self.sharedir = self.j(self.sharedir, 'calibre')
+ self.info('INSTALL paths:')
+ self.info('\tLIB:', self.staging_libdir)
+ self.info('\tSHARE:', self.staging_sharedir)
+
def pre_sub_commands(self, opts):
if not islinux:
- self.info('\nSetting up a development environment is only '
- 'supported on linux. On other platforms, install the calibre '
- 'binary and use the calibre-debug command.')
+ self.info('\nSetting up a source based development environment is only '
+ 'supported on linux. On other platforms, see the User Manual'
+ ' for help with setting up a development environment.')
raise SystemExit(1)
- if not os.geteuid() == 0:
- self.info('\nError: This command must be run as root.')
- raise SystemExit(1)
- self.drop_privileges()
+ if os.geteuid() == 0:
+ self.drop_privileges()
+ # Ensure any calibre config files are created as correct user
+ import calibre.utils.config as c
+ c
def run(self, opts):
+ self.manifest = []
+ self.opts = opts
self.regain_privileges()
- self.find_locations(opts)
- self.write_templates(opts)
+ self.consolidate_paths()
+ self.write_templates()
self.setup_mount_helper()
- self.install_files(opts)
+ self.install_files()
self.run_postinstall()
self.success()
def setup_mount_helper(self):
def warn():
self.warn('Failed to compile mount helper. Auto mounting of',
- 'devices will not work')
+ ' devices will not work')
if os.geteuid() != 0:
- return warn()
- import stat
+ return self.warn('Must be run as root to compile mount helper. Auto '
+ 'mounting of devices will not work.')
src = os.path.join(self.SRC, 'calibre', 'devices', 'linux_mount_helper.c')
- dest = self.root + os.path.join(self.bindir, 'calibre-mount-helper')
+ dest = os.path.join(self.staging_bindir, 'calibre-mount-helper')
self.info('Installing mount helper to '+ dest)
- p = subprocess.Popen(['gcc', '-Wall', src, '-o', dest])
+ p = subprocess.Popen(['gcc', '-Wall', '-pedantic', src, '-o', dest])
ret = p.wait()
if ret != 0:
return warn()
os.chown(dest, 0, 0)
- os.chmod(dest,
- stat.S_ISUID|stat.S_ISGID|stat.S_IRUSR|stat.S_IWUSR|stat.S_IXUSR|stat.S_IXGRP|stat.S_IXOTH)
+ os.chmod(dest, stat.S_ISUID|stat.S_ISGID|stat.S_IRUSR|stat.S_IWUSR|\
+ stat.S_IXUSR|stat.S_IXGRP|stat.S_IXOTH)
+ self.manifest.append(dest)
return dest
- def install_files(self, opts):
+ def install_files(self):
pass
def run_postinstall(self):
- env = dict(**os.environ)
- env['DESTDIR'] = self.prefix
- subprocess.check_call(['calibre_postinstall', '--use-destdir'], env=env)
+ if self.opts.postinstall:
+ from calibre.linux import PostInstall
+ PostInstall(self.opts, info=self.info, warn=self.warn,
+ manifest=self.manifest)
def success(self):
self.info('\nDevelopment environment successfully setup')
- def find_locations(self, opts):
- self.prefix = opts.prefix
- if self.prefix is None:
- self.prefix = sys.prefix
- self.path = self.SRC
- self.resources = self.j(self.d(self.SRC), 'resources')
- self.extensions = self.j(self.SRC, 'calibre', 'plugins')
- self.bindir = self.j(self.prefix, 'bin')
-
- def write_templates(self, opts):
+ def write_templates(self):
for typ in ('console', 'gui'):
for name, mod, func in zip(basenames[typ], modules[typ],
functions[typ]):
- self.write_template(opts, name, mod, func)
- if islinux:
- self.write_template(opts, 'calibre_postinstall', 'calibre.linux', 'main')
+ self.write_template(name, mod, func)
- def write_template(self, opts, name, mod, func):
+ def write_template(self, name, mod, func):
template = COMPLETE_TEMPLATE if name == 'calibre-complete' else TEMPLATE
script = template.format(
module=mod, func=func,
- path=self.path, resources=self.resources,
- extensions=self.extensions)
- path = self.root + self.j(self.bindir, name)
- if not os.path.exists(self.bindir):
- os.makedirs(self.bindir)
+ path=self.libdir, resources=self.sharedir,
+ extensions=self.j(self.libdir, 'calibre', 'plugins'))
+ path = self.j(self.staging_bindir, name)
+ if not os.path.exists(self.staging_bindir):
+ os.makedirs(self.staging_bindir)
self.info('Installing binary:', path)
open(path, 'wb').write(script)
os.chmod(path, self.MODE)
+ self.manifest.append(path)
class Install(Develop):
@@ -154,52 +201,52 @@ class Install(Develop):
The default is the prefix of your python installation.
''')
+ short_description = 'Install calibre from source'
sub_commands = ['build', 'gui']
def add_options(self, parser):
- parser.add_option('--prefix', help='Installation prefix')
- parser.add_option('--libdir', help='Where to put calibre library files')
- parser.add_option('--bindir', help='Where to install calibre binaries')
- parser.add_option('--sharedir', help='Where to install calibre data files')
- parser.add_option('--root', default='',
- help='Use a different installation root (mainly for packaging)')
- self.root = ''
+ parser.add_option('--prefix', help='Installation prefix.')
+ parser.add_option('--libdir',
+ help='Where to put calibre library files. Default is /lib')
+ parser.add_option('--bindir',
+ help='Where to put the calibre binaries. Default is /bin')
+ parser.add_option('--sharedir',
+ help='Where to put the calibre data files. Default is /share')
+ parser.add_option('--staging-root', '--root', default=None,
+ help=('Use a different installation root (mainly for packaging).'
+ ' The prefix option controls the paths written into '
+ 'the launcher scripts. This option controls the prefix '
+ 'to which the install will actually copy files. By default '
+ 'it is set to the value of --prefix.'))
+ parser.add_option('--staging-libdir',
+ help='Where to put calibre library files. Default is /lib')
+ parser.add_option('--staging-bindir',
+ help='Where to put the calibre binaries. Default is /bin')
+ parser.add_option('--staging-sharedir',
+ help='Where to put the calibre data files. Default is /share')
+ self.add_postinstall_options(parser)
- def find_locations(self, opts):
- if opts.prefix is None:
- opts.prefix = sys.prefix
- if opts.libdir is None:
- opts.libdir = self.j(opts.prefix, 'lib', 'calibre')
- if opts.bindir is None:
- opts.bindir = self.j(opts.prefix, 'bin')
- if opts.sharedir is None:
- opts.sharedir = self.j(opts.prefix, 'share', 'calibre')
- self.prefix = opts.prefix
- self.bindir = opts.bindir
- self.path = opts.libdir
- self.resources = opts.sharedir
- self.extensions = self.j(self.path, 'calibre', 'plugins')
- self.root = opts.root
-
- def install_files(self, opts):
- dest = self.root + self.path
+ def install_files(self):
+ dest = self.staging_libdir
if os.path.exists(dest):
shutil.rmtree(dest)
- shutil.copytree(self.SRC, dest)
- for x in ('calibre/manual', 'calibre/trac',
- 'calibre/ebooks/lrf/html/demo'):
- x = self.j(dest, x)
- if os.path.exists(dest):
- shutil.rmtree(x)
- for x in os.walk(dest):
+ self.info('Installing code to', dest)
+ self.manifest.append(dest)
+ for x in os.walk(self.SRC):
+ reldir = os.path.relpath(x[0], self.SRC)
+ destdir = os.path.join(dest, reldir)
for f in x[-1]:
- if os.path.splitext(f)[1] in ('.c', '.cpp', '.h'):
- os.remove(self.j(x[0], f))
- dest = self.root + self.resources
+ if os.path.splitext(f)[1] in ('.py', '.so'):
+ if not os.path.exists(destdir):
+ os.makedirs(destdir)
+ shutil.copy2(self.j(x[0], f), destdir)
+ dest = self.staging_sharedir
if os.path.exists(dest):
shutil.rmtree(dest)
+ self.info('Installing resources to', dest)
shutil.copytree(self.RESOURCES, dest)
+ self.manifest.append(dest)
def success(self):
self.info('\n\ncalibre successfully installed. You can start'
@@ -215,6 +262,7 @@ class Sdist(Command):
if not self.e(self.d(self.DEST)):
os.makedirs(self.d(self.DEST))
tdir = tempfile.mkdtemp()
+ tdir = self.j(tdir, 'calibre')
atexit.register(shutil.rmtree, tdir)
self.info('\tRunning bzr export...')
subprocess.check_call(['bzr', 'export', '--format', 'dir', tdir])
@@ -237,8 +285,8 @@ class Sdist(Command):
shutil.copy2(f, dest)
self.info('\tCreating tarfile...')
- subprocess.check_call(' '.join(['tar', '-czf', self.a(self.DEST), '*']),
- cwd=tdir, shell=True)
+ subprocess.check_call(['tar', '-czf', self.a(self.DEST),
+ 'calibre'], cwd=self.d(tdir))
def clean(self):
if os.path.exists(self.DEST):
diff --git a/setup/installer/linux/__init__.py b/setup/installer/linux/__init__.py
index f3819af913..46014dfac6 100644
--- a/setup/installer/linux/__init__.py
+++ b/setup/installer/linux/__init__.py
@@ -13,6 +13,8 @@ from setup import Command, installer_name
class Linux32(VMInstaller):
+ description = 'Build 32bit linux binary installer'
+
INSTALLER_EXT = 'tar.bz2'
VM_NAME = 'gentoo32_build'
VM = '/vmware/bin/gentoo32_build'
@@ -21,6 +23,8 @@ class Linux32(VMInstaller):
class Linux64(Command):
+ description = 'Build 64bit linux binary installer'
+
sub_commands = ['linux_freeze']
def run(self, opts):
@@ -31,4 +35,6 @@ class Linux64(Command):
class Linux(Command):
+ description = 'Build linux binary installers'
+
sub_commands = ['linux64', 'linux32']
diff --git a/setup/installer/linux/freeze.py b/setup/installer/linux/freeze.py
index abf51a9750..c9c380bec1 100644
--- a/setup/installer/linux/freeze.py
+++ b/setup/installer/linux/freeze.py
@@ -60,7 +60,7 @@ class LinuxFreeze(Command):
arch),
'/usr/lib/libpng12.so.0',
'/usr/lib/libexslt.so.0',
- '/usr/lib/libMagickWand.so',
+ '/usr/lib/libMagickWand.so.2',
'/usr/lib/libMagickCore.so.2',
'/usr/lib/libgcrypt.so.11',
'/usr/lib/libgpg-error.so.0',
@@ -83,8 +83,7 @@ class LinuxFreeze(Command):
self.info('Freezing calibre located at', CALIBRESRC)
entry_points = entry_points['console_scripts'] + entry_points['gui_scripts']
- entry_points = ['calibre_postinstall=calibre.linux:binary_install',
- 'calibre-parallel=calibre.parallel:main'] + entry_points
+ entry_points = ['calibre_postinstall=calibre.linux:main'] + entry_points
executables = {}
for ep in entry_points:
executables[ep.split('=')[0].strip()] = (ep.split('=')[1].split(':')[0].strip(),
@@ -147,6 +146,9 @@ class LinuxFreeze(Command):
sys.frozen_path = DIR_NAME
sys.extensions_location = os.path.join(DIR_NAME, 'plugins')
sys.resources_location = os.path.join(DIR_NAME, 'resources')
+ dfv = os.environ.get('CALIBRE_DEVELOP_FROM', None)
+ if dfv and os.path.exists(dfv):
+ sys.path.insert(0, dfv)
executables = %(executables)s
@@ -250,7 +252,6 @@ class LinuxFreeze(Command):
exes = list(executables.keys())
exes.remove('calibre_postinstall')
- exes.remove('calibre-parallel')
open(os.path.join(FREEZE_DIR, 'manifest'), 'wb').write('\n'.join(exes))
self.info('Creating archive...')
diff --git a/setup/installer/osx/__init__.py b/setup/installer/osx/__init__.py
index 5089859978..e5e689244a 100644
--- a/setup/installer/osx/__init__.py
+++ b/setup/installer/osx/__init__.py
@@ -12,6 +12,8 @@ from setup.installer import VMInstaller
class OSX(Command):
+ description = 'Build OS X binary installers'
+
sub_commands = ['osx32']
def run(self, opts):
@@ -20,6 +22,8 @@ class OSX(Command):
class OSX32(VMInstaller):
+ description = 'Build 32 bit OS X binary installer'
+
INSTALLER_EXT = 'dmg'
VM_NAME = 'tiger_build'
VM = '/vmware/bin/%s'%VM_NAME
diff --git a/setup/installer/osx/freeze.py b/setup/installer/osx/freeze.py
index 985f7ccaf8..1c0e766d21 100644
--- a/setup/installer/osx/freeze.py
+++ b/setup/installer/osx/freeze.py
@@ -21,6 +21,8 @@ info = warn = None
class OSX32_Freeze(Command):
+ description = 'Freeze OSX calibre installation'
+
def run(self, opts):
global info, warn
info, warn = self.info, self.warn
@@ -46,10 +48,16 @@ qt_plugins = os.path.join(os.path.realpath(base_dir), 'MacOS')
loader_path = os.path.join(dirpath, base_name+'.py')
loader = open(loader_path, 'w')
site_packages = glob.glob(resources_dir+'/lib/python*/site-packages.zip')[0]
+devf = os.environ.get('CALIBRE_DEVELOP_FROM', None)
+do_devf = devf and os.path.exists(devf)
+if do_devf:
+ devf = os.path.abspath(devf)
print >>loader, 'import sys'
print >>loader, 'sys.argv[0] =', repr(os.path.basename(path))
print >>loader, 'if', repr(dirpath), 'in sys.path: sys.path.remove(', repr(dirpath), ')'
print >>loader, 'sys.path.append(', repr(site_packages), ')'
+if do_devf:
+ print >>loader, 'sys.path.insert(0, '+repr(devf)+')'
print >>loader, 'sys.frozen = "macosx_app"'
print >>loader, 'sys.frameworks_dir =', repr(frameworks_dir)
print >>loader, 'sys.extensions_location =', repr(extensions_dir)
@@ -195,6 +203,11 @@ os.execv(python, args)
for f in x[-1]:
if f.endswith('.so'):
modules.append(os.path.join(x[0], f))
+ for x in os.walk(os.path.join(frameworks_dir, 'plugins')):
+ for f in x[-1]:
+ if f.endswith('.so'):
+ modules.append(os.path.join(x[0], f))
+
deps = {}
for x in ('Core.1', 'Wand.1'):
modules.append(os.path.join(root, 'lib', 'libMagick%s.dylib'%x))
@@ -235,12 +248,25 @@ os.execv(python, args)
shutil.copyfile(pdf, os.path.join(frameworks_dir, os.path.basename(pdf)))
info('\nAdding poppler')
- for x in ('pdftohtml', 'libpoppler.4.dylib', 'libpoppler-qt4.3.dylib'):
- tgt = os.path.join(frameworks_dir, x)
- os.link(os.path.join(os.path.expanduser('~/poppler'), x), tgt)
- self.fix_qt_dependencies(tgt, self.qt_dependencies(tgt))
-
-
+ popps = []
+ for x in ('bin/pdftohtml', 'lib/libpoppler.5.dylib'):
+ dest = os.path.join(frameworks_dir, os.path.basename(x))
+ popps.append(dest)
+ shutil.copy2(os.path.join('/Volumes/sw', x), dest)
+ subprocess.check_call(['install_name_tool', '-change',
+ '/usr/local/lib/libfontconfig.1.dylib',
+ '@executable_path/../Frameworks/libfontconfig.1.dylib',
+ os.path.join(frameworks_dir, 'pdftohtml')])
+ x ='libpng12.0.dylib'
+ shutil.copy2('/usr/local/lib/'+x, frameworks_dir)
+ subprocess.check_call(['install_name_tool', '-id',
+ '@executable_path/../Frameworks/'+x, os.path.join(frameworks_dir, x)])
+ self.fix_misc_dependencies(popps)
+ subprocess.check_call(['install_name_tool', '-change',
+ '/usr/local/lib/libfontconfig.1.dylib',
+ '@executable_path/../Frameworks/libfontconfig.1.dylib', popps[1]])
+ subprocess.check_call(['install_name_tool', '-id',
+ '@executable_path/../Frameworks/'+os.path.basename(popps[1]), popps[1]])
loader_path = os.path.join(resource_dir, 'loaders')
if not os.path.exists(loader_path):
@@ -286,6 +312,9 @@ os.execv(python, args)
if os.path.exists(dest):
shutil.rmtree(dest)
shutil.copytree(os.path.expanduser('~/ImageMagick'), dest, True)
+ shutil.rmtree(os.path.join(dest, 'include'))
+ shutil.rmtree(os.path.join(dest, 'share', 'doc'))
+ shutil.rmtree(os.path.join(dest, 'share', 'man'))
shutil.copyfile('/usr/local/lib/libpng12.0.dylib', os.path.join(dest, 'lib', 'libpng12.0.dylib'))
self.fix_image_magick_deps(dest)
@@ -302,6 +331,11 @@ os.execv(python, args)
sys.frameworks_dir = os.path.join(os.path.dirname(os.environ['RESOURCEPATH']), 'Frameworks')
sys.resources_location = os.path.join(os.environ['RESOURCEPATH'], 'resources')
sys.extensions_location = os.path.join(sys.frameworks_dir, 'plugins')
+devf = os.environ.get('CALIBRE_DEVELOP_FROM', None)
+do_devf = devf and os.path.exists(devf)
+if do_devf:
+ devf = os.path.abspath(devf)
+ sys.path.insert(0, devf)
''') + r'\n\1', src)
f = open(launcher_path, 'w')
print >>f, 'import sys, os'
@@ -362,7 +396,7 @@ def main():
'calibre.ebooks.metadata.amazon',
],
'packages' : ['PIL', 'Authorization', 'lxml', 'dns'],
- 'excludes' : ['IPython'],
+ 'excludes' : ['IPython', 'PyQt4.uic.port_v3.proxy_base'],
'plist' : { 'CFBundleGetInfoString' : '''calibre, an E-book management application.'''
''' Visit http://calibre.kovidgoyal.net for details.''',
'CFBundleIdentifier':'net.kovidgoyal.calibre',
diff --git a/setup/installer/windows/__init__.py b/setup/installer/windows/__init__.py
index 31973194d1..17667368c7 100644
--- a/setup/installer/windows/__init__.py
+++ b/setup/installer/windows/__init__.py
@@ -14,6 +14,8 @@ from setup.installer.windows import build_installer
class Win(Command):
+ description = 'Build windows binary installers'
+
sub_commands = ['win32']
def run(self, opts):
@@ -22,6 +24,8 @@ class Win(Command):
class Win32(VMInstaller):
+ description = 'Build 32bit windows binary installer'
+
INSTALLER_EXT = 'exe'
VM_NAME = 'xp_build'
VM = '/vmware/bin/%s'%VM_NAME
diff --git a/setup/installer/windows/calibre/calibre.mpi b/setup/installer/windows/calibre/calibre.mpi
index 2309a1129c..860eae62f2 100644
--- a/setup/installer/windows/calibre/calibre.mpi
+++ b/setup/installer/windows/calibre/calibre.mpi
@@ -235,9 +235,6 @@ File ::8E5D85A4-7608-47A1-CF7C-309060D5FF40 -filemethod {Always overwrite files}
File ::FC870EE7-667B-481F-113B-B4504DFCCFA5 -type dir -name bin -parent 8E5D85A4-7608-47A1-CF7C-309060D5FF40
File ::377C588B-B324-CA09-ED49-4DB5F82A15ED -type dir -name etc -parent 8E5D85A4-7608-47A1-CF7C-309060D5FF40
File ::55DE4B9F-0881-FF51-E2BA-EC72B5D3425C -type dir -name fonts -parent 377C588B-B324-CA09-ED49-4DB5F82A15ED
-File ::A27B68D9-43A6-B994-3091-E829AFBA340D -type dir -name conf.d -parent 55DE4B9F-0881-FF51-E2BA-EC72B5D3425C
-File ::974ADD48-88E5-BC7A-1963-928A245F133A -type dir -name conf.avail -parent 55DE4B9F-0881-FF51-E2BA-EC72B5D3425C
-File ::5E5273D8-3423-8DC8-83C4-BE000069A803 -name fonts.dtd -parent 55DE4B9F-0881-FF51-E2BA-EC72B5D3425C
File ::32D7DBE0-E0B1-5BDD-66C5-2A13D8BC8F90 -name fonts.conf -parent 55DE4B9F-0881-FF51-E2BA-EC72B5D3425C
File ::B95D03D4-EA59-F00E-59E1-BA05758879DA -type dir -name imageformats -parent 8E5D85A4-7608-47A1-CF7C-309060D5FF40
File ::A624029D-AE0F-49A5-4DAC-7720CDCAB271 -name qmng4.dll -parent B95D03D4-EA59-F00E-59E1-BA05758879DA
@@ -393,7 +390,6 @@ File ::E8A4442D-D0D3-31CD-997A-3CEB641CF5B7 -name IM_MOD_RL_mtv_.dll -parent 8E5
File ::0CA87D0B-5A04-1439-AEE8-C97072D47BA7 -name CORE_RL_tiff_.dll -parent 8E5D85A4-7608-47A1-CF7C-309060D5FF40
File ::AC24F520-88D4-D1CF-5797-27C715CE8ACA -name pyexpat.pyd -parent 8E5D85A4-7608-47A1-CF7C-309060D5FF40
File ::16848F38-71CD-55B8-4D96-1537F6773744 -name IM_MOD_RL_dps_.dll -parent 8E5D85A4-7608-47A1-CF7C-309060D5FF40
-File ::33A46CC5-BAC4-5863-C83D-303DCCA0CAA1 -name tk85.dll -parent 8E5D85A4-7608-47A1-CF7C-309060D5FF40
File ::81116DD3-1715-AA87-472F-544FC616EDAF -name IM_MOD_RL_dcm_.dll -parent 8E5D85A4-7608-47A1-CF7C-309060D5FF40
File ::335A4CFB-5C2D-44E4-C438-7018E8244C3D -name ebook-viewer.exe -parent 8E5D85A4-7608-47A1-CF7C-309060D5FF40
File ::62A16C3B-ED9C-5187-2807-58857DF3A990 -name calibre-debug.exe -parent 8E5D85A4-7608-47A1-CF7C-309060D5FF40
@@ -413,7 +409,6 @@ File ::C3466B70-23C3-31C9-3B4F-1B3B56E4D013 -name markdown-calibre.exe.local -pa
File ::6ED1C675-C4D5-6BFF-7C8A-9AB4BF39D00C -name _hashlib.pyd -parent 8E5D85A4-7608-47A1-CF7C-309060D5FF40
File ::21F7F333-3063-71E3-85F5-5C88584B15CC -name IM_MOD_RL_tga_.dll -parent 8E5D85A4-7608-47A1-CF7C-309060D5FF40
File ::26741B21-C241-E100-8BB1-8B679BC3E662 -name configure.xml -parent 8E5D85A4-7608-47A1-CF7C-309060D5FF40
-File ::7D491E89-C6D3-1E6E-F4BD-8E55260FE33E -name libexpat.dll -parent 8E5D85A4-7608-47A1-CF7C-309060D5FF40
File ::476CB977-5155-D56F-26CA-EB243AEBBA99 -name unrar.dll -parent 8E5D85A4-7608-47A1-CF7C-309060D5FF40
File ::2E2A9EDA-5386-444E-8479-557386794552 -name IM_MOD_RL_uil_.dll -parent 8E5D85A4-7608-47A1-CF7C-309060D5FF40
File ::D3301E15-1B1A-E2AB-1B04-30A601B3FB44 -name IM_MOD_RL_cut_.dll -parent 8E5D85A4-7608-47A1-CF7C-309060D5FF40
@@ -507,7 +502,6 @@ File ::9BA85EE5-1754-67AF-736D-481CDCC72DD2 -name _imagingft.pyd -parent 8E5D85A
File ::6254DD0C-8F2C-D4AE-2107-2597D542C181 -name IM_MOD_RL_matte_.dll -parent 8E5D85A4-7608-47A1-CF7C-309060D5FF40
File ::F159D566-88D6-C347-3E3C-55C2DDFC5FD0 -name IM_MOD_RL_mono_.dll -parent 8E5D85A4-7608-47A1-CF7C-309060D5FF40
File ::B873CAA2-011F-94C3-7977-FF344E53C44F -name CORE_RL_jbig_.dll -parent 8E5D85A4-7608-47A1-CF7C-309060D5FF40
-File ::7004FCB8-C6F4-C7AF-08E4-B6151B2F7050 -name tcl85.dll -parent 8E5D85A4-7608-47A1-CF7C-309060D5FF40
File ::6921F62A-4015-4C9F-98A6-BCBBC43B698E -name msvcm90.dll -parent 8E5D85A4-7608-47A1-CF7C-309060D5FF40
File ::7276E0CA-C205-4B18-19A3-157F1B8523FB -name IM_MOD_RL_xtrn_.dll -parent 8E5D85A4-7608-47A1-CF7C-309060D5FF40
File ::7B9624A9-88B4-C61E-6771-9A34FB6CA3B5 -name PyQt4.QtGui.pyd -parent 8E5D85A4-7608-47A1-CF7C-309060D5FF40
@@ -570,10 +564,11 @@ File ::8D7A36A6-4517-E995-E989-2E522E7A1438 -name calibre-smtp.exe.local -parent
File ::9E4E5E8F-30C0-E631-9516-2AE01A5CA0E9 -name ebook-device.exe.local -parent 8E5D85A4-7608-47A1-CF7C-309060D5FF40
File ::7BE6B538-70D5-A7EB-5F91-E14CE57B394B -name calibre-complete.exe.local -parent 8E5D85A4-7608-47A1-CF7C-309060D5FF40
File ::C4E40030-3EE0-8B05-E6B9-89E81433EE1F -name phonon4.dll -parent 8E5D85A4-7608-47A1-CF7C-309060D5FF40
-File ::9E84342F-36ED-7ED3-8F90-1EC55267BCFC -name poppler-qt4.dll -parent 8E5D85A4-7608-47A1-CF7C-309060D5FF40
File ::C9967023-A4C2-856C-1D90-DC710105EBCD -name jpeg62.dll -parent 8E5D85A4-7608-47A1-CF7C-309060D5FF40
File ::B1560042-C99B-9803-552E-21C15F0DFD85 -type dir -name resources -parent 8E5D85A4-7608-47A1-CF7C-309060D5FF40
File ::DEDE8BE9-D712-2770-A1EC-7E9164CC6D29 -name libpng12.dll -parent 8E5D85A4-7608-47A1-CF7C-309060D5FF40
+File ::2A8619DB-B715-CBF8-E711-C6B0C5FD9EF4 -name _elementtree.pyd -parent 8E5D85A4-7608-47A1-CF7C-309060D5FF40
+File ::0924A77D-EDD2-FF33-560A-983053637A47 -name libexpat-1.dll -parent 8E5D85A4-7608-47A1-CF7C-309060D5FF40
Component ::F6829AB7-9F66-4CEE-CA0E-21F54C6D3609 -setup Install -active Yes -platforms {AIX-ppc FreeBSD-4-x86 FreeBSD-x86 HPUX-hppa Linux-x86 Solaris-sparc Windows FreeBSD-5-x86 FreeBSD-6-x86 FreeBSD-7-x86 Linux-x86_64 Solaris-x86} -name Main -parent Components
SetupType ::D9ADE41C-B744-690C-2CED-CF826BF03D2E -setup Install -active Yes -platforms {AIX-ppc FreeBSD-4-x86 FreeBSD-x86 HPUX-hppa Linux-x86 Solaris-sparc Windows FreeBSD-5-x86 FreeBSD-6-x86 FreeBSD-7-x86 Linux-x86_64 Solaris-x86} -name Typical -parent SetupTypes
diff --git a/setup/installer/windows/freeze.py b/setup/installer/windows/freeze.py
index 704f3b3b7b..10bd05000b 100644
--- a/setup/installer/windows/freeze.py
+++ b/setup/installer/windows/freeze.py
@@ -52,6 +52,8 @@ info = warn = None
class Win32Freeze(Command):
+ description = 'Freeze windows calibre installation'
+
def run(self, opts):
global info, warn
info, warn = self.info, self.warn
@@ -121,6 +123,9 @@ base = os.path.dirname(sys.executable.decode(fenc))
sys.resources_location = os.path.join(base, 'resources')
sys.extensions_location = os.path.join(base, 'plugins')
+dv = os.environ.get('CALIBRE_DEVELOP_FROM', None)
+if dv and os.path.exists(dv):
+ sys.path.insert(0, os.path.abspath(dv))
del sys
'''
@@ -189,9 +194,8 @@ class BuildEXE(bc):
print '\tAdding unrar'
shutil.copyfile(LIBUNRAR, os.path.join(PY2EXE_DIR, os.path.basename(LIBUNRAR)))
print '\tAdding poppler'
- for x in (r'utils\Release\pdftohtml.exe',
- r'qt4\src\Release\poppler-qt4.dll'):
- shutil.copyfile(os.path.join(POPPLER, x),
+ for x in (r'pdftohtml.exe', 'freetype.dll'):
+ shutil.copyfile(os.path.join(r'C:\cygwin\home\kovid\poppler-old\bin', x),
os.path.join(PY2EXE_DIR, os.path.basename(x)))
for x in ('jpeg62', 'zlib1', 'libpng12'):
shutil.copy2(os.path.join(GNUWIN32, 'bin', x+'.dll'), PY2EXE_DIR)
@@ -279,9 +283,12 @@ def main(args=sys.argv):
'packages' : ['PIL', 'lxml', 'cherrypy',
'dateutil', 'dns'],
'excludes' : ["Tkconstants", "Tkinter", "tcl",
- "_imagingtk", "ImageTk", "FixTk"
+ "_imagingtk", "ImageTk",
+ "FixTk",
+ 'PyQt4.uic.port_v3.proxy_base'
],
- 'dll_excludes' : ['mswsock.dll'],
+ 'dll_excludes' : ['mswsock.dll', 'tcl85.dll',
+ 'tk85.dll'],
},
},
diff --git a/setup/resources.py b/setup/resources.py
index 39416d88c6..253876989e 100644
--- a/setup/resources.py
+++ b/setup/resources.py
@@ -24,6 +24,8 @@ def get_opts_from_parser(parser):
class Resources(Command):
+ description = 'Compile various needed calibre resources'
+
def get_recipes(self):
sdir = os.path.join('src', 'calibre', 'web', 'feeds', 'recipes')
resources= {}
diff --git a/setup/translations.py b/setup/translations.py
index 5ba84c4a5e..658ad0f4f5 100644
--- a/setup/translations.py
+++ b/setup/translations.py
@@ -196,6 +196,7 @@ class GetTranslations(Translations):
class ISO639(Command):
+ description = 'Compile translations for ISO 639 codes'
XML = '/usr/lib/python2.6/site-packages/pycountry/databases/iso639.xml'
def run(self, opts):
diff --git a/setup/upload.py b/setup/upload.py
index 6580544ad6..b99e80ca18 100644
--- a/setup/upload.py
+++ b/setup/upload.py
@@ -127,6 +127,8 @@ class UploadDemo(Command):
class UploadToServer(Command):
+ description = 'Upload miscellaneous data to calibre server'
+
def run(self, opts):
check_call('ssh divok rm -f %s/calibre-\*.tar.gz'%DOWNLOADS, shell=True)
check_call('scp dist/calibre-*.tar.gz divok:%s/'%DOWNLOADS, shell=True)
diff --git a/src/calibre/constants.py b/src/calibre/constants.py
index a68cfdb9d3..8d3b310b73 100644
--- a/src/calibre/constants.py
+++ b/src/calibre/constants.py
@@ -2,7 +2,7 @@ __license__ = 'GPL v3'
__copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net'
__docformat__ = 'restructuredtext en'
__appname__ = 'calibre'
-__version__ = '0.6.13'
+__version__ = '0.6.14'
__author__ = "Kovid Goyal "
import re
diff --git a/src/calibre/debug.py b/src/calibre/debug.py
index d9912e61d8..575308fe14 100644
--- a/src/calibre/debug.py
+++ b/src/calibre/debug.py
@@ -6,10 +6,9 @@ __copyright__ = '2008, Kovid Goyal '
Embedded console for debugging.
'''
-import sys, os, re, shutil
+import sys, os
from calibre.utils.config import OptionParser
from calibre.constants import iswindows, isosx
-from calibre.libunzip import update
from calibre import prints
def option_parser():
@@ -18,11 +17,6 @@ def option_parser():
Run an embedded python interpreter.
''')
- parser.add_option('-u', '--update-module', default=False,
- action='store_true',
- help='Update the specified module in the frozen library. '+
- 'Module specifications are of the form full.name.of.module path_to_module.py',
- )
parser.add_option('-c', '--command', help='Run python code.', default=None)
parser.add_option('-e', '--exec-file', default=None, help='Run the python code in file.')
parser.add_option('-d', '--debug-device-driver', default=False, action='store_true',
@@ -41,39 +35,17 @@ Run an embedded python interpreter.
parser.add_option('--pdfreflow', default=None,
help='Path to PDF file to try and reflow. Output will be placed in '
'current directory. ')
+ parser.add_option('-f', '--develop-from', default=None,
+ help=('Develop calibre from the specified path. '
+ 'The path should point to the src sub-directory in the '
+ 'calibre source tree.'))
return parser
-def update_zipfile(zipfile, mod, path):
- if 'win32' in sys.platform:
- print 'WARNING: On Windows Vista using this option may cause windows to put library.zip into the Virtual Store (typically located in c:\Users\username\AppData\Local\VirtualStore). If it does this you must delete it from there after you\'re done debugging).'
- pat = re.compile(mod.replace('.', '/')+r'\.py[co]*')
- name = mod.replace('.', '/') + os.path.splitext(path)[-1]
- update(zipfile, [pat], [path], [name])
-
-def update_site_packages(sp, mod, path):
- dest = os.path.join(sp, *mod.split('.'))+'.py'
- shutil.copy2(path, dest)
-
-def update_module(mod, path):
- if not hasattr(sys, 'frozen'):
- raise RuntimeError('Modules can only be updated in frozen installs.')
- zp = None
- if iswindows:
- zp = os.path.join(os.path.dirname(sys.executable), 'library.zip')
- elif getattr(sys, 'new_app_bundle', False):
- update_site_packages(sys.site_packages, mod, path)
- elif isosx:
- zp = os.path.join(os.path.dirname(getattr(sys, 'frameworks_dir')),
- 'Resources', 'lib',
- 'python'+'.'.join(map(str, sys.version_info[:2])),
- 'site-packages.zip')
- else:
- zp = os.path.join(getattr(sys, 'frozen_path'), 'loader.zip')
- if zp is not None:
- update_zipfile(zp, mod, path)
- else:
- raise ValueError('Updating modules is not supported on this platform.')
+def develop_from(path):
+ from calibre.gui2 import build_forms
+ print 'Compiling .ui forms...'
+ build_forms(path)
def migrate(old, new):
from calibre.utils.config import prefs
@@ -189,9 +161,6 @@ def main(args=sys.argv):
if opts.gui:
from calibre.gui2.main import main
main(['calibre'])
- elif opts.update_module:
- mod, path = args[1:3]
- update_module(mod, os.path.expanduser(path))
elif opts.command:
sys.argv = args[:1]
exec opts.command
@@ -210,14 +179,16 @@ def main(args=sys.argv):
elif opts.add_simple_plugin is not None:
add_simple_plugin(opts.add_simple_plugin)
elif opts.paths:
- prints('CALIBRE_RESOURCES_LOCATION='+sys.resources_location)
- prints('CALIBRE_EXTENSIONS_LOCATION='+sys.extensions_location)
+ prints('CALIBRE_RESOURCES_PATH='+sys.resources_location)
+ prints('CALIBRE_EXTENSIONS_PATH='+sys.extensions_location)
prints('CALIBRE_PYTHON_PATH='+os.pathsep.join(sys.path))
elif opts.pdfreflow:
from calibre.ebooks.pdf.reflow import option_parser as px, run
from calibre.utils.logging import default_log
opts2, args = px().parse_args(['xxxx', '-vvvv', opts.pdfreflow])
run(opts2, opts.pdfreflow, default_log)
+ elif opts.develop_from is not None:
+ develop_from(opts.develop_from)
else:
from IPython.Shell import IPShellEmbed
ipshell = IPShellEmbed()
diff --git a/src/calibre/devices/linux_mount_helper.c b/src/calibre/devices/linux_mount_helper.c
index 41dab3fada..23bab36389 100644
--- a/src/calibre/devices/linux_mount_helper.c
+++ b/src/calibre/devices/linux_mount_helper.c
@@ -27,6 +27,7 @@ int get_root() {
int do_mount(char *dev, char *mp) {
char options[1000];
char marker[2000];
+ int errsv;
if (exists(dev) == 0) {
fprintf(stderr, "Specified device node does not exist\n");
return EXIT_FAILURE;
@@ -55,19 +56,19 @@ int do_mount(char *dev, char *mp) {
return EXIT_FAILURE;
}
execlp("mount", "mount", "-t", "vfat", "-o", options, dev, mp, NULL);
- int errsv = errno;
+ errsv = errno;
fprintf(stderr, "Failed to mount with error: %s\n", strerror(errsv));
return EXIT_FAILURE;
}
int do_eject(char *dev, char*mp) {
char marker[2000];
- int status = EXIT_FAILURE, ret;
+ int status = EXIT_FAILURE, ret, pid, errsv, i, rmd;
if (get_root() != 0) {
fprintf(stderr, "Failed to elevate to root privileges\n");
return EXIT_FAILURE;
}
- int pid = fork();
+ pid = fork();
if (pid == -1) {
fprintf(stderr, "Failed to fork\n");
return EXIT_FAILURE;
@@ -78,11 +79,10 @@ int do_eject(char *dev, char*mp) {
return EXIT_FAILURE;
}
execlp("eject", "eject", "-s", dev, NULL);
- int errsv = errno;
+ errsv = errno;
fprintf(stderr, "Failed to eject with error: %s\n", strerror(errsv));
return EXIT_FAILURE;
} else {
- int i;
for (i =0; i < 7; i++) {
sleep(1);
ret = waitpid(pid, &status, WNOHANG);
@@ -99,7 +99,7 @@ int do_eject(char *dev, char*mp) {
fprintf(stderr, "Failed to unlink marker: %s\n", strerror(errno));
return EXIT_FAILURE;
}
- int rmd = rmdir(mp);
+ rmd = rmdir(mp);
if (rmd == -1) {
fprintf(stderr, "Failed to remove mount point: %s\n", strerror(errno));
return EXIT_FAILURE;
diff --git a/src/calibre/devices/usbms/device.py b/src/calibre/devices/usbms/device.py
index ff07b36691..1dce5fbec2 100644
--- a/src/calibre/devices/usbms/device.py
+++ b/src/calibre/devices/usbms/device.py
@@ -564,13 +564,13 @@ class Device(DeviceConfig, DevicePlugin):
try:
self.open_windows()
except DeviceError:
- time.sleep(3)
+ time.sleep(5)
self.open_windows()
if isosx:
try:
self.open_osx()
except DeviceError:
- time.sleep(3)
+ time.sleep(7)
self.open_osx()
def eject_windows(self):
@@ -675,13 +675,52 @@ class Device(DeviceConfig, DevicePlugin):
raise FreeSpaceError(_("There is insufficient free space on the storage card"))
return path
- def create_upload_path(self, root, mdata, ext, id):
- from calibre.library.save_to_disk import config, get_components
- opts = config().parse()
- components = get_components(opts.template, mdata, id, opts.timefmt, 250)
- components = [str(x) for x in components]
- components = shorten_components_to(250 - len(root), components)
- filepath = '%s%s' % (os.path.join(root, *components), ext)
+ def create_upload_path(self, path, mdata, fname):
+ path = os.path.abspath(path)
+ newpath = path
+ extra_components = []
+
+ if self.SUPPORTS_SUB_DIRS and self.settings().use_subdirs:
+ if 'tags' in mdata.keys():
+ for tag in mdata['tags']:
+ if tag.startswith(_('News')):
+ extra_components.append('news')
+ c = sanitize(mdata.get('title', ''))
+ if c:
+ extra_components.append(c)
+ c = sanitize(mdata.get('timestamp', ''))
+ if c:
+ extra_components.append(c)
+ break
+ elif tag.startswith('/'):
+ for c in tag.split('/'):
+ c = sanitize(c)
+ if not c: continue
+ extra_components.append(c)
+ break
+
+ if not extra_components:
+ c = sanitize(mdata.get('authors', _('Unknown')))
+ if c:
+ extra_components.append(c)
+ c = sanitize(mdata.get('title', _('Unknown')))
+ if c:
+ extra_components.append(c)
+ newpath = os.path.join(newpath, c)
+
+ fname = sanitize(fname)
+ extra_components.append(fname)
+ extra_components = [str(x) for x in extra_components]
+ def remove_trailing_periods(x):
+ ans = x
+ while ans.endswith('.'):
+ ans = ans[:-1]
+ if not ans:
+ ans = 'x'
+ return ans
+ extra_components = list(map(remove_trailing_periods, extra_components))
+ components = shorten_components_to(250 - len(path), extra_components)
+ filepath = os.path.join(path, *components)
filedir = os.path.dirname(filepath)
if not self.SUPPORTS_SUB_DIRS or not self.settings().use_subdirs:
diff --git a/src/calibre/ebooks/lit/writer.py b/src/calibre/ebooks/lit/writer.py
index e0cc691ad1..6dd5068032 100644
--- a/src/calibre/ebooks/lit/writer.py
+++ b/src/calibre/ebooks/lit/writer.py
@@ -152,7 +152,11 @@ class ReBinary(object):
def write(self, *values):
for value in values:
if isinstance(value, (int, long)):
- value = unichr(value)
+ try:
+ value = unichr(value)
+ except OverflowError:
+ self.logger.warn('Unicode overflow for integer:', value)
+ value = u'?'
self.buf.write(value.encode('utf-8'))
def is_block(self, style):
diff --git a/src/calibre/ebooks/lrf/input.py b/src/calibre/ebooks/lrf/input.py
index 9ec1ba0b8e..f511ba7f09 100644
--- a/src/calibre/ebooks/lrf/input.py
+++ b/src/calibre/ebooks/lrf/input.py
@@ -176,7 +176,7 @@ class TextBlock(etree.XSLTExtension):
def process_child(self, child):
if child.tag == 'CR':
- if self.parent == self.root:
+ if self.parent == self.root or self.parent.tag == 'p':
self.parent = self.root.makeelement('p')
self.root.append(self.parent)
self.add_text_to = (self.parent, 'text')
@@ -365,6 +365,8 @@ class LRFInput(InputFormatPlugin):
d = LRFDocument(stream)
d.parse()
xml = d.to_xml(write_files=True)
+ if options.verbose > 2:
+ open('lrs.xml', 'wb').write(xml.encode('utf-8'))
parser = etree.XMLParser(recover=True, no_network=True)
doc = etree.fromstring(xml, parser=parser)
char_button_map = {}
diff --git a/src/calibre/ebooks/oeb/base.py b/src/calibre/ebooks/oeb/base.py
index 5ee829c8f4..5e3d2296ae 100644
--- a/src/calibre/ebooks/oeb/base.py
+++ b/src/calibre/ebooks/oeb/base.py
@@ -912,23 +912,27 @@ class Manifest(object):
if key == 'lang' or key.endswith('}lang'):
body.attrib.pop(key)
+ def remove_elem(a):
+ p = a.getparent()
+ idx = p.index(a) -1
+ p.remove(a)
+ if a.tail:
+ if idx <= 0:
+ if p.text is None:
+ p.text = ''
+ p.text += a.tail
+ else:
+ if p[idx].tail is None:
+ p[idx].tail = ''
+ p[idx].tail += a.tail
+
# Remove hyperlinks with no content as they cause rendering
# artifacts in browser based renderers
- for a in xpath(data, '//h:a[@href]'):
+ # Also remove empty and tags
+ for a in xpath(data, '//h:a[@href]|//h:i|//h:b'):
if a.get('id', None) is None and a.get('name', None) is None \
and len(a) == 0 and not a.text:
- p = a.getparent()
- idx = p.index(a) -1
- p.remove(a)
- if a.tail:
- if idx <= 0:
- if p.text is None:
- p.text = ''
- p.text += a.tail
- else:
- if p[idx].tail is None:
- p[idx].tail = ''
- p[idx].tail += a.tail
+ remove_elem(a)
return data
diff --git a/src/calibre/ebooks/pdf/images.cpp b/src/calibre/ebooks/pdf/images.cpp
index 2899da8307..b3b062e1f4 100644
--- a/src/calibre/ebooks/pdf/images.cpp
+++ b/src/calibre/ebooks/pdf/images.cpp
@@ -340,17 +340,17 @@ void PNGMemWriter::init(vector *buf, int width, int height) {
}
-
+/*
void calibre_jpeg_error_exit (j_common_ptr cinfo)
{
- /* cinfo->err really points to a my_error_mgr struct, so coerce pointer */
+ // cinfo->err really points to a my_error_mgr struct, so coerce pointer
calibre_jpeg_err_mgr *err = (calibre_jpeg_err_mgr *)(cinfo->err);
- /* Always display the message. */
- /* We could postpone this until after returning, if we chose. */
+ // Always display the message.
+ // We could postpone this until after returning, if we chose.
//(*cinfo->err->output_message) (cinfo);
- /* Return control to the setjmp point */
+ // Return control to the setjmp point
longjmp(err->setjmp_buffer, 1);
}
@@ -366,7 +366,7 @@ JPEGWriter::JPEGWriter() {
void JPEGWriter::init(int width, int height) {
cinfo.image_width = width;
cinfo.image_height = height;
- cinfo.input_components = 3; /* # of color components per pixel */
+ cinfo.input_components = 3; // # of color components per pixel
cinfo.in_color_space = JCS_RGB;
jpeg_set_defaults(&this->cinfo);
this->check();
@@ -387,7 +387,7 @@ void JPEGWriter::check() {
void JPEGWriter::raise() {
char buffer[JMSG_LENGTH_MAX];
- /* Create the message */
+ // Create the message
(*this->cinfo.err->format_message) ((jpeg_common_struct *)(&this->cinfo), buffer);
jpeg_destroy_compress(&this->cinfo);
throw ReflowException(buffer);
@@ -422,3 +422,4 @@ void JPEGWriter::write_splash_bitmap(SplashBitmap *bitmap) {
JPEGWriter::~JPEGWriter() {
jpeg_destroy_compress(&this->cinfo);
}
+*/
diff --git a/src/calibre/ebooks/pdf/images.h b/src/calibre/ebooks/pdf/images.h
index b6e8407ac9..2bdbc09d8d 100644
--- a/src/calibre/ebooks/pdf/images.h
+++ b/src/calibre/ebooks/pdf/images.h
@@ -99,11 +99,11 @@ namespace calibre_reflow {
vector str() const;
void clear();
};
-
+/*
struct calibre_jpeg_err_mgr {
- struct jpeg_error_mgr pub; /* "public" fields */
+ struct jpeg_error_mgr pub; // "public" fields
- jmp_buf setjmp_buffer; /* for return to caller */
+ jmp_buf setjmp_buffer; // for return to caller
};
class JPEGWriter {
@@ -125,6 +125,6 @@ namespace calibre_reflow {
void write_image(JSAMPARRAY image_buffer, JDIMENSION number_of_scanlines);
void write_splash_bitmap(SplashBitmap *bitmap);
};
+*/
}
-
#endif
diff --git a/src/calibre/ebooks/pdf/main.cpp b/src/calibre/ebooks/pdf/main.cpp
index bde406dd49..5102a5c774 100644
--- a/src/calibre/ebooks/pdf/main.cpp
+++ b/src/calibre/ebooks/pdf/main.cpp
@@ -47,29 +47,32 @@ extern "C" {
if (!PyArg_ParseTuple(args, "s#O", &pdfdata, &size, &cover))
return NULL;
+ Reflow *reflow = NULL;
try {
- Reflow reflow(pdfdata, static_cast(size));
- info = reflow.get_info();
+ reflow = new Reflow(pdfdata, size);
+ info = reflow->get_info();
if (PyObject_IsTrue(cover)) {
- if (!reflow.is_locked()) {
- vector *data = reflow.render_first_page();
- if (data->size() > 0) {
+ if (!reflow->is_locked() && reflow->numpages() > 0) {
+ vector *data = reflow->render_first_page();
+ if (data && data->size() > 0) {
PyObject *d = PyBytes_FromStringAndSize(&((*data)[0]), data->size());
delete data;
- if (d == NULL) return PyErr_NoMemory();
- if (PyDict_SetItemString(ans, "cover", d) == -1) return NULL;
+ if (d == NULL) {delete reflow; return PyErr_NoMemory();}
+ if (PyDict_SetItemString(ans, "cover", d) == -1) {delete reflow; return NULL;}
Py_XDECREF(d);
}
} else {
- if (PyDict_SetItemString(ans, "cover", Py_None) == -1) return NULL;
+ if (PyDict_SetItemString(ans, "cover", Py_None) == -1) {delete reflow; return NULL;}
}
}
} catch (std::exception &e) {
- PyErr_SetString(PyExc_RuntimeError, e.what()); return NULL;
+ PyErr_SetString(PyExc_RuntimeError, e.what()); delete reflow; return NULL;
} catch (...) {
PyErr_SetString(PyExc_RuntimeError,
- "Unknown exception raised while getting metadata from PDF"); return NULL;
+ "Unknown exception raised while getting metadata from PDF"); delete reflow; return NULL;
}
+ delete reflow; reflow = NULL;
+
for (map::const_iterator it = info.begin() ; it != info.end(); it++ ) {
PyObject *key = PyUnicode_Decode((*it).first.c_str(), (*it).first.size(), "UTF-8", "replace");
diff --git a/src/calibre/ebooks/pdf/reflow.cpp b/src/calibre/ebooks/pdf/reflow.cpp
index 3b3dba4f34..86a33ced8e 100644
--- a/src/calibre/ebooks/pdf/reflow.cpp
+++ b/src/calibre/ebooks/pdf/reflow.cpp
@@ -3,11 +3,6 @@
* License: GNU GPL v3
*/
-#ifdef _WIN32
-#include
-#else
-#include
-#endif
#include
#include
#include
@@ -25,6 +20,8 @@ static const char* info_keys[num_info_keys] = {
"Title", "Subject", "Keywords", "Author", "Creator", "Producer",
"CreationDate", "ModDate"
};
+static char encoding[10] = "UTF-8";
+static char yes[10] = "yes";
//------------------------------------------------------------------------
@@ -684,30 +681,16 @@ void XMLOutputDev::drawImage(GfxState *state, Object *ref, Stream *str,
colorMap, interpolate, maskColors, inlineImg);
}
-static char stream_pdf[15] = "stream.pdf";
-
-class MemInStream : public MemStream {
- private:
- GooString stream_name;
-
- public:
- MemInStream(char *buf, size_t st, size_t sz, Object *obj) :
- MemStream(buf, st, sz, obj), stream_name(stream_pdf) {}
- ~MemInStream() {}
- GooString *getFileName() { return &this->stream_name; }
-};
-
Reflow::Reflow(char *pdfdata, size_t sz) :
- pdfdata(pdfdata), current_font_size(-1), doc(NULL)
+ pdfdata(pdfdata), current_font_size(-1), doc(NULL), obj()
{
- Object obj;
- obj.initNull();
+ this->obj.initNull();
if (globalParams == NULL) {
globalParams = new GlobalParams();
if (!globalParams)
throw ReflowException("Failed to allocate Globalparams");
}
- MemInStream *str = new MemInStream(pdfdata, 0, sz, &obj);
+ MemStream *str = new MemStream(pdfdata, 0, sz, &this->obj);
this->doc = new PDFDoc(str, NULL, NULL);
if (!this->doc->isOk()) {
@@ -730,7 +713,6 @@ Reflow::render() {
if (!this->doc->okToCopy())
cout << "Warning, this document has the copy protection flag set, ignoring." << endl;
- char encoding[10] = "UTF-8";
globalParams->setTextEncoding(encoding);
int first_page = 1;
@@ -808,7 +790,6 @@ map Reflow::get_info() {
Object info;
map ans;
string val;
- char encoding[10] = "UTF-8";
globalParams->setTextEncoding(encoding);
this->doc->getDocInfo(&info);
@@ -832,7 +813,7 @@ string Reflow::decode_info_string(Dict *info, const char *key) const {
int i, n;
ostringstream oss;
char *tmp = new char[strlen(key)+1];
- strcpy(tmp, key);
+ strncpy(tmp, key, strlen(key)+1);
UnicodeMap *umap;
if (!(umap = globalParams->getTextEncoding())) {
throw ReflowException("Failed to allocate unicode map.");
@@ -871,8 +852,7 @@ string Reflow::decode_info_string(Dict *info, const char *key) const {
vector* Reflow::render_first_page(bool use_crop_box, double x_res,
double y_res) {
if (this->is_locked()) throw ReflowException("Document is locked.");
- char encoding[10] = "UTF-8";
- char yes[10] = "yes";
+ if (this->numpages() < 1) throw ReflowException("Document has no pages.");
globalParams->setTextEncoding(encoding);
globalParams->setEnableFreeType(yes);
globalParams->setAntialias(yes);
@@ -882,37 +862,45 @@ vector* Reflow::render_first_page(bool use_crop_box, double x_res,
paper_color[0] = 255;
paper_color[1] = 255;
paper_color[2] = 255;
- SplashOutputDev *out = new SplashOutputDev(splashModeRGB8, 4, false, paper_color);
+ SplashOutputDev *out = new SplashOutputDev(splashModeRGB8, 4, false, paper_color, true, true);
+ out->setVectorAntialias(true);
if (!out) {
throw ReflowException("Failed to allocate SplashOutputDev");
}
- out->startDoc(doc->getXRef());
+ try {
+ out->startDoc(doc->getXRef());
+ out->startPage(1, NULL);
- double pg_w, pg_h;
- int pg = 1;
+ double pg_w, pg_h;
+ int pg = 1;
- if (use_crop_box) {
- pg_w = this->doc->getPageCropWidth(pg);
- pg_h = this->doc->getPageCropHeight(pg);
- } else {
- pg_w = this->doc->getPageMediaWidth(pg);
- pg_h = this->doc->getPageMediaHeight(pg);
- }
+ if (use_crop_box) {
+ pg_w = this->doc->getPageCropWidth(pg);
+ pg_h = this->doc->getPageCropHeight(pg);
+ } else {
+ pg_w = this->doc->getPageMediaWidth(pg);
+ pg_h = this->doc->getPageMediaHeight(pg);
+ }
- pg_w *= x_res/72.;
- pg_h *= x_res/72.;
+ pg_w *= x_res/72.;
+ pg_h *= x_res/72.;
- int x=0, y=0;
- this->doc->displayPageSlice(out, pg, x_res, y_res, 0,
- !use_crop_box, false, false, x, y, pg_w, pg_h);
+ int x=0, y=0;
+ this->doc->displayPageSlice(out, pg, x_res, y_res, 0,
+ !use_crop_box, false, false, x, y, pg_w, pg_h);
+ } catch(...) { delete out; throw; }
- SplashBitmap *bmp = out->getBitmap();
+ SplashBitmap *bmp = out->takeBitmap();
+ out->endPage();
+ delete out; out = NULL;
PNGMemWriter writer;
vector *buf = new vector();
- writer.init(buf, bmp->getWidth(), bmp->getHeight());
- writer.write_splash_bitmap(bmp);
- writer.close();
- delete out;
+ try {
+ writer.init(buf, bmp->getWidth(), bmp->getHeight());
+ writer.write_splash_bitmap(bmp);
+ writer.close();
+ } catch(...) { delete buf; delete bmp; throw; }
+ delete bmp;
return buf;
}
@@ -967,4 +955,3 @@ string Reflow::set_info(map sinfo) {
return ans;
}
-
diff --git a/src/calibre/ebooks/pdf/reflow.h b/src/calibre/ebooks/pdf/reflow.h
index 458d452b72..fd629602b2 100644
--- a/src/calibre/ebooks/pdf/reflow.h
+++ b/src/calibre/ebooks/pdf/reflow.h
@@ -8,6 +8,14 @@
#define CALIBRE_REFLOW
#define UNICODE
+#ifdef _WIN32
+#include
+#elif defined(_OSX)
+#include
+#else
+#include
+#endif
+
#include
#include
#include
@@ -23,7 +31,6 @@
#include
#include
#include
-#include
#include
#include
\n"
"A En referanse av "
"syntaksen dersom et regulært uttrykk er tilgjengelig.
\n"
@@ -5412,7 +5435,7 @@ msgstr "Lagre et enkelt format til lagringsenhet..."
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:124
msgid "Search (For Advanced Search click the button to the left)"
-msgstr "Søk (For Avansert Søk klikk på knappen til venstre)"
+msgstr "Søk (For avansert søk, klikk på knappen til venstre)"
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:141
msgid "Error communicating with device"
@@ -5456,11 +5479,11 @@ msgstr "Last ned metadata og omslag"
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:230
msgid "Download only metadata"
-msgstr "Last kun ned metadata"
+msgstr "Last bare ned metadata"
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:231
msgid "Download only covers"
-msgstr "Last kun ned omslag"
+msgstr "Last bare ned omslag"
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:234
msgid "Add books from a single directory"
@@ -5519,7 +5542,7 @@ msgstr "Samlet konvertering"
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:331
msgid "Run welcome wizard"
-msgstr "Kjør velkommenveiviser"
+msgstr "Kjør velkomstveiviser"
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:365
msgid "Similar books..."
@@ -5890,7 +5913,7 @@ msgstr "Logg debugging informasjon til konsollen"
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1757
msgid "Do not check for updates"
-msgstr ""
+msgstr "Ikke søk etter oppdateringer"
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1805
msgid "If you are sure it is not running"
@@ -5985,7 +6008,7 @@ msgstr "Slett"
#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:350
msgid "Edit meta information"
-msgstr "Rediger metadatainformasjon"
+msgstr "Rediger metadata"
#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:351
msgid "E"
@@ -6145,11 +6168,11 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:123
msgid "Queueing books for bulk conversion"
-msgstr ""
+msgstr "Kø bøker for samlet konvertering"
#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:183
msgid "Queueing "
-msgstr ""
+msgstr "Kø "
#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:237
msgid "You must set a username and password for %s"
@@ -6817,7 +6840,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:111
msgid "Mail &Server"
-msgstr "E-post &Server"
+msgstr "E-post&server"
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:112
msgid "calibre can optionally use a server to send mail"
@@ -6937,6 +6960,8 @@ msgid ""
"The maximum number of matches to return per OPDS query. This affects Stanza, "
"WordPlayer, etc. integration."
msgstr ""
+"Maksimum antall treff som resultat per OPDS spørring. Dette affekterer "
+"Stanza, WordPlayer osv integrering."
#: /home/kovid/work/calibre/src/calibre/library/cli.py:117
msgid ""
@@ -8000,6 +8025,10 @@ msgstr "Vis detaljert utdatainformasjon. Benyttes for feilsøking"
#~ "Uthentet markup fra lesbart format. Dette kan medføre at mellomrom, "
#~ "tabulatorer og linjeskift blir modifisert."
+#~ msgid "Number of colors for grayscale image conversion. Default: %default"
+#~ msgstr ""
+#~ "Antall farger brukt for gråskala bildekonvertering. Standard er %default"
+
#~ msgid "Rendering comic pages..."
#~ msgstr "Prosesserer tegneserie sider..."
diff --git a/src/calibre/translations/nds.po b/src/calibre/translations/nds.po
index 75c38c4698..de4c5f3e5f 100644
--- a/src/calibre/translations/nds.po
+++ b/src/calibre/translations/nds.po
@@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: de\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-09-18 06:45+0000\n"
+"POT-Creation-Date: 2009-09-18 19:33+0000\n"
"PO-Revision-Date: 2009-09-04 22:11+0000\n"
"Last-Translator: Kovid Goyal \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: 2009-09-18 09:47+0000\n"
+"X-Launchpad-Export-Date: 2009-09-23 09:43+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
"Generated-By: pygettext.py 1.5\n"
@@ -29,7 +29,7 @@ msgstr "Macht gar nix"
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:703
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:706
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:403
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:410
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:65
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67
#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:318
@@ -644,29 +644,30 @@ msgstr ""
"%s"
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:274
-msgid "Number of colors for grayscale image conversion. Default: %default"
+msgid ""
+"Number of colors for grayscale image conversion. Default: %default. Values "
+"of less than 256 may result in blurred text on your device if you are "
+"creating your comics in EPUB format."
msgstr ""
-"Anzahl der Farben für die Konvertierung von Graustufenbildern. "
-"Voreinstellung: %default"
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:276
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:278
msgid ""
"Disable normalize (improve contrast) color range for pictures. Default: False"
msgstr ""
"Deaktivieren der Normalisierung (verbessert den Kontrast) des Farbbereichs "
"für Bilder. Voreinstellung: False"
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:279
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:281
msgid "Maintain picture aspect ratio. Default is to fill the screen."
msgstr ""
"Seitenverhältnis des Bildes beibehalten. Voreinstellung ist "
"bildschirmfüllende Darstellung."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:281
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283
msgid "Disable sharpening."
msgstr "Schärfen deaktivieren."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:285
msgid ""
"Disable trimming of comic pages. For some comics, trimming might remove "
"content as well as borders."
@@ -674,11 +675,11 @@ msgstr ""
"Beschneiden von Comic-Seiten ausschalten. Bei einigen Comics könnte sonst "
"neben dem Rahmen auch Inhalt entfernt werden."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:286
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288
msgid "Don't split landscape images into two portrait images"
msgstr "Bilder im Querformat nicht in zwei Bilder im Hochformat aufteilen."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:290
msgid ""
"Keep aspect ratio and scale image using screen height as image width for "
"viewing in landscape mode."
@@ -686,7 +687,7 @@ msgstr ""
"Seitenverhältnis beibehalten und Bild so skalieren, dass die Bildschirmhöhe "
"als Bildbreite in der Querformatansicht verwendet wird."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:291
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:293
msgid ""
"Used for right-to-left publications like manga. Causes landscape pages to be "
"split into portrait pages from right to left."
@@ -694,7 +695,7 @@ msgstr ""
"Benutzt für rechts-nach-links Publikationen wie Mangas. Querformatige Seiten "
"werden von rechts nach links in mehrere hochformatige Seiten unterteilt."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:295
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:297
msgid ""
"Enable Despeckle. Reduces speckle noise. May greatly increase processing "
"time."
@@ -702,7 +703,7 @@ msgstr ""
"Entkörnung einschalten. Reduziert die Körnigkeit. Kann die Bearbeitungszeit "
"stark verlängern."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:298
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:300
msgid ""
"Don't sort the files found in the comic alphabetically by name. Instead use "
"the order they were added to the comic."
@@ -711,12 +712,19 @@ msgstr ""
"sortieren, sondern die Reihenfolge verwenden, in der sie zum Comic "
"hinzugefügt wurden."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:302
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:304
+msgid ""
+"The format that images in the created ebook are converted to. You can "
+"experiment to see which format gives you optimal size and look on your "
+"device."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:308
msgid "Apply no processing to the image"
msgstr "Auf das Bild keine Verarbeitung anwenden"
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:427
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:438
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:434
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:445
msgid "Page"
msgstr "Seite"
@@ -2622,7 +2630,7 @@ msgstr "Einstellungen für"
msgid "input"
msgstr "Eingabe"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:76
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:45
#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:41
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input_ui.py:28
@@ -2650,60 +2658,65 @@ msgstr "Eingabe"
msgid "Form"
msgstr "Art"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:77
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:94
msgid "&Number of Colors:"
msgstr "A&nzahl der Farben:"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:78
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:86
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:96
msgid "Disable &normalize"
msgstr "&Normalisieren deaktivieren"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:79
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:87
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97
msgid "Keep &aspect ratio"
msgstr "Verhältnis &beibehalten"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:80
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:88
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:98
msgid "Disable &Sharpening"
msgstr "&Schärfen deaktivieren"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:81
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:89
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:104
msgid "Disable &Trimming"
msgstr "Beschneiden ausschal&ten"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:82
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:90
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:103
msgid "&Wide"
msgstr "&Weite"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:83
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:91
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:99
msgid "&Landscape"
msgstr "&Querformat"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:92
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:101
msgid "&Right to left"
msgstr "Von &rechts nach links"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:93
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:100
msgid "Don't so&rt"
msgstr "Nicht so&rtieren"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:86
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:94
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:102
msgid "De&speckle"
msgstr "Ent&körnung"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:87
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:95
msgid "&Disable comic processing"
msgstr "&Comic Verarbeitung ausschalten"
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:96
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:107
+msgid "&Output format:"
+msgstr "Ausgabef&ormat:"
+
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:19
msgid "Debug"
msgstr ""
@@ -3228,10 +3241,6 @@ msgstr "Dialog"
msgid "&Input format:"
msgstr "E&ingabeformat:"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:107
-msgid "&Output format:"
-msgstr "Ausgabef&ormat:"
-
#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:17
msgid ""
"Structure\n"
@@ -8480,6 +8489,11 @@ msgstr "Zeige detailierte Ausgabeinformation. Hilfreich zur Fehlersuche."
#~ msgid "Very verbose output, useful for debugging."
#~ msgstr "Sehr ausführliche Ausgabe, hilfreich bei der Fehlersuche."
+#~ msgid "Number of colors for grayscale image conversion. Default: %default"
+#~ msgstr ""
+#~ "Anzahl der Farben für die Konvertierung von Graustufenbildern. "
+#~ "Voreinstellung: %default"
+
#~ msgid "The format to use when saving single files to disk"
#~ msgstr ""
#~ "Das zu verwendende Format bei der Speicherung einzelner Dateie auf die "
diff --git a/src/calibre/translations/nl.po b/src/calibre/translations/nl.po
index dc26cb0b73..1fa25fcccd 100644
--- a/src/calibre/translations/nl.po
+++ b/src/calibre/translations/nl.po
@@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: calibre\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
-"POT-Creation-Date: 2009-09-18 06:45+0000\n"
+"POT-Creation-Date: 2009-09-18 19:33+0000\n"
"PO-Revision-Date: 2009-09-15 05:43+0000\n"
"Last-Translator: Yentl \n"
"Language-Team: Dutch \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2009-09-18 09:46+0000\n"
+"X-Launchpad-Export-Date: 2009-09-23 09:42+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:41
@@ -28,7 +28,7 @@ msgstr "Doet absoluut niets."
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:703
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:706
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:403
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:410
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:65
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67
#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:318
@@ -622,36 +622,38 @@ msgid ""
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:274
-msgid "Number of colors for grayscale image conversion. Default: %default"
+msgid ""
+"Number of colors for grayscale image conversion. Default: %default. Values "
+"of less than 256 may result in blurred text on your device if you are "
+"creating your comics in EPUB format."
msgstr ""
-"Aantal kleuren voor beeld conversie naar grijstinten. Standaard: %default"
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:276
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:278
msgid ""
"Disable normalize (improve contrast) color range for pictures. Default: False"
msgstr ""
"Geen kleur normalisatie (contrast verbetering) voor afbeeldingen. Standaard: "
"Nee (False)"
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:279
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:281
msgid "Maintain picture aspect ratio. Default is to fill the screen."
msgstr "Behoudt afbeelding aspect ratio. Standaard is beeldvullend."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:281
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283
msgid "Disable sharpening."
msgstr "Geen aanscherpen."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:285
msgid ""
"Disable trimming of comic pages. For some comics, trimming might remove "
"content as well as borders."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:286
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288
msgid "Don't split landscape images into two portrait images"
msgstr "Splits landscape afbeeldingen niet in twee portret afbeeldingen"
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:290
msgid ""
"Keep aspect ratio and scale image using screen height as image width for "
"viewing in landscape mode."
@@ -659,7 +661,7 @@ msgstr ""
"Behoudt aspect ratio en schaal afbeelding aan de hand van de schermhoogte "
"als beeld breedte voor het bekijken in landscape modus."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:291
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:293
msgid ""
"Used for right-to-left publications like manga. Causes landscape pages to be "
"split into portrait pages from right to left."
@@ -667,7 +669,7 @@ msgstr ""
"Gebruik voor rechts-naar-links publicaties zoals manga. Hierdoor worden "
"landscape paginas gesplitst in portret paginas van rechts naar links."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:295
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:297
msgid ""
"Enable Despeckle. Reduces speckle noise. May greatly increase processing "
"time."
@@ -675,7 +677,7 @@ msgstr ""
"Activeer ontspikkelen. Verminderd spikkel ruis. Dit kan de verwerkingstijd "
"flink verlengen."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:298
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:300
msgid ""
"Don't sort the files found in the comic alphabetically by name. Instead use "
"the order they were added to the comic."
@@ -683,12 +685,19 @@ msgstr ""
"Sorteer de bestanden in de comic niet alfabetisch op naam - gebruik de "
"voldorde waarin ze zijn toegevoegd aan de comic."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:302
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:304
+msgid ""
+"The format that images in the created ebook are converted to. You can "
+"experiment to see which format gives you optimal size and look on your "
+"device."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:308
msgid "Apply no processing to the image"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:427
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:438
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:434
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:445
msgid "Page"
msgstr ""
@@ -2328,7 +2337,7 @@ msgstr ""
msgid "input"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:76
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:45
#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:41
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input_ui.py:28
@@ -2356,60 +2365,65 @@ msgstr ""
msgid "Form"
msgstr "Formulier"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:77
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:94
msgid "&Number of Colors:"
msgstr "Aantal &Kleuren:"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:78
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:86
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:96
msgid "Disable &normalize"
msgstr "Schakel &normalisatie uit"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:79
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:87
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97
msgid "Keep &aspect ratio"
msgstr "&Aspectverhouding behouden"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:80
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:88
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:98
msgid "Disable &Sharpening"
msgstr "Schakel ver&scherping uit"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:81
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:89
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:104
msgid "Disable &Trimming"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:82
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:90
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:103
msgid "&Wide"
msgstr "&Wijd"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:83
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:91
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:99
msgid "&Landscape"
msgstr "&Landscape"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:92
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:101
msgid "&Right to left"
msgstr "&Rechts naar links"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:93
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:100
msgid "Don't so&rt"
msgstr "Niet so&rteren"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:86
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:94
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:102
msgid "De&speckle"
msgstr "Ont&spikkel"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:87
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:95
msgid "&Disable comic processing"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:96
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:107
+msgid "&Output format:"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:19
msgid "Debug"
msgstr ""
@@ -2932,10 +2946,6 @@ msgstr "Dialoogvenster"
msgid "&Input format:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:107
-msgid "&Output format:"
-msgstr ""
-
#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:17
msgid ""
"Structure\n"
@@ -8150,6 +8160,10 @@ msgstr ""
#~ "Opties voor de configuratie van de conversie van comics (CBR, CBZ) bestanden "
#~ "naar eboek"
+#~ msgid "Number of colors for grayscale image conversion. Default: %default"
+#~ msgstr ""
+#~ "Aantal kleuren voor beeld conversie naar grijstinten. Standaard: %default"
+
#~ msgid "The format to use when saving single files to disk"
#~ msgstr ""
#~ "Het formaat te gebruiken voor het wegschrijven van enkele bestanden naar "
diff --git a/src/calibre/translations/pl.po b/src/calibre/translations/pl.po
index 46ac506a57..dfd09bba02 100644
--- a/src/calibre/translations/pl.po
+++ b/src/calibre/translations/pl.po
@@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: calibre\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
-"POT-Creation-Date: 2009-09-18 06:45+0000\n"
-"PO-Revision-Date: 2009-09-15 05:42+0000\n"
+"POT-Creation-Date: 2009-09-18 19:33+0000\n"
+"PO-Revision-Date: 2009-09-18 19:32+0000\n"
"Last-Translator: Kovid Goyal \n"
"Language-Team: Polish \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2009-09-18 09:47+0000\n"
+"X-Launchpad-Export-Date: 2009-09-23 09:44+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:41
@@ -28,7 +28,7 @@ msgstr "Ta opcja nic nie zmienia"
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:703
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:706
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:403
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:410
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:65
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67
#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:318
@@ -616,36 +616,38 @@ msgid ""
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:274
-msgid "Number of colors for grayscale image conversion. Default: %default"
+msgid ""
+"Number of colors for grayscale image conversion. Default: %default. Values "
+"of less than 256 may result in blurred text on your device if you are "
+"creating your comics in EPUB format."
msgstr ""
-"Liczba kolorów dla konwersji grafiki na czarno-białą. Domyślnie: %default"
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:276
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:278
msgid ""
"Disable normalize (improve contrast) color range for pictures. Default: False"
msgstr ""
"Nie zezwalaj na normalizowanie (poprawianie kontrastu) głębi kolorów. "
"Domyślne: Fałsz"
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:279
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:281
msgid "Maintain picture aspect ratio. Default is to fill the screen."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:281
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283
msgid "Disable sharpening."
msgstr "Wyłącz wyostrzanie"
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:285
msgid ""
"Disable trimming of comic pages. For some comics, trimming might remove "
"content as well as borders."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:286
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288
msgid "Don't split landscape images into two portrait images"
msgstr "Nie dziel grafik panoramicznych na dwie części"
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:290
msgid ""
"Keep aspect ratio and scale image using screen height as image width for "
"viewing in landscape mode."
@@ -653,30 +655,37 @@ msgstr ""
"Zachowaj format i skalę obrazu używając wysokości ekranu jako szerokość "
"obrazu podczas wyświetlania w trybie panoramicznym."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:291
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:293
msgid ""
"Used for right-to-left publications like manga. Causes landscape pages to be "
"split into portrait pages from right to left."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:295
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:297
msgid ""
"Enable Despeckle. Reduces speckle noise. May greatly increase processing "
"time."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:298
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:300
msgid ""
"Don't sort the files found in the comic alphabetically by name. Instead use "
"the order they were added to the comic."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:302
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:304
+msgid ""
+"The format that images in the created ebook are converted to. You can "
+"experiment to see which format gives you optimal size and look on your "
+"device."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:308
msgid "Apply no processing to the image"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:427
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:438
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:434
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:445
msgid "Page"
msgstr "Strona"
@@ -2318,7 +2327,7 @@ msgstr ""
msgid "input"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:76
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:45
#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:41
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input_ui.py:28
@@ -2346,60 +2355,65 @@ msgstr ""
msgid "Form"
msgstr "Formularz"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:77
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:94
msgid "&Number of Colors:"
msgstr "Liczba kolorów:"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:78
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:86
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:96
msgid "Disable &normalize"
msgstr "Wyłącz normalizację"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:79
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:87
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97
msgid "Keep &aspect ratio"
msgstr "Zachowaj &proporcje"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:80
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:88
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:98
msgid "Disable &Sharpening"
msgstr "Wyłącz wyostrzanie"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:81
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:89
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:104
msgid "Disable &Trimming"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:82
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:90
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:103
msgid "&Wide"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:83
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:91
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:99
msgid "&Landscape"
msgstr "Pozioma"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:92
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:101
msgid "&Right to left"
msgstr "&Prawa do lewej"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:93
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:100
msgid "Don't so&rt"
msgstr "Nie so&tuj"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:86
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:94
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:102
msgid "De&speckle"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:87
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:95
msgid "&Disable comic processing"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:96
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:107
+msgid "&Output format:"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:19
msgid "Debug"
msgstr ""
@@ -2917,10 +2931,6 @@ msgstr "Okno dialogowe"
msgid "&Input format:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:107
-msgid "&Output format:"
-msgstr ""
-
#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:17
msgid ""
"Structure\n"
@@ -7589,6 +7599,10 @@ msgstr ""
#~ msgid "Click to see the list of books available on your computer"
#~ msgstr "Kliknij, aby zobaczyć listę książek dostepnych na twoim komputerze"
+#~ msgid "Number of colors for grayscale image conversion. Default: %default"
+#~ msgstr ""
+#~ "Liczba kolorów dla konwersji grafiki na czarno-białą. Domyślnie: %default"
+
#~ msgid ""
#~ "any2lrf [options] myfile\n"
#~ "\n"
diff --git a/src/calibre/translations/pt.po b/src/calibre/translations/pt.po
index ad83aed808..743a8f5d79 100644
--- a/src/calibre/translations/pt.po
+++ b/src/calibre/translations/pt.po
@@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: calibre\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
-"POT-Creation-Date: 2009-09-18 06:45+0000\n"
+"POT-Creation-Date: 2009-09-18 19:33+0000\n"
"PO-Revision-Date: 2009-09-15 05:39+0000\n"
"Last-Translator: Kovid Goyal \n"
"Language-Team: Portuguese \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2009-09-18 09:47+0000\n"
+"X-Launchpad-Export-Date: 2009-09-23 09:44+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:41
@@ -28,7 +28,7 @@ msgstr "Não faz absolutamente nada"
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:703
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:706
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:403
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:410
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:65
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67
#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:318
@@ -642,28 +642,29 @@ msgstr ""
"%s"
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:274
-msgid "Number of colors for grayscale image conversion. Default: %default"
+msgid ""
+"Number of colors for grayscale image conversion. Default: %default. Values "
+"of less than 256 may result in blurred text on your device if you are "
+"creating your comics in EPUB format."
msgstr ""
-"Número de cores para a conversão de imagens em escala de cinza. A "
-"predefinição é: %default"
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:276
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:278
msgid ""
"Disable normalize (improve contrast) color range for pictures. Default: False"
msgstr ""
"Desactivar a normalização (melhoria do contraste) do campo de cores das "
"imagens. A predefinição é: False"
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:279
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:281
msgid "Maintain picture aspect ratio. Default is to fill the screen."
msgstr ""
"Manter a relação de aspecto da imagem. A predefinição é preencher o écran."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:281
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283
msgid "Disable sharpening."
msgstr "Desactivar a nitidez."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:285
msgid ""
"Disable trimming of comic pages. For some comics, trimming might remove "
"content as well as borders."
@@ -671,12 +672,12 @@ msgstr ""
"Desactivar o aparar das páginas de banda desenhada. Em certas bandas "
"desenhadas aparar pode remover conteúdos além das margens."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:286
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288
msgid "Don't split landscape images into two portrait images"
msgstr ""
"Não dividir as imagens em modo de paisagem em duas imagens em modo de retrato"
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:290
msgid ""
"Keep aspect ratio and scale image using screen height as image width for "
"viewing in landscape mode."
@@ -684,7 +685,7 @@ msgstr ""
"Manter a relação de aspecto e escala da imagem usando a altura do écran como "
"largura da imagem para visualização em modo paisagem."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:291
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:293
msgid ""
"Used for right-to-left publications like manga. Causes landscape pages to be "
"split into portrait pages from right to left."
@@ -693,7 +694,7 @@ msgstr ""
"páginas em modo de paisagem a serem divididas em páginas em modo de retrato "
"da direita para a esquerda."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:295
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:297
msgid ""
"Enable Despeckle. Reduces speckle noise. May greatly increase processing "
"time."
@@ -701,7 +702,7 @@ msgstr ""
"Activar Limpar Irregularidades. Reduz as irregularidades. Pode aumentar "
"muito o tempo de processamento."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:298
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:300
msgid ""
"Don't sort the files found in the comic alphabetically by name. Instead use "
"the order they were added to the comic."
@@ -710,12 +711,19 @@ msgstr ""
"nome. Em vez disso, usar a ordem pela qual foram adicionados à banda "
"desenhada."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:302
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:304
+msgid ""
+"The format that images in the created ebook are converted to. You can "
+"experiment to see which format gives you optimal size and look on your "
+"device."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:308
msgid "Apply no processing to the image"
msgstr "Não aplicar processamento à imagem"
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:427
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:438
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:434
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:445
msgid "Page"
msgstr "Página"
@@ -2632,7 +2640,7 @@ msgstr "Opções específicas a"
msgid "input"
msgstr "ficheiro de origem"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:76
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:45
#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:41
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input_ui.py:28
@@ -2660,60 +2668,65 @@ msgstr "ficheiro de origem"
msgid "Form"
msgstr "Formulário"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:77
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:94
msgid "&Number of Colors:"
msgstr "Número de &cores:"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:78
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:86
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:96
msgid "Disable &normalize"
msgstr "Desactivar nor&malizar"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:79
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:87
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97
msgid "Keep &aspect ratio"
msgstr "Manter a &relação de aspecto"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:80
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:88
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:98
msgid "Disable &Sharpening"
msgstr "Desactivar &nitidez"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:81
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:89
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:104
msgid "Disable &Trimming"
msgstr "Desactivar &aparar"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:82
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:90
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:103
msgid "&Wide"
msgstr "&Largo"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:83
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:91
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:99
msgid "&Landscape"
msgstr "Paisa&gem"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:92
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:101
msgid "&Right to left"
msgstr "&Direita para a esquerda"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:93
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:100
msgid "Don't so&rt"
msgstr "Não &ordenar"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:86
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:94
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:102
msgid "De&speckle"
msgstr "Limpar &irregularidades"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:87
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:95
msgid "&Disable comic processing"
msgstr "Desactivar o &processamento de banda desenhada"
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:96
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:107
+msgid "&Output format:"
+msgstr "Formato de &destino:"
+
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:19
msgid "Debug"
msgstr "Depurar"
@@ -3243,10 +3256,6 @@ msgstr "Caixa de diálogo"
msgid "&Input format:"
msgstr "Formato de &origem:"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:107
-msgid "&Output format:"
-msgstr "Formato de &destino:"
-
#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:17
msgid ""
"Structure\n"
@@ -9215,6 +9224,11 @@ msgstr "Mostrar informação detalhada. Útil para depurar."
#~ "Opções para controlar a conversão de ficheiros de banda desenhada (CBR, CBZ) "
#~ "em livros"
+#~ msgid "Number of colors for grayscale image conversion. Default: %default"
+#~ msgstr ""
+#~ "Número de cores para a conversão de imagens em escala de cinza. A "
+#~ "predefinição é: %default"
+
#~ msgid "Options to control the fetching of periodical content from the web."
#~ msgstr "Opções para controlar a recolha de conteúdos periódicos da rede."
diff --git a/src/calibre/translations/pt_BR.po b/src/calibre/translations/pt_BR.po
index a5fd3f4a3e..32238ebb3d 100644
--- a/src/calibre/translations/pt_BR.po
+++ b/src/calibre/translations/pt_BR.po
@@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: calibre\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
-"POT-Creation-Date: 2009-09-18 06:45+0000\n"
+"POT-Creation-Date: 2009-09-18 19:33+0000\n"
"PO-Revision-Date: 2009-09-05 19:10+0000\n"
"Last-Translator: matheusoveral \n"
"Language-Team: Brazilian Portuguese \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2009-09-18 09:48+0000\n"
+"X-Launchpad-Export-Date: 2009-09-23 09:45+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:41
@@ -28,7 +28,7 @@ msgstr "Faz absolutamente nada"
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:703
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:706
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:403
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:410
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:65
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67
#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:318
@@ -634,24 +634,26 @@ msgstr ""
"%s"
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:274
-msgid "Number of colors for grayscale image conversion. Default: %default"
+msgid ""
+"Number of colors for grayscale image conversion. Default: %default. Values "
+"of less than 256 may result in blurred text on your device if you are "
+"creating your comics in EPUB format."
msgstr ""
-"Número de cores para conversão de imagens em tons de cinza. Padrão: %default"
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:276
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:278
msgid ""
"Disable normalize (improve contrast) color range for pictures. Default: False"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:279
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:281
msgid "Maintain picture aspect ratio. Default is to fill the screen."
msgstr "Manter a proporção da imagem. O padrão é para preencher a tela."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:281
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283
msgid "Disable sharpening."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:285
msgid ""
"Disable trimming of comic pages. For some comics, trimming might remove "
"content as well as borders."
@@ -659,29 +661,29 @@ msgstr ""
"Desativar corte de páginas de quadrinhos. Para alguns quadrinhos, o corte "
"pode remover conteúdo bem como bordas."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:286
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288
msgid "Don't split landscape images into two portrait images"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:290
msgid ""
"Keep aspect ratio and scale image using screen height as image width for "
"viewing in landscape mode."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:291
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:293
msgid ""
"Used for right-to-left publications like manga. Causes landscape pages to be "
"split into portrait pages from right to left."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:295
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:297
msgid ""
"Enable Despeckle. Reduces speckle noise. May greatly increase processing "
"time."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:298
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:300
msgid ""
"Don't sort the files found in the comic alphabetically by name. Instead use "
"the order they were added to the comic."
@@ -689,12 +691,19 @@ msgstr ""
"Não listar alfabeticamente por nome os arquivos encontrados no gibi. "
"Utilizar a sequencia pela qual foram adicionados ao arquivo."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:302
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:304
+msgid ""
+"The format that images in the created ebook are converted to. You can "
+"experiment to see which format gives you optimal size and look on your "
+"device."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:308
msgid "Apply no processing to the image"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:427
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:438
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:434
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:445
msgid "Page"
msgstr "Página"
@@ -2340,7 +2349,7 @@ msgstr ""
msgid "input"
msgstr "entrada"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:76
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:45
#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:41
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input_ui.py:28
@@ -2368,60 +2377,65 @@ msgstr "entrada"
msgid "Form"
msgstr "Formulário"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:77
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:94
msgid "&Number of Colors:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:78
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:86
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:96
msgid "Disable &normalize"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:79
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:87
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97
msgid "Keep &aspect ratio"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:80
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:88
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:98
msgid "Disable &Sharpening"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:81
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:89
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:104
msgid "Disable &Trimming"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:82
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:90
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:103
msgid "&Wide"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:83
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:91
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:99
msgid "&Landscape"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:92
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:101
msgid "&Right to left"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:93
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:100
msgid "Don't so&rt"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:86
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:94
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:102
msgid "De&speckle"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:87
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:95
msgid "&Disable comic processing"
msgstr "&Desativar processamento de gibis"
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:96
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:107
+msgid "&Output format:"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:19
msgid "Debug"
msgstr ""
@@ -2939,10 +2953,6 @@ msgstr ""
msgid "&Input format:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:107
-msgid "&Output format:"
-msgstr ""
-
#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:17
msgid ""
"Structure\n"
@@ -7134,6 +7144,10 @@ msgstr ""
#~ msgid "Communicate with the Sony PRS-700 eBook reader."
#~ msgstr "Comunicar com o leitor de eBooks Sony PRS-700."
+#~ msgid "Number of colors for grayscale image conversion. Default: %default"
+#~ msgstr ""
+#~ "Número de cores para conversão de imagens em tons de cinza. Padrão: %default"
+
#~ msgid "/Unknown"
#~ msgstr "/Desconhecido"
diff --git a/src/calibre/translations/ro.po b/src/calibre/translations/ro.po
index 2aed5afdbb..00ed474818 100644
--- a/src/calibre/translations/ro.po
+++ b/src/calibre/translations/ro.po
@@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: calibre\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
-"POT-Creation-Date: 2009-09-18 06:45+0000\n"
+"POT-Creation-Date: 2009-09-18 19:33+0000\n"
"PO-Revision-Date: 2009-05-21 15:31+0000\n"
"Last-Translator: Kovid Goyal \n"
"Language-Team: Romanian \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2009-09-18 09:47+0000\n"
+"X-Launchpad-Export-Date: 2009-09-23 09:44+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:41
@@ -28,7 +28,7 @@ msgstr "Nu face absolut nimic"
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:703
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:706
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:403
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:410
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:65
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67
#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:318
@@ -615,62 +615,72 @@ msgid ""
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:274
-msgid "Number of colors for grayscale image conversion. Default: %default"
+msgid ""
+"Number of colors for grayscale image conversion. Default: %default. Values "
+"of less than 256 may result in blurred text on your device if you are "
+"creating your comics in EPUB format."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:276
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:278
msgid ""
"Disable normalize (improve contrast) color range for pictures. Default: False"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:279
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:281
msgid "Maintain picture aspect ratio. Default is to fill the screen."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:281
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283
msgid "Disable sharpening."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:285
msgid ""
"Disable trimming of comic pages. For some comics, trimming might remove "
"content as well as borders."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:286
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288
msgid "Don't split landscape images into two portrait images"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:290
msgid ""
"Keep aspect ratio and scale image using screen height as image width for "
"viewing in landscape mode."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:291
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:293
msgid ""
"Used for right-to-left publications like manga. Causes landscape pages to be "
"split into portrait pages from right to left."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:295
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:297
msgid ""
"Enable Despeckle. Reduces speckle noise. May greatly increase processing "
"time."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:298
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:300
msgid ""
"Don't sort the files found in the comic alphabetically by name. Instead use "
"the order they were added to the comic."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:302
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:304
+msgid ""
+"The format that images in the created ebook are converted to. You can "
+"experiment to see which format gives you optimal size and look on your "
+"device."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:308
msgid "Apply no processing to the image"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:427
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:438
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:434
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:445
msgid "Page"
msgstr ""
@@ -2285,7 +2295,7 @@ msgstr ""
msgid "input"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:76
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:45
#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:41
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input_ui.py:28
@@ -2313,60 +2323,65 @@ msgstr ""
msgid "Form"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:77
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:94
msgid "&Number of Colors:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:78
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:86
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:96
msgid "Disable &normalize"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:79
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:87
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97
msgid "Keep &aspect ratio"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:80
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:88
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:98
msgid "Disable &Sharpening"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:81
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:89
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:104
msgid "Disable &Trimming"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:82
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:90
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:103
msgid "&Wide"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:83
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:91
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:99
msgid "&Landscape"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:92
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:101
msgid "&Right to left"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:93
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:100
msgid "Don't so&rt"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:86
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:94
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:102
msgid "De&speckle"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:87
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:95
msgid "&Disable comic processing"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:96
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:107
+msgid "&Output format:"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:19
msgid "Debug"
msgstr ""
@@ -2884,10 +2899,6 @@ msgstr ""
msgid "&Input format:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:107
-msgid "&Output format:"
-msgstr ""
-
#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:17
msgid ""
"Structure\n"
diff --git a/src/calibre/translations/ru.po b/src/calibre/translations/ru.po
index 1be3c68bb1..9646179ecd 100644
--- a/src/calibre/translations/ru.po
+++ b/src/calibre/translations/ru.po
@@ -6,14 +6,14 @@ msgid ""
msgstr ""
"Project-Id-Version: calibre 0.4.55\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-09-18 06:45+0000\n"
-"PO-Revision-Date: 2009-09-15 05:26+0000\n"
+"POT-Creation-Date: 2009-09-18 19:33+0000\n"
+"PO-Revision-Date: 2009-09-18 19:23+0000\n"
"Last-Translator: Kovid Goyal \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: 2009-09-18 09:47+0000\n"
+"X-Launchpad-Export-Date: 2009-09-23 09:44+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
"X-Poedit-Country: RUSSIAN FEDERATION\n"
"X-Poedit-Language: Russian\n"
@@ -32,7 +32,7 @@ msgstr "Ничего не делает"
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:703
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:706
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:403
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:410
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:65
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67
#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:318
@@ -635,25 +635,26 @@ msgstr ""
"%s"
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:274
-msgid "Number of colors for grayscale image conversion. Default: %default"
+msgid ""
+"Number of colors for grayscale image conversion. Default: %default. Values "
+"of less than 256 may result in blurred text on your device if you are "
+"creating your comics in EPUB format."
msgstr ""
-"Количество цветов для преобразования изображения в оттенки серого. По "
-"умолчанию: %default"
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:276
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:278
msgid ""
"Disable normalize (improve contrast) color range for pictures. Default: False"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:279
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:281
msgid "Maintain picture aspect ratio. Default is to fill the screen."
msgstr "Задать формат картинки. По умолчанию на весь экран."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:281
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283
msgid "Disable sharpening."
msgstr "Отменить повышение резкости."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:285
msgid ""
"Disable trimming of comic pages. For some comics, trimming might remove "
"content as well as borders."
@@ -661,11 +662,11 @@ msgstr ""
"Отключить обрезку страниц комиксов. В некоторых коммиксах данная опция может "
"удалять содержимое вместе с границами."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:286
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288
msgid "Don't split landscape images into two portrait images"
msgstr "Не разделять альбомную картинку на две портретных"
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:290
msgid ""
"Keep aspect ratio and scale image using screen height as image width for "
"viewing in landscape mode."
@@ -673,7 +674,7 @@ msgstr ""
"Сохранить формат картинки и масштаб, используя высоту экрана как ширину для "
"просмотра в альбомном режиме."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:291
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:293
msgid ""
"Used for right-to-left publications like manga. Causes landscape pages to be "
"split into portrait pages from right to left."
@@ -681,7 +682,7 @@ msgstr ""
"Используется для публикаций справа налево, таких, как манга (японские "
"комиксы). Альбомные страницы разделяются на портретные справа налево."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:295
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:297
msgid ""
"Enable Despeckle. Reduces speckle noise. May greatly increase processing "
"time."
@@ -689,7 +690,7 @@ msgstr ""
"Разрешить подчистку. Уменьшает пятнистый шум. Может значительно увеличить "
"время обработки."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:298
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:300
msgid ""
"Don't sort the files found in the comic alphabetically by name. Instead use "
"the order they were added to the comic."
@@ -698,12 +699,19 @@ msgstr ""
"Вместо этого использовать тот порядок, в котором они были добавлены в "
"комиксы."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:302
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:304
+msgid ""
+"The format that images in the created ebook are converted to. You can "
+"experiment to see which format gives you optimal size and look on your "
+"device."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:308
msgid "Apply no processing to the image"
msgstr "Не обрабатывать изображения"
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:427
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:438
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:434
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:445
msgid "Page"
msgstr "Страница"
@@ -2363,7 +2371,7 @@ msgstr ""
msgid "input"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:76
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:45
#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:41
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input_ui.py:28
@@ -2391,60 +2399,65 @@ msgstr ""
msgid "Form"
msgstr "Форма"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:77
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:94
msgid "&Number of Colors:"
msgstr "&Количество цветов:"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:78
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:86
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:96
msgid "Disable &normalize"
msgstr "Блокировать &упорядочивание"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:79
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:87
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97
msgid "Keep &aspect ratio"
msgstr "Сохранить &соотношение сторон"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:80
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:88
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:98
msgid "Disable &Sharpening"
msgstr "Блокировать повышение &резкости"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:81
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:89
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:104
msgid "Disable &Trimming"
msgstr "Выключить обрезку"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:82
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:90
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:103
msgid "&Wide"
msgstr "&Широкий"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:83
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:91
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:99
msgid "&Landscape"
msgstr "&Альбомная"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:92
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:101
msgid "&Right to left"
msgstr "&Справа на лево"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:93
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:100
msgid "Don't so&rt"
msgstr "Не сорт&ировать"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:86
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:94
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:102
msgid "De&speckle"
msgstr "Конт&раст"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:87
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:95
msgid "&Disable comic processing"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:96
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:107
+msgid "&Output format:"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:19
msgid "Debug"
msgstr ""
@@ -2965,10 +2978,6 @@ msgstr "Диалог"
msgid "&Input format:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:107
-msgid "&Output format:"
-msgstr ""
-
#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:17
msgid ""
"Structure\n"
@@ -9116,3 +9125,8 @@ msgstr "Показать детальную информацию. Использ
#~ msgid "Communicate with the Sony PRS-700 eBook reader."
#~ msgstr "Соединяться с Sony PRS-700."
+
+#~ msgid "Number of colors for grayscale image conversion. Default: %default"
+#~ msgstr ""
+#~ "Количество цветов для преобразования изображения в оттенки серого. По "
+#~ "умолчанию: %default"
diff --git a/src/calibre/translations/sk.po b/src/calibre/translations/sk.po
index 77c311c4b1..5879a2e0c7 100644
--- a/src/calibre/translations/sk.po
+++ b/src/calibre/translations/sk.po
@@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: calibre\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
-"POT-Creation-Date: 2009-09-18 06:45+0000\n"
+"POT-Creation-Date: 2009-09-18 19:33+0000\n"
"PO-Revision-Date: 2009-09-05 19:23+0000\n"
"Last-Translator: Michael Gallo \n"
"Language-Team: Slovak \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2009-09-18 09:47+0000\n"
+"X-Launchpad-Export-Date: 2009-09-23 09:44+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:41
@@ -28,7 +28,7 @@ msgstr "Nerobí vôbec nič"
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:703
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:706
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:403
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:410
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:65
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67
#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:318
@@ -632,28 +632,29 @@ msgstr ""
"%s"
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:274
-msgid "Number of colors for grayscale image conversion. Default: %default"
+msgid ""
+"Number of colors for grayscale image conversion. Default: %default. Values "
+"of less than 256 may result in blurred text on your device if you are "
+"creating your comics in EPUB format."
msgstr ""
-"Počet odtieňov sivej použitý pri prevode obrázkov. Predvolená hodnota: "
-"%default"
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:276
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:278
msgid ""
"Disable normalize (improve contrast) color range for pictures. Default: False"
msgstr ""
"Vypnutie normalizácie (zvýšenia kontrastu) rozsahu farieb obrázkov. "
"Štandardne je normalizácia zapnutá."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:279
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:281
msgid "Maintain picture aspect ratio. Default is to fill the screen."
msgstr ""
"Zachovať pomer strán obrázkov. Štandardne obrázky vyplnia celú obrazovku."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:281
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283
msgid "Disable sharpening."
msgstr "Vypnúť zvyšovanie ostrosti obrázkov."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:285
msgid ""
"Disable trimming of comic pages. For some comics, trimming might remove "
"content as well as borders."
@@ -661,11 +662,11 @@ msgstr ""
"Neorezávať strany komiksov. Pre niektoré komiksy, orezávanie môže okrem "
"okraja strany odstrániť aj časti kresby."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:286
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288
msgid "Don't split landscape images into two portrait images"
msgstr "Nerozdeľovať obrázky \"na šírku\" na dva obrázky \"na výšku\"."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:290
msgid ""
"Keep aspect ratio and scale image using screen height as image width for "
"viewing in landscape mode."
@@ -673,7 +674,7 @@ msgstr ""
"Zachovať pomer strán a prispôsobiť šírku obrázka výške obrazovky na "
"prezeranie \"na šírku\"."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:291
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:293
msgid ""
"Used for right-to-left publications like manga. Causes landscape pages to be "
"split into portrait pages from right to left."
@@ -681,7 +682,7 @@ msgstr ""
"Užitočné pre publikácie čítané zprava doľava, ako napr. manga. Obrázky \"na "
"šírku\" budú rozdelené na obrázky \"na výšku\" v poradí zprava doľava."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:295
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:297
msgid ""
"Enable Despeckle. Reduces speckle noise. May greatly increase processing "
"time."
@@ -689,7 +690,7 @@ msgstr ""
"Zapnúť filter šumu. Odstraňuje šum v oblastiach plynulých prechodov. Môže "
"výrazne predĺžiť čas potrebný na spracovanie."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:298
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:300
msgid ""
"Don't sort the files found in the comic alphabetically by name. Instead use "
"the order they were added to the comic."
@@ -697,12 +698,19 @@ msgstr ""
"Netriediť súbory komiksu abecedne. Použiť poradie v ktorom boli pridané do "
"komiksu."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:302
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:304
+msgid ""
+"The format that images in the created ebook are converted to. You can "
+"experiment to see which format gives you optimal size and look on your "
+"device."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:308
msgid "Apply no processing to the image"
msgstr "Obrázok nijak neupravovať"
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:427
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:438
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:434
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:445
msgid "Page"
msgstr "Strana"
@@ -2363,7 +2371,7 @@ msgstr ""
msgid "input"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:76
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:45
#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:41
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input_ui.py:28
@@ -2391,60 +2399,65 @@ msgstr ""
msgid "Form"
msgstr "Z"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:77
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:94
msgid "&Number of Colors:"
msgstr "Počet &farieb:"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:78
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:86
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:96
msgid "Disable &normalize"
msgstr "Vypnúť &normalizáciu"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:79
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:87
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97
msgid "Keep &aspect ratio"
msgstr "Zachovať &pomer strán"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:80
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:88
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:98
msgid "Disable &Sharpening"
msgstr "Vypnúť &zaostrovanie"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:81
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:89
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:104
msgid "Disable &Trimming"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:82
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:90
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:103
msgid "&Wide"
msgstr "Širo&ké obrázky"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:83
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:91
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:99
msgid "&Landscape"
msgstr "Na ší&rku"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:92
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:101
msgid "&Right to left"
msgstr "&Sprava doľava"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:93
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:100
msgid "Don't so&rt"
msgstr "&Netriediť"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:86
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:94
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:102
msgid "De&speckle"
msgstr "Čistiaci &filter"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:87
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:95
msgid "&Disable comic processing"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:96
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:107
+msgid "&Output format:"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:19
msgid "Debug"
msgstr ""
@@ -2965,10 +2978,6 @@ msgstr "Dialog"
msgid "&Input format:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:107
-msgid "&Output format:"
-msgstr ""
-
#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:17
msgid ""
"Structure\n"
@@ -8406,6 +8415,11 @@ msgstr ""
#~ "listovania v LRF súbore. Táto možnosť je teda ignorovaná ak aktuálna stránka "
#~ "má len pár elementov."
+#~ msgid "Number of colors for grayscale image conversion. Default: %default"
+#~ msgstr ""
+#~ "Počet odtieňov sivej použitý pri prevode obrázkov. Predvolená hodnota: "
+#~ "%default"
+
#~ msgid "Set defaults for conversion of comics"
#~ msgstr "Štandardné nastavenie prevodu komiksov"
diff --git a/src/calibre/translations/sl.po b/src/calibre/translations/sl.po
index 56d52cae49..7efc9ccb2b 100644
--- a/src/calibre/translations/sl.po
+++ b/src/calibre/translations/sl.po
@@ -6,14 +6,14 @@ msgid ""
msgstr ""
"Project-Id-Version: calibre 0.4.17\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-09-18 06:45+0000\n"
+"POT-Creation-Date: 2009-09-18 19:33+0000\n"
"PO-Revision-Date: 2009-09-04 21:49+0000\n"
"Last-Translator: Ketrin \n"
"Language-Team: sl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2009-09-18 09:48+0000\n"
+"X-Launchpad-Export-Date: 2009-09-23 09:44+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
"Generated-By: pygettext.py 1.5\n"
@@ -28,7 +28,7 @@ msgstr "Ne naredi popolnoma nič"
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:703
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:706
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:403
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:410
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:65
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67
#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:318
@@ -610,36 +610,39 @@ msgid ""
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:274
-msgid "Number of colors for grayscale image conversion. Default: %default"
-msgstr "Število barv za sivinsko pretvorbo slike. Privzeto: %default"
+msgid ""
+"Number of colors for grayscale image conversion. Default: %default. Values "
+"of less than 256 may result in blurred text on your device if you are "
+"creating your comics in EPUB format."
+msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:276
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:278
msgid ""
"Disable normalize (improve contrast) color range for pictures. Default: False"
msgstr ""
"Onemogoči normalizacijo (izboljšaj kontrast) barvnega razpona za slike. "
"Privzeto: False"
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:279
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:281
msgid "Maintain picture aspect ratio. Default is to fill the screen."
msgstr ""
"Obdrži razmerje slike. Privzeto je da se prilagodi velikosti zaslona."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:281
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283
msgid "Disable sharpening."
msgstr "Onemogoči ostrenje."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:285
msgid ""
"Disable trimming of comic pages. For some comics, trimming might remove "
"content as well as borders."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:286
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288
msgid "Don't split landscape images into two portrait images"
msgstr "Ne razdeli panoramskih slik v dve portretni"
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:290
msgid ""
"Keep aspect ratio and scale image using screen height as image width for "
"viewing in landscape mode."
@@ -647,7 +650,7 @@ msgstr ""
"Obdrži razmerje pri skaliranju slik in uporabi višino zaslona za širino "
"slike pri pregledovanju v panoramskem načinu."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:291
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:293
msgid ""
"Used for right-to-left publications like manga. Causes landscape pages to be "
"split into portrait pages from right to left."
@@ -655,13 +658,13 @@ msgstr ""
"Uporablja se za izdaje, ki se berejo od desne proti levi tako kot manga. "
"Panoramske slike se razdelijo v portretne strani od desne proti levi."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:295
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:297
msgid ""
"Enable Despeckle. Reduces speckle noise. May greatly increase processing "
"time."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:298
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:300
msgid ""
"Don't sort the files found in the comic alphabetically by name. Instead use "
"the order they were added to the comic."
@@ -669,12 +672,19 @@ msgstr ""
"Ne razvrščaj datotek, ki se nahajajo v arhivu stripa po imenu. Upoštevaj "
"vrstni red v katerem so bile dane v strip."
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:302
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:304
+msgid ""
+"The format that images in the created ebook are converted to. You can "
+"experiment to see which format gives you optimal size and look on your "
+"device."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:308
msgid "Apply no processing to the image"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:427
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:438
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:434
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:445
msgid "Page"
msgstr ""
@@ -2308,7 +2318,7 @@ msgstr ""
msgid "input"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:76
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:45
#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:41
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input_ui.py:28
@@ -2336,60 +2346,65 @@ msgstr ""
msgid "Form"
msgstr "Forma"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:77
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:94
msgid "&Number of Colors:"
msgstr "&Število Barv:"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:78
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:86
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:96
msgid "Disable &normalize"
msgstr "Izklopi &normalizacijo"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:79
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:87
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97
msgid "Keep &aspect ratio"
msgstr "Ohrani r&azmerje"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:80
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:88
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:98
msgid "Disable &Sharpening"
msgstr "Onemogoči O&strenje"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:81
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:89
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:104
msgid "Disable &Trimming"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:82
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:90
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:103
msgid "&Wide"
msgstr "&Široko"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:83
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:91
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:99
msgid "&Landscape"
msgstr "&Panorama"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:92
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:101
msgid "&Right to left"
msgstr "Od desne p&roti levi"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:93
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:100
msgid "Don't so&rt"
msgstr "Ne &razvrščaj"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:86
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:94
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:102
msgid "De&speckle"
msgstr "De&speckle"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:87
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:95
msgid "&Disable comic processing"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:96
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:107
+msgid "&Output format:"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:19
msgid "Debug"
msgstr ""
@@ -2910,10 +2925,6 @@ msgstr "Dialog"
msgid "&Input format:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:107
-msgid "&Output format:"
-msgstr ""
-
#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:17
msgid ""
"Structure\n"
@@ -7490,6 +7501,9 @@ msgstr "Podrobneje prikaži izhodne informacije. Koristno za razhroščevanje."
#~ msgstr ""
#~ "Nastavi avtorja v meta podatkih ustvarjene eknjige. Privzeto je %default"
+#~ msgid "Number of colors for grayscale image conversion. Default: %default"
+#~ msgstr "Število barv za sivinsko pretvorbo slike. Privzeto: %default"
+
#~ msgid "Don't show progress bar."
#~ msgstr "Ne pokaži indikatorja napredka."
diff --git a/src/calibre/translations/sv.po b/src/calibre/translations/sv.po
index e042a48ba3..95d4e882c1 100644
--- a/src/calibre/translations/sv.po
+++ b/src/calibre/translations/sv.po
@@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: calibre\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
-"POT-Creation-Date: 2009-09-18 06:45+0000\n"
+"POT-Creation-Date: 2009-09-18 19:33+0000\n"
"PO-Revision-Date: 2009-05-21 15:34+0000\n"
"Last-Translator: nicke \n"
"Language-Team: Swedish \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2009-09-18 09:48+0000\n"
+"X-Launchpad-Export-Date: 2009-09-23 09:44+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:41
@@ -28,7 +28,7 @@ msgstr "Gör ingenting"
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:703
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:706
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:403
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:410
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:65
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67
#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:318
@@ -610,62 +610,72 @@ msgid ""
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:274
-msgid "Number of colors for grayscale image conversion. Default: %default"
+msgid ""
+"Number of colors for grayscale image conversion. Default: %default. Values "
+"of less than 256 may result in blurred text on your device if you are "
+"creating your comics in EPUB format."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:276
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:278
msgid ""
"Disable normalize (improve contrast) color range for pictures. Default: False"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:279
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:281
msgid "Maintain picture aspect ratio. Default is to fill the screen."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:281
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283
msgid "Disable sharpening."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:285
msgid ""
"Disable trimming of comic pages. For some comics, trimming might remove "
"content as well as borders."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:286
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288
msgid "Don't split landscape images into two portrait images"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:290
msgid ""
"Keep aspect ratio and scale image using screen height as image width for "
"viewing in landscape mode."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:291
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:293
msgid ""
"Used for right-to-left publications like manga. Causes landscape pages to be "
"split into portrait pages from right to left."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:295
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:297
msgid ""
"Enable Despeckle. Reduces speckle noise. May greatly increase processing "
"time."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:298
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:300
msgid ""
"Don't sort the files found in the comic alphabetically by name. Instead use "
"the order they were added to the comic."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:302
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:304
+msgid ""
+"The format that images in the created ebook are converted to. You can "
+"experiment to see which format gives you optimal size and look on your "
+"device."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:308
msgid "Apply no processing to the image"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:427
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:438
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:434
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:445
msgid "Page"
msgstr ""
@@ -2265,7 +2275,7 @@ msgstr ""
msgid "input"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:76
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:45
#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:41
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input_ui.py:28
@@ -2293,60 +2303,65 @@ msgstr ""
msgid "Form"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:77
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:94
msgid "&Number of Colors:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:78
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:86
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:96
msgid "Disable &normalize"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:79
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:87
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97
msgid "Keep &aspect ratio"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:80
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:88
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:98
msgid "Disable &Sharpening"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:81
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:89
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:104
msgid "Disable &Trimming"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:82
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:90
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:103
msgid "&Wide"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:83
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:91
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:99
msgid "&Landscape"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:92
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:101
msgid "&Right to left"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:93
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:100
msgid "Don't so&rt"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:86
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:94
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:102
msgid "De&speckle"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:87
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:95
msgid "&Disable comic processing"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:96
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:107
+msgid "&Output format:"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:19
msgid "Debug"
msgstr ""
@@ -2864,10 +2879,6 @@ msgstr ""
msgid "&Input format:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:107
-msgid "&Output format:"
-msgstr ""
-
#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:17
msgid ""
"Structure\n"
diff --git a/src/calibre/translations/te.po b/src/calibre/translations/te.po
index 6ddf2daf59..902447d93d 100644
--- a/src/calibre/translations/te.po
+++ b/src/calibre/translations/te.po
@@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: calibre\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
-"POT-Creation-Date: 2009-09-18 06:45+0000\n"
+"POT-Creation-Date: 2009-09-18 19:33+0000\n"
"PO-Revision-Date: 2009-05-21 15:34+0000\n"
"Last-Translator: Kovid Goyal \n"
"Language-Team: Telugu \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2009-09-18 09:48+0000\n"
+"X-Launchpad-Export-Date: 2009-09-23 09:44+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:41
@@ -28,7 +28,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:703
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:706
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:403
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:410
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:65
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67
#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:318
@@ -610,62 +610,72 @@ msgid ""
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:274
-msgid "Number of colors for grayscale image conversion. Default: %default"
+msgid ""
+"Number of colors for grayscale image conversion. Default: %default. Values "
+"of less than 256 may result in blurred text on your device if you are "
+"creating your comics in EPUB format."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:276
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:278
msgid ""
"Disable normalize (improve contrast) color range for pictures. Default: False"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:279
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:281
msgid "Maintain picture aspect ratio. Default is to fill the screen."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:281
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283
msgid "Disable sharpening."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:285
msgid ""
"Disable trimming of comic pages. For some comics, trimming might remove "
"content as well as borders."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:286
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288
msgid "Don't split landscape images into two portrait images"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:290
msgid ""
"Keep aspect ratio and scale image using screen height as image width for "
"viewing in landscape mode."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:291
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:293
msgid ""
"Used for right-to-left publications like manga. Causes landscape pages to be "
"split into portrait pages from right to left."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:295
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:297
msgid ""
"Enable Despeckle. Reduces speckle noise. May greatly increase processing "
"time."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:298
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:300
msgid ""
"Don't sort the files found in the comic alphabetically by name. Instead use "
"the order they were added to the comic."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:302
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:304
+msgid ""
+"The format that images in the created ebook are converted to. You can "
+"experiment to see which format gives you optimal size and look on your "
+"device."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:308
msgid "Apply no processing to the image"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:427
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:438
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:434
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:445
msgid "Page"
msgstr ""
@@ -2265,7 +2275,7 @@ msgstr ""
msgid "input"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:76
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:45
#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:41
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input_ui.py:28
@@ -2293,60 +2303,65 @@ msgstr ""
msgid "Form"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:77
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:94
msgid "&Number of Colors:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:78
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:86
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:96
msgid "Disable &normalize"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:79
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:87
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97
msgid "Keep &aspect ratio"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:80
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:88
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:98
msgid "Disable &Sharpening"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:81
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:89
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:104
msgid "Disable &Trimming"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:82
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:90
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:103
msgid "&Wide"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:83
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:91
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:99
msgid "&Landscape"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:92
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:101
msgid "&Right to left"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:93
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:100
msgid "Don't so&rt"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:86
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:94
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:102
msgid "De&speckle"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:87
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:95
msgid "&Disable comic processing"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:96
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:107
+msgid "&Output format:"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:19
msgid "Debug"
msgstr ""
@@ -2864,10 +2879,6 @@ msgstr ""
msgid "&Input format:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:107
-msgid "&Output format:"
-msgstr ""
-
#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:17
msgid ""
"Structure\n"
diff --git a/src/calibre/translations/uk.po b/src/calibre/translations/uk.po
index e265d16a0b..ea85508617 100644
--- a/src/calibre/translations/uk.po
+++ b/src/calibre/translations/uk.po
@@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: calibre\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
-"POT-Creation-Date: 2009-09-18 06:45+0000\n"
-"PO-Revision-Date: 2009-09-04 22:00+0000\n"
-"Last-Translator: Kovid Goyal \n"
+"POT-Creation-Date: 2009-09-18 19:33+0000\n"
+"PO-Revision-Date: 2009-09-20 20:55+0000\n"
+"Last-Translator: Bohdan \n"
"Language-Team: Ukrainian \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2009-09-18 09:48+0000\n"
+"X-Launchpad-Export-Date: 2009-09-23 09:44+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:41
@@ -28,7 +28,7 @@ msgstr "Робить абсолютно нічого"
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:703
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:706
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:403
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:410
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:65
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67
#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:318
@@ -170,6 +170,8 @@ msgid ""
"Character encoding for the input HTML files. Common choices include: cp1252, "
"latin1, iso-8859-1 and utf-8."
msgstr ""
+"Кодування символів для вхідних HTML файлів. Зазвичай варіанти бувають: "
+"cp1252, latin1, iso-8859-1 і utf-8."
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:56
msgid "Extract cover from comic files"
@@ -239,6 +241,8 @@ msgid ""
"If specified, the output plugin will try to create output that is as human "
"readable as possible. May not have any effect for some output plugins."
msgstr ""
+"Якщо вказано, вихідний втулок спробує створити зручні для читання вихідні "
+"дані. Може не мати жодного ефекту для деяких втулків."
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:44
msgid "Input profile"
@@ -253,37 +257,37 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:56
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:194
msgid "This profile is intended for the SONY PRS line. The 500/505/700 etc."
-msgstr ""
+msgstr "Цей профіль призначено для лінійки SONY PRS. 500/505/700 і ін."
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:69
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:229
msgid "This profile is intended for the Microsoft Reader."
-msgstr ""
+msgstr "Цей профіль призначено для Microsoft Reader."
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:80
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:240
msgid "This profile is intended for the Mobipocket books."
-msgstr ""
+msgstr "Цей профіль призначено для Mobipocket books."
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:93
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:253
msgid "This profile is intended for the Hanlin V3 and its clones."
-msgstr ""
+msgstr "Цей профіль призначено для Hanlin V3 та його клонів."
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:105
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:265
msgid "This profile is intended for the Cybook G3."
-msgstr ""
+msgstr "Цей профіль призначено для Cybook G3."
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:118
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:278
msgid "This profile is intended for the Cybook Opus."
-msgstr ""
+msgstr "Цей профіль призначено для Cybook Opus."
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:130
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:289
msgid "This profile is intended for the Amazon Kindle."
-msgstr ""
+msgstr "Цей профіль призначено для Amazon Kindle."
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:142
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:322
@@ -622,62 +626,72 @@ msgid ""
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:274
-msgid "Number of colors for grayscale image conversion. Default: %default"
+msgid ""
+"Number of colors for grayscale image conversion. Default: %default. Values "
+"of less than 256 may result in blurred text on your device if you are "
+"creating your comics in EPUB format."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:276
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:278
msgid ""
"Disable normalize (improve contrast) color range for pictures. Default: False"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:279
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:281
msgid "Maintain picture aspect ratio. Default is to fill the screen."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:281
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283
msgid "Disable sharpening."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:285
msgid ""
"Disable trimming of comic pages. For some comics, trimming might remove "
"content as well as borders."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:286
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288
msgid "Don't split landscape images into two portrait images"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:290
msgid ""
"Keep aspect ratio and scale image using screen height as image width for "
"viewing in landscape mode."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:291
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:293
msgid ""
"Used for right-to-left publications like manga. Causes landscape pages to be "
"split into portrait pages from right to left."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:295
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:297
msgid ""
"Enable Despeckle. Reduces speckle noise. May greatly increase processing "
"time."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:298
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:300
msgid ""
"Don't sort the files found in the comic alphabetically by name. Instead use "
"the order they were added to the comic."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:302
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:304
+msgid ""
+"The format that images in the created ebook are converted to. You can "
+"experiment to see which format gives you optimal size and look on your "
+"device."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:308
msgid "Apply no processing to the image"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:427
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:438
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:434
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:445
msgid "Page"
msgstr ""
@@ -2279,7 +2293,7 @@ msgstr ""
msgid "input"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:76
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:45
#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:41
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input_ui.py:28
@@ -2307,60 +2321,65 @@ msgstr ""
msgid "Form"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:77
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:94
msgid "&Number of Colors:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:78
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:86
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:96
msgid "Disable &normalize"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:79
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:87
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97
msgid "Keep &aspect ratio"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:80
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:88
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:98
msgid "Disable &Sharpening"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:81
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:89
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:104
msgid "Disable &Trimming"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:82
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:90
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:103
msgid "&Wide"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:83
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:91
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:99
msgid "&Landscape"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:92
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:101
msgid "&Right to left"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:93
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:100
msgid "Don't so&rt"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:86
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:94
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:102
msgid "De&speckle"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:87
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:95
msgid "&Disable comic processing"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:96
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:107
+msgid "&Output format:"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:19
msgid "Debug"
msgstr ""
@@ -2878,10 +2897,6 @@ msgstr ""
msgid "&Input format:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:107
-msgid "&Output format:"
-msgstr ""
-
#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:17
msgid ""
"Structure\n"
diff --git a/src/calibre/translations/yi.po b/src/calibre/translations/yi.po
index ee38f044f9..d3f957c165 100644
--- a/src/calibre/translations/yi.po
+++ b/src/calibre/translations/yi.po
@@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: calibre\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
-"POT-Creation-Date: 2009-09-18 06:45+0000\n"
+"POT-Creation-Date: 2009-09-18 19:33+0000\n"
"PO-Revision-Date: 2009-09-04 22:02+0000\n"
"Last-Translator: Kovid Goyal \n"
"Language-Team: Yiddish \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2009-09-18 09:48+0000\n"
+"X-Launchpad-Export-Date: 2009-09-23 09:45+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:41
@@ -28,7 +28,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:703
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:706
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:403
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:410
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:65
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67
#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:318
@@ -610,62 +610,72 @@ msgid ""
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:274
-msgid "Number of colors for grayscale image conversion. Default: %default"
+msgid ""
+"Number of colors for grayscale image conversion. Default: %default. Values "
+"of less than 256 may result in blurred text on your device if you are "
+"creating your comics in EPUB format."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:276
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:278
msgid ""
"Disable normalize (improve contrast) color range for pictures. Default: False"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:279
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:281
msgid "Maintain picture aspect ratio. Default is to fill the screen."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:281
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283
msgid "Disable sharpening."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:285
msgid ""
"Disable trimming of comic pages. For some comics, trimming might remove "
"content as well as borders."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:286
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288
msgid "Don't split landscape images into two portrait images"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:290
msgid ""
"Keep aspect ratio and scale image using screen height as image width for "
"viewing in landscape mode."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:291
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:293
msgid ""
"Used for right-to-left publications like manga. Causes landscape pages to be "
"split into portrait pages from right to left."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:295
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:297
msgid ""
"Enable Despeckle. Reduces speckle noise. May greatly increase processing "
"time."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:298
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:300
msgid ""
"Don't sort the files found in the comic alphabetically by name. Instead use "
"the order they were added to the comic."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:302
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:304
+msgid ""
+"The format that images in the created ebook are converted to. You can "
+"experiment to see which format gives you optimal size and look on your "
+"device."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:308
msgid "Apply no processing to the image"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:427
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:438
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:434
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:445
msgid "Page"
msgstr ""
@@ -2265,7 +2275,7 @@ msgstr ""
msgid "input"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:76
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:45
#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:41
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input_ui.py:28
@@ -2293,60 +2303,65 @@ msgstr ""
msgid "Form"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:77
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:94
msgid "&Number of Colors:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:78
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:86
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:96
msgid "Disable &normalize"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:79
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:87
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97
msgid "Keep &aspect ratio"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:80
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:88
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:98
msgid "Disable &Sharpening"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:81
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:89
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:104
msgid "Disable &Trimming"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:82
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:90
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:103
msgid "&Wide"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:83
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:91
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:99
msgid "&Landscape"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:92
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:101
msgid "&Right to left"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:93
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:100
msgid "Don't so&rt"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:86
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:94
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:102
msgid "De&speckle"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:87
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:95
msgid "&Disable comic processing"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:96
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:107
+msgid "&Output format:"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:19
msgid "Debug"
msgstr ""
@@ -2864,10 +2879,6 @@ msgstr ""
msgid "&Input format:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:107
-msgid "&Output format:"
-msgstr ""
-
#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:17
msgid ""
"Structure\n"
diff --git a/src/calibre/translations/zh_CN.po b/src/calibre/translations/zh_CN.po
index 9a11c7dcee..cb807650c9 100644
--- a/src/calibre/translations/zh_CN.po
+++ b/src/calibre/translations/zh_CN.po
@@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: calibre\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
-"POT-Creation-Date: 2009-09-18 06:45+0000\n"
-"PO-Revision-Date: 2009-09-15 19:06+0000\n"
+"POT-Creation-Date: 2009-09-18 19:33+0000\n"
+"PO-Revision-Date: 2009-09-18 19:28+0000\n"
"Last-Translator: Thruth Wang \n"
"Language-Team: Simplified Chinese \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2009-09-18 09:48+0000\n"
+"X-Launchpad-Export-Date: 2009-09-23 09:45+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:41
@@ -28,7 +28,7 @@ msgstr "不做任何处理"
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:703
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:706
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:403
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:410
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:65
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67
#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:318
@@ -617,62 +617,72 @@ msgstr ""
"%s"
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:274
-msgid "Number of colors for grayscale image conversion. Default: %default"
-msgstr "转化输出图片的灰度阶数。默认值:%default"
+msgid ""
+"Number of colors for grayscale image conversion. Default: %default. Values "
+"of less than 256 may result in blurred text on your device if you are "
+"creating your comics in EPUB format."
+msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:276
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:278
msgid ""
"Disable normalize (improve contrast) color range for pictures. Default: False"
msgstr "禁用图片色阶规范化(提升图片对比度)。默认:关闭"
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:279
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:281
msgid "Maintain picture aspect ratio. Default is to fill the screen."
msgstr "维持图片长宽比。 默认为缩放至屏幕大小。"
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:281
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283
msgid "Disable sharpening."
msgstr "禁用锐化。"
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:285
msgid ""
"Disable trimming of comic pages. For some comics, trimming might remove "
"content as well as borders."
msgstr "关闭漫画自动切边功能。对于一些漫画,切边会丢失某些内容。"
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:286
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288
msgid "Don't split landscape images into two portrait images"
msgstr "不要将横向图片分割为两张纵向图片"
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:290
msgid ""
"Keep aspect ratio and scale image using screen height as image width for "
"viewing in landscape mode."
msgstr "在将纵向图片旋转缩放到横向浏览模式时保持长宽比。"
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:291
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:293
msgid ""
"Used for right-to-left publications like manga. Causes landscape pages to be "
"split into portrait pages from right to left."
msgstr "开启从右至左的漫画切分模式。该功能会将横向图片页面且分为多个从右至左的纵向页面。"
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:295
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:297
msgid ""
"Enable Despeckle. Reduces speckle noise. May greatly increase processing "
"time."
msgstr "开启除噪点功能。该功能将去除噪点。可能会大幅度增加处理时间。"
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:298
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:300
msgid ""
"Don't sort the files found in the comic alphabetically by name. Instead use "
"the order they were added to the comic."
msgstr "不要按照文件名字母排序动画文件列表。而使用文件被添加的顺序。"
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:302
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:304
+msgid ""
+"The format that images in the created ebook are converted to. You can "
+"experiment to see which format gives you optimal size and look on your "
+"device."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:308
msgid "Apply no processing to the image"
msgstr "不对图片进行处理"
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:427
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:438
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:434
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:445
msgid "Page"
msgstr "页"
@@ -2391,7 +2401,7 @@ msgstr "选项适用于"
msgid "input"
msgstr "输入"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:76
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:45
#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:41
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input_ui.py:28
@@ -2419,60 +2429,65 @@ msgstr "输入"
msgid "Form"
msgstr "来自"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:77
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:94
msgid "&Number of Colors:"
msgstr "颜色数(&N):"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:78
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:86
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:96
msgid "Disable &normalize"
msgstr "关闭图像规范化(&N)"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:79
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:87
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97
msgid "Keep &aspect ratio"
msgstr "保持宽高比(&A)"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:80
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:88
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:98
msgid "Disable &Sharpening"
msgstr "关闭锐化(&S)"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:81
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:89
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:104
msgid "Disable &Trimming"
msgstr "关闭切边(&T)"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:82
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:90
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:103
msgid "&Wide"
msgstr "宽度(&W)"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:83
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:91
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:99
msgid "&Landscape"
msgstr "横向(&L)"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:92
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:101
msgid "&Right to left"
msgstr "从右向左(&R)"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:93
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:100
msgid "Don't so&rt"
msgstr "不要排序(&R)"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:86
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:94
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:102
msgid "De&speckle"
msgstr "除噪点(&S)"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:87
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:95
msgid "&Disable comic processing"
msgstr "关闭漫画处理(&D)"
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:96
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:107
+msgid "&Output format:"
+msgstr "输出格式(&O):"
+
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:19
msgid "Debug"
msgstr "调试"
@@ -2990,10 +3005,6 @@ msgstr "对话框"
msgid "&Input format:"
msgstr "输入格式(&I):"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:107
-msgid "&Output format:"
-msgstr "输出格式(&O):"
-
#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:17
msgid ""
"Structure\n"
@@ -7326,6 +7337,9 @@ msgstr "显示详细输出信息。有利调试"
#~ msgid "Communicate with the Sony PRS-700 eBook reader."
#~ msgstr "与 Sony PRS-700 eBook reader 通信。"
+#~ msgid "Number of colors for grayscale image conversion. Default: %default"
+#~ msgstr "转化输出图片的灰度阶数。默认值:%default"
+
#~ msgid "French"
#~ msgstr "法语"
diff --git a/src/calibre/translations/zh_HK.po b/src/calibre/translations/zh_HK.po
index bab23cc95d..f0ffaf252b 100644
--- a/src/calibre/translations/zh_HK.po
+++ b/src/calibre/translations/zh_HK.po
@@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: calibre\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
-"POT-Creation-Date: 2009-09-18 06:45+0000\n"
+"POT-Creation-Date: 2009-09-18 19:33+0000\n"
"PO-Revision-Date: 2009-09-05 19:14+0000\n"
"Last-Translator: pikoman \n"
"Language-Team: Chinese (Hong Kong) \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2009-09-18 09:48+0000\n"
+"X-Launchpad-Export-Date: 2009-09-23 09:45+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:41
@@ -28,7 +28,7 @@ msgstr "不要做任何事情"
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:703
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:706
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:403
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:410
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:65
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67
#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:318
@@ -610,62 +610,72 @@ msgid ""
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:274
-msgid "Number of colors for grayscale image conversion. Default: %default"
+msgid ""
+"Number of colors for grayscale image conversion. Default: %default. Values "
+"of less than 256 may result in blurred text on your device if you are "
+"creating your comics in EPUB format."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:276
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:278
msgid ""
"Disable normalize (improve contrast) color range for pictures. Default: False"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:279
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:281
msgid "Maintain picture aspect ratio. Default is to fill the screen."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:281
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283
msgid "Disable sharpening."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:285
msgid ""
"Disable trimming of comic pages. For some comics, trimming might remove "
"content as well as borders."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:286
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288
msgid "Don't split landscape images into two portrait images"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:290
msgid ""
"Keep aspect ratio and scale image using screen height as image width for "
"viewing in landscape mode."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:291
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:293
msgid ""
"Used for right-to-left publications like manga. Causes landscape pages to be "
"split into portrait pages from right to left."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:295
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:297
msgid ""
"Enable Despeckle. Reduces speckle noise. May greatly increase processing "
"time."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:298
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:300
msgid ""
"Don't sort the files found in the comic alphabetically by name. Instead use "
"the order they were added to the comic."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:302
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:304
+msgid ""
+"The format that images in the created ebook are converted to. You can "
+"experiment to see which format gives you optimal size and look on your "
+"device."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:308
msgid "Apply no processing to the image"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:427
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:438
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:434
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:445
msgid "Page"
msgstr ""
@@ -2265,7 +2275,7 @@ msgstr ""
msgid "input"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:76
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:45
#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:41
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input_ui.py:28
@@ -2293,60 +2303,65 @@ msgstr ""
msgid "Form"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:77
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:94
msgid "&Number of Colors:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:78
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:86
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:96
msgid "Disable &normalize"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:79
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:87
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97
msgid "Keep &aspect ratio"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:80
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:88
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:98
msgid "Disable &Sharpening"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:81
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:89
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:104
msgid "Disable &Trimming"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:82
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:90
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:103
msgid "&Wide"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:83
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:91
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:99
msgid "&Landscape"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:92
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:101
msgid "&Right to left"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:93
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:100
msgid "Don't so&rt"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:86
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:94
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:102
msgid "De&speckle"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:87
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:95
msgid "&Disable comic processing"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:96
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:107
+msgid "&Output format:"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:19
msgid "Debug"
msgstr ""
@@ -2864,10 +2879,6 @@ msgstr ""
msgid "&Input format:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:107
-msgid "&Output format:"
-msgstr ""
-
#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:17
msgid ""
"Structure\n"
diff --git a/src/calibre/translations/zh_TW.po b/src/calibre/translations/zh_TW.po
index e5d2e02928..44646a06a7 100644
--- a/src/calibre/translations/zh_TW.po
+++ b/src/calibre/translations/zh_TW.po
@@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: calibre\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
-"POT-Creation-Date: 2009-09-18 06:45+0000\n"
+"POT-Creation-Date: 2009-09-18 19:33+0000\n"
"PO-Revision-Date: 2009-09-05 19:09+0000\n"
"Last-Translator: Kovid Goyal \n"
"Language-Team: Traditional Chinese \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2009-09-18 09:48+0000\n"
+"X-Launchpad-Export-Date: 2009-09-23 09:45+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:41
@@ -28,7 +28,7 @@ msgstr "English"
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:703
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:706
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:403
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:410
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:65
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67
#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:318
@@ -610,62 +610,72 @@ msgid ""
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:274
-msgid "Number of colors for grayscale image conversion. Default: %default"
+msgid ""
+"Number of colors for grayscale image conversion. Default: %default. Values "
+"of less than 256 may result in blurred text on your device if you are "
+"creating your comics in EPUB format."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:276
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:278
msgid ""
"Disable normalize (improve contrast) color range for pictures. Default: False"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:279
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:281
msgid "Maintain picture aspect ratio. Default is to fill the screen."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:281
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283
msgid "Disable sharpening."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:285
msgid ""
"Disable trimming of comic pages. For some comics, trimming might remove "
"content as well as borders."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:286
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288
msgid "Don't split landscape images into two portrait images"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:290
msgid ""
"Keep aspect ratio and scale image using screen height as image width for "
"viewing in landscape mode."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:291
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:293
msgid ""
"Used for right-to-left publications like manga. Causes landscape pages to be "
"split into portrait pages from right to left."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:295
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:297
msgid ""
"Enable Despeckle. Reduces speckle noise. May greatly increase processing "
"time."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:298
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:300
msgid ""
"Don't sort the files found in the comic alphabetically by name. Instead use "
"the order they were added to the comic."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:302
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:304
+msgid ""
+"The format that images in the created ebook are converted to. You can "
+"experiment to see which format gives you optimal size and look on your "
+"device."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:308
msgid "Apply no processing to the image"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:427
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:438
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:434
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:445
msgid "Page"
msgstr ""
@@ -2265,7 +2275,7 @@ msgstr ""
msgid "input"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:76
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:45
#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:41
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input_ui.py:28
@@ -2293,60 +2303,65 @@ msgstr ""
msgid "Form"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:77
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:94
msgid "&Number of Colors:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:78
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:86
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:96
msgid "Disable &normalize"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:79
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:87
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97
msgid "Keep &aspect ratio"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:80
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:88
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:98
msgid "Disable &Sharpening"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:81
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:89
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:104
msgid "Disable &Trimming"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:82
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:90
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:103
msgid "&Wide"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:83
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:91
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:99
msgid "&Landscape"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:92
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:101
msgid "&Right to left"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:85
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:93
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:100
msgid "Don't so&rt"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:86
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:94
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:102
msgid "De&speckle"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:87
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:95
msgid "&Disable comic processing"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:96
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:107
+msgid "&Output format:"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:19
msgid "Debug"
msgstr ""
@@ -2864,10 +2879,6 @@ msgstr ""
msgid "&Input format:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:107
-msgid "&Output format:"
-msgstr ""
-
#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:17
msgid ""
"Structure\n"
diff --git a/src/calibre/utils/PythonMagickWand.py b/src/calibre/utils/PythonMagickWand.py
index 93c1ddf1fa..91c37e42ba 100644
--- a/src/calibre/utils/PythonMagickWand.py
+++ b/src/calibre/utils/PythonMagickWand.py
@@ -85,7 +85,7 @@ elif iswindows:
if isfrozen else 'CORE_RL_wand_'
else:
if isfrozen:
- _lib = os.path.join(sys.frozen_path, 'libMagickWand.so')
+ _lib = os.path.join(sys.frozen_path, 'libMagickWand.so.2')
else:
_lib = util.find_library('MagickWand')
if _lib is None:
diff --git a/src/calibre/web/feeds/recipes/__init__.py b/src/calibre/web/feeds/recipes/__init__.py
index b48b4054ea..cb52d41111 100644
--- a/src/calibre/web/feeds/recipes/__init__.py
+++ b/src/calibre/web/feeds/recipes/__init__.py
@@ -58,7 +58,8 @@ recipe_modules = ['recipe_' + r for r in (
'esquire', 'livemint', 'thedgesingapore', 'darknet', 'rga',
'intelligencer', 'theoldfoodie', 'hln_be', 'honvedelem',
'the_new_republic', 'philly', 'salon', 'tweakers', 'smashing',
- 'thestar',
+ 'thestar', 'business_standard', 'lemonde_dip', 'javalobby',
+ 'serverside', 'infoworld'
)]
diff --git a/src/calibre/web/feeds/recipes/recipe_business_standard.py b/src/calibre/web/feeds/recipes/recipe_business_standard.py
new file mode 100644
index 0000000000..75b2e0af8f
--- /dev/null
+++ b/src/calibre/web/feeds/recipes/recipe_business_standard.py
@@ -0,0 +1,57 @@
+#!/usr/bin/env python
+
+__license__ = 'GPL v3'
+__copyright__ = '2009, Darko Miletic '
+'''
+www.business-standard.com
+'''
+
+from calibre.web.feeds.recipes import BasicNewsRecipe
+
+class BusinessStandard(BasicNewsRecipe):
+ title = 'Business Standard'
+ __author__ = 'Darko Miletic'
+ description = "India's most respected business daily"
+ oldest_article = 7
+ max_articles_per_feed = 100
+ no_stylesheets = True
+ use_embedded_content = False
+ encoding = 'cp1252'
+ publisher = 'Business Standard Limited'
+ category = 'news, business, money, india, world'
+ language = 'en_IN'
+
+ conversion_options = {
+ 'comments' : description
+ ,'tags' : category
+ ,'language' : language
+ ,'publisher' : publisher
+ ,'linearize_tables': True
+ }
+
+ remove_attributes=['style']
+ remove_tags = [dict(name=['object','link','script','iframe'])]
+
+ feeds = [
+ (u'News Now' , u'http://feeds.business-standard.com/News-Now.xml' )
+ ,(u'Banking & finance' , u'http://feeds.business-standard.com/Banking-Finance-All.xml' )
+ ,(u'Companies & Industry', u'http://feeds.business-standard.com/Companies-Industry-All.xml')
+ ,(u'Economy & Policy' , u'http://feeds.business-standard.com/Economy-Policy-All.xml' )
+ ,(u'Tech World' , u'http://feeds.business-standard.com/Tech-World-All.xml' )
+ ,(u'Life & Leisure' , u'http://feeds.business-standard.com/Life-Leisure-All.xml' )
+ ,(u'Markets & Investing' , u'http://feeds.business-standard.com/Markets-Investing-All.xml' )
+ ,(u'Management & Mktg' , u'http://feeds.business-standard.com/Management-Mktg-All.xml' )
+ ,(u'Automobiles' , u'http://feeds.business-standard.com/Automobiles.xml' )
+ ,(u'Aviation' , u'http://feeds.business-standard.com/Aviation.xml' )
+ ]
+
+ def print_version(self, url):
+ autono = url.rpartition('autono=')[2]
+ tp = 'on'
+ hk = url.rpartition('bKeyFlag=')[1]
+ if hk == '':
+ tp = ''
+ return 'http://www.business-standard.com/india/printpage.php?autono=' + autono + '&tp=' + tp
+
+ def get_article_url(self, article):
+ return article.get('guid', None)
diff --git a/src/calibre/web/feeds/recipes/recipe_danas.py b/src/calibre/web/feeds/recipes/recipe_danas.py
index 0eb2ee868b..4de308a57d 100644
--- a/src/calibre/web/feeds/recipes/recipe_danas.py
+++ b/src/calibre/web/feeds/recipes/recipe_danas.py
@@ -19,8 +19,7 @@ class Danas(BasicNewsRecipe):
max_articles_per_feed = 100
no_stylesheets = False
use_embedded_content = False
- language = 'sr'
-
+ language = 'sr'
lang = 'sr-Latn-RS'
direction = 'ltr'
extra_css = '@font-face {font-family: "serif1";src:url(res:///opt/sony/ebook/FONT/tt0011m_.ttf)} @font-face {font-family: "sans1";src:url(res:///opt/sony/ebook/FONT/tt0003m_.ttf)} body{font-family: serif1, serif} .article_description{font-family: sans1, sans-serif}'
@@ -29,7 +28,7 @@ class Danas(BasicNewsRecipe):
'comment' : description
, 'tags' : category
, 'publisher' : publisher
- , 'language' : lang
+ , 'language' : language
, 'pretty_print' : True
}
@@ -43,7 +42,10 @@ class Danas(BasicNewsRecipe):
,dict(name=['object','link'])
]
- feeds = [ (u'Vesti', u'http://www.danas.rs/rss/rss.asp')]
+ feeds = [
+ (u'Vesti' , u'http://www.danas.rs/rss/rss.asp' )
+ ,(u'Periskop', u'http://www.danas.rs/rss/rss.asp?column_id=4')
+ ]
def preprocess_html(self, soup):
mlang = Tag(soup,'meta',[("http-equiv","Content-Language"),("content",self.lang)])
diff --git a/src/calibre/web/feeds/recipes/recipe_infoworld.py b/src/calibre/web/feeds/recipes/recipe_infoworld.py
new file mode 100644
index 0000000000..b98649eeda
--- /dev/null
+++ b/src/calibre/web/feeds/recipes/recipe_infoworld.py
@@ -0,0 +1,35 @@
+#!/usr/bin/env python
+
+__license__ = 'GPL v3'
+__copyright__ = '2009, Rick Kellogg'
+'''
+Infoworld.com
+'''
+
+from calibre.web.feeds.news import BasicNewsRecipe
+
+class Engadget(BasicNewsRecipe):
+ title = u'Infoworld.com'
+ __author__ = 'Rick Kellogg'
+ description = 'news'
+ language = 'en'
+ oldest_article = 7
+ max_articles_per_feed = 100
+ no_stylesheets = True
+ use_embedded_content = False
+
+ remove_tags = [ dict(name='div', attrs={'class':["articleTools clearfix","relatedContent","pagination clearfix","addResources"]}),
+ dict(name='div', attrs={'id':["post-socialPromoBlock"]})]
+
+ keep_only_tags = [dict(name='div', attrs={'class':["article"]})]
+
+ feeds = [ (u'Top Tech Stories', u'http://infoworld.com/homepage/feed'),
+ (u'Today\'s Tech Headlines', u'http://www.infoworld.com/news/feed') ]
+
+ def get_article_url(self, article):
+
+ url = article.get('link', None)
+
+ return url
+
+
diff --git a/src/calibre/web/feeds/recipes/recipe_javalobby.py b/src/calibre/web/feeds/recipes/recipe_javalobby.py
new file mode 100644
index 0000000000..55198e8321
--- /dev/null
+++ b/src/calibre/web/feeds/recipes/recipe_javalobby.py
@@ -0,0 +1,34 @@
+#!/usr/bin/env python
+
+__license__ = 'GPL v3'
+__copyright__ = '2009, Rick Kellogg'
+'''
+java.dzone.com
+'''
+
+from calibre.web.feeds.news import BasicNewsRecipe
+
+class Engadget(BasicNewsRecipe):
+ title = u'Javalobby'
+ __author__ = 'Rick Kellogg'
+ description = 'news'
+ language = 'en'
+ oldest_article = 7
+ max_articles_per_feed = 100
+ no_stylesheets = True
+ use_embedded_content = False
+
+ remove_tags = [ dict(name='div', attrs={'class':["fivestar-static-form-item","relatedContent","pagination clearfix","addResources"]}),
+ dict(name='div', attrs={'id':["comments"]})]
+
+ keep_only_tags = [dict(name='div', attrs={'id':["article"]})]
+
+ feeds = [ (u'news', u'http://feeds.dzone.com/javalobby/frontpage')]
+
+ def get_article_url(self, article):
+
+ url = article.get('link', None)
+
+ return url
+
+
diff --git a/src/calibre/web/feeds/recipes/recipe_lemonde_dip.py b/src/calibre/web/feeds/recipes/recipe_lemonde_dip.py
new file mode 100644
index 0000000000..fa20e43aa2
--- /dev/null
+++ b/src/calibre/web/feeds/recipes/recipe_lemonde_dip.py
@@ -0,0 +1,72 @@
+#!/usr/bin/env python
+
+__license__ = 'GPL v3'
+__copyright__ = '2008-2009, Darko Miletic '
+'''
+mondediplo.com
+'''
+
+import urllib
+from calibre import strftime
+from calibre.web.feeds.news import BasicNewsRecipe
+
+class LeMondeDiplomatiqueEn(BasicNewsRecipe):
+ title = 'Le Monde diplomatique - English edition'
+ __author__ = 'Darko Miletic'
+ description = 'Real journalism making sense of the world around us'
+ publisher = 'Le Monde diplomatique'
+ category = 'news, politics, world'
+ no_stylesheets = True
+ oldest_article = 31
+ delay = 1
+ encoding = 'utf-8'
+ needs_subscription = True
+ PREFIX = 'http://mondediplo.com/'
+ LOGIN = PREFIX + '2009/09/02congo'
+ INDEX = PREFIX + strftime('%Y/%m/')
+ use_embedded_content = False
+ language = 'en'
+
+ conversion_options = {
+ 'comment' : description
+ , 'tags' : category
+ , 'publisher' : publisher
+ , 'language' : language
+ }
+
+ def get_browser(self):
+ br = BasicNewsRecipe.get_browser()
+ br.open(self.LOGIN)
+ if self.username is not None and self.password is not None:
+ data = urllib.urlencode({ 'login':self.username
+ ,'pass':self.password
+ ,'enter':'enter'
+ })
+ br.open(self.LOGIN,data)
+ return br
+
+ keep_only_tags =[dict(name='div', attrs={'id':'contenu'})]
+ remove_tags = [dict(name=['object','link','script','iframe','base'])]
+
+ def parse_index(self):
+ articles = []
+ soup = self.index_to_soup(self.INDEX)
+ cnt = soup.find('div',attrs={'class':'som_num'})
+ for item in cnt.findAll('li'):
+ description = ''
+ feed_link = item.find('a')
+ desc = item.find('div',attrs={'class':'chapo'})
+ if desc:
+ description = desc.string
+ if feed_link and feed_link.has_key('href'):
+ url = self.PREFIX + feed_link['href'].partition('/../')[2]
+ title = self.tag_to_string(feed_link)
+ date = strftime(self.timefmt)
+ articles.append({
+ 'title' :title
+ ,'date' :date
+ ,'url' :url
+ ,'description':description
+ })
+ return [(soup.head.title.string, articles)]
+
diff --git a/src/calibre/web/feeds/recipes/recipe_nin.py b/src/calibre/web/feeds/recipes/recipe_nin.py
index 0dff2f5b8a..535652b6a0 100644
--- a/src/calibre/web/feeds/recipes/recipe_nin.py
+++ b/src/calibre/web/feeds/recipes/recipe_nin.py
@@ -7,6 +7,7 @@ nin.co.rs
'''
import re, urllib
+from calibre import strftime
from calibre.web.feeds.news import BasicNewsRecipe
from calibre.ebooks.BeautifulSoup import Tag
@@ -25,10 +26,8 @@ class Nin(BasicNewsRecipe):
PREFIX = 'http://www.nin.co.rs'
INDEX = PREFIX + '/?change_lang=ls'
LOGIN = PREFIX + '/?logout=true'
- FEED = PREFIX + '/misc/rss.php?feed=RSS2.0'
use_embedded_content = False
- language = 'sr'
-
+ language = 'sr'
lang = 'sr-Latn-RS'
direction = 'ltr'
extra_css = '@font-face {font-family: "serif1";src:url(res:///opt/sony/ebook/FONT/tt0011m_.ttf)} @font-face {font-family: "sans1";src:url(res:///opt/sony/ebook/FONT/tt0003m_.ttf)} body{font-family: serif1, serif} .article_description{font-family: sans1, sans-serif} .artTitle{font-size: x-large; font-weight: bold} .columnhead{font-size: small; font-weight: bold}'
@@ -37,7 +36,7 @@ class Nin(BasicNewsRecipe):
'comment' : description
, 'tags' : category
, 'publisher' : publisher
- , 'language' : lang
+ , 'language' : language
, 'pretty_print' : True
}
@@ -57,12 +56,11 @@ class Nin(BasicNewsRecipe):
keep_only_tags =[dict(name='td', attrs={'width':'520'})]
remove_tags_after =dict(name='html')
- feeds =[(u'NIN', FEED)]
def get_cover_url(self):
cover_url = None
soup = self.index_to_soup(self.INDEX)
- link_item = soup.find('img',attrs={'width':'100','height':'137','border':'0'})
+ link_item = soup.find('img',attrs={'width':'100','border':'0'})
if link_item:
cover_url = self.PREFIX + link_item['src']
return cover_url
@@ -71,7 +69,7 @@ class Nin(BasicNewsRecipe):
soup.html['lang'] = self.lang
soup.html['dir' ] = self.direction
mlang = Tag(soup,'meta',[("http-equiv","Content-Language"),("content",self.lang)])
- mcharset = Tag(soup,'meta',[("http-equiv","Content-Type"),("content","text/html; charset=UTF-8")])
+ mcharset = Tag(soup,'meta',[("http-equiv","Content-Type"),("content","text/html; charset=utf-8")])
soup.head.insert(0,mlang)
soup.head.insert(1,mcharset)
attribs = [ 'style','font','valign'
@@ -87,6 +85,28 @@ class Nin(BasicNewsRecipe):
del item[attrib]
return soup
- def get_article_url(self, article):
- raw = article.get('link', None)
- return raw.replace('.co.yu','.co.rs')
+ def parse_index(self):
+ articles = []
+ soup = self.index_to_soup(self.PREFIX)
+ for item in soup.findAll('a',attrs={'class':'lmeninavFont'}):
+ section = self.tag_to_string(item)
+ feedlink = self.PREFIX + item['href']
+ feedpage = self.index_to_soup(feedlink)
+ self.report_progress(0, _('Fetching feed')+' %s...'%(section))
+ inarts = []
+ for art in feedpage.findAll('span',attrs={'class':'artTitle'}):
+ alink = art.parent
+ url = self.PREFIX + alink['href']
+ title = self.tag_to_string(art)
+ sparent = alink.parent
+ alink.extract()
+ description = self.tag_to_string(sparent)
+ date = strftime(self.timefmt)
+ inarts.append({
+ 'title' :title
+ ,'date' :date
+ ,'url' :url
+ ,'description':description
+ })
+ articles.append((section,inarts))
+ return articles
diff --git a/src/calibre/web/feeds/recipes/recipe_nytimes.py b/src/calibre/web/feeds/recipes/recipe_nytimes.py
index c21145ac07..af78856010 100644
--- a/src/calibre/web/feeds/recipes/recipe_nytimes.py
+++ b/src/calibre/web/feeds/recipes/recipe_nytimes.py
@@ -16,7 +16,7 @@ class NYTimes(BasicNewsRecipe):
__author__ = 'GRiker'
language = _('English')
description = 'Top Stories from the New York Times'
-
+
# List of sections typically included in Top Stories. Use a keyword from the
# right column in the excludeSectionKeywords[] list to skip downloading that section
sections = {
@@ -39,7 +39,7 @@ class NYTimes(BasicNewsRecipe):
'world' : 'World'
}
- # By default, no sections are skipped.
+ # By default, no sections are skipped.
excludeSectionKeywords = []
# Add section keywords from the right column above to skip that section
@@ -49,7 +49,7 @@ class NYTimes(BasicNewsRecipe):
# excludeSectionKeywords = ['Arts','Dining','Editorials','Health','Magazine','Media','Region','Op-Ed','Politics','Science','Sports','Top Stories','Travel','U.S.','World']
# Fetch only Top Stories
# excludeSectionKeywords = ['Arts','Business','Dining','Editorials','Health','Magazine','Media','Region','Op-Ed','Politics','Science','Sports','Technology','Travel','U.S.','World']
-
+
# The maximum number of articles that will be downloaded
max_articles_per_feed = 40
@@ -63,7 +63,7 @@ class NYTimes(BasicNewsRecipe):
dict(attrs={ 'id':['toolsRight','inlineBox','sidebarArticles',
'portfolioInline','articleInline','readerscomment',
'nytRating']}) ]
-
+
encoding = 'cp1252'
no_stylesheets = True
extra_css = '.headline {text-align: left;}\n \
@@ -105,13 +105,13 @@ class NYTimes(BasicNewsRecipe):
_raw = url_or_raw
if raw:
return _raw
-
+
if not isinstance(_raw, unicode) and self.encoding:
_raw = _raw.decode(docEncoding, 'replace')
massage = list(BeautifulSoup.MARKUP_MASSAGE)
massage.append((re.compile(r'&(\S+?);'), lambda match: entity_to_unicode(match, encoding=self.encoding)))
return BeautifulSoup(_raw, markupMassage=massage)
-
+
# Entry point
soup = get_the_soup( self.encoding, url_or_raw )
contentType = soup.find(True,attrs={'http-equiv':'Content-Type'})
@@ -122,7 +122,7 @@ class NYTimes(BasicNewsRecipe):
if self.verbose > 2:
self.log( " document encoding: '%s'" % docEncoding)
if docEncoding != self.encoding :
- soup = get_the_soup(docEncoding, url_or_raw)
+ soup = get_the_soup(docEncoding, url_or_raw)
return soup
@@ -133,7 +133,7 @@ class NYTimes(BasicNewsRecipe):
feed = key = 'All Top Stories'
articles[key] = []
ans.append(key)
-
+
soup = self.index_to_soup('http://www.nytimes.com/pages/todaysheadlines/')
# Fetch the outer table
@@ -242,10 +242,10 @@ class NYTimes(BasicNewsRecipe):
if url == article['url'] :
duplicateFound = True
break
-
- if duplicateFound:
+
+ if duplicateFound:
# Continue fetching, don't add this article
- continue
+ continue
if not articles.has_key(feed):
articles[feed] = []
@@ -254,7 +254,7 @@ class NYTimes(BasicNewsRecipe):
description=description, author=author, content=''))
ans = self.sort_index_by(ans, {'Top Stories':-1})
- ans = [(key, articles[key]) for key in ans if articles.has_key(key)]
+ ans = [(key, articles[key]) for key in ans if articles.has_key(key)]
return ans
def strip_anchors(self,soup):
@@ -270,7 +270,7 @@ class NYTimes(BasicNewsRecipe):
# refresh = soup.find('meta', {'http-equiv':'refresh'})
# if refresh is None:
# return self.strip_anchors(soup)
-#
+#
# content = refresh.get('content').partition('=')[2]
# raw = self.browser.open('http://www.nytimes.com'+content).read()
# soup = BeautifulSoup(raw.decode('cp1252', 'replace'))
@@ -280,7 +280,7 @@ class NYTimes(BasicNewsRecipe):
content = refresh.get('content').partition('=')[2]
raw = self.browser.open('http://www.nytimes.com'+content).read()
soup = BeautifulSoup(raw.decode('cp1252', 'replace'))
-
+
soup = self.strip_anchors(soup)
# Test for empty content
@@ -291,7 +291,7 @@ class NYTimes(BasicNewsRecipe):
return soup
else:
print "no allowed content found, removing article"
- raise StringError
+ raise Exception()
def postprocess_html(self,soup, True):
@@ -334,7 +334,7 @@ class NYTimes(BasicNewsRecipe):
bTag = Tag(soup, "b")
bTag.insert(0, subhead.contents[0])
subhead.replaceWith(bTag)
-
+
# Synthesize a section header
dsk = soup.find('meta', attrs={'name':'dsk'})
if dsk is not None and dsk.has_key('content'):
@@ -343,12 +343,12 @@ class NYTimes(BasicNewsRecipe):
hTag.insert(0,NavigableString(dsk['content']))
articleTag = soup.find(True, attrs={'id':'article'})
articleTag.insert(0,hTag)
-
+
# Add class="articleBody" to so we can format with CSS
divTag = soup.find('div',attrs={'id':'articleBody'})
if divTag is not None :
divTag['class'] = divTag['id']
-
+
# Add class="authorId" to
so we can format with CSS
divTag = soup.find('div',attrs={'id':'authorId'})
if divTag is not None :
diff --git a/src/calibre/web/feeds/recipes/recipe_salon.py b/src/calibre/web/feeds/recipes/recipe_salon.py
index a13acb8ad3..ed7ec98f10 100644
--- a/src/calibre/web/feeds/recipes/recipe_salon.py
+++ b/src/calibre/web/feeds/recipes/recipe_salon.py
@@ -8,6 +8,7 @@ __docformat__ = 'restructuredtext en'
from calibre.web.feeds.news import BasicNewsRecipe
+
class Salon_com(BasicNewsRecipe):
title = 'Salon.com'
__author__ = 'cix3'
@@ -23,19 +24,23 @@ class Salon_com(BasicNewsRecipe):
remove_tags_before = dict(name='h2')
feeds = [
- ('All News & Politics', 'http://feeds.salon.com/salon/news'),
+ ('News & Politics', 'http://feeds.salon.com/salon/news'),
('War Room', 'http://feeds.salon.com/salon/war_room'),
- ('All Arts & Entertainment', 'http://feeds.salon.com/salon/ent'),
+ ('Arts & Entertainment', 'http://feeds.salon.com/salon/ent'),
('I Like to Watch', 'http://feeds.salon.com/salon/iltw'),
+ ('Beyond Multiplex', 'http://feeds.salon.com/salon/btm'),
('Book Reviews', 'http://feeds.salon.com/salon/books'),
- ('All Life stories', 'http://feeds.salon.com/salon/mwt'),
- ('Broadsheet', 'http://feeds.salon.com/salon/broadsheet'),
+ ('All Life', 'http://feeds.salon.com/salon/mwt'),
('All Opinion', 'http://feeds.salon.com/salon/opinion'),
+ ('Glenn Greenwald', 'http://feeds.salon.com/salon/greenwald'),
+ ('Garrison Keillor', 'http://dir.salon.com/topics/garrison_keillor/index.rss'),
+ ('Joan Walsh', 'http://www.salon.com/rss/walsh.rss'),
('All Sports', 'http://feeds.salon.com/salon/sports'),
- ('All Tech & Business', 'http://feeds.salon.com/salon/tech'),
- ('Ask the Pilot', 'http://feeds.salon.com/salon/ask_the_pilot'),
- ('How the World Works', 'http://feeds.salon.com/salon/htww')
+ ('Tech & Business', 'http://feeds.salon.com/salon/tech'),
+ ('How World Works', 'http://feeds.salon.com/salon/htww')
]
def print_version(self, url):
return url.replace('/index.html', '/print.html')
+
+
diff --git a/src/calibre/web/feeds/recipes/recipe_serverside.py b/src/calibre/web/feeds/recipes/recipe_serverside.py
new file mode 100644
index 0000000000..13a56e772e
--- /dev/null
+++ b/src/calibre/web/feeds/recipes/recipe_serverside.py
@@ -0,0 +1,33 @@
+#!/usr/bin/env python
+
+__license__ = 'GPL v3'
+__copyright__ = '2009, Rick Kellogg'
+'''
+TheServerSide.com
+'''
+
+from calibre.web.feeds.news import BasicNewsRecipe
+
+class Engadget(BasicNewsRecipe):
+ title = u'TheServerSide.com'
+ __author__ = 'Rick Kellogg'
+ description = 'news'
+ language = 'en'
+ oldest_article = 7
+ max_articles_per_feed = 100
+ no_stylesheets = True
+ use_embedded_content = False
+
+ remove_tags = [ dict(name='table', attrs={'class':["head"]})]
+
+ feeds = [ (u'News', u'http://feeds.feedburner.com/techtarget/tsscom/home')]
+
+ def get_article_url(self, article):
+
+ url = article.get('guid', None)
+
+ return url
+
+ def print_version(self, url):
+ return url.replace('http://www.theserverside.com/news/thread.tss?thread_id=', 'http://www.theserverside.com/common/printthread.tss?thread_id=')
+
diff --git a/src/calibre/web/feeds/recipes/recipe_smashing.py b/src/calibre/web/feeds/recipes/recipe_smashing.py
index cc4edd2c77..04436a05ef 100644
--- a/src/calibre/web/feeds/recipes/recipe_smashing.py
+++ b/src/calibre/web/feeds/recipes/recipe_smashing.py
@@ -1,51 +1,50 @@
-#!/usr/bin/env python
-
-__license__ = 'GPL v3'
-__copyright__ = '2009, Darko Miletic '
-'''
-www.smashingmagazine.com
-'''
-
-from calibre.web.feeds.news import BasicNewsRecipe
-from calibre.ebooks.BeautifulSoup import Tag
-
-class SmashingMagazine(BasicNewsRecipe):
- title = 'Smashing Magazine'
- __author__ = 'Darko Miletic'
- description = 'We smash you with the information that will make your life easier, really'
- oldest_article = 20
- language = 'en'
- max_articles_per_feed = 100
- no_stylesheets = True
- use_embedded_content = False
- publisher = 'Smashing Magazine'
- category = 'news, web, IT, css, javascript, html'
- encoding = 'utf-8'
-
- conversion_options = {
- 'comments' : description
- ,'tags' : category
- ,'publisher' : publisher
- }
-
- keep_only_tags = [dict(name='div', attrs={'id':'leftcolumn'})]
- remove_tags_after = dict(name='ul',attrs={'class':'social'})
- remove_tags = [
- dict(name=['link','object'])
- ,dict(name='h1',attrs={'class':'logo'})
- ,dict(name='div',attrs={'id':'booklogosec'})
- ,dict(attrs={'src':'http://media2.smashingmagazine.com/wp-content/uploads/images/the-smashing-book/smbook6.gif'})
- ]
-
- feeds = [(u'Articles', u'http://rss1.smashingmagazine.com/feed/')]
-
- def preprocess_html(self, soup):
- for iter in soup.findAll('div',attrs={'class':'leftframe'}):
- it = iter.find('h1')
- if it == None:
- iter.extract()
- for item in soup.findAll('img'):
- oldParent = item.parent
- if oldParent.name == 'a':
- oldParent.name = 'div'
- return soup
+#!/usr/bin/env python
+
+__license__ = 'GPL v3'
+__copyright__ = '2009, Darko Miletic '
+'''
+www.smashingmagazine.com
+'''
+
+from calibre.web.feeds.news import BasicNewsRecipe
+
+class SmashingMagazine(BasicNewsRecipe):
+ title = 'Smashing Magazine'
+ __author__ = 'Darko Miletic'
+ description = 'We smash you with the information that will make your life easier, really'
+ oldest_article = 20
+ language = 'en'
+ max_articles_per_feed = 100
+ no_stylesheets = True
+ use_embedded_content = False
+ publisher = 'Smashing Magazine'
+ category = 'news, web, IT, css, javascript, html'
+ encoding = 'utf-8'
+
+ conversion_options = {
+ 'comments' : description
+ ,'tags' : category
+ ,'publisher' : publisher
+ }
+
+ keep_only_tags = [dict(name='div', attrs={'id':'leftcolumn'})]
+ remove_tags_after = dict(name='ul',attrs={'class':'social'})
+ remove_tags = [
+ dict(name=['link','object'])
+ ,dict(name='h1',attrs={'class':'logo'})
+ ,dict(name='div',attrs={'id':'booklogosec'})
+ ,dict(attrs={'src':'http://media2.smashingmagazine.com/wp-content/uploads/images/the-smashing-book/smbook6.gif'})
+ ]
+
+ feeds = [(u'Articles', u'http://rss1.smashingmagazine.com/feed/')]
+
+ def preprocess_html(self, soup):
+ for iter in soup.findAll('div',attrs={'class':'leftframe'}):
+ it = iter.find('h1')
+ if it == None:
+ iter.extract()
+ for item in soup.findAll('img'):
+ oldParent = item.parent
+ if oldParent.name == 'a':
+ oldParent.name = 'div'
+ return soup
diff --git a/src/calibre/web/feeds/recipes/recipe_thestar.py b/src/calibre/web/feeds/recipes/recipe_thestar.py
index 99f024e964..5e662441ef 100644
--- a/src/calibre/web/feeds/recipes/recipe_thestar.py
+++ b/src/calibre/web/feeds/recipes/recipe_thestar.py
@@ -1,47 +1,47 @@
-#!/usr/bin/env python
-
-__license__ = 'GPL v3'
-__copyright__ = '2009, Darko Miletic '
-'''
-www.thestar.com
-'''
-
-from calibre.web.feeds.news import BasicNewsRecipe
-
-class TheTorontoStar(BasicNewsRecipe):
- title = 'The Toronto Star'
- __author__ = 'Darko Miletic'
- description = "Canada's largest daily newspaper"
- oldest_article = 2
- language = 'en_CA'
- max_articles_per_feed = 100
- no_stylesheets = True
- use_embedded_content = False
- publisher = 'The Toronto Star'
- category = "Toronto Star,Canada's largest daily newspaper,breaking news,classifieds,careers,GTA,Toronto Maple Leafs,sports,Toronto,news,editorial,The Star,Ontario,information,columnists,business,entertainment,births,deaths,automotive,rentals,weather,archives,Torstar,technology,Joseph Atkinson"
- encoding = 'utf-8'
- extra_css = ' .headlineArticle{font-size: x-large; font-weight: bold} .navbar{text-align:center} '
-
- conversion_options = {
- 'comments' : description
- ,'tags' : category
- ,'publisher' : publisher
- }
-
- keep_only_tags = [dict(name='div', attrs={'id':'AssetWebPart1'})]
- remove_attributes= ['style']
-
- feeds = [
- (u'News' , u'http://www.thestar.com/rss/0?searchMode=Query&categories=296' )
- ,(u'Opinions' , u'http://www.thestar.com/rss/0?searchMode=Query&categories=311' )
- ,(u'Business' , u'http://www.thestar.com/rss/0?searchMode=Query&categories=294' )
- ,(u'Sports' , u'http://www.thestar.com/rss/0?searchMode=Query&categories=295' )
- ,(u'Entertainment', u'http://www.thestar.com/rss/0?searchMode=Query&categories=296' )
- ,(u'Living' , u'http://www.thestar.com/rss/0?searchMode=Query&categories=296' )
- ,(u'Travel' , u'http://www.thestar.com/rss/82858?searchMode=Lineup' )
- ,(u'Science' , u'http://www.thestar.com/rss/82848?searchMode=Query&categories=300')
- ]
-
- def print_version(self, url):
- return url.replace('/article/','/printArticle/')
-
+#!/usr/bin/env python
+
+__license__ = 'GPL v3'
+__copyright__ = '2009, Darko Miletic '
+'''
+www.thestar.com
+'''
+
+from calibre.web.feeds.news import BasicNewsRecipe
+
+class TheTorontoStar(BasicNewsRecipe):
+ title = 'The Toronto Star'
+ __author__ = 'Darko Miletic'
+ description = "Canada's largest daily newspaper"
+ oldest_article = 2
+ language = 'en_CA'
+ max_articles_per_feed = 100
+ no_stylesheets = True
+ use_embedded_content = False
+ publisher = 'The Toronto Star'
+ category = "Toronto Star,Canada's largest daily newspaper,breaking news,classifieds,careers,GTA,Toronto Maple Leafs,sports,Toronto,news,editorial,The Star,Ontario,information,columnists,business,entertainment,births,deaths,automotive,rentals,weather,archives,Torstar,technology,Joseph Atkinson"
+ encoding = 'utf-8'
+ extra_css = ' .headlineArticle{font-size: x-large; font-weight: bold} .navbar{text-align:center} '
+
+ conversion_options = {
+ 'comments' : description
+ ,'tags' : category
+ ,'publisher' : publisher
+ }
+
+ keep_only_tags = [dict(name='div', attrs={'id':'AssetWebPart1'})]
+ remove_attributes= ['style']
+
+ feeds = [
+ (u'News' , u'http://www.thestar.com/rss/0?searchMode=Query&categories=296' )
+ ,(u'Opinions' , u'http://www.thestar.com/rss/0?searchMode=Query&categories=311' )
+ ,(u'Business' , u'http://www.thestar.com/rss/0?searchMode=Query&categories=294' )
+ ,(u'Sports' , u'http://www.thestar.com/rss/0?searchMode=Query&categories=295' )
+ ,(u'Entertainment', u'http://www.thestar.com/rss/0?searchMode=Query&categories=296' )
+ ,(u'Living' , u'http://www.thestar.com/rss/0?searchMode=Query&categories=296' )
+ ,(u'Travel' , u'http://www.thestar.com/rss/82858?searchMode=Lineup' )
+ ,(u'Science' , u'http://www.thestar.com/rss/82848?searchMode=Query&categories=300')
+ ]
+
+ def print_version(self, url):
+ return url.replace('/article/','/printArticle/')
+
diff --git a/src/calibre/web/fetch/simple.py b/src/calibre/web/fetch/simple.py
index fdf4e81095..27ac735053 100644
--- a/src/calibre/web/fetch/simple.py
+++ b/src/calibre/web/fetch/simple.py
@@ -41,10 +41,16 @@ class closing(object):
_browser_lock = RLock()
+bad_url_counter = 0
def basename(url):
- parts = urlparse.urlsplit(url)
- path = url2pathname(parts.path)
- res = os.path.basename(path)
+ try:
+ parts = urlparse.urlsplit(url)
+ path = url2pathname(parts.path)
+ res = os.path.basename(path)
+ except:
+ global bad_url_counter
+ bad_url_counter += 1
+ return 'bad_url_%d.html'%bad_url_counter
if not os.path.splitext(res)[1]:
return 'index.html'
return res