Multiple fixes

Update translations
This commit is contained in:
BasioMeusPuga
2018-03-20 13:24:17 +05:30
parent 64a96d816d
commit 0d8c2b6648
12 changed files with 208 additions and 152 deletions

5
TODO
View File

@@ -72,10 +72,7 @@ TODO
Other: Other:
✓ Define every widget in code ✓ Define every widget in code
Bugs: Bugs:
If there are files open and the database is deleted, TypeErrors result Slider position change might be acting up
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
Secondary: Secondary:
Annotations Annotations

View File

@@ -255,7 +255,8 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
self.tableView.horizontalHeader().sectionClicked.connect( self.tableView.horizontalHeader().sectionClicked.connect(
self.lib_ref.table_proxy_model.sort_table_columns) self.lib_ref.table_proxy_model.sort_table_columns)
self.tableView.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) 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 # Keyboard shortcuts
self.ksDistractionFree = QtWidgets.QShortcut(QtGui.QKeySequence('Ctrl+D'), self) self.ksDistractionFree = QtWidgets.QShortcut(QtGui.QKeySequence('Ctrl+D'), self)
@@ -491,11 +492,6 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
return selected_indexes return selected_indexes
def delete_books(self, selected_indexes=None): 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: if not selected_indexes:
# Get a list of QItemSelection objects # Get a list of QItemSelection objects
# What we're interested in is the indexes()[0] in each of them # 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.lib_ref.generate_library_tags()
self.statusMessage.setText( 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']: if not self.settings['perform_culling']:
self.load_all_covers() self.load_all_covers()

View File

@@ -77,6 +77,8 @@ class Library:
year = i[2] year = i[2]
path = i[4] path = i[4]
last_accessed = i[9] last_accessed = i[9]
if last_accessed and not isinstance(last_accessed, QtCore.QDateTime):
last_accessed = pickle.loads(last_accessed)
tags = i[7] tags = i[7]
if isinstance(tags, list): # When files are added for the first time 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.setIconSize(s)
self.parent.listView.setModel(self.item_proxy_model) 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.setSourceModel(self.view_model)
self.table_proxy_model.setSortCaseSensitivity(False) self.table_proxy_model.setSortCaseSensitivity(False)
self.parent.tableView.setModel(self.table_proxy_model) self.parent.tableView.setModel(self.table_proxy_model)
@@ -186,6 +189,9 @@ class Library:
self.parent.libraryToolBar.searchBar.text()) self.parent.libraryToolBar.searchBar.text())
# ^^^ This isn't needed, but it forces a model update every time the # ^^^ 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. # 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 # Item proxy model
self.item_proxy_model.invalidateFilter() self.item_proxy_model.invalidateFilter()
@@ -197,7 +203,8 @@ class Library:
self.parent.libraryToolBar.searchBar.text()) self.parent.libraryToolBar.searchBar.text())
self.parent.statusMessage.setText( self.parent.statusMessage.setText(
str(self.item_proxy_model.rowCount()) + ' books') str(self.item_proxy_model.rowCount()) +
self._translate('Library', ' books'))
# TODO # TODO
# Allow sorting by type # Allow sorting by type

View File

@@ -86,7 +86,7 @@ class MetadataUI(QtWidgets.QDialog, metadata.Ui_Dialog):
graphics_scene.addPixmap(image_pixmap) graphics_scene.addPixmap(image_pixmap)
self.coverView.setScene(graphics_scene) 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()) book_item = self.parent.lib_ref.view_model.item(self.book_index.row())
title = self.titleLine.text() title = self.titleLine.text()
@@ -126,7 +126,7 @@ class MetadataUI(QtWidgets.QDialog, metadata.Ui_Dialog):
database.DatabaseFunctions(self.database_path).modify_metadata( database.DatabaseFunctions(self.database_path).modify_metadata(
database_dict, book_hash) database_dict, book_hash)
def cancel_pressed(self, event): def cancel_pressed(self, event=None):
self.hide() self.hide()
def generate_display_position(self, mouse_cursor_position): def generate_display_position(self, mouse_cursor_position):

View File

