Fixed bug #1214875: Importing an OSIS bible no longer always results in English book names

bzr-revno: 2164
Fixes: https://launchpad.net/bugs/1214875
This commit is contained in:
Arjan Schrijver 2013-08-22 09:15:39 +02:00 committed by Raoul Snyman
commit 9c269d5f31
2 changed files with 37 additions and 5 deletions

View File

@ -862,6 +862,26 @@ class BiblesResourcesDB(QtCore.QObject, Manager):
return book[0] return book[0]
return None return None
@staticmethod
def get_language_by_id(language_id):
"""
Return a dict containing the language id, name and code by id.
``id``
The id of the language in the database.
"""
log.debug(u'BiblesResourcesDB.get_language_by_id(%d)', language_id)
language = BiblesResourcesDB.run_sql(u'SELECT id, name, code FROM '
u'language WHERE id = ?', (language_id,))
if language:
return {
u'id': language[0][0],
u'name': unicode(language[0][1]),
u'code': unicode(language[0][2])
}
else:
return None
@staticmethod @staticmethod
def get_language(name): def get_language(name):
""" """

View File

@ -34,7 +34,7 @@ import codecs
import re import re
from openlp.core.lib import Receiver, translate from openlp.core.lib import Receiver, translate
from openlp.core.utils import AppLocation from openlp.core.utils import AppLocation, LanguageManager
from openlp.plugins.bibles.lib.db import BibleDB, BiblesResourcesDB from openlp.plugins.bibles.lib.db import BibleDB, BiblesResourcesDB
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
@ -148,10 +148,22 @@ class OSISBible(BibleDB):
self.filename) self.filename)
return False return False
book_details = BiblesResourcesDB.get_book_by_id(book_ref_id) book_details = BiblesResourcesDB.get_book_by_id(book_ref_id)
if not db_book or db_book.name != book_details[u'name']: bible_language = BiblesResourcesDB.get_language_by_id(language_id)
log.debug(u'New book: "%s"' % book_details[u'name']) if bible_language is not None:
# The language of this bible was found, so we can
# translate the name of this book
custom_translator = LanguageManager.get_translator(
bible_language['code'])[0]
book_name_localized = unicode(custom_translator.translate(
'BiblesPlugin', book_details[u'name']))
else:
# The language of this bible was not found, so we just
# use the English name for this book
book_name_localized = book_details[u'name']
if not db_book or db_book.name != book_name_localized:
log.debug(u'New book: "%s"' % book_name_localized)
db_book = self.create_book( db_book = self.create_book(
book_details[u'name'], book_name_localized,
book_ref_id, book_ref_id,
book_details[u'testament_id']) book_details[u'testament_id'])
if last_chapter == 0: if last_chapter == 0:
@ -162,7 +174,7 @@ class OSISBible(BibleDB):
self.wizard.incrementProgressBar(unicode(translate( self.wizard.incrementProgressBar(unicode(translate(
'BiblesPlugin.OsisImport', 'Importing %s %s...', 'BiblesPlugin.OsisImport', 'Importing %s %s...',
'Importing <book name> <chapter>...')) % 'Importing <book name> <chapter>...')) %
(book_details[u'name'], chapter)) (book_name_localized, chapter))
last_chapter = chapter last_chapter = chapter
# All of this rigmarol below is because the mod2osis # All of this rigmarol below is because the mod2osis
# tool from the Sword library embeds XML in the OSIS # tool from the Sword library embeds XML in the OSIS