mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Implement advanced search
This commit is contained in:
parent
ec35ad2be0
commit
1de21832e5
86
src/libprs500/gui2/dialogs/search.py
Normal file
86
src/libprs500/gui2/dialogs/search.py
Normal file
@ -0,0 +1,86 @@
|
||||
## Copyright (C) 2008 Kovid Goyal kovid@kovidgoyal.net
|
||||
## This program is free software; you can redistribute it and/or modify
|
||||
## it under the terms of the GNU General Public License as published by
|
||||
## the Free Software Foundation; either version 2 of the License, or
|
||||
## (at your option) any later version.
|
||||
##
|
||||
## This program is distributed in the hope that it will be useful,
|
||||
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
## GNU General Public License for more details.
|
||||
##
|
||||
## You should have received a copy of the GNU General Public License along
|
||||
## with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
import re
|
||||
from PyQt4.QtGui import QWidget, QDialog, QVBoxLayout
|
||||
from PyQt4.QtCore import SIGNAL
|
||||
|
||||
from libprs500.gui2.dialogs.search_ui import Ui_Dialog
|
||||
from libprs500.gui2.dialogs.search_item_ui import Ui_Form
|
||||
from libprs500.gui2 import qstring_to_unicode
|
||||
|
||||
class SearchItem(Ui_Form, QWidget):
|
||||
|
||||
FIELDS = {
|
||||
_('Title') : 'title:',
|
||||
_('Author') : 'author:',
|
||||
_('Publisher') :'publisher:',
|
||||
_('Tag') :'tag',
|
||||
_('Series') :'series:',
|
||||
_('Format') :'format:',
|
||||
_('Any') :''
|
||||
}
|
||||
|
||||
def __init__(self, parent):
|
||||
QWidget.__init__(self, parent)
|
||||
self.setupUi(self)
|
||||
|
||||
for field in self.FIELDS.keys():
|
||||
self.field.addItem(field)
|
||||
|
||||
def token(self):
|
||||
txt = qstring_to_unicode(self.text.text()).strip()
|
||||
if txt:
|
||||
tok = self.FIELDS[qstring_to_unicode(self.field.currentText())]+txt
|
||||
if re.search(r'\s', tok):
|
||||
tok = '"%s"'%tok
|
||||
return tok
|
||||
|
||||
|
||||
|
||||
class SearchDialog(Ui_Dialog, QDialog):
|
||||
|
||||
def __init__(self, parent):
|
||||
QDialog.__init__(self, parent)
|
||||
self.setupUi(self)
|
||||
|
||||
self.tokens = []
|
||||
self.token_layout = QVBoxLayout()
|
||||
self.search_items_frame.setLayout(self.token_layout)
|
||||
self.add_token()
|
||||
self.add_token()
|
||||
|
||||
self.connect(self.fewer_button, SIGNAL('clicked()'), self.remove_token)
|
||||
self.connect(self.more_button, SIGNAL('clicked()'), self.add_token)
|
||||
|
||||
def remove_token(self):
|
||||
if self.tokens:
|
||||
tok = self.tokens[-1]
|
||||
self.tokens = self.tokens[:-1]
|
||||
self.token_layout.removeWidget(tok)
|
||||
tok.setVisible(False)
|
||||
|
||||
def add_token(self):
|
||||
tok = SearchItem(self)
|
||||
self.token_layout.addWidget(tok)
|
||||
self.tokens.append(tok)
|
||||
|
||||
def search_string(self):
|
||||
ans = []
|
||||
for tok in self.tokens:
|
||||
token = tok.token()
|
||||
if token:
|
||||
ans.append(token)
|
||||
return ' '.join(ans)
|
||||
|
149
src/libprs500/gui2/dialogs/search.ui
Normal file
149
src/libprs500/gui2/dialogs/search.ui
Normal file
@ -0,0 +1,149 @@
|
||||
<ui version="4.0" >
|
||||
<class>Dialog</class>
|
||||
<widget class="QDialog" name="Dialog" >
|
||||
<property name="geometry" >
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>578</width>
|
||||
<height>474</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle" >
|
||||
<string>Advanced Search</string>
|
||||
</property>
|
||||
<property name="windowIcon" >
|
||||
<iconset resource="../images.qrc" >:/images/search.svg</iconset>
|
||||
</property>
|
||||
<layout class="QGridLayout" >
|
||||
<item row="0" column="0" >
|
||||
<layout class="QVBoxLayout" >
|
||||
<item>
|
||||
<layout class="QVBoxLayout" >
|
||||
<item>
|
||||
<widget class="QRadioButton" name="radioButton" >
|
||||
<property name="text" >
|
||||
<string>Match a&ll of the following criteria</string>
|
||||
</property>
|
||||
<property name="checked" >
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="radioButton_2" >
|
||||
<property name="text" >
|
||||
<string>Match a&ny of the following criteria</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox" >
|
||||
<property name="title" >
|
||||
<string>Search criteria</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" >
|
||||
<item>
|
||||
<widget class="QFrame" name="search_items_frame" >
|
||||
<property name="frameShape" >
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="frameShadow" >
|
||||
<enum>QFrame::Raised</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" >
|
||||
<item>
|
||||
<widget class="QPushButton" name="more_button" >
|
||||
<property name="text" >
|
||||
<string>More</string>
|
||||
</property>
|
||||
<property name="icon" >
|
||||
<iconset resource="../images.qrc" >:/images/plus.svg</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="fewer_button" >
|
||||
<property name="text" >
|
||||
<string>Fewer</string>
|
||||
</property>
|
||||
<property name="icon" >
|
||||
<iconset resource="../images.qrc" >:/images/list_remove.svg</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer>
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" >
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QDialogButtonBox" name="buttonBox" >
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="standardButtons" >
|
||||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources>
|
||||
<include location="../images.qrc" />
|
||||
</resources>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<signal>accepted()</signal>
|
||||
<receiver>Dialog</receiver>
|
||||
<slot>accept()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel" >
|
||||
<x>248</x>
|
||||
<y>254</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel" >
|
||||
<x>157</x>
|
||||
<y>274</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<signal>rejected()</signal>
|
||||
<receiver>Dialog</receiver>
|
||||
<slot>reject()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel" >
|
||||
<x>316</x>
|
||||
<y>260</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel" >
|
||||
<x>286</x>
|
||||
<y>274</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
</connections>
|
||||
</ui>
|
37
src/libprs500/gui2/dialogs/search_item.ui
Normal file
37
src/libprs500/gui2/dialogs/search_item.ui
Normal file
@ -0,0 +1,37 @@
|
||||
<ui version="4.0" >
|
||||
<class>Form</class>
|
||||
<widget class="QWidget" name="Form" >
|
||||
<property name="geometry" >
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>400</width>
|
||||
<height>39</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle" >
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" >
|
||||
<item>
|
||||
<widget class="QComboBox" name="field" />
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label" >
|
||||
<property name="text" >
|
||||
<string>contains</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="text" >
|
||||
<property name="toolTip" >
|
||||
<string>The text to search for. It is interpreted as a regular expression.</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
@ -2,6 +2,7 @@
|
||||
<qresource prefix="/" >
|
||||
<file>images/back.svg</file>
|
||||
<file>images/book.svg</file>
|
||||
<file>images/search.svg</file>
|
||||
<file>images/chapters.svg</file>
|
||||
<file>images/clear_left.svg</file>
|
||||
<file>images/config.svg</file>
|
||||
|
3488
src/libprs500/gui2/images/search.svg
Normal file
3488
src/libprs500/gui2/images/search.svg
Normal file
File diff suppressed because it is too large
Load Diff
After Width: | Height: | Size: 149 KiB |
@ -152,6 +152,11 @@ class BooksModel(QAbstractTableModel):
|
||||
self.endRemoveRows()
|
||||
|
||||
def search_tokens(self, text):
|
||||
OR = False
|
||||
match = re.match(r'\[(.*)\]', text)
|
||||
if match:
|
||||
text = match.group(1)
|
||||
OR = True
|
||||
tokens = []
|
||||
quot = re.search('"(.*?)"', text)
|
||||
while quot:
|
||||
@ -165,11 +170,11 @@ class BooksModel(QAbstractTableModel):
|
||||
ans.append(SearchToken(i))
|
||||
except sre_constants.error:
|
||||
continue
|
||||
return ans
|
||||
return ans, OR
|
||||
|
||||
def search(self, text, refinement, reset=True):
|
||||
tokens = self.search_tokens(text)
|
||||
self.db.filter(tokens, refinement)
|
||||
tokens, OR = self.search_tokens(text)
|
||||
self.db.filter(tokens, refilter=refinement, OR=OR)
|
||||
self.last_search = text
|
||||
if reset:
|
||||
self.reset()
|
||||
@ -505,20 +510,30 @@ class DeviceBooksModel(BooksModel):
|
||||
|
||||
|
||||
def search(self, text, refinement, reset=True):
|
||||
tokens = self.search_tokens(text)
|
||||
tokens, OR = self.search_tokens(text)
|
||||
base = self.map if refinement else self.sorted_map
|
||||
result = []
|
||||
for i in base:
|
||||
add = True
|
||||
q = self.db[i].title + ' ' + self.db[i].authors + ' ' + ', '.join(self.db[i].tags)
|
||||
for token in tokens:
|
||||
if not token.match(q):
|
||||
add = False
|
||||
break
|
||||
if add:
|
||||
result.append(i)
|
||||
q = ['', self.db[i].title, self.db[i].authors, '', ', '.join(self.db[i].tags)] + ['' for j in range(10)]
|
||||
if OR:
|
||||
add = False
|
||||
for token in tokens:
|
||||
if token.match(q):
|
||||
add = True
|
||||
break
|
||||
if add:
|
||||
result.append(i)
|
||||
else:
|
||||
add = True
|
||||
for token in tokens:
|
||||
if not token.match(q):
|
||||
add = False
|
||||
break
|
||||
if add:
|
||||
result.append(i)
|
||||
|
||||
self.map = result
|
||||
|
||||
if reset:
|
||||
self.reset()
|
||||
self.last_search = text
|
||||
@ -705,6 +720,11 @@ class SearchBox(QLineEdit):
|
||||
self.home(False)
|
||||
self.initial_state = True
|
||||
|
||||
def clear(self):
|
||||
self.clear_to_help()
|
||||
self.emit(SIGNAL('search(PyQt_PyObject, PyQt_PyObject)'), '', False)
|
||||
|
||||
|
||||
def keyPressEvent(self, event):
|
||||
if self.initial_state:
|
||||
self.normalize_state()
|
||||
@ -726,6 +746,12 @@ class SearchBox(QLineEdit):
|
||||
self.killTimer(event.timerId())
|
||||
if event.timerId() == self.timer:
|
||||
text = qstring_to_unicode(self.text())
|
||||
refinement = text.startswith(self.prev_search)
|
||||
refinement = text.startswith(self.prev_search) and ':' not in text
|
||||
self.prev_search = text
|
||||
self.emit(SIGNAL('search(PyQt_PyObject, PyQt_PyObject)'), text, refinement)
|
||||
|
||||
def set_search_string(self, txt):
|
||||
self.normalize_state()
|
||||
self.setText(txt)
|
||||
self.emit(SIGNAL('search(PyQt_PyObject, PyQt_PyObject)'), txt, False)
|
||||
self.end(False)
|
@ -12,8 +12,6 @@
|
||||
## You should have received a copy of the GNU General Public License along
|
||||
## with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.Warning
|
||||
|
||||
|
||||
import os, sys, textwrap, cStringIO, collections, traceback, shutil
|
||||
from functools import partial
|
||||
|
||||
@ -49,6 +47,7 @@ from libprs500.gui2.dialogs.jobs import JobsDialog
|
||||
from libprs500.gui2.dialogs.conversion_error import ConversionErrorDialog
|
||||
from libprs500.gui2.dialogs.lrf_single import LRFSingleDialog
|
||||
from libprs500.gui2.dialogs.config import ConfigDialog
|
||||
from libprs500.gui2.dialogs.search import SearchDialog
|
||||
from libprs500.gui2.lrf_renderer.main import file_renderer
|
||||
from libprs500.gui2.lrf_renderer.main import option_parser as lrfviewerop
|
||||
from libprs500.library.database import DatabaseLocked
|
||||
@ -151,6 +150,7 @@ class Main(MainWindow, Ui_MainWindow):
|
||||
self.tool_bar.setContextMenuPolicy(Qt.PreventContextMenu)
|
||||
|
||||
QObject.connect(self.config_button, SIGNAL('clicked(bool)'), self.do_config)
|
||||
QObject.connect(self.advanced_search_button, SIGNAL('clicked(bool)'), self.do_advanced_search)
|
||||
|
||||
####################### Library view ########################
|
||||
self.library_view.set_database(self.database_path)
|
||||
@ -651,6 +651,15 @@ class Main(MainWindow, Ui_MainWindow):
|
||||
|
||||
############################################################################
|
||||
|
||||
########################### Do advanced search #############################
|
||||
|
||||
def do_advanced_search(self, *args):
|
||||
d = SearchDialog(self)
|
||||
if d.exec_() == QDialog.Accepted:
|
||||
self.search.set_search_string(d.search_string())
|
||||
|
||||
############################################################################
|
||||
|
||||
############################### Do config ##################################
|
||||
|
||||
def do_config(self):
|
||||
|
@ -134,6 +134,22 @@ p, li { white-space: pre-wrap; }
|
||||
<property name="bottomMargin" >
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QToolButton" name="advanced_search_button" >
|
||||
<property name="toolTip" >
|
||||
<string>Advanced search</string>
|
||||
</property>
|
||||
<property name="text" >
|
||||
<string>...</string>
|
||||
</property>
|
||||
<property name="icon" >
|
||||
<iconset resource="images.qrc" >:/images/search.svg</iconset>
|
||||
</property>
|
||||
<property name="shortcut" >
|
||||
<string>Alt+S</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label" >
|
||||
<property name="text" >
|
||||
|
@ -809,27 +809,37 @@ ALTER TABLE books ADD COLUMN isbn TEXT DEFAULT "" COLLATE NOCASE;
|
||||
self.data = self.cache
|
||||
self.conn.commit()
|
||||
|
||||
def filter(self, filters, refilter=False):
|
||||
def filter(self, filters, refilter=False, OR=False):
|
||||
'''
|
||||
Filter data based on filters. All the filters must match for an item to
|
||||
be accepted. Matching is case independent regexp matching.
|
||||
@param filters: A list of compiled regexps
|
||||
@param refilter: If True filters are applied to the results of the previous
|
||||
filtering.
|
||||
@param OR: If True, keeps a match if any one of the filters matches. If False,
|
||||
keeps a match only if all the filters match
|
||||
'''
|
||||
if not filters:
|
||||
self.data = self.data if refilter else self.cache
|
||||
else:
|
||||
matches = []
|
||||
for item in self.data if refilter else self.cache:
|
||||
keep = True
|
||||
test = ' '.join([item[i] if item[i] else '' for i in (1,2,3,7,8,9,13)])
|
||||
for token in filters:
|
||||
if not token.match(test):
|
||||
keep = False
|
||||
break
|
||||
if keep:
|
||||
matches.append(item)
|
||||
if OR:
|
||||
keep = False
|
||||
for token in filters:
|
||||
if token.match(item):
|
||||
keep = True
|
||||
break
|
||||
if keep:
|
||||
matches.append(item)
|
||||
else:
|
||||
keep = True
|
||||
for token in filters:
|
||||
if not token.match(item):
|
||||
keep = False
|
||||
break
|
||||
if keep:
|
||||
matches.append(item)
|
||||
self.data = matches
|
||||
|
||||
def rows(self):
|
||||
@ -1297,15 +1307,38 @@ ALTER TABLE books ADD COLUMN isbn TEXT DEFAULT "" COLLATE NOCASE;
|
||||
|
||||
class SearchToken(object):
|
||||
|
||||
FIELD_MAP = { 'title' : 1,
|
||||
'author' : 2,
|
||||
'publisher' : 3,
|
||||
'tag' : 7,
|
||||
'comments' : 8,
|
||||
'series' : 9,
|
||||
'format' : 13,
|
||||
}
|
||||
|
||||
def __init__(self, text_token):
|
||||
self.index = -1
|
||||
text_token = text_token.strip()
|
||||
for field in self.FIELD_MAP.keys():
|
||||
if text_token.lower().startswith(field+':'):
|
||||
text_token = text_token[len(field)+1:]
|
||||
self.index = self.FIELD_MAP[field]
|
||||
break
|
||||
|
||||
self.negate = False
|
||||
if text_token.startswith('!'):
|
||||
self.negate = True
|
||||
text_token = text_token[1:]
|
||||
else:
|
||||
self.negate = False
|
||||
|
||||
self.pattern = re.compile(text_token, re.IGNORECASE)
|
||||
|
||||
def match(self, text):
|
||||
def match(self, item):
|
||||
if self.index >= 0:
|
||||
text = item[self.index]
|
||||
if not text:
|
||||
text = ''
|
||||
else:
|
||||
text = ' '.join([item[i] if item[i] else '' for i in self.FIELD_MAP.values()])
|
||||
return bool(self.pattern.search(text)) ^ self.negate
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: libprs500 0.4.22\n"
|
||||
"POT-Creation-Date: 2008-01-19 23:45+PST\n"
|
||||
"PO-Revision-Date: 2007-12-09 19:53+0100\n"
|
||||
"PO-Revision-Date: 2008-01-20 09:59+0100\n"
|
||||
"Last-Translator: FixB <fix.bornes@free.fr>\n"
|
||||
"Language-Team: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@ -23,12 +23,8 @@ msgid "Set the title. Default: filename."
|
||||
msgstr "Indiquer le titre. Par défaut : nom du fichier."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/ebooks/lrf/__init__.py:87
|
||||
msgid ""
|
||||
"Set the author(s). Multiple authors should be set as a comma separated list. "
|
||||
"Default: %default"
|
||||
msgstr ""
|
||||
"Définir le(s) auteur(s). Si plusieurs auteurs, les séparer d'une virgule. "
|
||||
"Par défaut : %default"
|
||||
msgid "Set the author(s). Multiple authors should be set as a comma separated list. Default: %default"
|
||||
msgstr "Définir le(s) auteur(s). Si plusieurs auteurs, les séparer d'une virgule. Par défaut : %default"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/ebooks/lrf/__init__.py:88
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/library.py:578
|
||||
@ -61,41 +57,24 @@ msgid "Path to file containing image to be used as cover"
|
||||
msgstr "Chemin du fichier contenant l'image à utiliser comme couverture"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/ebooks/lrf/__init__.py:102
|
||||
msgid ""
|
||||
"If there is a cover graphic detected in the source file, use that instead of "
|
||||
"the specified cover."
|
||||
msgstr ""
|
||||
"Si une couverture est déctectée dans le fichier source, utilise cette image "
|
||||
"plutôt que l'image spécifiée."
|
||||
msgid "If there is a cover graphic detected in the source file, use that instead of the specified cover."
|
||||
msgstr "Si une couverture est déctectée dans le fichier source, utilise cette image plutôt que l'image spécifiée."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/ebooks/lrf/__init__.py:105
|
||||
msgid "Output file name. Default is derived from input filename"
|
||||
msgstr "Nom du fichier résultat. Basé par défaut sur le fichier d'entrée"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/ebooks/lrf/__init__.py:107
|
||||
msgid ""
|
||||
"Render HTML tables as blocks of text instead of actual tables. This is "
|
||||
"neccessary if the HTML contains very large or complex tables."
|
||||
msgstr ""
|
||||
"Affiche les tables HTML comme de simples blocs de textes au lieu de "
|
||||
"véritables tables. Cela peut être nécessaire si le HTML contient des tables "
|
||||
"trop grosses ou complexes ."
|
||||
msgid "Render HTML tables as blocks of text instead of actual tables. This is neccessary if the HTML contains very large or complex tables."
|
||||
msgstr "Affiche les tables HTML comme de simples blocs de textes au lieu de véritables tables. Cela peut être nécessaire si le HTML contient des tables trop grosses ou complexes ."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/ebooks/lrf/__init__.py:110
|
||||
msgid ""
|
||||
"Specify the base font size in pts. All fonts are rescaled accordingly. This "
|
||||
"option obsoletes the --font-delta option and takes precedence over it. To "
|
||||
"use --font-delta, set this to 0."
|
||||
msgstr ""
|
||||
"Définit la taille de base de la police en pts. Toutes les poslices sont "
|
||||
"retaillées en fonction. Cette option remplace l'ancienne option --font-"
|
||||
"delta. Pour utiliser --font-delta, saisir 0."
|
||||
msgid "Specify the base font size in pts. All fonts are rescaled accordingly. This option obsoletes the --font-delta option and takes precedence over it. To use --font-delta, set this to 0."
|
||||
msgstr "Définit la taille de base de la police en pts. Toutes les poslices sont retaillées en fonction. Cette option remplace l'ancienne option --font-delta. Pour utiliser --font-delta, saisir 0."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/ebooks/lrf/__init__.py:112
|
||||
msgid "Enable autorotation of images that are wider than the screen width."
|
||||
msgstr ""
|
||||
"Permet l'autorotation des images qui sont plus larges que la largeur de "
|
||||
"l'écran."
|
||||
msgstr "Permet l'autorotation des images qui sont plus larges que la largeur de l'écran."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/ebooks/lrf/__init__.py:115
|
||||
msgid "Set the space between words in pts. Default is %default"
|
||||
@ -110,50 +89,24 @@ msgid "Add a header to all the pages with title and author."
|
||||
msgstr "Rajoute une en-tête à toutes les pages, avec le titre et l'auteur."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/ebooks/lrf/__init__.py:121
|
||||
msgid ""
|
||||
"Set the format of the header. %a is replaced by the author and %t by the "
|
||||
"title. Default is %default"
|
||||
msgstr ""
|
||||
"Définit le format de l'en-tête de page. %a est remplacé par l'auteur et %t "
|
||||
"par le titre. Par défaut : %default"
|
||||
msgid "Set the format of the header. %a is replaced by the author and %t by the title. Default is %default"
|
||||
msgstr "Définit le format de l'en-tête de page. %a est remplacé par l'auteur et %t par le titre. Par défaut : %default"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/ebooks/lrf/__init__.py:123
|
||||
msgid ""
|
||||
"Override the CSS. Can be either a path to a CSS stylesheet or a string. If "
|
||||
"it is a string it is interpreted as CSS."
|
||||
msgstr ""
|
||||
"Surcharge le CSS. Peut être soit un chemin vers une feuille de styles CC ou "
|
||||
"une chaîne. Si c'est une chaîne, elle est interprétée comme du CSS. "
|
||||
msgid "Override the CSS. Can be either a path to a CSS stylesheet or a string. If it is a string it is interpreted as CSS."
|
||||
msgstr "Surcharge le CSS. Peut être soit un chemin vers une feuille de styles CC ou une chaîne. Si c'est une chaîne, elle est interprétée comme du CSS. "
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/ebooks/lrf/__init__.py:125
|
||||
msgid ""
|
||||
"Use the <spine> element from the OPF file to determine the order in which "
|
||||
"the HTML files are appended to the LRF. The .opf file must be in the same "
|
||||
"directory as the base HTML file."
|
||||
msgstr ""
|
||||
"Utilise l'élément <spine> du fichier OPF pour déterminer l'odre dans lequel "
|
||||
"les fichiers HTML sont ajoutés au LRF. Le fichier .opt doit être dans le "
|
||||
"même répertoire que les fichiers HTML de base."
|
||||
msgid "Use the <spine> element from the OPF file to determine the order in which the HTML files are appended to the LRF. The .opf file must be in the same directory as the base HTML file."
|
||||
msgstr "Utilise l'élément <spine> du fichier OPF pour déterminer l'odre dans lequel les fichiers HTML sont ajoutés au LRF. Le fichier .opt doit être dans le même répertoire que les fichiers HTML de base."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/ebooks/lrf/__init__.py:127
|
||||
msgid ""
|
||||
"Increase the font size by 2 * FONT_DELTA pts and the line spacing by "
|
||||
"FONT_DELTA pts. FONT_DELTA can be a fraction.If FONT_DELTA is negative, the "
|
||||
"font size is decreased."
|
||||
msgstr ""
|
||||
"Augmente la taille de la police de 2 * FONT_DELTA points et l'espacement "
|
||||
"entre lignes de FONT_DELTA points. FONT_DELTA peut-être un réel. Si "
|
||||
"FONT_DELTA est négatif, la taille de la police est réduite."
|
||||
msgid "Increase the font size by 2 * FONT_DELTA pts and the line spacing by FONT_DELTA pts. FONT_DELTA can be a fraction.If FONT_DELTA is negative, the font size is decreased."
|
||||
msgstr "Augmente la taille de la police de 2 * FONT_DELTA points et l'espacement entre lignes de FONT_DELTA points. FONT_DELTA peut-être un réel. Si FONT_DELTA est négatif, la taille de la police est réduite."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/ebooks/lrf/__init__.py:137
|
||||
msgid ""
|
||||
"Profile of the target device for which this LRF is being generated. The "
|
||||
"profile determines things like the resolution and screen size of the target "
|
||||
"device. Default: %s Supported profiles: "
|
||||
msgstr ""
|
||||
"Le profil du lecteur pour lequel le LRF est généré. Ce profil détermine des "
|
||||
"paramètres comme la résolution et la taille de l'écran du lecteur. Par "
|
||||
"défaut : %s Profils supportés : "
|
||||
msgid "Profile of the target device for which this LRF is being generated. The profile determines things like the resolution and screen size of the target device. Default: %s Supported profiles: "
|
||||
msgstr "Le profil du lecteur pour lequel le LRF est généré. Ce profil détermine des paramètres comme la résolution et la taille de l'écran du lecteur. Par défaut : %s Profils supportés : "
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/ebooks/lrf/__init__.py:143
|
||||
msgid "Left margin of page. Default is %default px."
|
||||
@ -172,90 +125,40 @@ msgid "Bottom margin of page. Default is %default px."
|
||||
msgstr "La marge de bas de page. Par défaut : %default points."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/ebooks/lrf/__init__.py:153
|
||||
msgid ""
|
||||
"The maximum number of levels to recursively process links. A value of 0 "
|
||||
"means thats links are not followed. A negative value means that <a> tags are "
|
||||
"ignored."
|
||||
msgstr ""
|
||||
"Le nombre maximum de niveau de liens à suivre récursivement. Une valeur à 0 "
|
||||
"indique qu'aucun lien ne sera traité. Une valeur négative indique que les "
|
||||
"tags <a> sont ignorés."
|
||||
msgid "The maximum number of levels to recursively process links. A value of 0 means thats links are not followed. A negative value means that <a> tags are ignored."
|
||||
msgstr "Le nombre maximum de niveau de liens à suivre récursivement. Une valeur à 0 indique qu'aucun lien ne sera traité. Une valeur négative indique que les tags <a> sont ignorés."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/ebooks/lrf/__init__.py:157
|
||||
msgid ""
|
||||
"A regular expression. <a> tags whoose href matches will be ignored. Defaults "
|
||||
"to %default"
|
||||
msgstr ""
|
||||
"Une expression régulière. Les tags <a> qui respectent cette expression "
|
||||
"seront ignorés. Par défaut : %default"
|
||||
msgid "A regular expression. <a> tags whoose href matches will be ignored. Defaults to %default"
|
||||
msgstr "Une expression régulière. Les tags <a> qui respectent cette expression seront ignorés. Par défaut : %default"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/ebooks/lrf/__init__.py:162
|
||||
msgid ""
|
||||
"Prevent the automatic insertion of page breaks before detected chapters."
|
||||
msgstr ""
|
||||
"Empêche l'insertion automatique d'un saut de page avant chaque chapitre "
|
||||
"détecté."
|
||||
msgid "Prevent the automatic insertion of page breaks before detected chapters."
|
||||
msgstr "Empêche l'insertion automatique d'un saut de page avant chaque chapitre détecté."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/ebooks/lrf/__init__.py:166
|
||||
msgid ""
|
||||
"The regular expression used to detect chapter titles. It is searched for in "
|
||||
"heading tags (h1-h6). Defaults to %default"
|
||||
msgstr ""
|
||||
"L'expression régulière utilisée pour détecter les titres de chapitres. Cette "
|
||||
"expression rest recherchée dans les tags d'en-têtes (h1-h6). Par défaut : %"
|
||||
"default"
|
||||
msgid "The regular expression used to detect chapter titles. It is searched for in heading tags (h1-h6). Defaults to %default"
|
||||
msgstr "L'expression régulière utilisée pour détecter les titres de chapitres. Cette expression rest recherchée dans les tags d'en-têtes (h1-h6). Par défaut : %default"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/ebooks/lrf/__init__.py:169
|
||||
msgid ""
|
||||
"If html2lrf does not find any page breaks in the html file and cannot detect "
|
||||
"chapter headings, it will automatically insert page-breaks before the tags "
|
||||
"whose names match this regular expression. Defaults to %default. You can "
|
||||
"disable it by setting the regexp to \"$\". The purpose of this option is to "
|
||||
"try to ensure that there are no really long pages as this degrades the page "
|
||||
"turn performance of the LRF. Thus this option is ignored if the current page "
|
||||
"has only a few elements."
|
||||
msgstr ""
|
||||
"Si html2lrf ne trouve aucun saut de page dans le fichier html et ne peut pas "
|
||||
"détecter de chapitres, il insèrera automatiquement des sauts de pages avant "
|
||||
"les tags dont le nom respectent cette expression régulière. Par défaut : %"
|
||||
"default. Vous pouvez désactiver cette fonction en saisissant \"$\". Le but "
|
||||
"de cette option est d'essayer de s'assurer qu'il n'y a pas de vraiment trop "
|
||||
"longues pages, car cela dégrades les performances lorsque l'on change de "
|
||||
"page. De ce fait, cette option est ignorée si la page courante a peu "
|
||||
"d'éléments."
|
||||
msgid "If html2lrf does not find any page breaks in the html file and cannot detect chapter headings, it will automatically insert page-breaks before the tags whose names match this regular expression. Defaults to %default. You can disable it by setting the regexp to \"$\". The purpose of this option is to try to ensure that there are no really long pages as this degrades the page turn performance of the LRF. Thus this option is ignored if the current page has only a few elements."
|
||||
msgstr "Si html2lrf ne trouve aucun saut de page dans le fichier html et ne peut pas détecter de chapitres, il insèrera automatiquement des sauts de pages avant les tags dont le nom respectent cette expression régulière. Par défaut : %default. Vous pouvez désactiver cette fonction en saisissant \"$\". Le but de cette option est d'essayer de s'assurer qu'il n'y a pas de vraiment trop longues pages, car cela dégrades les performances lorsque l'on change de page. De ce fait, cette option est ignorée si la page courante a peu d'éléments."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/ebooks/lrf/__init__.py:179
|
||||
msgid ""
|
||||
"Force a page break before tags whoose names match this regular expression."
|
||||
msgstr ""
|
||||
"Impose un saut de page avant chaque tags dont le nom respecte cette "
|
||||
"expression régulière."
|
||||
msgid "Force a page break before tags whoose names match this regular expression."
|
||||
msgstr "Impose un saut de page avant chaque tags dont le nom respecte cette expression régulière."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/ebooks/lrf/__init__.py:181
|
||||
msgid ""
|
||||
"Force a page break before an element having the specified attribute. The "
|
||||
"format for this option is tagname regexp,attribute name,attribute value "
|
||||
"regexp. For example to match all heading tags that have the attribute class="
|
||||
"\"chapter\" you would use \"h\\d,class,chapter\". Default is %default"
|
||||
msgstr ""
|
||||
"Impose un saut de page avant un élément avec l'attribut spécifié. Le format "
|
||||
"de cette option est : tagname regexp,attribute name,attribute value regexp."
|
||||
"Par exemple, pour utiliser tous les tags de titres qui ont l'attribut de "
|
||||
"classe \"chapter\" il faudrait saisir : \"h\\d,class,chapter\". Par défaut : "
|
||||
"%default"
|
||||
msgid "Force a page break before an element having the specified attribute. The format for this option is tagname regexp,attribute name,attribute value regexp. For example to match all heading tags that have the attribute class=\"chapter\" you would use \"h\\d,class,chapter\". Default is %default"
|
||||
msgstr "Impose un saut de page avant un élément avec l'attribut spécifié. Le format de cette option est : tagname regexp,attribute name,attribute value regexp.Par exemple, pour utiliser tous les tags de titres qui ont l'attribut de classe \"chapter\" il faudrait saisir : \"h\\d,class,chapter\". Par défaut : %default"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/ebooks/lrf/__init__.py:184
|
||||
msgid "Preprocess Baen HTML files to improve generated LRF."
|
||||
msgstr ""
|
||||
"Préprocesse les fichiers HTML Bean pour améliorer le fichier LRF généré."
|
||||
msgstr "Préprocesse les fichiers HTML Bean pour améliorer le fichier LRF généré."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/ebooks/lrf/__init__.py:186
|
||||
msgid ""
|
||||
"You must add this option if processing files generated by pdftohtml, "
|
||||
"otherwise conversion will fail."
|
||||
msgstr ""
|
||||
"Vous devez utiliser cette option pour traiter des fichiers générés par "
|
||||
"pdftohtml, sinon la conversion échouera."
|
||||
msgid "You must add this option if processing files generated by pdftohtml, otherwise conversion will fail."
|
||||
msgstr "Vous devez utiliser cette option pour traiter des fichiers générés par pdftohtml, sinon la conversion échouera."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/ebooks/lrf/__init__.py:188
|
||||
msgid "Use this option on html0 files from Book Designer."
|
||||
@ -263,17 +166,9 @@ msgstr "Utilisez cette option sur des fichiers html0 venant de Book Designer."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/ebooks/lrf/__init__.py:191
|
||||
msgid ""
|
||||
"Specify trutype font families for serif, sans-serif and monospace fonts. "
|
||||
"These fonts will be embedded in the LRF file. Note that custom fonts lead to "
|
||||
"slower page turns. Each family specification is of the form: \"path to fonts "
|
||||
"directory, family\" For example: --serif-family \"%s, Times New Roman\"\n"
|
||||
"Specify trutype font families for serif, sans-serif and monospace fonts. These fonts will be embedded in the LRF file. Note that custom fonts lead to slower page turns. Each family specification is of the form: \"path to fonts directory, family\" For example: --serif-family \"%s, Times New Roman\"\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"Définit des familles de polices truetype pour les polices serif, sans-serif "
|
||||
"et monospace. Ces polices seront inclues dans le fichier LRF. Attention : "
|
||||
"inclure des polices dans le fichier ralentit les changements de pages. "
|
||||
"Chaque définition de famille est de la forme : \"chemin du répertoir, famille"
|
||||
"\" Par exemple : --serif-family \"%s, Times New Roman\""
|
||||
msgstr "Définit des familles de polices truetype pour les polices serif, sans-serif et monospace. Ces polices seront inclues dans le fichier LRF. Attention : inclure des polices dans le fichier ralentit les changements de pages. Chaque définition de famille est de la forme : \"chemin du répertoir, famille\" Par exemple : --serif-family \"%s, Times New Roman\""
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/ebooks/lrf/__init__.py:200
|
||||
msgid "The serif family of fonts to embed"
|
||||
@ -288,13 +183,8 @@ msgid "The monospace family of fonts to embed"
|
||||
msgstr "La famille de police monospace à inclure"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/ebooks/lrf/__init__.py:214
|
||||
msgid ""
|
||||
"Minimize memory usage at the cost of longer processing times. Use this "
|
||||
"option if you are on a memory constrained machine."
|
||||
msgstr ""
|
||||
"Minimise l'espace mémoire utilisé au détriment d'un temps de calcul plus "
|
||||
"long. N'utilisez cette option que si vous avez des problèmes de mémoire "
|
||||
"disponible."
|
||||
msgid "Minimize memory usage at the cost of longer processing times. Use this option if you are on a memory constrained machine."
|
||||
msgstr "Minimise l'espace mémoire utilisé au détriment d'un temps de calcul plus long. N'utilisez cette option que si vous avez des problèmes de mémoire disponible."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/ebooks/lrf/meta.py:560
|
||||
msgid "Set the book title"
|
||||
@ -322,9 +212,7 @@ msgstr "Chemin d'une image qui sera utilisée comme vignette pour ces fichiers"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/ebooks/lrf/meta.py:574
|
||||
msgid "Path to a txt file containing the comment to be stored in the lrf file."
|
||||
msgstr ""
|
||||
"Chemin d'un fichier texte contenant les commentaires qui seront inclus dans "
|
||||
"le fichier lrf."
|
||||
msgstr "Chemin d'un fichier texte contenant les commentaires qui seront inclus dans le fichier lrf."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/ebooks/lrf/meta.py:578
|
||||
msgid "Extract thumbnail from LRF file"
|
||||
@ -339,18 +227,16 @@ msgid "Don't know what this is for"
|
||||
msgstr "Je ne sais pas à quoi cela sert"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/ebooks/metadata/library_thing.py:59
|
||||
msgid ""
|
||||
"Could not fetch cover as server is experiencing high load. Please try again "
|
||||
"later."
|
||||
msgstr ""
|
||||
msgid "Could not fetch cover as server is experiencing high load. Please try again later."
|
||||
msgstr "L'image de couverture n'a pas pu être récupérée à cause de problèmes de connexion. Veuillez réessayer ultérieurement."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/ebooks/metadata/library_thing.py:60
|
||||
msgid " not found."
|
||||
msgstr ""
|
||||
msgstr " pas trouvé."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/ebooks/metadata/library_thing.py:63
|
||||
msgid "Server error. Try again later."
|
||||
msgstr ""
|
||||
msgstr "Erreur Serveur. Veuillez essayer ultérieurement."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/choose_format_ui.py:42
|
||||
msgid "Choose Format"
|
||||
@ -363,20 +249,20 @@ msgstr "TextLabel"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/config.py:75
|
||||
msgid "<br>Must be a directory."
|
||||
msgstr ""
|
||||
msgstr "<br>Doit être un répertoire."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/config.py:75
|
||||
msgid "Invalid database location "
|
||||
msgstr ""
|
||||
msgstr "Chemin de la database invalide"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/config.py:75
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/config.py:78
|
||||
msgid "Invalid database location"
|
||||
msgstr ""
|
||||
msgstr "Chemin de la database invalide"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/config.py:78
|
||||
msgid "Invalid database location.<br>Cannot write to "
|
||||
msgstr ""
|
||||
msgstr "Chemin de la database invalide.<br>Erreur en écriture"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/config_ui.py:146
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/main_ui.py:271
|
||||
@ -415,25 +301,23 @@ msgstr "..."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/config_ui.py:150
|
||||
msgid "Use &Roman numerals for series number"
|
||||
msgstr ""
|
||||
msgstr "Utilisation de chiffres romains pour les numéro de séries"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/config_ui.py:151
|
||||
msgid "Default network &timeout:"
|
||||
msgstr ""
|
||||
msgstr "&Timeout par défaut pour les connexions réseau :"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/config_ui.py:152
|
||||
msgid ""
|
||||
"Set the default timeout for network fetches (i.e. anytime libprs500 foes out "
|
||||
"to the internet to get information)"
|
||||
msgstr ""
|
||||
msgid "Set the default timeout for network fetches (i.e. anytime libprs500 foes out to the internet to get information)"
|
||||
msgstr "Définit le délai maximum de connexion avant erreur lorsque libprs500 récupère des informations sur internet."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/config_ui.py:153
|
||||
msgid " seconds"
|
||||
msgstr ""
|
||||
msgstr " secondes"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/config_ui.py:154
|
||||
msgid "&Priority for conversion jobs:"
|
||||
msgstr ""
|
||||
msgstr "&Priorité pour les travaux de conversion :"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/config_ui.py:155
|
||||
msgid "Frequently used directories"
|
||||
@ -453,11 +337,11 @@ msgstr "ERREUR"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/fetch_metadata.py:98
|
||||
msgid "Cannot connect"
|
||||
msgstr ""
|
||||
msgstr "Impossible de se connecter"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/fetch_metadata.py:99
|
||||
msgid "You must specify a valid access key for isbndb.com"
|
||||
msgstr ""
|
||||
msgstr "Vous devez spécifier une clef d'accès valide à isbndb.com"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/fetch_metadata_ui.py:79
|
||||
msgid "Fetch metadata"
|
||||
@ -468,12 +352,8 @@ msgid "Fetching metadata for <b>%1</b>"
|
||||
msgstr "Récupération des metadata pour <b>%1</b>"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/fetch_metadata_ui.py:81
|
||||
msgid ""
|
||||
"Sign up for a free account from <a href=\"http://www.isbndb.com\">ISBNdb."
|
||||
"com</a> to get an access key."
|
||||
msgstr ""
|
||||
"Enregistrez-vous gratuitement sur <a href=\"http://www.isbndb.com\">ISBNdb."
|
||||
"com</a> pour obtenir une clef d'accès (access key)."
|
||||
msgid "Sign up for a free account from <a href=\"http://www.isbndb.com\">ISBNdb.com</a> to get an access key."
|
||||
msgstr "Enregistrez-vous gratuitement sur <a href=\"http://www.isbndb.com\">ISBNdb.com</a> pour obtenir une clef d'accès (access key)."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/fetch_metadata_ui.py:82
|
||||
msgid "&Access Key;"
|
||||
@ -489,9 +369,7 @@ msgstr "Résultats correspondants"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/fetch_metadata_ui.py:85
|
||||
msgid "Select the book that most closely matches your copy from the list below"
|
||||
msgstr ""
|
||||
"Sélectionnez le livre qui correspond le mieux au votre dans la liste ci-"
|
||||
"dessous."
|
||||
msgstr "Sélectionnez le livre qui correspond le mieux au votre dans la liste ci-dessous."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/jobs_ui.py:35
|
||||
msgid "Active Jobs"
|
||||
@ -503,13 +381,11 @@ msgstr "Aucun format disponible"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/lrf_single.py:91
|
||||
msgid "Cannot convert %s as this book has no supported formats"
|
||||
msgstr ""
|
||||
"Conversion du livre %s impossible parcequ'il ne dispose d'aucun format "
|
||||
"supporté"
|
||||
msgstr "Conversion du livre %s impossible parcequ'il ne dispose d'aucun format supporté"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/lrf_single.py:95
|
||||
msgid "Choose the format to convert into LRF"
|
||||
msgstr ""
|
||||
msgstr "Choix du format de conversion vers LRF"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/lrf_single.py:103
|
||||
msgid "Convert %s to LRF"
|
||||
@ -517,14 +393,11 @@ msgstr "Conversion de %s en LRF"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/lrf_single.py:109
|
||||
msgid "RTF conversion not supported"
|
||||
msgstr ""
|
||||
msgstr "La conversion de format RTF n'est pas supportée"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/lrf_single.py:110
|
||||
msgid ""
|
||||
"Conversion of RTF files is not supported on OS X Leopard and higher. This is "
|
||||
"because unrtf, the underlying program does not work. If you are willing to "
|
||||
"port unrtf to Leopard, contact me."
|
||||
msgstr ""
|
||||
msgid "Conversion of RTF files is not supported on OS X Leopard and higher. This is because unrtf, the underlying program does not work. If you are willing to port unrtf to Leopard, contact me."
|
||||
msgstr "La conversion de fichiers RTF n'est pas supportée sous OS X Leopard et suivants. Ceci est dû à unrtf, le programe utilisé pour cette conversion, qui ne fonctionne pas sur cet OS. Si vous souhaitez migrer unrtf sur Leopard, merci de me contacter."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/lrf_single.py:115
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/main.py:140
|
||||
@ -534,54 +407,46 @@ msgstr "Définir les paramètres par défaut de conversion"
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/lrf_single.py:181
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/metadata_single.py:52
|
||||
msgid "Cannot read"
|
||||
msgstr ""
|
||||
msgstr "Impossible de lire"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/lrf_single.py:182
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/metadata_single.py:53
|
||||
msgid "You do not have permission to read the file: "
|
||||
msgstr ""
|
||||
msgstr "Vous n'avez pas les permissions nécessaires pour lire ce fichier:"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/lrf_single.py:190
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/metadata_single.py:61
|
||||
msgid "Error reading file"
|
||||
msgstr ""
|
||||
msgstr "Erreur à la lecture du fichier"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/lrf_single.py:191
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/metadata_single.py:62
|
||||
msgid "<p>There was an error reading from file: <br /><b>"
|
||||
msgstr ""
|
||||
msgstr "<p>Il y a eu une erreur à la lecture du fichier : <br /><b>"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/lrf_single.py:197
|
||||
msgid " is not a valid picture"
|
||||
msgstr ""
|
||||
msgstr " n'est pas une image vailde"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/lrf_single.py:263
|
||||
msgid ""
|
||||
"Preprocess the file before converting to LRF. This is useful if you know "
|
||||
"that the file is from a specific source. Known sources:"
|
||||
msgstr ""
|
||||
msgid "Preprocess the file before converting to LRF. This is useful if you know that the file is from a specific source. Known sources:"
|
||||
msgstr "Pré-processe le fichier avant la conversion vers le format LRF. Ceci est utile si vous connaissez l'origine du fichiers. Origines connues :"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/lrf_single.py:264
|
||||
msgid "<ol><li><b>baen</b> - Books from BAEN Publishers</li>"
|
||||
msgstr ""
|
||||
msgstr "<ol><li><b>baen</b> -Livres des éditions BAEN </li>"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/lrf_single.py:265
|
||||
msgid ""
|
||||
"<li><b>pdftohtml</b> - HTML files that are the output of the program "
|
||||
"pdftohtml</li>"
|
||||
msgstr ""
|
||||
msgid "<li><b>pdftohtml</b> - HTML files that are the output of the program pdftohtml</li>"
|
||||
msgstr "<li><b>pdftohtml</b> - fichiers HTML générés par le programme pdftohtml</li>"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/lrf_single.py:266
|
||||
msgid "<li><b>book-designer</b> - HTML0 files from Book Designer</li>"
|
||||
msgstr ""
|
||||
msgstr "<li><b>book-designer</b> - Fichiers HTML0 générés avec Book Designer</li>"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/lrf_single.py:299
|
||||
msgid ""
|
||||
"Specify metadata such as title and author for the book.<p>Metadata will be "
|
||||
"updated in the database as well as the generated LRF file."
|
||||
msgstr ""
|
||||
"Définit les metadata comme le titre et l'auteur du livre.<p>Les metadata "
|
||||
"seront modifiées dans la base de données et dans le fichier LRF généré."
|
||||
msgid "Specify metadata such as title and author for the book.<p>Metadata will be updated in the database as well as the generated LRF file."
|
||||
msgstr "Définit les metadata comme le titre et l'auteur du livre.<p>Les metadata seront modifiées dans la base de données et dans le fichier LRF généré."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/lrf_single.py:299
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/lrf_single_ui.py:564
|
||||
@ -589,12 +454,8 @@ msgid "Metadata"
|
||||
msgstr "Metadata"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/lrf_single.py:300
|
||||
msgid ""
|
||||
"Adjust the look of the generated LRF file by specifying things like font "
|
||||
"sizes and the spacing between words."
|
||||
msgstr ""
|
||||
"Ajuste la présentation du fichier LRF généré en définissant des paramètres "
|
||||
"tels que la taille des polices et l'espacement entre les mots."
|
||||
msgid "Adjust the look of the generated LRF file by specifying things like font sizes and the spacing between words."
|
||||
msgstr "Ajuste la présentation du fichier LRF généré en définissant des paramètres tels que la taille des polices et l'espacement entre les mots."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/lrf_single.py:300
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/lrf_single_ui.py:568
|
||||
@ -602,12 +463,8 @@ msgid "Look & Feel"
|
||||
msgstr "Présentation"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/lrf_single.py:301
|
||||
msgid ""
|
||||
"Specify the page settings like margins and the screen size of the target "
|
||||
"device."
|
||||
msgstr ""
|
||||
"Définit les paramètres de la pages tels que les marges et la taille de "
|
||||
"l'écran du lecteur cible."
|
||||
msgid "Specify the page settings like margins and the screen size of the target device."
|
||||
msgstr "Définit les paramètres de la pages tels que les marges et la taille de l'écran du lecteur cible."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/lrf_single.py:301
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/lrf_single_ui.py:572
|
||||
@ -625,7 +482,7 @@ msgstr "Détection des chapitres"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/lrf_single.py:310
|
||||
msgid "<font color=\"gray\">No help available</font>"
|
||||
msgstr ""
|
||||
msgstr "<font color=\"gray\">Aucune aide n'est disponible</font>"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/lrf_single_ui.py:559
|
||||
msgid "Convert to LRF"
|
||||
@ -656,7 +513,7 @@ msgstr "Rechercher une image à utiliser en tant que couverture du livre."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/lrf_single_ui.py:583
|
||||
msgid "Use cover from &source file"
|
||||
msgstr ""
|
||||
msgstr "Utilise l'image de couverture du fichier &source"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/lrf_single_ui.py:584
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/metadata_single_ui.py:284
|
||||
@ -678,12 +535,8 @@ msgstr "&Auteurs :"
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/lrf_single_ui.py:589
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/metadata_bulk_ui.py:130
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/metadata_single_ui.py:287
|
||||
msgid ""
|
||||
"Change the author(s) of this book. Multiple authors should be separated by a "
|
||||
"comma"
|
||||
msgstr ""
|
||||
"Modifie les auteurs du livres. Si plusieurs auteurs, les séparer avec des "
|
||||
"virgules."
|
||||
msgid "Change the author(s) of this book. Multiple authors should be separated by a comma"
|
||||
msgstr "Modifie les auteurs du livres. Si plusieurs auteurs, les séparer avec des virgules."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/lrf_single_ui.py:588
|
||||
msgid "Author So&rt:"
|
||||
@ -709,12 +562,8 @@ msgstr "Ta&gs :"
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/lrf_single_ui.py:593
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/metadata_bulk_ui.py:140
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/metadata_single_ui.py:297
|
||||
msgid ""
|
||||
"Tags categorize the book. This is particularly useful while searching. "
|
||||
"<br><br>They can be any words or phrases, separated by commas."
|
||||
msgstr ""
|
||||
"Tags caractérisant le livre, particulièrement utile pour la recherche. <br> "
|
||||
"<br> Cela peut être n'importe quels mots, séparés par des virgules."
|
||||
msgid "Tags categorize the book. This is particularly useful while searching. <br><br>They can be any words or phrases, separated by commas."
|
||||
msgstr "Tags caractérisant le livre, particulièrement utile pour la recherche. <br> <br> Cela peut être n'importe quels mots, séparés par des virgules."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/lrf_single_ui.py:594
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/metadata_bulk_ui.py:143
|
||||
@ -871,15 +720,15 @@ msgstr "Aide"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/lrf_single_ui.py:634
|
||||
msgid ""
|
||||
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css"
|
||||
"\">\n"
|
||||
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
|
||||
"p, li { white-space: pre-wrap; }\n"
|
||||
"</style></head><body style=\" font-family:'DejaVu Sans'; font-size:9pt; font-"
|
||||
"weight:400; font-style:normal;\">\n"
|
||||
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; "
|
||||
"margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-"
|
||||
"family:'Sans Serif';\"></p></body></html>"
|
||||
"</style></head><body style=\" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;\">\n"
|
||||
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif';\"></p></body></html>"
|
||||
msgstr ""
|
||||
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
|
||||
"p, li { white-space: pre-wrap; }\n"
|
||||
"</style></head><body style=\" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;\">\n"
|
||||
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif';\"></p></body></html>"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/metadata_bulk_ui.py:127
|
||||
msgid "Edit Meta information"
|
||||
@ -897,12 +746,8 @@ msgstr "Clé de tr&i de l'auteur :"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/metadata_bulk_ui.py:132
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/metadata_single_ui.py:289
|
||||
msgid ""
|
||||
"Specify how the author(s) of this book should be sorted. For example Charles "
|
||||
"Dickens should be sorted as Dickens, Charles."
|
||||
msgstr ""
|
||||
"Définit comment l'auteur de ce livre doit être classé. Par exemple, Charles "
|
||||
"Dickens peut être classé comme Dickens, Charles."
|
||||
msgid "Specify how the author(s) of this book should be sorted. For example Charles Dickens should be sorted as Dickens, Charles."
|
||||
msgstr "Définit comment l'auteur de ce livre doit être classé. Par exemple, Charles Dickens peut être classé comme Dickens, Charles."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/metadata_bulk_ui.py:133
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/metadata_single_ui.py:290
|
||||
@ -927,34 +772,31 @@ msgstr "Ajout de Ta&gs :"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/metadata_bulk_ui.py:141
|
||||
msgid "&Remove tags:"
|
||||
msgstr ""
|
||||
msgstr "&Supprime des mots-clefs :"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/metadata_bulk_ui.py:142
|
||||
msgid "Comma separated list of tags to remove from the books. "
|
||||
msgstr ""
|
||||
msgstr "Liste de mots-clefs séparés par des virgules à retirer des livres."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/metadata_single.py:218
|
||||
msgid ""
|
||||
"<p>Enter your username and password for <b>LibraryThing.com</b>. <br/>If you "
|
||||
"do not have one, you can <a href='http://www.librarything.com'>register</a> "
|
||||
"for free!.</p>"
|
||||
msgstr ""
|
||||
msgid "<p>Enter your username and password for <b>LibraryThing.com</b>. <br/>If you do not have one, you can <a href='http://www.librarything.com'>register</a> for free!.</p>"
|
||||
msgstr "<p>Veuillez saisir votre nom d'utilisateur et votre mot de passe de <b>LibraryThing.com</b>. <br/>Si vous n'en avez pas, vous pouvez <a href='http://www.librarything.com'>y créer un compte </a> gratuitement !</p>"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/metadata_single.py:248
|
||||
msgid "<b>Could not fetch cover.</b><br/>"
|
||||
msgstr ""
|
||||
msgstr "<b>Erreur à la récupération de l'image de couverture.</b><br/>"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/metadata_single.py:248
|
||||
msgid "Could not fetch cover"
|
||||
msgstr ""
|
||||
msgstr "Erreur à la récupération de l'image de couverture"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/metadata_single.py:254
|
||||
msgid "Cannot fetch cover"
|
||||
msgstr ""
|
||||
msgstr "Erreur à la récupération de l'image de couverture"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/metadata_single.py:254
|
||||
msgid "You must specify the ISBN identifier for this book."
|
||||
msgstr ""
|
||||
msgstr "Vous devez fournir l'identifiant ISBN de ce livre."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/metadata_single_ui.py:282
|
||||
msgid "Edit Meta Information"
|
||||
@ -963,7 +805,7 @@ msgstr "Edition des metadata"
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/metadata_single_ui.py:298
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/metadata_single_ui.py:299
|
||||
msgid "Open Tag Editor"
|
||||
msgstr ""
|
||||
msgstr "Ouvre l'éditeur de mots-clefs"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/metadata_single_ui.py:306
|
||||
msgid "IS&BN:"
|
||||
@ -990,13 +832,12 @@ msgid "Fetch cover image from server"
|
||||
msgstr "Récupération de l'image de couverture depuis le serveur"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/metadata_single_ui.py:319
|
||||
msgid ""
|
||||
"Change the username and/or password for your account at LibraryThing.com"
|
||||
msgstr ""
|
||||
msgid "Change the username and/or password for your account at LibraryThing.com"
|
||||
msgstr "Modifie le nom d'utilisateur et/ou le mot de passe de votre compte à LibraryThing.com"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/metadata_single_ui.py:320
|
||||
msgid "Change password"
|
||||
msgstr ""
|
||||
msgstr "Modifie le mot de passe"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/password_ui.py:61
|
||||
msgid "Password needed"
|
||||
@ -1012,47 +853,43 @@ msgstr "Mot de &passe :"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/password_ui.py:65
|
||||
msgid "&Show password"
|
||||
msgstr ""
|
||||
msgstr "&Affiche le mot de passe"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/tag_editor_ui.py:141
|
||||
msgid "Tag Editor"
|
||||
msgstr ""
|
||||
msgstr "Editeur de Mots-Clefs"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/tag_editor_ui.py:142
|
||||
msgid "A&vailable tags"
|
||||
msgstr ""
|
||||
msgstr "Mots-clefs disponibles"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/tag_editor_ui.py:143
|
||||
msgid ""
|
||||
"Delete tag from database. This will unapply the tag from all books and then "
|
||||
"remove it from the database."
|
||||
msgstr ""
|
||||
msgid "Delete tag from database. This will unapply the tag from all books and then remove it from the database."
|
||||
msgstr "Supprime un mot-clef de la base de données. Cette opération va retirer ce mot-clef de tous les livres et le supprimer de la base de données."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/tag_editor_ui.py:145
|
||||
msgid "Apply tag to current book"
|
||||
msgstr ""
|
||||
msgstr "Applique le mot-clef au livre en cours."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/tag_editor_ui.py:147
|
||||
msgid "A&pplied tags"
|
||||
msgstr ""
|
||||
msgstr "Mots-clefs"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/tag_editor_ui.py:148
|
||||
msgid "Unapply (remove) tag from current book"
|
||||
msgstr ""
|
||||
msgstr "Enlève le mot-clef du livre en cours"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/tag_editor_ui.py:150
|
||||
msgid "&Add tag:"
|
||||
msgstr ""
|
||||
msgstr "Ajoute mot-clef"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/tag_editor_ui.py:151
|
||||
msgid ""
|
||||
"If the tag you want is not in the available list, you can add it here. "
|
||||
"Accepts a comman separated list of tags."
|
||||
msgstr ""
|
||||
msgid "If the tag you want is not in the available list, you can add it here. Accepts a comman separated list of tags."
|
||||
msgstr "Si le mot-clef que vous cherchez n'est pas dans la liste, vous pouvez l'ajouter ici. Vous pouvez également saisir une liste de mot-clefs séparés par des virgules."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/dialogs/tag_editor_ui.py:152
|
||||
msgid "Add tag to available tags and apply it to current book"
|
||||
msgstr ""
|
||||
msgstr "Ajoute le mot-clef à la liste des mots-clefs et l'applique au livre en cours"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/jobs.py:250
|
||||
msgid "Job"
|
||||
@ -1162,17 +999,15 @@ msgstr "Hyphenation"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/lrf_renderer/config_ui.py:54
|
||||
msgid "<b>Changes will only take affect after a restart."
|
||||
msgstr ""
|
||||
"<b>Les modifications ne seront prises en compte qu'après avoir relancé le "
|
||||
"programme."
|
||||
msgstr "<b>Les modifications ne seront prises en compte qu'après avoir relancé le programme."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/lrf_renderer/main.py:164
|
||||
msgid "<b>No matches</b> for the search phrase <i>%s</i> were found."
|
||||
msgstr ""
|
||||
msgstr "<b>Aucun résultat</b> pour la recherche <i>%s</i>."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/lrf_renderer/main.py:164
|
||||
msgid "No matches found"
|
||||
msgstr ""
|
||||
msgstr "Aucun résultat"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/lrf_renderer/main_ui.py:184
|
||||
msgid "LRF Viewer"
|
||||
@ -1212,7 +1047,7 @@ msgstr "Configuration"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/main.py:86
|
||||
msgid "Error communicating with device"
|
||||
msgstr ""
|
||||
msgstr "Erreur pendant la communication avec le lecteur électronique"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/main.py:114
|
||||
msgid "Send to main memory"
|
||||
@ -1239,92 +1074,86 @@ msgid "Bulk convert"
|
||||
msgstr "Convertion par lot"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/main.py:314
|
||||
msgid ""
|
||||
"<p>Books with the same title as the following already exist in the database. "
|
||||
"Add them anyway?<ul>"
|
||||
msgstr ""
|
||||
msgid "<p>Books with the same title as the following already exist in the database. Add them anyway?<ul>"
|
||||
msgstr "<p>Des livres ayant le même titre existent déjà dans la base de données. Les ajouter quand même ?<ul>"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/main.py:317
|
||||
msgid "Duplicates found!"
|
||||
msgstr ""
|
||||
msgstr "Des doublons ont été détectés !"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/main.py:347
|
||||
msgid "No space on device"
|
||||
msgstr ""
|
||||
msgstr "Le lecteur électronique n'a plus d'espace mémoire disponible"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/main.py:348
|
||||
msgid "<p>Cannot upload books to device there is no more free space available "
|
||||
msgstr ""
|
||||
msgstr "<p>Impossible d'envoyer les livres sur le lecteur : il n'y a plus assez d'espace mémoire disponible"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/main.py:417
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/main.py:436
|
||||
msgid "Cannot edit metadata"
|
||||
msgstr ""
|
||||
msgstr "Erreur à l'édition des metadat"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/main.py:417
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/main.py:436
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/main.py:519
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/main.py:579
|
||||
msgid "No books selected"
|
||||
msgstr ""
|
||||
msgstr "Aucun livre sélectionné"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/main.py:519
|
||||
msgid "Cannot save to disk"
|
||||
msgstr ""
|
||||
msgstr "Ne peut pas enregistrer sur le disque"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/main.py:569
|
||||
msgid "Not yet implemented."
|
||||
msgstr ""
|
||||
msgstr "Pas encore implémenté."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/main.py:569
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/main.py:579
|
||||
msgid "Cannot convert"
|
||||
msgstr ""
|
||||
msgstr "Conversion impossible"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/main.py:625
|
||||
msgid "No book selected"
|
||||
msgstr ""
|
||||
msgstr "Aucun livre sélectionné"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/main.py:625
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/main.py:634
|
||||
msgid "Cannot view"
|
||||
msgstr ""
|
||||
msgstr "Impossible de visualiser"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/main.py:634
|
||||
msgid "%s is not available in LRF format. Please convert it first."
|
||||
msgstr ""
|
||||
msgstr "%s n'est pas disponible au format LRF. Veuillez le convertir avant."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/main.py:658
|
||||
msgid "Cannot configure"
|
||||
msgstr ""
|
||||
msgstr "Configuration impossible"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/main.py:658
|
||||
msgid "Cannot configure while there are running jobs."
|
||||
msgstr ""
|
||||
msgstr "Impossible de configurer pendant que des travaux sont en cours."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/main.py:683
|
||||
msgid "Invalid database"
|
||||
msgstr ""
|
||||
msgstr "Base de données invalide"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/main.py:684
|
||||
msgid ""
|
||||
"<p>An invalid database already exists at %s, delete it before trying to move "
|
||||
"the existing database.<br>Error: %s"
|
||||
msgstr ""
|
||||
msgid "<p>An invalid database already exists at %s, delete it before trying to move the existing database.<br>Error: %s"
|
||||
msgstr "<p>Une base de données invalide existe déjà ici : %s, spprimez la avant d'essayer de déplacer la base de données existante.<br>Erreur : %s"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/main.py:692
|
||||
msgid "Could not move database"
|
||||
msgstr ""
|
||||
msgstr "Déplacement de la base de données impossible"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/main.py:741
|
||||
msgid "Error talking to device"
|
||||
msgstr ""
|
||||
msgstr "Erreur pendant la communication avec le lecteur électronique"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/main.py:742
|
||||
msgid ""
|
||||
"There was a temporary error talking to the device. Please unplug and "
|
||||
"reconnect the device and or reboot."
|
||||
msgstr ""
|
||||
msgid "There was a temporary error talking to the device. Please unplug and reconnect the device and or reboot."
|
||||
msgstr "Une erreur temporaire s'est déclenchée pendant la communication avec le lecteur électronique. Veuillez déconnecter et reconnecter le lecteur électronique et redémarrer."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/main_ui.py:261
|
||||
msgid "libprs500"
|
||||
@ -1332,51 +1161,27 @@ msgstr "libprs500"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/main_ui.py:262
|
||||
msgid ""
|
||||
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css"
|
||||
"\">\n"
|
||||
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
|
||||
"p, li { white-space: pre-wrap; }\n"
|
||||
"</style></head><body style=\" font-family:'Sans Serif'; font-size:9pt; font-"
|
||||
"weight:400; font-style:normal;\">\n"
|
||||
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-"
|
||||
"right:0px; -qt-block-indent:0; text-indent:0px;\">For help visit <a href="
|
||||
"\"https://libprs500.kovidgoyal.net/wiki/WikiStart#Usage\"><span style=\" "
|
||||
"text-decoration: underline; color:#0000ff;\">libprs500.kovidgoyal.net</"
|
||||
"span></a><br /><br /><span style=\" font-weight:600;\">libprs500</span>: %1 "
|
||||
"by <span style=\" font-weight:600;\">Kovid Goyal</span> %2<br />%3</p></"
|
||||
"body></html>"
|
||||
"</style></head><body style=\" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;\">\n"
|
||||
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">For help visit <a href=\"https://libprs500.kovidgoyal.net/wiki/WikiStart#Usage\"><span style=\" text-decoration: underline; color:#0000ff;\">libprs500.kovidgoyal.net</span></a><br /><br /><span style=\" font-weight:600;\">libprs500</span>: %1 by <span style=\" font-weight:600;\">Kovid Goyal</span> %2<br />%3</p></body></html>"
|
||||
msgstr ""
|
||||
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css"
|
||||
"\">\n"
|
||||
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
|
||||
"p, li { white-space: pre-wrap; }\n"
|
||||
"</style></head><body style=\" font-family:'Sans Serif'; font-size:9pt; font-"
|
||||
"weight:400; font-style:normal;\">\n"
|
||||
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-"
|
||||
"right:0px; -qt-block-indent:0; text-indent:0px;\">For help visit <a href="
|
||||
"\"https://libprs500.kovidgoyal.net/wiki/WikiStart#Usage\"><span style=\" "
|
||||
"text-decoration: underline; color:#0000ff;\">libprs500.kovidgoyal.net</"
|
||||
"span></a><br /><br /><span style=\" font-weight:600;\">libprs500</span>: %1 "
|
||||
"by <span style=\" font-weight:600;\">Kovid Goyal</span> %2<br />%3</p></"
|
||||
"body></html>"
|
||||
"</style></head><body style=\" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;\">\n"
|
||||
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">For help visit <a href=\"https://libprs500.kovidgoyal.net/wiki/WikiStart#Usage\"><span style=\" text-decoration: underline; color:#0000ff;\">libprs500.kovidgoyal.net</span></a><br /><br /><span style=\" font-weight:600;\">libprs500</span>: %1 by <span style=\" font-weight:600;\">Kovid Goyal</span> %2<br />%3</p></body></html>"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/main_ui.py:266
|
||||
msgid "&Search:"
|
||||
msgstr "&Recherche :"
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/main_ui.py:267
|
||||
msgid ""
|
||||
"Search the list of books by title or author<br><br>Words separated by spaces "
|
||||
"are ANDed"
|
||||
msgstr ""
|
||||
"Recherche les livres par titre ou auteur <br><br>Recherche en ET pour les "
|
||||
"mots séparés par des espaces."
|
||||
msgid "Search the list of books by title or author<br><br>Words separated by spaces are ANDed"
|
||||
msgstr "Recherche les livres par titre ou auteur <br><br>Recherche en ET pour les mots séparés par des espaces."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/main_ui.py:268
|
||||
msgid ""
|
||||
"Search the list of books by title, author, publisher, tags and "
|
||||
"comments<br><br>Words separated by spaces are ANDed"
|
||||
msgstr ""
|
||||
"Recherche les livres par titre, auteur, éditeur, tags et commentaires "
|
||||
"<br><br>Recherche en ET pour les mots séparés par des espaces."
|
||||
msgid "Search the list of books by title, author, publisher, tags and comments<br><br>Words separated by spaces are ANDed"
|
||||
msgstr "Recherche les livres par titre, auteur, éditeur, tags et commentaires <br><br>Recherche en ET pour les mots séparés par des espaces."
|
||||
|
||||
#: /home/kovid/work/libprs500/src/libprs500/gui2/main_ui.py:269
|
||||
msgid "Reset Quick Search"
|
||||
@ -1453,7 +1258,6 @@ msgstr ""
|
||||
|
||||
#~ msgid "Use &metadata cover"
|
||||
#~ msgstr "Utilise la couverture &metadata"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/"
|
||||
#~ "css\">\n"
|
||||
@ -1472,3 +1276,4 @@ msgstr ""
|
||||
#~ "<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; "
|
||||
#~ "margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"
|
||||
#~ "\"></p></body></html>"
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user