@@ -16,7 +16,6 @@
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
import pickle
import pathlib import pathlib
from PyQt5 import QtCore, QtWidgets from PyQt5 import QtCore, QtWidgets
@@ -66,9 +65,9 @@ class ItemProxyModel(QtCore.QSortFilterProxyModel):
class TableProxyModel(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) super(TableProxyModel, self).__init__(parent)
self.tableViewHeader = tableViewHeader
self._translate = QtCore.QCoreApplication.translate self._translate = QtCore.QCoreApplication.translate
title_string = self._translate('TableProxyModel', 'Title') title_string = self._translate('TableProxyModel', 'Title')
@@ -98,7 +97,11 @@ class TableProxyModel(QtCore.QSortFilterProxyModel):
def headerData(self, column, orientation, role): def headerData(self, column, orientation, role):
if role == QtCore.Qt.DisplayRole: 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): def flags(self, index):
# Tag editing will take place by way of a right click menu # Tag editing will take place by way of a right click menu
@@ -153,11 +156,8 @@ class TableProxyModel(QtCore.QSortFilterProxyModel):
return QtCore.QVariant() return QtCore.QVariant()
if index.column() == 4: if index.column() == 4:
last_accessed_time = item.data(self.role_dictionary[index.column()]) last_accessed = item.data(self.role_dictionary[index.column()])
if last_accessed_time: if last_accessed:
last_accessed = last_accessed_time
if not isinstance(last_accessed_time, QtCore.QDateTime):
last_accessed = pickle.loads(last_accessed_time)
right_now = QtCore.QDateTime().currentDateTime() right_now = QtCore.QDateTime().currentDateTime()
time_diff = last_accessed.msecsTo(right_now) time_diff = last_accessed.msecsTo(right_now)
return self.time_convert(time_diff // 1000) return self.time_convert(time_diff // 1000)
@@ -174,10 +174,13 @@ class TableProxyModel(QtCore.QSortFilterProxyModel):
output = self.common_functions.filterAcceptsRow(row, parent) output = self.common_functions.filterAcceptsRow(row, parent)
return output return output
def sort_table_columns(self, column): def sort_table_columns(self, column=None):
sorting_order = self.sender().sortIndicatorOrder() column = self.tableViewHeader.sortIndicatorSection()
sorting_order = self.tableViewHeader.sortIndicatorOrder()
self.sort(0, sorting_order) 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): def time_convert(self, seconds):
seconds = int(seconds) seconds = int(seconds)

View File

@@ -21,6 +21,7 @@
import os import os
import copy import copy
import pathlib
from PyQt5 import QtWidgets, QtCore from PyQt5 import QtWidgets, QtCore
from lector import database from lector import database
@@ -43,9 +44,9 @@ class SettingsUI(QtWidgets.QDialog, settingswindow.Ui_Dialog):
self.move(self.parent.settings['settings_dialog_position']) self.move(self.parent.settings['settings_dialog_position'])
self.aboutBox.setVisible(False) self.aboutBox.setVisible(False)
application_root = os.sep.join( install_dir = os.path.realpath(__file__)
os.path.realpath(__file__).rsplit('/')[:-2]) install_dir = pathlib.Path(install_dir).parents[1]
aboutfile_path = os.path.join(application_root, 'resources', 'about.html') aboutfile_path = os.path.join(install_dir, 'resources', 'about.html')
with open(aboutfile_path) as about_html: with open(aboutfile_path) as about_html:
self.aboutBox.setHtml(about_html.read()) self.aboutBox.setHtml(about_html.read())

View File

