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 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
def get_language(name):
"""

View File

@ -34,7 +34,7 @@ import codecs
import re
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
log = logging.getLogger(__name__)
@ -148,10 +148,22 @@ class OSISBible(BibleDB):
self.filename)
return False
book_details = BiblesResourcesDB.get_book_by_id(book_ref_id)
if not db_book or db_book.name != book_details[u'name']:
log.debug(u'New book: "%s"' % book_details[u'name'])
bible_language = BiblesResourcesDB.get_language_by_id(language_id)
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(
book_details[u'name'],
book_name_localized,
book_ref_id,
book_details[u'testament_id'])
if last_chapter == 0:
@ -162,7 +174,7 @@ class OSISBible(BibleDB):
self.wizard.incrementProgressBar(unicode(translate(
'BiblesPlugin.OsisImport', 'Importing %s %s...',
'Importing <book name> <chapter>...')) %
(book_details[u'name'], chapter))
(book_name_localized, chapter))
last_chapter = chapter
# All of this rigmarol below is because the mod2osis
# tool from the Sword library embeds XML in the OSIS