Multiple fixes
Update translations
This commit is contained in:
5
TODO
5
TODO
@@ -72,10 +72,7 @@ TODO
|
||||
Other:
|
||||
✓ Define every widget in code
|
||||
Bugs:
|
||||
If there are files open and the database is deleted, TypeErrors result
|
||||
Cover culling does not occur if some other tab has initial focus
|
||||
Slider position change might be acting up too
|
||||
Take metadata from the database when opening the file
|
||||
Slider position change might be acting up
|
||||
|
||||
Secondary:
|
||||
Annotations
|
||||
|
@@ -255,7 +255,8 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
|
||||
self.tableView.horizontalHeader().sectionClicked.connect(
|
||||
self.lib_ref.table_proxy_model.sort_table_columns)
|
||||
self.tableView.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
|
||||
self.tableView.customContextMenuRequested.connect(self.generate_library_context_menu)
|
||||
self.tableView.customContextMenuRequested.connect(
|
||||
self.generate_library_context_menu)
|
||||
|
||||
# Keyboard shortcuts
|
||||
self.ksDistractionFree = QtWidgets.QShortcut(QtGui.QKeySequence('Ctrl+D'), self)
|
||||
@@ -491,11 +492,6 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
|
||||
return selected_indexes
|
||||
|
||||
def delete_books(self, selected_indexes=None):
|
||||
# TODO
|
||||
# ? Mirror selection
|
||||
# Ask if library files are to be excluded from further scans
|
||||
# Make a checkbox for this
|
||||
|
||||
if not selected_indexes:
|
||||
# Get a list of QItemSelection objects
|
||||
# What we're interested in is the indexes()[0] in each of them
|
||||
@@ -557,7 +553,8 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
|
||||
self.lib_ref.generate_library_tags()
|
||||
|
||||
self.statusMessage.setText(
|
||||
str(self.lib_ref.item_proxy_model.rowCount()) + ' books')
|
||||
str(self.lib_ref.item_proxy_model.rowCount()) +
|
||||
self._translate('Main_UI', ' books'))
|
||||
|
||||
if not self.settings['perform_culling']:
|
||||
self.load_all_covers()
|
||||
|
@@ -77,6 +77,8 @@ class Library:
|
||||
year = i[2]
|
||||
path = i[4]
|
||||
last_accessed = i[9]
|
||||
if last_accessed and not isinstance(last_accessed, QtCore.QDateTime):
|
||||
last_accessed = pickle.loads(last_accessed)
|
||||
|
||||
tags = i[7]
|
||||
if isinstance(tags, list): # When files are added for the first time
|
||||
@@ -168,7 +170,8 @@ class Library:
|
||||
self.parent.listView.setIconSize(s)
|
||||
self.parent.listView.setModel(self.item_proxy_model)
|
||||
|
||||
self.table_proxy_model = TableProxyModel(self.parent.temp_dir.path())
|
||||
self.table_proxy_model = TableProxyModel(
|
||||
self.parent.temp_dir.path(), self.parent.tableView.horizontalHeader())
|
||||
self.table_proxy_model.setSourceModel(self.view_model)
|
||||
self.table_proxy_model.setSortCaseSensitivity(False)
|
||||
self.parent.tableView.setModel(self.table_proxy_model)
|
||||
@@ -186,6 +189,9 @@ class Library:
|
||||
self.parent.libraryToolBar.searchBar.text())
|
||||
# ^^^ This isn't needed, but it forces a model update every time the
|
||||
# text in the line edit changes. So I guess it is needed.
|
||||
self.table_proxy_model.sort_table_columns(
|
||||
self.parent.tableView.horizontalHeader().sortIndicatorSection())
|
||||
self.table_proxy_model.sort_table_columns()
|
||||
|
||||
# Item proxy model
|
||||
self.item_proxy_model.invalidateFilter()
|
||||
@@ -197,7 +203,8 @@ class Library:
|
||||
self.parent.libraryToolBar.searchBar.text())
|
||||
|
||||
self.parent.statusMessage.setText(
|
||||
str(self.item_proxy_model.rowCount()) + ' books')
|
||||
str(self.item_proxy_model.rowCount()) +
|
||||
self._translate('Library', ' books'))
|
||||
|
||||
# TODO
|
||||
# Allow sorting by type
|
||||
|
@@ -86,7 +86,7 @@ class MetadataUI(QtWidgets.QDialog, metadata.Ui_Dialog):
|
||||
graphics_scene.addPixmap(image_pixmap)
|
||||
self.coverView.setScene(graphics_scene)
|
||||
|
||||
def ok_pressed(self, event):
|
||||
def ok_pressed(self, event=None):
|
||||
book_item = self.parent.lib_ref.view_model.item(self.book_index.row())
|
||||
|
||||
title = self.titleLine.text()
|
||||
@@ -126,7 +126,7 @@ class MetadataUI(QtWidgets.QDialog, metadata.Ui_Dialog):
|
||||
database.DatabaseFunctions(self.database_path).modify_metadata(
|
||||
database_dict, book_hash)
|
||||
|
||||
def cancel_pressed(self, event):
|
||||
def cancel_pressed(self, event=None):
|
||||
self.hide()
|
||||
|
||||
def generate_display_position(self, mouse_cursor_position):
|
||||
|
@@ -16,7 +16,6 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import pickle
|
||||
import pathlib
|
||||
|
||||
from PyQt5 import QtCore, QtWidgets
|
||||
@@ -66,9 +65,9 @@ class ItemProxyModel(QtCore.QSortFilterProxyModel):
|
||||
|
||||
|
||||
class TableProxyModel(QtCore.QSortFilterProxyModel):
|
||||
def __init__(self, temp_dir, parent=None):
|
||||
def __init__(self, temp_dir, tableViewHeader, parent=None):
|
||||
super(TableProxyModel, self).__init__(parent)
|
||||
|
||||
self.tableViewHeader = tableViewHeader
|
||||
self._translate = QtCore.QCoreApplication.translate
|
||||
|
||||
title_string = self._translate('TableProxyModel', 'Title')
|
||||
@@ -98,7 +97,11 @@ class TableProxyModel(QtCore.QSortFilterProxyModel):
|
||||
|
||||
def headerData(self, column, orientation, role):
|
||||
if role == QtCore.Qt.DisplayRole:
|
||||
return self.header_data[column]
|
||||
try:
|
||||
return self.header_data[column]
|
||||
except IndexError:
|
||||
print('Table proxy model: Can\'t find header for column', column)
|
||||
return 'IndexError'
|
||||
|
||||
def flags(self, index):
|
||||
# Tag editing will take place by way of a right click menu
|
||||
@@ -153,11 +156,8 @@ class TableProxyModel(QtCore.QSortFilterProxyModel):
|
||||
return QtCore.QVariant()
|
||||
|
||||
if index.column() == 4:
|
||||
last_accessed_time = item.data(self.role_dictionary[index.column()])
|
||||
if last_accessed_time:
|
||||
last_accessed = last_accessed_time
|
||||
if not isinstance(last_accessed_time, QtCore.QDateTime):
|
||||
last_accessed = pickle.loads(last_accessed_time)
|
||||
last_accessed = item.data(self.role_dictionary[index.column()])
|
||||
if last_accessed:
|
||||
right_now = QtCore.QDateTime().currentDateTime()
|
||||
time_diff = last_accessed.msecsTo(right_now)
|
||||
return self.time_convert(time_diff // 1000)
|
||||
@@ -174,10 +174,13 @@ class TableProxyModel(QtCore.QSortFilterProxyModel):
|
||||
output = self.common_functions.filterAcceptsRow(row, parent)
|
||||
return output
|
||||
|
||||
def sort_table_columns(self, column):
|
||||
sorting_order = self.sender().sortIndicatorOrder()
|
||||
def sort_table_columns(self, column=None):
|
||||
column = self.tableViewHeader.sortIndicatorSection()
|
||||
sorting_order = self.tableViewHeader.sortIndicatorOrder()
|
||||
|
||||
self.sort(0, sorting_order)
|
||||
self.setSortRole(self.role_dictionary[column])
|
||||
if column != 0:
|
||||
self.setSortRole(self.role_dictionary[column])
|
||||
|
||||
def time_convert(self, seconds):
|
||||
seconds = int(seconds)
|
||||
|
@@ -21,6 +21,7 @@
|
||||
|
||||
import os
|
||||
import copy
|
||||
import pathlib
|
||||
from PyQt5 import QtWidgets, QtCore
|
||||
|
||||
from lector import database
|
||||
@@ -43,9 +44,9 @@ class SettingsUI(QtWidgets.QDialog, settingswindow.Ui_Dialog):
|
||||
self.move(self.parent.settings['settings_dialog_position'])
|
||||
|
||||
self.aboutBox.setVisible(False)
|
||||
application_root = os.sep.join(
|
||||
os.path.realpath(__file__).rsplit('/')[:-2])
|
||||
aboutfile_path = os.path.join(application_root, 'resources', 'about.html')
|
||||
install_dir = os.path.realpath(__file__)
|
||||
install_dir = pathlib.Path(install_dir).parents[1]
|
||||
aboutfile_path = os.path.join(install_dir, 'resources', 'about.html')
|
||||
with open(aboutfile_path) as about_html:
|
||||
self.aboutBox.setHtml(about_html.read())
|
||||
|
||||
|
@@ -117,18 +117,22 @@ class BookSorter:
|
||||
def database_entry_for_book(self, file_hash):
|
||||
database_return = database.DatabaseFunctions(
|
||||
self.database_path).fetch_data(
|
||||
('Position', 'Bookmarks'),
|
||||
('Title', 'Author', 'Year', 'ISBN', 'Tags', 'Position', 'Bookmarks'),
|
||||
'books',
|
||||
{'Hash': file_hash},
|
||||
'EQUALS')[0]
|
||||
|
||||
book_data = []
|
||||
for i in database_return:
|
||||
# All of these values are pickled and stored
|
||||
if i:
|
||||
book_data.append(pickle.loads(i))
|
||||
|
||||
for count, i in enumerate(database_return):
|
||||
if count in (5, 6):
|
||||
if i:
|
||||
book_data.append(pickle.loads(i))
|
||||
else:
|
||||
book_data.append(None)
|
||||
else:
|
||||
book_data.append(None)
|
||||
book_data.append(i)
|
||||
|
||||
return book_data
|
||||
|
||||
def read_book(self, filename):
|
||||
@@ -170,37 +174,29 @@ class BookSorter:
|
||||
book_ref.read_book()
|
||||
if book_ref.book:
|
||||
|
||||
title = book_ref.get_title()
|
||||
|
||||
author = book_ref.get_author()
|
||||
if not author:
|
||||
author = 'Unknown'
|
||||
|
||||
try:
|
||||
year = int(book_ref.get_year())
|
||||
except (TypeError, ValueError):
|
||||
year = 9999
|
||||
|
||||
isbn = book_ref.get_isbn()
|
||||
|
||||
tags = None
|
||||
if self.auto_tags:
|
||||
tags = book_ref.get_tags()
|
||||
|
||||
this_book = {}
|
||||
this_book[file_md5] = {
|
||||
'title': title,
|
||||
'author': author,
|
||||
'year': year,
|
||||
'isbn': isbn,
|
||||
'hash': file_md5,
|
||||
'path': filename,
|
||||
'tags': tags}
|
||||
'path': filename}
|
||||
|
||||
# Different modes require different values
|
||||
if self.mode == 'addition':
|
||||
# Reduce the size of the incoming image
|
||||
# if one is found
|
||||
title = book_ref.get_title()
|
||||
|
||||
author = book_ref.get_author()
|
||||
if not author:
|
||||
author = 'Unknown'
|
||||
|
||||
year = book_ref.get_year()
|
||||
|
||||
isbn = book_ref.get_isbn()
|
||||
|
||||
tags = None
|
||||
if self.auto_tags:
|
||||
tags = book_ref.get_tags()
|
||||
|
||||
cover_image_raw = book_ref.get_cover_image()
|
||||
if cover_image_raw:
|
||||
@@ -226,14 +222,25 @@ class BookSorter:
|
||||
content = [('Invalid', 'Something went horribly wrong')]
|
||||
|
||||
book_data = self.database_entry_for_book(file_md5)
|
||||
position = book_data[0]
|
||||
bookmarks = book_data[1]
|
||||
title = book_data[0]
|
||||
author = book_data[1]
|
||||
year = book_data[2]
|
||||
isbn = book_data[3]
|
||||
tags = book_data[4]
|
||||
position = book_data[5]
|
||||
bookmarks = book_data[6]
|
||||
|
||||
this_book[file_md5]['position'] = position
|
||||
this_book[file_md5]['bookmarks'] = bookmarks
|
||||
this_book[file_md5]['content'] = content
|
||||
this_book[file_md5]['images_only'] = images_only
|
||||
|
||||
this_book[file_md5]['title'] = title
|
||||
this_book[file_md5]['author'] = author
|
||||
this_book[file_md5]['year'] = year
|
||||
this_book[file_md5]['isbn'] = isbn
|
||||
this_book[file_md5]['tags'] = tags
|
||||
|
||||
return this_book
|
||||
|
||||
def read_progress(self):
|
||||
|
@@ -451,6 +451,10 @@ class FixedLineEdit(QtWidgets.QLineEdit):
|
||||
def sizeHint(self):
|
||||
return QtCore.QSize(400, 22)
|
||||
|
||||
def keyReleaseEvent(self, event):
|
||||
if event.key() == QtCore.Qt.Key_Escape:
|
||||
self.clear()
|
||||
|
||||
|
||||
class FixedPushButton(QtWidgets.QPushButton):
|
||||
def __init__(self, parent=None):
|
||||
|
@@ -282,20 +282,25 @@
|
||||
<context>
|
||||
<name>Library</name>
|
||||
<message>
|
||||
<location filename="../../lector/library.py" line="124"/>
|
||||
<location filename="../../lector/library.py" line="126"/>
|
||||
<source>Author</source>
|
||||
<translation>Autor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/library.py" line="125"/>
|
||||
<location filename="../../lector/library.py" line="127"/>
|
||||
<source>Year</source>
|
||||
<translation>Jahr</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/library.py" line="260"/>
|
||||
<location filename="../../lector/library.py" line="267"/>
|
||||
<source>manually added</source>
|
||||
<translation>Manuell hinzugefügt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/library.py" line="205"/>
|
||||
<source> books</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>LibraryToolBar</name>
|
||||
@@ -371,62 +376,62 @@
|
||||
<translation>Biblothek scannen </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="458"/>
|
||||
<location filename="../../lector/__main__.py" line="459"/>
|
||||
<source>Add books to database</source>
|
||||
<translation>Bücher zur Datenbank hinzufügen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="459"/>
|
||||
<location filename="../../lector/__main__.py" line="460"/>
|
||||
<source>eBooks</source>
|
||||
<translation>eBooks</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="472"/>
|
||||
<location filename="../../lector/__main__.py" line="473"/>
|
||||
<source>Adding books...</source>
|
||||
<translation>Bücher werden hinzugefügt...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="540"/>
|
||||
<location filename="../../lector/__main__.py" line="536"/>
|
||||
<source>Confirm deletion</source>
|
||||
<translation>Löschen bestätigen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="549"/>
|
||||
<location filename="../../lector/__main__.py" line="545"/>
|
||||
<source>Save changes and start library scan</source>
|
||||
<translation>Änderungen speichern & Bibliotheksscan starten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="596"/>
|
||||
<location filename="../../lector/__main__.py" line="593"/>
|
||||
<source> Books</source>
|
||||
<translation>Bücher</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="1023"/>
|
||||
<location filename="../../lector/__main__.py" line="1020"/>
|
||||
<source>Start reading</source>
|
||||
<translation>Lesen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="1029"/>
|
||||
<location filename="../../lector/__main__.py" line="1026"/>
|
||||
<source>Edit</source>
|
||||
<translation>Bearbeiten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="1033"/>
|
||||
<location filename="../../lector/__main__.py" line="1030"/>
|
||||
<source>Delete</source>
|
||||
<translation>Löschen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="1036"/>
|
||||
<location filename="../../lector/__main__.py" line="1033"/>
|
||||
<source>Mark read</source>
|
||||
<translation>Als gelesen kennzeichnen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="1039"/>
|
||||
<location filename="../../lector/__main__.py" line="1036"/>
|
||||
<source>Mark unread</source>
|
||||
<translation>Als ungelesen kennzeichnen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="1138"/>
|
||||
<location filename="../../lector/__main__.py" line="1135"/>
|
||||
<source>Manually Added</source>
|
||||
<translation>Manuell hinzugefügt</translation>
|
||||
</message>
|
||||
@@ -440,6 +445,11 @@
|
||||
<source>Images</source>
|
||||
<translation>Bilder</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="555"/>
|
||||
<source> books</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MetadataUI</name>
|
||||
@@ -526,37 +536,37 @@
|
||||
<context>
|
||||
<name>SettingsUI</name>
|
||||
<message>
|
||||
<location filename="../../lector/settingsdialog.py" line="57"/>
|
||||
<location filename="../../lector/settingsdialog.py" line="58"/>
|
||||
<source>English</source>
|
||||
<translation>Englisch</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/settingsdialog.py" line="58"/>
|
||||
<location filename="../../lector/settingsdialog.py" line="59"/>
|
||||
<source>Spanish</source>
|
||||
<translation>Spanisch</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/settingsdialog.py" line="59"/>
|
||||
<location filename="../../lector/settingsdialog.py" line="60"/>
|
||||
<source>Hindi</source>
|
||||
<translation>Hindi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/settingsdialog.py" line="72"/>
|
||||
<location filename="../../lector/settingsdialog.py" line="73"/>
|
||||
<source>Save changes and start library scan</source>
|
||||
<translation>Änderungen speichern & Bibliotheksscan starten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/settingsdialog.py" line="215"/>
|
||||
<location filename="../../lector/settingsdialog.py" line="216"/>
|
||||
<source>Library scan in progress...</source>
|
||||
<translation>Bibliotheksscan in Arbeit...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/settingsdialog.py" line="219"/>
|
||||
<location filename="../../lector/settingsdialog.py" line="220"/>
|
||||
<source>Checking library folders</source>
|
||||
<translation>Bibliotheksverzeichnisse werden überprüft</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/settingsdialog.py" line="234"/>
|
||||
<location filename="../../lector/settingsdialog.py" line="235"/>
|
||||
<source>Parsing files</source>
|
||||
<translation>Dateien werden analysiert</translation>
|
||||
</message>
|
||||
@@ -607,7 +617,7 @@
|
||||
<translation>Zuletzt gelesen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/models.py" line="78"/>
|
||||
<location filename="../../lector/models.py" line="77"/>
|
||||
<source>Tags</source>
|
||||
<translation>Tags</translation>
|
||||
</message>
|
||||
|
@@ -282,20 +282,25 @@
|
||||
<context>
|
||||
<name>Library</name>
|
||||
<message>
|
||||
<location filename="../../lector/library.py" line="124"/>
|
||||
<location filename="../../lector/library.py" line="126"/>
|
||||
<source>Author</source>
|
||||
<translation>Autor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/library.py" line="125"/>
|
||||
<location filename="../../lector/library.py" line="127"/>
|
||||
<source>Year</source>
|
||||
<translation>Año</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/library.py" line="260"/>
|
||||
<location filename="../../lector/library.py" line="267"/>
|
||||
<source>manually added</source>
|
||||
<translation>añadido manualmente</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/library.py" line="205"/>
|
||||
<source> books</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>LibraryToolBar</name>
|
||||
@@ -371,62 +376,62 @@
|
||||
<translation>Explorar la biblioteca</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="458"/>
|
||||
<location filename="../../lector/__main__.py" line="459"/>
|
||||
<source>Add books to database</source>
|
||||
<translation>Añadir libros a la base de datos</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="459"/>
|
||||
<location filename="../../lector/__main__.py" line="460"/>
|
||||
<source>eBooks</source>
|
||||
<translation>Libros electrónicos</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="472"/>
|
||||
<location filename="../../lector/__main__.py" line="473"/>
|
||||
<source>Adding books...</source>
|
||||
<translation>Añadiendo los libros…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="540"/>
|
||||
<location filename="../../lector/__main__.py" line="536"/>
|
||||
<source>Confirm deletion</source>
|
||||
<translation>Confirmar la eliminación</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="549"/>
|
||||
<location filename="../../lector/__main__.py" line="545"/>
|
||||
<source>Save changes and start library scan</source>
|
||||
<translation>Guardar cambios e iniciar exploración de biblioteca</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="596"/>
|
||||
<location filename="../../lector/__main__.py" line="593"/>
|
||||
<source> Books</source>
|
||||
<translation> Libros</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="1023"/>
|
||||
<location filename="../../lector/__main__.py" line="1020"/>
|
||||
<source>Start reading</source>
|
||||
<translation>Comenzar a leer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="1029"/>
|
||||
<location filename="../../lector/__main__.py" line="1026"/>
|
||||
<source>Edit</source>
|
||||
<translation>Editar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="1033"/>
|
||||
<location filename="../../lector/__main__.py" line="1030"/>
|
||||
<source>Delete</source>
|
||||
<translation>Eliminar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="1036"/>
|
||||
<location filename="../../lector/__main__.py" line="1033"/>
|
||||
<source>Mark read</source>
|
||||
<translation>Marcar como leído</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="1039"/>
|
||||
<location filename="../../lector/__main__.py" line="1036"/>
|
||||
<source>Mark unread</source>
|
||||
<translation>Marcar como no leído</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="1138"/>
|
||||
<location filename="../../lector/__main__.py" line="1135"/>
|
||||
<source>Manually Added</source>
|
||||
<translation>Añadido manualmente</translation>
|
||||
</message>
|
||||
@@ -440,6 +445,11 @@
|
||||
<source>Images</source>
|
||||
<translation type="unfinished">Imágenes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="555"/>
|
||||
<source> books</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MetadataUI</name>
|
||||
@@ -536,37 +546,37 @@
|
||||
<context>
|
||||
<name>SettingsUI</name>
|
||||
<message>
|
||||
<location filename="../../lector/settingsdialog.py" line="57"/>
|
||||
<location filename="../../lector/settingsdialog.py" line="58"/>
|
||||
<source>English</source>
|
||||
<translation>Inglés</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/settingsdialog.py" line="58"/>
|
||||
<location filename="../../lector/settingsdialog.py" line="59"/>
|
||||
<source>Spanish</source>
|
||||
<translation>Español</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/settingsdialog.py" line="59"/>
|
||||
<location filename="../../lector/settingsdialog.py" line="60"/>
|
||||
<source>Hindi</source>
|
||||
<translation>Hindi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/settingsdialog.py" line="72"/>
|
||||
<location filename="../../lector/settingsdialog.py" line="73"/>
|
||||
<source>Save changes and start library scan</source>
|
||||
<translation>Guardar cambios e iniciar exploración de biblioteca</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/settingsdialog.py" line="215"/>
|
||||
<location filename="../../lector/settingsdialog.py" line="216"/>
|
||||
<source>Library scan in progress...</source>
|
||||
<translation>Se está explorando la biblioteca…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/settingsdialog.py" line="219"/>
|
||||
<location filename="../../lector/settingsdialog.py" line="220"/>
|
||||
<source>Checking library folders</source>
|
||||
<translation>Comprobando las carpetas de la biblioteca</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/settingsdialog.py" line="234"/>
|
||||
<location filename="../../lector/settingsdialog.py" line="235"/>
|
||||
<source>Parsing files</source>
|
||||
<translation>Procesando los archivos</translation>
|
||||
</message>
|
||||
@@ -617,7 +627,7 @@
|
||||
<translation>Última lectura</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/models.py" line="78"/>
|
||||
<location filename="../../lector/models.py" line="77"/>
|
||||
<source>Tags</source>
|
||||
<translation>Etiquetas</translation>
|
||||
</message>
|
||||
|
@@ -282,20 +282,25 @@
|
||||
<context>
|
||||
<name>Library</name>
|
||||
<message>
|
||||
<location filename="../../lector/library.py" line="124"/>
|
||||
<location filename="../../lector/library.py" line="126"/>
|
||||
<source>Author</source>
|
||||
<translation>Auteur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/library.py" line="125"/>
|
||||
<location filename="../../lector/library.py" line="127"/>
|
||||
<source>Year</source>
|
||||
<translation>Année</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/library.py" line="260"/>
|
||||
<location filename="../../lector/library.py" line="267"/>
|
||||
<source>manually added</source>
|
||||
<translation>manuellement ajouté</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/library.py" line="205"/>
|
||||
<source> books</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>LibraryToolBar</name>
|
||||
@@ -371,62 +376,62 @@
|
||||
<translation>Analyser la bibliothèque</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="458"/>
|
||||
<location filename="../../lector/__main__.py" line="459"/>
|
||||
<source>Add books to database</source>
|
||||
<translation>Ajouter des livres à la base de données</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="459"/>
|
||||
<location filename="../../lector/__main__.py" line="460"/>
|
||||
<source>eBooks</source>
|
||||
<translation>eBooks</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="472"/>
|
||||
<location filename="../../lector/__main__.py" line="473"/>
|
||||
<source>Adding books...</source>
|
||||
<translation>Ajout des livres…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="540"/>
|
||||
<location filename="../../lector/__main__.py" line="536"/>
|
||||
<source>Confirm deletion</source>
|
||||
<translation>Confirmez la suppression</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="549"/>
|
||||
<location filename="../../lector/__main__.py" line="545"/>
|
||||
<source>Save changes and start library scan</source>
|
||||
<translation>Enregistrer les modifications et démarrer l'analyse de la bibliothèque</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="596"/>
|
||||
<location filename="../../lector/__main__.py" line="593"/>
|
||||
<source> Books</source>
|
||||
<translation> Livres</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="1023"/>
|
||||
<location filename="../../lector/__main__.py" line="1020"/>
|
||||
<source>Start reading</source>
|
||||
<translation>Commencer à lire</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="1029"/>
|
||||
<location filename="../../lector/__main__.py" line="1026"/>
|
||||
<source>Edit</source>
|
||||
<translation>Modifier</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="1033"/>
|
||||
<location filename="../../lector/__main__.py" line="1030"/>
|
||||
<source>Delete</source>
|
||||
<translation>Supprimer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="1036"/>
|
||||
<location filename="../../lector/__main__.py" line="1033"/>
|
||||
<source>Mark read</source>
|
||||
<translation>Marquer comme lu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="1039"/>
|
||||
<location filename="../../lector/__main__.py" line="1036"/>
|
||||
<source>Mark unread</source>
|
||||
<translation>Marquer comme non-lu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="1138"/>
|
||||
<location filename="../../lector/__main__.py" line="1135"/>
|
||||
<source>Manually Added</source>
|
||||
<translation>Manuellement ajouté</translation>
|
||||
</message>
|
||||
@@ -440,6 +445,11 @@
|
||||
<source>Images</source>
|
||||
<translation type="unfinished">Images</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="555"/>
|
||||
<source> books</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MetadataUI</name>
|
||||
@@ -526,37 +536,37 @@
|
||||
<context>
|
||||
<name>SettingsUI</name>
|
||||
<message>
|
||||
<location filename="../../lector/settingsdialog.py" line="57"/>
|
||||
<location filename="../../lector/settingsdialog.py" line="58"/>
|
||||
<source>English</source>
|
||||
<translation>Anglais</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/settingsdialog.py" line="58"/>
|
||||
<location filename="../../lector/settingsdialog.py" line="59"/>
|
||||
<source>Spanish</source>
|
||||
<translation>Espagnol</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/settingsdialog.py" line="59"/>
|
||||
<location filename="../../lector/settingsdialog.py" line="60"/>
|
||||
<source>Hindi</source>
|
||||
<translation>Hindi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/settingsdialog.py" line="72"/>
|
||||
<location filename="../../lector/settingsdialog.py" line="73"/>
|
||||
<source>Save changes and start library scan</source>
|
||||
<translation>Enregistrer les modifications et démarrer l'analyse de la bibliothèque</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/settingsdialog.py" line="215"/>
|
||||
<location filename="../../lector/settingsdialog.py" line="216"/>
|
||||
<source>Library scan in progress...</source>
|
||||
<translation>Analyse de la bibliothèque en cours…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/settingsdialog.py" line="219"/>
|
||||
<location filename="../../lector/settingsdialog.py" line="220"/>
|
||||
<source>Checking library folders</source>
|
||||
<translation>Vérification des dossiers de la bibliothèque</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/settingsdialog.py" line="234"/>
|
||||
<location filename="../../lector/settingsdialog.py" line="235"/>
|
||||
<source>Parsing files</source>
|
||||
<translation>Lecture des fichiers</translation>
|
||||
</message>
|
||||
@@ -607,7 +617,7 @@
|
||||
<translation>Lu pour la dernière fois</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/models.py" line="78"/>
|
||||
<location filename="../../lector/models.py" line="77"/>
|
||||
<source>Tags</source>
|
||||
<translation>Étiquettes</translation>
|
||||
</message>
|
||||
|
@@ -282,20 +282,25 @@
|
||||
<context>
|
||||
<name>Library</name>
|
||||
<message>
|
||||
<location filename="../../lector/library.py" line="124"/>
|
||||
<location filename="../../lector/library.py" line="126"/>
|
||||
<source>Author</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/library.py" line="125"/>
|
||||
<location filename="../../lector/library.py" line="127"/>
|
||||
<source>Year</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/library.py" line="260"/>
|
||||
<location filename="../../lector/library.py" line="267"/>
|
||||
<source>manually added</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/library.py" line="205"/>
|
||||
<source> books</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>LibraryToolBar</name>
|
||||
@@ -371,62 +376,62 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="458"/>
|
||||
<location filename="../../lector/__main__.py" line="459"/>
|
||||
<source>Add books to database</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="459"/>
|
||||
<location filename="../../lector/__main__.py" line="460"/>
|
||||
<source>eBooks</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="472"/>
|
||||
<location filename="../../lector/__main__.py" line="473"/>
|
||||
<source>Adding books...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="540"/>
|
||||
<location filename="../../lector/__main__.py" line="536"/>
|
||||
<source>Confirm deletion</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="549"/>
|
||||
<location filename="../../lector/__main__.py" line="545"/>
|
||||
<source>Save changes and start library scan</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="596"/>
|
||||
<location filename="../../lector/__main__.py" line="593"/>
|
||||
<source> Books</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="1023"/>
|
||||
<location filename="../../lector/__main__.py" line="1020"/>
|
||||
<source>Start reading</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="1029"/>
|
||||
<location filename="../../lector/__main__.py" line="1026"/>
|
||||
<source>Edit</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="1033"/>
|
||||
<location filename="../../lector/__main__.py" line="1030"/>
|
||||
<source>Delete</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="1036"/>
|
||||
<location filename="../../lector/__main__.py" line="1033"/>
|
||||
<source>Mark read</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="1039"/>
|
||||
<location filename="../../lector/__main__.py" line="1036"/>
|
||||
<source>Mark unread</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="1138"/>
|
||||
<location filename="../../lector/__main__.py" line="1135"/>
|
||||
<source>Manually Added</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -440,6 +445,11 @@
|
||||
<source>Images</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/__main__.py" line="555"/>
|
||||
<source> books</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MetadataUI</name>
|
||||
@@ -526,37 +536,37 @@
|
||||
<context>
|
||||
<name>SettingsUI</name>
|
||||
<message>
|
||||
<location filename="../../lector/settingsdialog.py" line="57"/>
|
||||
<location filename="../../lector/settingsdialog.py" line="58"/>
|
||||
<source>English</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/settingsdialog.py" line="58"/>
|
||||
<location filename="../../lector/settingsdialog.py" line="59"/>
|
||||
<source>Spanish</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/settingsdialog.py" line="59"/>
|
||||
<location filename="../../lector/settingsdialog.py" line="60"/>
|
||||
<source>Hindi</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/settingsdialog.py" line="72"/>
|
||||
<location filename="../../lector/settingsdialog.py" line="73"/>
|
||||
<source>Save changes and start library scan</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/settingsdialog.py" line="215"/>
|
||||
<location filename="../../lector/settingsdialog.py" line="216"/>
|
||||
<source>Library scan in progress...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/settingsdialog.py" line="219"/>
|
||||
<location filename="../../lector/settingsdialog.py" line="220"/>
|
||||
<source>Checking library folders</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/settingsdialog.py" line="234"/>
|
||||
<location filename="../../lector/settingsdialog.py" line="235"/>
|
||||
<source>Parsing files</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -607,7 +617,7 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../lector/models.py" line="78"/>
|
||||
<location filename="../../lector/models.py" line="77"/>
|
||||
<source>Tags</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
Reference in New Issue
Block a user