@@ -117,18 +117,22 @@ class BookSorter:
def database_entry_for_book(self, file_hash): def database_entry_for_book(self, file_hash):
database_return = database.DatabaseFunctions( database_return = database.DatabaseFunctions(
self.database_path).fetch_data( self.database_path).fetch_data(
('Position', 'Bookmarks'), ('Title', 'Author', 'Year', 'ISBN', 'Tags', 'Position', 'Bookmarks'),
'books', 'books',
{'Hash': file_hash}, {'Hash': file_hash},
'EQUALS')[0] 'EQUALS')[0]
book_data = [] book_data = []
for i in database_return:
# All of these values are pickled and stored for count, i in enumerate(database_return):
if i: if count in (5, 6):
book_data.append(pickle.loads(i)) if i:
book_data.append(pickle.loads(i))
else:
book_data.append(None)
else: else:
book_data.append(None) book_data.append(i)
return book_data return book_data
def read_book(self, filename): def read_book(self, filename):
@@ -170,37 +174,29 @@ class BookSorter:
book_ref.read_book() book_ref.read_book()
if book_ref.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 = {}
this_book[file_md5] = { this_book[file_md5] = {
'title': title,
'author': author,
'year': year,
'isbn': isbn,
'hash': file_md5, 'hash': file_md5,
'path': filename, 'path': filename}
'tags': tags}
# Different modes require different values # Different modes require different values
if self.mode == 'addition': if self.mode == 'addition':
# Reduce the size of the incoming image # Reduce the size of the incoming image
# if one is found # 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() cover_image_raw = book_ref.get_cover_image()
if cover_image_raw: if cover_image_raw:
@@ -226,14 +222,25 @@ class BookSorter:
content = [('Invalid', 'Something went horribly wrong')] content = [('Invalid', 'Something went horribly wrong')]
book_data = self.database_entry_for_book(file_md5) book_data = self.database_entry_for_book(file_md5)
position = book_data[0] title = book_data[0]
bookmarks = book_data[1] 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]['position'] = position
this_book[file_md5]['bookmarks'] = bookmarks this_book[file_md5]['bookmarks'] = bookmarks
this_book[file_md5]['content'] = content this_book[file_md5]['content'] = content
this_book[file_md5]['images_only'] = images_only 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 return this_book
def read_progress(self): def read_progress(self):

View File

@@ -451,6 +451,10 @@ class FixedLineEdit(QtWidgets.QLineEdit):
def sizeHint(self): def sizeHint(self):
return QtCore.QSize(400, 22) return QtCore.QSize(400, 22)
def keyReleaseEvent(self, event):
if event.key() == QtCore.Qt.Key_Escape:
self.clear()
class FixedPushButton(QtWidgets.QPushButton): class FixedPushButton(QtWidgets.QPushButton):
def __init__(self, parent=None): def __init__(self, parent=None):

View File

