mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-06-23 15:30:45 -04:00
DOCX Input: if no language is defined in the metadata, use the language specified in the document default style. Fixes #1321346 [DOCX Input language detection](https://bugs.launchpad.net/calibre/+bug/1321346)
This commit is contained in:
parent
2a3071b8ea
commit
6c1dc2da8d
@ -71,6 +71,14 @@ def read_app_props(raw, mi):
|
||||
company = root.xpath('//*[local-name()="Company"]')
|
||||
if company and company[0].text and company[0].text.strip():
|
||||
mi.publisher = company[0].text.strip()
|
||||
|
||||
def read_default_style_language(raw, mi):
|
||||
root = fromstring(raw)
|
||||
for lang in XPath('/w:styles/w:docDefaults/w:rPrDefault/w:rPr/w:lang/@w:val')(root):
|
||||
lang = canonicalize_lang(lang)
|
||||
if lang:
|
||||
mi.languages = [lang]
|
||||
break
|
||||
# }}}
|
||||
|
||||
class DOCX(object):
|
||||
@ -207,6 +215,13 @@ class DOCX(object):
|
||||
pass
|
||||
else:
|
||||
read_doc_props(raw, mi)
|
||||
if mi.is_null('language'):
|
||||
try:
|
||||
raw = self.read('word/styles.xml')
|
||||
except KeyError:
|
||||
pass
|
||||
else:
|
||||
read_default_style_language(raw, mi)
|
||||
|
||||
name = self.relationships.get(APPPROPS, None)
|
||||
if name is None:
|
||||
|
Loading…
x
Reference in New Issue
Block a user