Skip to content

Commit

Permalink
feat: Added the option to enable/disable metadata translation. resolved
Browse files Browse the repository at this point in the history
  • Loading branch information
bookfere committed May 10, 2024
1 parent f892863 commit 07aa694
Show file tree
Hide file tree
Showing 14 changed files with 214 additions and 147 deletions.
5 changes: 4 additions & 1 deletion .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
patreon: bookfere
liberapay: bookfere
custom: ['https://paypal.me/bookfere', 'https://bookfere.com/donate']
custom: [
'https://www.paypal.com/paypalme/jinengge',
'https://bookfere.com/donate'
]
2 changes: 1 addition & 1 deletion components/footer.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ def __init__(self, parent=None):
donate = 'https://{}/donate'.format(app_author)
else:
feedback = '{}/issues'.format(github)
donate = 'https://www.paypal.com/paypalme/bookfere'
donate = 'https://www.paypal.com/paypalme/jinengge'
link = QLabel(
'<span style="color:crimson;">♥</span> by <a href="https://{0}">'
'{0}</a> | <a href="{1}">GitHub</a> | <a href="{2}">{4}</a>'
Expand Down
10 changes: 8 additions & 2 deletions lib/element.py
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,8 @@ def get_content(self):
return self.element.content

def add_translation(self, translation=None):
if translation is not None and translation != self.get_content():
if translation is not None and translation != self.get_content() \
and not self.ignored:
if self.position == 'only':
self.element.content = translation
elif self.position in ['above', 'left']:
Expand Down Expand Up @@ -780,6 +781,9 @@ def get_pgn_elements(path, encoding):


def get_metadata_elements(metadata):
config = get_config()
enable_translation = config.get(
'ebook_metadata.metadata_translation', False)
elements = []
names = (
'title', 'creator', 'publisher', 'rights', 'subject', 'contributor',
Expand All @@ -792,7 +796,9 @@ def get_metadata_elements(metadata):
for item in items:
if pattern.search(item.content) is None:
continue
elements.append(MetadataElement(item, 'content.opf'))
element = MetadataElement(
item, page_id='content.opf', ignored=not enable_translation)
elements.append(element)
return elements


Expand Down
7 changes: 0 additions & 7 deletions lib/translation.py
Original file line number Diff line number Diff line change
Expand Up @@ -218,13 +218,6 @@ def process_translation(self, paragraph):
if paragraph.is_cache:
message = _('Translation (Cached): {}')
self.log(message.format(paragraph.translation.strip()))
# else:
# self.log(sep(), True)
# self.log(_('Row: {}').format(row))
# self.log(_('Original: {}').format(original), True)
# self.log(sep('┈'), True)
# self.log(_('Error: {}').format(paragraph.error.strip()), True)
# # paragraph.error = None

def handle(self, paragraphs=[]):
start_time = time.time()
Expand Down
15 changes: 11 additions & 4 deletions setting.py
Original file line number Diff line number Diff line change
Expand Up @@ -1136,24 +1136,29 @@ def choose_filter_mode(btn_id):
metadata_group = QGroupBox(_('Ebook Metadata'))
metadata_layout = QFormLayout(metadata_group)
self.set_form_layout_policy(metadata_layout)
self.metadata_translation = QCheckBox(
_('Translate all of the metadata information'))
self.metadata_lang_mark = QCheckBox(
_('Append target language to title metadata'))
self.metadata_lang_code = QCheckBox(
_('Set target language code to language metadata'))
self.metadata_subject = QPlainTextEdit()
self.metadata_subject.setPlaceholderText(
_('Subjects of ebook (one subject per line)'))
metadata_layout.addRow(
_('Metadata Translation'), self.metadata_translation)
metadata_layout.addRow(_('Language Mark'), self.metadata_lang_mark)
metadata_layout.addRow(_('Language Code'), self.metadata_lang_code)
metadata_layout.addRow(_('Append Subjects'), self.metadata_subject)
layout.addWidget(metadata_group)

self.metadata_translation.setChecked(
self.config.get('ebook_metadata.metadata_translation', False))
self.metadata_lang_mark.setChecked(
self.config.get('ebook_metadata.lang_mark', False))
self.metadata_lang_code.setChecked(
self.config.get(
'ebook_metadata.lang_code',
self.config.get('ebook_metadata.language', False))) # old key
self.metadata_lang_code.setChecked(self.config.get(
'ebook_metadata.lang_code',
self.config.get('ebook_metadata.language', False))) # old key
self.metadata_subject.setPlainText(
'\n'.join(self.config.get('ebook_metadata.subjects', [])))

Expand Down Expand Up @@ -1362,6 +1367,8 @@ def update_content_config(self):
# Ebook metadata
ebook_metadata = self.config.get('ebook_metadata').copy()
ebook_metadata.clear()
ebook_metadata.update(
metadata_translation=self.metadata_translation.isChecked())
ebook_metadata.update(lang_mark=self.metadata_lang_mark.isChecked())
ebook_metadata.update(lang_code=self.metadata_lang_code.isChecked())
subject_content = self.metadata_subject.toPlainText().strip()
Expand Down
16 changes: 15 additions & 1 deletion tests/test_element.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@
from ..engines.base import Base


module_name = 'calibre_plugins.ebook_translator.lib.element'


class TestFunction(unittest.TestCase):
def test_get_string(self):
markup = '<div xmlns="http://www.w3.org/1999/xhtml">' \
Expand Down Expand Up @@ -66,7 +69,9 @@ def test_get_toc_elements(self):
elements = get_toc_elements(toc, [])
self.assertEqual(3, len(elements))

def test_get_metadata_elements(self):
@patch(module_name + '.get_config')
def test_get_metadata_elements(self, mock_get_config):
mock_get_config.return_value.get.return_value = False
metadata = Mock(Metadata)
item_1 = Mock(Metadata.Item, content='a')
item_2 = Mock(Metadata.Item, content='b')
Expand All @@ -78,9 +83,13 @@ def test_get_metadata_elements(self):

elements = get_metadata_elements(metadata)

mock_get_config().get.assert_called_once_with(
'ebook_metadata.metadata_translation', False)
self.assertEqual(2, len(elements))
self.assertIs(item_1, elements[0].element)
self.assertTrue(elements[0].ignored)
self.assertIs(item_2, elements[1].element)
self.assertTrue(elements[1].ignored)


class MockedElement(Element):
Expand Down Expand Up @@ -318,6 +327,11 @@ def test_add_translation_same_content(self):
self.element.add_translation('a')
self.assertEqual('a', self.element.element.content)

def test_add_translation_with_ignored(self):
self.element.ignored = True
self.element.add_translation('A')
self.assertEqual('a', self.element.element.content)


class TestTocElement(unittest.TestCase):
def setUp(self):
Expand Down
20 changes: 13 additions & 7 deletions translations/es.po
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Ebook Translator Calibre Plugin\n"
"Report-Msgid-Bugs-To: bookfere@gmail.com\n"
"POT-Creation-Date: 2024-05-01 22:21+0800\n"
"POT-Creation-Date: 2024-05-10 21:15+0800\n"
"PO-Revision-Date: 2023-04-17 14:17+0800\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
Expand Down Expand Up @@ -109,6 +109,9 @@ msgstr ""
msgid "keyword for filtering"
msgstr ""

msgid "Reset"
msgstr ""

msgid "Total items: {}"
msgstr "Articulos totales: {}"

Expand Down Expand Up @@ -220,9 +223,6 @@ msgstr ""
msgid "Move"
msgstr ""

msgid "Reset"
msgstr ""

msgid "Reveal"
msgstr ""

Expand Down Expand Up @@ -449,6 +449,9 @@ msgstr "Youdao"
msgid "Start to convert ebook format..."
msgstr "Comienza a convertir el formato de libro electrónico..."

msgid "Outputting ebook file..."
msgstr ""

msgid "Starting to output subtitles file..."
msgstr ""

Expand Down Expand Up @@ -527,9 +530,6 @@ msgstr ""
msgid "Time consuming: {} minutes"
msgstr ""

msgid "Outputting ebook file..."
msgstr ""

msgid "General"
msgstr ""

Expand Down Expand Up @@ -784,6 +784,9 @@ msgstr ""
msgid "Ebook Metadata"
msgstr ""

msgid "Translate all of the metadata information"
msgstr ""

msgid "Append target language to title metadata"
msgstr ""

Expand All @@ -793,6 +796,9 @@ msgstr ""
msgid "Subjects of ebook (one subject per line)"
msgstr ""

msgid "Metadata Translation"
msgstr ""

msgid "Language Mark"
msgstr ""

Expand Down
20 changes: 13 additions & 7 deletions translations/fr.po
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Ebook Translator Calibre Plugin\n"
"Report-Msgid-Bugs-To: bookfere@gmail.com\n"
"POT-Creation-Date: 2024-05-01 22:21+0800\n"
"POT-Creation-Date: 2024-05-10 21:15+0800\n"
"PO-Revision-Date: 2023-10-01 15:35-0400\n"
"Last-Translator: <a href=\"https://www.mobileread.com/forums/member.php?"
"u=90932\">PoP</a>\n"
Expand Down Expand Up @@ -109,6 +109,9 @@ msgstr ""
msgid "keyword for filtering"
msgstr ""

msgid "Reset"
msgstr "Repartir"

msgid "Total items: {}"
msgstr "Items totaux: {}"

Expand Down Expand Up @@ -220,9 +223,6 @@ msgstr "Choisissez le chemin pour enregistrer les fichiers cache."
msgid "Move"
msgstr ""

msgid "Reset"
msgstr "Repartir"

msgid "Reveal"
msgstr "Révéler"

Expand Down Expand Up @@ -457,6 +457,9 @@ msgstr "Youdao"
msgid "Start to convert ebook format..."
msgstr "Commençant la conversion du format de ebook..."

msgid "Outputting ebook file..."
msgstr ""

msgid "Starting to output subtitles file..."
msgstr ""

Expand Down Expand Up @@ -536,9 +539,6 @@ msgstr "La traduction a échoué."
msgid "Time consuming: {} minutes"
msgstr ""

msgid "Outputting ebook file..."
msgstr ""

msgid "General"
msgstr "Général"

Expand Down Expand Up @@ -795,6 +795,9 @@ msgstr ""
msgid "Ebook Metadata"
msgstr "Metadata du ebook"

msgid "Translate all of the metadata information"
msgstr ""

msgid "Append target language to title metadata"
msgstr ""

Expand All @@ -804,6 +807,9 @@ msgstr "Sélectionnez la langue cible pour le metadata"
msgid "Subjects of ebook (one subject per line)"
msgstr "Sujets du ebook (un sujet par ligne)"

msgid "Metadata Translation"
msgstr ""

msgid "Language Mark"
msgstr ""

Expand Down

0 comments on commit 07aa694

Please sign in to comment.