@@ -282,20 +282,25 @@
<context> <context>
<name>Library</name> <name>Library</name>
<message> <message>
<location filename="../../lector/library.py" line="124"/> <location filename="../../lector/library.py" line="126"/>
<source>Author</source> <source>Author</source>
<translation>Autor</translation> <translation>Autor</translation>
</message> </message>
<message> <message>
<location filename="../../lector/library.py" line="125"/> <location filename="../../lector/library.py" line="127"/>
<source>Year</source> <source>Year</source>
<translation>Jahr</translation> <translation>Jahr</translation>
</message> </message>
<message> <message>
<location filename="../../lector/library.py" line="260"/> <location filename="../../lector/library.py" line="267"/>
<source>manually added</source> <source>manually added</source>
<translation>Manuell hinzugefügt</translation> <translation>Manuell hinzugefügt</translation>
</message> </message>
<message>
<location filename="../../lector/library.py" line="205"/>
<source> books</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>LibraryToolBar</name> <name>LibraryToolBar</name>
@@ -371,62 +376,62 @@
<translation>Biblothek scannen </translation> <translation>Biblothek scannen </translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="458"/> <location filename="../../lector/__main__.py" line="459"/>
<source>Add books to database</source> <source>Add books to database</source>
<translation>Bücher zur Datenbank hinzufügen</translation> <translation>Bücher zur Datenbank hinzufügen</translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="459"/> <location filename="../../lector/__main__.py" line="460"/>
<source>eBooks</source> <source>eBooks</source>
<translation>eBooks</translation> <translation>eBooks</translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="472"/> <location filename="../../lector/__main__.py" line="473"/>
<source>Adding books...</source> <source>Adding books...</source>
<translation>Bücher werden hinzugefügt...</translation> <translation>Bücher werden hinzugefügt...</translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="540"/> <location filename="../../lector/__main__.py" line="536"/>
<source>Confirm deletion</source> <source>Confirm deletion</source>
<translation>Löschen bestätigen</translation> <translation>Löschen bestätigen</translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="549"/> <location filename="../../lector/__main__.py" line="545"/>
<source>Save changes and start library scan</source> <source>Save changes and start library scan</source>
<translation>Änderungen speichern &amp; Bibliotheksscan starten</translation> <translation>Änderungen speichern &amp; Bibliotheksscan starten</translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="596"/> <location filename="../../lector/__main__.py" line="593"/>
<source> Books</source> <source> Books</source>
<translation>Bücher</translation> <translation>Bücher</translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="1023"/> <location filename="../../lector/__main__.py" line="1020"/>
<source>Start reading</source> <source>Start reading</source>
<translation>Lesen</translation> <translation>Lesen</translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="1029"/> <location filename="../../lector/__main__.py" line="1026"/>
<source>Edit</source> <source>Edit</source>
<translation>Bearbeiten</translation> <translation>Bearbeiten</translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="1033"/> <location filename="../../lector/__main__.py" line="1030"/>
<source>Delete</source> <source>Delete</source>
<translation>Löschen</translation> <translation>Löschen</translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="1036"/> <location filename="../../lector/__main__.py" line="1033"/>
<source>Mark read</source> <source>Mark read</source>
<translation>Als gelesen kennzeichnen</translation> <translation>Als gelesen kennzeichnen</translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="1039"/> <location filename="../../lector/__main__.py" line="1036"/>
<source>Mark unread</source> <source>Mark unread</source>
<translation>Als ungelesen kennzeichnen</translation> <translation>Als ungelesen kennzeichnen</translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="1138"/> <location filename="../../lector/__main__.py" line="1135"/>
<source>Manually Added</source> <source>Manually Added</source>
<translation>Manuell hinzugefügt</translation> <translation>Manuell hinzugefügt</translation>
</message> </message>
@@ -440,6 +445,11 @@
<source>Images</source> <source>Images</source>
<translation>Bilder</translation> <translation>Bilder</translation>
</message> </message>
<message>
<location filename="../../lector/__main__.py" line="555"/>
<source> books</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>MetadataUI</name> <name>MetadataUI</name>
@@ -526,37 +536,37 @@
<context> <context>
<name>SettingsUI</name> <name>SettingsUI</name>
<message> <message>
<location filename="../../lector/settingsdialog.py" line="57"/> <location filename="../../lector/settingsdialog.py" line="58"/>
<source>English</source> <source>English</source>
<translation>Englisch</translation> <translation>Englisch</translation>
</message> </message>
<message> <message>
<location filename="../../lector/settingsdialog.py" line="58"/> <location filename="../../lector/settingsdialog.py" line="59"/>
<source>Spanish</source> <source>Spanish</source>
<translation>Spanisch</translation> <translation>Spanisch</translation>
</message> </message>
<message> <message>
<location filename="../../lector/settingsdialog.py" line="59"/> <location filename="../../lector/settingsdialog.py" line="60"/>
<source>Hindi</source> <source>Hindi</source>
<translation>Hindi</translation> <translation>Hindi</translation>
</message> </message>
<message> <message>
<location filename="../../lector/settingsdialog.py" line="72"/> <location filename="../../lector/settingsdialog.py" line="73"/>
<source>Save changes and start library scan</source> <source>Save changes and start library scan</source>
<translation>Änderungen speichern &amp; Bibliotheksscan starten</translation> <translation>Änderungen speichern &amp; Bibliotheksscan starten</translation>
</message> </message>
<message> <message>
<location filename="../../lector/settingsdialog.py" line="215"/> <location filename="../../lector/settingsdialog.py" line="216"/>
<source>Library scan in progress...</source> <source>Library scan in progress...</source>
<translation>Bibliotheksscan in Arbeit...</translation> <translation>Bibliotheksscan in Arbeit...</translation>
</message> </message>
<message> <message>
<location filename="../../lector/settingsdialog.py" line="219"/> <location filename="../../lector/settingsdialog.py" line="220"/>
<source>Checking library folders</source> <source>Checking library folders</source>
<translation>Bibliotheksverzeichnisse werden überprüft</translation> <translation>Bibliotheksverzeichnisse werden überprüft</translation>
</message> </message>
<message> <message>
<location filename="../../lector/settingsdialog.py" line="234"/> <location filename="../../lector/settingsdialog.py" line="235"/>
<source>Parsing files</source> <source>Parsing files</source>
<translation>Dateien werden analysiert</translation> <translation>Dateien werden analysiert</translation>
</message> </message>
@@ -607,7 +617,7 @@
<translation>Zuletzt gelesen</translation> <translation>Zuletzt gelesen</translation>
</message> </message>
<message> <message>
<location filename="../../lector/models.py" line="78"/> <location filename="../../lector/models.py" line="77"/>
<source>Tags</source> <source>Tags</source>
<translation>Tags</translation> <translation>Tags</translation>
</message> </message>

View File

