forked from openlp/openlp
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:
commit
9c269d5f31
@ -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):
|
||||||
"""
|
"""
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user