@@ -282,20 +282,25 @@
<context> <context>
<name>Library</name> <name>Library</name>
<message> <message>
<location filename="../../lector/library.py" line="124"/> <location filename="../../lector/library.py" line="126"/>
<source>Author</source> <source>Author</source>
<translation>Autor</translation> <translation>Autor</translation>
</message> </message>
<message> <message>
<location filename="../../lector/library.py" line="125"/> <location filename="../../lector/library.py" line="127"/>
<source>Year</source> <source>Year</source>
<translation>Año</translation> <translation>Año</translation>
</message> </message>
<message> <message>
<location filename="../../lector/library.py" line="260"/> <location filename="../../lector/library.py" line="267"/>
<source>manually added</source> <source>manually added</source>
<translation>añadido manualmente</translation> <translation>añadido manualmente</translation>
</message> </message>
<message>
<location filename="../../lector/library.py" line="205"/>
<source> books</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>LibraryToolBar</name> <name>LibraryToolBar</name>
@@ -371,62 +376,62 @@
<translation>Explorar la biblioteca</translation> <translation>Explorar la biblioteca</translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="458"/> <location filename="../../lector/__main__.py" line="459"/>
<source>Add books to database</source> <source>Add books to database</source>
<translation>Añadir libros a la base de datos</translation> <translation>Añadir libros a la base de datos</translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="459"/> <location filename="../../lector/__main__.py" line="460"/>
<source>eBooks</source> <source>eBooks</source>
<translation>Libros electrónicos</translation> <translation>Libros electrónicos</translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="472"/> <location filename="../../lector/__main__.py" line="473"/>
<source>Adding books...</source> <source>Adding books...</source>
<translation>Añadiendo los libros</translation> <translation>Añadiendo los libros</translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="540"/> <location filename="../../lector/__main__.py" line="536"/>
<source>Confirm deletion</source> <source>Confirm deletion</source>
<translation>Confirmar la eliminación</translation> <translation>Confirmar la eliminación</translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="549"/> <location filename="../../lector/__main__.py" line="545"/>
<source>Save changes and start library scan</source> <source>Save changes and start library scan</source>
<translation>Guardar cambios e iniciar exploración de biblioteca</translation> <translation>Guardar cambios e iniciar exploración de biblioteca</translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="596"/> <location filename="../../lector/__main__.py" line="593"/>
<source> Books</source> <source> Books</source>
<translation> Libros</translation> <translation> Libros</translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="1023"/> <location filename="../../lector/__main__.py" line="1020"/>
<source>Start reading</source> <source>Start reading</source>
<translation>Comenzar a leer</translation> <translation>Comenzar a leer</translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="1029"/> <location filename="../../lector/__main__.py" line="1026"/>
<source>Edit</source> <source>Edit</source>
<translation>Editar</translation> <translation>Editar</translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="1033"/> <location filename="../../lector/__main__.py" line="1030"/>
<source>Delete</source> <source>Delete</source>
<translation>Eliminar</translation> <translation>Eliminar</translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="1036"/> <location filename="../../lector/__main__.py" line="1033"/>
<source>Mark read</source> <source>Mark read</source>
<translation>Marcar como leído</translation> <translation>Marcar como leído</translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="1039"/> <location filename="../../lector/__main__.py" line="1036"/>
<source>Mark unread</source> <source>Mark unread</source>
<translation>Marcar como no leído</translation> <translation>Marcar como no leído</translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="1138"/> <location filename="../../lector/__main__.py" line="1135"/>
<source>Manually Added</source> <source>Manually Added</source>
<translation>Añadido manualmente</translation> <translation>Añadido manualmente</translation>
</message> </message>
@@ -440,6 +445,11 @@
<source>Images</source> <source>Images</source>
<translation type="unfinished">Imágenes</translation> <translation type="unfinished">Imágenes</translation>
</message> </message>
<message>
<location filename="../../lector/__main__.py" line="555"/>
<source> books</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>MetadataUI</name> <name>MetadataUI</name>
@@ -536,37 +546,37 @@
<context> <context>
<name>SettingsUI</name> <name>SettingsUI</name>
<message> <message>
<location filename="../../lector/settingsdialog.py" line="57"/> <location filename="../../lector/settingsdialog.py" line="58"/>
<source>English</source> <source>English</source>
<translation>Inglés</translation> <translation>Inglés</translation>
</message> </message>
<message> <message>
<location filename="../../lector/settingsdialog.py" line="58"/> <location filename="../../lector/settingsdialog.py" line="59"/>
<source>Spanish</source> <source>Spanish</source>
<translation>Español</translation> <translation>Español</translation>
</message> </message>
<message> <message>
<location filename="../../lector/settingsdialog.py" line="59"/> <location filename="../../lector/settingsdialog.py" line="60"/>
<source>Hindi</source> <source>Hindi</source>
<translation>Hindi</translation> <translation>Hindi</translation>
</message> </message>
<message> <message>
<location filename="../../lector/settingsdialog.py" line="72"/> <location filename="../../lector/settingsdialog.py" line="73"/>
<source>Save changes and start library scan</source> <source>Save changes and start library scan</source>
<translation>Guardar cambios e iniciar exploración de biblioteca</translation> <translation>Guardar cambios e iniciar exploración de biblioteca</translation>
</message> </message>
<message> <message>
<location filename="../../lector/settingsdialog.py" line="215"/> <location filename="../../lector/settingsdialog.py" line="216"/>
<source>Library scan in progress...</source> <source>Library scan in progress...</source>
<translation>Se está explorando la biblioteca</translation> <translation>Se está explorando la biblioteca</translation>
</message> </message>
<message> <message>
<location filename="../../lector/settingsdialog.py" line="219"/> <location filename="../../lector/settingsdialog.py" line="220"/>
<source>Checking library folders</source> <source>Checking library folders</source>
<translation>Comprobando las carpetas de la biblioteca</translation> <translation>Comprobando las carpetas de la biblioteca</translation>
</message> </message>
<message> <message>
<location filename="../../lector/settingsdialog.py" line="234"/> <location filename="../../lector/settingsdialog.py" line="235"/>
<source>Parsing files</source> <source>Parsing files</source>
<translation>Procesando los archivos</translation> <translation>Procesando los archivos</translation>
</message> </message>
@@ -617,7 +627,7 @@
<translation>Última lectura</translation> <translation>Última lectura</translation>
</message> </message>
<message> <message>
<location filename="../../lector/models.py" line="78"/> <location filename="../../lector/models.py" line="77"/>
<source>Tags</source> <source>Tags</source>
<translation>Etiquetas</translation> <translation>Etiquetas</translation>
</message> </message>

View File

@@ -282,20 +282,25 @@
<context> <context>
<name>Library</name> <name>Library</name>
<message> <message>
<location filename="../../lector/library.py" line="124"/> <location filename="../../lector/library.py" line="126"/>
<source>Author</source> <source>Author</source>
<translation>Auteur</translation> <translation>Auteur</translation>
</message> </message>
<message> <message>
<location filename="../../lector/library.py" line="125"/> <location filename="../../lector/library.py" line="127"/>
<source>Year</source> <source>Year</source>
<translation>Année</translation> <translation>Année</translation>
</message> </message>
<message> <message>
<location filename="../../lector/library.py" line="260"/> <location filename="../../lector/library.py" line="267"/>
<source>manually added</source> <source>manually added</source>
<translation>manuellement ajouté</translation> <translation>manuellement ajouté</translation>
</message> </message>
<message>
<location filename="../../lector/library.py" line="205"/>
<source> books</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>LibraryToolBar</name> <name>LibraryToolBar</name>
@@ -371,62 +376,62 @@
<translation>Analyser la bibliothèque</translation> <translation>Analyser la bibliothèque</translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="458"/> <location filename="../../lector/__main__.py" line="459"/>
<source>Add books to database</source> <source>Add books to database</source>
<translation>Ajouter des livres à la base de données</translation> <translation>Ajouter des livres à la base de données</translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="459"/> <location filename="../../lector/__main__.py" line="460"/>
<source>eBooks</source> <source>eBooks</source>
<translation>eBooks</translation> <translation>eBooks</translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="472"/> <location filename="../../lector/__main__.py" line="473"/>
<source>Adding books...</source> <source>Adding books...</source>
<translation>Ajout des livres</translation> <translation>Ajout des livres</translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="540"/> <location filename="../../lector/__main__.py" line="536"/>
<source>Confirm deletion</source> <source>Confirm deletion</source>
<translation>Confirmez la suppression</translation> <translation>Confirmez la suppression</translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="549"/> <location filename="../../lector/__main__.py" line="545"/>
<source>Save changes and start library scan</source> <source>Save changes and start library scan</source>
<translation>Enregistrer les modifications et démarrer l&apos;analyse de la bibliothèque</translation> <translation>Enregistrer les modifications et démarrer l&apos;analyse de la bibliothèque</translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="596"/> <location filename="../../lector/__main__.py" line="593"/>
<source> Books</source> <source> Books</source>
<translation> Livres</translation> <translation> Livres</translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="1023"/> <location filename="../../lector/__main__.py" line="1020"/>
<source>Start reading</source> <source>Start reading</source>
<translation>Commencer à lire</translation> <translation>Commencer à lire</translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="1029"/> <location filename="../../lector/__main__.py" line="1026"/>
<source>Edit</source> <source>Edit</source>
<translation>Modifier</translation> <translation>Modifier</translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="1033"/> <location filename="../../lector/__main__.py" line="1030"/>
<source>Delete</source> <source>Delete</source>
<translation>Supprimer</translation> <translation>Supprimer</translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="1036"/> <location filename="../../lector/__main__.py" line="1033"/>
<source>Mark read</source> <source>Mark read</source>
<translation>Marquer comme lu</translation> <translation>Marquer comme lu</translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="1039"/> <location filename="../../lector/__main__.py" line="1036"/>
<source>Mark unread</source> <source>Mark unread</source>
<translation>Marquer comme non-lu</translation> <translation>Marquer comme non-lu</translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="1138"/> <location filename="../../lector/__main__.py" line="1135"/>
<source>Manually Added</source> <source>Manually Added</source>
<translation>Manuellement ajouté</translation> <translation>Manuellement ajouté</translation>
</message> </message>
@@ -440,6 +445,11 @@
<source>Images</source> <source>Images</source>
<translation type="unfinished">Images</translation> <translation type="unfinished">Images</translation>
</message> </message>
<message>
<location filename="../../lector/__main__.py" line="555"/>
<source> books</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>MetadataUI</name> <name>MetadataUI</name>
@@ -526,37 +536,37 @@
<context> <context>
<name>SettingsUI</name> <name>SettingsUI</name>
<message> <message>
<location filename="../../lector/settingsdialog.py" line="57"/> <location filename="../../lector/settingsdialog.py" line="58"/>
<source>English</source> <source>English</source>
<translation>Anglais</translation> <translation>Anglais</translation>
</message> </message>
<message> <message>
<location filename="../../lector/settingsdialog.py" line="58"/> <location filename="../../lector/settingsdialog.py" line="59"/>
<source>Spanish</source> <source>Spanish</source>
<translation>Espagnol</translation> <translation>Espagnol</translation>
</message> </message>
<message> <message>
<location filename="../../lector/settingsdialog.py" line="59"/> <location filename="../../lector/settingsdialog.py" line="60"/>
<source>Hindi</source> <source>Hindi</source>
<translation>Hindi</translation> <translation>Hindi</translation>
</message> </message>
<message> <message>
<location filename="../../lector/settingsdialog.py" line="72"/> <location filename="../../lector/settingsdialog.py" line="73"/>
<source>Save changes and start library scan</source> <source>Save changes and start library scan</source>
<translation>Enregistrer les modifications et démarrer l&apos;analyse de la bibliothèque</translation> <translation>Enregistrer les modifications et démarrer l&apos;analyse de la bibliothèque</translation>
</message> </message>
<message> <message>
<location filename="../../lector/settingsdialog.py" line="215"/> <location filename="../../lector/settingsdialog.py" line="216"/>
<source>Library scan in progress...</source> <source>Library scan in progress...</source>
<translation>Analyse de la bibliothèque en cours</translation> <translation>Analyse de la bibliothèque en cours</translation>
</message> </message>
<message> <message>
<location filename="../../lector/settingsdialog.py" line="219"/> <location filename="../../lector/settingsdialog.py" line="220"/>
<source>Checking library folders</source> <source>Checking library folders</source>
<translation>Vérification des dossiers de la bibliothèque</translation> <translation>Vérification des dossiers de la bibliothèque</translation>
</message> </message>
<message> <message>
<location filename="../../lector/settingsdialog.py" line="234"/> <location filename="../../lector/settingsdialog.py" line="235"/>
<source>Parsing files</source> <source>Parsing files</source>
<translation>Lecture des fichiers</translation> <translation>Lecture des fichiers</translation>
</message> </message>
@@ -607,7 +617,7 @@
<translation>Lu pour la dernière fois</translation> <translation>Lu pour la dernière fois</translation>
</message> </message>
<message> <message>
<location filename="../../lector/models.py" line="78"/> <location filename="../../lector/models.py" line="77"/>
<source>Tags</source> <source>Tags</source>
<translation>Étiquettes</translation> <translation>Étiquettes</translation>
</message> </message>

View File

@@ -282,20 +282,25 @@
<context> <context>
<name>Library</name> <name>Library</name>
<message> <message>
<location filename="../../lector/library.py" line="124"/> <location filename="../../lector/library.py" line="126"/>
<source>Author</source> <source>Author</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../lector/library.py" line="125"/> <location filename="../../lector/library.py" line="127"/>
<source>Year</source> <source>Year</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../lector/library.py" line="260"/> <location filename="../../lector/library.py" line="267"/>
<source>manually added</source> <source>manually added</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../../lector/library.py" line="205"/>
<source> books</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>LibraryToolBar</name> <name>LibraryToolBar</name>
@@ -371,62 +376,62 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="458"/> <location filename="../../lector/__main__.py" line="459"/>
<source>Add books to database</source> <source>Add books to database</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="459"/> <location filename="../../lector/__main__.py" line="460"/>
<source>eBooks</source> <source>eBooks</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="472"/> <location filename="../../lector/__main__.py" line="473"/>
<source>Adding books...</source> <source>Adding books...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="540"/> <location filename="../../lector/__main__.py" line="536"/>
<source>Confirm deletion</source> <source>Confirm deletion</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="549"/> <location filename="../../lector/__main__.py" line="545"/>
<source>Save changes and start library scan</source> <source>Save changes and start library scan</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="596"/> <location filename="../../lector/__main__.py" line="593"/>
<source> Books</source> <source> Books</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="1023"/> <location filename="../../lector/__main__.py" line="1020"/>
<source>Start reading</source> <source>Start reading</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="1029"/> <location filename="../../lector/__main__.py" line="1026"/>
<source>Edit</source> <source>Edit</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="1033"/> <location filename="../../lector/__main__.py" line="1030"/>
<source>Delete</source> <source>Delete</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="1036"/> <location filename="../../lector/__main__.py" line="1033"/>
<source>Mark read</source> <source>Mark read</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="1039"/> <location filename="../../lector/__main__.py" line="1036"/>
<source>Mark unread</source> <source>Mark unread</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../lector/__main__.py" line="1138"/> <location filename="../../lector/__main__.py" line="1135"/>
<source>Manually Added</source> <source>Manually Added</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@@ -440,6 +445,11 @@
<source>Images</source> <source>Images</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../../lector/__main__.py" line="555"/>
<source> books</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>MetadataUI</name> <name>MetadataUI</name>
@@ -526,37 +536,37 @@
<context> <context>
<name>SettingsUI</name> <name>SettingsUI</name>
<message> <message>
<location filename="../../lector/settingsdialog.py" line="57"/> <location filename="../../lector/settingsdialog.py" line="58"/>
<source>English</source> <source>English</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../lector/settingsdialog.py" line="58"/> <location filename="../../lector/settingsdialog.py" line="59"/>
<source>Spanish</source> <source>Spanish</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../lector/settingsdialog.py" line="59"/> <location filename="../../lector/settingsdialog.py" line="60"/>
<source>Hindi</source> <source>Hindi</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../lector/settingsdialog.py" line="72"/> <location filename="../../lector/settingsdialog.py" line="73"/>
<source>Save changes and start library scan</source> <source>Save changes and start library scan</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../lector/settingsdialog.py" line="215"/> <location filename="../../lector/settingsdialog.py" line="216"/>
<source>Library scan in progress...</source> <source>Library scan in progress...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../lector/settingsdialog.py" line="219"/> <location filename="../../lector/settingsdialog.py" line="220"/>
<source>Checking library folders</source> <source>Checking library folders</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../lector/settingsdialog.py" line="234"/> <location filename="../../lector/settingsdialog.py" line="235"/>
<source>Parsing files</source> <source>Parsing files</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@@ -607,7 +617,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../lector/models.py" line="78"/> <location filename="../../lector/models.py" line="77"/>
<source>Tags</source> <source>Tags</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>